diff --git a/.github/workflows/lts-branch-create-pull-request.yaml b/.github/workflows/lts-branch-create-pull-request.yaml index ef98613ee..b1343753c 100644 --- a/.github/workflows/lts-branch-create-pull-request.yaml +++ b/.github/workflows/lts-branch-create-pull-request.yaml @@ -6,14 +6,14 @@ on: jobs: create-pr-for-api-sync-branches: - runs-on: ubuntu-18.04 + runs-on: ubuntu-22.04 steps: - name: Cancel Previous Actions - uses: styfle/cancel-workflow-action@0.4.1 + uses: styfle/cancel-workflow-action@0.11.0 with: access_token: ${{ github.token }} - name: Checkout Branch - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Parse GitHub Ref id: parse_github_ref env: @@ -31,8 +31,8 @@ jobs: DESTINATION_BRANCH=$(echo $GITHUB_BRANCH_NAME | cut -f $DEST_BRANCH_FIELD_NUMBER -d $DELIMITER ) TAG_NAME=$(echo $GITHUB_BRANCH_NAME | cut -f $TAG_NAME_FIELD_NUMBER -d $DELIMITER ) - echo "::set-output name=destination_branch::$(echo $DESTINATION_BRANCH )" - echo "::set-output name=tag_name::$(echo $TAG_NAME )" + echo "destination_branch=$DESTINATION_BRANCH" >> $GITHUB_OUTPUT + echo "tag_name=$TAG_NAME" >> $GITHUB_OUTPUT - name: Setup Git env: GIT_USER_NAME: soloio-bot @@ -53,19 +53,12 @@ jobs: else echo "$BRANCH exists, nothing to do" fi - - name: Push Commit with Tag Name - env: - COMMIT_MESSAGE: "@soloio-bot Sync APIs. @tag-name=${{ steps.parse_github_ref.outputs.tag_name }}" - run: | - git add . - git commit -m "$COMMIT_MESSAGE" --allow-empty - git push - name: Create Pull Request - uses: repo-sync/pull-request@v2 + uses: repo-sync/pull-request@v2.6.2 with: destination_branch: ${{ steps.parse_github_ref.outputs.destination_branch }} pr_reviewer: "solo-apis/solo-apis" pr_label: "auto-pr" pr_allow_empty: true github_token: ${{ secrets.SOLO_BOT_REPO_SECRET }} - pr_title: "Sync APIs to ${{ steps.parse_github_ref.outputs.tag_name }}" \ No newline at end of file + pr_title: "Sync APIs. @tag-name=${{ steps.parse_github_ref.outputs.tag_name }}" \ No newline at end of file diff --git a/.github/workflows/lts-branch-tag-commit.yaml b/.github/workflows/lts-branch-tag-commit.yaml index 69aa5beeb..030a53cca 100644 --- a/.github/workflows/lts-branch-tag-commit.yaml +++ b/.github/workflows/lts-branch-tag-commit.yaml @@ -2,33 +2,34 @@ name: Tag Commit on LTS Branch on: push: branches: - - master - - 'gloo-master' + - main + - 'gloo-main' - 'gloo-v**.**.x' jobs: tag-version: runs-on: ubuntu-latest env: # The regex of a commit produced by the soloio-bot - COMMIT_REGEX: "^.*(@soloio-bot Sync APIs.)+.*$" + COMMIT_REGEX: "^.*(Sync APIs.)+.*$" steps: - name: Cancel Previous Actions - uses: styfle/cancel-workflow-action@0.4.1 + uses: styfle/cancel-workflow-action@0.11.0 with: access_token: ${{ github.token }} - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: fetch-depth: '0' - name: Parse out tag name from commit message id: tag_version run: | if [[ $(git log -1 --oneline) =~ ${{ env.COMMIT_REGEX }} ]]; then - TAG_NAME=$(git log -1 --oneline | cut -d "@tag-name=" -f 2) + TAG_NAME=$(git log -1 --oneline | awk -F'@tag-name=' '{print $2}' | awk -F' ' '{print $1}') fi - echo "::set-output name=tag_name::$(echo $TAG_NAME)" + echo "tag_name=$TAG_NAME" >> $GITHUB_OUTPUT - name: Bump version and push tag if: steps.tag_version.outputs.tag_name != '' - uses: anothrNick/github-tag-action@1.26.0 + uses: anothrNick/github-tag-action@1.39.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - CUSTOM_TAG: ${{ steps.tag_version.outputs.tag_name }} \ No newline at end of file + CUSTOM_TAG: ${{ steps.tag_version.outputs.tag_name }} + RELEASE_BRANCHES: '.*master$,gloo-v[0-9]+\.[0-9]+\.x$' diff --git a/.github/workflows/pull_request.yaml b/.github/workflows/pull_request.yaml index 5f95a4f64..8398d1f7b 100644 --- a/.github/workflows/pull_request.yaml +++ b/.github/workflows/pull_request.yaml @@ -1,52 +1,43 @@ name: pull_request on: - push: - branches: - - 'master' pull_request: jobs: gen: name: Code Gen - runs-on: ubuntu-18.04 + runs-on: ubuntu-22.04 steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.4.0 + uses: styfle/cancel-workflow-action@0.11.0 with: access_token: ${{ github.token }} - - name: Set up Go 1.14 - uses: actions/setup-go@v1 + - uses: actions/checkout@v3 with: - go-version: 1.14 + fetch-depth: 0 + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version-file: go.mod id: go - name: Install Protoc - uses: solo-io/setup-protoc@master + uses: arduino/setup-protoc@v1 with: version: '3.6.1' repo-token: ${{ secrets.GITHUB_TOKEN }} - - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - uses: actions/cache@v1 - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - name: Generate Code run: | ./ci/check-code-gen.sh test: name: Tests - runs-on: ubuntu-18.04 + runs-on: ubuntu-22.04 steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.4.0 + uses: styfle/cancel-workflow-action@0.11.0 with: access_token: ${{ github.token }} - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Setup Private Repo Permissions @@ -54,16 +45,10 @@ jobs: TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} run: | git config --global url."https://${TOKEN}@github.com/solo-io/".insteadOf "https://github.com/solo-io/" - - name: Set up Go 1.14 - uses: actions/setup-go@v1 - with: - go-version: 1.14 - - uses: actions/cache@v1 + - name: Set up Go + uses: actions/setup-go@v4 with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go + go-version-file: go.mod - name: Run tests run: | - go test ./test/scripts/... \ No newline at end of file + go test ./test/... \ No newline at end of file diff --git a/.github/workflows/tag_gloo_apis.yaml b/.github/workflows/tag_gloo_apis.yaml deleted file mode 100644 index 42c8437c8..000000000 --- a/.github/workflows/tag_gloo_apis.yaml +++ /dev/null @@ -1,30 +0,0 @@ -name: tag version -on: - push: - branches: - - master - - gloo-v1.7.x - - gloo-v1.6.x - - gloo-v1.5.x -jobs: - tag-version: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: '0' - - name: Parse out tag name - id: tag_version - shell: bash "{0}" - run: | - COMMIT_REGEX="^.*(Sync Gloo APIs to v)+.*$" - if [[ $(git log -1 --oneline) =~ $COMMIT_REGEX ]]; then - TAG=$(git log -1 --oneline | cut -d" " -f 6) - fi - echo "::set-output name=tag_name::$(echo $TAG)" - - name: Bump version and push tag - if: steps.tag_version.outputs.tag_name != '' - uses: anothrNick/github-tag-action@1.26.0 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - CUSTOM_TAG: gloo-${{ steps.tag_version.outputs.tag_name }} \ No newline at end of file diff --git a/.github/workflows/update_gloo_apis_pr.yaml b/.github/workflows/update_gloo_apis_pr.yaml deleted file mode 100644 index 3cec7a2ee..000000000 --- a/.github/workflows/update_gloo_apis_pr.yaml +++ /dev/null @@ -1,19 +0,0 @@ -on: - push: - branches: - - "update-gloo-apis" - - "gloo-v**" - -jobs: - update-gloo-apis-pr: - runs-on: ubuntu-18.04 - steps: - - uses: actions/checkout@v2 - - name: pull-request - uses: repo-sync/pull-request@v2 - with: - destination_branch: "master" - pr_reviewer: "solo-apis/solo-apis" - pr_label: "auto-pr" - pr_allow_empty: true - github_token: ${{ secrets.SOLO_BOT_REPO_SECRET }} \ No newline at end of file diff --git a/Makefile b/Makefile index 325a6e0fd..39b502f6d 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ generate-code: PATH=$(DEPSGOBIN):$$PATH ./hack/post-generate.sh .PHONY: generate-mocks -generate-mocks: +generate-mocks: tidy PATH=$(DEPSGOBIN):$$PATH go generate ./... .PHONY: tidy diff --git a/api/gloo-fed/fed.enterprise.gloo/v1/auth_config.proto b/api/gloo-fed/fed.enterprise.gloo/v1/auth_config.proto index 485d065bf..e80bcd940 100644 --- a/api/gloo-fed/fed.enterprise.gloo/v1/auth_config.proto +++ b/api/gloo-fed/fed.enterprise.gloo/v1/auth_config.proto @@ -4,15 +4,17 @@ package fed.enterprise.gloo.solo.io; option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.enterprise.gloo.solo.io/v1/types"; +option (extproto.equal_all) = true; import "extproto/ext.proto"; option (extproto.hash_all) = true; -option (extproto.equal_all) = true; -import "github.com/solo-io/solo-apis/api/skv2-enterprise/v1alpha1/multicluster.proto"; +import "github.com/solo-io/solo-apis/api/gloo-fed/multicluster/v1alpha1/multicluster.proto"; import "github.com/solo-io/solo-apis/api/gloo-fed/fed/core/v1/placement.proto"; import "github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto"; - +// The Federated[Resource] CRDs are a gloo-fed wrapper around Gloo Edge CRDs, with a Placement field indicating which +// clusters and namespaces to federate the object to. +// For more, see: https://docs.solo.io/gloo-edge/latest/guides/gloo_federation/federated_configuration/ message FederatedAuthConfigSpec { message Template { .enterprise.gloo.solo.io.AuthConfigSpec spec = 1; @@ -27,4 +29,5 @@ message FederatedAuthConfigSpec { message FederatedAuthConfigStatus { core.fed.solo.io.PlacementStatus placement_status = 1; + map namespaced_placement_statuses = 2; } \ No newline at end of file diff --git a/api/gloo-fed/fed.gateway/v1/gateway.proto b/api/gloo-fed/fed.gateway/v1/gateway.proto index a3ce3db5f..ac0e2b2c7 100644 --- a/api/gloo-fed/fed.gateway/v1/gateway.proto +++ b/api/gloo-fed/fed.gateway/v1/gateway.proto @@ -4,16 +4,19 @@ package fed.gateway.solo.io; option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types"; +option (extproto.equal_all) = true; import "extproto/ext.proto"; option (extproto.hash_all) = true; -option (extproto.equal_all) = true; -import "github.com/solo-io/solo-apis/api/skv2-enterprise/v1alpha1/multicluster.proto"; +import "github.com/solo-io/solo-apis/api/gloo-fed/multicluster/v1alpha1/multicluster.proto"; import "github.com/solo-io/solo-apis/api/gloo-fed/fed/core/v1/placement.proto"; import "github.com/solo-io/solo-apis/api/gloo/gateway/v1/gateway.proto"; import "google/protobuf/wrappers.proto"; +// The Federated[Resource] CRDs are a gloo-fed wrapper around Gloo Edge CRDs, with a Placement field indicating which +// clusters and namespaces to federate the object to. +// For more, see: https://docs.solo.io/gloo-edge/latest/guides/gloo_federation/federated_configuration/ message FederatedGatewaySpec { message Template { @@ -29,4 +32,5 @@ message FederatedGatewaySpec { message FederatedGatewayStatus { core.fed.solo.io.PlacementStatus placement_status = 1; + map namespaced_placement_statuses = 2; } \ No newline at end of file diff --git a/api/gloo-fed/fed.gateway/v1/matchable_http_gateway.proto b/api/gloo-fed/fed.gateway/v1/matchable_http_gateway.proto new file mode 100644 index 000000000..f9c0b3b5e --- /dev/null +++ b/api/gloo-fed/fed.gateway/v1/matchable_http_gateway.proto @@ -0,0 +1,36 @@ +syntax = "proto3"; +package fed.gateway.solo.io; + +option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types"; + + +option (extproto.equal_all) = true; +import "extproto/ext.proto"; +option (extproto.hash_all) = true; + +import "github.com/solo-io/solo-apis/api/gloo-fed/multicluster/v1alpha1/multicluster.proto"; +import "github.com/solo-io/solo-apis/api/gloo-fed/fed/core/v1/placement.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gateway/v1/matchable_http_gateway.proto"; + +import "google/protobuf/wrappers.proto"; + +// The Federated[Resource] CRDs are a gloo-fed wrapper around Gloo Edge CRDs, with a Placement field indicating which +// clusters and namespaces to federate the object to. +// For more, see: https://docs.solo.io/gloo-edge/latest/guides/gloo_federation/federated_configuration/ +message FederatedMatchableHttpGatewaySpec { + + message Template { + .gateway.solo.io.MatchableHttpGatewaySpec spec = 1; + + core.fed.solo.io.TemplateMetadata metadata = 2; + } + + Template template = 1; + + multicluster.solo.io.Placement placement = 2; +} + +message FederatedMatchableHttpGatewayStatus { + core.fed.solo.io.PlacementStatus placement_status = 1; + map namespaced_placement_statuses = 2; +} \ No newline at end of file diff --git a/api/gloo-fed/fed.gateway/v1/matchable_tcp_gateway.proto b/api/gloo-fed/fed.gateway/v1/matchable_tcp_gateway.proto new file mode 100644 index 000000000..15411986c --- /dev/null +++ b/api/gloo-fed/fed.gateway/v1/matchable_tcp_gateway.proto @@ -0,0 +1,36 @@ +syntax = "proto3"; +package fed.gateway.solo.io; + +option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types"; + + +option (extproto.equal_all) = true; +import "extproto/ext.proto"; +option (extproto.hash_all) = true; + +import "github.com/solo-io/solo-apis/api/gloo-fed/multicluster/v1alpha1/multicluster.proto"; +import "github.com/solo-io/solo-apis/api/gloo-fed/fed/core/v1/placement.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gateway/v1/matchable_tcp_gateway.proto"; + +import "google/protobuf/wrappers.proto"; + +// The Federated[Resource] CRDs are a gloo-fed wrapper around Gloo Edge CRDs, with a Placement field indicating which +// clusters and namespaces to federate the object to. +// For more, see: https://docs.solo.io/gloo-edge/latest/guides/gloo_federation/federated_configuration/ +message FederatedMatchableTcpGatewaySpec { + + message Template { + .gateway.solo.io.MatchableTcpGatewaySpec spec = 1; + + core.fed.solo.io.TemplateMetadata metadata = 2; + } + + Template template = 1; + + multicluster.solo.io.Placement placement = 2; +} + +message FederatedMatchableTcpGatewayStatus { + core.fed.solo.io.PlacementStatus placement_status = 1; + map namespaced_placement_statuses = 2; +} \ No newline at end of file diff --git a/api/gloo-fed/fed.gateway/v1/route_table.proto b/api/gloo-fed/fed.gateway/v1/route_table.proto index 069f77837..78fa64805 100644 --- a/api/gloo-fed/fed.gateway/v1/route_table.proto +++ b/api/gloo-fed/fed.gateway/v1/route_table.proto @@ -4,16 +4,19 @@ package fed.gateway.solo.io; option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types"; +option (extproto.equal_all) = true; import "extproto/ext.proto"; option (extproto.hash_all) = true; -option (extproto.equal_all) = true; -import "github.com/solo-io/solo-apis/api/skv2-enterprise/v1alpha1/multicluster.proto"; +import "github.com/solo-io/solo-apis/api/gloo-fed/multicluster/v1alpha1/multicluster.proto"; import "github.com/solo-io/solo-apis/api/gloo-fed/fed/core/v1/placement.proto"; import "github.com/solo-io/solo-apis/api/gloo/gateway/v1/route_table.proto"; import "google/protobuf/wrappers.proto"; +// The Federated[Resource] CRDs are a gloo-fed wrapper around Gloo Edge CRDs, with a Placement field indicating which +// clusters and namespaces to federate the object to. +// For more, see: https://docs.solo.io/gloo-edge/latest/guides/gloo_federation/federated_configuration/ message FederatedRouteTableSpec { message Template { @@ -29,4 +32,5 @@ message FederatedRouteTableSpec { message FederatedRouteTableStatus { core.fed.solo.io.PlacementStatus placement_status = 1; + map namespaced_placement_statuses = 2; } \ No newline at end of file diff --git a/api/gloo-fed/fed.gateway/v1/virtual_service.proto b/api/gloo-fed/fed.gateway/v1/virtual_service.proto index 2851ae8fa..9d7c85bd4 100644 --- a/api/gloo-fed/fed.gateway/v1/virtual_service.proto +++ b/api/gloo-fed/fed.gateway/v1/virtual_service.proto @@ -4,14 +4,17 @@ package fed.gateway.solo.io; option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types"; +option (extproto.equal_all) = true; import "extproto/ext.proto"; option (extproto.hash_all) = true; -option (extproto.equal_all) = true; -import "github.com/solo-io/solo-apis/api/skv2-enterprise/v1alpha1/multicluster.proto"; +import "github.com/solo-io/solo-apis/api/gloo-fed/multicluster/v1alpha1/multicluster.proto"; import "github.com/solo-io/solo-apis/api/gloo-fed/fed/core/v1/placement.proto"; import "github.com/solo-io/solo-apis/api/gloo/gateway/v1/virtual_service.proto"; +// The Federated[Resource] CRDs are a gloo-fed wrapper around Gloo Edge CRDs, with a Placement field indicating which +// clusters and namespaces to federate the object to. +// For more, see: https://docs.solo.io/gloo-edge/latest/guides/gloo_federation/federated_configuration/ message FederatedVirtualServiceSpec { message Template { @@ -27,4 +30,5 @@ message FederatedVirtualServiceSpec { message FederatedVirtualServiceStatus { core.fed.solo.io.PlacementStatus placement_status = 1; + map namespaced_placement_statuses = 2; } \ No newline at end of file diff --git a/api/gloo-fed/fed.gloo/v1/settings.proto b/api/gloo-fed/fed.gloo/v1/settings.proto index 72db35595..1dd997afd 100644 --- a/api/gloo-fed/fed.gloo/v1/settings.proto +++ b/api/gloo-fed/fed.gloo/v1/settings.proto @@ -3,15 +3,17 @@ package fed.gloo.solo.io; option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1/types"; +option (extproto.equal_all) = true; import "extproto/ext.proto"; option (extproto.hash_all) = true; -option (extproto.equal_all) = true; -import "github.com/solo-io/solo-apis/api/skv2-enterprise/v1alpha1/multicluster.proto"; +import "github.com/solo-io/solo-apis/api/gloo-fed/multicluster/v1alpha1/multicluster.proto"; import "github.com/solo-io/solo-apis/api/gloo-fed/fed/core/v1/placement.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/settings.proto"; - +// The Federated[Resource] CRDs are a gloo-fed wrapper around Gloo Edge CRDs, with a Placement field indicating which +// clusters and namespaces to federate the object to. +// For more, see: https://docs.solo.io/gloo-edge/latest/guides/gloo_federation/federated_configuration/ message FederatedSettingsSpec { message Template { .gloo.solo.io.SettingsSpec spec = 1; @@ -26,4 +28,5 @@ message FederatedSettingsSpec { message FederatedSettingsStatus { core.fed.solo.io.PlacementStatus placement_status = 1; + map namespaced_placement_statuses = 2; } \ No newline at end of file diff --git a/api/gloo-fed/fed.gloo/v1/upstream.proto b/api/gloo-fed/fed.gloo/v1/upstream.proto index 0eb1aa4a1..22ac43ea4 100644 --- a/api/gloo-fed/fed.gloo/v1/upstream.proto +++ b/api/gloo-fed/fed.gloo/v1/upstream.proto @@ -3,15 +3,17 @@ package fed.gloo.solo.io; option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1/types"; +option (extproto.equal_all) = true; import "extproto/ext.proto"; option (extproto.hash_all) = true; -option (extproto.equal_all) = true; -import "github.com/solo-io/solo-apis/api/skv2-enterprise/v1alpha1/multicluster.proto"; +import "github.com/solo-io/solo-apis/api/gloo-fed/multicluster/v1alpha1/multicluster.proto"; import "github.com/solo-io/solo-apis/api/gloo-fed/fed/core/v1/placement.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/upstream.proto"; - +// The Federated[Resource] CRDs are a gloo-fed wrapper around Gloo Edge CRDs, with a Placement field indicating which +// clusters and namespaces to federate the object to. +// For more, see: https://docs.solo.io/gloo-edge/latest/guides/gloo_federation/federated_configuration/ message FederatedUpstreamSpec { message Template { .gloo.solo.io.UpstreamSpec spec = 1; @@ -26,4 +28,5 @@ message FederatedUpstreamSpec { message FederatedUpstreamStatus { core.fed.solo.io.PlacementStatus placement_status = 1; + map namespaced_placement_statuses = 2; } \ No newline at end of file diff --git a/api/gloo-fed/fed.gloo/v1/upstream_group.proto b/api/gloo-fed/fed.gloo/v1/upstream_group.proto index fbfc7c06f..1d3789cb5 100644 --- a/api/gloo-fed/fed.gloo/v1/upstream_group.proto +++ b/api/gloo-fed/fed.gloo/v1/upstream_group.proto @@ -3,14 +3,17 @@ package fed.gloo.solo.io; option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1/types"; +option (extproto.equal_all) = true; import "extproto/ext.proto"; option (extproto.hash_all) = true; -option (extproto.equal_all) = true; -import "github.com/solo-io/solo-apis/api/skv2-enterprise/v1alpha1/multicluster.proto"; +import "github.com/solo-io/solo-apis/api/gloo-fed/multicluster/v1alpha1/multicluster.proto"; import "github.com/solo-io/solo-apis/api/gloo-fed/fed/core/v1/placement.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/proxy.proto"; +// The Federated[Resource] CRDs are a gloo-fed wrapper around Gloo Edge CRDs, with a Placement field indicating which +// clusters and namespaces to federate the object to. +// For more, see: https://docs.solo.io/gloo-edge/latest/guides/gloo_federation/federated_configuration/ message FederatedUpstreamGroupSpec { message Template { .gloo.solo.io.UpstreamGroupSpec spec = 1; @@ -25,4 +28,5 @@ message FederatedUpstreamGroupSpec { message FederatedUpstreamGroupStatus { core.fed.solo.io.PlacementStatus placement_status = 1; + map namespaced_placement_statuses = 2; } \ No newline at end of file diff --git a/api/gloo-fed/fed.ratelimit/v1alpha1/rate_limit_config.proto b/api/gloo-fed/fed.ratelimit/v1alpha1/rate_limit_config.proto new file mode 100644 index 000000000..45511b805 --- /dev/null +++ b/api/gloo-fed/fed.ratelimit/v1alpha1/rate_limit_config.proto @@ -0,0 +1,33 @@ +syntax = "proto3"; +package fed.ratelimit.solo.io; + +option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.ratelimit.solo.io/v1alpha1/types"; + + +option (extproto.equal_all) = true; +import "extproto/ext.proto"; +option (extproto.hash_all) = true; + +import "github.com/solo-io/solo-apis/api/gloo-fed/multicluster/v1alpha1/multicluster.proto"; +import "github.com/solo-io/solo-apis/api/gloo-fed/fed/core/v1/placement.proto"; +import "github.com/solo-io/solo-apis/api/rate-limiter/v1alpha1/ratelimit.proto"; + +// The Federated[Resource] CRDs are a gloo-fed wrapper around Gloo Edge CRDs, with a Placement field indicating which +// clusters and namespaces to federate the object to. +// For more, see: https://docs.solo.io/gloo-edge/latest/guides/gloo_federation/federated_configuration/ +message FederatedRateLimitConfigSpec { + message Template { + .ratelimit.api.solo.io.RateLimitConfigSpec spec = 1; + + core.fed.solo.io.TemplateMetadata metadata = 2; + } + + Template template = 1; + + multicluster.solo.io.Placement placement = 2; +} + +message FederatedRateLimitConfigStatus { + core.fed.solo.io.PlacementStatus placement_status = 1; + map namespaced_placement_statuses = 2; +} \ No newline at end of file diff --git a/api/gloo-fed/fed.rpc/v1/common.proto b/api/gloo-fed/fed.rpc/v1/common.proto deleted file mode 100644 index ed571c619..000000000 --- a/api/gloo-fed/fed.rpc/v1/common.proto +++ /dev/null @@ -1,116 +0,0 @@ -syntax = "proto3"; - -// defines common types shared across DevPortal component APIs -package fed.rpc.solo.io; - -option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1"; - -import "extproto/ext.proto"; -option (extproto.hash_all) = true; -option (extproto.equal_all) = true; - -// ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. -// This is a boiled-down version of Kubernetes ObjectMeta which can be found at: -// https://github.com/kubernetes/apimachinery/blob/master/pkg/apis/meta/v1/generated.proto -message ObjectMeta { - - // Name must be unique within a namespace. Is required when creating resources, although - // some resources may allow a client to request the generation of an appropriate name - // automatically. Name is primarily intended for creation idempotence and configuration - // definition. - // Cannot be updated. - // More info: http://kubernetes.io/docs/user-guide/identifiers#names - // +optional - string name = 1; - - // Namespace defines the space within each name must be unique. An empty namespace is - // equivalent to the "default" namespace, but "default" is the canonical representation. - // Not all objects are required to be scoped to a namespace - the value of this field for - // those objects will be empty. - // - // Must be a DNS_LABEL. - // Cannot be updated. - // More info: http://kubernetes.io/docs/user-guide/namespaces - // +optional - string namespace = 3; - - // UID is the unique in time and space value for this object. It is typically generated by - // the server on successful creation of a resource and is not allowed to change on PUT - // operations. - // - // Populated by the system. - // Read-only. - // More info: http://kubernetes.io/docs/user-guide/identifiers#uids - // +optional - string uid = 5; - - // An opaque value that represents the internal version of this object that can - // be used by clients to determine when objects have changed. May be used for optimistic - // concurrency, change detection, and the watch operation on a resource or set of resources. - // Clients must treat these values as opaque and passed unmodified back to the server. - // They may only be valid for a particular resource or set of resources. - // - // Populated by the system. - // Read-only. - // Value must be treated as opaque by clients and . - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency - // +optional - string resource_version = 6; - - // CreationTimestamp is a timestamp representing the server time when this object was - // created. It is not guaranteed to be set in happens-before order across separate operations. - // Clients may not set this value. It is represented in RFC3339 form and is in UTC. - // - // Populated by the system. - // Read-only. - // Null for lists. - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - // +optional - Time creation_timestamp = 8; - - // Map of string keys and values that can be used to organize and categorize - // (scope and select) objects. May match selectors of replication controllers - // and services. - // More info: http://kubernetes.io/docs/user-guide/labels - // +optional - map labels = 11; - - // Annotations is an unstructured key value map stored with a resource that may be - // set by external tools to store and retrieve arbitrary metadata. They are not - // queryable and should be preserved when modifying objects. - // More info: http://kubernetes.io/docs/user-guide/annotations - // +optional - map annotations = 12; - - - // The name of the cluster which the object belongs to. - // This is used to distinguish resources with same name and namespace in different clusters. - // This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request. - // +optional - string cluster_name = 13; - -} - -// Time is a wrapper around time.Time which supports correct -// marshaling to YAML and JSON. Wrappers are provided for many -// of the factory methods that the time package offers. -// -// +protobuf.options.marshal=false -// +protobuf.as=Timestamp -// +protobuf.options.(gogoproto.goproto_stringer)=false -message Time { - // Represents seconds of UTC time since Unix epoch - // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to - // 9999-12-31T23:59:59Z inclusive. - int64 seconds = 1; - - // Non-negative fractions of a second at nanosecond resolution. Negative - // second values with fractions must still have non-negative nanos values - // that count forward in time. Must be from 0 to 999,999,999 - // inclusive. This field may be limited in precision depending on context. - int32 nanos = 2; -} - -message ResourceYaml { - string yaml = 1; -} \ No newline at end of file diff --git a/api/gloo-fed/fed.rpc/v1/enterprise_gloo_resources.proto b/api/gloo-fed/fed.rpc/v1/enterprise_gloo_resources.proto deleted file mode 100644 index 218a9cfdb..000000000 --- a/api/gloo-fed/fed.rpc/v1/enterprise_gloo_resources.proto +++ /dev/null @@ -1,42 +0,0 @@ -// Code generated by skv2. DO NOT EDIT. - -syntax = "proto3"; -package fed.rpc.solo.io; - -import "extproto/ext.proto"; -option (extproto.hash_all) = true; -option (extproto.equal_all) = true; - -option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1"; -import "github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto"; -import "github.com/solo-io/skv2/api/core/v1/core.proto"; -import "github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/common.proto"; - -message AuthConfig { - ObjectMeta metadata = 1; - enterprise.gloo.solo.io.AuthConfigSpec spec = 2; - enterprise.gloo.solo.io.AuthConfigStatus status = 3; - core.skv2.solo.io.ObjectRef gloo_instance = 4; -} - -message ListAuthConfigsRequest { - core.skv2.solo.io.ObjectRef gloo_instance_ref = 1; -} - -message ListAuthConfigsResponse { - repeated AuthConfig auth_configs = 1; -} - -message GetAuthConfigYamlRequest { - core.skv2.solo.io.ClusterObjectRef auth_config_ref = 1; -} - -message GetAuthConfigYamlResponse { - ResourceYaml yaml_data = 1; -} - -service EnterpriseGlooResourceApi { - - rpc ListAuthConfigs (ListAuthConfigsRequest) returns (ListAuthConfigsResponse) {} - rpc GetAuthConfigYaml (GetAuthConfigYamlRequest) returns (GetAuthConfigYamlResponse) {} -} \ No newline at end of file diff --git a/api/gloo-fed/fed.rpc/v1/failover_scheme.proto b/api/gloo-fed/fed.rpc/v1/failover_scheme.proto deleted file mode 100644 index 9840ed9b5..000000000 --- a/api/gloo-fed/fed.rpc/v1/failover_scheme.proto +++ /dev/null @@ -1,39 +0,0 @@ -syntax = "proto3"; -package fed.rpc.solo.io; - -import "extproto/ext.proto"; -option (extproto.hash_all) = true; -option (extproto.equal_all) = true; - -option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1"; - -import "github.com/solo-io/solo-apis/api/gloo-fed/fed/v1/failover.proto"; -import "github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/common.proto"; -import "github.com/solo-io/skv2/api/core/v1/core.proto"; - -message FailoverScheme { - ObjectMeta metadata = 1; - fed.solo.io.FailoverSchemeSpec spec = 2; - fed.solo.io.FailoverSchemeStatus status = 3; -} - -message GetFailoverSchemeRequest { - core.skv2.solo.io.ClusterObjectRef upstream_ref = 1; -} - -message GetFailoverSchemeResponse { - FailoverScheme failover_scheme = 1; -} - -message GetFailoverSchemeYamlRequest { - core.skv2.solo.io.ObjectRef failover_scheme_ref = 1; -} - -message GetFailoverSchemeYamlResponse { - ResourceYaml yaml_data = 1; -} - -service FailoverSchemeApi { - rpc GetFailoverScheme (GetFailoverSchemeRequest) returns (GetFailoverSchemeResponse) {} - rpc GetFailoverSchemeYaml (GetFailoverSchemeYamlRequest) returns (GetFailoverSchemeYamlResponse) {} -} diff --git a/api/gloo-fed/fed.rpc/v1/federated_enterprise_gloo_resources.proto b/api/gloo-fed/fed.rpc/v1/federated_enterprise_gloo_resources.proto deleted file mode 100644 index 569129b4a..000000000 --- a/api/gloo-fed/fed.rpc/v1/federated_enterprise_gloo_resources.proto +++ /dev/null @@ -1,39 +0,0 @@ -// Code generated by skv2. DO NOT EDIT. - -syntax = "proto3"; -package fed.rpc.solo.io; - -import "extproto/ext.proto"; -option (extproto.hash_all) = true; -option (extproto.equal_all) = true; - -option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1"; -import "github.com/solo-io/solo-apis/api/gloo-fed/fed.enterprise.gloo/v1/auth_config.proto"; -import "github.com/solo-io/skv2/api/core/v1/core.proto"; -import "github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/common.proto"; - -message FederatedAuthConfig { - ObjectMeta metadata = 1; - enterprise.gloo.solo.io.FederatedAuthConfigSpec spec = 2; - enterprise.gloo.solo.io.FederatedAuthConfigStatus status = 3; -} - -message ListFederatedAuthConfigsRequest {} - -message ListFederatedAuthConfigsResponse { - repeated FederatedAuthConfig federated_auth_configs = 1; -} - -message GetFederatedAuthConfigYamlRequest { - core.skv2.solo.io.ObjectRef federated_auth_config_ref = 1; -} - -message GetFederatedAuthConfigYamlResponse { - ResourceYaml yaml_data = 1; -} - -service FederatedEnterpriseGlooResourceApi { - - rpc ListFederatedAuthConfigs (ListFederatedAuthConfigsRequest) returns (ListFederatedAuthConfigsResponse) {} - rpc GetFederatedAuthConfigYaml (GetFederatedAuthConfigYamlRequest) returns (GetFederatedAuthConfigYamlResponse) {} -} \ No newline at end of file diff --git a/api/gloo-fed/fed.rpc/v1/federated_gateway_resources.proto b/api/gloo-fed/fed.rpc/v1/federated_gateway_resources.proto deleted file mode 100644 index f3ead69de..000000000 --- a/api/gloo-fed/fed.rpc/v1/federated_gateway_resources.proto +++ /dev/null @@ -1,87 +0,0 @@ -// Code generated by skv2. DO NOT EDIT. - -syntax = "proto3"; -package fed.rpc.solo.io; - -import "extproto/ext.proto"; -option (extproto.hash_all) = true; -option (extproto.equal_all) = true; - -option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1"; -import "github.com/solo-io/solo-apis/api/gloo-fed/fed.gateway/v1/gateway.proto"; -import "github.com/solo-io/solo-apis/api/gloo-fed/fed.gateway/v1/virtual_service.proto"; -import "github.com/solo-io/solo-apis/api/gloo-fed/fed.gateway/v1/route_table.proto"; -import "github.com/solo-io/skv2/api/core/v1/core.proto"; -import "github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/common.proto"; - -message FederatedGateway { - ObjectMeta metadata = 1; - gateway.solo.io.FederatedGatewaySpec spec = 2; - gateway.solo.io.FederatedGatewayStatus status = 3; -} - -message FederatedVirtualService { - ObjectMeta metadata = 1; - gateway.solo.io.FederatedVirtualServiceSpec spec = 2; - gateway.solo.io.FederatedVirtualServiceStatus status = 3; -} - -message FederatedRouteTable { - ObjectMeta metadata = 1; - gateway.solo.io.FederatedRouteTableSpec spec = 2; - gateway.solo.io.FederatedRouteTableStatus status = 3; -} - -message ListFederatedGatewaysRequest {} - -message ListFederatedGatewaysResponse { - repeated FederatedGateway federated_gateways = 1; -} - -message GetFederatedGatewayYamlRequest { - core.skv2.solo.io.ObjectRef federated_gateway_ref = 1; -} - -message GetFederatedGatewayYamlResponse { - ResourceYaml yaml_data = 1; -} - -message ListFederatedVirtualServicesRequest {} - -message ListFederatedVirtualServicesResponse { - repeated FederatedVirtualService federated_virtual_services = 1; -} - -message GetFederatedVirtualServiceYamlRequest { - core.skv2.solo.io.ObjectRef federated_virtual_service_ref = 1; -} - -message GetFederatedVirtualServiceYamlResponse { - ResourceYaml yaml_data = 1; -} - -message ListFederatedRouteTablesRequest {} - -message ListFederatedRouteTablesResponse { - repeated FederatedRouteTable federated_route_tables = 1; -} - -message GetFederatedRouteTableYamlRequest { - core.skv2.solo.io.ObjectRef federated_route_table_ref = 1; -} - -message GetFederatedRouteTableYamlResponse { - ResourceYaml yaml_data = 1; -} - -service FederatedGatewayResourceApi { - - rpc ListFederatedGateways (ListFederatedGatewaysRequest) returns (ListFederatedGatewaysResponse) {} - rpc GetFederatedGatewayYaml (GetFederatedGatewayYamlRequest) returns (GetFederatedGatewayYamlResponse) {} - - rpc ListFederatedVirtualServices (ListFederatedVirtualServicesRequest) returns (ListFederatedVirtualServicesResponse) {} - rpc GetFederatedVirtualServiceYaml (GetFederatedVirtualServiceYamlRequest) returns (GetFederatedVirtualServiceYamlResponse) {} - - rpc ListFederatedRouteTables (ListFederatedRouteTablesRequest) returns (ListFederatedRouteTablesResponse) {} - rpc GetFederatedRouteTableYaml (GetFederatedRouteTableYamlRequest) returns (GetFederatedRouteTableYamlResponse) {} -} \ No newline at end of file diff --git a/api/gloo-fed/fed.rpc/v1/federated_gloo_resources.proto b/api/gloo-fed/fed.rpc/v1/federated_gloo_resources.proto deleted file mode 100644 index bb317a1ab..000000000 --- a/api/gloo-fed/fed.rpc/v1/federated_gloo_resources.proto +++ /dev/null @@ -1,87 +0,0 @@ -// Code generated by skv2. DO NOT EDIT. - -syntax = "proto3"; -package fed.rpc.solo.io; - -import "extproto/ext.proto"; -option (extproto.hash_all) = true; -option (extproto.equal_all) = true; - -option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1"; -import "github.com/solo-io/solo-apis/api/gloo-fed/fed.gloo/v1/upstream.proto"; -import "github.com/solo-io/solo-apis/api/gloo-fed/fed.gloo/v1/upstream_group.proto"; -import "github.com/solo-io/solo-apis/api/gloo-fed/fed.gloo/v1/settings.proto"; -import "github.com/solo-io/skv2/api/core/v1/core.proto"; -import "github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/common.proto"; - -message FederatedUpstream { - ObjectMeta metadata = 1; - gloo.solo.io.FederatedUpstreamSpec spec = 2; - gloo.solo.io.FederatedUpstreamStatus status = 3; -} - -message FederatedUpstreamGroup { - ObjectMeta metadata = 1; - gloo.solo.io.FederatedUpstreamGroupSpec spec = 2; - gloo.solo.io.FederatedUpstreamGroupStatus status = 3; -} - -message FederatedSettings { - ObjectMeta metadata = 1; - gloo.solo.io.FederatedSettingsSpec spec = 2; - gloo.solo.io.FederatedSettingsStatus status = 3; -} - -message ListFederatedUpstreamsRequest {} - -message ListFederatedUpstreamsResponse { - repeated FederatedUpstream federated_upstreams = 1; -} - -message GetFederatedUpstreamYamlRequest { - core.skv2.solo.io.ObjectRef federated_upstream_ref = 1; -} - -message GetFederatedUpstreamYamlResponse { - ResourceYaml yaml_data = 1; -} - -message ListFederatedUpstreamGroupsRequest {} - -message ListFederatedUpstreamGroupsResponse { - repeated FederatedUpstreamGroup federated_upstream_groups = 1; -} - -message GetFederatedUpstreamGroupYamlRequest { - core.skv2.solo.io.ObjectRef federated_upstream_group_ref = 1; -} - -message GetFederatedUpstreamGroupYamlResponse { - ResourceYaml yaml_data = 1; -} - -message ListFederatedSettingsRequest {} - -message ListFederatedSettingsResponse { - repeated FederatedSettings federated_settings = 1; -} - -message GetFederatedSettingsYamlRequest { - core.skv2.solo.io.ObjectRef federated_settings_ref = 1; -} - -message GetFederatedSettingsYamlResponse { - ResourceYaml yaml_data = 1; -} - -service FederatedGlooResourceApi { - - rpc ListFederatedUpstreams (ListFederatedUpstreamsRequest) returns (ListFederatedUpstreamsResponse) {} - rpc GetFederatedUpstreamYaml (GetFederatedUpstreamYamlRequest) returns (GetFederatedUpstreamYamlResponse) {} - - rpc ListFederatedUpstreamGroups (ListFederatedUpstreamGroupsRequest) returns (ListFederatedUpstreamGroupsResponse) {} - rpc GetFederatedUpstreamGroupYaml (GetFederatedUpstreamGroupYamlRequest) returns (GetFederatedUpstreamGroupYamlResponse) {} - - rpc ListFederatedSettings (ListFederatedSettingsRequest) returns (ListFederatedSettingsResponse) {} - rpc GetFederatedSettingsYaml (GetFederatedSettingsYamlRequest) returns (GetFederatedSettingsYamlResponse) {} -} \ No newline at end of file diff --git a/api/gloo-fed/fed.rpc/v1/gateway_resources.proto b/api/gloo-fed/fed.rpc/v1/gateway_resources.proto deleted file mode 100644 index 1cd12f486..000000000 --- a/api/gloo-fed/fed.rpc/v1/gateway_resources.proto +++ /dev/null @@ -1,96 +0,0 @@ -// Code generated by skv2. DO NOT EDIT. - -syntax = "proto3"; -package fed.rpc.solo.io; - -import "extproto/ext.proto"; -option (extproto.hash_all) = true; -option (extproto.equal_all) = true; - -option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1"; -import "github.com/solo-io/solo-apis/api/gloo/gateway/v1/gateway.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gateway/v1/virtual_service.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gateway/v1/route_table.proto"; -import "github.com/solo-io/skv2/api/core/v1/core.proto"; -import "github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/common.proto"; - -message Gateway { - ObjectMeta metadata = 1; - gateway.solo.io.GatewaySpec spec = 2; - gateway.solo.io.GatewayStatus status = 3; - core.skv2.solo.io.ObjectRef gloo_instance = 4; -} - -message VirtualService { - ObjectMeta metadata = 1; - gateway.solo.io.VirtualServiceSpec spec = 2; - gateway.solo.io.VirtualServiceStatus status = 3; - core.skv2.solo.io.ObjectRef gloo_instance = 4; -} - -message RouteTable { - ObjectMeta metadata = 1; - gateway.solo.io.RouteTableSpec spec = 2; - gateway.solo.io.RouteTableStatus status = 3; - core.skv2.solo.io.ObjectRef gloo_instance = 4; -} - -message ListGatewaysRequest { - core.skv2.solo.io.ObjectRef gloo_instance_ref = 1; -} - -message ListGatewaysResponse { - repeated Gateway gateways = 1; -} - -message GetGatewayYamlRequest { - core.skv2.solo.io.ClusterObjectRef gateway_ref = 1; -} - -message GetGatewayYamlResponse { - ResourceYaml yaml_data = 1; -} - -message ListVirtualServicesRequest { - core.skv2.solo.io.ObjectRef gloo_instance_ref = 1; -} - -message ListVirtualServicesResponse { - repeated VirtualService virtual_services = 1; -} - -message GetVirtualServiceYamlRequest { - core.skv2.solo.io.ClusterObjectRef virtual_service_ref = 1; -} - -message GetVirtualServiceYamlResponse { - ResourceYaml yaml_data = 1; -} - -message ListRouteTablesRequest { - core.skv2.solo.io.ObjectRef gloo_instance_ref = 1; -} - -message ListRouteTablesResponse { - repeated RouteTable route_tables = 1; -} - -message GetRouteTableYamlRequest { - core.skv2.solo.io.ClusterObjectRef route_table_ref = 1; -} - -message GetRouteTableYamlResponse { - ResourceYaml yaml_data = 1; -} - -service GatewayResourceApi { - - rpc ListGateways (ListGatewaysRequest) returns (ListGatewaysResponse) {} - rpc GetGatewayYaml (GetGatewayYamlRequest) returns (GetGatewayYamlResponse) {} - - rpc ListVirtualServices (ListVirtualServicesRequest) returns (ListVirtualServicesResponse) {} - rpc GetVirtualServiceYaml (GetVirtualServiceYamlRequest) returns (GetVirtualServiceYamlResponse) {} - - rpc ListRouteTables (ListRouteTablesRequest) returns (ListRouteTablesResponse) {} - rpc GetRouteTableYaml (GetRouteTableYamlRequest) returns (GetRouteTableYamlResponse) {} -} \ No newline at end of file diff --git a/api/gloo-fed/fed.rpc/v1/gloo_resources.proto b/api/gloo-fed/fed.rpc/v1/gloo_resources.proto deleted file mode 100644 index d3ea5f6d9..000000000 --- a/api/gloo-fed/fed.rpc/v1/gloo_resources.proto +++ /dev/null @@ -1,123 +0,0 @@ -// Code generated by skv2. DO NOT EDIT. - -syntax = "proto3"; -package fed.rpc.solo.io; - -import "extproto/ext.proto"; -option (extproto.hash_all) = true; -option (extproto.equal_all) = true; - -option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/upstream.proto"; - -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/settings.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/proxy.proto"; -import "github.com/solo-io/skv2/api/core/v1/core.proto"; -import "github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/common.proto"; - -message Upstream { - ObjectMeta metadata = 1; - gloo.solo.io.UpstreamSpec spec = 2; - gloo.solo.io.UpstreamStatus status = 3; - core.skv2.solo.io.ObjectRef gloo_instance = 4; -} - -message UpstreamGroup { - ObjectMeta metadata = 1; - gloo.solo.io.UpstreamGroupSpec spec = 2; - gloo.solo.io.UpstreamGroupStatus status = 3; - core.skv2.solo.io.ObjectRef gloo_instance = 4; -} - -message Settings { - ObjectMeta metadata = 1; - gloo.solo.io.SettingsSpec spec = 2; - gloo.solo.io.SettingsStatus status = 3; - core.skv2.solo.io.ObjectRef gloo_instance = 4; -} - -message Proxy { - ObjectMeta metadata = 1; - gloo.solo.io.ProxySpec spec = 2; - gloo.solo.io.ProxyStatus status = 3; - core.skv2.solo.io.ObjectRef gloo_instance = 4; -} - -message ListUpstreamsRequest { - core.skv2.solo.io.ObjectRef gloo_instance_ref = 1; -} - -message ListUpstreamsResponse { - repeated Upstream upstreams = 1; -} - -message GetUpstreamYamlRequest { - core.skv2.solo.io.ClusterObjectRef upstream_ref = 1; -} - -message GetUpstreamYamlResponse { - ResourceYaml yaml_data = 1; -} - -message ListUpstreamGroupsRequest { - core.skv2.solo.io.ObjectRef gloo_instance_ref = 1; -} - -message ListUpstreamGroupsResponse { - repeated UpstreamGroup upstream_groups = 1; -} - -message GetUpstreamGroupYamlRequest { - core.skv2.solo.io.ClusterObjectRef upstream_group_ref = 1; -} - -message GetUpstreamGroupYamlResponse { - ResourceYaml yaml_data = 1; -} - -message ListSettingsRequest { - core.skv2.solo.io.ObjectRef gloo_instance_ref = 1; -} - -message ListSettingsResponse { - repeated Settings settings = 1; -} - -message GetSettingsYamlRequest { - core.skv2.solo.io.ClusterObjectRef settings_ref = 1; -} - -message GetSettingsYamlResponse { - ResourceYaml yaml_data = 1; -} - -message ListProxiesRequest { - core.skv2.solo.io.ObjectRef gloo_instance_ref = 1; -} - -message ListProxiesResponse { - repeated Proxy proxies = 1; -} - -message GetProxyYamlRequest { - core.skv2.solo.io.ClusterObjectRef proxy_ref = 1; -} - -message GetProxyYamlResponse { - ResourceYaml yaml_data = 1; -} - -service GlooResourceApi { - - rpc ListUpstreams (ListUpstreamsRequest) returns (ListUpstreamsResponse) {} - rpc GetUpstreamYaml (GetUpstreamYamlRequest) returns (GetUpstreamYamlResponse) {} - - rpc ListUpstreamGroups (ListUpstreamGroupsRequest) returns (ListUpstreamGroupsResponse) {} - rpc GetUpstreamGroupYaml (GetUpstreamGroupYamlRequest) returns (GetUpstreamGroupYamlResponse) {} - - rpc ListSettings (ListSettingsRequest) returns (ListSettingsResponse) {} - rpc GetSettingsYaml (GetSettingsYamlRequest) returns (GetSettingsYamlResponse) {} - - rpc ListProxies (ListProxiesRequest) returns (ListProxiesResponse) {} - rpc GetProxyYaml (GetProxyYamlRequest) returns (GetProxyYamlResponse) {} -} \ No newline at end of file diff --git a/api/gloo-fed/fed.rpc/v1/glooinstance.proto b/api/gloo-fed/fed.rpc/v1/glooinstance.proto deleted file mode 100644 index 9a28fdad2..000000000 --- a/api/gloo-fed/fed.rpc/v1/glooinstance.proto +++ /dev/null @@ -1,39 +0,0 @@ -syntax = "proto3"; -package fed.rpc.solo.io; - -import "extproto/ext.proto"; -option (extproto.hash_all) = true; -option (extproto.equal_all) = true; - -option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1"; - -import "github.com/solo-io/solo-apis/api/gloo-fed/fed/v1/instance.proto"; -import "github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/common.proto"; - -message GlooInstance { - ObjectMeta metadata = 1; - fed.solo.io.GlooInstanceSpec spec = 2; - fed.solo.io.GlooInstanceStatus status = 3; -} - -message ListGlooInstancesRequest {} - -message ListGlooInstancesResponse { - repeated GlooInstance gloo_instances = 1; -} - -message ClusterDetails { - string cluster = 1; - repeated GlooInstance gloo_instances = 2; -} - -message ListClusterDetailsRequest {} - -message ListClusterDetailsResponse { - repeated ClusterDetails cluster_details = 1; -} - -service GlooInstanceApi { - rpc ListGlooInstances (ListGlooInstancesRequest) returns (ListGlooInstancesResponse) {} - rpc ListClusterDetails (ListClusterDetailsRequest) returns (ListClusterDetailsResponse) {} -} diff --git a/api/gloo-fed/fed.rpc/v1/rt_selector.proto b/api/gloo-fed/fed.rpc/v1/rt_selector.proto deleted file mode 100644 index 9955a5b5b..000000000 --- a/api/gloo-fed/fed.rpc/v1/rt_selector.proto +++ /dev/null @@ -1,43 +0,0 @@ -syntax = "proto3"; -package fed.rpc.solo.io; - -import "extproto/ext.proto"; -option (extproto.hash_all) = true; -option (extproto.equal_all) = true; - -option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1"; - -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/core/matchers/matchers.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/proxy.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gateway/v1/virtual_service.proto"; -import "github.com/solo-io/skv2/api/core/v1/core.proto"; - -message SubRouteTableRow { - - oneof action { - gloo.solo.io.RouteAction route_action = 1; - gloo.solo.io.RedirectAction redirect_action = 2; - gloo.solo.io.DirectResponseAction direct_response_action = 3; - gateway.solo.io.DelegateAction delegate_action = 4; - } - - string matcher = 5; - string match_type = 6; - repeated string methods = 7; - repeated .matchers.core.gloo.solo.io.HeaderMatcher headers = 8; - repeated .matchers.core.gloo.solo.io.QueryParameterMatcher query_parameters = 9; - - repeated SubRouteTableRow rt_routes = 10; -} - -message GetVirtualServiceRoutesRequest { - core.skv2.solo.io.ClusterObjectRef virtual_service_ref = 1; -} - -message GetVirtualServiceRoutesResponse { - repeated SubRouteTableRow vs_routes = 1; -} - -service VirtualServiceRoutesApi { - rpc GetVirtualServiceRoutes (GetVirtualServiceRoutesRequest) returns (GetVirtualServiceRoutesResponse) {} -} diff --git a/api/gloo-fed/fed/core/v1/placement.proto b/api/gloo-fed/fed/core/v1/placement.proto index 9d792ccfc..06dae30f3 100644 --- a/api/gloo-fed/fed/core/v1/placement.proto +++ b/api/gloo-fed/fed/core/v1/placement.proto @@ -1,15 +1,15 @@ syntax = "proto3"; package core.fed.solo.io; +option (extproto.equal_all) = true; import "extproto/ext.proto"; option (extproto.hash_all) = true; -option (extproto.equal_all) = true; option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/core/v1"; import "google/protobuf/wrappers.proto"; - +// Object Metadata to be written with the resource into the remote cluster message TemplateMetadata { map annotations = 1; @@ -48,6 +48,7 @@ message PlacementStatus { map namespaces = 1; } + // map containing the name of the cluster, with the associated Cluster namespaces. map clusters = 1; State state = 2; diff --git a/api/gloo-fed/fed/v1/failover.proto b/api/gloo-fed/fed/v1/failover.proto index b7edac274..ce91ff9e3 100644 --- a/api/gloo-fed/fed/v1/failover.proto +++ b/api/gloo-fed/fed/v1/failover.proto @@ -4,9 +4,9 @@ package fed.solo.io; option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types"; +option (extproto.equal_all) = true; import "extproto/ext.proto"; option (extproto.hash_all) = true; -option (extproto.equal_all) = true; import "google/protobuf/wrappers.proto"; import "google/protobuf/timestamp.proto"; @@ -97,16 +97,38 @@ message FailoverSchemeStatus { ACCEPTED = 4; } - // The current state of the resource + // The current state of the resource. + // Deprecated: use namespacedStatuses instead. State state = 1; - // A human readable message about the current state of the object + // A human readable message about the current state of the object. + // Deprecated: use namespacedStatuses instead. string message = 2; // The most recently observed generation of the resource. This value corresponds to the `metadata.generation` of - // a kubernetes resource + // a kubernetes resource. + // Deprecated: use namespacedStatuses instead. int64 observed_generation = 3; - // The time at which this status was recorded - google.protobuf.Timestamp processing_time = 4; + // The time at which this status was recorded. + // Deprecated: use namespacedStatuses instead. + google.protobuf.Timestamp processing_time = 4; + + // Map of gloo fed controller namespace to FailoverScheme status. + map namespaced_statuses = 5; + + message Status { + // The current state of the resource. + State state = 1; + + // A human readable message about the current state of the object. + string message = 2; + + // The most recently observed generation of the resource. This value corresponds to the `metadata.generation` of + // a kubernetes resource. + int64 observed_generation = 3; + + // The time at which this status was recorded. + google.protobuf.Timestamp processing_time = 4; + } } diff --git a/api/gloo-fed/fed/v1/instance.proto b/api/gloo-fed/fed/v1/instance.proto index 8eb10e54a..e9ebf06a3 100644 --- a/api/gloo-fed/fed/v1/instance.proto +++ b/api/gloo-fed/fed/v1/instance.proto @@ -5,9 +5,9 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types"; import "github.com/solo-io/skv2/api/core/v1/core.proto"; +option (extproto.equal_all) = true; import "extproto/ext.proto"; option (extproto.hash_all) = true; -option (extproto.equal_all) = true; message GlooInstanceSpec { @@ -39,6 +39,8 @@ message GlooInstanceSpec { int32 ready_replicas = 3; // Whether or not this proxy supports wasm plugins bool wasm_enabled = 4; + // Whether or not this proxy allows its config dumps to be read + bool read_config_multicluster_enabled = 11; // The version string version = 5; // Name of the proxy instance, this is important to distinguish it from other proxy instances, @@ -122,6 +124,15 @@ message GlooInstanceSpec { // Proxies describes the Proxies configuring the GlooInstance. Summary proxies = 8; + // RateLimitConfigs describes the RateLimitConfigs available to the GlooInstance. + Summary rate_limit_configs = 9; + + // MatchableHttpGateways describes the MatchableHttpGateways available to the GlooInstance. + Summary matchable_http_gateways = 10; + + // MatchableTcpGateways describes the MatchableTcpGateways available to the GlooInstance. + Summary matchable_tcp_gateways = 11; + // Deployments describes the Deployments in the GlooInstance's install namespace. Summary deployments = 20; diff --git a/api/skv2-enterprise/v1alpha1/multicluster.proto b/api/gloo-fed/multicluster/v1alpha1/multicluster.proto similarity index 98% rename from api/skv2-enterprise/v1alpha1/multicluster.proto rename to api/gloo-fed/multicluster/v1alpha1/multicluster.proto index 41bbb71e4..ac6e37645 100644 --- a/api/skv2-enterprise/v1alpha1/multicluster.proto +++ b/api/gloo-fed/multicluster/v1alpha1/multicluster.proto @@ -5,7 +5,7 @@ import "extproto/ext.proto"; option (extproto.hash_all) = true; option (extproto.equal_all) = true; -option go_package = "github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1"; +option go_package = "github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types"; import "google/protobuf/wrappers.proto"; import "github.com/solo-io/skv2/api/core/v1/core.proto"; diff --git a/api/gloo/enterprise.gloo/v1/auth_config.proto b/api/gloo/enterprise.gloo/v1/auth_config.proto index be1405020..fee5719f3 100644 --- a/api/gloo/enterprise.gloo/v1/auth_config.proto +++ b/api/gloo/enterprise.gloo/v1/auth_config.proto @@ -8,6 +8,7 @@ import "github.com/solo-io/solo-kit/api/v1/ref.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "github.com/solo-io/solo-kit/api/v1/solo-kit.proto"; import "github.com/solo-io/solo-kit/api/external/envoy/api/v2/discovery.proto"; @@ -23,6 +24,7 @@ import "google/protobuf/empty.proto"; message AuthConfigSpec { + reserved 1; message Config { @@ -34,18 +36,23 @@ message AuthConfigSpec { google.protobuf.StringValue name = 9; oneof auth_config { + // +kubebuilder:validation:XValidation:rule="has(self.apr) ? !has(self.encryption) && !has(self.userList) : has(self.encryption) && has(self.userList)",message="Either apr or both encryption and userSource must be set; apr may not be set alongside either encryption or userSource" BasicAuth basic_auth = 1; OAuth oauth = 2 [deprecated = true]; OAuth2 oauth2 = 8; ApiKeyAuth api_key_auth = 4; - AuthPlugin plugin_auth = 5; + AuthPlugin plugin_auth = 5 [deprecated = true]; OpaAuth opa_auth = 6; Ldap ldap = 7; // This is a "dummy" extauth service which can be used to support multiple auth mechanisms with JWT authentication. // If Jwt authentication is to be used in the [boolean expression](https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto.sk/#authconfig) in an AuthConfig, you can use this auth config type to include Jwt as an Auth config. // In addition, `allow_missing_or_failed_jwt` must be set on the Virtual Host or Route that uses JWT auth or else the JWT filter will short circuit this behaviour. google.protobuf.Empty jwt = 11; + // +kubebuilder:validation:XValidation:rule="has(self.grpc) || has(self.http)",message="Must specify grpc or http" PassThroughAuth pass_through_auth = 12; + HmacAuth hmac_auth = 13; + OpaServerAuth opa_server_auth = 14; + PortalAuth portal_auth = 15; } } @@ -55,12 +62,21 @@ message AuthConfigSpec { // // State is shared between successful requests on the chain, i.e., the headers returned from each // successful auth service get appended into the final auth response. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinItems=1 repeated Config configs = 3; // How to handle processing of named configs within an auth config chain. - // An example config might be: `( basic1 || basic2 || (oidc1 && !oidc2) )` + // An example config might be: `( basic1 \|\| basic2 \|\| (oidc1 && !oidc2) )` // The boolean expression is evaluated left to right but honors parenthesis and short-circuiting. google.protobuf.StringValue boolean_expr = 10; + + // How the service should handle a redirect response from an OIDC issuer. In the default false mode, + // the redirect will be considered a successful response, and the client will receive a 302 with a location header. + // If this is set to true, the client will instead receive a 401 unauthorized response. This is useful in cases where + // API calls are being made or other such occurrences where the client cannot handle the redirect. + bool fail_on_redirect = 11; } // Auth configurations defined on virtual hosts, routes, and weighted destinations will be unmarshalled to this message. @@ -80,8 +96,14 @@ message Settings { // The upstream to ask about auth decisions core.solo.io.ResourceRef extauthz_server_ref = 1; - // If this is set, communication to the upstream will be via HTTP and not GRPC. - HttpService http_service = 2; + oneof service_type { + // If this is set, communication to the upstream will be via HTTP and not GRPC (default). + HttpService http_service = 2; + + // Optional, if set the communication to the upstream will be via GRPC. + GrpcService grpc_service = 11; + } + // If the auth server trusted id of the user, it will be set in this header. // Specifically this means that this header will be sanitized form the incoming request. @@ -135,6 +157,11 @@ message Settings { string stat_prefix = 10; } +message GrpcService { + // Set the authority header when calling the GRPC service. + string authority = 1; +} + message HttpService { // Sets a prefix to the value of authorization request header *Path*. string path_prefix = 1; @@ -152,19 +179,27 @@ message HttpService { // These headers that will be included to the request to authorization service. Note that // client request of the same key will be overridden. map headers_to_add = 2; + + // Headers that match these regex patterns will be copied from the incoming request + // to the request going to the auth server. + repeated string allowed_headers_regex = 3; } Request request = 2; message Response { - // When this is set, authorization response headers that have a will be added to the original client request and sent to the upstream. + // When this is set, authorization response headers that have a header in this list will be added to the original client request and sent to the upstream. // Note that coexistent headers will be overridden. repeated string allowed_upstream_headers = 1; - // When this. is set, authorization response headers that will be added to the client's response when auth request is denied. + // When this is set, authorization response headers in this list will be added to the client's response when the auth request is denied. // Note that when this list is *not* set, all the authorization response headers, except *Authority // (Host)* will be in the response to the client. When a header is included in this list, *Path*, // *Status*, *Content-Length*, *WWW-Authenticate* and *Location* are automatically added. repeated string allowed_client_headers = 2; + + // When this is set, authorization response headers that have a correspondent match will be added to the client's response. + // Note that coexistent headers will be appended. + repeated string allowed_upstream_headers_to_append = 3; } Response response = 3; } @@ -194,7 +229,7 @@ message CustomAuth { // This allows the server to base the auth decision on metadata that you define on the source of the request. // // This attribute is analogous to Envoy's config.filter.http.ext_authz.v2.CheckSettings. See the official - // [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/filter/http/ext_authz/v2/ext_authz.proto.html?highlight=ext_authz#config-filter-http-ext-authz-v2-checksettings) + // [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/ext_authz/v3/ext_authz.proto#envoy-v3-api-msg-extensions-filters-http-ext-authz-v3-checksettings) // for more details. map context_extensions = 1; @@ -204,6 +239,7 @@ message CustomAuth { string name = 2; } +// **Deprecated**: The pluginAuth config type is deprecated and will be removed in a future release. Use passThroughAuth instead. message AuthPlugin { // Name of the plugin string name = 1; @@ -213,21 +249,95 @@ message AuthPlugin { // If not specified, defaults to the name of the plugin string exported_symbol_name = 3; + // +kubebuilder:validation:Required google.protobuf.Struct config = 4; } +// This is the legacy/simple basic auth config. It supports the APR and SHA-1 hashing algorithms. +// +// When using basic auth, requests can pass only one `Authorization` header. You cannot use basic auth config in +// conjunction with other auth configs that rely on the `Authorization` header as well. In case of such a conflict, +// use a different type of auth config or configure a different header, such as `X-Auth`. message BasicAuth { string realm = 1; + // If 'apr' is defined, 'encryption' and 'user_source' must not be defined or the config will fail validation message Apr { + // Message to store the salt and salted hashed password for a user message SaltedHashedPassword { + // Salt used with the apr algorithm for the user string salt = 1; + // Salted and hashed password for the user string hashed_password = 2; } + // Map of authorized usernames to stored credentials map users = 2; } Apr apr = 2; + + // Below here is the "extended" basic auth config. Hashing algorithm and user source are independent and configurable. + // It is required to define exactly one of 'apr' or ('encryption' and 'user_source') or the config will fail validation + + // The encryption/hashing algorithm to use to store the password + message EncryptionType { + // Sha1 encryption type (https://datatracker.ietf.org/doc/html/rfc3174) + // Sha1 is considered insecure and is not recommended for production use + message Sha1 {} + // Apache specific iterated MD5 hashing: (https://httpd.apache.org/docs/2.4/misc/password_encryptions.html) + message Apr {} + oneof algorithm { + Apr apr = 1; + Sha1 sha1 = 2; + } + } + + // The encryption type to use to store the password on the server + // If 'encryption' is defined, 'user_source' must be defined and the top level 'apr' field must not be defined or the config will fail validation + EncryptionType encryption = 3; + + // Message to store user data. We need the salt and salted hashed password for each user + message User { + // Salt used with the hashing algorithm for the user + string salt = 1; + // Salted and hashed password for the user + string hashed_password = 2; + } + + // Map of valid usernames to stored credentials + message UserList { + map users= 1; + } + + // Source of user credential data + // If 'user_source' is defined, 'encryption' must be defined and the top level 'apr'' field must not be defined or the config will fail validation + oneof user_source { + UserList user_list = 4; + } +} + + +// HMAC is a message authentication technique that can use multiple algorithms for finding credentials and generating signed messages. +// It conforms to https://www.ietf.org/rfc/rfc2104.txt +message HmacAuth { + // Configuration for how secrets are stored. + oneof secret_storage { + // +kubebuilder:validation:Required + SecretRefList secret_refs = 1; + } + // Algorithm to use to turn the request into a hashable string + oneof implementation_type{ + HmacParametersInHeaders parameters_in_headers = 2; + } +} +message SecretRefList { + // list of secrets as registered with the issuer + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinItems=1 + repeated core.solo.io.ResourceRef secret_refs = 1; } +// Extract the HMAC parameters from the HTTP headers and use SHA-1 hashing +message HmacParametersInHeaders {} // Deprecated: Prefer OAuth2 message OAuth { @@ -246,6 +356,9 @@ message OAuth { // we to redirect after successful auth, if we can't determine the original // url this should be your publicly available app url. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 string app_url = 4 [deprecated = true]; // a callback path relative to app url that will be used for OIDC callbacks. @@ -261,15 +374,25 @@ message OAuth2 { // provide issuer location and let gloo handle OIDC flow for you. // requests authorized by validating the contents of ID token. // can also authorize the access token if configured. + // + // +kubebuilder:validation:XValidation:rule="has(self.clientAuthentication) ? !has(self.clientSecretRef) && !has(self.disableClientSecret) : has(self.clientSecretRef) || (has(self.disableClientSecret) && self.disableClientSecret)",message="If clientAuthentication is set, neither clientSecretRef nor disableClientSecret may be set. Otherwise, clientSecretRef must be set or disableClientSecret must be true." OidcAuthorizationCode oidc_authorization_code = 1; // provide the access token on the request and let gloo handle authorization. // - // according to https://tools.ietf.org/html/rfc6750 you can pass tokens through: + // according to https://datatracker.ietf.org/doc/html/rfc6750 you can pass tokens through: // - form-encoded body parameter. recommended, more likely to appear. e.g.: Authorization: Bearer mytoken123 // - URI query parameter e.g. access_token=mytoken123 // - and (preferably) secure cookies AccessTokenValidation access_token_validation = 2; + + // Enterprise-Only: THIS FEATURE IS IN TECH PREVIEW. APIs are versioned as alpha and subject to change. + // provide issuer location and let Gloo handle Oauth2 flow for you. + // requests authorized by validating the contents of access token. + // Prefer to use OIDC for better security. + // + // +kubebuilder:validation:XValidation:rule="has(self.clientSecretRef) || (has(self.disableClientSecret) && self.disableClientSecret)",message="Either clientSecretRef must be set or disableClientSecret must be true" + PlainOAuth2 oauth2 = 3; } } @@ -281,10 +404,37 @@ message RedisOptions { // size of the connection pool. can leave unset for default. // defaults to 10 connections per every CPU int32 pool_size = 3; + // enabled with a socket type of TLS. this is the tls cert mount path for this particular host. + // the generic secret can include the keys 'ca.crt', 'tls.crt', and 'tls.key'. + // the secret can contain the root-ca ,'ca.crt', at minimum. If a + // certificate is needed, both the 'tls.crt' and 'tls.key' need to be included. + // reference this to equal the 'mountPath' on the 'redis.certs[x].mountPath' in the helm chart values. + // an example of a mount path is '/certs'. + string tls_cert_mount_path = 4; + // redis socket types + enum SocketType { + // TCP connection socket, this is the default. + TCP = 0; + // TLS connection socket. + TLS = 1; + } + // the socket type, default is TCP. + SocketType socket_type = 5; } message UserSession { message InternalSession { + // Refresh expired id-tokens using the refresh-token. The tokens refreshes when the client issues a call. + // Defaults to false. To enable refreshing, set to true. + google.protobuf.BoolValue allow_refreshing = 1; + // Prefix to append to cookie keys, such as for separate domain and subdomain prefixes. + // Cookie keys are stored in the form `_`. + // For more information, see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#attributes + string key_prefix = 2; + // Domain used to validate against requests in order to ensure that request host name matches target domain. + // If the target domain is provided will prevent requests that do not match the target domain according to + // the domain matching specifications in RFC 6265. For more information, see https://datatracker.ietf.org/doc/html/rfc6265#section-5.1.3 + string target_domain = 3; } message RedisSession { // Options to connect to redis @@ -293,9 +443,22 @@ message UserSession { string key_prefix = 2; // Cookie name to set and store the session id. If empty the default "__session" is used. string cookie_name = 3; - // When set, refresh expired id-tokens using the refresh-token. Defaults to true. - // Explicitly set to false to disable refreshing. + // Refresh expired id-tokens using the refresh-token. The tokens refreshes when the client issues a call. + // Defaults to true. To disable refreshing, set to false. google.protobuf.BoolValue allow_refreshing = 4; + // Specifies a time buffer in which an id-token will be refreshed prior to its + // actual expiration. Defaults to 2 seconds. A duration of 0 will only refresh + // tokens after they have already expired. To refresh tokens, you must also set + // 'allowRefreshing' to 'true'; otherwise, this field is ignored. + google.protobuf.Duration pre_expiry_buffer = 5; + // Domain used to validate against requests in order to ensure that request host name matches target domain. + // If the target domain is provided will prevent requests that do not match the target domain according to + // the domain matching specifications in RFC 6265. For more information, see https://datatracker.ietf.org/doc/html/rfc6265#section-5.1.3 + string target_domain = 6; + + // If set, the name of the header that will include the randomly generated session id + // This would be used as part of the code exchange with the Oauth2 token endpoint + string header_name = 7; } // should we fail auth flow when failing to get a session from redis, or allow it to continue, @@ -309,9 +472,31 @@ message UserSession { // Use a non-secure cookie. Note - this should only be used for testing and in trusted // environments. bool not_secure = 2; + // Set the cookie to be HttpOnly. defaults to true. Set explicity to false to disable. + google.protobuf.BoolValue http_only = 5; // Path of the cookie. If unset, defaults to "/". Set it explicitly to "" to avoid setting a // path. google.protobuf.StringValue path = 3; + // The SameSite options. The default value is LaxMode. + enum SameSite { + // Default Mode is the same as LaxMode but will not show up in the Cookie Header. This value is ignored. + DefaultMode = 0; + // Cookies are not sent on normal cross-site subrequests, but are sent when + // navigating to the origin site. + LaxMode = 1; + // Cookies are sent only in first-party contexts and are not sent along with requests + // initiated by third-party websites. + // + // **Warning**: Do not use this mode if the app and the IdP have different domains. + // In this case, some browsers incorrectly detect the redirect from `/callback` to `/login` + // as a cross-site request. + StrictMode = 2; + // Cookies are sent in all contexts. Cookie NotSecure must be unset. + NoneMode = 3; + } + // Whether the cookie should be restricted to a first-party or same-site context. + // The default mode is LaxMode. + SameSite same_site = 6; // Cookie domain string domain = 4; } @@ -324,6 +509,17 @@ message UserSession { // Use redis to store the tokens and just store a random id in the cookie. RedisSession redis = 4; } + // the cipher config is used to encrypt session cookie values. This is currently only available for OIDC. + message CipherConfig { + // to enable the cipher encryption, the key has to be present. Note that the key has to be found and 32 bytes in + // length for the authconfig to not be rejected. + oneof key { + // The key reference used for the cipher. The reference must be a Kubernetes Secret of type `gloo.solo.io.EncryptionKeySecret`. + core.solo.io.ResourceRef key_ref = 1; + } + } + // the cipher config enables the symmetric key encryption of the cookie values of the user session. + CipherConfig cipher_config = 5; } message HeaderConfiguration { @@ -331,6 +527,8 @@ message HeaderConfiguration { string id_token_header = 1; // If set, the access token will be forward upstream using this header name. string access_token_header = 2; + // If true, adds the "Bearer" prefix to the upstream access token header value. + google.protobuf.BoolValue use_bearer_schema_for_authorization = 3; } // OIDC configuration is discovered at /.well-known/openid-configuration @@ -363,9 +561,15 @@ message DiscoveryOverride { // list of claim types that the provider supports repeated string claims = 9; + + // url of the provider token revocation endpoint + string revocation_endpoint = 10; + + // url of the provider end session endpoint + string end_session_endpoint = 11; } -// The json web key set (JWKS) (https://tools.ietf.org/html/rfc7517) is discovered at an interval +// The json web key set (JWKS) (https://datatracker.ietf.org/doc/html/rfc7517) is discovered at an interval // from a remote source. When keys rotate in the remote source, there may be a delay in the // local source picking up those new keys. Therefore, a user could execute a request with a token // that has been signed by a key in the remote JWKS, but the local cache doesn't have the key yet. @@ -393,16 +597,76 @@ message JwksOnDemandCacheRefreshPolicy { } } +message AutoMapFromMetadata { + // The namespace from which to map metadata + string namespace = 1; +} + +message EndSessionProperties { + // The Method used to make the request. + enum MethodType { + // Uses GET method when making the request + GetMethod = 0; + // Uses POST method when making the request + PostMethod = 1; + } + // The method type used by the end session endpoint, defaults to GET. + MethodType methodType = 1; +} + +// Map a single claim from an OAuth2 or OIDC token to a header in the request to the upstream destination. +message ClaimToHeader { + // The claim name from the token, such as `sub`. + string claim = 1; + + // The header to copy the claim to, such as `x-sub`. + string header = 2; + + // If the header exists, append the claim value to the header (true), or overwrite any existing value (false). The default behavior is to overwrite any existing value (false). + bool append = 3; +} + +// For apps in Microsoft Azure, configure Microsoft Entra ID as the OpenID Connect (OIDC) provider. +// This way, you can enable distributed claims and caching for when users are members of more than 200 groups. +message Azure { + // The client ID for the ExtAuthService app that is registered in MS Entra, + // to access the Microsoft Graph API to retrieve distributed claims. + // This app is NOT the app that you want to configure external auth for. + string client_id = 1; + + // The tenant ID represents the MS Entra organization ID where the ExtAuthService app is registered. + // This tenant ID may or may not be the same as in the top level `OidcAuthorizationCodeConfig`, + // depending on how your Azure account is provisioned. + string tenant_id = 2; + + // The client secret of the ExtAuthService app that is registered with MS Entra to communicate with the MS Graph API. + // The client secret data must be placed in a k8s secret under a key called 'client-secret'. + core.solo.io.ResourceRef client_secret = 3; + + // Redis connection details to cache MS Entra claims. + // This way, you avoid performance issues of accessing the Microsoft Graph API too many times. + // Note that this setting does NOT turn on Redis caching for the user session. + // To turn on Redis user session caching, use the `userSessionConfig` field. + RedisOptions claims_caching_options = 4; +} message OidcAuthorizationCode { // your client id as registered with the issuer + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 string client_id = 1; - // your client secret as registered with the issuer - core.solo.io.ResourceRef client_secret_ref = 2; + // your client secret as registered with the issuer. + // This is required unless `disable_client_secret` is true + // This field has been deprecated and can be set in the client_secret option of client_authentication + core.solo.io.ResourceRef client_secret_ref = 2 [deprecated = true]; // The url of the issuer. We will look for OIDC information in issuerUrl+ // ".well-known/openid-configuration" + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 string issuer_url = 3; // extra query parameters to apply to the Ext-Auth service's authorization request to the identity provider. @@ -417,10 +681,16 @@ message OidcAuthorizationCode { // where to redirect after successful auth, if we can't determine the original url. // this should be your publicly available app url. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 string app_url = 5; // a callback path relative to app url that will be used for OIDC callbacks. // should not be used by the application. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 string callback_path = 6; // a path relative to app url that will be used for logging out from an OIDC session. @@ -481,100 +751,304 @@ message OidcAuthorizationCode { // in the future we may implement this: // add optional configuration for validation of the access token received during the OIDC flow // AccessTokenValidation access_token_validation = 8; -} -message AccessTokenValidation { + // DEPRECATED: Prefer the RedisSession.HeaderName field + // If set, the randomly generated session id will be sent to the token endpoint as part of the code exchange + // The session id is used as the key for sessions in Redis + string session_id_header_name = 16 [deprecated = true]; + + // If set, CallbackPath will be evaluated as a regular expression + bool parse_callback_path_as_regex = 17; + + // If specified, authEndpointQueryParams and tokenEndpointQueryParams will be populated using dynamic metadata values. + // By default parameters will be extracted from the solo_authconfig_oidc namespace + // this behavior can be overridden by explicitly specifying a namespace + AutoMapFromMetadata auto_map_from_metadata = 18; + + // If specified, these are properties defined for the end session endpoint + // specifications. Noted [here](https://openid.net/specs/openid-connect-rpinitiated-1_0.html) + // in the OIDC documentation. + EndSessionProperties end_session_properties = 19; + + // Map claims to dynamic metadata keys in the authorization response, such as + // `dynamic_metadata.issuer=iss` and `dynamic_metadata.email=email`. + // Use this approach to enrich the metadata that is passed to upstream services + // so that they can be further processed or used for decision-making. + // Note that metadata keys must be unique, and the claim names must be alphanumeric and use `-` or `_` as separators. + // The metadata live in a namespace specified by the canonical name of the extauth filter (`envoy.filters.http.ext_authz`), + // and the structure of the claim value is preserved in the metadata struct. Dynamic metadata can be viewed in the authorization response. + // You can view the authorization response in the logs of the extauth pod when debug logging is enabled. + // To further process dynamic metadata, you can extract the dynamic metadata keys with an Inja template in a transformation or rate limiting policy. + // For example, to extract a nested `sub` key that is stored under `config_0`, use `{{ dynamic_metadata("config_0:sub", "envoy.filters.http.ext_authz")}}`. + map dynamic_metadata_from_claims = 20; + // If true, do not check for or use the client secret. + // Generally the client secret is required and AuthConfigs will be rejected if it isn't set. + // However certain implementations of the PKCE flow do not use a client secret (including Okta) so this setting allows configuring Oidc without a client secret. + // This field has been deprecated and can be set in the client_secret option of client_authentication + google.protobuf.BoolValue disable_client_secret = 21 [deprecated = true]; + + // Optional: Configuration specific to the OAuth2 access token received and processed by the ext-auth-service. + AccessToken access_token = 23; + + // Optional: Configuration specific to the OIDC identity token received and processed by the ext-auth-service. + IdentityToken identity_token = 24; + + // Optional: Map a single claim from an OAuth2 access token to a header in the request to the upstream destination. + // Gloo Mesh products only: Note that if you want to clear the route cache to force the proxy to recalculate the + // routing destination after adding the claims, you must create an additional JwtPolicy or TransformationPolicy, + // and configure the `clearRouteCache` or `recalculateRoutingDestination` options. + message AccessToken { + + // A list of claims to be mapped from the JWT token received by ext-auth-service to an upstream destination. + // This option is not available for opaque tokens. + repeated ClaimToHeader claims_to_headers = 1; + } - // Defines how JSON Web Token (JWT) access tokens are validated. - // - // Tokens are validated using a JSON Web Key Set (as defined in - // [Section 5 of RFC7517](https://tools.ietf.org/html/rfc7517#section-5)), - // which can be either inlined in the configuration or fetched from a remote location via HTTP. - // Any keys in the JWKS that are not intended for signature verification (i.e. whose - // ["use" parameter](https://tools.ietf.org/html/rfc7517#section-4.2) is not "sig") - // will be ignored by the system, as will keys that do not specify a - // ["kid" (Key ID) parameter](https://tools.ietf.org/html/rfc7517#section-4.2). - // - // The JWT to be validated must define non-empty "kid" and "alg" headers. The "kid" header - // determines which key in the JWKS will be used to verify the signature of the token; - // if no matching key is found, the token will be rejected. - // - // If present, the server will verify the "exp", "iat", and "nbf" standard JWT claims. - // Validation of the "iss" claim and of token scopes can be configured as well. - // If the JWT has been successfully validated, its set of claims will be added to the - // `AuthorizationRequest` state under the "jwtAccessToken" key. - message JwtValidation { - - // Specifies how to fetch JWKS from remote and how to cache it. - message RemoteJwks { - // The HTTP URI to fetch the JWKS. - string url = 1; - - // The frequency at which the JWKS should be refreshed. - // If not specified, the default value is 5 minutes. - google.protobuf.Duration refresh_interval = 2; + // Optional: Map a single claim from an OIDC identity token to a header in the request to the upstream destination. + message IdentityToken { + + // A list of claims to be mapped from the JWT token received by ext-auth-service to an upstream destination. + // This option is not available for opaque tokens. + repeated ClaimToHeader claims_to_headers = 1; + } + + // Configuration specific to the client authentication type used to exchange the access code for the access and id tokens. + message ClientAuthentication { + // Client Secret Authentication requires a client secret (unless it is disabled) + message ClientSecret { + // your client secret as registered with the issuer. + // This is required unless `disable_client_secret` is true + core.solo.io.ResourceRef client_secret_ref = 1; + // If true, do not check for or use the client secret. + // Generally the client secret is required and AuthConfigs will be rejected if it isn't set. + // However certain implementations of the PKCE flow do not use a client secret (including Okta) so this setting allows configuring Oidc without a client secret. + google.protobuf.BoolValue disable_client_secret = 2; } - // Represents a locally available JWKS. - message LocalJwks { - // JWKS is embedded as a string. - string inline_string = 1; + // Private Key JWT Authentication requires a signing key for the JWT and an duration for the JWT to be valid. + message PrivateKeyJwt{ + // Signing key for the JWT used to authenticate the client + // + // +kubebuilder:validation:Required + core.solo.io.ResourceRef signing_key_ref = 1; + // Amount of time for which the JWT is valid. No maximum is enforced, but different IDPs may impose limits on how far in + // the future the expiration time is allowed to be. If omitted, default is 5s. + google.protobuf.Duration valid_for = 2; } - oneof jwks_source_specifier { - // Fetches the JWKS from a remote location. - RemoteJwks remote_jwks = 1; - // Loads the JWKS from a local data source. - LocalJwks local_jwks = 2; + // Configure how to authenticate the client + oneof client_authentication_config { + // Use the client secret method to authenticate the client + // + // +kubebuilder:validation:XValidation:rule="has(self.clientSecretRef) || (has(self.disableClientSecret) && self.disableClientSecret)",message="Either clientSecretRef must be set or disableClientSecret must be true" + ClientSecret client_secret = 1; + // Use the private ket JWT method to authenticate the client + PrivateKeyJwt private_key_jwt = 2; } + } - // Allow only tokens that have been issued by this principal (i.e. whose "iss" claim matches this value). - // If empty, issuer validation will be skipped. - string issuer = 3; + // +kubebuilder:validation:XValidation:rule="has(self.clientSecret) || has(self.privateKeyJwt)",message="Must specify clientSecret or privateKeyJwt" + ClientAuthentication client_authentication = 25; + + oneof Provider { + Default default = 26; + Azure azure = 27; } - // Defines how (opaque) access tokens, received from the oauth authorization endpoint, are validated - // [OAuth2.0 Token Introspection](https://tools.ietf.org/html/rfc7662) + // No-op, represents default OIDC behavior + message Default {} + + // For the moment this is just path, but we may want to configure things like iss/sid validation + message FrontChannelLogout { + // Path to use for front channel logout. Should not be the same as logout or callback paths. + string path=1; + } + + // Configuration for front channel logout. This is used to log out the user from multiple apps/clients associated with one OpenId Provider (OP). + // The path is registered with the OP and is called for each app/client that the user is logged into when the logout endpoint is called. + FrontChannelLogout front_channel_logout = 28; +} + +message PlainOAuth2 { + // Your client ID as registered with the issuer // - // If the token introspection url requires client authentication, both the client_id and client_secret - // are required. If only one is provided, the config will be rejected. - // These values will be encoded in a basic auth header in order to authenticate the client. - message IntrospectionValidation { - // The URL for the [OAuth2.0 Token Introspection](https://tools.ietf.org/html/rfc7662) endpoint. - // If provided, the (opaque) access token provided or received from the oauth authorization endpoint - // will be validated against this endpoint, or locally cached responses for this access token. - string introspection_url = 1; - - // Your client id as registered with the issuer. - // Optional: Use if the token introspection url requires client authentication. - string client_id = 2; - - // Your client secret as registered with the issuer. - // Optional: Use if the token introspection url requires client authentication. - core.solo.io.ResourceRef client_secret_ref = 3; - - // The name of the [introspection response](https://tools.ietf.org/html/rfc7662#section-2.2) - // attribute that contains the ID of the resource owner (e.g. `sub`, `username`). - // If specified, the external auth server will use the value of the attribute as the identifier of the - // authenticated user and add it to the request headers and/or dynamic metadata (depending on how the - // server is configured); if the field is set and the attribute cannot be found, the request will be denied. - // This field is optional and by default the server will not try to derive the user ID. - string user_id_attribute_name = 4; + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + string client_id = 1; + + // Your client secret as registered with the issuer. + // This is required unless `disable_client_secret` is set. + core.solo.io.ResourceRef client_secret_ref = 2; + + // Extra query parameters to apply to the Ext-Auth service's authorization request to the identity provider. + // These parameters can be useful for flows such as [PKCE](https://www.oauth.com/oauth2-servers/pkce/authorization-request/) + // to set the `code_challenge` and `code_challenge_method`. + map auth_endpoint_query_params = 3; + + // Where to redirect after successful auth, if Gloo can't determine the original URL. + // Set this field to your publicly available app URL. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + string app_url = 4; + + // A callback path relative to the app URL to be used for OAuth2 callbacks. + // Do not use this path in the application itself. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + string callback_path = 5; + + // Scopes to request for. + repeated string scopes = 6; + + // Configuration related to the user session. + UserSession session = 7; + + // A path relative to the app URL to use for logging out from an OAuth2 session. + // Do not use this path in the application itself. + // If not provided, logout functionality is disabled. + string logout_path = 8; + + // Extra query parameters to apply to the Ext-Auth service's token request to the identity provider. + // These parameters can be useful for flows such as [PKCE](https://www.oauth.com/oauth2-servers/pkce/authorization-request/) + // to set the `code_verifier`. + map token_endpoint_query_params = 9; + + // URL to redirect to after logout. + // Set this field to a publicly available URL. If not provided, this value defaults to the `app_url` value. + string after_logout_url = 10; + + // The URL of the provider authorization endpoint. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + string auth_endpoint = 11; + + // The URL of the provider token endpoint. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + string token_endpoint = 12; + + // The URL of the provider token revocation endpoint. + // For more information, refer to https://www.rfc-editor.org/rfc/rfc7009. + string revocation_endpoint = 13; + // If true, do not check for or use the client secret. + // Generally the client secret is required and AuthConfigs will be rejected if it isn't set. + // However certain implementations of the PKCE flow do not use a client secret (including Okta) so this setting allows configuring Oauth2 without a client secret. + google.protobuf.BoolValue disable_client_secret = 14; +} + +// Defines how JSON Web Token (JWT) access tokens are validated. +// +// Tokens are validated using a JSON Web Key Set (as defined in +// [Section 5 of RFC7517](https://datatracker.ietf.org/doc/html/rfc7517#section-5)), +// which can be either inlined in the configuration or fetched from a remote location via HTTP. +// Any keys in the JWKS that are not intended for signature verification (i.e. whose +// ["use" parameter](https://datatracker.ietf.org/doc/html/rfc7517#section-4.2) is not "sig") +// will be ignored by the system, as will keys that do not specify a +// ["kid" (Key ID) parameter](https://datatracker.ietf.org/doc/html/rfc7517#section-4.2). +// +// The JWT to be validated must define non-empty "kid" and "alg" headers. The "kid" header +// determines which key in the JWKS will be used to verify the signature of the token; +// if no matching key is found, the token will be rejected. +// +// If present, the server will verify the "exp", "iat", and "nbf" standard JWT claims. +// Validation of the "iss" claim and of token scopes can be configured as well. +// If the JWT has been successfully validated, its set of claims will be added to the +// `AuthorizationRequest` state under the "jwtAccessToken" key. +message JwtValidation { + + // Specifies how to fetch JWKS from remote and how to cache it. + message RemoteJwks { + // The HTTP URI to fetch the JWKS. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + string url = 1; + + // The frequency at which the JWKS should be refreshed. + // If not specified, the default value is 5 minutes. + google.protobuf.Duration refresh_interval = 2; } + // Represents a locally available JWKS. + message LocalJwks { + // JWKS is embedded as a string. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + string inline_string = 1; + } + + oneof jwks_source_specifier { + // Fetches the JWKS from a remote location. + RemoteJwks remote_jwks = 1; + // Loads the JWKS from a local data source. + LocalJwks local_jwks = 2; + } + + // Allow only tokens that have been issued by this principal (i.e. whose "iss" claim matches this value). + // If empty, issuer validation will be skipped. + string issuer = 3; +} + +// Defines how (opaque) access tokens, received from the oauth authorization endpoint, are validated +// [OAuth2.0 Token Introspection](https://datatracker.ietf.org/doc/html/rfc7662) +// +// If the token introspection url requires client authentication, both the client_id and client_secret +// are required. Unless disable_client_secret is set, when only one is provided, the config will be rejected. +// These values will be encoded in a basic auth header in order to authenticate the client. +message IntrospectionValidation { + // The URL for the [OAuth2.0 Token Introspection](https://datatracker.ietf.org/doc/html/rfc7662) endpoint. + // If provided, the (opaque) access token provided or received from the oauth authorization endpoint + // will be validated against this endpoint, or locally cached responses for this access token. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + string introspection_url = 1; + + // Your client id as registered with the issuer. + // Optional: Use if the token introspection url requires client authentication. + string client_id = 2; + + // Your client secret as registered with the issuer. + // Optional: Use if the token introspection url requires client authentication. + core.solo.io.ResourceRef client_secret_ref = 3; + + // The name of the [introspection response](https://datatracker.ietf.org/doc/html/rfc7662#section-2.2) + // attribute that contains the ID of the resource owner (e.g. `sub`, `username`). + // If specified, the external auth server will use the value of the attribute as the identifier of the + // authenticated user and add it to the request headers and/or dynamic metadata (depending on how the + // server is configured); if the field is set and the attribute cannot be found, the request will be denied. + // This field is optional and by default the server will not try to derive the user ID. + string user_id_attribute_name = 4; + + // Allows setting a client id but not a client secret. + google.protobuf.BoolValue disable_client_secret = 5; + +} + +message AccessTokenValidation { + oneof validation_type { - // The URL for the [OAuth2.0 Token Introspection](https://tools.ietf.org/html/rfc7662) endpoint. + // The URL for the [OAuth2.0 Token Introspection](https://datatracker.ietf.org/doc/html/rfc7662) endpoint. // If provided, the (opaque) access token provided or received from the oauth authorization endpoint // will be validated against this endpoint, or locally cached responses for this access token. // This field is deprecated as it does not support authenticated introspection requests + // + // +kubebuilder:validation:MinLength=1 string introspection_url = 1 [deprecated = true]; // Validate access tokens that conform to the - // [JSON Web Token (JWT)](https://tools.ietf.org/html/rfc7519) specification. + // [JSON Web Token (JWT)](https://datatracker.ietf.org/doc/rfc7662/) specification. JwtValidation jwt = 2; // Defines how (opaque) access tokens, received from the oauth authorization endpoint, are validated - // [OAuth2.0 Token Introspection](https://tools.ietf.org/html/rfc7662) specification. + // [OAuth2.0 Token Introspection](https://datatracker.ietf.org/doc/html/rfc7662) specification. + // + // +kubebuilder:validation:XValidation:rule="has(self.clientId) && size(self.clientId) > 0 ? has(self.clientSecretRef) || (has(self.disableClientSecret) && self.disableClientSecret) : !has(self.clientSecretRef)",message="If clientId is set, clientSecretRef must be set or disableClientSecret must be true. Otherwise, clientSecretRef must not be set." IntrospectionValidation introspection = 3; // In the future we may implement HMAC validation @@ -597,7 +1071,7 @@ message AccessTokenValidation { // Require access token to have all of the scopes in the given list. // This configuration applies to both opaque and JWT tokens. In the case of opaque tokens, // this will check the scopes returned in the "scope" member of introspection response - // (as described in [Section 2.2 of RFC7662](https://tools.ietf.org/html/rfc7662#section-2.2). + // (as described in [Section 2.2 of RFC7662](https://datatracker.ietf.org/doc/html/rfc7662#section-2.2). // In case of JWTs the scopes to be validated are expected to be contained in the "scope" claim of the // token in the form of a space-separated string. // Omitting this field means that scope validation will be skipped. @@ -606,6 +1080,30 @@ message AccessTokenValidation { // in the future we may add other types of scope validation (e.g. predicate matching) } + // Map claims to dynamic metadata keys in the authorization response, such as + // 'dynamic_metadata_from_claims.issuer=iss' and 'dynamic_metadata_from_claims.email=email'. + // Use this approach to enrich the metadata that is passed to upstream services + // so that they can be further processed or used for decision-making. + // Note that metadata keys must be unique, and the claim names must be alphanumeric and use `-` or `_` as separators. + // The metadata live in a namespace specified by the canonical name of the extauth filter (`envoy.filters.http.ext_authz`), + // and the structure of the claim value is preserved in the metadata struct. Dynamic metadata can be viewed in the authorization response. + // You can view the authorization response in the logs of the extauth pod when debug logging is enabled. + // To further process dynamic metadata, you can extract the dynamic metadata keys with an Inja template in a transformation or rate limiting policy. + // For example, to extract a nested `sub` key that is stored under `config_0`, use `{{ dynamic_metadata("config_0:sub", "envoy.filters.http.ext_authz")}}`. + map dynamic_metadata_from_claims = 7; + + // A list of claims to be mapped from the JWT token received by ext-auth-service to an upstream destination. + // This option is not supported for opaque tokens. + repeated ClaimToHeader claims_to_headers = 8; + + oneof Provider { + Default default = 9; + Azure azure = 10; + } + + // No-op, represents default OIDC distributed claims behavior + message Default {} + message ScopeList { repeated string scope = 1; } @@ -615,58 +1113,276 @@ message OauthSecret { string client_secret = 1; } +// Defines how API keys are validated. +// +// When the provided API key token has been successfully validated, it's token will be +// added to the `AuthorizationRequest` state under the "api_key_value" key name. message ApiKeyAuth { - // Identify all valid API key secrets that match the provided label selector.
+ // DEPRECATED: use K8sSecretApiKeyStorage to configure secrets storage backend. Values here + // will be overwritten if values are specified in the storage backend. + // Identify all valid API key secrets that match the provided label selector. // API key secrets must be in one of the watch namespaces for gloo to locate them. - map label_selector = 1; + map label_selector = 1 [deprecated = true]; + // DEPRECATED: use K8sSecretApiKeyStorage to configure secrets storage backend. Values here + // will be overwritten if values are specified in the storage backend. // A way to directly reference API key secrets. This configuration can be useful for testing, // but in general the more flexible label selector should be preferred. - repeated core.solo.io.ResourceRef api_key_secret_refs = 2; + repeated core.solo.io.ResourceRef api_key_secret_refs = 2 [deprecated = true]; // When receiving a request, the Gloo Edge Enterprise external auth server will look for an API key in a header // with this name. This field is optional; if not provided it defaults to `api-key`. string header_name = 3; - // API key secrets might contain additional data (e.g. the ID of the user that the API key belongs to) - // in the form of extra keys included in the secret's `data` field. + // DEPRECATED: use headers_from_metadata_entry + map headers_from_metadata = 4 [deprecated = true]; + + // API key structures might contain additional data (e.g. the ID of the user that the API key belongs to) + // in the form of extra fields included in the API key metadata structure. // This configuration can be used to add this data to the headers of successfully authenticated requests. // Each key in the map represents the name of header to be added; the corresponding value determines the key - // in the secret data that will be inspected to determine the value for the header. - map headers_from_metadata = 4; + // in the API key metadata structure that will be inspected to determine the value for the header. + // + // When the provided API key token has been successfully validated, and this field has been configured, then + // any extra API key metadata fields that were able to be discovered will be added to the `AuthorizationRequest` + // state under the key name that was configured. For example, using the `x-user-name` string as the header name, + // and referencing an existing "user-email" API key metadata entry will result in the value of this "user-email" + // metadata entry being accessable in other auth modules in the `AuthorizationRequest.State["x-user-name"]` key. + // This behavior allows other modules (e.g. OPA) to build more powerful rules to further validate the contents + // of the extra API key metadata than what's possible using the standalone API key module. + map headers_from_metadata_entry = 5; + + oneof storage_backend { + K8sSecretApiKeyStorage k8s_secret_apikey_storage = 6; + // Deprecated: Support for Aerospike is deprecated and will be removed in a future release. + // Use of this feature is not recommended. + AerospikeApiKeyStorage aerospike_apikey_storage = 7; + } + // DEPRECATED: use generalized MetadataEntry message SecretKey { - // (Required) The key of the secret data entry to inspect. + // DEPRECATED + // (Required) The key of the API key metadata entry to inspect. string name = 1; - // If this field is set to `true`, Gloo will reject an API key secret that does not contain the given key. - // Defaults to `false`. In this case, if a secret does not contain the requested data, no header will be added + // DEPRECATED + // If this field is set to `true`, Gloo will reject an API key structure that does not contain data for the given key. + // Defaults to `false`. In this case, if an API key structure does not contain the requested data, no header will be added // to the request. bool required = 2; } + + // For the K8s secret backend, this data is stored as key-value data in the secret itself. + // For the Aerospike backend, this data is stored as bins on the key's record + message MetadataEntry { + // (Required) The key of the API key metadata entry to inspect. + string name = 1; + // If this field is set to `true`, Gloo will reject an API key structure that does not contain data for the given key. + // Defaults to `false`. In this case, if an API key structure does not contain the requested data, no header will be added + // to the request. + bool required = 2; + } + + // API key metadata may contain data is is invalid for a header, such as a newline. By default, this data will be validated + // in the data plane and mitigated in a way that provides a consistent experience for the user and visibility for the operator. + // This validation comes with a performance cost, and can be disabled by setting this field to `true`. + bool skip_metadata_validation = 8; +} +message K8sSecretApiKeyStorage { + // Identify all valid API key secrets that match the provided label selector.
+ // API key secrets must be in one of the watch namespaces for gloo to locate them. + map label_selector = 1; + + // A way to directly reference API key secrets. This configuration can be useful for testing, + // but in general the more flexible label selector should be preferred. + repeated core.solo.io.ResourceRef api_key_secret_refs = 2; +} + +// Deprecated: Support for Aerospike is deprecated and will be removed in a future release. +// Use of this feature is not recommended. +message AerospikeApiKeyStorage { + // The IP address or hostname of one of the cluster members of your Aerospike database. The address must be reachable from Gloo Edge, such as in a virtual machine with a public IP address or in a pod in the cluster. + // The client automatically discovers other members of the cluster after establishing a connection. + string hostname = 1; + // The Aerospike namespace of the database. Defaults to "solo-namespace". + string namespace = 2; + // The Aerospike set to use for storage of API keys. Defaults to "apikeys". + string set = 3; + // The port on which to connect to the Aerospike server. Defaults to 3000. + int32 port = 4; + // The size of the batch, which is the number of keys sent in the request. Defaults to 5000. + int32 batch_size = 5; + + // The write settings for guaranteed consistency when committing a transaction on the Aerospike server. For more information, see the [Aerospike commit policy](https://github.com/aerospike/aerospike-client-go/blob/master/commit_policy.go). + // Defaults to "commit_all". + oneof commit_level { + // "commit_all" indicates that the server waits until successfully committing the master and all replicas. + uint32 commit_all = 6; + // "commit_master" indicates that the server waits until successfully committing the master only. + uint32 commit_master = 7; + } + + // The read settings for strong consistency (SC). For possible values, see the [Aerospike read mode SC](https://github.com/aerospike/aerospike-client-go/blob/master/read_mode_sc.go). + // Defaults to "read_mode_sc_session". + readModeSc read_mode_sc = 8; + message readModeSc { + oneof read_mode_sc { + // The session ensures this client sees only an increasing sequence of record versions. + // Server reads only from master, which is the default. + uint32 read_mode_sc_session = 1; + // "linearize" ensures that ALL clients see only an increasing sequence of record versions. + // "server" reads only from master. + uint32 read_mode_sc_linearize = 2; + + // "replica" indicates that the server can read from master or any full (non-migrating) replica. + // An increasing sequence of record versions is not guaranteed. + uint32 read_mode_sc_replica = 3; + + // "allow_unavailable" indicates that the server can read from master or any full (non-migrating) replica or from unavailable + // partitions. An increasing sequence of record versions is not guaranteed. + uint32 read_mode_sc_allow_unavailable = 4; + } + } + + // The read settings for availability (AP). For possible values, see the [Aerospike read mode AP](https://github.com/aerospike/aerospike-client-go/blob/master/read_mode_ap.go). + // Defaults to "read_mode_ap_one". + readModeAp read_mode_ap = 9; + message readModeAp { + oneof read_mode_ap { + // "one" indicates that a single node is involved in the read operation. + uint32 read_mode_ap_one = 1; + + // "all" indicates that all duplicate nodes are consulted in + // the read operation. + uint32 read_mode_ap_all = 2; + } + } + + // TLS settings to enable mutual TLS (mTLS) on the server side. These configuration options must match what you configured in your Aerospike setup. For more information, see the Aerospike [security](https://docs.aerospike.com/server/guide/security/tls) and [network TLS](https://docs.aerospike.com/server/operations/configure/network/tls) guides. + // The subject name of the TLS authority. For more information, see the [Aerospike docs](https://docs.aerospike.com/reference/configuration#tls-name). + string node_tls_name = 10; + // The path to the TLS certfiicate. + string cert_path = 11; + // The path to the key. + string key_path = 12; + // The TLS insecure setting. If set to `true`, the authority of the certificate on the client's end is not authenticated. You might use insecure mode in non-production environments when the certificate is not known. + bool allow_insecure = 13; + // If the root certificate authority (CA) is not set, add the system certs by default. + string root_ca_path = 14; + // The TLS version. Versions 1.0, 1.1, 1.2, and 1.3 are supported. Defaults to 1.3 + string tls_version = 15; + // The TLS identifier for an elliptic curve. For more information, see [TLS supported groups](https://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8). + repeated tlsCurveID tls_curve_groups = 16; + message tlsCurveID { + oneof curve_id { + uint32 curve_p256 = 1; + uint32 curve_p384 = 2; + uint32 curve_p521 = 3; + uint32 x_25519 = 4; + } + } + + // Identify the set of required labels (key/value) which an Aerospike secret must contain + // If a secret contains the provided set of labels, it will be considered valid when authorizing an ApiKey provided in a request + map label_selector = 17; } +// When no storage backend is specified, the default storage backend defined in the extauth server is used. +message ServerDefaultApiKeyStorage{} + +message ApiKey { + // The string value of the API key. + string api_key = 2; + // A list of labels (key=value) for the apikey secret. + // These labels are used by the storage driver to facilitate lookups by label + repeated string labels = 3; + // additional data the client needs associated with this API key + map metadata = 4; + // Optional: Unique identifier for the API key + string uuid = 5; +} + +// DEPRECATED: use ApiKey message ApiKeySecret { - // If true, generate an API key. - // This field is deprecated as it was used only internally by `glooctl` and is not actually part of the secret API. - bool generate_api_key = 1 [deprecated = true]; - // The value of the API key. + // The string value of the API key. string api_key = 2; - // A list of labels (key=value) for the apikey secret.
- // These labels are used when creating an ApiKeySecret via `glooctl` and then are copied to the metadata of the created secret. - // This field is deprecated as it was used only internally by `glooctl` and is not actually part of the secret API. - repeated string labels = 3 [deprecated = true]; - // If the secret data contains entries in addition to the API key one, they will be copied to this field. + // A list of labels (key=value) for the apikey secret. + // These labels are used by the storage driver to facilitate lookups by label + repeated string labels = 3; + // additional data the client needs associated with this API key map metadata = 4; } +// Enforce Open Policy Agent (OPA) policies through an OPA engine +// that is built into the Gloo external auth server. +// +// For larger scale operations and more capabilities like bundling or caching, +// you might run the OPA engine as a sidecar or bring your own server +// by using the OpaServerAuth setting instead. message OpaAuth { // An optional resource reference to config maps containing modules to assist in the resolution of `query`. repeated core.solo.io.ResourceRef modules = 1; - // The query that determines the auth decision. The result of this query must be either a boolean - // or an array with boolean as the first element. A boolean `true` value means that the request - // will be authorized. Any other value, or error, means that the request will be denied. + // The query that determines the auth decision. The result of this query + // must be either a boolean or an array with boolean as the first element. A boolean `true` value means that + // the request will be authorized. Any other value, or error, means that the request will be denied. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 string query = 2; + + // Additional Options for Opa Auth configuration. + OpaAuthOptions options = 3; +} + +message OpaAuthOptions { + // Decreases OPA latency by speeding up conversion of input to the OPA engine. + // If this is set to true, only http_request and state fields which are a scalar, map, or string array + // are included in the request input. All other fields are dropped. Dropped fields will not be evaluated by the OPA engine. + // By default, this is set to false and all fields are evaluated by OPA. + bool fast_input_conversion = 1; + + // DEPRECATED: It's recommended to use the `dynamic_metadata` field within Rego policies to specify the decision reason. To learn more about this approach, see the [OPA Envoy Plugin docs](https://github.com/open-policy-agent/opa/blob/c12463c/docs/content/envoy-primer.md#example-policy-with-additional-controls). + // + // When `returnDecisionReason` is set to true, the decision reason is stored in the Envoy Dynamic Metadata and has the following properties:
    + //
  • `body` - a textual explanation of the decision
  • + //
  • `allowed` - whether the request was allowed or rejected
+ // + // When using OpaAuth, the `body` field must be the second parameter of the query. + // + // Both the OpaAuth and OpaServerAuth approaches use the `allowed` and `body` values from the OPA response in the decision reason. + // You can find the `body` and `allowed` fields in the Envoy Filter Dynamic Metadata under the `envoy.filters.http.ext_authz..reason` section. + // + // If, however, `returnDecisionReason` is set to false, OPA's decision to allow or reject a request is made according to the Rego policy rules, and no explanation is provided. + // Despite of this, the `dynamic_metadata` field can still be used to convey any necessary information to the Envoy Dynamic Metadata, including the decision reason. + bool return_decision_reason = 2; +} + +// Enforce Open Policy Agent (OPA) policies through an OPA sidecar +// to the the Gloo external auth server, or by bringing your own OPA server. +// This way, you can use OPA at scale and with additional capabilities, such as bundling or caching. +// +// For smaller operations or quick tests, you might use the OpaAuth setting instead. +message OpaServerAuth { + // The package from your Rego policy bundle used to query the OPA data API. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + string package = 1; + + // The rule in your Rego policy bundle used to query the OPA data API. Supports querying subfields with a `/`. For more information, see the [OPA docs for the Data API](https://www.openpolicyagent.org/docs/latest/rest-api/#data-api). + string rule_name = 2; + + // The address of the OPA server to query, in the format `ADDRESS:PORT`. + // For OPA servers within the cluster, the address is the pod's service address, + // such as `opa-svc.default.svc.cluster.local:8181`. For OPA servers outside the cluster, + // the server must be accessible to the cluster, such as through an ExternalService. + // If you do not have your own OPA server instance, omit this field. + // When the external auth service has the OPA server sidecar enabled, the OPA server + // sidecar will be used instead, with an address such as `http://localhost:8181`. + string server_addr = 3; + + // Additional options for OPA Auth configuration. + OpaAuthOptions options = 4; } // Authenticates and authorizes requests by querying an LDAP server. Gloo makes the following assumptions: @@ -677,7 +1393,7 @@ message OpaAuth { message Ldap { // Configuration properties for pooling connections to the LDAP server. If the pool is exhausted when a connection - // is requested (meaning that all the polled connections are in use), the connection will be created on the fly. + // is requested (meaning that all the pooled connections are in use), the connection will be created on the fly. message ConnectionPool { // Maximum number connections that are pooled at any give time. The default value is 5. google.protobuf.UInt32Value maxSize = 1; @@ -686,6 +1402,9 @@ message Ldap { } // Address of the LDAP server to query. Should be in the form ADDRESS:PORT, e.g. `ldap.default.svc.cluster.local:389`. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 string address = 1; // Template to build user entry distinguished names (DN). This must contains a single occurrence of the "%s" placeholder. @@ -705,400 +1424,269 @@ message Ldap { // Use this property to tune the pool of connections to the LDAP server that Gloo maintains. ConnectionPool pool = 5; + + // Use to set a custom filter when searching a member. Defaults to "(uid=*)". + string searchFilter = 6; + + // Disables group checking, regardless of the value for allowedGroups, + // and disables validation for the membership attribute of the user entry. + // Group checking is enabled by default. + bool disable_group_checking = 7; + + // Settings for using a separate service account for looking up group membership + // To use this, you also need to configure credentials in a secret + LdapServiceAccount group_lookup_settings = 8; } +message LdapServiceAccount { + // Reference to an AccountCredentialsSecret to use to authenticate as the service account + core.solo.io.ResourceRef credentials_secret_ref = 1; + // If true, Gloo will use the service account to check group membership + bool check_groups_with_service_account = 2; +} // Authorizes requests by querying a custom extauth server. message PassThroughAuth { oneof protocol { PassThroughGrpc grpc = 1; + PassThroughHttp http = 2; } // Custom config to be passed per request to the passthrough auth service. google.protobuf.Struct config = 4; + // If set to true, the service will accept client request even if the communication with + // the authorization service has failed, or if the authorization service has returned a server error. + // Defaults to false. + bool failure_mode_allow = 5; } -// Authorizes requests by querying a custom extauth grpc server -// Assumes that the server implements the envoy external authorization spec: -// https://github.com/envoyproxy/envoy/blob/ae1ed1fa74f096dabe8dd5b19fc70333621b0309/api/envoy/service/auth/v3/external_auth.proto#L29 -message PassThroughGrpc { +// Configuration defining an exponential back off strategy. +message BackoffStrategy { + // The base interval to be used for the next back off computation. + // Defaults to 1000 milliseconds + google.protobuf.Duration base_interval = 1; - // Address of the auth server to query. Should be in the form ADDRESS:PORT, e.g. `default.svc.cluster.local:389`. - string address = 1; - - // Timeout for the auth server to respond. Defaults to 5s - google.protobuf.Duration connection_timeout = 2; + // Specifies the maximum delay between retries. + // Defaults to 10 times the base interval. + google.protobuf.Duration max_interval = 2; } -/* -@solo-kit:xds-service=ExtAuthDiscoveryService -@solo-kit:resource.no_references - */ -message ExtAuthConfig { - - // @solo-kit:resource.name - // This is the identifier of the AuthConfig resource that this configuration is associated with. - // Any request to the external auth server includes an identifier that is matched against this field to determine - // which AuthConfig should be applied to it. - string auth_config_ref_name = 1; - - // Deprecated, prefer OAuth2Config - message OAuthConfig { - // your client id as registered with the issuer - string client_id = 1 [deprecated = true]; - - // your client secret as registered with the issuer - string client_secret = 2 [deprecated = true, (extproto.sensitive) = true]; - - // The url of the issuer. We will look for OIDC information in issuerUrl+ - // ".well-known/openid-configuration" - string issuer_url = 3 [deprecated = true]; - // extra query parameters to apply to the Ext-Auth service's authorization request to the identity provider. - map auth_endpoint_query_params = 7 [deprecated = true]; +// The message specifies the retry policy of the external gRPC service when unable to initially connect. +message RetryPolicy { - // we to redirect after successful auth, if we can't determine the original - // url this should be your publicly available app url. - string app_url = 4 [deprecated = true]; + // Specifies the allowed number of retries. This parameter is optional and + // defaults to 1. + google.protobuf.UInt32Value num_retries = 1; - // a callback path relative to app url that will be used for OIDC callbacks. - // needs to not be used by the application - string callback_path = 5 [deprecated = true]; - - // scopes to request in addition to the openid scope. - repeated string scopes = 6 [deprecated = true]; - - } - - message OidcAuthorizationCodeConfig { - - // your client id as registered with the issuer - string client_id = 1; - - // your client secret as registered with the issuer - string client_secret = 2 [(extproto.sensitive) = true]; - - // The url of the issuer. We will look for OIDC information in issuerUrl+ - // ".well-known/openid-configuration" - string issuer_url = 3; - - // extra query parameters to apply to the Ext-Auth service's authorization request to the identity provider. - // this can be useful for flows such as PKCE (https://www.oauth.com/oauth2-servers/pkce/authorization-request/) - // to set the `code_challenge` and `code_challenge_method`. - map auth_endpoint_query_params = 4; - - // extra query parameters to apply to the Ext-Auth service's token request to the identity provider. - // this can be useful for flows such as PKCE (https://www.oauth.com/oauth2-servers/pkce/authorization-request/) - // to set the `code_verifier`. - map token_endpoint_query_params = 14; - - // we to redirect after successful auth, if we can't determine the original - // url this should be your publicly available app url. - string app_url = 5; - - // a callback path relative to app url that will be used for OIDC callbacks. - // needs to not be used by the application - string callback_path = 6; - - // a path relative to app url that will be used for logging out from an OIDC session. - // should not be used by the application. - // If not provided, logout functionality will be disabled. - string logout_path = 9; - - // url to redirect to after logout. - // This should be a publicly available URL. If not provided, will default to the `app_url`. - string after_logout_url = 15; - - // scopes to request in addition to the openid scope. - repeated string scopes = 7; - - UserSession session = 8; - - // Configures headers added to requests. - HeaderConfiguration headers = 10; - - // OIDC configuration is discovered at /.well-known/openid-configuration - // The configuration override defines any properties that should override this discovery configuration - // For example, the following AuthConfig CRD could be defined as: - // ```yaml - // apiVersion: enterprise.gloo.solo.io/v1 - // kind: AuthConfig - // metadata: - // name: google-oidc - // namespace: gloo-system - // spec: - // configs: - // - oauth: - // app_url: http://localhost:8080 - // callback_path: /callback - // client_id: $CLIENT_ID - // client_secret_ref: - // name: google - // namespace: gloo-system - // issuer_url: https://accounts.google.com - // discovery_override: - // token_endpoint: "https://token.url/gettoken" - // ``` - // - // And this will ensure that regardless of what value is discovered at - // /.well-known/openid-configuration, "https://token.url/gettoken" will be used as the token endpoint - DiscoveryOverride discovery_override = 11; - - // The interval at which OIDC configuration is discovered at /.well-known/openid-configuration - // If not specified, the default value is 30 minutes. - google.protobuf.Duration discovery_poll_interval = 12; - - // If a user executes a request with a key that is not found in the JWKS, it could be - // that the keys have rotated on the remote source, and not yet in the local cache. - // This policy lets you define the behavior for how to refresh the local cache during a request - // where an invalid key is provided - JwksOnDemandCacheRefreshPolicy jwks_cache_refresh_policy = 13; - - // in the future we may implement this: - // add optional configuration for validation of the access token received during the OIDC flow - // AccessTokenValidation access_token_validation = 8; + oneof strategy { + // Specifies parameters that control the backoff strategy. + // This parameter is optional, in which case the default base interval is 1000 milliseconds. The + // default maximum interval is 10 times the base interval. + BackoffStrategy retry_back_off = 2; } +} - message AccessTokenValidationConfig { - // Defines how JSON Web Token (JWT) access tokens are validated. - // - // Tokens are validated using a JSON Web Key Set (as defined in - // [Section 5 of RFC7517](https://tools.ietf.org/html/rfc7517#section-5)), - // which can be either inlined in the configuration or fetched from a remote location via HTTP. - // Any keys in the JWKS that are not intended for signature verification (i.e. whose - // ["use" parameter](https://tools.ietf.org/html/rfc7517#section-4.2) is not "sig") - // will be ignored by the system, as will keys that do not specify a - // ["kid" (Key ID) parameter](https://tools.ietf.org/html/rfc7517#section-4.2). - // - // The JWT to be validated must define non-empty "kid" and "alg" headers. The "kid" header - // determines which key in the JWKS will be used to verify the signature of the token; - // if no matching key is found, the token will be rejected. - // - // If present, the server will verify the "exp", "iat", and "nbf" standard JWT claims. - // Validation of the "iss" claim and of token scopes can be configured as well. - // If the JWT has been successfully validated, its set of claims will be added to the - // `AuthorizationRequest` state under the "jwtAccessToken" key. - message JwtValidation { - - // Specifies how to fetch JWKS from remote and how to cache it. - message RemoteJwks { - // The HTTP URI to fetch the JWKS. - string url = 1; - - // The frequency at which the JWKS should be refreshed. - // If not specified, the default value is 5 minutes. - google.protobuf.Duration refresh_interval = 2; - } - - // Represents a locally available JWKS. - message LocalJwks { - // JWKS is embedded as a string. - string inline_string = 1; - } - - oneof jwks_source_specifier { - // Fetches the JWKS from a remote location. - RemoteJwks remote_jwks = 1; - // Loads the JWKS from a local data source. - LocalJwks local_jwks = 2; - } - - // Allow only tokens that have been issued by this principal (i.e. whose "iss" claim matches this value). - // If empty, issuer validation will be skipped. - string issuer = 3; - } +// Authorizes requests by querying a custom extauth grpc server +// To send the request body to the ext-auth service, the settings.extauth.requestBody must be set in the Gloo Edge Settings CRD so that +// the request body is buffered and sent. +// Assumes that the server implements the envoy external authorization spec: +// https://github.com/envoyproxy/envoy/blob/ae1ed1fa74f096dabe8dd5b19fc70333621b0309/api/envoy/service/auth/v3/external_auth.proto#L29 +message PassThroughGrpc { - // Defines how (opaque) access tokens, received from the oauth authorization endpoint, are validated - // [OAuth2.0 Token Introspection](https://tools.ietf.org/html/rfc7662) - // - // If the token introspection url requires client authentication, both the client_id and client_secret - // are required. If only one is provided, the config will be rejected. - // These values will be encoded in a basic auth header in order to authenticate the client. - message IntrospectionValidation { - // The URL for the [OAuth2.0 Token Introspection](https://tools.ietf.org/html/rfc7662) endpoint. - // If provided, the (opaque) access token provided or received from the oauth authorization endpoint - // will be validated against this endpoint, or locally cached responses for this access token. - string introspection_url = 1; - - // Your client id as registered with the issuer. - // Optional: Use if the token introspection url requires client authentication. - string client_id = 2; - - // Your client secret as registered with the issuer. - // Optional: Use if the token introspection url requires client authentication. - string client_secret = 3 [(extproto.sensitive) = true]; - - // The name of the [introspection response](https://tools.ietf.org/html/rfc7662#section-2.2) - // attribute that contains the ID of the resource owner (e.g. `sub`, `username`). - // If specified, the external auth server will use the value of the attribute as the identifier of the - // authenticated user and add it to the request headers and/or dynamic metadata (depending on how the - // server is configured); if the field is set and the attribute cannot be found, the request will be denied. - // This field is optional and by default the server will not try to derive the user ID. - string user_id_attribute_name = 4; - } + // Address of the auth server to query. Should be in the form ADDRESS:PORT, e.g. `default.svc.cluster.local:389`. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + string address = 1; - oneof validation_type { - // The URL for the [OAuth2.0 Token Introspection](https://tools.ietf.org/html/rfc7662) endpoint. - // If provided, the (opaque) access token provided or received from the oauth authorization endpoint - // will be validated against this endpoint, or locally cached responses for this access token. - // This field is deprecated as it does not support authenticated introspection requests - string introspection_url = 1 [deprecated = true]; + // Timeout for the auth server to respond. Defaults to 5s + google.protobuf.Duration connection_timeout = 2; - // Validate access tokens that conform to the - // [JSON Web Token (JWT)](https://tools.ietf.org/html/rfc7519) specification. - JwtValidation jwt = 2; + // TLS config for the gRPC passthrough, if not configured the connection will use insecure. + // When specified, this supports configuration for either simple TLS or mTLS. + PassThroughGrpcTLSConfig tls_config = 3; - // Defines how (opaque) access tokens, received from the oauth authorization endpoint, are validated - // [OAuth2.0 Token Introspection](https://tools.ietf.org/html/rfc7662) specification. - IntrospectionValidation introspection = 3; + // Indicates the retry policy for re-establishing the gRPC stream. + // This field is optional and failed calls will not retry unless configured. + RetryPolicy retry_policy = 4; +} - // In the future we may implement HMAC validation - } +// Authorizes requests by making a POST HTTP/1 request to a custom HTTP auth server +// Assumes the request is authorized if the server returns a OK (200) status code, +// else the request is unauthorized. +message PassThroughHttp { + // Required: URL of the passthrough http service, is a fully qualified domain name. + // Example: http://ext-auth-service.svc.local:9001. Path provided in the URL will be respected. + // To use https, provide the cert in the HTTPS_PASSTHROUGH_CA_CERT environment variable to the ext-auth-service + // pod as a base64-encoded string + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + string url = 1; + + /* The passthrough http request can be configured to pass through the incoming request body, + the ext-auth state (which is shared between different auth methods within one ext-auth instance), and + the [filterMetadata](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/data_sharing_between_filters#metadata) + The body of the passthrough auth request will be a JSON as follows: + { + "body" : string, + "state": object (map[string]interface{}), + "filterMetadata": object (map[string]protobuf.Struct), + "config": object (protobuf.Struct), + } + `config` is the struct block specified under the passthrough auth configuration. + If `passthrough_body`, `passthrough_state`, `passthrough_filter_metadata`, and `config` are all false/nil, + the body of the auth request will remain empty. Setting any of these will increase latency slightly due to + JSON marshalling. + + */ + message Request { + // These headers will be copied from the incoming request to the request going + // to the auth server. By default, no headers are copied from the incoming request. + // Pseudo-headers such as `:Path`, and `:Method` can not be specified here. + repeated string allowed_headers = 1; - // The URL for the OIDC userinfo endpoint. - // If provided, the (opaque) access token provided or received from the oauth endpoint - // will be queried and the userinfo response (or cached response) will be added to the - // `AuthorizationRequest` state under the "introspection" key. - // This can be useful to leverage the userinfo response in, for example, an external auth server plugin. - string userinfo_url = 4; - - // How long the token introspection and userinfo endpoint response for a specific access token should be kept - // in the in-memory cache. The result will be invalidated at this timeout, or at "exp" time from the introspection - // result, whichever comes sooner. If omitted, defaults to 10 minutes. If zero, then no caching will be done. - google.protobuf.Duration cache_timeout = 5; - - // Optional criteria for validating the scopes of a token. - oneof scope_validation { - // Require access token to have all of the scopes in the given list. - // This configuration applies to both opaque and JWT tokens. In the case of opaque tokens, - // this will check the scopes returned in the "scope" member of introspection response - // (as described in [Section 2.2 of RFC7662](https://tools.ietf.org/html/rfc7662#section-2.2). - // In case of JWTs the scopes to be validated are expected to be contained in the "scope" claim of the - // token in the form of a space-separated string. - // Omitting this field means that scope validation will be skipped. - ScopeList required_scopes = 6; - - // in the future we may add other types of scope validation (e.g. predicate matching) - } + // These headers that will be included to the request to authorization service. Note that + // client request of the same key will be overridden. + // Pseudo-headers such as `:Path`, and `:Method` can not be specified here. + map headers_to_add = 2; - message ScopeList { - repeated string scope = 1; - } + // Whether or not to include the ext-auth state object in the passthrough request body. + // If this is set to true, it is expected that the state is returned in the HTTP response from the + // passthrough service. The state received from the response will be the state that is shared with + // other ext-auth service methods. + // If pass_through_body, pass_through_filter_metadata and pass_through_state are false, + // the authorization request body will be empty. A non-empty body will increase latency times + // slightly, so this is set to false by default, and should only be set to to true if the + // extauth state is needed in the auth request. + bool pass_through_state = 3; + + // Whether or not to include the filter metadata in the passthrough request body. + // If pass_through_body, pass_through_filter_metadata and pass_through_state are false, + // the authorization request body will be empty. A non-empty body will increase latency times + // slightly, so this is set to false by default, and should only be set to to true if the + // filter metadata is needed in the auth request. + bool pass_through_filter_metadata = 4; + + // Whether or not to include the body in the passthrough request body. + // In order for this to work, the settings.extauth.requestBody must be set in the Gloo Edge Settings CRD so that + // the request body is buffered and sent to the ext-auth service. + // If pass_through_body, pass_through_filter_metadata and pass_through_state are false, + // the authorization request body will be empty. A non-empty body will increase latency times + // slightly, so this is set to false by default, and should only be set to to true if the + // request body is needed in the auth request. + bool pass_through_body = 5; } + // Pass through the incoming request body, ext auth state, and filter metadata. + // For more information, see the [PassThrough Http Request description](#request-1). + Request request = 3; - message OAuth2Config { - reserved 2; - - oneof oauth_type { - // provide issuer location and let gloo handle OIDC flow for you. - // requests authorized by validating the contents of ID token. - // can also authorize the access token if configured. - OidcAuthorizationCodeConfig oidc_authorization_code = 1; + message Response { + // When this is set, authorization response headers that have a header in this list will be added to the original client request and sent to the upstream + // when the auth request is successful. These will be appended to any request headers that already exist. + // If this and allowed_upstream_headers_to_overwrite are empty, by default, no authorization response headers will be added to the upstream request. + // Header names may not be included in both allowed_upstream_headers and allowed_upstream_headers_to_overwrite. + repeated string allowed_upstream_headers = 1; - // provide the access token on the request and let gloo handle authorization. - // - // according to https://tools.ietf.org/html/rfc6750 you can pass tokens through: - // - form-encoded body parameter. recommended, more likely to appear. e.g.: Authorization: Bearer mytoken123 - // - URI query parameter e.g. access_token=mytoken123 - // - and (preferably) secure cookies - AccessTokenValidationConfig access_token_validation_config = 3; - } + // When this is set, authorization response headers in this list will be added to the response to the downstream client when the auth request is denied. + // If the response header already exists, it will replace the response header. + // If this is empty, by default, no authorization response headers will be added to the response to the downstream client. + repeated string allowed_client_headers_on_denied = 2; + + // If this is set to true, the body of the response from the http passthrough auth server is expected to have shape + // { + // "state": object (map[string]interface{}) + // } + // The state will be marshalled from the response body and this is the state that will be passed on to other auth configs. + // Because of the marshalling from JSON to Go map, this will add some latency to the request. + // If the marshalling fails, the authorization check will fail and the request will be unauthorized after the ext-auth-service pod + // logs the marshal error. + bool read_state_from_response = 3; + + // When this is set, authorization response headers that have a header in this list will be added to the original client request and sent to the upstream + // when the auth request is successful. These will overwrite to any request headers that already exist. + // If this and allowed_upstream_headers are empty, by default, no authorization response headers will be added to the upstream request. + // Header names may not be included in both allowed_upstream_headers and allowed_upstream_headers_to_overwrite. + repeated string allowed_upstream_headers_to_overwrite = 4; } + // Pass through response information such as the headers and body to downstream clients. + // For more information, see the [PassThrough Http Response description](#response-1). + Response response = 4; - // **NOTE: This configuration is not user-facing and will be auto generated** - message ApiKeyAuthConfig { - - message KeyMetadata { - // The user is mapped as the name of `Secret` which contains the `ApiKeySecret` - string username = 1; - // The metadata present on the `ApiKeySecret`. - map metadata = 2; - } + // Timeout for the auth server to respond. Defaults to 5s + google.protobuf.Duration connection_timeout = 8; - // A mapping of valid API keys to their associated metadata. - // This map is automatically populated with the information from the relevant `ApiKeySecret`s. - map valid_api_keys = 1 [(extproto.sensitive) = true]; + // TLS config for the HTTP passthrough, if not configured the connection will use insecure. + // When specified, this supports configuration for either simple TLS or mTLS. + PassThroughHttpTLSConfig tls_config = 9; +} - // (Optional) When receiving a request, the Gloo Edge Enterprise external auth server will look for an API key - // in a header with this name. This field is optional; if not provided it defaults to `api-key`. - string header_name = 2; +// TLS configuration for the extauth gRPC passthrough connection +message PassThroughGrpcTLSConfig { + // SecretRef contains the secret ref to a Kubernetes tls secret. + // This secret can contain the certificate, key and CA bundle to establish mTLS. + // If CA is not provided it will attempt to perform a simple TLS. + core.solo.io.ResourceRef secret_ref = 1; - // Determines the key metadata that will be included as headers on the upstream request. - // Each entry represents a header to add: the key is the name of the header, and the - // value is the key that will be used to look up the data entry in the key metadata. - map headers_from_key_metadata = 3; - } + // Additional TLS parameters + SslParameters ssl_params = 2; +} - message OpaAuthConfig { - // An optional modules (filename, module content) maps containing modules assist in the resolution of `query`. - map modules = 1; +// TLS configuration for the extauth HTTP passthrough connection +message PassThroughHttpTLSConfig { + // SecretRef contains the secret ref to a Kubernetes tls secret. + // This secret can contain the certificate, key and CA bundle to establish mTLS. + // If CA is not provided it will attempt to perform a simple TLS. + core.solo.io.ResourceRef secret_ref = 1; - // The query that determines the auth decision. The result of this query must be either a boolean - // or an array with boolean as the first element. A boolean `true` value means that the request - // will be authorized. Any other value, or error, means that the request will be denied. - string query = 2; - } + // Additional TLS parameters + SslParameters ssl_params = 2; +} - message Config { +message SslParameters { + enum ProtocolVersion { + // TLS auto select the optimal settings + TLS_AUTO = 0; - reserved 1, 2; + // TLS 1.1 + TLSv1_1 = 1; - // optional: used when defining complex boolean logic, if `boolean_expr` is defined below. Also used - // in logging. If omitted, an automatically generated name will be used (e.g. config_0, of the - // pattern 'config_$INDEX_IN_CHAIN'). In the case of plugin auth, this field is ignored in favor of - // the name assigned on the plugin config itself. - google.protobuf.StringValue name = 11; + // TLS 1.2 + TLSv1_2 = 2; - oneof auth_config { - OAuthConfig oauth = 3 [deprecated = true]; - OAuth2Config oauth2 = 9; - BasicAuth basic_auth = 4; - ApiKeyAuthConfig api_key_auth = 5; - AuthPlugin plugin_auth = 6; - OpaAuthConfig opa_auth = 7; - Ldap ldap = 8; - // This is a "dummy" extauth service which can be used to support multiple auth mechanisms with JWT authentication. - // If Jwt authentication is to be used in the [boolean expression](https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto.sk/#authconfig) in an AuthConfig, you can use this auth config type to include Jwt as an Auth config. - // In addition, `allow_missing_or_failed_jwt` must be set on the Virtual Host or Route that uses JWT auth or else the JWT filter will short circuit this behaviour. - google.protobuf.Empty jwt = 12; - PassThroughAuth pass_through_auth = 13; - } + // TLS 1.3 + TLSv1_3 = 3; } - // List of auth configs to be checked for requests on a route referencing this auth config, - // By default, every config must be authorized for the entire request to be authorized. This - // behavior can be changed by defining names for each config and defining `boolean_expr` below. - // - // State is shared between successful requests on the chain, i.e., the headers returned from each - // successful auth service get appended into the final auth response. - repeated Config configs = 8; + // Minimum TLS protocol version. + // If not explicitly set, the default protocol will be TLS 1.2. + // Avoid using TLS version earlier than 1.2, as this poses significant security risks. For more details, refer to https://www.ietf.org/rfc/rfc8996.html. + ProtocolVersion minimum_protocol_version = 1; - // How to handle processing of named configs within an auth config chain. - // An example config might be: `( basic1 || basic2 || (oidc1 && !oidc2) )` - // The boolean expression is evaluated left to right but honors parenthesis and short-circuiting. - google.protobuf.StringValue boolean_expr = 10; + // Maximum TLS protocol version. + // If not explicitly set, the default protocol will be TLS 1.3. + ProtocolVersion maximum_protocol_version = 2; } -/* -@solo-kit:resource.xds-enabled -*/ -service ExtAuthDiscoveryService { - rpc StreamExtAuthConfig (stream envoy.api.v2.DiscoveryRequest) returns (stream envoy.api.v2.DiscoveryResponse) { - } - - rpc DeltaExtAuthConfig (stream envoy.api.v2.DeltaDiscoveryRequest) returns (stream envoy.api.v2.DeltaDiscoveryResponse) { - } - - rpc FetchExtAuthConfig (envoy.api.v2.DiscoveryRequest) returns (envoy.api.v2.DiscoveryResponse) { - option (google.api.http) = { - post : "/v2/discovery:extauthconfig" - body : "*" - }; - } +// PortalAuth is used to authorize requests for credentials generated by the portal web server. +// This API is only supported for Gloo Gateway Portal. +message PortalAuth { + // The portal web server url used to validate credentials generated by the portal for the backing service(s). + string url = 1; + // The api key header name used to find the api key in the request headers. + // If provided will not authorize requests without the api key in the request headers. + // If not provided, will authorize requests with a Bearer token but must be chained with an AccessTokenValidation AuthConfig which will validate the token. + string api_key_header = 2; + // Options to connect to redis. If not provided, data will be cached in memory. + RedisOptions redis_options = 3; + // The frequency at which the validated credential data should be refreshed by quering the portal web server. Defaults to 60s. + google.protobuf.Duration cache_duration = 4; + // Timeout for the portal web server to respond. Defaults to 200ms + google.protobuf.Duration request_timeout = 5; } - message AuthConfigStatus { enum State { // Pending status indicates the resource has not yet been validated @@ -1124,3 +1712,9 @@ message AuthConfigStatus { // Opaque details about status results google.protobuf.Struct details = 5; } + + + +message AuthConfigNamespacedStatuses { + map statuses = 1; +} diff --git a/api/gloo/gateway/v1/external_options.proto b/api/gloo/gateway/v1/external_options.proto index c4ac77085..92080377c 100644 --- a/api/gloo/gateway/v1/external_options.proto +++ b/api/gloo/gateway/v1/external_options.proto @@ -2,16 +2,20 @@ syntax = "proto3"; package gateway.solo.io; option go_package = "github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1"; +import "google/protobuf/struct.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "google/protobuf/wrappers.proto"; -import "github.com/solo-io/solo-kit/api/v1/metadata.proto"; -import "github.com/solo-io/solo-kit/api/v1/status.proto"; import "github.com/solo-io/solo-kit/api/v1/ref.proto"; import "github.com/solo-io/solo-kit/api/v1/solo-kit.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/listener_options.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/http_listener_options.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/virtual_host_options.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/route_options.proto"; +import "github.com/solo-io/skv2/api/core/v1/core.proto"; /* * The **VirtualHostOption** holds `options` configuration for a VirtualHost. @@ -35,12 +39,13 @@ import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options.proto"; * - '*' * options: * headerManipulation: -* requestHeadersToRemove: "header-from-vhost" -* delegateOptions: -* - name: virtualhost-external-options-1 -* namespace: opt-namespace -* - name: virtualhost-external-options-2 -* namespace: opt-namespace +* requestHeadersToRemove: ["header-from-vhost"] +* optionsConfigRefs: +* delegateOptions: +* - name: virtualhost-external-options-1 +* namespace: opt-namespace +* - name: virtualhost-external-options-2 +* namespace: opt-namespace * ``` * * ```yaml @@ -52,10 +57,12 @@ import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options.proto"; * spec: * options: * headerManipulation: -* requestHeadersToRemove: "header-from-external-options1" -* corsPolicy: +* requestHeadersToRemove: ["header-from-external-options1"] +* cors: * exposeHeaders: * - header-from-extopt1 +* allowOrigin: +* - 'https://solo.io' * ``` * * ```yaml @@ -67,17 +74,19 @@ import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options.proto"; * spec: * options: * headerManipulation: -* requestHeadersToRemove: "header-from-external-options2" -* corsPolicy: +* requestHeadersToRemove: ["header-from-external-options2"] +* cors: * exposeHeaders: * - header-from-extopt2 * maxAge: 2s +* allowOrigin: +* - 'https://solo.io' * transformations: * requestTransformation: * transformationTemplate: * headers: * x-header-added-in-opt2: -* value: this header was added in the VirtualHostOption object - #2 +* text: this header was added in the VirtualHostOption object - #2 * ``` * * The final virtual host options (visible in the Proxy CR) would be: @@ -89,36 +98,38 @@ import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options.proto"; * options: * # from Virtual host options * headerManipulation: -* requestHeadersToRemove: "header-from-vhost" +* requestHeadersToRemove: ["header-from-vhost"] * # from delegated virtualhost-external-options-1 -* corsPolicy: +* cors: * exposeHeaders: * - header-from-extopt1 +* allowOrigin: +* - 'https://solo.io' * # from delegated virtualhost-external-options-2 * transformations: * requestTransformation: * transformationTemplate: * headers: * x-header-added-in-opt2: -* value: this header was added in the VirtualHostOption object - #2 +* text: this header was added in the VirtualHostOption object - #2 * ``` * * Notice how the order of VirtualHostOption delegations matters, and that the VirtualHost-level config overrides all delegated configs. */ -message VirtualHostOption { +message VirtualHostOptionSpec { + - option (core.solo.io.resource).short_name = "vhopts"; - option (core.solo.io.resource).plural_name = "virtual_host_options"; + reserved 1; - // Status indicates the validation status of this resource. - // Status is read-only by clients, and set by gateway during validation - core.solo.io.Status status = 1 [(extproto.skip_hashing) = true]; - // Metadata contains the object metadata for this resource - core.solo.io.Metadata metadata = 2; // VirtualHost options. See VirtualHost for delegation behavior. gloo.solo.io.VirtualHostOptions options = 3; + + // When using Kubernetes Gateway API mode, targetRefs can be used to attach this VirtualHostOption + // to a gateway.networking.k8s.io/Gateway object. The `options` specified will then be used + // for all `Listeners` in the `Gateway` unless `targetRef.sectionName` is specified. + repeated core.skv2.solo.io.PolicyTargetReferenceWithSectionName target_refs = 5; } /* @@ -146,12 +157,13 @@ message VirtualHostOption { * - prefix: / * options: * headerManipulation: -* requestHeadersToRemove: "header-from-route" -* delegateOptions: -* - name: route-external-options-1 -* namespace: opt-namespace -* - name: route-external-options-2 -* namespace: opt-namespace +* requestHeadersToRemove: ["header-from-route"] +* optionsConfigRefs: +* delegateOptions: +* - name: route-external-options-1 +* namespace: opt-namespace +* - name: route-external-options-2 +* namespace: opt-namespace * ``` * * ```yaml @@ -163,10 +175,12 @@ message VirtualHostOption { * spec: * options: * headerManipulation: -* requestHeadersToRemove: "header-from-external-options1" -* corsPolicy: +* requestHeadersToRemove: ["header-from-external-options1"] +* cors: * exposeHeaders: * - header-from-extopt1 +* allowOrigin: +* - 'https://solo.io' * ``` * * ```yaml @@ -178,17 +192,19 @@ message VirtualHostOption { * spec: * options: * headerManipulation: -* requestHeadersToRemove: "header-from-external-options2" -* corsPolicy: +* requestHeadersToRemove: ["header-from-external-options2"] +* cors: * exposeHeaders: * - header-from-extopt2 * maxAge: 2s +* allowOrigin: +* - 'https://solo.io' * transformations: * requestTransformation: * transformationTemplate: * headers: * x-header-added-in-opt2: -* value: this header was added in the RouteOption object - #2 +* text: this header was added in the RouteOption object - #2 * ``` * * The final route options would bewould be: @@ -199,35 +215,196 @@ message VirtualHostOption { * options: * # from Route options * headerManipulation: -* requestHeadersToRemove: "header-from-route" +* requestHeadersToRemove: ["header-from-route"] * # from delegated route-external-options-1 -* corsPolicy: +* cors: * exposeHeaders: * - header-from-extopt1 +* allowOrigin: +* - 'https://solo.io' * # from delegated route-external-options-2 * transformations: * requestTransformation: * transformationTemplate: * headers: * x-header-added-in-opt2: -* value: this header was added in the Route object - #2 +* text: this header was added in the Route object - #2 * ``` * * Notice how the order of RouteOption delegations matters, and that the Route-level option config overrides all delegated option configs. */ -message RouteOption { +message RouteOptionSpec { - option (core.solo.io.resource).short_name = "rtopts"; - option (core.solo.io.resource).plural_name = "route_options"; + reserved 1; - // Status indicates the validation status of this resource. - // Status is read-only by clients, and set by gloo during validation - core.solo.io.Status status = 1 [(extproto.skip_hashing) = true]; - - // Metadata contains the object metadata for this resource - core.solo.io.Metadata metadata = 2; // Route options. See Route for delegation behavior. gloo.solo.io.RouteOptions options = 3; -} \ No newline at end of file + + // When using Kubernetes Gateway API mode, targetRefs can be used to attach this RouteOption + // to a gateway.networking.k8s.io/HTTPRoute object. The `options` specified will then be used + // for all `Rules` in the `HTTPRoute`. + repeated core.skv2.solo.io.PolicyTargetReference target_refs = 5; +} + +message ListenerOptionSpec { + + + + // Listener options + gloo.solo.io.ListenerOptions options = 2; + + // When using Kubernetes Gateway API mode, targetRefs can be used to attach this ListenerOption + // to a gateway.networking.k8s.io/Gateway object. The `options` specified will then be used + // for all `Listeners` in the `Gateway` unless `targetRef.sectionName` is specified. + repeated core.skv2.solo.io.PolicyTargetReferenceWithSectionName target_refs = 3; +} + +message HttpListenerOptionSpec { + + + + // HttpListener options + gloo.solo.io.HttpListenerOptions options = 2; + + // When using Kubernetes Gateway API mode, targetRef can be used to attach this VirtualHostOption + // to a gateway.networking.k8s.io/Gateway object. The `options` specified will then be used + // for all `Listeners` in the `Gateway` unless `targetRef.sectionName` is specified. + repeated core.skv2.solo.io.PolicyTargetReferenceWithSectionName target_refs = 3; +} + + +message HttpListenerOptionStatus { + enum State { + // Pending status indicates the resource has not yet been validated + Pending = 0; + // Accepted indicates the resource has been validated + Accepted = 1; + // Rejected indicates an invalid configuration by the user + // Rejected resources may be propagated to the xDS server depending on their severity + Rejected = 2; + // Warning indicates a partially invalid configuration by the user + // Resources with Warnings may be partially accepted by a controller, depending on the implementation + Warning = 3; + } + // State is the enum indicating the state of the resource + State state = 1; + // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty + string reason = 2; + // Reference to the reporter who wrote this status + string reported_by = 3; + // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource + map subresource_statuses = 4; + + // Opaque details about status results + google.protobuf.Struct details = 5; +} + + + +message HttpListenerOptionNamespacedStatuses { + map statuses = 1; +} + + + +message ListenerOptionStatus { + enum State { + // Pending status indicates the resource has not yet been validated + Pending = 0; + // Accepted indicates the resource has been validated + Accepted = 1; + // Rejected indicates an invalid configuration by the user + // Rejected resources may be propagated to the xDS server depending on their severity + Rejected = 2; + // Warning indicates a partially invalid configuration by the user + // Resources with Warnings may be partially accepted by a controller, depending on the implementation + Warning = 3; + } + // State is the enum indicating the state of the resource + State state = 1; + // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty + string reason = 2; + // Reference to the reporter who wrote this status + string reported_by = 3; + // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource + map subresource_statuses = 4; + + // Opaque details about status results + google.protobuf.Struct details = 5; +} + + + +message ListenerOptionNamespacedStatuses { + map statuses = 1; +} + + + +message RouteOptionStatus { + enum State { + // Pending status indicates the resource has not yet been validated + Pending = 0; + // Accepted indicates the resource has been validated + Accepted = 1; + // Rejected indicates an invalid configuration by the user + // Rejected resources may be propagated to the xDS server depending on their severity + Rejected = 2; + // Warning indicates a partially invalid configuration by the user + // Resources with Warnings may be partially accepted by a controller, depending on the implementation + Warning = 3; + } + // State is the enum indicating the state of the resource + State state = 1; + // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty + string reason = 2; + // Reference to the reporter who wrote this status + string reported_by = 3; + // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource + map subresource_statuses = 4; + + // Opaque details about status results + google.protobuf.Struct details = 5; +} + + + +message RouteOptionNamespacedStatuses { + map statuses = 1; +} + + + +message VirtualHostOptionStatus { + enum State { + // Pending status indicates the resource has not yet been validated + Pending = 0; + // Accepted indicates the resource has been validated + Accepted = 1; + // Rejected indicates an invalid configuration by the user + // Rejected resources may be propagated to the xDS server depending on their severity + Rejected = 2; + // Warning indicates a partially invalid configuration by the user + // Resources with Warnings may be partially accepted by a controller, depending on the implementation + Warning = 3; + } + // State is the enum indicating the state of the resource + State state = 1; + // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty + string reason = 2; + // Reference to the reporter who wrote this status + string reported_by = 3; + // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource + map subresource_statuses = 4; + + // Opaque details about status results + google.protobuf.Struct details = 5; +} + + + +message VirtualHostOptionNamespacedStatuses { + map statuses = 1; +} diff --git a/api/gloo/gateway/v1/gateway.proto b/api/gloo/gateway/v1/gateway.proto index 6ef1c331e..5617603fc 100644 --- a/api/gloo/gateway/v1/gateway.proto +++ b/api/gloo/gateway/v1/gateway.proto @@ -6,14 +6,24 @@ import "google/protobuf/struct.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "google/protobuf/wrappers.proto"; import "github.com/solo-io/solo-kit/api/v1/ref.proto"; import "github.com/solo-io/solo-kit/api/v1/solo-kit.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gateway/v1/http_gateway.proto"; + import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/proxy.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/listener_options.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/tcp_listener_options.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/route_configuration_options.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/hcm/hcm.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl/ssl.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/core/selectors/selectors.proto"; + +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/address.proto"; /* A Gateway describes a single Listener (bind address:port) @@ -24,6 +34,7 @@ message GatewaySpec { // if set to false, only use virtual services without ssl configured. // if set to true, only use virtual services with ssl configured. + // this field is ignored if GatewayType is HybridGateway. bool ssl = 1; // the bind address the gateway should serve traffic on @@ -35,34 +46,39 @@ message GatewaySpec { // top level optional configuration for all routes on the gateway gloo.solo.io.ListenerOptions options = 5; + reserved 6; - // Enable ProxyProtocol support for this listener - google.protobuf.BoolValue use_proxy_proto = 8; + // Enable ProxyProtocol support for this listener. + // Deprecated: prefer setting the listener option. + // If configured, the listener option (filter config) overrides any setting here. + google.protobuf.BoolValue use_proxy_proto = 8 [deprecated=true]; // The type of gateway being created // HttpGateway creates a listener with an http_connection_manager // TcpGateway creates a listener with a tcp proxy filter + // HybridGateway creates a listener with any number of filter chains that each may have either an http_connection_manager or a tcp proxy filter oneof GatewayType { HttpGateway http_gateway = 9; TcpGateway tcp_gateway = 10; + HybridGateway hybrid_gateway = 11; } /* - * Names of the [`Proxy`](https://gloo.solo.io/api/github.com/solo-io/solo-apis/api/gloo/gloo/v1/proxy.proto.sk/) + * Names of the [`Proxy`](https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-apis/api/gloo/gloo/v1/proxy.proto.sk/) * resources to generate from this gateway. If other gateways exist which point to the same proxy, * Gloo will join them together. * * Proxies have a one-to-many relationship with Envoy bootstrap configuration. * In order to connect to Gloo, the Envoy bootstrap configuration sets a `role` in - * the [node metadata](https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/core/base.proto#envoy-api-msg-core-node) + * the [node metadata](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/base.proto#envoy-api-msg-core-node) * Envoy instances announce their `role` to Gloo, which maps to the `{{ .Namespace }}~{{ .Name }}` * of the Proxy resource. * - * The template for this value can be seen in the [Gloo Helm chart](https://github.com/solo-io/gloo/blob/master/install/helm/gloo/templates/9-gateway-proxy-configmap.yaml#L22) + * The template for this value can be seen in the [Gloo Helm chart](https://github.com/solo-io/gloo/blob/main/install/helm/gloo/templates/9-gateway-proxy-configmap.yaml#L22) * * Note: this field also accepts fields written in camel-case. They will be converted - * to kebab-case in the Proxy name. This allows use of the [Gateway Name Helm value](https://github.com/solo-io/gloo/blob/master/install/helm/gloo/values-gateway-template.yaml#L47) + * to kebab-case in the Proxy name. This allows use of the [Gateway Name Helm value](https://github.com/solo-io/gloo/blob/main/install/helm/gloo/values-gateway-template.yaml#L47) * for this field * * Defaults to `["gateway-proxy"]` @@ -75,88 +91,98 @@ message GatewaySpec { gloo.solo.io.RouteConfigurationOptions route_options = 13; } -message HttpGateway { - // Names & namespace refs of the virtual services which contain the actual routes for the gateway. - // If the list is empty, all virtual services in all namespaces that Gloo watches will apply, - // with accordance to `ssl` flag on `Gateway` above. - // The default namespace matching behavior can be overridden via `virtual_service_namespaces` flag below. - // Only one of `virtualServices`, `virtualServiceExpressions` or `virtualServiceSelector` should be provided. - // If more than one is provided only one will be checked with priority virtualServiceExpressions, virtualServiceSelector, virtualServices - repeated core.solo.io.ResourceRef virtual_services = 1; - - // Select virtual services by their label. If `virtual_service_namespaces` is provided below, this will apply only - // to virtual services in the namespaces specified. - // Only one of `virtualServices`, `virtualServiceExpressions` or `virtualServiceSelector` should be provided. - // If more than one is provided only one will be checked with priority virtualServiceExpressions, virtualServiceSelector, virtualServices - map virtual_service_selector = 2; - - // Select virtual services using expressions. If `virtual_service_namespaces` is provided below, this will apply only - // to virtual services in the namespaces specified. - // Only one of `virtualServices`, `virtualServiceExpressions` or `virtualServiceSelector` should be provided. - // If more than one is provided only one will be checked with priority virtualServiceExpressions, virtualServiceSelector, virtualServices - VirtualServiceSelectorExpressions virtual_service_expressions = 9; - - // The virtual services that compose a gateway are referenced by name via `virtual_services` or by label selector - // via `virtual_service_selector` on the `HttpGateway` object. - // By default, virtual services match if they are in any namespace watched by Gloo. - - // Restrict the search by providing a list of valid search namespaces here. - // Setting '*' will search all namespaces, equivalent to omitting this value. - repeated string virtual_service_namespaces = 3; - - // HTTP Gateway configuration - gloo.solo.io.HttpListenerOptions options = 8; -} - message TcpGateway { // TCP hosts that the gateway can route to repeated gloo.solo.io.TcpHost tcp_hosts = 1; // TCP Gateway configuration gloo.solo.io.TcpListenerOptions options = 8; +} + +message HybridGateway { + // MatchedGateways can be used to define both HttpGateways and TcpGateways directly on the Gateway resource. + // If `MatchedGateways` is provided, then `DelegatedHttpGateways` and `DelegatedTcpGateways` are ignored. + repeated MatchedGateway matched_gateways = 1; + + // DelegatedHttpGateways can be used to configure multiple HttpGateways + // using the MatchableHttpGateway CR and select them on this Gateway + // using a resourceRef or label selection. + // If `MatchedGateways` is provided, then `DelegatedHttpGateways` is ignored. + DelegatedHttpGateway delegated_http_gateways = 2; + + // DelegatedTcpGateways can be used to configure multiple TcpGateways + // using the MatchableTcpGateway CR and select them on this Gateway + // using a resourceRef or label selection. + // If `MatchedGateways` is provided, then `DelegatedTcpGateways` is ignored. + DelegatedTcpGateway delegated_tcp_gateways = 3; +} + +message DelegatedHttpGateway { + + // How to select MatchableHttpGateways + oneof selection_type { + // Delegate to the resource with the given `name` and `namespace. + core.solo.io.ResourceRef ref = 3; + + // Delegate to the MatchableHttpGateways that match the given selector. + selectors.core.gloo.solo.io.Selector selector = 4; + } + + // Used as a meta modifier to the `http_connection_manager_settings` and `ssl_config` fields in a DelegatedHttpGateway. When set, provided ancestor config cannot be overriden by matched HttpGateways. + // Useful in a multi-team context, where a controlling team managing a primary Gateway file may want to lock down specific functionality + // from other teams. + // + // For example: (DelegatedHttpGateway, MatchableHttpGateway) = {"a": "a1", "b": "b1"}, {"b": "b2", "c": "c2"} + // When true: get_config(MatchableHttpGateway) --> {"a": "a1", "b": "b1", "c": "c2"} + // When false: get_config(MatchableHttpGateway) --> {"a": "a1", "b": "b2", "c": "c2"} + bool prevent_child_overrides = 5; + + // Anscestry-level HTTP Gateway configuration. Options specified here will be passed down to each `MatchableHttpGateway` that is matched via `selector` or `ref`. Ultimately, said options will be consumed by instances of `MatchableHttpGateway.http_gateway` + hcm.options.gloo.solo.io.HttpConnectionManagerSettings http_connection_manager_settings = 6; + // Anscestry-level TLS/SSL traffic configuration. Options specified here will be passed down to each `MatchableHttpGateway` that is matched via `selector` or `ref`. From there, they are passed to all VirtualServices associated with said `MatchableHttpGateway`s. + gloo.solo.io.SslConfig ssl_config = 2; } -// Expressions to define which virtual services to select -// Example: -// expressions: -// - key: domain -// operator: in -// values: example.com -message VirtualServiceSelectorExpressions { - - message Expression { - // Kubernetes label key, must conform to Kubernetes syntax requirements - // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set - string key = 1; - - // Virtual Service Selector expression operator, while the set-based syntax differs from Kubernetes (kubernetes: `key: !mylabel`, gloo: `key: mylabel, operator: "!"` | kubernetes: `key: mylabel`, gloo: `key: mylabel, operator: exists`), the functionality remains the same. - enum Operator { - // = - Equals = 0; - // == - DoubleEquals = 1; - // != - NotEquals = 2; - // in - In = 3; - // notin - NotIn = 4; - // exists - Exists = 5; - // ! - DoesNotExist = 6; - // gt - GreaterThan = 7; - // lt - LessThan = 8; - } - // The operator can only be in, notin, =, ==, !=, exists, ! (DoesNotExist), gt (GreaterThan), lt (LessThan). - Operator operator = 2; - repeated string values = 3; + +message DelegatedTcpGateway { + + // How to select MatchableTcpGateways + oneof selection_type { + // Delegate to the resource with the given `name` and `namespace. + core.solo.io.ResourceRef ref = 1; + + // Delegate to the MatchableTcpGateways that match the given selector. + selectors.core.gloo.solo.io.Selector selector = 2; } +} - // Expressions allow for more flexible virtual service label matching, such as equality-based requirements, set-based requirements, or a combination of both. - // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#equality-based-requirement - repeated Expression expressions = 3; +message MatchedGateway { + // Matchers are used to define unique matching criteria for each MatchedGateway + // Each MatchedGateway within a HybridGateway must have a unique Matcher + // If multiple matchers in a HybridGateway are identical, the HybridGateway will not be accepted + // Empty Matchers are effectively catch-alls, and there can be no more than one empty Matcher per HybridGateway + Matcher matcher = 1; + + oneof GatewayType { + HttpGateway http_gateway = 2; + TcpGateway tcp_gateway = 3; + } +} + +message Matcher { + // Gloo use SNI domains as matching criteria for Gateway selection + // The other ssl_config properties will be applied to the outputFilterChain's transport socket + // SslConfig from VirtualServices will be ignored in a MatchedGateway + gloo.solo.io.SslConfig ssl_config = 1; + + // CidrRange specifies an IP Address and a prefix length to construct the subnet mask for a CIDR range. + // See https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/address.proto#envoy-v3-api-msg-config-core-v3-cidrrange + repeated .solo.io.envoy.config.core.v3.CidrRange source_prefix_ranges = 2; + + // Enterprise-only: Passthrough cipher suites is an allow-list of OpenSSL cipher suite names for which TLS passthrough will be enabled. + // If a client does not support any ciphers that are natively supported by Envoy, but does support one of the ciphers in the passthrough list, + // then traffic will be routed via TCP Proxy to a destination specified by the TcpGateway, where TLS can then be terminated. + // This field is only applicable to TcpGateways. + repeated string passthrough_cipher_suites = 3; } @@ -185,3 +211,9 @@ message GatewayStatus { // Opaque details about status results google.protobuf.Struct details = 5; } + + + +message GatewayNamespacedStatuses { + map statuses = 1; +} diff --git a/api/gloo/gateway/v1/http_gateway.proto b/api/gloo/gateway/v1/http_gateway.proto new file mode 100644 index 000000000..9ea54d5db --- /dev/null +++ b/api/gloo/gateway/v1/http_gateway.proto @@ -0,0 +1,90 @@ +syntax = "proto3"; +package gateway.solo.io; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1"; + +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + +import "github.com/solo-io/solo-kit/api/v1/ref.proto"; + +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/proxy.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/http_listener_options.proto"; + +message HttpGateway { + // Names & namespace refs of the virtual services which contain the actual routes for the gateway. + // If the list is empty, all virtual services in all namespaces that Gloo watches will apply, + // with accordance to `ssl` flag on `Gateway` above. + // The default namespace matching behavior can be overridden via `virtual_service_namespaces` flag below. + // Only one of `virtualServices`, `virtualServiceExpressions` or `virtualServiceSelector` should be provided. + // If more than one is provided only one will be checked with priority virtualServiceExpressions, virtualServiceSelector, virtualServices + repeated core.solo.io.ResourceRef virtual_services = 1; + + // Select virtual services by their label. If `virtual_service_namespaces` is provided below, this will apply only + // to virtual services in the namespaces specified. + // Only one of `virtualServices`, `virtualServiceExpressions` or `virtualServiceSelector` should be provided. + // If more than one is provided only one will be checked with priority virtualServiceExpressions, virtualServiceSelector, virtualServices + map virtual_service_selector = 2; + + // Select virtual services using expressions. If `virtual_service_namespaces` is provided below, this will apply only + // to virtual services in the namespaces specified. + // Only one of `virtualServices`, `virtualServiceExpressions` or `virtualServiceSelector` should be provided. + // If more than one is provided only one will be checked with priority virtualServiceExpressions, virtualServiceSelector, virtualServices + VirtualServiceSelectorExpressions virtual_service_expressions = 9; + + // The virtual services that compose a gateway are referenced by name via `virtual_services` or by label selector + // via `virtual_service_selector` on the `HttpGateway` object. + // By default, virtual services match if they are in any namespace watched by Gloo. + + // Restrict the search by providing a list of valid search namespaces here. + // Setting '*' will search all namespaces, equivalent to omitting this value. + repeated string virtual_service_namespaces = 3; + + // HTTP Gateway configuration + gloo.solo.io.HttpListenerOptions options = 8; +} + +// Expressions to define which virtual services to select +// Example: +// expressions: +// - key: domain +// operator: in +// values: example.com +message VirtualServiceSelectorExpressions { + + message Expression { + // Kubernetes label key, must conform to Kubernetes syntax requirements + // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set + string key = 1; + + // Virtual Service Selector expression operator, while the set-based syntax differs from Kubernetes (kubernetes: `key: !mylabel`, gloo: `key: mylabel, operator: "!"` | kubernetes: `key: mylabel`, gloo: `key: mylabel, operator: exists`), the functionality remains the same. + enum Operator { + // = + Equals = 0; + // == + DoubleEquals = 1; + // != + NotEquals = 2; + // in + In = 3; + // notin + NotIn = 4; + // exists + Exists = 5; + // ! + DoesNotExist = 6; + // gt + GreaterThan = 7; + // lt + LessThan = 8; + } + // The operator can only be in, notin, =, ==, !=, exists, ! (DoesNotExist), gt (GreaterThan), lt (LessThan). + Operator operator = 2; + repeated string values = 3; + } + + // Expressions allow for more flexible virtual service label matching, such as equality-based requirements, set-based requirements, or a combination of both. + // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#equality-based-requirement + repeated Expression expressions = 3; +} \ No newline at end of file diff --git a/api/gloo/gateway/v1/matchable_http_gateway.proto b/api/gloo/gateway/v1/matchable_http_gateway.proto new file mode 100644 index 000000000..f5cb09463 --- /dev/null +++ b/api/gloo/gateway/v1/matchable_http_gateway.proto @@ -0,0 +1,87 @@ +syntax = "proto3"; +package gateway.solo.io; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1"; + +import "google/protobuf/struct.proto"; +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + +import "github.com/solo-io/solo-kit/api/v1/ref.proto"; +import "github.com/solo-io/solo-kit/api/v1/solo-kit.proto"; + +import "github.com/solo-io/solo-apis/api/gloo/gateway/v1/http_gateway.proto"; + +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl/ssl.proto"; + +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/address.proto"; + + +/* +A MatchableHttpGateway describes a single FilterChain configured with: +- The HttpConnectionManager NetworkFilter +- A FilterChainMatch and TransportSocket that support TLS configuration and Source IP matching + +A Gateway CR may select one or more MatchableHttpGateways on a single listener. +This enables separate teams to own Listener configuration (Gateway CR) +and FilterChain configuration (MatchableHttpGateway CR) +*/ +message MatchableHttpGatewaySpec { + + + + + message Matcher { + // CidrRange specifies an IP Address and a prefix length to construct the subnet mask for a CIDR range. + // See https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/address.proto#envoy-v3-api-msg-config-core-v3-cidrrange + repeated .solo.io.envoy.config.core.v3.CidrRange source_prefix_ranges = 1; + + // Ssl configuration applied to the FilterChain: + // - FilterChainMatch: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/listener/v3/listener_components.proto#config-listener-v3-filterchainmatch) + // - TransportSocket: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/base.proto#envoy-v3-api-msg-config-core-v3-transportsocket + gloo.solo.io.SslConfig ssl_config = 2; + } + + // Matcher creates a FilterChainMatch and TransportSocket for a FilterChain + // For each MatchableHttpGateway on a Gateway CR, the matcher must be unique. + // If there are any identical matchers, the Gateway will be rejected. + // An empty matcher will produce an empty FilterChainMatch (https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/listener/v3/listener_components.proto#envoy-v3-api-msg-config-listener-v3-filterchainmatch) + // effectively matching all incoming connections + Matcher matcher = 3; + + // HttpGateway creates a FilterChain with an HttpConnectionManager + HttpGateway http_gateway = 4; +} + +message MatchableHttpGatewayStatus { + enum State { + // Pending status indicates the resource has not yet been validated + Pending = 0; + // Accepted indicates the resource has been validated + Accepted = 1; + // Rejected indicates an invalid configuration by the user + // Rejected resources may be propagated to the xDS server depending on their severity + Rejected = 2; + // Warning indicates a partially invalid configuration by the user + // Resources with Warnings may be partially accepted by a controller, depending on the implementation + Warning = 3; + } + // State is the enum indicating the state of the resource + State state = 1; + // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty + string reason = 2; + // Reference to the reporter who wrote this status + string reported_by = 3; + // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource + map subresource_statuses = 4; + + // Opaque details about status results + google.protobuf.Struct details = 5; +} + + + +message MatchableHttpGatewayNamespacedStatuses { + map statuses = 1; +} diff --git a/api/gloo/gateway/v1/matchable_tcp_gateway.proto b/api/gloo/gateway/v1/matchable_tcp_gateway.proto new file mode 100644 index 000000000..6355d64ff --- /dev/null +++ b/api/gloo/gateway/v1/matchable_tcp_gateway.proto @@ -0,0 +1,90 @@ +syntax = "proto3"; +package gateway.solo.io; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1"; + +import "google/protobuf/struct.proto"; +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + +import "github.com/solo-io/solo-kit/api/v1/ref.proto"; +import "github.com/solo-io/solo-kit/api/v1/solo-kit.proto"; + +import "github.com/solo-io/solo-apis/api/gloo/gateway/v1/gateway.proto"; + +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl/ssl.proto"; + +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/address.proto"; + + +/* +A MatchableTcpGateway describes a single FilterChain configured with the TcpProxy network filter and a matcher. + +A Gateway CR may select one or more MatchableTcpGateways on a single listener. +This enables separate teams to own Listener configuration (Gateway CR) +and FilterChain configuration (MatchableTcpGateway CR). +*/ +message MatchableTcpGatewaySpec { + + + + + message Matcher { + // CidrRange specifies an IP Address and a prefix length to construct the subnet mask for a CIDR range. + // See https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/address.proto#envoy-v3-api-msg-config-core-v3-cidrrange + repeated .solo.io.envoy.config.core.v3.CidrRange source_prefix_ranges = 1; + + // Ssl configuration applied to the FilterChain, if using passthrough should not include secrets : + // - FilterChainMatch: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/listener/v3/listener_components.proto#config-listener-v3-filterchainmatch) + // - TransportSocket: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/base.proto#envoy-v3-api-msg-config-core-v3-transportsocket + gloo.solo.io.SslConfig ssl_config = 2; + + // Enterprise-only: Passthrough cipher suites is an allow-list of OpenSSL cipher suite names for which TLS passthrough will be enabled. + // If a client does not support any ciphers that are natively supported by Envoy, but does support one of the ciphers in the passthrough list, + // then traffic will be routed via TCP Proxy to a destination specified by the TcpGateway, where TLS can then be terminated. + repeated string passthrough_cipher_suites = 3; + } + + // Matcher creates a FilterChainMatch and TransportSocket for a FilterChain + // For each MatchableTcpGateway on a Gateway CR, the matcher must be unique. + // If there are any identical matchers, the Gateway will be rejected. + // An empty matcher will produce an empty FilterChainMatch (https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/listener/v3/listener_components.proto#envoy-v3-api-msg-config-listener-v3-filterchainmatch) + // effectively matching all incoming connections + Matcher matcher = 3; + + // TcpGateway creates a FilterChain with a TcpProxy. + TcpGateway tcp_gateway = 4; +} + +message MatchableTcpGatewayStatus { + enum State { + // Pending status indicates the resource has not yet been validated + Pending = 0; + // Accepted indicates the resource has been validated + Accepted = 1; + // Rejected indicates an invalid configuration by the user + // Rejected resources may be propagated to the xDS server depending on their severity + Rejected = 2; + // Warning indicates a partially invalid configuration by the user + // Resources with Warnings may be partially accepted by a controller, depending on the implementation + Warning = 3; + } + // State is the enum indicating the state of the resource + State state = 1; + // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty + string reason = 2; + // Reference to the reporter who wrote this status + string reported_by = 3; + // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource + map subresource_statuses = 4; + + // Opaque details about status results + google.protobuf.Struct details = 5; +} + + + +message MatchableTcpGatewayNamespacedStatuses { + map statuses = 1; +} diff --git a/api/gloo/gateway/v1/route_table.proto b/api/gloo/gateway/v1/route_table.proto index ef73a6a6e..03fdbc3d5 100644 --- a/api/gloo/gateway/v1/route_table.proto +++ b/api/gloo/gateway/v1/route_table.proto @@ -6,6 +6,7 @@ import "google/protobuf/struct.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "google/protobuf/wrappers.proto"; @@ -168,10 +169,11 @@ message RouteTableSpec { // The list of routes for the route table repeated Route routes = 1; - // When a delegated route defines a `RouteTableSelector` that matches multiple route tables, Gloo will inspect this - // field to determine the order in which the route tables are to be evaluated. This determines the order in which + // When a delegated route in a VirtualService or RouteTable defines a `RouteTableSelector` that matches + // multiple route tables, Gloo will inspect this field to determine the order in which + // the route tables are to be evaluated. This determines the order in which // the routes will appear on the final `Proxy` resource. The field is optional; if no value is specified, the weight - // defaults to 0 (zero). + // defaults to 0 (zero). Note that this field is ignored if it is not used in a route delegation scenario. // // Gloo will process the route tables matched by a selector in ascending order by weight and collect the routes of // each route table in the order they are defined. If multiple route tables define the same weight, Gloo will sort the @@ -180,6 +182,7 @@ message RouteTableSpec { // (the one that specifies the `RouteTableSelector`). google.protobuf.Int32Value weight = 2; + reserved 6; } @@ -210,3 +213,9 @@ message RouteTableStatus { // Opaque details about status results google.protobuf.Struct details = 5; } + + + +message RouteTableNamespacedStatuses { + map statuses = 1; +} diff --git a/api/gloo/gateway/v1/virtual_service.proto b/api/gloo/gateway/v1/virtual_service.proto index 459056db9..551bb86bd 100644 --- a/api/gloo/gateway/v1/virtual_service.proto +++ b/api/gloo/gateway/v1/virtual_service.proto @@ -6,13 +6,15 @@ import "google/protobuf/struct.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "google/protobuf/wrappers.proto"; import "github.com/solo-io/solo-kit/api/v1/ref.proto"; import "github.com/solo-io/solo-kit/api/v1/solo-kit.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl/ssl.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/proxy.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/virtual_host_options.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/route_options.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/core/matchers/matchers.proto"; /* @@ -112,11 +114,8 @@ import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/core/matchers/matchers.pro message VirtualServiceSpec { - // The VirtualHost contains the - // The list of HTTP routes define routing actions to be taken - // for incoming HTTP requests whose host header matches - // this virtual host. If the request matches more than one route in the list, the first route matched will be selected. - // If the list of routes is empty, the virtual host will be ignored by Gloo. + // The VirtualHost contains configuration for serving a list of routes for a set of domains along with options for + // configuring traffic VirtualHost virtual_host = 1; // If provided, the Gateway will serve TLS/SSL traffic for this set of routes @@ -127,6 +126,7 @@ message VirtualServiceSpec { // and can be changed after creating the resource. string display_name = 3 [(extproto.skip_hashing) = true]; + reserved 6; } @@ -138,8 +138,8 @@ An HTTP request is first matched to a virtual host based on its host header, the If a request is not matched to any virtual host or a route therein, the target proxy will reply with a 404. -Unlike the [Gloo Virtual Host]({{< ref "/reference/api/github.com/solo-io/solo-apis/api/gloo/gloo/v1/proxy.proto.sk.md" >}}/#virtualhost), -*Gateway* Virtual Hosts can **delegate** their routes to `RouteTables`. +Unlike the [Gloo Virtual Host]({{< versioned_link_path fromRoot="/reference/api/github.com/solo-io/solo-apis/api/gloo/gloo/v1/proxy.proto.sk/#virtualhost" >}}), +_Gateway_ Virtual Hosts can delegate their routes to `RouteTables`. */ message VirtualHost { @@ -148,7 +148,7 @@ message VirtualHost { // but not “-bar.foo.com”. Additionally, a special entry “*” is allowed which will match any host/authority header. // Only a single virtual host on a gateway can match on “*”. A domain must be unique across all // virtual hosts on a gateway or the config will be invalidated by Gloo - // Domains on virtual hosts obey the same rules as [Envoy Virtual Hosts](https://github.com/envoyproxy/envoy/blob/master/api/envoy/api/v2/route/route.proto) + // Domains on virtual hosts obey the same rules as [Envoy Virtual Hosts](https://github.com/envoyproxy/envoy/blob/main/api/envoy/api/v2/route/route.proto) repeated string domains = 2; // The list of HTTP routes define routing actions to be taken for incoming HTTP requests whose host header matches @@ -182,7 +182,7 @@ message VirtualHost { * - *Route* the request to a destination * - Reply with a *Direct Response* * - Send a *Redirect* response to the client -* - *Delegate* the action for the request to one or more top-level [`RouteTable`]({{< ref "/reference/api/github.com/solo-io/solo-apis/api/gloo/gateway/v1/route_table.proto.sk.md" >}}) resources +* - *Delegate* the action for the request to one or more top-level [`RouteTable`]({{< versioned_link_path fromRoot="/reference/api/github.com/solo-io/solo-apis/api/gloo/gateway/v1/route_table.proto.sk.md" >}}) resources * DelegateActions can be used to delegate the behavior for a set out routes with a given *prefix* to * top-level `RouteTable` resources. */ @@ -215,6 +215,8 @@ message Route { // Delegate routing actions for the given matcher to one or more RouteTables. DelegateAction delegate_action = 5; } + reserved 11; // deprecated graphql_api_ref + reserved "graphql_api_ref"; // Route Options extend the behavior of routes. // Route options include configuration such as retries, rate limiting, and request/response transformation. @@ -342,3 +344,9 @@ message VirtualServiceStatus { // Opaque details about status results google.protobuf.Struct details = 5; } + + + +message VirtualServiceNamespacedStatuses { + map statuses = 1; +} diff --git a/api/gloo/gloo/external/.gitignore b/api/gloo/gloo/external/.gitignore new file mode 100644 index 000000000..36798e6f1 --- /dev/null +++ b/api/gloo/gloo/external/.gitignore @@ -0,0 +1 @@ +!data \ No newline at end of file diff --git a/api/gloo/gloo/external/envoy/README.md b/api/gloo/gloo/external/envoy/README.md index 1761f2fc2..7f632b817 100644 --- a/api/gloo/gloo/external/envoy/README.md +++ b/api/gloo/gloo/external/envoy/README.md @@ -1,7 +1,7 @@ ### Envoy Protos in Gloo Edge The envoy api in Gloo Edge is now taken directly from the envoy protos and then copied into the relevant directory -here in the Gloo Edge repo. In order to allow for seamless addition of envoy protos directly into the gloo repo simply +here in the Gloo Edge repo. In order to allow for seamless addition of envoy protos directly into the gloo repo simply change the go_package option to the appropriate `go-control-plane` package, or if none exists than add the `go-control-plane` one For example: @@ -9,6 +9,21 @@ For example: * outlier_detection.proto: `option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/cluster";` These protos will not have any code generated for them as they are not in directory tree containing a `solo-kit.json`. -Any protos which should have code generated for them should either live in the extensions directory, or perhaps a new -more appropriate directory. The extensions directory has all of the custom envoy filter protos which do not have `go` -code pre generated for them. \ No newline at end of file +Any protos which should have code generated for them should either live in the extensions directory, or perhaps a new +more appropriate directory. The extensions directory has all of the custom envoy filter protos which do not have `go` +code pre generated for them. + +### Envoy-gloo and Envoy-gloo-ee Protos + +This directory also contains .proto files that are stored in the `envoy-gloo` and `envoy-gloo-ee` repositories. We store the +.proto files here so that the corresponding Go protobuf files are generated from these definitions during the generation phase of +the Gloo build. This is necessary so that we can instantiate these objects in our control plane code so that they can be written +over to Envoy via XDS. + +For example, if the `envoy-gloo` .proto has the following line: + +``` +option go_package = "github.com/solo-io/gloo/projects/gloo/pkg/api/config/tap/output_sink/v3"; +``` + +The messages in that package will be generated in ` projects/gloo/pkg/api/config/tap/output_sink/v3/grpc_output_sink.pb.go` diff --git a/api/gloo/gloo/external/envoy/annotations/deprecation.proto b/api/gloo/gloo/external/envoy/annotations/deprecation.proto index 6c25143ca..44c8223ee 100644 --- a/api/gloo/gloo/external/envoy/annotations/deprecation.proto +++ b/api/gloo/gloo/external/envoy/annotations/deprecation.proto @@ -7,12 +7,16 @@ import "google/protobuf/descriptor.proto"; // [#protodoc-title: Deprecation] // Allows tagging proto fields as fatal by default. One Envoy release after // deprecation, deprecated fields will be disallowed by default, a state which -// is reversible with :ref:`runtime overrides `. +// is reversible with runtime overrides. // Magic number in this file derived from top 28bit of SHA256 digest of // "solo.io.envoy.annotation.disallowed_by_default" extend google.protobuf.FieldOptions { bool disallowed_by_default = 246172783; + + // The API major and minor version on which the field was deprecated + // (e.g., "3.5" for major version 3 and minor version 5). + string deprecated_at_minor_version = 246172784; } // Magic number in this file derived from top 28bit of SHA256 digest of @@ -23,5 +27,6 @@ extend google.protobuf.EnumValueOptions { option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/annotations"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/envoy/api/v2/cluster/outlier_detection.proto b/api/gloo/gloo/external/envoy/api/v2/cluster/outlier_detection.proto index bcef4cad2..a62033889 100644 --- a/api/gloo/gloo/external/envoy/api/v2/cluster/outlier_detection.proto +++ b/api/gloo/gloo/external/envoy/api/v2/cluster/outlier_detection.proto @@ -14,6 +14,7 @@ import "validate/validate.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; // [#protodoc-title: Outlier detection] diff --git a/api/gloo/gloo/external/envoy/api/v2/core/health_check.proto b/api/gloo/gloo/external/envoy/api/v2/core/health_check.proto index 5abe82087..1fa113035 100644 --- a/api/gloo/gloo/external/envoy/api/v2/core/health_check.proto +++ b/api/gloo/gloo/external/envoy/api/v2/core/health_check.proto @@ -10,6 +10,7 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/ import "github.com/solo-io/solo-kit/api/external/envoy/api/v2/core/base.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/range.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/advanced_http/advanced_http.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/base.proto"; import "google/protobuf/any.proto"; import "google/protobuf/duration.proto"; @@ -20,6 +21,8 @@ import "validate/validate.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +// Who needs this anyway +// option (extproto.clone_all) = true; // [#protodoc-title: Health check] // * Health checking `architecture overview (arch_overview_health_checking)`. @@ -134,6 +137,13 @@ message HealthCheck { // (Enterprise Only): If defined, the response health check rules take precedence over the http // `expected_statuses`. .advancedhttp.options.gloo.solo.io.ResponseAssertions response_assertions = 10; + + + // HTTP Method that will be used for health checking, default is "GET". + // GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, PATCH methods are supported, but making request body is not supported. + // CONNECT method is disallowed because it is not appropriate for health check request. + // If a non-200 response is expected by the method, it needs to be set in expected_statuses. + solo.io.envoy.config.core.v3.RequestMethod method = 11; } message TcpHealthCheck { @@ -147,29 +157,31 @@ message HealthCheck { } message RedisHealthCheck { - // If set, optionally perform ``EXISTS `` instead of ``PING``. A return value + // If set, optionally perform `EXISTS ` instead of `PING`. A return value // from Redis of 0 (does not exist) is considered a passing healthcheck. A return value other // than 0 is considered a failure. This allows the user to mark a Redis instance for maintenance // by setting the specified key to any value and waiting for traffic to drain. string key = 1; } - // `grpc.health.v1.Health - // `_-based - // healthcheck. See `gRPC doc `_ + // [grpc.health.v1.Health](https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto)-based + // healthcheck. See [gRPC doc](https://github.com/grpc/grpc/blob/master/doc/health-checking.md) // for details. message GrpcHealthCheck { // An optional service name parameter which will be sent to gRPC service in - // `grpc.health.v1.HealthCheckRequest - // `_. - // message. See `gRPC health-checking overview - // `_ for more information. + // [grpc.health.v1.HealthCheckRequest](https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto#L20) + // message. See [gRPC health-checking overview](https://github.com/grpc/grpc/blob/master/doc/health-checking.md) for more information. string service_name = 1; // The value of the :authority header in the gRPC health check request. If // left empty (default value), the name of the cluster this health check is associated // with will be used. string authority = 2; + + // Specifies a list of key-value pairs that should be added to the metadata of each GRPC call + // that is sent to the health checked cluster. + repeated .solo.io.envoy.api.v2.core.HeaderValueOption initial_metadata = 3 + [(validate.rules).repeated .max_items = 1000]; } @@ -262,9 +274,9 @@ enum HealthStatus { UNHEALTHY = 2; // Connection draining in progress. E.g., - // ``_ + // https://aws.amazon.com/blogs/aws/elb-connection-draining-remove-instances-from-service-with-care/ // or - // ``_. + // https://cloud.google.com/compute/docs/load-balancing/enabling-connection-draining. // This is interpreted by Envoy as *UNHEALTHY*. DRAINING = 3; diff --git a/api/gloo/gloo/external/envoy/api/v2/route/route.proto b/api/gloo/gloo/external/envoy/api/v2/route/route.proto index ef11bcdf0..5bbc20dc8 100644 --- a/api/gloo/gloo/external/envoy/api/v2/route/route.proto +++ b/api/gloo/gloo/external/envoy/api/v2/route/route.proto @@ -21,6 +21,7 @@ import "validate/validate.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; // [#protodoc-title: HTTP route] // * Routing `architecture overview (arch_overview_http_routing)` @@ -40,16 +41,16 @@ message VirtualHost { // virtual host. Wildcard hosts are supported in the suffix or prefix form. // // Domain search order: - // 1. Exact domain names: ``www.foo.com``. - // 2. Suffix domain wildcards: ``*.foo.com`` or ``*-bar.foo.com``. - // 3. Prefix domain wildcards: ``foo.*`` or ``foo-*``. - // 4. Special wildcard ``*`` matching any domain. + // 1. Exact domain names: `www.foo.com`. + // 2. Suffix domain wildcards: `*.foo.com` or `*-bar.foo.com`. + // 3. Prefix domain wildcards: `foo.*` or `foo-*`. + // 4. Special wildcard `*` matching any domain. // // // The wildcard will not match the empty string. - // e.g. ``*-bar.foo.com`` will match ``baz-bar.foo.com`` but not ``-bar.foo.com``. + // e.g. `*-bar.foo.com` will match `baz-bar.foo.com` but not `-bar.foo.com`. // The longest wildcards match first. - // Only a single virtual host in the entire route configuration can match on ``*``. A domain + // Only a single virtual host in the entire route configuration can match on `*`. A domain // must be unique across all virtual hosts or the config will fail to load. repeated string domains = 2 [(validate.rules).repeated.min_items = 1]; @@ -320,6 +321,9 @@ message WeightedCluster { } message RouteMatch { + message ConnectMatcher { + } + oneof path_specifier { option (validate.required) = true; @@ -334,8 +338,7 @@ message RouteMatch { // If specified, the route is a regular expression rule meaning that the // regex must match the *:path* header once the query string is removed. The entire path // (without the query string) must match the regex. The rule will not match if only a - // subsequence of the *:path* header matches the regex. The regex grammar is defined `here - // `_. + // subsequence of the *:path* header matches the regex. The regex grammar is defined [here](https://en.cppreference.com/w/cpp/regex/ecmascript). // // Examples: // @@ -344,6 +347,16 @@ message RouteMatch { // * The regex */b[io]t* does not match the path */bite* // * The regex */b[io]t* does not match the path */bit/bot* string regex = 3 [(validate.rules).string.max_bytes = 1024]; + + // If this is used as the matcher, the matcher will only match CONNECT requests. + // Note that this will not match HTTP/2 upgrade-style CONNECT requests + // (WebSocket and the like) as they are normalized in Envoy as HTTP/1.1 style + // upgrades. + // This is the only way to match CONNECT requests for HTTP/1.1. For HTTP/2, + // where CONNECT requests may have a path, the path matchers will work if + // there is a path present. + // Note that CONNECT support is currently considered alpha in Envoy. + ConnectMatcher connect_matcher = 10; } // Indicates that prefix/path matching should be case insensitive. The default @@ -536,7 +549,7 @@ message RouteAction { // downstream or `custom (config_http_conn_man_headers_custom_request_headers)` header. // If header value is empty, host header is left intact. // - // + // // Pay attention to the potential security implications of using this option. Provided header // must come from trusted source. string auto_host_rewrite_header = 29; @@ -748,7 +761,7 @@ message RouteAction { reserved 21; // If present, and the request is a gRPC request, use the - // `grpc-timeout header `_, + // [grpc-timeout header](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md), // or its default value (infinity) instead of // `timeout (envoy_api_field_route.RouteAction.timeout)`, but limit the applied timeout // to the maximum value specified here. If configured as 0, the maximum allowed timeout for @@ -1039,8 +1052,7 @@ message Tracing { // statistics output are not free. message VirtualCluster { // Specifies a regex pattern to use for matching requests. The entire path of the request - // must match the regex. The regex grammar used is defined `here - // `_. + // must match the regex. The regex grammar used is defined [here](https://en.cppreference.com/w/cpp/regex/ecmascript). // // Examples: // @@ -1080,7 +1092,7 @@ message RateLimit { // ("source_cluster", "") // ``` // - // is derived from the :option:`--service-cluster` option. + // is derived from the `--service-cluster` option. message SourceCluster { } @@ -1231,7 +1243,7 @@ message HeaderMatcher { // If specified, this regex string is a regular expression rule which implies the entire request // header value must match the regex. The rule will not match if only a subsequence of the // request header value matches the regex. The regex grammar used in the value field is defined - // `here `_. + // [here](https://en.cppreference.com/w/cpp/regex/ecmascript). // // Examples: // diff --git a/api/gloo/gloo/external/envoy/config/common/mutation_rules/v3/mutation_rules.proto b/api/gloo/gloo/external/envoy/config/common/mutation_rules/v3/mutation_rules.proto new file mode 100644 index 000000000..f82984483 --- /dev/null +++ b/api/gloo/gloo/external/envoy/config/common/mutation_rules/v3/mutation_rules.proto @@ -0,0 +1,116 @@ +// copied from https://github.com/envoyproxy/envoy/blob/ad89a587aa0177bfdad6b5c968a6aead5d9be7a4/api/envoy/config/common/mutation_rules/v3/mutation_rules.proto + +syntax = "proto3"; + +// manually updated pkg +package solo.io.envoy.config.common.mutation_rules.v3; + +// manually updated import paths +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/base.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/matcher/v3/regex.proto"; + +import "google/protobuf/wrappers.proto"; + +import "udpa/annotations/status.proto"; +import "validate/validate.proto"; + +option java_package = "io.envoyproxy.envoy.config.common.mutation_rules.v3"; +option java_outer_classname = "MutationRulesProto"; +option java_multiple_files = true; + +// manually updated go_package +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3"; + +option (udpa.annotations.file_status).package_version_status = ACTIVE; + +// manually added extproto +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + +// [#protodoc-title: Header mutation rules] + +// The HeaderMutationRules structure specifies what headers may be +// manipulated by a processing filter. This set of rules makes it +// possible to control which modifications a filter may make. +// +// By default, an external processing server may add, modify, or remove +// any header except for an "Envoy internal" header (which is typically +// denoted by an x-envoy prefix) or specific headers that may affect +// further filter processing: +// +// * `host` +// * `:authority` +// * `:scheme` +// * `:method` +// +// Every attempt to add, change, append, or remove a header will be +// tested against the rules here. Disallowed header mutations will be +// ignored unless `disallow_is_error` is set to true. +// +// Attempts to remove headers are further constrained -- regardless of the +// settings, system-defined headers (that start with `:`) and the `host` +// header may never be removed. +// +// In addition, a counter will be incremented whenever a mutation is +// rejected. In the ext_proc filter, that counter is named +// `rejected_header_mutations`. +// [#next-free-field: 8] +message HeaderMutationRules { + // By default, certain headers that could affect processing of subsequent + // filters or request routing cannot be modified. These headers are + // `host`, `:authority`, `:scheme`, and `:method`. Setting this parameter + // to true allows these headers to be modified as well. + google.protobuf.BoolValue allow_all_routing = 1; + + // If true, allow modification of envoy internal headers. By default, these + // start with `x-envoy` but this may be overridden in the `Bootstrap` + // configuration using the + // :ref:`header_prefix ` + // field. Default is false. + google.protobuf.BoolValue allow_envoy = 2; + + // If true, prevent modification of any system header, defined as a header + // that starts with a `:` character, regardless of any other settings. + // A processing server may still override the `:status` of an HTTP response + // using an `ImmediateResponse` message. Default is false. + google.protobuf.BoolValue disallow_system = 3; + + // If true, prevent modifications of all header values, regardless of any + // other settings. A processing server may still override the `:status` + // of an HTTP response using an `ImmediateResponse` message. Default is false. + google.protobuf.BoolValue disallow_all = 4; + + // If set, specifically allow any header that matches this regular + // expression. This overrides all other settings except for + // `disallow_expression`. + solo.io.envoy.type.matcher.v3.RegexMatcher allow_expression = 5; + + // If set, specifically disallow any header that matches this regular + // expression regardless of any other settings. + solo.io.envoy.type.matcher.v3.RegexMatcher disallow_expression = 6; + + // If true, and if the rules in this list cause a header mutation to be + // disallowed, then the filter using this configuration will terminate the + // request with a 500 error. In addition, regardless of the setting of this + // parameter, any attempt to set, add, or modify a disallowed header will + // cause the `rejected_header_mutations` counter to be incremented. + // Default is false. + google.protobuf.BoolValue disallow_is_error = 7; +} + +// The HeaderMutation structure specifies an action that may be taken on HTTP +// headers. +message HeaderMutation { + oneof action { + option (validate.required) = true; + + // Remove the specified header if it exists. + string remove = 1 + [(validate.rules).string = {well_known_regex: HTTP_HEADER_VALUE strict: false}]; + + // Append new header by the specified HeaderValueOption. + solo.io.envoy.config.core.v3.HeaderValueOption append = 2; + } +} diff --git a/api/gloo/gloo/external/envoy/config/core/v3/address.proto b/api/gloo/gloo/external/envoy/config/core/v3/address.proto index 15006ba2e..e09b73ed4 100644 --- a/api/gloo/gloo/external/envoy/config/core/v3/address.proto +++ b/api/gloo/gloo/external/envoy/config/core/v3/address.proto @@ -41,17 +41,17 @@ message SocketAddress { Protocol protocol = 1 [(validate.rules).enum = {defined_only: true}]; - // The address for this socket. :ref:`Listeners ` will bind - // to the address. An empty address is not allowed. Specify ``0.0.0.0`` or ``::`` + // The address for this socket. Listeners will bind + // to the address. An empty address is not allowed. Specify `0.0.0.0` or `::` // to bind to any address. [#comment:TODO(zuercher) reinstate when implemented: // It is possible to distinguish a Listener address via the prefix/suffix matching - // in :ref:`FilterChainMatch `.] When used - // within an upstream :ref:`BindConfig `, the address + // in FilterChainMatch.] When used + // within an upstream BindConfig, the address // controls the source address of outbound connections. For :ref:`clusters // `, the cluster type determines whether the // address must be an IP (*STATIC* or *EDS* clusters) or a hostname resolved by DNS // (*STRICT_DNS* or *LOGICAL_DNS* clusters). Address resolution can be customized - // via :ref:`resolver_name `. + // via resolver_name. string address = 2 [(validate.rules).string = {min_bytes: 1}]; oneof port_specifier { @@ -72,10 +72,9 @@ message SocketAddress { // *STRICT_DNS* or *LOGICAL_DNS* will generate an error at runtime. string resolver_name = 5; - // When binding to an IPv6 address above, this enables `IPv4 compatibility - // `_. Binding to ``::`` will + // When binding to an IPv6 address above, this enables [IPv4 compatibility](https://datatracker.ietf.org/doc/html/rfc3493#page-11). Binding to `::` will // allow both IPv4 and IPv6 connections, with peer IPv4 addresses mapped into - // IPv6 space as ``::FFFF:``. + // IPv6 space as `::FFFF:`. bool ipv4_compat = 6; } @@ -133,11 +132,11 @@ message Address { } // CidrRange specifies an IP Address and a prefix length to construct -// the subnet mask for a `CIDR `_ range. +// the subnet mask for a [CIDR](https://datatracker.ietf.org/doc/html/rfc4632) range. message CidrRange { option (solo.io.udpa.annotations.versioning).previous_message_type = "solo.io.envoy.api.v2.core.CidrRange"; - // IPv4 or IPv6 address, e.g. ``192.0.0.0`` or ``2001:db8::``. + // IPv4 or IPv6 address, e.g. `192.0.0.0` or `2001:db8::`. string address_prefix = 1 [(validate.rules).string = {min_bytes: 1}]; // Length of prefix, e.g. 0, 32. @@ -146,5 +145,6 @@ message CidrRange { option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/envoy/config/core/v3/backoff.proto b/api/gloo/gloo/external/envoy/config/core/v3/backoff.proto index 3477e6be2..e8daad97d 100644 --- a/api/gloo/gloo/external/envoy/config/core/v3/backoff.proto +++ b/api/gloo/gloo/external/envoy/config/core/v3/backoff.proto @@ -37,5 +37,6 @@ message BackoffStrategy { option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/envoy/config/core/v3/base.proto b/api/gloo/gloo/external/envoy/config/core/v3/base.proto index de43a6b08..c46db30a3 100644 --- a/api/gloo/gloo/external/envoy/config/core/v3/base.proto +++ b/api/gloo/gloo/external/envoy/config/core/v3/base.proto @@ -67,16 +67,15 @@ enum TrafficDirection { message Locality { option (solo.io.udpa.annotations.versioning).previous_message_type = ".solo.io.envoy.api.v2.core.Locality"; - // Region this :ref:`zone ` belongs to. + // Region this zone belongs to. string region = 1; // Defines the local service zone where Envoy is running. Though optional, it // should be set if discovery service routing is used and the discovery - // service exposes :ref:`zone data `, - // either in this message or via :option:`--service-zone`. The meaning of zone - // is context dependent, e.g. `Availability Zone (AZ) - // `_ - // on AWS, `Zone `_ on + // service exposes zone data, + // either in this message or via `--service-zone`. The meaning of zone + // is context dependent, e.g. [Availability Zone (AZ)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html) + // on AWS, [Zone](https://cloud.google.com/compute/docs/regions-zones/) on // GCP, etc. string zone = 2; @@ -142,24 +141,24 @@ message Node { // An opaque node identifier for the Envoy node. This also provides the local // service node name. It should be set if any of the following features are - // used: :ref:`statsd `, :ref:`CDS + // used: statsd, :ref:`CDS // `, and :ref:`HTTP tracing // `, either in this message or via - // :option:`--service-node`. + // `--service-node`. string id = 1; // Defines the local service cluster name where Envoy is running. Though // optional, it should be set if any of the following features are used: - // :ref:`statsd `, :ref:`health check cluster + // statsd, :ref:`health check cluster // verification // `, - // :ref:`runtime override directory `, + // runtime override directory, // :ref:`user agent addition // `, - // :ref:`HTTP global rate limiting `, - // :ref:`CDS `, and :ref:`HTTP tracing + // HTTP global rate limiting, + // CDS, and :ref:`HTTP tracing // `, either in this message or via - // :option:`--service-cluster`. + // `--service-cluster`. string cluster = 2; // Opaque metadata extending the node identifier. Envoy will pass this @@ -188,12 +187,12 @@ message Node { // Client feature support list. These are well known features described // in the Envoy API repository for a given major version of an API. Client features // use reverse DNS naming scheme, for example `com.acme.feature`. - // See :ref:`the list of features ` that xDS client may + // See the list of features that xDS client may // support. repeated string client_features = 10; // Known listening ports on the node as a generic hint to the management server - // for filtering :ref:`listeners ` to be returned. For example, + // for filtering listeners to be returned. For example, // if there is a listener bound to port 80, the list can optionally contain the // SocketAddress `(0.0.0.0,80)`. The field is optional and just a hint. repeated Address listening_addresses = 11; @@ -217,7 +216,7 @@ message Node { // object to match against. There are some well defined metadata used today for // this purpose: // -// * ``{"envoy.lb": {"canary": }}`` This indicates the canary status of an +// * `{"envoy.lb": {"canary": }}` This indicates the canary status of an // endpoint and is also used during header processing // (x-envoy-upstream-canary) and for stats purposes. // [#next-major-version: move to type/metadata/v2] @@ -261,7 +260,7 @@ message RuntimeFeatureFlag { // Runtime key to get value for comparison. This value is used if defined. The boolean value must // be represented via its - // `canonical JSON encoding `_. + // [canonical JSON encoding](https://developers.google.com/protocol-buffers/docs/proto3#json). string runtime_key = 2 [(validate.rules).string = {min_bytes: 1}]; } @@ -276,8 +275,8 @@ message HeaderValue { // Header value. // - // The same :ref:`format specifier ` as used for - // :ref:`HTTP access logging ` applies here, however + // The same format specifier as used for + // HTTP access logging applies here, however // unknown header values are replaced with the empty string instead of `-`. string value = 2 [ (validate.rules).string = {max_bytes: 16384 well_known_regex: HTTP_HEADER_VALUE strict: false} @@ -326,7 +325,7 @@ message DataSource { message RetryPolicy { option (solo.io.udpa.annotations.versioning).previous_message_type = ".solo.io.envoy.api.v2.core.RetryPolicy"; - // Specifies parameters that control :ref:`retry backoff strategy `. + // Specifies parameters that control retry backoff strategy. // This parameter is optional, in which case the default base interval is 1000 milliseconds. The // default maximum interval is 10 times the base interval. BackoffStrategy retry_back_off = 1; @@ -366,8 +365,8 @@ message AsyncDataSource { } } -// Configuration for transport socket in :ref:`listeners ` and -// :ref:`clusters `. If the configuration is +// Configuration for transport socket in listeners and +// clusters. If the configuration is // empty, a default transport socket implementation and configuration will be // chosen based on the platform and existence of tls_context. message TransportSocket { @@ -391,10 +390,10 @@ message TransportSocket { // Runtime derived FractionalPercent with defaults for when the numerator or denominator is not // specified via a runtime key. // -// .. note:: +// **Note**: // // Parsing of the runtime key's data is implemented such that it may be represented as a -// :ref:`FractionalPercent ` proto represented as JSON/YAML +// FractionalPercent proto represented as JSON/YAML // and may also be represented as an integer with the assumption that the value is an integral // percentage out of 100. For instance, a runtime key lookup returning the value "42" would parse // as a `FractionalPercent` whose numerator is 42 and denominator is HUNDRED. @@ -421,5 +420,6 @@ message ControlPlane { option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/envoy/config/core/v3/event_service_config.proto b/api/gloo/gloo/external/envoy/config/core/v3/event_service_config.proto index 98a0193dc..476d3d4e6 100644 --- a/api/gloo/gloo/external/envoy/config/core/v3/event_service_config.proto +++ b/api/gloo/gloo/external/envoy/config/core/v3/event_service_config.proto @@ -29,5 +29,6 @@ message EventServiceConfig { option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/envoy/config/core/v3/extension.proto b/api/gloo/gloo/external/envoy/config/core/v3/extension.proto index 6c32034be..372b0e2e4 100644 --- a/api/gloo/gloo/external/envoy/config/core/v3/extension.proto +++ b/api/gloo/gloo/external/envoy/config/core/v3/extension.proto @@ -31,5 +31,6 @@ message TypedExtensionConfig { option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/envoy/config/core/v3/grpc_service.proto b/api/gloo/gloo/external/envoy/config/core/v3/grpc_service.proto index b3a1f51b8..39dcf1bef 100644 --- a/api/gloo/gloo/external/envoy/config/core/v3/grpc_service.proto +++ b/api/gloo/gloo/external/envoy/config/core/v3/grpc_service.proto @@ -33,9 +33,21 @@ message GrpcService { "solo.io.envoy.api.v2.core.GrpcService.EnvoyGrpc"; // The name of the upstream gRPC cluster. SSL credentials will be supplied - // in the :ref:`Cluster ` :ref:`transport_socket + // in the Cluster :ref:`transport_socket // `. string cluster_name = 1 [(validate.rules).string = {min_bytes: 1}]; + + // The `:authority` header in the grpc request. If this field is not set, the authority header value will be `cluster_name`. + // Note that this authority does not override the SNI. The SNI is provided by the transport socket of the cluster. + string authority = 2 + [(validate.rules).string = + {min_len: 0 max_bytes: 16384 well_known_regex: HTTP_HEADER_VALUE strict: false}]; + + // Indicates the retry policy for re-establishing the gRPC stream + // This field is optional. If max interval is not provided, it will be set to ten times the provided base interval. + // Currently only supported for xDS gRPC streams. + // If not set, xDS gRPC streams default base interval:500ms, maximum interval:30s will be applied. + RetryPolicy retry_policy = 3; } // [#next-free-field: 9] @@ -125,7 +137,7 @@ message GrpcService { // Security token service configuration that allows Google gRPC to // fetch security token from an OAuth 2.0 authorization server. - // See https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16 and + // See https://datatracker.ietf.org/doc/html/draft-ietf-oauth-token-exchange-16 and // https://github.com/grpc/grpc/pull/19587. // [#next-free-field: 10] message StsService { @@ -197,7 +209,7 @@ message GrpcService { MetadataCredentialsFromPlugin from_plugin = 6; // Custom security token service which implements OAuth 2.0 token exchange. - // https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16 + // https://datatracker.ietf.org/doc/html/draft-ietf-oauth-token-exchange-16 // See https://github.com/grpc/grpc/pull/19587. StsService sts_service = 7; } @@ -221,15 +233,13 @@ message GrpcService { map args = 1; } - // The target URI when using the `Google C++ gRPC client - // `_. SSL credentials will be supplied in - // :ref:`channel_credentials `. + // The target URI when using the [Google C++ gRPC client](https://github.com/grpc/grpc). SSL credentials will be supplied in + // channel_credentials. string target_uri = 1 [(validate.rules).string = {min_bytes: 1}]; ChannelCredentials channel_credentials = 2; - // A set of call credentials that can be composed with `channel credentials - // `_. + // A set of call credentials that can be composed with [channel credentials](https://grpc.io/docs/guides/auth.html#credential-types). repeated CallCredentials call_credentials = 3; // The human readable prefix to use when emitting statistics for the gRPC @@ -270,7 +280,7 @@ message GrpcService { // documentation for discussion on gRPC client selection. EnvoyGrpc envoy_grpc = 1; - // `Google C++ gRPC client `_ + // [Google C++ gRPC client](https://github.com/grpc/grpc) // See the :ref:`gRPC services overview ` // documentation for discussion on gRPC client selection. GoogleGrpc google_grpc = 2; @@ -282,11 +292,12 @@ message GrpcService { // Additional metadata to include in streams initiated to the GrpcService. // This can be used for scenarios in which additional ad hoc authorization - // headers (e.g. ``x-foo-bar: baz-key``) are to be injected. + // headers (e.g. `x-foo-bar: baz-key`) are to be injected. repeated HeaderValue initial_metadata = 5; } option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/envoy/config/core/v3/health_check.proto b/api/gloo/gloo/external/envoy/config/core/v3/health_check.proto index 7f310064a..ef62d9ff7 100644 --- a/api/gloo/gloo/external/envoy/config/core/v3/health_check.proto +++ b/api/gloo/gloo/external/envoy/config/core/v3/health_check.proto @@ -24,9 +24,9 @@ option java_multiple_files = true; option (solo.io.udpa.annotations.file_status).package_version_status = ACTIVE; // [#protodoc-title: Health check] -// * Health checking :ref:`architecture overview `. +// * Health checking architecture overview. // * If health checking is configured for a cluster, additional statistics are emitted. They are -// documented :ref:`here `. +// documented here. // Endpoint health status. enum HealthStatus { @@ -40,9 +40,9 @@ enum HealthStatus { UNHEALTHY = 2; // Connection draining in progress. E.g., - // ``_ + // https://aws.amazon.com/blogs/aws/elb-connection-draining-remove-instances-from-service-with-care/ // or - // ``_. + // https://cloud.google.com/compute/docs/load-balancing/enabling-connection-draining. // This is interpreted by Envoy as *UNHEALTHY*. DRAINING = 3; @@ -86,7 +86,7 @@ message HealthCheck { // The value of the host header in the HTTP health check request. If // left empty (default value), the name of the cluster this health check is associated // with will be used. The host header can be customized for a specific endpoint by setting the - // :ref:`hostname ` field. + // hostname field. string host = 1 [(validate.rules).string = {well_known_regex: HTTP_HEADER_VALUE strict: false}]; // Specifies the HTTP path that will be requested during health checking. For example @@ -116,7 +116,7 @@ message HealthCheck { // Specifies a list of HTTP response statuses considered healthy. If provided, replaces default // 200-only policy - 200 must be included explicitly as needed. Ranges follow half-open - // semantics of :ref:`Int64Range `. The start and end of each + // semantics of Int64Range. The start and end of each // range are required. Only statuses in the range [100, 600) are allowed. repeated type.v3.Int64Range expected_statuses = 9; @@ -151,32 +151,29 @@ message HealthCheck { option (solo.io.udpa.annotations.versioning).previous_message_type = ".solo.io.envoy.api.v2.core.HealthCheck.RedisHealthCheck"; - // If set, optionally perform ``EXISTS `` instead of ``PING``. A return value + // If set, optionally perform `EXISTS ` instead of `PING`. A return value // from Redis of 0 (does not exist) is considered a passing healthcheck. A return value other // than 0 is considered a failure. This allows the user to mark a Redis instance for maintenance // by setting the specified key to any value and waiting for traffic to drain. string key = 1; } - // `grpc.health.v1.Health - // `_-based - // healthcheck. See `gRPC doc `_ + // [grpc.health.v1.Health](https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto)-based + // healthcheck. See [gRPC doc](https://github.com/grpc/grpc/blob/master/doc/health-checking.md) // for details. message GrpcHealthCheck { option (solo.io.udpa.annotations.versioning).previous_message_type = ".solo.io.envoy.api.v2.core.HealthCheck.GrpcHealthCheck"; // An optional service name parameter which will be sent to gRPC service in - // `grpc.health.v1.HealthCheckRequest - // `_. - // message. See `gRPC health-checking overview - // `_ for more information. + // [grpc.health.v1.HealthCheckRequest](https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto#L20). + // message. See [gRPC health-checking overview](https://github.com/grpc/grpc/blob/master/doc/health-checking.md) for more information. string service_name = 1; // The value of the :authority header in the gRPC health check request. If // left empty (default value), the name of the cluster this health check is associated // with will be used. The authority header can be customized for a specific endpoint by setting - // the :ref:`hostname ` field. + // the hostname field. string authority = 2 [(validate.rules).string = {well_known_regex: HTTP_HEADER_VALUE strict: false}]; } @@ -311,7 +308,7 @@ message HealthCheck { // The default value for "healthy edge interval" is the same as the default interval. google.protobuf.Duration healthy_edge_interval = 16 [(validate.rules).duration = {gt {}}]; - // Specifies the path to the :ref:`health check event log `. + // Specifies the path to the health check event log. // If empty, no event log will be written. string event_log_path = 17; @@ -329,7 +326,7 @@ message HealthCheck { TlsOptions tls_options = 21; // Optional key/value pairs that will be used to match a transport socket from those specified in the cluster's - // :ref:`tranport socket matches `. + // tranport socket matches. // For example, the following match criteria // // .. code-block:: yaml @@ -350,12 +347,12 @@ message HealthCheck { // config: { ... } # tls socket configuration // // If this field is set, then for health checks it will supersede an entry of *envoy.transport_socket* in the - // :ref:`LbEndpoint.Metadata `. + // LbEndpoint.Metadata. // This allows using different transport socket capabilities for health checking versus proxying to the // endpoint. // // If the key/values pairs specified do not match any - // :ref:`transport socket matches `, + // transport socket matches, // the cluster's :ref:`transport socket ` // will be used for health check socket configuration. google.protobuf.Struct transport_socket_match_criteria = 23; @@ -363,5 +360,6 @@ message HealthCheck { option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/envoy/config/core/v3/http_uri.proto b/api/gloo/gloo/external/envoy/config/core/v3/http_uri.proto index bac2cae53..71bfd6082 100644 --- a/api/gloo/gloo/external/envoy/config/core/v3/http_uri.proto +++ b/api/gloo/gloo/external/envoy/config/core/v3/http_uri.proto @@ -31,8 +31,7 @@ message HttpUri { // Specify how `uri` is to be fetched. Today, this requires an explicit // cluster, but in the future we may support dynamic cluster creation or - // inline DNS resolution. See `issue - // `_. + // inline DNS resolution. See [issue](https://github.com/envoyproxy/envoy/issues/1606). oneof http_upstream_type { option (validate.required) = true; @@ -57,5 +56,6 @@ message HttpUri { option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/envoy/config/core/v3/proxy_protocol.proto b/api/gloo/gloo/external/envoy/config/core/v3/proxy_protocol.proto index 88388df64..636d20784 100644 --- a/api/gloo/gloo/external/envoy/config/core/v3/proxy_protocol.proto +++ b/api/gloo/gloo/external/envoy/config/core/v3/proxy_protocol.proto @@ -12,6 +12,24 @@ option (solo.io.udpa.annotations.file_status).package_version_status = ACTIVE; // [#protodoc-title: Proxy Protocol] +message ProxyProtocolPassThroughTLVs { + enum PassTLVsMatchType { + // Pass all TLVs. + INCLUDE_ALL = 0; + + // Pass specific TLVs defined in tlv_type. + INCLUDE = 1; + } + + // The strategy to pass through TLVs. Default is INCLUDE_ALL. + // If INCLUDE_ALL is set, all TLVs will be passed through no matter the tlv_type field. + PassTLVsMatchType match_type = 1; + + // The TLV types that are applied based on match_type. + // TLV type is defined as uint8_t in proxy protocol. See [the spec](https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt) for details. + repeated uint32 tlv_type = 2 [(validate.rules).repeated = {items {uint32 {lt: 256}}}]; +} + message ProxyProtocolConfig { enum Version { // PROXY protocol version 1. Human readable format. @@ -23,9 +41,13 @@ message ProxyProtocolConfig { // The PROXY protocol version to use. See https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt for details Version version = 1; + + // This config controls which TLVs can be passed to filter state if it is Proxy Protocol + // V2 header. If there is no setting for this field, no TLVs will be passed through. + ProxyProtocolPassThroughTLVs pass_through_tlvs = 2; } option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; - diff --git a/api/gloo/gloo/external/envoy/config/core/v3/socket_option.proto b/api/gloo/gloo/external/envoy/config/core/v3/socket_option.proto index 9453121a2..fb9d730b3 100644 --- a/api/gloo/gloo/external/envoy/config/core/v3/socket_option.proto +++ b/api/gloo/gloo/external/envoy/config/core/v3/socket_option.proto @@ -57,5 +57,6 @@ message SocketOption { option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/envoy/config/filter/http/gzip/v2/gzip.proto b/api/gloo/gloo/external/envoy/config/filter/http/gzip/v2/gzip.proto index d551132fa..2789b047d 100644 --- a/api/gloo/gloo/external/envoy/config/filter/http/gzip/v2/gzip.proto +++ b/api/gloo/gloo/external/envoy/config/filter/http/gzip/v2/gzip.proto @@ -11,6 +11,7 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/ import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "google/protobuf/wrappers.proto"; @@ -50,7 +51,7 @@ message Gzip { // higher latency, "SPEED" provides lower compression with minimum impact on response time. // "DEFAULT" provides an optimal result between speed and compression. This field will be set to // "DEFAULT" if not specified. - CompressionLevel.Enum compression_level = 3 [(validate.rules).enum = {defined_only: true}]; + Gzip.CompressionLevel.Enum compression_level = 3 [(validate.rules).enum = {defined_only: true}]; // A value used for selecting the zlib compression strategy which is directly related to the // characteristics of the content. Most of the time "DEFAULT" will be the best choice, though diff --git a/api/gloo/gloo/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.proto b/api/gloo/gloo/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.proto new file mode 100644 index 000000000..21d43853c --- /dev/null +++ b/api/gloo/gloo/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.proto @@ -0,0 +1,22 @@ +syntax = "proto3"; + +package envoy.config.filter.listener.tls_cipher_inspector.v3; + +import "udpa/annotations/status.proto"; + +option java_package = "io.envoyproxy.envoy.config.filter.listener.tls_cipher_inspector.v3"; +option java_outer_classname = "TlsCipherInspectorProto"; +option java_multiple_files = true; +option (solo.io.udpa.annotations.file_status).package_version_status = ACTIVE; + +// [#protodoc-title: TLS Cipher Inspector Filter] +// Allows parsing TLS Ciphers provided by the client hello +// [#extension: io.solo.envoy.filters.listener.tls_cipher_inspector] + +message TlsCipherInspector { +} +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/filter/listener/tls_cipher_inspector/v3"; +import "extproto/ext.proto"; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; +option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.proto b/api/gloo/gloo/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.proto new file mode 100644 index 000000000..cbf5834ff --- /dev/null +++ b/api/gloo/gloo/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.proto @@ -0,0 +1,33 @@ +syntax = "proto3"; + +import "validate/validate.proto"; +import "xds/type/matcher/v3/matcher.proto"; + +package envoy.config.matching.custom_matchers.server_name.v3; + +option java_package = "com.github.xds.type.matching.custom_matchers.server_name.v3"; +option java_outer_classname = "ServerNameMatcherProto"; +option java_multiple_files = true; + +// [#protodoc-title: Server name matcher] + +// Matches a specific server name provided in the client request against a set server names configured for the matcher to handle, with possible prefix wildcard. +message ServerNameMatcher { + // Specifies a list of server names and a match action. + message ServerNameSetMatcher { + // A non-empty set of server names. + // Server name can start with a wildcard prefix, e.g. "*.example.com". + repeated string server_names = 1 [(validate.rules).repeated = {min_items: 1}]; + + // Match action to apply when the input matches the server name. + xds.type.matcher.v3.Matcher.OnMatch on_match = 2; + } + + // Match server names. Order doesn't matter, the most specific server name is matched. + repeated ServerNameSetMatcher server_name_matchers = 1; +} +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/matching/custom_matchers/server_name/v3"; +import "extproto/ext.proto"; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; +option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.proto b/api/gloo/gloo/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.proto new file mode 100644 index 000000000..913fe555e --- /dev/null +++ b/api/gloo/gloo/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.proto @@ -0,0 +1,37 @@ +syntax = "proto3"; + +package envoy.config.matching.cipher_detection_input.v3; + +import "udpa/annotations/status.proto"; +import "validate/validate.proto"; + +option java_package = "io.envoyproxy.envoy.config.matching.cipher_detection_input.v3"; +option java_outer_classname = "NetworkInputsProto"; +option java_multiple_files = true; +option (solo.io.udpa.annotations.file_status).package_version_status = ACTIVE; + +// [#protodoc-title: Common network matching inputs] + +// Specifies that matching should be performed by the destination IP address. +// [#extension: io.solo.matching.inputs.cipher_detection_input] +message CipherDetectionInput { + // List of TLS ciphers to send to the passthrough cipher chain. Ciphers must + // be provided using their 16-bit value. These numbers of IANA standardised + // values for all possible cipher suites and can be found here: + // https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml + // + // example: to select the following cipher + // 0x00,0x3c TLS_RSA_WITH_AES_128_CBC_SHA256 + // this field should be set to 0x003c + repeated uint32 passthrough_ciphers = 1; + + // Terminating ciphers are those that should be considered as supported. + // If not specified, defaults to whatever the current envoy implementation + // finds to be the default set of ciphers. + repeated uint32 terminating_ciphers = 2; +} +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/matching/inputs/cipher_detection_input/v3"; +import "extproto/ext.proto"; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; +option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/envoy/config/route/v3/route_components.proto b/api/gloo/gloo/external/envoy/config/route/v3/route_components.proto index 5a0b94d0c..a895668f8 100644 --- a/api/gloo/gloo/external/envoy/config/route/v3/route_components.proto +++ b/api/gloo/gloo/external/envoy/config/route/v3/route_components.proto @@ -65,17 +65,17 @@ message VirtualHost { // virtual host. Wildcard hosts are supported in the suffix or prefix form. // // Domain search order: - // 1. Exact domain names: ``www.foo.com``. - // 2. Suffix domain wildcards: ``*.foo.com`` or ``*-bar.foo.com``. - // 3. Prefix domain wildcards: ``foo.*`` or ``foo-*``. - // 4. Special wildcard ``*`` matching any domain. + // 1. Exact domain names: `www.foo.com`. + // 2. Suffix domain wildcards: `*.foo.com` or `*-bar.foo.com`. + // 3. Prefix domain wildcards: `foo.*` or `foo-*`. + // 4. Special wildcard `*` matching any domain. // - // .. note:: + // **Note**: // // The wildcard will not match the empty string. - // e.g. ``*-bar.foo.com`` will match ``baz-bar.foo.com`` but not ``-bar.foo.com``. + // e.g. `*-bar.foo.com` will match `baz-bar.foo.com` but not `-bar.foo.com`. // The longest wildcards match first. - // Only a single virtual host in the entire route configuration can match on ``*``. A domain + // Only a single virtual host in the entire route configuration can match on `*`. A domain // must be unique across all virtual hosts or the config will fail to load. // // Domains cannot contain control characters. This is validated by the well_known_regex HTTP_HEADER_VALUE. @@ -168,7 +168,7 @@ message VirtualHost { // [#not-implemented-hide:] // Specifies the configuration for retry policy extension. Note that setting a route level entry // will take precedence over this config and it'll be treated independently (e.g.: values are not - // inherited). :ref:`Retry policy ` should not be + // inherited). Retry policy should not be // set if this field is used. google.protobuf.Any retry_policy_typed_config = 20; @@ -193,7 +193,7 @@ message FilterAction { // A route is both a specification of how to match a request as well as an indication of what to do // next (e.g., redirect, forward, rewrite, etc.). // -// .. attention:: +// **Attention**: // // Envoy supports routing on HTTP method via :ref:`header matching // `. @@ -244,7 +244,7 @@ message Route { // The typed_per_filter_config field can be used to provide route-specific // configurations for filters. The key should match the filter name, such as // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter - // specific; see the :ref:`HTTP filter documentation ` for + // specific; see the HTTP filter documentation for // if and how it is utilized. map typed_per_filter_config = 13; @@ -268,7 +268,7 @@ message Route { // headers from the enclosing :ref:`envoy_api_msg_config.route.v3.VirtualHost` and // :ref:`envoy_api_msg_config.route.v3.RouteConfiguration`. For more information, including // details on header value syntax, see the documentation on - // :ref:`custom request headers `. + // custom request headers. repeated core.v3.HeaderValueOption response_headers_to_add = 10 [(validate.rules).repeated = {max_items: 1000}]; @@ -286,7 +286,7 @@ message Route { google.protobuf.UInt32Value per_request_buffer_limit_bytes = 16; } -// Compared to the :ref:`cluster ` field that specifies a +// Compared to the cluster field that specifies a // single upstream cluster as the target of a request, the :ref:`weighted_clusters // ` option allows for specification of // multiple upstream clusters along with weights that indicate the percentage of @@ -305,7 +305,7 @@ message WeightedCluster { reserved "per_filter_config"; // Name of the upstream cluster. The cluster must exist in the - // :ref:`cluster manager configuration `. + // cluster manager configuration. string name = 1 [(validate.rules).string = {min_bytes: 1}]; // An integer between 0 and :ref:`total_weight @@ -317,7 +317,7 @@ message WeightedCluster { // Optional endpoint metadata match criteria used by the subset load balancer. Only endpoints in // the upstream cluster with metadata matching what is set in this field will be considered for // load balancing. Note that this will be merged with what's provided in - // :ref:`RouteAction.metadata_match `, with + // RouteAction.metadata_match, with // values here taking precedence. The filter name should be specified as *envoy.lb*. core.v3.Metadata metadata_match = 3; @@ -455,7 +455,7 @@ message RouteMatch { // code/config deploys. Refer to the :ref:`traffic shifting // ` docs for additional documentation. // - // .. note:: + // **Note**: // // Parsing this field is implemented such that the runtime key's data may be represented // as a FractionalPercent proto represented as JSON/YAML and may also be represented as an @@ -520,10 +520,10 @@ message CorsPolicy { oneof enabled_specifier { // Specifies the % of requests for which the CORS filter is enabled. // - // If neither ``enabled``, ``filter_enabled``, nor ``shadow_enabled`` are specified, the CORS + // If neither `enabled`, `filter_enabled`, nor `shadow_enabled` are specified, the CORS // filter will be enabled for 100% of the requests. // - // If :ref:`runtime_key ` is + // If runtime_key is // specified, Envoy will lookup the runtime key to get the percentage of requests to filter. core.v3.RuntimeFractionalPercent filter_enabled = 9; } @@ -531,10 +531,10 @@ message CorsPolicy { // Specifies the % of requests for which the CORS policies will be evaluated and tracked, but not // enforced. // - // This field is intended to be used when ``filter_enabled`` and ``enabled`` are off. One of those + // This field is intended to be used when `filter_enabled` and `enabled` are off. One of those // fields have to explicitly disable the filter in order for this setting to take effect. // - // If :ref:`runtime_key ` is specified, + // If runtime_key is specified, // Envoy will lookup the runtime key to get the percentage of requests for which it will evaluate // and track the request's *Origin* to determine if it's valid but will not enforce any policies. core.v3.RuntimeFractionalPercent shadow_enabled = 10; @@ -552,7 +552,7 @@ message RouteAction { NOT_FOUND = 1; } - // Configures :ref:`internal redirect ` behavior. + // Configures internal redirect behavior. // [#next-major-version: remove this definition - it's defined in the InternalRedirectPolicy message.] enum InternalRedirectAction { option deprecated = true; @@ -569,7 +569,7 @@ message RouteAction { // During shadowing, the host/authority header is altered such that *-shadow* is appended. This is // useful for logging. For example, *cluster1* becomes *cluster1-shadow*. // - // .. note:: + // **Note**: // // Shadowing will not be triggered if the primary cluster does not exist. message RequestMirrorPolicy { @@ -771,7 +771,7 @@ message RouteAction { // header is not found or the referenced cluster does not exist, Envoy will // return a 404 response. // - // .. attention:: + // **Attention**: // // Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1 // *Host* header. Thus, if attempting to match on *Host*, match on *:authority* instead. @@ -808,13 +808,13 @@ message RouteAction { // :ref:`regex_rewrite ` // may be specified. // - // .. attention:: + // **Attention**: // // Pay careful attention to the use of trailing slashes in the - // :ref:`route's match ` prefix value. + // route's match prefix value. // Stripping a prefix from a path requires multiple Routes to handle all cases. For example, // rewriting */prefix* to */* and */prefix/etc* to */etc* cannot be done in a single - // :ref:`Route `, as shown by the below config entries: + // Route, as shown by the below config entries: // // .. code-block:: yaml // @@ -844,22 +844,22 @@ message RouteAction { // Only one of :ref:`prefix_rewrite ` // or *regex_rewrite* may be specified. // - // Examples using Google's `RE2 `_ engine: + // Examples using Google's [RE2](https://github.com/google/re2) engine: // - // * The path pattern ``^/service/([^/]+)(/.*)$`` paired with a substitution - // string of ``\2/instance/\1`` would transform ``/service/foo/v1/api`` - // into ``/v1/api/instance/foo``. + // * The path pattern `^/service/([^/]+)(/.*)$` paired with a substitution + // string of `\2/instance/\1` would transform `/service/foo/v1/api` + // into `/v1/api/instance/foo`. // - // * The pattern ``one`` paired with a substitution string of ``two`` would - // transform ``/xxx/one/yyy/one/zzz`` into ``/xxx/two/yyy/two/zzz``. + // * The pattern `one` paired with a substitution string of `two` would + // transform `/xxx/one/yyy/one/zzz` into `/xxx/two/yyy/two/zzz`. // - // * The pattern ``^(.*?)one(.*)$`` paired with a substitution string of - // ``\1two\2`` would replace only the first occurrence of ``one``, - // transforming path ``/xxx/one/yyy/one/zzz`` into ``/xxx/two/yyy/one/zzz``. + // * The pattern `^(.*?)one(.*)$` paired with a substitution string of + // `\1two\2` would replace only the first occurrence of `one`, + // transforming path `/xxx/one/yyy/one/zzz` into `/xxx/two/yyy/one/zzz`. // - // * The pattern ``(?i)/xxx/`` paired with a substitution string of ``/yyy/`` - // would do a case-insensitive match and transform path ``/aaa/XxX/bbb`` to - // ``/aaa/yyy/bbb``. + // * The pattern `(?i)/xxx/` paired with a substitution string of `/yyy/` + // would do a case-insensitive match and transform path `/aaa/XxX/bbb` to + // `/aaa/yyy/bbb`. type.matcher.v3.RegexMatchAndSubstitute regex_rewrite = 32; oneof host_rewrite_specifier { @@ -876,10 +876,10 @@ message RouteAction { google.protobuf.BoolValue auto_host_rewrite = 7; // Indicates that during forwarding, the host header will be swapped with the content of given - // downstream or :ref:`custom ` header. + // downstream or custom header. // If header value is empty, host header is left intact. // - // .. attention:: + // **Attention**: // // Pay attention to the potential security implications of using this option. Provided header // must come from trusted source. @@ -892,12 +892,12 @@ message RouteAction { // processed and when the upstream response has been completely processed. A value of 0 will // disable the route's timeout. // - // .. note:: + // **Note**: // // This timeout includes all retries. See also // :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, // :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`, and the - // :ref:`retry overview `. + // retry overview. google.protobuf.Duration timeout = 8; // Specifies the idle timeout for the route. If not specified, there is no per-route idle timeout, @@ -935,7 +935,7 @@ message RouteAction { // Indicates that the route has request mirroring policies. repeated RequestMirrorPolicy request_mirror_policies = 30; - // Optionally specifies the :ref:`routing priority `. + // Optionally specifies the routing priority. core.v3.RoutingPriority priority = 11 [(validate.rules).enum = {defined_only: true}]; // Specifies a set of rate limit configurations that could be applied to the @@ -944,7 +944,7 @@ message RouteAction { // Specifies if the rate limit filter should include the virtual host rate // limits. By default, if the route configured rate limits, the virtual host - // :ref:`rate_limits ` are not applied to the + // rate_limits are not applied to the // request. google.protobuf.BoolValue include_vh_rate_limits = 14; @@ -966,24 +966,24 @@ message RouteAction { CorsPolicy cors = 17; // If present, and the request is a gRPC request, use the - // `grpc-timeout header `_, + // [grpc-timeout header](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md), // or its default value (infinity) instead of - // :ref:`timeout `, but limit the applied timeout + // timeout, but limit the applied timeout // to the maximum value specified here. If configured as 0, the maximum allowed timeout for // gRPC requests is infinity. If not configured at all, the `grpc-timeout` header is not used // and gRPC requests time out like any other requests using - // :ref:`timeout ` or its default. + // timeout or its default. // This can be used to prevent unexpected upstream request timeouts due to potentially long // time gaps between gRPC request and response in gRPC streaming mode. // - // .. note:: + // **Note**: // // If a timeout is specified using :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, it takes - // precedence over `grpc-timeout header `_, when + // precedence over [grpc-timeout header](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md), when // both are present. See also // :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, // :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`, and the - // :ref:`retry overview `. + // retry overview. google.protobuf.Duration max_grpc_timeout = 23; // If present, Envoy will adjust the timeout provided by the `grpc-timeout` header by subtracting @@ -1027,7 +1027,7 @@ message RouteAction { HedgePolicy hedge_policy = 27; } -// HTTP retry :ref:`architecture overview `. +// HTTP retry architecture overview. // [#next-free-field: 11] message RetryPolicy { option (solo.io.udpa.annotations.versioning).previous_message_type = "solo.io.envoy.api.v2.route.RetryPolicy"; @@ -1097,23 +1097,23 @@ message RetryPolicy { // same conditions documented for // :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms` apply. // - // .. note:: + // **Note**: // // If left unspecified, Envoy will use the global - // :ref:`route timeout ` for the request. - // Consequently, when using a :ref:`5xx ` based + // route timeout for the request. + // Consequently, when using a 5xx based // retry policy, a request that times out will not be retried as the total timeout budget // would have been exhausted. google.protobuf.Duration per_try_timeout = 3; // Specifies an implementation of a RetryPriority which is used to determine the // distribution of load across priorities used for retries. Refer to - // :ref:`retry plugin configuration ` for more details. + // retry plugin configuration for more details. RetryPriority retry_priority = 4; // Specifies a collection of RetryHostPredicates that will be consulted when selecting a host // for retries. If any of the predicates reject the host, host selection will be reattempted. - // Refer to :ref:`retry plugin configuration ` for more + // Refer to retry plugin configuration for more // details. repeated RetryHostPredicate retry_host_predicate = 5; @@ -1141,7 +1141,7 @@ message RetryPolicy { repeated HeaderMatcher retriable_request_headers = 10; } -// HTTP request hedging :ref:`architecture overview `. +// HTTP request hedging architecture overview. message HedgePolicy { option (solo.io.udpa.annotations.versioning).previous_message_type = "solo.io.envoy.api.v2.route.HedgePolicy"; @@ -1163,7 +1163,7 @@ message HedgePolicy { // Once a timed out request is retried due to per try timeout, the router // filter will ensure that it is not retried again even if the returned // response headers would otherwise be retried according the specified - // :ref:`RetryPolicy `. + // RetryPolicy. // Defaults to false. bool hedge_on_per_try_timeout = 3; } @@ -1233,10 +1233,10 @@ message RedirectAction { // should be swapped with this value. This option allows redirect URLs be dynamically created // based on the request. // - // .. attention:: + // **Attention**: // // Pay attention to the use of trailing slashes as mentioned in - // :ref:`RouteAction's prefix_rewrite `. + // RouteAction's prefix_rewrite. string prefix_rewrite = 5 [(validate.rules).string = {well_known_regex: HTTP_HEADER_VALUE strict: false}]; } @@ -1260,7 +1260,7 @@ message DirectResponseAction { // Specifies the content of the response body. If this setting is omitted, // no body is included in the generated response. // - // .. note:: + // **Note**: // // Headers can be specified using *response_headers_to_add* in the enclosing // :ref:`envoy_api_msg_config.route.v3.Route`, :ref:`envoy_api_msg_config.route.v3.RouteConfiguration` or @@ -1274,7 +1274,7 @@ message Decorator { // The operation name associated with the request matched to this route. If tracing is // enabled, this information will be used as the span name reported for this request. // - // .. note:: + // **Note**: // // For ingress (inbound) requests, or egress (outbound) responses, this value may be overridden // by the :ref:`x-envoy-decorator-operation @@ -1299,7 +1299,7 @@ message Tracing { // Target percentage of requests managed by this HTTP connection manager that will be randomly // selected for trace generation, if not requested by the client or not forced. This field is // a direct analog for the runtime variable 'tracing.random_sampling' in the - // :ref:`HTTP Connection Manager `. + // HTTP Connection Manager. // Default: 100% type.v3.FractionalPercent random_sampling = 2; @@ -1309,7 +1309,7 @@ message Tracing { // instance, setting client_sampling to 100% but overall_sampling to 1% will result in only 1% // of client requests with the appropriate headers to be force traced. This field is a direct // analog for the runtime variable 'tracing.global_enabled' in the - // :ref:`HTTP Connection Manager `. + // HTTP Connection Manager. // Default: 100% type.v3.FractionalPercent overall_sampling = 3; @@ -1332,9 +1332,9 @@ message Tracing { // statistics are perfect in the sense that they are emitted on the downstream // side such that they include network level failures. // -// Documentation for :ref:`virtual cluster statistics `. +// Documentation for virtual cluster statistics. // -// .. note:: +// **Note**: // // Virtual clusters are a useful tool, but we do not recommend setting up a virtual cluster for // every application endpoint. This is both not easily maintainable and as well the matching and @@ -1353,11 +1353,11 @@ message VirtualCluster { // Specifies the name of the virtual cluster. The virtual cluster name as well // as the virtual host name are used when emitting statistics. The statistics are emitted by the - // router filter and are documented :ref:`here `. + // router filter and are documented here. string name = 2 [(validate.rules).string = {min_bytes: 1}]; } -// Global rate limiting :ref:`architecture overview `. +// Global rate limiting architecture overview. message RateLimit { option (solo.io.udpa.annotations.versioning).previous_message_type = "solo.io.envoy.api.v2.route.RateLimit"; @@ -1372,7 +1372,7 @@ message RateLimit { // // ("source_cluster", "") // - // is derived from the :option:`--service-cluster` option. + // is derived from the `--service-cluster` option. message SourceCluster { option (solo.io.udpa.annotations.versioning).previous_message_type = "solo.io.envoy.api.v2.route.RateLimit.Action.SourceCluster"; @@ -1388,11 +1388,11 @@ message RateLimit { // the following :ref:`route table configuration ` // settings: // - // * :ref:`cluster ` indicates the upstream cluster + // * cluster indicates the upstream cluster // to route to. // * :ref:`weighted_clusters ` // chooses a cluster randomly from a set of clusters with attributed weight. - // * :ref:`cluster_header ` indicates which + // * cluster_header indicates which // header in the request contains the target cluster. message DestinationCluster { option (solo.io.udpa.annotations.versioning).previous_message_type = @@ -1426,7 +1426,7 @@ message RateLimit { } // The following descriptor entry is appended to the descriptor and is populated using the - // trusted address from :ref:`x-forwarded-for `: + // trusted address from x-forwarded-for. // // .. code-block:: cpp // @@ -1537,7 +1537,7 @@ message RateLimit { // applies to filters with the same stage number. The default stage number is // 0. // - // .. note:: + // **Note**: // // The filter supports a range of 0 - 10 inclusively for stage numbers. google.protobuf.UInt32Value stage = 1 [(validate.rules).uint32 = {lte: 10}]; @@ -1560,12 +1560,12 @@ message RateLimit { Override limit = 4; } -// .. attention:: +// **Attention**: // // Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1 *Host* // header. Thus, if attempting to match on *Host*, match on *:authority* instead. // -// .. attention:: +// **Attention**: // // To route on HTTP method, use the special HTTP/2 *:method* header. This works for both // HTTP/1 and HTTP/2 as Envoy normalizes headers. E.g., @@ -1577,7 +1577,7 @@ message RateLimit { // "exact_match": "POST" // } // -// .. attention:: +// **Attention**: // In the absence of any header match specifier, match will default to :ref:`present_match // `. i.e, a request that has the :ref:`name // ` header will match, regardless of the header's @@ -1644,7 +1644,7 @@ message HeaderMatcher { // // Examples: // - // * The regex ``\d{3}`` does not match the value *1234*, so it will match when inverted. + // * The regex `\d{3}` does not match the value *1234*, so it will match when inverted. // * The range [-10,0) will match the value -1, so it will not match when inverted. bool invert_match = 8; } @@ -1673,7 +1673,7 @@ message QueryParameterMatcher { } } -// HTTP Internal Redirect :ref:`architecture overview `. +// HTTP Internal Redirect architecture overview. message InternalRedirectPolicy { // An internal redirect is not handled, unless the number of previous internal redirects that a // downstream request has encountered is lower than this value. @@ -1702,5 +1702,6 @@ message InternalRedirectPolicy { option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/envoy/config/tap/output_sink/v3/grpc_output_sink.proto b/api/gloo/gloo/external/envoy/config/tap/output_sink/v3/grpc_output_sink.proto new file mode 100644 index 000000000..7417cce05 --- /dev/null +++ b/api/gloo/gloo/external/envoy/config/tap/output_sink/v3/grpc_output_sink.proto @@ -0,0 +1,22 @@ +syntax = "proto3"; + +package envoy.config.tap.output_sink.v3; + +option java_package = "io.envoyproxy.envoy.config.output_sink.tap.v3"; +option java_outer_classname = "GrpcOutputSinkProto"; +option java_multiple_files = true; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/config/tap/output_sink/v3"; + +import "validate/validate.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/grpc_service.proto"; + +// [#protodoc-title: GRPC Output Sink] +// An output sink for the TAP filter that writes to a GRPC socket +// [#extension: envoy.tap.sinks.solo.grpc_output_sink] + +// GRPC output sink definition +message GrpcOutputSink { + + // Location of the GRPC service to which output traces should be submitted + .solo.io.envoy.config.core.v3.GrpcService grpc_service = 1 [(validate.rules).message = {required: true}]; +} diff --git a/api/gloo/gloo/external/envoy/config/tap/output_sink/v3/http_output_sink.proto b/api/gloo/gloo/external/envoy/config/tap/output_sink/v3/http_output_sink.proto new file mode 100644 index 000000000..b6a9062d3 --- /dev/null +++ b/api/gloo/gloo/external/envoy/config/tap/output_sink/v3/http_output_sink.proto @@ -0,0 +1,22 @@ +syntax = "proto3"; + +package envoy.config.tap.output_sink.v3; + +option java_package = "io.envoyproxy.envoy.config.output_sink.tap.v3"; +option java_outer_classname = "HttpOutputSinkProto"; +option java_multiple_files = true; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/config/tap/output_sink/v3"; + +import "validate/validate.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/http_uri.proto"; + +// [#protodoc-title: HTTP Output Sink] +// An output sink for the TAP filter that writes to a HTTP service +// [#extension: envoy.tap.sinks.solo.http_output_sink] + +// HTTP output sink definition +message HttpOutputSink { + + // URI of the HTTP server to which output traces should be submitted + .solo.io.envoy.config.core.v3.HttpUri server_uri = 1 [(validate.rules).message = {required: true}]; +} diff --git a/api/gloo/gloo/external/envoy/config/trace/v3/datadog.proto b/api/gloo/gloo/external/envoy/config/trace/v3/datadog.proto index 97933326d..6c15c67c1 100644 --- a/api/gloo/gloo/external/envoy/config/trace/v3/datadog.proto +++ b/api/gloo/gloo/external/envoy/config/trace/v3/datadog.proto @@ -2,6 +2,9 @@ syntax = "proto3"; package solo.io.envoy.config.trace.v3; +import "google/protobuf/wrappers.proto"; +import "google/protobuf/duration.proto"; + import "udpa/annotations/migrate.proto"; import "udpa/annotations/status.proto"; import "udpa/annotations/versioning.proto"; @@ -17,6 +20,18 @@ option (solo.io.udpa.annotations.file_status).package_version_status = ACTIVE; // [#protodoc-title: Datadog tracer] +// Configuration for the Remote Configuration feature. +message DatadogRemoteConfig { + // Frequency at which new configuration updates are queried. + // If no value is provided, the default value is delegated to the Datadog tracing library. + google.protobuf.Duration polling_interval = 1; + + // Disabled remote config. + // This field does not exist in envoy's config but allow us to preserve the default behavior + // when upgrading to envoy v1.31 + google.protobuf.BoolValue disabled = 2; +} + // Configuration for the Datadog tracer. // [#extension: envoy.tracers.datadog] message DatadogConfig { @@ -35,9 +50,21 @@ message DatadogConfig { } // The name used for the service when traces are generated by envoy. - string service_name = 2 [(validate.rules).string = {min_len: 1}]; + google.protobuf.StringValue service_name = 2 [(validate.rules).string = {min_len: 1}]; + + // Optional hostname to use when sending spans to the collector_cluster. Useful for collectors + // that require a specific hostname. Defaults to collector_cluster above. + string collector_hostname = 4; + + // Configures remote configuration. + // Remote Configuration allows to configure the tracer from Datadog's user interface. + // This feature can drastically increase the number of connections to the Datadog Agent. + // Each tracer regularly polls for configuration updates, and the number of tracers is the product + // of the number of listeners and worker threads. + DatadogRemoteConfig remote_config = 5; } option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/envoy/config/trace/v3/opencensus.proto b/api/gloo/gloo/external/envoy/config/trace/v3/opencensus.proto new file mode 100644 index 000000000..08ba5d011 --- /dev/null +++ b/api/gloo/gloo/external/envoy/config/trace/v3/opencensus.proto @@ -0,0 +1,130 @@ +syntax = "proto3"; + +package solo.io.envoy.config.trace.v3; + +import "udpa/annotations/migrate.proto"; +import "udpa/annotations/status.proto"; +import "udpa/annotations/versioning.proto"; +import "validate/validate.proto"; + +option java_package = "io.envoyproxy.solo.io.envoy.config.trace.v3"; +option java_outer_classname = "OpenCensusProto"; +option java_multiple_files = true; +option (solo.io.udpa.annotations.file_migrate).move_to_package = "envoy.extensions.tracers.opencensus.v4alpha"; +option (solo.io.udpa.annotations.file_status).package_version_status = ACTIVE; + +// [#protodoc-title: OpenCensus tracer] + +// Configuration for the OpenCensus tracer. +// +// The OpenCensus tracer is capable of reporting metadata to a collector using W3C-standard Trace Context: https://www.w3.org/TR/trace-context/ +// WARNING: users should take care to note that this plugin has a serious limitation that can cause a configuration freeze of Envoy's dynamic listeners. This plugin can be initialised once after Envoy has started. In order to change this plugin's configuration, users must first apply the new configuration, and then restart Envoy. Users should also be aware that once the new configuration is applied, Envoy will reject any changes to its dynamic listeners configuration until after it has been restarted. +// [#extension: envoy.tracers.opencensus] +message OpenCensusConfig { + option (solo.io.udpa.annotations.versioning).previous_message_type = + "envoy.config.trace.v2.OpenCensusConfig"; + + // Configuration of when to submit traces to the collector. + // See https://github.com/census-instrumentation/opencensus-proto/blob/3619b5dda8bff26ff1974714c24de8f6d4953811/src/opencensus/proto/trace/v1/trace_config.proto#L29 for full documentation + TraceConfig trace_config = 1; + + // Enables the OpenCensus agent if set to true. + bool ocagent_exporter_enabled = 2; + + message OcagentGrpcAddress { + // URI of the target address + string target_uri = 1; + // Prefix for statistical measurements + string stat_prefix = 2; + } + + // Upstream to which trace data should be sent + oneof ocagent_address { + // Send to upstream over http + string http_address = 3; + // Send to upstream over GRPC + OcagentGrpcAddress grpc_address = 4; + } + + enum TraceContext { + // No-op default, no trace context is utilized. + NONE = 0; + + // W3C Trace-Context format "traceparent:" header. + TRACE_CONTEXT = 1; + + // Binary "grpc-trace-bin:" header. + GRPC_TRACE_BIN = 2; + + // "X-Cloud-Trace-Context:" header. + CLOUD_TRACE_CONTEXT = 3; + + // X-B3-* headers. + B3 = 4; + } + + // List of incoming trace context headers to accept. First one found wins + repeated TraceContext incoming_trace_context = 5; + + // List of outgoing trace context headers we will produce + repeated TraceContext outgoing_trace_context = 6; +} + +message TraceConfig { + + oneof sampler { + ProbabilitySampler probability_sampler = 1; + ConstantSampler constant_sampler = 2; + RateLimitingSampler rate_limiting_sampler = 3; + } + + // The global default max number of attributes per span. + int64 max_number_of_attributes = 4; + + // The global default max number of annotation events per span. + int64 max_number_of_annotations = 5; + + // The global default max number of message events per span. + int64 max_number_of_message_events = 6; + + // The global default max number of link entries per span. + int64 max_number_of_links = 7; +} + +// Sampler that tries to uniformly sample traces with a given probability. +// The probability of sampling a trace is equal to that of the specified probability. +message ProbabilitySampler { + + // The desired probability of sampling. Must be within [0.0, 1.0]. + double samplingProbability = 1; +} + +// Sampler that always makes a constant decision on span sampling. +message ConstantSampler { + + // How spans should be sampled: + // - Always off + // - Always on + // - Always follow the parent Span's decision (off if no parent). + enum ConstantDecision { + ALWAYS_OFF = 0; + ALWAYS_ON = 1; + ALWAYS_PARENT = 2; + } + ConstantDecision decision = 1; +} + +// Sampler that tries to sample with a rate per time window. +message RateLimitingSampler { + + // Rate per second. + int64 qps = 1; +} + +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3"; +import "extproto/ext.proto"; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; +option (extproto.equal_all) = true; + + diff --git a/api/gloo/gloo/external/envoy/config/trace/v3/opentelemetry.proto b/api/gloo/gloo/external/envoy/config/trace/v3/opentelemetry.proto new file mode 100644 index 000000000..a75e350cc --- /dev/null +++ b/api/gloo/gloo/external/envoy/config/trace/v3/opentelemetry.proto @@ -0,0 +1,67 @@ +syntax = "proto3"; + +package solo.io.envoy.config.trace.v3; + +import "udpa/annotations/migrate.proto"; +import "udpa/annotations/status.proto"; +import "udpa/annotations/versioning.proto"; +import "validate/validate.proto"; +import "google/protobuf/wrappers.proto"; + +import "github.com/solo-io/solo-kit/api/v1/ref.proto"; + +option java_package = "io.envoyproxy.solo.io.envoy.config.trace.v3"; +option java_outer_classname = "OpentelemetryProto"; +option java_multiple_files = true; +option (solo.io.udpa.annotations.file_migrate).move_to_package = "envoy.extensions.tracers.opentelemetry.v4alpha"; +option (solo.io.udpa.annotations.file_status).package_version_status = ACTIVE; + +// [#protodoc-title: OpenTelemetry tracer] + +// Configuration for the OpenTelemetry tracer. +// [#extension: envoy.tracers.opentelemetry] +message OpenTelemetryConfig { + option (solo.io.udpa.annotations.versioning).previous_message_type = + "envoy.config.trace.v2.OpenTelemetryConfig"; + + // The cluster to use for submitting traces to the OpenTelemetry agent. + oneof collector_cluster { + // The upstream to use for submitting traces to the OpenTelemetry agent. + core.solo.io.ResourceRef collector_upstream_ref = 1; + // The name of the Envoy cluster to use for submitting traces to the + // OpenTelemetry agent + string cluster_name = 2; + } + + // Optional. If set, the service name will be used as the service name in the trace. + // If this is not set it will be automatically set to the name of the + // listener + the namespace of the Gateway object + string service_name = 3; + + // Optional. Current only gRPC is supported, but are intentionally using a oneof + // to allow for future support of HTTP. This structure matches Envoy's. + oneof service_type { + // Optional gRPC transport options + GrpcService grpc_service = 4; + } + + // Optional. The maximum number of spans that can be cached. + // If this buffer is exceeded, Envoy may begin dropping traces before they are sent to the collector. + // https://opentelemetry.io/docs/specs/otel/performance/ + // Users should tune the setting based on their environment's expected telemetry volume and + // decide their preferences on resource usage vs. data loss. + // If not specified, the default is 1024. + google.protobuf.UInt32Value max_cache_size = 5; +} + +message GrpcService { + // Set the authority header when calling the gRPC service. + string authority = 1; +} + +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3"; +import "extproto/ext.proto"; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; +option (extproto.equal_all) = true; + diff --git a/api/gloo/gloo/external/envoy/config/trace/v3/zipkin.proto b/api/gloo/gloo/external/envoy/config/trace/v3/zipkin.proto index 94c571da7..047ea7183 100644 --- a/api/gloo/gloo/external/envoy/config/trace/v3/zipkin.proto +++ b/api/gloo/gloo/external/envoy/config/trace/v3/zipkin.proto @@ -63,17 +63,18 @@ message ZipkinConfig { // Determines whether a 128bit trace id will be used when creating a new // trace instance. The default value is false, which will result in a 64 bit trace id being used. - bool trace_id_128bit = 3; + google.protobuf.BoolValue trace_id_128bit = 3; // Determines whether client and server spans will share the same span context. // The default value is true. google.protobuf.BoolValue shared_span_context = 4; - // Determines the selected collector endpoint version. By default, the ``HTTP_JSON_V1`` will be + // Determines the selected collector endpoint version. By default, the `HTTP_JSON_V1` will be // used. CollectorEndpointVersion collector_endpoint_version = 5; } option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/envoy/extensions/aws/filter.proto b/api/gloo/gloo/external/envoy/extensions/aws/filter.proto index c957e0818..72b4dfbf3 100644 --- a/api/gloo/gloo/external/envoy/extensions/aws/filter.proto +++ b/api/gloo/gloo/external/envoy/extensions/aws/filter.proto @@ -13,11 +13,14 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/ import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "google/protobuf/wrappers.proto"; import "google/protobuf/duration.proto"; import "validate/validate.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/extension.proto"; + /// [#protodoc-title: AWS Lambda] // AWS Lambda @@ -35,6 +38,24 @@ message AWSLambdaPerRoute { // Optional default body if the body is empty. By default on default // body is used if the body empty, and an empty body will be sent upstream. google.protobuf.StringValue empty_body_override = 4; + + // Deprecated. Use transformer_config to specify an AWS Lambda response transformer instead. + // Unwrap responses as AWS ALB does. + // Expects json lambda responses to construct response. + // Intended to ease migration when previously using alb to invoke Lambdas. + // When set on a route the filter will not stream data on the encoding step. + // For further information see below link for the expected format when true. + // https://docs.aws.amazon.com/elasticloadbalancing/latest/application/lambda-functions.html + // Defaults to false. + bool unwrap_as_alb = 5 [deprecated = true]; + + // transformer configuration used to process response data + // cannot be configured simultaneously with unwrap_as_alb + .solo.io.envoy.config.core.v3.TypedExtensionConfig transformer_config = 6; + + // This is a transformer config, as defined in api.envoy.config.filter.http.transformation.v2 + // used to process request data. + .solo.io.envoy.config.core.v3.TypedExtensionConfig request_transformer_config = 7; } message AWSLambdaProtocolExtension { @@ -50,6 +71,8 @@ message AWSLambdaProtocolExtension { string session_token = 5; // The role_arn to use when generating credentials for the mounted projected SA token string role_arn = 6; + // Optional override to disable role chaining; + bool disable_role_chaining = 7; } message AWSLambdaConfig { @@ -93,6 +116,22 @@ message AWSLambdaConfig { string uri = 2 [ (validate.rules).string.min_bytes = 1 ]; // timeout for the request google.protobuf.Duration timeout = 3; + // Region for the sts endpoint. Defaults to us-east-1 + string region = 4; } + // Send downstream path and method as `x-envoy-original-path` and + // `x-envoy-original-method` headers on the request to AWS lambda. + // Defaults to false. + bool propagate_original_routing = 3; + + // Sets cadence for refreshing credentials for Service Account. + // Does nothing if Service account is not set. + // Does not affect the default filewatch for service account only augments it. + // Defaults to not refreshing on time period. Suggested is 15 minutes. + google.protobuf.Duration credential_refresh_delay = 4; } + +message ApiGatewayTransformation { +} + diff --git a/api/gloo/gloo/external/envoy/extensions/cache/grpc/config.proto b/api/gloo/gloo/external/envoy/extensions/cache/grpc/config.proto new file mode 100644 index 000000000..eeb1c217a --- /dev/null +++ b/api/gloo/gloo/external/envoy/extensions/cache/grpc/config.proto @@ -0,0 +1,32 @@ +syntax = "proto3"; + +package envoy.extensions.cache.grpc.v2; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/cache/grpc"; + +option java_package = "io.envoyproxy.envoy.extensions.cache.grpc.v2"; +option java_outer_classname = "GrpcCacheConfigProto"; +option java_multiple_files = true; + + + +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/base.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/grpc_service.proto"; +import "udpa/annotations/status.proto"; + + +import "google/protobuf/duration.proto"; +import "validate/validate.proto"; + +option (solo.io.udpa.annotations.file_status).package_version_status = ACTIVE; + +// [#protodoc-title: Cache] + +// [#proto-status: experimental] +message GrpcCacheConfig { + + // A GRPC service: this maps exactly to envoy GRPC service defintions + .solo.io.envoy.config.core.v3.GrpcService service = 1 [(validate.rules).message = {required: true}]; + + // Connection timeout for retrieval from cache + google.protobuf.Duration timeout = 2; +} diff --git a/api/gloo/gloo/external/envoy/extensions/filters/http/buffer/v3/buffer.proto b/api/gloo/gloo/external/envoy/extensions/filters/http/buffer/v3/buffer.proto index 3e3c16487..ad25a4207 100644 --- a/api/gloo/gloo/external/envoy/extensions/filters/http/buffer/v3/buffer.proto +++ b/api/gloo/gloo/external/envoy/extensions/filters/http/buffer/v3/buffer.proto @@ -20,9 +20,10 @@ option java_multiple_files = true; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; // [#protodoc-title: Buffer] -// Buffer :ref:`configuration overview `. +// Buffer configuration overview. // [#extension: envoy.filters.http.buffer] message Buffer { diff --git a/api/gloo/gloo/external/envoy/extensions/filters/http/csrf/v3/csrf.proto b/api/gloo/gloo/external/envoy/extensions/filters/http/csrf/v3/csrf.proto index db8cc6ff9..0a1570030 100644 --- a/api/gloo/gloo/external/envoy/extensions/filters/http/csrf/v3/csrf.proto +++ b/api/gloo/gloo/external/envoy/extensions/filters/http/csrf/v3/csrf.proto @@ -1,4 +1,4 @@ -// copied from https://github.com/envoyproxy/envoy/blob/master/api/envoy/extensions/filters/http/csrf/v3/csrf.proto +// copied from https://github.com/envoyproxy/envoy/blob/main/api/envoy/extensions/filters/http/csrf/v3/csrf.proto syntax = "proto3"; @@ -20,9 +20,10 @@ option java_multiple_files = true; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; // [#protodoc-title: CSRF] -// Cross-Site Request Forgery :ref:`configuration overview `. +// Cross-Site Request Forgery configuration overview. // [#extension: envoy.filters.http.csrf] // CSRF filter config. @@ -30,10 +31,10 @@ message CsrfPolicy { // Specifies the % of requests for which the CSRF filter is enabled. // - // If :ref:`runtime_key ` is specified, + // If runtime_key is specified, // Envoy will lookup the runtime key to get the percentage of requests to filter. // - // .. note:: + // **Note**: // // This field defaults to 100/:ref:`HUNDRED // `. @@ -42,9 +43,9 @@ message CsrfPolicy { // Specifies that CSRF policies will be evaluated and tracked, but not enforced. // - // This is intended to be used when ``filter_enabled`` is off and will be ignored otherwise. + // This is intended to be used when `filter_enabled` is off and will be ignored otherwise. // - // If :ref:`runtime_key ` is specified, + // If runtime_key is specified, // Envoy will lookup the runtime key to get the percentage of requests for which it will evaluate // and track the request's *Origin* and *Destination* to determine if it's valid, but will not // enforce any policies. @@ -54,6 +55,6 @@ message CsrfPolicy { // the destination origin. // // More information on how this can be configured via runtime can be found - // :ref:`here `. + // here. repeated type.matcher.v3.StringMatcher additional_origins = 3; } \ No newline at end of file diff --git a/api/gloo/gloo/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.proto b/api/gloo/gloo/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.proto new file mode 100644 index 000000000..259d0f973 --- /dev/null +++ b/api/gloo/gloo/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.proto @@ -0,0 +1,86 @@ +// copied from https://github.com/envoyproxy/envoy/blob/ad89a587aa0177bfdad6b5c968a6aead5d9be7a4/api/envoy/extensions/filters/http/ext_proc/v3/processing_mode.proto + +syntax = "proto3"; + +// manually updated pkg +package solo.io.envoy.extensions.filters.http.ext_proc.v3; + +import "udpa/annotations/status.proto"; +import "validate/validate.proto"; + +option java_package = "io.envoyproxy.envoy.extensions.filters.http.ext_proc.v3"; +option java_outer_classname = "ProcessingModeProto"; +option java_multiple_files = true; + +// manually updated go_package +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/ext_proc/v3"; + +option (udpa.annotations.file_status).package_version_status = ACTIVE; + +// manually added extproto +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + +// [#protodoc-title: External Processing Filter] +// External Processing Filter Processing Mode +// [#extension: envoy.filters.http.ext_proc] + +// This configuration describes which parts of an HTTP request and +// response are sent to a remote server and how they are delivered. + +// [#next-free-field: 7] +message ProcessingMode { + // Control how headers and trailers are handled + enum HeaderSendMode { + // The default HeaderSendMode depends on which part of the message is being + // processed. By default, request and response headers are sent, + // while trailers are skipped. + DEFAULT = 0; + + // Send the header or trailer. + SEND = 1; + + // Do not send the header or trailer. + SKIP = 2; + } + + // Control how the request and response bodies are handled + enum BodySendMode { + // Do not send the body at all. This is the default. + NONE = 0; + + // Stream the body to the server in pieces as they arrive at the + // proxy. + STREAMED = 1; + + // Buffer the message body in memory and send the entire body at once. + // If the body exceeds the configured buffer limit, then the + // downstream system will receive an error. + BUFFERED = 2; + + // Buffer the message body in memory and send the entire body in one + // chunk. If the body exceeds the configured buffer limit, then the body contents + // up to the buffer limit will be sent. + BUFFERED_PARTIAL = 3; + } + + // How to handle the request header. Default is "SEND". + HeaderSendMode request_header_mode = 1 [(validate.rules).enum = {defined_only: true}]; + + // How to handle the response header. Default is "SEND". + HeaderSendMode response_header_mode = 2 [(validate.rules).enum = {defined_only: true}]; + + // How to handle the request body. Default is "NONE". + BodySendMode request_body_mode = 3 [(validate.rules).enum = {defined_only: true}]; + + // How do handle the response body. Default is "NONE". + BodySendMode response_body_mode = 4 [(validate.rules).enum = {defined_only: true}]; + + // How to handle the request trailers. Default is "SKIP". + HeaderSendMode request_trailer_mode = 5 [(validate.rules).enum = {defined_only: true}]; + + // How to handle the response trailers. Default is "SKIP". + HeaderSendMode response_trailer_mode = 6 [(validate.rules).enum = {defined_only: true}]; +} diff --git a/api/gloo/gloo/external/envoy/extensions/filters/http/jwt_authn/v3/config.proto b/api/gloo/gloo/external/envoy/extensions/filters/http/jwt_authn/v3/config.proto index 2881daa9d..82bfcce70 100644 --- a/api/gloo/gloo/external/envoy/extensions/filters/http/jwt_authn/v3/config.proto +++ b/api/gloo/gloo/external/envoy/extensions/filters/http/jwt_authn/v3/config.proto @@ -21,14 +21,14 @@ option java_multiple_files = true; option (udpa.annotations.file_status).package_version_status = ACTIVE; // [#protodoc-title: JWT Authentication] -// JWT Authentication :ref:`configuration overview `. +// JWT Authentication configuration overview. // [#extension: envoy.filters.http.jwt_authn] // Please see following for JWT authentication flow: // -// * `JSON Web Token (JWT) `_ -// * `The OAuth 2.0 Authorization Framework `_ -// * `OpenID Connect `_ +// * [JSON Web Token (JWT)](https://datatracker.ietf.org/doc/html/rfc7519) +// * [The OAuth 2.0 Authorization Framework](https://datatracker.ietf.org/doc/html/rfc6749) +// * [OpenID Connect](http://openid.net/connect) // // A JwtProvider message specifies how a JSON Web Token (JWT) can be verified. It specifies: // @@ -59,7 +59,7 @@ message JwtProvider { option (udpa.annotations.versioning).previous_message_type = "envoy.config.filter.http.jwt_authn.v2alpha.JwtProvider"; - // Specify the `principal `_ that issued + // Specify the [principal](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.1) that issued // the JWT, usually a URL or an email address. // // It is optional. If specified, it has to match the *iss* field in JWT. @@ -81,7 +81,7 @@ message JwtProvider { // string issuer = 1; - // The list of JWT `audiences `_ are + // The list of JWT [audiences](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.3) are // allowed to access. A JWT containing any of these audiences will be accepted. If not specified, // will not check audiences in the token. // @@ -95,7 +95,7 @@ message JwtProvider { // repeated string audiences = 2; - // `JSON Web Key Set (JWKS) `_ is needed to + // [JSON Web Key Set (JWKS)](https://datatracker.ietf.org/doc/html/rfc7517#appendix-A) is needed to // validate signature of a JWT. This field specifies where to fetch JWKS. oneof jwks_source_specifier { option (validate.required) = true; @@ -145,12 +145,11 @@ message JwtProvider { // // If no explicit location is specified, the following default locations are tried in order: // - // 1. The Authorization header using the `Bearer schema - // `_. Example:: + // 1. The Authorization header using the [Bearer schema](https://datatracker.ietf.org/doc/html/rfc6750#section-2.1). Example:: // // Authorization: Bearer . // - // 2. `access_token `_ query parameter. + // 2. [access_token](https://datatracker.ietf.org/doc/html/rfc6750#section-2.3) query parameter. // // Multiple JWTs can be verified for a request. Each JWT has to be extracted from the locations // its provider specified or from the default locations. @@ -164,7 +163,7 @@ message JwtProvider { // // can be used to extract token from header:: // - // ``x-goog-iap-jwt-assertion: ``. + // `x-goog-iap-jwt-assertion: `. // repeated JwtHeader from_headers = 6; @@ -213,6 +212,21 @@ message JwtProvider { // Specify the clock skew in seconds when verifying JWT time constraint, // such as `exp`, and `nbf`. If not specified, default is 60 seconds. uint32 clock_skew_seconds = 10; + + // If non empty, the failure status ``::google::jwt_verify::Status`` for a non verified JWT will be written to StreamInfo DynamicMetadata + // in the format as: ``namespace`` is the jwt_authn filter name as ``envoy.filters.http.jwt_authn`` + // The value is the ``protobuf::Struct``. The values of this field will be ``code`` and ``message`` + // and they will contain the JWT authentication failure status code and a message describing the failure. + // + // For example, if failed_status_in_metadata is ``my_auth_failure_status``: + // + // .. code-block:: yaml + // + // envoy.filters.http.jwt_authn: + // my_auth_failure_status: + // code: 3 + // message: Jwt expired + string failed_status_in_metadata = 11; } // This message specifies how to fetch JWKS from remote and how to cache it. @@ -234,8 +248,34 @@ message RemoteJwks { // Duration after which the cached JWKS should be expired. If not specified, default cache // duration is 5 minutes. google.protobuf.Duration cache_duration = 2; -} + // Fetch Jwks asynchronously in the main thread before the listener is activated. + // Fetched Jwks can be used by all worker threads. + // + // If this feature is not enabled: + // + // * The Jwks is fetched on-demand when the requests come. During the fetching, first + // few requests are paused until the Jwks is fetched. + // * Each worker thread fetches its own Jwks since Jwks cache is per worker thread. + // + // If this feature is enabled: + // + // * Fetched Jwks is done in the main thread before the listener is activated. Its fetched + // Jwks can be used by all worker threads. Each worker thread doesn't need to fetch its own. + // * Jwks is ready when the requests come, not need to wait for the Jwks fetching. + JwksAsyncFetch async_fetch = 3; +} +// Fetch Jwks asynchronously in the main thread when the filter config is parsed. +// The listener is activated only after the Jwks is fetched. +// When the Jwks is expired in the cache, it is fetched again in the main thread. +// The fetched Jwks from the main thread can be used by all worker threads. +message JwksAsyncFetch { + // If false, the listener is activated after the initial fetch is completed. + // The initial fetch result can be either successful or failed. + // If true, it is activated without waiting for the initial fetch to complete. + // Default is false. + bool fast_listener = 1; +} // This message specifies a header location to extract JWT token. message JwtHeader { option (udpa.annotations.versioning).previous_message_type = @@ -560,8 +600,7 @@ message JwtAuthentication { // check this one. FilterStateRule filter_state_rules = 3; - // When set to true, bypass the `CORS preflight request - // `_ regardless of JWT + // When set to true, bypass the [CORS preflight request](http://www.w3.org/TR/cors/#cross-origin-request-with-preflight) regardless of JWT // requirements specified in the rules. bool bypass_cors_preflight = 4; diff --git a/api/gloo/gloo/external/envoy/extensions/filters/http/wasm/v3/wasm.proto b/api/gloo/gloo/external/envoy/extensions/filters/http/wasm/v3/wasm.proto index f1fa335ca..694d845e6 100644 --- a/api/gloo/gloo/external/envoy/extensions/filters/http/wasm/v3/wasm.proto +++ b/api/gloo/gloo/external/envoy/extensions/filters/http/wasm/v3/wasm.proto @@ -12,6 +12,7 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/ import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option java_package = "io.envoyproxy.envoy.extensions.filters.http.wasm.v3"; @@ -19,7 +20,7 @@ option java_outer_classname = "WasmProto"; option java_multiple_files = true; // [#protodoc-title: Wasm] -// Wasm :ref:`configuration overview `. +// Wasm configuration overview. message Wasm { // General Plugin configuration. diff --git a/api/gloo/gloo/external/envoy/extensions/graphql/graphql.proto b/api/gloo/gloo/external/envoy/extensions/graphql/graphql.proto new file mode 100644 index 000000000..623bdd9f7 --- /dev/null +++ b/api/gloo/gloo/external/envoy/extensions/graphql/graphql.proto @@ -0,0 +1,234 @@ +syntax = "proto3"; + +package envoy.config.filter.http.graphql.v2; + +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/graphql/v2"; + +option java_package = "io.envoyproxy.envoy.config.filter.http.graphql.v2"; +option java_outer_classname = "GraphQLFilterProto"; +option java_multiple_files = true; + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message PathSegment { + reserved 1, 2, 3; + reserved "key", "index", "all"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message Path { + reserved 1; + reserved "segments"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message TemplatedPath { + reserved 1, 2; + reserved "path_template", "named_paths"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message ValueProvider { + + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + message GraphQLArgExtraction { + reserved 1, 2; + reserved "arg_name", "path"; + } + + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + message GraphQLParentExtraction { + reserved 1; + reserved "path"; + } + + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + message TypedValueProvider { + + // DEPRECATED: This enum is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + enum Type { + STRING = 0; + INT = 1; + FLOAT = 2; + BOOLEAN = 3; + } + + reserved 1, 2, 3; + reserved "type", "header", "value"; + } + + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + message Provider { + reserved 1, 2, 3; + reserved "graphql_arg", "typed_provider", "graphql_parent"; + } + + reserved 3, 4; + reserved "providers", "provider_template"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message JsonValueList { + reserved 1; + reserved "values"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message JsonValue { + reserved 1, 2, 3; + reserved "node", "value_provider", "list"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message JsonKeyValue { + reserved 1, 2; + reserved "key", "value"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message JsonNode { + reserved 1; + reserved "key_values"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message RequestTemplate { + reserved 1, 2, 3; + reserved "headers", "query_params", "outgoing_body"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message ResponseTemplate { + reserved 1, 2; + reserved "result_root", "setters"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message RESTResolver { + reserved 1, 2, 3, 4; + reserved "server_uri", "request_transform", "pre_execution_transform", "span_name"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message GrpcRequestTemplate { + reserved 1, 2, 3, 4; + reserved "outgoing_message_json", "service_name", "method_name", "request_metadata"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message GrpcDescriptorRegistry { + reserved 1; + reserved "proto_descriptors"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message GrpcResolver { + reserved 1, 2, 4; + reserved "server_uri", "request_transform", "span_name"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message StaticResolver { + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + message AsyncResponse { + reserved 1, 2; + reserved "response", "delay_ms"; + } + + reserved 1, 2, 3; + reserved "sync_response", "async_response", "error_response"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message AbstractTypeResolver { + // No fields to reserve as this message was already empty (marked as NOT IMPLEMENTED) +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message QueryMatcher { + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + message FieldMatcher { + reserved 1, 2; + reserved "type", "field"; + } + + reserved 1; + reserved "field_matcher"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message Resolution { + reserved 1, 2, 3, 4, 5, 6; + reserved "matcher", "resolver", "stat_prefix", "cache_control"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message CacheControl { + // DEPRECATED: This enum is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + enum CacheControlScope { + UNSET = 0; + PUBLIC = 1; + PRIVATE = 2; + } + + reserved 1, 2, 3; + reserved "max_age", "scope", "inherit_max_age"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message GraphQLConfig { + // No fields to reserve as this message was already empty +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message GraphQLRouteConfig { + reserved 4, 5, 6, 7; + reserved "executable_schema", "stat_prefix", "persisted_query_cache_config", "allowed_query_hashes"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message PersistedQueryCacheConfig { + reserved 1; + reserved "cache_size"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message ExecutableSchema { + reserved 1, 2, 3, 4; + reserved "schema_definition", "executor", "extensions", "log_request_response_info"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message Executor { + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + message Local { + reserved 1, 2, 3; + reserved "resolutions", "enable_introspection", "max_depth"; + } + + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + message Remote { + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + message Extraction { + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + message DynamicMetadataExtraction { + reserved 1, 2; + reserved "metadata_namespace", "key"; + } + + reserved 1, 2, 3; + reserved "value", "header", "dynamic_metadata"; + } + + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + message RemoteSchemaRequest { + reserved 2, 3; + reserved "headers", "query_params"; + } + + reserved 1, 2, 3; + reserved "server_uri", "request", "span_name"; + } + + reserved 1, 2; + reserved "local", "remote"; +} diff --git a/api/gloo/gloo/external/envoy/extensions/graphql/stitching.proto b/api/gloo/gloo/external/envoy/extensions/graphql/stitching.proto new file mode 100644 index 000000000..c4839d1b2 --- /dev/null +++ b/api/gloo/gloo/external/envoy/extensions/graphql/stitching.proto @@ -0,0 +1,86 @@ +syntax = "proto3"; + +package envoy.config.resolver.stitching.v2; + +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/graphql/v2"; + +option java_package = "io.envoyproxy.envoy.config.filter.http.graphql.v2"; +option java_outer_classname = "GraphQLStitchingProto"; +option java_multiple_files = true; + +import "google/protobuf/any.proto"; +import "validate/validate.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/graphql/graphql.proto"; + + + + +// -------------- Stitching Data plane API ---------- +// this is the proto that the stitching data plane will consume + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message FieldNode { + reserved 1; + reserved "name"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message FieldNodeMap { + reserved 1; + reserved "nodes"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message FieldNodes { + reserved 1; + reserved "field_nodes"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message ResolverConfig { + reserved 1, 2; + reserved "selection_set", "field_name"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message Schemas { + reserved 1; + reserved "schemas"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message ArgPath { + reserved 1, 2; + reserved "setter_path", "extraction_path"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message ResolverInfo { + reserved 1, 2; + reserved "field_name", "args"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message MergedTypeConfig { + reserved 1, 2, 3, 4, 5, 6; + reserved "type_name", "selection_sets", "unique_fields_to_subschema_name", "non_unique_fields_to_subschema_names", "declarative_target_subschemas", "subschema_name_to_resolver_info"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message StitchingInfo { + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + message SubschemaConfig { + reserved 1; + reserved "executable_schema"; + } + + reserved 1, 2, 3, 4; + reserved "field_nodes_by_type", "field_nodes_by_field", "merged_types", "subschema_name_to_subschema_config"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message StitchingResolver { + reserved 1; + reserved "subschema_name"; +} + diff --git a/api/gloo/gloo/external/envoy/extensions/http_path/http_path.proto b/api/gloo/gloo/external/envoy/extensions/http_path/http_path.proto index d0a7bf21a..95c49c60f 100644 --- a/api/gloo/gloo/external/envoy/extensions/http_path/http_path.proto +++ b/api/gloo/gloo/external/envoy/extensions/http_path/http_path.proto @@ -8,6 +8,7 @@ import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3 option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/http_path"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; option java_package = "io.envoyproxy.envoy.config.health_checker.http_path.v2"; diff --git a/api/gloo/gloo/external/envoy/extensions/proxylatency/proxylatency.proto b/api/gloo/gloo/external/envoy/extensions/proxylatency/proxylatency.proto index baace81b0..e9bf58f4c 100644 --- a/api/gloo/gloo/external/envoy/extensions/proxylatency/proxylatency.proto +++ b/api/gloo/gloo/external/envoy/extensions/proxylatency/proxylatency.proto @@ -7,9 +7,17 @@ import "google/protobuf/wrappers.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; // Configure the proxy latency filter. This filter measures the latency // incurred by the filter chain in a histogram. +// The filter fields are similar to the settings for [`COMMON_DURATION`](https://www.envoyproxy.io/docs/envoy/latest/configuration/observability/access_log/usage.html), +// introduced in Envoy 1.31. +// The filter also emits the following additional dynamic metadata fields, +// which you can use to augment the existing upstream options for access logging: +// - request_out_internal: first_byte_processed_millis +// - request_out: firstUpstreamTxByteSent +// - response_out: firstDownstreamTxByteSent message ProxyLatency { // How to perform the latency measurement. Given an incoming request from downstream and @@ -27,6 +35,8 @@ message ProxyLatency { } // How to measure the request. + // Affects the output stats. + // Does not affect metadata. Measurement request = 1; // When FIRST_OUTGOING (i.e. LAST_INCOMING_FIRST_OUTGOING or FIRST_INCOMING_FIRST_OUTGOING) is // instead of when the first byte is sent upstream. This has the advantage of not measuring the time @@ -46,6 +56,7 @@ message ProxyLatency { // Charge a stat per listener. If not specified, defaults to true. google.protobuf.BoolValue charge_listener_stat = 4; - // Should we emit request timing to dynamic metadata. defaults to true. + // Whether request timing is emitted to dynamic metadata. + // If enabled, defaults to true. google.protobuf.BoolValue emit_dynamic_metadata= 6; } diff --git a/api/gloo/gloo/external/envoy/extensions/transformation/transformation.proto b/api/gloo/gloo/external/envoy/extensions/transformation/transformation.proto index 31867645c..73dbabb72 100644 --- a/api/gloo/gloo/external/envoy/extensions/transformation/transformation.proto +++ b/api/gloo/gloo/external/envoy/extensions/transformation/transformation.proto @@ -5,10 +5,13 @@ package envoy.api.v2.filter.http; option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; import "google/protobuf/empty.proto"; +import "google/protobuf/struct.proto"; +import "google/protobuf/wrappers.proto"; import "validate/validate.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/route/v3/route_components.proto"; @@ -24,6 +27,20 @@ message FilterTransformations { // Only RouteTransformations.RouteTransformation with matching stage will be // used with this filter. uint32 stage = 2 [ (validate.rules).uint32 = {lte : 10} ]; + + // Logs request/response sensitive information + // By default, this is false so no request or response sensitive information is logged. + // If set to true, the filter will log the request/response body and headers before and + // after any transformation is applied. + bool log_request_response_info = 3; + + // There is a matcher field in envoy-gloo/api/envoy/config/filter/http/transformation/v2/transformation_filter.proto + // that using field # 4 but is not here! So, I assume we never used that in the control plane but + // making a comment here so we don't accidentally use 4 + + // Automatically detect websocket upgrade request and pass through the request and response + // body without applying body transformations. Header transformation will still apply. + bool auto_websocket_passthrough = 5; } message TransformationRule { @@ -47,7 +64,7 @@ message TransformationRule { bool clear_route_cache = 3; // Apply a transformation to responses. Transformation response_transformation = 2; - // Apply a transformation in the onStreamComplete callback + // Apply a transformation in the onStreamComplete callback // (for modifying headers and dynamic metadata for access logs) Transformation on_stream_completion_transformation = 4; } @@ -130,12 +147,38 @@ message Transformation { // Configuration for an externally implemented transformer, used by // envoy transformation filter. solo.io.envoy.config.core.v3.TypedExtensionConfig transformer_config = 3; + + // AI Gateway specific Transformation + AiTransformation ai_transformation = 5; } + + // Logs request/response sensitive information + // By default, this is false so no request or response sensitive information is logged. + // If set to true, the filter will log the request/response body and headers before and + // after this transformation is applied. + google.protobuf.BoolValue log_request_response_info = 4; } // Extractions can be used to extract information from the request/response. // The extracted information can then be referenced in template fields. message Extraction { + // The mode of operation for the extraction. + enum Mode { + // Default mode. Extract the content of a specified capturing group. In this mode, + // `subgroup` selects the n-th capturing group, which represents the value that + // you want to extract. + EXTRACT = 0; + // Replace the content of a specified capturing group. In this mode, `subgroup` selects the + // n-th capturing group, which represents the value that you want to replace with + // the string provided in `replacement_text`. + // Note: `replacement_text` must be set for this mode. + SINGLE_REPLACE = 1; + // Replace all regex matches with the value provided in `replacement_text`. + // Note: `replacement_text` must be set for this mode. + // Note: The configuration fails if `subgroup` is set to a non-zero value. + // Note: restrictions on the regex are different for this mode. See the regex field for more details. + REPLACE_ALL = 2; + } // The source of the extraction oneof source { @@ -145,15 +188,41 @@ message Extraction { google.protobuf.Empty body = 4; } - // Only strings matching this regular expression will be part of the - // extraction. The most simple value for this field is '.*', which matches the - // whole source. The field is required. If extraction fails the result is an - // empty value. + // The regex field specifies the regular expression used for matching against the source content. + // - In EXTRACT mode, the entire source must match the regex. `subgroup` selects the n-th capturing group, + // which determines the part of the match that you want to extract. If the regex does not match the source, + // the result of the extraction will be an empty value. + // - In SINGLE_REPLACE mode, the regex also needs to match the entire source. `subgroup` selects the n-th capturing group + // that is replaced with the content of `replacement_text`. If the regex does not match the source, the result + // of the replacement will be the source itself. + // - In REPLACE_ALL mode, the regex is applied repeatedly to find all occurrences within the source that match. + // Each matching occurrence is replaced with the value in `replacement_text`. In this mode, the configuration is rejected + // if `subgroup` is set. If the regex does not match the source, the result of the replacement will be the source itself. string regex = 2; - // If your regex contains capturing groups, use this field to determine which - // group should be selected. + // If your regex contains capturing groups, use this field to determine the + // group that you want to select. Defaults to 0. + // If set in `EXTRACT` and `SINGLE_REPLACE` modes, the subgroup represents the capturing + // group that you want to extract or replace in the source. + // The configuration is rejected if you set subgroup to a non-zero value when using thev `REPLACE_ALL` mode. uint32 subgroup = 3; + + // The value `replacement_text` is used to format the substitution for matched sequences in + // in an input string. This value is only legal in `SINGLE_REPLACE` and `REPLACE_ALL` modes. + // - In `SINGLE_REPLACE` mode, the `subgroup` selects the n-th capturing group, which represents + // the value that you want to replace with the string provided in `replacement_text`. + // - In `REPLACE_ALL` mode, each sequence that matches the specified regex in the input is + // replaced with the value in`replacement_text`. + // The `replacement_text` can include special syntax, such as $1, $2, etc., to refer to + // capturing groups within the regular expression. + // The value that is specified in `replacement_text` is treated as a string, and is passed + // to `std::regex_replace` as the replacement string. + // For more informatino, see https://en.cppreference.com/w/cpp/regex/regex_replace. + google.protobuf.StringValue replacement_text = 5; + + // The mode of operation for the extraction. + // Defaults to EXTRACT. + Mode mode = 6; } // Defines a transformation template. @@ -220,6 +289,10 @@ message TransformationTemplate { // See `headers` documentation to see an example of usage. repeated HeaderToAppend headers_to_append = 10; + // Attribute to remove headers from requests. If a header is present multiple + // times, all instances of the header will be removed. + repeated string headers_to_remove = 11; + // Determines the type of transformation to apply to the request/response body oneof body_transformation { // Apply a template to the body @@ -232,6 +305,13 @@ message TransformationTemplate { // If you want to nest elements inside the body, use dot separator in the // extractor name. MergeExtractorsToBody merge_extractors_to_body = 6; + // A set of key-value pairs to merge into the JSON body. + // Each value will be rendered separately, and then placed into the JSON body at + // the specified key. + // There are a number of important caveats to using this feature: + // * This can only be used when the body is parsed as JSON. + // * This option does NOT work with advanced templates currently + MergeJsonKeys merge_json_keys = 13; } // Determines how the body will be parsed. @@ -241,6 +321,7 @@ message TransformationTemplate { // The request/response body will be treated as plain text DontParse = 1; } + // Determines how the body will be parsed. Defaults to ParseAsJson RequestBodyParse parse_body_behavior = 7; // If set to true, Envoy will not throw an exception in case the body parsing @@ -260,26 +341,130 @@ message TransformationTemplate { // A template that determines the metadata value. InjaTemplate value = 3; + + // Instruct the filter to parse the rendered value as a proto Struct message + // before setting it as the metadata value. + bool json_to_proto = 4; } // Use this field to set Dynamic Metadata. repeated DynamicMetadataValue dynamic_metadata_values = 9; + + // Use this field to set Inja behavior when rendering strings which contain + // characters that would need to be escaped to be valid JSON. Note that this + // sets the behavior for the entire transformation. Use raw_strings function + // for fine-grained control within a template. + bool escape_characters = 12; + + message SpanTransformer { + // A template that sets the span name + InjaTemplate name = 1; + + // TODO if we want to set attributes as well, add fields to modify them here. + } + + // These two fields (merge_json_keys and string_delimiter) are used in + // `envoy-gloo` but not used in the control plane. Let's reserve them to keep + // our field numbers in sync. + reserved 14; + + // Use this field to modify the span of the trace. + SpanTransformer span_transformer = 15; + } // Defines an [Inja template](https://github.com/pantor/inja) that will be // rendered by Gloo. In addition to the core template functions, the Gloo // transformation filter defines the following custom functions: -// - header(header_name): returns the value of the header with the given name +// - header(header_name): returns the value of the header with the given name. // - extraction(extractor_name): returns the value of the extractor with the -// given name +// given name. // - env(env_var_name): returns the value of the environment variable with the -// given name -// - body(): returns the request/response body +// given name. +// - body(): returns the request/response body. // - context(): returns the base JSON context (allowing for example to range on -// a JSON body that is an array) +// a JSON body that is an array). +// - request_header(header_name): returns the value of the request header with +// the given name. Use this option when you want to include request header values in response +// transformations. +// - base64_encode(string): encodes the input string to base64. +// - base64_decode(string): decodes the input string from base64. +// - substring(string, start_pos, substring_len): returns a substring of the +// input string, starting at `start_pos` and extending for `substring_len` +// characters. If no `substring_len` is provided or `substring_len` is <= 0, the +// substring extends to the end of the input string. message InjaTemplate { string text = 1; } message Passthrough {} message MergeExtractorsToBody {} -message HeaderBodyTransform {} \ No newline at end of file +message MergeJsonKeys { + message OverridableTemplate { + // Template to render + InjaTemplate tmpl = 1; + // If set to true, the template will be set even if the rendered value is empty. + bool override_empty = 2; + } + /* + Map of key name -> template to render into the JSON body. + Specified keys which don't exist in the JSON body will be set, + keys which do exist will be overriden. + + For example, given the following JSON body: + { + "key1": "value1" + } + and the following MergeJsonKeys: + { + "key1": "{{ header("header1") }}", + "key2": "{{ header("header2") }}" + } + The resulting JSON body will be: + { + "key1": "header1_value", + "key2": "header2_value" + } + */ + map json_keys = 2; +} + +message HeaderBodyTransform { + // When transforming a request, setting this to true will additionally add "queryString", + // "queryStringParameters", "multiValueQueryStringParameters", "httpMethod", "path", + // and "multiValueHeaders" to the body + bool add_request_metadata = 1; +} + +message FieldDefault { + // The name of the field. + string field = 1; + // The field default value, which can be any JSON Data Type. + google.protobuf.Value value = 2; + // Whether to override the field's value if it already exists. + // Defaults to false. + bool override = 3; +} + +message PromptEnrichment { + // An entry for a message to prepend or append to each prompt. + message Message { + // Role of the message. The available roles depend on the backend + // LLM provider model, such as `SYSTEM` or `USER` in the OpenAI API. + string role = 1; + // String content of the message. + string content = 2; + } + // A list of messages to be prepended to the prompt sent by the client. + repeated Message prepend = 2; + // A list of messages to be appended to the prompt sent by the client. + repeated Message append = 3; +} + +message AiTransformation { + // Rewrite the request to enable chat streaming + bool enable_chat_streaming = 1; + // Set defaults for fields in the request body + repeated FieldDefault field_defaults = 2; + // Inject prompts into the request body + PromptEnrichment prompt_enrichment = 3; +} \ No newline at end of file diff --git a/api/gloo/gloo/external/envoy/extensions/transformation_ee/transformation.proto b/api/gloo/gloo/external/envoy/extensions/transformation_ee/transformation.proto index e6e086fdb..5f8bb4b60 100644 --- a/api/gloo/gloo/external/envoy/extensions/transformation_ee/transformation.proto +++ b/api/gloo/gloo/external/envoy/extensions/transformation_ee/transformation.proto @@ -11,12 +11,22 @@ import "validate/validate.proto"; import "envoy/api/v2/route/route.proto"; import "github.com/solo-io/solo-kit/api/external/envoy/type/percent.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/route/v3/route_components.proto"; message FilterTransformations { // Specifies transformations based on the route matches. The first matched transformation will be // applied. If there are overlapped match conditions, please put the most specific match first. repeated TransformationRule transformations = 1; + + // There is a log_request_response_info field in + // envoy-gloo-ee/api/envoy/config/filter/http/transformation_ee/v2/transformation_ee_filter.proto + // that's using field #2 but never made it here. So, we never used it in the control plane? + // Commenting here just so we don't accidentally use field # 2 + + // Automatically detect websocket upgrade request and pass through the request and response + // body without applying body transformations. Header transformation will still apply. + bool auto_websocket_passthrough = 3; } message TransformationRule { @@ -30,7 +40,9 @@ message TransformationRule { // match: // prefix: / // - .solo.io.envoy.api.v2.route.RouteMatch match = 1 [(validate.rules).message = {required: true}]; + .solo.io.envoy.api.v2.route.RouteMatch match = 1; + + solo.io.envoy.config.route.v3.RouteMatch match_v3 = 3; // transformation to perform RouteTransformations route_transformations = 2; } @@ -69,9 +81,16 @@ message Action { // Used mostly to help ID specific actions in logs. // If left null will default to unknown string name = 1; + // Deprecated in favor of DlpMatcher // List of regexes to apply to the response body to match data which should be masked // They will be applied iteratively in the order which they are specified - repeated string regex = 2 [(validate.rules).repeated.items.string.min_bytes = 1]; + repeated string regex = 2 [(validate.rules).repeated.items.string.min_bytes = 1, deprecated = true]; + // Deprecated in favor of DlpMatcher + // List of regexes to apply to the response body to match data which should be + // masked. They will be applied iteratively in the order which they are + // specified. If this field and `regex` are both provided, all the regexes will + // be applied iteratively in the order provided, starting with the ones from `regex` + repeated RegexAction regex_actions = 6 [deprecated = true]; // If specified, this rule will not actually be applied, but only logged. bool shadow = 3; // The percent of the string which should be masked. @@ -80,5 +99,32 @@ message Action { // The character which should overwrite the masked data // If left empty, defaults to "X" string mask_char = 5 [(validate.rules).string.max_bytes = 1]; + // List of regexes to apply to the response body to match data which should be + // masked. They will be applied iteratively in the order which they are + // specified. + message RegexMatcher { + repeated RegexAction regex_actions = 1; + } + // List of headers for which associated values will be masked. + // Note that enable_header_transformation must be set for this to take effect. + // Note that if enable_dynamic_metadata_transformation is set, proto struct dynamic metadata + // (i.e., the values matching any JSON keys specified in `keys`; primarily for json-formatted WAF audit logs) will also be masked accordingly. + message KeyValueMatcher { + repeated string keys = 1; + } + message DlpMatcher { + oneof matcher { + RegexMatcher regex_matcher = 1; + KeyValueMatcher key_value_matcher = 2; + } + } + // The matcher used to determine which values will be masked by this action. + DlpMatcher matcher = 7; } +message RegexAction { + // The regex to match for masking. + string regex = 1 [ (validate.rules).string.min_bytes = 1 ]; + // If provided and not 0, only this specific subgroup of the regex will be masked. + uint32 subgroup = 2; +} diff --git a/api/gloo/gloo/external/envoy/extensions/upstream_wait/upstream_wait_filter.proto b/api/gloo/gloo/external/envoy/extensions/upstream_wait/upstream_wait_filter.proto new file mode 100644 index 000000000..0645c1676 --- /dev/null +++ b/api/gloo/gloo/external/envoy/extensions/upstream_wait/upstream_wait_filter.proto @@ -0,0 +1,10 @@ +syntax = "proto3"; + +package envoy.config.filter.http.upstream_wait.v2; + +option java_package = "io.envoyproxy.envoy.config.filter.http.upstream_wait.v2"; +option java_outer_classname = "UpstreamWaitFilterProto"; +option java_multiple_files = true; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/upstream_wait"; + +message UpstreamWaitFilterConfig {} diff --git a/api/gloo/gloo/external/envoy/extensions/waf/waf.proto b/api/gloo/gloo/external/envoy/extensions/waf/waf.proto index 6dc37723a..ed3f128ac 100644 --- a/api/gloo/gloo/external/envoy/extensions/waf/waf.proto +++ b/api/gloo/gloo/external/envoy/extensions/waf/waf.proto @@ -5,6 +5,9 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/ import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/transformation_ee/transformation.proto"; message AuditLogging { enum AuditLogAction { @@ -50,14 +53,16 @@ message ModSecurity { // this format is a multiline log format, so it is disabled for regular use. // do not enable this in production! bool regression_logs = 4; + envoy.config.filter.http.transformation_ee.v2.DlpTransformation dlp_transformation = 8; } message RuleSet { // String of rules which are added directly string rule_str = 1; - // Array of files to include + // Array of files with rules to include. + // Any subsequent changes to the rules in these files are not automatically updated. To update rules from files, version and update the file name. + // If you want dynamically updated rules, use the `configMapRuleSets` option instead. repeated string files = 3; - // A directory to include. all *.conf files in this directory will be // included. sub directories will NOT be checked. string directory = 4; @@ -76,4 +81,5 @@ message ModSecurityPerRoute { // This can help improve performance. bool request_headers_only = 6; bool response_headers_only = 7; + envoy.config.filter.http.transformation_ee.v2.DlpTransformation dlp_transformation = 8; } diff --git a/api/gloo/gloo/external/envoy/extensions/wasm/v3/wasm.proto b/api/gloo/gloo/external/envoy/extensions/wasm/v3/wasm.proto index de81e1850..fe22928e3 100644 --- a/api/gloo/gloo/external/envoy/extensions/wasm/v3/wasm.proto +++ b/api/gloo/gloo/external/envoy/extensions/wasm/v3/wasm.proto @@ -15,6 +15,7 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/ import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; option java_package = "io.envoyproxy.envoy.extensions.wasm.v3"; diff --git a/api/gloo/gloo/external/envoy/import.py b/api/gloo/gloo/external/envoy/import.py index 514330e3c..c3716e27a 100644 --- a/api/gloo/gloo/external/envoy/import.py +++ b/api/gloo/gloo/external/envoy/import.py @@ -46,6 +46,7 @@ def import_and_copy(f): f("echo '" + option + "' >> " + dest) f("echo 'import \"extproto/ext.proto\";' >> " + dest) f("echo 'option (extproto.hash_all) = true;' >> " + dest) + f("echo 'option (extproto.clone_all) = true;' >> " + dest) f("echo 'option (extproto.equal_all) = true;' >> " + dest) def main(): diff --git a/api/gloo/gloo/external/envoy/service/ext_proc/v3/external_processor.proto b/api/gloo/gloo/external/envoy/service/ext_proc/v3/external_processor.proto new file mode 100644 index 000000000..74a5f7bf2 --- /dev/null +++ b/api/gloo/gloo/external/envoy/service/ext_proc/v3/external_processor.proto @@ -0,0 +1,393 @@ +syntax = "proto3"; + +package solo.io.envoy.service.ext_proc.v3; + +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/base.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/v3/http_status.proto"; + +import "google/protobuf/duration.proto"; +import "google/protobuf/struct.proto"; + +import "envoy/annotations/deprecation.proto"; +import "udpa/annotations/status.proto"; +import "validate/validate.proto"; + +option java_package = "io.envoyproxy.envoy.service.ext_proc.v3"; +option java_outer_classname = "ExternalProcessorProto"; +option java_multiple_files = true; +option (solo.io.udpa.annotations.file_status).package_version_status = ACTIVE; + +// [#protodoc-title: External processing service] + +// A service that can access and modify HTTP requests and responses +// as part of a filter chain. +// The overall external processing protocol works like this: +// +// 1. Envoy sends to the service information about the HTTP request. +// 2. The service sends back a ProcessingResponse message that directs Envoy +// to either stop processing, continue without it, or send it the +// next chunk of the message body. +// 3. If so requested, Envoy sends the server chunks of the message body, +// or the entire body at once. In either case, the server sends back +// a ProcessingResponse after each message it receives. +// 4. If so requested, Envoy sends the server the HTTP trailers, +// and the server sends back a ProcessingResponse. +// 5. At this point, request processing is done, and we pick up again +// at step 1 when Envoy receives a response from the upstream server. +// 6. At any point above, if the server closes the gRPC stream cleanly, +// then Envoy proceeds without consulting the server. +// 7. At any point above, if the server closes the gRPC stream with an error, +// then Envoy returns a 500 error to the client, unless the filter +// was configured to ignore errors. +// +// In other words, the process is a request/response conversation, but +// using a gRPC stream to make it easier for the server to +// maintain state. + +service ExternalProcessor { + // This begins the bidirectional stream that Envoy will use to + // give the server control over what the filter does. The actual + // protocol is described by the ProcessingRequest and ProcessingResponse + // messages below. + rpc Process(stream ProcessingRequest) returns (stream ProcessingResponse) { + } +} + +// This represents the different types of messages that Envoy can send +// to an external processing server. +// [#next-free-field: 11] +message ProcessingRequest { + reserved 1; + + reserved "async_mode"; + + // Each request message will include one of the following sub-messages. Which + // ones are set for a particular HTTP request/response depend on the + // processing mode. + oneof request { + option (validate.required) = true; + + // Information about the HTTP request headers, as well as peer info and additional + // properties. Unless `observability_mode` is `true`, the server must send back a + // HeaderResponse message, an ImmediateResponse message, or close the stream. + HttpHeaders request_headers = 2; + + // Information about the HTTP response headers, as well as peer info and additional + // properties. Unless `observability_mode` is `true`, the server must send back a + // HeaderResponse message or close the stream. + HttpHeaders response_headers = 3; + + // A chunk of the HTTP request body. Unless `observability_mode` is true, the server must send back + // a BodyResponse message, an ImmediateResponse message, or close the stream. + HttpBody request_body = 4; + + // A chunk of the HTTP response body. Unless `observability_mode` is `true`, the server must send back + // a BodyResponse message or close the stream. + HttpBody response_body = 5; + + // The HTTP trailers for the request path. Unless `observability_mode` is `true`, the server + // must send back a TrailerResponse message or close the stream. + // + // This message is only sent if the trailers processing mode is set to `SEND` and + // the original downstream request has trailers. + HttpTrailers request_trailers = 6; + + // The HTTP trailers for the response path. Unless `observability_mode` is `true`, the server + // must send back a TrailerResponse message or close the stream. + // + // This message is only sent if the trailers processing mode is set to `SEND` and + // the original upstream response has trailers. + HttpTrailers response_trailers = 7; + } + + // Dynamic metadata associated with the request. + solo.io.envoy.config.core.v3.Metadata metadata_context = 8; + + // The values of properties selected by the `request_attributes` + // or `response_attributes` list in the configuration. Each entry + // in the list is populated from the standard + // attributes supported across Envoy. + map attributes = 9; + + // Specify whether the filter that sent this request is running in :ref:`observability_mode + // ` + // and defaults to false. + // + // * A value of `false` indicates that the server must respond + // to this message by either sending back a matching ProcessingResponse message, + // or by closing the stream. + // * A value of `true` indicates that the server should not respond to this message, as any + // responses will be ignored. However, it may still close the stream to indicate that no more messages + // are needed. + // + bool observability_mode = 10; +} + +// For every ProcessingRequest received by the server with the `observability_mode` field +// set to false, the server must send back exactly one ProcessingResponse message. +// [#next-free-field: 11] +message ProcessingResponse { + oneof response { + option (validate.required) = true; + + // The server must send back this message in response to a message with the + // `request_headers` field set. + HeadersResponse request_headers = 1; + + // The server must send back this message in response to a message with the + // `response_headers` field set. + HeadersResponse response_headers = 2; + + // The server must send back this message in response to a message with + // the `request_body` field set. + BodyResponse request_body = 3; + + // The server must send back this message in response to a message with + // the `response_body` field set. + BodyResponse response_body = 4; + + // The server must send back this message in response to a message with + // the `request_trailers` field set. + TrailersResponse request_trailers = 5; + + // The server must send back this message in response to a message with + // the `response_trailers` field set. + TrailersResponse response_trailers = 6; + + // If specified, attempt to create a locally generated response, send it + // downstream, and stop processing additional filters and ignore any + // additional messages received from the remote server for this request or + // response. If a response has already started -- for example, if this + // message is sent response to a `response_body` message -- then + // this will either ship the reply directly to the downstream codec, + // or reset the stream. + ImmediateResponse immediate_response = 7; + } + + // Optional metadata that will be emitted as dynamic metadata to be consumed by + // following filters. This metadata will be placed in the namespace(s) specified by the top-level + // field name(s) of the struct. + google.protobuf.Struct dynamic_metadata = 8; + + // Override how parts of the HTTP request and response are processed + // for the duration of this particular request/response only. Servers + // may use this to intelligently control how requests are processed + // based on the headers and other metadata that they see. + // This field is only applicable when servers responding to the header requests. + // If it is set in the response to the body or trailer requests, it will be ignored by Envoy. + // It is also ignored by Envoy when the ext_proc filter config + // :ref:`allow_mode_override + // ` + // is set to false. + solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode mode_override = 9; + + // When ext_proc server receives a request message, in case it needs more + // time to process the message, it sends back a ProcessingResponse message + // with a new timeout value. When Envoy receives this response message, + // it ignores other fields in the response, just stop the original timer, + // which has the timeout value specified in + // :ref:`message_timeout + // ` + // and start a new timer with this `override_message_timeout` value and keep the + // Envoy ext_proc filter state machine intact. + // Has to be >= 1ms and <= + // :ref:`max_message_timeout ` + // Such message can be sent at most once in a particular Envoy ext_proc filter processing state. + // To enable this API, one has to set `max_message_timeout` to a number >= 1ms. + google.protobuf.Duration override_message_timeout = 10; +} + +// The following are messages that are sent to the server. + +// This message is sent to the external server when the HTTP request and responses +// are first received. +message HttpHeaders { + // The HTTP request headers. All header keys will be + // lower-cased, because HTTP header keys are case-insensitive. + // The `headers` encoding is based on the runtime guard + // envoy_reloadable_features_send_header_raw_value setting. + // When it is true, the header value is encoded in the + // raw_value field. + // When it is false, the header value is encoded in the + // value field. + solo.io.envoy.config.core.v3.HeaderMap headers = 1; + + // [#not-implemented-hide:] + // This field is deprecated and not implemented. Attributes will be sent in + // the top-level :ref:`attributes attributes = 2 + [deprecated = true, (solo.io.envoy.annotations.deprecated_at_minor_version) = "3.0"]; + + // If true, then there is no message body associated with this + // request or response. + bool end_of_stream = 3; +} + +// This message contains the message body that Envoy sends to the external server. +message HttpBody { + bytes body = 1; + + bool end_of_stream = 2; +} + +// This message contains the trailers. +message HttpTrailers { + // The `trailers` encoding is based on the runtime guard + // envoy_reloadable_features_send_header_raw_value setting. + // When it is true, the header value is encoded in the + // raw_value field. + // When it is false, the header value is encoded in the + // value field. + solo.io.envoy.config.core.v3.HeaderMap trailers = 1; +} + +// The following are messages that may be sent back by the server. + +// This message must be sent in response to an HttpHeaders message. +message HeadersResponse { + CommonResponse response = 1; +} + +// This message must be sent in response to an HttpTrailers message. +message TrailersResponse { + // Instructions on how to manipulate the trailers + HeaderMutation header_mutation = 1; +} + +// This message must be sent in response to an HttpBody message. +message BodyResponse { + CommonResponse response = 1; +} + +// This message contains common fields between header and body responses. +// [#next-free-field: 6] +message CommonResponse { + enum ResponseStatus { + // Apply the mutation instructions in this message to the + // request or response, and then continue processing the filter + // stream as normal. This is the default. + CONTINUE = 0; + + // Apply the specified header mutation, replace the body with the body + // specified in the body mutation (if present), and do not send any + // further messages for this request or response even if the processing + // mode is configured to do so. + // + // When used in response to a request_headers or response_headers message, + // this status makes it possible to either completely replace the body + // while discarding the original body, or to add a body to a message that + // formerly did not have one. + // + // In other words, this response makes it possible to turn an HTTP GET + // into a POST, PUT, or PATCH. + CONTINUE_AND_REPLACE = 1; + } + + // If set, provide additional direction on how the Envoy proxy should + // handle the rest of the HTTP filter chain. + ResponseStatus status = 1 [(validate.rules).enum = {defined_only: true}]; + + // Instructions on how to manipulate the headers. When responding to an + // HttpBody request, header mutations will only take effect if + // the current processing mode for the body is BUFFERED. + HeaderMutation header_mutation = 2; + + // Replace the body of the last message sent to the remote server on this + // stream. If responding to an HttpBody request, simply replace or clear + // the body chunk that was sent with that request. Body mutations may take + // effect in response either to `header` or `body` messages. When it is + // in response to `header` messages, it only take effect if the + // :ref:`status ` + // is set to CONTINUE_AND_REPLACE. + BodyMutation body_mutation = 3; + + // [#not-implemented-hide:] + // Add new trailers to the message. This may be used when responding to either a + // HttpHeaders or HttpBody message, but only if this message is returned + // along with the CONTINUE_AND_REPLACE status. + // The `trailers` encoding is based on the runtime guard + // envoy_reloadable_features_send_header_raw_value setting. + // When it is true, the header value is encoded in the + // raw_value field. + // When it is false, the header value is encoded in the + // value field. + solo.io.envoy.config.core.v3.HeaderMap trailers = 4; + + // Clear the route cache for the current client request. This is necessary + // if the remote server modified headers that are used to calculate the route. + // This field is ignored in the response direction. This field is also ignored + // if the Envoy ext_proc filter is in the upstream filter chain. + bool clear_route_cache = 5; +} + +// This message causes the filter to attempt to create a locally +// generated response, send it downstream, stop processing +// additional filters, and ignore any additional messages received +// from the remote server for this request or response. If a response +// has already started, then this will either ship the reply directly +// to the downstream codec, or reset the stream. +// [#next-free-field: 6] +message ImmediateResponse { + // The response code to return + solo.io.envoy.type.v3.HttpStatus status = 1 [(validate.rules).message = {required: true}]; + + // Apply changes to the default headers, which will include content-type. + HeaderMutation headers = 2; + + // The message body to return with the response which is sent using the + // text/plain content type, or encoded in the grpc-message header. + bytes body = 3; + + // If set, then include a gRPC status trailer. + GrpcStatus grpc_status = 4; + + // A string detailing why this local reply was sent, which may be included + // in log and debug output (e.g. this populates the %RESPONSE_CODE_DETAILS% + // command operator field for use in access logging). + string details = 5; +} + +// This message specifies a gRPC status for an ImmediateResponse message. +message GrpcStatus { + // The actual gRPC status + uint32 status = 1; +} + +// Change HTTP headers or trailers by appending, replacing, or removing +// headers. +message HeaderMutation { + // Add or replace HTTP headers. Attempts to set the value of + // any `x-envoy` header, and attempts to set the `:method`, + // `:authority`, `:scheme`, or `host` headers will be ignored. + // The `set_headers` encoding is based on the runtime guard + // envoy_reloadable_features_send_header_raw_value setting. + // When it is true, the header value is encoded in the + // raw_value field. + // When it is false, the header value is encoded in the + // value field. + repeated solo.io.envoy.config.core.v3.HeaderValueOption set_headers = 1; + + // Remove these HTTP headers. Attempts to remove system headers -- + // any header starting with `:`, plus `host` -- will be ignored. + repeated string remove_headers = 2; +} + +// Replace the entire message body chunk received in the corresponding +// HttpBody message with this new body, or clear the body. +message BodyMutation { + oneof mutation { + // The entire body to replace + bytes body = 1; + + // Clear the corresponding body chunk + bool clear_body = 2; + } +} + +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3"; +import "extproto/ext.proto"; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; +option (extproto.equal_all) = true; \ No newline at end of file diff --git a/api/gloo/gloo/external/envoy/type/matcher/v3/regex.proto b/api/gloo/gloo/external/envoy/type/matcher/v3/regex.proto index c250fa49f..8330941fc 100644 --- a/api/gloo/gloo/external/envoy/type/matcher/v3/regex.proto +++ b/api/gloo/gloo/external/envoy/type/matcher/v3/regex.proto @@ -19,8 +19,8 @@ option (solo.io.udpa.annotations.file_status).package_version_status = ACTIVE; message RegexMatcher { option (solo.io.udpa.annotations.versioning).previous_message_type = "envoy.type.matcher.RegexMatcher"; - // Google's `RE2 `_ regex engine. The regex string must adhere to - // the documented `syntax `_. The engine is designed + // Google's [RE2](https://github.com/google/re2) regex engine. The regex string must adhere to + // the documented [syntax](https://github.com/google/re2/wiki/Syntax). The engine is designed // to complete execution in linear time as well as limit the amount of memory used. // // Envoy supports program size checking via runtime. The runtime keys `re2.max_program_size.error_level` @@ -78,15 +78,15 @@ message RegexMatchAndSubstitute { // subject string during a substitution operation to produce a new string. // Capture groups in the pattern can be referenced in the substitution // string. Note, however, that the syntax for referring to capture groups is - // defined by the chosen regular expression engine. Google's `RE2 - // `_ regular expression engine uses a + // defined by the chosen regular expression engine. Google's [RE2](https://github.com/google/re2) regular expression engine uses a // backslash followed by the capture group number to denote a numbered - // capture group. E.g., ``\1`` refers to capture group 1, and ``\2`` refers + // capture group. E.g., `\1` refers to capture group 1, and `\2` refers // to capture group 2. string substitution = 2; } option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/envoy/type/matcher/v3/string.proto b/api/gloo/gloo/external/envoy/type/matcher/v3/string.proto index ded05c9c1..ee5e7b2cf 100644 --- a/api/gloo/gloo/external/envoy/type/matcher/v3/string.proto +++ b/api/gloo/gloo/external/envoy/type/matcher/v3/string.proto @@ -71,5 +71,6 @@ message ListStringMatcher { option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/envoy/type/metadata/v3/metadata.proto b/api/gloo/gloo/external/envoy/type/metadata/v3/metadata.proto index d980abcb3..92774ae9d 100644 --- a/api/gloo/gloo/external/envoy/type/metadata/v3/metadata.proto +++ b/api/gloo/gloo/external/envoy/type/metadata/v3/metadata.proto @@ -14,7 +14,7 @@ option (solo.io.udpa.annotations.file_status).package_version_status = ACTIVE; // [#protodoc-title: Metadata] // MetadataKey provides a general interface using `key` and `path` to retrieve value from -// :ref:`Metadata `. +// Metadata. // // For example, for the following Metadata: // @@ -58,7 +58,7 @@ message MetadataKey { string key = 1 [(validate.rules).string = {min_bytes: 1}]; // The path to retrieve the Value from the Struct. It can be a prefix or a full path, - // e.g. ``[prop, xyz]`` for a struct or ``[prop, foo]`` for a string in the example, + // e.g. `[prop, xyz]` for a struct or `[prop, foo]` for a string in the example, // which depends on the particular scenario. // // Note: Due to that only the key type segment is supported, the path can not specify a list @@ -115,5 +115,6 @@ message MetadataKind { option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/envoy/type/range.proto b/api/gloo/gloo/external/envoy/type/range.proto index 3af93c484..7235a3ab5 100644 --- a/api/gloo/gloo/external/envoy/type/range.proto +++ b/api/gloo/gloo/external/envoy/type/range.proto @@ -9,6 +9,7 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/ import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; // [#protodoc-title: Range] diff --git a/api/gloo/gloo/external/envoy/type/tracing/v3/custom_tag.proto b/api/gloo/gloo/external/envoy/type/tracing/v3/custom_tag.proto index ee98db913..bb1d60d11 100644 --- a/api/gloo/gloo/external/envoy/type/tracing/v3/custom_tag.proto +++ b/api/gloo/gloo/external/envoy/type/tracing/v3/custom_tag.proto @@ -59,9 +59,9 @@ message CustomTag { } // Metadata type custom tag using - // :ref:`MetadataKey ` to retrieve the protobuf value - // from :ref:`Metadata `, and populate the tag value with - // `the canonical JSON `_ + // MetadataKey to retrieve the protobuf value + // from Metadata, and populate the tag value with + // [the canonical JSON](https://developers.google.com/protocol-buffers/docs/proto3#json) // representation of it. message Metadata { option (solo.io.udpa.annotations.versioning).previous_message_type = @@ -102,5 +102,6 @@ message CustomTag { option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/envoy/type/v3/http.proto b/api/gloo/gloo/external/envoy/type/v3/http.proto index 641cefc90..efc8346ba 100644 --- a/api/gloo/gloo/external/envoy/type/v3/http.proto +++ b/api/gloo/gloo/external/envoy/type/v3/http.proto @@ -25,4 +25,5 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/ import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; \ No newline at end of file diff --git a/api/gloo/gloo/external/envoy/type/v3/http_status.proto b/api/gloo/gloo/external/envoy/type/v3/http_status.proto new file mode 100644 index 000000000..eafdd4062 --- /dev/null +++ b/api/gloo/gloo/external/envoy/type/v3/http_status.proto @@ -0,0 +1,148 @@ +syntax = "proto3"; + +package solo.io.envoy.type.v3; + +import "udpa/annotations/status.proto"; +import "udpa/annotations/versioning.proto"; +import "validate/validate.proto"; + +option java_package = "io.envoyproxy.envoy.type.v3"; +option java_outer_classname = "HttpStatusProto"; +option java_multiple_files = true; +option (solo.io.udpa.annotations.file_status).package_version_status = ACTIVE; + +// [#protodoc-title: HTTP status codes] + +// HTTP response codes supported in Envoy. +// For more details: https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml +enum StatusCode { + // Empty - This code not part of the HTTP status code specification, but it is needed for proto + // `enum` type. + Empty = 0; + + Continue = 100; + + OK = 200; + + Created = 201; + + Accepted = 202; + + NonAuthoritativeInformation = 203; + + NoContent = 204; + + ResetContent = 205; + + PartialContent = 206; + + MultiStatus = 207; + + AlreadyReported = 208; + + IMUsed = 226; + + MultipleChoices = 300; + + MovedPermanently = 301; + + Found = 302; + + SeeOther = 303; + + NotModified = 304; + + UseProxy = 305; + + TemporaryRedirect = 307; + + PermanentRedirect = 308; + + BadRequest = 400; + + Unauthorized = 401; + + PaymentRequired = 402; + + Forbidden = 403; + + NotFound = 404; + + MethodNotAllowed = 405; + + NotAcceptable = 406; + + ProxyAuthenticationRequired = 407; + + RequestTimeout = 408; + + Conflict = 409; + + Gone = 410; + + LengthRequired = 411; + + PreconditionFailed = 412; + + PayloadTooLarge = 413; + + URITooLong = 414; + + UnsupportedMediaType = 415; + + RangeNotSatisfiable = 416; + + ExpectationFailed = 417; + + MisdirectedRequest = 421; + + UnprocessableEntity = 422; + + Locked = 423; + + FailedDependency = 424; + + UpgradeRequired = 426; + + PreconditionRequired = 428; + + TooManyRequests = 429; + + RequestHeaderFieldsTooLarge = 431; + + InternalServerError = 500; + + NotImplemented = 501; + + BadGateway = 502; + + ServiceUnavailable = 503; + + GatewayTimeout = 504; + + HTTPVersionNotSupported = 505; + + VariantAlsoNegotiates = 506; + + InsufficientStorage = 507; + + LoopDetected = 508; + + NotExtended = 510; + + NetworkAuthenticationRequired = 511; +} + +// HTTP status. +message HttpStatus { + option (solo.io.udpa.annotations.versioning).previous_message_type = "envoy.type.HttpStatus"; + + // Supplies HTTP response code. + StatusCode code = 1 [(validate.rules).enum = {defined_only: true not_in: 0}]; +} + +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/v3"; +import "extproto/ext.proto"; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; +option (extproto.equal_all) = true; \ No newline at end of file diff --git a/api/gloo/gloo/external/envoy/type/v3/percent.proto b/api/gloo/gloo/external/envoy/type/v3/percent.proto index 7a8aff044..e90ed6952 100644 --- a/api/gloo/gloo/external/envoy/type/v3/percent.proto +++ b/api/gloo/gloo/external/envoy/type/v3/percent.proto @@ -57,5 +57,6 @@ message FractionalPercent { option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/v3"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/envoy/type/v3/range.proto b/api/gloo/gloo/external/envoy/type/v3/range.proto index 744364cf6..d3ad3d9f5 100644 --- a/api/gloo/gloo/external/envoy/type/v3/range.proto +++ b/api/gloo/gloo/external/envoy/type/v3/range.proto @@ -50,5 +50,6 @@ message DoubleRange { option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/v3"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/envoy/type/v3/semantic_version.proto b/api/gloo/gloo/external/envoy/type/v3/semantic_version.proto index aed1e596b..288caa310 100644 --- a/api/gloo/gloo/external/envoy/type/v3/semantic_version.proto +++ b/api/gloo/gloo/external/envoy/type/v3/semantic_version.proto @@ -27,5 +27,6 @@ message SemanticVersion { option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/v3"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; diff --git a/api/gloo/gloo/external/opentelemetry/common/v1/common.proto b/api/gloo/gloo/external/opentelemetry/common/v1/common.proto new file mode 100644 index 000000000..d8589687c --- /dev/null +++ b/api/gloo/gloo/external/opentelemetry/common/v1/common.proto @@ -0,0 +1,74 @@ +// Copied from https://github.com/open-telemetry/opentelemetry-proto/blob/e4fd4f681f583b1bdea4d375ad19ddc0dc1f2e9c/opentelemetry/proto/common/v1/common.proto + +// Copyright 2019, OpenTelemetry Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package opentelemetry.proto.common.v1; +// package solo.io.opentelemetry.common.v1; + +// disabled some things we don't need +// option csharp_namespace = "OpenTelemetry.Proto.Common.V1"; +// option java_multiple_files = true; +// option java_package = "io.opentelemetry.proto.common.v1"; +// option java_outer_classname = "CommonProto"; + +option go_package = "go.opentelemetry.io/proto/otlp/common/v1"; +// option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/opentelemetry/common/v1"; + +// AnyValue is used to represent any type of attribute value. AnyValue may contain a +// primitive value such as a string or integer or it may contain an arbitrary nested +// object containing arrays, key-value lists and primitives. +message AnyValue { + // The value is one of the listed fields. It is valid for all values to be unspecified + // in which case this AnyValue is considered to be "empty". + oneof value { + string string_value = 1; + bool bool_value = 2; + int64 int_value = 3; + double double_value = 4; + ArrayValue array_value = 5; + KeyValueList kvlist_value = 6; + bytes bytes_value = 7; + } +} + +// ArrayValue is a list of AnyValue messages. We need ArrayValue as a message +// since oneof in AnyValue does not allow repeated fields. +message ArrayValue { + // Array of values. The array may be empty (contain 0 elements). + repeated AnyValue values = 1; +} + +// KeyValueList is a list of KeyValue messages. We need KeyValueList as a message +// since `oneof` in AnyValue does not allow repeated fields. Everywhere else where we need +// a list of KeyValue messages (e.g. in Span) we use `repeated KeyValue` directly to +// avoid unnecessary extra wrapping (which slows down the protocol). The 2 approaches +// are semantically equivalent. +message KeyValueList { + // A collection of key/value pairs of key-value pairs. The list may be empty (may + // contain 0 elements). + // The keys MUST be unique (it is not allowed to have more than one + // value with the same key). + repeated KeyValue values = 1; +} + +// KeyValue is a key-value pair that is used to store Span attributes, Link +// attributes, etc. +message KeyValue { + string key = 1; + // Contains the value of the attribute associated with the key. + AnyValue value = 2; +} \ No newline at end of file diff --git a/api/gloo/gloo/external/solo/ratelimit/rate_limit_config.go b/api/gloo/gloo/external/solo/ratelimit/rate_limit_config.go index 765c5ab85..4ba82023c 100644 --- a/api/gloo/gloo/external/solo/ratelimit/rate_limit_config.go +++ b/api/gloo/gloo/external/solo/ratelimit/rate_limit_config.go @@ -1,15 +1,18 @@ package ratelimit import ( + "context" "reflect" + "github.com/solo-io/go-utils/contextutils" + + "github.com/solo-io/solo-kit/pkg/utils/specutils" + "github.com/solo-io/solo-kit/pkg/api/v1/resources" skres "github.com/solo-io/solo-kit/pkg/api/v1/clients/kube/crd/solo.io/v1" "github.com/solo-io/solo-kit/pkg/utils/protoutils" - types "github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1" - "github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1" "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" @@ -21,7 +24,7 @@ var _ resources.CustomInputResource = &RateLimitConfig{} type RateLimitConfig v1alpha1.RateLimitConfig func (r *RateLimitConfig) GetMetadata() *core.Metadata { - return kubeutils.FromKubeMeta(r.ObjectMeta) + return kubeutils.FromKubeMeta(r.ObjectMeta, true) } func (r *RateLimitConfig) SetMetadata(meta *core.Metadata) { @@ -40,11 +43,11 @@ func (r *RateLimitConfig) Clone() *RateLimitConfig { } func (r *RateLimitConfig) UnmarshalSpec(spec skres.Spec) error { - return protoutils.UnmarshalMapToProto(spec, &r.Spec) + return specutils.UnmarshalSpecMapToProto(spec, &r.Spec) } -func (r *RateLimitConfig) UnmarshalStatus(status skres.Status) error { - return protoutils.UnmarshalMapToProto(status, &r.Status) +func (r *RateLimitConfig) UnmarshalStatus(status skres.Status, unmarshaler resources.StatusUnmarshaler) { + protoutils.UnmarshalMapToProto(status, &r.Status) } func (r *RateLimitConfig) MarshalSpec() (skres.Spec, error) { @@ -55,42 +58,72 @@ func (r *RateLimitConfig) MarshalStatus() (skres.Status, error) { return protoutils.MarshalMapFromProto(&r.Status) } +// Deprecated func (r *RateLimitConfig) GetStatus() *core.Status { + return r.convertRateLimitConfigStatusToSoloKitStatus(&r.Status) +} - var outputState core.Status_State - - switch r.Status.GetState() { - case types.RateLimitConfigStatus_PENDING: - outputState = core.Status_Pending - case types.RateLimitConfigStatus_ACCEPTED: - outputState = core.Status_Accepted - case types.RateLimitConfigStatus_REJECTED: - outputState = core.Status_Rejected +// Deprecated +func (r *RateLimitConfig) SetStatus(status *core.Status) { + if status != nil { + r.Status = *r.convertSoloKitStatusToRateLimitConfigStatus(status) } +} - return &core.Status{ - State: outputState, - Reason: r.Status.GetMessage(), - } +func (r *RateLimitConfig) GetNamespacedStatuses() *core.NamespacedStatuses { + // TODO: Add namespaced statuses to rate limiting. + // Since we only check if rate limit is in a rejected state + return &core.NamespacedStatuses{} } -func (r *RateLimitConfig) SetStatus(status *core.Status) { +func (r *RateLimitConfig) SetNamespacedStatuses(status *core.NamespacedStatuses) { + contextutils.LoggerFrom(context.Background()).DPanic("implement me") +} - var outputState types.RateLimitConfigStatus_State +func (r *RateLimitConfig) convertSoloKitStatusToRateLimitConfigStatus(status *core.Status) *v1alpha1.RateLimitConfigStatus { + if status == nil { + return nil + } + var outputState v1alpha1.RateLimitConfigStatus_State switch status.GetState() { case core.Status_Pending: - outputState = types.RateLimitConfigStatus_PENDING + outputState = v1alpha1.RateLimitConfigStatus_PENDING case core.Status_Accepted: - outputState = types.RateLimitConfigStatus_ACCEPTED + outputState = v1alpha1.RateLimitConfigStatus_ACCEPTED case core.Status_Rejected: - outputState = types.RateLimitConfigStatus_REJECTED + outputState = v1alpha1.RateLimitConfigStatus_REJECTED case core.Status_Warning: - // should lever happen - panic("cannot set WARNING status on RateLimitConfig resources") + // should never happen, RateLimitConfigs should never have any warnings on them because ratelimitconfigs use + // statuses generated by skv2 + contextutils.LoggerFrom(context.Background()).DPanic("cannot set WARNING status on RateLimitConfig resources") + outputState = v1alpha1.RateLimitConfigStatus_REJECTED + } + + return &v1alpha1.RateLimitConfigStatus{ + State: outputState, + Message: status.GetReason(), + ObservedGeneration: r.GetGeneration(), + } +} + +func (r *RateLimitConfig) convertRateLimitConfigStatusToSoloKitStatus(status *v1alpha1.RateLimitConfigStatus) *core.Status { + if status == nil { + return nil + } + + var outputState core.Status_State + switch status.GetState() { + case v1alpha1.RateLimitConfigStatus_PENDING: + outputState = core.Status_Pending + case v1alpha1.RateLimitConfigStatus_ACCEPTED: + outputState = core.Status_Accepted + case v1alpha1.RateLimitConfigStatus_REJECTED: + outputState = core.Status_Rejected } - r.Status.State = outputState - r.Status.Message = status.GetReason() - r.Status.ObservedGeneration = r.Generation + return &core.Status{ + State: outputState, + Reason: status.GetMessage(), + } } diff --git a/api/gloo/gloo/external/xds/annotations/v3/migrate.proto b/api/gloo/gloo/external/xds/annotations/v3/migrate.proto new file mode 100644 index 000000000..13859274c --- /dev/null +++ b/api/gloo/gloo/external/xds/annotations/v3/migrate.proto @@ -0,0 +1,46 @@ +syntax = "proto3"; + +package xds.annotations.v3; + +import "google/protobuf/descriptor.proto"; + +option go_package = "github.com/cncf/xds/go/xds/annotations/v3"; + +// Magic number in this file derived from top 28bit of SHA256 digest of +// "xds.annotation.v3.migrate". +extend google.protobuf.MessageOptions { + MigrateAnnotation message_migrate = 112948430; +} +extend google.protobuf.FieldOptions { + FieldMigrateAnnotation field_migrate = 112948430; +} +extend google.protobuf.EnumOptions { + MigrateAnnotation enum_migrate = 112948430; +} +extend google.protobuf.EnumValueOptions { + MigrateAnnotation enum_value_migrate = 112948430; +} +extend google.protobuf.FileOptions { + FileMigrateAnnotation file_migrate = 112948430; +} + +message MigrateAnnotation { + // Rename the message/enum/enum value in next version. + string rename = 1; +} + +message FieldMigrateAnnotation { + // Rename the field in next version. + string rename = 1; + + // Add the field to a named oneof in next version. If this already exists, the + // field will join its siblings under the oneof, otherwise a new oneof will be + // created with the given name. + string oneof_promotion = 2; +} + +message FileMigrateAnnotation { + // Move all types in the file to another package, this implies changing proto + // file path. + string move_to_package = 2; +} diff --git a/api/gloo/gloo/external/xds/annotations/v3/security.proto b/api/gloo/gloo/external/xds/annotations/v3/security.proto new file mode 100644 index 000000000..f1f9f40da --- /dev/null +++ b/api/gloo/gloo/external/xds/annotations/v3/security.proto @@ -0,0 +1,30 @@ +syntax = "proto3"; + +package xds.annotations.v3; + +import "xds/annotations/v3/status.proto"; + +import "google/protobuf/descriptor.proto"; + +option go_package = "github.com/cncf/xds/go/xds/annotations/v3"; + +// All annotations in this file are experimental and subject to change. Their +// only consumer today is the Envoy APIs and SecuritAnnotationValidator protoc +// plugin in this repository. +option (xds.annotations.v3.file_status).work_in_progress = true; + +extend google.protobuf.FieldOptions { + // Magic number is the 28 most significant bits in the sha256sum of + // "xds.annotations.v3.security". + FieldSecurityAnnotation security = 99044135; +} + +// These annotations indicate metadata for the purpose of understanding the +// security significance of fields. +message FieldSecurityAnnotation { + // Field should be set in the presence of untrusted downstreams. + bool configure_for_untrusted_downstream = 1; + + // Field should be set in the presence of untrusted upstreams. + bool configure_for_untrusted_upstream = 2; +} diff --git a/api/gloo/gloo/external/xds/annotations/v3/sensitive.proto b/api/gloo/gloo/external/xds/annotations/v3/sensitive.proto new file mode 100644 index 000000000..e2cc0b792 --- /dev/null +++ b/api/gloo/gloo/external/xds/annotations/v3/sensitive.proto @@ -0,0 +1,16 @@ +syntax = "proto3"; + +package xds.annotations.v3; + +import "google/protobuf/descriptor.proto"; + +option go_package = "github.com/cncf/xds/go/xds/annotations/v3"; + +extend google.protobuf.FieldOptions { + // Magic number is the 28 most significant bits in the sha256sum of "xds.annotations.v3.sensitive". + // When set to true, `sensitive` indicates that this field contains sensitive data, such as + // personally identifiable information, passwords, or private keys, and should be redacted for + // display by tools aware of this annotation. Note that that this has no effect on standard + // Protobuf functions such as `TextFormat::PrintToString`. + bool sensitive = 61008053; +} diff --git a/api/gloo/gloo/external/xds/annotations/v3/status.proto b/api/gloo/gloo/external/xds/annotations/v3/status.proto new file mode 100644 index 000000000..367e784f6 --- /dev/null +++ b/api/gloo/gloo/external/xds/annotations/v3/status.proto @@ -0,0 +1,59 @@ +syntax = "proto3"; + +package xds.annotations.v3; + +import "google/protobuf/descriptor.proto"; + +option go_package = "github.com/cncf/xds/go/xds/annotations/v3"; + +// Magic number in this file derived from top 28bit of SHA256 digest of +// "xds.annotations.v3.status". +extend google.protobuf.FileOptions { + FileStatusAnnotation file_status = 226829418; +} + +extend google.protobuf.MessageOptions { + MessageStatusAnnotation message_status = 226829418; +} + +extend google.protobuf.FieldOptions { + FieldStatusAnnotation field_status = 226829418; +} + +message FileStatusAnnotation { + // The entity is work-in-progress and subject to breaking changes. + bool work_in_progress = 1; +} + +message MessageStatusAnnotation { + // The entity is work-in-progress and subject to breaking changes. + bool work_in_progress = 1; +} + +message FieldStatusAnnotation { + // The entity is work-in-progress and subject to breaking changes. + bool work_in_progress = 1; +} + +enum PackageVersionStatus { + // Unknown package version status. + UNKNOWN = 0; + + // This version of the package is frozen. + FROZEN = 1; + + // This version of the package is the active development version. + ACTIVE = 2; + + // This version of the package is the candidate for the next major version. It + // is typically machine generated from the active development version. + NEXT_MAJOR_VERSION_CANDIDATE = 3; +} + +message StatusAnnotation { + // The entity is work-in-progress and subject to breaking changes. + bool work_in_progress = 1; + + // The entity belongs to a package with the given version status. + PackageVersionStatus package_version_status = 2; +} diff --git a/api/gloo/gloo/external/xds/annotations/v3/versioning.proto b/api/gloo/gloo/external/xds/annotations/v3/versioning.proto new file mode 100644 index 000000000..b6440f194 --- /dev/null +++ b/api/gloo/gloo/external/xds/annotations/v3/versioning.proto @@ -0,0 +1,20 @@ +syntax = "proto3"; + +package xds.annotations.v3; + +import "google/protobuf/descriptor.proto"; + +option go_package = "github.com/cncf/xds/go/xds/annotations/v3"; + +extend google.protobuf.MessageOptions { + // Magic number is the 28 most significant bits in the sha256sum of + // "xds.annotations.v3.versioning". + VersioningAnnotation versioning = 92389011; +} + +message VersioningAnnotation { + // Track the previous message type. E.g. this message might be + // xds.foo.v3alpha.Foo and it was previously xds.bar.v2.Bar. This + // information is consumed by UDPA via proto descriptors. + string previous_message_type = 1; +} diff --git a/api/gloo/gloo/external/xds/core/v3/authority.proto b/api/gloo/gloo/external/xds/core/v3/authority.proto new file mode 100644 index 000000000..d666c38ea --- /dev/null +++ b/api/gloo/gloo/external/xds/core/v3/authority.proto @@ -0,0 +1,22 @@ +syntax = "proto3"; + +package xds.core.v3; + +import "xds/annotations/v3/status.proto"; + +import "validate/validate.proto"; + +option java_outer_classname = "AuthorityProto"; +option java_multiple_files = true; +option java_package = "com.github.xds.core.v3"; +option go_package = "github.com/cncf/xds/go/xds/core/v3"; + +option (xds.annotations.v3.file_status).work_in_progress = true; + +// xDS authority information. +message Authority { + string name = 1 [(validate.rules).string = {min_len: 1}]; + + // .. space reserved for additional authority addressing information, e.g. for + // resource signing, items such as CA trust chain, cert pinning may be added. +} diff --git a/api/gloo/gloo/external/xds/core/v3/cidr.proto b/api/gloo/gloo/external/xds/core/v3/cidr.proto new file mode 100644 index 000000000..9c65fd174 --- /dev/null +++ b/api/gloo/gloo/external/xds/core/v3/cidr.proto @@ -0,0 +1,25 @@ +syntax = "proto3"; + +package xds.core.v3; + +import "xds/annotations/v3/status.proto"; +import "google/protobuf/wrappers.proto"; + +import "validate/validate.proto"; + +option java_outer_classname = "CidrRangeProto"; +option java_multiple_files = true; +option java_package = "com.github.xds.core.v3"; +option go_package = "github.com/cncf/xds/go/xds/core/v3"; + +option (xds.annotations.v3.file_status).work_in_progress = true; + +// CidrRange specifies an IP Address and a prefix length to construct +// the subnet mask for a [CIDR](https://datatracker.ietf.org/doc/html/rfc4632) range. +message CidrRange { + // IPv4 or IPv6 address, e.g. `192.0.0.0` or `2001:db8::`. + string address_prefix = 1 [(validate.rules).string = {min_len: 1}]; + + // Length of prefix, e.g. 0, 32. Defaults to 0 when unset. + google.protobuf.UInt32Value prefix_len = 2 [(validate.rules).uint32 = {lte: 128}]; +} diff --git a/api/gloo/gloo/external/xds/core/v3/context_params.proto b/api/gloo/gloo/external/xds/core/v3/context_params.proto new file mode 100644 index 000000000..a42c7a859 --- /dev/null +++ b/api/gloo/gloo/external/xds/core/v3/context_params.proto @@ -0,0 +1,23 @@ +syntax = "proto3"; + +package xds.core.v3; + +import "xds/annotations/v3/status.proto"; + +option java_outer_classname = "ContextParamsProto"; +option java_multiple_files = true; +option java_package = "com.github.xds.core.v3"; +option go_package = "github.com/cncf/xds/go/xds/core/v3"; + +option (xds.annotations.v3.file_status).work_in_progress = true; + +// Additional parameters that can be used to select resource variants. These include any +// global context parameters, per-resource type client feature capabilities and per-resource +// type functional attributes. All per-resource type attributes will be `xds.resource.` +// prefixed and some of these are documented below: +// +// `xds.resource.listening_address`: The value is "IP:port" (e.g. "10.1.1.3:8080") which is +// the listening address of a Listener. Used in a Listener resource query. +message ContextParams { + map params = 1; +} diff --git a/api/gloo/gloo/external/xds/core/v3/extension.proto b/api/gloo/gloo/external/xds/core/v3/extension.proto new file mode 100644 index 000000000..dd489eb99 --- /dev/null +++ b/api/gloo/gloo/external/xds/core/v3/extension.proto @@ -0,0 +1,26 @@ +syntax = "proto3"; + +package xds.core.v3; + +option java_outer_classname = "ExtensionProto"; +option java_multiple_files = true; +option java_package = "com.github.xds.core.v3"; +option go_package = "github.com/cncf/xds/go/xds/core/v3"; + +import "validate/validate.proto"; +import "google/protobuf/any.proto"; + +// Message type for extension configuration. +message TypedExtensionConfig { + // The name of an extension. This is not used to select the extension, instead + // it serves the role of an opaque identifier. + string name = 1 [(validate.rules).string = {min_len: 1}]; + + // The typed config for the extension. The type URL will be used to identify + // the extension. In the case that the type URL is *xds.type.v3.TypedStruct* + // (or, for historical reasons, *udpa.type.v1.TypedStruct*), the inner type + // URL of *TypedStruct* will be utilized. See the + // :ref:`extension configuration overview + // ` for further details. + google.protobuf.Any typed_config = 2 [(validate.rules).any = {required: true}]; +} diff --git a/api/gloo/gloo/external/xds/core/v3/resource.proto b/api/gloo/gloo/external/xds/core/v3/resource.proto new file mode 100644 index 000000000..dc062790f --- /dev/null +++ b/api/gloo/gloo/external/xds/core/v3/resource.proto @@ -0,0 +1,29 @@ +syntax = "proto3"; + +package xds.core.v3; + +import "google/protobuf/any.proto"; + +import "xds/annotations/v3/status.proto"; +import "xds/core/v3/resource_name.proto"; + +option java_outer_classname = "ResourceProto"; +option java_multiple_files = true; +option java_package = "com.github.xds.core.v3"; +option go_package = "github.com/cncf/xds/go/xds/core/v3"; + +option (xds.annotations.v3.file_status).work_in_progress = true; + +// xDS resource wrapper. This encapsulates a xDS resource when appearing in an +// xDS transport discovery response or when accessed as a filesystem object. +message Resource { + // Resource name. This may be omitted for filesystem resources. + ResourceName name = 1; + + // The resource's logical version. It is illegal to have the same named xDS + // resource name at a given version with different resource payloads. + string version = 2; + + // The resource payload, including type URL. + google.protobuf.Any resource = 3; +} diff --git a/api/gloo/gloo/external/xds/core/v3/resource_locator.proto b/api/gloo/gloo/external/xds/core/v3/resource_locator.proto new file mode 100644 index 000000000..3fcdf9a0f --- /dev/null +++ b/api/gloo/gloo/external/xds/core/v3/resource_locator.proto @@ -0,0 +1,118 @@ +syntax = "proto3"; + +package xds.core.v3; + +import "xds/annotations/v3/status.proto"; +import "xds/core/v3/context_params.proto"; + +import "validate/validate.proto"; + +option java_outer_classname = "ResourceLocatorProto"; +option java_multiple_files = true; +option java_package = "com.github.xds.core.v3"; +option go_package = "github.com/cncf/xds/go/xds/core/v3"; + +option (xds.annotations.v3.file_status).work_in_progress = true; + +// xDS resource locators identify a xDS resource name and instruct the +// data-plane load balancer on how the resource may be located. +// +// Resource locators have a canonical xdstp:// URI representation: +// +// xdstp://{authority}/{type_url}/{id}?{context_params}{#directive,*} +// +// where context_params take the form of URI query parameters. +// +// Resource locators have a similar canonical http:// URI representation: +// +// http://{authority}/{type_url}/{id}?{context_params}{#directive,*} +// +// Resource locators also have a simplified file:// URI representation: +// +// file:///{id}{#directive,*} +// +message ResourceLocator { + enum Scheme { + XDSTP = 0; + HTTP = 1; + FILE = 2; + } + + // URI scheme. + Scheme scheme = 1 [(validate.rules).enum = {defined_only: true}]; + + // Opaque identifier for the resource. Any '/' will not be escaped during URI + // encoding and will form part of the URI path. This may end + // with ‘*’ for glob collection references. + string id = 2; + + // Logical authority for resource (not necessarily transport network address). + // Authorities are opaque in the xDS API, data-plane load balancers will map + // them to concrete network transports such as an xDS management server, e.g. + // via envoy.config.core.v3.ConfigSource. + string authority = 3; + + // Fully qualified resource type (as in type URL without types.googleapis.com/ + // prefix). + string resource_type = 4 [(validate.rules).string = {min_len: 1}]; + + oneof context_param_specifier { + // Additional parameters that can be used to select resource variants. + // Matches must be exact, i.e. all context parameters must match exactly and + // there must be no additional context parameters set on the matched + // resource. + ContextParams exact_context = 5; + + // .. space reserved for future potential matchers, e.g. CEL expressions. + } + + // Directives provide information to data-plane load balancers on how xDS + // resource names are to be interpreted and potentially further resolved. For + // example, they may provide alternative resource locators for when primary + // resolution fails. Directives are not part of resource names and do not + // appear in a xDS transport discovery request. + // + // When encoding to URIs, directives take the form: + // + // = + // + // For example, we can have alt=xdstp://foo/bar or entry=some%20thing. Each + // directive value type may have its own string encoding, in the case of + // ResourceLocator there is a recursive URI encoding. + // + // Percent encoding applies to the URI encoding of the directive value. + // Multiple directives are comma-separated, so the reserved characters that + // require percent encoding in a directive value are [',', '#', '[', ']', + // '%']. These are the RFC3986 fragment reserved characters with the addition + // of the xDS scheme specific ','. See + // https://datatracker.ietf.org/doc/html/rfc3986#page-49 for further details on URI ABNF + // and reserved characters. + message Directive { + oneof directive { + option (validate.required) = true; + + // An alternative resource locator for fallback if the resource is + // unavailable. For example, take the resource locator: + // + // xdstp://foo/some-type/some-route-table#alt=xdstp://bar/some-type/another-route-table + // + // If the data-plane load balancer is unable to reach `foo` to fetch the + // resource, it will fallback to `bar`. Alternative resources do not need + // to have equivalent content, but they should be functional substitutes. + ResourceLocator alt = 1; + + // List collections support inlining of resources via the entry field in + // Resource. These inlined Resource objects may have an optional name + // field specified. When specified, the entry directive allows + // ResourceLocator to directly reference these inlined resources, e.g. + // xdstp://.../foo#entry=bar. + string entry = 2 [(validate.rules).string = {min_len: 1, pattern: "^[0-9a-zA-Z_\\-\\./~:]+$"}]; + } + } + + // A list of directives that appear in the xDS resource locator #fragment. + // + // When encoding to URI form, directives are percent encoded with comma + // separation. + repeated Directive directives = 6; +} diff --git a/api/gloo/gloo/external/xds/core/v3/resource_name.proto b/api/gloo/gloo/external/xds/core/v3/resource_name.proto new file mode 100644 index 000000000..0f3d99740 --- /dev/null +++ b/api/gloo/gloo/external/xds/core/v3/resource_name.proto @@ -0,0 +1,42 @@ +syntax = "proto3"; + +package xds.core.v3; + +import "xds/annotations/v3/status.proto"; +import "xds/core/v3/context_params.proto"; + +import "validate/validate.proto"; + +option java_outer_classname = "ResourceNameProto"; +option java_multiple_files = true; +option java_package = "com.github.xds.core.v3"; +option go_package = "github.com/cncf/xds/go/xds/core/v3"; + +option (xds.annotations.v3.file_status).work_in_progress = true; + +// xDS resource name. This has a canonical xdstp:// URI representation: +// +// xdstp://{authority}/{type_url}/{id}?{context_params} +// +// where context_params take the form of URI query parameters. +// +// A xDS resource name fully identifies a network resource for transport +// purposes. xDS resource names in this form appear only in discovery +// request/response messages used with the xDS transport. +message ResourceName { + // Opaque identifier for the resource. Any '/' will not be escaped during URI + // encoding and will form part of the URI path. + string id = 1; + + // Logical authority for resource (not necessarily transport network address). + // Authorities are opaque in the xDS API, data-plane load balancers will map + // them to concrete network transports such as an xDS management server. + string authority = 2; + + // Fully qualified resource type (as in type URL without types.googleapis.com/ + // prefix). + string resource_type = 3 [(validate.rules).string = {min_len: 1}]; + + // Additional parameters that can be used to select resource variants. + ContextParams context = 4; +} diff --git a/api/gloo/gloo/external/xds/data/orca/v3/orca_load_report.proto b/api/gloo/gloo/external/xds/data/orca/v3/orca_load_report.proto new file mode 100644 index 000000000..40fb298d6 --- /dev/null +++ b/api/gloo/gloo/external/xds/data/orca/v3/orca_load_report.proto @@ -0,0 +1,48 @@ +syntax = "proto3"; + +package xds.data.orca.v3; + +option java_outer_classname = "OrcaLoadReportProto"; +option java_multiple_files = true; +option java_package = "com.github.xds.data.orca.v3"; +option go_package = "github.com/cncf/xds/go/xds/data/orca/v3"; + +import "validate/validate.proto"; + +// See section `ORCA load report format` of the design document in +// :ref:`https://github.com/envoyproxy/envoy/issues/6614`. + +message OrcaLoadReport { + // CPU utilization expressed as a fraction of available CPU resources. This + // should be derived from the latest sample or measurement. + double cpu_utilization = 1 [(validate.rules).double.gte = 0, (validate.rules).double.lte = 1]; + + // Memory utilization expressed as a fraction of available memory + // resources. This should be derived from the latest sample or measurement. + double mem_utilization = 2 [(validate.rules).double.gte = 0, (validate.rules).double.lte = 1]; + + // Total RPS being served by an endpoint. This should cover all services that an endpoint is + // responsible for. + // Deprecated -- use `rps_fractional` field instead. + uint64 rps = 3 [deprecated = true]; + + // Application specific requests costs. Each value is an absolute cost (e.g. 3487 bytes of + // storage) associated with the request. + map request_cost = 4; + + // Resource utilization values. Each value is expressed as a fraction of total resources + // available, derived from the latest sample or measurement. + map utilization = 5 + [(validate.rules).map.values.double.gte = 0, (validate.rules).map.values.double.lte = 1]; + + // Total RPS being served by an endpoint. This should cover all services that an endpoint is + // responsible for. + double rps_fractional = 6 [(validate.rules).double.gte = 0]; + + // Total EPS (errors/second) being served by an endpoint. This should cover + // all services that an endpoint is responsible for. + double eps = 7 [(validate.rules).double.gte = 0]; + + // Application specific opaque metrics. + map named_metrics = 8; +} diff --git a/api/gloo/gloo/external/xds/service/orca/v3/orca.proto b/api/gloo/gloo/external/xds/service/orca/v3/orca.proto new file mode 100644 index 000000000..03126cdca --- /dev/null +++ b/api/gloo/gloo/external/xds/service/orca/v3/orca.proto @@ -0,0 +1,36 @@ +syntax = "proto3"; + +package xds.service.orca.v3; + +option java_outer_classname = "OrcaProto"; +option java_multiple_files = true; +option java_package = "com.github.xds.service.orca.v3"; +option go_package = "github.com/cncf/xds/go/xds/service/orca/v3"; + +import "xds/data/orca/v3/orca_load_report.proto"; + +import "google/protobuf/duration.proto"; + +// See section `Out-of-band (OOB) reporting` of the design document in +// :ref:`https://github.com/envoyproxy/envoy/issues/6614`. + +// Out-of-band (OOB) load reporting service for the additional load reporting +// agent that does not sit in the request path. Reports are periodically sampled +// with sufficient frequency to provide temporal association with requests. +// OOB reporting compensates the limitation of in-band reporting in revealing +// costs for backends that do not provide a steady stream of telemetry such as +// long running stream operations and zero QPS services. This is a server +// streaming service, client needs to terminate current RPC and initiate +// a new call to change backend reporting frequency. +service OpenRcaService { + rpc StreamCoreMetrics(OrcaLoadReportRequest) returns (stream xds.data.orca.v3.OrcaLoadReport); +} + +message OrcaLoadReportRequest { + // Interval for generating Open RCA core metric responses. + google.protobuf.Duration report_interval = 1; + // Request costs to collect. If this is empty, all known requests costs tracked by + // the load reporting agent will be returned. This provides an opportunity for + // the client to selectively obtain a subset of tracked costs. + repeated string request_cost_names = 2; +} diff --git a/api/gloo/gloo/external/xds/type/matcher/v3/domain.proto b/api/gloo/gloo/external/xds/type/matcher/v3/domain.proto new file mode 100644 index 000000000..d4c7c54e6 --- /dev/null +++ b/api/gloo/gloo/external/xds/type/matcher/v3/domain.proto @@ -0,0 +1,46 @@ +syntax = "proto3"; + +package xds.type.matcher.v3; + +import "xds/annotations/v3/status.proto"; +import "xds/type/matcher/v3/matcher.proto"; + +import "validate/validate.proto"; + +option java_package = "com.github.xds.type.matcher.v3"; +option java_outer_classname = "ServerNameMatcherProto"; +option java_multiple_files = true; +option go_package = "github.com/cncf/xds/go/xds/type/matcher/v3"; + +option (xds.annotations.v3.file_status).work_in_progress = true; + +// [#protodoc-title: Server name matcher] + +// Matches a fully qualified server name against a set of domain +// names with optional wildcards. +message ServerNameMatcher { + // Specifies a set of exact and wildcard domains and a match action. The + // wildcard symbol `*` must appear at most once as the left-most part of + // the domain on a dot border. The wildcard matches one or more non-empty + // domain parts. + message DomainMatcher { + // A non-empty set of domain names with optional wildcards, e.g. + // `www.example.com`, `*.com`, or `*`. + repeated string domains = 1 [ (validate.rules).repeated = {min_items : 1} ]; + + // Match action to apply when the server name matches any of the domain + // names in the matcher. + Matcher.OnMatch on_match = 2; + } + + // Match a server name by multiple domain matchers. Each domain, exact or + // wildcard, must appear at most once across all the domain matchers. + // + // The server name will be matched against all wildcard domains starting from + // the longest suffix, i.e. `www.example.com` input will be first matched + // against `www.example.com`, then `*.example.com`, then `*.com`, then + // `*`, until the associated matcher action accepts the input. Note that + // wildcards must be on a dot border, and values like `*w.example.com` are + // invalid. + repeated DomainMatcher domain_matchers = 1; +} diff --git a/api/gloo/gloo/external/xds/type/matcher/v3/http_inputs.proto b/api/gloo/gloo/external/xds/type/matcher/v3/http_inputs.proto new file mode 100644 index 000000000..375f27f39 --- /dev/null +++ b/api/gloo/gloo/external/xds/type/matcher/v3/http_inputs.proto @@ -0,0 +1,26 @@ +syntax = "proto3"; + +package xds.type.matcher.v3; + +import "xds/annotations/v3/status.proto"; + +option java_package = "com.github.xds.type.matcher.v3"; +option java_outer_classname = "HttpInputsProto"; +option java_multiple_files = true; +option go_package = "github.com/cncf/xds/go/xds/type/matcher/v3"; + +option (xds.annotations.v3.file_status).work_in_progress = true; + +// [#protodoc-title: Common HTTP Inputs] + +// Specifies that matching should be performed on the set of :ref:`HTTP attributes +// `. +// +// The attributes will be exposed via [Common Expression Language](https://github.com/google/cel-spec) runtime to associated CEL matcher. +// +// Refer to Unified Matcher API documentation +// for usage details. +// +// [#comment:TODO(sergiitk): When implemented, add the extension tag.] +message HttpAttributesCelMatchInput { +} diff --git a/api/gloo/gloo/external/xds/type/matcher/v3/ip.proto b/api/gloo/gloo/external/xds/type/matcher/v3/ip.proto new file mode 100644 index 000000000..cb3dea192 --- /dev/null +++ b/api/gloo/gloo/external/xds/type/matcher/v3/ip.proto @@ -0,0 +1,53 @@ +syntax = "proto3"; + +package xds.type.matcher.v3; + +import "xds/annotations/v3/status.proto"; +import "xds/core/v3/cidr.proto"; +import "xds/type/matcher/v3/matcher.proto"; + +import "validate/validate.proto"; + +option java_package = "com.github.xds.type.matcher.v3"; +option java_outer_classname = "IPMatcherProto"; +option java_multiple_files = true; +option go_package = "github.com/cncf/xds/go/xds/type/matcher/v3"; + +option (xds.annotations.v3.file_status).work_in_progress = true; + +// [#protodoc-title: IP matcher] + +// Matches a specific IP address against a set of possibly overlapping subnets using a trie. +message IPMatcher { + // Specifies a list of IP address ranges and a match action. + message IPRangeMatcher { + // A non-empty set of CIDR ranges. + repeated core.v3.CidrRange ranges = 1 [(validate.rules).repeated = {min_items: 1}]; + + // Match action to apply when the IP address is within one of the CIDR ranges. + Matcher.OnMatch on_match = 2; + + // Indicates whether this match option should be considered if there is a + // more specific matcher. Exclusive matchers are not selected whenever a + // more specific matcher exists (e.g. matcher with a longer prefix) even + // when the more specific matcher fails its nested match condition. + // Non-exclusive matchers are considered if the more specific matcher + // exists but its nested match condition does not entirely match. + // Non-exclusive matchers are selected in the order of their specificity + // first (longest prefix first), then the order of declaration next. + // + // For example, consider two range matchers: an exclusive matcher *X* on + // `0.0.0.0/0` and a matcher *Y* on `192.0.0.0/2` with a nested match + // condition *Z*. For the input IP `192.168.0.1` matcher *Y* is the most + // specific. If its nested match condition *Z* does not accept the input, + // then the less specific matcher *X* does not apply either despite the + // input being within the range, because matcher *X* is exclusive. + // + // The opposite is true if matcher *X* is not marked as exclusive. In that + // case matcher *X* always matches whenever matcher "*Y* rejects the input. + bool exclusive = 3; + } + + // Match IP address by CIDR ranges. + repeated IPRangeMatcher range_matchers = 1; +} diff --git a/api/gloo/gloo/external/xds/type/matcher/v3/matcher.proto b/api/gloo/gloo/external/xds/type/matcher/v3/matcher.proto new file mode 100644 index 000000000..4966b456b --- /dev/null +++ b/api/gloo/gloo/external/xds/type/matcher/v3/matcher.proto @@ -0,0 +1,139 @@ +syntax = "proto3"; + +package xds.type.matcher.v3; + +import "xds/annotations/v3/status.proto"; +import "xds/core/v3/extension.proto"; +import "xds/type/matcher/v3/string.proto"; + +import "validate/validate.proto"; + +option java_package = "com.github.xds.type.matcher.v3"; +option java_outer_classname = "MatcherProto"; +option java_multiple_files = true; +option go_package = "github.com/cncf/xds/go/xds/type/matcher/v3"; + +// [#protodoc-title: Unified Matcher API] + +// A matcher, which may traverse a matching tree in order to result in a match action. +// During matching, the tree will be traversed until a match is found, or if no match +// is found the action specified by the most specific on_no_match will be evaluated. +// As an on_no_match might result in another matching tree being evaluated, this process +// might repeat several times until the final OnMatch (or no match) is decided. +message Matcher { + option (xds.annotations.v3.message_status).work_in_progress = true; + + // What to do if a match is successful. + message OnMatch { + oneof on_match { + option (validate.required) = true; + + // Nested matcher to evaluate. + // If the nested matcher does not match and does not specify + // on_no_match, then this matcher is considered not to have + // matched, even if a predicate at this level or above returned + // true. + Matcher matcher = 1; + + // Protocol-specific action to take. + core.v3.TypedExtensionConfig action = 2; + } + } + + // A linear list of field matchers. + // The field matchers are evaluated in order, and the first match + // wins. + message MatcherList { + // Predicate to determine if a match is successful. + message Predicate { + // Predicate for a single input field. + message SinglePredicate { + // Protocol-specific specification of input field to match on. + // [#extension-category: envoy.matching.common_inputs] + core.v3.TypedExtensionConfig input = 1 [(validate.rules).message = {required: true}]; + + oneof matcher { + option (validate.required) = true; + + // Built-in string matcher. + type.matcher.v3.StringMatcher value_match = 2; + + // Extension for custom matching logic. + // [#extension-category: envoy.matching.input_matchers] + core.v3.TypedExtensionConfig custom_match = 3; + } + } + + // A list of two or more matchers. Used to allow using a list within a oneof. + message PredicateList { + repeated Predicate predicate = 1 [(validate.rules).repeated = {min_items: 2}]; + } + + oneof match_type { + option (validate.required) = true; + + // A single predicate to evaluate. + SinglePredicate single_predicate = 1; + + // A list of predicates to be OR-ed together. + PredicateList or_matcher = 2; + + // A list of predicates to be AND-ed together. + PredicateList and_matcher = 3; + + // The invert of a predicate + Predicate not_matcher = 4; + } + } + + // An individual matcher. + message FieldMatcher { + // Determines if the match succeeds. + Predicate predicate = 1 [(validate.rules).message = {required: true}]; + + // What to do if the match succeeds. + OnMatch on_match = 2 [(validate.rules).message = {required: true}]; + } + + // A list of matchers. First match wins. + repeated FieldMatcher matchers = 1 [(validate.rules).repeated = {min_items: 1}]; + } + + message MatcherTree { + // A map of configured matchers. Used to allow using a map within a oneof. + message MatchMap { + map map = 1 [(validate.rules).map = {min_pairs: 1}]; + } + + // Protocol-specific specification of input field to match on. + core.v3.TypedExtensionConfig input = 1 [(validate.rules).message = {required: true}]; + + // Exact or prefix match maps in which to look up the input value. + // If the lookup succeeds, the match is considered successful, and + // the corresponding OnMatch is used. + oneof tree_type { + option (validate.required) = true; + + MatchMap exact_match_map = 2; + + // Longest matching prefix wins. + MatchMap prefix_match_map = 3; + + // Extension for custom matching logic. + core.v3.TypedExtensionConfig custom_match = 4; + } + } + + oneof matcher_type { + // A linear list of matchers to evaluate. + MatcherList matcher_list = 1; + + // A match tree to evaluate. + MatcherTree matcher_tree = 2; + } + + // Optional OnMatch to use if no matcher above matched (e.g., if there are no matchers specified + // above, or if none of the matches specified above succeeded). + // If no matcher above matched and this field is not populated, the match will be considered unsuccessful. + OnMatch on_no_match = 3; +} diff --git a/api/gloo/gloo/external/xds/type/matcher/v3/range.proto b/api/gloo/gloo/external/xds/type/matcher/v3/range.proto new file mode 100644 index 000000000..583400975 --- /dev/null +++ b/api/gloo/gloo/external/xds/type/matcher/v3/range.proto @@ -0,0 +1,69 @@ +syntax = "proto3"; + +package xds.type.matcher.v3; + +import "xds/type/v3/range.proto"; +import "xds/type/matcher/v3/matcher.proto"; + +import "validate/validate.proto"; + +option java_package = "com.github.xds.type.matcher.v3"; +option java_outer_classname = "RangeProto"; +option java_multiple_files = true; +option go_package = "github.com/cncf/xds/go/xds/type/matcher/v3"; + +// [#protodoc-title: Range matcher] + +// Specifies a set of ranges for matching an int64 number and the associated +// match actions. +message Int64RangeMatcher { + // Specifies a list of number ranges and a match action. + message RangeMatcher { + // A non-empty set of int64 ranges. + repeated xds.type.v3.Int64Range ranges = 1 + [(validate.rules).repeated = { min_items: 1 }]; + + // Match action to apply when the input number is within one of the ranges. + Matcher.OnMatch on_match = 2; + } + + // Match a number by a list of number ranges. If multiple ranges contain the + // input number, then the first action in this list is taken. + repeated RangeMatcher range_matchers = 1; +} + +// Specifies a set of ranges for matching an int32 number and the associated +// match actions. +message Int32RangeMatcher { + // Specifies a list of number ranges and a match action. + message RangeMatcher { + // A non-empty set of int32 ranges. + repeated xds.type.v3.Int32Range ranges = 1 + [(validate.rules).repeated = { min_items: 1 }]; + + // Match action to apply when the input number is within one of the ranges. + Matcher.OnMatch on_match = 2; + } + + // Match a number by a list of number ranges. If multiple ranges contain the + // input number, then the first action in this list is taken. + repeated RangeMatcher range_matchers = 1; +} + +// Specifies a set of ranges for matching a double number and the associated +// match actions. +message DoubleRangeMatcher { + // Specifies a list of number ranges and a match action. + message RangeMatcher { + // A non-empty set of double ranges. + repeated xds.type.v3.DoubleRange ranges = 1 + [(validate.rules).repeated = { min_items: 1 }]; + + // Match action to apply when the input number is within one of the ranges. + Matcher.OnMatch on_match = 2; + } + + // Match a number by a list of number ranges. If multiple ranges contain the + // input number, then the first action in this list is taken. + repeated RangeMatcher range_matchers = 1; +} diff --git a/api/gloo/gloo/external/xds/type/matcher/v3/regex.proto b/api/gloo/gloo/external/xds/type/matcher/v3/regex.proto new file mode 100644 index 000000000..1b82168cc --- /dev/null +++ b/api/gloo/gloo/external/xds/type/matcher/v3/regex.proto @@ -0,0 +1,45 @@ +syntax = "proto3"; + +package xds.type.matcher.v3; + +import "validate/validate.proto"; + +option java_package = "com.github.xds.type.matcher.v3"; +option java_outer_classname = "RegexProto"; +option java_multiple_files = true; +option go_package = "github.com/cncf/xds/go/xds/type/matcher/v3"; + +// [#protodoc-title: Regex matcher] + +// A regex matcher designed for safety when used with untrusted input. +message RegexMatcher { + // Google's [RE2](https://github.com/google/re2) regex engine. The regex + // string must adhere to the documented [syntax](https://github.com/google/re2/wiki/Syntax). The engine is designed to + // complete execution in linear time as well as limit the amount of memory + // used. + // + // Envoy supports program size checking via runtime. The runtime keys + // `re2.max_program_size.error_level` and `re2.max_program_size.warn_level` + // can be set to integers as the maximum program size or complexity that a + // compiled regex can have before an exception is thrown or a warning is + // logged, respectively. `re2.max_program_size.error_level` defaults to 100, + // and `re2.max_program_size.warn_level` has no default if unset (will not + // check/log a warning). + // + // Envoy emits two stats for tracking the program size of regexes: the + // histogram `re2.program_size`, which records the program size, and the + // counter `re2.exceeded_warn_level`, which is incremented each time the + // program size exceeds the warn level threshold. + message GoogleRE2 {} + + oneof engine_type { + option (validate.required) = true; + + // Google's RE2 regex engine. + GoogleRE2 google_re2 = 1 [ (validate.rules).message = {required : true} ]; + } + + // The regex match string. The string must be supported by the configured + // engine. + string regex = 2 [ (validate.rules).string = {min_len : 1} ]; +} diff --git a/api/gloo/gloo/external/xds/type/matcher/v3/string.proto b/api/gloo/gloo/external/xds/type/matcher/v3/string.proto new file mode 100644 index 000000000..fdc598e17 --- /dev/null +++ b/api/gloo/gloo/external/xds/type/matcher/v3/string.proto @@ -0,0 +1,66 @@ +syntax = "proto3"; + +package xds.type.matcher.v3; + +import "xds/type/matcher/v3/regex.proto"; + +import "validate/validate.proto"; + +option java_package = "com.github.xds.type.matcher.v3"; +option java_outer_classname = "StringProto"; +option java_multiple_files = true; +option go_package = "github.com/cncf/xds/go/xds/type/matcher/v3"; + +// [#protodoc-title: String matcher] + +// Specifies the way to match a string. +// [#next-free-field: 8] +message StringMatcher { + oneof match_pattern { + option (validate.required) = true; + + // The input string must match exactly the string specified here. + // + // Examples: + // + // * *abc* only matches the value *abc*. + string exact = 1; + + // The input string must have the prefix specified here. + // Note: empty prefix is not allowed, please use regex instead. + // + // Examples: + // + // * *abc* matches the value *abc.xyz* + string prefix = 2 [(validate.rules).string = {min_len: 1}]; + + // The input string must have the suffix specified here. + // Note: empty prefix is not allowed, please use regex instead. + // + // Examples: + // + // * *abc* matches the value *xyz.abc* + string suffix = 3 [(validate.rules).string = {min_len: 1}]; + + // The input string must match the regular expression specified here. + RegexMatcher safe_regex = 5 [(validate.rules).message = {required: true}]; + + // The input string must have the substring specified here. + // Note: empty contains match is not allowed, please use regex instead. + // + // Examples: + // + // * *abc* matches the value *xyz.abc.def* + string contains = 7 [(validate.rules).string = {min_len: 1}]; + } + + // If true, indicates the exact/prefix/suffix matching should be case insensitive. This has no + // effect for the safe_regex match. + // For example, the matcher *data* will match both input string *Data* and *data* if set to true. + bool ignore_case = 6; +} + +// Specifies a list of ways to match a string. +message ListStringMatcher { + repeated StringMatcher patterns = 1 [(validate.rules).repeated = {min_items: 1}]; +} diff --git a/api/gloo/gloo/external/xds/type/v3/range.proto b/api/gloo/gloo/external/xds/type/v3/range.proto new file mode 100644 index 000000000..8fc97ab2b --- /dev/null +++ b/api/gloo/gloo/external/xds/type/v3/range.proto @@ -0,0 +1,40 @@ +syntax = "proto3"; + +package xds.type.v3; + +option java_package = "com.github.xds.type.v3"; +option java_outer_classname = "RangeProto"; +option java_multiple_files = true; +option go_package = "github.com/cncf/xds/go/xds/type/v3"; + +// [#protodoc-title: Number range] + +// Specifies the int64 start and end of the range using half-open interval +// semantics [start, end). +message Int64Range { + // start of the range (inclusive) + int64 start = 1; + + // end of the range (exclusive) + int64 end = 2; +} + +// Specifies the int32 start and end of the range using half-open interval +// semantics [start, end). +message Int32Range { + // start of the range (inclusive) + int32 start = 1; + + // end of the range (exclusive) + int32 end = 2; +} + +// Specifies the double start and end of the range using half-open interval +// semantics [start, end). +message DoubleRange { + // start of the range (inclusive) + double start = 1; + + // end of the range (exclusive) + double end = 2; +} diff --git a/api/gloo/gloo/external/xds/type/v3/typed_struct.proto b/api/gloo/gloo/external/xds/type/v3/typed_struct.proto new file mode 100644 index 000000000..40d0a8dac --- /dev/null +++ b/api/gloo/gloo/external/xds/type/v3/typed_struct.proto @@ -0,0 +1,44 @@ +syntax = "proto3"; + +package xds.type.v3; + +option java_outer_classname = "TypedStructProto"; +option java_multiple_files = true; +option java_package = "com.github.xds.type.v3"; +option go_package = "github.com/cncf/xds/go/xds/type/v3"; + +import "google/protobuf/struct.proto"; + +// A TypedStruct contains an arbitrary JSON serialized protocol buffer message with a URL that +// describes the type of the serialized message. This is very similar to google.protobuf.Any, +// instead of having protocol buffer binary, this employs google.protobuf.Struct as value. +// +// This message is intended to be embedded inside Any, so it shouldn't be directly referred +// from other UDPA messages. +// +// When packing an opaque extension config, packing the expected type into Any is preferred +// wherever possible for its efficiency. TypedStruct should be used only if a proto descriptor +// is not available, for example if: +// +// - A control plane sends opaque message that is originally from external source in human readable +// format such as JSON or YAML. +// - The control plane doesn't have the knowledge of the protocol buffer schema hence it cannot +// serialize the message in protocol buffer binary format. +// - The DPLB doesn't have have the knowledge of the protocol buffer schema its plugin or extension +// uses. This has to be indicated in the DPLB capability negotiation. +// +// When a DPLB receives a TypedStruct in Any, it should: +// - Check if the type_url of the TypedStruct matches the type the extension expects. +// - Convert value to the type described in type_url and perform validation. +// +// TODO(lizan): Figure out how TypeStruct should be used with DPLB extensions that doesn't link +// protobuf descriptor with DPLB itself, (e.g. gRPC LB Plugin, Envoy WASM extensions). +message TypedStruct { + // A URL that uniquely identifies the type of the serialize protocol buffer message. + // This has same semantics and format described in google.protobuf.Any: + // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/any.proto + string type_url = 1; + + // A JSON representation of the above specified type. + google.protobuf.Struct value = 2; +} diff --git a/api/gloo/gloo/v1/artifact.proto b/api/gloo/gloo/v1/artifact.proto index 31e71fd09..c17ff10d7 100644 --- a/api/gloo/gloo/v1/artifact.proto +++ b/api/gloo/gloo/v1/artifact.proto @@ -5,6 +5,7 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1"; import "extproto/ext.proto"; option (extproto.equal_all) = true; //option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "github.com/solo-io/solo-kit/api/v1/metadata.proto"; import "github.com/solo-io/solo-kit/api/v1/solo-kit.proto"; diff --git a/api/gloo/gloo/v1/circuit_breaker.proto b/api/gloo/gloo/v1/circuit_breaker/circuit_breaker.proto similarity index 89% rename from api/gloo/gloo/v1/circuit_breaker.proto rename to api/gloo/gloo/v1/circuit_breaker/circuit_breaker.proto index fef3af64f..630009e94 100644 --- a/api/gloo/gloo/v1/circuit_breaker.proto +++ b/api/gloo/gloo/v1/circuit_breaker/circuit_breaker.proto @@ -1,11 +1,12 @@ syntax = "proto3"; package gloo.solo.io; -option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1"; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/circuit_breaker"; import "google/protobuf/wrappers.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; // CircuitBreakerConfig contains the options for customizing circuit breaking behavior. @@ -16,4 +17,5 @@ message CircuitBreakerConfig { google.protobuf.UInt32Value max_pending_requests = 2; google.protobuf.UInt32Value max_requests = 3; google.protobuf.UInt32Value max_retries = 4; + bool track_remaining = 5; } diff --git a/api/gloo/gloo/v1/connection.proto b/api/gloo/gloo/v1/connection.proto index c382ad6ee..17f462867 100644 --- a/api/gloo/gloo/v1/connection.proto +++ b/api/gloo/gloo/v1/connection.proto @@ -2,12 +2,13 @@ syntax = "proto3"; package gloo.solo.io; option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1"; - +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/protocol/protocol.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/wrappers.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; // Fine tune the settings for connections to an upstream @@ -18,7 +19,7 @@ message ConnectionConfig { google.protobuf.Duration connect_timeout = 2; // If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives. - // see more info here: https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/core/address.proto#envoy-api-msg-core-tcpkeepalive + // see more info here: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/address.proto#config-core-v3-tcpkeepalive message TcpKeepAlive{ // Maximum number of keepalive probes to send without response before deciding the connection is dead. uint32 keepalive_probes = 1; @@ -34,57 +35,10 @@ message ConnectionConfig { // For more info, see the [envoy docs](https://www.envoyproxy.io/docs/envoy/v1.14.1/api-v2/api/v2/cluster.proto#cluster) google.protobuf.UInt32Value per_connection_buffer_limit_bytes = 4; - message HttpProtocolOptions { - // The idle timeout for connections. The idle timeout is defined as the - // period in which there are no active requests. When the - // idle timeout is reached the connection will be closed. If the connection is an HTTP/2 - // downstream connection a drain sequence will occur prior to closing the connection, see - // :ref:`drain_timeout - // `. - // Note that request based timeouts mean that HTTP/2 PINGs will not keep the connection alive. - // If not specified, this defaults to 1 hour. To disable idle timeouts explicitly set this to 0. - // - // .. warning:: - // Disabling this timeout has a highly likelihood of yielding connection leaks due to lost TCP - // FIN packets, etc. - google.protobuf.Duration idle_timeout = 1; - - // Note: max_connection_duration is not included here because it is "not implemented for upstream connections," per Envoy's documentation. - - // The maximum number of headers. If unconfigured, the default - // maximum number of request headers allowed is 100. Requests that exceed this limit will receive - // a 431 response for HTTP/1.x and cause a stream reset for HTTP/2. - uint32 max_headers_count = 2; - - // Total duration to keep alive an HTTP request/response stream. If the time limit is reached the stream will be - // reset independent of any other timeouts. If not specified, this value is not set. - google.protobuf.Duration max_stream_duration = 3; - - // Action to take when Envoy receives client request with header names containing underscore - // characters. - // Underscore character is allowed in header names by the RFC-7230 and this behavior is implemented - // as a security measure due to systems that treat '_' and '-' as interchangeable. Envoy by default allows client request headers with underscore - // characters. - enum HeadersWithUnderscoresAction { - // Allow headers with underscores. This is the default behavior. - ALLOW = 0; - - // Reject client request. HTTP/1 requests are rejected with the 400 status. HTTP/2 requests - // end with the stream reset. The "httpN.requests_rejected_with_underscores_in_headers" counter - // is incremented for each rejected request. - REJECT_REQUEST = 1; - - // Drop the header with name containing underscores. The header is dropped before the filter chain is - // invoked and as such filters will not see dropped headers. The - // "httpN.dropped_headers_with_underscores" is incremented for each dropped header. - DROP_HEADER = 2; - } - // Action to take when a client request with a header name containing underscore characters is received. - // If this setting is not specified, the value defaults to ALLOW. - // Note: upstream responses are not affected by this setting. - HeadersWithUnderscoresAction headers_with_underscores_action = 4; - } // Additional options when handling HTTP requests upstream. These options will be applicable to // both HTTP1 and HTTP2 requests. - HttpProtocolOptions common_http_protocol_options = 5; + protocol.options.gloo.solo.io.HttpProtocolOptions common_http_protocol_options = 5; + + // Additional Options when handling HTTP requests upstream. These options will be applicable only to HTTP1 requests. + protocol.options.gloo.solo.io.Http1ProtocolOptions http1_protocol_options = 6; } diff --git a/api/gloo/gloo/v1/core/matchers/matchers.proto b/api/gloo/gloo/v1/core/matchers/matchers.proto index ebca16673..2a3bde01b 100644 --- a/api/gloo/gloo/v1/core/matchers/matchers.proto +++ b/api/gloo/gloo/v1/core/matchers/matchers.proto @@ -7,9 +7,13 @@ import "google/protobuf/wrappers.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; // Parameters for matching routes to requests received by a Gloo-managed proxy message Matcher { + message ConnectMatcher { + } + oneof path_specifier { // If specified, the route is a prefix rule meaning that the prefix must // match the beginning of the *:path* header. @@ -22,8 +26,7 @@ message Matcher { // If specified, the route is a regular expression rule meaning that the // regex must match the *:path* header once the query string is removed. The entire path // (without the query string) must match the regex. The rule will not match if only a - // sub-sequence of the *:path* header matches the regex. The regex grammar is defined `here - // `_. + // sub-sequence of the *:path* header matches the regex. The regex grammar is defined [here](http://en.cppreference.com/w/cpp/regex/ecmascript). // // Examples:
// @@ -34,8 +37,18 @@ message Matcher { // // Note that the complexity of the regex is constrained by the regex engine's "program size" setting. // If your regex is too complex, you may need to adjust the `regexMaxProgramSize` field - // in the `GlooOptions` section of your `Settings` resource + // in the `GlooOptions` section of your `Settings` resource (The gloo default is 1024) string regex = 3; + + // If this is used as the matcher, the matcher will only match CONNECT requests. + // Note that this will not match HTTP/2 upgrade-style CONNECT requests + // (WebSocket and the like) as they are normalized in Envoy as HTTP/1.1 style + // upgrades. + // This is the only way to match CONNECT requests for HTTP/1.1. For HTTP/2, + // where CONNECT requests may have a path, the path matchers will work if + // there is a path present. + // Note that CONNECT support is currently considered alpha in Envoy. + ConnectMatcher connect_matcher = 9; } // Indicates that prefix/path matching should be case sensitive. The default is true. @@ -77,7 +90,7 @@ message HeaderMatcher { // Examples: // * name=foo, invert_match=true: matches if no header named `foo` is present // * name=foo, value=bar, invert_match=true: matches if no header named `foo` with value `bar` is present - // * name=foo, value=``\d{3}``, regex=true, invert_match=true: matches if no header named `foo` with a value consisting of three integers is present + // * name=foo, value=`\d{3}`, regex=true, invert_match=true: matches if no header named `foo` with a value consisting of three integers is present bool invert_match = 4; } diff --git a/api/gloo/gloo/v1/core/selectors/selectors.proto b/api/gloo/gloo/v1/core/selectors/selectors.proto new file mode 100644 index 000000000..7b9e8dbce --- /dev/null +++ b/api/gloo/gloo/v1/core/selectors/selectors.proto @@ -0,0 +1,51 @@ +syntax = "proto3"; +package selectors.core.gloo.solo.io; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/core/selectors"; + +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + + +message Selector { + + repeated string namespaces = 1; + + map labels = 2; + + message Expression { + // Kubernetes label key, must conform to Kubernetes syntax requirements + // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set + string key = 1; + + // Selector expression operator, while the set-based syntax differs from Kubernetes (kubernetes: `key: !mylabel`, gloo: `key: mylabel, operator: "!"` | kubernetes: `key: mylabel`, gloo: `key: mylabel, operator: exists`), the functionality remains the same. + enum Operator { + // = + Equals = 0; + // == + DoubleEquals = 1; + // != + NotEquals = 2; + // in + In = 3; + // notin + NotIn = 4; + // exists + Exists = 5; + // ! + DoesNotExist = 6; + // gt + GreaterThan = 7; + // lt + LessThan = 8; + } + // The operator can only be in, notin, =, ==, !=, exists, ! (DoesNotExist), gt (GreaterThan), lt (LessThan). + Operator operator = 2; + repeated string values = 3; + } + + // Expressions allow for more flexible Route Tables label matching, such as equality-based requirements, set-based requirements, or a combination of both. + // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#equality-based-requirement + repeated Expression expressions = 3; +} \ No newline at end of file diff --git a/api/gloo/gloo/v1/destination_spec.proto b/api/gloo/gloo/v1/destination_spec.proto new file mode 100644 index 000000000..afbd7d33e --- /dev/null +++ b/api/gloo/gloo/v1/destination_spec.proto @@ -0,0 +1,25 @@ +syntax = "proto3"; +package gloo.solo.io; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1"; + +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/aws/aws.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/azure/azure.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/rest/rest.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/grpc/grpc.proto"; + +// Configuration for Destinations that are tied to the UpstreamSpec or ServiceSpec on that destination +message DestinationSpec { + // Note to developers: new DestinationSpecs must be added to this oneof field + // to be usable by Gloo. + oneof destination_type { + aws.options.gloo.solo.io.DestinationSpec aws = 1; + azure.options.gloo.solo.io.DestinationSpec azure = 2; + rest.options.gloo.solo.io.DestinationSpec rest = 3; + grpc.options.gloo.solo.io.DestinationSpec grpc = 4; + } +} \ No newline at end of file diff --git a/api/gloo/gloo/v1/endpoint.proto b/api/gloo/gloo/v1/endpoint.proto index 471e4a989..5a3660afd 100644 --- a/api/gloo/gloo/v1/endpoint.proto +++ b/api/gloo/gloo/v1/endpoint.proto @@ -5,6 +5,7 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "github.com/solo-io/solo-kit/api/v1/metadata.proto"; import "github.com/solo-io/solo-kit/api/v1/ref.proto"; diff --git a/api/gloo/gloo/v1/enterprise/options/ai/ai.proto b/api/gloo/gloo/v1/enterprise/options/ai/ai.proto new file mode 100644 index 000000000..d2006bae3 --- /dev/null +++ b/api/gloo/gloo/v1/enterprise/options/ai/ai.proto @@ -0,0 +1,990 @@ +syntax = "proto3"; +package ai.options.gloo.solo.io; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai"; + +import "github.com/solo-io/solo-kit/api/v1/ref.proto"; +import "google/protobuf/struct.proto"; +import "google/protobuf/wrappers.proto"; +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + +// The authorization token that the AI gateway uses to access the LLM provider API. +// This token is automatically sent in a request header, depending on the LLM provider. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +message SingleAuthToken { + + // Configuration for passthrough of the existing token. + // Currently, specifying an empty object (`passthrough: {}`) + // indicates that passthrough will be used for auth. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message Passthrough { + // Use a message to allow for future expansion + } + + oneof auth_token_source { + // Provide the token directly in the configuration for the Upstream. + // This option is the least secure. Only use this option for quick tests such as trying out AI Gateway. + string inline = 1; + // Store the API key in a Kubernetes secret in the same namespace as the Upstream. + // Then, refer to the secret in the Upstream configuration. This option is more secure than an inline token, + // because the API key is encoded and you can restrict access to secrets through RBAC rules. + // You might use this option in proofs of concept, controlled development and staging environments, + // or well-controlled prod environments that use secrets. + core.solo.io.ResourceRef secret_ref = 2; + // Passthrough the existing token. This token can either + // come directly from the client, or be generated by an OIDC flow + // early in the request lifecycle. This option is useful for + // backends which have federated identity setup and can re-use + // the token from the client. + // Currently, this token must exist in the `Authorization` header. + Passthrough passthrough = 3; + } +} + +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +enum ApiJsonSchema { + NOT_SET = 0; + ANTHROPIC = 1; + GEMINI = 2; + OPENAI = 3; +} + +// When you deploy the Gloo AI Gateway, you can use the `spec.ai` section of the Upstream resource +// to represent a backend for a logical Large Language Model (LLM) provider. +// This section configures the LLM provider that the AI Gateway routes requests to, +// and how the gateway should authenticate with the provider. +// Note that other Gloo AI Gateway LLM features, such as prompt guards +// and prompt enrichment, are configured at the route level in the +// [`spec.options.ai` section of the RouteOptions resource](#routesettings). +// +// To get started, see [About Gloo AI Gateway](https://docs.solo.io/gateway/latest/ai/overview/). +// For more information about the Upstream resource, see the +// [API reference]({{% versioned_link_path fromRoot="/reference/api/github.com/solo-io/solo-apis/api/gloo/gloo/v1/upstream.proto.sk/" %}}). +// +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +message UpstreamSpec { + + // Override the path used to send requests to the LLM provider. For example, you might need to go through a proxy + // and, as such, have a different path than the default for the LLM provider. + message PathOverride { + oneof override_type { + // Override the complete path and query parameters(if any) for the Chat request that is sent to the LLM provider. + // Any query parameters in this setting are preserved and sent to the LLM provider. The query parameters in the original request + // will be removed when this option is used. + // For the OpenAI platform API passthrough feature (such as to endpoints like `/v1/embeddings`), this setting is ignored. + // Instead, use the base_path setting. + string full_path = 1; + + // Instead of replacing the full path, prepend this base_path to the request path that is sent to the LLM provider. + // The OpenAI platform API passthrough feature supports customizing the base path, as such, you might use this setting if your provider + // is a proxy to OpenAI or otherwise supports the OpenAI API on a different path. + // For example, you can change the expected path of requests to the `/v1/*` APIs to `/openai/v1/*` APIs by setting the base path to `/openai`. + string base_path = 2; + } + } + + // Send requests to a custom host and port, such as to proxy the request and customize the chat completion path, + // or to use a different backend that is API-compliant with the upstream version. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message CustomHost { + // Custom host or IP address to send the traffic requests to. + string host = 1; + // Custom port to send the traffic requests to. + uint32 port = 2; + // Optional: hostname used to set the SNI (if is secure connection) and the host request header. + // If hostname is not set, host will be used instead + google.protobuf.StringValue hostname = 3; + + // Optional: override of the request path and query parameters to the custom host + PathOverride path_override = 4; + } + + // Settings for the [OpenAI](https://platform.openai.com/docs/overview) LLM provider. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message OpenAI { + // The authorization token that the AI gateway uses to access the OpenAI API. + // This token is automatically sent in the `Authorization` header of the + // request and prefixed with `Bearer`. + SingleAuthToken auth_token = 1; + // Optional: Send requests to a custom host and port or configure custom path override or hostname + CustomHost custom_host = 2; + // Optional: Override the model name, such as `gpt-4o-mini`. + // If unset, the model name is taken from the request. + // This setting can be useful when setting up model failover within the same LLM provider. + string model = 3; + } + + // Settings for the [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/) LLM provider. + // To find the values for the endpoint, deployment name, and API version, you can check the fields of an API request, such as + // `https://{endpoint}/openai/deployments/{deployment_name}/chat/completions?api-version={api_version}`. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message AzureOpenAI { + // The authorization token that the AI gateway uses to access the Azure OpenAI API. + // This token is automatically sent in the `api-key` header of the request. + oneof auth_token_source { + // The authorization token that the AI gateway uses to access the Azure OpenAI API. + // This token is automatically sent in the `api-key` header of the request. + SingleAuthToken auth_token = 1; + // use AD or other workload identity mechanism + } + + // The endpoint for the Azure OpenAI API to use, such as `my-endpoint.openai.azure.com`. + // If the scheme is included, it is stripped. + string endpoint = 2; + // The name of the Azure OpenAI model deployment to use. + // For more information, see the [Azure OpenAI model docs](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models). + string deployment_name = 3; + // The version of the Azure OpenAI API to use. + // For more information, see the [Azure OpenAI API version reference](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#api-specs). + string api_version = 4; + // Optional: Send requests to a custom host and port or configure custom path override or hostname + CustomHost custom_host = 5; + } + + // Settings for the [Gemini](https://ai.google.dev/gemini-api/docs) LLM provider. + // To find the values for the model and API version, you can check the fields of an API request, such as + // `https://generativelanguage.googleapis.com/{version}/models/{model}:generateContent?key={api_key}`. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message Gemini { + // The authorization token that the AI gateway uses to access the Gemini API. + // This token is automatically sent in the `x-goog-api-key` header of the request. + oneof auth_token_source { + // The authorization token that the AI gateway uses to access the Gemini API. + // This token is automatically sent in the `x-goog-api-key` header of the request. + SingleAuthToken auth_token = 1; + // TODO: use oauth + } + + // The Gemini model to use. + // For more information, see the [Gemini models docs](https://ai.google.dev/gemini-api/docs/models/gemini). + string model = 2; + // The version of the Gemini API to use. + // For more information, see the [Gemini API version docs](https://ai.google.dev/gemini-api/docs/api-versions). + string api_version = 3; + // Optional: Send requests to a custom host and port or configure custom path override or hostname + CustomHost custom_host = 4; + } + + // Settings for the [Vertex AI](https://cloud.google.com/vertex-ai/docs) LLM provider. + // To find the values for the project ID, project location, and publisher, you can check the fields of an API request, such as + // `https://{LOCATION}-aiplatform.googleapis.com/{VERSION}/projects/{PROJECT_ID}/locations/{LOCATION}/publishers/{PROVIDER}/`. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message VertexAI { + // The authorization token that the AI gateway uses to access the Vertex AI API. + // This token is automatically sent in the `key` header of the request. + oneof auth_token_source { + // The authorization token that the AI gateway uses to access the Vertex AI API. + // This token is automatically sent in the `key` header of the request. + SingleAuthToken auth_token = 1; + // TODO: use oauth + } + + // The Vertex AI model to use. + // For more information, see the [Vertex AI model docs](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models). + string model = 2; + // The version of the Vertex AI API to use. + // For more information, see the [Vertex AI API reference](https://cloud.google.com/vertex-ai/docs/reference#versions). + string api_version = 3; + // The ID of the Google Cloud Project that you use for the Vertex AI. + string project_id = 4; + // The location of the Google Cloud Project that you use for the Vertex AI. + string location = 5; + // Optional: The model path to route to. Defaults to the Gemini model path, `generateContent`. + string model_path = 6; + + // The type of publisher model to use. Currently, only Google is supported. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + enum Publisher { + GOOGLE = 0; + } + + // The type of publisher model to use. Currently, only Google is supported. + Publisher publisher = 7; + + // Optional: Specify the API json schema the model uses, default to GEMINI if not set + ApiJsonSchema json_schema = 8; + + // Optional: Send requests to a custom host and port or configure custom path override or hostname + CustomHost custom_host = 9; + } + + // Settings for the [Mistral AI](https://docs.mistral.ai/getting-started/quickstart/) LLM provider. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message Mistral { + // The authorization token that the AI gateway uses to access the OpenAI API. + // This token is automatically sent in the `Authorization` header of the + // request and prefixed with `Bearer`. + SingleAuthToken auth_token = 1; + // Optional: Send requests to a custom host and port or configure custom path override or hostname + CustomHost custom_host = 2; + // Optional: Override the model name. + // If unset, the model name is taken from the request. + // This setting can be useful when testing model failover scenarios. + string model = 3; + } + + // Settings for the [Anthropic](https://docs.anthropic.com/en/release-notes/api) LLM provider. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message Anthropic { + // The authorization token that the AI gateway uses to access the Anthropic API. + // This token is automatically sent in the `x-api-key` header of the request. + SingleAuthToken auth_token = 1; + // Optional: Send requests to a custom host and port or configure custom path override or hostname + CustomHost custom_host = 2; + // Optional: The version string used to override the `anthropic-version` header to pass to the Anthropic API. + // Note: This does not control the api version (eg `/v1`) in the url. + // For more information, see the [Anthropic API versioning docs](https://docs.anthropic.com/en/api/versioning). + string version = 3; + // Optional: Override the model name. + // If unset, the model name is taken from the request. + // This setting can be useful when testing model failover scenarios. + string model = 4; + } + + // Settings for the Bedrock LLM provider + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message Bedrock { + // The authorization config used to access authenticated AWS Bedrock services. + AwsCredentialProvider credential_provider = 1; + // Optional: Send requests to a custom host and port or configure custom path override or hostname + // Note: For AWS Bedrock, if custom_host is set, host_rewrite will be used to override the Host header before signing the request + CustomHost custom_host = 2; + // Required: model string. + // + // The model field is the supported model id published by AWS. See + string model = 3; + // Required: region string. + // + // The region is a string for the standard AWS region for the service that hosts the HTTP endpoint. The `AWS_SIGV4` signing algorithm is currently used by default. + // For more regions, see the AWS docs + // + // Example: us-west-2 + // + // NOTE: Multiple regions are not currently supported. + string region = 4; + + // TODO: add future support for match_excluded_headers for more control over what gets signed, signing_algorithm for multiple regions, etc. + + } + + // AwsCredentialProvider provider for signing the request. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message AwsCredentialProvider { + oneof auth_token_source { + // Store the ``AWS_ACCESS_KEY_ID``, ``AWS_SECRET_ACCESS_KEY``, and the optional ``AWS_SESSION_TOKEN`` in a Kubernetes secret in + // the same namespace as the Upstream. Then, refer to the secret in the Upstream configuration. + core.solo.io.ResourceRef secret_ref = 1; + + // Uses inlined AWS credentials for``AWS_ACCESS_KEY_ID``, ``AWS_SECRET_ACCESS_KEY``, and the optional ``AWS_SESSION_TOKEN``. + AWSInline inline = 2; + + // TODO: add support for AssumeRoleWithWebIdentityCredentialProvider, CredentialsFileCredentialProvider + } + } + + // Configuration to use an inline AWS credential. This is an equivalent to setting the well-known + // environment variables ``AWS_ACCESS_KEY_ID``, ``AWS_SECRET_ACCESS_KEY``, and the optional ``AWS_SESSION_TOKEN``. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message AWSInline { + // The AWS access key ID, which identifies the user and account. + string access_key_id = 1; + + // The AWS secret access key, which is used to sign the request. + string secret_access_key = 2; + + // The AWS session token. This value is required only when using temporary credentials, such as from STS or an assumed role. + string session_token = 3; + } + + // Configure backends for multiple hosts or models from the same provider in one Upstream resource. + // This method can be useful for creating one logical endpoint that is backed + // by multiple hosts or models. + // + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + // + // In the `priorities` section, the order of `pool` entries defines the priority of the backend endpoints. + // The `pool` entries can either define a list of backends or a single backend. + // Note: Only two levels of nesting are permitted. Any nested entries after the second level are ignored. + // + // ```yaml + // multi: + // priorities: + // - pool: + // - azureOpenai: + // deploymentName: gpt-4o-mini + // apiVersion: 2024-02-15-preview + // endpoint: ai-gateway.openai.azure.com + // authToken: + // secretRef: + // name: azure-secret + // namespace: gloo-system + // - pool: + // - azureOpenai: + // deploymentName: gpt-4o-mini-2 + // apiVersion: 2024-02-15-preview + // endpoint: ai-gateway-2.openai.azure.com + // authToken: + // secretRef: + // name: azure-secret-2 + // namespace: gloo-system + // ``` + message MultiPool { + // An entry represeting an LLM provider backend that the AI Gateway routes requests to. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message Backend { + oneof llm { + // Configure an [OpenAI](https://platform.openai.com/docs/overview) backend. + OpenAI openai = 1; + // Configure a [Mistral AI](https://docs.mistral.ai/getting-started/quickstart/) backend. + Mistral mistral = 2; + // Configure an [Anthropic](https://docs.anthropic.com/en/release-notes/api) backend. + Anthropic anthropic = 3; + // Configure an [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/) backend. + AzureOpenAI azure_openai = 4; + // Configure a [Gemini](https://ai.google.dev/gemini-api/docs) backend. + Gemini gemini = 5; + // Configure a [Vertex AI](https://cloud.google.com/vertex-ai/docs) backend. + VertexAI vertex_ai = 6; + // Configure a [Bedrock](https://aws.amazon.com/bedrock/) backend. + Bedrock bedrock = 7; + } + } + + // The order of `pool` entries within this section defines the priority of the backend endpoints. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message Priority { + // A list of LLM provider backends within a single endpoint pool entry. + repeated Backend pool = 1; + } + + // The order of `pool` entries within this section defines the priority of the backend endpoints. + repeated Priority priorities = 1; + } + + oneof llm { + // Configure an [OpenAI](https://platform.openai.com/docs/overview) backend. + OpenAI openai = 1; + // Configure a [Mistral AI](https://docs.mistral.ai/getting-started/quickstart/) backend. + Mistral mistral = 2; + // Configure an [Anthropic](https://docs.anthropic.com/en/release-notes/api) backend. + Anthropic anthropic = 3; + // Configure an [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/) backend. + AzureOpenAI azure_openai = 4; + // Configure backends for multiple LLM providers in one logical endpoint. + MultiPool multi = 5; + // Configure a [Gemini](https://ai.google.dev/gemini-api/docs) backend. + Gemini gemini = 6; + // Configure a [Vertex AI](https://cloud.google.com/vertex-ai/docs) backend. + VertexAI vertex_ai = 7; + // Configure a [Bedrock](https://aws.amazon.com/bedrock/) backend. + Bedrock bedrock = 8; + } +} + +// When you deploy the Gloo AI Gateway, you can use the `spec.options.ai` section +// of the RouteOptions resource to configure the behavior of the LLM provider +// on the level of individual routes. These route settings, such as prompt enrichment, +// retrieval augmented generation (RAG), and semantic caching, are applicable only +// for routes that send requests to an LLM provider backend. +// +// For more information about the RouteOptions resource, see the +// [API reference]({{% versioned_link_path fromRoot="/reference/api/github.com/solo-io/solo-apis/api/gloo/gloo/v1/route_options.proto.sk/" %}}). +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +message RouteSettings { + + // Enrich requests sent to the LLM provider by appending and prepending system prompts. + // This can be configured only for LLM providers that use the `CHAT` API route type. + AIPromptEnrichment prompt_enrichment = 1; + + // Set up prompt guards to block unwanted requests to the LLM provider and mask sensitive data. + // Prompt guards can be used to reject requests based on the content of the prompt, as well as + // mask responses based on the content of the response. + AIPromptGuard prompt_guard = 2; + + // [Retrieval augmented generation (RAG)](https://research.ibm.com/blog/retrieval-augmented-generation-RAG) + // is a technique of providing relevant context by retrieving relevant data from one or more + // context datasets and augmenting the prompt with the retrieved information. + // This can be used to improve the quality of the generated text. + RAG rag = 3; + + // Cache previous model responses to provide faster responses to similar requests in the future. + // Results might vary depending on the embedding mechanism used, as well + // as the similarity threshold set. + SemanticCache semantic_cache = 4; + + // Provide defaults to merge with user input fields. + // Defaults do _not_ override the user input fields, unless you explicitly set `override` to `true`. + repeated FieldDefault defaults = 5; + + // The type of route to the LLM provider API. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + enum RouteType { + // The LLM generates the full response before responding to a client. + CHAT = 0; + // Stream responses to a client, which allows the LLM to stream out tokens as they are generated. + CHAT_STREAMING = 1; + } + + // The type of route to the LLM provider API. Currently, `CHAT` and `CHAT_STREAMING` are supported. + RouteType route_type = 6; +} + +// Provide defaults to merge with user input fields. +// Defaults do _not_ override the user input fields, unless you explicitly set `override` to `true`. +// +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +// +// Example overriding the system field for Anthropic: +// ```yaml +// # Anthropic doesn't support a system chat type +// defaults: +// - field: "system" +// value: "answer all questions in french" +// ``` +// +// Example setting the temperature and overriding `max_tokens`: +// ```yaml +// defaults: +// - field: "temperature" +// value: 0.5 +// - field: "max_tokens" +// value: 100 +// ``` +message FieldDefault { + // The name of the field. + string field = 1; + // The field default value, which can be any JSON Data Type. + google.protobuf.Value value = 2; + // Whether to override the field's value if it already exists. + // Defaults to false. + bool override = 3; +} + +// Configuration settings for a Postgres datastore. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +message Postgres { + // Connection string to the Postgres database. For example, to use a vector database + // deployed to your cluster, your connection string might look similar to + // `postgresql+psycopg://gloo:gloo@vector-db.default.svc.cluster.local:5432/gloo`. + string connection_string = 1; + // Name of the collection table to use. + string collection_name = 2; +} + +// Configuration of the API used to generate the embedding. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +message Embedding { + + // Embedding settings for the OpenAI provider. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message OpenAI { + oneof auth_token_source { + // The authorization token that the AI gateway uses to access the OpenAI API. + // This token is automatically sent in the `Authorization` header of the + // request and prefixed with `Bearer`. + SingleAuthToken auth_token = 1; + // re-use the token from the backend + // google.protobuf.Empty inherit_backend_token = 3; + } + } + + // Embedding settings for the Azure OpenAI provider. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message AzureOpenAI { + oneof auth_token_source { + // The authorization token that the AI gateway uses to access the Azure OpenAI API. + // This token is automatically sent in the `api-key` header of the request. + SingleAuthToken auth_token = 1; + // re-use the token from the backend + // google.protobuf.Empty inherit_backend_token = 3; + } + + // The version of the Azure OpenAI API to use. + // For more information, see the [Azure OpenAI API version reference](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#api-specs). + string api_version = 2; + // The endpoint for the Azure OpenAI API to use, such as `my-endpoint.openai.azure.com`. + // If the scheme is not included, it is added. + string endpoint = 3; + // The name of the Azure OpenAI model deployment to use. + // For more information, see the [Azure OpenAI model docs](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models). + string deployment_name = 4; + } + + // Configuration for the backend LLM provider authentication token. + oneof embedding { + // Embedding settings for the OpenAI provider. + OpenAI openai = 1; + // Embedding settings for the Azure OpenAI provider. + AzureOpenAI azure_openai = 2; + } +} + +// Cache previous model responses to provide faster responses to similar requests in the future. +// Results might vary depending on the embedding mechanism used, as well +// as the similarity threshold set. Semantic caching reduces the number of requests +// to the LLM provider, improves the response time, and reduces costs. +// +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +// +// Example configuring a route to use a `redis` datastore and OpenAI for RAG: +// ```yaml +// semanticCache: +// datastore: +// redis: +// connectionString: redis://172.17.0.1:6379 +// embedding: +// openai: +// authToken: +// secretRef: +// name: openai-secret +// namespace: gloo-system +// ``` +message SemanticCache { + + // Settings for a Redis database. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message Redis { + // Connection string to the Redis database, such as `redis://172.17.0.1:6379`. + string connection_string = 1; + + // Similarity score threshold value between 0.0 and 1.0 that determines how similar + // two queries must be in order to return a cached result. + // The lower the number, the more similar the queries must be for a cache hit. + // + // +kubebuilder:validation:Minimum=0 + // +kubebuilder:validation:Maximum=1 + // Deprecated: Prefer setting the distance threshold in the RouteOptions.SemanticCache resource. + float score_threshold = 2; + } + + // Settings for a Weaviate database. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message Weaviate { + // Connection string to the Weaviate database. + // Do not include the scheme. For example, the format + // `weaviate.my-ns.svc.cluster.local` is correct. The format + // `http://weaviate.my-ns.svc.cluster.local`, which includes the scheme, is incorrect. + string host = 1; + // HTTP port to use. If unset, defaults to `8080`. + uint32 http_port = 2; + // GRPC port to use. If unset, defaults to `50051`. + uint32 grpc_port = 3; + // Whether to use a secure connection. Defaults to `true`. + bool insecure = 4; + } + + // Data store from which to cache the request and response pairs. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message DataStore { + oneof datastore { + // Settings for a Redis database. + Redis redis = 1; + // Settings for a Weaviate database. + Weaviate weaviate = 2; + } + } + // The caching mode to use for the request and response lifecycle. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + enum Mode { + // Read and write to the cache as a part of the request and response lifecycle. + READ_WRITE = 0; + // Only read from the cache, and do not write to it. + // Data is written to the cache outside of the request and response cycle. + READ_ONLY = 1; + } + // Data store from which to cache the request and response pairs. + DataStore datastore = 1; + // Model to use to retrieve the embedding mechanism. + Embedding embedding = 2; + // Time before data in the cache is considered expired. + uint32 ttl = 3; + // The caching mode to use for the request and response lifecycle. Supported values include `READ_WRITE` or `READ_ONLY`. + Mode mode = 4; + + // Distance score threshold value between 0.0 and 1.0 that determines how similar + // two queries must be in order to return a cached result. + // The lower the number, the more similar the queries must be for a cache hit. + // + // +kubebuilder:validation:Minimum=0 + // +kubebuilder:validation:Maximum=1 + float distance_threshold = 5; +} + +// [Retrieval augmented generation (RAG)](https://research.ibm.com/blog/retrieval-augmented-generation-RAG) +// is a technique of providing relevant context by retrieving relevant data from one or more +// context datasets and augmenting the prompt with the retrieved information. +// This can be used to improve the quality of the generated text. +// +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +// +// {{% notice note %}} +// The same embedding mechanism that was used for the initial +// creation of the context datasets must be used for the prompt. +// {{% /notice %}} +// +// Example configuring a route to use a `postgres` datastore and OpenAI for RAG: +// ```yaml +// rag: +// datastore: +// postgres: +// connectionString: postgresql+psycopg://gloo:gloo@172.17.0.1:6024/gloo +// collectionName: default +// embedding: +// openai: +// authToken: +// secretRef: +// name: openai-secret +// namespace: gloo-system +// ``` +// +// {{% notice tip %}} +// For an extended example that includes deploying a vector database with a context dataset, +// check out the [Retrieval augmented generation (RAG) tutorial](https://docs.solo.io/gateway/main/ai/tutorials/rag/). +// {{% /notice %}} +message RAG { + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message DataStore { + oneof datastore { + // Configuration settings for a Postgres datastore. + Postgres postgres = 1; + } + } + // Data store from which to fetch the context embeddings. + DataStore datastore = 1; + // Model to use to retrieve the context embeddings. + Embedding embedding = 2; + // Template to use to embed the returned context. + string prompt_template = 3; +} + +// Enrich requests sent to the LLM provider by appending and prepending system prompts. +// This can be configured only for LLM providers that use the CHAT API type. +// +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +// Prompt enrichment allows you to add additional context to the prompt before sending it to the model. +// Unlike RAG or other dynamic context methods, prompt enrichment is static and is applied to every request. +// +// **Note**: Some providers, including Anthropic, do not support SYSTEM role messages, and instead have a dedicated +// system field in the input JSON. In this case, use the [`defaults` setting](#fielddefault) to set the system field. +// +// The following example prepends a system prompt of `Answer all questions in French.` +// and appends `Describe the painting as if you were a famous art critic from the 17th century.` +// to each request that is sent to the `openai` HTTPRoute. +// ```yaml +// apiVersion: gateway.solo.io/v1 +// kind: RouteOption +// metadata: +// name: openai-opt +// namespace: gloo-system +// spec: +// targetRefs: +// - group: gateway.networking.k8s.io +// kind: HTTPRoute +// name: openai +// options: +// ai: +// promptEnrichment: +// prepend: +// - role: SYSTEM +// content: "Answer all questions in French." +// append: +// - role: USER +// content: "Describe the painting as if you were a famous art critic from the 17th century." +// ``` +message AIPromptEnrichment { + // An entry for a message to prepend or append to each prompt. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message Message { + // Role of the message. The available roles depend on the backend + // LLM provider model, such as `SYSTEM` or `USER` in the OpenAI API. + string role = 1; + // String content of the message. + string content = 2; + } + // A list of messages to be prepended to the prompt sent by the client. + repeated Message prepend = 2; + // A list of messages to be appended to the prompt sent by the client. + repeated Message append = 3; +} + +// Set up prompt guards to block unwanted requests to the LLM provider and mask sensitive data. +// Prompt guards can be used to reject requests based on the content of the prompt, as well as +// mask responses based on the content of the response. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +// +// This example rejects any request prompts that contain +// the string "credit card", and masks any credit card numbers in the response. +// ```yaml +// promptGuard: +// request: +// customResponse: +// message: "Rejected due to inappropriate content" +// regex: +// action: REJECT +// matches: +// - pattern: "credit card" +// name: "CC" +// response: +// regex: +// builtins: +// - CREDIT_CARD +// action: MASK +// ``` +message AIPromptGuard { + + // Regular expression (regex) matching for prompt guards and data masking. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message Regex { + // Built-in regex patterns for specific types of strings in prompts. + // For example, if you specify `CREDIT_CARD`, any credit card numbers + // in the request or response are matched. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + enum BuiltIn { + // Default regex matching for Social Security numbers. + SSN = 0; + // Default regex matching for credit card numbers. + CREDIT_CARD = 1; + // Default regex matching for phone numbers. + PHONE_NUMBER = 2; + // Default regex matching for email addresses. + EMAIL = 3; + } + + // Regular expression (regex) matching for prompt guards and data masking. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message RegexMatch { + // The regex pattern to match against the request or response. + string pattern = 1; + // An optional name for this match, which can be used for debugging purposes. + string name = 2; + } + // A list of regex patterns to match against the request or response. + // Matches and built-ins are additive. + repeated RegexMatch matches = 1; + // A list of built-in regex patterns to match against the request or response. + // Matches and built-ins are additive. + repeated BuiltIn builtins = 2; + + // The action to take if a regex pattern is matched in a request or response. + // This setting applies only to request matches. Response matches are always masked by default. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + enum Action { + // Mask the matched data in the request. + MASK = 0; + // Reject the request if the regex matches content in the request. + REJECT = 1; + } + + // The action to take if a regex pattern is matched in a request or response. + // This setting applies only to request matches. Response matches are always masked by default. + Action action = 3; + } + + // Configure a webhook to forward requests or responses to for prompt guarding. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message Webhook { + // Host to send the traffic to. + string host = 1; + // Port to send the traffic to + uint32 port = 2; + // Describes how to match a given string in HTTP headers. Match is case-sensitive. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message HeaderMatch { + // The header string match type. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + enum MatchType { + // The string must match exactly the specified string. + EXACT = 0; + // The string must have the specified prefix. + PREFIX = 1; + // The string must have the specified suffix. + SUFFIX = 2; + // The header string must contain the specified string. + CONTAINS = 3; + // The string must match the specified [RE2-style regular expression](https://github.com/google/re2/wiki/) pattern. + REGEX = 4; + } + // The header key string to match against. + string key = 1; + // The type of match to use. + MatchType match_type = 2; + } + // Headers to forward with the request to the webhook. + repeated HeaderMatch forwardHeaders = 3; + } + + // Pass prompt data through an external moderation model endpoint, + // which compares the request prompt input to predefined content rules. + // Any requests that are routed through Gloo AI Gateway pass through the + // moderation model that you specify. If the content is identified as harmful + // according to the model's content rules, the request is automatically rejected. + // + // You can configure an moderation endpoint either as a standalone prompt guard setting + // or in addition to other request and response guard settings. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message Moderation { + // Configure an OpenAI moderation endpoint. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message OpenAI { + // The name of the OpenAI moderation model to use. Defaults to + // [`omni-moderation-latest`](https://platform.openai.com/docs/guides/moderation). + string model = 1; + + // The authorization token that the AI gateway uses + // to access the OpenAI moderation model. + oneof auth_token_source { + // The authorization token that the AI gateway uses + // to access the OpenAI moderation model. + SingleAuthToken auth_token = 2; + // re-use the token from the backend + // google.protobuf.Empty inherit_backend_token = 3; + } + } + + // Pass prompt data through an external moderation model endpoint, + // which compares the request prompt input to predefined content rules. + oneof moderation { + // Configure an OpenAI moderation endpoint. + OpenAI openai = 1; + } + } + + // Prompt guards to apply to requests sent by the client. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message Request { + // A custom response to return to the client if request content + // is matched against a regex pattern and the action is `REJECT`. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message CustomResponse { + // A custom response message to return to the client. If not specified, defaults to + // "The request was rejected due to inappropriate content". + string message = 1; + + // The status code to return to the client. + uint32 status_code = 2; + } + // A custom response message to return to the client. If not specified, defaults to + // "The request was rejected due to inappropriate content". + CustomResponse custom_response = 1; + + // Regular expression (regex) matching for prompt guards and data masking. + Regex regex = 2; + + // Configure a webhook to forward requests to for prompt guarding. + Webhook webhook = 3; + + // Pass prompt data through an external moderation model endpoint, + // which compares the request prompt input to predefined content rules. + Moderation moderation = 4; + } + + // Prompt guards to apply to responses returned by the LLM provider. + // {{% notice note %}} + // The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. + // {{% /notice %}} + message Response { + // Regular expression (regex) matching for prompt guards and data masking. + Regex regex = 1; + + // Configure a webhook to forward responses to for prompt guarding. + Webhook webhook = 2; + } + // Prompt guards to apply to requests sent by the client. + Request request = 1; + // Prompt guards to apply to responses returned by the LLM provider. + Response response = 2; +} \ No newline at end of file diff --git a/api/gloo/gloo/v1/enterprise/options/caching/caching.proto b/api/gloo/gloo/v1/enterprise/options/caching/caching.proto new file mode 100644 index 000000000..509701a23 --- /dev/null +++ b/api/gloo/gloo/v1/enterprise/options/caching/caching.proto @@ -0,0 +1,33 @@ +syntax = "proto3"; +package caching.options.gloo.solo.io; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/caching"; + + +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/matcher/v3/string.proto"; +import "github.com/solo-io/solo-kit/api/v1/ref.proto"; +import "google/protobuf/wrappers.proto"; +import "google/protobuf/duration.proto"; +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + +// DEPRECATED: the cache filter is deprecated and scheduled for removal in Gloo 1.21. This file should not be modified further. + +message Settings { + // The basic reference for the service. Details name and namespace. + core.solo.io.ResourceRef caching_service_ref = 1; + // A list of string matchers that state what headers are allowed to vary + // and still be cached. Per upstream envoy allowed vary headers. + repeated .solo.io.envoy.type.matcher.v3.StringMatcher allowed_vary_headers = 2; + + // Connection timeout for retrieval from an sync cache + google.protobuf.Duration timeout = 3; + + // Max payload size to cache. If unset defaults to a reasonable value. + // If explicitly set to 0 will prevent anything with a body from + // being cached. + google.protobuf.UInt32Value max_payload_size = 4; + + +} diff --git a/api/gloo/gloo/v1/enterprise/options/dlp/dlp.proto b/api/gloo/gloo/v1/enterprise/options/dlp/dlp.proto index 39fc01da8..f49558432 100644 --- a/api/gloo/gloo/v1/enterprise/options/dlp/dlp.proto +++ b/api/gloo/gloo/v1/enterprise/options/dlp/dlp.proto @@ -2,12 +2,15 @@ syntax = "proto3"; package dlp.options.gloo.solo.io; option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/dlp"; +import "validate/validate.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/core/matchers/matchers.proto"; import "github.com/solo-io/solo-kit/api/external/envoy/type/percent.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/transformation_ee/transformation.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; /* DLP (data loss prevention) @@ -99,40 +102,43 @@ message Config { */ message Action { /* - The following pre-made action types map to the following regex matchers: + The following pre-made action types map to subgroup 1 of the listed regex patterns: - SSN: - - '(?!\D)[0-9]{9}(?=\D|$)' - - '(?!\D)[0-9]{3}\-[0-9]{2}\-[0-9]{4}(?=\D|$)' - - '(?!\D)[0-9]{3}\ [0-9]{2}\ [0-9]{4}(?=\D|$)' + SSN: + - '(?:^|\D)([0-9]{9})(?:\D|$)' + - '(?:^|\D)([0-9]{3}\-[0-9]{2}\-[0-9]{4})(?:\D|$)' + - '(?:^|\D)([0-9]{3}\ [0-9]{2}\ [0-9]{4})(?:\D|$)' MASTERCARD: - - '(?!\D)5[1-5][0-9]{2}(\ |\-|)[0-9]{4}(\ |\-|)[0-9]{4}(\ |\-|)[0-9]{4}(?=\D|$)' + - '(?:^|\D)(5[1-5][0-9]{2}(?:\ |\-|)[0-9]{4}(?:\ |\-|)[0-9]{4}(?:\ |\-|)[0-9]{4})(?:\D|$)' VISA: - - '(?!\D)4[0-9]{3}(\ |\-|)[0-9]{4}(\ |\-|)[0-9]{4}(\ |\-|)[0-9]{4}(?=\D|$)' + - '(?:^|\D)(4[0-9]{3}(?:\ |\-|)[0-9]{4}(?:\ |\-|)[0-9]{4}(?:\ |\-|)[0-9]{4})(?:\D|$)' AMEX: - - '(?!\D)(34|37)[0-9]{2}(\ |\-|)[0-9]{6}(\ |\-|)[0-9]{5}(?=\D|$)' + - '(?:^|\D)((?:34|37)[0-9]{2}(?:\ |\-|)[0-9]{6}(?:\ |\-|)[0-9]{5})(?:\D|$)' DISCOVER: - - '(?!\D)6011(\ |\-|)[0-9]{4}(\ |\-|)[0-9]{4}(\ |\-|)[0-9]{4}(?=\D|$)' + - '(?:^|\D)(6011(?:\ |\-|)[0-9]{4}(?:\ |\-|)[0-9]{4}(?:\ |\-|)[0-9]{4})(?:\D|$)' JCB: - - '(?!\D)3[0-9]{3}(\ |\-|)[0-9]{4}(\ |\-|)[0-9]{4}(\ |\-|)[0-9]{4}(?=\D|$)' - - '(?!\D)(2131|1800)[0-9]{11}(?=\D|$)' + - '(?:^|\D)(3[0-9]{3}(?:\ |\-|)[0-9]{4}(?:\ |\-|)[0-9]{4}(?:\ |\-|)[0-9]{4})(?:\D|$)' + - '(?:^|\D)((?:2131|1800)[0-9]{11})(?:\D|$)' DINERS_CLUB: - - '(?!\D)30[0-5][0-9](\ |\-|)[0-9]{6}(\ |\-|)[0-9]{4}(?=\D|$)' - - '(?!\D)(36|38)[0-9]{2}(\ |\-|)[0-9]{6}(\ |\-|)[0-9]{4}(?=\D|$)' + - '(?:^|\D)(30[0-5][0-9](?:\ |\-|)[0-9]{6}(?:\ |\-|)[0-9]{4})(?:\D|$)' + - '(?:^|\D)((?:36|38)[0-9]{2}(?:\ |\-|)[0-9]{6}(?:\ |\-|)[0-9]{4})(?:\D|$)' CREDIT_CARD_TRACKERS: - - '[1-9][0-9]{2}\-[0-9]{2}\-[0-9]{4}\^\d' - - '(?!\D)\%?[Bb]\d{13,19}\^[\-\/\.\w\s]{2,26}\^[0-9][0-9][01][0-9][0-9]{3}' - - '(?!\D)\;\d{13,19}\=(\d{3}|)(\d{4}|\=)' + - '([1-9][0-9]{2}\-[0-9]{2}\-[0-9]{4}\^\d)' + - '(?:^|\D)(\%?[Bb]\d{13,19}\^[\-\/\.\w\s]{2,26}\^[0-9][0-9][01][0-9][0-9]{3})' + - '(?:^|\D)(\;\d{13,19}\=(?:\d{3}|)(?:\d{4}|\=))' ALL_CREDIT_CARDS: - - (All credit card related regexes from above) + - (All credit card related regexes from above) + + ALL_CREDIT_CARDS_COMBINED: + - Same as ALL_CREDIT_CARDS but using a single action instead of multiple which should be marginally faster */ enum ActionType { @@ -146,6 +152,8 @@ message Action { DINERS_CLUB = 7; CREDIT_CARD_TRACKERS = 8; ALL_CREDIT_CARDS = 9; + KEYVALUE = 10; + ALL_CREDIT_CARDS_COMBINED = 11; } // The action type to implement. @@ -153,6 +161,10 @@ message Action { // The custom user action to be applied. // This field will only be used if the custom action type is specified above. CustomAction custom_action = 2; + // The key/value action to be applied. + // This field will only be used if the KEYVALUE action type is specified above + // will only affect access logs and response headers, not response bodies + KeyValueAction key_value_action = 4; // Shadow represents whether the action should be taken, or just recorded. bool shadow = 3; } @@ -186,7 +198,7 @@ message CustomAction { // This name is used for logging and debugging purposes. string name = 1; // The list of regex strings which will be applied in order. - repeated string regex = 2; + repeated string regex = 2 [deprecated = true]; // The masking character for the sensitive data. // default value: X string mask_char = 3; @@ -194,4 +206,25 @@ message CustomAction { // default value: 75% // rounds ratio (percent/100) by std::round http://www.cplusplus.com/reference/cmath/round/ .solo.io.envoy.type.Percent percent = 4; + // List of regexes to apply to the response body to match data which should be + // masked. They will be applied iteratively in the order which they are + // specified. If this field and `regex` are both provided, all the regexes will + // be applied iteratively in the order provided, starting with the ones from `regex` + repeated .envoy.config.filter.http.transformation_ee.v2.RegexAction regex_actions = 5; +} + +message KeyValueAction { + // The name of the key/value action. + // This name is used for logging and debugging purposes. + string name = 1; + // The masking character for the sensitive data. + // default value: X + string mask_char = 2; + // The percent of the string which will be masked by the mask_char + // default value: 75% + // rounds ratio (percent/100) by std::round http://www.cplusplus.com/reference/cmath/round/ + .solo.io.envoy.type.Percent percent = 3; + // The key for which corresponding header names/dynamic metadata values should be censored + // Must be specified + string key_to_mask = 4; } diff --git a/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto b/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto new file mode 100644 index 000000000..bb24332bb --- /dev/null +++ b/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto @@ -0,0 +1,844 @@ +syntax = "proto3"; +package enterprise.gloo.solo.io; + +option go_package = "github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1"; + +import "github.com/solo-io/solo-kit/api/v1/ref.proto"; + +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + +import "github.com/solo-io/solo-kit/api/v1/metadata.proto"; +import "github.com/solo-io/solo-kit/api/v1/status.proto"; +import "github.com/solo-io/solo-kit/api/v1/solo-kit.proto"; +import "github.com/solo-io/solo-kit/api/external/envoy/api/v2/discovery.proto"; +import "github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto"; +import "google/api/annotations.proto"; +import "google/protobuf/duration.proto"; +import "google/protobuf/struct.proto"; +import "google/protobuf/wrappers.proto"; +import "google/protobuf/empty.proto"; +/* +@solo-kit:xds-service=ExtAuthDiscoveryService +@solo-kit:resource.no_references + +This is an internal API used to share configuration between gloo-ee and extauth. Although this API is only used in gloo-ee, +rules about breaking changes still apply to ensure we do not get errors during upgrade and downgrade. + */ +message ExtAuthConfig { + // For apps in Microsoft Azure, configure Microsoft Entra ID as the OpenID Connect (OIDC) provider. + // This way, you can enable distributed claims and caching for when users are members of more than 200 groups. + message Azure { + // The client ID for the ExtAuthService app that is registered in MS Entra, + // to access the Microsoft Graph API to retrieve distributed claims. + // This app is NOT the app that you want to configure external auth for. + string client_id = 1; + + // The tenant ID represents the MS Entra organization ID where the ExtAuthService app is registered. + // This tenant ID may or may not be the same as in the top level `OidcAuthorizationCodeConfig`, + // depending on how your Azure account is provisioned. + string tenant_id = 2; + + // The client secret of the ExtAuthService app that is registered with MS Entra to communicate with the MS Graph API. + string client_secret = 3 [(extproto.sensitive) = true]; + + // Redis connection details to cache MS Entra claims. + // This way, you avoid performance issues of accessing the Microsoft Graph API too many times. + // Note that this setting does NOT turn on Redis caching for the user session. + // To turn on Redis user session caching, use the `userSessionConfig` field. + RedisOptions claims_caching_options = 4; + } + + // Map a single claim from an OAuth2 or OIDC token to a header in the request to the upstream destination. + message ClaimToHeader { + // The claim name from the token, such as `sub`. + string claim = 1; + + // The header to copy the claim to, such as `x-sub`. + string header = 2; + + // If the header exists, append the claim value to the header (true), or overwrite any existing value (false). The default behavior is to overwrite any existing value (false). + bool append = 3; + } + + // @solo-kit:resource.name + // This is the identifier of the AuthConfig resource that this configuration is associated with. + // Any request to the external auth server includes an identifier that is matched against this field to determine + // which AuthConfig should be applied to it. + string auth_config_ref_name = 1; + + // Message to store Basic Auth Configuration. + // "Internal" refers to this format allowing for selection of the hashing algorithm and user source. + // If only the legacy "apr" field is defined, the existing public BasicAuth configuration will continue be used. + message BasicAuthInternal { + // Realm to use in the Basic Auth challenge. + string realm = 1; + + // Selection of hashing algorithms to use for password hashing. + message EncryptionType { + message Sha1 {} + message Apr {} + oneof algorithm { + Apr apr = 1; + Sha1 sha1 = 2; + } + } + + // Hashing algorithm to use for password hashing. + EncryptionType encryption = 2; + + // To authenticate a user we need the salt and hashed password. The username is expected to be the key in a map of Users. + message User { + string salt = 1; + string hashed_password = 2; + } + + // Map of valid usernames to stored credentials + message UserList { + map users= 1; + } + + // Source of user credential data. + oneof user_source { + UserList user_list = 3; + } + } + + + // Deprecated, prefer OAuth2Config + message OAuthConfig { + // your client id as registered with the issuer + string client_id = 1 [deprecated = true]; + + // your client secret as registered with the issuer + string client_secret = 2 [deprecated = true, (extproto.sensitive) = true]; + + // The url of the issuer. We will look for OIDC information in issuerUrl+ + // ".well-known/openid-configuration" + string issuer_url = 3 [deprecated = true]; + + // extra query parameters to apply to the Ext-Auth service's authorization request to the identity provider. + map auth_endpoint_query_params = 7 [deprecated = true]; + + // we to redirect after successful auth, if we can't determine the original + // url this should be your publicly available app url. + string app_url = 4 [deprecated = true]; + + // a callback path relative to app url that will be used for OIDC callbacks. + // needs to not be used by the application + string callback_path = 5 [deprecated = true]; + + // scopes to request in addition to the openid scope. + repeated string scopes = 6 [deprecated = true]; + + } + + message UserSessionConfig { + // should we fail auth flow when failing to get a session from redis, or allow it to continue, + // potentially starting a new auth flow and setting a new session. + bool fail_on_fetch_failure = 1; + // Set-Cookie options + UserSession.CookieOptions cookie_options = 2; + oneof session { + // Set the tokens in the cookie itself. No need for server side state. + UserSession.InternalSession cookie = 3; + // Use redis to store the tokens and just store a random id in the cookie. + UserSession.RedisSession redis = 4; + } + message CipherConfig { + // to enable the cipher encryption, the key has to be present. + // Note that the key has to be found and 32 bytes in length for the authconfig to not be rejected. + string key = 1 [(extproto.sensitive) = true]; + } + // the cipher config enables the symmetric key encryption of the cookie values of the user session. + CipherConfig cipher_config = 5; + } + + message OidcAuthorizationCodeConfig { + // your client id as registered with the issuer + string client_id = 1; + + // your client secret as registered with the issuer. + // Only one of client_secret or pk_jwt_client_authentication_config should be set. pk_jwt_client_authentication_config takes precedence. + string client_secret = 2 [(extproto.sensitive) = true]; + + // The url of the issuer. We will look for OIDC information in issuerUrl+ + // ".well-known/openid-configuration" + string issuer_url = 3; + + // extra query parameters to apply to the Ext-Auth service's authorization request to the identity provider. + // this can be useful for flows such as PKCE (https://www.oauth.com/oauth2-servers/pkce/authorization-request/) + // to set the `code_challenge` and `code_challenge_method`. + map auth_endpoint_query_params = 4; + + // extra query parameters to apply to the Ext-Auth service's token request to the identity provider. + // this can be useful for flows such as PKCE (https://www.oauth.com/oauth2-servers/pkce/authorization-request/) + // to set the `code_verifier`. + map token_endpoint_query_params = 14; + + // we to redirect after successful auth, if we can't determine the original + // url this should be your publicly available app url. + string app_url = 5; + + // a callback path relative to app url that will be used for OIDC callbacks. + // needs to not be used by the application + string callback_path = 6; + + // a path relative to app url that will be used for logging out from an OIDC session. + // should not be used by the application. + // If not provided, logout functionality will be disabled. + string logout_path = 9; + + // url to redirect to after logout. + // This should be a publicly available URL. If not provided, will default to the `app_url`. + string after_logout_url = 15; + + // scopes to request in addition to the openid scope. + repeated string scopes = 7; + + // DEPRECATED: use userSessionConfig [userSession] + UserSession session = 8 [deprecated = true]; + + // Configures headers added to requests. + HeaderConfiguration headers = 10; + + // OIDC configuration is discovered at /.well-known/openid-configuration + // The configuration override defines any properties that should override this discovery configuration + // For example, the following AuthConfig CRD could be defined as: + // ```yaml + // apiVersion: enterprise.gloo.solo.io/v1 + // kind: AuthConfig + // metadata: + // name: google-oidc + // namespace: gloo-system + // spec: + // configs: + // - oauth: + // app_url: http://localhost:8080 + // callback_path: /callback + // client_id: $CLIENT_ID + // client_secret_ref: + // name: google + // namespace: gloo-system + // issuer_url: https://accounts.google.com + // discovery_override: + // token_endpoint: "https://token.url/gettoken" + // ``` + // + // And this will ensure that regardless of what value is discovered at + // /.well-known/openid-configuration, "https://token.url/gettoken" will be used as the token endpoint + DiscoveryOverride discovery_override = 11; + + // The interval at which OIDC configuration is discovered at /.well-known/openid-configuration + // If not specified, the default value is 30 minutes. + google.protobuf.Duration discovery_poll_interval = 12; + + // If a user executes a request with a key that is not found in the JWKS, it could be + // that the keys have rotated on the remote source, and not yet in the local cache. + // This policy lets you define the behavior for how to refresh the local cache during a request + // where an invalid key is provided + JwksOnDemandCacheRefreshPolicy jwks_cache_refresh_policy = 13; + + // in the future we may implement this: + // add optional configuration for validation of the access token received during the OIDC flow + // AccessTokenValidation access_token_validation = 8; + + // If set, the randomly generated session id will be sent to the token endpoint as part of the code exchange + // The session id is used as the key for sessions in Redis + string session_id_header_name = 16; + + // If set, CallbackPath will be evaluated as a regular expression + bool parse_callback_path_as_regex = 17; + + // If specified, authEndpointQueryParams and tokenEndpointQueryParams will be populated using dynamic metadata values. + // By default parameters will be extracted from the solo_authconfig_oidc namespace + // this behavior can be overridden by explicitly specifying a namespace + AutoMapFromMetadata auto_map_from_metadata = 18; + + // If specified, these are properties defined for the end session endpoint + // specifications. Noted [here](https://openid.net/specs/openid-connect-rpinitiated-1_0.html) + // in the OIDC documentation. + EndSessionProperties end_session_properties = 19; + + // Configuration related to the user session. + UserSessionConfig user_session = 20; + + // Fields for private key JWT Client Authentication. + message PkJwtClientAuthenticationConfig{ + // Signing key for the JWT used for client authentication + string signing_key = 1 [(extproto.sensitive) = true]; + // Amount of time for which the JWT is valid. No maximum is enforced, but different IDPs may impose limits on how far in + // the future the expiration time is allowed to be. Defaults in 5s in front end, but expected to be set explicitly here + google.protobuf.Duration valid_for = 2; + } + + // Configuration for private key JWT client authentication. + // Only one of client_secret or pk_jwt_client_authentication_config should be set. pk_jwt_client_authentication_config takes precedence. + PkJwtClientAuthenticationConfig pk_jwt_client_authentication_config = 21; + + // Optional: Configuration specific to the OAuth2 access token received and processed by the ext-auth-service. + AccessToken access_token = 22; + + // Optional: Configuration specific to the OIDC identity token received and processed by the ext-auth-service. + IdentityToken identity_token = 23; + + // Optional: Map a single claim from an OAuth2 access token to a header in the request to the upstream destination. + message AccessToken { + // A list of claims to be mapped from the JWT token received by ext-auth-service to an upstream destination + repeated ClaimToHeader claims_to_headers = 1; + } + + // Optional: Map a single claim from an OIDC identity token to a header in the request to the upstream destination. + message IdentityToken { + // A list of claims to be mapped from the JWT token received by ext-auth-service to an upstream destination + repeated ClaimToHeader claims_to_headers = 1; + } + + oneof Provider { + Default default = 26; + Azure azure = 27; + } + + // No-op, represents default OIDC behavior + message Default {} + + // For the moment this is just path, but we may want to configure things like iss/sid validation + message FrontChannelLogout { + // Path to use for front channel logout. Should not be the same as logout or callback paths. + string path=1; + } + + // Configuration for front channel logout. This is used to log out the user from multiple apps/clients associated with one OpenId Provider (OP). + // The path is registered with the OP and is called for each app/client that the user is logged into when the logout endpoint is called. + FrontChannelLogout front_channel_logout = 28; + + + // Map of metadata key to claim. Ie: + // dynamic_metadata_from_claims: + // issuer: iss + // email: email + // When specified, the matching claims from the ID token will be emitted as dynamic metadata. + // Note that metadata keys must be unique, and the claim names must be alphanumeric and use `-` or `_` as separators. + // The metadata will live in a namespace specified by the canonical name of the ext auth filter (in our case `envoy.filters.http.ext_authz`), + // and the structure of the claim value will be preserved in the metadata struct. + map dynamic_metadata_from_claims = 29; + } + + message AccessTokenValidationConfig { + // Defines how JSON Web Token (JWT) access tokens are validated. + // + // Tokens are validated using a JSON Web Key Set (as defined in + // [Section 5 of RFC7517](https://datatracker.ietf.org/doc/html/rfc7517#section-5)), + // which can be either inlined in the configuration or fetched from a remote location via HTTP. + // Any keys in the JWKS that are not intended for signature verification (i.e. whose + // ["use" parameter](https://datatracker.ietf.org/doc/html/rfc7517#section-4.2) is not "sig") + // will be ignored by the system, as will keys that do not specify a + // ["kid" (Key ID) parameter](https://datatracker.ietf.org/doc/html/rfc7517#section-4.2). + // + // The JWT to be validated must define non-empty "kid" and "alg" headers. The "kid" header + // determines which key in the JWKS will be used to verify the signature of the token; + // if no matching key is found, the token will be rejected. + // + // If present, the server will verify the "exp", "iat", and "nbf" standard JWT claims. + // Validation of the "iss" claim and of token scopes can be configured as well. + // If the JWT has been successfully validated, its set of claims will be added to the + // `AuthorizationRequest` state under the "jwtAccessToken" key. + message JwtValidation { + + // Specifies how to fetch JWKS from remote and how to cache it. + message RemoteJwks { + // The HTTP URI to fetch the JWKS. + string url = 1; + + // The frequency at which the JWKS should be refreshed. + // If not specified, the default value is 5 minutes. + google.protobuf.Duration refresh_interval = 2; + } + + // Represents a locally available JWKS. + message LocalJwks { + // JWKS is embedded as a string. + string inline_string = 1; + } + + oneof jwks_source_specifier { + // Fetches the JWKS from a remote location. + RemoteJwks remote_jwks = 1; + // Loads the JWKS from a local data source. + LocalJwks local_jwks = 2; + } + + // Allow only tokens that have been issued by this principal (i.e. whose "iss" claim matches this value). + // If empty, issuer validation will be skipped. + string issuer = 3; + } + + // Defines how (opaque) access tokens, received from the oauth authorization endpoint, are validated + // [OAuth2.0 Token Introspection](https://datatracker.ietf.org/doc/html/rfc7662) + // + // If the token introspection url requires client authentication, both the client_id and client_secret + // are required. If only one is provided, the config will be rejected. + // These values will be encoded in a basic auth header in order to authenticate the client. + message IntrospectionValidation { + // The URL for the [OAuth2.0 Token Introspection](https://datatracker.ietf.org/doc/html/rfc7662) endpoint. + // If provided, the (opaque) access token provided or received from the oauth authorization endpoint + // will be validated against this endpoint, or locally cached responses for this access token. + string introspection_url = 1; + + // Your client id as registered with the issuer. + // Optional: Use if the token introspection url requires client authentication. + string client_id = 2; + + // Your client secret as registered with the issuer. + // Optional: Use if the token introspection url requires client authentication. + string client_secret = 3 [(extproto.sensitive) = true]; + + // The name of the [introspection response](https://datatracker.ietf.org/doc/html/rfc7662#section-2.2) + // attribute that contains the ID of the resource owner (e.g. `sub`, `username`). + // If specified, the external auth server will use the value of the attribute as the identifier of the + // authenticated user and add it to the request headers and/or dynamic metadata (depending on how the + // server is configured); if the field is set and the attribute cannot be found, the request will be denied. + // This field is optional and by default the server will not try to derive the user ID. + string user_id_attribute_name = 4; + + } + + oneof validation_type { + // The URL for the [OAuth2.0 Token Introspection](https://datatracker.ietf.org/doc/html/rfc7662) endpoint. + // If provided, the (opaque) access token provided or received from the oauth authorization endpoint + // will be validated against this endpoint, or locally cached responses for this access token. + // This field is deprecated as it does not support authenticated introspection requests + string introspection_url = 1 [deprecated = true]; + + // Validate access tokens that conform to the + // [JSON Web Token (JWT)](https://datatracker.ietf.org/doc/rfc7662/) specification. + JwtValidation jwt = 2; + + // Defines how (opaque) access tokens, received from the oauth authorization endpoint, are validated + // [OAuth2.0 Token Introspection](https://datatracker.ietf.org/doc/html/rfc7662) specification. + IntrospectionValidation introspection = 3; + + // In the future we may implement HMAC validation + } + + // The URL for the OIDC userinfo endpoint. + // If provided, the (opaque) access token provided or received from the oauth endpoint + // will be queried and the userinfo response (or cached response) will be added to the + // `AuthorizationRequest` state under the "introspection" key. + // This can be useful to leverage the userinfo response in, for example, an external auth server plugin. + string userinfo_url = 4; + + // How long the token introspection and userinfo endpoint response for a specific access token should be kept + // in the in-memory cache. The result will be invalidated at this timeout, or at "exp" time from the introspection + // result, whichever comes sooner. If omitted, defaults to 10 minutes. If zero, then no caching will be done. + google.protobuf.Duration cache_timeout = 5; + + // Optional criteria for validating the scopes of a token. + oneof scope_validation { + // Require access token to have all of the scopes in the given list. + // This configuration applies to both opaque and JWT tokens. In the case of opaque tokens, + // this will check the scopes returned in the "scope" member of introspection response + // (as described in [Section 2.2 of RFC7662](https://datatracker.ietf.org/doc/html/rfc7662#section-2.2). + // In case of JWTs the scopes to be validated are expected to be contained in the "scope" claim of the + // token in the form of a space-separated string. + // Omitting this field means that scope validation will be skipped. + ScopeList required_scopes = 6; + + // in the future we may add other types of scope validation (e.g. predicate matching) + } + + message ScopeList { + repeated string scope = 1; + } + + // Map of metadata key to claim. Ie: + // dynamic_metadata_from_claims: + // issuer: iss + // email: email + // When specified, the matching claims from the access token will be emitted as dynamic metadata. + // Note that metadata keys must be unique, and the claim names must be alphanumeric and use `-` or `_` as separators. + // Works when the access token is a JWT or when the access token is opaque, in which case the claims will refer to field in the response from the token introspection endpoint. + // The metadata will live in a namespace specified by the canonical name of the ext auth filter (in our case `envoy.filters.http.ext_authz`), + // and the structure of the claim value will be preserved in the metadata struct. + map dynamic_metadata_from_claims = 7; + + repeated ClaimToHeader claims_to_headers = 8; + + oneof Provider { + Default default = 26; + Azure azure = 27; + } + + // No-op, represents default OIDC behavior + message Default {} + } + + message PlainOAuth2Config { + // Your client ID as registered with the issuer + string client_id = 1; + + // Your client secret as registered with the issuer + string client_secret = 2 [(extproto.sensitive) = true]; + + // Extra query parameters to apply to the Ext-Auth service's authorization request to the identity provider. + // These parameters can be useful for flows such as [PKCE](https://www.oauth.com/oauth2-servers/pkce/authorization-request/) + // to set the `code_challenge` and `code_challenge_method`. + map auth_endpoint_query_params = 3; + + // Where to redirect after successful auth, if Gloo can't determine the original URL. + // Set this field to your publicly available app URL. + string app_url = 4; + + // A callback path relative to the app URL to be used for OAuth2 callbacks. + // Do not use this path in the application itself. + string callback_path = 5; + + // Scopes to request for. + repeated string scopes = 6; + + // DEPRECATED: use userSessionConfig [userSession] + UserSession session = 7 [deprecated = true]; + + // A path relative to the app URL to use for logging out from an OAuth2 session. + // Do not use this path in the application itself. + // If not provided, logout functionality is disabled. + string logout_path = 8; + + // Extra query parameters to apply to the Ext-Auth service's token request to the identity provider. + // These parameters can be useful for flows such as [PKCE](https://www.oauth.com/oauth2-servers/pkce/authorization-request/) + // to set the `code_verifier`. + map token_endpoint_query_params = 9; + + // URL to redirect to after logout. + // Set this field to a publicly available URL. If not provided, this value defaults to the `app_url` value. + string after_logout_url = 10; + + // The URL of the provider authorization endpoint. + string auth_endpoint = 11; + + // The URL of the provider token endpoint. + string token_endpoint = 12; + + // The URL of the provider token revocation endpoint. + // For more information, refer to https://www.rfc-editor.org/rfc/rfc7009. + string revocation_endpoint = 13; + + // Configuration related to the user session. + UserSessionConfig user_session = 14; + } + + message OAuth2Config { + reserved 2; + + oneof oauth_type { + // provide issuer location and let gloo handle OIDC flow for you. + // requests authorized by validating the contents of ID token. + // can also authorize the access token if configured. + OidcAuthorizationCodeConfig oidc_authorization_code = 1; + + // provide the access token on the request and let gloo handle authorization. + // + // according to https://datatracker.ietf.org/doc/html/rfc6750 you can pass tokens through: + // - form-encoded body parameter. recommended, more likely to appear. e.g.: Authorization: Bearer mytoken123 + // - URI query parameter e.g. access_token=mytoken123 + // - and (preferably) secure cookies + AccessTokenValidationConfig access_token_validation_config = 3; + + // Enterprise-Only: THIS FEATURE IS IN TECH PREVIEW. APIs are versioned as alpha and subject to change. + // provide issuer location and let Gloo handle Oauth2 flow for you. + // requests authorized by validating the contents of access token. + // Prefer to use OIDC for better security. + PlainOAuth2Config oauth2_config = 4; + } + } + + // **NOTE: This configuration is not user-facing and will be auto generated** + message ApiKeyAuthConfig { + + message KeyMetadata { + // The user is mapped as the name of `Secret` which contains the `ApiKey` + string username = 1; + // The metadata present on the `ApiKey`. + map metadata = 2; + } + + // A mapping of valid API keys to their associated metadata. + // This map is automatically populated with the information from the relevant `ApiKey`s. + // Currently this is only configured when using the k8s Secret storage backend + map valid_api_keys = 1 [(extproto.sensitive) = true]; + + // (Optional) When receiving a request, the Gloo Edge Enterprise external auth server will look for an API key + // in a header with this name. This field is optional; if not provided it defaults to `api-key`. + string header_name = 2; + + // Determines the key metadata that will be included as headers on the upstream request. + // Each entry represents a header to add: the key is the name of the header, and the + // value is the key that will be used to look up the data entry in the key metadata. + map headers_from_key_metadata = 3; + + oneof storage_backend { + K8sSecretApiKeyStorage k8s_secret_apikey_storage = 4; + // Deprecated: Support for Aerospike is deprecated and will be removed in a future release. + // Use of this feature is not recommended. + AerospikeApiKeyStorage aerospike_apikey_storage = 5; + ServerDefaultApiKeyStorage server_default_apikey_storage = 7; + } + + // API key metadata may contain data is is invalid for a header, such as a newline. By default, this data will be validated + // in the data plane and mitigated in a way that provides a consistent experience for the user and visibility for the operator. + // This validation comes with a performance cost, and can be disabled by setting this field to `true`. + bool skip_metadata_validation = 6; + } + + message OpaAuthConfig { + // An optional modules (filename, module content) maps containing modules assist in the resolution of `query`. + map modules = 1; + + // The query that determines the auth decision. The result of this query + // must be either a boolean or an array with boolean as the first element. A boolean `true` value means that + // the request will be authorized. Any other value, or error, means that the request will be denied. + string query = 2; + + // Additional Options for Opa Auth configuration. + OpaAuthOptions options = 3; + } + + // Configure the Gloo external auth server to use your own Open Policy Agent (OPA) server. + // This way, you can use extra capabilities such as bundling or caching. + message OpaServerAuthConfig { + + // The package from your Rego policy bundle used to query the OPA data API. + string package = 1; + + // The rule in your Rego policy bundle used to query the OPA data API. Supports querying subfields with a `/`. + // For more information, see the [OPA docs for the Data API](https://www.openpolicyagent.org/docs/latest/rest-api/#data-api). + string rule_name = 2; + + // The address of the OPA server to query, in the format `ADDRESS:PORT`. + // For OPA servers within the cluster, the address is the pod’s service address, + // such as `opa-svc.default.svc.cluster.local:8181`. + // For OPA servers outside the cluster, the server must be accessible to the cluster, + // such as through an ExternalService. + // If you do not have your own OPA server instance, omit this field. + // When the external auth service has the OPA server sidecar enabled, + // the OPA server sidecar will be used instead, with an address such as `http://localhost:8181`. + string server_addr = 3; + + // Additional options for OPA Auth configuration. + OpaAuthOptions options = 4; + } + + message LdapConfig { + + // Address of the LDAP server to query. Should be in the form ADDRESS:PORT, e.g. `ldap.default.svc.cluster.local:389`. + string address = 1; + + // Template to build user entry distinguished names (DN). This must contains a single occurrence of the "%s" placeholder. + // When processing a request, Gloo will substitute the name of the user (extracted from the auth header) for the + // placeholder and issue a search request with the resulting DN as baseDN (and 'base' search scope). + // E.g. "uid=%s,ou=people,dc=solo,dc=io" + string userDnTemplate = 2; + + // Case-insensitive name of the attribute that contains the names of the groups an entry is member of. Gloo will look + // for attributes with the given name to determine which groups the user entry belongs to. Defaults to 'memberOf' if not provided. + string membershipAttributeName = 3; + + // In order for the request to be authenticated, the membership attribute (e.g. *memberOf*) on the user entry must + // contain at least of one of the group DNs specified via this option. + // E.g. []string{ "cn=managers,ou=groups,dc=solo,dc=io", "cn=developers,ou=groups,dc=solo,dc=io" } + repeated string allowedGroups = 4; + + // Use this property to tune the pool of connections to the LDAP server that Gloo maintains. + Ldap.ConnectionPool pool = 5; + + // Use to set a custom filter when searching a member. Defaults to "(uid=*)". + string searchFilter = 6; + + // Disables group checking, regardless of the value for allowedGroups, + // and disables validation for the membership attribute of the user entry. + // Group checking is enabled by default. + bool disable_group_checking = 7; + + // Settings for using a separate service account for looking up group membership + // To use this, you also need to configure credentials + LdapServiceAccountConfig group_lookup_settings = 8; + } + message LdapServiceAccountConfig { + // username and password are taken from the secret during gloo-ee translation + string username = 1 [(extproto.sensitive) = true]; + string password = 2 [(extproto.sensitive) = true]; + // If true, Gloo will use the service account to check group membership + bool check_groups_with_service_account = 3; + } + message HmacAuthConfig { + oneof secret_storage { + InMemorySecretList secret_list = 1; + } + // Algorithm to use to turn the request into a hashable string + oneof implementation_type{ + HmacParametersInHeaders parameters_in_headers = 2; + } + + } + // This API is only supported for Gloo Gateway Portal. + message PortalAuthConfig { + // The portal web server url used to validate credentials generated by the portal for the backing service(s). + string url = 1; + // The api key header name used to find the api key in the request headers. + // If provided will not authorize requests without the api key in the request headers. + // If not provided, will authorize requests with a Bearer token but must be chained with an AccessTokenValidation AuthConfig which will validate the token. + + string api_key_header = 2; + // Options to connect to redis. If not provided, data will be cached in memory. + RedisOptions redis_options = 3; + // The frequency at which the validated credential data should be refreshed by quering the portal web server. Defaults to 60s + google.protobuf.Duration cache_duration = 4; + // Timeout for the portal web server to respond. Defaults to 200ms + google.protobuf.Duration request_timeout = 5; + } + + message InMemorySecretList { + // list of username/password pairs taken from secrets during gloo-ee translation + map secret_list = 1 [(extproto.sensitive) = true]; + } + + message PassthroughAuthInternalConfig { + + // PassthroughAuthTlsConfigData defines the internal structure used to configure + // client-side TLS settings for passthrough authentication. This is not + // exposed externally and is used internally for constructing TLS client connections + // with support for certificates, private keys, and root CAs. + // + // All PEM fields are base64-encoded. The `ssl_params` field allows for specifying + // additional TLS properties such as protocol versions and cipher preferences. + // + // The fields `server_name`, `insecure_skip_verify`, and `require_client_cert` + // are currently not mapped to `tls.Config` but are retained for future compatibility + // and advanced configuration support. + message PassthroughAuthTlsConfigData { + // Base64-encoded PEM for the client certificate + string cert_pem = 1; + // Base64-encoded PEM for the client private key + string key_pem = 2; + // Base64-encoded PEM for the trusted root CA(s) + string root_ca_pem = 3; + + // Optional: Includes additional TLS parameters + SslParameters ssl_params = 4; + } + + // User defined passthrough configuration (any user supplied TLS configuration is masked from this) + PassThroughAuth pass_through_auth = 1; + + // Mapped TLS configuration data that defines TLS certificates and advanced parameters + PassthroughAuthTlsConfigData tls_config_data = 2 [(extproto.sensitive) = true]; + } + + message Config { + + reserved 1, 2; + + // optional: used when defining complex boolean logic, if `boolean_expr` is defined below. Also used + // in logging. If omitted, an automatically generated name will be used (e.g. config_0, of the + // pattern 'config_$INDEX_IN_CHAIN'). In the case of plugin auth, this field is ignored in favor of + // the name assigned on the plugin config itself. + google.protobuf.StringValue name = 11; + + oneof auth_config { + OAuthConfig oauth = 3 [deprecated = true]; + OAuth2Config oauth2 = 9; + BasicAuth basic_auth = 4; + BasicAuthInternal basic_auth_internal = 17; + ApiKeyAuthConfig api_key_auth = 5; + AuthPlugin plugin_auth = 6 [deprecated = true]; + OpaAuthConfig opa_auth = 7; + Ldap ldap = 8 [deprecated = true]; + // Used for LDAP configurations that need service account credentials saved in a secret. + LdapConfig ldap_internal = 14; + // This is a "dummy" extauth service which can be used to support multiple auth mechanisms with JWT authentication. + // If Jwt authentication is to be used in the [boolean expression](https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto.sk/#authconfig) in an AuthConfig, you can use this auth config type to include Jwt as an Auth config. + // In addition, `allow_missing_or_failed_jwt` must be set on the Virtual Host or Route that uses JWT auth or else the JWT filter will short circuit this behaviour. + google.protobuf.Empty jwt = 12; + // Deprecated - this is being replaced by "passthrough_internal" field which carries additional TLS configuration + PassThroughAuth pass_through_auth = 13; + HmacAuthConfig hmac_auth = 15; + OpaServerAuthConfig opa_server_auth = 16; + PortalAuthConfig portal_auth = 18; + PassthroughAuthInternalConfig passthrough_internal = 19; + } + } + + // List of auth configs to be checked for requests on a route referencing this auth config, + // By default, every config must be authorized for the entire request to be authorized. This + // behavior can be changed by defining names for each config and defining `boolean_expr` below. + // + // State is shared between successful requests on the chain, i.e., the headers returned from each + // successful auth service get appended into the final auth response. + repeated Config configs = 8; + + // How to handle processing of named configs within an auth config chain. + // An example config might be: `( basic1 || basic2 || (oidc1 && !oidc2) )` + // The boolean expression is evaluated left to right but honors parenthesis and short-circuiting. + // Defaults to an empty string, which is interpreted as `and`-ing the configs. + google.protobuf.StringValue boolean_expr = 10; + + // How the service should handle a redirect response from an OIDC issuer. In the default false mode, + // the redirect will be considered a successful response, and the client will receive a 302 with a location header. + // If this is set to true, the client will instead receive a 401 unauthorized response. This is useful in cases where + // API calls are being made or other such occurrences where the client cannot handle the redirect. + bool fail_on_redirect = 11; +} + +/* +@solo-kit:resource.xds-enabled +*/ +service ExtAuthDiscoveryService { + rpc StreamExtAuthConfig (stream envoy.api.v2.DiscoveryRequest) returns (stream envoy.api.v2.DiscoveryResponse) { + } + + rpc DeltaExtAuthConfig (stream envoy.api.v2.DeltaDiscoveryRequest) returns (stream envoy.api.v2.DeltaDiscoveryResponse) { + } + + rpc FetchExtAuthConfig (envoy.api.v2.DiscoveryRequest) returns (envoy.api.v2.DiscoveryResponse) { + option (google.api.http) = { + post : "/v2/discovery:extauthconfig" + body : "*" + }; + } +} + +message ApiKeyCreateRequest { + repeated ApiKey api_keys = 1; + repeated string raw_api_keys = 2; +} +message ApiKeyCreateResponse { + repeated ApiKey api_keys = 1; +} +message ApiKeyReadRequest { + repeated string raw_api_keys = 1; + repeated string labels = 2; +} +message ApiKeyReadResponse { + repeated ApiKey api_keys = 1; +} +message ApiKeyUpdateRequest { + bool upsert = 1; + repeated ApiKey api_keys = 2; + repeated string raw_api_keys = 3; +} +message ApiKeyUpdateResponse { + repeated ApiKey api_keys = 1; +} +message ApiKeyDeleteRequest { + repeated string raw_api_keys = 1; + repeated string labels = 2; +} +message ApiKeyDeleteResponse {} +service ApiKeyService { + rpc Create (ApiKeyCreateRequest) returns (ApiKeyCreateResponse) {} + rpc Read (ApiKeyReadRequest) returns (ApiKeyReadResponse) {} + rpc Update (ApiKeyUpdateRequest) returns (ApiKeyUpdateResponse) {} + rpc Delete (ApiKeyDeleteRequest) returns (ApiKeyDeleteResponse) {} +} diff --git a/api/gloo/gloo/v1/enterprise/options/extproc/extproc.proto b/api/gloo/gloo/v1/enterprise/options/extproc/extproc.proto new file mode 100644 index 000000000..3126483b9 --- /dev/null +++ b/api/gloo/gloo/v1/enterprise/options/extproc/extproc.proto @@ -0,0 +1,234 @@ +syntax = "proto3"; +package extproc.options.gloo.solo.io; + +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/extproc"; + +import "extproto/ext.proto"; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; +option (extproto.equal_all) = true; +import "validate/validate.proto"; + +import "github.com/solo-io/solo-kit/api/v1/ref.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/filters/stages.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/common/mutation_rules/v3/mutation_rules.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/base.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/matcher/v3/string.proto"; + +import "google/protobuf/duration.proto"; +import "google/protobuf/struct.proto"; +import "google/protobuf/wrappers.proto"; + +// Enterprise-only: Configuration for Envoy's [External Processing Filter](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/ext_proc_filter). +// The External Processing filter allows for calling out to an external gRPC service at a specified +// point within a HTTP filter chain. The external service may access and modify various parts of the +// request or response, and may terminate processing. +// Envoy's External Processing Filter is considered a work in progress and has an unknown security posture. +// Users should take care to understand the risks of using this extension before proceeding. +message Settings { + // Required. Configuration for the gRPC service that the filter will communicate with. + GrpcService grpc_service = 1; + + // Required. Where in the HTTP filter chain to insert the filter. + .filters.gloo.solo.io.FilterStage filter_stage = 2; + + // By default, if the gRPC stream cannot be established, or if it is closed + // prematurely with an error, the filter will fail. Specifically, if the + // response headers have not yet been delivered, then it will return a 500 + // error downstream. If they have been delivered, then instead the HTTP stream to the + // downstream client will be reset. + // With this parameter set to true, however, then if the gRPC stream is prematurely closed + // or could not be opened, processing continues without error. + google.protobuf.BoolValue failure_mode_allow = 3; + + // Specifies default options for how HTTP headers, trailers, and bodies are + // sent. + .solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode processing_mode = 4; + + // NOT CURRENTLY IMPLEMENTED. + // If true, send each part of the HTTP request or response specified by ProcessingMode + // asynchronously -- in other words, send the message on the gRPC stream and then continue + // filter processing. If false, which is the default, suspend filter execution after + // each message is sent to the remote service and wait up to "message_timeout" + // for a reply. + google.protobuf.BoolValue async_mode = 5; + + // NOT CURRENTLY IMPLEMENTED. + // Envoy provides a number of [attributes](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes#arch-overview-attributes) + // for expressive policies. Each attribute name provided in this field will be + // matched against that list and populated in the request_headers message. + // See the [request attribute documentation](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes#request-attributes) + // for the list of supported attributes and their types. + repeated string request_attributes = 6; + + // NOT CURRENTLY IMPLEMENTED. + // Envoy provides a number of [attributes](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes#arch-overview-attributes) + // for expressive policies. Each attribute name provided in this field will be + // matched against that list and populated in the response_headers message. + // See the [response attribute documentation](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes#response-attributes) + // for the list of supported attributes and their types. + repeated string response_attributes = 7; + + // Specifies the timeout for each individual message sent on the stream + // when the filter is running in synchronous mode. Whenever the proxy sends + // a message on the stream that requires a response, it will reset this timer, + // and will stop processing and return an error (subject to the processing mode) + // if the timer expires before a matching response is received. There is no + // timeout when the filter is running in asynchronous mode. Value must be at + // least 0 seconds, and less than or equal to 3600 seconds. Zero is a valid + // value which means the timer will be triggered immediately. If not + // configured, default is 200 milliseconds. + google.protobuf.Duration message_timeout = 8 [(validate.rules).duration = { + lte {seconds: 3600} + gte {} + }]; + + // Optional additional prefix to use when emitting statistics. This allows distinguishing + // between statistics emitted by multiple *ext_proc* filters in an HTTP filter chain. + google.protobuf.StringValue stat_prefix = 9; + + // Rules that determine what modifications an external processing server may + // make to message headers. If not set, all headers may be modified except + // for "host", ":authority", ":scheme", ":method", and headers that start + // with the header prefix set via + // [header_prefix](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/bootstrap/v3/bootstrap.proto#envoy-v3-api-field-config-bootstrap-v3-bootstrap-header-prefix) + // (which is usually "x-envoy"). + // Note that changing headers such as "host" or ":authority" may not in itself + // change Envoy's routing decision, as routes can be cached. To also force the + // route to be recomputed, set the + // [clear_route_cache](https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/ext_proc/v3/external_processor.proto#envoy-v3-api-field-service-ext-proc-v3-commonresponse-clear-route-cache) + // field to true in the same response. + .solo.io.envoy.config.common.mutation_rules.v3.HeaderMutationRules mutation_rules = 10; + + // Specify the upper bound of + // [override_message_timeout](https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/ext_proc/v3/external_processor.proto#envoy-v3-api-field-service-ext-proc-v3-processingresponse-override-message-timeout). + // If not specified, by default it is 0, which will effectively disable the `override_message_timeout` API. + // Value must be greater than or equal to the `messageTimeout` and less than or equal to 3600 seconds. + google.protobuf.Duration max_message_timeout = 11 [(validate.rules).duration = { + lte {seconds: 3600} + gte {} + }]; + + // Prevents clearing the route-cache when the + // [clear_route_cache](https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/ext_proc/v3/external_processor.proto#envoy-v3-api-field-service-ext-proc-v3-commonresponse-clear-route-cache) + // field is set in an external processor response. + google.protobuf.BoolValue disable_clear_route_cache = 12; + + // Allow headers matching the `forward_rules` to be forwarded to the external processing server. + // If not set, all headers are forwarded to the external processing server. + HeaderForwardingRules forward_rules = 13; + + // Additional metadata to be added to the filter state for logging purposes. The metadata + // will be added to StreamInfo's filter state under the namespace corresponding to the + // ext_proc filter name. + google.protobuf.Struct filter_metadata = 14; + + + // If `allow_mode_override` is set to true, the filter config [processing_mode](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/ext_proc/v3/ext_proc.proto#envoy-v3-api-field-extensions-filters-http-ext-proc-v3-externalprocessor-processing-mode) + // can be overridden by the response message from the external processing server + // [mode_override](https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/ext_proc/v3/external_processor.proto#envoy-v3-api-field-service-ext-proc-v3-processingresponse-mode-override). + // If not set, `mode_override` API in the response message will be ignored. + google.protobuf.BoolValue allow_mode_override = 15; + + // Specifies a list of metadata namespaces whose values, if present, will be passed to the + // ext_proc service as an opaque *protobuf::Struct*. + repeated string metadata_context_namespaces = 16; + + // Specifies a list of metadata namespaces whose values, if present, will be passed to the + // ext_proc service. typed_filter_metadata is passed as an `protobuf::Any`. + // + // It works in a way similar to `metadata_context_namespaces` but allows envoy and external processing server to share the protobuf message definition + // in order to do a safe parsing. + repeated string typed_metadata_context_namespaces = 17; + +} + +// External processor settings that can be configured on a virtual host or route. +message RouteSettings { + oneof override { + // Set to true to disable the External Processing filter for this virtual host or route. + // Setting this value to false is not supported. + google.protobuf.BoolValue disabled = 1; + + // Override specific configuration for this virtual host or route. + // If a route specifies overrides, it will override the disabled flag of its parent virtual host. + Overrides overrides = 2; + } +} + +message GrpcService { + // A reference to the Upstream representing the external processor gRPC server. + // See https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/ext_proc/v3/external_processor.proto + // for details. + core.solo.io.ResourceRef ext_proc_server_ref = 1; + + // The `:authority` header in the grpc request. If this field is not set, the authority header value will be the + // cluster name. + // Note that this authority does not override the SNI. The SNI is provided by the transport socket of the cluster. + google.protobuf.StringValue authority = 2; + + // Indicates the retry policy for re-establishing the gRPC stream + // This field is optional. If max interval is not provided, it will be set to ten times the provided base interval. + // Currently only supported for xDS gRPC streams. + // If not set, xDS gRPC streams default base interval:500ms, maximum interval:30s will be applied. + .solo.io.envoy.config.core.v3.RetryPolicy retry_policy = 3; + + // The timeout for the gRPC request. This is the timeout for a specific request. + google.protobuf.Duration timeout = 4; + + // Additional metadata to include in streams initiated to the GrpcService. This can be used for + // scenarios in which additional ad hoc authorization headers (e.g. `x-foo-bar: baz-key`) are to + // be injected. For more information, including details on header value syntax, see the + // documentation on [custom request headers](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers#config-http-conn-man-headers-custom-request-headers). + repeated .solo.io.envoy.config.core.v3.HeaderValue initial_metadata = 5; +} + +message Overrides { + // Set a different processing mode for this virtual host or route than the default. + .solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode processing_mode = 1; + + // NOT CURRENTLY IMPLEMENTED. + // Set a different asynchronous processing option than the default. + google.protobuf.BoolValue async_mode = 2; + + // NOT FINALIZED UPSTREAM use at your own upgrade risk + // Set different optional attributes than the default setting of the + // `request_attributes` field. + repeated string request_attributes = 3; + + // NOT FINALIZED UPSTREAM use at your own upgrade risk + // Set different optional properties than the default setting of the + // `response_attributes` field. + repeated string response_attributes = 4; + + // Set a different gRPC service for this virtual host or route than the default. + GrpcService grpc_service = 5; + + // Specifies a list of metadata namespaces whose values, if present, will be passed to the + // ext_proc service as an opaque *protobuf::Struct*. + repeated string metadata_context_namespaces = 6; + + + // Specifies a list of metadata namespaces whose values, if present, will be passed to the + // ext_proc service. typed_filter_metadata is passed as an `protobuf::Any`. + // + // It works in a way similar to `metadata_context_namespaces` but allows envoy and external processing server to share the protobuf message definition + // in order to do a safe parsing. + repeated string typed_metadata_context_namespaces = 7; +} + +// The HeaderForwardingRules structure specifies what headers are +// allowed to be forwarded to the external processing server. +// See https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/ext_proc/v3/ext_proc.proto#extensions-filters-http-ext-proc-v3-headerforwardingrules +// for details. +message HeaderForwardingRules { + // If set, specifically allow any header in this list to be forwarded to the external + // processing server. This can be overridden by the below `disallowed_headers`. + .solo.io.envoy.type.matcher.v3.ListStringMatcher allowed_headers = 1; + + // If set, specifically disallow any header in this list to be forwarded to the external + // processing server. This overrides the above `allowed_headers` if a header matches both. + // NOT CURRENTLY IMPLEMENTED. + .solo.io.envoy.type.matcher.v3.ListStringMatcher disallowed_headers = 2; +} \ No newline at end of file diff --git a/api/gloo/gloo/v1/enterprise/options/gcp/gcp.proto b/api/gloo/gloo/v1/enterprise/options/gcp/gcp.proto new file mode 100644 index 000000000..68b09e243 --- /dev/null +++ b/api/gloo/gloo/v1/enterprise/options/gcp/gcp.proto @@ -0,0 +1,19 @@ +syntax = "proto3"; +package gcp.options.gloo.solo.io; + +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/gcp"; + +import "extproto/ext.proto"; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; +option (extproto.equal_all) = true; + +// Enterprise-only: Configuration to enable GCP authentication for upstreams. +message UpstreamSpec { + // Required. host of the GCP service to be connected to + string host = 1; + + // Optional override for the audience used to fetch the token from the GCP metadata server. + // By default it will use the URL of the service + string audience = 2; +} \ No newline at end of file diff --git a/api/gloo/gloo/v1/enterprise/options/jwt/jwt.proto b/api/gloo/gloo/v1/enterprise/options/jwt/jwt.proto index b79d5142b..a38a5f9fd 100644 --- a/api/gloo/gloo/v1/enterprise/options/jwt/jwt.proto +++ b/api/gloo/gloo/v1/enterprise/options/jwt/jwt.proto @@ -4,11 +4,14 @@ package jwt.options.gloo.solo.io; option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/jwt"; import "github.com/solo-io/solo-kit/api/v1/ref.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/jwt_authn/v3/config.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; +import "google/protobuf/wrappers.proto"; import "google/protobuf/duration.proto"; message JwtStagedVhostExtension { @@ -19,12 +22,21 @@ message JwtStagedVhostExtension { VhostExtension after_ext_auth = 2; } +message JwtStagedRouteProvidersExtension { + + // Per-route JWT config for the JWT filter that runs before the extauth filter. + VhostExtension before_ext_auth = 1; + + // Per-route JWT config for the JWT filter that runs before the extauth filter. + VhostExtension after_ext_auth = 2; +} + message JwtStagedRouteExtension { - // JWT route config for the JWT filter that runs after the extauth filter. + // Per-route JWT config for the JWT filter that runs before the extauth filter. RouteExtension before_ext_auth = 1; - // JWT route config for the JWT filter that runs after the extauth filter. + // Per-route JWT config for the JWT filter that runs before the extauth filter. RouteExtension after_ext_auth = 2; } @@ -36,7 +48,32 @@ message VhostExtension { // Allow pass through of JWT requests for this virtual host, even if JWT token is missing or JWT auth failed. // If this is false (default false), requests that fail JWT authentication will fail authorization immediately. // For example, if a request requires either JWT auth OR another auth method, this can be enabled to allow a failed JWT auth request to pass through to the other auth method. - bool allow_missing_or_failed_jwt = 2; + // Deprecated: use validation_policy instead. + bool allow_missing_or_failed_jwt = 2 [deprecated = true]; + + // Optional: Configure how JWT validation works, with the flexibility to handle requests with missing or invalid JWTs. + // By default, after applying JWT policy to a route, only requests that authenticate with a valid JWT succeed. + ValidationPolicy validation_policy = 3; + + enum ValidationPolicy { + // Default value. Allow only requests that authenticate with a valid JWT to succeed. + // Note that the `allowMissingOrFailed=true` setting takes precedence. In such a case, even if you explicitly set `validationPolicy=REQUIRE_VALID`, this field is ignored. + REQUIRE_VALID = 0; + + // Allow requests to succeed even if JWT authentication is missing, but fail when an invalid JWT token is presented. + // You might use this setting when later steps depend on input from the JWT. + // For example, you might add claims from the JWT to request headers with the claimsToHeaders field. + // As such, you may want to make sure that any provided JWT is valid. If not, the request fails, + // which informs the requester that their JWT is not valid. + // Requests without a JWT, however, still succeed and skip JWT validation. + ALLOW_MISSING = 1; + + // Allow requests to succeed even when a JWT is missing or JWT verification fails. + // For example, you might apply multiple policies to your routes so that requests can authenticate with either a + // JWT or another method such as external auth. Use this value + // to allow a failed JWT auth request to pass through to the other authentication method. + ALLOW_MISSING_OR_FAILED = 2; + } } message RouteExtension { @@ -60,6 +97,17 @@ message Provider { // What claims should be copied to upstream headers. repeated ClaimToHeader claims_to_headers = 6; + + // Optional: ClockSkewSeconds is used to verify time constraints, such as `exp` and `npf`. Default is 60s + google.protobuf.UInt32Value clock_skew_seconds = 8; + + // Optional: When this field is set, the specified value is used as the key in DynamicMetadata to store the JWT failure status code and message under that key. If the value is empty (i.e., ""), it is ignored. + // This field is particularly useful when logging the failure status. + // + // For example, if the value of `attach_failed_status_to_metadata` is 'custom_auth_failure_status' then + // the failure status can be accessed in the access log as '%DYNAMIC_METADATA(envoy.filters.http.jwt_authn:custom_auth_failure_status)' + // Note: status code and message can be individually accessed as '%DYNAMIC_METADATA(envoy.filters.http.jwt_authn:custom_auth_failure_status.code)' and '%DYNAMIC_METADATA(envoy.filters.http.jwt_authn:custom_auth_failure_status.message)' respectively. + string attach_failed_status_to_metadata = 9; } message Jwks { @@ -76,12 +124,29 @@ message RemoteJwks { // This is used to set the host and path in the request string url = 1; // The Upstream representing the Json Web Key Set server + // + // Note: Setting this to an upstream using an HTTP tunnel (`httpProxyHostname`) + // requires also using that upstream in a route. core.solo.io.ResourceRef upstream_ref = 2; // Duration after which the cached JWKS should be expired. // If not specified, default cache duration is 5 minutes. google.protobuf.Duration cache_duration = 4; + // Fetch Jwks asynchronously in the main thread before the listener is activated. + // Fetched Jwks can be used by all worker threads. + // + // If this feature is not enabled: + // + // * The Jwks is fetched on-demand when the requests come. During the fetching, first + // few requests are paused until the Jwks is fetched. + // * Each worker thread fetches its own Jwks since Jwks cache is per worker thread. + // + // If this feature is enabled: + // + // * Fetched Jwks is done in the main thread before the listener is activated. Its fetched + // Jwks can be used by all worker threads. Each worker thread doesn't need to fetch its own. + // * Jwks is ready when the requests come, not need to wait for the Jwks fetching. + .solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwksAsyncFetch async_fetch = 3; } - message LocalJwks { // Inline key. this can be json web key, key-set or PEM format. string key = 1; diff --git a/api/gloo/gloo/v1/enterprise/options/ratelimit/ratelimit.proto b/api/gloo/gloo/v1/enterprise/options/ratelimit/ratelimit.proto index fceb8decf..671b3e9b3 100644 --- a/api/gloo/gloo/v1/enterprise/options/ratelimit/ratelimit.proto +++ b/api/gloo/gloo/v1/enterprise/options/ratelimit/ratelimit.proto @@ -3,6 +3,7 @@ package ratelimit.options.gloo.solo.io; option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit"; import "github.com/solo-io/solo-apis/api/rate-limiter/v1alpha1/ratelimit.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/local_ratelimit/local_ratelimit.proto"; import "github.com/solo-io/solo-kit/api/v1/ref.proto"; import "google/protobuf/wrappers.proto"; @@ -10,6 +11,7 @@ import "google/protobuf/duration.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; // Basic rate-limiting API message IngressRateLimit { @@ -17,15 +19,30 @@ message IngressRateLimit { ratelimit.api.solo.io.RateLimit anonymous_limits = 2; } + message Settings { core.solo.io.ResourceRef ratelimit_server_ref = 1; google.protobuf.Duration request_timeout = 2 ; bool deny_on_fail = 3; + // Set this to true to return Envoy's X-RateLimit headers to the downstream. + // reference docs here: https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/ratelimit/v3/rate_limit.proto.html#envoy-v3-api-field-extensions-filters-http-ratelimit-v3-ratelimit-enable-x-ratelimit-headers + bool enable_x_ratelimit_headers = 4; + // Set this is set to true if you would like to rate limit traffic before applying external auth to it. // *Note*: When this is true, you will lose some features like being able to rate limit a request based on its auth state bool rate_limit_before_auth = 9; + + oneof service_type { + // Optional gRPC settings used when calling the ratelimit server. + GrpcService grpc_service = 10; + } +} + +message GrpcService { + // Set the authority header when calling the gRPC service. + string authority = 1; } // API based on Envoy's rate-limit service API. (reference here: https://github.com/lyft/ratelimit#configuration) @@ -70,6 +87,13 @@ message RateLimitVhostExtension { // Define individual rate limits here. Each rate limit will be evaluated, if any rate limit // would be throttled, the entire request returns a 429 (gets throttled) repeated ratelimit.api.solo.io.RateLimitActions rate_limits = 1; + + // The token bucket configuration to use for local rate limiting requests. + // These options provide the ability to locally rate limit the connections in envoy. Each request processed by the filter consumes a single token. + // If the token is available, the request will be allowed. If no tokens are available, the request will receive the configured rate limit status. + // This overrides any local rate limit configured on the gateway and requests to this vHost do not count against requests to the gateway's http local rate limit. + // All routes that are part of this vHost will share this rate limit unless explicity configured with another limit. + local_ratelimit.options.gloo.solo.io.TokenBucket local_ratelimit = 2; } // Use this field if you want to inline the Envoy rate limits for this Route. @@ -84,4 +108,10 @@ message RateLimitRouteExtension { // Define individual rate limits here. Each rate limit will be evaluated, if any rate limit // would be throttled, the entire request returns a 429 (gets throttled) repeated ratelimit.api.solo.io.RateLimitActions rate_limits = 2; -} \ No newline at end of file + + // The token bucket configuration to use for local rate limiting requests. + // These options provide the ability to locally rate limit the connections in envoy. Each request processed by the filter consumes a single token. + // If the token is available, the request will be allowed. If no tokens are available, the request will receive the configured rate limit status. + // This overrides any local rate limit configured on the vHost or gateway and requests to this route do not count against requests to the vHost or gateway's http local rate limit. + local_ratelimit.options.gloo.solo.io.TokenBucket local_ratelimit = 3; +} diff --git a/api/gloo/gloo/v1/enterprise/options/rbac/rbac.proto b/api/gloo/gloo/v1/enterprise/options/rbac/rbac.proto index 38577f2c6..00354109c 100644 --- a/api/gloo/gloo/v1/enterprise/options/rbac/rbac.proto +++ b/api/gloo/gloo/v1/enterprise/options/rbac/rbac.proto @@ -1,11 +1,15 @@ syntax = "proto3"; + package rbac.options.gloo.solo.io; +import "extproto/ext.proto"; + option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/rbac"; -import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + // TODO: should we add standard claims to the jwt principal? // Global RBAC settings @@ -28,6 +32,11 @@ message Policy { repeated Principal principals = 1; // Permissions granted to the principals. Permissions permissions = 2; + // The delimiter to use when specifying nested claim names within principals. + // Default is an empty string, which disables nested claim functionality. + // This is commonly set to `.`, allowing for nested claim names of the form + // `parent.child.grandchild` + string nested_claim_delimiter = 3; } // An RBAC principal - the identity entity (usually a user or a service account). @@ -38,11 +47,25 @@ message Principal { // A JWT principal. To use this, JWT option MUST be enabled. message JWTPrincipal { // Set of claims that make up this principal. Commonly, the 'iss' and 'sub' or 'email' claims are used. - // all claims must be present on the JWT. + // If you specify the path for a nested claim, such as 'parent.child.foo', you must also specify + // a non-empty string value for the `nested_claim_delimiter` field in the Policy. map claims = 1; // Verify that the JWT came from a specific provider. This usually can be left empty // and a provider will be chosen automatically. string provider = 2; + // Used to specify how claims should be matched to the value. + enum ClaimMatcher { + // The JWT claim value is a string that exactly matches the value. + EXACT_STRING = 0; + // The JWT claim value is a boolean that matches the value. + BOOLEAN = 1; + // The JWT claim value is a list that contains a string that exactly matches the value. + LIST_CONTAINS = 2; + // The JWT claim value is a glob pattern that matches the value. + GLOB_MATCH = 3; + } + // The matcher to use when evaluating this principal. By default, exact string comparison (EXACT_STRING) is used. + ClaimMatcher matcher = 3; } // What permissions should be granted. An empty field means allow-all. diff --git a/api/gloo/gloo/v1/enterprise/options/stateful_session/stateful_session.proto b/api/gloo/gloo/v1/enterprise/options/stateful_session/stateful_session.proto new file mode 100644 index 000000000..fd39246a7 --- /dev/null +++ b/api/gloo/gloo/v1/enterprise/options/stateful_session/stateful_session.proto @@ -0,0 +1,52 @@ +syntax = "proto3"; + +package stateful_session.options.gloo.solo.io; + +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/stateful_session"; + +import "google/protobuf/duration.proto"; +import "validate/validate.proto"; + +// This configures the Envoy [Stateful Session](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/stateful_session_filter) filter for a listener +message StatefulSession { + + oneof SessionState { + option (validate.required) = true; + // Configure a cookie based session state - https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/http/stateful_session/cookie/v3/cookie.proto#envoy-v3-api-msg-extensions-http-stateful-session-cookie-v3-cookiebasedsessionstate + // Exactly one of `cookie_based` or `header_based` must be set. + CookieBasedSessionState cookie_based = 1; + // Configure a header based session state - https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/http/stateful_session/cookie/v3/cookie.proto#envoy-v3-api-msg-extensions-http-stateful-session-cookie-v3-cookiebasedsessionstate + // Exactly one of `cookie_based` or `header_based` must be set. + HeaderBasedSessionState header_based = 2; + } + + // If set to True, the HTTP request must be routed to the requested destination. If the requested destination is not available, Envoy returns 503. Defaults to False. + bool strict = 3; +} + +// Configuration for the [cookie-based session state](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/http/stateful_session/cookie/v3/cookie.proto#envoy-v3-api-msg-extensions-http-stateful-session-cookie-v3-cookiebasedsessionstate) filter +message CookieBasedSessionState { + message Cookie { + // Required, the name that will be used to obtain cookie value from downstream HTTP request or generate new cookie for downstream. + string name = 1 [(validate.rules).message.required = true]; + // Path of cookie. This will be used to set the path of a new cookie when it is generated. If no path is specified here, no path will be set for the cookie. + string path = 2; + // Duration of cookie. This will be used to set the expiry time of a new cookie when it is generated. Set this to 0s to use a session cookie and disable cookie expiration. + google.protobuf.Duration ttl = 3 [ + (validate.rules).duration = { + required: true, + gte: {seconds: 0} + } + ]; + } + + // Required, the cookie configuration used to track session state. + Cookie cookie = 1 [(validate.rules).message.required = true]; +} + + +// Configuration for the [header-based session state](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/http/stateful_session/header/v3/header.proto#extension-envoy-http-stateful-session-header) filter +message HeaderBasedSessionState { + // Required, the header used to track session state. + string header_name = 1 [(validate.rules).message.required = true]; +} \ No newline at end of file diff --git a/api/gloo/gloo/v1/enterprise/options/tap/tap.proto b/api/gloo/gloo/v1/enterprise/options/tap/tap.proto new file mode 100644 index 000000000..9cdda8c73 --- /dev/null +++ b/api/gloo/gloo/v1/enterprise/options/tap/tap.proto @@ -0,0 +1,65 @@ +syntax = "proto3"; + +package tap.options.gloo.solo.io; + +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tap"; + +import "github.com/solo-io/solo-kit/api/v1/ref.proto"; +import "validate/validate.proto"; +import "google/protobuf/wrappers.proto"; +import "google/protobuf/duration.proto"; + +// Tap filter: a filter that copies the contents of HTTP requests and responses +// to an external tap server. The full HTTP headers and bodies are reported in +// full to the configured address, and data can be reported using either over +// HTTP or GRPC. +message Tap { + // Sinks to which tap data should be output. Currently, only a single sink + // is supported. + repeated Sink sinks = 1 [(validate.rules).repeated = {max_items: 1, min_items: 1}]; + + // For buffered tapping, the maximum amount of received body that will be buffered + // prior to truncation. If truncation occurs, the truncated field will be set. + // If not specified, the default is 1KiB. + google.protobuf.UInt32Value max_buffered_rx_bytes = 2; + + // For buffered tapping, the maximum amount of transmitted body that will be buffered + // prior to truncation. If truncation occurs, the truncated field will be set. + // If not specified, the default is 1KiB. + google.protobuf.UInt32Value max_buffered_tx_bytes = 3; + + // Indicates whether tap filter records the time stamp for request/response headers. + // Request headers time stamp is stored after receiving request headers. + // Response headers time stamp is stored after receiving response headers. + google.protobuf.BoolValue record_headers_received_time = 4; + + // Indicates whether report downstream connection info + google.protobuf.BoolValue record_downstream_connection = 5; +} + +message Sink { + // The type of the output sink to which tap data should be written + oneof SinkType { + option (validate.required) = true; + // Write tap data out to a GRPC service + GrpcService grpc_service = 1; + + // Write tap data out to a HTTP service + HttpService http_service = 2; + } +} + +// A tap sink over a GRPC service +message GrpcService { + // Upstream reference to the tap server + core.solo.io.ResourceRef tap_server = 1 [(validate.rules).message = {required: true}]; +} + +// A tap sink over a HTTP service +message HttpService { + // Upstream reference to the tap server + core.solo.io.ResourceRef tap_server = 1 [(validate.rules).message = {required: true}]; + + // Connection timeout + google.protobuf.Duration timeout = 2 [(validate.rules).message = {required: true}]; +} diff --git a/api/gloo/gloo/v1/enterprise/options/waf/waf.proto b/api/gloo/gloo/v1/enterprise/options/waf/waf.proto index 9db41d0ee..420f21a57 100644 --- a/api/gloo/gloo/v1/enterprise/options/waf/waf.proto +++ b/api/gloo/gloo/v1/enterprise/options/waf/waf.proto @@ -2,12 +2,14 @@ syntax = "proto3"; package waf.options.gloo.solo.io; import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/waf/waf.proto"; +import "github.com/solo-io/solo-kit/api/v1/ref.proto"; option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/waf"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; message Settings { // Disable waf on this resource (if omitted defaults to false). @@ -19,18 +21,31 @@ message Settings { // Add OWASP core rule set // if nil will not be added CoreRuleSet core_rule_set = 3; - // Custom rule sets rules to add + // Custom rule sets to add. Any subsequent changes to the rules in these files are not automatically updated. To update rules from files, version and update the file name. + // If you want dynamically updated rules, use the `configMapRuleSets` option instead. repeated envoy.config.filter.http.modsecurity.v2.RuleSet rule_sets = 4; + // Kubernetes configmaps with the rule sets that you want to use. + // The rules must be in the value of the key-value mappings in the `data` field of the configmap. + // Subsequent updates to the configmap values are dynamically updated in the configuration. + repeated RuleSetFromConfigMap config_map_rule_sets = 8; // Audit Log settings envoy.config.filter.http.modsecurity.v2.AuditLogging audit_logging = 5; - // Only process request headers, not buffering the request body bool request_headers_only = 6; - // Only process response headers, not buffering the response body bool response_headers_only = 7; } +message RuleSetFromConfigMap { + // The Kubernetes configmap that has the rule sets as values in the `data` section. + core.solo.io.ResourceRef config_map_ref = 1; + // The ConfigMap might have multiple key-value pairs in the `data` section, such as when you create the ConfigMap from multiple files. Each value in a key-value pair may contain 0 or more rules. + // You can use the `dataMapKey` field to select which keys to use, and the order you want them applied. + // If this field is included, only the rules from the specified keys are applied, in the specified order. Any rules contained in the value of keys not included are ignored. + // If this field is not included, all of the keys in the `data` section of the ConfigMap are sorted alphabetically, and all of the rules are included in the resulting order. The order of key-value pairs might differ from the order in which they appear in the ConfigMap (note, the rules within each mapping stay in the same order as they appear in the ConfigMap). + repeated string data_map_keys = 2; +} + message CoreRuleSet { // Optional custom settings for the OWASP core rule set. // For an example on the configuration options see: https://github.com/SpiderLabs/owasp-modsecurity-crs/blob/v3.2/dev/crs-setup.conf.example @@ -38,7 +53,7 @@ message CoreRuleSet { oneof CustomSettingsType { // String representing the core rule set custom config options string custom_settings_string = 2; - // String representing the core rule set custom config options + // String representing a file location with core rule set custom config options string custom_settings_file = 3; } } \ No newline at end of file diff --git a/api/gloo/gloo/v1/enterprise/ratelimit.proto b/api/gloo/gloo/v1/enterprise/ratelimit.proto index 8c8c72860..654b69007 100644 --- a/api/gloo/gloo/v1/enterprise/ratelimit.proto +++ b/api/gloo/gloo/v1/enterprise/ratelimit.proto @@ -10,6 +10,7 @@ import "github.com/solo-io/solo-apis/api/rate-limiter/v1alpha1/ratelimit.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; /* diff --git a/api/gloo/gloo/v1/extensions.proto b/api/gloo/gloo/v1/extensions.proto index eccc56fa4..96b697d65 100644 --- a/api/gloo/gloo/v1/extensions.proto +++ b/api/gloo/gloo/v1/extensions.proto @@ -7,6 +7,7 @@ import "google/protobuf/struct.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; message Extensions { map configs = 1; diff --git a/api/gloo/gloo/v1/failover.proto b/api/gloo/gloo/v1/failover.proto index 33e1a5284..616022936 100644 --- a/api/gloo/gloo/v1/failover.proto +++ b/api/gloo/gloo/v1/failover.proto @@ -5,8 +5,10 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "google/protobuf/wrappers.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl.proto"; +import "google/protobuf/struct.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl/ssl.proto"; import "validate/validate.proto"; /* @@ -33,6 +35,27 @@ message Failover { message PrioritizedLocality { repeated LocalityLbEndpoints locality_endpoints = 2; } + + // Load balancing policy settings. + Policy policy = 2; + + message Policy { + // Priority levels and localities are considered overprovisioned with this + // factor (in percentage). This means that we don't consider a priority + // level or locality unhealthy until the fraction of healthy hosts + // multiplied by the overprovisioning factor drops below 100. + // With the default value 140(1.4), Envoy doesn't consider a priority level + // or a locality unhealthy until their percentage of healthy hosts drops + // below 72%. For example: + // + // .. code-block:: json + // + // { "overprovisioning_factor": 100 } + // + // Read more at priority levels and + // localities. + google.protobuf.UInt32Value overprovisioning_factor = 1 [(validate.rules).uint32 = {gt: 0}]; + } } // A group of endpoints belonging to a Locality. @@ -104,6 +127,13 @@ message LbEndpoint { // LocalityLbEndpoints. If unspecified, each host is presumed to have equal // weight in a locality. google.protobuf.UInt32Value load_balancing_weight = 5 [(validate.rules).uint32.gte = 1]; + + // Additional metadata to add to the endpoint. This metadata can be used in upstream HTTP filters + // or other specific Envoy configurations. + // The following keys are added by Gloo Edge and are ignored if set: + // - "envoy.transport_socket_match" + // - "io.solo.health_checkers.advanced_http" + map metadata = 6; } // Identifies location of where either Envoy runs or where upstream hosts run. @@ -112,9 +142,8 @@ message Locality { string region = 1; // Defines the local service zone where Envoy is running. The meaning of zone - // is context dependent, e.g. `Availability Zone (AZ) - // `_ - // on AWS, `Zone `_ on + // is context dependent, e.g. [Availability Zone (AZ)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html) + // on AWS, [Zone](https://cloud.google.com/compute/docs/regions-zones/) on // GCP, etc. string zone = 2; diff --git a/api/gloo/gloo/v1/filters/stages.proto b/api/gloo/gloo/v1/filters/stages.proto new file mode 100644 index 000000000..28c34a864 --- /dev/null +++ b/api/gloo/gloo/v1/filters/stages.proto @@ -0,0 +1,38 @@ +syntax = "proto3"; + +package filters.gloo.solo.io; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/filters"; + +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + +// FilterStage allows configuration of where in a filter chain a given HTTP filter is inserted, +// relative to one of the pre-defined stages. +message FilterStage { + // List of filter stages which can be selected for a HTTP filter. + enum Stage { + FaultStage = 0; + CorsStage = 1; + WafStage = 2; + AuthNStage = 3; + AuthZStage = 4; + RateLimitStage = 5; + AcceptedStage = 6; + OutAuthStage = 7; + RouteStage = 8; + } + + // Desired placement of the HTTP filter relative to the stage. The default is `During`. + enum Predicate { + During = 0; + Before = 1; + After = 2; + } + + // Stage of the filter chain in which the selected filter should be added. + Stage stage = 1; + // How this filter should be placed relative to the stage. + Predicate predicate = 2; +} \ No newline at end of file diff --git a/api/gloo/gloo/v1/gloosnapshot/snap.proto b/api/gloo/gloo/v1/gloosnapshot/snap.proto new file mode 100644 index 000000000..d73049710 --- /dev/null +++ b/api/gloo/gloo/v1/gloosnapshot/snap.proto @@ -0,0 +1,13 @@ +syntax = "proto3"; +package gloosnapshot.gloo.solo.io; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/gloosnapshot"; + +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; +/* + This package is for gloo snapshots which depend on both gloo and gateway types. The snapshots are in a 3rd package + to avoid circular dependencies. + Codegen needs a package name to be declared in this directory. + */ \ No newline at end of file diff --git a/api/gloo/gloo/v1/http_listener_options.proto b/api/gloo/gloo/v1/http_listener_options.proto new file mode 100644 index 000000000..75b497c3c --- /dev/null +++ b/api/gloo/gloo/v1/http_listener_options.proto @@ -0,0 +1,148 @@ +syntax = "proto3"; +package gloo.solo.io; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1"; + +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/grpc_web/grpc_web.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/hcm/hcm.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/healthcheck/healthcheck.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/extensions.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/waf/waf.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/dlp/dlp.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/wasm/wasm.proto"; +import "github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/ratelimit/ratelimit.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/caching/caching.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extproc/extproc.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/filter/http/gzip/v2/gzip.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/proxylatency/proxylatency.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/buffer/v3/buffer.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/csrf/v3/csrf.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/grpc_json/grpc_json.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/connection_limit/connection_limit.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/local_ratelimit/local_ratelimit.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/router/router.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/tap/tap.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/stateful_session/stateful_session.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/header_validation/header_validation.proto"; + +import "google/protobuf/wrappers.proto"; + +// Optional, feature-specific configuration that lives on http listeners +message HttpListenerOptions { + grpc_web.options.gloo.solo.io.GrpcWeb grpc_web = 1; + hcm.options.gloo.solo.io.HttpConnectionManagerSettings http_connection_manager_settings = 2; + // enable [Envoy health checks](https://www.envoyproxy.io/docs/envoy/v1.7.0/api-v2/config/filter/http/health_check/v2/health_check.proto) on this listener + healthcheck.options.gloo.solo.io.HealthCheck health_check = 4; + // Extensions will be passed along from Listeners, Gateways, VirtualServices, Routes, and Route tables to the + // underlying Proxy, making them useful for controllers, validation tools, etc. which interact with kubernetes yaml. + // + // Some sample use cases: + // * controllers, deployment pipelines, helm charts, etc. which wish to use extensions as a kind of opaque metadata. + // * In the future, Gloo may support gRPC-based plugins which communicate with the Gloo translator out-of-process. + // Opaque Extensions enables development of out-of-process plugins without requiring recompiling & redeploying Gloo's API. + Extensions extensions = 3; + // Enterprise-only: Config for Web Application Firewall (WAF), supporting + // the popular ModSecurity 3.0 ruleset + waf.options.gloo.solo.io.Settings waf = 5; + // Enterprise-only: Config for data loss prevention + dlp.options.gloo.solo.io.FilterConfig dlp = 6; + // Enterprise-only: WASM related configuration [experimental!] + wasm.options.gloo.solo.io.PluginSource wasm = 7; + // Enterprise-only: External auth related settings + enterprise.gloo.solo.io.Settings extauth = 10; + // Enterprise-only: Settings for the rate limiting server itself + ratelimit.options.gloo.solo.io.Settings ratelimit_server = 11; + // Enterprise-only: Settings for the cache server itself + // Deprecated: The caching filter is deprecated and planned to be removed in Gloo Gateway version 1.21. + caching.options.gloo.solo.io.Settings caching = 17 [ deprecated = true ]; + + oneof ext_proc_config { + // Enterprise-only: Set to true to disable the External Processing filter for this listener. + // This can be overridden by child VirtualHostOptions or RouteOptions. + google.protobuf.BoolValue disable_ext_proc = 30; + + // Enterprise-only: External Processing filter settings for the listener. This can be used to + // override the defaults from the global settings (via shallow merge). Some of the settings + // on the listener can be overridden by child VirtualHostOptions or RouteOptions. + extproc.options.gloo.solo.io.Settings ext_proc = 31; + } + + // Gzip is an HTTP option which enables Gloo to compress + // data returned from an upstream service upon client request. + // Compression is useful in situations where large payloads need to be transmitted without compromising the response time. + // Example: + // ``` + // gzip: + // contentType: + // - "application/json" + // compressionLevel: BEST + // ``` + .solo.io.envoy.config.filter.http.gzip.v2.Gzip gzip = 8; + + // Enterprise-only: Proxy latency + envoy.config.filter.http.proxylatency.v2.ProxyLatency proxy_latency = 9; + + // Buffer can be used to set the maximum request size + // that the filter will buffer before the connection + // manager will stop buffering and return a 413 response. + .solo.io.envoy.extensions.filters.http.buffer.v3.Buffer buffer = 12; + + // Csrf can be used to set percent of requests for which the CSRF filter is enabled, enable shadow-only mode + // where policies will be evaluated and tracked, but not enforced and add additional source origins + // that will be allowed in addition to the destination origin. + // For more, see https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/filter/http/csrf/v2/csrf.proto + .solo.io.envoy.extensions.filters.http.csrf.v3.CsrfPolicy csrf = 15; + + // Exposed envoy config for the gRPC to JSON transcoding filter, + // envoy.filters.http.grpc_json_transcoder. + // For more, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/grpc_json_transcoder/v3/transcoder.proto + grpc_json.options.gloo.solo.io.GrpcJsonTranscoder grpc_json_transcoder = 13; + + // Enterprise-only: If using the HTTP header specified by cluster_header to direct traffic to a cluster, + // this option will sanitize that header from downstream traffic. + // Defaults to false + google.protobuf.BoolValue sanitize_cluster_header = 14; + + // Enterprise-only: Setting this value to true will grab the leftmost IP address from + // the x-forwarded-for header and set it as the downstream address. + // It is worth noting that the x-forwarded-for header can be tampered with by clients + // and should therefore be sanitized by any preceding proxies / load balancers if this option is to be used. + google.protobuf.BoolValue leftmost_xff_address = 16; + + dfp.options.gloo.solo.io.FilterConfig dynamic_forward_proxy = 28; + + // ConnectionLimit can be used to limit the number of active connections per gateway. Useful for resource protection as well as DoS prevention. + connection_limit.options.gloo.solo.io.ConnectionLimit connection_limit = 29; + + // NetworkLocalRatelimit can be used to rate limit the connections per gateway at the L4 layer and works pre-auth. + // It uses envoy's own local rate limit filter to do so, without the need for an external rate limit server to be set up. + local_ratelimit.options.gloo.solo.io.TokenBucket network_local_ratelimit = 32; + + // HttpLocalRatelimit can be used to rate limit the number of requests per gateway and works pre-auth. + // Unlike the NetworkLocalRatelimit, this works as part of the HCM (ie: L7 layer). + // All virtual host and routes that are part of this gateway will share this rate limit unless explicity configured with another limit. + // It uses envoy's own local rate limit filter to do so, without the need for an external rate limit server to be set up. + local_ratelimit.options.gloo.solo.io.Settings http_local_ratelimit = 33; + + // Router is an extension of the envoy http filters + // Maps to https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/router/v3/router.proto + Router router = 18; + + // Enterprise only: Tap filter settings (experimental). + tap.options.gloo.solo.io.Tap tap = 34; + + // Enterprise only: Listener-level stateful session settings + stateful_session.options.gloo.solo.io.StatefulSession stateful_session = 35; + + // Header validation settings - fields in this message can be used to + // determine whether requests should be rejected based on the contents of + // the header. + header_validation.options.gloo.solo.io.HeaderValidationSettings header_validation_settings = 36; + +} diff --git a/api/gloo/gloo/v1/listener_options.proto b/api/gloo/gloo/v1/listener_options.proto new file mode 100644 index 000000000..d67a53b4a --- /dev/null +++ b/api/gloo/gloo/v1/listener_options.proto @@ -0,0 +1,73 @@ +syntax = "proto3"; +package gloo.solo.io; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1"; + +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/extensions.proto"; +import "github.com/solo-io/solo-kit/api/external/envoy/api/v2/core/socket_option.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/proxy_protocol/proxy_protocol.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/als/als.proto"; + +import "google/protobuf/wrappers.proto"; + +// Optional, feature-specific configuration that lives on gateways. +// Each ListenerOption object contains configuration for a specific feature. +// Note to developers: new Listener plugins must be added to this struct +// to be usable by Gloo. (plugins currently need to be compiled into Gloo) +message ListenerOptions { + // Configuration for access logging in a filter like the HttpConnectionManager. + als.options.gloo.solo.io.AccessLoggingService access_logging_service = 1; + + // Extensions will be passed along from Listeners, Gateways, VirtualServices, Routes, and Route tables to the + // underlying Proxy, making them useful for controllers, validation tools, etc. which interact with kubernetes yaml. + // + // Some sample use cases: + // * controllers, deployment pipelines, helm charts, etc. which wish to use extensions as a kind of opaque metadata. + // * In the future, Gloo may support gRPC-based plugins which communicate with the Gloo translator out-of-process. + // Opaque Extensions enables development of out-of-process plugins without requiring recompiling & redeploying Gloo's API. + Extensions extensions = 2; + + // Soft limit on size of the listener's new connection read and write buffers. If unspecified, defaults to 1MiB + // For more info, check out the [Envoy docs](https://www.envoyproxy.io/docs/envoy/v1.14.1/api-v2/api/v2/listener.proto) + google.protobuf.UInt32Value per_connection_buffer_limit_bytes = 3; + + // Additional socket options that may not be present in Envoy source code or + // precompiled binaries. + repeated .solo.io.envoy.api.v2.core.SocketOption socket_options = 4; + + // Enable ProxyProtocol support for this listener. + proxy_protocol.options.gloo.solo.io.ProxyProtocol proxy_protocol = 5; + + // Configuration for listener connection balancing. + ConnectionBalanceConfig connection_balance_config = 6; + + // If enabled this sets up an early access logging service for the listener. + // Added initially to support listener level logging for HTTP listeners. + // For more info see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/listener/v3/listener.proto#envoy-v3-api-field-config-listener-v3-listener-access-log + als.options.gloo.solo.io.AccessLoggingService listener_access_logging_service = 7; + + // If true, will wrap all filter chains in the listener with a TCP stats transport socket, which is a + // passthrough listener that can report low-level Linux TCP stats, useful for diagnosis + // and triage. + google.protobuf.BoolValue tcp_stats = 8; +} + +// Configuration for listener connection balancing. +message ConnectionBalanceConfig { + + // A connection balancer implementation that does exact balancing. This means that a lock is + // held during balancing so that connection counts are nearly exactly balanced between worker + // threads. This is "nearly" exact in the sense that a connection might close in parallel thus + // making the counts incorrect, but this should be rectified on the next accept. This balancer + // sacrifices accept throughput for accuracy and should be used when there are a small number of + // connections that rarely cycle (e.g., service mesh gRPC egress). + message ExactBalance { + } + + + ExactBalance exact_balance = 1; +} diff --git a/api/gloo/gloo/v1/load_balancer.proto b/api/gloo/gloo/v1/load_balancer.proto index 77acef98f..108142aee 100644 --- a/api/gloo/gloo/v1/load_balancer.proto +++ b/api/gloo/gloo/v1/load_balancer.proto @@ -8,12 +8,12 @@ import "google/protobuf/empty.proto"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; -// LoadBalancerConfig is the settings for the load balancer used to send request to the Upstream -// endpoints. +// LoadBalancerConfig is the settings for the load balancer used to send requests to the Upstream endpoints. message LoadBalancerConfig { // Configures envoy's panic threshold Percent between 0-100. Once the number of non health hosts // reaches this percentage, envoy disregards health information. @@ -25,10 +25,16 @@ message LoadBalancerConfig { // Set to 0 to disable and have changes applied immediately. google.protobuf.Duration update_merge_window = 2; - message RoundRobin {} + message RoundRobin { + // Configuration for slow start mode. If this configuration is not set, slow start will not be not enabled. + SlowStartConfig slow_start_config = 1; + } message LeastRequest { // How many choices to take into account. defaults to 2. uint32 choice_count = 1; + + // Configuration for slow start mode. If this configuration is not set, slow start will not be not enabled. + SlowStartConfig slow_start_config = 2; } message Random {} @@ -52,7 +58,7 @@ message LoadBalancerConfig { } oneof type { - // Use round robin for load balancing. + // Use round robin for load balancing. Round robin is the default load balancing method. RoundRobin round_robin = 3; // Use least request for load balancing. LeastRequest least_request = 4; @@ -72,4 +78,45 @@ message LoadBalancerConfig { google.protobuf.Empty locality_weighted_lb_config = 8; } + + // Default: false, If set to true, the hostname will be used for hashing when using maglev for example, useful when using multiple host in the upstreams that resolve to the same IP. + google.protobuf.BoolValue use_hostname_for_hashing = 9; + + message SlowStartConfig { + // Represents the size of slow start window. + // If set, the newly created host remains in slow start mode starting from its creation time + // for the duration of slow start window. + google.protobuf.Duration slow_start_window = 1; + + // This parameter controls the speed of traffic increase over the slow start window. Defaults to 1.0, + // so that endpoint would get linearly increasing amount of traffic. + // When increasing the value for this parameter, the speed of traffic ramp-up increases non-linearly. + // The value of aggression parameter should be greater than 0.0. + // By tuning the parameter, is possible to achieve polynomial or exponential shape of ramp-up curve. + // + // During slow start window, effective weight of an endpoint would be scaled with time factor and aggression: + // `new_weight = weight * max(min_weight_percent, time_factor ^ (1 / aggression))`, + // where `time_factor=(time_since_start_seconds / slow_start_time_seconds)`. + // + // As time progresses, more and more traffic would be sent to endpoint, which is in slow start window. + // Once host exits slow start, time_factor and aggression no longer affect its weight. + google.protobuf.DoubleValue aggression = 2; + + // Configures the minimum percentage of origin weight that avoids too small new weight, + // which may cause endpoints in slow start mode receive no traffic in slow start window. + // If not specified, the default is 10%. + google.protobuf.DoubleValue min_weight_percent = 3; + } + + // If set to true, the load balancer will drain connections when the host set changes. + // + // Ring Hash or Maglev can be used to ensure that clients with the same key + // are routed to the same upstream host. + // Distruptions can cause new connections with the same key as existing connections + // to be routed to different hosts. + // Enabling this feature will cause the load balancer to drain existing connections + // when the host set changes, ensuring that new connections with the same key are + // consistently routed to the same host. + // Connections are not immediately closed, but are allowed to drain. + bool close_connections_on_host_set_change = 10; } diff --git a/api/gloo/gloo/v1/options.proto b/api/gloo/gloo/v1/options.proto deleted file mode 100644 index 8cb8c2774..000000000 --- a/api/gloo/gloo/v1/options.proto +++ /dev/null @@ -1,433 +0,0 @@ -syntax = "proto3"; -package gloo.solo.io; -option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1"; - -import "google/protobuf/struct.proto"; - -import "extproto/ext.proto"; -option (extproto.equal_all) = true; -option (extproto.hash_all) = true; - -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/extensions.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/cors/cors.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/rest/rest.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/grpc/grpc.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/als/als.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/grpc_web/grpc_web.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/grpc_json/grpc_json.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/hcm/hcm.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/lbhash/lbhash.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/shadowing/shadowing.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/tcp/tcp.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/tracing/tracing.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/retries/retries.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/stats/stats.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/faultinjection/fault.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/headers/headers.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/aws/aws.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/wasm/wasm.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/azure/azure.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/healthcheck/healthcheck.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/protocol_upgrade/protocol_upgrade.proto"; - -import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/proxylatency/proxylatency.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/buffer/v3/buffer.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/csrf/v3/csrf.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/filter/http/gzip/v2/gzip.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/matcher/v3/regex.proto"; - -import "github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/jwt/jwt.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/ratelimit/ratelimit.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/rbac/rbac.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/waf/waf.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/dlp/dlp.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/transformation/transformation.proto"; - -import "github.com/solo-io/solo-kit/api/external/envoy/api/v2/core/base.proto"; -import "github.com/solo-io/solo-kit/api/external/envoy/api/v2/core/socket_option.proto"; - -import "google/protobuf/duration.proto"; -import "google/protobuf/wrappers.proto"; - -// Optional, feature-specific configuration that lives on gateways. -// Each ListenerOption object contains configuration for a specific feature. -// Note to developers: new Listener plugins must be added to this struct -// to be usable by Gloo. (plugins currently need to be compiled into Gloo) -message ListenerOptions { - als.options.gloo.solo.io.AccessLoggingService access_logging_service = 1; - - // Extensions will be passed along from Listeners, Gateways, VirtualServices, Routes, and Route tables to the - // underlying Proxy, making them useful for controllers, validation tools, etc. which interact with kubernetes yaml. - // - // Some sample use cases: - // * controllers, deployment pipelines, helm charts, etc. which wish to use extensions as a kind of opaque metadata. - // * In the future, Gloo may support gRPC-based plugins which communicate with the Gloo translator out-of-process. - // Opaque Extensions enables development of out-of-process plugins without requiring recompiling & redeploying Gloo's API. - Extensions extensions = 2; - - // Soft limit on size of the listener's new connection read and write buffers. If unspecified, defaults to 1MiB - // For more info, check out the [Envoy docs](https://www.envoyproxy.io/docs/envoy/v1.14.1/api-v2/api/v2/listener.proto) - google.protobuf.UInt32Value per_connection_buffer_limit_bytes = 3; - - // Additional socket options that may not be present in Envoy source code or - // precompiled binaries. - repeated .solo.io.envoy.api.v2.core.SocketOption socket_options = 4; -} - -message RouteConfigurationOptions { - // The maximum bytes of the response direct response body size. If not specified the default is 4096. - // Please refer to the [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto#envoy-v3-api-field-config-route-v3-routeconfiguration-max-direct-response-body-size-bytes) - // for more details about the `max_direct_response_body_size_bytes` attribute. - google.protobuf.UInt32Value max_direct_response_body_size_bytes = 1; -} - -// Optional, feature-specific configuration that lives on http listeners -message HttpListenerOptions { - grpc_web.options.gloo.solo.io.GrpcWeb grpc_web = 1; - hcm.options.gloo.solo.io.HttpConnectionManagerSettings http_connection_manager_settings = 2; - // enable [Envoy health checks](https://www.envoyproxy.io/docs/envoy/v1.7.0/api-v2/config/filter/http/health_check/v2/health_check.proto) on this listener - healthcheck.options.gloo.solo.io.HealthCheck health_check = 4; - // Extensions will be passed along from Listeners, Gateways, VirtualServices, Routes, and Route tables to the - // underlying Proxy, making them useful for controllers, validation tools, etc. which interact with kubernetes yaml. - // - // Some sample use cases: - // * controllers, deployment pipelines, helm charts, etc. which wish to use extensions as a kind of opaque metadata. - // * In the future, Gloo may support gRPC-based plugins which communicate with the Gloo translator out-of-process. - // Opaque Extensions enables development of out-of-process plugins without requiring recompiling & redeploying Gloo's API. - Extensions extensions = 3; - // Enterprise-only: Config for Web Application Firewall (WAF), supporting - // the popular ModSecurity 3.0 ruleset - waf.options.gloo.solo.io.Settings waf = 5; - // Enterprise-only: Config for data loss prevention - dlp.options.gloo.solo.io.FilterConfig dlp = 6; - // Enterprise-only: WASM related configuration [experimental!] - wasm.options.gloo.solo.io.PluginSource wasm = 7; - // Enterprise-only: External auth related settings - enterprise.gloo.solo.io.Settings extauth = 10; - // Enterprise-only: Settings for the rate limiting server itself - ratelimit.options.gloo.solo.io.Settings ratelimit_server = 11; - - // Gzip is an HTTP option which enables Gloo to compress - // data returned from an upstream service upon client request. - // Compression is useful in situations where large payloads need to be transmitted without compromising the response time. - // Example: - // ``` - // gzip: - // contentType: - // - "application/json" - // compressionLevel: BEST - // ``` - .solo.io.envoy.config.filter.http.gzip.v2.Gzip gzip = 8; - - // Enterprise-only: Proxy latency - envoy.config.filter.http.proxylatency.v2.ProxyLatency proxy_latency = 9; - - // Buffer can be used to set the maximum request size - // that the filter will buffer before the connection - // manager will stop buffering and return a 413 response. - .solo.io.envoy.extensions.filters.http.buffer.v3.Buffer buffer = 12; - - // Csrf can be used to set percent of requests for which the CSRF filter is enabled, enable shadow-only mode - // where policies will be evaluated and tracked, but not enforced and add additional source origins - // that will be allowed in addition to the destination origin. - // For more, see https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/filter/http/csrf/v2/csrf.proto - .solo.io.envoy.extensions.filters.http.csrf.v3.CsrfPolicy csrf = 15; - - // Exposed envoy config for the gRPC to JSON transcoding filter, - // envoy.filters.http.grpc_json_transcoder. - // For more, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/grpc_json_transcoder/v3/transcoder.proto - grpc_json.options.gloo.solo.io.GrpcJsonTranscoder grpc_json_transcoder = 13; - - // Enterprise-only: If using the HTTP header specified by cluster_header to direct traffic to a cluster, - // this option will sanitize that header from downstream traffic. - // Defaults to false - google.protobuf.BoolValue sanitize_cluster_header = 14; - - // Enterprise-only: Setting this value to true will grab the leftmost IP address from - // the x-forwarded-for header and set it as the downstream address. - // It is worth noting that the x-forwarded-for header can be tampered with by clients - // and should therefore be sanitized by any preceding proxies / load balancers if this option is to be used. - google.protobuf.BoolValue leftmost_xff_address = 16; -} - -// Optional, feature-specific configuration that lives on tcp listeners -message TcpListenerOptions { - tcp.options.gloo.solo.io.TcpProxySettings tcp_proxy_settings = 3; -} - -// Optional, feature-specific configuration that lives on virtual hosts. -// Each VirtualHostOptions object contains configuration for a specific feature. -// Note to developers: new Virtual Host plugins must be added to this struct -// to be usable by Gloo. (plugins currently need to be compiled into Gloo) -message VirtualHostOptions { - // Extensions will be passed along from Listeners, Gateways, VirtualServices, Routes, and Route tables to the - // underlying Proxy, making them useful for controllers, validation tools, etc. which interact with kubernetes yaml. - // - // Some sample use cases: - // * controllers, deployment pipelines, helm charts, etc. which wish to use extensions as a kind of opaque metadata. - // * In the future, Gloo may support gRPC-based plugins which communicate with the Gloo translator out-of-process. - // Opaque Extensions enables development of out-of-process plugins without requiring recompiling & redeploying Gloo's API. - Extensions extensions = 1; - retries.options.gloo.solo.io.RetryPolicy retries = 5; - stats.options.gloo.solo.io.Stats stats = 10; - // Append/Remove headers on Requests or Responses on all routes contained in this Virtual Host - headers.options.gloo.solo.io.HeaderManipulation header_manipulation = 2; - // Defines a CORS policy for the virtual host - // If a CORS policy is also defined on the route matched by the request, the policies are merged. - cors.options.gloo.solo.io.CorsPolicy cors = 3; - // Transformations to apply. Note: this field is superseded by `staged_transformations`. - // If `staged_transformations.regular` is set, this field will be ignored. - transformation.options.gloo.solo.io.Transformations transformations = 4 [deprecated = true]; - // Enterprise-only: Config for GlooE rate-limiting using simplified (gloo-specific) API - ratelimit.options.gloo.solo.io.IngressRateLimit ratelimit_basic = 6; - - oneof rate_limit_config_type { - - // Enterprise-only: Partial config for GlooE rate-limiting based on Envoy's rate-limit service; - // supports Envoy's rate-limit service API. (reference here: https://github.com/lyft/ratelimit#configuration) - // Configure rate-limit *actions* here, which define how request characteristics get translated into - // descriptors used by the rate-limit service for rate-limiting. Configure rate-limit *descriptors* and - // their associated limits on the Gloo settings. - // Only one of `ratelimit` or `rate_limit_configs` can be set. - ratelimit.options.gloo.solo.io.RateLimitVhostExtension ratelimit = 70; - - // References to RateLimitConfig resources. This is used to configure the GlooE rate limit server. - // Only one of `ratelimit` or `rate_limit_configs` can be set. - ratelimit.options.gloo.solo.io.RateLimitConfigRefs rate_limit_configs = 71; - } - - // Enterprise-only: Config for Web Application Firewall (WAF), supporting - // the popular ModSecurity 3.0 ruleset - waf.options.gloo.solo.io.Settings waf = 8; - - oneof jwt_config { - // Enterprise-only: Config for reading and verifying JWTs. Copy verifiable information from JWTs into other - // headers to make routing decisions or combine with RBAC for fine-grained access control. - // This has been deprecated in favor of staged jwt. The same configuration can be achieved through staged jwt - // using AfterExtAuth. - jwt.options.gloo.solo.io.VhostExtension jwt = 9 [deprecated=true]; - - // Enterprise-only: Config for reading and verifying JWTs. Copy verifiable information from JWTs into other - // headers to make routing decisions or combine with RBAC for fine-grained access control. - // JWT configuration has stages "BeforeExtAuth" and "AfterExtAuth". BeforeExtAuth JWT - // validation runs before the external authentication service. This is useful when JWT - // is used in conjunction with other auth mechanisms specified in the [boolean expression Extauth API](https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto.sk/#authconfig). - // AfterExtAuth validation runs after external authentication service, which is useful for verifying - // JWTs obtained during extauth (e.g. oauth/oidc) - jwt.options.gloo.solo.io.JwtStagedVhostExtension jwt_staged = 19; - } - - // Enterprise-only: Config for RBAC (currently only supports RBAC based on JWT claims) - rbac.options.gloo.solo.io.ExtensionSettings rbac = 11; - // Enterprise-only: Authentication configuration - enterprise.gloo.solo.io.ExtAuthExtension extauth = 12; - // Enterprise-only: Config for data loss prevention - dlp.options.gloo.solo.io.Config dlp = 13; - // BufferPerRoute can be used to set the maximum request size - // that the filter will buffer before the connection - // manager will stop buffering and return a 413 response. - // Note: If you have not set a global config (at the gateway level), this - // override will not do anything by itself. - .solo.io.envoy.extensions.filters.http.buffer.v3.BufferPerRoute buffer_per_route = 14; - // Csrf can be used to set percent of requests for which the CSRF filter is enabled, enable shadow-only mode - // where policies will be evaluated and tracked, but not enforced and add additional source origins - // that will be allowed in addition to the destination origin. - // For more, see https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/filter/http/csrf/v2/csrf.proto - .solo.io.envoy.extensions.filters.http.csrf.v3.CsrfPolicy csrf = 18; - // IncludeRequestAttemptCount decides whether the x-envoy-attempt-count header - // should be included in the upstream request. - // Setting this option will cause it to override any existing header value, - // so in the case of two Envoys on the request path with this option enabled, - // the upstream will see the attempt count as perceived by the second Envoy. - // Defaults to false. - google.protobuf.BoolValue include_request_attempt_count = 15; - // IncludeAttemptCountInResponse decides whether the x-envoy-attempt-count header - // should be included in the downstream response. - // Setting this option will cause the router to override any existing header value, - // so in the case of two Envoys on the request path with this option enabled, - // the downstream will see the attempt count as perceived by the Envoy closest upstream from itself. - // Defaults to false. - google.protobuf.BoolValue include_attempt_count_in_response = 16; - - // Early transformations stage. These transformations run before most other options are processed. - // If the `regular` field is set in here, the `transformations` field is ignored. - transformation.options.gloo.solo.io.TransformationStages staged_transformations = 17; - -} - -// Optional, feature-specific configuration that lives on routes. -// Each RouteOptions object contains configuration for a specific feature. -// Note to developers: new Route plugins must be added to this struct -// to be usable by Gloo. (plugins currently need to be compiled into Gloo) -message RouteOptions { - // Transformations to apply. Note: this field is superseded by `staged_transformations`. - // If `staged_transformations.regular` is set, this field will be ignored. - transformation.options.gloo.solo.io.Transformations transformations = 1 [deprecated = true]; - fault.options.gloo.solo.io.RouteFaults faults = 2; - // For requests matched on this route, rewrite the HTTP request path to the provided value before forwarding upstream - google.protobuf.StringValue prefix_rewrite = 3; - // Specifies the upstream timeout for the route. If not specified, the default is 15s. This spans between the point - // at which the entire downstream request (i.e. end-of-stream) has been processed and when the upstream response has - // been completely processed. A value of 0 will disable the route’s timeout. - google.protobuf.Duration timeout = 4 ; - retries.options.gloo.solo.io.RetryPolicy retries = 5; - // Extensions will be passed along from Listeners, Gateways, VirtualServices, Routes, and Route tables to the - // underlying Proxy, making them useful for controllers, validation tools, etc. which interact with kubernetes yaml. - // - // Some sample use cases: - // * controllers, deployment pipelines, helm charts, etc. which wish to use extensions as a kind of opaque metadata. - // * In the future, Gloo may support gRPC-based plugins which communicate with the Gloo translator out-of-process. - // Opaque Extensions enables development of out-of-process plugins without requiring recompiling & redeploying Gloo's API. - Extensions extensions = 6; - // Defines route-specific tracing configuration. - // See here for additional information on Envoy's tracing capabilities: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/observability/tracing.html - // See here for additional information about configuring tracing with Gloo: https://gloo.solo.io/observability/tracing/ - tracing.options.gloo.solo.io.RouteTracingSettings tracing = 7; - // Specifies traffic shadowing configuration for the route. - // See here for additional information on Envoy's shadowing capabilities: https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/route/route.proto#envoy-api-msg-route-routeaction-requestmirrorpolicy - shadowing.options.gloo.solo.io.RouteShadowing shadowing = 8; - // Append/Remove headers on Requests or Responses on this Route - headers.options.gloo.solo.io.HeaderManipulation header_manipulation = 9; - // For requests matched on this route, rewrite the Host header before forwarding upstream - oneof host_rewrite_type { - // Indicates that during forwarding, the host header will be swapped with this value. - string host_rewrite = 10; - // Enable/Disable auto host re-write. - // Indicates that the host header will be swapped with the hostname of the upstream host. - // This setting is only honored for upstreams that use DNS resolution (i.e., their generated Envoy cluster is - // of type STRICT_DNS or LOGICAL_DNS -- think aws, azure, or static upstreams with hostnames) - google.protobuf.BoolValue auto_host_rewrite = 19; - }; - // Defines a CORS policy for the route - // If a CORS policy is also defined on the route's virtual host, the policies are merged. - cors.options.gloo.solo.io.CorsPolicy cors = 11; - // For routes served by a hashing load balancer, this defines the input to the hash key - // Gloo configures Envoy with the first available RouteActionHashConfig among the following ordered list of providers: - // - route, upstream, virtual service - lbhash.options.gloo.solo.io.RouteActionHashConfig lb_hash = 12; - // Route configuration for protocol upgrade requests. - repeated protocol_upgrade.options.gloo.solo.io.ProtocolUpgradeConfig upgrades = 21; - // Enterprise-only: Config for GlooE rate-limiting using simplified (gloo-specific) API - ratelimit.options.gloo.solo.io.IngressRateLimit ratelimit_basic = 13; - - oneof rate_limit_config_type { - - // Enterprise-only: Partial config for GlooE rate-limiting based on Envoy's rate-limit service; - // supports Envoy's rate-limit service API. (reference here: https://github.com/lyft/ratelimit#configuration) - // Configure rate-limit *actions* here, which define how request characteristics get translated into - // descriptors used by the rate-limit service for rate-limiting. Configure rate-limit *descriptors* and - // their associated limits on the Gloo settings. - // Only one of `ratelimit` or `rate_limit_configs` can be set. - ratelimit.options.gloo.solo.io.RateLimitRouteExtension ratelimit = 140; - - // References to RateLimitConfig resources. This is used to configure the GlooE rate limit server. - // Only one of `ratelimit` or `rate_limit_configs` can be set. - ratelimit.options.gloo.solo.io.RateLimitConfigRefs rate_limit_configs = 141; - } - - // Enterprise-only: Config for Web Application Firewall (WAF), supporting - // the popular ModSecurity 3.0 ruleset - waf.options.gloo.solo.io.Settings waf = 15; - oneof jwt_config{ - // Enterprise-only: Config for reading and verifying JWTs. Copy verifiable information from JWTs into other - // headers to make routing decisions or combine with RBAC for fine-grained access control. - // This has been deprecated in favor of staged jwt. The same configuration can be achieved through staged jwt - // using AfterExtAuth. - jwt.options.gloo.solo.io.RouteExtension jwt = 16 [deprecated = true]; - - // Enterprise-only: Config for reading and verifying JWTs. Copy verifiable information from JWTs into other - // headers to make routing decisions or combine with RBAC for fine-grained access control. - // JWT configuration has stages "BeforeExtAuth" and "AfterExtAuth". BeforeExtAuth JWT - // validation runs before the external authentication service. This is useful when JWT - // is used in conjunction with other auth mechanisms specified in the [boolean expression Extauth API](https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto.sk/#authconfig). - // AfterExtAuth validation runs after external authentication service, which is useful for verifying - // JWTs obtained during extauth (e.g. oauth/oidc) - jwt.options.gloo.solo.io.JwtStagedRouteExtension jwt_staged = 25; - } - - // Enterprise-only: Config for RBAC (currently only supports RBAC based on JWT claims) - rbac.options.gloo.solo.io.ExtensionSettings rbac = 17; - // Enterprise-only: Authentication configuration - enterprise.gloo.solo.io.ExtAuthExtension extauth = 18; - // Enterprise-only: Config for data loss prevention - dlp.options.gloo.solo.io.Config dlp = 20; - - // BufferPerRoute can be used to set the maximum request size - // that the filter will buffer before the connection - // manager will stop buffering and return a 413 response. - // Note: If you have not set a global config (at the gateway level), this - // override will not do anything by itself. - .solo.io.envoy.extensions.filters.http.buffer.v3.BufferPerRoute buffer_per_route = 22; - - // Csrf can be used to set percent of requests for which the CSRF filter is enabled, enable shadow-only mode - // where policies will be evaluated and tracked, but not enforced and add additional source origins - // that will be allowed in addition to the destination origin. - // For more, see https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/filter/http/csrf/v2/csrf.proto - .solo.io.envoy.extensions.filters.http.csrf.v3.CsrfPolicy csrf = 24; - - // Early transformations stage. These transformations run before most other options are processed. - // If the `regular` field is set in here, the `transformations` field is ignored. - transformation.options.gloo.solo.io.TransformationStages staged_transformations = 23; - - // This field can be used to provide additional information about the route. This metadata can be consumed - // by the Envoy filters that process requests that match the route. For more info about metadata, see - // [here](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/data_sharing_between_filters#metadata). - // - // The value of this field will be propagated to the `metadata` attribute of the corresponding Envoy route. - // Please refer to the [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#config-route-v3-route) - // for more details about the `metadata` attribute. - map envoy_metadata = 26; - - // For requests matched on this route, rewrite the HTTP request path according to the provided regex pattern before forwarding upstream - // Please refer to the [Envoy documentation](https://www.envoyproxy.io/docs/envoy/v1.14.1/api-v3/config/route/v3/route_components.proto#envoy-v3-api-field-config-route-v3-routeaction-regex-rewrite) - // for more details about the `regex_rewrite` attribute - .solo.io.envoy.type.matcher.v3.RegexMatchAndSubstitute regex_rewrite = 27; -} -// Configuration for Destinations that are tied to the UpstreamSpec or ServiceSpec on that destination -message DestinationSpec { - // Note to developers: new DestinationSpecs must be added to this oneof field - // to be usable by Gloo. - oneof destination_type { - aws.options.gloo.solo.io.DestinationSpec aws = 1; - azure.options.gloo.solo.io.DestinationSpec azure = 2; - rest.options.gloo.solo.io.DestinationSpec rest = 3; - grpc.options.gloo.solo.io.DestinationSpec grpc = 4; - } -} - -// Optional, feature-specific configuration that is applied when a specific weighted destination -// is selected for routing. -message WeightedDestinationOptions { - // Append/Remove headers on Requests or Responses to/from this Weighted Destination - headers.options.gloo.solo.io.HeaderManipulation header_manipulation = 1; - // Transformations to apply. Note: this field is superseded by `staged_transformations`. - // If `staged_transformations.regular` is set, this field will be ignored. - transformation.options.gloo.solo.io.Transformations transformations = 2 [deprecated = true]; - // Extensions will be passed along from Listeners, Gateways, VirtualServices, Routes, and Route tables to the - // underlying Proxy, making them useful for controllers, validation tools, etc. which interact with kubernetes yaml. - // - // Some sample use cases: - // * controllers, deployment pipelines, helm charts, etc. which wish to use extensions as a kind of opaque metadata. - // * In the future, Gloo may support gRPC-based plugins which communicate with the Gloo translator out-of-process. - // Opaque Extensions enables development of out-of-process plugins without requiring recompiling & redeploying Gloo's API. - Extensions extensions = 3; - // Enterprise-only: Authentication configuration - enterprise.gloo.solo.io.ExtAuthExtension extauth = 4; - // BufferPerRoute can be used to set the maximum request size - // that the filter will buffer before the connection - // manager will stop buffering and return a 413 response. - // Note: If you have not set a global config (at the gateway level), this - // override will not do anything by itself. - .solo.io.envoy.extensions.filters.http.buffer.v3.BufferPerRoute buffer_per_route = 5; - - // Csrf can be used to set percent of requests for which the CSRF filter is enabled, enable shadow-only mode - // where policies will be evaluated and tracked, but not enforced and add additional source origins - // that will be allowed in addition to the destination origin. - // For more, see https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/filter/http/csrf/v2/csrf.proto - .solo.io.envoy.extensions.filters.http.csrf.v3.CsrfPolicy csrf = 7; - - // Early transformations stage. These transformations run before most other options are processed. - // If the `regular` field is set in here, the `transformations` field is ignored. - transformation.options.gloo.solo.io.TransformationStages staged_transformations = 6; -} diff --git a/api/gloo/gloo/v1/options/advanced_http/advanced_http.proto b/api/gloo/gloo/v1/options/advanced_http/advanced_http.proto index 8da7afde2..fb7456566 100644 --- a/api/gloo/gloo/v1/options/advanced_http/advanced_http.proto +++ b/api/gloo/gloo/v1/options/advanced_http/advanced_http.proto @@ -2,7 +2,6 @@ syntax = "proto3"; package advancedhttp.options.gloo.solo.io; -import "udpa/annotations/status.proto"; import "google/protobuf/empty.proto"; import "validate/validate.proto"; diff --git a/api/gloo/gloo/v1/options/als/als.proto b/api/gloo/gloo/v1/options/als/als.proto index f7bb2c316..36d76be20 100644 --- a/api/gloo/gloo/v1/options/als/als.proto +++ b/api/gloo/gloo/v1/options/als/als.proto @@ -1,3 +1,5 @@ +// Mostly taken from https://github.com/envoyproxy/envoy/blob/317efa53c6add02fa9533fc8f93f10f590077dca/api/envoy/config/accesslog/v3/accesslog.proto +// because we are passing through the filter settings and therefore using the same message definitions syntax = "proto3"; package als.options.gloo.solo.io; @@ -6,13 +8,21 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/option import "extproto/ext.proto";option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "github.com/solo-io/solo-kit/api/v1/ref.proto"; +import "validate/validate.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl/ssl.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/base.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/v3/percent.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/route/v3/route_components.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/opentelemetry/common/v1/common.proto"; +import "google/protobuf/duration.proto"; import "google/protobuf/struct.proto"; // Contains various settings for Envoy's access logging service. -// See here for more information: https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/filter/accesslog/v2/accesslog.proto#envoy-api-msg-config-filter-accesslog-v2-accesslog +// See here for more information: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/accesslog/v3/accesslog.proto message AccessLoggingService { repeated AccessLog access_log = 1; } @@ -24,7 +34,11 @@ message AccessLog { FileSink file_sink = 2; // Send access logs to gRPC service GrpcService grpc_service = 3; + // Send access logs to OpenTelemetry service + OpenTelemetryService open_telemetry_service = 5; } + + AccessLogFilter filter = 4; } message FileSink { @@ -44,6 +58,7 @@ message FileSink { message GrpcService { // name of log stream string log_name = 1; + // The static cluster defined in bootstrap config to route to oneof service_ref { string static_cluster_name = 2; @@ -54,4 +69,275 @@ message GrpcService { repeated string additional_response_headers_to_log = 5; repeated string additional_response_trailers_to_log = 6; + + // Additional filter state objects to log in filter_state_objects. Logger will call FilterState::Object::serializeAsProto to serialize the filter state object. + // See https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/access_loggers/grpc/v3/als.proto#extensions-access-loggers-grpc-v3-commongrpcaccesslogconfig + repeated string filter_state_objects_to_log = 7; +} + +message OpenTelemetryGrpcCollector { + // host and port of the OpenTelemetry collector + string endpoint = 1; + // authority to use when connecting to the OpenTelemetry collector + string authority = 2; + // headers to use when connecting to the OpenTelemetry collector + map headers = 3; + // if true, the connection to the OpenTelemetry collector will be insecure + // (i.e. no TLS). + bool insecure = 4; + // ssl config to use when connecting to the OpenTelemetry collector, + // if insecure is true, this will be ignored + .gloo.solo.io.UpstreamSslConfig ssl_config = 5; + // timeout to use when connecting to the OpenTelemetry collector + google.protobuf.Duration timeout = 6; +} + +message OpenTelemetryService { + // name of log stream + string log_name = 1; + + // The destination to ship logs to + // This is a oneof field, so we can easily add other destinations in the future + // without breaking the API. + oneof destination { + OpenTelemetryGrpcCollector collector = 2; + } + + // Additional filter state objects to log in filter_state_objects. Logger will call FilterState::Object::serializeAsProto to serialize the filter state object. + // See https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/access_loggers/grpc/v3/als.proto#extensions-access-loggers-grpc-v3-commongrpcaccesslogconfig + repeated string filter_state_objects_to_log = 3; + + // If true, Envoy logger will not generate built-in resource labels like log_name, + // zone_name, cluster_name, node_name + bool disable_builtin_labels = 4; + + // The body of the log record. Supported formats include human-readable + // string messages, including multiline, that describe the event in free form, or + // structured data composed of arrays and maps of other values. For more + // information about the format, see the [OpenTelementry `common.proto`](https://github.com/open-telemetry/opentelemetry-proto/blob/main/opentelemetry/proto/common/v1/common.proto). + // + //

Examples: + //
  • {"int_value": 1}
  • + //
  • {"string_value": "hello world"}
  • + //
  • {"kvlist_value": {"values": [{"key": "k1", "value": {"int_value": 1}}, {"key": "k2", "value": {"string_value": "v2"}}]}}
  • + //
  • {"array_value": {"values": [{"int_value": 1}, {"string_value": "hello world"}]}}
+ opentelemetry.proto.common.v1.AnyValue body = 5; + + // Optional: Additional attributes that describe the specific event occurrence. + // Attribute keys must be unique to each attribute. For more + // information about the format, see the [OpenTelementry `common.proto`](https://github.com/open-telemetry/opentelemetry-proto/blob/main/opentelemetry/proto/common/v1/common.proto). + // + //

Examples: + //
  • {"values": [{"key": "k1", "value": {"int_value": 1}}, {"key": "k2", "value": {"string_value": "v2"}}]}
  • + //
  • {"values": [{"key": "k1", "values": {kvlist_value: {values: [{"key": "k2", "value": {"int_value": 1}}, {"key": "k3", "value": {"string_value": "v2"}}]}}}]}
  • + //
  • {"values": [{"key": "k1", "value": {"int_value": 1}}, {"key": "k2", "value": {"string_value": "v2"}}]}
+ opentelemetry.proto.common.v1.KeyValueList attributes = 6; } + +message AccessLogFilter { + oneof filter_specifier { + option (validate.required) = true; + // Status code filter. + StatusCodeFilter status_code_filter = 1; + + // Duration filter. + DurationFilter duration_filter = 2; + + // Not health check filter. + NotHealthCheckFilter not_health_check_filter = 3; + + // Traceable filter. + TraceableFilter traceable_filter = 4; + + // Runtime filter. + RuntimeFilter runtime_filter = 5; + + // And filter. + AndFilter and_filter = 6; + + // Or filter. + OrFilter or_filter = 7; + + // Header filter. + HeaderFilter header_filter = 8; + + // Response flag filter. + ResponseFlagFilter response_flag_filter = 9; + + // gRPC status filter. + GrpcStatusFilter grpc_status_filter = 10; + } +} + +// Filter on an integer comparison. +message ComparisonFilter { + enum Op { + // = + EQ = 0; + + // >= + GE = 1; + + // <= + LE = 2; + } + + // Comparison operator. + Op op = 1 [(validate.rules).enum = {defined_only: true}]; + + // Value to compare against. Note that the `defaultValue` field must be defined unless + // the `runtimeKey` matches a key that is defined in Envoy's [runtime configuration layer](https://www.envoyproxy.io/docs/envoy/v1.30.0/configuration/operations/runtime#config-runtime-bootstrap). + // Gloo Gateway does not include a key by default. To specify a key-value pair, use the + // [gatewayProxies.NAME.customStaticLayer]({{< versioned_link_path fromRoot="/reference/helm_chart_values/" >}}) + // Helm value or set the key at runtime by using the gateway proxy admin interface. + .solo.io.envoy.config.core.v3.RuntimeUInt32 value = 2 [(validate.rules).message = {required: true}]; +} + +// Filters on HTTP response/status code. +message StatusCodeFilter { + // Comparison. + ComparisonFilter comparison = 1 [(validate.rules).message = {required: true}]; + } + +// Filters on total request duration in milliseconds. +message DurationFilter { + // Comparison. + ComparisonFilter comparison = 1 [(validate.rules).message = {required: true}]; +} + +// Filters for requests that are not health check requests. A health check +// request is marked by the health check filter. +message NotHealthCheckFilter { +} + +// Filters for requests that are traceable. See the tracing overview for more +// information on how a request becomes traceable. +message TraceableFilter { +} + +// Filters for random sampling of requests. +message RuntimeFilter { + // Runtime key to get an optional overridden numerator for use in the + // `percent_sampled` field. If found in runtime, this value will replace the + // default numerator. + string runtime_key = 1 [(validate.rules).string = {min_len: 1}]; + + // The default sampling percentage. If not specified, defaults to 0% with + // denominator of 100. + .solo.io.envoy.type.v3.FractionalPercent percent_sampled = 2; + + // By default, sampling pivots on the header + // :ref:`x-request-id` being + // present. If :ref:`x-request-id` + // is present, the filter will consistently sample across multiple hosts based + // on the runtime key value and the value extracted from + // :ref:`x-request-id`. If it is + // missing, or `use_independent_randomness` is set to true, the filter will + // randomly sample based on the runtime key value alone. + // `use_independent_randomness` can be used for logging kill switches within + // complex nested :ref:`AndFilter + // ` and :ref:`OrFilter + // ` blocks that are easier to + // reason about from a probability perspective (i.e., setting to true will + // cause the filter to behave like an independent random variable when + // composed within logical operator filters). + bool use_independent_randomness = 3; + } + +// Performs a logical “and” operation on the result of each filter in filters. +// Filters are evaluated sequentially and if one of them returns false, the +// filter returns false immediately. +message AndFilter { + repeated AccessLogFilter filters = 1 [(validate.rules).repeated = {min_items: 2}]; +} + +// Performs a logical “or” operation on the result of each individual filter. +// Filters are evaluated sequentially and if one of them returns true, the +// filter returns true immediately. +message OrFilter { + repeated AccessLogFilter filters = 2 [(validate.rules).repeated = {min_items: 2}]; +} + +// Filters requests based on the presence or value of a request header. +message HeaderFilter { + + // Only requests with a header which matches the specified HeaderMatcher will + // pass the filter check. + .solo.io.envoy.config.route.v3.HeaderMatcher header = 1 [(validate.rules).message = {required: true}]; +} + +// Filters requests that received responses with an Envoy response flag set. +// A list of the response flags can be found +// in the access log formatter +// :ref:`documentation`. +message ResponseFlagFilter { + + // Only responses with the any of the flags listed in this field will be + // logged. This field is optional. If it is not specified, then any response + // flag will pass the filter check. + repeated string flags = 1 [(validate.rules).repeated = { + items { + string { + in: "LH" + in: "UH" + in: "UT" + in: "LR" + in: "UR" + in: "UF" + in: "UC" + in: "UO" + in: "NR" + in: "DI" + in: "FI" + in: "RL" + in: "UAEX" + in: "RLSE" + in: "DC" + in: "URX" + in: "SI" + in: "IH" + in: "DPE" + in: "UMSDR" + in: "RFCF" + in: "NFCF" + in: "DT" + in: "UPE" + in: "NC" + in: "OM" + } + } + }]; +} + +// Filters gRPC requests based on their response status. If a gRPC status is not +// provided, the filter will infer the status from the HTTP status code. +message GrpcStatusFilter { + enum Status { + OK = 0; + CANCELED = 1; + UNKNOWN = 2; + INVALID_ARGUMENT = 3; + DEADLINE_EXCEEDED = 4; + NOT_FOUND = 5; + ALREADY_EXISTS = 6; + PERMISSION_DENIED = 7; + RESOURCE_EXHAUSTED = 8; + FAILED_PRECONDITION = 9; + ABORTED = 10; + OUT_OF_RANGE = 11; + UNIMPLEMENTED = 12; + INTERNAL = 13; + UNAVAILABLE = 14; + DATA_LOSS = 15; + UNAUTHENTICATED = 16; + } + + // Logs only responses that have any one of the gRPC statuses in this field. + repeated Status statuses = 1 [(validate.rules).repeated = {items {enum {defined_only: true}}}]; + + // If included and set to true, the filter will instead block all responses + // with a gRPC status or inferred gRPC status enumerated in statuses, and + // allow all other responses. + bool exclude = 2; +} + diff --git a/api/gloo/gloo/v1/options/aws/aws.proto b/api/gloo/gloo/v1/options/aws/aws.proto index ddd34a049..cf9a26d62 100644 --- a/api/gloo/gloo/v1/options/aws/aws.proto +++ b/api/gloo/gloo/v1/options/aws/aws.proto @@ -6,6 +6,7 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/option import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "github.com/solo-io/solo-kit/api/v1/ref.proto"; @@ -16,7 +17,7 @@ message UpstreamSpec { // The AWS Region where the desired Lambda Functions exist string region = 1; - // A [Gloo Secret Ref](https://gloo.solo.io/introduction/concepts/#Secrets) to an AWS Secret + // A [Gloo Secret Ref](https://docs.solo.io/gloo-edge/latest/reference/cli/glooctl_create_secret_aws/) to an AWS Secret // AWS Secrets can be created with `glooctl secret create aws ...` // If the secret is created manually, it must conform to the following structure: // ``` @@ -35,6 +36,16 @@ message UpstreamSpec { // This option will only be respected if STS credentials are enabled. // To enable STS credential fetching see Settings.Gloo.AwsOptions in settings.proto. string role_arn = 4; + + // (Optional): The AWS Account ID to use while calling if using resource based access + string aws_account_id = 5; + + // Optional override to disable role chaining; + bool disable_role_chaining = 6; + + // Specifies AWS DestinationSpec configuration overrides for any route targeting this upstream. + // Note that the route in question must have an AWS DestinationSpec to be affected and this will only set things that are non-falsey as overrides. + DestinationSpec destination_overrides = 7; } // Each Lambda Function Spec contains data necessary for Gloo to invoke Lambda functions: @@ -53,6 +64,7 @@ message LambdaFunctionSpec { } // Each Lambda Function Spec contains data necessary for Gloo to invoke Lambda functions +// [#next-free-field: 8] message DestinationSpec { // The Logical Name of the LambdaFunctionSpec to be invoked. string logical_name = 1; @@ -62,6 +74,28 @@ message DestinationSpec { SYNC = 0; ASYNC = 1; } - // de-jsonify response bodies returned from aws lambda - bool response_transformation = 5; + // Include headers, multi-value headers, querystring, querystring parameters, multi-value querystring parameters, request path, and request method in the event payload sent to aws lambda + // Only one of `requestTransformation` or `wrapAsApiGateway` should be provided. + bool request_transformation = 6; + + // Deprecated. Use unwrapAsApiGateway + bool response_transformation = 5 [deprecated=true]; + + // Unwrap the response as if the proxy was an ALB. + // Intended to ease migration when previously using ALB to invoke Lambdas. + // For further information see below link for the expected format when true. + // https://docs.aws.amazon.com/elasticloadbalancing/latest/application/lambda-functions.html + // Only one of `unwrapAsAlb` or `unwrapAsApiGateway` may be provided. + bool unwrap_as_alb = 7; + + // Unwrap the response as if the proxy was an AWS API Gateway. + // Intended to ease migration when previously using API Gateway to invoke Lambdas. + // Only one of `unwrapAsAlb` or `unwrapAsApiGateway` may be provided. + bool unwrap_as_api_gateway = 8; + + // Enterprise-Only + // Wrap the request into AWS API Gateway event format. + // Intended to ease migration when previously using API Gateway to invoke Lambdas. + // Only one of `requestTransformation` or `wrapAsApiGateway` should be provided. + bool wrap_as_api_gateway = 9; } diff --git a/api/gloo/gloo/v1/options/aws/ec2/aws_ec2.proto b/api/gloo/gloo/v1/options/aws/ec2/aws_ec2.proto index f24fe89c7..eae5bc3e1 100644 --- a/api/gloo/gloo/v1/options/aws/ec2/aws_ec2.proto +++ b/api/gloo/gloo/v1/options/aws/ec2/aws_ec2.proto @@ -6,6 +6,7 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/option import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "github.com/solo-io/solo-kit/api/v1/ref.proto"; @@ -21,7 +22,7 @@ message UpstreamSpec { // The environment variables used to indicate the AWS account can be: // - for the access key: "AWS_ACCESS_KEY_ID" or "AWS_ACCESS_KEY" // - for the secret: "AWS_SECRET_ACCESS_KEY" or "AWS_SECRET_KEY" - // If set, a [Gloo Secret Ref](https://gloo.solo.io/introduction/concepts/#Secrets) to an AWS Secret + // If set, a [Gloo Secret Ref](https://docs.solo.io/gloo-edge/latest/reference/cli/glooctl_create_secret_aws/) to an AWS Secret // AWS Secrets can be created with `glooctl secret create aws ...` // If the secret is created manually, it must conform to the following structure: // ``` @@ -46,7 +47,7 @@ message UpstreamSpec { // If set, will use the EC2 public IP address. Defaults to the private IP address. bool public_ip = 4; - // If set, will use this port on EC2 instances. Defaults to port 80. + // If set, will use this port on EC2 instances. Defaults to 0. uint32 port = 5; } diff --git a/api/gloo/gloo/v1/options/azure/azure.proto b/api/gloo/gloo/v1/options/azure/azure.proto index e31306f28..223432e91 100644 --- a/api/gloo/gloo/v1/options/azure/azure.proto +++ b/api/gloo/gloo/v1/options/azure/azure.proto @@ -6,6 +6,7 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/option import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "github.com/solo-io/solo-kit/api/v1/ref.proto"; @@ -15,8 +16,7 @@ import "github.com/solo-io/solo-kit/api/v1/ref.proto"; message UpstreamSpec { // The Name of the Azure Function App where the functions are grouped string function_app_name = 1; - // A [Gloo Secret Ref](https://gloo.solo.io/introduction/concepts/#Secrets) to an [Azure Publish Profile JSON file](https://azure.microsoft.com/en-us/downloads/publishing-profile-overview/). - // {{ hide_not_implemented "Azure Secrets can be created with `glooctl secret create azure ...`" }} + // A [Gloo Secret Ref](https://docs.solo.io/gloo-edge/latest/reference/cli/glooctl_create_secret_azure/) to an [Azure Publish Profile JSON file](https://azure.microsoft.com/en-us/downloads/publishing-profile-overview/). // Note that this secret is not required unless Function Discovery is enabled core.solo.io.ResourceRef secret_ref = 2; diff --git a/api/gloo/gloo/v1/options/connection_limit/connection_limit.proto b/api/gloo/gloo/v1/options/connection_limit/connection_limit.proto new file mode 100644 index 000000000..65b5de880 --- /dev/null +++ b/api/gloo/gloo/v1/options/connection_limit/connection_limit.proto @@ -0,0 +1,28 @@ +syntax = "proto3"; + +package connection_limit.options.gloo.solo.io; + +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/connection_limit"; + +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; +import "github.com/solo-io/solo-kit/api/external/envoy/api/v2/core/base.proto"; + +import "google/protobuf/duration.proto"; +import "google/protobuf/wrappers.proto"; + + +// These options provide the ability to limit the active connections in envoy. +// Ref. https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/network_filters/connection_limit_filter +message ConnectionLimit { + // The maximum number of active connections for this gateway. When this limit is reached, any incoming connection + // will be closed after delay duration. + // Must be greater than or equal to one. + google.protobuf.UInt32Value max_active_connections = 1; + + // The time to wait before a connection is dropped. Useful for DoS prevention. + // Defaults to zero and the connection will be closed immediately. + google.protobuf.Duration delay_before_close = 2; +} diff --git a/api/gloo/gloo/v1/options/consul/consul.proto b/api/gloo/gloo/v1/options/consul/consul.proto index def52c05d..ccdf3ff93 100644 --- a/api/gloo/gloo/v1/options/consul/consul.proto +++ b/api/gloo/gloo/v1/options/consul/consul.proto @@ -6,8 +6,10 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/option import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/service_spec.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/consul/query_options.proto"; // Upstream Spec for Consul Upstreams // consul Upstreams represent a set of one or more addressable pods for a consul Service @@ -40,8 +42,18 @@ message UpstreamSpec { // An optional Service Spec describing the service listening at this address .options.gloo.solo.io.ServiceSpec service_spec = 3; + // Sets the consistency mode. The default is DefaultMode. + // + // Note: Gloo handles staleness well (as it runs update loops ~ once/second) but makes many requests + // to get consul endpoints so users may want to opt into stale reads once the implications are understood. + .consul.options.gloo.solo.io.ConsulConsistencyModes consistencyMode = 9; + + // QueryOptions are the query options to use for all Consul queries. + .consul.options.gloo.solo.io.QueryOptions query_options = 10; + // Is this consul service connect enabled. bool connect_enabled = 4; + // The data centers in which the service instance represented by this upstream is registered. repeated string data_centers = 5; -} +} \ No newline at end of file diff --git a/api/gloo/gloo/v1/options/consul/query_options.proto b/api/gloo/gloo/v1/options/consul/query_options.proto new file mode 100644 index 000000000..1e9357b66 --- /dev/null +++ b/api/gloo/gloo/v1/options/consul/query_options.proto @@ -0,0 +1,68 @@ +syntax = "proto3"; +package consul.options.gloo.solo.io; + +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/consul"; + +import "google/protobuf/duration.proto"; +import "google/protobuf/wrappers.proto"; + +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + +// somewhat mirrors client query options struct in consul catalog api +// only has options that we know we want configurable at both upstream and settings-wide discovery levels +message QueryOptions{ + // UseCache requests that the agent cache results locally. See + // https://www.consul.io/api/features/caching.html for more details on the + // semantics. + // + // Defaults to true. + // opts users into background refresh caching https://www.consul.io/api-docs/features/caching#background-refresh-caching + google.protobuf.BoolValue use_cache = 1; +} + +// These are the same consistency modes offered by Consul. For more information please review https://www.consul.io/api-docs/features/consistency. +// and https://pkg.go.dev/github.com/hashicorp/consul/api#QueryOptions. +// +// Note: Gloo handles staleness well (as it runs update loops ~ once/second) but makes many requests +// to get consul endpoints so users may want to opt into stale reads once the implications are understood. +enum ConsulConsistencyModes{ + // default - Consul HTTP API queries use default mode by default. + // It is strongly consistent in almost all cases. However, there is a small + // window in which a new leader may be elected during which the old leader may + // respond with stale values. The trade-off is fast reads but potentially stale + // values. The condition resulting in stale reads is hard to trigger, and most + // clients should not need to worry about this case. Also, note that this race + // condition only applies to reads, not writes. + // + // For more, see https://www.consul.io/api-docs/features/consistency#consul-http-api-queries + DefaultMode = 0; + // AllowStale allows any Consul server (non-leader) to service + // a read. This allows for lower latency and higher throughput + // + // stale - Consul DNS queries use stale mode by default. This mode allows any + // server to handle the read regardless of whether it is the leader. The trade-off + // is very fast and scalable reads with a higher likelihood of stale values. Results + // are generally consistent to within 50 milliseconds of the leader, though there is + // no upper limit on this staleness. Since this mode allows reads without a leader, a + // cluster that is unavailable (no quorum) can still respond to queries. + // + // Gloo handles staleness well (as it runs update loops ~ once/second) so users may want + // to opt into this. + StaleMode = 1; + // RequireConsistent forces the read to be fully consistent. + // This is more expensive but prevents ever performing a stale + // read. + // + // consistent - This mode is strongly consistent without caveats. It requires that a + // leader verify with a quorum of peers that it is still leader. This introduces an + // additional round-trip to all server nodes. The trade-off is increased latency due + // to an extra round trip. Most clients should not use this unless they cannot tolerate + // a stale read. + // + // Gloo handles staleness well (as it runs update loops ~ once/second) so users may want + // to strongly consider their requirements before enabling this. + ConsistentMode = 2; +} \ No newline at end of file diff --git a/api/gloo/gloo/v1/options/cors/cors.proto b/api/gloo/gloo/v1/options/cors/cors.proto index 94761ea00..c9498407d 100644 --- a/api/gloo/gloo/v1/options/cors/cors.proto +++ b/api/gloo/gloo/v1/options/cors/cors.proto @@ -5,6 +5,7 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/option import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; // CorsPolicy defines Cross-Origin Resource Sharing for a virtual service. @@ -38,4 +39,43 @@ message CorsPolicy { // Optional, only applies to route-specific CORS Policies, defaults to false. // If set, the CORS Policy (specified on the virtual host) will be disabled for this route. bool disable_for_route = 8; +} + +// Settings to determine how to merge CORS settings when present on both the VirtualHost and Route. +// This option can be useful when different user personas or teams share ownership of a VirtualService. +// For example, you might not want CORS settings on each route to override the virtual host settings, but instead merge them with a `UNION` strategy. +message CorsPolicyMergeSettings { + enum MergeStrategy{ + // Follow the default Envoy behavior, which is for Route settings to override VirtualHost settings if non-nil. + DEFAULT = 0; + // When a CORS policy is present on both VirtualHost and Route CORS policy, merge the settings. The merge is done + // by concatenating for list fields and by ORing for boolean fields. + UNION = 1; + + // Eventually we may want to add additional mergeStrategies + + // When a setting is present on both VH and Route CORS policy, merge by taking only values present in both for + // list fields and by ANDing for boolean fields + // INTERSECTION = 2; + + // When a setting is present on both VH and Route CORS policy, use the Route-level field + // This is Envoy's underlying behavior, so effectively the same as default + // ROUTE = 3; + + // When a setting is present on both VH and Route CORS policy, use the VH-level field + // VH = 4; + } + + // Eventually we may want to allow each CORS setting to be configured, so we reserve fields for them + + // mimicking the CorsPolicy message + // mergeStrategy allow_origin = 1; + // mergeStrategy allow_origin_regex = 2; + // mergeStrategy allow_methods = 3; + // mergeStrategy allow_headers = 4; + + MergeStrategy expose_headers = 5; + + // mergeStrategy max_age = 6; + // mergeStrategy allow_credentials = 7; } \ No newline at end of file diff --git a/api/gloo/gloo/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.proto b/api/gloo/gloo/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.proto new file mode 100644 index 000000000..5374536bf --- /dev/null +++ b/api/gloo/gloo/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.proto @@ -0,0 +1,217 @@ +syntax = "proto3"; +package dfp.options.gloo.solo.io; + +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy"; + +import "extproto/ext.proto"; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; +option (extproto.equal_all) = true; +import "validate/validate.proto"; + +import "google/protobuf/duration.proto"; +import "google/protobuf/wrappers.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/address.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl/ssl.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/circuit_breaker/circuit_breaker.proto"; + +// Configuration for the dynamic forward proxy HTTP filter. See the :ref:`architecture overview +// ` for more information. +// [#extension: envoy.filters.http.dynamic_forward_proxy] +message FilterConfig { + // The DNS cache configuration that the filter will attach to. Note this configuration must + // match that of associated :ref:`dynamic forward proxy cluster configuration + // `. + DnsCacheConfig dns_cache_config = 1 [(validate.rules).message = {required: true}]; + + // When this flag is set, the filter will add the resolved upstream address in the filter + // state. The state should be saved with key + // `envoy.stream.upstream_address` (See + // :repo:`upstream_address.h`). + bool save_upstream_address = 2; + + // If provided, the autogenerated dynamic forward proxy cluster will use TLS when connecting to upstream hosts and verify the certificate chain + .gloo.solo.io.UpstreamSslConfig ssl_config = 3; + + // Circuit breakers for this proxy. if not set, the defaults ones from the Gloo settings will be used. + // if those are not set, [envoy's defaults](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/circuit_breaker.proto#envoy-api-msg-cluster-circuitbreakers) + // will be used. + .gloo.solo.io.CircuitBreakerConfig circuit_breakers = 4; +} + +// Configuration of circuit breakers for resolver. +message DnsCacheCircuitBreakers { + // The maximum number of pending requests that Envoy will allow to the + // resolver. If not specified, the default is 1024. + google.protobuf.UInt32Value max_pending_requests = 1; +} + +// Configuration for the dynamic forward proxy DNS cache. See the :ref:`architecture overview +// ` for more information. +// [#next-free-field: 14] +message DnsCacheConfig { + // The DNS lookup family to use during resolution. + // + // [#comment:TODO(mattklein123): Figure out how to support IPv4/IPv6 "happy eyeballs" mode. The + // way this might work is a new lookup family which returns both IPv4 and IPv6 addresses, and + // then configures a host to have a primary and fall back address. With this, we could very + // likely build a "happy eyeballs" connection pool which would race the primary / fall back + // address and return the one that wins. This same method could potentially also be used for + // QUIC to TCP fall back.] + DnsLookupFamily dns_lookup_family = 2 [(validate.rules).enum = {defined_only: true}]; + + // The DNS refresh rate for unresolved DNS hosts. If not specified defaults to 60s. + // + // The refresh rate is rounded to the closest millisecond, and must be at least 1ms. + // + // Once a host has been resolved, the refresh rate will be the DNS TTL, capped + // at a minimum of 5s. + google.protobuf.Duration dns_refresh_rate = 3 [(validate.rules).duration = {gte {nanos: 1000000}}]; + + // The TTL for hosts that are unused. Hosts that have not been used in the configured time + // interval will be purged. If not specified defaults to 5m. + // + // **Note**: + // + // The TTL is only checked at the time of DNS refresh, as specified by *dns_refresh_rate*. This + // means that if the configured TTL is shorter than the refresh rate the host may not be removed + // immediately. + // + // **Note**: + // + // The TTL has no relation to DNS TTL and is only used to control Envoy's resource usage. + google.protobuf.Duration host_ttl = 4 [(validate.rules).duration = {gt {}}]; + + // The maximum number of hosts that the cache will hold. If not specified defaults to 1024. + // + // **Note**: + // + // The implementation is approximate and enforced independently on each worker thread, thus + // it is possible for the maximum hosts in the cache to go slightly above the configured + // value depending on timing. This is similar to how other circuit breakers work. + google.protobuf.UInt32Value max_hosts = 5 [(validate.rules).uint32 = {gt: 0}]; + + // If the DNS failure refresh rate is specified, + // this is used as the cache's DNS refresh rate when DNS requests are failing. If this setting is + // not specified, the failure refresh rate defaults to the dns_refresh_rate. + RefreshRate dns_failure_refresh_rate = 6; + + // The config of circuit breakers for resolver. It provides a configurable threshold. + // Envoy will use dns cache circuit breakers with default settings even if this value is not set. + DnsCacheCircuitBreakers dns_cache_circuit_breaker = 7; + + oneof DnsCacheType { + CaresDnsResolverConfig cares_dns = 8; + AppleDnsResolverConfig apple_dns = 9; + } + + // Hostnames that should be preresolved into the cache upon creation. This might provide a + // performance improvement, in the form of cache hits, for hostnames that are going to be + // resolved during steady state and are known at config load time. + repeated .solo.io.envoy.config.core.v3.SocketAddress preresolve_hostnames = 10; + + // The timeout used for DNS queries. This timeout is independent of any timeout and retry policy + // used by the underlying DNS implementation (e.g., c-areas and Apple DNS) which are opaque. + // Setting this timeout will ensure that queries succeed or fail within the specified time frame + // and are then retried using the standard refresh rates. Defaults to 5s if not set. + google.protobuf.Duration dns_query_timeout = 11 [(validate.rules).duration = {gt {}}]; +} + +// When V4_ONLY is selected, the DNS resolver will only perform a lookup for +// addresses in the IPv4 family. If V6_ONLY is selected, the DNS resolver will +// only perform a lookup for addresses in the IPv6 family. If AUTO is +// specified, the DNS resolver will first perform a lookup for addresses in +// the IPv6 family and fallback to a lookup for addresses in the IPv4 family. +// This is semantically equivalent to a non-existent V6_PREFERRED option. +// AUTO is a legacy name that is more opaque than +// necessary and will be deprecated in favor of V6_PREFERRED in a future major version of the API. +// If V4_PREFERRED is specified, the DNS resolver will first perform a lookup for addresses in the +// IPv4 family and fallback to a lookup for addresses in the IPv6 family. i.e., the callback +// target will only get v6 addresses if there were NO v4 addresses to return. +// If ALL is specified, the DNS resolver will perform a lookup for both IPv4 and IPv6 families, +// and return all resolved addresses. +// For cluster types other than +// :ref:`STRICT_DNS` and +// :ref:`LOGICAL_DNS`, +// this setting is +// ignored. +// [#next-major-version: deprecate AUTO in favor of a V6_PREFERRED option.] +enum DnsLookupFamily { + V4_PREFERRED = 0; + V4_ONLY = 1; + V6_ONLY = 2; + AUTO = 3; + ALL = 4; +} + +message RefreshRate { + // Specifies the base interval between refreshes. This parameter is required and must be greater + // than 1ms and less than + // max_interval. + google.protobuf.Duration base_interval = 1 [(validate.rules).duration = { + required: true + gt {nanos: 1000000} + }]; + + // Specifies the maximum interval between refreshes. This parameter is optional, but must be + // greater than or equal to the + // base_interval if set. The default + // is 10 times the base_interval. + google.protobuf.Duration max_interval = 2 [(validate.rules).duration = {gt {nanos: 1000000}}]; +} + +// Per route Configuration for the dynamic forward proxy HTTP filter. +message PerRouteConfig { + oneof host_rewrite_specifier { + // Indicates that before DNS lookup, the host header will be swapped with + // this value. If not set or empty, the original host header value + // will be used and no rewrite will happen. + // + // Note: this rewrite affects both DNS lookup and host header forwarding. However, this + // option shouldn't be used with + // HCM host rewrite given that the + // value set here would be used for DNS lookups whereas the value set in the HCM would be used + // for host header forwarding which is not the desired outcome. + string host_rewrite = 1; + + // Indicates that before DNS lookup, the host header will be swapped with + // the value of this header. If not set or empty, the original host header + // value will be used and no rewrite will happen. + // + // Note: this rewrite affects both DNS lookup and host header forwarding. However, this + // option shouldn't be used with + // :ref:`HCM host rewrite header ` + // given that the value set here would be used for DNS lookups whereas the value set in the HCM + // would be used for host header forwarding which is not the desired outcome. + // + // **Note**: + // + // If the header appears multiple times only the first value is used. + string auto_host_rewrite_header = 2; + } +} + +// Configuration of DNS resolver option flags which control the behavior of the DNS resolver. +message DnsResolverOptions { + // Use TCP for all DNS queries instead of the default protocol UDP. + bool use_tcp_for_dns_lookups = 1; + + // Do not use the default search domains; only query hostnames as-is or as aliases. + bool no_default_search_domain = 2; +} + +// Configuration for c-ares DNS resolver. +message CaresDnsResolverConfig { + // A list of dns resolver addresses. + // :ref:`use_resolvers_as_fallback` + // below dictates if the DNS client should override system defaults or only use the provided + // resolvers if the system defaults are not available, i.e., as a fallback. + repeated .solo.io.envoy.config.core.v3.Address resolvers = 1 [(validate.rules).repeated = {min_items: 1}]; + + // Configuration of DNS resolver option flags which control the behavior of the DNS resolver. + DnsResolverOptions dns_resolver_options = 2; +} + +// Configuration for apple DNS resolver. +message AppleDnsResolverConfig { +} \ No newline at end of file diff --git a/api/gloo/gloo/v1/options/faultinjection/fault.proto b/api/gloo/gloo/v1/options/faultinjection/fault.proto index ec8676925..c2ad5fe16 100644 --- a/api/gloo/gloo/v1/options/faultinjection/fault.proto +++ b/api/gloo/gloo/v1/options/faultinjection/fault.proto @@ -10,21 +10,22 @@ import "validate/validate.proto"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; message RouteAbort { // Percentage of requests that should be aborted, defaulting to 0. // This should be a value between 0.0 and 100.0, with up to 6 significant digits. float percentage = 1; - // This should be a standard HTTP status, i.e. 503. Defaults to 0. - uint32 http_status = 2; + // This should be a standard HTTP status in the range [200, 600), e.g. 503. Defaults to 0. + uint32 http_status = 2 [(validate.rules).uint32 = {lt: 600 gte: 200}]; } message RouteDelay { // Percentage of requests that should be delayed, defaulting to 0. // This should be a value between 0.0 and 100.0, with up to 6 significant digits. float percentage = 1; - // Fixed delay, defaulting to 0. + // Fixed delay, defaulting to 0. Will be rejected by the control plane if the delay is specified and less than 1 second. google.protobuf.Duration fixed_delay = 2 [(validate.rules).duration.gt = {}]; } diff --git a/api/gloo/gloo/v1/options/graphql/graphql.proto b/api/gloo/gloo/v1/options/graphql/graphql.proto new file mode 100644 index 000000000..1a7231e89 --- /dev/null +++ b/api/gloo/gloo/v1/options/graphql/graphql.proto @@ -0,0 +1,17 @@ +syntax = "proto3"; +package graphql.options.gloo.solo.io; + +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/graphql"; + + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message ServiceSpec { + reserved 1; + reserved "endpoint"; + + message Endpoint { + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + reserved 1; + reserved "url"; + } +} diff --git a/api/gloo/gloo/v1/options/grpc/grpc.proto b/api/gloo/gloo/v1/options/grpc/grpc.proto index 97a568554..b066a0969 100644 --- a/api/gloo/gloo/v1/options/grpc/grpc.proto +++ b/api/gloo/gloo/v1/options/grpc/grpc.proto @@ -6,6 +6,7 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/option import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/transformation/parameters.proto"; diff --git a/api/gloo/gloo/v1/options/grpc_json/grpc_json.proto b/api/gloo/gloo/v1/options/grpc_json/grpc_json.proto index 1568b3b09..f0204e45d 100644 --- a/api/gloo/gloo/v1/options/grpc_json/grpc_json.proto +++ b/api/gloo/gloo/v1/options/grpc_json/grpc_json.proto @@ -3,16 +3,19 @@ syntax = "proto3"; package grpc_json.options.gloo.solo.io; +import "github.com/solo-io/solo-kit/api/v1/ref.proto"; + option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/grpc_json"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "validate/validate.proto"; // [#protodoc-title: gRPC-JSON transcoder] -// gRPC-JSON transcoder :ref:`configuration overview `. +// gRPC-JSON transcoder configuration overview. // [#extension: envoy.filters.http.grpc_json_transcoder] // [#next-free-field: 10] @@ -36,41 +39,63 @@ message GrpcJsonTranscoder { bool always_print_enums_as_ints = 3; // Whether to preserve proto field names. By default protobuf will - // generate JSON field names using the ``json_name`` option, or lower camel case, + // generate JSON field names using the `json_name` option, or lower camel case, // in that order. Setting this flag will preserve the original field names. Defaults to false. bool preserve_proto_field_names = 4; } + // Allows the user to store the binary content of a [proto descriptor set](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/grpc_json_transcoder_filter#config-grpc-json-generate-proto-descriptor-set) in a ConfigMap. + message DescriptorConfigMap { + + // A reference to a ConfigMap containing the base64-encoded binary content of a proto descriptor set. + // The ConfigMap must be in a namespace watched by Gloo Edge. + core.solo.io.ResourceRef config_map_ref = 1; + + // The ConfigMap data key whose value contains the proto descriptor set. + // If the ConfigMap contains multiple key-value pairs, this field is required. + // If the ConfigMap contains exactly one key-value pair, this field is optional. + string key = 2; + } + oneof descriptor_set { option (validate.required) = true; - // Supplies the filename of - // :ref:`the proto descriptor set ` for the gRPC - // services. + // Supplies the filename of the [proto descriptor set](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/grpc_json_transcoder_filter#config-grpc-json-generate-proto-descriptor-set) + // for the gRPC services. string proto_descriptor = 1; - // Supplies the binary content of - // :ref:`the proto descriptor set ` for the gRPC - // services. - // Note: in yaml, this must be provided as a base64 standard encoded string; yaml can't handle binary bytes + // Supplies the binary content of the [proto descriptor set](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/grpc_json_transcoder_filter#config-grpc-json-generate-proto-descriptor-set) + // for the gRPC services. + // Note: in yaml, this must be provided as a base64 standard encoded string; yaml can't handle binary bytes. bytes proto_descriptor_bin = 4; + + // A reference to a ConfigMap containing the base64-encoded binary content of the [proto descriptor set](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/grpc_json_transcoder_filter#config-grpc-json-generate-proto-descriptor-set) + // for the gRPC services. + DescriptorConfigMap proto_descriptor_config_map = 10; } + // A list of strings that // supplies the fully qualified service names (i.e. "package_name.service_name") that - // the transcoder will translate. If the service name doesn't exist in ``proto_descriptor``, - // Envoy will fail at startup. The ``proto_descriptor`` may contain more services than + // the transcoder will translate. If the service name doesn't exist in `proto_descriptor`, + // Envoy will fail at startup. The `proto_descriptor` may contain more services than // the service names specified here, but they won't be translated. repeated string services = 2 [(validate.rules).repeated = {min_items: 1}]; // Control options for response JSON. These options are passed directly to - // `JsonPrintOptions `_. + // [JsonPrintOptions](https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.util.json_util#JsonPrintOptions). PrintOptions print_options = 3; // Whether to keep the incoming request route after the outgoing headers have been transformed to - // the match the upstream gRPC service. Note: This means that routes for gRPC services that are - // not transcoded cannot be used in combination with *match_incoming_request_route*. + // the match the upstream gRPC service. + // Note: When set to false, assumptions about the way that route matching is handled may be broken at the gateway/cluster level. + // In short, Envoy will not match in the incoming request path when this is false. See for more details. + // Note: This means that routes for gRPC services that are not transcoded cannot be used in combination with *match_incoming_request_route*. + + // Set this value to true to keep the incoming request route after the outgoing headers are transformed to match the upstream gRPC service. + // Note that you cannot set this value to true with routes for gRPC services that are not transcoded. + // When set to false, Envoy does not match against the incoming request path. + // For more information, see the Envoy docs . bool match_incoming_request_route = 5; // A list of query parameters to be ignored for transcoding method mapping. @@ -95,12 +120,12 @@ message GrpcJsonTranscoder { // // message Shelf {} // - // The request ``/shelves/100?foo=bar`` will not be mapped to ``GetShelf``` because variable - // binding for ``foo`` is not defined. Adding ``foo`` to ``ignored_query_parameters`` will allow - // the same request to be mapped to ``GetShelf``. + // The request `/shelves/100?foo=bar` will not be mapped to `GetShelf` because variable + // binding for `foo` is not defined. Adding `foo` to `ignored_query_parameters` will allow + // the same request to be mapped to `GetShelf`. repeated string ignored_query_parameters = 6; - // Whether to route methods without the ``google.api.http`` option. + // Whether to route methods without the `google.api.http` option. // // Example : // @@ -118,22 +143,22 @@ message GrpcJsonTranscoder { // // message Shelf {} // - // The client could ``post`` a json body ``{"shelf": 1234}`` with the path of - // ``/bookstore.Bookstore/GetShelfRequest`` to call ``GetShelfRequest``. + // The client could `post` a json body `{"shelf": 1234}` with the path of + // `/bookstore.Bookstore/GetShelfRequest` to call `GetShelfRequest`. bool auto_mapping = 7; // Whether to ignore query parameters that cannot be mapped to a corresponding // protobuf field. Use this if you cannot control the query parameters and do - // not know them beforehand. Otherwise use ``ignored_query_parameters``. + // not know them beforehand. Otherwise use `ignored_query_parameters`. // Defaults to false. bool ignore_unknown_query_parameters = 8; // Whether to convert gRPC status headers to JSON. - // When trailer indicates a gRPC error and there was no HTTP body, take ``google.rpc.Status`` - // from the ``grpc-status-details-bin`` header and use it as JSON body. - // If there was no such header, make ``google.rpc.Status`` out of the ``grpc-status`` and - // ``grpc-message`` headers. - // The error details types must be present in the ``proto_descriptor``. + // When trailer indicates a gRPC error and there was no HTTP body, take `google.rpc.Status` + // from the `grpc-status-details-bin` header and use it as JSON body. + // If there was no such header, make `google.rpc.Status` out of the `grpc-status` and + // `grpc-message` headers. + // The error details types must be present in the `proto_descriptor`. // // For example, if an upstream server replies with headers: // @@ -143,8 +168,8 @@ message GrpcJsonTranscoder { // grpc-status-details-bin: // CAUaMwoqdHlwZS5nb29nbGVhcGlzLmNvbS9nb29nbGUucnBjLlJlcXVlc3RJbmZvEgUKA3ItMQ // - // The ``grpc-status-details-bin`` header contains a base64-encoded protobuf message - // ``google.rpc.Status``. It will be transcoded into: + // The `grpc-status-details-bin` header contains a base64-encoded protobuf message + // `google.rpc.Status`. It will be transcoded into: // // .. code-block:: none // @@ -153,8 +178,8 @@ message GrpcJsonTranscoder { // // {"code":5,"details":[{"@type":"type.googleapis.com/google.rpc.RequestInfo","requestId":"r-1"}]} // - // In order to transcode the message, the ``google.rpc.RequestInfo`` type from - // the ``google/rpc/error_details.proto`` should be included in the configured - // :ref:`proto descriptor set `. + // In order to transcode the message, the `google.rpc.RequestInfo` type from + // the `google/rpc/error_details.proto` should be included in the configured + // proto descriptor set. bool convert_grpc_status = 9; } \ No newline at end of file diff --git a/api/gloo/gloo/v1/options/grpc_web/grpc_web.proto b/api/gloo/gloo/v1/options/grpc_web/grpc_web.proto index 4b10cbe49..939b9a743 100644 --- a/api/gloo/gloo/v1/options/grpc_web/grpc_web.proto +++ b/api/gloo/gloo/v1/options/grpc_web/grpc_web.proto @@ -6,8 +6,7 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/option import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; - -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/transformation/parameters.proto"; +option (extproto.clone_all) = true; // GrpcWeb support is enabled be default. Use this extension to disable it. message GrpcWeb { diff --git a/api/gloo/gloo/v1/options/hcm/hcm.proto b/api/gloo/gloo/v1/options/hcm/hcm.proto index d3786dd6e..5375dcc9e 100644 --- a/api/gloo/gloo/v1/options/hcm/hcm.proto +++ b/api/gloo/gloo/v1/options/hcm/hcm.proto @@ -6,15 +6,22 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/option import "google/protobuf/wrappers.proto"; import "google/protobuf/duration.proto"; +import "google/protobuf/any.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/tracing/tracing.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/protocol_upgrade/protocol_upgrade.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/protocol/protocol.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/headers/headers.proto"; + import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; // Contains various settings for Envoy's http connection manager. // See here for more information: https://www.envoyproxy.io/docs/envoy/v1.9.0/configuration/http_conn_man/http_conn_man +// Now contains v3 fields as well +// v3 documents https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto#extensions-filters-network-http-connection-manager-v3-httpconnectionmanager message HttpConnectionManagerSettings { enum ForwardClientCertDetails { SANITIZE = 0; @@ -35,30 +42,54 @@ message HttpConnectionManagerSettings { message SetCurrentClientCertDetails { google.protobuf.BoolValue subject = 1; - bool cert = 2; - bool chain = 3; - bool dns = 4; - bool uri = 5; + google.protobuf.BoolValue cert = 2; + google.protobuf.BoolValue chain = 3; + google.protobuf.BoolValue dns = 4; + google.protobuf.BoolValue uri = 5; } - bool skip_xff_append = 1; - string via = 2; - uint32 xff_num_trusted_hops = 3; + google.protobuf.BoolValue skip_xff_append = 1; + google.protobuf.StringValue via = 2; + google.protobuf.UInt32Value xff_num_trusted_hops = 3; google.protobuf.BoolValue use_remote_address = 4; google.protobuf.BoolValue generate_request_id = 5; - bool proxy_100_continue = 6; + google.protobuf.BoolValue proxy_100_continue = 6; google.protobuf.Duration stream_idle_timeout = 7; google.protobuf.Duration idle_timeout = 8; google.protobuf.UInt32Value max_request_headers_kb = 9; google.protobuf.Duration request_timeout = 10; + // The amount of time that Envoy will wait for the request headers to be received. The timer is + // activated when the first byte of the headers is received, and is disarmed when the last byte of + // the headers has been received. If not specified or set to 0, this timeout is disabled. + google.protobuf.Duration request_headers_timeout = 11; google.protobuf.Duration drain_timeout = 12; google.protobuf.Duration delayed_close_timeout = 13; - string server_name = 14; + google.protobuf.StringValue server_name = 14; + google.protobuf.BoolValue strip_any_host_port = 36; + + + // For explanation of these settings see: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#envoy-api-msg-core-http1protocoloptions + google.protobuf.BoolValue accept_http_10 = 15; + google.protobuf.StringValue default_host_for_http_10 = 16; - // For explanation of these settings see: https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/core/protocol.proto#envoy-api-msg-core-http1protocoloptions - bool accept_http_10 = 15; - string default_host_for_http_10 = 16; - bool proper_case_header_key_format = 22; + + // For an explanation of these settings, see: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#config-core-v3-http1protocoloptions + google.protobuf.BoolValue allow_chunked_length = 34; + google.protobuf.BoolValue enable_trailers = 35; + + oneof header_format { + // Formats the REQUEST HEADER by proper casing words: the first character and any character following + // a special character will be capitalized if it's an alpha character. For example, + // "content-type" becomes "Content-Type", and "foo$b#$are" becomes "Foo$B#$Are". + // Note that while this results in most headers following conventional casing, certain headers + // are not covered. For example, the "TE" header will be formatted as "Te". + google.protobuf.BoolValue proper_case_header_key_format = 22; + + // Generates configuration for a stateful formatter extension that allows using received headers to + // affect the output of encoding headers. Specifically: preserving REQUEST HEADER case during proxying. + google.protobuf.BoolValue preserve_case_header_key_format = 31; + } + tracing.options.gloo.solo.io.ListenerTracingSettings tracing = 17; @@ -66,7 +97,7 @@ message HttpConnectionManagerSettings { SetCurrentClientCertDetails set_current_client_cert_details = 19; - bool preserve_external_request_id = 20; + google.protobuf.BoolValue preserve_external_request_id = 20; // HttpConnectionManager configuration for protocol upgrade requests. // Note: WebSocket upgrades are enabled by default on the HTTP Connection Manager and must be explicitly disabled. @@ -74,7 +105,31 @@ message HttpConnectionManagerSettings { // For an explanation of these settings see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#config-core-v3-httpprotocoloptions google.protobuf.Duration max_connection_duration = 23; + // For an explanation of these settings see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#config-core-v3-httpprotocoloptions google.protobuf.Duration max_stream_duration = 24; + // For an explanation of these settings see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#config-core-v3-httpprotocoloptions + google.protobuf.UInt32Value max_headers_count = 27; + + + // Action to take when Envoy receives client request with header names containing underscore characters. Underscore character + // is allowed in header names by the RFC-7230 and this behavior is implemented as a security measure due to systems that treat + // ‘_’ and ‘-‘ as interchangeable. Envoy by default allows client request headers with underscore characters. + enum HeadersWithUnderscoreAction { + // ⁣Allow headers with underscores. This is the default behavior. + ALLOW = 0; + + // ⁣Reject client request. HTTP/1 requests are rejected with the 400 status. HTTP/2 requests end with the stream reset. + // The “httpN.requests_rejected_with_underscores_in_headers” counter is incremented for each rejected request. + REJECT_CLIENT_REQUEST = 1; + + // ⁣Drop the client header with name containing underscores. The header is dropped before the filter chain is invoked + // and as such filters will not see dropped headers. The “httpN.dropped_headers_with_underscores” is incremented for each dropped header. + DROP_HEADER = 2; + } + // For an explanation of these settings see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#config-core-v3-httpprotocoloptions + HeadersWithUnderscoreAction headers_with_underscores_action = 32; + // For an explanation of these settings see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#config-core-v3-httpprotocoloptions + google.protobuf.UInt32Value max_requests_per_connection = 33; // For an explanation of the settings see: https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto.html#envoy-v3-api-enum-extensions-filters-network-http-connection-manager-v3-httpconnectionmanager-serverheadertransformation ServerHeaderTransformation server_header_transformation = 25; @@ -115,4 +170,78 @@ message HttpConnectionManagerSettings { // The :ref:`http_connection_manager.path_with_escaped_slashes_action_sampling` runtime // variable can be used to apply the action to a portion of all requests. PathWithEscapedSlashesAction path_with_escaped_slashes_action = 26; + + enum CodecType { + // For every new connection, the connection manager will determine which + // codec to use. This mode supports both ALPN for TLS listeners as well as + // protocol inference for plaintext listeners. If ALPN data is available, it + // is preferred, otherwise protocol inference is used. In almost all cases, + // this is the right option to choose for this setting. + AUTO = 0; + + // The connection manager will assume that the client is speaking HTTP/1.1. + HTTP1 = 1; + + // The connection manager will assume that the client is speaking HTTP/2 + // (Envoy does not require HTTP/2 to take place over TLS or to use ALPN. + // Prior knowledge is allowed). + HTTP2 = 2; + } + // Supplies the type of codec that the connection manager should use. + // See here for more information: https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto#extensions-filters-network-http-connection-manager-v3-httpconnectionmanager + CodecType codec_type = 28; + + // Determines if adjacent slashes in the path are merged into one before any processing of requests by HTTP filters or routing. + // See here for more information: https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto + google.protobuf.BoolValue merge_slashes = 29; + + // Should paths be normalized according to RFC 3986 before any processing of requests by HTTP filters or routing? Defaults to True. + // See here for more information: https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto + google.protobuf.BoolValue normalize_path = 30; + + // Contains setup for Envoy's UuidRequestIdConfig + message UuidRequestIdConfigSettings { + // Whether the implementation alters the UUID to contain the trace sampling decision as per the + // `UuidRequestIdConfig` message documentation. This defaults to true. If disabled no + // modification to the UUID will be performed. It is important to note that if disabled, + // stable sampling of traces, access logs, etc. will no longer work and only random sampling will + // be possible. + google.protobuf.BoolValue pack_trace_reason = 1; + + // Set whether to use :ref:`x-request-id` for sampling or not. + // This defaults to true. See the :ref:`context propagation ` + // overview for more information. + google.protobuf.BoolValue use_request_id_for_trace_sampling = 2; + } + + UuidRequestIdConfigSettings uuid_request_id_config = 37; + + // Additional HTTP/2 settings that are passed directly to the HTTP/2 codec. + protocol.options.gloo.solo.io.Http2ProtocolOptions http2_protocol_options = 39; + + // Subnet mask for CIDR ranges + message CidrRange { + // IPv4 or IPv6 address + string address_prefix = 1; + + // Length of prefix in bits + google.protobuf.UInt32Value prefix_len = 2; + } + + // Manages Envoy's internal address configuration + message InternalAddressConfig { + // Whether unix socket addresses should be considered internal + google.protobuf.BoolValue unix_sockets = 1; + + // List of CIDR ranges that are treated as internal + repeated CidrRange cidr_ranges = 2; + } + + // Configuration of internal addresses + InternalAddressConfig internal_address_config = 38; + // If true, configure Envoy to set the x-fowarded-port header to allow services to find Envoy's listener port. + google.protobuf.BoolValue append_x_forwarded_port = 40; + + // Configuration for early header manipulation + headers.options.gloo.solo.io.EarlyHeaderManipulation early_header_manipulation = 41; } diff --git a/api/gloo/gloo/v1/options/header_validation/header_validation.proto b/api/gloo/gloo/v1/options/header_validation/header_validation.proto new file mode 100644 index 000000000..2da48e14c --- /dev/null +++ b/api/gloo/gloo/v1/options/header_validation/header_validation.proto @@ -0,0 +1,24 @@ +syntax = "proto3"; +package header_validation.options.gloo.solo.io; + +import "google/protobuf/empty.proto"; + +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/header_validation"; + +message HeaderValidationSettings { + // How header methods will be validated. By default, Envoy will + // validate HTTP methods for HTTP/1 connections against the default set of allowed methods. + // The default allowed methods can be found here: + // https://github.com/envoyproxy/envoy/blob/2970ddbd4ade787dd51dfbe605ae2e8c5d8ffcf7/source/common/http/http1/balsa_parser.cc#L54 + // or here, if Universal Header Validation is enabled: + // https://github.com/envoyproxy/envoy/blob/0b9f67e7f71bcba3ff49575dc61676478cb68614/source/extensions/http/header_validators/envoy_default/header_validator.cc#L53 + // Invalid methods on HTTP/1 requests will be rejected with a HTTP 400 + // response. + // For HTTP/2, Envoy does not validate header methods by default. + oneof header_method_validation { + // Disable method validation. Envoy will not perform any validation on + // the method provided in the HTTP header. + google.protobuf.Empty disable_http1_method_validation = 1; + } +} + diff --git a/api/gloo/gloo/v1/options/headers/headers.proto b/api/gloo/gloo/v1/options/headers/headers.proto index f04d0a5ce..6e19841ac 100644 --- a/api/gloo/gloo/v1/options/headers/headers.proto +++ b/api/gloo/gloo/v1/options/headers/headers.proto @@ -7,6 +7,7 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/option import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "github.com/solo-io/solo-kit/api/external/envoy/api/v2/core/base.proto"; import "google/protobuf/wrappers.proto"; @@ -19,7 +20,7 @@ message HeaderManipulation { // Specifies a list of HTTP headers that should be added to each request // handled by this route or virtual host. For more information, including // details on header value syntax, see the - // [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/configuration/http_conn_man/headers#config-http-conn-man-headers-custom-request-headers) . + // [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers.html#) . repeated .solo.io.envoy.api.v2.core.HeaderValueOption request_headers_to_add = 1; @@ -31,7 +32,7 @@ message HeaderManipulation { // Specifies a list of HTTP headers that should be added to each response // handled by this route or host. For more information, including // details on header value syntax, see the - // [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/configuration/http_conn_man/headers#config-http-conn-man-headers-custom-request-headers) . + // [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers.html# . repeated HeaderValueOption response_headers_to_add = 3; // Specifies a list of HTTP headers that should be removed from each response @@ -39,14 +40,32 @@ message HeaderManipulation { repeated string response_headers_to_remove = 4; } +// EarlyHeaderManipulation can be specified on Gateways to manipulate headers before significant processing +// has happened and routing decisions are made. +// Early header manipulation allows adding/removing headers that affect request processing +// and can be used to implement override headers. +// Note: The adding of headers happens before the removal of headers. +message EarlyHeaderManipulation { + // Specifies a list of HTTP headers that should be added to each request + // handled by this gateway. For more information, including + // details on header value syntax, see the + // [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers.html#) . + repeated .solo.io.envoy.api.v2.core.HeaderValueOption headers_to_add = 1; + + + // Specifies a list of HTTP headers that should be removed from each request + // handled by this gateway. + repeated string headers_to_remove = 2; +} // Header name/value pair plus option to control append behavior. message HeaderValueOption { // Header name/value pair that this option applies to. HeaderValue header = 1; - // Should the value be appended? If true (default), the value is appended to - // existing values. + // Specifies if the value should be appended or overwrite an existing header. Defaults to true. + // If set to true, this maps to Envoy's `append_value: APPEND_IF_EXISTS_OR_ADD`, where the value gets be appended the header's value(s) if exists, or created if it does not. + // If set to false, this maps to Envoy's `append_value: OVERWRITE_IF_EXISTS_OR_ADD`, where the header's value will be overwritten if it exists, or created if it does not. google.protobuf.BoolValue append = 2; } diff --git a/api/gloo/gloo/v1/options/healthcheck/healthcheck.proto b/api/gloo/gloo/v1/options/healthcheck/healthcheck.proto index 294631dd8..8dc7471b8 100644 --- a/api/gloo/gloo/v1/options/healthcheck/healthcheck.proto +++ b/api/gloo/gloo/v1/options/healthcheck/healthcheck.proto @@ -9,6 +9,7 @@ import "github.com/solo-io/solo-kit/api/v1/ref.proto"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; import "google/protobuf/wrappers.proto"; diff --git a/api/gloo/gloo/v1/options/kubernetes/kubernetes.proto b/api/gloo/gloo/v1/options/kubernetes/kubernetes.proto index c28434402..970b0212a 100644 --- a/api/gloo/gloo/v1/options/kubernetes/kubernetes.proto +++ b/api/gloo/gloo/v1/options/kubernetes/kubernetes.proto @@ -6,6 +6,7 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/option import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/service_spec.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/subset_spec.proto"; diff --git a/api/gloo/gloo/v1/options/lbhash/lbhash.proto b/api/gloo/gloo/v1/options/lbhash/lbhash.proto index ec863f8bd..8e70efd56 100644 --- a/api/gloo/gloo/v1/options/lbhash/lbhash.proto +++ b/api/gloo/gloo/v1/options/lbhash/lbhash.proto @@ -7,10 +7,11 @@ import "google/protobuf/duration.proto"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; // Specifies the route’s hashing policy if the upstream cluster uses a hashing load balancer. -// https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/route/route.proto#envoy-api-msg-route-routeaction-hashpolicy +// https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto#envoy-api-msg-route-routeaction-hashpolicy message RouteActionHashConfig { // The list of policies Envoy will use when generating a hash key for a hashing load balancer repeated HashPolicy hash_policies = 1; @@ -20,7 +21,7 @@ message RouteActionHashConfig { // - Passive: Envoy reads the cookie from the headers // - Generated: Envoy uses the cookie spec to generate a cookie // In either case, the cookie is incorporated in the hash key. -// additional notes https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/route/route.proto#envoy-api-msg-route-routeaction-hashpolicy-cookie +// additional notes https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto#envoy-api-msg-route-routeaction-hashpolicy-cookie message Cookie { // required, the name of the cookie to be used to obtain the hash key string name = 1; diff --git a/api/gloo/gloo/v1/options/local_ratelimit/local_ratelimit.proto b/api/gloo/gloo/v1/options/local_ratelimit/local_ratelimit.proto new file mode 100644 index 000000000..355deacd8 --- /dev/null +++ b/api/gloo/gloo/v1/options/local_ratelimit/local_ratelimit.proto @@ -0,0 +1,53 @@ +syntax = "proto3"; + +package local_ratelimit.options.gloo.solo.io; + +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/local_ratelimit"; + +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; +import "github.com/solo-io/solo-kit/api/external/envoy/api/v2/core/base.proto"; + +import "google/protobuf/duration.proto"; +import "google/protobuf/wrappers.proto"; + + +// Configures the token bucket, used for rate limiting. +// Ref. https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/network_filters/local_rate_limit_filter +message TokenBucket { + // The maximum tokens that the bucket can hold. This is also the number of tokens that the bucket initially contains. + // Must be greater than or equal to one. + uint32 max_tokens = 1; + + // The number of tokens added to the bucket during each fill interval. If not specified, defaults to a single token. + // Must be greater than zero. + google.protobuf.UInt32Value tokens_per_fill = 2; + + // The fill interval that tokens are added to the bucket. During each fill interval tokens_per_fill are added to the bucket. + // The bucket will never contain more than max_tokens tokens. + // The fill_interval must be >= 50ms and defaults to 1 second. + google.protobuf.Duration fill_interval = 3; +} + +// The Local Rate Limit settings define the default local rate limit token bucket to apply as well as other configurations +message Settings { + // The token bucket configuration to use for rate limiting requests. + // These options provide the ability to locally rate limit the connections in envoy. Each request processed by the filter consumes a single token. + // If the token is available, the request will be allowed. If no tokens are available, the request will receive the configured rate limit status. + // This default limit can be overridden in the vHost or route options.localRatelimit + TokenBucket default_limit = 1; + + // Specifies the scope of the rate limiter’s token bucket. If set to false, the token bucket is shared across all worker threads, thus the rate limits are applied per Envoy process. + // If set to true, a token bucket is allocated for each connection, thus the rate limits are applied per connection thereby allowing one to rate limit requests on a per connection basis. + // This setting applies to all token buckets in the vHost and route as well. + // Defaults to false + google.protobuf.BoolValue local_rate_limit_per_downstream_connection = 2; + + // Set this to true to return Envoy's X-RateLimit headers to the downstream. + // reference docs here: https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/common/ratelimit/v3/ratelimit.proto#envoy-v3-api-enum-extensions-common-ratelimit-v3-xratelimitheadersrfcversion + // This setting applies at the vHost and route local rate limit as well + // Defaults to false + google.protobuf.BoolValue enable_x_ratelimit_headers = 3; +} diff --git a/api/gloo/gloo/v1/options/pipe/pipe.proto b/api/gloo/gloo/v1/options/pipe/pipe.proto index 537dee484..f73e40df3 100644 --- a/api/gloo/gloo/v1/options/pipe/pipe.proto +++ b/api/gloo/gloo/v1/options/pipe/pipe.proto @@ -6,6 +6,7 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/option import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/service_spec.proto"; diff --git a/api/gloo/gloo/v1/options/protocol/protocol.proto b/api/gloo/gloo/v1/options/protocol/protocol.proto new file mode 100644 index 000000000..814b971bc --- /dev/null +++ b/api/gloo/gloo/v1/options/protocol/protocol.proto @@ -0,0 +1,131 @@ +syntax = "proto3"; +package protocol.options.gloo.solo.io; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/protocol"; + +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + +import "google/protobuf/duration.proto"; +import "google/protobuf/wrappers.proto"; +import "extproto/ext.proto"; + +message HttpProtocolOptions { + // The idle timeout for connections. The idle timeout is defined as the + // period in which there are no active requests. When the + // idle timeout is reached the connection will be closed. If the connection is an HTTP/2 + // downstream connection a drain sequence will occur prior to closing the connection, see + // :ref:`drain_timeout + // `. + // Note that request based timeouts mean that HTTP/2 PINGs will not keep the connection alive. + // If not specified, this defaults to 1 hour. To disable idle timeouts explicitly set this to 0. + // + // **Warning**: + // Disabling this timeout has a highly likelihood of yielding connection leaks due to lost TCP + // FIN packets, etc. + google.protobuf.Duration idle_timeout = 1; + + // Note: max_connection_duration is not included here because it is "not implemented for upstream connections," per Envoy's documentation. + + // The maximum number of headers. If unconfigured, the default + // maximum number of request headers allowed is 100. Requests that exceed this limit will receive + // a 431 response for HTTP/1.x and cause a stream reset for HTTP/2. + uint32 max_headers_count = 2; + + // Total duration to keep alive an HTTP request/response stream. If the time limit is reached the stream will be + // reset independent of any other timeouts. If not specified, this value is not set. + google.protobuf.Duration max_stream_duration = 3; + + // Action to take when Envoy receives client request with header names containing underscore + // characters. + // Underscore character is allowed in header names by the RFC-7230 and this behavior is implemented + // as a security measure due to systems that treat '_' and '-' as interchangeable. Envoy by default allows client request headers with underscore + // characters. + enum HeadersWithUnderscoresAction { + // Allow headers with underscores. This is the default behavior. + ALLOW = 0; + + // Reject client request. HTTP/1 requests are rejected with the 400 status. HTTP/2 requests + // end with the stream reset. The "httpN.requests_rejected_with_underscores_in_headers" counter + // is incremented for each rejected request. + REJECT_REQUEST = 1; + + // Drop the header with name containing underscores. The header is dropped before the filter chain is + // invoked and as such filters will not see dropped headers. The + // "httpN.dropped_headers_with_underscores" is incremented for each dropped header. + DROP_HEADER = 2; + } + // Action to take when a client request with a header name containing underscore characters is received. + // If this setting is not specified, the value defaults to ALLOW. + // Note: upstream responses are not affected by this setting. + HeadersWithUnderscoresAction headers_with_underscores_action = 4; +} + +message Http1ProtocolOptions { + // Enables trailers for HTTP/1. By default the HTTP/1 codec drops proxied trailers. + // Note: Trailers must also be enabled at the gateway level in order for this option to take effect. + bool enable_trailers = 1; + + oneof header_format { + // Formats the RESPONSE HEADER by proper casing words: the first character and any character following + // a special character will be capitalized if it's an alpha character. For example, + // "content-type" becomes "Content-Type", and "foo$b#$are" becomes "Foo$B#$Are". + // Note that while this results in most headers following conventional casing, certain headers + // are not covered. For example, the "TE" header will be formatted as "Te". + bool proper_case_header_key_format = 22; + + // Generates configuration for a stateful formatter extension that allows using received headers to + // affect the output of encoding headers. Specifically: preserving RESPONSE HEADER case during proxying. + bool preserve_case_header_key_format = 31; + } + + // Allows invalid HTTP messaging. When this option is false, then Envoy will terminate + // HTTP/1.1 connections upon receiving an invalid HTTP message. However, + // when this option is true, then Envoy will leave the HTTP/1.1 connection + // open where possible. + // If set, this overrides any HCM :ref:`stream_error_on_invalid_http_messaging + // `. + google.protobuf.BoolValue override_stream_error_on_invalid_http_message = 2; +} + +message Http2ProtocolOptions { + // [Maximum concurrent streams](https://httpwg.org/specs/rfc7540.html#rfc.section.5.1.2) + // allowed for peer on one HTTP/2 connection. Valid values range from 1 to 2147483647 (2^31 - 1) + // and defaults to 2147483647. + // + // For upstream connections, this also limits how many streams Envoy will initiate concurrently + // on a single connection. If the limit is reached, Envoy may queue requests or establish + // additional connections (as allowed per circuit breaker limits). + // + // This acts as an upper bound: Envoy will lower the max concurrent streams allowed on a given + // connection based on upstream settings. Config dumps will reflect the configured upper bound, + // not the per-connection negotiated limits. + google.protobuf.UInt32Value max_concurrent_streams = 2; + + // [Initial stream-level flow-control window](https://httpwg.org/specs/rfc7540.html#rfc.section.6.9.2) size. Valid values range from 65535 + // (2^16 - 1, HTTP/2 default) to 2147483647 (2^31 - 1, HTTP/2 maximum) and defaults to 268435456 + // (256 * 1024 * 1024). + // + // NOTE: 65535 is the initial window size from HTTP/2 spec. We only support increasing the default + // window size now, so it's also the minimum. + // + // This field also acts as a soft limit on the number of bytes Envoy will buffer per-stream in the + // HTTP/2 codec buffers. Once the buffer reaches this pointer, watermark callbacks will fire to + // stop the flow of data to the codec buffers. + google.protobuf.UInt32Value initial_stream_window_size = 3; + + // Similar to *initial_stream_window_size*, but for connection-level flow-control + // window. Currently, this has the same minimum/maximum/default as *initial_stream_window_size*. + google.protobuf.UInt32Value initial_connection_window_size = 4; + + // Allows invalid HTTP messaging and headers. When this option is disabled (default), then + // the whole HTTP/2 connection is terminated upon receiving invalid HEADERS frame. However, + // when this option is enabled, only the offending stream is terminated. + // + // This overrides any HCM :ref:`stream_error_on_invalid_http_messaging + // ` + // + // See [RFC7540, sec. 8.1](https://datatracker.ietf.org/doc/html/rfc7540#section-8.1) for details. + google.protobuf.BoolValue override_stream_error_on_invalid_http_message = 14; +} + diff --git a/api/gloo/gloo/v1/options/protocol_upgrade/protocol_upgrade.proto b/api/gloo/gloo/v1/options/protocol_upgrade/protocol_upgrade.proto index 448393b49..2ded3ea46 100644 --- a/api/gloo/gloo/v1/options/protocol_upgrade/protocol_upgrade.proto +++ b/api/gloo/gloo/v1/options/protocol_upgrade/protocol_upgrade.proto @@ -9,6 +9,7 @@ import "google/protobuf/wrappers.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; message ProtocolUpgradeConfig { message ProtocolUpgradeSpec { @@ -19,5 +20,6 @@ message ProtocolUpgradeConfig { oneof upgrade_type { // Specification for websocket upgrade requests. ProtocolUpgradeSpec websocket = 1; + ProtocolUpgradeSpec connect = 2; } } diff --git a/api/gloo/gloo/v1/options/proxy_protocol/proxy_protocol.proto b/api/gloo/gloo/v1/options/proxy_protocol/proxy_protocol.proto new file mode 100644 index 000000000..f45f7b69f --- /dev/null +++ b/api/gloo/gloo/v1/options/proxy_protocol/proxy_protocol.proto @@ -0,0 +1,47 @@ +syntax = "proto3"; +package proxy_protocol.options.gloo.solo.io; + +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/proxy_protocol"; + +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + +import "validate/validate.proto"; + +message ProxyProtocol { + + message KeyValuePair { + // The namespace — if this is empty, the filter's namespace will be used. + string metadata_namespace = 1; + + // The key to use within the namespace. + string key = 2 [(validate.rules).string = {min_len: 1}]; + } + + // A Rule defines what metadata to apply when a header is present or missing. + message Rule { + // The type that triggers the rule - required + // TLV type is defined as uint8_t in proxy protocol. See [the spec](https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt) for details. + uint32 tlv_type = 1 [(validate.rules).uint32 = {lt: 256}]; + + // If the TLV type is present, apply this metadata KeyValuePair. + KeyValuePair on_tlv_present = 2; + } + + // The list of rules to apply to requests. + repeated Rule rules = 1; + + // Allow requests through that don't use proxy protocol. Defaults to false. + // + // **Attention**: + // + // The true setting is only honored in Gloo Edge Enterprise. + // This breaks conformance with the specification. + // Only enable if ALL traffic to the listener comes from a trusted source. + // For more information on the security implications of this feature, see + // https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt + // + bool allow_requests_without_proxy_protocol = 2; +} diff --git a/api/gloo/gloo/v1/options/rest/rest.proto b/api/gloo/gloo/v1/options/rest/rest.proto index d6879be8a..59c730940 100644 --- a/api/gloo/gloo/v1/options/rest/rest.proto +++ b/api/gloo/gloo/v1/options/rest/rest.proto @@ -6,6 +6,7 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/option import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/transformation/transformation.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/transformation/parameters.proto"; diff --git a/api/gloo/gloo/v1/options/retries/retries.proto b/api/gloo/gloo/v1/options/retries/retries.proto index 807c6fcda..291087957 100644 --- a/api/gloo/gloo/v1/options/retries/retries.proto +++ b/api/gloo/gloo/v1/options/retries/retries.proto @@ -5,9 +5,58 @@ package retries.options.gloo.solo.io; option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/retries"; import "google/protobuf/duration.proto"; +import "google/protobuf/wrappers.proto"; +// Validate is added to mimic envoy's setup and for when we finally implement validation. +// For now we reiterate this in code as we do not check the validation rules. +import "validate/validate.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + + +// This specifies the retry policy interval for backoffs. Note that if the base interval provided is larger than the maximum interval OR if any of the durations passed are <= 0 MS, there will be an error. +message RetryBackOff { + + // Specifies the base interval for a retry + google.protobuf.Duration base_interval = 1 [(validate.rules).duration = { + required: true + gte {nanos: 1000000} + }]; + + // Specifies the max interval for a retry + google.protobuf.Duration max_interval = 2 [(validate.rules).duration = {gt {}}]; +} + +// ResetHeader is a header that is used to reset the retry backoff. +message ResetHeader { + // Specifies the name of the header to interpret for the retry backoff. + string name = 1; + + enum HeaderFormat { + SECONDS = 0; + UNIX_TIMESTAMP = 1; + } + + // Specifies the format of the header to interpret for the retry backoff. + HeaderFormat format = 2; +} + +// This specifies the retry policy interval for rate limited requests. +// Based on: https://github.com/envoyproxy/envoy/blob/4a134ce926cf0b882a4c416734b579f9722ed1eb/api/envoy/config/route/v3/route_components.proto#L1522 +message RateLimitedRetryBackOff { + + // Specifies the reset headers (like ``Retry-After`` or ``X-RateLimit-Reset``) + // to match against the response. Headers are tried in order, and matched case + // insensitive. The first header to be parsed successfully is used. If no headers + // match the default exponential back-off is used instead. + repeated ResetHeader reset_headers = 1; + + // Specifies the maximum back off interval that Gloo will allow. If a reset + // header contains an interval longer than this then it will be discarded and + // the next header will be tried. Defaults to 300 seconds. + google.protobuf.Duration max_interval = 2 [(validate.rules).duration = {gt {}}]; +} // Retry Policy applied at the Route and/or Virtual Hosts levels. message RetryPolicy { @@ -21,4 +70,31 @@ message RetryPolicy { // Specifies a non-zero upstream timeout per retry attempt. This parameter is optional. google.protobuf.Duration per_try_timeout = 3; -} + + // Specifies the retry policy interval + RetryBackOff retry_back_off = 4; + + message PreviousPriorities { + // Specify the update frequency for the previous priorities. For more information about previous priorities, see the [Envoy docs](https://www.envoyproxy.io/docs/envoy/v1.30.1/api-v3/extensions/retry/priority/previous_priorities/v3/previous_priorities_config.proto#envoy-v3-api-file-envoy-extensions-retry-priority-previous-priorities-v3-previous-priorities-config-proto). + // This option only works in combination with an Upstream failover policy that enables priorities. + google.protobuf.UInt32Value update_frequency = 1; + } + + oneof priority_predicate { + // Specify the previous priorities. + // For more information about previous priorities, see the [Envoy docs](https://www.envoyproxy.io/docs/envoy/v1.30.1/api-v3/extensions/retry/priority/previous_priorities/v3/previous_priorities_config.proto#envoy-v3-api-file-envoy-extensions-retry-priority-previous-priorities-v3-previous-priorities-config-proto). + PreviousPriorities previous_priorities = 5; + } + + + // Optional: HTTP status codes that should trigger a retry in addition to those specified by retry_on. + // This can be useful if you want to retry on a status code that is not in the retry_on list. + // Specifically those in the 4xx range. + repeated uint32 retriable_status_codes = 6; + + + // Optional: Specifies the retry backoff strategy for rate limited requests. + RateLimitedRetryBackOff rate_limited_retry_back_off = 7; + + +} \ No newline at end of file diff --git a/api/gloo/gloo/v1/options/router/router.proto b/api/gloo/gloo/v1/options/router/router.proto new file mode 100644 index 000000000..73244ed1a --- /dev/null +++ b/api/gloo/gloo/v1/options/router/router.proto @@ -0,0 +1,19 @@ +syntax = "proto3"; +package gloo.solo.io; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/router"; + +import "google/protobuf/wrappers.proto"; + +// Router is an envoy http filter +// Maps to https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/router/v3/router.proto +message Router{ + // Do not add any additional x-envoy- headers to requests or responses. This only affects the router filter generated x-envoy- headers, other Envoy filters and the HTTP connection manager may continue to set x-envoy- headers. + google.protobuf.BoolValue suppress_envoy_headers = 1; + + // Whether dynamic stats should be enabled or disabled. If not set, or if + // set to true, dynamic stats will be enabled. Otherwise, if set to false, + // dynamic stats will be disabled. It is strongly recommended to leave this + // in the default state in production - it should only be set to false in + // very specific benchmarking or profiling scenarios. + google.protobuf.BoolValue dynamic_stats = 2; +} diff --git a/api/gloo/gloo/v1/options/service_spec.proto b/api/gloo/gloo/v1/options/service_spec.proto index 7fded5c9c..52e385f7f 100644 --- a/api/gloo/gloo/v1/options/service_spec.proto +++ b/api/gloo/gloo/v1/options/service_spec.proto @@ -6,9 +6,11 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/option import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/rest/rest.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/grpc/grpc.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/grpc_json/grpc_json.proto"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; // Describes APIs and application-level information for services @@ -20,6 +22,9 @@ message ServiceSpec { // to be usable by Gloo. (plugins currently need to be compiled into Gloo) oneof plugin_type { rest.options.gloo.solo.io.ServiceSpec rest = 1; - grpc.options.gloo.solo.io.ServiceSpec grpc = 2; + grpc.options.gloo.solo.io.ServiceSpec grpc = 2 [deprecated = true]; + grpc_json.options.gloo.solo.io.GrpcJsonTranscoder grpc_json_transcoder = 3; } + reserved 4; + reserved "graphql"; } \ No newline at end of file diff --git a/api/gloo/gloo/v1/options/shadowing/shadowing.proto b/api/gloo/gloo/v1/options/shadowing/shadowing.proto index 6bc90b37c..03b3b76ab 100644 --- a/api/gloo/gloo/v1/options/shadowing/shadowing.proto +++ b/api/gloo/gloo/v1/options/shadowing/shadowing.proto @@ -7,13 +7,14 @@ import "github.com/solo-io/solo-kit/api/v1/ref.proto"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; // Specifies traffic shadowing configuration for the associated route. // If set, Envoy will send a portion of the route's traffic to the shadowed upstream. This can be a useful way to // preview a new service's behavior before putting the service in the critical path. // Note that this plugin is only applicable to routes with upstream destinations (not redirect or direct response routes). -// See here for additional information on Envoy's shadowing capabilities: https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/route/route.proto#envoy-api-msg-route-routeaction-requestmirrorpolicy +// See here for additional information on Envoy's shadowing capabilities: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto#envoy-api-msg-route-routeaction-requestmirrorpolicy message RouteShadowing { // The upstream to which the shadowed traffic should be sent. core.solo.io.ResourceRef upstream = 1; diff --git a/api/gloo/gloo/v1/options/static/static.proto b/api/gloo/gloo/v1/options/static/static.proto index f3ab6046e..b9562649c 100644 --- a/api/gloo/gloo/v1/options/static/static.proto +++ b/api/gloo/gloo/v1/options/static/static.proto @@ -6,8 +6,10 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/option import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "google/protobuf/wrappers.proto"; +import "google/protobuf/struct.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/service_spec.proto"; import "validate/validate.proto"; @@ -21,8 +23,8 @@ message UpstreamSpec { repeated Host hosts = 1; // Attempt to use outbound TLS - // Gloo will automatically set this to true for port 443 - bool use_tls = 3; + // If not explicitly set, Gloo will automatically set this to true for port 443 + google.protobuf.BoolValue use_tls = 3; // An optional Service Spec describing the service listening at this address .options.gloo.solo.io.ServiceSpec service_spec = 5; @@ -63,4 +65,11 @@ message Host { // (Enterprise Only): Host specific health checking configuration. HealthCheckConfig health_check_config = 3; + + // Additional metadata to add to the endpoint. This metadata can be used in upstream HTTP filters + // or other specific Envoy configurations. + // The following keys are added by Gloo Edge and are ignored if set: + // - "envoy.transport_socket_match" + // - "io.solo.health_checkers.advanced_http" + map metadata = 6; } \ No newline at end of file diff --git a/api/gloo/gloo/v1/options/stats/stats.proto b/api/gloo/gloo/v1/options/stats/stats.proto index 29934b006..f650257c9 100644 --- a/api/gloo/gloo/v1/options/stats/stats.proto +++ b/api/gloo/gloo/v1/options/stats/stats.proto @@ -7,6 +7,7 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/option import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; // This plugin provides additional configuration options to expose statistics. message Stats { diff --git a/api/gloo/gloo/v1/options/subset_spec.proto b/api/gloo/gloo/v1/options/subset_spec.proto index 6352f577e..16d797636 100644 --- a/api/gloo/gloo/v1/options/subset_spec.proto +++ b/api/gloo/gloo/v1/options/subset_spec.proto @@ -5,11 +5,37 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/option import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; +// See envoy docs for details: +// https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-lbsubsetconfig message SubsetSpec { - repeated Selector selectors =1; + // Defines the set of subsets of the upstream + repeated Selector selectors = 1; + // The behavior used when no endpoint subset matches the selected route’s metadata + // The default value is ANY_ENDPOINT + FallbackPolicy fallbackPolicy = 2; + // Specifies the default subset of endpoints used during fallback if fallback_policy is DEFAULT_SUBSET + Subset default_subset = 3; } message Selector { - repeated string keys = 1; + // A subset is created for each unique combination of key and value + repeated string keys = 1; + // Selects a mode of operation in which each subset has only one host. Default is false. + bool single_host_per_subset = 2; +} + +message Subset { + // Any host that matches all key/value pairs is part of this subset + map values = 1; +} + +enum FallbackPolicy { + // Any cluster endpoint may be returned (default) + ANY_ENDPOINT = 0; + // Load balancing over the endpoints matching the values from the default_subset field + DEFAULT_SUBSET = 1; + // A result equivalent to no healthy hosts is reported + NO_FALLBACK = 2; } diff --git a/api/gloo/gloo/v1/options/tcp/tcp.proto b/api/gloo/gloo/v1/options/tcp/tcp.proto index b8805a4c7..366bfc063 100644 --- a/api/gloo/gloo/v1/options/tcp/tcp.proto +++ b/api/gloo/gloo/v1/options/tcp/tcp.proto @@ -12,6 +12,7 @@ import "github.com/solo-io/solo-kit/api/external/envoy/api/v2/core/base.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; // Contains various settings for Envoy's tcp proxy filter. // See here for more information: https://www.envoyproxy.io/docs/envoy/v1.10.0/api-v2/config/filter/network/tcp_proxy/v2/tcp_proxy.proto#envoy-api-msg-config-filter-network-tcp-proxy-v2-tcpproxy @@ -23,10 +24,34 @@ message TcpProxySettings { message TunnelingConfig { // The hostname to send in the synthesized CONNECT headers to the upstream proxy. string hostname = 1; + // Additional request headers to be sent to upstream proxy. Mainly used to + // trigger upstream to convert POST request back to CONNECT requests. + repeated HeaderValueOption headers_to_add= 13; } // If set, this configures tunneling, e.g. configuration options to tunnel multiple TCP // payloads over a shared HTTP tunnel. If this message is absent, the payload // will be proxied upstream as per usual. TunnelingConfig tunneling_config = 12; -} \ No newline at end of file + + // If set, Envoy will flush the access log on this time interval. Must be a + // minimum of 1 ms. By default, will only write to the access log when a + // connection is closed. + google.protobuf.Duration access_log_flush_interval = 15; +} + +// Header name/value pair plus option to control append behavior. +message HeaderValueOption { + // Header name/value pair that this option applies to. + HeaderValue header = 1; + // If true (default), the value is appended to existing values. + google.protobuf.BoolValue append = 2; +} + +// Header name/value pair. +message HeaderValue { + // Header name. + string key = 1; + // Header value. + string value = 2; +} diff --git a/api/gloo/gloo/v1/options/tracing/tracing.proto b/api/gloo/gloo/v1/options/tracing/tracing.proto index 27fc06b14..1d5ae6c2a 100644 --- a/api/gloo/gloo/v1/options/tracing/tracing.proto +++ b/api/gloo/gloo/v1/options/tracing/tracing.proto @@ -5,6 +5,8 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/option import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/trace/v3/zipkin.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/trace/v3/datadog.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/trace/v3/opentelemetry.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/trace/v3/opencensus.proto"; import "google/protobuf/wrappers.proto"; @@ -12,19 +14,20 @@ import "google/protobuf/any.proto"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; import "github.com/solo-io/solo-kit/api/v1/ref.proto"; // Contains settings for configuring Envoy's tracing capabilities at the listener level. -// See here for additional information on Envoy's tracing capabilities: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/observability/tracing.html -// See here for additional information about configuring tracing with Gloo: https://gloo.solo.io/user_guides/setup_options/observability/#tracing +// See [here](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/observability/tracing.html) for additional information on Envoy's tracing capabilities. +// See [here](https://docs.solo.io/gloo-edge/latest/guides/observability/tracing/) for additional information about configuring tracing with Gloo Edge. message ListenerTracingSettings { // Optional. If specified, Envoy will include the headers and header values for any matching request headers. - repeated string request_headers_for_tags = 1; + repeated google.protobuf.StringValue request_headers_for_tags = 1; // Optional. If true, Envoy will include logs for streaming events. Default: false. - bool verbose = 2; + google.protobuf.BoolValue verbose = 2; // Requests can produce traces by random sampling or when the `x-client-trace-id` header is provided. // TracePercentages defines the limits for random, forced, and overall tracing percentages. TracePercentages trace_percentages = 3; @@ -33,17 +36,26 @@ message ListenerTracingSettings { oneof provider_config { .solo.io.envoy.config.trace.v3.ZipkinConfig zipkin_config = 4; .solo.io.envoy.config.trace.v3.DatadogConfig datadog_config = 5; + .solo.io.envoy.config.trace.v3.OpenTelemetryConfig open_telemetry_config = 8; + .solo.io.envoy.config.trace.v3.OpenCensusConfig open_census_config = 9; } // Optional. If specified, Envoy will include the environment variables with the given tag as tracing tags. repeated TracingTagEnvironmentVariable environment_variables_for_tags = 6; // Optional. If specified, Envoy will include the literals with the given tag as tracing tags. repeated TracingTagLiteral literals_for_tags = 7; + // Optional. If specified, Envoy will include tags from the dynamic metadata. + repeated TracingTagMetadata metadata_for_tags = 11; + + // Optional + // Create separate tracing span for each upstream request if true. And if this flag is set to true, the tracing provider will assume that Envoy + // will be independent hop in the trace chain and may set span type to client or server based on this flag. + bool spawn_upstream_span = 10; } // Contains settings for configuring Envoy's tracing capabilities at the route level. // Note: must also specify ListenerTracingSettings for the associated listener. -// See here for additional information on Envoy's tracing capabilities: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/observability/tracing.html -// See here for additional information about configuring tracing with Gloo: https://gloo.solo.io/user_guides/setup_options/observability/#tracing +// See [here](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/observability/tracing.html) for additional information on Envoy's tracing capabilities. +// See [here](https://docs.solo.io/gloo-edge/latest/guides/observability/tracing/) for additional information about configuring tracing with Gloo Edge. message RouteTracingSettings { // Optional. If set, will be used to identify the route that produced the trace. // Note that this value will be overridden if the "x-envoy-decorator-operation" header is passed. @@ -76,19 +88,52 @@ message TracePercentages { // TracingTagEnvironmentVariable defines an environment variable which gets added as custom tag. message TracingTagEnvironmentVariable { // Used to populate the tag name. - string tag = 1; + google.protobuf.StringValue tag = 1; // Environment variable name to obtain the value to populate the tag value. - string name = 2; + google.protobuf.StringValue name = 2; // When the environment variable is not found, the tag value will be populated with this default value if specified, // otherwise no tag will be populated. - string default_value = 3; + google.protobuf.StringValue default_value = 3; } // Requests can produce traces with custom tags. // TracingTagLiteral defines a literal which gets added as custom tag. message TracingTagLiteral { // Used to populate the tag name. - string tag = 1; + google.protobuf.StringValue tag = 1; // Static literal value to populate the tag value. - string value = 2; -} \ No newline at end of file + google.protobuf.StringValue value = 2; +} + +// Requests can produce traces with custom tags. +// TracingTagMetadata defines a dynamic metadata tag which gets added as custom tag. +message TracingTagMetadata { + enum Kind { + // The metadata is extracted from the stream metadata. + REQUEST = 0; + // The metadata is extracted from the endpoint metadata. + ENDPOINT = 1; + } + // Used to populate the tag name. + string tag = 1; + // The kind of metadata to extract the value from + Kind kind = 2; + + message MetadataValue { + // The namespace to extract the value from the metadata. + // If empty will default to JWT principal namespace. + string namespace = 1; + // The key to extract the value from the metadata. + // For example, `principal.iss` or `principal.sub` to extract those claims from the JWT ns + string key = 2; + // The delimiter to use when specifying nested fields. + // Default is `.`. + // This is commonly set to `.`, allowing for nested fields names of the form + // `parent.child.grandchild` + string nested_field_delimiter = 3; + } + // The metadata value to extract the tag value from. + MetadataValue value = 3; + // When no valid metadata is found, the tag value would be populated with this default value if specified, otherwise no tag would be populated. + string default_value = 4; +} diff --git a/api/gloo/gloo/v1/options/transformation/parameters.proto b/api/gloo/gloo/v1/options/transformation/parameters.proto index 02a38bb7e..7098b8f2c 100644 --- a/api/gloo/gloo/v1/options/transformation/parameters.proto +++ b/api/gloo/gloo/v1/options/transformation/parameters.proto @@ -8,6 +8,7 @@ import "google/protobuf/wrappers.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; message Parameters { // headers that will be used to extract data for processing output templates diff --git a/api/gloo/gloo/v1/options/transformation/transformation.proto b/api/gloo/gloo/v1/options/transformation/transformation.proto index 4bfac8a52..6736471fe 100644 --- a/api/gloo/gloo/v1/options/transformation/transformation.proto +++ b/api/gloo/gloo/v1/options/transformation/transformation.proto @@ -3,16 +3,17 @@ package transformation.options.gloo.solo.io; option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation"; +import "google/protobuf/empty.proto"; import "google/protobuf/wrappers.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/core/matchers/matchers.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/transformation/transformation.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/transformers/xslt/xslt_transformer.proto"; import "extproto/ext.proto"; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; option (extproto.equal_all) = true; -message ResponseMatch { +message ResponseMatch { // Response headers to match on. repeated matchers.core.gloo.solo.io.HeaderMatcher matchers = 1; // Response code detail to match on. To see the response code details for your usecase, @@ -57,6 +58,12 @@ message TransformationStages { RequestResponseTransformations early = 1; // Regular transformations happen after Auth and Rate limit decisions has been made. RequestResponseTransformations regular = 2; + // Post routing transformations happen during the router filter chain. This is important for a number of reasons + // 1. Retries re-trigger this filter, which might impact performance. + // 2. It is the only point where endpoint metadata is available. + // 3. `clear_route_cache` does NOT work in this stage as the routing decision is already made. + // Enterprise only + RequestResponseTransformations post_routing = 6; // Inherit transformation config from parent. This has no affect on VirtualHost level transformations. // If a RouteTable or Route wants to inherit transformations from it's parent RouteTable or VirtualHost, // this should be set to true, else transformations from parents will not be inherited. @@ -65,6 +72,17 @@ message TransformationStages { // only one transformation will run per stage. // Defaults to false. bool inherit_transformation = 3; + + // When enabled, log request/response body and headers before and after all transformations defined here are applied.\ + // This overrides the log_request_response_info field in the Transformation message. + google.protobuf.BoolValue log_request_response_info = 4; + + // Use this field to set Inja behavior when rendering strings which contain + // characters that would need to be escaped to be valid JSON. Note that this + // sets the behavior for all staged transformations configured here. This setting + // can be overridden per-transformation using the field `escape_characters` on + // the TransformationTemplate. + google.protobuf.BoolValue escape_characters = 5; } // User-facing API for transformation. @@ -72,14 +90,299 @@ message Transformation { // The type of transformation to apply. oneof transformation_type { // Apply transformation templates. - envoy.api.v2.filter.http.TransformationTemplate transformation_template = 1; + TransformationTemplate transformation_template = 1; // This type of transformation will make all the headers available in the // response body. The resulting JSON body will consist of two attributes: // 'headers', containing the headers, and 'body', containing the original // body. - envoy.api.v2.filter.http.HeaderBodyTransform header_body_transform = 2; + HeaderBodyTransform header_body_transform = 2; // (Enterprise Only): Xslt Transformation envoy.config.transformer.xslt.v2.XsltTransformation xslt_transformation = 3; } -} \ No newline at end of file + // When enabled, log request/response body and headers before and after this transformation is applied. + bool log_request_response_info = 4; +} + +// Extractions can be used to extract information from the request/response. +// The extracted information can then be referenced in template fields. +message Extraction { + // The mode of operation for the extraction. + enum Mode { + // Default mode. Extract the content of a specified capturing group. In this mode, + // `subgroup` selects the n-th capturing group, which represents the value that + // you want to extract. + EXTRACT = 0; + // Replace the content of a specified capturing group. In this mode, `subgroup` selects the + // n-th capturing group, which represents the value that you want to replace with + // the string provided in `replacement_text`. + // Note: `replacement_text` must be set for this mode. + SINGLE_REPLACE = 1; + // Replace all regex matches with the value provided in `replacement_text`. + // Note: `replacement_text` must be set for this mode. + // Note: The configuration fails if `subgroup` is set to a non-zero value. + // Note: restrictions on the regex are different for this mode. See the regex field for more details. + REPLACE_ALL = 2; + } + + // The source of the extraction + oneof source { + // Extract information from headers + string header = 1; + // Extract information from the request/response body + google.protobuf.Empty body = 4; + } + + // The regex field specifies the regular expression used for matching against the source content. + // - In EXTRACT mode, the entire source must match the regex. `subgroup` selects the n-th capturing group, + // which determines the part of the match that you want to extract. If the regex does not match the source, + // the result of the extraction will be an empty value. + // - In SINGLE_REPLACE mode, the regex also needs to match the entire source. `subgroup` selects the n-th capturing group + // that is replaced with the content of `replacement_text`. If the regex does not match the source, the result + // of the replacement will be the source itself. + // - In REPLACE_ALL mode, the regex is applied repeatedly to find all occurrences within the source that match. + // Each matching occurrence is replaced with the value in `replacement_text`. In this mode, the configuration is rejected + // if `subgroup` is set. If the regex does not match the source, the result of the replacement will be the source itself. + string regex = 2; + + // If your regex contains capturing groups, use this field to determine the + // group that you want to select. Defaults to 0. + // If set in `EXTRACT` and `SINGLE_REPLACE` modes, the subgroup represents the capturing + // group that you want to extract or replace in the source. + // The configuration is rejected if you set subgroup to a non-zero value when using thev `REPLACE_ALL` mode. + uint32 subgroup = 3; + + // The value `replacement_text` is used to format the substitution for matched sequences in + // in an input string. This value is only legal in `SINGLE_REPLACE` and `REPLACE_ALL` modes. + // - In `SINGLE_REPLACE` mode, the `subgroup` selects the n-th capturing group, which represents + // the value that you want to replace with the string provided in `replacement_text`. + // - In `REPLACE_ALL` mode, each sequence that matches the specified regex in the input is + // replaced with the value in`replacement_text`. + // The `replacement_text` can include special syntax, such as $1, $2, etc., to refer to + // capturing groups within the regular expression. + // The value that is specified in `replacement_text` is treated as a string, and is passed + // to `std::regex_replace` as the replacement string. + // For more informatino, see https://en.cppreference.com/w/cpp/regex/regex_replace. + google.protobuf.StringValue replacement_text = 5; + + // The mode of operation for the extraction. + // Defaults to EXTRACT. + Mode mode = 6; +} + +// Defines a transformation template. +message TransformationTemplate { + + // If set to true, use JSON pointer notation (e.g. "time/start") instead of + // dot notation (e.g. "time.start") to access JSON elements. Defaults to + // false. + // + // Please note that, if set to 'true', you will need to use the `extraction` + // function to access extractors in the template (e.g. '{{ + // extraction("my_extractor") }}'); if the default value of 'false' is used, + // extractors will simply be available by their name (e.g. '{{ my_extractor + // }}'). + bool advanced_templates = 1; + + // Use this attribute to extract information from the request. It consists of + // a map of strings to extractors. The extractor will defines which + // information will be extracted, while the string key will provide the + // extractor with a name. You can reference extractors by their name in + // templates, e.g. "{{ my-extractor }}" will render to the value of the + // "my-extractor" extractor. + map extractors = 2; + // Use this attribute to transform request/response headers. It consists of a + // map of strings to templates. The string key determines the name of the + // resulting header, the rendered template will determine the value. Any existing + // headers with the same header name will be replaced by the transformed header. + // If a header name is included in `headers` and `headers_to_append`, it will first + // be replaced the template in `headers`, then additional header values will be appended + // by the templates defined in `headers_to_append`. + // For example, the following header transformation configuration: + // + // ```yaml + // headers: + // x-header-one: {"text": "first {{inja}} template"} + // x-header-one: {"text": "second {{inja}} template"} + // headersToAppend: + // - key: x-header-one + // value: {"text": "first appended {{inja}} template"} + // - key: x-header-one + // value: {"text": "second appended {{inja}} template"} + // ``` + // will result in the following headers on the HTTP message: + // + // ``` + // x-header-one: first inja template + // x-header-one: first appended inja template + // x-header-one: second appended inja template + // ``` + map headers = 3; + + // Defines a header-template pair to be used in `headers_to_append` + message HeaderToAppend { + // Header name + string key = 1; + // Apply a template to the header value + InjaTemplate value = 2; + } + + // Use this attribute to transform request/response headers. It consists of + // an array of string/template objects. Use this attribute to define multiple + // templates for a single header. Header template(s) defined here will be appended to any + // existing headers with the same header name, not replace existing ones. + // See `headers` documentation to see an example of usage. + repeated HeaderToAppend headers_to_append = 10; + + // Attribute to remove headers from requests. If a header is present multiple + // times, all instances of the header will be removed. + repeated string headers_to_remove = 11; + + // Determines the type of transformation to apply to the request/response body + oneof body_transformation { + // Apply a template to the body + InjaTemplate body = 4; + // This will cause the transformation filter not to buffer the body. + // Use this setting if the response body is large and you don't need to + // transform nor extract information from it. + Passthrough passthrough = 5; + // Merge all defined extractors to the request/response body. + // If you want to nest elements inside the body, use dot separator in the + // extractor name. + MergeExtractorsToBody merge_extractors_to_body = 6; + // A set of key-value pairs to merge into the JSON body. + // Each value will be rendered separately, and then placed into the JSON body at + // the specified key. + // There are a number of important caveats to using this feature: + // * This can only be used when the body is parsed as JSON. + // * This option does NOT work with advanced templates currently + MergeJsonKeys merge_json_keys = 13; + } + + // Determines how the body will be parsed. + enum RequestBodyParse { + // Will attempt to parse the request/response body as JSON + ParseAsJson = 0; + // The request/response body will be treated as plain text + DontParse = 1; + } + // Determines how the body will be parsed. Defaults to ParseAsJson + RequestBodyParse parse_body_behavior = 7; + + // If set to true, Envoy will not throw an exception in case the body parsing + // fails. + bool ignore_error_on_parse = 8; + + // Defines an [Envoy Dynamic + // Metadata](https://www.envoyproxy.io/docs/envoy/latest/configuration/advanced/well_known_dynamic_metadata) + // entry. + message DynamicMetadataValue { + + // The metadata namespace. Defaults to the filter namespace. + string metadata_namespace = 1; + + // The metadata key. + string key = 2; + + // A template that determines the metadata value. + InjaTemplate value = 3; + + // Instruct the filter to parse the rendered value as a proto Struct message + // before setting it as the metadata value. + bool json_to_proto = 4; + } + // Use this field to set Dynamic Metadata. + repeated DynamicMetadataValue dynamic_metadata_values = 9; + + // Use this field to set Inja behavior when rendering strings which contain + // characters that would need to be escaped to be valid JSON. Note that this + // sets the behavior for the entire transformation. Use raw_strings function + // for fine-grained control within a template. + google.protobuf.BoolValue escape_characters = 12; + + // Definitions for span transformations for tracing purposes. + message SpanTransformer { + // A template that sets the span name. For example, to set the span name to + // the value of the host header, you can set this value to + // `'{{header("Host")}}'` + InjaTemplate name = 1; + + // TODO if we want to set attributes as well, add fields to modify them here. + } + + // These field numbers are used in envoy-gloo but not exposed. Let's reserve + // them so we do not drift in numbers between the transformation filter in + // `envoy-gloo` and our gloo control plane API. + // 14: string_delimiter + // https://github.com/solo-io/envoy-gloo/blob/0a088716a0cc04409ad926e7364363c6de4a83a5/api/envoy/config/filter/http/transformation/v2/transformation_filter.proto#L321 + reserved 14; + + // Use this field to modify the span of the trace. This field can only be + // applied on requestTransformations. Attempting to set this on a + // responseTransformation will result in an error. + SpanTransformer span_transformer = 15; + +} + +// Defines an [Inja template](https://github.com/pantor/inja) that will be +// rendered by Gloo. In addition to the core template functions, the Gloo +// transformation filter defines the following custom functions: +// - header(header_name): returns the value of the header with the given name. +// - extraction(extractor_name): returns the value of the extractor with the +// given name. +// - env(env_var_name): returns the value of the environment variable with the +// given name. +// - body(): returns the request/response body. +// - context(): returns the base JSON context (allowing for example to range on +// a JSON body that is an array). +// - request_header(header_name): returns the value of the request header with +// the given name. Use this option when you want to include request header values in response +// transformations. +// - base64_encode(string): encodes the input string to base64. +// - base64_decode(string): decodes the input string from base64. +// - substring(string, start_pos, substring_len): returns a substring of the +// input string, starting at `start_pos` and extending for `substring_len` +// characters. If no `substring_len` is provided or `substring_len` is <= 0, the +// substring extends to the end of the input string. +message InjaTemplate { string text = 1; } + +message Passthrough {} + +message MergeExtractorsToBody {} + +message MergeJsonKeys { + message OverridableTemplate { + // Template to render + InjaTemplate tmpl = 1; + // If set to true, the template will be set even if the rendered value is empty. + bool override_empty = 2; + } + /* + Map of key name -> template to render into the JSON body. + Specified keys which don't exist in the JSON body will be set, + keys which do exist will be overriden. + + For example, given the following JSON body: + { + "key1": "value1" + } + and the following MergeJsonKeys: + { + "key1": "{{ header("header1") }}", + "key2": "{{ header("header2") }}" + } + The resulting JSON body will be: + { + "key1": "header1_value", + "key2": "header2_value" + } + */ + map json_keys = 2; +} + +message HeaderBodyTransform { + // When transforming a request, setting this to true will additionally add "queryString", + // "queryStringParameters", "multiValueQueryStringParameters", "httpMethod", "path", + // and "multiValueHeaders" to the body + bool add_request_metadata = 1; +} diff --git a/api/gloo/gloo/v1/options/wasm/wasm.proto b/api/gloo/gloo/v1/options/wasm/wasm.proto index 9c3a89137..cb5ae9905 100644 --- a/api/gloo/gloo/v1/options/wasm/wasm.proto +++ b/api/gloo/gloo/v1/options/wasm/wasm.proto @@ -6,6 +6,7 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/option import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "google/protobuf/any.proto"; @@ -55,6 +56,9 @@ message WasmFilter { // selected VM type VmType vm_type = 7; + + // when true, bypass the filter if there is a fatal error on the VM; defaults to false + bool fail_open = 9; } diff --git a/api/gloo/gloo/v1/proxy.proto b/api/gloo/gloo/v1/proxy.proto index 91bc98221..a506de4b8 100644 --- a/api/gloo/gloo/v1/proxy.proto +++ b/api/gloo/gloo/v1/proxy.proto @@ -5,19 +5,36 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1"; import "google/protobuf/wrappers.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/struct.proto"; +import "google/protobuf/any.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "github.com/solo-io/solo-kit/api/v1/ref.proto"; import "github.com/solo-io/solo-kit/api/v1/solo-kit.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl.proto"; + +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/listener_options.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/http_listener_options.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/tcp_listener_options.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/virtual_host_options.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/route_options.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/route_configuration_options.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/weighted_destination_options.proto"; + +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl/ssl.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/subset.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/destination_spec.proto"; + +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/filters/stages.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/core/matchers/matchers.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/address.proto"; + +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/matcher/v3/regex.proto"; /* A Proxy is a container for the entire set of configuration that will to be applied to one or more Proxy instances. @@ -34,11 +51,17 @@ a proxy-specific identifier. */ message ProxySpec { + + // This field is populated when the proxy compression is turned on. + string compressedSpec = 3; + // Define here each listener the proxy should create. // Listeners define the a set of behaviors for a single bind address/port where the proxy will listen // If no listeners are specified, the instances configured with the proxy resource will not accept connections. repeated Listener listeners = 2; + reserved 6; + } @@ -64,23 +87,40 @@ message Listener { // contains configuration options for Gloo's TCP-level features TcpListener tcp_listener = 5; + + // contains any number of configuration options for Gloo's HTTP and/or TCP-level features + HybridListener hybrid_listener = 11; + + // contains any number of configuration options for Gloo's HTTP and/or TCP-level features + // avoids duplicating definitions by separating resources and relationships between resources + AggregateListener aggregate_listener = 13; } // SSL Config is optional for the listener. If provided, the listener will serve TLS for connections on this port. - // Multiple SslConfigs are supported for the purpose of SNI. Be aware that the SNI domain provided in the SSL Config + // Multiple SslConfigs are supported for the purpose of SNI. Be aware that the SNI domain provided in the SSL Config. + // This is set to the aggregated list of SslConfigs that are defined on the selected VirtualServices repeated SslConfig ssl_configurations = 6; - // Enable ProxyProtocol support for this listener - google.protobuf.BoolValue use_proxy_proto = 7; + // Enable ProxyProtocol support for this listener. + // Deprecated: prefer setting the listener option. + // If configured, the listener option (filter config) overrides any setting here. + google.protobuf.BoolValue use_proxy_proto = 7 [deprecated=true]; // top level options ListenerOptions options = 8; - // Metadata for the individual listener - // This data is opaque to Gloo, used - // by controllers to track ownership of listeners within a proxy - // as they are typically generated by a controller (such as the gateway) - google.protobuf.Struct metadata = 9 [(extproto.skip_hashing) = true]; + oneof opaque_metadata { + // Metadata for the individual route + // This data is opaque to Gloo, used + // by controllers to track ownership of routes within a proxy + // as they are typically generated by a controller (such as the gateway) + // Deprecated: prefer the any field below + google.protobuf.Struct metadata = 9 [(extproto.skip_hashing) = true]; + + // Inline metadata used by gloo controller to track ownership. + // See [uses of static metadata](https://github.com/solo-io/gloo/tree/main/devel/architecture/static_metadata.md) for specific uses + SourceMetadata metadata_static = 12 [(extproto.skip_hashing) = true]; + } // Route Configuration Options RouteConfigurationOptions route_options = 10; @@ -97,6 +137,9 @@ message TcpListener { TcpListenerOptions options = 8; // prefix for addressing envoy stats for the tcp proxy string stat_prefix = 3; + + // Additional arbitrary network Filters that will be inserted directly into xDS. + repeated CustomEnvoyFilter custom_network_filters = 4; } message TcpHost { @@ -148,11 +191,125 @@ message HttpListener { HttpListenerOptions options = 2; // prefix for addressing envoy stats for the http connection manager string stat_prefix = 3; + + // Additional arbitrary HTTPFilters that will be inserted directly into xDS. + repeated CustomEnvoyFilter custom_http_filters = 4; + + // Additional arbitrary network Filters that will be inserted directly into xDS. + repeated CustomEnvoyFilter custom_network_filters = 5; + + oneof opaque_metadata { + // Metadata for the individual route + // This data is opaque to Gloo, used + // by controllers to track ownership of routes within a proxy + // as they are typically generated by a controller (such as the gateway) + // Deprecated: prefer the any field below + google.protobuf.Struct metadata = 6 [(extproto.skip_hashing) = true]; + + // Inline metadata used by gloo controller to track ownership. + // See [uses of static metadata](https://github.com/solo-io/gloo/tree/main/devel/architecture/static_metadata.md) for specific uses + SourceMetadata metadata_static = 7 [(extproto.skip_hashing) = true]; + } +} + +message HybridListener { + repeated MatchedListener matched_listeners = 1; +} + +message MatchedListener { + // Matchers are used to define unique matching criteria for each MatchedListener + // Each MatchedListener within a HybridListener must have a unique Matcher + // If multiple matchers in a HybridListener are identical, the HybridListener will not be accepted + // Empty Matchers are effectively catch-alls, and there can be no more than one empty Matcher per HybridListener + Matcher matcher = 1; + + oneof ListenerType { + HttpListener http_listener = 2; + TcpListener tcp_listener = 3; + } + + // SSL Config is optional for the MatchedListener. If provided, the listener will serve TLS for connections. + // Multiple SslConfigs are supported for the purpose of SNI. Be aware that the SNI domain provided in the SSL Config. + // This is set to the aggregated list of SslConfigs that are defined on the selected VirtualServices + repeated SslConfig ssl_configurations = 4; +} + + +message MatchedTcpListener { + // Matchers are used to define unique matching criteria for each MatchedListener + // These are overridden by tcphost sni mutators + Matcher matcher = 1; + + // The actual tcp listener to be used for this matcher in the aggregate listener + TcpListener tcp_listener = 2; + +} + +message Matcher { + // Gloo use SNI domains as matching criteria for Gateway selection + // The other ssl_config properties will be applied to the outputFilterChain's transport socket + // SslConfig from VirtualServices will be ignored in a MatchedGateway + gloo.solo.io.SslConfig ssl_config = 1; + + // Source addresses to match. This value is either the actual addresses used to connect, + // or addresses that are overridden by using PROXY protocol or original_src. + repeated .solo.io.envoy.config.core.v3.CidrRange source_prefix_ranges = 2; + // Destination addresses to match. This value is either the actual addresses used to connect, + // or addresses that are overridden by using PROXY protocol or original_dst. + repeated .solo.io.envoy.config.core.v3.CidrRange prefix_ranges = 4; + + // Optional destination port to consider in determining a filter chain match. + // Filter chains that specify the destination port of incoming traffic are the most specific match. + // If no filter chain specifies the exact destination port, + // the filter chains which do not specify ports are the most specific match. + google.protobuf.UInt32Value destination_port = 5; + + repeated string passthrough_cipher_suites = 3; +} + +// An AggregateListener defines a set of Gloo configuration which will map to a unique set of FilterChains on a Listener +message AggregateListener { + + message HttpResources { + // Set of VirtualHosts available on this Listener, indexed by name + map virtual_hosts = 1; + + // Set of HttpListenerOptions available on this Listener, indexed by hash + map http_options = 2; + } + + message HttpFilterChain { + // Matching criteria used to generate both the FilterChainMatch and TransportSocket for the Envoy FilterChain + Matcher matcher = 1; + + // The ref pointing to HttpListenerOptions which are used to configure the HCM on this HttpFilterChain + // Corresponds to an entry in the HttpResources.HttpOptions map + string http_options_ref = 2; + + // The set of refs pointing to VirtualHosts which are available on this HttpFilterChain + // Each ref corresponds to an entry in the HttpResources.VirtualHosts map + repeated string virtual_host_refs = 3; + + // Additional arbitrary HTTPFilters that will be inserted directly into xDS. + repeated CustomEnvoyFilter custom_http_filters = 37; + + // Additional arbitrary network Filters that will be inserted directly into xDS. + repeated CustomEnvoyFilter custom_network_filters = 38; + } + + // The aggregate set of resources available on this listener + HttpResources http_resources = 1; + + // The set of HttpFilterChains to create on this listener + repeated HttpFilterChain http_filter_chains = 2; + + // The set of TcpListeners to create on this listener + repeated MatchedTcpListener tcp_listeners = 3; } /* * Virtual Hosts group an ordered list of routes under one or more domains. - * Each Virtual Host has a logical name, which must be unique for the listener. + * Each Virtual Host has a logical name, which must be unique for the http listener. * An HTTP request is first matched to a virtual host based on its host header, then to a route within the virtual host. * If a request is not matched to any virtual host or a route therein, the target proxy will reply with a 404. */ @@ -165,7 +322,7 @@ message VirtualHost { // but not “-bar.foo.com”. Additionally, a special entry “*” is allowed which will match any host/authority header. // Only a single virtual host in the entire route configuration can match on “*”. A domain must be unique across all // virtual hosts or the config will be invalidated by Gloo - // Domains on virtual hosts obey the same rules as [Envoy Virtual Hosts](https://github.com/envoyproxy/envoy/blob/master/api/envoy/api/v2/route/route.proto) + // Domains on virtual hosts obey the same rules as [Envoy Virtual Hosts](https://github.com/envoyproxy/envoy/blob/main/api/envoy/api/v2/route/route.proto) repeated string domains = 2; // The list of HTTP routes define routing actions to be taken for incoming HTTP requests whose host header matches @@ -177,11 +334,18 @@ message VirtualHost { // Some configuration here can be overridden by Route Options. VirtualHostOptions options = 4; - // Metadata for the individual virtual host - // This data is opaque to Gloo, used - // by controllers to track ownership of virtual hosts within a proxy - // as they are typically generated by a controller (such as the gateway) - google.protobuf.Struct metadata = 6 [(extproto.skip_hashing) = true]; + + oneof opaque_metadata { + // Metadata for the individual route + // This data is opaque to Gloo, used + // by controllers to track ownership of routes within a proxy + // as they are typically generated by a controller (such as the gateway) + // Deprecated: prefer the any field below + google.protobuf.Struct metadata = 6 [(extproto.skip_hashing) = true]; + + // Inline metadata used by gloo controller to track ownership + SourceMetadata metadata_static = 7 [(extproto.skip_hashing) = true]; + } } /** @@ -205,21 +369,29 @@ message Route { DirectResponseAction direct_response_action = 4; } + reserved 8; + reserved "graphql_api_ref"; + // Route Options extend the behavior of routes. // Route options include configuration such as retries, rate limiting, and request/response transformation. RouteOptions options = 5; - // Metadata for the individual route - // This data is opaque to Gloo, used - // by controllers to track ownership of routes within a proxy - // as they are typically generated by a controller (such as the gateway) - google.protobuf.Struct metadata = 6 [(extproto.skip_hashing) = true]; + oneof opaque_metadata { + // Metadata for the individual route + // This data is opaque to Gloo, used + // by controllers to track ownership of routes within a proxy + // as they are typically generated by a controller (such as the gateway) + // Deprecated: prefer the any field below + google.protobuf.Struct metadata = 6 [(extproto.skip_hashing) = true]; + + // Inline metadata used by gloo controller to track ownership + SourceMetadata metadata_static = 9 [(extproto.skip_hashing) = true]; + } // The name provides a convenience for users to be able to refer to a route by name. // It includes names of vs, route, and route table ancestors of the route. string name = 7; } - // RouteActions are used to route matched requests to upstreams. message RouteAction { // Defines the destination upstream for routing @@ -238,6 +410,13 @@ message RouteAction { // If the header is not found or the referenced cluster does not exist, Envoy will return a 404 response. // Avoid using this whenever possible, it does not allow for custom filter configuration based on Virtual Host. string cluster_header = 4; + + // Route requests to a custom dynamic forward proxy envoy cluster. + // Envoy will route based on the DNS response (cached) or pause requests + // (for a configurable amount of time on the listener) until DNS has resolved for + // the host header rewrite as provided here. + // For more, see https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/http/http_proxy + dfp.options.gloo.solo.io.PerRouteConfig dynamic_forward_proxy = 5; }; } @@ -304,14 +483,15 @@ message UpstreamGroupSpec { // The destinations that are part of this upstream group. repeated WeightedDestination destinations = 1; + reserved 6; } // MultiDestination is a container for a set of weighted destinations. Gloo will load balance traffic for a single // route across multiple destinations according to their specified weights. message MultiDestination { - // This list must contain at least one destination or the listener housing this route will be invalid, - // causing Gloo to error the parent proxy resource. + // This list must contain at least one destination with a weight greater than 0. + // Otherwise, the listener for this route becomes invalid, which causes an error for the parent proxy resource. repeated WeightedDestination destinations = 1; } @@ -319,15 +499,18 @@ message MultiDestination { message WeightedDestination { Destination destination = 1; - // Weight must be greater than zero - // Routing to each destination will be balanced by the ratio of the destination's weight to the total weight on a route - uint32 weight = 2; + // Weight must be zero or greater -if no weight is passed it will default to 0 - + // Routing to each destination is balanced according to the ratio of the destination’s weight to the total + // weight on a route. For example, if the weight for one destination is 2, and the total weight of all + // destinations on the route is 6, the destination receives 2/6 of the traffic. Note that a weight of 0 + // routes no traffic to the destination. + google.protobuf.UInt32Value weight = 2; // Apply configuration to traffic that is sent to this weighted destination WeightedDestinationOptions options = 3; } -// Notice: RedirectAction is copied directly from https://github.com/envoyproxy/envoy/blob/master/api/envoy/api/v2/route/route.proto +// Notice: RedirectAction is copied directly from https://github.com/envoyproxy/envoy/blob/main/api/envoy/api/v2/route/route.proto message RedirectAction { // The host portion of the URL will be swapped with this value. string host_redirect = 1; @@ -343,6 +526,36 @@ message RedirectAction { // Pay attention to the use of trailing slashes as mentioned in // `RouteAction`'s `prefix_rewrite`. string prefix_rewrite = 5; + + // Indicates that during forwarding, portions of the path that match the + // pattern should be rewritten, even allowing the substitution of capture + // groups from the pattern into the new path as specified by the rewrite + // substitution string. This is useful to allow application paths to be + // rewritten in a way that is aware of segments with variable content like + // identifiers. The router filter will place the original path as it was + // before the rewrite into the :ref:`x-envoy-original-path + // ` header. + // + // Only one of :ref:`prefix_rewrite ` + // or *regex_rewrite* may be specified. + // + // Examples using Google's [RE2](https://github.com/google/re2) engine: + // + // * The path pattern `^/service/([^/]+)(/.*)$` paired with a substitution + // string of `\2/instance/\1` would transform `/service/foo/v1/api` + // into `/v1/api/instance/foo`. + // + // * The pattern `one` paired with a substitution string of `two` would + // transform `/xxx/one/yyy/one/zzz` into `/xxx/two/yyy/two/zzz`. + // + // * The pattern `^(.*?)one(.*)$` paired with a substitution string of + // `\1two\2` would replace only the first occurrence of `one`, + // transforming path `/xxx/one/yyy/one/zzz` into `/xxx/two/yyy/one/zzz`. + // + // * The pattern `(?i)/xxx/` paired with a substitution string of `/yyy/` + // would do a case-insensitive match and transform path `/aaa/XxX/bbb` to + // `/aaa/yyy/bbb`. + .solo.io.envoy.type.matcher.v3.RegexMatchAndSubstitute regex_rewrite = 32; } enum RedirectResponseCode { @@ -372,9 +585,12 @@ message RedirectAction { // Indicates that during redirection, the query portion of the URL will // be removed. Default value is false. bool strip_query = 6; + + // Which port to redirect to if different than original. + google.protobuf.UInt32Value port_redirect = 7; } -// DirectResponseAction is copied directly from https://github.com/envoyproxy/envoy/blob/master/api/envoy/api/v2/route/route.proto +// DirectResponseAction is copied directly from https://github.com/envoyproxy/envoy/blob/main/api/envoy/api/v2/route/route.proto message DirectResponseAction { // Specifies the HTTP response status to be returned. uint32 status = 1; @@ -387,6 +603,39 @@ message DirectResponseAction { string body = 2; } +// SourceMetadata is an internal message used to track ownership of nested proxy objects: +// - Listener +// - VirtualHost +// - Route +message SourceMetadata { + + message SourceRef { + // The resource being referenced + core.solo.io.ResourceRef resource_ref = 1; + // The resource Kind + string resource_kind = 2; + // The observed generation of the resource + int64 observed_generation = 3; + } + + // A list of sources + repeated SourceRef sources = 1; +} + +// CustomEnvoyFilter contains an arbitrary filter. +// These may be HTTPFilters or NetworkFilters, depending on the context they're used. +message CustomEnvoyFilter { + // Determines filter ordering. + .filters.gloo.solo.io.FilterStage filter_stage = 1; + + // The name of the filter configuration. + string name = 2; + + // Filter specific configuration. + google.protobuf.Any config = 3; +} + + message UpstreamGroupStatus { enum State { // Pending status indicates the resource has not yet been validated @@ -415,6 +664,12 @@ message UpstreamGroupStatus { +message UpstreamGroupNamespacedStatuses { + map statuses = 1; +} + + + message ProxyStatus { enum State { // Pending status indicates the resource has not yet been validated @@ -440,3 +695,9 @@ message ProxyStatus { // Opaque details about status results google.protobuf.Struct details = 5; } + + + +message ProxyNamespacedStatuses { + map statuses = 1; +} diff --git a/api/gloo/gloo/v1/route_configuration_options.proto b/api/gloo/gloo/v1/route_configuration_options.proto new file mode 100644 index 000000000..6e6a5f579 --- /dev/null +++ b/api/gloo/gloo/v1/route_configuration_options.proto @@ -0,0 +1,22 @@ +syntax = "proto3"; +package gloo.solo.io; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1"; + +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + +import "google/protobuf/wrappers.proto"; + +message RouteConfigurationOptions { + // The maximum bytes of the response direct response body size. If not specified the default is 4096. + // Please refer to the [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto#envoy-v3-api-field-config-route-v3-routeconfiguration-max-direct-response-body-size-bytes) + // for more details about the `max_direct_response_body_size_bytes` attribute. + google.protobuf.UInt32Value max_direct_response_body_size_bytes = 1; + + // By default, headers that should be added/removed are evaluated from most to least specific. + // To allow setting overrides at the route or virtual host level, this order can be reversed by setting this option to true. + // Refer to the [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto#envoy-v3-api-field-config-route-v3-routeconfiguration-most-specific-header-mutations-wins) for more details. + google.protobuf.BoolValue most_specific_header_mutations_wins = 2; +} \ No newline at end of file diff --git a/api/gloo/gloo/v1/route_options.proto b/api/gloo/gloo/v1/route_options.proto new file mode 100644 index 000000000..55107e606 --- /dev/null +++ b/api/gloo/gloo/v1/route_options.proto @@ -0,0 +1,254 @@ +syntax = "proto3"; +package gloo.solo.io; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1"; + +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/transformation/transformation.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/faultinjection/fault.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/retries/retries.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/extensions.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/tracing/tracing.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/shadowing/shadowing.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/headers/headers.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/matcher/v3/regex.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/cors/cors.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/lbhash/lbhash.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/protocol_upgrade/protocol_upgrade.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/ratelimit/ratelimit.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/waf/waf.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/jwt/jwt.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/rbac/rbac.proto"; +import "github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/dlp/dlp.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/buffer/v3/buffer.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/csrf/v3/csrf.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extproc/extproc.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/ai/ai.proto"; + + +import "google/protobuf/wrappers.proto"; +import "google/protobuf/duration.proto"; +import "google/protobuf/struct.proto"; + + +// Optional, feature-specific configuration that lives on routes. +// Each RouteOptions object contains configuration for a specific feature. +// Note to developers: new Route plugins must be added to this struct +// to be usable by Gloo. (plugins currently need to be compiled into Gloo) +message RouteOptions { + // Transformations to apply. Note: this field is superseded by `staged_transformations`. + // If `staged_transformations.regular` is set, this field will be ignored. + transformation.options.gloo.solo.io.Transformations transformations = 1 [deprecated = true]; + fault.options.gloo.solo.io.RouteFaults faults = 2; + // For requests matched on this route, rewrite the HTTP request path to the provided value before forwarding upstream + google.protobuf.StringValue prefix_rewrite = 3; + // Specifies the upstream timeout for the route. If not specified, the default is 15s. This spans between the point + // at which the entire downstream request (i.e. end-of-stream) has been processed and when the upstream response has + // been completely processed. A value of 0 will disable the route’s timeout. + google.protobuf.Duration timeout = 4 ; + retries.options.gloo.solo.io.RetryPolicy retries = 5; + // Extensions will be passed along from Listeners, Gateways, VirtualServices, Routes, and Route tables to the + // underlying Proxy, making them useful for controllers, validation tools, etc. which interact with kubernetes yaml. + // + // Some sample use cases: + // * controllers, deployment pipelines, helm charts, etc. which wish to use extensions as a kind of opaque metadata. + // * In the future, Gloo may support gRPC-based plugins which communicate with the Gloo translator out-of-process. + // Opaque Extensions enables development of out-of-process plugins without requiring recompiling & redeploying Gloo's API. + Extensions extensions = 6; + // Defines route-specific tracing configuration. + // See here for additional information on Envoy's tracing capabilities: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/observability/tracing.html + // See [here](https://docs.solo.io/gloo-edge/latest/guides/observability/tracing/) for additional information about configuring tracing with Gloo Edge. + tracing.options.gloo.solo.io.RouteTracingSettings tracing = 7; + // Specifies traffic shadowing configuration for the route. + // See here for additional information on Envoy's shadowing capabilities: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto#envoy-api-msg-route-routeaction-requestmirrorpolicy + shadowing.options.gloo.solo.io.RouteShadowing shadowing = 8; + // Append/Remove headers on Requests or Responses on this Route + headers.options.gloo.solo.io.HeaderManipulation header_manipulation = 9; + // For requests matched on this route, rewrite the Host header before forwarding upstream + oneof host_rewrite_type { + // Indicates that during forwarding, the host header will be swapped with this value. + string host_rewrite = 10; + // Enable/Disable auto host re-write. + // Indicates that the host header will be swapped with the hostname of the upstream host. + // This setting is only honored for upstreams that use DNS resolution (i.e., their generated Envoy cluster is + // of type STRICT_DNS or LOGICAL_DNS -- think aws, azure, or static upstreams with hostnames) + google.protobuf.BoolValue auto_host_rewrite = 19; + + // Indicates that during forwarding, the host header will be swapped with the result of the regex + // substitution executed on path value with query and fragment removed. + .solo.io.envoy.type.matcher.v3.RegexMatchAndSubstitute host_rewrite_path_regex = 101; + + // Indicates that during forwarding, the host header will be swapped with the content of given downstream or custom header. + // If header value is empty, host header is left intact. + // Using this option will append the x-forwarded-host header if append_x_forwarded_host is set. + google.protobuf.StringValue host_rewrite_header = 147; + }; + // If true and there is a host rewrite, appends the x-forwarded-host header to requests. + google.protobuf.BoolValue append_x_forwarded_host = 146; + // Defines a CORS policy for the route. + // If a CORS policy is defined on both the route and the virtual host, the merge behavior for these policies is + // determined by the CorsPolicyMergeSettings defined on the VirtualHost. + cors.options.gloo.solo.io.CorsPolicy cors = 11; + // For routes served by a hashing load balancer, this defines the input to the hash key + // Gloo configures Envoy with the first available RouteActionHashConfig among the following ordered list of providers: + // - route, upstream, virtual service + lbhash.options.gloo.solo.io.RouteActionHashConfig lb_hash = 12; + // Route configuration for protocol upgrade requests. + repeated protocol_upgrade.options.gloo.solo.io.ProtocolUpgradeConfig upgrades = 21; + + // Enterprise-only: Config for GlooE rate-limiting using simplified (gloo-specific) API + ratelimit.options.gloo.solo.io.IngressRateLimit ratelimit_basic = 13; + + oneof rate_limit_early_config_type { + // Enterprise-only: Partial config for GlooE rate-limiting based on Envoy's rate-limit service; + // supports Envoy's rate-limit service API. (reference here: https://github.com/lyft/ratelimit#configuration) + // Configure rate-limit *actions* here, which define how request characteristics get translated into + // descriptors used by the rate-limit service for rate-limiting. Configure rate-limit *descriptors* and + // their associated limits on the Gloo settings. + // Only one of `ratelimit_early` or `rate_limit_early_configs` can be set. + ratelimit.options.gloo.solo.io.RateLimitRouteExtension ratelimit_early = 142; + + // References to RateLimitConfig resources. This is used to configure the GlooE rate limit server. + // Only one of `ratelimit_early` or `rate_limit_early_configs` can be set. + ratelimit.options.gloo.solo.io.RateLimitConfigRefs rate_limit_early_configs = 143; + } + + oneof rate_limit_config_type { + // Enterprise-only: Partial config for GlooE rate-limiting based on Envoy's rate-limit service; + // supports Envoy's rate-limit service API. (reference here: https://github.com/lyft/ratelimit#configuration) + // Configure rate-limit *actions* here, which define how request characteristics get translated into + // descriptors used by the rate-limit service for rate-limiting. Configure rate-limit *descriptors* and + // their associated limits on the Gloo settings. + // Only one of `ratelimit` or `rate_limit_configs` can be set. + ratelimit.options.gloo.solo.io.RateLimitRouteExtension ratelimit = 140; + + // References to RateLimitConfig resources. This is used to configure the GlooE rate limit server. + // Only one of `ratelimit` or `rate_limit_configs` can be set. + ratelimit.options.gloo.solo.io.RateLimitConfigRefs rate_limit_configs = 141; + } + + oneof rate_limit_regular_config_type { + // Enterprise-only: Partial config for GlooE rate-limiting based on Envoy's rate-limit service; + // supports Envoy's rate-limit service API. (reference here: https://github.com/lyft/ratelimit#configuration) + // Configure rate-limit *actions* here, which define how request characteristics get translated into + // descriptors used by the rate-limit service for rate-limiting. Configure rate-limit *descriptors* and + // their associated limits on the Gloo settings. + // Only one of `ratelimit_early` or `rate_limit_early_configs` can be set. + ratelimit.options.gloo.solo.io.RateLimitRouteExtension ratelimit_regular = 144; + + // References to RateLimitConfig resources. This is used to configure the GlooE rate limit server. + // Only one of `ratelimit_early` or `rate_limit_early_configs` can be set. + ratelimit.options.gloo.solo.io.RateLimitConfigRefs rate_limit_regular_configs = 145; + } + + // Enterprise-only: Config for Web Application Firewall (WAF), supporting + // the popular ModSecurity 3.0 ruleset + waf.options.gloo.solo.io.Settings waf = 15; + oneof jwt_config{ + // Enterprise-only: Config for reading and verifying JWTs. Copy verifiable information from JWTs into other + // headers to make routing decisions or combine with RBAC for fine-grained access control. + // This has been deprecated in favor of staged jwt. The same configuration can be achieved through staged jwt + // using AfterExtAuth. + jwt.options.gloo.solo.io.RouteExtension jwt = 16 [deprecated = true]; + + // Enterprise-only: Config for reading and verifying JWTs. Copy verifiable information from JWTs into other + // headers to make routing decisions or combine with RBAC for fine-grained access control. + // JWT configuration has stages "BeforeExtAuth" and "AfterExtAuth". BeforeExtAuth JWT + // validation runs before the external authentication service. This is useful when JWT + // is used in conjunction with other auth mechanisms specified in the [boolean expression Extauth API](https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto.sk/#authconfig). + // AfterExtAuth validation runs after external authentication service, which is useful for verifying + // JWTs obtained during extauth (e.g. oauth/oidc) + jwt.options.gloo.solo.io.JwtStagedRouteExtension jwt_staged = 25; + + // Enterprise-only: Config for reading and verifying JWTs. Copy verifiable information from JWTs into other + // headers to make routing decisions or combine with RBAC for fine-grained access control. + // JWT configuration has stages "BeforeExtAuth" and "AfterExtAuth". BeforeExtAuth JWT + // validation runs before the external authentication service. This is useful when JWT + // is used in conjunction with other auth mechanisms specified in the [boolean expression Extauth API](https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto.sk/#authconfig). + // AfterExtAuth validation runs after external authentication service, which is useful for verifying + // JWTs obtained during extauth (e.g. oauth/oidc) + jwt.options.gloo.solo.io.JwtStagedRouteProvidersExtension jwt_providers_staged = 32; + } + + // Enterprise-only: Config for RBAC (currently only supports RBAC based on JWT claims) + rbac.options.gloo.solo.io.ExtensionSettings rbac = 17; + // Enterprise-only: Authentication configuration + enterprise.gloo.solo.io.ExtAuthExtension extauth = 18; + // Enterprise-only: Config for data loss prevention + dlp.options.gloo.solo.io.Config dlp = 20; + + // BufferPerRoute can be used to set the maximum request size + // that the filter will buffer before the connection + // manager will stop buffering and return a 413 response. + // Note: If you have not set a global config (at the gateway level), this + // override will not do anything by itself. + .solo.io.envoy.extensions.filters.http.buffer.v3.BufferPerRoute buffer_per_route = 22; + + // Csrf can be used to set percent of requests for which the CSRF filter is enabled, enable shadow-only mode + // where policies will be evaluated and tracked, but not enforced and add additional source origins + // that will be allowed in addition to the destination origin. + // For more, see https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/filter/http/csrf/v2/csrf.proto + .solo.io.envoy.extensions.filters.http.csrf.v3.CsrfPolicy csrf = 24; + + // Early transformations stage. These transformations run before most other options are processed. + // If the `regular` field is set in here, the `transformations` field is ignored. + transformation.options.gloo.solo.io.TransformationStages staged_transformations = 23; + + // This field can be used to provide additional information about the route. This metadata can be consumed + // by the Envoy filters that process requests that match the route. For more info about metadata, see + // [here](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/data_sharing_between_filters#metadata). + // + // The value of this field will be propagated to the `metadata` attribute of the corresponding Envoy route. + // Please refer to the [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#config-route-v3-route) + // for more details about the `metadata` attribute. + map envoy_metadata = 26; + + // For requests matched on this route, rewrite the HTTP request path according to the provided regex pattern before forwarding upstream + // Please refer to the [Envoy documentation](https://www.envoyproxy.io/docs/envoy/v1.14.1/api-v3/config/route/v3/route_components.proto#envoy-v3-api-field-config-route-v3-routeaction-regex-rewrite) + // for more details about the `regex_rewrite` attribute + .solo.io.envoy.type.matcher.v3.RegexMatchAndSubstitute regex_rewrite = 27; + + // This is a 1:1 translation to the [Envoy API described here](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-msg-config-route-v3-routeaction-maxstreamduration) + message MaxStreamDuration { + // Specifies the maximum duration allowed for streams on the route. If not specified, the value + // from the [max_stream_duration](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#envoy-v3-api-field-config-core-v3-httpprotocoloptions-max-stream-duration) + // field in [HttpConnectionManager.common_http_protocol_options](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto#envoy-v3-api-field-extensions-filters-network-http-connection-manager-v3-httpconnectionmanager-common-http-protocol-options) + // is used. If this field is set explicitly to zero, any HttpConnectionManager max_stream_duration timeout will be disabled for this route. + google.protobuf.Duration max_stream_duration = 1; + + // If present, and the request contains a [grpc-timeout header](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md), use that value as the + // `max_stream_duration`, but limit the applied timeout to the maximum value specified here. + // If set to 0, the `grpc-timeout` header is used without modification. + google.protobuf.Duration grpc_timeout_header_max = 2; + + // If present, Envoy will adjust the timeout provided by the `grpc-timeout` header by + // subtracting the provided duration from the header. This is useful for allowing Envoy to set + // its global timeout to be less than that of the deadline imposed by the calling client, which + // makes it more likely that Envoy will handle the timeout instead of having the call canceled + // by the client. If, after applying the offset, the resulting timeout is zero or negative, + // the stream will timeout immediately. + google.protobuf.Duration grpc_timeout_header_offset = 3; + } + + // Settings for maximum durations and timeouts for streams on the route. + // Please refer to the [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-msg-config-route-v3-routeaction-maxstreamduration) + MaxStreamDuration max_stream_duration = 28; + + // Specifies the idle timeout for the route. If not specified, there is no per-route idle timeout, + // although the Gateway's [httpConnectionManagerSettings](https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/hcm/hcm.proto.sk/#httpconnectionmanagersettings) + // wide stream_idle_timeout will still apply. A value of 0 will completely disable the route’s idle timeout, even if a connection manager stream idle timeout is configured. + // Please refer to the [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-field-config-route-v3-routeaction-idle-timeout) + google.protobuf.Duration idle_timeout = 29; + + // Enterprise-only: External Processing filter settings for the route. This can be used to + // override certain HttpListenerOptions or VirtualHostOptions settings. + extproc.options.gloo.solo.io.RouteSettings ext_proc = 30; + + // Enterprise-only: Settings to configure ai settings for a route. + // These settings will only apply if the backend is an `ai` Upstream. + ai.options.gloo.solo.io.RouteSettings ai = 31; +} \ No newline at end of file diff --git a/api/gloo/gloo/v1/secret.proto b/api/gloo/gloo/v1/secret.proto index af7e7982b..2211c7a13 100644 --- a/api/gloo/gloo/v1/secret.proto +++ b/api/gloo/gloo/v1/secret.proto @@ -5,6 +5,7 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/extensions.proto"; import "github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto"; @@ -37,9 +38,13 @@ message Secret { // Enterprise-only: OAuth secret configuration enterprise.gloo.solo.io.OauthSecret oauth = 5; // Enterprise-only: ApiKey secret configuration - enterprise.gloo.solo.io.ApiKeySecret api_key = 6; + enterprise.gloo.solo.io.ApiKey api_key = 6; // Secrets for use in header payloads (e.g. in the Envoy healthcheck API) HeaderSecret header = 8; + // Secrets to represent user/secret pairs. Used to authenticate to LDAP service accounts and hold shared secrets for HMAC auth. + AccountCredentialsSecret credentials = 9; + // Enterprise-only: Secrets used to encrypt messages and data. Used to encrypt and decrypt session values in Ext-Auth. + EncryptionKeySecret encryption = 10; // Extensions will be passed along from Listeners, Gateways, VirtualServices, Routes, and Route tables to the // underlying Proxy, making them useful for controllers, validation tools, etc. which interact with kubernetes yaml. @@ -120,17 +125,16 @@ message AzureSecret { map api_keys = 1; } -/* -Note that the annotation `resource_kind: '*v1.Secret'` is needed for Gloo to find this secret. -Glooctl adds it by default when the tls secret is created via `glooctl create secret tls`. -*/ message TlsSecret { - // provided by `glooctl create secret tls` + // provided by `glooctl create secret tls`, and stored as `tls.crt` in the secret. string cert_chain = 1; - // provided by `glooctl create secret tls` + // provided by `glooctl create secret tls`, and stored as `tls.key` in the secret. string private_key = 2; - // provided by `glooctl create secret tls` + // provided by `glooctl create secret tls`, and stored as `ca.crt` in the secret. string root_ca = 3; + // ocsp staple is a der-encoded binary structure + // provided by `glooctl create secret tls`, and stored as `tls.ocsp-staple` in the secret. + bytes ocsp_staple = 4; } @@ -139,3 +143,21 @@ message HeaderSecret { // Provided by `glooctl create secret header` map headers = 1; } + +/* + Secret to represent any kind of a username/secretname and password/secret combination + Used by LDAP auth to store service account credentials and by HMAC auth to keep shared secrets. + */ +message AccountCredentialsSecret { + string username = 1; + string password = 2; +} + +/* + Secret used for key encryption. + This is used for encrypting Session Values. + */ +message EncryptionKeySecret { + // the key used to encrypt session values. This must be 32 bytes in length. + string key = 1; +} \ No newline at end of file diff --git a/api/gloo/gloo/v1/settings.proto b/api/gloo/gloo/v1/settings.proto index 282fdcd87..67cc57f1c 100644 --- a/api/gloo/gloo/v1/settings.proto +++ b/api/gloo/gloo/v1/settings.proto @@ -6,17 +6,21 @@ import "google/protobuf/struct.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "github.com/solo-io/solo-kit/api/v1/solo-kit.proto"; import "github.com/solo-io/solo-kit/api/v1/ref.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/extensions.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/ratelimit/ratelimit.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/caching/caching.proto"; import "github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extproc/extproc.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/rbac/rbac.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/circuit_breaker.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/circuit_breaker/circuit_breaker.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl/ssl.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/aws/filter.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/consul/query_options.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/wrappers.proto"; @@ -35,6 +39,7 @@ message SettingsSpec { // // If not set, this defaults to all available namespaces. Please note that, the `discovery_namespace` will always // be included in this list. + // If this is specified, it overwrites the `watch_namespace_selectors` specified repeated string watch_namespaces = 2; // This setting determines where Gloo controllers will store its resources @@ -51,6 +56,25 @@ message SettingsSpec { Directory directory_secret_source = 8; }; + // Settings for secrets storage. + // This API is beta and should be tested thoroughly before production use + SecretOptions secret_options = 38; + + message SecretOptions { + message Source { + // Determines where Gloo will read/write secrets from/to. + oneof source { + KubernetesSecrets kubernetes = 1; + VaultSecrets vault = 2; + Directory directory = 3; + }; + } + + // Required. List of configured secret sources. These clients will be sorted and + // initialized in a stable order kubernetes > directory > vault. + repeated Source sources = 1; + } + // Where to read artifacts from. oneof artifact_source { KubernetesConfigmaps kubernetes_artifact_source = 9; @@ -61,8 +85,12 @@ message SettingsSpec { // How frequently to resync watches, etc google.protobuf.Duration refresh_rate = 12; - // Enable serving debug data on port 9090 - bool dev_mode = 13; + + // DEPRECATED: In the past DevMode was used to expose endpoints that behave as an Admin API + // https://github.com/solo-io/gloo/issues/6494 + // We now support an Admin API on port 9091. See the following guide for more details + // https://docs.solo.io/gloo-edge/latest/operations/debugging_gloo/#debugging-the-control-plane + bool dev_mode = 13 [deprecated=true]; // Enable automatic linkerd upstream header addition for easier routing to linkerd services bool linkerd = 17; @@ -77,40 +105,111 @@ message SettingsSpec { // Use [HashiCorp Vault](https://www.vaultproject.io/) as storage for secret data. message VaultSecrets { + // DEPRECATED: use field accessToken // the Token used to authenticate to Vault string token = 1; // address is the address of the Vault server. This should be a complete - // URL such as http://solo.io + // URL such as http://solo.io and include port if necessary (vault's default port is 8200) string address = 2; + // DEPRECATED: use field tls_config to configure TLS connection to Vault // caCert is the path to a PEM-encoded CA cert file to use to verify the // Vault server SSL certificate. string ca_cert = 3; + // DEPRECATED: use field tls_config to configure TLS connection to Vault // caPath is the path to a directory of PEM-encoded CA cert files to verify // the Vault server SSL certificate. string ca_path = 4; + // DEPRECATED: use field tls_config to configure TLS connection to Vault // clientCert is the path to the certificate for Vault communication string client_cert = 5; + // DEPRECATED: use field tls_config to configure TLS connection to Vault // clientKey is the path to the private key for Vault communication string client_key = 6; + // DEPRECATED: use field tls_config to configure TLS connection to Vault // tlsServerName, if set, is used to set the SNI host when connecting via // TLS. string tls_server_name = 7; - // Insecure enables or disables SSL verification + // DEPRECATED: use field tls_config to configure TLS connection to Vault + // When set to true, disables TLS verification google.protobuf.BoolValue insecure = 8; // all keys stored in Vault will begin with this Vault - // this can be used to run multiple instances of Gloo against the same Consul cluster + // this can be used to run multiple instances of Gloo against the same Vault cluster // defaults to `gloo` string root_key = 9; + + // Optional: The name of a Vault Secrets Engine to which Vault should route traffic. + // For more info see https://learn.hashicorp.com/tutorials/vault/getting-started-secrets-engines. + // Defaults to 'secret' + string path_prefix = 10; + + // Configure TLS options for client connection to Vault. This is only available when running + // Gloo Edge outside of an container orchestration tool such as Kubernetes or Nomad. + VaultTlsConfig tls_config = 11; + + // Support for multiple authentication methods + oneof auth_method { + string access_token = 12; + VaultAwsAuth aws = 13; + } } + // Configure Vault client to authenticate to server via AWS auth (IAM only). + // For more info see https://developer.hashicorp.com/vault/docs/auth/aws + message VaultAwsAuth { + // The Vault role we are trying to authenticate to. + // This is not necessarily the same as the AWS role to which the Vault role is configured. + string vault_role = 1; + // The AWS region to use for the login attempt + string region = 2; + // The IAM Server ID Header required to be included in the request + string iam_server_id_header = 3; + // The Vault path on which the AWS auth is mounted + string mount_path = 4; + // The Access Key ID as provided by the security credentials on the AWS IAM resource. + // Optional: In cases such as receiving temporary credentials through assumed roles with AWS Security Token Service (STS) or IAM Roles for Service Accounts (IRSA), this field can be omitted. + // https://developer.hashicorp.com/vault/docs/auth/aws#iam-authentication-inferences + string access_key_id = 5; + // The Secret Access Key as provided by the security credentials on the AWS IAM resource. + // Optional: In cases such as receiving temporary credentials through assumed roles with AWS Security Token Service (STS) or IAM Roles for Service Accounts (IRSA), this field can be omitted. + // https://developer.hashicorp.com/vault/docs/auth/aws#iam-authentication-inferences + string secret_access_key = 6; + // The Session Token as provided by the security credentials on the AWS IAM resource + string session_token = 7; + // The time increment, in seconds, used in renewing the lease of the Vault token. See: https://developer.hashicorp.com/vault/docs/concepts/lease#lease-durations-and-renewal. Defaults to 0, which causes the default TTL to be used. + int32 lease_increment = 8; + } + + // Settings to configure TLS-enabled Vault as a secret store + message VaultTlsConfig { + // caCert is the path to a PEM-encoded CA cert file to use to verify the + // Vault server SSL certificate. + string ca_cert = 1; + + // caPath is the path to a directory of PEM-encoded CA cert files to verify + // the Vault server SSL certificate. + string ca_path = 2; + + // clientCert is the path to the certificate for Vault communication + string client_cert = 3; + + // clientKey is the path to the private key for Vault communication + string client_key = 4; + + // tlsServerName, if set, is used to set the SNI host when connecting via + // TLS. + string tls_server_name = 5; + + // When set to true, disables TLS verification + google.protobuf.BoolValue insecure = 6; + } // Use [HashiCorp Consul Key-Value](https://www.consul.io/api/kv.html/) as storage for config data. // Configuration options for connecting to Consul can be configured in the Settings' root // `consul` field @@ -149,7 +248,8 @@ message SettingsSpec { } // Configuration options for the Clusteringress Controller (for Knative). - KnativeOptions knative = 18; + // Deprecated: Will not be available in Gloo Edge 1.11 + KnativeOptions knative = 18 [deprecated=true]; message DiscoveryOptions { @@ -171,6 +271,23 @@ message SettingsSpec { } FdsMode fds_mode = 1; + + message UdsOptions { + // Enable upstream discovery service. Defaults to true. + google.protobuf.BoolValue enabled = 1; + + // Map of labels to watch. Only services which match all of the selectors specified here will be discovered by UDS. + map watch_labels = 2; + } + + UdsOptions uds_options = 2; + + message FdsOptions { + reserved 1; + reserved "graphql_enabled"; + } + + FdsOptions fds_options = 3; } // Options for configuring Gloo's Discovery service @@ -284,6 +401,30 @@ message SettingsSpec { // be individually tagged; servicesInstances with the tlsTagName tag are directed to the TLS upstream, while those // without the tlsTagName tag are sorted into the non-TLS upstream. bool splitTlsServices = 19; + + // Sets the consistency mode. The default is DefaultMode. + // + // Note: Gloo handles staleness well (as it runs update loops ~ once/second) but makes many requests + // to get consul endpoints so users may want to opt into stale reads once the implications are understood. + .consul.options.gloo.solo.io.ConsulConsistencyModes consistencyMode = 20; + + // QueryOptions are the query options to use for all Consul queries. + .consul.options.gloo.solo.io.QueryOptions query_options = 21; + + // All Services with tags in the allowlisted values will have endpoints and upstreams discovered. + // Default is all services - if values specified this will limit discovery to only services with specified tags + repeated string service_tags_allowlist = 22; + + // Enables blocking queries for Gloo's requests to the Consul Catalog API for each service + // (`/catalog/service/:servicename`) to get endpoints for EDS. For more on blocking queries, see + // https://www.consul.io/api-docs/features/blocking + // + // Enabling this feature will likely result in fewer network calls to Consul, but may also result in + // fewer local consul agent cache hits for Gloo's requests to the Consul Catalog API. (see + // `query_options` above to configure caching; caching is enabled by default). + // + // Defaults to false. + google.protobuf.BoolValue eds_blocking_queries = 23; } ConsulUpstreamDiscoveryConfiguration consulDiscovery = 30; @@ -293,10 +434,10 @@ message SettingsSpec { message KubernetesConfiguration { message RateLimits { - // The maximum queries-per-second Gloo can make to the Kubernetes API Server. + // The maximum queries-per-second Gloo can make to the Kubernetes API Server. Defaults to 50. float QPS = 1; // Maximum burst for throttle. When a steady state of QPS requests per second, - // this is an additional number of allowed, to allow for short bursts. + // this is an additional number of allowed, to allow for short bursts. Defaults to 100. uint32 burst = 2; } // Rate limits for the kubernetes clients @@ -339,8 +480,15 @@ message SettingsSpec { // If an auth server name is not supplied on a route, the default auth server will be applied. map named_extauth = 33; + // Enterprise-only: Settings for the caching server itself + // This may eventually be able to be set at a per listener level. + // At this time is used for plugin translation via the init.Params. + caching.options.gloo.solo.io.Settings caching_server = 36; + + reserved 15; + message ObservabilityOptions { // Provides settings related to the observability pod's interactions with grafana @@ -361,10 +509,38 @@ message SettingsSpec { // 2. Request all folder data (after admin:admin is replaced with the correct credentials): // curl http://admin:admin@localhost:3000/api/folders google.protobuf.UInt32Value default_dashboard_folder_id = 1; + + // The prefix of the UIDs and Titles for all dashboards created on grafana. + // This is restricted to 20 characters. + string dashboard_prefix = 2; + + // Extra parameters when querying metrics from Grafana dashboards. + // This string will be appended to every query for metrics in the definition of all gloo managed dashboards. + // It can consist of multiple query parameters separated by a comma. + // For example `cluster="some-cluster",gateway_proxy_id="proxy-2"` + string extra_metric_query_parameters = 3; } // Options to configure Gloo's integration with [Kubernetes](https://www.kubernetes.io/). GrafanaIntegration grafanaIntegration = 1; + + + message MetricLabels { + // Each (key, value) pair in the map defines a label to be applied. Keys specify the name of the label + // (e.g. "namespace"). Values specify the jsonpath (https://kubernetes.io/docs/reference/kubectl/jsonpath/) + // string corresponding to the field of a resource to use as the label value (e.g. "{.metadata.namespace}"). + // For example, if labelToPath = {name: '{.metadata.name}', namespace: '{.metadata.namespace}'} for + // Upstream.v1.gateway.solo.io, the following metric would be produced: + // validation_gateway_solo_io_upstream_config_status{name="default-petstore-8080",namespace="gloo-system"} 0 + map labelToPath = 1; + } + + // Enable metrics that track the configuration status of various resource types. + // Each (key, value) pair in the map defines a metric for a particular resource type. Configuration status + // metrics are not recorded by default; metrics are recorded only for the resources specified in this map. + // Keys specify the resource type (GroupVersionKind) to track for status changes + // (e.g. "VirtualService.v1.gateway.solo.io"). Values specify the labels to set on the metric. + map configStatusMetricLabels = 2; } // Provides settings related to the observability deployment (enterprise only) @@ -374,6 +550,92 @@ message SettingsSpec { // When these properties are defined on an upstream, this configuration will be ignored UpstreamOptions upstreamOptions = 32; + // Enterprise-only: Settings for the Gloo Edge Enterprise Console (UI) + ConsoleOptions console_options = 35; + + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + reserved 37; + reserved "graphql_options"; + + // Enterprise-only: External Processing filter settings. These settings are used as + // defaults globally, and can be overridden by HttpListenerOptions, VirtualHostOptions, + // or RouteOptions. + extproc.options.gloo.solo.io.Settings ext_proc = 39; + + // A list of Kubernetes selectors that specify the set of namespaces to restrict the namespaces that Gloo controllers + // take into consideration when watching for resources. + // Elements in the list are disjunctive (OR semantics), i.e. a namespace will be included if it matches any selector. + // The following example selects any namespace that matches either below: + // 1. The namespace has both of these labels: `env: prod` and `region: us-east1` + // 2. The namespace has label `app` equal to `cassandra` or `spark`. + // ```yaml + // watchNamespaceSelectors: + // - matchLabels: + // env: prod + // region: us-east1 + // - matchExpressions: + // - key: app + // operator: In + // values: + // - cassandra + // - spark + // ``` + // However, if the match conditions are part of the same same list item, the namespace must match all conditions. + // ```yaml + // watchNamespaceSelectors: + // - matchLabels: + // env: prod + // region: us-east1 + // matchExpressions: + // - key: app + // operator: In + // values: + // - cassandra + // - spark + // ``` + // Refer to the [Kubernetes selector docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors) + // for additional detail on selector semantics. + repeated LabelSelector watch_namespace_selectors = 40; + + +} + +// A label selector requirement is a selector that contains values, a key, and an operator that +// relates the key and values. +// Copied from Kubernetes to avoid expensive dependency on Kubernetes libraries. +// Ref: https://github.com/kubernetes/apimachinery/blob/f7615f37d717297aca51101478406af712553c5b/pkg/apis/meta/v1/generated.proto#L442-L453 +message LabelSelector { + // matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + // map is equivalent to an element of matchExpressions, whose key field is "key", the + // operator is "In", and the values array contains only "value". The requirements are ANDed. + // +optional + map match_labels = 1; + + // matchExpressions is a list of label selector requirements. The requirements are ANDed. + // +optional + repeated LabelSelectorRequirement match_expressions = 2; +} + +// A label selector requirement is a selector that contains values, a key, and an operator that +// relates the key and values. +// Copied from Kubernetes to avoid expensive dependency on Kubernetes libraries. +// Ref: https://github.com/kubernetes/apimachinery/blob/f7615f37d717297aca51101478406af712553c5b/pkg/apis/meta/v1/generated.proto#L455-L472 +message LabelSelectorRequirement { + // key is the label key that the selector applies to. + // +patchMergeKey=key + // +patchStrategy=merge + string key = 1; + + // operator represents a key's relationship to a set of values. + // Valid operators are In, NotIn, Exists and DoesNotExist. + string operator = 2; + + // values is an array of string values. If the operator is In or NotIn, + // the values array must be non-empty. If the operator is Exists or DoesNotExist, + // the values array must be empty. This array is replaced during a strategic + // merge patch. + // +optional + repeated string values = 3; } // Default configuration to use for upstreams, when not provided by a specific upstream @@ -381,6 +643,9 @@ message SettingsSpec { message UpstreamOptions { // Default ssl parameter configuration to use for upstreams SslParameters ssl_parameters = 1; + + // Annotations to apply to all upstreams + map global_annotations = 2; } // Settings specific to the gloo (Envoy xDS server) controller @@ -431,11 +696,30 @@ message GlooOptions { // and therefore must be explicitly specified via the uri envoy.config.filter.http.aws_lambda.v2.AWSLambdaConfig.ServiceAccountCredentials service_account_credentials = 2; } + + // Send downstream path and method as `x-envoy-original-path` and + // `x-envoy-original-method` headers on the request to AWS lambda. + // Defaults to false. + google.protobuf.BoolValue propagate_original_routing = 3; + + // Sets cadence for refreshing credentials for Service Account. + // Does nothing if Service account is not set. + // Does not affect the default filewatch for service account only augments it. + // Defaults to not refreshing on time period. Suggested is 15 minutes. + google.protobuf.Duration credential_refresh_delay = 4; + + // Sets the unsafe behavior where a route can specify a lambda upstream + // but not set the function to target. It will use the first function which + // if discovery is enabled the first function is the first function name alphabetically + // from the last discovery run. This means that the lambda being pointed to could change. + // Defaults to false. + google.protobuf.BoolValue fallback_to_first_function = 5; } AWSOptions aws_options = 5; // Policy for how Gloo should handle invalid config + // [#next-free-field: 15] message InvalidConfigPolicy { // if set to `true`, Gloo removes any routes from the provided configuration @@ -451,17 +735,23 @@ message GlooOptions { uint32 invalid_route_response_code = 2; // replaced routes reply to clients with this response body. - // default is 'Gloo Gateway has invalid configuration. Administrators should run `glooctl check` to find and fix config errors.' + // default is 'Gloo Edge has invalid configuration. Administrators should run `glooctl check` to find and fix config errors.' string invalid_route_response_body = 3; } // set these options to fine-tune the way Gloo handles invalid user configuration InvalidConfigPolicy invalid_config_policy = 6; - // Gloo allows you to directly reference a Kubernetes service as a routing destination. To enable this feature, - // Gloo scans the cluster for Kubernetes services and creates a special type of in-memory Upstream to represent them. - // If the cluster contains a lot of services and you do not restrict the namespaces Gloo is watching, this can result - // in significant overhead. If you do not plan on using this feature, you can use this flag to turn it off. + // Enable or disable Gloo Edge to scan Kubernetes services in the cluster and create in-memory Upstream resources + // to represent them. These resources enable Gloo Edge to route requests to a Kubernetes service. Note that if + // you have a large number of services in your cluster and you do not restrict the namespaces that Gloo Edge watches, + // the API snapshot increases which can have a negative impact on the Gloo Edge translation time. In addition, load + // balancing is done in `kube-proxy` which can have further performance impacts. Using Gloo Upstreams as a routing + // destination bypasses `kube-proxy` as the request is routed to the pod directly. Alternatively, you can use + // [`Kubernetes`](https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/kubernetes/kubernetes.proto.sk/) + // Upstream resources as a routing destination to forward requests to the pod directly. + // + // For more information, see the [docs](https://docs.solo.io/gloo-edge/latest/guides/traffic_management/destination_types/kubernetes_services/). bool disable_kubernetes_destinations = 7; // Default policy for grpc-web. @@ -477,7 +767,7 @@ message GlooOptions { // If not specified, defaults to `false`. google.protobuf.BoolValue disable_proxy_garbage_collection = 9; - // Set this option to specify the default max program size for regexes. If not specified, + // Set this option to specify the default max program size for regexes. If not specified, // defaults to 100. google.protobuf.UInt32Value regex_max_program_size = 10; @@ -485,8 +775,9 @@ message GlooOptions { // Defaults to `0.0.0.0:9976` string rest_xds_bind_addr = 11; - // Whether or not to use rest xds for all EDS by default. + // Whether or not to use rest xds for all EDS by default. // Rest XDS, as opposed to grpc, uses http polling rather than streaming + // It is strongly recommended that this field be set to false, due to the superior performance of GRPC XDS google.protobuf.BoolValue enable_rest_eds = 12; // The polling interval for the DNS server if upstream failover is configured. @@ -494,6 +785,58 @@ message GlooOptions { // hostname with the configured frequency to update endpoints with any changes to DNS resolution. // Defaults to 10s. google.protobuf.Duration failover_upstream_dns_polling_interval = 13; + + // By default gloo adds a series of filters to envoy to ensure that new routes are picked up + // Even if the listener previously did not have a filter on the chain previously. + // When set to true unused filters are not added to the chain by default. + // Defaults to false + google.protobuf.BoolValue remove_unused_filters = 14; + + // Where the `gloo` proxy debug server should bind. Defaults to `gloo:9966` + string proxy_debug_bind_addr = 15; + + // When enabled, log the request/response body and headers before and after + // any transformations are applied. May be useful in the case where many + // transformations are applied and it is difficult to determine which are + // causing issues. Defaults to false. + google.protobuf.BoolValue log_transformation_request_response_info = 16; + + // Set escapeCharacters for all TransformationTemplates on all vhosts and routes. + // This setting can be overridden in individual TransformationTemplates + google.protobuf.BoolValue transformation_escape_characters = 17; + + message IstioOptions { + // Set to false to disable adding X-Forwarded-Host header in Istio integration + // Defaults to true + // Warning: This value is deprecated and will be removed in a future release. Also, you cannot use this value with a Kubernetes Gateway API proxy. + google.protobuf.BoolValue append_x_forwarded_host = 1 [deprecated = true]; + + // Set to true to enable automatic mTLS for all upstreams. Istio integration must be enabled for this to take effect. + // Defaults to false + google.protobuf.BoolValue enable_auto_mtls = 2; + + // Istio integration is enabled via global.istioIntegration.enabled on the helm chart. + // If enabled, an istio-proxy container and sds container are assumed to exist alongside the + // gateway proxy. These containers are created by enabling the istioIntegration.enabled option in the helm chart. + // Defaults to false + google.protobuf.BoolValue enable_integration = 3; + } + + IstioOptions istio_options = 18; + + // When enabled, request/response body transformation will be bypassed automatically for websocket request. + // Buffering of the body will also be disabled in the mode but header transformation will still be applied. + google.protobuf.BoolValue enable_auto_websocket_transformation_passthrough = 19; +} + + +// Default configuration to use for VirtualServices, when not provided by a specific virtual service +// When these properties are defined on a specific VirtualService, this configuration will be ignored +message VirtualServiceOptions { + // Default one_way_tls value to use for all virtual services where one_way_tls config has not been specified. + // If the SSL config has the ca.crt (root CA) provided, Gloo uses it to perform mTLS by default. + // Set oneWayTls to true to disable mTLS in favor of server-only TLS (one-way TLS), even if Gloo has the root CA. + google.protobuf.BoolValue one_way_tls = 1; } // Settings specific to the Gateway controller @@ -513,11 +856,13 @@ message GatewayOptions { // Path to TLS Private Key for Kubernetes Validating webhook. Defaults to `/etc/gateway/validation-certs/tls.key`. string validation_webhook_tls_key = 4; + // Deprecated: the Gateway and the Gloo pods are now merged together, there are no longer + // requests made to a Gloo Validation server. // When Gateway cannot communicate with Gloo (e.g. Gloo is offline) // resources will be rejected by default. // Enable the `ignoreGlooValidationFailure` to prevent the Validation server from rejecting // resources due to network errors. - bool ignore_gloo_validation_failure = 5; + bool ignore_gloo_validation_failure = 5 [deprecated = true]; // Always accept resources even if validation produced an error. // Validation will still log the error and increment the validation.gateway.solo.io/resources_rejected stat. @@ -526,29 +871,57 @@ message GatewayOptions { // Accept resources if validation produced a warning (defaults to true). // By setting to false, this means that validation will start rejecting resources that would result - // in warnings, rather than just those that would result in errors. + // in warnings, rather than just those that would result in errors. Note that this setting has no impact on + // Kubernetes Gateway API validation, as warnings will always be allowed in that context. google.protobuf.BoolValue allow_warnings = 7; + // Deprecated: See `server_enabled` and consider configuring it to `false` instead. // Write a warning to route resources if validation produced a route ordering warning (defaults to false). // By setting to true, this means that Gloo will start assigning warnings to resources that would result // in route short-circuiting within a virtual host, for example: // - prefix routes that make later routes unreachable // - regex routes that make later routes unreachable // - duplicate matchers - google.protobuf.BoolValue warn_route_short_circuiting = 8; + google.protobuf.BoolValue warn_route_short_circuiting = 8 [deprecated = true]; // By default gloo will attempt to validate transformations by calling out to a local envoy binary in `validate` mode. // Calling this local envoy binary can become slow when done many times during a single validation. - // Setting this to true will stop gloo from calling out to envoy to validate the transformations, which may speed up the - // validation time considerably, but may also cause the transformation config to fail after being sent to envoy. + // Setting this to true will stop gloo from calling out to envoy to validate the transformations, which may speed up the + // validation time considerably, but may also cause the transformation config to fail after being sent to envoy. // When disabling this, ensure that your transformations are valid prior to applying them. google.protobuf.BoolValue disable_transformation_validation = 9; - // By default, gRPC validation messages between gateway and gloo pods have a max message size of 4 MB. + reserved 10; + + // By default, gRPC validation messages between gateway and gloo pods have a max message size of 100 MB. // Setting this value sets the gRPC max message size in bytes for the gloo validation server. This should // only be changed if necessary. - // If not included, the gRPC max message size will be the default of 4 MB. - google.protobuf.Int64Value validation_server_grpc_max_size = 10; + // If not included, the gRPC max message size will be the default of 100 MB. + google.protobuf.Int32Value validation_server_grpc_max_size_bytes = 11; + + // By providing the validation field (parent of this object) the user is implicitly opting into validation. + // This field allows the user to opt out of the validation server, while still configuring pre-existing fields + // such as `warn_route_short_circuiting` and `disable_transformation_validation`. + // + // If not included, the validation server will be enabled. + google.protobuf.BoolValue server_enabled = 12; + + // Allows configuring validation to report a missing TLS secret referenced by a SslConfig or UpstreamSslConfig + // as a warning instead of an error. This will allow for eventually consistent workloads, but will also permit + // the accidental deletion of secrets being referenced, which would cause disruption in traffic. + google.protobuf.BoolValue warn_missing_tls_secret = 13; + + // Configures the Gloo translation loop to send the final product of translation through Envoy + // validation mode. This has an negative impact on the total translation throughput, but it + // helps ensure the configuration will not be nacked when served to Envoy. + // + // This feature is disabled by default and is not recommended for production deployments unless + // the performance implications are well understood and acceptable. + // + // Large configurations can take more than 10 seconds to validate, causing the validating webhook to timeout. + // When enabling this feature, consider increasing the timeout for the validating webhook + // (`.Values.gateway.validation.webhook.timeoutSeconds`). + google.protobuf.BoolValue full_envoy_validation = 14; } // If provided, the Gateway will perform [Dynamic Admission Control](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/) @@ -566,6 +939,50 @@ message GatewayOptions { // If set, compresses proxy space. This can help make the Proxy CRD smaller to fit in etcd. // This is an advanced option. Use with care. bool compressed_proxy_spec = 6; + + // Default configuration to use for VirtualServices, when not provided by a specific virtual service + // When these properties are defined on a specific VirtualService, this configuration will be ignored + VirtualServiceOptions virtual_service_options = 7; + + // Set this to persist the Proxy CRD to etcd By default, proxies are kept in memory to improve performance. + // Proxies can be persisted to etcd to allow external tools and other pods to read the contents the Proxy CRD. + google.protobuf.BoolValue persist_proxy_spec = 8; + + // This is set based on the install mode. It indicates to gloo whether or not it should run the gateway + // translations and validation. + google.protobuf.BoolValue enable_gateway_controller = 9; + + // If set, group virtual hosts by matching ssl config, and isolate them on separate filter chains + // The default behavior is to aggregate all virtual hosts, and expose them on identical filter chains, + // each with a FilterChainMatch that corresponds to the ssl config. + // Individual Gateways can override this behavior by configuring the "gateway.solo.io/isolate_vhost" annotation + // to be a truthy ("true", "false") value + google.protobuf.BoolValue isolate_virtual_hosts_by_ssl_config = 10; + + // If set, gateways will be translated into Envoy listeners even if no VirtualServices exist or match a gateway. + // When there are no VirtualServices that implies there are no routes to serve, so all requests will return a 404. + // Defaults to false. + // The default behavior when no VirtualServices are defined or no Gateways match a VirtualService is that + // the gateway is not converted into an Envoy listener. + google.protobuf.BoolValue translate_empty_gateways = 11; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message ConsoleOptions { + reserved 1,2; + reserved "read_only","api_explorer_enabled"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message GraphqlOptions { + reserved 1; + reserved "schema_change_validation_options"; + + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + message SchemaChangeValidationOptions { + reserved 1,2; + reserved "reject_breaking_changes","processing_rules"; + } } @@ -594,3 +1011,9 @@ message SettingsStatus { // Opaque details about status results google.protobuf.Struct details = 5; } + + + +message SettingsNamespacedStatuses { + map statuses = 1; +} diff --git a/api/gloo/gloo/v1/ssl.proto b/api/gloo/gloo/v1/ssl/ssl.proto similarity index 61% rename from api/gloo/gloo/v1/ssl.proto rename to api/gloo/gloo/v1/ssl/ssl.proto index a44a02884..f5fe08dc8 100644 --- a/api/gloo/gloo/v1/ssl.proto +++ b/api/gloo/gloo/v1/ssl/ssl.proto @@ -1,10 +1,14 @@ syntax = "proto3"; package gloo.solo.io; -option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1"; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl"; + +import "google/protobuf/duration.proto"; +import "google/protobuf/wrappers.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; import "github.com/solo-io/solo-kit/api/v1/ref.proto"; @@ -30,12 +34,39 @@ message SslConfig { // Set Application Level Protocol Negotiation // If empty, defaults to ["h2", "http/1.1"]. + // As an advanced option you may use ["allow_empty"] to avoid defaults and set alpn to have no alpn set (ie pass empty slice). repeated string alpn_protocols = 7; // If the SSL config has the ca.crt (root CA) provided, Gloo uses it to perform mTLS by default. // Set oneWayTls to true to disable mTLS in favor of server-only TLS (one-way TLS), even if Gloo has the root CA. - // Defaults to false. - bool one_way_tls = 8; + // If unset, defaults to false. + google.protobuf.BoolValue one_way_tls = 8; + + // If set to true, the TLS session resumption will be deactivated, note that it deactivates only the tickets based tls session resumption (not the cache). + google.protobuf.BoolValue disable_tls_session_resumption = 9; + + // If present and nonzero, the amount of time to allow incoming connections to complete any + // transport socket negotiations. If this expires before the transport reports connection + // establishment, the connection is summarily closed. + google.protobuf.Duration transport_socket_connect_timeout = 10; + + enum OcspStaplePolicy { + // OCSP responses are optional. If none is provided, or the provided response is expired, the associated certificate will be used without the OCSP response. + LENIENT_STAPLING = 0; + // OCSP responses are optional. If none is provided, the associated certificate will be used without the OCSP response. + // If a response is present, but expired, the certificate will not be used for connections. + // If no suitable certificate is found, the connection is rejected. + STRICT_STAPLING = 1; + // OCSP responses are required. If no `ocsp_staple` is set on a certificate, configuration will fail. + // If a response is expired, the associated certificate will not be used. + // If no suitable certificate is found, the connection is rejected. + MUST_STAPLE = 2; + } + + // The OCSP staple policy to use for this listener. + // Defaults to `LENIENT_STAPLING`. + // https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/transport_sockets/tls/v3/tls.proto#enum-extensions-transport-sockets-tls-v3-downstreamtlscontext-ocspstaplepolicy + OcspStaplePolicy ocsp_staple_policy = 11; } // SSLFiles reference paths to certificates which can be read by the proxy off of its local filesystem @@ -44,6 +75,9 @@ message SSLFiles { string tls_key = 2; // for client cert validation. optional string root_ca = 3; + // stapled ocsp response. optional + // should be der-encoded + string ocsp_staple = 4; } // SslConfig contains the options necessary to configure an upstream to use TLS origination @@ -70,6 +104,16 @@ message UpstreamSslConfig { // Set Application Level Protocol Negotiation. // If empty, it is not set. repeated string alpn_protocols = 8; + + // Allow Tls renegotiation, the default value is false. + // TLS renegotiation is considered insecure and shouldn’t be used unless absolutely necessary. + google.protobuf.BoolValue allow_renegotiation = 10; + + // If the SSL config has the ca.crt (root CA) provided, Gloo uses it to perform mTLS by default. + // Set oneWayTls to true to disable mTLS in favor of server-only TLS (one-way TLS), even if Gloo has the root CA. + // This flag does nothing if SDS is configured. + // If unset, defaults to false. + google.protobuf.BoolValue one_way_tls = 11; } message SDSConfig { @@ -123,4 +167,4 @@ message SslParameters { ProtocolVersion maximum_protocol_version = 2; repeated string cipher_suites = 3; repeated string ecdh_curves = 4; -} \ No newline at end of file +} diff --git a/api/gloo/gloo/v1/subset.proto b/api/gloo/gloo/v1/subset.proto index bb3bf23c7..9a7206017 100644 --- a/api/gloo/gloo/v1/subset.proto +++ b/api/gloo/gloo/v1/subset.proto @@ -5,6 +5,7 @@ option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; message Subset { map values = 1; diff --git a/api/gloo/gloo/v1/tcp_listener_options.proto b/api/gloo/gloo/v1/tcp_listener_options.proto new file mode 100644 index 000000000..7286193ed --- /dev/null +++ b/api/gloo/gloo/v1/tcp_listener_options.proto @@ -0,0 +1,24 @@ +syntax = "proto3"; +package gloo.solo.io; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1"; + +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/tcp/tcp.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/connection_limit/connection_limit.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/local_ratelimit/local_ratelimit.proto"; + +// Optional, feature-specific configuration that lives on tcp listeners +message TcpListenerOptions { + tcp.options.gloo.solo.io.TcpProxySettings tcp_proxy_settings = 3; + + // ConnectionLimit can be used to limit the number of active connections per gateway. Useful for resource protection as well as DoS prevention. + connection_limit.options.gloo.solo.io.ConnectionLimit connection_limit = 4; + + // LocalRatelimit can be used to rate limit the connections per gateway at the L4 layer. + // It uses envoy's own local rate limit filter to do so, without the need for an external rate limit server to be set up. + local_ratelimit.options.gloo.solo.io.TokenBucket local_ratelimit = 5; +} \ No newline at end of file diff --git a/api/gloo/gloo/v1/upstream.proto b/api/gloo/gloo/v1/upstream.proto index 399cbfe47..1d9470cbf 100644 --- a/api/gloo/gloo/v1/upstream.proto +++ b/api/gloo/gloo/v1/upstream.proto @@ -7,9 +7,10 @@ import "google/protobuf/struct.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; +option (extproto.clone_all) = true; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl.proto"; -import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/circuit_breaker.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl/ssl.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/circuit_breaker/circuit_breaker.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/load_balancer.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/connection.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/api/v2/core/health_check.proto"; @@ -23,42 +24,44 @@ import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/azure/azure.proto" import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/consul/consul.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/aws/ec2/aws_ec2.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/failover.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/gcp/gcp.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/ai/ai.proto"; +import "google/protobuf/duration.proto"; import "google/protobuf/wrappers.proto"; - +import "validate/validate.proto"; /* * Upstreams represent destination for routing HTTP requests. Upstreams can be compared to - * [clusters](https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/cds.proto) in Envoy terminology. + * [clusters](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto) in Envoy terminology. * Each upstream in Gloo has a type. Supported types include `static`, `kubernetes`, `aws`, `consul`, and more. * Each upstream type is handled by a corresponding Gloo plugin. (plugins currently need to be compiled into Gloo) */ message UpstreamSpec { - // Status indicates the validation status of the resource. Status is read-only by clients, and set by gloo during validation + + + reserved 1; // Upstreams and their configuration can be automatically by Gloo Discovery // if this upstream is created or modified by Discovery, metadata about the operation will be placed here. DiscoveryMetadata discovery_metadata = 3; - // SslConfig contains the options necessary to configure an upstream to use TLS origination + // SslConfig contains the options necessary to configure envoy to originate TLS to an upstream. UpstreamSslConfig ssl_config = 4; // Circuit breakers for this upstream. if not set, the defaults ones from the Gloo settings will be used. - // if those are not set, [envoy's defaults](https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/cluster/circuit_breaker.proto#envoy-api-msg-cluster-circuitbreakers) + // if those are not set, [envoy's defaults](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/circuit_breaker.proto#envoy-api-msg-cluster-circuitbreakers) // will be used. CircuitBreakerConfig circuit_breakers = 5; + + // Settings for the load balancer that sends requests to the Upstream. The load balancing method is set to round robin by default. LoadBalancerConfig load_balancer_config = 6; - ConnectionConfig connection_config = 7; + repeated .solo.io.envoy.api.v2.core.HealthCheck health_checks = 8; .solo.io.envoy.api.v2.cluster.OutlierDetection outlier_detection = 9; - // Use http2 when communicating with this upstream - // this field is evaluated `true` for upstreams - // with a grpc service spec. otherwise defaults to `false` - google.protobuf.BoolValue use_http2 = 10; - // Note to developers: new Upstream plugins must be added to this oneof field // to be usable by Gloo. (plugins currently need to be compiled into Gloo) oneof upstream_type { @@ -69,11 +72,34 @@ message UpstreamSpec { azure.options.gloo.solo.io.UpstreamSpec azure = 15; consul.options.gloo.solo.io.UpstreamSpec consul = 16; aws_ec2.options.gloo.solo.io.UpstreamSpec aws_ec2 = 17; + gcp.options.gloo.solo.io.UpstreamSpec gcp = 34; + ai.options.gloo.solo.io.UpstreamSpec ai = 35; } // Failover endpoints for this upstream. If omitted (the default) no failovers will be applied. gloo.solo.io.Failover failover = 18; + //HTTP/1 connection configurations + ConnectionConfig connection_config = 7; + + enum ClusterProtocolSelection { + // Cluster can only operate on one of the possible upstream protocols (HTTP1.1, HTTP2). + // If http2_protocol_options are + // present, HTTP2 will be used, otherwise HTTP1.1 will be used. + USE_CONFIGURED_PROTOCOL = 0; + + // Use HTTP1.1 or HTTP2, depending on which one is used on the downstream connection. + USE_DOWNSTREAM_PROTOCOL = 1; + } + + // Determines how Envoy selects the protocol used to speak to upstream hosts. + ClusterProtocolSelection protocol_selection = 25; + + // Use http2 when communicating with this upstream + // this field is evaluated `true` for upstreams + // with a grpc service spec. otherwise defaults to `false` + google.protobuf.BoolValue use_http2 = 10; + // (UInt32Value) Initial stream-level flow-control window size. // Valid values range from 65535 (2^16 - 1, HTTP/2 default) to 2147483647 (2^31 - 1, HTTP/2 maximum) // and defaults to 268435456 (256 * 1024 * 1024). @@ -84,13 +110,31 @@ message UpstreamSpec { // watermark callbacks will fire to stop the flow of data to the codec buffers. // Requires UseHttp2 to be true to be acknowledged. google.protobuf.UInt32Value initial_stream_window_size = 19; + // (UInt32Value) Similar to initial_stream_window_size, but for connection-level flow-control window. // Currently, this has the same minimum/maximum/default as initial_stream_window_size. // Requires UseHttp2 to be true to be acknowledged. google.protobuf.UInt32Value initial_connection_window_size = 20; - // Tells envoy that the upstream is an HTTP proxy (e.g., another proxy in a DMZ) that supports HTTP Connect. - // This configuration sets the hostname used as part of the HTTP Connect request. + // (UInt32Value) Maximum concurrent streams allowed for peer on one HTTP/2 connection. + // Valid values range from 1 to 2147483647 (2^31 - 1) and defaults to 2147483647. + // Requires UseHttp2 to be true to be acknowledged. + google.protobuf.UInt32Value max_concurrent_streams = 24; + + // Allows invalid HTTP messaging and headers. When this option is disabled (default), then + // the whole HTTP/2 connection is terminated upon receiving invalid HEADERS frame. However, + // when this option is enabled, only the offending stream is terminated. + // + // This overrides any HCM :ref:`stream_error_on_invalid_http_messaging + // ` + // + // See [RFC7540, sec. 8.1](https://datatracker.ietf.org/doc/html/rfc7540#section-8.1) for details. + google.protobuf.BoolValue override_stream_error_on_invalid_http_message = 26; + + // Tells Envoy that the upstream is an HTTP proxy that supports [HTTP CONNECT method](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/CONNECT). + // The hostname is the destination of the tunnel established by the proxy. + // Some Envoy Command Operators (.e.g `%REQUESTED_SERVER_NAME%`) are supported allowing for dynamic destinations. + // // For example, setting to: host.com:443 and making a request routed to the upstream such as `curl :/v1` // would result in the following request: // @@ -102,8 +146,45 @@ message UpstreamSpec { // user-agent: curl/7.64.1 // accept: */* // - // Note: if setting this field to a hostname rather than IP:PORT, you may want to also set `host_rewrite` on the route + // Note: If setting this field to a hostname rather than IP:PORT, you may want to also set `host_rewrite` on the route google.protobuf.StringValue http_proxy_hostname = 21; + + // HttpConnectSslConfig contains the options necessary to configure envoy to originate TLS to an HTTP Connect proxy. + // If you also want to ensure the bytes proxied by the HTTP Connect proxy are encrypted, you should also + // specify `ssl_config`. + UpstreamSslConfig http_connect_ssl_config = 27; + + // HttpConnectHeaders specifies the headers sent with the initial HTTP Connect request. + repeated HeaderValue http_connect_headers = 28; + + // (bool) If set to true, Envoy will ignore the health value of a host when processing its removal from service discovery. + // This means that if active health checking is used, Envoy will not wait for the endpoint to go unhealthy before removing it. + google.protobuf.BoolValue ignore_health_on_host_removal = 22; + + // If set to true, Service Discovery update period will be triggered once the TTL is expired. + // If minimum TTL of all records is 0 then dns_refresh_rate will be used. + google.protobuf.BoolValue respect_dns_ttl= 29; + + // Service Discovery DNS Refresh Rate. + // Minimum value is 1 ms. Values below the minimum are considered invalid. + // Only valid for STRICT_DNS and LOGICAL_DNS cluster types. All other cluster types are considered invalid. + google.protobuf.Duration dns_refresh_rate = 30; + + + // Proxy Protocol Version to add when communicating with the upstream. + // If unset will not wrap the transport socket. + // These are of the format "V1" or "V2" + google.protobuf.StringValue proxy_protocol_version= 31; + + // Preconnect policy for the cluster + // Aligns as closely as possible with https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#envoy-v3-api-msg-config-cluster-v3-cluster-preconnectpolicy + // This is not recommended for use unless you are sure you need it. + // In most cases preconnect hurts more than it helps. + PreconnectPolicy preconnect_policy= 32; + + // If set to true, the proxy will not allow automatic mTLS detection for Istio upstreams. + // Defaults to false. + google.protobuf.BoolValue disable_istio_auto_mtls = 33; } // created by discovery services @@ -112,6 +193,67 @@ message DiscoveryMetadata { map labels = 1; } +// Header name/value pair. +message HeaderValue { + // Header name. + string key = 1; + // Header value. + string value = 2; +} + +message PreconnectPolicy { + // Indicates how many streams (rounded up) can be anticipated per-upstream for each + // incoming stream. This is useful for high-QPS or latency-sensitive services. Preconnecting + // will only be done if the upstream is healthy and the cluster has traffic. + // + // For example if this is 2, for an incoming HTTP/1.1 stream, 2 connections will be + // established, one for the new incoming stream, and one for a presumed follow-up stream. For + // HTTP/2, only one connection would be established by default as one connection can + // serve both the original and presumed follow-up stream. + // + // In steady state for non-multiplexed connections a value of 1.5 would mean if there were 100 + // active streams, there would be 100 connections in use, and 50 connections preconnected. + // This might be a useful value for something like short lived single-use connections, + // for example proxying HTTP/1.1 if keep-alive were false and each stream resulted in connection + // termination. It would likely be overkill for long lived connections, such as TCP proxying SMTP + // or regular HTTP/1.1 with keep-alive. For long lived traffic, a value of 1.05 would be more + // reasonable, where for every 100 connections, 5 preconnected connections would be in the queue + // in case of unexpected disconnects where the connection could not be reused. + // + // If this value is not set, or set explicitly to one, Envoy will fetch as many connections + // as needed to serve streams in flight. This means in steady state if a connection is torn down, + // a subsequent streams will pay an upstream-rtt latency penalty waiting for a new connection. + // + // This is limited somewhat arbitrarily to 3 because preconnecting too aggressively can + // harm latency more than the preconnecting helps. + google.protobuf.DoubleValue per_upstream_preconnect_ratio = 1 + [(validate.rules).double = {lte: 3.0 gte: 1.0}]; + + // Indicates how many streams (rounded up) can be anticipated across a cluster for each + // stream, useful for low QPS services. This is currently supported for a subset of + // deterministic non-hash-based load-balancing algorithms (weighted round robin, random). + // Unlike `per_upstream_preconnect_ratio` this preconnects across the upstream instances in a + // cluster, doing best effort predictions of what upstream would be picked next and + // pre-establishing a connection. + // + // Preconnecting will be limited to one preconnect per configured upstream in the cluster and will + // only be done if there are healthy upstreams and the cluster has traffic. + // + // For example if preconnecting is set to 2 for a round robin HTTP/2 cluster, on the first + // incoming stream, 2 connections will be preconnected - one to the first upstream for this + // cluster, one to the second on the assumption there will be a follow-up stream. + // + // If this value is not set, or set explicitly to one, Envoy will fetch as many connections + // as needed to serve streams in flight, so during warm up and in steady state if a connection + // is closed (and per_upstream_preconnect_ratio is not set), there will be a latency hit for + // connection establishment. + // + // If both this and preconnect_ratio are set, Envoy will make sure both predicted needs are met, + // basically preconnecting max(predictive-preconnect, per-upstream-preconnect), for each + // upstream. + google.protobuf.DoubleValue predictive_preconnect_ratio = 2 + [(validate.rules).double = {lte: 3.0 gte: 1.0}]; + } message UpstreamStatus { enum State { @@ -138,3 +280,9 @@ message UpstreamStatus { // Opaque details about status results google.protobuf.Struct details = 5; } + + + +message UpstreamNamespacedStatuses { + map statuses = 1; +} diff --git a/api/gloo/gloo/v1/virtual_host_options.proto b/api/gloo/gloo/v1/virtual_host_options.proto new file mode 100644 index 000000000..49bc8e6be --- /dev/null +++ b/api/gloo/gloo/v1/virtual_host_options.proto @@ -0,0 +1,161 @@ +syntax = "proto3"; +package gloo.solo.io; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1"; + +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/extensions.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/retries/retries.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/stats/stats.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/headers/headers.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/cors/cors.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/transformation/transformation.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/ratelimit/ratelimit.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/waf/waf.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/jwt/jwt.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/rbac/rbac.proto"; +import "github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/dlp/dlp.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/buffer/v3/buffer.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/csrf/v3/csrf.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extproc/extproc.proto"; + +import "google/protobuf/wrappers.proto"; + +// Optional, feature-specific configuration that lives on virtual hosts. +// Each VirtualHostOptions object contains configuration for a specific feature. +// Note to developers: new Virtual Host plugins must be added to this struct +// to be usable by Gloo. (plugins currently need to be compiled into Gloo) +message VirtualHostOptions { + // Extensions will be passed along from Listeners, Gateways, VirtualServices, Routes, and Route tables to the + // underlying Proxy, making them useful for controllers, validation tools, etc. which interact with kubernetes yaml. + // + // Some sample use cases: + // * controllers, deployment pipelines, helm charts, etc. which wish to use extensions as a kind of opaque metadata. + // * In the future, Gloo may support gRPC-based plugins which communicate with the Gloo translator out-of-process. + // Opaque Extensions enables development of out-of-process plugins without requiring recompiling & redeploying Gloo's API. + Extensions extensions = 1; + retries.options.gloo.solo.io.RetryPolicy retries = 5; + stats.options.gloo.solo.io.Stats stats = 10; + // Append/Remove headers on Requests or Responses on all routes contained in this Virtual Host + headers.options.gloo.solo.io.HeaderManipulation header_manipulation = 2; + // Defines a CORS policy for the virtual host. + // If a CORS policy is also defined on the route matched by the request, the route policy + // overrides the virtual host policy for any configured field unless CorsPolicyMergeSettings are specified that define an + // alternate behavior. + cors.options.gloo.solo.io.CorsPolicy cors = 3; + // Transformations to apply. Note: this field is superseded by `staged_transformations`. + // If `staged_transformations.regular` is set, this field will be ignored. + transformation.options.gloo.solo.io.Transformations transformations = 4 [deprecated = true]; + // Enterprise-only: Config for GlooE rate-limiting using simplified (gloo-specific) API + ratelimit.options.gloo.solo.io.IngressRateLimit ratelimit_basic = 6; + + oneof rate_limit_early_config_type { + // Enterprise-only: Partial config for GlooE rate-limiting based on Envoy's rate-limit service; + // supports Envoy's rate-limit service API. (reference here: https://github.com/lyft/ratelimit#configuration) + // Configure rate-limit *actions* here, which define how request characteristics get translated into + // descriptors used by the rate-limit service for rate-limiting. Configure rate-limit *descriptors* and + // their associated limits on the Gloo settings. + // Only one of `ratelimit_early` or `rate_limit_early_configs` can be set. + ratelimit.options.gloo.solo.io.RateLimitVhostExtension ratelimit_early = 72; + + // References to RateLimitConfig resources. This is used to configure the GlooE rate limit server. + // Only one of `ratelimit_early` or `rate_limit_early_configs` can be set. + ratelimit.options.gloo.solo.io.RateLimitConfigRefs rate_limit_early_configs = 73; + } + + oneof rate_limit_config_type { + // Enterprise-only: Partial config for GlooE rate-limiting based on Envoy's rate-limit service; + // supports Envoy's rate-limit service API. (reference here: https://github.com/lyft/ratelimit#configuration) + // Configure rate-limit *actions* here, which define how request characteristics get translated into + // descriptors used by the rate-limit service for rate-limiting. Configure rate-limit *descriptors* and + // their associated limits on the Gloo settings. + // Only one of `ratelimit` or `rate_limit_configs` can be set. + ratelimit.options.gloo.solo.io.RateLimitVhostExtension ratelimit = 70; + + // References to RateLimitConfig resources. This is used to configure the GlooE rate limit server. + // Only one of `ratelimit` or `rate_limit_configs` can be set. + ratelimit.options.gloo.solo.io.RateLimitConfigRefs rate_limit_configs = 71; + } + + oneof rate_limit_regular_config_type { + // Enterprise-only: Partial config for GlooE rate-limiting based on Envoy's rate-limit service; + // supports Envoy's rate-limit service API. (reference here: https://github.com/lyft/ratelimit#configuration) + // Configure rate-limit *actions* here, which define how request characteristics get translated into + // descriptors used by the rate-limit service for rate-limiting. Configure rate-limit *descriptors* and + // their associated limits on the Gloo settings. + // Only one of `ratelimit_regular` or `rate_limit_regular_configs` can be set. + ratelimit.options.gloo.solo.io.RateLimitVhostExtension ratelimit_regular = 74; + + // References to RateLimitConfig resources. This is used to configure the GlooE rate limit server. + // Only one of `ratelimit_regular` or `rate_limit_regular_configs` can be set. + ratelimit.options.gloo.solo.io.RateLimitConfigRefs rate_limit_regular_configs = 75; + } + + // Enterprise-only: Config for Web Application Firewall (WAF), supporting + // the popular ModSecurity 3.0 ruleset + waf.options.gloo.solo.io.Settings waf = 8; + + oneof jwt_config { + // Enterprise-only: Config for reading and verifying JWTs. Copy verifiable information from JWTs into other + // headers to make routing decisions or combine with RBAC for fine-grained access control. + // This has been deprecated in favor of staged jwt. The same configuration can be achieved through staged jwt + // using AfterExtAuth. + jwt.options.gloo.solo.io.VhostExtension jwt = 9 [deprecated=true]; + + // Enterprise-only: Config for reading and verifying JWTs. Copy verifiable information from JWTs into other + // headers to make routing decisions or combine with RBAC for fine-grained access control. + // JWT configuration has stages "BeforeExtAuth" and "AfterExtAuth". BeforeExtAuth JWT + // validation runs before the external authentication service. This is useful when JWT + // is used in conjunction with other auth mechanisms specified in the [boolean expression Extauth API](https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto.sk/#authconfig). + // AfterExtAuth validation runs after external authentication service, which is useful for verifying + // JWTs obtained during extauth (e.g. oauth/oidc) + jwt.options.gloo.solo.io.JwtStagedVhostExtension jwt_staged = 19; + } + + // Enterprise-only: Config for RBAC (currently only supports RBAC based on JWT claims) + rbac.options.gloo.solo.io.ExtensionSettings rbac = 11; + // Enterprise-only: Authentication configuration + enterprise.gloo.solo.io.ExtAuthExtension extauth = 12; + // Enterprise-only: Config for data loss prevention + dlp.options.gloo.solo.io.Config dlp = 13; + // BufferPerRoute can be used to set the maximum request size + // that the filter will buffer before the connection + // manager will stop buffering and return a 413 response. + // Note: If you have not set a global config (at the gateway level), this + // override will not do anything by itself. + .solo.io.envoy.extensions.filters.http.buffer.v3.BufferPerRoute buffer_per_route = 14; + // Csrf can be used to set percent of requests for which the CSRF filter is enabled, enable shadow-only mode + // where policies will be evaluated and tracked, but not enforced and add additional source origins + // that will be allowed in addition to the destination origin. + // For more, see https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/filter/http/csrf/v2/csrf.proto + .solo.io.envoy.extensions.filters.http.csrf.v3.CsrfPolicy csrf = 18; + // IncludeRequestAttemptCount decides whether the x-envoy-attempt-count header + // should be included in the upstream request. + // Setting this option will cause it to override any existing header value, + // so in the case of two Envoys on the request path with this option enabled, + // the upstream will see the attempt count as perceived by the second Envoy. + // Defaults to false. + google.protobuf.BoolValue include_request_attempt_count = 15; + // IncludeAttemptCountInResponse decides whether the x-envoy-attempt-count header + // should be included in the downstream response. + // Setting this option will cause the router to override any existing header value, + // so in the case of two Envoys on the request path with this option enabled, + // the downstream will see the attempt count as perceived by the Envoy closest upstream from itself. + // Defaults to false. + google.protobuf.BoolValue include_attempt_count_in_response = 16; + + // Early transformations stage. These transformations run before most other options are processed. + // If the `regular` field is set in here, the `transformations` field is ignored. + transformation.options.gloo.solo.io.TransformationStages staged_transformations = 17; + + // Enterprise-only: External Processing filter settings for the virtual host. This can be used to + // override certain HttpListenerOptions settings, and can be overridden by RouteOptions settings. + extproc.options.gloo.solo.io.RouteSettings ext_proc = 30; + + // Settings for determining merge strategy for CORS settings when present at both Route and VirtualHost levels. + cors.options.gloo.solo.io.CorsPolicyMergeSettings cors_policy_merge_settings = 20; +} \ No newline at end of file diff --git a/api/gloo/gloo/v1/weighted_destination_options.proto b/api/gloo/gloo/v1/weighted_destination_options.proto new file mode 100644 index 000000000..8f240dec4 --- /dev/null +++ b/api/gloo/gloo/v1/weighted_destination_options.proto @@ -0,0 +1,52 @@ +syntax = "proto3"; +package gloo.solo.io; +option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1"; + +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/headers/headers.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/transformation/transformation.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/extensions.proto"; +import "github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/buffer/v3/buffer.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/csrf/v3/csrf.proto"; + + +// Optional, feature-specific configuration that is applied when a specific weighted destination +// is selected for routing. +message WeightedDestinationOptions { + // Append/Remove headers on Requests or Responses to/from this Weighted Destination + headers.options.gloo.solo.io.HeaderManipulation header_manipulation = 1; + // Transformations to apply. Note: this field is superseded by `staged_transformations`. + // If `staged_transformations.regular` is set, this field will be ignored. + transformation.options.gloo.solo.io.Transformations transformations = 2 [deprecated = true]; + // Extensions will be passed along from Listeners, Gateways, VirtualServices, Routes, and Route tables to the + // underlying Proxy, making them useful for controllers, validation tools, etc. which interact with kubernetes yaml. + // + // Some sample use cases: + // * controllers, deployment pipelines, helm charts, etc. which wish to use extensions as a kind of opaque metadata. + // * In the future, Gloo may support gRPC-based plugins which communicate with the Gloo translator out-of-process. + // Opaque Extensions enables development of out-of-process plugins without requiring recompiling & redeploying Gloo's API. + Extensions extensions = 3; + // Enterprise-only: Authentication configuration + enterprise.gloo.solo.io.ExtAuthExtension extauth = 4; + // BufferPerRoute can be used to set the maximum request size + // that the filter will buffer before the connection + // manager will stop buffering and return a 413 response. + // Note: If you have not set a global config (at the gateway level), this + // override will not do anything by itself. + .solo.io.envoy.extensions.filters.http.buffer.v3.BufferPerRoute buffer_per_route = 5; + + // Csrf can be used to set percent of requests for which the CSRF filter is enabled, enable shadow-only mode + // where policies will be evaluated and tracked, but not enforced and add additional source origins + // that will be allowed in addition to the destination origin. + // For more, see https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/filter/http/csrf/v2/csrf.proto + .solo.io.envoy.extensions.filters.http.csrf.v3.CsrfPolicy csrf = 7; + + // Early transformations stage. These transformations run before most other options are processed. + // If the `regular` field is set in here, the `transformations` field is ignored. + transformation.options.gloo.solo.io.TransformationStages staged_transformations = 6; +} diff --git a/api/gloo/graphql.gloo/v1beta1/graphql.proto b/api/gloo/graphql.gloo/v1beta1/graphql.proto new file mode 100644 index 000000000..736615c02 --- /dev/null +++ b/api/gloo/graphql.gloo/v1beta1/graphql.proto @@ -0,0 +1,175 @@ +syntax = "proto3"; + +package graphql.gloo.solo.io; + +option go_package = "github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1"; + +option java_package = "io.envoyproxy.envoy.config.filter.http.graphql.v2"; +option java_outer_classname = "GraphQLFilterProto"; +option java_multiple_files = true; + +import "google/protobuf/struct.proto"; +import "extproto/ext.proto"; +option (extproto.equal_all) = true; +option (extproto.hash_all) = true; +option (extproto.clone_all) = true; + +import "github.com/solo-io/solo-kit/api/v1/solo-kit.proto"; + + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message RequestTemplate { + reserved 1, 2, 3; + reserved "headers", "query_params", "body"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message ResponseTemplate { + reserved 1, 2; + reserved "result_root", "setters"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message GrpcRequestTemplate { + reserved 1, 2, 3, 4; + reserved "outgoing_message_json", "service_name", "method_name", "request_metadata"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message RESTResolver { + reserved 1, 2, 3, 4, 5; + reserved "upstream_ref", "request", "response", "span_name", "timeout"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message GrpcDescriptorRegistry { + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + message ProtoRefs { + reserved 1; + reserved "config_map_refs"; + } + reserved 1, 2, 3; + reserved "proto_descriptor", "proto_descriptor_bin", "proto_refs_list"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message GrpcResolver { + reserved 1, 2, 3, 4, 5; + reserved "upstream_ref", "request_transform", "span_name", "timeout"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message StitchedSchema { + + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + message SubschemaConfig { + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + message TypeMergeConfig { + reserved 1, 2, 3; + reserved "selection_set", "query_name", "args"; + } + reserved 1, 2, 3; + reserved "name", "namespace", "type_merge"; + } + + reserved 1; + reserved "subschemas"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message MockResolver { + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + message AsyncResponse { + reserved 1, 2; + reserved "response", "delay"; + } + reserved 1, 2, 3; + reserved "sync_response", "async_response", "error_response"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message Resolution { + reserved 1, 2, 3, 4; + reserved "rest_resolver", "grpc_resolver", "stat_prefix", "mock_resolver"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message GraphQLApiSpec { + + + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + message GraphQLApiOptions { + reserved 1; + reserved "log_sensitive_info"; + } + + reserved 1, 2, 3, 4, 5, 6, 7, 8; + reserved "namespaced_statuses", "metadata", "stat_prefix", "persisted_query_cache_config", "allowed_query_hashes", "executable_schema", "stitched_schema", "options"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message PersistedQueryCacheConfig { + reserved 1; + reserved "cache_size"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message ExecutableSchema { + reserved 1, 2, 3; + reserved "schema_definition", "executor", "grpc_descriptor_registry"; +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +message Executor { + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + message Local { + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + message LocalExecutorOptions { + reserved 1; + reserved "max_depth"; + } + + reserved 1, 2, 3; + reserved "resolutions", "enable_introspection", "options"; + } + // DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields + message Remote { + reserved 1, 2, 3, 4; + reserved "upstream_ref", "headers", "query_params", "span_name"; + } + reserved 1, 2; + reserved "local", "remote"; +} + + +message GraphQLApiStatus { + enum State { + // Pending status indicates the resource has not yet been validated + Pending = 0; + // Accepted indicates the resource has been validated + Accepted = 1; + // Rejected indicates an invalid configuration by the user + // Rejected resources may be propagated to the xDS server depending on their severity + Rejected = 2; + // Warning indicates a partially invalid configuration by the user + // Resources with Warnings may be partially accepted by a controller, depending on the implementation + Warning = 3; + } + // State is the enum indicating the state of the resource + State state = 1; + // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty + string reason = 2; + // Reference to the reporter who wrote this status + string reported_by = 3; + // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource + map subresource_statuses = 4; + + // Opaque details about status results + google.protobuf.Struct details = 5; +} + + + +message GraphQLApiNamespacedStatuses { + map statuses = 1; +} diff --git a/api/rate-limiter/v1alpha1/ratelimit.proto b/api/rate-limiter/v1alpha1/ratelimit.proto index de75b6824..394495479 100644 --- a/api/rate-limiter/v1alpha1/ratelimit.proto +++ b/api/rate-limiter/v1alpha1/ratelimit.proto @@ -59,6 +59,10 @@ message RateLimitConfigStatus { int64 observed_generation = 3; } +message RateLimitConfigNamespacedStatuses { + map statuses = 1; +} + // A descriptor is a list of key/value pairs that the rate limit server uses to select // the correct rate limit to use when limiting. Descriptors are case-sensitive. // @@ -256,6 +260,8 @@ message SimpleDescriptor { message RateLimitActions { repeated Action actions = 1; repeated Action set_actions = 2; + // An optional limit override to be appended to the descriptor produced by this rate limit configuration. If the override value is invalid or cannot be resolved from metadata, no override is provided. + Override limit = 3; } // A `RateLimit` specifies the actual rate limit that will be used when there is a match. @@ -447,81 +453,6 @@ message Action { repeated HeaderMatcher headers = 3; // [(validate.rules).repeated .min_items = 1]; } - // The following descriptor entry is appended when the metadata contains a key value: - // ("", "") - message MetaData { - enum Source { - // Query [dynamic metadata](https://www.envoyproxy.io/docs/envoy/latest/configuration/advanced/well_known_dynamic_metadata#well-known-dynamic-metadata). - DYNAMIC = 0; - - // Query [route entry metadata](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-field-config-route-v3-route-metadata). - ROUTE_ENTRY = 1; - } - - // MetadataKey provides a general interface using `key` and `path` to retrieve value from - // [`Metadata`](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/base.proto#envoy-v3-api-msg-config-core-v3-metadata). - // - // For example, for the following Metadata: - // - // ```yaml - // filter_metadata: - // envoy.xxx: - // prop: - // foo: bar - // xyz: - // hello: envoy - // ``` - // - // The following MetadataKey will retrieve a string value "bar" from the Metadata. - // - // ```yaml - // key: envoy.xxx - // path: - // - key: prop - // - key: foo - // ``` - // - message MetadataKey { - - // Specifies the segment in a path to retrieve value from Metadata. - // Currently it is only supported to specify the key, i.e. field name, as one segment of a path. - message PathSegment { - oneof segment { - // option (validate.required) = true; - - // Required. If specified, use the key to retrieve the value in a Struct. - string key = 1; // [(validate.rules).string = {min_len: 1}]; - } - } - - // Required. The key name of Metadata to retrieve the Struct from the metadata. - // Typically, it represents a builtin subsystem or custom extension. - string key = 1; // [(validate.rules).string = {min_len: 1}]; - - // Must have at least one element. The path to retrieve the Value from the Struct. It can be a prefix or a full path, - // e.g. ``[prop, xyz]`` for a struct or ``[prop, foo]`` for a string in the example, - // which depends on the particular scenario. - // - // Note: Due to that only the key type segment is supported, the path can not specify a list - // unless the list is the last segment. - repeated PathSegment path = 2; // [(validate.rules).repeated = {min_items: 1}]; - } - - // Required. The key to use in the descriptor entry. - string descriptor_key = 1; // [(validate.rules).string = {min_len: 1}]; - - // Required. Metadata struct that defines the key and path to retrieve the string value. A match will - // only happen if the value in the metadata is of type string. - MetadataKey metadata_key = 2; // [(validate.rules).message = {required: true}]; - - // An optional value to use if *metadata_key* is empty. If not set and - // no value is present under the metadata_key then no descriptor is generated. - string default_value = 3; - - // Source of metadata - Source source = 4; // [(validate.rules).enum = {defined_only: true}]; - } - oneof action_specifier { // Rate limit on source cluster. @@ -545,4 +476,100 @@ message Action { // Rate limit on metadata. MetaData metadata = 8; } +} + +// The following descriptor entry is appended when the metadata contains a key value: +// ("", "") +message MetaData { + enum Source { + // Query [dynamic metadata](https://www.envoyproxy.io/docs/envoy/latest/configuration/advanced/well_known_dynamic_metadata#well-known-dynamic-metadata). + DYNAMIC = 0; + + // Query [route entry metadata](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-field-config-route-v3-route-metadata). + ROUTE_ENTRY = 1; + } + + // MetadataKey provides a general interface using `key` and `path` to retrieve value from + // [`Metadata`](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/base.proto#envoy-v3-api-msg-config-core-v3-metadata). + // + // For example, for the following Metadata: + // + // ```yaml + // filter_metadata: + // envoy.xxx: + // prop: + // foo: bar + // xyz: + // hello: envoy + // ``` + // + // The following MetadataKey will retrieve a string value "bar" from the Metadata. + // + // ```yaml + // key: envoy.xxx + // path: + // - key: prop + // - key: foo + // ``` + // + message MetadataKey { + + // Specifies the segment in a path to retrieve value from Metadata. + // Currently it is only supported to specify the key, i.e. field name, as one segment of a path. + message PathSegment { + oneof segment { + // option (validate.required) = true; + + // Required. If specified, use the key to retrieve the value in a Struct. + string key = 1; // [(validate.rules).string = {min_len: 1}]; + } + } + + // Required. The key name of Metadata to retrieve the Struct from the metadata. + // Typically, it represents a builtin subsystem or custom extension. + string key = 1; // [(validate.rules).string = {min_len: 1}]; + + // Must have at least one element. The path to retrieve the Value from the Struct. It can be a prefix or a full path, + // e.g. ``[prop, xyz]`` for a struct or ``[prop, foo]`` for a string in the example, + // which depends on the particular scenario. + // + // Note: Due to that only the key type segment is supported, the path can not specify a list + // unless the list is the last segment. + repeated PathSegment path = 2; // [(validate.rules).repeated = {min_items: 1}]; + } + + // Required. The key to use in the descriptor entry. + string descriptor_key = 1; // [(validate.rules).string = {min_len: 1}]; + + // Required. Metadata struct that defines the key and path to retrieve the string value. A match will + // only happen if the value in the metadata is of type string. + MetadataKey metadata_key = 2; // [(validate.rules).message = {required: true}]; + + // An optional value to use if *metadata_key* is empty. If not set and + // no value is present under the metadata_key then no descriptor is generated. + string default_value = 3; + + // Source of metadata + Source source = 4; // [(validate.rules).enum = {defined_only: true}]; +} + +// Copied directly from envoy +// https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-msg-config-route-v3-ratelimit-override +message Override { + + // Fetches the override from the dynamic metadata. + message DynamicMetadata { + // Metadata struct that defines the key and path to retrieve the struct value. + // The value must be a struct containing an integer "requests_per_unit" property + // and a "unit" property with a value parseable to :ref:`RateLimitUnit + // enum ` + MetaData.MetadataKey metadata_key = 1; // [(validate.rules).message = {required: true}]; + } + + oneof override_specifier { + // option (validate.required) = true; + + // Limit override from dynamic metadata. + DynamicMetadata dynamic_metadata = 1; + } } \ No newline at end of file diff --git a/ci/tools.go b/ci/tools.go index 12e7d5bcb..82a27e641 100644 --- a/ci/tools.go +++ b/ci/tools.go @@ -1,3 +1,4 @@ +//go:build tools // +build tools /* diff --git a/codegen/command.go b/codegen/command.go index eb83f784f..050c6c69e 100644 --- a/codegen/command.go +++ b/codegen/command.go @@ -33,6 +33,5 @@ func Command() codegen.Command { }, RenderProtos: true, Groups: groups, - CustomGoArgs: []string{"Mgithub.com/solo-io/solo-kit/api/external/envoy/api/v2/discovery.proto=github.com/envoyproxy/go-control-plane/envoy/api/v2"}, } } diff --git a/codegen/gloo.go b/codegen/gloo.go index 76d8ab730..13533c1ae 100644 --- a/codegen/gloo.go +++ b/codegen/gloo.go @@ -1,11 +1,15 @@ package codegen import ( + "os" + "github.com/solo-io/skv2/codegen/model" + "github.com/solo-io/skv2/codegen/util" ) func init() { groups = append(groups, GlooGroups()...) + groups = append(groups, GlooGatewayExtensionGroups()...) } func GlooGroups() []model.Group { @@ -15,18 +19,69 @@ func GlooGroups() []model.Group { {kind: "Upstream"}, {kind: "UpstreamGroup"}, {kind: "Proxy"}, - }), + }, GlooCustomTemplates), makeGroup("gateway", "v1", []resourceToGenerate{ {kind: "Gateway"}, + {kind: "HttpListenerOption"}, + {kind: "ListenerOption"}, + {kind: "MatchableHttpGateway"}, + {kind: "MatchableTcpGateway"}, + {kind: "RouteOption"}, {kind: "RouteTable"}, {kind: "VirtualService"}, - }), + {kind: "VirtualHostOption"}, + }, GlooCustomTemplates), makeGroup("enterprise.gloo", "v1", []resourceToGenerate{ { kind: "AuthConfig", protoPackage: "enterprise.gloo.solo.io", goPackage: "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/extauth/v1", }, - }), + }, GlooCustomTemplates), + makeGroup("graphql.gloo", "v1beta1", []resourceToGenerate{ + { + kind: "GraphQLApi", + protoPackage: "graphql.gloo.solo.io", + goPackage: "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/graphql/v1beta1", + }, + }, GlooCustomTemplates), + } +} + +func GlooGatewayExtensionGroups() []model.Group { + return []model.Group{ + makeGatewayExtensionGroup("gateway.gloo", "v1alpha1", "GatewayParameters", "DirectResponse"), } } + +// Gloo resources, backed by solo-kit, support reporting statuses for multiple controllers (1 per namespace) +// Gloo-Fed resources, backed by skv2, do not yet. To reduce the complexity of the change, we +// chose to not introduce namespaced statuses support for gloo-fed resources as part of this PR. +// In order to handle these two cases simultaneously, we define custom status unmarshallers for Gloo-Fed resources. + +var GlooCustomTemplates []model.CustomTemplates + +var templatesDir = util.MustGetThisDir() + "/templates/" + +const ( + GlooJsonOutputFilename = "gloo_json.gen.go" + GlooJsonCustomTemplatePath = "gloo_json.gen.gotmpl" +) + +/* +JsonStatuses custom template +*/ +var JsonStatuses = func() model.CustomTemplates { + templateContentsBytes, err := os.ReadFile(templatesDir + GlooJsonCustomTemplatePath) + if err != nil { + panic(err) + } + templateContents := string(templateContentsBytes) + jsonStatusTemplates := model.CustomTemplates{ + Templates: map[string]string{GlooJsonOutputFilename: templateContents}, + } + // register json statuses + GlooCustomTemplates = append(GlooCustomTemplates, jsonStatusTemplates) + + return jsonStatusTemplates +}() diff --git a/codegen/gloo_fed.go b/codegen/gloo_fed.go index 514b53be7..f84caa70f 100644 --- a/codegen/gloo_fed.go +++ b/codegen/gloo_fed.go @@ -2,7 +2,6 @@ package codegen import ( "github.com/solo-io/skv2/codegen/model" - "k8s.io/apimachinery/pkg/runtime/schema" ) func init() { @@ -11,31 +10,54 @@ func init() { func GlooFedGroups() []model.Group { return []model.Group{ - { - GroupVersion: schema.GroupVersion{ - Group: "fed.solo.io", - Version: "v1", - }, - Module: "github.com/solo-io/solo-apis", - Resources: []model.Resource{ - { - Kind: "GlooInstance", - Spec: model.Field{ - Type: model.Type{ - Name: "GlooInstanceSpec", - GoPackage: "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types", - }, - }, - Status: &model.Field{ - Type: model.Type{ - Name: "GlooInstanceStatus", - GoPackage: "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types", - }}, - }, - }, - RenderTypes: true, - RenderClients: true, - ApiRoot: "pkg/api", - }, + makeFedGroup(), + makeFedGatewayGroup(), + makeFedGlooGroup(), + makeFedEnterpriseGlooGroup(), + makeFedRateLimitGroup(), + makeMulticlusterGroups(), } } + +func makeFedGroup() model.Group { + return makeGroup("fed", "v1", []resourceToGenerate{ + {kind: "GlooInstance"}, + {kind: "FailoverScheme"}, + }, []model.CustomTemplates{}) +} + +func makeFedGatewayGroup() model.Group { + return makeGroup("fed.gateway", "v1", []resourceToGenerate{ + {kind: "FederatedGateway"}, + {kind: "FederatedMatchableHttpGateway"}, + {kind: "FederatedMatchableTcpGateway"}, + {kind: "FederatedRouteTable"}, + {kind: "FederatedVirtualService"}, + }, []model.CustomTemplates{}) +} + +func makeFedGlooGroup() model.Group { + return makeGroup("fed.gloo", "v1", []resourceToGenerate{ + {kind: "FederatedSettings"}, + {kind: "FederatedUpstream"}, + {kind: "FederatedUpstreamGroup"}, + }, []model.CustomTemplates{}) +} + +func makeFedEnterpriseGlooGroup() model.Group { + return makeGroup("fed.enterprise.gloo", "v1", []resourceToGenerate{ + {kind: "FederatedAuthConfig"}, + }, []model.CustomTemplates{}) +} + +func makeFedRateLimitGroup() model.Group { + return makeGroup("fed.ratelimit", "v1alpha1", []resourceToGenerate{ + {kind: "FederatedRateLimitConfig"}, + }, []model.CustomTemplates{}) +} + +func makeMulticlusterGroups() model.Group { + return makeGroup("multicluster", "v1alpha1", []resourceToGenerate{ + {kind: "MultiClusterRole"}, + }, []model.CustomTemplates{}) +} diff --git a/codegen/rate_limiter.go b/codegen/rate_limiter.go index 218a889eb..ebc0b84c2 100644 --- a/codegen/rate_limiter.go +++ b/codegen/rate_limiter.go @@ -15,6 +15,6 @@ func RateLimiterGroups() []model.Group { kind: "RateLimitConfig", protoPackage: "ratelimit.api.solo.io", }, - }), + }, []model.CustomTemplates{}), } } diff --git a/codegen/skv2-enterprise.go b/codegen/skv2-enterprise.go deleted file mode 100644 index 0337e27ca..000000000 --- a/codegen/skv2-enterprise.go +++ /dev/null @@ -1,20 +0,0 @@ -package codegen - -import ( - "github.com/solo-io/skv2/codegen/model" -) - -func init() { - groups = append(groups, Skv2EnterpriseGroups()...) -} - -func Skv2EnterpriseGroups() []model.Group { - return []model.Group{ - makeGroup("multicluster", "v1alpha1", []resourceToGenerate{ - { - kind: "MultiClusterRole", - protoPackage: "multicluster.solo.io", - }, - }), - } -} diff --git a/codegen/templates/gloo_json.gen.gotmpl b/codegen/templates/gloo_json.gen.gotmpl new file mode 100644 index 000000000..9b667c516 --- /dev/null +++ b/codegen/templates/gloo_json.gen.gotmpl @@ -0,0 +1,79 @@ +// Generated json marshal and unmarshal functions + +package {{ .GroupVersion.Version }} + +import ( + bytes "bytes" + fmt "fmt" + math "math" + + skv2jsonpb "github.com/solo-io/skv2/pkg/kube_jsonpb" + jsonpb "github.com/golang/protobuf/jsonpb" + proto "github.com/golang/protobuf/proto" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +var ( + marshaller = &skv2jsonpb.Marshaler{EnumsAsInts: true} + unmarshaller = &jsonpb.Unmarshaler{ + AllowUnknownFields: true, + } +) + +{{- range $resource := $.Resources }} + +// MarshalJSON is a custom marshaler for {{ $resource.Spec.Type.Name }} +func (this *{{ $resource.Spec.Type.Name }}) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for {{ $resource.Spec.Type.Name }} +func (this *{{ $resource.Spec.Type.Name }}) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +{{- if $resource.Status }} +// MarshalJSON is a custom marshaler for {{ $resource.Status.Type.Name }} +func (this *{{ $resource.Status.Type.Name }}) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for {{ $resource.Status.Type.Name }} +func (this *{{ $resource.Status.Type.Name }}) UnmarshalJSON(b []byte) error { +{{- if or (eq $.GroupVersion.Group "gateway.solo.io") (eq $.GroupVersion.Group "gloo.solo.io") }} + // First try to unmarshal directly into {{ $resource.Status.Type.Name }} + temp := &{{ $resource.Status.Type.Name }}{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), temp); err == nil { + // Check if the unmarshaled result has meaningful content + // If it has non-empty fields, use it; otherwise fall back to NamespacedStatuses + if temp.GetReason() != "" || temp.GetReportedBy() != "" { + *this = *temp + return nil + } + } + + // Fall back to unmarshaling into {{ $resource.Kind }}NamespacedStatuses +{{- end }} + namespacedStatuses := {{ $resource.Kind }}NamespacedStatuses{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), &namespacedStatuses); err != nil { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) + } + + for _, status := range namespacedStatuses.GetStatuses() { + // take the first status + if status != nil { + status.DeepCopyInto(this) + return nil + } + } + return nil +} +{{- end }} + +{{- end }} \ No newline at end of file diff --git a/codegen/utils.go b/codegen/utils.go index 15c9eb34f..bd4d5890f 100644 --- a/codegen/utils.go +++ b/codegen/utils.go @@ -20,6 +20,7 @@ type resourceToGenerate struct { func makeGroup( groupPrefix, version string, resourcesToGenerate []resourceToGenerate, + customTemplates []model.CustomTemplates, ) model.Group { var resources []model.Resource for _, resource := range resourcesToGenerate { @@ -32,6 +33,8 @@ func makeGroup( GoPackage: resource.goPackage, }, }, + StrictUnmarshal: false, + Stored: true, } if !resource.noStatus { res.Status = &model.Field{Type: model.Type{ @@ -43,19 +46,58 @@ func makeGroup( resources = append(resources, res) } + customGroupTemplates := append(contrib.AllGroupCustomTemplates, customTemplates...) + + return model.Group{ + GroupVersion: schema.GroupVersion{ + Group: groupPrefix + "." + "solo.io", + Version: version, + }, + Module: module, + Resources: resources, + RenderManifests: true, + RenderTypes: true, + RenderClients: true, + RenderController: true, + MockgenDirective: true, + CustomTemplates: customGroupTemplates, + ApiRoot: apiRoot, + SkipSpecHash: true, + SkipConditionalCRDLoading: true, // we want the alpha crds always rendered + SkipTemplatedCRDManifest: true, // do not make a copy of crds in templates dir + } +} + +func makeGatewayExtensionGroup(groupPrefix, version string, kinds ...string) model.Group { + var resources []model.Resource + for _, kind := range kinds { + resources = append(resources, model.Resource{ + Kind: kind, + Spec: model.Field{ + Type: model.Type{ + Name: kind + "Spec", + }, + }, + StrictUnmarshal: false, + Stored: true, + }) + } + return model.Group{ GroupVersion: schema.GroupVersion{ Group: groupPrefix + "." + "solo.io", Version: version, }, - Module: module, - Resources: resources, - RenderManifests: true, - RenderTypes: true, - RenderClients: true, - RenderController: true, - MockgenDirective: true, - CustomTemplates: contrib.AllGroupCustomTemplates, - ApiRoot: apiRoot, + Module: module, + Resources: resources, + RenderManifests: false, + RenderTypes: false, + RenderClients: true, + RenderController: false, + MockgenDirective: false, + ApiRoot: apiRoot, + SkipSpecHash: true, + SkipConditionalCRDLoading: true, + SkipTemplatedCRDManifest: true, } } diff --git a/crds/enterprise.gloo.solo.io_v1_crds.yaml b/crds/enterprise.gloo.solo.io_crds.yaml similarity index 69% rename from crds/enterprise.gloo.solo.io_v1_crds.yaml rename to crds/enterprise.gloo.solo.io_crds.yaml index 11635ccea..3273e724f 100644 --- a/crds/enterprise.gloo.solo.io_v1_crds.yaml +++ b/crds/enterprise.gloo.solo.io_crds.yaml @@ -1,6 +1,6 @@ # Code generated by skv2. DO NOT EDIT. -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: labels: @@ -15,9 +15,13 @@ spec: plural: authconfigs singular: authconfig scope: Namespaced - subresources: - status: {} versions: - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true served: true storage: true + subresources: + status: {} diff --git a/crds/fed.enterprise.gloo.solo.io_crds.yaml b/crds/fed.enterprise.gloo.solo.io_crds.yaml new file mode 100644 index 000000000..3d0f33b68 --- /dev/null +++ b/crds/fed.enterprise.gloo.solo.io_crds.yaml @@ -0,0 +1,27 @@ +# Code generated by skv2. DO NOT EDIT. + +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + labels: + app: "" + app.kubernetes.io/name: "" + name: federatedauthconfigs.fed.enterprise.gloo.solo.io +spec: + group: fed.enterprise.gloo.solo.io + names: + kind: FederatedAuthConfig + listKind: FederatedAuthConfigList + plural: federatedauthconfigs + singular: federatedauthconfig + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} diff --git a/crds/fed.gateway.solo.io_crds.yaml b/crds/fed.gateway.solo.io_crds.yaml new file mode 100644 index 000000000..843d0166b --- /dev/null +++ b/crds/fed.gateway.solo.io_crds.yaml @@ -0,0 +1,135 @@ +# Code generated by skv2. DO NOT EDIT. + +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + labels: + app: "" + app.kubernetes.io/name: "" + name: federatedgateways.fed.gateway.solo.io +spec: + group: fed.gateway.solo.io + names: + kind: FederatedGateway + listKind: FederatedGatewayList + plural: federatedgateways + singular: federatedgateway + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + labels: + app: "" + app.kubernetes.io/name: "" + name: federatedmatchablehttpgateways.fed.gateway.solo.io +spec: + group: fed.gateway.solo.io + names: + kind: FederatedMatchableHttpGateway + listKind: FederatedMatchableHttpGatewayList + plural: federatedmatchablehttpgateways + singular: federatedmatchablehttpgateway + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + labels: + app: "" + app.kubernetes.io/name: "" + name: federatedmatchabletcpgateways.fed.gateway.solo.io +spec: + group: fed.gateway.solo.io + names: + kind: FederatedMatchableTcpGateway + listKind: FederatedMatchableTcpGatewayList + plural: federatedmatchabletcpgateways + singular: federatedmatchabletcpgateway + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + labels: + app: "" + app.kubernetes.io/name: "" + name: federatedroutetables.fed.gateway.solo.io +spec: + group: fed.gateway.solo.io + names: + kind: FederatedRouteTable + listKind: FederatedRouteTableList + plural: federatedroutetables + singular: federatedroutetable + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + labels: + app: "" + app.kubernetes.io/name: "" + name: federatedvirtualservices.fed.gateway.solo.io +spec: + group: fed.gateway.solo.io + names: + kind: FederatedVirtualService + listKind: FederatedVirtualServiceList + plural: federatedvirtualservices + singular: federatedvirtualservice + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} diff --git a/crds/fed.gloo.solo.io_crds.yaml b/crds/fed.gloo.solo.io_crds.yaml new file mode 100644 index 000000000..b71303bb2 --- /dev/null +++ b/crds/fed.gloo.solo.io_crds.yaml @@ -0,0 +1,81 @@ +# Code generated by skv2. DO NOT EDIT. + +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + labels: + app: "" + app.kubernetes.io/name: "" + name: federatedsettings.fed.gloo.solo.io +spec: + group: fed.gloo.solo.io + names: + kind: FederatedSettings + listKind: FederatedSettingsList + plural: federatedsettings + singular: federatedsettings + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + labels: + app: "" + app.kubernetes.io/name: "" + name: federatedupstreams.fed.gloo.solo.io +spec: + group: fed.gloo.solo.io + names: + kind: FederatedUpstream + listKind: FederatedUpstreamList + plural: federatedupstreams + singular: federatedupstream + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + labels: + app: "" + app.kubernetes.io/name: "" + name: federatedupstreamgroups.fed.gloo.solo.io +spec: + group: fed.gloo.solo.io + names: + kind: FederatedUpstreamGroup + listKind: FederatedUpstreamGroupList + plural: federatedupstreamgroups + singular: federatedupstreamgroup + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} diff --git a/crds/fed.ratelimit.solo.io_crds.yaml b/crds/fed.ratelimit.solo.io_crds.yaml new file mode 100644 index 000000000..3358fd84e --- /dev/null +++ b/crds/fed.ratelimit.solo.io_crds.yaml @@ -0,0 +1,27 @@ +# Code generated by skv2. DO NOT EDIT. + +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + labels: + app: "" + app.kubernetes.io/name: "" + name: federatedratelimitconfigs.fed.ratelimit.solo.io +spec: + group: fed.ratelimit.solo.io + names: + kind: FederatedRateLimitConfig + listKind: FederatedRateLimitConfigList + plural: federatedratelimitconfigs + singular: federatedratelimitconfig + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} diff --git a/crds/fed.solo.io_v1_crds.yaml b/crds/fed.solo.io_crds.yaml similarity index 68% rename from crds/fed.solo.io_v1_crds.yaml rename to crds/fed.solo.io_crds.yaml index 8fea456d1..0c9240124 100644 --- a/crds/fed.solo.io_v1_crds.yaml +++ b/crds/fed.solo.io_crds.yaml @@ -1,46 +1,54 @@ # Code generated by skv2. DO NOT EDIT. -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: labels: app: "" app.kubernetes.io/name: "" - name: glooinstances.fed.solo.io + name: failoverschemes.fed.solo.io spec: group: fed.solo.io names: - kind: GlooInstance - listKind: GlooInstanceList - plural: glooinstances - singular: glooinstance + kind: FailoverScheme + listKind: FailoverSchemeList + plural: failoverschemes + singular: failoverscheme scope: Namespaced - subresources: - status: {} versions: - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true served: true storage: true + subresources: + status: {} --- -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: labels: app: "" app.kubernetes.io/name: "" - name: failoverschemes.fed.solo.io + name: glooinstances.fed.solo.io spec: group: fed.solo.io names: - kind: FailoverScheme - listKind: FailoverSchemeList - plural: failoverschemes - singular: failoverscheme + kind: GlooInstance + listKind: GlooInstanceList + plural: glooinstances + singular: glooinstance scope: Namespaced - subresources: - status: {} versions: - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true served: true storage: true + subresources: + status: {} diff --git a/crds/gateway.solo.io_crds.yaml b/crds/gateway.solo.io_crds.yaml new file mode 100644 index 000000000..5ef76c368 --- /dev/null +++ b/crds/gateway.solo.io_crds.yaml @@ -0,0 +1,243 @@ +# Code generated by skv2. DO NOT EDIT. + +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + labels: + app: "" + app.kubernetes.io/name: "" + name: gateways.gateway.solo.io +spec: + group: gateway.solo.io + names: + kind: Gateway + listKind: GatewayList + plural: gateways + singular: gateway + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + labels: + app: "" + app.kubernetes.io/name: "" + name: httplisteneroptions.gateway.solo.io +spec: + group: gateway.solo.io + names: + kind: HttpListenerOption + listKind: HttpListenerOptionList + plural: httplisteneroptions + singular: httplisteneroption + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + labels: + app: "" + app.kubernetes.io/name: "" + name: listeneroptions.gateway.solo.io +spec: + group: gateway.solo.io + names: + kind: ListenerOption + listKind: ListenerOptionList + plural: listeneroptions + singular: listeneroption + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + labels: + app: "" + app.kubernetes.io/name: "" + name: matchablehttpgateways.gateway.solo.io +spec: + group: gateway.solo.io + names: + kind: MatchableHttpGateway + listKind: MatchableHttpGatewayList + plural: matchablehttpgateways + singular: matchablehttpgateway + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + labels: + app: "" + app.kubernetes.io/name: "" + name: matchabletcpgateways.gateway.solo.io +spec: + group: gateway.solo.io + names: + kind: MatchableTcpGateway + listKind: MatchableTcpGatewayList + plural: matchabletcpgateways + singular: matchabletcpgateway + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + labels: + app: "" + app.kubernetes.io/name: "" + name: routeoptions.gateway.solo.io +spec: + group: gateway.solo.io + names: + kind: RouteOption + listKind: RouteOptionList + plural: routeoptions + singular: routeoption + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + labels: + app: "" + app.kubernetes.io/name: "" + name: routetables.gateway.solo.io +spec: + group: gateway.solo.io + names: + kind: RouteTable + listKind: RouteTableList + plural: routetables + singular: routetable + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + labels: + app: "" + app.kubernetes.io/name: "" + name: virtualhostoptions.gateway.solo.io +spec: + group: gateway.solo.io + names: + kind: VirtualHostOption + listKind: VirtualHostOptionList + plural: virtualhostoptions + singular: virtualhostoption + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + labels: + app: "" + app.kubernetes.io/name: "" + name: virtualservices.gateway.solo.io +spec: + group: gateway.solo.io + names: + kind: VirtualService + listKind: VirtualServiceList + plural: virtualservices + singular: virtualservice + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} diff --git a/crds/gateway.solo.io_v1_crds.yaml b/crds/gateway.solo.io_v1_crds.yaml deleted file mode 100644 index 8d1917c72..000000000 --- a/crds/gateway.solo.io_v1_crds.yaml +++ /dev/null @@ -1,69 +0,0 @@ -# Code generated by skv2. DO NOT EDIT. - -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - labels: - app: "" - app.kubernetes.io/name: "" - name: gateways.gateway.solo.io -spec: - group: gateway.solo.io - names: - kind: Gateway - listKind: GatewayList - plural: gateways - singular: gateway - scope: Namespaced - subresources: - status: {} - versions: - - name: v1 - served: true - storage: true - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - labels: - app: "" - app.kubernetes.io/name: "" - name: routetables.gateway.solo.io -spec: - group: gateway.solo.io - names: - kind: RouteTable - listKind: RouteTableList - plural: routetables - singular: routetable - scope: Namespaced - subresources: - status: {} - versions: - - name: v1 - served: true - storage: true - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - labels: - app: "" - app.kubernetes.io/name: "" - name: virtualservices.gateway.solo.io -spec: - group: gateway.solo.io - names: - kind: VirtualService - listKind: VirtualServiceList - plural: virtualservices - singular: virtualservice - scope: Namespaced - subresources: - status: {} - versions: - - name: v1 - served: true - storage: true diff --git a/crds/gloo.solo.io_v1_crds.yaml b/crds/gloo.solo.io_crds.yaml similarity index 66% rename from crds/gloo.solo.io_v1_crds.yaml rename to crds/gloo.solo.io_crds.yaml index 954410abd..69cd10709 100644 --- a/crds/gloo.solo.io_v1_crds.yaml +++ b/crds/gloo.solo.io_crds.yaml @@ -1,92 +1,108 @@ # Code generated by skv2. DO NOT EDIT. -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: labels: app: "" app.kubernetes.io/name: "" - name: settings.gloo.solo.io + name: proxies.gloo.solo.io spec: group: gloo.solo.io names: - kind: Settings - listKind: SettingsList - plural: settings - singular: settings + kind: Proxy + listKind: ProxyList + plural: proxies + singular: proxy scope: Namespaced - subresources: - status: {} versions: - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true served: true storage: true + subresources: + status: {} --- -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: labels: app: "" app.kubernetes.io/name: "" - name: upstreams.gloo.solo.io + name: settings.gloo.solo.io spec: group: gloo.solo.io names: - kind: Upstream - listKind: UpstreamList - plural: upstreams - singular: upstream + kind: Settings + listKind: SettingsList + plural: settings + singular: settings scope: Namespaced - subresources: - status: {} versions: - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true served: true storage: true + subresources: + status: {} --- -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: labels: app: "" app.kubernetes.io/name: "" - name: upstreamgroups.gloo.solo.io + name: upstreams.gloo.solo.io spec: group: gloo.solo.io names: - kind: UpstreamGroup - listKind: UpstreamGroupList - plural: upstreamgroups - singular: upstreamgroup + kind: Upstream + listKind: UpstreamList + plural: upstreams + singular: upstream scope: Namespaced - subresources: - status: {} versions: - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true served: true storage: true + subresources: + status: {} --- -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: labels: app: "" app.kubernetes.io/name: "" - name: proxies.gloo.solo.io + name: upstreamgroups.gloo.solo.io spec: group: gloo.solo.io names: - kind: Proxy - listKind: ProxyList - plural: proxies - singular: proxy + kind: UpstreamGroup + listKind: UpstreamGroupList + plural: upstreamgroups + singular: upstreamgroup scope: Namespaced - subresources: - status: {} versions: - name: v1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true served: true storage: true + subresources: + status: {} diff --git a/crds/graphql.gloo.solo.io_crds.yaml b/crds/graphql.gloo.solo.io_crds.yaml new file mode 100644 index 000000000..e015ba14f --- /dev/null +++ b/crds/graphql.gloo.solo.io_crds.yaml @@ -0,0 +1,27 @@ +# Code generated by skv2. DO NOT EDIT. + +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + labels: + app: "" + app.kubernetes.io/name: "" + name: graphqlapis.graphql.gloo.solo.io +spec: + group: graphql.gloo.solo.io + names: + kind: GraphQLApi + listKind: GraphQLApiList + plural: graphqlapis + singular: graphqlapi + scope: Namespaced + versions: + - name: v1beta1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} diff --git a/crds/multicluster.solo.io_v1alpha1_crds.yaml b/crds/multicluster.solo.io_crds.yaml similarity index 70% rename from crds/multicluster.solo.io_v1alpha1_crds.yaml rename to crds/multicluster.solo.io_crds.yaml index aed64db78..ba470aebf 100644 --- a/crds/multicluster.solo.io_v1alpha1_crds.yaml +++ b/crds/multicluster.solo.io_crds.yaml @@ -1,6 +1,6 @@ # Code generated by skv2. DO NOT EDIT. -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: labels: @@ -15,9 +15,13 @@ spec: plural: multiclusterroles singular: multiclusterrole scope: Namespaced - subresources: - status: {} versions: - name: v1alpha1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true served: true storage: true + subresources: + status: {} diff --git a/crds/ratelimit.solo.io_v1alpha1_crds.yaml b/crds/ratelimit.solo.io_crds.yaml similarity index 70% rename from crds/ratelimit.solo.io_v1alpha1_crds.yaml rename to crds/ratelimit.solo.io_crds.yaml index 897709cc1..6a0655660 100644 --- a/crds/ratelimit.solo.io_v1alpha1_crds.yaml +++ b/crds/ratelimit.solo.io_crds.yaml @@ -1,6 +1,6 @@ # Code generated by skv2. DO NOT EDIT. -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: labels: @@ -15,9 +15,13 @@ spec: plural: ratelimitconfigs singular: ratelimitconfig scope: Namespaced - subresources: - status: {} versions: - name: v1alpha1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true served: true storage: true + subresources: + status: {} diff --git a/go.mod b/go.mod index df92cc61e..fe2623f4c 100644 --- a/go.mod +++ b/go.mod @@ -1,40 +1,178 @@ module github.com/solo-io/solo-apis -go 1.14 +go 1.25.5 replace ( github.com/docker/docker => github.com/moby/moby v0.7.3-0.20190826074503-38ab9da00309 - k8s.io/apimachinery => k8s.io/apimachinery v0.19.6 - k8s.io/client-go => k8s.io/client-go v0.19.6 + + // skv2 uses a newer version than the imported solo-kit version which causes issues. Replaces the version with the solo-kit version + github.com/pseudomuto/protoc-gen-doc => github.com/pseudomuto/protoc-gen-doc v1.0.0 + k8s.io/api => k8s.io/api v0.34.2 + k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.34.2 + k8s.io/apimachinery => k8s.io/apimachinery v0.34.2 + k8s.io/cli-runtime => k8s.io/cli-runtime v0.34.2 + k8s.io/client-go => k8s.io/client-go v0.34.2 + k8s.io/code-generator => k8s.io/code-generator v0.34.2 + k8s.io/component-base => k8s.io/component-base v0.34.2 ) require ( - // github.com/Azure/go-autorest/autorest has different versions for the Go - // modules than it does for releases on the repository, so we need to manually - // Note the correct version when updating. - github.com/Azure/go-autorest/autorest v0.10.2 // indirect - github.com/Azure/go-autorest/autorest/adal v0.9.5 // indirect - github.com/envoyproxy/go-control-plane v0.9.9-0.20210511190911-87d352569d55 - github.com/envoyproxy/protoc-gen-validate v0.4.1 - github.com/gogo/protobuf v1.3.1 - github.com/golang/mock v1.4.4 - github.com/golang/protobuf v1.4.3 + github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 + github.com/envoyproxy/protoc-gen-validate v1.2.1 + github.com/gogo/protobuf v1.3.2 + github.com/golang/mock v1.7.0-rc.1 + github.com/golang/protobuf v1.5.4 github.com/mitchellh/hashstructure v1.0.0 - github.com/onsi/ginkgo v1.14.1 - github.com/onsi/gomega v1.10.5 + github.com/onsi/ginkgo v1.16.5 + github.com/onsi/gomega v1.36.1 github.com/pkg/errors v0.9.1 - github.com/rotisserie/eris v0.1.1 - github.com/solo-io/go-utils v0.21.6 - github.com/solo-io/protoc-gen-ext v0.0.13 - github.com/solo-io/skv2 v0.17.17 - github.com/solo-io/solo-kit v0.21.0 - golang.org/x/tools v0.1.0 - google.golang.org/genproto v0.0.0-20210218151259-fe80b386bf06 - google.golang.org/grpc v1.36.0 - google.golang.org/protobuf v1.25.0 + github.com/rotisserie/eris v0.4.0 + github.com/solo-io/go-utils v0.29.0 + github.com/solo-io/protoc-gen-ext v0.1.0 + github.com/solo-io/skv2 v0.45.0 + github.com/solo-io/solo-kit v0.40.0 + go.opentelemetry.io/proto/otlp v1.5.0 + golang.org/x/tools v0.26.0 + google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb + google.golang.org/grpc v1.72.1 + google.golang.org/protobuf v1.36.5 istio.io/tools v0.0.0-20200918020118-6d0a0e49b5d3 - k8s.io/apimachinery v0.19.6 + k8s.io/api v0.34.2 + k8s.io/apimachinery v0.34.2 + k8s.io/client-go v0.34.2 + k8s.io/code-generator v0.34.2 + sigs.k8s.io/controller-runtime v0.22.4 +) + +require ( + cel.dev/expr v0.24.0 // indirect + dario.cat/mergo v1.0.1 // indirect + github.com/BurntSushi/toml v1.4.0 // indirect + github.com/Masterminds/goutils v1.1.1 // indirect + github.com/Masterminds/semver v1.5.0 // indirect + github.com/Masterminds/semver/v3 v3.3.0 // indirect + github.com/Masterminds/sprig/v3 v3.3.0 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/cockroachdb/apd/v2 v2.0.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/emicklei/go-restful/v3 v3.12.2 // indirect + github.com/emicklei/proto v1.6.15 // indirect + github.com/evanphx/json-patch/v5 v5.9.11 // indirect + github.com/fsnotify/fsnotify v1.9.0 // indirect + github.com/fxamacker/cbor/v2 v2.9.0 // indirect + github.com/gertd/go-pluralize v0.1.1 // indirect + github.com/getkin/kin-openapi v0.131.0 // indirect + github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 // indirect + github.com/go-logr/logr v1.4.2 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect + github.com/go-openapi/swag v0.23.0 // indirect + github.com/gobuffalo/envy v1.8.1 // indirect + github.com/gobuffalo/packd v0.3.0 // indirect + github.com/gobuffalo/packr v1.30.1 // indirect + github.com/google/btree v1.1.3 // indirect + github.com/google/gnostic-models v0.7.0 // indirect + github.com/google/go-cmp v0.7.0 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/huandu/xstrings v1.5.0 // indirect + github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect + github.com/invopop/jsonschema v0.7.0 // indirect + github.com/joho/godotenv v1.3.0 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/k0kubun/pp v2.3.0+incompatible // indirect + github.com/lyft/protoc-gen-star v0.6.1 // indirect + github.com/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-zglob v0.0.3 // indirect + github.com/mitchellh/copystructure v1.2.0 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect + github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect + github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/nxadm/tail v1.4.8 // indirect + github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037 // indirect + github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90 // indirect + github.com/pborman/uuid v1.2.0 // indirect + github.com/perimeterx/marshmallow v1.1.5 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus/client_golang v1.22.0 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.62.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect + github.com/rogpeppe/go-internal v1.13.1 // indirect + github.com/shopspring/decimal v1.4.0 // indirect + github.com/sirupsen/logrus v1.9.3 // indirect + github.com/solo-io/anyvendor v0.2.0 // indirect + github.com/solo-io/cue v0.4.7 // indirect + github.com/spf13/afero v1.10.0 // indirect + github.com/spf13/cast v1.7.0 // indirect + github.com/spf13/pflag v1.0.6 // indirect + github.com/ugorji/go/codec v1.2.12 // indirect + github.com/x448/float16 v0.8.4 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.27.0 // indirect + go.yaml.in/yaml/v2 v2.4.2 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/crypto v0.36.0 // indirect + golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect + golang.org/x/mod v0.21.0 // indirect + golang.org/x/net v0.38.0 // indirect + golang.org/x/oauth2 v0.27.0 // indirect + golang.org/x/sync v0.12.0 // indirect + golang.org/x/sys v0.31.0 // indirect + golang.org/x/term v0.30.0 // indirect + golang.org/x/text v0.23.0 // indirect + golang.org/x/time v0.9.0 // indirect + golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect + gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect + gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + k8s.io/apiextensions-apiserver v0.34.2 // indirect + k8s.io/gengo/v2 v2.0.0-20250604051438-85fd79dbfd9f // indirect + k8s.io/klog/v2 v2.130.1 // indirect + k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect + k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect + sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect + sigs.k8s.io/randfill v1.0.0 // indirect + sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect + sigs.k8s.io/yaml v1.6.0 // indirect +) + +exclude ( + // Exclude pre-go-mod kubernetes tags, because they are older + // than v0.x releases but are picked when updating dependencies. + k8s.io/client-go v1.4.0 + k8s.io/client-go v1.5.0 + k8s.io/client-go v1.5.1 + k8s.io/client-go v1.5.2 + k8s.io/client-go v2.0.0-alpha.1+incompatible + k8s.io/client-go v2.0.0+incompatible + k8s.io/client-go v3.0.0-beta.0+incompatible + k8s.io/client-go v3.0.0+incompatible + k8s.io/client-go v4.0.0-beta.0+incompatible + k8s.io/client-go v4.0.0+incompatible + k8s.io/client-go v5.0.0+incompatible + k8s.io/client-go v5.0.1+incompatible + k8s.io/client-go v6.0.0+incompatible + k8s.io/client-go v7.0.0+incompatible k8s.io/client-go v8.0.0+incompatible - k8s.io/code-generator v0.19.6 - sigs.k8s.io/controller-runtime v0.7.0 + k8s.io/client-go v9.0.0-invalid+incompatible + k8s.io/client-go v9.0.0+incompatible + k8s.io/client-go v10.0.0+incompatible + k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible + k8s.io/client-go v12.0.0+incompatible ) diff --git a/go.sum b/go.sum index 2d6b0ce59..2408ab02a 100644 --- a/go.sum +++ b/go.sum @@ -1,14 +1,23 @@ -bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.31.0-20230721003620-2341cbb21958.1/go.mod h1:xafc+XIsTxTy76GJQ1TKgvJWsSugFBqMaN27WhUblew= +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.31.0-20230802163732-1c33ebd9ecfa.1/go.mod h1:xafc+XIsTxTy76GJQ1TKgvJWsSugFBqMaN27WhUblew= +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.4-20250130201111-63bb56e20495.1/go.mod h1:novQBstnxcGpfKf8qGRATqn1anQKwMJIbH5Q581jibU= +cel.dev/expr v0.15.0/go.mod h1:TRSuuV7DlVCE/uwv5QbAiW/v8l5O8C4eEPHeu7gf7Sg= +cel.dev/expr v0.16.0/go.mod h1:TRSuuV7DlVCE/uwv5QbAiW/v8l5O8C4eEPHeu7gf7Sg= +cel.dev/expr v0.16.2/go.mod h1:gXngZQMkWJoSbE8mOzehJlXQyubn/Vg0vR9/F3W7iw8= +cel.dev/expr v0.19.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= +cel.dev/expr v0.19.1/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= +cel.dev/expr v0.20.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= +cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= +cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.40.0/go.mod h1:Tk58MuI9rbLMKlAjeO/bDnteAx7tX2gJIXw4T5Jwlro= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= @@ -18,433 +27,1695 @@ cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOY cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.76.0 h1:Ckw+E/QYZgd/5bpI4wz4h6f+jmpvh9S9uSrKNnbicJI= -cloud.google.com/go v0.76.0/go.mod h1:r9EvIAvLrunusnetGdQ50M/gKui1x3zdGW/VELGkdpw= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= +cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= +cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= +cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= +cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw= +cloud.google.com/go v0.110.4/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= +cloud.google.com/go v0.110.6/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= +cloud.google.com/go v0.110.7/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= +cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= +cloud.google.com/go v0.110.9/go.mod h1:rpxevX/0Lqvlbc88b7Sc1SPNdyK1riNBTUU6JXhYNpM= +cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= +cloud.google.com/go v0.111.0/go.mod h1:0mibmpKP1TyOOFYQY5izo0LnT+ecvOQ0Sg3OdmMiNRU= +cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= +cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= +cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= +cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= +cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= +cloud.google.com/go/accessapproval v1.7.1/go.mod h1:JYczztsHRMK7NTXb6Xw+dwbs/WnOJxbo/2mTI+Kgg68= +cloud.google.com/go/accessapproval v1.7.2/go.mod h1:/gShiq9/kK/h8T/eEn1BTzalDvk0mZxJlhfw0p+Xuc0= +cloud.google.com/go/accessapproval v1.7.3/go.mod h1:4l8+pwIxGTNqSf4T3ds8nLO94NQf0W/KnMNuQ9PbnP8= +cloud.google.com/go/accessapproval v1.7.4/go.mod h1:/aTEh45LzplQgFYdQdwPMR9YdX0UlhBmvB84uAmQKUc= +cloud.google.com/go/accessapproval v1.7.5/go.mod h1:g88i1ok5dvQ9XJsxpUInWWvUBrIZhyPDPbk4T01OoJ0= +cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= +cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= +cloud.google.com/go/accesscontextmanager v1.6.0/go.mod h1:8XCvZWfYw3K/ji0iVnp+6pu7huxoQTLmxAbVjbloTtM= +cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ= +cloud.google.com/go/accesscontextmanager v1.8.0/go.mod h1:uI+AI/r1oyWK99NN8cQ3UK76AMelMzgZCvJfsi2c+ps= +cloud.google.com/go/accesscontextmanager v1.8.1/go.mod h1:JFJHfvuaTC+++1iL1coPiG1eu5D24db2wXCDWDjIrxo= +cloud.google.com/go/accesscontextmanager v1.8.2/go.mod h1:E6/SCRM30elQJ2PKtFMs2YhfJpZSNcJyejhuzoId4Zk= +cloud.google.com/go/accesscontextmanager v1.8.3/go.mod h1:4i/JkF2JiFbhLnnpnfoTX5vRXfhf9ukhU1ANOTALTOQ= +cloud.google.com/go/accesscontextmanager v1.8.4/go.mod h1:ParU+WbMpD34s5JFEnGAnPBYAgUHozaTmDJU7aCU9+M= +cloud.google.com/go/accesscontextmanager v1.8.5/go.mod h1:TInEhcZ7V9jptGNqN3EzZ5XMhT6ijWxTGjzyETwmL0Q= +cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= +cloud.google.com/go/aiplatform v1.35.0/go.mod h1:7MFT/vCaOyZT/4IIFfxH4ErVg/4ku6lKv3w0+tFTgXQ= +cloud.google.com/go/aiplatform v1.36.1/go.mod h1:WTm12vJRPARNvJ+v6P52RDHCNe4AhvjcIZ/9/RRHy/k= +cloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw= +cloud.google.com/go/aiplatform v1.45.0/go.mod h1:Iu2Q7sC7QGhXUeOhAj/oCK9a+ULz1O4AotZiqjQ8MYA= +cloud.google.com/go/aiplatform v1.48.0/go.mod h1:Iu2Q7sC7QGhXUeOhAj/oCK9a+ULz1O4AotZiqjQ8MYA= +cloud.google.com/go/aiplatform v1.50.0/go.mod h1:IRc2b8XAMTa9ZmfJV1BCCQbieWWvDnP1A8znyz5N7y4= +cloud.google.com/go/aiplatform v1.51.0/go.mod h1:IRc2b8XAMTa9ZmfJV1BCCQbieWWvDnP1A8znyz5N7y4= +cloud.google.com/go/aiplatform v1.51.1/go.mod h1:kY3nIMAVQOK2XDqDPHaOuD9e+FdMA6OOpfBjsvaFSOo= +cloud.google.com/go/aiplatform v1.51.2/go.mod h1:hCqVYB3mY45w99TmetEoe8eCQEwZEp9WHxeZdcv9phw= +cloud.google.com/go/aiplatform v1.52.0/go.mod h1:pwZMGvqe0JRkI1GWSZCtnAfrR4K1bv65IHILGA//VEU= +cloud.google.com/go/aiplatform v1.54.0/go.mod h1:pwZMGvqe0JRkI1GWSZCtnAfrR4K1bv65IHILGA//VEU= +cloud.google.com/go/aiplatform v1.57.0/go.mod h1:pwZMGvqe0JRkI1GWSZCtnAfrR4K1bv65IHILGA//VEU= +cloud.google.com/go/aiplatform v1.58.0/go.mod h1:pwZMGvqe0JRkI1GWSZCtnAfrR4K1bv65IHILGA//VEU= +cloud.google.com/go/aiplatform v1.58.2/go.mod h1:c3kCiVmb6UC1dHAjZjcpDj6ZS0bHQ2slL88ZjC2LtlA= +cloud.google.com/go/aiplatform v1.60.0/go.mod h1:eTlGuHOahHprZw3Hio5VKmtThIOak5/qy6pzdsqcQnM= +cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/analytics v0.17.0/go.mod h1:WXFa3WSym4IZ+JiKmavYdJwGG/CvpqiqczmL59bTD9M= +cloud.google.com/go/analytics v0.18.0/go.mod h1:ZkeHGQlcIPkw0R/GW+boWHhCOR43xz9RN/jn7WcqfIE= +cloud.google.com/go/analytics v0.19.0/go.mod h1:k8liqf5/HCnOUkbawNtrWWc+UAzyDlW89doe8TtoDsE= +cloud.google.com/go/analytics v0.21.2/go.mod h1:U8dcUtmDmjrmUTnnnRnI4m6zKn/yaA5N9RlEkYFHpQo= +cloud.google.com/go/analytics v0.21.3/go.mod h1:U8dcUtmDmjrmUTnnnRnI4m6zKn/yaA5N9RlEkYFHpQo= +cloud.google.com/go/analytics v0.21.4/go.mod h1:zZgNCxLCy8b2rKKVfC1YkC2vTrpfZmeRCySM3aUbskA= +cloud.google.com/go/analytics v0.21.5/go.mod h1:BQtOBHWTlJ96axpPPnw5CvGJ6i3Ve/qX2fTxR8qWyr8= +cloud.google.com/go/analytics v0.21.6/go.mod h1:eiROFQKosh4hMaNhF85Oc9WO97Cpa7RggD40e/RBy8w= +cloud.google.com/go/analytics v0.22.0/go.mod h1:eiROFQKosh4hMaNhF85Oc9WO97Cpa7RggD40e/RBy8w= +cloud.google.com/go/analytics v0.23.0/go.mod h1:YPd7Bvik3WS95KBok2gPXDqQPHy08TsCQG6CdUCb+u0= +cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= +cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= +cloud.google.com/go/apigateway v1.5.0/go.mod h1:GpnZR3Q4rR7LVu5951qfXPJCHquZt02jf7xQx7kpqN8= +cloud.google.com/go/apigateway v1.6.1/go.mod h1:ufAS3wpbRjqfZrzpvLC2oh0MFlpRJm2E/ts25yyqmXA= +cloud.google.com/go/apigateway v1.6.2/go.mod h1:CwMC90nnZElorCW63P2pAYm25AtQrHfuOkbRSHj0bT8= +cloud.google.com/go/apigateway v1.6.3/go.mod h1:k68PXWpEs6BVDTtnLQAyG606Q3mz8pshItwPXjgv44Y= +cloud.google.com/go/apigateway v1.6.4/go.mod h1:0EpJlVGH5HwAN4VF4Iec8TAzGN1aQgbxAWGJsnPCGGY= +cloud.google.com/go/apigateway v1.6.5/go.mod h1:6wCwvYRckRQogyDDltpANi3zsCDl6kWi0b4Je+w2UiI= +cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= +cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= +cloud.google.com/go/apigeeconnect v1.5.0/go.mod h1:KFaCqvBRU6idyhSNyn3vlHXc8VMDJdRmwDF6JyFRqZ8= +cloud.google.com/go/apigeeconnect v1.6.1/go.mod h1:C4awq7x0JpLtrlQCr8AzVIzAaYgngRqWf9S5Uhg+wWs= +cloud.google.com/go/apigeeconnect v1.6.2/go.mod h1:s6O0CgXT9RgAxlq3DLXvG8riw8PYYbU/v25jqP3Dy18= +cloud.google.com/go/apigeeconnect v1.6.3/go.mod h1:peG0HFQ0si2bN15M6QSjEW/W7Gy3NYkWGz7pFz13cbo= +cloud.google.com/go/apigeeconnect v1.6.4/go.mod h1:CapQCWZ8TCjnU0d7PobxhpOdVz/OVJ2Hr/Zcuu1xFx0= +cloud.google.com/go/apigeeconnect v1.6.5/go.mod h1:MEKm3AiT7s11PqTfKE3KZluZA9O91FNysvd3E6SJ6Ow= +cloud.google.com/go/apigeeregistry v0.4.0/go.mod h1:EUG4PGcsZvxOXAdyEghIdXwAEi/4MEaoqLMLDMIwKXY= +cloud.google.com/go/apigeeregistry v0.5.0/go.mod h1:YR5+s0BVNZfVOUkMa5pAR2xGd0A473vA5M7j247o1wM= +cloud.google.com/go/apigeeregistry v0.6.0/go.mod h1:BFNzW7yQVLZ3yj0TKcwzb8n25CFBri51GVGOEUcgQsc= +cloud.google.com/go/apigeeregistry v0.7.1/go.mod h1:1XgyjZye4Mqtw7T9TsY4NW10U7BojBvG4RMD+vRDrIw= +cloud.google.com/go/apigeeregistry v0.7.2/go.mod h1:9CA2B2+TGsPKtfi3F7/1ncCCsL62NXBRfM6iPoGSM+8= +cloud.google.com/go/apigeeregistry v0.8.1/go.mod h1:MW4ig1N4JZQsXmBSwH4rwpgDonocz7FPBSw6XPGHmYw= +cloud.google.com/go/apigeeregistry v0.8.2/go.mod h1:h4v11TDGdeXJDJvImtgK2AFVvMIgGWjSb0HRnBSjcX8= +cloud.google.com/go/apigeeregistry v0.8.3/go.mod h1:aInOWnqF4yMQx8kTjDqHNXjZGh/mxeNlAf52YqtASUs= +cloud.google.com/go/apikeys v0.4.0/go.mod h1:XATS/yqZbaBK0HOssf+ALHp8jAlNHUgyfprvNcBIszU= +cloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI= +cloud.google.com/go/apikeys v0.6.0/go.mod h1:kbpXu5upyiAlGkKrJgQl8A0rKNNJ7dQ377pdroRSSi8= +cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= +cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak= +cloud.google.com/go/appengine v1.6.0/go.mod h1:hg6i0J/BD2cKmDJbaFSYHFyZkgBEfQrDg/X0V5fJn84= +cloud.google.com/go/appengine v1.7.0/go.mod h1:eZqpbHFCqRGa2aCdope7eC0SWLV1j0neb/QnMJVWx6A= +cloud.google.com/go/appengine v1.7.1/go.mod h1:IHLToyb/3fKutRysUlFO0BPt5j7RiQ45nrzEJmKTo6E= +cloud.google.com/go/appengine v1.8.1/go.mod h1:6NJXGLVhZCN9aQ/AEDvmfzKEfoYBlfB80/BHiKVputY= +cloud.google.com/go/appengine v1.8.2/go.mod h1:WMeJV9oZ51pvclqFN2PqHoGnys7rK0rz6s3Mp6yMvDo= +cloud.google.com/go/appengine v1.8.3/go.mod h1:2oUPZ1LVZ5EXi+AF1ihNAF+S8JrzQ3till5m9VQkrsk= +cloud.google.com/go/appengine v1.8.4/go.mod h1:TZ24v+wXBujtkK77CXCpjZbnuTvsFNT41MUaZ28D6vg= +cloud.google.com/go/appengine v1.8.5/go.mod h1:uHBgNoGLTS5di7BvU25NFDuKa82v0qQLjyMJLuPQrVo= +cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/area120 v0.7.0/go.mod h1:a3+8EUD1SX5RUcCs3MY5YasiO1z6yLiNLRiFrykbynY= +cloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1Nm69pWm9k= +cloud.google.com/go/area120 v0.8.1/go.mod h1:BVfZpGpB7KFVNxPiQBuHkX6Ed0rS51xIgmGyjrAfzsg= +cloud.google.com/go/area120 v0.8.2/go.mod h1:a5qfo+x77SRLXnCynFWPUZhnZGeSgvQ+Y0v1kSItkh4= +cloud.google.com/go/area120 v0.8.3/go.mod h1:5zj6pMzVTH+SVHljdSKC35sriR/CVvQZzG/Icdyriw0= +cloud.google.com/go/area120 v0.8.4/go.mod h1:jfawXjxf29wyBXr48+W+GyX/f8fflxp642D/bb9v68M= +cloud.google.com/go/area120 v0.8.5/go.mod h1:BcoFCbDLZjsfe4EkCnEq1LKvHSK0Ew/zk5UFu6GMyA0= +cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= +cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc= +cloud.google.com/go/artifactregistry v1.11.1/go.mod h1:lLYghw+Itq9SONbCa1YWBoWs1nOucMH0pwXN1rOBZFI= +cloud.google.com/go/artifactregistry v1.11.2/go.mod h1:nLZns771ZGAwVLzTX/7Al6R9ehma4WUEhZGWV6CeQNQ= +cloud.google.com/go/artifactregistry v1.12.0/go.mod h1:o6P3MIvtzTOnmvGagO9v/rOjjA0HmhJ+/6KAXrmYDCI= +cloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08= +cloud.google.com/go/artifactregistry v1.14.1/go.mod h1:nxVdG19jTaSTu7yA7+VbWL346r3rIdkZ142BSQqhn5E= +cloud.google.com/go/artifactregistry v1.14.2/go.mod h1:Xk+QbsKEb0ElmyeMfdHAey41B+qBq3q5R5f5xD4XT3U= +cloud.google.com/go/artifactregistry v1.14.3/go.mod h1:A2/E9GXnsyXl7GUvQ/2CjHA+mVRoWAXC0brg2os+kNI= +cloud.google.com/go/artifactregistry v1.14.4/go.mod h1:SJJcZTMv6ce0LDMUnihCN7WSrI+kBSFV0KIKo8S8aYU= +cloud.google.com/go/artifactregistry v1.14.6/go.mod h1:np9LSFotNWHcjnOgh8UVK0RFPCTUGbO0ve3384xyHfE= +cloud.google.com/go/artifactregistry v1.14.7/go.mod h1:0AUKhzWQzfmeTvT4SjfI4zjot72EMfrkvL9g9aRjnnM= +cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= +cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= +cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= +cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= +cloud.google.com/go/asset v1.11.1/go.mod h1:fSwLhbRvC9p9CXQHJ3BgFeQNM4c9x10lqlrdEUYXlJo= +cloud.google.com/go/asset v1.12.0/go.mod h1:h9/sFOa4eDIyKmH6QMpm4eUK3pDojWnUhTgJlk762Hg= +cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw= +cloud.google.com/go/asset v1.14.1/go.mod h1:4bEJ3dnHCqWCDbWJ/6Vn7GVI9LerSi7Rfdi03hd+WTQ= +cloud.google.com/go/asset v1.15.0/go.mod h1:tpKafV6mEut3+vN9ScGvCHXHj7FALFVta+okxFECHcg= +cloud.google.com/go/asset v1.15.1/go.mod h1:yX/amTvFWRpp5rcFq6XbCxzKT8RJUam1UoboE179jU4= +cloud.google.com/go/asset v1.15.2/go.mod h1:B6H5tclkXvXz7PD22qCA2TDxSVQfasa3iDlM89O2NXs= +cloud.google.com/go/asset v1.15.3/go.mod h1:yYLfUD4wL4X589A9tYrv4rFrba0QlDeag0CMcM5ggXU= +cloud.google.com/go/asset v1.16.0/go.mod h1:yYLfUD4wL4X589A9tYrv4rFrba0QlDeag0CMcM5ggXU= +cloud.google.com/go/asset v1.17.0/go.mod h1:yYLfUD4wL4X589A9tYrv4rFrba0QlDeag0CMcM5ggXU= +cloud.google.com/go/asset v1.17.1/go.mod h1:byvDw36UME5AzGNK7o4JnOnINkwOZ1yRrGrKIahHrng= +cloud.google.com/go/asset v1.17.2/go.mod h1:SVbzde67ehddSoKf5uebOD1sYw8Ab/jD/9EIeWg99q4= +cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= +cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= +cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= +cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= +cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= +cloud.google.com/go/assuredworkloads v1.11.1/go.mod h1:+F04I52Pgn5nmPG36CWFtxmav6+7Q+c5QyJoL18Lry0= +cloud.google.com/go/assuredworkloads v1.11.2/go.mod h1:O1dfr+oZJMlE6mw0Bp0P1KZSlj5SghMBvTpZqIcUAW4= +cloud.google.com/go/assuredworkloads v1.11.3/go.mod h1:vEjfTKYyRUaIeA0bsGJceFV2JKpVRgyG2op3jfa59Zs= +cloud.google.com/go/assuredworkloads v1.11.4/go.mod h1:4pwwGNwy1RP0m+y12ef3Q/8PaiWrIDQ6nD2E8kvWI9U= +cloud.google.com/go/assuredworkloads v1.11.5/go.mod h1:FKJ3g3ZvkL2D7qtqIGnDufFkHxwIpNM9vtmhvt+6wqk= +cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= +cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= +cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= +cloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU= +cloud.google.com/go/automl v1.13.1/go.mod h1:1aowgAHWYZU27MybSCFiukPO7xnyawv7pt3zK4bheQE= +cloud.google.com/go/automl v1.13.2/go.mod h1:gNY/fUmDEN40sP8amAX3MaXkxcqPIn7F1UIIPZpy4Mg= +cloud.google.com/go/automl v1.13.3/go.mod h1:Y8KwvyAZFOsMAPqUCfNu1AyclbC6ivCUF/MTwORymyY= +cloud.google.com/go/automl v1.13.4/go.mod h1:ULqwX/OLZ4hBVfKQaMtxMSTlPx0GqGbWN8uA/1EqCP8= +cloud.google.com/go/automl v1.13.5/go.mod h1:MDw3vLem3yh+SvmSgeYUmUKqyls6NzSumDm9OJ3xJ1Y= +cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= +cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= +cloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss= +cloud.google.com/go/baremetalsolution v1.1.1/go.mod h1:D1AV6xwOksJMV4OSlWHtWuFNZZYujJknMAP4Qa27QIA= +cloud.google.com/go/baremetalsolution v1.2.0/go.mod h1:68wi9AwPYkEWIUT4SvSGS9UJwKzNpshjHsH4lzk8iOw= +cloud.google.com/go/baremetalsolution v1.2.1/go.mod h1:3qKpKIw12RPXStwQXcbhfxVj1dqQGEvcmA+SX/mUR88= +cloud.google.com/go/baremetalsolution v1.2.2/go.mod h1:O5V6Uu1vzVelYahKfwEWRMaS3AbCkeYHy3145s1FkhM= +cloud.google.com/go/baremetalsolution v1.2.3/go.mod h1:/UAQ5xG3faDdy180rCUv47e0jvpp3BFxT+Cl0PFjw5g= +cloud.google.com/go/baremetalsolution v1.2.4/go.mod h1:BHCmxgpevw9IEryE99HbYEfxXkAEA3hkMJbYYsHtIuY= +cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= +cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= +cloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g= +cloud.google.com/go/batch v1.3.1/go.mod h1:VguXeQKXIYaeeIYbuozUmBR13AfL4SJP7IltNPS+A4A= +cloud.google.com/go/batch v1.4.1/go.mod h1:KdBmDD61K0ovcxoRHGrN6GmOBWeAOyCgKD0Mugx4Fkk= +cloud.google.com/go/batch v1.5.0/go.mod h1:KdBmDD61K0ovcxoRHGrN6GmOBWeAOyCgKD0Mugx4Fkk= +cloud.google.com/go/batch v1.5.1/go.mod h1:RpBuIYLkQu8+CWDk3dFD/t/jOCGuUpkpX+Y0n1Xccs8= +cloud.google.com/go/batch v1.6.1/go.mod h1:urdpD13zPe6YOK+6iZs/8/x2VBRofvblLpx0t57vM98= +cloud.google.com/go/batch v1.6.3/go.mod h1:J64gD4vsNSA2O5TtDB5AAux3nJ9iV8U3ilg3JDBYejU= +cloud.google.com/go/batch v1.7.0/go.mod h1:J64gD4vsNSA2O5TtDB5AAux3nJ9iV8U3ilg3JDBYejU= +cloud.google.com/go/batch v1.8.0/go.mod h1:k8V7f6VE2Suc0zUM4WtoibNrA6D3dqBpB+++e3vSGYc= +cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= +cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= +cloud.google.com/go/beyondcorp v0.4.0/go.mod h1:3ApA0mbhHx6YImmuubf5pyW8srKnCEPON32/5hj+RmM= +cloud.google.com/go/beyondcorp v0.5.0/go.mod h1:uFqj9X+dSfrheVp7ssLTaRHd2EHqSL4QZmH4e8WXGGU= +cloud.google.com/go/beyondcorp v0.6.1/go.mod h1:YhxDWw946SCbmcWo3fAhw3V4XZMSpQ/VYfcKGAEU8/4= +cloud.google.com/go/beyondcorp v1.0.0/go.mod h1:YhxDWw946SCbmcWo3fAhw3V4XZMSpQ/VYfcKGAEU8/4= +cloud.google.com/go/beyondcorp v1.0.1/go.mod h1:zl/rWWAFVeV+kx+X2Javly7o1EIQThU4WlkynffL/lk= +cloud.google.com/go/beyondcorp v1.0.2/go.mod h1:m8cpG7caD+5su+1eZr+TSvF6r21NdLJk4f9u4SP2Ntc= +cloud.google.com/go/beyondcorp v1.0.3/go.mod h1:HcBvnEd7eYr+HGDd5ZbuVmBYX019C6CEXBonXbCVwJo= +cloud.google.com/go/beyondcorp v1.0.4/go.mod h1:Gx8/Rk2MxrvWfn4WIhHIG1NV7IBfg14pTKv1+EArVcc= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw= +cloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc= +cloud.google.com/go/bigquery v1.47.0/go.mod h1:sA9XOgy0A8vQK9+MWhEQTY6Tix87M/ZurWFIxmF9I/E= +cloud.google.com/go/bigquery v1.48.0/go.mod h1:QAwSz+ipNgfL5jxiaK7weyOhzdoAy1zFm0Nf1fysJac= +cloud.google.com/go/bigquery v1.49.0/go.mod h1:Sv8hMmTFFYBlt/ftw2uN6dFdQPzBlREY9yBh7Oy7/4Q= +cloud.google.com/go/bigquery v1.50.0/go.mod h1:YrleYEh2pSEbgTBZYMJ5SuSr0ML3ypjRB1zgf7pvQLU= +cloud.google.com/go/bigquery v1.52.0/go.mod h1:3b/iXjRQGU4nKa87cXeg6/gogLjO8C6PmuM8i5Bi/u4= +cloud.google.com/go/bigquery v1.53.0/go.mod h1:3b/iXjRQGU4nKa87cXeg6/gogLjO8C6PmuM8i5Bi/u4= +cloud.google.com/go/bigquery v1.55.0/go.mod h1:9Y5I3PN9kQWuid6183JFhOGOW3GcirA5LpsKCUn+2ec= +cloud.google.com/go/bigquery v1.56.0/go.mod h1:KDcsploXTEY7XT3fDQzMUZlpQLHzE4itubHrnmhUrZA= +cloud.google.com/go/bigquery v1.57.1/go.mod h1:iYzC0tGVWt1jqSzBHqCr3lrRn0u13E8e+AqowBsDgug= +cloud.google.com/go/bigquery v1.58.0/go.mod h1:0eh4mWNY0KrBTjUzLjoYImapGORq9gEPT7MWjCy9lik= +cloud.google.com/go/bigquery v1.59.1/go.mod h1:VP1UJYgevyTwsV7desjzNzDND5p6hZB+Z8gZJN1GQUc= +cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= +cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y= +cloud.google.com/go/billing v1.12.0/go.mod h1:yKrZio/eu+okO/2McZEbch17O5CB5NpZhhXG6Z766ss= +cloud.google.com/go/billing v1.13.0/go.mod h1:7kB2W9Xf98hP9Sr12KfECgfGclsH3CQR0R08tnRlRbc= +cloud.google.com/go/billing v1.16.0/go.mod h1:y8vx09JSSJG02k5QxbycNRrN7FGZB6F3CAcgum7jvGA= +cloud.google.com/go/billing v1.17.0/go.mod h1:Z9+vZXEq+HwH7bhJkyI4OQcR6TSbeMrjlpEjO2vzY64= +cloud.google.com/go/billing v1.17.1/go.mod h1:Z9+vZXEq+HwH7bhJkyI4OQcR6TSbeMrjlpEjO2vzY64= +cloud.google.com/go/billing v1.17.2/go.mod h1:u/AdV/3wr3xoRBk5xvUzYMS1IawOAPwQMuHgHMdljDg= +cloud.google.com/go/billing v1.17.3/go.mod h1:z83AkoZ7mZwBGT3yTnt6rSGI1OOsHSIi6a5M3mJ8NaU= +cloud.google.com/go/billing v1.17.4/go.mod h1:5DOYQStCxquGprqfuid/7haD7th74kyMBHkjO/OvDtk= +cloud.google.com/go/billing v1.18.0/go.mod h1:5DOYQStCxquGprqfuid/7haD7th74kyMBHkjO/OvDtk= +cloud.google.com/go/billing v1.18.2/go.mod h1:PPIwVsOOQ7xzbADCwNe8nvK776QpfrOAUkvKjCUcpSE= +cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= +cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= +cloud.google.com/go/binaryauthorization v1.5.0/go.mod h1:OSe4OU1nN/VswXKRBmciKpo9LulY41gch5c68htf3/Q= +cloud.google.com/go/binaryauthorization v1.6.1/go.mod h1:TKt4pa8xhowwffiBmbrbcxijJRZED4zrqnwZ1lKH51U= +cloud.google.com/go/binaryauthorization v1.7.0/go.mod h1:Zn+S6QqTMn6odcMU1zDZCJxPjU2tZPV1oDl45lWY154= +cloud.google.com/go/binaryauthorization v1.7.1/go.mod h1:GTAyfRWYgcbsP3NJogpV3yeunbUIjx2T9xVeYovtURE= +cloud.google.com/go/binaryauthorization v1.7.2/go.mod h1:kFK5fQtxEp97m92ziy+hbu+uKocka1qRRL8MVJIgjv0= +cloud.google.com/go/binaryauthorization v1.7.3/go.mod h1:VQ/nUGRKhrStlGr+8GMS8f6/vznYLkdK5vaKfdCIpvU= +cloud.google.com/go/binaryauthorization v1.8.0/go.mod h1:VQ/nUGRKhrStlGr+8GMS8f6/vznYLkdK5vaKfdCIpvU= +cloud.google.com/go/binaryauthorization v1.8.1/go.mod h1:1HVRyBerREA/nhI7yLang4Zn7vfNVA3okoAR9qYQJAQ= +cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= +cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= +cloud.google.com/go/certificatemanager v1.6.0/go.mod h1:3Hh64rCKjRAX8dXgRAyOcY5vQ/fE1sh8o+Mdd6KPgY8= +cloud.google.com/go/certificatemanager v1.7.1/go.mod h1:iW8J3nG6SaRYImIa+wXQ0g8IgoofDFRp5UMzaNk1UqI= +cloud.google.com/go/certificatemanager v1.7.2/go.mod h1:15SYTDQMd00kdoW0+XY5d9e+JbOPjp24AvF48D8BbcQ= +cloud.google.com/go/certificatemanager v1.7.3/go.mod h1:T/sZYuC30PTag0TLo28VedIRIj1KPGcOQzjWAptHa00= +cloud.google.com/go/certificatemanager v1.7.4/go.mod h1:FHAylPe/6IIKuaRmHbjbdLhGhVQ+CWHSD5Jq0k4+cCE= +cloud.google.com/go/certificatemanager v1.7.5/go.mod h1:uX+v7kWqy0Y3NG/ZhNvffh0kuqkKZIXdvlZRO7z0VtM= +cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= +cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= +cloud.google.com/go/channel v1.11.0/go.mod h1:IdtI0uWGqhEeatSB62VOoJ8FSUhJ9/+iGkJVqp74CGE= +cloud.google.com/go/channel v1.12.0/go.mod h1:VkxCGKASi4Cq7TbXxlaBezonAYpp1GCnKMY6tnMQnLU= +cloud.google.com/go/channel v1.16.0/go.mod h1:eN/q1PFSl5gyu0dYdmxNXscY/4Fi7ABmeHCJNf/oHmc= +cloud.google.com/go/channel v1.17.0/go.mod h1:RpbhJsGi/lXWAUM1eF4IbQGbsfVlg2o8Iiy2/YLfVT0= +cloud.google.com/go/channel v1.17.1/go.mod h1:xqfzcOZAcP4b/hUDH0GkGg1Sd5to6di1HOJn/pi5uBQ= +cloud.google.com/go/channel v1.17.2/go.mod h1:aT2LhnftnyfQceFql5I/mP8mIbiiJS4lWqgXA815zMk= +cloud.google.com/go/channel v1.17.3/go.mod h1:QcEBuZLGGrUMm7kNj9IbU1ZfmJq2apotsV83hbxX7eE= +cloud.google.com/go/channel v1.17.4/go.mod h1:QcEBuZLGGrUMm7kNj9IbU1ZfmJq2apotsV83hbxX7eE= +cloud.google.com/go/channel v1.17.5/go.mod h1:FlpaOSINDAXgEext0KMaBq/vwpLMkkPAw9b2mApQeHc= +cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= +cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= +cloud.google.com/go/cloudbuild v1.6.0/go.mod h1:UIbc/w9QCbH12xX+ezUsgblrWv+Cv4Tw83GiSMHOn9M= +cloud.google.com/go/cloudbuild v1.7.0/go.mod h1:zb5tWh2XI6lR9zQmsm1VRA+7OCuve5d8S+zJUul8KTg= +cloud.google.com/go/cloudbuild v1.9.0/go.mod h1:qK1d7s4QlO0VwfYn5YuClDGg2hfmLZEb4wQGAbIgL1s= +cloud.google.com/go/cloudbuild v1.10.1/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU= +cloud.google.com/go/cloudbuild v1.13.0/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU= +cloud.google.com/go/cloudbuild v1.14.0/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU= +cloud.google.com/go/cloudbuild v1.14.1/go.mod h1:K7wGc/3zfvmYWOWwYTgF/d/UVJhS4pu+HAy7PL7mCsU= +cloud.google.com/go/cloudbuild v1.14.2/go.mod h1:Bn6RO0mBYk8Vlrt+8NLrru7WXlQ9/RDWz2uo5KG1/sg= +cloud.google.com/go/cloudbuild v1.14.3/go.mod h1:eIXYWmRt3UtggLnFGx4JvXcMj4kShhVzGndL1LwleEM= +cloud.google.com/go/cloudbuild v1.15.0/go.mod h1:eIXYWmRt3UtggLnFGx4JvXcMj4kShhVzGndL1LwleEM= +cloud.google.com/go/cloudbuild v1.15.1/go.mod h1:gIofXZSu+XD2Uy+qkOrGKEx45zd7s28u/k8f99qKals= +cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= +cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= +cloud.google.com/go/clouddms v1.5.0/go.mod h1:QSxQnhikCLUw13iAbffF2CZxAER3xDGNHjsTAkQJcQA= +cloud.google.com/go/clouddms v1.6.1/go.mod h1:Ygo1vL52Ov4TBZQquhz5fiw2CQ58gvu+PlS6PVXCpZI= +cloud.google.com/go/clouddms v1.7.0/go.mod h1:MW1dC6SOtI/tPNCciTsXtsGNEM0i0OccykPvv3hiYeM= +cloud.google.com/go/clouddms v1.7.1/go.mod h1:o4SR8U95+P7gZ/TX+YbJxehOCsM+fe6/brlrFquiszk= +cloud.google.com/go/clouddms v1.7.2/go.mod h1:Rk32TmWmHo64XqDvW7jgkFQet1tUKNVzs7oajtJT3jU= +cloud.google.com/go/clouddms v1.7.3/go.mod h1:fkN2HQQNUYInAU3NQ3vRLkV2iWs8lIdmBKOx4nrL6Hc= +cloud.google.com/go/clouddms v1.7.4/go.mod h1:RdrVqoFG9RWI5AvZ81SxJ/xvxPdtcRhFotwdE79DieY= +cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= +cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI= +cloud.google.com/go/cloudtasks v1.9.0/go.mod h1:w+EyLsVkLWHcOaqNEyvcKAsWp9p29dL6uL9Nst1cI7Y= +cloud.google.com/go/cloudtasks v1.10.0/go.mod h1:NDSoTLkZ3+vExFEWu2UJV1arUyzVDAiZtdWcsUyNwBs= +cloud.google.com/go/cloudtasks v1.11.1/go.mod h1:a9udmnou9KO2iulGscKR0qBYjreuX8oHwpmFsKspEvM= +cloud.google.com/go/cloudtasks v1.12.1/go.mod h1:a9udmnou9KO2iulGscKR0qBYjreuX8oHwpmFsKspEvM= +cloud.google.com/go/cloudtasks v1.12.2/go.mod h1:A7nYkjNlW2gUoROg1kvJrQGhJP/38UaWwsnuBDOBVUk= +cloud.google.com/go/cloudtasks v1.12.3/go.mod h1:GPVXhIOSGEaR+3xT4Fp72ScI+HjHffSS4B8+BaBB5Ys= +cloud.google.com/go/cloudtasks v1.12.4/go.mod h1:BEPu0Gtt2dU6FxZHNqqNdGqIG86qyWKBPGnsb7udGY0= +cloud.google.com/go/cloudtasks v1.12.6/go.mod h1:b7c7fe4+TJsFZfDyzO51F7cjq7HLUlRi/KZQLQjDsaY= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= +cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE= +cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= +cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA= +cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= +cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= +cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= +cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= +cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.21.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.23.1/go.mod h1:CqB3xpmPKKt3OJpW2ndFIXnA9A4xAy/F3Xp1ixncW78= +cloud.google.com/go/compute v1.23.2/go.mod h1:JJ0atRC0J/oWYiiVBmsSsrRnh92DhZPG4hFDcR04Rns= +cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= +cloud.google.com/go/compute v1.23.4/go.mod h1:/EJMj55asU6kAFnuZET8zqgwgJ9FvXWXOkkfQZa4ioI= +cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= +cloud.google.com/go/compute v1.25.1/go.mod h1:oopOIR53ly6viBYxaDhBfJwzUAxf1zE//uf3IB011ls= +cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= +cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= +cloud.google.com/go/compute/metadata v0.5.2/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k= +cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= +cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= +cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= +cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= +cloud.google.com/go/contactcenterinsights v1.9.1/go.mod h1:bsg/R7zGLYMVxFFzfh9ooLTruLRCG9fnzhH9KznHhbM= +cloud.google.com/go/contactcenterinsights v1.10.0/go.mod h1:bsg/R7zGLYMVxFFzfh9ooLTruLRCG9fnzhH9KznHhbM= +cloud.google.com/go/contactcenterinsights v1.11.0/go.mod h1:hutBdImE4XNZ1NV4vbPJKSFOnQruhC5Lj9bZqWMTKiU= +cloud.google.com/go/contactcenterinsights v1.11.1/go.mod h1:FeNP3Kg8iteKM80lMwSk3zZZKVxr+PGnAId6soKuXwE= +cloud.google.com/go/contactcenterinsights v1.11.2/go.mod h1:A9PIR5ov5cRcd28KlDbmmXE8Aay+Gccer2h4wzkYFso= +cloud.google.com/go/contactcenterinsights v1.11.3/go.mod h1:HHX5wrz5LHVAwfI2smIotQG9x8Qd6gYilaHcLLLmNis= +cloud.google.com/go/contactcenterinsights v1.12.0/go.mod h1:HHX5wrz5LHVAwfI2smIotQG9x8Qd6gYilaHcLLLmNis= +cloud.google.com/go/contactcenterinsights v1.12.1/go.mod h1:HHX5wrz5LHVAwfI2smIotQG9x8Qd6gYilaHcLLLmNis= +cloud.google.com/go/contactcenterinsights v1.13.0/go.mod h1:ieq5d5EtHsu8vhe2y3amtZ+BE+AQwX5qAy7cpo0POsI= +cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= +cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= +cloud.google.com/go/container v1.13.1/go.mod h1:6wgbMPeQRw9rSnKBCAJXnds3Pzj03C4JHamr8asWKy4= +cloud.google.com/go/container v1.14.0/go.mod h1:3AoJMPhHfLDxLvrlVWaK57IXzaPnLaZq63WX59aQBfM= +cloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA= +cloud.google.com/go/container v1.22.1/go.mod h1:lTNExE2R7f+DLbAN+rJiKTisauFCaoDq6NURZ83eVH4= +cloud.google.com/go/container v1.24.0/go.mod h1:lTNExE2R7f+DLbAN+rJiKTisauFCaoDq6NURZ83eVH4= +cloud.google.com/go/container v1.26.0/go.mod h1:YJCmRet6+6jnYYRS000T6k0D0xUXQgBSaJ7VwI8FBj4= +cloud.google.com/go/container v1.26.1/go.mod h1:5smONjPRUxeEpDG7bMKWfDL4sauswqEtnBK1/KKpR04= +cloud.google.com/go/container v1.26.2/go.mod h1:YlO84xCt5xupVbLaMY4s3XNE79MUJ+49VmkInr6HvF4= +cloud.google.com/go/container v1.27.1/go.mod h1:b1A1gJeTBXVLQ6GGw9/9M4FG94BEGsqJ5+t4d/3N7O4= +cloud.google.com/go/container v1.28.0/go.mod h1:b1A1gJeTBXVLQ6GGw9/9M4FG94BEGsqJ5+t4d/3N7O4= +cloud.google.com/go/container v1.29.0/go.mod h1:b1A1gJeTBXVLQ6GGw9/9M4FG94BEGsqJ5+t4d/3N7O4= +cloud.google.com/go/container v1.30.1/go.mod h1:vkbfX0EnAKL/vgVECs5BZn24e1cJROzgszJirRKQ4Bg= +cloud.google.com/go/container v1.31.0/go.mod h1:7yABn5s3Iv3lmw7oMmyGbeV6tQj86njcTijkkGuvdZA= +cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/containeranalysis v0.7.0/go.mod h1:9aUL+/vZ55P2CXfuZjS4UjQ9AgXoSw8Ts6lemfmxBxI= +cloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s= +cloud.google.com/go/containeranalysis v0.10.1/go.mod h1:Ya2jiILITMY68ZLPaogjmOMNkwsDrWBSTyBubGXO7j0= +cloud.google.com/go/containeranalysis v0.11.0/go.mod h1:4n2e99ZwpGxpNcz+YsFT1dfOHPQFGcAC8FN2M2/ne/U= +cloud.google.com/go/containeranalysis v0.11.1/go.mod h1:rYlUOM7nem1OJMKwE1SadufX0JP3wnXj844EtZAwWLY= +cloud.google.com/go/containeranalysis v0.11.2/go.mod h1:xibioGBC1MD2j4reTyV1xY1/MvKaz+fyM9ENWhmIeP8= +cloud.google.com/go/containeranalysis v0.11.3/go.mod h1:kMeST7yWFQMGjiG9K7Eov+fPNQcGhb8mXj/UcTiWw9U= +cloud.google.com/go/containeranalysis v0.11.4/go.mod h1:cVZT7rXYBS9NG1rhQbWL9pWbXCKHWJPYraE8/FTSYPE= +cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= +cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= +cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM= +cloud.google.com/go/datacatalog v1.8.1/go.mod h1:RJ58z4rMp3gvETA465Vg+ag8BGgBdnRPEMMSTr5Uv+M= +cloud.google.com/go/datacatalog v1.12.0/go.mod h1:CWae8rFkfp6LzLumKOnmVh4+Zle4A3NXLzVJ1d1mRm0= +cloud.google.com/go/datacatalog v1.13.0/go.mod h1:E4Rj9a5ZtAxcQJlEBTLgMTphfP11/lNaAshpoBgemX8= +cloud.google.com/go/datacatalog v1.14.0/go.mod h1:h0PrGtlihoutNMp/uvwhawLQ9+c63Kz65UFqh49Yo+E= +cloud.google.com/go/datacatalog v1.14.1/go.mod h1:d2CevwTG4yedZilwe+v3E3ZBDRMobQfSG/a6cCCN5R4= +cloud.google.com/go/datacatalog v1.16.0/go.mod h1:d2CevwTG4yedZilwe+v3E3ZBDRMobQfSG/a6cCCN5R4= +cloud.google.com/go/datacatalog v1.17.1/go.mod h1:nCSYFHgtxh2MiEktWIz71s/X+7ds/UT9kp0PC7waCzE= +cloud.google.com/go/datacatalog v1.18.0/go.mod h1:nCSYFHgtxh2MiEktWIz71s/X+7ds/UT9kp0PC7waCzE= +cloud.google.com/go/datacatalog v1.18.1/go.mod h1:TzAWaz+ON1tkNr4MOcak8EBHX7wIRX/gZKM+yTVsv+A= +cloud.google.com/go/datacatalog v1.18.2/go.mod h1:SPVgWW2WEMuWHA+fHodYjmxPiMqcOiWfhc9OD5msigk= +cloud.google.com/go/datacatalog v1.18.3/go.mod h1:5FR6ZIF8RZrtml0VUao22FxhdjkoG+a0866rEnObryM= +cloud.google.com/go/datacatalog v1.19.0/go.mod h1:5FR6ZIF8RZrtml0VUao22FxhdjkoG+a0866rEnObryM= +cloud.google.com/go/datacatalog v1.19.2/go.mod h1:2YbODwmhpLM4lOFe3PuEhHK9EyTzQJ5AXgIy7EDKTEE= +cloud.google.com/go/datacatalog v1.19.3/go.mod h1:ra8V3UAsciBpJKQ+z9Whkxzxv7jmQg1hfODr3N3YPJ4= +cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataflow v0.8.0/go.mod h1:Rcf5YgTKPtQyYz8bLYhFoIV/vP39eL7fWNcSOyFfLJE= +cloud.google.com/go/dataflow v0.9.1/go.mod h1:Wp7s32QjYuQDWqJPFFlnBKhkAtiFpMTdg00qGbnIHVw= +cloud.google.com/go/dataflow v0.9.2/go.mod h1:vBfdBZ/ejlTaYIGB3zB4T08UshH70vbtZeMD+urnUSo= +cloud.google.com/go/dataflow v0.9.3/go.mod h1:HI4kMVjcHGTs3jTHW/kv3501YW+eloiJSLxkJa/vqFE= +cloud.google.com/go/dataflow v0.9.4/go.mod h1:4G8vAkHYCSzU8b/kmsoR2lWyHJD85oMJPHMtan40K8w= +cloud.google.com/go/dataflow v0.9.5/go.mod h1:udl6oi8pfUHnL0z6UN9Lf9chGqzDMVqcYTcZ1aPnCZQ= +cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= +cloud.google.com/go/dataform v0.6.0/go.mod h1:QPflImQy33e29VuapFdf19oPbE4aYTJxr31OAPV+ulA= +cloud.google.com/go/dataform v0.7.0/go.mod h1:7NulqnVozfHvWUBpMDfKMUESr+85aJsC/2O0o3jWPDE= +cloud.google.com/go/dataform v0.8.1/go.mod h1:3BhPSiw8xmppbgzeBbmDvmSWlwouuJkXsXsb8UBih9M= +cloud.google.com/go/dataform v0.8.2/go.mod h1:X9RIqDs6NbGPLR80tnYoPNiO1w0wenKTb8PxxlhTMKM= +cloud.google.com/go/dataform v0.8.3/go.mod h1:8nI/tvv5Fso0drO3pEjtowz58lodx8MVkdV2q0aPlqg= +cloud.google.com/go/dataform v0.9.1/go.mod h1:pWTg+zGQ7i16pyn0bS1ruqIE91SdL2FDMvEYu/8oQxs= +cloud.google.com/go/dataform v0.9.2/go.mod h1:S8cQUwPNWXo7m/g3DhWHsLBoufRNn9EgFrMgne2j7cI= +cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= +cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= +cloud.google.com/go/datafusion v1.6.0/go.mod h1:WBsMF8F1RhSXvVM8rCV3AeyWVxcC2xY6vith3iw3S+8= +cloud.google.com/go/datafusion v1.7.1/go.mod h1:KpoTBbFmoToDExJUso/fcCiguGDk7MEzOWXUsJo0wsI= +cloud.google.com/go/datafusion v1.7.2/go.mod h1:62K2NEC6DRlpNmI43WHMWf9Vg/YvN6QVi8EVwifElI0= +cloud.google.com/go/datafusion v1.7.3/go.mod h1:eoLt1uFXKGBq48jy9LZ+Is8EAVLnmn50lNncLzwYokE= +cloud.google.com/go/datafusion v1.7.4/go.mod h1:BBs78WTOLYkT4GVZIXQCZT3GFpkpDN4aBY4NDX/jVlM= +cloud.google.com/go/datafusion v1.7.5/go.mod h1:bYH53Oa5UiqahfbNK9YuYKteeD4RbQSNMx7JF7peGHc= +cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/datalabeling v0.7.0/go.mod h1:WPQb1y08RJbmpM3ww0CSUAGweL0SxByuW2E+FU+wXcM= +cloud.google.com/go/datalabeling v0.8.1/go.mod h1:XS62LBSVPbYR54GfYQsPXZjTW8UxCK2fkDciSrpRFdY= +cloud.google.com/go/datalabeling v0.8.2/go.mod h1:cyDvGHuJWu9U/cLDA7d8sb9a0tWLEletStu2sTmg3BE= +cloud.google.com/go/datalabeling v0.8.3/go.mod h1:tvPhpGyS/V7lqjmb3V0TaDdGvhzgR1JoW7G2bpi2UTI= +cloud.google.com/go/datalabeling v0.8.4/go.mod h1:Z1z3E6LHtffBGrNUkKwbwbDxTiXEApLzIgmymj8A3S8= +cloud.google.com/go/datalabeling v0.8.5/go.mod h1:IABB2lxQnkdUbMnQaOl2prCOfms20mcPxDBm36lps+s= +cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= +cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= +cloud.google.com/go/dataplex v1.5.2/go.mod h1:cVMgQHsmfRoI5KFYq4JtIBEUbYwc3c7tXmIDhRmNNVQ= +cloud.google.com/go/dataplex v1.6.0/go.mod h1:bMsomC/aEJOSpHXdFKFGQ1b0TDPIeL28nJObeO1ppRs= +cloud.google.com/go/dataplex v1.8.1/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE= +cloud.google.com/go/dataplex v1.9.0/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE= +cloud.google.com/go/dataplex v1.9.1/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE= +cloud.google.com/go/dataplex v1.10.1/go.mod h1:1MzmBv8FvjYfc7vDdxhnLFNskikkB+3vl475/XdCDhs= +cloud.google.com/go/dataplex v1.10.2/go.mod h1:xdC8URdTrCrZMW6keY779ZT1cTOfV8KEPNsw+LTRT1Y= +cloud.google.com/go/dataplex v1.11.1/go.mod h1:mHJYQQ2VEJHsyoC0OdNyy988DvEbPhqFs5OOLffLX0c= +cloud.google.com/go/dataplex v1.11.2/go.mod h1:mHJYQQ2VEJHsyoC0OdNyy988DvEbPhqFs5OOLffLX0c= +cloud.google.com/go/dataplex v1.13.0/go.mod h1:mHJYQQ2VEJHsyoC0OdNyy988DvEbPhqFs5OOLffLX0c= +cloud.google.com/go/dataplex v1.14.0/go.mod h1:mHJYQQ2VEJHsyoC0OdNyy988DvEbPhqFs5OOLffLX0c= +cloud.google.com/go/dataplex v1.14.1/go.mod h1:bWxQAbg6Smg+sca2+Ex7s8D9a5qU6xfXtwmq4BVReps= +cloud.google.com/go/dataplex v1.14.2/go.mod h1:0oGOSFlEKef1cQeAHXy4GZPB/Ife0fz/PxBf+ZymA2U= +cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= +cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= +cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= +cloud.google.com/go/dataproc/v2 v2.0.1/go.mod h1:7Ez3KRHdFGcfY7GcevBbvozX+zyWGcwLJvvAMwCaoZ4= +cloud.google.com/go/dataproc/v2 v2.2.0/go.mod h1:lZR7AQtwZPvmINx5J87DSOOpTfof9LVZju6/Qo4lmcY= +cloud.google.com/go/dataproc/v2 v2.2.1/go.mod h1:QdAJLaBjh+l4PVlVZcmrmhGccosY/omC1qwfQ61Zv/o= +cloud.google.com/go/dataproc/v2 v2.2.2/go.mod h1:aocQywVmQVF4i8CL740rNI/ZRpsaaC1Wh2++BJ7HEJ4= +cloud.google.com/go/dataproc/v2 v2.2.3/go.mod h1:G5R6GBc9r36SXv/RtZIVfB8SipI+xVn0bX5SxUzVYbY= +cloud.google.com/go/dataproc/v2 v2.3.0/go.mod h1:G5R6GBc9r36SXv/RtZIVfB8SipI+xVn0bX5SxUzVYbY= +cloud.google.com/go/dataproc/v2 v2.4.0/go.mod h1:3B1Ht2aRB8VZIteGxQS/iNSJGzt9+CA0WGnDVMEm7Z4= +cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= +cloud.google.com/go/dataqna v0.7.0/go.mod h1:Lx9OcIIeqCrw1a6KdO3/5KMP1wAmTc0slZWwP12Qq3c= +cloud.google.com/go/dataqna v0.8.1/go.mod h1:zxZM0Bl6liMePWsHA8RMGAfmTG34vJMapbHAxQ5+WA8= +cloud.google.com/go/dataqna v0.8.2/go.mod h1:KNEqgx8TTmUipnQsScOoDpq/VlXVptUqVMZnt30WAPs= +cloud.google.com/go/dataqna v0.8.3/go.mod h1:wXNBW2uvc9e7Gl5k8adyAMnLush1KVV6lZUhB+rqNu4= +cloud.google.com/go/dataqna v0.8.4/go.mod h1:mySRKjKg5Lz784P6sCov3p1QD+RZQONRMRjzGNcFd0c= +cloud.google.com/go/dataqna v0.8.5/go.mod h1:vgihg1mz6n7pb5q2YJF7KlXve6tCglInd6XO0JGOlWM= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= +cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= +cloud.google.com/go/datastore v1.11.0/go.mod h1:TvGxBIHCS50u8jzG+AW/ppf87v1of8nwzFNgEZU1D3c= +cloud.google.com/go/datastore v1.12.0/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= +cloud.google.com/go/datastore v1.12.1/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= +cloud.google.com/go/datastore v1.13.0/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= +cloud.google.com/go/datastore v1.14.0/go.mod h1:GAeStMBIt9bPS7jMJA85kgkpsMkvseWWXiaHya9Jes8= +cloud.google.com/go/datastore v1.15.0/go.mod h1:GAeStMBIt9bPS7jMJA85kgkpsMkvseWWXiaHya9Jes8= +cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= +cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4= +cloud.google.com/go/datastream v1.6.0/go.mod h1:6LQSuswqLa7S4rPAOZFVjHIG3wJIjZcZrw8JDEDJuIs= +cloud.google.com/go/datastream v1.7.0/go.mod h1:uxVRMm2elUSPuh65IbZpzJNMbuzkcvu5CjMqVIUHrww= +cloud.google.com/go/datastream v1.9.1/go.mod h1:hqnmr8kdUBmrnk65k5wNRoHSCYksvpdZIcZIEl8h43Q= +cloud.google.com/go/datastream v1.10.0/go.mod h1:hqnmr8kdUBmrnk65k5wNRoHSCYksvpdZIcZIEl8h43Q= +cloud.google.com/go/datastream v1.10.1/go.mod h1:7ngSYwnw95YFyTd5tOGBxHlOZiL+OtpjheqU7t2/s/c= +cloud.google.com/go/datastream v1.10.2/go.mod h1:W42TFgKAs/om6x/CdXX5E4oiAsKlH+e8MTGy81zdYt0= +cloud.google.com/go/datastream v1.10.3/go.mod h1:YR0USzgjhqA/Id0Ycu1VvZe8hEWwrkjuXrGbzeDOSEA= +cloud.google.com/go/datastream v1.10.4/go.mod h1:7kRxPdxZxhPg3MFeCSulmAJnil8NJGGvSNdn4p1sRZo= +cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= +cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= +cloud.google.com/go/deploy v1.6.0/go.mod h1:f9PTHehG/DjCom3QH0cntOVRm93uGBDt2vKzAPwpXQI= +cloud.google.com/go/deploy v1.8.0/go.mod h1:z3myEJnA/2wnB4sgjqdMfgxCA0EqC3RBTNcVPs93mtQ= +cloud.google.com/go/deploy v1.11.0/go.mod h1:tKuSUV5pXbn67KiubiUNUejqLs4f5cxxiCNCeyl0F2g= +cloud.google.com/go/deploy v1.13.0/go.mod h1:tKuSUV5pXbn67KiubiUNUejqLs4f5cxxiCNCeyl0F2g= +cloud.google.com/go/deploy v1.13.1/go.mod h1:8jeadyLkH9qu9xgO3hVWw8jVr29N1mnW42gRJT8GY6g= +cloud.google.com/go/deploy v1.14.1/go.mod h1:N8S0b+aIHSEeSr5ORVoC0+/mOPUysVt8ae4QkZYolAw= +cloud.google.com/go/deploy v1.14.2/go.mod h1:e5XOUI5D+YGldyLNZ21wbp9S8otJbBE4i88PtO9x/2g= +cloud.google.com/go/deploy v1.15.0/go.mod h1:e5XOUI5D+YGldyLNZ21wbp9S8otJbBE4i88PtO9x/2g= +cloud.google.com/go/deploy v1.16.0/go.mod h1:e5XOUI5D+YGldyLNZ21wbp9S8otJbBE4i88PtO9x/2g= +cloud.google.com/go/deploy v1.17.0/go.mod h1:XBr42U5jIr64t92gcpOXxNrqL2PStQCXHuKK5GRUuYo= +cloud.google.com/go/deploy v1.17.1/go.mod h1:SXQyfsXrk0fBmgBHRzBjQbZhMfKZ3hMQBw5ym7MN/50= +cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= +cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= +cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= +cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0= +cloud.google.com/go/dialogflow v1.29.0/go.mod h1:b+2bzMe+k1s9V+F2jbJwpHPzrnIyHihAdRFMtn2WXuM= +cloud.google.com/go/dialogflow v1.31.0/go.mod h1:cuoUccuL1Z+HADhyIA7dci3N5zUssgpBJmCzI6fNRB4= +cloud.google.com/go/dialogflow v1.32.0/go.mod h1:jG9TRJl8CKrDhMEcvfcfFkkpp8ZhgPz3sBGmAUYJ2qE= +cloud.google.com/go/dialogflow v1.38.0/go.mod h1:L7jnH+JL2mtmdChzAIcXQHXMvQkE3U4hTaNltEuxXn4= +cloud.google.com/go/dialogflow v1.40.0/go.mod h1:L7jnH+JL2mtmdChzAIcXQHXMvQkE3U4hTaNltEuxXn4= +cloud.google.com/go/dialogflow v1.43.0/go.mod h1:pDUJdi4elL0MFmt1REMvFkdsUTYSHq+rTCS8wg0S3+M= +cloud.google.com/go/dialogflow v1.44.0/go.mod h1:pDUJdi4elL0MFmt1REMvFkdsUTYSHq+rTCS8wg0S3+M= +cloud.google.com/go/dialogflow v1.44.1/go.mod h1:n/h+/N2ouKOO+rbe/ZnI186xImpqvCVj2DdsWS/0EAk= +cloud.google.com/go/dialogflow v1.44.2/go.mod h1:QzFYndeJhpVPElnFkUXxdlptx0wPnBWLCBT9BvtC3/c= +cloud.google.com/go/dialogflow v1.44.3/go.mod h1:mHly4vU7cPXVweuB5R0zsYKPMzy240aQdAu06SqBbAQ= +cloud.google.com/go/dialogflow v1.47.0/go.mod h1:mHly4vU7cPXVweuB5R0zsYKPMzy240aQdAu06SqBbAQ= +cloud.google.com/go/dialogflow v1.48.0/go.mod h1:mHly4vU7cPXVweuB5R0zsYKPMzy240aQdAu06SqBbAQ= +cloud.google.com/go/dialogflow v1.48.1/go.mod h1:C1sjs2/g9cEwjCltkKeYp3FFpz8BOzNondEaAlCpt+A= +cloud.google.com/go/dialogflow v1.48.2/go.mod h1:7A2oDf6JJ1/+hdpnFRfb/RjJUOh2X3rhIa5P8wQSEX4= +cloud.google.com/go/dialogflow v1.49.0/go.mod h1:dhVrXKETtdPlpPhE7+2/k4Z8FRNUp6kMV3EW3oz/fe0= +cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= +cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= +cloud.google.com/go/dlp v1.9.0/go.mod h1:qdgmqgTyReTz5/YNSSuueR8pl7hO0o9bQ39ZhtgkWp4= +cloud.google.com/go/dlp v1.10.1/go.mod h1:IM8BWz1iJd8njcNcG0+Kyd9OPnqnRNkDV8j42VT5KOI= +cloud.google.com/go/dlp v1.10.2/go.mod h1:ZbdKIhcnyhILgccwVDzkwqybthh7+MplGC3kZVZsIOQ= +cloud.google.com/go/dlp v1.10.3/go.mod h1:iUaTc/ln8I+QT6Ai5vmuwfw8fqTk2kaz0FvCwhLCom0= +cloud.google.com/go/dlp v1.11.1/go.mod h1:/PA2EnioBeXTL/0hInwgj0rfsQb3lpE3R8XUJxqUNKI= +cloud.google.com/go/dlp v1.11.2/go.mod h1:9Czi+8Y/FegpWzgSfkRlyz+jwW6Te9Rv26P3UfU/h/w= +cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= +cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4= +cloud.google.com/go/documentai v1.16.0/go.mod h1:o0o0DLTEZ+YnJZ+J4wNfTxmDVyrkzFvttBXXtYRMHkM= +cloud.google.com/go/documentai v1.18.0/go.mod h1:F6CK6iUH8J81FehpskRmhLq/3VlwQvb7TvwOceQ2tbs= +cloud.google.com/go/documentai v1.20.0/go.mod h1:yJkInoMcK0qNAEdRnqY/D5asy73tnPe88I1YTZT+a8E= +cloud.google.com/go/documentai v1.22.0/go.mod h1:yJkInoMcK0qNAEdRnqY/D5asy73tnPe88I1YTZT+a8E= +cloud.google.com/go/documentai v1.22.1/go.mod h1:LKs22aDHbJv7ufXuPypzRO7rG3ALLJxzdCXDPutw4Qc= +cloud.google.com/go/documentai v1.23.0/go.mod h1:LKs22aDHbJv7ufXuPypzRO7rG3ALLJxzdCXDPutw4Qc= +cloud.google.com/go/documentai v1.23.2/go.mod h1:Q/wcRT+qnuXOpjAkvOV4A+IeQl04q2/ReT7SSbytLSo= +cloud.google.com/go/documentai v1.23.4/go.mod h1:4MYAaEMnADPN1LPN5xboDR5QVB6AgsaxgFdJhitlE2Y= +cloud.google.com/go/documentai v1.23.5/go.mod h1:ghzBsyVTiVdkfKaUCum/9bGBEyBjDO4GfooEcYKhN+g= +cloud.google.com/go/documentai v1.23.6/go.mod h1:ghzBsyVTiVdkfKaUCum/9bGBEyBjDO4GfooEcYKhN+g= +cloud.google.com/go/documentai v1.23.7/go.mod h1:ghzBsyVTiVdkfKaUCum/9bGBEyBjDO4GfooEcYKhN+g= +cloud.google.com/go/documentai v1.23.8/go.mod h1:Vd/y5PosxCpUHmwC+v9arZyeMfTqBR9VIwOwIqQYYfA= +cloud.google.com/go/documentai v1.25.0/go.mod h1:ftLnzw5VcXkLItp6pw1mFic91tMRyfv6hHEY5br4KzY= +cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/domains v0.8.0/go.mod h1:M9i3MMDzGFXsydri9/vW+EWz9sWb4I6WyHqdlAk0idE= +cloud.google.com/go/domains v0.9.1/go.mod h1:aOp1c0MbejQQ2Pjf1iJvnVyT+z6R6s8pX66KaCSDYfE= +cloud.google.com/go/domains v0.9.2/go.mod h1:3YvXGYzZG1Temjbk7EyGCuGGiXHJwVNmwIf+E/cUp5I= +cloud.google.com/go/domains v0.9.3/go.mod h1:29k66YNDLDY9LCFKpGFeh6Nj9r62ZKm5EsUJxAl84KU= +cloud.google.com/go/domains v0.9.4/go.mod h1:27jmJGShuXYdUNjyDG0SodTfT5RwLi7xmH334Gvi3fY= +cloud.google.com/go/domains v0.9.5/go.mod h1:dBzlxgepazdFhvG7u23XMhmMKBjrkoUNaw0A8AQB55Y= +cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= +cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/edgecontainer v0.3.0/go.mod h1:FLDpP4nykgwwIfcLt6zInhprzw0lEi2P1fjO6Ie0qbc= +cloud.google.com/go/edgecontainer v1.0.0/go.mod h1:cttArqZpBB2q58W/upSG++ooo6EsblxDIolxa3jSjbY= +cloud.google.com/go/edgecontainer v1.1.1/go.mod h1:O5bYcS//7MELQZs3+7mabRqoWQhXCzenBu0R8bz2rwk= +cloud.google.com/go/edgecontainer v1.1.2/go.mod h1:wQRjIzqxEs9e9wrtle4hQPSR1Y51kqN75dgF7UllZZ4= +cloud.google.com/go/edgecontainer v1.1.3/go.mod h1:Ll2DtIABzEfaxaVSbwj3QHFaOOovlDFiWVDu349jSsA= +cloud.google.com/go/edgecontainer v1.1.4/go.mod h1:AvFdVuZuVGdgaE5YvlL1faAoa1ndRR/5XhXZvPBHbsE= +cloud.google.com/go/edgecontainer v1.1.5/go.mod h1:rgcjrba3DEDEQAidT4yuzaKWTbkTI5zAMu3yy6ZWS0M= +cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= +cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= +cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= +cloud.google.com/go/essentialcontacts v1.5.0/go.mod h1:ay29Z4zODTuwliK7SnX8E86aUF2CTzdNtvv42niCX0M= +cloud.google.com/go/essentialcontacts v1.6.2/go.mod h1:T2tB6tX+TRak7i88Fb2N9Ok3PvY3UNbUsMag9/BARh4= +cloud.google.com/go/essentialcontacts v1.6.3/go.mod h1:yiPCD7f2TkP82oJEFXFTou8Jl8L6LBRPeBEkTaO0Ggo= +cloud.google.com/go/essentialcontacts v1.6.4/go.mod h1:iju5Vy3d9tJUg0PYMd1nHhjV7xoCXaOAVabrwLaPBEM= +cloud.google.com/go/essentialcontacts v1.6.5/go.mod h1:jjYbPzw0x+yglXC890l6ECJWdYeZ5dlYACTFL0U/VuM= +cloud.google.com/go/essentialcontacts v1.6.6/go.mod h1:XbqHJGaiH0v2UvtuucfOzFXN+rpL/aU5BCZLn4DYl1Q= +cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= +cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= +cloud.google.com/go/eventarc v1.10.0/go.mod h1:u3R35tmZ9HvswGRBnF48IlYgYeBcPUCjkr4BTdem2Kw= +cloud.google.com/go/eventarc v1.11.0/go.mod h1:PyUjsUKPWoRBCHeOxZd/lbOOjahV41icXyUY5kSTvVY= +cloud.google.com/go/eventarc v1.12.1/go.mod h1:mAFCW6lukH5+IZjkvrEss+jmt2kOdYlN8aMx3sRJiAI= +cloud.google.com/go/eventarc v1.13.0/go.mod h1:mAFCW6lukH5+IZjkvrEss+jmt2kOdYlN8aMx3sRJiAI= +cloud.google.com/go/eventarc v1.13.1/go.mod h1:EqBxmGHFrruIara4FUQ3RHlgfCn7yo1HYsu2Hpt/C3Y= +cloud.google.com/go/eventarc v1.13.2/go.mod h1:X9A80ShVu19fb4e5sc/OLV7mpFUKZMwfJFeeWhcIObM= +cloud.google.com/go/eventarc v1.13.3/go.mod h1:RWH10IAZIRcj1s/vClXkBgMHwh59ts7hSWcqD3kaclg= +cloud.google.com/go/eventarc v1.13.4/go.mod h1:zV5sFVoAa9orc/52Q+OuYUG9xL2IIZTbbuTHC6JSY8s= +cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= +cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= +cloud.google.com/go/filestore v1.5.0/go.mod h1:FqBXDWBp4YLHqRnVGveOkHDf8svj9r5+mUDLupOWEDs= +cloud.google.com/go/filestore v1.6.0/go.mod h1:di5unNuss/qfZTw2U9nhFqo8/ZDSc466dre85Kydllg= +cloud.google.com/go/filestore v1.7.1/go.mod h1:y10jsorq40JJnjR/lQ8AfFbbcGlw3g+Dp8oN7i7FjV4= +cloud.google.com/go/filestore v1.7.2/go.mod h1:TYOlyJs25f/omgj+vY7/tIG/E7BX369triSPzE4LdgE= +cloud.google.com/go/filestore v1.7.3/go.mod h1:Qp8WaEERR3cSkxToxFPHh/b8AACkSut+4qlCjAmKTV0= +cloud.google.com/go/filestore v1.7.4/go.mod h1:S5JCxIbFjeBhWMTfIYH2Jx24J6BqjwpkkPl+nBA5DlI= +cloud.google.com/go/filestore v1.8.0/go.mod h1:S5JCxIbFjeBhWMTfIYH2Jx24J6BqjwpkkPl+nBA5DlI= +cloud.google.com/go/filestore v1.8.1/go.mod h1:MbN9KcaM47DRTIuLfQhJEsjaocVebNtNQhSLhKCF5GM= +cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= +cloud.google.com/go/firestore v1.11.0/go.mod h1:b38dKhgzlmNNGTNZZwe7ZRFEuRab1Hay3/DBsIGKKy4= +cloud.google.com/go/firestore v1.12.0/go.mod h1:b38dKhgzlmNNGTNZZwe7ZRFEuRab1Hay3/DBsIGKKy4= +cloud.google.com/go/firestore v1.13.0/go.mod h1:QojqqOh8IntInDUSTAh0c8ZsPYAr68Ma8c5DWOy8xb8= +cloud.google.com/go/firestore v1.14.0/go.mod h1:96MVaHLsEhbvkBEdZgfN+AS/GIkco1LRpH9Xp9YZfzQ= +cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= +cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08= +cloud.google.com/go/functions v1.10.0/go.mod h1:0D3hEOe3DbEvCXtYOZHQZmD+SzYsi1YbI7dGvHfldXw= +cloud.google.com/go/functions v1.12.0/go.mod h1:AXWGrF3e2C/5ehvwYo/GH6O5s09tOPksiKhz+hH8WkA= +cloud.google.com/go/functions v1.13.0/go.mod h1:EU4O007sQm6Ef/PwRsI8N2umygGqPBS/IZQKBQBcJ3c= +cloud.google.com/go/functions v1.15.1/go.mod h1:P5yNWUTkyU+LvW/S9O6V+V423VZooALQlqoXdoPz5AE= +cloud.google.com/go/functions v1.15.2/go.mod h1:CHAjtcR6OU4XF2HuiVeriEdELNcnvRZSk1Q8RMqy4lE= +cloud.google.com/go/functions v1.15.3/go.mod h1:r/AMHwBheapkkySEhiZYLDBwVJCdlRwsm4ieJu35/Ug= +cloud.google.com/go/functions v1.15.4/go.mod h1:CAsTc3VlRMVvx+XqXxKqVevguqJpnVip4DdonFsX28I= +cloud.google.com/go/functions v1.16.0/go.mod h1:nbNpfAG7SG7Duw/o1iZ6ohvL7mc6MapWQVpqtM29n8k= +cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= +cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM= +cloud.google.com/go/gaming v1.9.0/go.mod h1:Fc7kEmCObylSWLO334NcO+O9QMDyz+TKC4v1D7X+Bc0= +cloud.google.com/go/gaming v1.10.1/go.mod h1:XQQvtfP8Rb9Rxnxm5wFVpAp9zCQkJi2bLIb7iHGwB3s= +cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= +cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= +cloud.google.com/go/gkebackup v0.4.0/go.mod h1:byAyBGUwYGEEww7xsbnUTBHIYcOPy/PgUWUtOeRm9Vg= +cloud.google.com/go/gkebackup v1.3.0/go.mod h1:vUDOu++N0U5qs4IhG1pcOnD1Mac79xWy6GoBFlWCWBU= +cloud.google.com/go/gkebackup v1.3.1/go.mod h1:vUDOu++N0U5qs4IhG1pcOnD1Mac79xWy6GoBFlWCWBU= +cloud.google.com/go/gkebackup v1.3.2/go.mod h1:OMZbXzEJloyXMC7gqdSB+EOEQ1AKcpGYvO3s1ec5ixk= +cloud.google.com/go/gkebackup v1.3.3/go.mod h1:eMk7/wVV5P22KBakhQnJxWSVftL1p4VBFLpv0kIft7I= +cloud.google.com/go/gkebackup v1.3.4/go.mod h1:gLVlbM8h/nHIs09ns1qx3q3eaXcGSELgNu1DWXYz1HI= +cloud.google.com/go/gkebackup v1.3.5/go.mod h1:KJ77KkNN7Wm1LdMopOelV6OodM01pMuK2/5Zt1t4Tvc= +cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkeconnect v0.7.0/go.mod h1:SNfmVqPkaEi3bF/B3CNZOAYPYdg7sU+obZ+QTky2Myw= +cloud.google.com/go/gkeconnect v0.8.1/go.mod h1:KWiK1g9sDLZqhxB2xEuPV8V9NYzrqTUmQR9shJHpOZw= +cloud.google.com/go/gkeconnect v0.8.2/go.mod h1:6nAVhwchBJYgQCXD2pHBFQNiJNyAd/wyxljpaa6ZPrY= +cloud.google.com/go/gkeconnect v0.8.3/go.mod h1:i9GDTrfzBSUZGCe98qSu1B8YB8qfapT57PenIb820Jo= +cloud.google.com/go/gkeconnect v0.8.4/go.mod h1:84hZz4UMlDCKl8ifVW8layK4WHlMAFeq8vbzjU0yJkw= +cloud.google.com/go/gkeconnect v0.8.5/go.mod h1:LC/rS7+CuJ5fgIbXv8tCD/mdfnlAadTaUufgOkmijuk= +cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/gkehub v0.11.0/go.mod h1:JOWHlmN+GHyIbuWQPl47/C2RFhnFKH38jH9Ascu3n0E= +cloud.google.com/go/gkehub v0.12.0/go.mod h1:djiIwwzTTBrF5NaXCGv3mf7klpEMcST17VBTVVDcuaw= +cloud.google.com/go/gkehub v0.14.1/go.mod h1:VEXKIJZ2avzrbd7u+zeMtW00Y8ddk/4V9511C9CQGTY= +cloud.google.com/go/gkehub v0.14.2/go.mod h1:iyjYH23XzAxSdhrbmfoQdePnlMj2EWcvnR+tHdBQsCY= +cloud.google.com/go/gkehub v0.14.3/go.mod h1:jAl6WafkHHW18qgq7kqcrXYzN08hXeK/Va3utN8VKg8= +cloud.google.com/go/gkehub v0.14.4/go.mod h1:Xispfu2MqnnFt8rV/2/3o73SK1snL8s9dYJ9G2oQMfc= +cloud.google.com/go/gkehub v0.14.5/go.mod h1:6bzqxM+a+vEH/h8W8ec4OJl4r36laxTs3A/fMNHJ0wA= +cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= +cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= +cloud.google.com/go/gkemulticloud v0.5.0/go.mod h1:W0JDkiyi3Tqh0TJr//y19wyb1yf8llHVto2Htf2Ja3Y= +cloud.google.com/go/gkemulticloud v0.6.1/go.mod h1:kbZ3HKyTsiwqKX7Yw56+wUGwwNZViRnxWK2DVknXWfw= +cloud.google.com/go/gkemulticloud v1.0.0/go.mod h1:kbZ3HKyTsiwqKX7Yw56+wUGwwNZViRnxWK2DVknXWfw= +cloud.google.com/go/gkemulticloud v1.0.1/go.mod h1:AcrGoin6VLKT/fwZEYuqvVominLriQBCKmbjtnbMjG8= +cloud.google.com/go/gkemulticloud v1.0.2/go.mod h1:+ee5VXxKb3H1l4LZAcgWB/rvI16VTNTrInWxDjAGsGo= +cloud.google.com/go/gkemulticloud v1.0.3/go.mod h1:7NpJBN94U6DY1xHIbsDqB2+TFZUfjLUKLjUX8NGLor0= +cloud.google.com/go/gkemulticloud v1.1.0/go.mod h1:7NpJBN94U6DY1xHIbsDqB2+TFZUfjLUKLjUX8NGLor0= +cloud.google.com/go/gkemulticloud v1.1.1/go.mod h1:C+a4vcHlWeEIf45IB5FFR5XGjTeYhF83+AYIpTy4i2Q= +cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/grafeas v0.3.0/go.mod h1:P7hgN24EyONOTMyeJH6DxG4zD7fwiYa5Q6GUgyFSOU8= +cloud.google.com/go/grafeas v0.3.4/go.mod h1:A5m316hcG+AulafjAbPKXBO/+I5itU4LOdKO2R/uDIc= +cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= +cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= +cloud.google.com/go/gsuiteaddons v1.5.0/go.mod h1:TFCClYLd64Eaa12sFVmUyG62tk4mdIsI7pAnSXRkcFo= +cloud.google.com/go/gsuiteaddons v1.6.1/go.mod h1:CodrdOqRZcLp5WOwejHWYBjZvfY0kOphkAKpF/3qdZY= +cloud.google.com/go/gsuiteaddons v1.6.2/go.mod h1:K65m9XSgs8hTF3X9nNTPi8IQueljSdYo9F+Mi+s4MyU= +cloud.google.com/go/gsuiteaddons v1.6.3/go.mod h1:sCFJkZoMrLZT3JTb8uJqgKPNshH2tfXeCwTFRebTq48= +cloud.google.com/go/gsuiteaddons v1.6.4/go.mod h1:rxtstw7Fx22uLOXBpsvb9DUbC+fiXs7rF4U29KHM/pE= +cloud.google.com/go/gsuiteaddons v1.6.5/go.mod h1:Lo4P2IvO8uZ9W+RaC6s1JVxo42vgy+TX5a6hfBZ0ubs= +cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= +cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= +cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= +cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= +cloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY= +cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= +cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= +cloud.google.com/go/iam v1.0.1/go.mod h1:yR3tmSL8BcZB4bxByRv2jkSIahVmCtfKZwLYGBalRE8= +cloud.google.com/go/iam v1.1.0/go.mod h1:nxdHjaKfCr7fNYx/HJMM8LgiMugmveWlkatear5gVyk= +cloud.google.com/go/iam v1.1.1/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= +cloud.google.com/go/iam v1.1.2/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= +cloud.google.com/go/iam v1.1.3/go.mod h1:3khUlaBXfPKKe7huYgEpDn6FtgRyMEqbkvBxrQyY5SE= +cloud.google.com/go/iam v1.1.4/go.mod h1:l/rg8l1AaA+VFMho/HYx2Vv6xinPSLMF8qfhRPIZ0L8= +cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= +cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= +cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= +cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= +cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk= +cloud.google.com/go/iap v1.7.0/go.mod h1:beqQx56T9O1G1yNPph+spKpNibDlYIiIixiqsQXxLIo= +cloud.google.com/go/iap v1.7.1/go.mod h1:WapEwPc7ZxGt2jFGB/C/bm+hP0Y6NXzOYGjpPnmMS74= +cloud.google.com/go/iap v1.8.1/go.mod h1:sJCbeqg3mvWLqjZNsI6dfAtbbV1DL2Rl7e1mTyXYREQ= +cloud.google.com/go/iap v1.9.0/go.mod h1:01OFxd1R+NFrg78S+hoPV5PxEzv22HXaNqUUlmNHFuY= +cloud.google.com/go/iap v1.9.1/go.mod h1:SIAkY7cGMLohLSdBR25BuIxO+I4fXJiL06IBL7cy/5Q= +cloud.google.com/go/iap v1.9.2/go.mod h1:GwDTOs047PPSnwRD0Us5FKf4WDRcVvHg1q9WVkKBhdI= +cloud.google.com/go/iap v1.9.3/go.mod h1:DTdutSZBqkkOm2HEOTBzhZxh2mwwxshfD/h3yofAiCw= +cloud.google.com/go/iap v1.9.4/go.mod h1:vO4mSq0xNf/Pu6E5paORLASBwEmphXEjgCFg7aeNu1w= +cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= +cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= +cloud.google.com/go/ids v1.3.0/go.mod h1:JBdTYwANikFKaDP6LtW5JAi4gubs57SVNQjemdt6xV4= +cloud.google.com/go/ids v1.4.1/go.mod h1:np41ed8YMU8zOgv53MMMoCntLTn2lF+SUzlM+O3u/jw= +cloud.google.com/go/ids v1.4.2/go.mod h1:3vw8DX6YddRu9BncxuzMyWn0g8+ooUjI2gslJ7FH3vk= +cloud.google.com/go/ids v1.4.3/go.mod h1:9CXPqI3GedjmkjbMWCUhMZ2P2N7TUMzAkVXYEH2orYU= +cloud.google.com/go/ids v1.4.4/go.mod h1:z+WUc2eEl6S/1aZWzwtVNWoSZslgzPxAboS0lZX0HjI= +cloud.google.com/go/ids v1.4.5/go.mod h1:p0ZnyzjMWxww6d2DvMGnFwCsSxDJM666Iir1bK1UuBo= +cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= +cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= +cloud.google.com/go/iot v1.5.0/go.mod h1:mpz5259PDl3XJthEmh9+ap0affn/MqNSP4My77Qql9o= +cloud.google.com/go/iot v1.6.0/go.mod h1:IqdAsmE2cTYYNO1Fvjfzo9po179rAtJeVGUvkLN3rLE= +cloud.google.com/go/iot v1.7.1/go.mod h1:46Mgw7ev1k9KqK1ao0ayW9h0lI+3hxeanz+L1zmbbbk= +cloud.google.com/go/iot v1.7.2/go.mod h1:q+0P5zr1wRFpw7/MOgDXrG/HVA+l+cSwdObffkrpnSg= +cloud.google.com/go/iot v1.7.3/go.mod h1:t8itFchkol4VgNbHnIq9lXoOOtHNR3uAACQMYbN9N4I= +cloud.google.com/go/iot v1.7.4/go.mod h1:3TWqDVvsddYBG++nHSZmluoCAVGr1hAcabbWZNKEZLk= +cloud.google.com/go/iot v1.7.5/go.mod h1:nq3/sqTz3HGaWJi1xNiX7F41ThOzpud67vwk0YsSsqs= +cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= +cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= +cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= +cloud.google.com/go/kms v1.8.0/go.mod h1:4xFEhYFqvW+4VMELtZyxomGSYtSQKzM178ylFW4jMAg= +cloud.google.com/go/kms v1.9.0/go.mod h1:qb1tPTgfF9RQP8e1wq4cLFErVuTJv7UsSC915J8dh3w= +cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63m8d24= +cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI= +cloud.google.com/go/kms v1.11.0/go.mod h1:hwdiYC0xjnWsKQQCQQmIQnS9asjYVSK6jtXm+zFqXLM= +cloud.google.com/go/kms v1.12.1/go.mod h1:c9J991h5DTl+kg7gi3MYomh12YEENGrf48ee/N/2CDM= +cloud.google.com/go/kms v1.15.0/go.mod h1:c9J991h5DTl+kg7gi3MYomh12YEENGrf48ee/N/2CDM= +cloud.google.com/go/kms v1.15.2/go.mod h1:3hopT4+7ooWRCjc2DxgnpESFxhIraaI2IpAVUEhbT/w= +cloud.google.com/go/kms v1.15.3/go.mod h1:AJdXqHxS2GlPyduM99s9iGqi2nwbviBbhV/hdmt4iOQ= +cloud.google.com/go/kms v1.15.4/go.mod h1:L3Sdj6QTHK8dfwK5D1JLsAyELsNMnd3tAIwGS4ltKpc= +cloud.google.com/go/kms v1.15.5/go.mod h1:cU2H5jnp6G2TDpUGZyqTCoy1n16fbubHZjmVXSMtwDI= +cloud.google.com/go/kms v1.15.6/go.mod h1:yF75jttnIdHfGBoE51AKsD/Yqf+/jICzB9v1s1acsms= +cloud.google.com/go/kms v1.15.7/go.mod h1:ub54lbsa6tDkUwnu4W7Yt1aAIFLnspgh0kPGToDukeI= +cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= +cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= +cloud.google.com/go/language v1.9.0/go.mod h1:Ns15WooPM5Ad/5no/0n81yUetis74g3zrbeJBE+ptUY= +cloud.google.com/go/language v1.10.1/go.mod h1:CPp94nsdVNiQEt1CNjF5WkTcisLiHPyIbMhvR8H2AW0= +cloud.google.com/go/language v1.11.0/go.mod h1:uDx+pFDdAKTY8ehpWbiXyQdz8tDSYLJbQcXsCkjYyvQ= +cloud.google.com/go/language v1.11.1/go.mod h1:Xyid9MG9WOX3utvDbpX7j3tXDmmDooMyMDqgUVpH17U= +cloud.google.com/go/language v1.12.1/go.mod h1:zQhalE2QlQIxbKIZt54IASBzmZpN/aDASea5zl1l+J4= +cloud.google.com/go/language v1.12.2/go.mod h1:9idWapzr/JKXBBQ4lWqVX/hcadxB194ry20m/bTrhWc= +cloud.google.com/go/language v1.12.3/go.mod h1:evFX9wECX6mksEva8RbRnr/4wi/vKGYnAJrTRXU8+f8= +cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo= +cloud.google.com/go/lifesciences v0.9.1/go.mod h1:hACAOd1fFbCGLr/+weUKRAJas82Y4vrL3O5326N//Wc= +cloud.google.com/go/lifesciences v0.9.2/go.mod h1:QHEOO4tDzcSAzeJg7s2qwnLM2ji8IRpQl4p6m5Z9yTA= +cloud.google.com/go/lifesciences v0.9.3/go.mod h1:gNGBOJV80IWZdkd+xz4GQj4mbqaz737SCLHn2aRhQKM= +cloud.google.com/go/lifesciences v0.9.4/go.mod h1:bhm64duKhMi7s9jR9WYJYvjAFJwRqNj+Nia7hF0Z7JA= +cloud.google.com/go/lifesciences v0.9.5/go.mod h1:OdBm0n7C0Osh5yZB7j9BXyrMnTRGBJIZonUMxo5CzPw= +cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= +cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= +cloud.google.com/go/logging v1.8.1/go.mod h1:TJjR+SimHwuC8MZ9cjByQulAMgni+RkXeI3wwctHJEI= +cloud.google.com/go/logging v1.9.0/go.mod h1:1Io0vnZv4onoUnsVUQY3HZ3Igb1nBchky0A0y7BBBhE= +cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= +cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= +cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= +cloud.google.com/go/longrunning v0.4.2/go.mod h1:OHrnaYyLUV6oqwh0xiS7e5sLQhP1m0QU9R+WhGDMgIQ= +cloud.google.com/go/longrunning v0.5.0/go.mod h1:0JNuqRShmscVAhIACGtskSAWtqtOoPkwP0YF1oVEchc= +cloud.google.com/go/longrunning v0.5.1/go.mod h1:spvimkwdz6SPWKEt/XBij79E9fiTkHSQl/fRUUQJYJc= +cloud.google.com/go/longrunning v0.5.2/go.mod h1:nqo6DQbNV2pXhGDbDMoN2bWz68MjZUzqv2YttZiveCs= +cloud.google.com/go/longrunning v0.5.3/go.mod h1:y/0ga59EYu58J6SHmmQOvekvND2qODbu8ywBBW7EK7Y= +cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI= +cloud.google.com/go/longrunning v0.5.5/go.mod h1:WV2LAxD8/rg5Z1cNW6FJ/ZpX4E4VnDnoTk0yawPBB7s= +cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= +cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= +cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA= +cloud.google.com/go/managedidentities v1.6.1/go.mod h1:h/irGhTN2SkZ64F43tfGPMbHnypMbu4RB3yl8YcuEak= +cloud.google.com/go/managedidentities v1.6.2/go.mod h1:5c2VG66eCa0WIq6IylRk3TBW83l161zkFvCj28X7jn8= +cloud.google.com/go/managedidentities v1.6.3/go.mod h1:tewiat9WLyFN0Fi7q1fDD5+0N4VUoL0SCX0OTCthZq4= +cloud.google.com/go/managedidentities v1.6.4/go.mod h1:WgyaECfHmF00t/1Uk8Oun3CQ2PGUtjc3e9Alh79wyiM= +cloud.google.com/go/managedidentities v1.6.5/go.mod h1:fkFI2PwwyRQbjLxlm5bQ8SjtObFMW3ChBGNqaMcgZjI= +cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= +cloud.google.com/go/maps v0.6.0/go.mod h1:o6DAMMfb+aINHz/p/jbcY+mYeXBoZoxTfdSQ8VAJaCw= +cloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY= +cloud.google.com/go/maps v1.3.0/go.mod h1:6mWTUv+WhnOwAgjVsSW2QPPECmW+s3PcRyOa9vgG/5s= +cloud.google.com/go/maps v1.4.0/go.mod h1:6mWTUv+WhnOwAgjVsSW2QPPECmW+s3PcRyOa9vgG/5s= +cloud.google.com/go/maps v1.4.1/go.mod h1:BxSa0BnW1g2U2gNdbq5zikLlHUuHW0GFWh7sgML2kIY= +cloud.google.com/go/maps v1.5.1/go.mod h1:NPMZw1LJwQZYCfz4y+EIw+SI+24A4bpdFJqdKVr0lt4= +cloud.google.com/go/maps v1.6.1/go.mod h1:4+buOHhYXFBp58Zj/K+Lc1rCmJssxxF4pJ5CJnhdz18= +cloud.google.com/go/maps v1.6.2/go.mod h1:4+buOHhYXFBp58Zj/K+Lc1rCmJssxxF4pJ5CJnhdz18= +cloud.google.com/go/maps v1.6.3/go.mod h1:VGAn809ADswi1ASofL5lveOHPnE6Rk/SFTTBx1yuOLw= +cloud.google.com/go/maps v1.6.4/go.mod h1:rhjqRy8NWmDJ53saCfsXQ0LKwBHfi6OSh5wkq6BaMhI= +cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I= +cloud.google.com/go/mediatranslation v0.8.1/go.mod h1:L/7hBdEYbYHQJhX2sldtTO5SZZ1C1vkapubj0T2aGig= +cloud.google.com/go/mediatranslation v0.8.2/go.mod h1:c9pUaDRLkgHRx3irYE5ZC8tfXGrMYwNZdmDqKMSfFp8= +cloud.google.com/go/mediatranslation v0.8.3/go.mod h1:F9OnXTy336rteOEywtY7FOqCk+J43o2RF638hkOQl4Y= +cloud.google.com/go/mediatranslation v0.8.4/go.mod h1:9WstgtNVAdN53m6TQa5GjIjLqKQPXe74hwSCxUP6nj4= +cloud.google.com/go/mediatranslation v0.8.5/go.mod h1:y7kTHYIPCIfgyLbKncgqouXJtLsU+26hZhHEEy80fSs= +cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= +cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= +cloud.google.com/go/memcache v1.9.0/go.mod h1:8oEyzXCu+zo9RzlEaEjHl4KkgjlNDaXbCQeQWlzNFJM= +cloud.google.com/go/memcache v1.10.1/go.mod h1:47YRQIarv4I3QS5+hoETgKO40InqzLP6kpNLvyXuyaA= +cloud.google.com/go/memcache v1.10.2/go.mod h1:f9ZzJHLBrmd4BkguIAa/l/Vle6uTHzHokdnzSWOdQ6A= +cloud.google.com/go/memcache v1.10.3/go.mod h1:6z89A41MT2DVAW0P4iIRdu5cmRTsbsFn4cyiIx8gbwo= +cloud.google.com/go/memcache v1.10.4/go.mod h1:v/d8PuC8d1gD6Yn5+I3INzLR01IDn0N4Ym56RgikSI0= +cloud.google.com/go/memcache v1.10.5/go.mod h1:/FcblbNd0FdMsx4natdj+2GWzTq+cjZvMa1I+9QsuMA= +cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= +cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= +cloud.google.com/go/metastore v1.10.0/go.mod h1:fPEnH3g4JJAk+gMRnrAnoqyv2lpUCqJPWOodSaf45Eo= +cloud.google.com/go/metastore v1.11.1/go.mod h1:uZuSo80U3Wd4zi6C22ZZliOUJ3XeM/MlYi/z5OAOWRA= +cloud.google.com/go/metastore v1.12.0/go.mod h1:uZuSo80U3Wd4zi6C22ZZliOUJ3XeM/MlYi/z5OAOWRA= +cloud.google.com/go/metastore v1.13.0/go.mod h1:URDhpG6XLeh5K+Glq0NOt74OfrPKTwS62gEPZzb5SOk= +cloud.google.com/go/metastore v1.13.1/go.mod h1:IbF62JLxuZmhItCppcIfzBBfUFq0DIB9HPDoLgWrVOU= +cloud.google.com/go/metastore v1.13.2/go.mod h1:KS59dD+unBji/kFebVp8XU/quNSyo8b6N6tPGspKszA= +cloud.google.com/go/metastore v1.13.3/go.mod h1:K+wdjXdtkdk7AQg4+sXS8bRrQa9gcOr+foOMF2tqINE= +cloud.google.com/go/metastore v1.13.4/go.mod h1:FMv9bvPInEfX9Ac1cVcRXp8EBBQnBcqH6gz3KvJ9BAE= +cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= +cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= +cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w= +cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw= +cloud.google.com/go/monitoring v1.15.1/go.mod h1:lADlSAlFdbqQuwwpaImhsJXu1QSdd3ojypXrFSMr2rM= +cloud.google.com/go/monitoring v1.16.0/go.mod h1:Ptp15HgAyM1fNICAojDMoNc/wUmn67mLHQfyqbw+poY= +cloud.google.com/go/monitoring v1.16.1/go.mod h1:6HsxddR+3y9j+o/cMJH6q/KJ/CBTvM/38L/1m7bTRJ4= +cloud.google.com/go/monitoring v1.16.2/go.mod h1:B44KGwi4ZCF8Rk/5n+FWeispDXoKSk9oss2QNlXJBgc= +cloud.google.com/go/monitoring v1.16.3/go.mod h1:KwSsX5+8PnXv5NJnICZzW2R8pWTis8ypC4zmdRD63Tw= +cloud.google.com/go/monitoring v1.17.0/go.mod h1:KwSsX5+8PnXv5NJnICZzW2R8pWTis8ypC4zmdRD63Tw= +cloud.google.com/go/monitoring v1.17.1/go.mod h1:SJzPMakCF0GHOuKEH/r4hxVKF04zl+cRPQyc3d/fqII= +cloud.google.com/go/monitoring v1.18.0/go.mod h1:c92vVBCeq/OB4Ioyo+NbN2U7tlg5ZH41PZcdvfc+Lcg= +cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= +cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8= +cloud.google.com/go/networkconnectivity v1.10.0/go.mod h1:UP4O4sWXJG13AqrTdQCD9TnLGEbtNRqjuaaA7bNjF5E= +cloud.google.com/go/networkconnectivity v1.11.0/go.mod h1:iWmDD4QF16VCDLXUqvyspJjIEtBR/4zq5hwnY2X3scM= +cloud.google.com/go/networkconnectivity v1.12.1/go.mod h1:PelxSWYM7Sh9/guf8CFhi6vIqf19Ir/sbfZRUwXh92E= +cloud.google.com/go/networkconnectivity v1.13.0/go.mod h1:SAnGPes88pl7QRLUen2HmcBSE9AowVAcdug8c0RSBFk= +cloud.google.com/go/networkconnectivity v1.14.0/go.mod h1:SAnGPes88pl7QRLUen2HmcBSE9AowVAcdug8c0RSBFk= +cloud.google.com/go/networkconnectivity v1.14.1/go.mod h1:LyGPXR742uQcDxZ/wv4EI0Vu5N6NKJ77ZYVnDe69Zug= +cloud.google.com/go/networkconnectivity v1.14.2/go.mod h1:5UFlwIisZylSkGG1AdwK/WZUaoz12PKu6wODwIbFzJo= +cloud.google.com/go/networkconnectivity v1.14.3/go.mod h1:4aoeFdrJpYEXNvrnfyD5kIzs8YtHg945Og4koAjHQek= +cloud.google.com/go/networkconnectivity v1.14.4/go.mod h1:PU12q++/IMnDJAB+3r+tJtuCXCfwfN+C6Niyj6ji1Po= +cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= +cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= +cloud.google.com/go/networkmanagement v1.6.0/go.mod h1:5pKPqyXjB/sgtvB5xqOemumoQNB7y95Q7S+4rjSOPYY= +cloud.google.com/go/networkmanagement v1.8.0/go.mod h1:Ho/BUGmtyEqrttTgWEe7m+8vDdK74ibQc+Be0q7Fof0= +cloud.google.com/go/networkmanagement v1.9.0/go.mod h1:UTUaEU9YwbCAhhz3jEOHr+2/K/MrBk2XxOLS89LQzFw= +cloud.google.com/go/networkmanagement v1.9.1/go.mod h1:CCSYgrQQvW73EJawO2QamemYcOb57LvrDdDU51F0mcI= +cloud.google.com/go/networkmanagement v1.9.2/go.mod h1:iDGvGzAoYRghhp4j2Cji7sF899GnfGQcQRQwgVOWnDw= +cloud.google.com/go/networkmanagement v1.9.3/go.mod h1:y7WMO1bRLaP5h3Obm4tey+NquUvB93Co1oh4wpL+XcU= +cloud.google.com/go/networkmanagement v1.9.4/go.mod h1:daWJAl0KTFytFL7ar33I6R/oNBH8eEOX/rBNHrC/8TA= +cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/networksecurity v0.7.0/go.mod h1:mAnzoxx/8TBSyXEeESMy9OOYwo1v+gZ5eMRnsT5bC8k= +cloud.google.com/go/networksecurity v0.8.0/go.mod h1:B78DkqsxFG5zRSVuwYFRZ9Xz8IcQ5iECsNrPn74hKHU= +cloud.google.com/go/networksecurity v0.9.1/go.mod h1:MCMdxOKQ30wsBI1eI659f9kEp4wuuAueoC9AJKSPWZQ= +cloud.google.com/go/networksecurity v0.9.2/go.mod h1:jG0SeAttWzPMUILEHDUvFYdQTl8L/E/KC8iZDj85lEI= +cloud.google.com/go/networksecurity v0.9.3/go.mod h1:l+C0ynM6P+KV9YjOnx+kk5IZqMSLccdBqW6GUoF4p/0= +cloud.google.com/go/networksecurity v0.9.4/go.mod h1:E9CeMZ2zDsNBkr8axKSYm8XyTqNhiCHf1JO/Vb8mD1w= +cloud.google.com/go/networksecurity v0.9.5/go.mod h1:KNkjH/RsylSGyyZ8wXpue8xpCEK+bTtvof8SBfIhMG8= +cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= +cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0= +cloud.google.com/go/notebooks v1.7.0/go.mod h1:PVlaDGfJgj1fl1S3dUwhFMXFgfYGhYQt2164xOMONmE= +cloud.google.com/go/notebooks v1.8.0/go.mod h1:Lq6dYKOYOWUCTvw5t2q1gp1lAp0zxAxRycayS0iJcqQ= +cloud.google.com/go/notebooks v1.9.1/go.mod h1:zqG9/gk05JrzgBt4ghLzEepPHNwE5jgPcHZRKhlC1A8= +cloud.google.com/go/notebooks v1.10.0/go.mod h1:SOPYMZnttHxqot0SGSFSkRrwE29eqnKPBJFqgWmiK2k= +cloud.google.com/go/notebooks v1.10.1/go.mod h1:5PdJc2SgAybE76kFQCWrTfJolCOUQXF97e+gteUUA6A= +cloud.google.com/go/notebooks v1.11.1/go.mod h1:V2Zkv8wX9kDCGRJqYoI+bQAaoVeE5kSiz4yYHd2yJwQ= +cloud.google.com/go/notebooks v1.11.2/go.mod h1:z0tlHI/lREXC8BS2mIsUeR3agM1AkgLiS+Isov3SS70= +cloud.google.com/go/notebooks v1.11.3/go.mod h1:0wQyI2dQC3AZyQqWnRsp+yA+kY4gC7ZIVP4Qg3AQcgo= +cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= +cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= +cloud.google.com/go/optimization v1.3.1/go.mod h1:IvUSefKiwd1a5p0RgHDbWCIbDFgKuEdB+fPPuP0IDLI= +cloud.google.com/go/optimization v1.4.1/go.mod h1:j64vZQP7h9bO49m2rVaTVoNM0vEBEN5eKPUPbZyXOrk= +cloud.google.com/go/optimization v1.5.0/go.mod h1:evo1OvTxeBRBu6ydPlrIRizKY/LJKo/drDMMRKqGEUU= +cloud.google.com/go/optimization v1.5.1/go.mod h1:NC0gnUD5MWVAF7XLdoYVPmYYVth93Q6BUzqAq3ZwtV8= +cloud.google.com/go/optimization v1.6.1/go.mod h1:hH2RYPTTM9e9zOiTaYPTiGPcGdNZVnBSBxjIAJzUkqo= +cloud.google.com/go/optimization v1.6.2/go.mod h1:mWNZ7B9/EyMCcwNl1frUGEuY6CPijSkz88Fz2vwKPOY= +cloud.google.com/go/optimization v1.6.3/go.mod h1:8ve3svp3W6NFcAEFr4SfJxrldzhUl4VMUJmhrqVKtYA= +cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= +cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= +cloud.google.com/go/orchestration v1.6.0/go.mod h1:M62Bevp7pkxStDfFfTuCOaXgaaqRAga1yKyoMtEoWPQ= +cloud.google.com/go/orchestration v1.8.1/go.mod h1:4sluRF3wgbYVRqz7zJ1/EUNc90TTprliq9477fGobD8= +cloud.google.com/go/orchestration v1.8.2/go.mod h1:T1cP+6WyTmh6LSZzeUhvGf0uZVmJyTx7t8z7Vg87+A0= +cloud.google.com/go/orchestration v1.8.3/go.mod h1:xhgWAYqlbYjlz2ftbFghdyqENYW+JXuhBx9KsjMoGHs= +cloud.google.com/go/orchestration v1.8.4/go.mod h1:d0lywZSVYtIoSZXb0iFjv9SaL13PGyVOKDxqGxEf/qI= +cloud.google.com/go/orchestration v1.8.5/go.mod h1:C1J7HesE96Ba8/hZ71ISTV2UAat0bwN+pi85ky38Yq8= +cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= +cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= +cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc= +cloud.google.com/go/orgpolicy v1.11.0/go.mod h1:2RK748+FtVvnfuynxBzdnyu7sygtoZa1za/0ZfpOs1M= +cloud.google.com/go/orgpolicy v1.11.1/go.mod h1:8+E3jQcpZJQliP+zaFfayC2Pg5bmhuLK755wKhIIUCE= +cloud.google.com/go/orgpolicy v1.11.2/go.mod h1:biRDpNwfyytYnmCRWZWxrKF22Nkz9eNVj9zyaBdpm1o= +cloud.google.com/go/orgpolicy v1.11.3/go.mod h1:oKAtJ/gkMjum5icv2aujkP4CxROxPXsBbYGCDbPO8MM= +cloud.google.com/go/orgpolicy v1.11.4/go.mod h1:0+aNV/nrfoTQ4Mytv+Aw+stBDBjNf4d8fYRA9herfJI= +cloud.google.com/go/orgpolicy v1.12.0/go.mod h1:0+aNV/nrfoTQ4Mytv+Aw+stBDBjNf4d8fYRA9herfJI= +cloud.google.com/go/orgpolicy v1.12.1/go.mod h1:aibX78RDl5pcK3jA8ysDQCFkVxLj3aOQqrbBaUL2V5I= +cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= +cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= +cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw= +cloud.google.com/go/osconfig v1.12.0/go.mod h1:8f/PaYzoS3JMVfdfTubkowZYGmAhUCjjwnjqWI7NVBc= +cloud.google.com/go/osconfig v1.12.1/go.mod h1:4CjBxND0gswz2gfYRCUoUzCm9zCABp91EeTtWXyz0tE= +cloud.google.com/go/osconfig v1.12.2/go.mod h1:eh9GPaMZpI6mEJEuhEjUJmaxvQ3gav+fFEJon1Y8Iw0= +cloud.google.com/go/osconfig v1.12.3/go.mod h1:L/fPS8LL6bEYUi1au832WtMnPeQNT94Zo3FwwV1/xGM= +cloud.google.com/go/osconfig v1.12.4/go.mod h1:B1qEwJ/jzqSRslvdOCI8Kdnp0gSng0xW4LOnIebQomA= +cloud.google.com/go/osconfig v1.12.5/go.mod h1:D9QFdxzfjgw3h/+ZaAb5NypM8bhOMqBzgmbhzWViiW8= +cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= +cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= +cloud.google.com/go/oslogin v1.9.0/go.mod h1:HNavntnH8nzrn8JCTT5fj18FuJLFJc4NaZJtBnQtKFs= +cloud.google.com/go/oslogin v1.10.1/go.mod h1:x692z7yAue5nE7CsSnoG0aaMbNoRJRXO4sn73R+ZqAs= +cloud.google.com/go/oslogin v1.11.0/go.mod h1:8GMTJs4X2nOAUVJiPGqIWVcDaF0eniEto3xlOxaboXE= +cloud.google.com/go/oslogin v1.11.1/go.mod h1:OhD2icArCVNUxKqtK0mcSmKL7lgr0LVlQz+v9s1ujTg= +cloud.google.com/go/oslogin v1.12.1/go.mod h1:VfwTeFJGbnakxAY236eN8fsnglLiVXndlbcNomY4iZU= +cloud.google.com/go/oslogin v1.12.2/go.mod h1:CQ3V8Jvw4Qo4WRhNPF0o+HAM4DiLuE27Ul9CX9g2QdY= +cloud.google.com/go/oslogin v1.13.0/go.mod h1:xPJqLwpTZ90LSE5IL1/svko+6c5avZLluiyylMb/sRA= +cloud.google.com/go/oslogin v1.13.1/go.mod h1:vS8Sr/jR7QvPWpCjNqy6LYZr5Zs1e8ZGW/KPn9gmhws= +cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/phishingprotection v0.7.0/go.mod h1:8qJI4QKHoda/sb/7/YmMQ2omRLSLYSu9bU0EKCNI+Lk= +cloud.google.com/go/phishingprotection v0.8.1/go.mod h1:AxonW7GovcA8qdEk13NfHq9hNx5KPtfxXNeUxTDxB6I= +cloud.google.com/go/phishingprotection v0.8.2/go.mod h1:LhJ91uyVHEYKSKcMGhOa14zMMWfbEdxG032oT6ECbC8= +cloud.google.com/go/phishingprotection v0.8.3/go.mod h1:3B01yO7T2Ra/TMojifn8EoGd4G9jts/6cIO0DgDY9J8= +cloud.google.com/go/phishingprotection v0.8.4/go.mod h1:6b3kNPAc2AQ6jZfFHioZKg9MQNybDg4ixFd4RPZZ2nE= +cloud.google.com/go/phishingprotection v0.8.5/go.mod h1:g1smd68F7mF1hgQPuYn3z8HDbNre8L6Z0b7XMYFmX7I= +cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= +cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= +cloud.google.com/go/policytroubleshooter v1.5.0/go.mod h1:Rz1WfV+1oIpPdN2VvvuboLVRsB1Hclg3CKQ53j9l8vw= +cloud.google.com/go/policytroubleshooter v1.6.0/go.mod h1:zYqaPTsmfvpjm5ULxAyD/lINQxJ0DDsnWOP/GZ7xzBc= +cloud.google.com/go/policytroubleshooter v1.7.1/go.mod h1:0NaT5v3Ag1M7U5r0GfDCpUFkWd9YqpubBWsQlhanRv0= +cloud.google.com/go/policytroubleshooter v1.8.0/go.mod h1:tmn5Ir5EToWe384EuboTcVQT7nTag2+DuH3uHmKd1HU= +cloud.google.com/go/policytroubleshooter v1.9.0/go.mod h1:+E2Lga7TycpeSTj2FsH4oXxTnrbHJGRlKhVZBLGgU64= +cloud.google.com/go/policytroubleshooter v1.9.1/go.mod h1:MYI8i0bCrL8cW+VHN1PoiBTyNZTstCg2WUw2eVC4c4U= +cloud.google.com/go/policytroubleshooter v1.10.1/go.mod h1:5C0rhT3TDZVxAu8813bwmTvd57Phbl8mr9F4ipOsxEs= +cloud.google.com/go/policytroubleshooter v1.10.2/go.mod h1:m4uF3f6LseVEnMV6nknlN2vYGRb+75ylQwJdnOXfnv0= +cloud.google.com/go/policytroubleshooter v1.10.3/go.mod h1:+ZqG3agHT7WPb4EBIRqUv4OyIwRTZvsVDHZ8GlZaoxk= +cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= +cloud.google.com/go/privatecatalog v0.7.0/go.mod h1:2s5ssIFO69F5csTXcwBP7NPFTZvps26xGzvQ2PQaBYg= +cloud.google.com/go/privatecatalog v0.8.0/go.mod h1:nQ6pfaegeDAq/Q5lrfCQzQLhubPiZhSaNhIgfJlnIXs= +cloud.google.com/go/privatecatalog v0.9.1/go.mod h1:0XlDXW2unJXdf9zFz968Hp35gl/bhF4twwpXZAW50JA= +cloud.google.com/go/privatecatalog v0.9.2/go.mod h1:RMA4ATa8IXfzvjrhhK8J6H4wwcztab+oZph3c6WmtFc= +cloud.google.com/go/privatecatalog v0.9.3/go.mod h1:K5pn2GrVmOPjXz3T26mzwXLcKivfIJ9R5N79AFCF9UE= +cloud.google.com/go/privatecatalog v0.9.4/go.mod h1:SOjm93f+5hp/U3PqMZAHTtBtluqLygrDrVO8X8tYtG0= +cloud.google.com/go/privatecatalog v0.9.5/go.mod h1:fVWeBOVe7uj2n3kWRGlUQqR/pOd450J9yZoOECcQqJk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI= +cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0= +cloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8= +cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4= +cloud.google.com/go/pubsub v1.32.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc= +cloud.google.com/go/pubsub v1.33.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc= +cloud.google.com/go/pubsub v1.34.0/go.mod h1:alj4l4rBg+N3YTFDDC+/YyFTs6JAjam2QfYsddcAW4c= +cloud.google.com/go/pubsub v1.36.1/go.mod h1:iYjCa9EzWOoBiTdd4ps7QoMtMln5NwaZQpK1hbRfBDE= +cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= +cloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k= +cloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM= +cloud.google.com/go/pubsublite v1.8.1/go.mod h1:fOLdU4f5xldK4RGJrBMm+J7zMWNj/k4PxwEZXy39QS0= +cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= +cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= +cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= +cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= +cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U= +cloud.google.com/go/recaptchaenterprise/v2 v2.6.0/go.mod h1:RPauz9jeLtB3JVzg6nCbe12qNoaa8pXc4d/YukAmcnA= +cloud.google.com/go/recaptchaenterprise/v2 v2.7.0/go.mod h1:19wVj/fs5RtYtynAPJdDTb69oW0vNHYDBTbB4NvMD9c= +cloud.google.com/go/recaptchaenterprise/v2 v2.7.2/go.mod h1:kR0KjsJS7Jt1YSyWFkseQ756D45kaYNTlDPPaRAvDBU= +cloud.google.com/go/recaptchaenterprise/v2 v2.8.0/go.mod h1:QuE8EdU9dEnesG8/kG3XuJyNsjEqMlMzg3v3scCJ46c= +cloud.google.com/go/recaptchaenterprise/v2 v2.8.1/go.mod h1:JZYZJOeZjgSSTGP4uz7NlQ4/d1w5hGmksVgM0lbEij0= +cloud.google.com/go/recaptchaenterprise/v2 v2.8.2/go.mod h1:kpaDBOpkwD4G0GVMzG1W6Doy1tFFC97XAV3xy+Rd/pw= +cloud.google.com/go/recaptchaenterprise/v2 v2.8.3/go.mod h1:Dak54rw6lC2gBY8FBznpOCAR58wKf+R+ZSJRoeJok4w= +cloud.google.com/go/recaptchaenterprise/v2 v2.8.4/go.mod h1:Dak54rw6lC2gBY8FBznpOCAR58wKf+R+ZSJRoeJok4w= +cloud.google.com/go/recaptchaenterprise/v2 v2.9.0/go.mod h1:Dak54rw6lC2gBY8FBznpOCAR58wKf+R+ZSJRoeJok4w= +cloud.google.com/go/recaptchaenterprise/v2 v2.9.2/go.mod h1:trwwGkfhCmp05Ll5MSJPXY7yvnO0p4v3orGANAFHAuU= +cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommendationengine v0.7.0/go.mod h1:1reUcE3GIu6MeBz/h5xZJqNLuuVjNg1lmWMPyjatzac= +cloud.google.com/go/recommendationengine v0.8.1/go.mod h1:MrZihWwtFYWDzE6Hz5nKcNz3gLizXVIDI/o3G1DLcrE= +cloud.google.com/go/recommendationengine v0.8.2/go.mod h1:QIybYHPK58qir9CV2ix/re/M//Ty10OxjnnhWdaKS1Y= +cloud.google.com/go/recommendationengine v0.8.3/go.mod h1:m3b0RZV02BnODE9FeSvGv1qibFo8g0OnmB/RMwYy4V8= +cloud.google.com/go/recommendationengine v0.8.4/go.mod h1:GEteCf1PATl5v5ZsQ60sTClUE0phbWmo3rQ1Js8louU= +cloud.google.com/go/recommendationengine v0.8.5/go.mod h1:A38rIXHGFvoPvmy6pZLozr0g59NRNREz4cx7F58HAsQ= +cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= +cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= +cloud.google.com/go/recommender v1.9.0/go.mod h1:PnSsnZY7q+VL1uax2JWkt/UegHssxjUVVCrX52CuEmQ= +cloud.google.com/go/recommender v1.10.1/go.mod h1:XFvrE4Suqn5Cq0Lf+mCP6oBHD/yRMA8XxP5sb7Q7gpA= +cloud.google.com/go/recommender v1.11.0/go.mod h1:kPiRQhPyTJ9kyXPCG6u/dlPLbYfFlkwHNRwdzPVAoII= +cloud.google.com/go/recommender v1.11.1/go.mod h1:sGwFFAyI57v2Hc5LbIj+lTwXipGu9NW015rkaEM5B18= +cloud.google.com/go/recommender v1.11.2/go.mod h1:AeoJuzOvFR/emIcXdVFkspVXVTYpliRCmKNYDnyBv6Y= +cloud.google.com/go/recommender v1.11.3/go.mod h1:+FJosKKJSId1MBFeJ/TTyoGQZiEelQQIZMKYYD8ruK4= +cloud.google.com/go/recommender v1.12.0/go.mod h1:+FJosKKJSId1MBFeJ/TTyoGQZiEelQQIZMKYYD8ruK4= +cloud.google.com/go/recommender v1.12.1/go.mod h1:gf95SInWNND5aPas3yjwl0I572dtudMhMIG4ni8nr+0= +cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= +cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= +cloud.google.com/go/redis v1.11.0/go.mod h1:/X6eicana+BWcUda5PpwZC48o37SiFVTFSs0fWAJ7uQ= +cloud.google.com/go/redis v1.13.1/go.mod h1:VP7DGLpE91M6bcsDdMuyCm2hIpB6Vp2hI090Mfd1tcg= +cloud.google.com/go/redis v1.13.2/go.mod h1:0Hg7pCMXS9uz02q+LoEVl5dNHUkIQv+C/3L76fandSA= +cloud.google.com/go/redis v1.13.3/go.mod h1:vbUpCKUAZSYzFcWKmICnYgRAhTFg9r+djWqFxDYXi4U= +cloud.google.com/go/redis v1.14.1/go.mod h1:MbmBxN8bEnQI4doZPC1BzADU4HGocHBk2de3SbgOkqs= +cloud.google.com/go/redis v1.14.2/go.mod h1:g0Lu7RRRz46ENdFKQ2EcQZBAJ2PtJHJLuiiRuEXwyQw= +cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= +cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= +cloud.google.com/go/resourcemanager v1.5.0/go.mod h1:eQoXNAiAvCf5PXxWxXjhKQoTMaUSNrEfg+6qdf/wots= +cloud.google.com/go/resourcemanager v1.6.0/go.mod h1:YcpXGRs8fDzcUl1Xw8uOVmI8JEadvhRIkoXXUNVYcVo= +cloud.google.com/go/resourcemanager v1.7.0/go.mod h1:HlD3m6+bwhzj9XCouqmeiGuni95NTrExfhoSrkC/3EI= +cloud.google.com/go/resourcemanager v1.9.1/go.mod h1:dVCuosgrh1tINZ/RwBufr8lULmWGOkPS8gL5gqyjdT8= +cloud.google.com/go/resourcemanager v1.9.2/go.mod h1:OujkBg1UZg5lX2yIyMo5Vz9O5hf7XQOSV7WxqxxMtQE= +cloud.google.com/go/resourcemanager v1.9.3/go.mod h1:IqrY+g0ZgLsihcfcmqSe+RKp1hzjXwG904B92AwBz6U= +cloud.google.com/go/resourcemanager v1.9.4/go.mod h1:N1dhP9RFvo3lUfwtfLWVxfUWq8+KUQ+XLlHLH3BoFJ0= +cloud.google.com/go/resourcemanager v1.9.5/go.mod h1:hep6KjelHA+ToEjOfO3garMKi/CLYwTqeAw7YiEI9x8= +cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= +cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= +cloud.google.com/go/resourcesettings v1.5.0/go.mod h1:+xJF7QSG6undsQDfsCJyqWXyBwUoJLhetkRMDRnIoXA= +cloud.google.com/go/resourcesettings v1.6.1/go.mod h1:M7mk9PIZrC5Fgsu1kZJci6mpgN8o0IUzVx3eJU3y4Jw= +cloud.google.com/go/resourcesettings v1.6.2/go.mod h1:mJIEDd9MobzunWMeniaMp6tzg4I2GvD3TTmPkc8vBXk= +cloud.google.com/go/resourcesettings v1.6.3/go.mod h1:pno5D+7oDYkMWZ5BpPsb4SO0ewg3IXcmmrUZaMJrFic= +cloud.google.com/go/resourcesettings v1.6.4/go.mod h1:pYTTkWdv2lmQcjsthbZLNBP4QW140cs7wqA3DuqErVI= +cloud.google.com/go/resourcesettings v1.6.5/go.mod h1:WBOIWZraXZOGAgoR4ukNj0o0HiSMO62H9RpFi9WjP9I= +cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= +cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= +cloud.google.com/go/retail v1.12.0/go.mod h1:UMkelN/0Z8XvKymXFbD4EhFJlYKRx1FGhQkVPU5kF14= +cloud.google.com/go/retail v1.14.1/go.mod h1:y3Wv3Vr2k54dLNIrCzenyKG8g8dhvhncT2NcNjb/6gE= +cloud.google.com/go/retail v1.14.2/go.mod h1:W7rrNRChAEChX336QF7bnMxbsjugcOCPU44i5kbLiL8= +cloud.google.com/go/retail v1.14.3/go.mod h1:Omz2akDHeSlfCq8ArPKiBxlnRpKEBjUH386JYFLUvXo= +cloud.google.com/go/retail v1.14.4/go.mod h1:l/N7cMtY78yRnJqp5JW8emy7MB1nz8E4t2yfOmklYfg= +cloud.google.com/go/retail v1.15.1/go.mod h1:In9nSBOYhLbDGa87QvWlnE1XA14xBN2FpQRiRsUs9wU= +cloud.google.com/go/retail v1.16.0/go.mod h1:LW7tllVveZo4ReWt68VnldZFWJRzsh9np+01J9dYWzE= +cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= +cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= +cloud.google.com/go/run v0.8.0/go.mod h1:VniEnuBwqjigv0A7ONfQUaEItaiCRVujlMqerPPiktM= +cloud.google.com/go/run v0.9.0/go.mod h1:Wwu+/vvg8Y+JUApMwEDfVfhetv30hCG4ZwDR/IXl2Qg= +cloud.google.com/go/run v1.2.0/go.mod h1:36V1IlDzQ0XxbQjUx6IYbw8H3TJnWvhii963WW3B/bo= +cloud.google.com/go/run v1.3.0/go.mod h1:S/osX/4jIPZGg+ssuqh6GNgg7syixKe3YnprwehzHKU= +cloud.google.com/go/run v1.3.1/go.mod h1:cymddtZOzdwLIAsmS6s+Asl4JoXIDm/K1cpZTxV4Q5s= +cloud.google.com/go/run v1.3.2/go.mod h1:SIhmqArbjdU/D9M6JoHaAqnAMKLFtXaVdNeq04NjnVE= +cloud.google.com/go/run v1.3.3/go.mod h1:WSM5pGyJ7cfYyYbONVQBN4buz42zFqwG67Q3ch07iK4= +cloud.google.com/go/run v1.3.4/go.mod h1:FGieuZvQ3tj1e9GnzXqrMABSuir38AJg5xhiYq+SF3o= +cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= +cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44= +cloud.google.com/go/scheduler v1.8.0/go.mod h1:TCET+Y5Gp1YgHT8py4nlg2Sew8nUHMqcpousDgXJVQc= +cloud.google.com/go/scheduler v1.9.0/go.mod h1:yexg5t+KSmqu+njTIh3b7oYPheFtBWGcbVUYF1GGMIc= +cloud.google.com/go/scheduler v1.10.1/go.mod h1:R63Ldltd47Bs4gnhQkmNDse5w8gBRrhObZ54PxgR2Oo= +cloud.google.com/go/scheduler v1.10.2/go.mod h1:O3jX6HRH5eKCA3FutMw375XHZJudNIKVonSCHv7ropY= +cloud.google.com/go/scheduler v1.10.3/go.mod h1:8ANskEM33+sIbpJ+R4xRfw/jzOG+ZFE8WVLy7/yGvbc= +cloud.google.com/go/scheduler v1.10.4/go.mod h1:MTuXcrJC9tqOHhixdbHDFSIuh7xZF2IysiINDuiq6NI= +cloud.google.com/go/scheduler v1.10.5/go.mod h1:MTuXcrJC9tqOHhixdbHDFSIuh7xZF2IysiINDuiq6NI= +cloud.google.com/go/scheduler v1.10.6/go.mod h1:pe2pNCtJ+R01E06XCDOJs1XvAMbv28ZsQEbqknxGOuE= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= +cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= +cloud.google.com/go/secretmanager v1.10.0/go.mod h1:MfnrdvKMPNra9aZtQFvBcvRU54hbPD8/HayQdlUgJpU= +cloud.google.com/go/secretmanager v1.11.1/go.mod h1:znq9JlXgTNdBeQk9TBW/FnR/W4uChEKGeqQWAJ8SXFw= +cloud.google.com/go/secretmanager v1.11.2/go.mod h1:MQm4t3deoSub7+WNwiC4/tRYgDBHJgJPvswqQVB1Vss= +cloud.google.com/go/secretmanager v1.11.3/go.mod h1:0bA2o6FabmShrEy328i67aV+65XoUFFSmVeLBn/51jI= +cloud.google.com/go/secretmanager v1.11.4/go.mod h1:wreJlbS9Zdq21lMzWmJ0XhWW2ZxgPeahsqeV/vZoJ3w= +cloud.google.com/go/secretmanager v1.11.5/go.mod h1:eAGv+DaCHkeVyQi0BeXgAHOU0RdrMeZIASKc+S7VqH4= +cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= +cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= +cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA= +cloud.google.com/go/security v1.12.0/go.mod h1:rV6EhrpbNHrrxqlvW0BWAIawFWq3X90SduMJdFwtLB8= +cloud.google.com/go/security v1.13.0/go.mod h1:Q1Nvxl1PAgmeW0y3HTt54JYIvUdtcpYKVfIB8AOMZ+0= +cloud.google.com/go/security v1.15.1/go.mod h1:MvTnnbsWnehoizHi09zoiZob0iCHVcL4AUBj76h9fXA= +cloud.google.com/go/security v1.15.2/go.mod h1:2GVE/v1oixIRHDaClVbHuPcZwAqFM28mXuAKCfMgYIg= +cloud.google.com/go/security v1.15.3/go.mod h1:gQ/7Q2JYUZZgOzqKtw9McShH+MjNvtDpL40J1cT+vBs= +cloud.google.com/go/security v1.15.4/go.mod h1:oN7C2uIZKhxCLiAAijKUCuHLZbIt/ghYEo8MqwD/Ty4= +cloud.google.com/go/security v1.15.5/go.mod h1:KS6X2eG3ynWjqcIX976fuToN5juVkF6Ra6c7MPnldtc= +cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= +cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk= +cloud.google.com/go/securitycenter v1.18.1/go.mod h1:0/25gAzCM/9OL9vVx4ChPeM/+DlfGQJDwBy/UC8AKK0= +cloud.google.com/go/securitycenter v1.19.0/go.mod h1:LVLmSg8ZkkyaNy4u7HCIshAngSQ8EcIRREP3xBnyfag= +cloud.google.com/go/securitycenter v1.23.0/go.mod h1:8pwQ4n+Y9WCWM278R8W3nF65QtY172h4S8aXyI9/hsQ= +cloud.google.com/go/securitycenter v1.23.1/go.mod h1:w2HV3Mv/yKhbXKwOCu2i8bCuLtNP1IMHuiYQn4HJq5s= +cloud.google.com/go/securitycenter v1.24.1/go.mod h1:3h9IdjjHhVMXdQnmqzVnM7b0wMn/1O/U20eWVpMpZjI= +cloud.google.com/go/securitycenter v1.24.2/go.mod h1:l1XejOngggzqwr4Fa2Cn+iWZGf+aBLTXtB/vXjy5vXM= +cloud.google.com/go/securitycenter v1.24.3/go.mod h1:l1XejOngggzqwr4Fa2Cn+iWZGf+aBLTXtB/vXjy5vXM= +cloud.google.com/go/securitycenter v1.24.4/go.mod h1:PSccin+o1EMYKcFQzz9HMMnZ2r9+7jbc+LvPjXhpwcU= +cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= +cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= +cloud.google.com/go/servicecontrol v1.10.0/go.mod h1:pQvyvSRh7YzUF2efw7H87V92mxU8FnFDawMClGCNuAA= +cloud.google.com/go/servicecontrol v1.11.0/go.mod h1:kFmTzYzTUIuZs0ycVqRHNaNhgR+UMUpw9n02l/pY+mc= +cloud.google.com/go/servicecontrol v1.11.1/go.mod h1:aSnNNlwEFBY+PWGQ2DoM0JJ/QUXqV5/ZD9DOLB7SnUk= +cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= +cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U= +cloud.google.com/go/servicedirectory v1.8.0/go.mod h1:srXodfhY1GFIPvltunswqXpVxFPpZjf8nkKQT7XcXaY= +cloud.google.com/go/servicedirectory v1.9.0/go.mod h1:29je5JjiygNYlmsGz8k6o+OZ8vd4f//bQLtvzkPPT/s= +cloud.google.com/go/servicedirectory v1.10.1/go.mod h1:Xv0YVH8s4pVOwfM/1eMTl0XJ6bzIOSLDt8f8eLaGOxQ= +cloud.google.com/go/servicedirectory v1.11.0/go.mod h1:Xv0YVH8s4pVOwfM/1eMTl0XJ6bzIOSLDt8f8eLaGOxQ= +cloud.google.com/go/servicedirectory v1.11.1/go.mod h1:tJywXimEWzNzw9FvtNjsQxxJ3/41jseeILgwU/QLrGI= +cloud.google.com/go/servicedirectory v1.11.2/go.mod h1:KD9hCLhncWRV5jJphwIpugKwM5bn1x0GyVVD4NO8mGg= +cloud.google.com/go/servicedirectory v1.11.3/go.mod h1:LV+cHkomRLr67YoQy3Xq2tUXBGOs5z5bPofdq7qtiAw= +cloud.google.com/go/servicedirectory v1.11.4/go.mod h1:Bz2T9t+/Ehg6x+Y7Ycq5xiShYLD96NfEsWNHyitj1qM= +cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= +cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= +cloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc= +cloud.google.com/go/servicemanagement v1.8.0/go.mod h1:MSS2TDlIEQD/fzsSGfCdJItQveu9NXnUniTrq/L8LK4= +cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= +cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= +cloud.google.com/go/serviceusage v1.5.0/go.mod h1:w8U1JvqUqwJNPEOTQjrMHkw3IaIFLoLsPLvsE3xueec= +cloud.google.com/go/serviceusage v1.6.0/go.mod h1:R5wwQcbOWsyuOfbP9tGdAnCAc6B9DRwPG1xtWMDeuPA= +cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= +cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= +cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+qE2f9A= +cloud.google.com/go/shell v1.7.1/go.mod h1:u1RaM+huXFaTojTbW4g9P5emOrrmLE69KrxqQahKn4g= +cloud.google.com/go/shell v1.7.2/go.mod h1:KqRPKwBV0UyLickMn0+BY1qIyE98kKyI216sH/TuHmc= +cloud.google.com/go/shell v1.7.3/go.mod h1:cTTEz/JdaBsQAeTQ3B6HHldZudFoYBOqjteev07FbIc= +cloud.google.com/go/shell v1.7.4/go.mod h1:yLeXB8eKLxw0dpEmXQ/FjriYrBijNsONpwnWsdPqlKM= +cloud.google.com/go/shell v1.7.5/go.mod h1:hL2++7F47/IfpfTO53KYf1EC+F56k3ThfNEXd4zcuiE= +cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= +cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk= +cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M= +cloud.google.com/go/spanner v1.47.0/go.mod h1:IXsJwVW2j4UKs0eYDqodab6HgGuA1bViSqW4uH9lfUI= +cloud.google.com/go/spanner v1.49.0/go.mod h1:eGj9mQGK8+hkgSVbHNQ06pQ4oS+cyc4tXXd6Dif1KoM= +cloud.google.com/go/spanner v1.50.0/go.mod h1:eGj9mQGK8+hkgSVbHNQ06pQ4oS+cyc4tXXd6Dif1KoM= +cloud.google.com/go/spanner v1.51.0/go.mod h1:c5KNo5LQ1X5tJwma9rSQZsXNBDNvj4/n8BVc3LNahq0= +cloud.google.com/go/spanner v1.53.0/go.mod h1:liG4iCeLqm5L3fFLU5whFITqP0e0orsAW1uUSrd4rws= +cloud.google.com/go/spanner v1.53.1/go.mod h1:liG4iCeLqm5L3fFLU5whFITqP0e0orsAW1uUSrd4rws= +cloud.google.com/go/spanner v1.54.0/go.mod h1:wZvSQVBgngF0Gq86fKup6KIYmN2be7uOKjtK97X+bQU= +cloud.google.com/go/spanner v1.55.0/go.mod h1:HXEznMUVhC+PC+HDyo9YFG2Ajj5BQDkcbqB9Z2Ffxi0= +cloud.google.com/go/spanner v1.56.0/go.mod h1:DndqtUKQAt3VLuV2Le+9Y3WTnq5cNKrnLb/Piqcj+h0= +cloud.google.com/go/spanner v1.57.0/go.mod h1:aXQ5QDdhPRIqVhYmnkAdwPYvj/DRN0FguclhEWw+jOo= +cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= +cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= +cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco= +cloud.google.com/go/speech v1.14.1/go.mod h1:gEosVRPJ9waG7zqqnsHpYTOoAS4KouMRLDFMekpJ0J0= +cloud.google.com/go/speech v1.15.0/go.mod h1:y6oH7GhqCaZANH7+Oe0BhgIogsNInLlz542tg3VqeYI= +cloud.google.com/go/speech v1.17.1/go.mod h1:8rVNzU43tQvxDaGvqOhpDqgkJTFowBpDvCJ14kGlJYo= +cloud.google.com/go/speech v1.19.0/go.mod h1:8rVNzU43tQvxDaGvqOhpDqgkJTFowBpDvCJ14kGlJYo= +cloud.google.com/go/speech v1.19.1/go.mod h1:WcuaWz/3hOlzPFOVo9DUsblMIHwxP589y6ZMtaG+iAA= +cloud.google.com/go/speech v1.19.2/go.mod h1:2OYFfj+Ch5LWjsaSINuCZsre/789zlcCI3SY4oAi2oI= +cloud.google.com/go/speech v1.20.1/go.mod h1:wwolycgONvfz2EDU8rKuHRW3+wc9ILPsAWoikBEWavY= +cloud.google.com/go/speech v1.21.0/go.mod h1:wwolycgONvfz2EDU8rKuHRW3+wc9ILPsAWoikBEWavY= +cloud.google.com/go/speech v1.21.1/go.mod h1:E5GHZXYQlkqWQwY5xRSLHw2ci5NMQNG52FfMU1aZrIA= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -contrib.go.opencensus.io/exporter/prometheus v0.1.0/go.mod h1:cGFniUXGZlKRjzOyuZJ6mgB+PgBcCIa79kEKR8YCW+A= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= +cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= +cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= +cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= +cloud.google.com/go/storage v1.37.0/go.mod h1:i34TiT2IhiNDmcj65PqwCjcoUX7Z5pLzS8DEmoiFq1k= +cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY= +cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= +cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= +cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= +cloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw= +cloud.google.com/go/storagetransfer v1.10.0/go.mod h1:DM4sTlSmGiNczmV6iZyceIh2dbs+7z2Ayg6YAiQlYfA= +cloud.google.com/go/storagetransfer v1.10.1/go.mod h1:rS7Sy0BtPviWYTTJVWCSV4QrbBitgPeuK4/FKa4IdLs= +cloud.google.com/go/storagetransfer v1.10.2/go.mod h1:meIhYQup5rg9juQJdyppnA/WLQCOguxtk1pr3/vBWzA= +cloud.google.com/go/storagetransfer v1.10.3/go.mod h1:Up8LY2p6X68SZ+WToswpQbQHnJpOty/ACcMafuey8gc= +cloud.google.com/go/storagetransfer v1.10.4/go.mod h1:vef30rZKu5HSEf/x1tK3WfWrL0XVoUQN/EPDRGPzjZs= +cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= +cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= +cloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c= +cloud.google.com/go/talent v1.6.2/go.mod h1:CbGvmKCG61mkdjcqTcLOkb2ZN1SrQI8MDyma2l7VD24= +cloud.google.com/go/talent v1.6.3/go.mod h1:xoDO97Qd4AK43rGjJvyBHMskiEf3KulgYzcH6YWOVoo= +cloud.google.com/go/talent v1.6.4/go.mod h1:QsWvi5eKeh6gG2DlBkpMaFYZYrYUnIpo34f6/V5QykY= +cloud.google.com/go/talent v1.6.5/go.mod h1:Mf5cma696HmE+P2BWJ/ZwYqeJXEeU0UqjHFXVLadEDI= +cloud.google.com/go/talent v1.6.6/go.mod h1:y/WQDKrhVz12WagoarpAIyKKMeKGKHWPoReZ0g8tseQ= +cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= +cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= +cloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc= +cloud.google.com/go/texttospeech v1.7.1/go.mod h1:m7QfG5IXxeneGqTapXNxv2ItxP/FS0hCZBwXYqucgSk= +cloud.google.com/go/texttospeech v1.7.2/go.mod h1:VYPT6aTOEl3herQjFHYErTlSZJ4vB00Q2ZTmuVgluD4= +cloud.google.com/go/texttospeech v1.7.3/go.mod h1:Av/zpkcgWfXlDLRYob17lqMstGZ3GqlvJXqKMp2u8so= +cloud.google.com/go/texttospeech v1.7.4/go.mod h1:vgv0002WvR4liGuSd5BJbWy4nDn5Ozco0uJymY5+U74= +cloud.google.com/go/texttospeech v1.7.5/go.mod h1:tzpCuNWPwrNJnEa4Pu5taALuZL4QRRLcb+K9pbhXT6M= +cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= +cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= +cloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM= +cloud.google.com/go/tpu v1.6.1/go.mod h1:sOdcHVIgDEEOKuqUoi6Fq53MKHJAtOwtz0GuKsWSH3E= +cloud.google.com/go/tpu v1.6.2/go.mod h1:NXh3NDwt71TsPZdtGWgAG5ThDfGd32X1mJ2cMaRlVgU= +cloud.google.com/go/tpu v1.6.3/go.mod h1:lxiueqfVMlSToZY1151IaZqp89ELPSrk+3HIQ5HRkbY= +cloud.google.com/go/tpu v1.6.4/go.mod h1:NAm9q3Rq2wIlGnOhpYICNI7+bpBebMJbh0yyp3aNw1Y= +cloud.google.com/go/tpu v1.6.5/go.mod h1:P9DFOEBIBhuEcZhXi+wPoVy/cji+0ICFi4TtTkMHSSs= +cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= +cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= +cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA= +cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk= +cloud.google.com/go/trace v1.10.1/go.mod h1:gbtL94KE5AJLH3y+WVpfWILmqgc6dXcqgNXdOPAQTYk= +cloud.google.com/go/trace v1.10.2/go.mod h1:NPXemMi6MToRFcSxRl2uDnu/qAlAQ3oULUphcHGh1vA= +cloud.google.com/go/trace v1.10.3/go.mod h1:Ke1bgfc73RV3wUFml+uQp7EsDw4dGaETLxB7Iq/r4CY= +cloud.google.com/go/trace v1.10.4/go.mod h1:Nso99EDIK8Mj5/zmB+iGr9dosS/bzWCJ8wGmE6TXNWY= +cloud.google.com/go/trace v1.10.5/go.mod h1:9hjCV1nGBCtXbAE4YK7OqJ8pmPYSxPA0I67JwRd5s3M= +cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= +cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= +cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0= +cloud.google.com/go/translate v1.6.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= +cloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= +cloud.google.com/go/translate v1.8.1/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs= +cloud.google.com/go/translate v1.8.2/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs= +cloud.google.com/go/translate v1.9.0/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs= +cloud.google.com/go/translate v1.9.1/go.mod h1:TWIgDZknq2+JD4iRcojgeDtqGEp154HN/uL6hMvylS8= +cloud.google.com/go/translate v1.9.2/go.mod h1:E3Tc6rUTsQkVrXW6avbUhKJSr7ZE3j7zNmqzXKHqRrY= +cloud.google.com/go/translate v1.9.3/go.mod h1:Kbq9RggWsbqZ9W5YpM94Q1Xv4dshw/gr/SHfsl5yCZ0= +cloud.google.com/go/translate v1.10.0/go.mod h1:Kbq9RggWsbqZ9W5YpM94Q1Xv4dshw/gr/SHfsl5yCZ0= +cloud.google.com/go/translate v1.10.1/go.mod h1:adGZcQNom/3ogU65N9UXHOnnSvjPwA/jKQUMnsYXOyk= +cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= +cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= +cloud.google.com/go/video v1.12.0/go.mod h1:MLQew95eTuaNDEGriQdcYn0dTwf9oWiA4uYebxM5kdg= +cloud.google.com/go/video v1.13.0/go.mod h1:ulzkYlYgCp15N2AokzKjy7MQ9ejuynOJdf1tR5lGthk= +cloud.google.com/go/video v1.14.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= +cloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= +cloud.google.com/go/video v1.17.1/go.mod h1:9qmqPqw/Ib2tLqaeHgtakU+l5TcJxCJbhFXM7UJjVzU= +cloud.google.com/go/video v1.19.0/go.mod h1:9qmqPqw/Ib2tLqaeHgtakU+l5TcJxCJbhFXM7UJjVzU= +cloud.google.com/go/video v1.20.0/go.mod h1:U3G3FTnsvAGqglq9LxgqzOiBc/Nt8zis8S+850N2DUM= +cloud.google.com/go/video v1.20.1/go.mod h1:3gJS+iDprnj8SY6pe0SwLeC5BUW80NjhwX7INWEuWGU= +cloud.google.com/go/video v1.20.2/go.mod h1:lrixr5JeKNThsgfM9gqtwb6Okuqzfo4VrY2xynaViTA= +cloud.google.com/go/video v1.20.3/go.mod h1:TnH/mNZKVHeNtpamsSPygSR0iHtvrR/cW1/GDjN5+GU= +cloud.google.com/go/video v1.20.4/go.mod h1:LyUVjyW+Bwj7dh3UJnUGZfyqjEto9DnrvTe1f/+QrW0= +cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= +cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= +cloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU= +cloud.google.com/go/videointelligence v1.11.1/go.mod h1:76xn/8InyQHarjTWsBR058SmlPCwQjgcvoW0aZykOvo= +cloud.google.com/go/videointelligence v1.11.2/go.mod h1:ocfIGYtIVmIcWk1DsSGOoDiXca4vaZQII1C85qtoplc= +cloud.google.com/go/videointelligence v1.11.3/go.mod h1:tf0NUaGTjU1iS2KEkGWvO5hRHeCkFK3nPo0/cOZhZAo= +cloud.google.com/go/videointelligence v1.11.4/go.mod h1:kPBMAYsTPFiQxMLmmjpcZUMklJp3nC9+ipJJtprccD8= +cloud.google.com/go/videointelligence v1.11.5/go.mod h1:/PkeQjpRponmOerPeJxNPuxvi12HlW7Em0lJO14FC3I= +cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= +cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= +cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= +cloud.google.com/go/vision/v2 v2.6.0/go.mod h1:158Hes0MvOS9Z/bDMSFpjwsUrZ5fPrdwuyyvKSGAGMY= +cloud.google.com/go/vision/v2 v2.7.0/go.mod h1:H89VysHy21avemp6xcf9b9JvZHVehWbET0uT/bcuY/0= +cloud.google.com/go/vision/v2 v2.7.2/go.mod h1:jKa8oSYBWhYiXarHPvP4USxYANYUEdEsQrloLjrSwJU= +cloud.google.com/go/vision/v2 v2.7.3/go.mod h1:V0IcLCY7W+hpMKXK1JYE0LV5llEqVmj+UJChjvA1WsM= +cloud.google.com/go/vision/v2 v2.7.4/go.mod h1:ynDKnsDN/0RtqkKxQZ2iatv3Dm9O+HfRb5djl7l4Vvw= +cloud.google.com/go/vision/v2 v2.7.5/go.mod h1:GcviprJLFfK9OLf0z8Gm6lQb6ZFUulvpZws+mm6yPLM= +cloud.google.com/go/vision/v2 v2.7.6/go.mod h1:ZkvWTVNPBU3YZYzgF9Y1jwEbD1NBOCyJn0KFdQfE6Bw= +cloud.google.com/go/vision/v2 v2.8.0/go.mod h1:ocqDiA2j97pvgogdyhoxiQp2ZkDCyr0HWpicywGGRhU= +cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= +cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= +cloud.google.com/go/vmmigration v1.5.0/go.mod h1:E4YQ8q7/4W9gobHjQg4JJSgXXSgY21nA5r8swQV+Xxc= +cloud.google.com/go/vmmigration v1.6.0/go.mod h1:bopQ/g4z+8qXzichC7GW1w2MjbErL54rk3/C843CjfY= +cloud.google.com/go/vmmigration v1.7.1/go.mod h1:WD+5z7a/IpZ5bKK//YmT9E047AD+rjycCAvyMxGJbro= +cloud.google.com/go/vmmigration v1.7.2/go.mod h1:iA2hVj22sm2LLYXGPT1pB63mXHhrH1m/ruux9TwWLd8= +cloud.google.com/go/vmmigration v1.7.3/go.mod h1:ZCQC7cENwmSWlwyTrZcWivchn78YnFniEQYRWQ65tBo= +cloud.google.com/go/vmmigration v1.7.4/go.mod h1:yBXCmiLaB99hEl/G9ZooNx2GyzgsjKnw5fWcINRgD70= +cloud.google.com/go/vmmigration v1.7.5/go.mod h1:pkvO6huVnVWzkFioxSghZxIGcsstDvYiVCxQ9ZH3eYI= +cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= +cloud.google.com/go/vmwareengine v0.2.2/go.mod h1:sKdctNJxb3KLZkE/6Oui94iw/xs9PRNC2wnNLXsHvH8= +cloud.google.com/go/vmwareengine v0.3.0/go.mod h1:wvoyMvNWdIzxMYSpH/R7y2h5h3WFkx6d+1TIsP39WGY= +cloud.google.com/go/vmwareengine v0.4.1/go.mod h1:Px64x+BvjPZwWuc4HdmVhoygcXqEkGHXoa7uyfTgSI0= +cloud.google.com/go/vmwareengine v1.0.0/go.mod h1:Px64x+BvjPZwWuc4HdmVhoygcXqEkGHXoa7uyfTgSI0= +cloud.google.com/go/vmwareengine v1.0.1/go.mod h1:aT3Xsm5sNx0QShk1Jc1B8OddrxAScYLwzVoaiXfdzzk= +cloud.google.com/go/vmwareengine v1.0.2/go.mod h1:xMSNjIk8/itYrz1JA8nV3Ajg4L4n3N+ugP8JKzk3OaA= +cloud.google.com/go/vmwareengine v1.0.3/go.mod h1:QSpdZ1stlbfKtyt6Iu19M6XRxjmXO+vb5a/R6Fvy2y4= +cloud.google.com/go/vmwareengine v1.1.1/go.mod h1:nMpdsIVkUrSaX8UvmnBhzVzG7PPvNYc5BszcvIVudYs= +cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= +cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= +cloud.google.com/go/vpcaccess v1.6.0/go.mod h1:wX2ILaNhe7TlVa4vC5xce1bCnqE3AeH27RV31lnmZes= +cloud.google.com/go/vpcaccess v1.7.1/go.mod h1:FogoD46/ZU+JUBX9D606X21EnxiszYi2tArQwLY4SXs= +cloud.google.com/go/vpcaccess v1.7.2/go.mod h1:mmg/MnRHv+3e8FJUjeSibVFvQF1cCy2MsFaFqxeY1HU= +cloud.google.com/go/vpcaccess v1.7.3/go.mod h1:YX4skyfW3NC8vI3Fk+EegJnlYFatA+dXK4o236EUCUc= +cloud.google.com/go/vpcaccess v1.7.4/go.mod h1:lA0KTvhtEOb/VOdnH/gwPuOzGgM+CWsmGu6bb4IoMKk= +cloud.google.com/go/vpcaccess v1.7.5/go.mod h1:slc5ZRvvjP78c2dnL7m4l4R9GwL3wDLcpIWz6P/ziig= +cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= +cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= +cloud.google.com/go/webrisk v1.8.0/go.mod h1:oJPDuamzHXgUc+b8SiHRcVInZQuybnvEW72PqTc7sSg= +cloud.google.com/go/webrisk v1.9.1/go.mod h1:4GCmXKcOa2BZcZPn6DCEvE7HypmEJcJkr4mtM+sqYPc= +cloud.google.com/go/webrisk v1.9.2/go.mod h1:pY9kfDgAqxUpDBOrG4w8deLfhvJmejKB0qd/5uQIPBc= +cloud.google.com/go/webrisk v1.9.3/go.mod h1:RUYXe9X/wBDXhVilss7EDLW9ZNa06aowPuinUOPCXH8= +cloud.google.com/go/webrisk v1.9.4/go.mod h1:w7m4Ib4C+OseSr2GL66m0zMBywdrVNTDKsdEsfMl7X0= +cloud.google.com/go/webrisk v1.9.5/go.mod h1:aako0Fzep1Q714cPEM5E+mtYX8/jsfegAuS8aivxy3U= +cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= +cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= +cloud.google.com/go/websecurityscanner v1.5.0/go.mod h1:Y6xdCPy81yi0SQnDY1xdNTNpfY1oAgXUlcfN3B3eSng= +cloud.google.com/go/websecurityscanner v1.6.1/go.mod h1:Njgaw3rttgRHXzwCB8kgCYqv5/rGpFCsBOvPbYgszpg= +cloud.google.com/go/websecurityscanner v1.6.2/go.mod h1:7YgjuU5tun7Eg2kpKgGnDuEOXWIrh8x8lWrJT4zfmas= +cloud.google.com/go/websecurityscanner v1.6.3/go.mod h1:x9XANObUFR+83Cya3g/B9M/yoHVqzxPnFtgF8yYGAXw= +cloud.google.com/go/websecurityscanner v1.6.4/go.mod h1:mUiyMQ+dGpPPRkHgknIZeCzSHJ45+fY4F52nZFDHm2o= +cloud.google.com/go/websecurityscanner v1.6.5/go.mod h1:QR+DWaxAz2pWooylsBF854/Ijvuoa3FCyS1zBa1rAVQ= +cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= +cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= +cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= +cloud.google.com/go/workflows v1.11.1/go.mod h1:Z+t10G1wF7h8LgdY/EmRcQY8ptBD/nvofaL6FqlET6g= +cloud.google.com/go/workflows v1.12.0/go.mod h1:PYhSk2b6DhZ508tj8HXKaBh+OFe+xdl0dHF/tJdzPQM= +cloud.google.com/go/workflows v1.12.1/go.mod h1:5A95OhD/edtOhQd/O741NSfIMezNTbCwLM1P1tBRGHM= +cloud.google.com/go/workflows v1.12.2/go.mod h1:+OmBIgNqYJPVggnMo9nqmizW0qEXHhmnAzK/CnBqsHc= +cloud.google.com/go/workflows v1.12.3/go.mod h1:fmOUeeqEwPzIU81foMjTRQIdwQHADi/vEr1cx9R1m5g= +cloud.google.com/go/workflows v1.12.4/go.mod h1:yQ7HUqOkdJK4duVtMeBCAOPiN1ZF1E9pAMX51vpwB/w= cuelang.org/go v0.0.16-0.20200320220106-76252f4b7486/go.mod h1:NTaUCGX9N+OYqrQDaFuvROeLellLCkCnXp0sLS1StVY= -cuelang.org/go v0.2.2/go.mod h1:Dyjk8Y/B3CfFT1jQKJU0g5PpCeMiDe0yMOhk57oXwqo= -cuelang.org/go v0.3.2 h1:/Am5yFDwqnaEi+g942OPM1M4/qtfVSm49wtkQbeh5Z4= -cuelang.org/go v0.3.2/go.mod h1:jvMO35Q4D2D3m2ujAmKESICaYkjMbu5+D+2zIGuWTpQ= +dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= +dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= dmitri.shuralyov.com/gpu/mtl v0.0.0-20201218220906-28db891af037/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= -github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0= -github.com/Azure/go-autorest/autorest v0.9.6/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= -github.com/Azure/go-autorest/autorest v0.10.2 h1:NuSF3gXetiHyUbVdneJMEVyPUYAe5wh+aN08JYAf1tI= -github.com/Azure/go-autorest/autorest v0.10.2/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= -github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= -github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= -github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= -github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= -github.com/Azure/go-autorest/autorest/adal v0.9.5 h1:Y3bBUV4rTuxenJJs41HU3qmqsb+auo+a3Lz+PlJPpL0= -github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= -github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= -github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= -github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= -github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= -github.com/Azure/go-autorest/autorest/mocks v0.4.1 h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk= -github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/logger v0.1.0 h1:ruG4BSDXONFRrZZJ2GUXDiUyVpayPmb1GnWeHDdaNKY= -github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= -github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= -github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= -github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= +git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= +github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= -github.com/DataDog/datadog-go v0.0.0-20180330214955-e67964b4021a/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= -github.com/MakeNowJust/heredoc v0.0.0-20171113091838-e9091a26100e/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= -github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg= -github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver v1.4.2 h1:WBLTQ37jOCzSLtXNdoo8bNM8876KhNqOKvrlGITgsTc= -github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Masterminds/semver/v3 v3.1.0 h1:Y2lUDsFKVRSYGojLJ1yLxSXdMmMYTYls0rCvoqmMUQk= -github.com/Masterminds/semver/v3 v3.1.0/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= -github.com/Masterminds/sprig v2.15.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= -github.com/Masterminds/sprig v2.20.0+incompatible h1:dJTKKuUkYW3RMFdQFXPU/s6hg10RgctmTjRcbZ98Ap8= -github.com/Masterminds/sprig v2.20.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= -github.com/Masterminds/sprig/v3 v3.1.0 h1:j7GpgZ7PdFqNsmncycTHsLmVPf5/3wJtlgW9TNDYD9Y= -github.com/Masterminds/sprig/v3 v3.1.0/go.mod h1:ONGMf7UfYGAbMXCZmQLy8x3lCDIPrEZE/rU8pmrbihA= -github.com/Masterminds/squirrel v1.2.0/go.mod h1:yaPeOnPG5ZRwL9oKdTsO/prlkPbXWZlRVMQ/gGlzIuA= -github.com/Masterminds/vcs v1.13.1/go.mod h1:N09YCmOQr6RLxC6UNHzuVwAdodYbbnycGHSmwVJjcKA= -github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= -github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -github.com/Netflix/go-expect v0.0.0-20180615182759-c93bf25de8e8/go.mod h1:oX5x61PbNXchhh0oikYAH+4Pcfw5LKv21+Jnpr6r6Pc= -github.com/Netflix/go-expect v0.0.0-20180928190340-9d1f4485533b/go.mod h1:oX5x61PbNXchhh0oikYAH+4Pcfw5LKv21+Jnpr6r6Pc= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.2/go.mod h1:itPGVDKf9cC/ov4MdvJ2QZ0khw4bfoo9jzwTJlaxy2k= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0/go.mod h1:obipzmGjfSjam60XLwGfqUkJsfiheAl+TUjG+4yzyPM= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.26.0/go.mod h1:2bIszWvQRlJVmJLiuLhukLImRjKPcYdzzsx6darK02A= +github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= +github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= +github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= +github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= +github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/Masterminds/semver/v3 v3.3.0 h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+hmvYS0= +github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/Masterminds/sprig/v3 v3.3.0 h1:mQh0Yrg1XPo6vjYXgtf5OtijNAKJRNcTdOOGZe3tPhs= +github.com/Masterminds/sprig/v3 v3.3.0/go.mod h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSCzdgBfDb35Lz0= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= -github.com/airbrake/gobrake v3.6.1+incompatible/go.mod h1:wM4gu3Cn0W0K7GUuVWnlXZU11AGBXMILnrdOU8Kn00o= +github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= +github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= +github.com/alecthomas/assert/v2 v2.2.2/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ= +github.com/alecthomas/assert/v2 v2.3.0/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ= +github.com/alecthomas/kingpin/v2 v2.3.1/go.mod h1:oYL5vtsvEHZGHxU7DMp32Dvx+qL+ptGn6lWaot2vCNE= +github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= +github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= +github.com/alecthomas/participle/v2 v2.0.0/go.mod h1:rAKZdJldHu8084ojcWevWAL8KmEU+AT+Olodb+WoN2Y= +github.com/alecthomas/participle/v2 v2.1.0/go.mod h1:Y1+hAs8DHPmc3YUFzqllV+eSQ9ljPTk0ZkPMtEdAx2c= +github.com/alecthomas/repr v0.2.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/alexedwards/scs v1.4.1/go.mod h1:JRIFiXthhMSivuGbxpzUa0/hT5rz2hpyw61Bmd+S1bg= -github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= +github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ= -github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= +github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= +github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g= +github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0= +github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4xei5aX110hRiI= +github.com/apache/arrow/go/v12 v12.0.0/go.mod h1:d+tV/eHZZ7Dz7RPrFKtPK02tpr+c9/PEd/zm8mDS9Vg= +github.com/apache/arrow/go/v12 v12.0.1/go.mod h1:weuTY7JvTG/HDPtMQxEUp7pU73vkLWMLpY67QwZ/WWw= +github.com/apache/arrow/go/v14 v14.0.2/go.mod h1:u3fgh3EdgN/YQ8cVQRguVW3R+seMybFg8QBQ5LU+eBY= +github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= +github.com/apache/thrift v0.17.0/go.mod h1:OLxhMRJxomX+1I/KUw03qoV3mMz16BwaKI+d4fPBx7Q= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-metrics v0.3.0 h1:B7AQgHi8QSEi4uHu7Sbsga+IJDU+CENgjxoo81vDUqU= github.com/armon/go-metrics v0.3.0/go.mod h1:zXjbSimjXTd7vOpY8B0/2LpvNvDoXBuplAD+gJD3GYs= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= github.com/avast/retry-go v2.2.0+incompatible h1:m+w7mVLWa/oKqX2xYqiEKQQkeGH8DDEXB/XnjS54Wyw= github.com/avast/retry-go v2.2.0+incompatible/go.mod h1:XtSnn+n/sHqQIpZ10K1qAevBhOOCWBLXXy3hyiqqBrY= -github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= -github.com/aws/aws-sdk-go v1.26.7/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.30.15/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/beevik/etree v1.1.0/go.mod h1:r8Aw8JqVegEf0w2fDnATrX9VpkMcyFeM0FhwO62wh+A= -github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/avast/retry-go/v4 v4.3.3 h1:G56Bp6mU0b5HE1SkaoVjscZjlQb0oy4mezwY/cGH19w= +github.com/avast/retry-go/v4 v4.3.3/go.mod h1:rg6XFaiuFYII0Xu3RDbZQkxCofFwruZKW8oEF1jpWiU= +github.com/bazelbuild/rules_go v0.49.0/go.mod h1:Dhcz716Kqg1RHNWos+N6MlXNkjNP2EwZQ0LukRKJfMs= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bluekeyes/hatpear v0.0.0-20180714193905-ffb42d5bb417/go.mod h1:D+WOahrNtu6OK0KiVoXY9h5j7IcEs5LYke+zJkMBsKg= -github.com/bluekeyes/hatpear v0.1.1/go.mod h1:2bh+rl4wLhqzzL0hT7Q4SVGXIivrE8oKgH2WYM3ubt0= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= -github.com/bradleyfalzon/ghinstallation v1.1.1/go.mod h1:vyCmHTciHx/uuyN82Zc3rXN3X2KTK8nUTCrTMwAhcug= -github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= -github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= -github.com/bugsnag/bugsnag-go v1.4.0/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= -github.com/bugsnag/bugsnag-go v1.5.0/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= -github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= -github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= -github.com/bugsnag/panicwrap v1.2.0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= +github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/bufbuild/protovalidate-go v0.2.1/go.mod h1:e7XXDtlxj5vlEyAgsrxpzayp4cEMKCSSb8ZCkin+MVA= +github.com/bufbuild/protovalidate-go v0.9.1/go.mod h1:5jptBxfvlY51RhX32zR6875JfPBRXUsQjyZjm/NqkLQ= github.com/cenkalti/backoff v0.0.0-20181003080854-62661b46c409/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/certifi/gocertifi v0.0.0-20190105021004-abcd57078448/go.mod h1:GJKEexRPVJrBSOjoqN5VNOIKJ5Q3RViH6eu3puDRwx4= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= -github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chromedp/cdproto v0.0.0-20230802225258-3cf4e6d46a89/go.mod h1:GKljq0VrfU4D5yc+2qA6OVr8pmO/MBbPEWqWQ/oqGEs= +github.com/chromedp/chromedp v0.9.2/go.mod h1:LkSXJKONWTCHAfQasKFUZI+mxqS4tZqhmtGzzhLsnLs= +github.com/chromedp/sysutil v1.0.0/go.mod h1:kgWmDdq8fTzXYcKIBqIYvRRTnYb9aNS9moAV0xufSww= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= +github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic= +github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= -github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= +github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= github.com/client9/gospell v0.0.0-20160306015952-90dfc71015df/go.mod h1:X4IDm8zK6KavjWkfKQCet43DKeLii9nJhUK/seHoSbA= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed h1:OZmjad4L3H8ncOIR8rnb5MREYqG8ixi5+WbeUsquF0c= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230428030218-4003588d1b74/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20231109132714-523115ebc101/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM= +github.com/cncf/xds/go v0.0.0-20240318125728-8a4994d93e50/go.mod h1:5e1+Vvlzido69INQaVO6d87Qn543Xr6nooe9Kz7oBFM= +github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20240723142845-024c85f92f20/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20241223141626-cff3c89139a3/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 h1:Om6kYQYDUk5wWbT0t0q6pvyM49i9XZAv9dDrkDA7gjk= +github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/cockroachdb/apd/v2 v2.0.1 h1:y1Rh3tEU89D+7Tgbw+lp52T6p/GJLpDmNvr10UWqLTE= github.com/cockroachdb/apd/v2 v2.0.1/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= -github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= -github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20200107194136-26c1120b8d41/go.mod h1:Dq467ZllaHgAtVp4p1xUQWBrFXR9s/wyoTpG8zOJGkY= -github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= -github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= +github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= +github.com/coreos/go-oidc v2.3.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -github.com/crewjam/httperr v0.0.0-20190612203328-a946449404da/go.mod h1:+rmNIXRvYMqLQeR4DHyTvs6y0MEMymTz4vyFpFkKTPs= -github.com/crewjam/saml v0.3.2-0.20191206212704-861266e3a689/go.mod h1:fxbjgoFRea91JEzfcATb14uB+XPW1H88n0feRzehDeg= -github.com/crewjam/saml v0.4.5/go.mod h1:qCJQpUtZte9R1ZjUBcW8qtCNlinbO363ooNl02S68bk= -github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= -github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE= -github.com/dchest/uniuri v0.0.0-20160212164326-8902c56451e9/go.mod h1:GgB8SF9nRG+GqaDtLcwJZsQFhcogVCJ79j4EdT0c2V4= -github.com/deislabs/oras v0.8.1/go.mod h1:Mx0rMSbBNaNfY9hjpccEnxkOqJL6KGjtxNHPLC4G4As= -github.com/denisenkom/go-mssqldb v0.0.0-20191001013358-cfbb681360f0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= -github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= -github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc/go.mod h1:c9O8+fpSOX1DM8cPNSkX/qsBWdkD4yd2dpciOWQjpBw= github.com/dgryski/go-minhash v0.0.0-20170608043002-7fe510aff544/go.mod h1:VBi0XHpFy0xiMySf6YpVbRqrupW4RprJ5QTyN+XvGSM= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dgryski/go-spooky v0.0.0-20170606183049-ed3d087f40e2/go.mod h1:hgHYKsoIw7S/hlWtP7wD1wZ7SX1jPTtKko5X9jrOgPQ= -github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= -github.com/docker/cli v0.0.0-20200130152716-5d0cf8839492/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/distribution v0.0.0-20191216044856-a8371794149d/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= -github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= -github.com/docker/go-metrics v0.0.0-20181218153428-b84716841b82/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= -github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= -github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= -github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/ekzhu/minhash-lsh v0.0.0-20171225071031-5c06ee8586a1/go.mod h1:yEtCVi+QamvzjEH4U/m6ZGkALIkF2xfQnFp0BcKmIOk= -github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful v2.11.1+incompatible h1:CjKsv3uWcCMvySPQYKxO8XX3f9zD4FeZRsW4G0B4ffE= -github.com/emicklei/go-restful v2.11.1+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/emicklei/go-restful/v3 v3.12.2 h1:DhwDP0vY3k8ZzE0RunuJy8GhNpPL6zqLkDf9B/a0/xU= +github.com/emicklei/go-restful/v3 v3.12.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emicklei/proto v1.6.15 h1:XbpwxmuOPrdES97FrSfpyy67SSCV/wBIKXqgJzh6hNw= github.com/emicklei/proto v1.6.15/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= -github.com/emirpasic/gods v1.9.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210511190911-87d352569d55 h1:JrfVk5s8JgPiHVnissaQqxXTLTBSQ2GXYdX7eXJCfL0= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210511190911-87d352569d55/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= +github.com/envoyproxy/go-control-plane v0.11.0/go.mod h1:VnHyVMpzcLvCFt9yUz1UnCwHLhwx1WguiVDV7pTG/tI= +github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= +github.com/envoyproxy/go-control-plane v0.11.1/go.mod h1:uhMcXKCQMEJHiAb0w+YGefQLaTEw+YhGluxZkrTmD0g= +github.com/envoyproxy/go-control-plane v0.12.0/go.mod h1:ZBTaoJ23lqITozF0M6G4/IragXCQKCnYbmlmtHvwRG0= +github.com/envoyproxy/go-control-plane v0.13.0/go.mod h1:GRaKG3dwvFoTg4nj7aXdZnvMg4d7nvT/wl9WgVXn3Q8= +github.com/envoyproxy/go-control-plane v0.13.1/go.mod h1:X45hY0mufo6Fd0KW3rqsGvQMw58jvjymeCzBU3mWyHw= +github.com/envoyproxy/go-control-plane v0.13.4 h1:zEqyPVyku6IvWCFwux4x9RxkLOMUL+1vC9xUFv5l2/M= +github.com/envoyproxy/go-control-plane v0.13.4/go.mod h1:kDfuBlDVsSj2MjrLEtRWtHlsWIFcGyB2RMO44Dc5GZA= +github.com/envoyproxy/go-control-plane/envoy v1.32.2/go.mod h1:eR2SOX2IedqlPvmiKjUH7Wu//S602JKI7HPC/L3SRq8= +github.com/envoyproxy/go-control-plane/envoy v1.32.3/go.mod h1:F6hWupPfh75TBXGKA++MCT/CZHFq5r9/uwt/kQYkZfE= +github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= +github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= +github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.3.0-java/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.4.0/go.mod h1:amr46FC2KZvleZB2VXz+QeQDF+iIKKjQimiDrtp1rYA= -github.com/envoyproxy/protoc-gen-validate v0.4.1 h1:7dLaJvASGRD7X49jSCSXXHwKPm0ZN9r9kJD+p+vS7dM= -github.com/envoyproxy/protoc-gen-validate v0.4.1/go.mod h1:E+IEazqdaWv3FrnGtZIu3b9fPFMK8AzeTTrk9SfVwWs= -github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses= -github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= -github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= +github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= +github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= +github.com/envoyproxy/protoc-gen-validate v0.10.0/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= +github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= +github.com/envoyproxy/protoc-gen-validate v1.0.1/go.mod h1:0vj8bNkYbSTNS2PIyH87KZaeN4x9zpL9Qt8fQC7d+vs= +github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= +github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= +github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4= +github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= +github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= +github.com/evanphx/json-patch v0.5.2 h1:xVCHIVMUu1wtM/VkR9jVZ45N3FhZfYMMYGorLCR8P3k= +github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ= +github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU= +github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fgrosse/zaptest v1.1.0 h1:sK9hP0/xBoNX5qfFo3KWFluDXfc809APomI1QXuYELA= github.com/fgrosse/zaptest v1.1.0/go.mod h1:vMnRSul6kW7kIUXZgnZZcDwyTn8k49ODfAULL8nmL5w= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= -github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/form3tech-oss/jwt-go v3.2.3+incompatible h1:7ZaBxOI7TMoYBfyA3cQHErNNyAWIKUMIwqxEtgHOs5c= -github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/frankban/quicktest v1.4.1/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= +github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= -github.com/garyburd/redigo v1.6.0/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= +github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= +github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM= +github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= github.com/gertd/go-pluralize v0.1.1 h1:fQhql/WRRwr4TVp+TCw12s2esCacvEVBdkTUUwNqF/Q= github.com/gertd/go-pluralize v0.1.1/go.mod h1:t5DfHcumb6m0RqyVJDrDLEzL2AGeaiqUXIcDNwLaeAs= github.com/getkin/kin-openapi v0.1.1-0.20190507152207-d3180292eead/go.mod h1:V1z9xl9oF5Wt7v32ne4FmiF1alpS4dM6mNzoywPOXlk= -github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= -github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/getkin/kin-openapi v0.131.0 h1:NO2UeHnFKRYhZ8wg6Nyh5Cq7dHk4suQQr72a4pMrDxE= +github.com/getkin/kin-openapi v0.131.0/go.mod h1:3OlG51PCYNsPByuiMB0t4fjnNlIDnaEDsjiKUV8nL58= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 h1:Mn26/9ZMNWSw9C9ERFA1PUxfmGpolnw2v0bKOREu5ew= github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I= -github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= -github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= +github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= +github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= +github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= +github.com/go-jose/go-jose/v4 v4.0.4/go.mod h1:NKb5HO1EZccyMpiZNbdUw/14tiXNyUJh188dfnMCAfc= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= -github.com/go-ldap/ldap/v3 v3.1.3/go.mod h1:3rbOH3jRS2u6jg2rJnKAMLE/xQyCKIveG2Sa/Cohzb8= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= +github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v0.3.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v0.4.0 h1:K7/B1jt6fIBQVd4Owv2MqGQClcgf0R266+7C/QjRcLc= -github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/zapr v0.1.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= -github.com/go-logr/zapr v0.1.1/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= -github.com/go-logr/zapr v0.2.0 h1:v6Ji8yBW77pva6NkJKQdHLAJKrIJKRHz0RXwPqCHSR4= -github.com/go-logr/zapr v0.2.0/go.mod h1:qhKdvif7YF5GI9NWEpyxTSSBdGmzkNguibrdCNVPunU= +github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= +github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= -github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= -github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= -github.com/go-openapi/jsonpointer v0.19.3 h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w= -github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= +github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= -github.com/go-openapi/jsonreference v0.19.3 h1:5cxNfTy0UVC3X8JL5ymxzyoUZmo8iZb+jeTWn7tUa8o= -github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/jsonreference v0.20.1/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= +github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= +github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= -github.com/go-openapi/loads v0.19.4/go.mod h1:zZVHonKd8DXyxyw4yfnVjPzBjIQcLt0CCsn0N0ZrQsk= github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= -github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= -github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= -github.com/go-openapi/spec v0.19.4 h1:ixzUSnHTd6hCemgtAJgluaTSGYpLNpJY4mA2DIkdOAo= -github.com/go-openapi/spec v0.19.4/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= github.com/go-openapi/strfmt v0.19.2/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= -github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= -github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= -github.com/go-openapi/validate v0.19.5/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= -github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= +github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM= +github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= -github.com/gobuffalo/envy v1.7.1/go.mod h1:FurDp9+EDPE4aIUS3ZLyD+7/9fpx7YRt/ukY6jIHf0w= github.com/gobuffalo/envy v1.8.1 h1:RUr68liRvs0TS1D5qdW3mQv2SjAsu1QWMCx1tG4kDjs= github.com/gobuffalo/envy v1.8.1/go.mod h1:FurDp9+EDPE4aIUS3ZLyD+7/9fpx7YRt/ukY6jIHf0w= github.com/gobuffalo/flect v0.2.0/go.mod h1:W3K3X9ksuZfir8f/LrfVtWmCDQFfayuylOJ7sz/Fj80= github.com/gobuffalo/logger v1.0.0/go.mod h1:2zbswyIUa45I+c+FLXuWl9zSWEiVuthsk8ze5s8JvPs= -github.com/gobuffalo/logger v1.0.1/go.mod h1:2zbswyIUa45I+c+FLXuWl9zSWEiVuthsk8ze5s8JvPs= github.com/gobuffalo/packd v0.3.0 h1:eMwymTkA1uXsqxS0Tpoop3Lc0u3kTfiMBE6nKtQU4g4= github.com/gobuffalo/packd v0.3.0/go.mod h1:zC7QkmNkYVGKPw4tHpBQ+ml7W/3tIebgeo1b36chA3Q= github.com/gobuffalo/packr v1.30.1 h1:hu1fuVR3fXEZR7rXNW3h8rqSML8EVAf6KNm0NKO/wKg= github.com/gobuffalo/packr v1.30.1/go.mod h1:ljMyFO2EcrnzsHsN99cvbq055Y9OhRrIaviy289eRuk= github.com/gobuffalo/packr/v2 v2.5.1/go.mod h1:8f9c96ITobJlPzI44jj+4tHnEKNt0xXWSVlXRN9X1Iw= -github.com/gobuffalo/packr/v2 v2.7.1/go.mod h1:qYEvAazPaVxy7Y7KR0W8qYEE+RymX74kETFqjFoFlOc= -github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= -github.com/gofrs/flock v0.7.0/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -github.com/gofrs/flock v0.7.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/gogo/protobuf v0.0.0-20171007142547-342cbe0a0415/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= +github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= +github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-yaml v1.9.8/go.mod h1:JubOolP3gh0HpiBc4BLRD4YmjEjHAmIIB2aaXKkTfoE= +github.com/goccy/go-yaml v1.11.0/go.mod h1:H+mJrWtjPTJAHvRbV09MCK9xYwODM+wRTVFFTWckfng= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.2.2-0.20190730201129-28a6bbf47e48/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= +github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= +github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.3/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.4 h1:CNNw5U8lSiiBk7druxtSHHTsRWcxKoac6kZKm2peBBc= +github.com/golang/glog v1.2.4/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191027212112-611e8accdfc9/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4 h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/mock v1.7.0-rc.1 h1:YojYx61/OLFsiv6Rw1Z96LpldJIy31o+UHmwAUMJ6/U= +github.com/golang/mock v1.7.0-rc.1/go.mod h1:s42URUywIqd+OcERslBJvOjepvNymP31m3q8d/GkuRs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -458,15 +1729,27 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golangplus/bytes v0.0.0-20160111154220-45c989fe5450/go.mod h1:Bk6SMAONeMXrxql8uvOKuAZSu8aM5RUGv+1C6IJaEho= -github.com/golangplus/fmt v0.0.0-20150411045040-2a5d6d7d2995/go.mod h1:lJgMEyOkYFkPcDKwRXegd+iM6E7matEszMG5HhwytU8= -github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/cel-go v0.17.1/go.mod h1:HXZKzB0LXqer5lHHgfWAnlYwJaQBDKMjxjulNQzhwhY= +github.com/google/cel-go v0.23.0/go.mod h1:52Pb6QsDbC5kvgxvZhiL9QX1oZEkcUF/ZqaPx1J5Wwo= +github.com/google/cel-go v0.26.0/go.mod h1:A9O8OU9rdvrK5MQyrqfIxo1a0u4g3sF8KB6PUIaryMM= +github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/flatbuffers v23.5.26+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo= +github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -476,18 +1759,25 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-github/v29 v29.0.2/go.mod h1:CHKiKKPHJ0REzfwc14QMklvtHwCveD0PxlMjLlzAM5E= -github.com/google/go-github/v29 v29.0.3/go.mod h1:CHKiKKPHJ0REzfwc14QMklvtHwCveD0PxlMjLlzAM5E= -github.com/google/go-github/v32 v32.0.0/go.mod h1:rIEpZD9CTDQwDK9GDrtMTycQNA4JU3qBsCizh3q2WCI= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/go-pkcs11 v0.2.0/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= +github.com/google/go-pkcs11 v0.2.1-0.20230907215043-c6f79328ddf9/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= -github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -497,614 +1787,712 @@ github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo= +github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= +github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= +github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v0.0.0-20161128191214-064e2069ce9c/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/s2a-go v0.1.0/go.mod h1:OJpEgntRZo8ugHpF9hkoLJbS5dSI20XZeXJ9JVywLlM= +github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= +github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= +github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= -github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= -github.com/googleapis/gnostic v0.5.1 h1:A8Yhf6EtqTv9RMsU6MQTyrtV1TjWlR6xU9BsZIwuTCM= -github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= -github.com/goph/emperror v0.17.1/go.mod h1:+ZbQ+fUNO/6FNiUo0ujtMjhgad9Xa6fQL9KhH4LNHic= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= -github.com/gorilla/handlers v1.4.0/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= +github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/googleapis/gax-go/v2 v2.10.0/go.mod h1:4UOEnMCrxsSqQ940WnTiD6qJ63le2ev3xfyagutxiPw= +github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= +github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= +github.com/googleapis/gax-go/v2 v2.12.1/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= +github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gosuri/uitable v0.0.4/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674/go.mod h1:r4w70xmWCQKmi1ONH4KIaBptdivuRPyosB9RmPlGEwA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.0/go.mod h1:qOchhhIlmRcqk/O9uCo/puJlyo07YINaIqdZfZG3Jkc= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1/go.mod h1:RBRO7fro65R6tjKzYgLAFo0t1QEXY1Dp+i/bvpRiqiQ= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/hashicorp/consul/api v1.3.0 h1:HXNYlRkkM/t+Y/Yhxtwcy02dlYwIaoxzvxPnS+cqy78= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= -github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-hclog v0.9.2 h1:CG6TE5H9/JXsFWJCfoIVpKFIkFe6ysEuHirp4DxCsHI= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-hclog v0.10.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-immutable-radix v1.0.0 h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.1.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-multierror v1.1.0 h1:B9UzwGQJehnUY1yNrnwREHc3fGbC2xefo8g4TbElacI= -github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= -github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= -github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-retryablehttp v0.6.2 h1:bHM2aVXwBtBJWxHtkSrWuI4umABCUczs52eiUS9nSiw= github.com/hashicorp/go-retryablehttp v0.6.2/go.mod h1:gEx6HMUGxYYhJScX7W1Il64m6cc2C1mDaW3NQ9sY1FY= -github.com/hashicorp/go-retryablehttp v0.6.4/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-rootcerts v1.0.1 h1:DMo4fmknnz0E0evoNYnV48RjWndOsmd6OW+09R3cEP8= github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-sockaddr v1.0.2 h1:ztczhD1jLxIRjVejw8gFomI1BQZOe2WoVOu0SyteCQc= github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.2-0.20191001231223-f32f5fe8d6a8/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/memberlist v0.1.4/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/memberlist v0.1.5/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2 h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/serf v0.8.5/go.mod h1:UpNcs7fFbpKIyZaUuSW6EPiH+eZC7OuyFD+wc1oal+k= +github.com/hashicorp/vault/api v1.0.5-0.20191108163347-bdd38fca2cff h1:cl94LQIrs/mNbh3ny1R8lM1gtYcUBa7HnGtOCi35SlQ= github.com/hashicorp/vault/api v1.0.5-0.20191108163347-bdd38fca2cff/go.mod h1:Uf8LaHyrYsgVgHzO2tMZKhqRGlL3UJ6XaSwW2EA1Iqo= +github.com/hashicorp/vault/sdk v0.1.14-0.20191108161836-82f2b5571044 h1:bXjbz4PFfOoMUrqe9upVa0SbJ2RqfbLzh4eprst/b40= github.com/hashicorp/vault/sdk v0.1.14-0.20191108161836-82f2b5571044/go.mod h1:PcekaFGiPJyHnFy+NZhP6ll650zEw51Ag7g/YEa+EOU= -github.com/hashicorp/vault/sdk v0.1.14-0.20191112033314-390e96e22eb2/go.mod h1:PcekaFGiPJyHnFy+NZhP6ll650zEw51Ag7g/YEa+EOU= -github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= -github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/hhatto/gorst v0.0.0-20181029133204-ca9f730cac5b/go.mod h1:HmaZGXHdSwQh1jnUlBGN2BeEYOHACLVGzYOXCbsLvxY= -github.com/hinshun/vt10x v0.0.0-20180616224451-1954e6464174/go.mod h1:DqJ97dSdRW1W22yXSB90986pcOyQ7r45iio1KN2ez1A= -github.com/hinshun/vt10x v0.0.0-20180809195222-d55458df857c/go.mod h1:DqJ97dSdRW1W22yXSB90986pcOyQ7r45iio1KN2ez1A= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= -github.com/huandu/xstrings v1.3.1 h1:4jgBlKK6tLKFvO8u5pmYjG91cqytmDCDvGh7ECVFfFs= -github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/iancoleman/strcase v0.0.0-20180726023541-3605ed457bf7/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= -github.com/iancoleman/strcase v0.0.0-20191112232945-16388991a334/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= -github.com/iancoleman/strcase v0.1.3 h1:dJBk1m2/qjL1twPLf68JND55vvivMupZ4wIzE8CTdBw= -github.com/iancoleman/strcase v0.1.3/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= +github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI= +github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 h1:i462o439ZjprVSFSZLZxcsoAe592sZB1rci2Z8j4wdk= +github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= +github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ilackarms/protoc-gen-doc v1.0.0/go.mod h1:Xg+QAXYbry+dRyOxs6nw1QpJb5I153zqbzKgN/X0SEs= -github.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.10 h1:6q5mVkdH/vYmqngx7kZQTjJ5HRsx+ImorDIEQ+beJgc= -github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= +github.com/ianlancetaylor/demangle v0.0.0-20240312041847-bd984b5ce465/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/invopop/jsonschema v0.7.0 h1:2vgQcBz1n256N+FpX3Jq7Y17AjYt46Ig3zIWyy770So= +github.com/invopop/jsonschema v0.7.0/go.mod h1:O9uiLokuu0+MGFlyiaqtWxwqJm41/+8Nj0lD7A36YH0= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jdkato/prose v1.1.0/go.mod h1:jkF0lkxaX5PFSlk9l4Gh9Y+T57TqUZziWT7uZbW5ADg= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= -github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jonboulle/clockwork v0.2.0/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= -github.com/jonboulle/clockwork v0.2.1/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +github.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 h1:uC1QfSlInpQF+M0ao65imhwqKnz3Q2z/d8PWZRMQvDM= github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= github.com/k0kubun/pp v2.3.0+incompatible h1:EKhKbi34VQDWJtq+zpsKSEhkHHs9w2P8Izbq8IhLVSo= github.com/k0kubun/pp v2.3.0+incompatible/go.mod h1:GWse8YhT0p8pT4ir3ZgBbfZild3tgzSScAn6HmfYukg= -github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= github.com/karrick/godirwalk v1.10.12/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= +github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= +github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.3/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v0.0.0-20160406211939-eadb3ce320cb/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o= -github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw= +github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80/go.mod h1:imJHygn/1yfhB7XSJJKlFZKl/J+dCPAknuiaGOshXAs= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.3.0 h1:/qkRGz8zljWiDcFvgpwUpwIAPu3r07TDvs3Rws+o/pU= -github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= -github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/lithammer/dedent v1.1.0 h1:VNzHMVCBNG1j0fh3OrsFRkVUwStdDArbgBWoPAffktY= github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= -github.com/lyft/protoc-gen-star v0.4.10/go.mod h1:mE8fbna26u7aEA2QCVvvfBU/ZrPgocG1206xAFPcs94= -github.com/lyft/protoc-gen-star v0.4.14/go.mod h1:mE8fbna26u7aEA2QCVvvfBU/ZrPgocG1206xAFPcs94= -github.com/lyft/protoc-gen-star v0.5.1/go.mod h1:9toiA3cC7z5uVbODF7kEQ91Xn7XNFkVUl+SrEe+ZORU= -github.com/lyft/protoc-gen-star v0.5.2 h1:ICQPpOr4uO46eme1Y5Jj0fnJkc9/upQ9xxt0+2AmUDQ= -github.com/lyft/protoc-gen-star v0.5.2/go.mod h1:9toiA3cC7z5uVbODF7kEQ91Xn7XNFkVUl+SrEe+ZORU= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-star v0.6.1 h1:erE0rdztuaDq3bpGifD95wfoPrSZc95nGA6tbiNYh6M= +github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= +github.com/lyft/protoc-gen-star/v2 v2.0.3/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= +github.com/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4 h1:sIXJOMrYnQZJu7OB7ANSF4MYri2fTEGIsRLz6LwI4xE= +github.com/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM= -github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= -github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= -github.com/mattermost/xml-roundtrip-validator v0.0.0-20201213122252-bcd7e1b9601e/go.mod h1:qccnGMcpgwcNaBnxqpJpWWUiPNr5H3O8eDgGV9gT5To= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.7 h1:bQGKb3vps/j0E9GfJQ03JyhRuxsvdAanXlT9BTw3mdw= -github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= -github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-shellwords v1.0.10/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= -github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/mattn/go-sqlite3 v1.12.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/mattn/go-zglob v0.0.1/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= +github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/mattn/go-zglob v0.0.3 h1:6Ry4EYsScDyt5di4OI6xw1bYhOqfE5S33Z1OPy+d+To= github.com/mattn/go-zglob v0.0.3/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.15/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= +github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= -github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= +github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/hashstructure v1.0.0 h1:ZkRJX1CyOoTkar7p/mLS5TZU4nJ1Rn/F8u9dGS02Q3Y= github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= -github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= -github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/moby/moby v0.7.3-0.20190826074503-38ab9da00309/go.mod h1:fDXVQ6+S340veQPv35CzDahGBmHsiclFwfEygB/TWMc= -github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= +github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= +github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/montanaflynn/stats v0.0.0-20180911141734-db72e6cae808/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= -github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de h1:D5x39vF5KCwKQaw+OC9ZPiLVHXz3UFw2+psEX+gYcto= github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de/go.mod h1:kJun4WP5gFuHZgRjZUWWuH1DTxCtxbHDOIJsudS8jzY= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-proto-validators v0.0.0-20180403085117-0950a7990007/go.mod h1:m2XC9Qq0AlmmVksL6FktJCdTYyLk7V3fKyp0sl1yWQo= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= github.com/neurosnap/sentences v1.0.6/go.mod h1:pg1IapvYpWCJJm/Etxeh0+gtMf1rI1STY9S7eUCPbDc= -github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037 h1:G7ERwszslrBzRxj//JalHPu/3yz+De2J+4aLtSRlHiY= +github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037/go.mod h1:2bpvgLBZEtENV5scfDFEtB/5+1M4hkQhDQrccEJ/qGw= +github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90 h1:bQx3WeLcUWy+RletIKwUIt4x3t8n2SxavmoclizMb8c= +github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90/go.mod h1:y5+oSEHCPT/DGrS++Wc/479ERge0zTFxaF8PbGKcg2o= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.2/go.mod h1:rSAaSIOAGT9odnlyGlUfAJaoc5w2fSBUmeGDbRWPxyQ= -github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.14.1 h1:jMU0WaQrP0a/YAEq8eJmJKjBoMs+pClEr1vDMlM/Do4= -github.com/onsi/ginkgo v1.14.1/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU= +github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk= +github.com/onsi/ginkgo/v2 v2.3.0/go.mod h1:Eew0uilEqZmIEZr8JrvYlvOM7Rr6xzTmMV8AyFNU9d0= +github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo= +github.com/onsi/ginkgo/v2 v2.5.0/go.mod h1:Luc4sArBICYCS8THh8v3i3i5CuSZO+RaQRaJoeNwomw= +github.com/onsi/ginkgo/v2 v2.7.0/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo= +github.com/onsi/ginkgo/v2 v2.8.1/go.mod h1:N1/NbDngAFcSLdyZ+/aYTYGSlq9qMCS/cNKGJjy+csc= +github.com/onsi/ginkgo/v2 v2.9.0/go.mod h1:4xkjoL/tZv4SMWeww56BU5kAt19mVB47gTWxmrTcxyk= +github.com/onsi/ginkgo/v2 v2.9.1/go.mod h1:FEcmzVcCHl+4o9bQZVab+4dC9+j+91t2FHSzmGAPfuo= +github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= +github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k= +github.com/onsi/ginkgo/v2 v2.9.7/go.mod h1:cxrmXWykAwTwhQsJOPfdIDiJ+l2RYq7U8hFU+M/1uw0= +github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM= +github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= +github.com/onsi/ginkgo/v2 v2.17.1/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3HigUjbIBOs= +github.com/onsi/ginkgo/v2 v2.17.2/go.mod h1:nP2DPOQoNsQmsVyv5rDA8JkXQoCs6goXIvr/PRJ1eCc= +github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To= +github.com/onsi/ginkgo/v2 v2.20.1/go.mod h1:lG9ey2Z29hR41WMVthyJBGUBcBhGOtoPF2VFMvBXFCI= +github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= +github.com/onsi/ginkgo/v2 v2.22.0 h1:Yed107/8DjTr0lKCNt7Dn8yQ6ybuDRQoMGrNFKzMfHg= +github.com/onsi/ginkgo/v2 v2.22.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.8.1/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.10.2/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.10.5 h1:7n6FEkpFmfCoo2t+YYqXH0evK+a9ICQz0xcAy9dYcaQ= -github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= +github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= +github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc= +github.com/onsi/gomega v1.22.1/go.mod h1:x6n7VNe4hw0vkyYUM4mjIXx3JbLiPaBPNgB7PRQ1tuM= +github.com/onsi/gomega v1.24.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg= +github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM= +github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM= +github.com/onsi/gomega v1.27.1/go.mod h1:aHX5xOykVYzWOV4WqQy0sy8BQptgukenXpCXfadcIAw= +github.com/onsi/gomega v1.27.3/go.mod h1:5vG284IBtfDAmDyrK+eGyZmUgUlmi+Wngqo557cZ6Gw= +github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ= +github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= +github.com/onsi/gomega v1.27.7/go.mod h1:1p8OOlwo2iUUDsHnOrjE5UKYJ+e3W8eQ3qSlRahPmr4= +github.com/onsi/gomega v1.27.8/go.mod h1:2J8vzI/s+2shY9XHRApDkdgPo1TKT7P2u6fXeJKFnNQ= +github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= +github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= +github.com/onsi/gomega v1.33.0/go.mod h1:+925n5YtiFsLzzafLUHzVMBpvvRAzrydIBiSIxjX3wY= +github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= +github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= +github.com/onsi/gomega v1.34.2/go.mod h1:v1xfxRgk0KIsG+QOdm7p8UosrOzPYRo60fd3B/1Dukc= +github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= +github.com/onsi/gomega v1.36.1 h1:bJDPBO7ibjxcbHMgSCoo4Yj18UWbKDlLwX1x9sybDcw= +github.com/onsi/gomega v1.36.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= -github.com/palantir/go-baseapp v0.2.0/go.mod h1:7rEjgYzWbHLLuY+mV2iJthxTddEc6aO+kFYsjDKNmEs= -github.com/palantir/go-baseapp v0.2.3/go.mod h1:TSsvmXBDAAu2wZJgWi1/nG+YM5xIOEsXFmLsNoGP5O4= -github.com/palantir/go-githubapp v0.5.0/go.mod h1:/Xm5h66uEBX24An2Ln8H6Rk44z8uwk4E6m4gNrPadjQ= +github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde/go.mod h1:nZgzbfBr3hhjoZnS66nKrHmduYNpc34ny7RK4z5/HM0= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s= +github.com/perimeterx/marshmallow v1.1.5/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= -github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= +github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= +github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= +github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4 v2.3.0+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= -github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= +github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= github.com/prometheus/alertmanager v0.20.0/go.mod h1:9g2i48FAyZW6BtbsnvHtMHQXl2aVtrORKwKVCQ+nbrg= -github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= github.com/prometheus/client_golang v1.2.1/go.mod h1:XMU6Z2MjaRKVu/dC1qupJI9SiNkDYzz3xecMgSW/F+U= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.9.0 h1:Rrch9mh17XcxvEu9D9DEpb4isxjGBtcevQjKvxPRQIU= -github.com/prometheus/client_golang v1.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU= -github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= +github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= +github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= +github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= +github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= +github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= +github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.15.0 h1:4fgOnadei3EZvgRwxJ7RMpG1k1pOZth5Pc13tyspaKM= -github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= +github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= +github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= +github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.2.0 h1:wH4vA7pcjKuZzjF7lM8awk4fnuJO6idemZXoKnULUx4= -github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= +github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= +github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/pseudomuto/protoc-gen-doc v1.0.0/go.mod h1:fwtQAY9erXp3mC92O8OTECnDlJT2r0Ff4KSEKbGEmy0= -github.com/pseudomuto/protoc-gen-doc v1.4.1/go.mod h1:exDTOVwqpp30eV/EDPFLZy3Pwr2sn6hBC1WIYH/UbIg= -github.com/pseudomuto/protokit v0.2.0/go.mod h1:2PdH30hxVHsup8KpBTOXTBeMVhJZVio3Q8ViKSAXT0Q= +github.com/protocolbuffers/txtpbfmt v0.0.0-20201118171849-f6a6b3f636fc h1:gSVONBi2HWMFXCa9jFdYvYk7IwW/mTLxWOF7rXS4LO0= +github.com/protocolbuffers/txtpbfmt v0.0.0-20201118171849-f6a6b3f636fc/go.mod h1:KbKfKPy2I6ecOIGA9apfheFv14+P3RSmmQvshofQyMY= +github.com/radovskyb/watcher v1.0.2 h1:9L5TsZUbo1nKhQEQPtICVc+x9UZQ6VPdBepLHyGw/bQ= github.com/radovskyb/watcher v1.0.2/go.mod h1:78okwvY5wPdzcb1UYnip1pvrZNIVEIh/Cm+ZuvsUYIg= -github.com/rcrowley/go-metrics v0.0.0-20180503174638-e2704e165165/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.4.0/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.6.0/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rogpeppe/testscript v1.1.0/go.mod h1:lzMlnW8LS56mcdJoQYkrlzqOoTFCOemzt5LusJ93bDM= -github.com/rollbar/rollbar-go v1.0.2/go.mod h1:AcFs5f0I+c71bpHlXNNDbOWJiKwjFDtISeXco0L5PKQ= -github.com/rotisserie/eris v0.1.1 h1:C0wEdnJ6+3jYx2r8RS4xBM+ZW+mVrXGocIaFbTdRYCA= -github.com/rotisserie/eris v0.1.1/go.mod h1:2ik3CyJrzlOjGyDGrKfqZivSfmkhCS3ktE+T1mNzzLk= +github.com/rotisserie/eris v0.4.0 h1:wfZW5hp90Y386s54DoJDK2Th3ycZotiBGM7b5b5aIHI= +github.com/rotisserie/eris v0.4.0/go.mod h1:lODN/gtqebxPHRbCcWeCYOE350FC2M3V/oAPT2wKxAU= github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= -github.com/rs/zerolog v1.9.1/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= -github.com/rs/zerolog v1.18.0/go.mod h1:9nvC1axdVrAHcu/s9taAVfBuIdTZLVQmKQyvrUjF5+I= -github.com/rubenv/sql-migrate v0.0.0-20200212082348-64f95ea68aa3/go.mod h1:rtQlpHw+eR6UrqaS3kX1VYeaCxzCVdimDS7g5Ln4pPc= -github.com/russellhaering/goxmldsig v0.0.0-20180430223755-7acd5e4a6ef7/go.mod h1:Oz4y6ImuOQZxynhbSXk7btjEfNBtGlj2dcaOvXl2FSM= -github.com/russellhaering/goxmldsig v1.1.0/go.mod h1:QK8GhXPB3+AfuCrfo0oRISa9NfzeCpWmxeGnqEpDF9o= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= +github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= -github.com/sam-heilbron/protoc-gen-openapi v0.0.0-20210521134209-c323189e7a9a/go.mod h1:jpsXtLtq68rtcNB9EH+B698trM+D6fvRpjcUVSaxSvc= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/satori/go.uuid v0.0.0-20160603004225-b111a074d5ef/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/shogo82148/go-shuffle v0.0.0-20180218125048-27e6095f230d/go.mod h1:2htx6lmL0NGLHlO8ZCf+lQBGBHIbEujyywxJArf+2Yc= -github.com/shurcooL/githubv4 v0.0.0-20191127044304-8f68eb5628d0/go.mod h1:hAF0iLZy4td2EX+/8Tw+4nodhlMrwN3HupfaXj3zkGo= -github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f/go.mod h1:AuYgA5Kyo4c7HfUmvRGs/6rGlMMV/6B1bVnB9JxJEEg= +github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= +github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= -github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/solo-io/anyvendor v0.0.1/go.mod h1:SLucIeU8qBOYI82BveNVn2LzZFcMWJSCf8Kd1S4Jcr4= -github.com/solo-io/anyvendor v0.0.3 h1:vtN3LbxFuIByjqF12hd3RnMiVZhv2EkF9ci3NV8NcLI= -github.com/solo-io/anyvendor v0.0.3/go.mod h1:xHZ0KMrsG620iI4VnRDJGJ1gk8bR79HG/tlTWfY15UA= -github.com/solo-io/go-list-licenses v0.0.4/go.mod h1:x6LSp/NrYgVXwNum7ZOiaAYTpg6B3F6TrWYfcdHVroA= -github.com/solo-io/go-utils v0.19.0/go.mod h1:If8NiehXROCFU65PGeDTrrZCNA5gJXvbcVoXI8Fqjko= -github.com/solo-io/go-utils v0.20.2/go.mod h1:6e8K1spnMWwlnJRSNp/J84GEyJbrcK4Gm7i+ehzCi8c= -github.com/solo-io/go-utils v0.21.4/go.mod h1:6e8K1spnMWwlnJRSNp/J84GEyJbrcK4Gm7i+ehzCi8c= -github.com/solo-io/go-utils v0.21.6 h1:QTRrYJUK31p6IRqR3A1Y9H4MXgl1eOB4cZdD0o5gIhc= -github.com/solo-io/go-utils v0.21.6/go.mod h1:N6jeYnrAKq5uGv6m/hBkJ+g6i3AwgkyfVoaDlQ/z64o= -github.com/solo-io/k8s-utils v0.0.1/go.mod h1:53N9+9Gl2MwqIZJ7/ocA9gKvWt+6z7MPD2qKQix7oFE= -github.com/solo-io/k8s-utils v0.0.8 h1:GJ+DLBFfR8WRg2WofGQ3o3DVPByDEYgANX9kQYhprow= -github.com/solo-io/k8s-utils v0.0.8/go.mod h1:Cg2ymG0xhLdyS3NJ0D98yxiSWjAKYPNopzPTwVDl7e4= -github.com/solo-io/protoc-gen-ext v0.0.13 h1:grQ41RRAiMzl1zMzXNug1hoXl2QRETGmXyRJyskv6qY= -github.com/solo-io/protoc-gen-ext v0.0.13/go.mod h1:/U/jMDtVI7R6N323sfaUXK9Mmo54D7SY3pP7JtI/kMo= -github.com/solo-io/skv2 v0.17.17 h1:reWPYrRI7VjZG0piQusPH6BdIXiBLs+piR5eeuQgEG4= -github.com/solo-io/skv2 v0.17.17/go.mod h1:nYjANLlL1SLPV/7Gr2mKgfxO3Jta/yNAxKnAHKhSamM= -github.com/solo-io/solo-kit v0.21.0 h1:NhVyzchGNwj3FoC7aEHQK7GrhXprfUUSr2NVxD1XbQs= -github.com/solo-io/solo-kit v0.21.0/go.mod h1:OPetRcesvIyh1mboxqqAXH+YXRUwQBzZ5vPQ39y/GyU= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= +github.com/solo-io/anyvendor v0.2.0 h1:L8AnSGS/PW7TA24vZpMXrfTlolXi3IyMMFjoDXOH5z4= +github.com/solo-io/anyvendor v0.2.0/go.mod h1:WIJdoBmSQCii7hsiCpjXNWa0AnRzOLbg6PCYkVK4LDE= +github.com/solo-io/cue v0.4.7 h1:X65mDmyBrS3ODvDvAgzIt9aTxbwBtdt+ayg4w9XKoaA= +github.com/solo-io/cue v0.4.7/go.mod h1:P1tN9y6nBPAMoEK5aJxI8kn0VUcjVcRc+8esieRzQ7M= +github.com/solo-io/go-utils v0.29.0 h1:sQ6kkSJtTRsU55qsGBvwDkpJXTOWsC7ZuKo3VEsYfjU= +github.com/solo-io/go-utils v0.29.0/go.mod h1:OLAhGzBc1NSSfwD6IiI/kcaRSlFnqAUWyxtC6ku3+90= +github.com/solo-io/k8s-utils v0.12.0 h1:Ovovz/i1v+UcZM22pNhh7tX9AO2ycwJcYErxPf8Hz+k= +github.com/solo-io/k8s-utils v0.12.0/go.mod h1:RKP+mxLkmVQMxaikZz5Nq37thYS25+KWfDqF5wURvZs= +github.com/solo-io/protoc-gen-ext v0.1.0 h1:WvmXaontRCax9Wq5vAdewv+4tCwTrubC5rbk6coSajQ= +github.com/solo-io/protoc-gen-ext v0.1.0/go.mod h1:pJ8/XXyHs6T3p7dpu9Hmv0B4uhn7HI+OR2YIjT1mKDc= +github.com/solo-io/skv2 v0.45.0 h1:4Weshmrs0HknZ1WZPZC+bcjIpImoyDyKaLcWsQ2/Z8s= +github.com/solo-io/skv2 v0.45.0/go.mod h1:Y6Xah62KVpAHoD5iF7i3ls/Bbj3li/P8KCOVsA133/I= +github.com/solo-io/solo-kit v0.40.0 h1:ptQ+hwqbeEX74cSYR863R+2GA005wfG8Q0IuebQk4c8= +github.com/solo-io/solo-kit v0.40.0/go.mod h1:9q2n8+Nj2/w627TFOo/mLNiQeeCIkhsLcEYy5DeG/sQ= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= -github.com/spf13/afero v1.3.4/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/afero v1.5.1 h1:VHu76Lk0LSP1x254maIu2bplkWpfBWI+B+6fdoZprcg= -github.com/spf13/afero v1.5.1/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= +github.com/spf13/afero v1.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY= +github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w= +github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= -github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= +github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= +github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/testify v0.0.0-20170130113145-4d4bfba8f1d1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.3.1-0.20190311161405-34c6fa2dc709/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/substrait-io/substrait-go v0.4.2/go.mod h1:qhpnLmrcvAnlZsUyPXZRqldiHapPTXC3t7xFgDi3aQg= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= +github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= +github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xanzy/ssh-agent v0.2.0/go.mod h1:0NyE30eGUDliuLEHJgYte/zncp2zdTStcOnWhgSqHD8= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= -github.com/xeipuuv/gojsonschema v1.1.0/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= -github.com/xenolf/lego v0.3.2-0.20160613233155-a9d8cec0e656/go.mod h1:fwiGnfsIjG7OHPfOvgK7Y/Qo6+2Ox0iozjNTkZICKbY= +github.com/xhit/go-str2duration v1.2.0/go.mod h1:3cPSlfZlUHVlneIVfePFWcJZsuwf+P1v2SRTV4cUmp4= +github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1/go.mod h1:QcJo0QPSfTONNIgpN5RA8prR7fF8nkF6cTWTcNerRO8= +github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= -github.com/yvasiyarov/go-metrics v0.0.0-20150112132944-c25f46c4b940/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= -github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= -github.com/yvasiyarov/gorelic v0.0.6/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= -github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= -github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= -github.com/zenazn/goji v0.9.1-0.20160507202103-64eb34159fe5/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= -github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/errs v1.4.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= +github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= +go.einride.tech/aip v0.66.0/go.mod h1:qAhMsfT7plxBX+Oy7Huol6YUvZ0ZzdUz26yZsQwfl1M= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.etcd.io/etcd v0.5.0-alpha.5.0.20200819165624-17cef6e3e9d5/go.mod h1:skWido08r9w6Lq/w70DO5XYIKMu4QFu1+4VsqLQuJy8= -go.hein.dev/go-version v0.1.0/go.mod h1:WOEm7DWMroRe5GdUgHMvx+Pji5WWIpMuXmK/3foylXs= +go.etcd.io/bbolt v1.4.2/go.mod h1:Is8rSHO/b4f3XigBC0lL0+4FwAQv3HXEEIgFMuKHceM= +go.etcd.io/etcd/api/v3 v3.6.4/go.mod h1:eFhhvfR8Px1P6SEuLT600v+vrhdDTdcfMzmnxVXXSbk= +go.etcd.io/etcd/client/pkg/v3 v3.6.4/go.mod h1:sbdzr2cl3HzVmxNw//PH7aLGVtY4QySjQFuaCgcRFAI= +go.etcd.io/etcd/client/v3 v3.6.4/go.mod h1:jaNNHCyg2FdALyKWnd7hxZXZxZANb0+KGY+YQaEMISo= +go.etcd.io/etcd/pkg/v3 v3.6.4/go.mod h1:kKcYWP8gHuBRcteyv6MXWSN0+bVMnfgqiHueIZnKMtE= +go.etcd.io/etcd/server/v3 v3.6.4/go.mod h1:aYCL/h43yiONOv0QIR82kH/2xZ7m+IWYjzRmyQfnCAg= +go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= +go.etcd.io/raft/v3 v3.6.0/go.mod h1:nLvLevg6+xrVtHUmVaTcTz603gQPHfh7kUAwV6YpfGo= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.22.6/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/contrib/detectors/gcp v1.31.0/go.mod h1:tzQL6E1l+iV44YFTkcAeNQqzXUiekSYP9jjJjXwEd00= +go.opentelemetry.io/contrib/detectors/gcp v1.32.0/go.mod h1:TVqo0Sda4Cv8gCIixd7LuLwW4EylumVWfhjZJjDD4DU= +go.opentelemetry.io/contrib/detectors/gcp v1.34.0/go.mod h1:cV4BMFcscUR/ckqLkbfQmF0PRsq8w/lMGzdbCSveBHo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.48.0/go.mod h1:tIKj3DbO8N9Y2xo52og3irLsPI4GW02DSMtrVgNMgxg= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.48.0/go.mod h1:rdENBZMT2OE6Ne/KLwpiXudnAsbdrdBaqBvTN8M8BgA= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q= +go.opentelemetry.io/otel v1.19.0/go.mod h1:i0QyjOq3UPoTzff0PJB2N66fb4S0+rSbSB15/oyH9fY= +go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= +go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= +go.opentelemetry.io/otel v1.23.0/go.mod h1:YCycw9ZeKhcJFrb34iVSkyT0iczq/zYDtZYFufObyB0= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= +go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE= +go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg= +go.opentelemetry.io/otel v1.33.0/go.mod h1:SUUkR6csvUQl+yjReHu5uM3EtVV7MBm5FHKRlNx4I8I= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= +go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= +go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE= +go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8= +go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= +go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= +go.opentelemetry.io/otel/metric v1.23.0/go.mod h1:MqUW2X2a6Q8RN96E2/nqNoT+z9BSms20Jb7Bbp+HiTo= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= +go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY= +go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8= +go.opentelemetry.io/otel/metric v1.33.0/go.mod h1:L9+Fyctbp6HFTddIxClbQkjtubW6O9QS3Ann/M82u6M= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= +go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= +go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= +go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= +go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc= +go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0= +go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8= +go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo= +go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= +go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= +go.opentelemetry.io/otel/trace v1.23.0/go.mod h1:GSGTbIClEsuZrGIzoEHqsVfxgn5UkggkflQwDScNUsk= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= +go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A= +go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8= +go.opentelemetry.io/otel/trace v1.33.0/go.mod h1:uIcdVUZMpTAmz0tI1z04GoVSezK37CbGV4fr1f2nBck= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= +go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= +go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= +go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= +go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/goleak v1.1.10 h1:z+mqJhf6ss6BSfSM671tgKyZBFPTTJM+HLxnhPC3wu0= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= -go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.8.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= -go.uber.org/zap v1.16.0 h1:uFRZXykJGK9lLY4HtgSw44DnIcAM+kRBP7x5m+NpAOM= -go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= -goji.io v2.0.0+incompatible/go.mod h1:sbqFwrtqZACxLBTQcdgVjFh54yGVCvwq8+w49MVMMIk= -goji.io v2.0.2+incompatible/go.mod h1:sbqFwrtqZACxLBTQcdgVjFh54yGVCvwq8+w49MVMMIk= -golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= +go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190123085648-057139ce5d2b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= -golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a h1:kr2P4QFmQr29mSLA43kwrOcgcReGTfbE9N577tCTuBc= -golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= +golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= +golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= +golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1114,17 +2502,36 @@ golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxT golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20200513190911-00229845015e/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/exp v0.0.0-20210126221216-84987778548c/go.mod h1:I6l2HNBLBZEcrOoCpyKLdY2lHoRZ8lI4x60KMCQDft4= +golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= +golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= +golang.org/x/exp v0.0.0-20230206171751-46f607a40771/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= +golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= +golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1135,8 +2542,8 @@ golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5 h1:2M3HP5CCK1Si9FQhwnzYhXdG6DXeebvUHFpre8QvbyI= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mobile v0.0.0-20201217150744-e6ae53a27f4f/go.mod h1:skQtrUTUwhdJvXM/2KKJzY8pDgNr9I/FOMqDVRPBUS4= @@ -1149,19 +2556,37 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1 h1:Kvvh58BN8Y9/lBi7hTekvtMpm07eUZ0ck5pRHpsMWrY= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= +golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -1171,13 +2596,9 @@ golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -1198,9 +2619,64 @@ golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= +golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= +golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= +golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1209,23 +2685,73 @@ golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210113205817-d3ed898aa8a3/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210201163806-010130855d6c h1:HiAZXo96zOhVhtFHchj/ojzoxCFiPrp9/j0GtS38V3g= -golang.org/x/oauth2 v0.0.0-20210201163806-010130855d6c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= +golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= +golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= +golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= +golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= +golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI= +golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= +golang.org/x/oauth2 v0.12.0/go.mod h1:A74bZ3aGXgCY0qaIC9Ahg6Lglin4AMAco8cIv9baba4= +golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= +golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= +golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= +golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= +golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= +golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= +golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M= +golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180606202747-9527bec2660b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= +golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1234,40 +2760,27 @@ golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190515120540-06a5c4944438/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190812172437-4e8604ab3aff/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1282,54 +2795,178 @@ golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c h1:VwygUrnw9jn88c4u8GD3rZQbqrP/tgas88tPUbBxQrk= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220406163625-3f8b81556e12/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +golang.org/x/telemetry v0.0.0-20240521205824-bda55230c457/go.mod h1:pRgIJT+bRLFKnoM1ldnzKoxTIn14Yxz928LQRYYgIN0= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= +golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= +golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= +golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= +golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= +golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= +golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= +golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= +golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y= +golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e h1:EHBhcS0mlXEAVwNyO2dLfjToGsyY4j24pTs2ScHnX7s= -golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= +golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -1338,20 +2975,13 @@ golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190624180213-70d37148ca0c/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190812233024-afc3694995b6/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190813034749-528a2984e271/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191004055002-72853e10c5a3/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1359,7 +2989,6 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200113154838-30cae5f2fb06/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -1376,39 +3005,80 @@ golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWc golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200522201501-cb1345f3a375/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200612220849-54c614fe050c/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= +golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= +golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= +golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= +golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= +golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= +golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= +golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= +golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= +golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= +golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= +golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= +golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= +golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ= +golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ= +golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gomodules.xyz/jsonpatch/v2 v2.0.1/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= -gomodules.xyz/jsonpatch/v2 v2.1.0 h1:Phva6wqu+xR//Njw6iorylFFgn/z547tw5Ne3HZPQ+k= -gomodules.xyz/jsonpatch/v2 v2.1.0/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= +gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw= +gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= +gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= +gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= +gonum.org/v1/gonum v0.12.0/go.mod h1:73TDxJfAAHeA8Mk9mf8NlIppyhQNo5GLTcYeqgo2lvY= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= gonum.org/v1/netlib v0.0.0-20191031114514-eccb95939662/go.mod h1:1LGLsuRLSwj1ge7tgC9ees7gfh1phRP5tuyDqlpChGE= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= -google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= +gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.6.0/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -1426,29 +3096,77 @@ google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSr google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.38.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= +google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08= +google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= +google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= +google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0= +google.golang.org/api v0.106.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.107.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= +google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= +google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= +google.golang.org/api v0.118.0/go.mod h1:76TtD3vkgmZ66zZzp72bUUklpmQmKlhh6sYtIjYK+5E= +google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= +google.golang.org/api v0.124.0/go.mod h1:xu2HQurE5gi/3t1aFCvhPD781p0a3p11sdunTJ2BlP4= +google.golang.org/api v0.125.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= +google.golang.org/api v0.126.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= +google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= +google.golang.org/api v0.139.0/go.mod h1:CVagp6Eekz9CjGZ718Z+sloknzkDJE7Vc1Ckj9+viBk= +google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI= +google.golang.org/api v0.150.0/go.mod h1:ccy+MJ6nrYFgE3WgRx/AMXOxOmU8Q4hSa+jjibzhxcg= +google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7Igduk= +google.golang.org/api v0.157.0/go.mod h1:+z4v4ufbZ1WEpld6yMGHyggs+PmAHiaLNj5ytP3N01g= +google.golang.org/api v0.160.0/go.mod h1:0mu0TpK33qnydLvWqbImq2b1eQ5FHRSDCBzAxX9ZHyw= +google.golang.org/api v0.162.0/go.mod h1:6SulDkfoBIg4NFmCuZ39XeeAgSHCPecfSUuDyYlAHs0= +google.golang.org/api v0.164.0/go.mod h1:2OatzO7ZDQsoS7IFf3rvsE17/TldiU3F/zxFHeqUB5o= +google.golang.org/api v0.166.0/go.mod h1:4FcBc686KFi7QI/U51/2GKKevfZMpM17sCdibqe/bSA= +google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20181107211654-5fc9ac540362/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191028173616-919d9bdd9fe6/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= @@ -1462,6 +3180,7 @@ google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= @@ -1476,21 +3195,245 @@ google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210202153253-cf70463f6119/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210218151259-fe80b386bf06 h1:Px6YyLaNKEo5eoniIBAv6Es0jbvyEmSYqOac64iS2Rs= -google.golang.org/genproto v0.0.0-20210218151259-fe80b386bf06/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= +google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= +google.golang.org/genproto v0.0.0-20221109142239-94d6d90a7d66/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221201204527-e3fa12d562f3/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE= +google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230112194545-e10362b5ecf9/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230113154510-dbe35b8444a5/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230123190316-2c411cf9d197/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230124163310-31e0e69b6fc2/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230127162408-596548ed4efa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44/go.mod h1:8B0gmkoRebU8ukX6HP+4wrVQUY1+6PkQ44BSyIlflHA= +google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= +google.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= +google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA= +google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto v0.0.0-20230320184635-7606e756e683/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230403163135-c38d8f061ccd/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= +google.golang.org/genproto v0.0.0-20230525234025-438c736192d0/go.mod h1:9ExIQyXL5hZrHzQceCwuSYwZZ5QZBazOcprJ5rgs3lY= +google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk= +google.golang.org/genproto v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk= +google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= +google.golang.org/genproto v0.0.0-20230629202037-9506855d4529/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= +google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:O9kGHb51iE/nOGvQaDUuadVYqovW56s5emA88lQnj6Y= +google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98/go.mod h1:S7mY02OqCJTD0E1OiQy1F72PWFB4bZJ87cAtLPYgDR0= +google.golang.org/genproto v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:0ggbjUrZYpy1q+ANUS30SEoGZ53cdfwtbuG7Ptgy108= +google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5/go.mod h1:oH/ZOT02u4kWEp7oYBGYFFkCdKS/uYR9Z7+0/xuuFp8= +google.golang.org/genproto v0.0.0-20230821184602-ccc8af3d0e93/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= +google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= +google.golang.org/genproto v0.0.0-20230913181813-007df8e322eb/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= +google.golang.org/genproto v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:CCviP9RmpZ1mxVr8MUjCnSiY09IbAXZxhLE6EhHIdPU= +google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97/go.mod h1:t1VqOqqvce95G3hIDCT5FeO3YUc6Q4Oe24L/+rNMxRk= +google.golang.org/genproto v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:EMfReVxb80Dq1hhioy0sOsY9jCE46YDgHlJ7fWVUWRE= +google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:CgAqfJo+Xmu0GwA0411Ht3OU3OntXwsGmrmjI8ioGXI= +google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405/go.mod h1:3WDQMjmJk36UQhjQ89emUzb1mdaHcPeeAh4SCBKznB4= +google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY= +google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f/go.mod h1:nWSwAFPb+qfNJXsoeO3Io7zf4tMSfN8EA8RlDA04GhY= +google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3/go.mod h1:5RBcpGRxr25RbDzY5w+dmaqpSEvl8Gwl1x2CICf60ic= +google.golang.org/genproto v0.0.0-20231212172506-995d672761c0/go.mod h1:l/k7rMz0vFTBPy+tFSGvXEd3z+BcoG1k7EHbqm+YBsY= +google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917/go.mod h1:pZqR+glSb11aJ+JQcczCvgf47+duRuzNSKqE8YAQnV0= +google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:+Rvu7ElI+aLzyDQhpHMFMMltsD6m7nqpuWDd2CwJw3k= +google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= +google.golang.org/genproto v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= +google.golang.org/genproto v0.0.0-20240205150955-31a09d347014/go.mod h1:xEgQu1e4stdSSsxPDK8Azkrk/ECl5HvdPf6nbZrTS5M= +google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= +google.golang.org/genproto/googleapis/api v0.0.0-20230525234020-1aefcd67740a/go.mod h1:ts19tUU+Z0ZShN1y3aPyq2+O3d5FUNNgT6FtOzmrNn8= +google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:mPBs5jNgx2GuQGvFwUvVKqtn6HsUw9nP64BedgvqEsQ= +google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= +google.golang.org/genproto/googleapis/api v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= +google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5/go.mod h1:5DZzOUPCLYL3mNkQ0ms0F3EuUNZ7py1Bqeq6sxzI7/Q= +google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= +google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= +google.golang.org/genproto/googleapis/api v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:RdyHbowztCGQySiCvQPgWQWgWhGnouTdCflKoDBt32U= +google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97/go.mod h1:iargEX0SFPm3xcfMI0d1domjg0ZF4Aa0p2awqyxhvF0= +google.golang.org/genproto/googleapis/api v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:SUBoKXbI1Efip18FClrQVGjWcyd0QZd8KkvdP34t7ww= +google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870= +google.golang.org/genproto/googleapis/api v0.0.0-20231030173426-d783a09b4405/go.mod h1:oT32Z4o8Zv2xPQTg0pbVaPr0MPOH6f14RgXt7zfIpwg= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= +google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI= +google.golang.org/genproto/googleapis/api v0.0.0-20231211222908-989df2bf70f3/go.mod h1:k2dtGpRrbsSyKcNPKKI5sstZkrNCZwpU/ns96JoHbGg= +google.golang.org/genproto/googleapis/api v0.0.0-20231212172506-995d672761c0/go.mod h1:CAny0tYF+0/9rmDB9fahA9YLzX3+AEVl1qXbv5hhj6c= +google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917/go.mod h1:CmlNWB9lSezaYELKS5Ym1r44VrrbPUa7JTvw+6MbpJ0= +google.golang.org/genproto/googleapis/api v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:B5xPO//w8qmBDjGReYLpR6UJPnkldGkCSMoH/2vxJeg= +google.golang.org/genproto/googleapis/api v0.0.0-20240122161410-6c6643bf1457/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= +google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= +google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= +google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014/go.mod h1:rbHMSEDyoYX62nRVLOCc4Qt1HbsdytAYoVwgjiOhF3I= +google.golang.org/genproto/googleapis/api v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:PVreiBMirk8ypES6aw9d4p6iiBNSIfZEBqr3UGoAi2E= +google.golang.org/genproto/googleapis/api v0.0.0-20240221002015-b0ce06bbee7c/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= +google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= +google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= +google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= +google.golang.org/genproto/googleapis/api v0.0.0-20240826202546-f6391c0de4c7/go.mod h1:OCdP9MfskevB/rbYvHTsXTtKC+3bHWajPdoKgjcYkfo= +google.golang.org/genproto/googleapis/api v0.0.0-20241015192408-796eee8c2d53/go.mod h1:riSXTwQ4+nqmPGtobMFyW5FqVAmIs0St6VPp4Ug7CE4= +google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a/go.mod h1:jehYqy3+AhJU9ve55aNOaSml7wUXjF9x6z2LcCfpAhY= +google.golang.org/genproto/googleapis/api v0.0.0-20241219192143-6b3ec007d9bb/go.mod h1:E5//3O5ZIG2l71Xnt+P/CYUY8Bxs8E7WMoZ9tlcMbAY= +google.golang.org/genproto/googleapis/api v0.0.0-20250102185135-69823020774d/go.mod h1:2v7Z7gP2ZUOGsaFyxATQSRoBnKygqVq2Cwnvom7QiqY= +google.golang.org/genproto/googleapis/api v0.0.0-20250106144421-5f5ef82da422/go.mod h1:b6h1vNKhxaSoEI+5jc3PJUCustfli/mRab7295pY7rw= +google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:Ic02D47M+zbarjYYUlK57y316f2MoN0gjAwI3f2S95o= +google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a/go.mod h1:3kWAYMk1I75K4vykHtKt2ycnOgpA6974V7bREqbsenU= +google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1:p31xT4yrYrSM/G4Sn2+TNUkVhFCbG9y8itM2S6Th950= +google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:ylj+BE99M198VPbBh6A8d9n3w8fChvyLK3wwBOjXBFA= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20230807174057-1744710a1577/go.mod h1:NjCQG/D8JandXxM57PZbAJL1DCNL6EypA0vPPwfsc7c= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20231030173426-d783a09b4405/go.mod h1:GRUCuLdzVqZte8+Dl/D4N25yLzcGqqWaYkeVOwulFqw= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20231212172506-995d672761c0/go.mod h1:guYXGPwC6jwxgWKW5Y405fKWOFNwlvUlUnzyp9i0uqo= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:ZSvZ8l+AWJwXw91DoTjWjaVLpWU6o0eZ4YLYpH8aLeQ= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:SCz6T5xjNXM4QFPRwxHcfChp7V+9DcXR3ay2TkHR8Tg= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20240205150955-31a09d347014/go.mod h1:EhZbXt+eY4Yr3YVaEGLdNZF5viWowOJZ8KTPqjYMKzg= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:om8Bj876Z0v9ei+RD1LnEWig7vpHQ371PUqsgjmLQEA= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20240304161311-37d4d3c04a78/go.mod h1:vh/N7795ftP0AkN1w8XKqN4w1OdUKXW5Eummda+ofv8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234015-3fc162c6f38a/go.mod h1:xURIpW9ES5+/GZhnV6beoEtxQrnkRGIfP5VQG2tCBLc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230629202037-9506855d4529/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:8mL13HKkDa+IuJ8yruA3ci0q+0vsUz4m//+ottjwS5o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230920183334-c177e329c48b/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:KSqppvjFjtoCI+KGd4PELB0qLNxdJHRGqRI09mB6pQA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97/go.mod h1:v7nGkzlmW8P3n/bKmWBn2WpBjpOEx8Q6gMueudAmKfY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:4cYg8o5yUbm77w8ZX00LhMVNl/YVBFJRYWDc0uYWMs0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405/go.mod h1:67X1fPuzjcrkymZzZV1vvkFeTn2Rvc6lYF9MYFGCcwE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231211222908-989df2bf70f3/go.mod h1:eJVxU6o+4G1PSczBr85xmyvSNYAKvAYgkub40YGomFM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0/go.mod h1:FUoWkonphQm3RhTS+kOEhF8h0iDpm4tdXolVCeZ9KKA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917/go.mod h1:xtjpI3tXFPP051KaWnhvxkiubL/6dJ18vLVf7q2pTOU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240122161410-6c6643bf1457/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240205150955-31a09d347014/go.mod h1:SaPjaZGWb0lPqs6Ittu0spdfrOArqji4ZdeP5IC/9N4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:YUWgXUFRPfoYK1IHMuxH5K6nPEXSCzIMljnQ59lLRCk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240221002015-b0ce06bbee7c/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240228201840-1f18d85a4ec2/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240228224816-df926f6c8641/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240304161311-37d4d3c04a78/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240521202816-d264139d666e/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240823204242-4ba0660f739c/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241219192143-6b3ec007d9bb/go.mod h1:lcTa1sDdWEIHMWlITnIczmw5w60CF9ffkb8Z+DVmmjA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8/go.mod h1:lcTa1sDdWEIHMWlITnIczmw5w60CF9ffkb8Z+DVmmjA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250102185135-69823020774d/go.mod h1:3ENsm/5D1mzDyhpzeRi1NR784I0BcofWBoSc5QqqMK4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250106144421-5f5ef82da422/go.mod h1:3ENsm/5D1mzDyhpzeRi1NR784I0BcofWBoSc5QqqMK4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250212204824-5a70512c5d8b/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a/go.mod h1:uRxBH1mhmO8PGhU89cMcHaXKZqO+OfakD8QQO0oYwlQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250227231956-55c901821b1e/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= @@ -1505,8 +3448,59 @@ google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTp google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0 h1:o1bcQ6imQMIOpdrO3SWf2z5RV72WbDwdXuK0MDlc8As= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= +google.golang.org/grpc v1.52.0/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= +google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= +google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= +google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= +google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= +google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= +google.golang.org/grpc v1.58.2/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= +google.golang.org/grpc v1.60.0/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= +google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= +google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= +google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= +google.golang.org/grpc v1.62.0/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= +google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= +google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= +google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= +google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= +google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= +google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= +google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= +google.golang.org/grpc v1.69.4/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= +google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= +google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0/go.mod h1:Dk1tviKTvMCz5tvh7t+fh94dhmQVHuCt2OzJB3CTW9Y= +google.golang.org/grpc/examples v0.0.0-20230224211313-3775f633ce20/go.mod h1:Nr5H8+MlGWr5+xX/STzdoEqJrO+YteqFbMyCsrb6mH0= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1516,39 +3510,50 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -gopkg.in/AlecAivazis/survey.v1 v1.8.2/go.mod h1:iBNOmqKz/NUbZx3bA+4hAGLRC7fSK7tgtVDT4tB22XA= -gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.0/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= +gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= -gopkg.in/gorp.v1 v1.7.2/go.mod h1:Wo3h+DBQZIxATwftsglhdD/62zRFPhGhTiu5jUJmCaw= +gopkg.in/go-jose/go-jose.v2 v2.6.3/go.mod h1:zzZDPkNNw/c9IE7Z9jr11mBZQhKQTMzoEEIoEdZlFBI= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= gopkg.in/neurosnap/sentences.v1 v1.0.6/go.mod h1:YlK+SN+fLQZj+kY3r8DkGDhDr91+S3JmTb5LSxFRQo0= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/russross/blackfriday.v2 v2.0.0/go.mod h1:6sSBNz/GtOm/pJTuh5UmBK2ZHfmnxGbl2NZg1UliSOI= -gopkg.in/square/go-jose.v1 v1.1.2/go.mod h1:QpYS+a4WhS+DTlyQIi6Ka7MS3SuR9a055rgXNEe6EiA= -gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.3.1 h1:SK5KegNXmKmqE342YYN2qPHEnUYeoMiXXl1poUlI+o4= gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/src-d/go-billy-siva.v4 v4.2.2/go.mod h1:4wKeCzOCSsdyFeM5+58M6ObU6FM+lZT12p7zm7A+9n0= -gopkg.in/src-d/go-billy.v4 v4.2.1/go.mod h1:tm33zBoOwxjYHZIE+OV8bxTWFMJLrconzFMd38aARFk= gopkg.in/src-d/go-billy.v4 v4.3.0/go.mod h1:tm33zBoOwxjYHZIE+OV8bxTWFMJLrconzFMd38aARFk= -gopkg.in/src-d/go-git-fixtures.v3 v3.1.1/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= gopkg.in/src-d/go-git.v4 v4.7.0/go.mod h1:CzbUWqMn4pvmvndg3gnh5iZFmSsbhyhUWdI0IQ60AQo= -gopkg.in/src-d/go-git.v4 v4.10.0/go.mod h1:Vtut8izDyrM8BUVQnzJ+YvmNcem2J89EmfZYCkLokZk= gopkg.in/src-d/go-license-detector.v2 v2.0.0-20180510072912-da552ecf050b/go.mod h1:zfdY69eZLzMJeDFDZAVS0ZEZ98XX+SwLifFOuuUZrC0= gopkg.in/src-d/go-siva.v1 v1.3.0/go.mod h1:tk1jnIXawd/PTlRNWdr5V5lC0PttNJmu1fv7wt7IZlw= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= @@ -1567,119 +3572,133 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20190905181640-827449938966/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200121175148-a6ecf24a6d71/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= -helm.sh/helm/v3 v3.2.4/go.mod h1:ZaXz/vzktgwjyGGFbUWtIQkscfE7WYoRGP2szqAFHR0= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= istio.io/api v0.0.0-20200723170824-3c2193e74947/go.mod h1:88HN3o1fSD1jo+Z1WTLlJfMm9biopur6Ct9BFKjiB64= istio.io/gogo-genproto v0.0.0-20190930162913-45029607206a/go.mod h1:OzpAts7jljZceG4Vqi5/zXy/pOg1b209T3jb7Nv5wIs= istio.io/gogo-genproto v0.0.0-20191009201739-17d570f95998/go.mod h1:OzpAts7jljZceG4Vqi5/zXy/pOg1b209T3jb7Nv5wIs= istio.io/tools v0.0.0-20200918020118-6d0a0e49b5d3 h1:mkMzZILOGNEvFqWEgVISubKWWTqGUTaK+72jMojyXzA= istio.io/tools v0.0.0-20200918020118-6d0a0e49b5d3/go.mod h1:+76apR/jbfB29HigSekPznsVFWl8oa0vu21UdQ8USvw= -k8s.io/api v0.0.0-20190425012535-181e1f9c52c1/go.mod h1:AhUc3Ph6fhRc0SCpt0Hwv0E+Q8QiEAASkXKwfmT2JwU= -k8s.io/api v0.18.0/go.mod h1:q2HRQkfDzHMBZL9l/y9rH63PkQl4vae0xRT+8prbrK8= -k8s.io/api v0.18.2/go.mod h1:SJCWI7OLzhZSvbY7U8zwNl9UA4o1fizoug34OV/2r78= -k8s.io/api v0.18.6/go.mod h1:eeyxr+cwCjMdLAmr2W3RyDI0VvTawSg/3RFFBEnmZGI= -k8s.io/api v0.19.2/go.mod h1:IQpK0zFQ1xc5iNIQPqzgoOwuFugaYHK4iCknlAQP9nI= -k8s.io/api v0.19.6 h1:F3lfwgpKcKms6F1mMqkQXFzXmme8QqHTJBtBkev3TOg= -k8s.io/api v0.19.6/go.mod h1:Plxx44Nh4zVblkJrIgxVPgPre1mvng6tXf1Sj3bs0fU= -k8s.io/apiextensions-apiserver v0.18.0/go.mod h1:18Cwn1Xws4xnWQNC00FLq1E350b9lUF+aOdIWDOZxgo= -k8s.io/apiextensions-apiserver v0.18.2/go.mod h1:q3faSnRGmYimiocj6cHQ1I3WpLqmDgJFlKL37fC4ZvY= -k8s.io/apiextensions-apiserver v0.18.6/go.mod h1:lv89S7fUysXjLZO7ke783xOwVTm6lKizADfvUM/SS/M= -k8s.io/apiextensions-apiserver v0.19.2/go.mod h1:EYNjpqIAvNZe+svXVx9j4uBaVhTB4C94HkY3w058qcg= -k8s.io/apiextensions-apiserver v0.19.6 h1:LL7H65E2VTBfxmsWQZth60zzWVtbSN2gWMEWfsuDvIQ= -k8s.io/apiextensions-apiserver v0.19.6/go.mod h1:9s8ceL67UJAD1ewbsn07tkQ7/EGjiKOedKyiUCVXJgQ= -k8s.io/apimachinery v0.19.6 h1:kBLzSGuDdY1NdSV2uFzI+FwZ9wtkmG+X3ZVcWXSqNgA= -k8s.io/apimachinery v0.19.6/go.mod h1:6sRbGRAVY5DOCuZwB5XkqguBqpqLU6q/kOaOdk29z6Q= -k8s.io/apiserver v0.18.0/go.mod h1:3S2O6FeBBd6XTo0njUrLxiqk8GNy6wWOftjhJcXYnjw= -k8s.io/apiserver v0.18.2/go.mod h1:Xbh066NqrZO8cbsoenCwyDJ1OSi8Ag8I2lezeHxzwzw= -k8s.io/apiserver v0.18.6/go.mod h1:Zt2XvTHuaZjBz6EFYzpp+X4hTmgWGy8AthNVnTdm3Wg= -k8s.io/apiserver v0.19.2/go.mod h1:FreAq0bJ2vtZFj9Ago/X0oNGC51GfubKK/ViOKfVAOA= -k8s.io/apiserver v0.19.6/go.mod h1:05XquZxCDzQ27ebk7uV2LrFIK4lm5Yt47XkkUvLAoAM= -k8s.io/cli-runtime v0.18.0/go.mod h1:1eXfmBsIJosjn9LjEBUd2WVPoPAY9XGTqTFcPMIBsUQ= -k8s.io/client-go v0.19.6 h1:vtPb33nP8DBMW+/CyuJ8fiie36c3CM1Ts6L4Tsr+PtU= -k8s.io/client-go v0.19.6/go.mod h1:gEiS+efRlXYUEQ9Oz4lmNXlxAl5JZ8y2zbTDGhvXXnk= -k8s.io/code-generator v0.0.0-20190419212335-ff26e7842f9d/go.mod h1:rVrFWfTVftGH7bb972nWC6N4QkJ4LU7FOXu8GH2UkJo= -k8s.io/code-generator v0.18.0/go.mod h1:+UHX5rSbxmR8kzS+FAv7um6dtYrZokQvjHpDSYRVkTc= -k8s.io/code-generator v0.18.2/go.mod h1:+UHX5rSbxmR8kzS+FAv7um6dtYrZokQvjHpDSYRVkTc= -k8s.io/code-generator v0.18.6/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c= -k8s.io/code-generator v0.19.2/go.mod h1:moqLn7w0t9cMs4+5CQyxnfA/HV8MF6aAVENF+WZZhgk= -k8s.io/code-generator v0.19.6 h1:N7PlZyX25j5Jl9oIBphWN2qp1AKZOwXdDVfj2Z0V0p8= -k8s.io/code-generator v0.19.6/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= -k8s.io/component-base v0.0.0-20190612130303-4062e14deebe/go.mod h1:MmIDXnint3qMN0cqXHKrSiJ2XQKo3J1BPIz7in7NvO0= -k8s.io/component-base v0.18.0/go.mod h1:u3BCg0z1uskkzrnAKFzulmYaEpZF7XC9Pf/uFyb1v2c= -k8s.io/component-base v0.18.2/go.mod h1:kqLlMuhJNHQ9lz8Z7V5bxUUtjFZnrypArGl58gmDfUM= -k8s.io/component-base v0.18.6/go.mod h1:knSVsibPR5K6EW2XOjEHik6sdU5nCvKMrzMt2D4In14= -k8s.io/component-base v0.19.2/go.mod h1:g5LrsiTiabMLZ40AR6Hl45f088DevyGY+cCE2agEIVo= -k8s.io/component-base v0.19.6 h1:V76d3rIEWvP95peWgRycKslQnEwlaPy4UORvh3+YBbU= -k8s.io/component-base v0.19.6/go.mod h1:8Btsf8J00/fVDa/YFmXjei7gVkcFrlKZXjSeP4SZNJg= -k8s.io/gengo v0.0.0-20190116091435-f8a0810f38af/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= +k8s.io/apiextensions-apiserver v0.34.2 h1:WStKftnGeoKP4AZRz/BaAAEJvYp4mlZGN0UCv+uvsqo= +k8s.io/apiextensions-apiserver v0.34.2/go.mod h1:398CJrsgXF1wytdaanynDpJ67zG4Xq7yj91GrmYN2SE= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/apiserver v0.34.2/go.mod h1:gqJQy2yDOB50R3JUReHSFr+cwJnL8G1dzTA0YLEqAPI= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= +k8s.io/code-generator v0.34.2 h1:9bG6jTxmsU3HXE5BNYJTC8AZ1D6hVVfkm8yYSkdkGY0= +k8s.io/code-generator v0.34.2/go.mod h1:dnDDEd6S/z4uZ+PG1aE58ySCi/lR4+qT3a4DddE4/2I= +k8s.io/component-base v0.34.2/go.mod h1:9xw2FHJavUHBFpiGkZoKuYZ5pdtLKe97DEByaA+hHbM= k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200114144118-36b2048a9120/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14 h1:t4L10Qfx/p7ASH3gXCdIUtPbbIuegCoUJf3TMSFekjw= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.3.1/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= -k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +k8s.io/gengo/v2 v2.0.0-20250604051438-85fd79dbfd9f h1:SLb+kxmzfA87x4E4brQzB33VBbT2+x7Zq9ROIHmGn9Q= +k8s.io/gengo/v2 v2.0.0-20250604051438-85fd79dbfd9f/go.mod h1:EJykeLsmFC60UQbYJezXkEsG2FLrt0GPNkU5iK5GWxU= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.5.0 h1:8mOnjf1RmUPW6KRqQCfYSZq/K20Unmp3IhuZUhxl8KI= -k8s.io/klog/v2 v2.5.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= -k8s.io/kube-openapi v0.0.0-20200121204235-bf4fb3bd569c/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= -k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= -k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6 h1:+WnxoVtG8TMiudHBSEtrVL1egv36TkkJm+bA8AxicmQ= -k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= -k8s.io/kubectl v0.18.0/go.mod h1:LOkWx9Z5DXMEg5KtOjHhRiC1fqJPLyCr3KtQgEolCkU= -k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= -k8s.io/metrics v0.18.0/go.mod h1:8aYTW18koXqjLVKL7Ds05RPMX9ipJZI3mywYvBOxXd4= -k8s.io/sample-controller v0.0.0-20190425173525-f9c23632fb31/go.mod h1:GHuOX/EqRZMKxNeVbZW7O0e9A6QsqDjruyOD0k49uVc= -k8s.io/utils v0.0.0-20190221042446-c2654d5206da/go.mod h1:8k8uAuAQ0rXslZKaEWd0c3oVhZz7sSzSiPnVZayjIX0= -k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= +k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kms v0.34.2/go.mod h1:s1CFkLG7w9eaTYvctOxosx88fl4spqmixnNpys0JAtM= +k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b h1:MloQ9/bdJyIu9lb1PzujOPolHyvO06MXG5TUIj2mNAA= +k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts= k8s.io/utils v0.0.0-20200414100711-2df71ebbae66/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20200603063816-c1c6865ac451/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20200912215256-4140de9c8800/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20201110183641-67b214c5f920 h1:CbnUZsM497iRC5QMVkHwyl8s2tB3g7yaSHkYPkpgelw= -k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y= +k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +lukechampine.com/uint128 v1.3.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= +modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.36.2/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.36.3/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.37.0/go.mod h1:vtL+3mdHx/wcj3iEGz84rQa8vEqR6XM84v5Lcvfph20= +modernc.org/cc/v3 v3.38.1/go.mod h1:vtL+3mdHx/wcj3iEGz84rQa8vEqR6XM84v5Lcvfph20= +modernc.org/cc/v3 v3.40.0/go.mod h1:/bTg4dnWkSXowUO6ssQKnOV0yMVxDYNIsIrzqTFDGH0= +modernc.org/ccgo/v3 v3.0.0-20220428102840-41399a37e894/go.mod h1:eI31LL8EwEBKPpNpA4bU1/i+sKOwOrQy8D87zWUcRZc= +modernc.org/ccgo/v3 v3.0.0-20220430103911-bc99d88307be/go.mod h1:bwdAnOoaIt8Ax9YdWGjxWsdkPcZyRPHqrOvJxaKAKGw= +modernc.org/ccgo/v3 v3.0.0-20220904174949-82d86e1b6d56/go.mod h1:YSXjPL62P2AMSxBphRHPn7IkzhVHqkvOnRKAKh+W6ZI= +modernc.org/ccgo/v3 v3.0.0-20220910160915-348f15de615a/go.mod h1:8p47QxPkdugex9J4n9P2tLZ9bK01yngIVp00g4nomW0= +modernc.org/ccgo/v3 v3.16.4/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= +modernc.org/ccgo/v3 v3.16.6/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= +modernc.org/ccgo/v3 v3.16.8/go.mod h1:zNjwkizS+fIFDrDjIAgBSCLkWbJuHF+ar3QRn+Z9aws= +modernc.org/ccgo/v3 v3.16.9/go.mod h1:zNMzC9A9xeNUepy6KuZBbugn3c0Mc9TeiJO4lgvkJDo= +modernc.org/ccgo/v3 v3.16.13-0.20221017192402-261537637ce8/go.mod h1:fUB3Vn0nVPReA+7IG7yZDfjv1TMWjhQP8gCxrFAtL5g= +modernc.org/ccgo/v3 v3.16.13/go.mod h1:2Quk+5YgpImhPjv2Qsob1DnZ/4som1lJTodubIcoUkY= +modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= +modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= +modernc.org/libc v0.0.0-20220428101251-2d5f3daf273b/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= +modernc.org/libc v1.16.0/go.mod h1:N4LD6DBE9cf+Dzf9buBlzVJndKr/iJHG97vGLHYnb5A= +modernc.org/libc v1.16.1/go.mod h1:JjJE0eu4yeK7tab2n4S1w8tlWd9MxXLRzheaRnAKymU= +modernc.org/libc v1.16.17/go.mod h1:hYIV5VZczAmGZAnG15Vdngn5HSF5cSkbvfz2B7GRuVU= +modernc.org/libc v1.16.19/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= +modernc.org/libc v1.17.0/go.mod h1:XsgLldpP4aWlPlsjqKRdHPqCxCjISdHfM/yeWC5GyW0= +modernc.org/libc v1.17.1/go.mod h1:FZ23b+8LjxZs7XtFMbSzL/EhPxNbfZbErxEHc7cbD9s= +modernc.org/libc v1.17.4/go.mod h1:WNg2ZH56rDEwdropAJeZPQkXmDwh+JCA1s/htl6r2fA= +modernc.org/libc v1.18.0/go.mod h1:vj6zehR5bfc98ipowQOM2nIDUZnVew/wNC/2tOGS+q0= +modernc.org/libc v1.19.0/go.mod h1:ZRfIaEkgrYgZDl6pa4W39HgN5G/yDW+NRmNKZBDFrk0= +modernc.org/libc v1.20.3/go.mod h1:ZRfIaEkgrYgZDl6pa4W39HgN5G/yDW+NRmNKZBDFrk0= +modernc.org/libc v1.21.2/go.mod h1:przBsL5RDOZajTVslkugzLBj1evTue36jEomFQOoYuI= +modernc.org/libc v1.21.4/go.mod h1:przBsL5RDOZajTVslkugzLBj1evTue36jEomFQOoYuI= +modernc.org/libc v1.22.2/go.mod h1:uvQavJ1pZ0hIoC/jfqNoMLURIMhKzINIWypNM17puug= +modernc.org/libc v1.22.4/go.mod h1:jj+Z7dTNX8fBScMVNRAYZ/jF91K8fdT2hYMThc3YjBY= modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= -modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= +modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/memory v1.1.1/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= +modernc.org/memory v1.2.0/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= +modernc.org/memory v1.2.1/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/memory v1.3.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/memory v1.4.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/sqlite v1.18.1/go.mod h1:6ho+Gow7oX5V+OiOQ6Tr4xeqbx13UZ6t+Fw9IRUG4d4= +modernc.org/sqlite v1.18.2/go.mod h1:kvrTLEWgxUcHa2GfHBQtanR1H9ht3hTJNtKpzH9k1u0= +modernc.org/sqlite v1.21.2/go.mod h1:cxbLkB5WS32DnQqeH4h4o1B0eMr8W/y8/RGuxQ3JsC0= modernc.org/strutil v1.1.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= +modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw= +modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= +modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw= +modernc.org/tcl v1.13.2/go.mod h1:7CLiGIPo1M8Rv1Mitpv5akc2+8fxUd2y2UzC/MfMzy0= +modernc.org/tcl v1.15.1/go.mod h1:aEjeGJX2gz1oWKOLDVZ2tnEWLUrIn8H+GFu+akoDhqs= +modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= +modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= +modernc.org/z v1.7.0/go.mod h1:hVdgNMh8ggTuRG1rGU8x+xGRFfiQUIAw0ZqlPy8+HyQ= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/letsencrypt v0.0.1/go.mod h1:buyQKZ6IXrRnB7TdkHP0RyEybLx18HHyOSoTyoOLqNY= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT7lCHcxMU+mDHEm+nx46H4zuuHZkDP6icnhu0= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.9/go.mod h1:dzAXnQbTRyDlZPJX2SUPEqvnB+j7AJjtlox7PEwigU0= -sigs.k8s.io/aws-iam-authenticator v0.5.0/go.mod h1:hGGN2wp01A1NU/88s8Wjfa3nY5bZYdeZn1aAAb8j1SI= -sigs.k8s.io/controller-runtime v0.6.2/go.mod h1:vhcq/rlnENJ09SIRp3EveTaZ0yqH526hjf9iJdbUJ/E= -sigs.k8s.io/controller-runtime v0.7.0 h1:bU20IBBEPccWz5+zXpLnpVsgBYxqclaHu1pVDl/gEt8= -sigs.k8s.io/controller-runtime v0.7.0/go.mod h1:pJ3YBrJiAqMAZKi6UVGuE98ZrroV1p+pIhoHsMm9wdU= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw= +sigs.k8s.io/controller-runtime v0.22.4 h1:GEjV7KV3TY8e+tJ2LCTxUTanW4z/FmNB7l327UfMq9A= +sigs.k8s.io/controller-runtime v0.22.4/go.mod h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8= sigs.k8s.io/controller-tools v0.3.0/go.mod h1:enhtKGfxZD1GFEoMgP8Fdbu+uKQ/cq1/WGJhdVChfvI= -sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU= -sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= -sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= -sigs.k8s.io/structured-merge-diff/v4 v4.0.1 h1:YXTMot5Qz/X1iBRJhAt+vI+HVttY0WkSqqhKxQ0xVbA= -sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= +sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= +sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE= +sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg= +sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= +sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= +sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= +sigs.k8s.io/structured-merge-diff/v6 v6.2.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE= +sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco= +sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= -vbom.ml/util v0.0.0-20160121211510-db5cfe13f5cc/go.mod h1:so/NYdZXCz+E3ZpW0uAoCj6uzU2+8OWDFv/HxUSs7kI= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= +sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/hack/convert/skv2_convert.go b/hack/convert/skv2_convert.go index 7108396fe..da64e9e9b 100644 --- a/hack/convert/skv2_convert.go +++ b/hack/convert/skv2_convert.go @@ -59,16 +59,25 @@ func ConvertToSkv2ProtoFile(path string, info os.FileInfo, err error) error { func filterRelevantLines(fileBytes []byte) []string { var fileByLine []string scan := bufio.NewScanner(bytes.NewBuffer(fileBytes)) + for scan.Scan() { line := scan.Text() - if strings.Contains(line, "// Metadata contains the object metadata for this resource") || + if strings.Contains(line, "option (core.solo.io.resource)") || + + strings.Contains(line, "core.solo.io.Metadata") || + strings.Contains(line, "// Metadata contains the object metadata for this resource") || + strings.Contains(line, "solo-kit/api/v1/metadata.proto") || + + strings.Contains(line, "solo-kit/api/v1/status.proto") || strings.Contains(line, "// Status is read-only by clients, and set by gloo during validation") || + strings.Contains(line, "// Status is read-only by clients, and set by gateway during validation") || strings.Contains(line, "// Status indicates the validation status of this resource.") || - strings.Contains(line, "option (core.solo.io.resource)") || - strings.Contains(line, "solo-kit/api/v1/status.proto") || - strings.Contains(line, "solo-kit/api/v1/metadata.proto") || - strings.Contains(line, "core.solo.io.Metadata") || - strings.Contains(line, "core.solo.io.Status") { + strings.Contains(line, "core.solo.io.Status") || + + strings.Contains(line, "// NamespacedStatuses is read-only by clients, and set by gloo during validation") || + strings.Contains(line, "// NamespacedStatuses is read-only by clients, and set by gateway during validation") || + strings.Contains(line, "// NamespacedStatuses indicates the validation status of this resource.") || + strings.Contains(line, "core.solo.io.NamespacedStatuses") { continue } @@ -121,17 +130,32 @@ func getRelevantTypes(file []byte, glooGroups []model.Group) []string { return resources } -func patchSpecMessage(file []byte, oldMessageBytes []byte) []byte { - oldMessageBytes = oldMessageBytes[:len(oldMessageBytes)-1] - return bytes.ReplaceAll(file, oldMessageBytes, append(oldMessageBytes, []byte("Spec")...)) +func patchSpecMessage(file []byte, oldMessage []byte) []byte { + // get the message without trailing space, e.g. "message MyMessage" + // make a copy so we don't modify oldMessage + oldMessageNoSpace := make([]byte, len(oldMessage)-1) + copy(oldMessageNoSpace, oldMessage) + + // replaces "message MyMessage " with "message MyMessageSpec " + newMessage := append(oldMessageNoSpace, []byte("Spec ")...) + return bytes.ReplaceAll(file, oldMessage, newMessage) } func appendStatusMessage(fileContents []byte, relevantType string) []byte { + // Append Status message statusBytes := &bytes.Buffer{} if err := statusTemplate.Execute(statusBytes, relevantType); err != nil { panic(err) } fileContents = append(fileContents, statusBytes.Bytes()...) + + // Append NamespacedStatuses message + namespacedStatusesBytes := &bytes.Buffer{} + if err := namespacedStatusesTemplate.Execute(namespacedStatusesBytes, relevantType); err != nil { + panic(err) + } + fileContents = append(fileContents, namespacedStatusesBytes.Bytes()...) + return fileContents } @@ -177,3 +201,11 @@ message {{ . }}Status { } `)) + +var namespacedStatusesTemplate = template.Must(template.New("namespaced_statuses").Parse(` + +message {{ . }}NamespacedStatuses { + map statuses = 1; +} + +`)) diff --git a/hack/post-generate.sh b/hack/post-generate.sh index 789d0ede6..2d0cfa6f7 100755 --- a/hack/post-generate.sh +++ b/hack/post-generate.sh @@ -2,12 +2,24 @@ set -e -for file in $(find pkg/api/gloo.solo.io/v1 -type f | grep "json.gen.go") -do - sed "s|skv2jsonpb.Marshaler{}|skv2jsonpb.Marshaler{EnumsAsInts: true}|g" "$file" > "$file".tmp && mv "$file".tmp "$file" -done - -for file in $(find pkg/api/gateway.solo.io/v1 -type f | grep "json.gen.go") -do - sed "s|skv2jsonpb.Marshaler{}|skv2jsonpb.Marshaler{EnumsAsInts: true}|g" "$file" > "$file".tmp && mv "$file".tmp "$file" -done +jsonGenFile="json.gen.go" + +glooJsonGenFile="pkg/api/gloo.solo.io/v1/$jsonGenFile" +if [ -f "$glooJsonGenFile" ] ; then + rm "$glooJsonGenFile" +fi + +gatewayJsonGenFile="pkg/api/gateway.solo.io/v1/$jsonGenFile" +if [ -f "$gatewayJsonGenFile" ] ; then + rm "$gatewayJsonGenFile" +fi + +glooEnterpriseJsonGenFile="pkg/api/enterprise.gloo.solo.io/v1/$jsonGenFile" +if [ -f "$glooEnterpriseJsonGenFile" ] ; then + rm "$glooEnterpriseJsonGenFile" +fi + +glooGraphqlJsonGenFile="pkg/api/graphql.gloo.solo.io/v1beta1/$jsonGenFile" +if [ -f "$glooGraphqlJsonGenFile" ] ; then + rm "$glooGraphqlJsonGenFile" +fi \ No newline at end of file diff --git a/hack/sync-gloo-apis.sh b/hack/sync-gloo-apis.sh index 728fea917..2beccd700 100755 --- a/hack/sync-gloo-apis.sh +++ b/hack/sync-gloo-apis.sh @@ -3,14 +3,21 @@ set -e # Sync the proto files from the Gloo Repository checked out at ../gloo -rsync -ax --exclude 'solo-kit.json' --exclude 'grpc/v*' ../gloo/projects/gloo/api/ ./api/gloo/gloo -rmdir api/gloo/gloo/grpc -rsync -ax --exclude 'solo-kit.json' ../gloo/projects/gateway/api/ ./api/gloo/gateway +# Exclude gloo/api/grpc because we do not currently want to expose any of our grpc apis +rsync -ax --delete --exclude 'solo-kit.json' --exclude 'grpc' ../gloo/projects/gloo/api/ ./api/gloo/gloo +rsync -ax --delete --exclude 'solo-kit.json' ../gloo/projects/gateway/api/ ./api/gloo/gateway + +# Clean up the grpc directory (remove this line if we decide to expose a grpc api +if [ -d 'api/gloo/gloo/grpc' ]; then rmdir 'api/gloo/gloo/grpc'; fi # Create Enterprise Gloo directory mkdir -p ./api/gloo/enterprise.gloo/v1 mv ./api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth.proto ./api/gloo/enterprise.gloo/v1/auth_config.proto +# Create GraphQL directory +mkdir -p ./api/gloo/graphql.gloo/v1beta1 +mv ./api/gloo/gloo/v1/enterprise/options/graphql/v1beta1/graphql.proto ./api/gloo/graphql.gloo/v1beta1/graphql.proto + # Fix paths for file in $(find api/gloo -type f | grep ".proto") do @@ -26,7 +33,16 @@ do # Gloo Enterprise API changes sed "s|gloo/v1/enterprise/options/extauth/v1/extauth.proto|enterprise.gloo/v1/auth_config.proto|g" "$file" > "$file".tmp && mv "$file".tmp "$file" sed "s|gloo.solo.io/v1/enterprise/options/extauth|enterprise.gloo.solo.io|g" "$file" > "$file".tmp && mv "$file".tmp "$file" + +# GraphQL API changes + sed "s|gloo/v1/enterprise/options/graphql/v1beta1/graphql.proto|graphql.gloo/v1beta1/graphql.proto|g" "$file" > "$file".tmp && mv "$file".tmp "$file" + sed "s|gloo.solo.io/v1/enterprise/options/graphql|graphql.gloo.solo.io|g" "$file" > "$file".tmp && mv "$file".tmp "$file" + done # convert protos used by skv1 into protos that can be used by skv2. -go run hack/convert.go \ No newline at end of file +go run hack/convert.go + +# Gateway2 changes (Go only, no protos) +mkdir -p ./pkg/api/gateway.gloo.solo.io/ +rsync -ax --delete ../gloo/projects/gateway2/api/ ./pkg/api/gateway.gloo.solo.io/ diff --git a/hack/sync-gloo-fed-apis.sh b/hack/sync-gloo-fed-apis.sh index 3de5d9adc..5a4b93c35 100755 --- a/hack/sync-gloo-fed-apis.sh +++ b/hack/sync-gloo-fed-apis.sh @@ -2,35 +2,13 @@ set -e -rsync -ax ../gloo-fed/api/ ./api/gloo-fed +rsync --delete -ax ../solo-projects/projects/gloo-fed/api/ ./api/gloo-fed +# Change the paths in the Gloo Fed protos from solo-projects to solo-apis for file in $(find api/gloo-fed -type f | grep ".proto") do - -# Gloo Fed API changes - sed "s|github.com/solo-io/gloo-fed|github.com/solo-io/solo-apis|g" "$file" > "$file".tmp && mv "$file".tmp "$file" - sed "s|gloo-fed/api|solo-apis/api/gloo-fed|g" "$file" > "$file".tmp && mv "$file".tmp "$file" - -# Gloo Fed API server changes - sed "s|github.com/solo-io/solo-apis/services|github.com/solo-io/solo-apis/pkg/api/gloo-fed|g" "$file" > "$file".tmp && mv "$file".tmp "$file" - -# Gloo API changes - sed "s|gloo/projects/gloo/api|solo-apis/api/gloo/gloo|g" "$file" > "$file".tmp && mv "$file".tmp "$file" - sed "s|github.com/solo-io/gloo/projects/gloo/pkg/api|github.com/solo-io/solo-apis/pkg/api/gloo.solo.io|g" "$file" > "$file".tmp && mv "$file".tmp "$file" - sed "s|solo-apis/api/gloo-fed/gloo|solo-apis/api/gloo/gloo|g" "$file" > "$file".tmp && mv "$file".tmp "$file" - sed "s|solo-apis/api/gloo/gloo/v1/upstream_group.proto|solo-apis/api/gloo/gloo/v1/proxy.proto|g" "$file" > "$file".tmp && mv "$file".tmp "$file" - -# Gateway API changes - sed "s|gloo/projects/gateway/api|solo-apis/api/gloo/gateway|g" "$file" > "$file".tmp && mv "$file".tmp "$file" - sed "s|github.com/solo-io/gloo/projects/gateway/pkg/api|github.com/solo-io/solo-apis/pkg/api/gateway.solo.io|g" "$file" > "$file".tmp && mv "$file".tmp "$file" - sed "s|solo-apis/api/gloo-fed/gateway|solo-apis/api/gloo/gateway|g" "$file" > "$file".tmp && mv "$file".tmp "$file" - -# Gloo Enterprise API changes - sed "s|gloo/v1/enterprise/options/extauth/v1/extauth.proto|enterprise.gloo/v1/auth_config.proto|g" "$file" > "$file".tmp && mv "$file".tmp "$file" - sed "s|gloo.solo.io/v1/enterprise/options/extauth|enterprise.gloo.solo.io|g" "$file" > "$file".tmp && mv "$file".tmp "$file" - -# Skv2 Enterprise Api changes - sed "s|gloo-fed/services/multicluster-admission-webhook/api/multicluster|api/skv2-enterprise|g" "$file" > "$file".tmp && mv "$file".tmp "$file" - sed "s|skv2-enterprise/pkg/multicluster-admission-webhook/api/multicluster|solo-apis/api/skv2-enterprise|g" "$file" > "$file".tmp && mv "$file".tmp "$file" - + # rename the go_package from fed protos to have a solo-apis path + sed "s|github.com/solo-io/solo-projects/projects/gloo-fed/pkg/api/|github.com/solo-io/solo-apis/pkg/api/|g" "$file" > "$file".tmp && mv "$file".tmp "$file" + # rename the proto imports to refer to the solo-apis path + sed "s|github.com/solo-io/solo-projects/projects/gloo-fed/api/|github.com/solo-io/solo-apis/api/gloo-fed/|g" "$file" > "$file".tmp && mv "$file".tmp "$file" done diff --git a/hack/sync-skv2-enterprise.sh b/hack/sync-skv2-enterprise.sh deleted file mode 100755 index bc2d27464..000000000 --- a/hack/sync-skv2-enterprise.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -set -e - -rsync -ax ../skv2-enterprise/multicluster-admission-webhook/api/multicluster/v1alpha1 ./api/skv2-enterprise - -for file in $(find api/skv2-enterprise -type f | grep ".proto") -do - -# Skv2-Enterprise Api Changes - sed "s|skv2-enterprise/multicluster-admission-webhook/pkg/api|solo-apis/pkg/api|g" "$file" > "$file".tmp && mv "$file".tmp "$file" - -done diff --git a/pkg/api/enterprise.gloo.solo.io/v1/auth_config.pb.clone.go b/pkg/api/enterprise.gloo.solo.io/v1/auth_config.pb.clone.go new file mode 100644 index 000000000..c4e8d6fd2 --- /dev/null +++ b/pkg/api/enterprise.gloo.solo.io/v1/auth_config.pb.clone.go @@ -0,0 +1,2914 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_emptypb "google.golang.org/protobuf/types/known/emptypb" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *AuthConfigSpec) Clone() proto.Message { + var target *AuthConfigSpec + if m == nil { + return target + } + target = &AuthConfigSpec{} + + if m.GetConfigs() != nil { + target.Configs = make([]*AuthConfigSpec_Config, len(m.GetConfigs())) + for idx, v := range m.GetConfigs() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Configs[idx] = h.Clone().(*AuthConfigSpec_Config) + } else { + target.Configs[idx] = proto.Clone(v).(*AuthConfigSpec_Config) + } + + } + } + + if h, ok := interface{}(m.GetBooleanExpr()).(clone.Cloner); ok { + target.BooleanExpr = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.BooleanExpr = proto.Clone(m.GetBooleanExpr()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + target.FailOnRedirect = m.GetFailOnRedirect() + + return target +} + +// Clone function +func (m *ExtAuthExtension) Clone() proto.Message { + var target *ExtAuthExtension + if m == nil { + return target + } + target = &ExtAuthExtension{} + + switch m.Spec.(type) { + + case *ExtAuthExtension_Disable: + + target.Spec = &ExtAuthExtension_Disable{ + Disable: m.GetDisable(), + } + + case *ExtAuthExtension_ConfigRef: + + if h, ok := interface{}(m.GetConfigRef()).(clone.Cloner); ok { + target.Spec = &ExtAuthExtension_ConfigRef{ + ConfigRef: h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } else { + target.Spec = &ExtAuthExtension_ConfigRef{ + ConfigRef: proto.Clone(m.GetConfigRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } + + case *ExtAuthExtension_CustomAuth: + + if h, ok := interface{}(m.GetCustomAuth()).(clone.Cloner); ok { + target.Spec = &ExtAuthExtension_CustomAuth{ + CustomAuth: h.Clone().(*CustomAuth), + } + } else { + target.Spec = &ExtAuthExtension_CustomAuth{ + CustomAuth: proto.Clone(m.GetCustomAuth()).(*CustomAuth), + } + } + + } + + return target +} + +// Clone function +func (m *Settings) Clone() proto.Message { + var target *Settings + if m == nil { + return target + } + target = &Settings{} + + if h, ok := interface{}(m.GetExtauthzServerRef()).(clone.Cloner); ok { + target.ExtauthzServerRef = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.ExtauthzServerRef = proto.Clone(m.GetExtauthzServerRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + target.UserIdHeader = m.GetUserIdHeader() + + if h, ok := interface{}(m.GetRequestTimeout()).(clone.Cloner); ok { + target.RequestTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.RequestTimeout = proto.Clone(m.GetRequestTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + target.FailureModeAllow = m.GetFailureModeAllow() + + if h, ok := interface{}(m.GetRequestBody()).(clone.Cloner); ok { + target.RequestBody = h.Clone().(*BufferSettings) + } else { + target.RequestBody = proto.Clone(m.GetRequestBody()).(*BufferSettings) + } + + target.ClearRouteCache = m.GetClearRouteCache() + + target.StatusOnError = m.GetStatusOnError() + + target.TransportApiVersion = m.GetTransportApiVersion() + + target.StatPrefix = m.GetStatPrefix() + + switch m.ServiceType.(type) { + + case *Settings_HttpService: + + if h, ok := interface{}(m.GetHttpService()).(clone.Cloner); ok { + target.ServiceType = &Settings_HttpService{ + HttpService: h.Clone().(*HttpService), + } + } else { + target.ServiceType = &Settings_HttpService{ + HttpService: proto.Clone(m.GetHttpService()).(*HttpService), + } + } + + case *Settings_GrpcService: + + if h, ok := interface{}(m.GetGrpcService()).(clone.Cloner); ok { + target.ServiceType = &Settings_GrpcService{ + GrpcService: h.Clone().(*GrpcService), + } + } else { + target.ServiceType = &Settings_GrpcService{ + GrpcService: proto.Clone(m.GetGrpcService()).(*GrpcService), + } + } + + } + + return target +} + +// Clone function +func (m *GrpcService) Clone() proto.Message { + var target *GrpcService + if m == nil { + return target + } + target = &GrpcService{} + + target.Authority = m.GetAuthority() + + return target +} + +// Clone function +func (m *HttpService) Clone() proto.Message { + var target *HttpService + if m == nil { + return target + } + target = &HttpService{} + + target.PathPrefix = m.GetPathPrefix() + + if h, ok := interface{}(m.GetRequest()).(clone.Cloner); ok { + target.Request = h.Clone().(*HttpService_Request) + } else { + target.Request = proto.Clone(m.GetRequest()).(*HttpService_Request) + } + + if h, ok := interface{}(m.GetResponse()).(clone.Cloner); ok { + target.Response = h.Clone().(*HttpService_Response) + } else { + target.Response = proto.Clone(m.GetResponse()).(*HttpService_Response) + } + + return target +} + +// Clone function +func (m *BufferSettings) Clone() proto.Message { + var target *BufferSettings + if m == nil { + return target + } + target = &BufferSettings{} + + target.MaxRequestBytes = m.GetMaxRequestBytes() + + target.AllowPartialMessage = m.GetAllowPartialMessage() + + target.PackAsBytes = m.GetPackAsBytes() + + return target +} + +// Clone function +func (m *CustomAuth) Clone() proto.Message { + var target *CustomAuth + if m == nil { + return target + } + target = &CustomAuth{} + + if m.GetContextExtensions() != nil { + target.ContextExtensions = make(map[string]string, len(m.GetContextExtensions())) + for k, v := range m.GetContextExtensions() { + + target.ContextExtensions[k] = v + + } + } + + target.Name = m.GetName() + + return target +} + +// Clone function +func (m *AuthPlugin) Clone() proto.Message { + var target *AuthPlugin + if m == nil { + return target + } + target = &AuthPlugin{} + + target.Name = m.GetName() + + target.PluginFileName = m.GetPluginFileName() + + target.ExportedSymbolName = m.GetExportedSymbolName() + + if h, ok := interface{}(m.GetConfig()).(clone.Cloner); ok { + target.Config = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Config = proto.Clone(m.GetConfig()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + return target +} + +// Clone function +func (m *BasicAuth) Clone() proto.Message { + var target *BasicAuth + if m == nil { + return target + } + target = &BasicAuth{} + + target.Realm = m.GetRealm() + + if h, ok := interface{}(m.GetApr()).(clone.Cloner); ok { + target.Apr = h.Clone().(*BasicAuth_Apr) + } else { + target.Apr = proto.Clone(m.GetApr()).(*BasicAuth_Apr) + } + + if h, ok := interface{}(m.GetEncryption()).(clone.Cloner); ok { + target.Encryption = h.Clone().(*BasicAuth_EncryptionType) + } else { + target.Encryption = proto.Clone(m.GetEncryption()).(*BasicAuth_EncryptionType) + } + + switch m.UserSource.(type) { + + case *BasicAuth_UserList_: + + if h, ok := interface{}(m.GetUserList()).(clone.Cloner); ok { + target.UserSource = &BasicAuth_UserList_{ + UserList: h.Clone().(*BasicAuth_UserList), + } + } else { + target.UserSource = &BasicAuth_UserList_{ + UserList: proto.Clone(m.GetUserList()).(*BasicAuth_UserList), + } + } + + } + + return target +} + +// Clone function +func (m *HmacAuth) Clone() proto.Message { + var target *HmacAuth + if m == nil { + return target + } + target = &HmacAuth{} + + switch m.SecretStorage.(type) { + + case *HmacAuth_SecretRefs: + + if h, ok := interface{}(m.GetSecretRefs()).(clone.Cloner); ok { + target.SecretStorage = &HmacAuth_SecretRefs{ + SecretRefs: h.Clone().(*SecretRefList), + } + } else { + target.SecretStorage = &HmacAuth_SecretRefs{ + SecretRefs: proto.Clone(m.GetSecretRefs()).(*SecretRefList), + } + } + + } + + switch m.ImplementationType.(type) { + + case *HmacAuth_ParametersInHeaders: + + if h, ok := interface{}(m.GetParametersInHeaders()).(clone.Cloner); ok { + target.ImplementationType = &HmacAuth_ParametersInHeaders{ + ParametersInHeaders: h.Clone().(*HmacParametersInHeaders), + } + } else { + target.ImplementationType = &HmacAuth_ParametersInHeaders{ + ParametersInHeaders: proto.Clone(m.GetParametersInHeaders()).(*HmacParametersInHeaders), + } + } + + } + + return target +} + +// Clone function +func (m *SecretRefList) Clone() proto.Message { + var target *SecretRefList + if m == nil { + return target + } + target = &SecretRefList{} + + if m.GetSecretRefs() != nil { + target.SecretRefs = make([]*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef, len(m.GetSecretRefs())) + for idx, v := range m.GetSecretRefs() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SecretRefs[idx] = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.SecretRefs[idx] = proto.Clone(v).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + } + } + + return target +} + +// Clone function +func (m *HmacParametersInHeaders) Clone() proto.Message { + var target *HmacParametersInHeaders + if m == nil { + return target + } + target = &HmacParametersInHeaders{} + + return target +} + +// Clone function +func (m *OAuth) Clone() proto.Message { + var target *OAuth + if m == nil { + return target + } + target = &OAuth{} + + target.ClientId = m.GetClientId() + + if h, ok := interface{}(m.GetClientSecretRef()).(clone.Cloner); ok { + target.ClientSecretRef = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.ClientSecretRef = proto.Clone(m.GetClientSecretRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + target.IssuerUrl = m.GetIssuerUrl() + + if m.GetAuthEndpointQueryParams() != nil { + target.AuthEndpointQueryParams = make(map[string]string, len(m.GetAuthEndpointQueryParams())) + for k, v := range m.GetAuthEndpointQueryParams() { + + target.AuthEndpointQueryParams[k] = v + + } + } + + target.AppUrl = m.GetAppUrl() + + target.CallbackPath = m.GetCallbackPath() + + if m.GetScopes() != nil { + target.Scopes = make([]string, len(m.GetScopes())) + for idx, v := range m.GetScopes() { + + target.Scopes[idx] = v + + } + } + + return target +} + +// Clone function +func (m *OAuth2) Clone() proto.Message { + var target *OAuth2 + if m == nil { + return target + } + target = &OAuth2{} + + switch m.OauthType.(type) { + + case *OAuth2_OidcAuthorizationCode: + + if h, ok := interface{}(m.GetOidcAuthorizationCode()).(clone.Cloner); ok { + target.OauthType = &OAuth2_OidcAuthorizationCode{ + OidcAuthorizationCode: h.Clone().(*OidcAuthorizationCode), + } + } else { + target.OauthType = &OAuth2_OidcAuthorizationCode{ + OidcAuthorizationCode: proto.Clone(m.GetOidcAuthorizationCode()).(*OidcAuthorizationCode), + } + } + + case *OAuth2_AccessTokenValidation: + + if h, ok := interface{}(m.GetAccessTokenValidation()).(clone.Cloner); ok { + target.OauthType = &OAuth2_AccessTokenValidation{ + AccessTokenValidation: h.Clone().(*AccessTokenValidation), + } + } else { + target.OauthType = &OAuth2_AccessTokenValidation{ + AccessTokenValidation: proto.Clone(m.GetAccessTokenValidation()).(*AccessTokenValidation), + } + } + + case *OAuth2_Oauth2: + + if h, ok := interface{}(m.GetOauth2()).(clone.Cloner); ok { + target.OauthType = &OAuth2_Oauth2{ + Oauth2: h.Clone().(*PlainOAuth2), + } + } else { + target.OauthType = &OAuth2_Oauth2{ + Oauth2: proto.Clone(m.GetOauth2()).(*PlainOAuth2), + } + } + + } + + return target +} + +// Clone function +func (m *RedisOptions) Clone() proto.Message { + var target *RedisOptions + if m == nil { + return target + } + target = &RedisOptions{} + + target.Host = m.GetHost() + + target.Db = m.GetDb() + + target.PoolSize = m.GetPoolSize() + + target.TlsCertMountPath = m.GetTlsCertMountPath() + + target.SocketType = m.GetSocketType() + + return target +} + +// Clone function +func (m *UserSession) Clone() proto.Message { + var target *UserSession + if m == nil { + return target + } + target = &UserSession{} + + target.FailOnFetchFailure = m.GetFailOnFetchFailure() + + if h, ok := interface{}(m.GetCookieOptions()).(clone.Cloner); ok { + target.CookieOptions = h.Clone().(*UserSession_CookieOptions) + } else { + target.CookieOptions = proto.Clone(m.GetCookieOptions()).(*UserSession_CookieOptions) + } + + if h, ok := interface{}(m.GetCipherConfig()).(clone.Cloner); ok { + target.CipherConfig = h.Clone().(*UserSession_CipherConfig) + } else { + target.CipherConfig = proto.Clone(m.GetCipherConfig()).(*UserSession_CipherConfig) + } + + switch m.Session.(type) { + + case *UserSession_Cookie: + + if h, ok := interface{}(m.GetCookie()).(clone.Cloner); ok { + target.Session = &UserSession_Cookie{ + Cookie: h.Clone().(*UserSession_InternalSession), + } + } else { + target.Session = &UserSession_Cookie{ + Cookie: proto.Clone(m.GetCookie()).(*UserSession_InternalSession), + } + } + + case *UserSession_Redis: + + if h, ok := interface{}(m.GetRedis()).(clone.Cloner); ok { + target.Session = &UserSession_Redis{ + Redis: h.Clone().(*UserSession_RedisSession), + } + } else { + target.Session = &UserSession_Redis{ + Redis: proto.Clone(m.GetRedis()).(*UserSession_RedisSession), + } + } + + } + + return target +} + +// Clone function +func (m *HeaderConfiguration) Clone() proto.Message { + var target *HeaderConfiguration + if m == nil { + return target + } + target = &HeaderConfiguration{} + + target.IdTokenHeader = m.GetIdTokenHeader() + + target.AccessTokenHeader = m.GetAccessTokenHeader() + + if h, ok := interface{}(m.GetUseBearerSchemaForAuthorization()).(clone.Cloner); ok { + target.UseBearerSchemaForAuthorization = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.UseBearerSchemaForAuthorization = proto.Clone(m.GetUseBearerSchemaForAuthorization()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *DiscoveryOverride) Clone() proto.Message { + var target *DiscoveryOverride + if m == nil { + return target + } + target = &DiscoveryOverride{} + + target.AuthEndpoint = m.GetAuthEndpoint() + + target.TokenEndpoint = m.GetTokenEndpoint() + + target.JwksUri = m.GetJwksUri() + + if m.GetScopes() != nil { + target.Scopes = make([]string, len(m.GetScopes())) + for idx, v := range m.GetScopes() { + + target.Scopes[idx] = v + + } + } + + if m.GetResponseTypes() != nil { + target.ResponseTypes = make([]string, len(m.GetResponseTypes())) + for idx, v := range m.GetResponseTypes() { + + target.ResponseTypes[idx] = v + + } + } + + if m.GetSubjects() != nil { + target.Subjects = make([]string, len(m.GetSubjects())) + for idx, v := range m.GetSubjects() { + + target.Subjects[idx] = v + + } + } + + if m.GetIdTokenAlgs() != nil { + target.IdTokenAlgs = make([]string, len(m.GetIdTokenAlgs())) + for idx, v := range m.GetIdTokenAlgs() { + + target.IdTokenAlgs[idx] = v + + } + } + + if m.GetAuthMethods() != nil { + target.AuthMethods = make([]string, len(m.GetAuthMethods())) + for idx, v := range m.GetAuthMethods() { + + target.AuthMethods[idx] = v + + } + } + + if m.GetClaims() != nil { + target.Claims = make([]string, len(m.GetClaims())) + for idx, v := range m.GetClaims() { + + target.Claims[idx] = v + + } + } + + target.RevocationEndpoint = m.GetRevocationEndpoint() + + target.EndSessionEndpoint = m.GetEndSessionEndpoint() + + return target +} + +// Clone function +func (m *JwksOnDemandCacheRefreshPolicy) Clone() proto.Message { + var target *JwksOnDemandCacheRefreshPolicy + if m == nil { + return target + } + target = &JwksOnDemandCacheRefreshPolicy{} + + switch m.Policy.(type) { + + case *JwksOnDemandCacheRefreshPolicy_Never: + + if h, ok := interface{}(m.GetNever()).(clone.Cloner); ok { + target.Policy = &JwksOnDemandCacheRefreshPolicy_Never{ + Never: h.Clone().(*google_golang_org_protobuf_types_known_emptypb.Empty), + } + } else { + target.Policy = &JwksOnDemandCacheRefreshPolicy_Never{ + Never: proto.Clone(m.GetNever()).(*google_golang_org_protobuf_types_known_emptypb.Empty), + } + } + + case *JwksOnDemandCacheRefreshPolicy_Always: + + if h, ok := interface{}(m.GetAlways()).(clone.Cloner); ok { + target.Policy = &JwksOnDemandCacheRefreshPolicy_Always{ + Always: h.Clone().(*google_golang_org_protobuf_types_known_emptypb.Empty), + } + } else { + target.Policy = &JwksOnDemandCacheRefreshPolicy_Always{ + Always: proto.Clone(m.GetAlways()).(*google_golang_org_protobuf_types_known_emptypb.Empty), + } + } + + case *JwksOnDemandCacheRefreshPolicy_MaxIdpReqPerPollingInterval: + + target.Policy = &JwksOnDemandCacheRefreshPolicy_MaxIdpReqPerPollingInterval{ + MaxIdpReqPerPollingInterval: m.GetMaxIdpReqPerPollingInterval(), + } + + } + + return target +} + +// Clone function +func (m *AutoMapFromMetadata) Clone() proto.Message { + var target *AutoMapFromMetadata + if m == nil { + return target + } + target = &AutoMapFromMetadata{} + + target.Namespace = m.GetNamespace() + + return target +} + +// Clone function +func (m *EndSessionProperties) Clone() proto.Message { + var target *EndSessionProperties + if m == nil { + return target + } + target = &EndSessionProperties{} + + target.MethodType = m.GetMethodType() + + return target +} + +// Clone function +func (m *ClaimToHeader) Clone() proto.Message { + var target *ClaimToHeader + if m == nil { + return target + } + target = &ClaimToHeader{} + + target.Claim = m.GetClaim() + + target.Header = m.GetHeader() + + target.Append = m.GetAppend() + + return target +} + +// Clone function +func (m *Azure) Clone() proto.Message { + var target *Azure + if m == nil { + return target + } + target = &Azure{} + + target.ClientId = m.GetClientId() + + target.TenantId = m.GetTenantId() + + if h, ok := interface{}(m.GetClientSecret()).(clone.Cloner); ok { + target.ClientSecret = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.ClientSecret = proto.Clone(m.GetClientSecret()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + if h, ok := interface{}(m.GetClaimsCachingOptions()).(clone.Cloner); ok { + target.ClaimsCachingOptions = h.Clone().(*RedisOptions) + } else { + target.ClaimsCachingOptions = proto.Clone(m.GetClaimsCachingOptions()).(*RedisOptions) + } + + return target +} + +// Clone function +func (m *OidcAuthorizationCode) Clone() proto.Message { + var target *OidcAuthorizationCode + if m == nil { + return target + } + target = &OidcAuthorizationCode{} + + target.ClientId = m.GetClientId() + + if h, ok := interface{}(m.GetClientSecretRef()).(clone.Cloner); ok { + target.ClientSecretRef = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.ClientSecretRef = proto.Clone(m.GetClientSecretRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + target.IssuerUrl = m.GetIssuerUrl() + + if m.GetAuthEndpointQueryParams() != nil { + target.AuthEndpointQueryParams = make(map[string]string, len(m.GetAuthEndpointQueryParams())) + for k, v := range m.GetAuthEndpointQueryParams() { + + target.AuthEndpointQueryParams[k] = v + + } + } + + if m.GetTokenEndpointQueryParams() != nil { + target.TokenEndpointQueryParams = make(map[string]string, len(m.GetTokenEndpointQueryParams())) + for k, v := range m.GetTokenEndpointQueryParams() { + + target.TokenEndpointQueryParams[k] = v + + } + } + + target.AppUrl = m.GetAppUrl() + + target.CallbackPath = m.GetCallbackPath() + + target.LogoutPath = m.GetLogoutPath() + + target.AfterLogoutUrl = m.GetAfterLogoutUrl() + + if m.GetScopes() != nil { + target.Scopes = make([]string, len(m.GetScopes())) + for idx, v := range m.GetScopes() { + + target.Scopes[idx] = v + + } + } + + if h, ok := interface{}(m.GetSession()).(clone.Cloner); ok { + target.Session = h.Clone().(*UserSession) + } else { + target.Session = proto.Clone(m.GetSession()).(*UserSession) + } + + if h, ok := interface{}(m.GetHeaders()).(clone.Cloner); ok { + target.Headers = h.Clone().(*HeaderConfiguration) + } else { + target.Headers = proto.Clone(m.GetHeaders()).(*HeaderConfiguration) + } + + if h, ok := interface{}(m.GetDiscoveryOverride()).(clone.Cloner); ok { + target.DiscoveryOverride = h.Clone().(*DiscoveryOverride) + } else { + target.DiscoveryOverride = proto.Clone(m.GetDiscoveryOverride()).(*DiscoveryOverride) + } + + if h, ok := interface{}(m.GetDiscoveryPollInterval()).(clone.Cloner); ok { + target.DiscoveryPollInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.DiscoveryPollInterval = proto.Clone(m.GetDiscoveryPollInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetJwksCacheRefreshPolicy()).(clone.Cloner); ok { + target.JwksCacheRefreshPolicy = h.Clone().(*JwksOnDemandCacheRefreshPolicy) + } else { + target.JwksCacheRefreshPolicy = proto.Clone(m.GetJwksCacheRefreshPolicy()).(*JwksOnDemandCacheRefreshPolicy) + } + + target.SessionIdHeaderName = m.GetSessionIdHeaderName() + + target.ParseCallbackPathAsRegex = m.GetParseCallbackPathAsRegex() + + if h, ok := interface{}(m.GetAutoMapFromMetadata()).(clone.Cloner); ok { + target.AutoMapFromMetadata = h.Clone().(*AutoMapFromMetadata) + } else { + target.AutoMapFromMetadata = proto.Clone(m.GetAutoMapFromMetadata()).(*AutoMapFromMetadata) + } + + if h, ok := interface{}(m.GetEndSessionProperties()).(clone.Cloner); ok { + target.EndSessionProperties = h.Clone().(*EndSessionProperties) + } else { + target.EndSessionProperties = proto.Clone(m.GetEndSessionProperties()).(*EndSessionProperties) + } + + if m.GetDynamicMetadataFromClaims() != nil { + target.DynamicMetadataFromClaims = make(map[string]string, len(m.GetDynamicMetadataFromClaims())) + for k, v := range m.GetDynamicMetadataFromClaims() { + + target.DynamicMetadataFromClaims[k] = v + + } + } + + if h, ok := interface{}(m.GetDisableClientSecret()).(clone.Cloner); ok { + target.DisableClientSecret = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.DisableClientSecret = proto.Clone(m.GetDisableClientSecret()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetAccessToken()).(clone.Cloner); ok { + target.AccessToken = h.Clone().(*OidcAuthorizationCode_AccessToken) + } else { + target.AccessToken = proto.Clone(m.GetAccessToken()).(*OidcAuthorizationCode_AccessToken) + } + + if h, ok := interface{}(m.GetIdentityToken()).(clone.Cloner); ok { + target.IdentityToken = h.Clone().(*OidcAuthorizationCode_IdentityToken) + } else { + target.IdentityToken = proto.Clone(m.GetIdentityToken()).(*OidcAuthorizationCode_IdentityToken) + } + + if h, ok := interface{}(m.GetClientAuthentication()).(clone.Cloner); ok { + target.ClientAuthentication = h.Clone().(*OidcAuthorizationCode_ClientAuthentication) + } else { + target.ClientAuthentication = proto.Clone(m.GetClientAuthentication()).(*OidcAuthorizationCode_ClientAuthentication) + } + + if h, ok := interface{}(m.GetFrontChannelLogout()).(clone.Cloner); ok { + target.FrontChannelLogout = h.Clone().(*OidcAuthorizationCode_FrontChannelLogout) + } else { + target.FrontChannelLogout = proto.Clone(m.GetFrontChannelLogout()).(*OidcAuthorizationCode_FrontChannelLogout) + } + + switch m.Provider.(type) { + + case *OidcAuthorizationCode_Default_: + + if h, ok := interface{}(m.GetDefault()).(clone.Cloner); ok { + target.Provider = &OidcAuthorizationCode_Default_{ + Default: h.Clone().(*OidcAuthorizationCode_Default), + } + } else { + target.Provider = &OidcAuthorizationCode_Default_{ + Default: proto.Clone(m.GetDefault()).(*OidcAuthorizationCode_Default), + } + } + + case *OidcAuthorizationCode_Azure: + + if h, ok := interface{}(m.GetAzure()).(clone.Cloner); ok { + target.Provider = &OidcAuthorizationCode_Azure{ + Azure: h.Clone().(*Azure), + } + } else { + target.Provider = &OidcAuthorizationCode_Azure{ + Azure: proto.Clone(m.GetAzure()).(*Azure), + } + } + + } + + return target +} + +// Clone function +func (m *PlainOAuth2) Clone() proto.Message { + var target *PlainOAuth2 + if m == nil { + return target + } + target = &PlainOAuth2{} + + target.ClientId = m.GetClientId() + + if h, ok := interface{}(m.GetClientSecretRef()).(clone.Cloner); ok { + target.ClientSecretRef = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.ClientSecretRef = proto.Clone(m.GetClientSecretRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + if m.GetAuthEndpointQueryParams() != nil { + target.AuthEndpointQueryParams = make(map[string]string, len(m.GetAuthEndpointQueryParams())) + for k, v := range m.GetAuthEndpointQueryParams() { + + target.AuthEndpointQueryParams[k] = v + + } + } + + target.AppUrl = m.GetAppUrl() + + target.CallbackPath = m.GetCallbackPath() + + if m.GetScopes() != nil { + target.Scopes = make([]string, len(m.GetScopes())) + for idx, v := range m.GetScopes() { + + target.Scopes[idx] = v + + } + } + + if h, ok := interface{}(m.GetSession()).(clone.Cloner); ok { + target.Session = h.Clone().(*UserSession) + } else { + target.Session = proto.Clone(m.GetSession()).(*UserSession) + } + + target.LogoutPath = m.GetLogoutPath() + + if m.GetTokenEndpointQueryParams() != nil { + target.TokenEndpointQueryParams = make(map[string]string, len(m.GetTokenEndpointQueryParams())) + for k, v := range m.GetTokenEndpointQueryParams() { + + target.TokenEndpointQueryParams[k] = v + + } + } + + target.AfterLogoutUrl = m.GetAfterLogoutUrl() + + target.AuthEndpoint = m.GetAuthEndpoint() + + target.TokenEndpoint = m.GetTokenEndpoint() + + target.RevocationEndpoint = m.GetRevocationEndpoint() + + if h, ok := interface{}(m.GetDisableClientSecret()).(clone.Cloner); ok { + target.DisableClientSecret = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.DisableClientSecret = proto.Clone(m.GetDisableClientSecret()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *JwtValidation) Clone() proto.Message { + var target *JwtValidation + if m == nil { + return target + } + target = &JwtValidation{} + + target.Issuer = m.GetIssuer() + + switch m.JwksSourceSpecifier.(type) { + + case *JwtValidation_RemoteJwks_: + + if h, ok := interface{}(m.GetRemoteJwks()).(clone.Cloner); ok { + target.JwksSourceSpecifier = &JwtValidation_RemoteJwks_{ + RemoteJwks: h.Clone().(*JwtValidation_RemoteJwks), + } + } else { + target.JwksSourceSpecifier = &JwtValidation_RemoteJwks_{ + RemoteJwks: proto.Clone(m.GetRemoteJwks()).(*JwtValidation_RemoteJwks), + } + } + + case *JwtValidation_LocalJwks_: + + if h, ok := interface{}(m.GetLocalJwks()).(clone.Cloner); ok { + target.JwksSourceSpecifier = &JwtValidation_LocalJwks_{ + LocalJwks: h.Clone().(*JwtValidation_LocalJwks), + } + } else { + target.JwksSourceSpecifier = &JwtValidation_LocalJwks_{ + LocalJwks: proto.Clone(m.GetLocalJwks()).(*JwtValidation_LocalJwks), + } + } + + } + + return target +} + +// Clone function +func (m *IntrospectionValidation) Clone() proto.Message { + var target *IntrospectionValidation + if m == nil { + return target + } + target = &IntrospectionValidation{} + + target.IntrospectionUrl = m.GetIntrospectionUrl() + + target.ClientId = m.GetClientId() + + if h, ok := interface{}(m.GetClientSecretRef()).(clone.Cloner); ok { + target.ClientSecretRef = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.ClientSecretRef = proto.Clone(m.GetClientSecretRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + target.UserIdAttributeName = m.GetUserIdAttributeName() + + if h, ok := interface{}(m.GetDisableClientSecret()).(clone.Cloner); ok { + target.DisableClientSecret = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.DisableClientSecret = proto.Clone(m.GetDisableClientSecret()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *AccessTokenValidation) Clone() proto.Message { + var target *AccessTokenValidation + if m == nil { + return target + } + target = &AccessTokenValidation{} + + target.UserinfoUrl = m.GetUserinfoUrl() + + if h, ok := interface{}(m.GetCacheTimeout()).(clone.Cloner); ok { + target.CacheTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.CacheTimeout = proto.Clone(m.GetCacheTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if m.GetDynamicMetadataFromClaims() != nil { + target.DynamicMetadataFromClaims = make(map[string]string, len(m.GetDynamicMetadataFromClaims())) + for k, v := range m.GetDynamicMetadataFromClaims() { + + target.DynamicMetadataFromClaims[k] = v + + } + } + + if m.GetClaimsToHeaders() != nil { + target.ClaimsToHeaders = make([]*ClaimToHeader, len(m.GetClaimsToHeaders())) + for idx, v := range m.GetClaimsToHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ClaimsToHeaders[idx] = h.Clone().(*ClaimToHeader) + } else { + target.ClaimsToHeaders[idx] = proto.Clone(v).(*ClaimToHeader) + } + + } + } + + switch m.ValidationType.(type) { + + case *AccessTokenValidation_IntrospectionUrl: + + target.ValidationType = &AccessTokenValidation_IntrospectionUrl{ + IntrospectionUrl: m.GetIntrospectionUrl(), + } + + case *AccessTokenValidation_Jwt: + + if h, ok := interface{}(m.GetJwt()).(clone.Cloner); ok { + target.ValidationType = &AccessTokenValidation_Jwt{ + Jwt: h.Clone().(*JwtValidation), + } + } else { + target.ValidationType = &AccessTokenValidation_Jwt{ + Jwt: proto.Clone(m.GetJwt()).(*JwtValidation), + } + } + + case *AccessTokenValidation_Introspection: + + if h, ok := interface{}(m.GetIntrospection()).(clone.Cloner); ok { + target.ValidationType = &AccessTokenValidation_Introspection{ + Introspection: h.Clone().(*IntrospectionValidation), + } + } else { + target.ValidationType = &AccessTokenValidation_Introspection{ + Introspection: proto.Clone(m.GetIntrospection()).(*IntrospectionValidation), + } + } + + } + + switch m.ScopeValidation.(type) { + + case *AccessTokenValidation_RequiredScopes: + + if h, ok := interface{}(m.GetRequiredScopes()).(clone.Cloner); ok { + target.ScopeValidation = &AccessTokenValidation_RequiredScopes{ + RequiredScopes: h.Clone().(*AccessTokenValidation_ScopeList), + } + } else { + target.ScopeValidation = &AccessTokenValidation_RequiredScopes{ + RequiredScopes: proto.Clone(m.GetRequiredScopes()).(*AccessTokenValidation_ScopeList), + } + } + + } + + switch m.Provider.(type) { + + case *AccessTokenValidation_Default_: + + if h, ok := interface{}(m.GetDefault()).(clone.Cloner); ok { + target.Provider = &AccessTokenValidation_Default_{ + Default: h.Clone().(*AccessTokenValidation_Default), + } + } else { + target.Provider = &AccessTokenValidation_Default_{ + Default: proto.Clone(m.GetDefault()).(*AccessTokenValidation_Default), + } + } + + case *AccessTokenValidation_Azure: + + if h, ok := interface{}(m.GetAzure()).(clone.Cloner); ok { + target.Provider = &AccessTokenValidation_Azure{ + Azure: h.Clone().(*Azure), + } + } else { + target.Provider = &AccessTokenValidation_Azure{ + Azure: proto.Clone(m.GetAzure()).(*Azure), + } + } + + } + + return target +} + +// Clone function +func (m *OauthSecret) Clone() proto.Message { + var target *OauthSecret + if m == nil { + return target + } + target = &OauthSecret{} + + target.ClientSecret = m.GetClientSecret() + + return target +} + +// Clone function +func (m *ApiKeyAuth) Clone() proto.Message { + var target *ApiKeyAuth + if m == nil { + return target + } + target = &ApiKeyAuth{} + + if m.GetLabelSelector() != nil { + target.LabelSelector = make(map[string]string, len(m.GetLabelSelector())) + for k, v := range m.GetLabelSelector() { + + target.LabelSelector[k] = v + + } + } + + if m.GetApiKeySecretRefs() != nil { + target.ApiKeySecretRefs = make([]*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef, len(m.GetApiKeySecretRefs())) + for idx, v := range m.GetApiKeySecretRefs() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ApiKeySecretRefs[idx] = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.ApiKeySecretRefs[idx] = proto.Clone(v).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + } + } + + target.HeaderName = m.GetHeaderName() + + if m.GetHeadersFromMetadata() != nil { + target.HeadersFromMetadata = make(map[string]*ApiKeyAuth_SecretKey, len(m.GetHeadersFromMetadata())) + for k, v := range m.GetHeadersFromMetadata() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.HeadersFromMetadata[k] = h.Clone().(*ApiKeyAuth_SecretKey) + } else { + target.HeadersFromMetadata[k] = proto.Clone(v).(*ApiKeyAuth_SecretKey) + } + + } + } + + if m.GetHeadersFromMetadataEntry() != nil { + target.HeadersFromMetadataEntry = make(map[string]*ApiKeyAuth_MetadataEntry, len(m.GetHeadersFromMetadataEntry())) + for k, v := range m.GetHeadersFromMetadataEntry() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.HeadersFromMetadataEntry[k] = h.Clone().(*ApiKeyAuth_MetadataEntry) + } else { + target.HeadersFromMetadataEntry[k] = proto.Clone(v).(*ApiKeyAuth_MetadataEntry) + } + + } + } + + target.SkipMetadataValidation = m.GetSkipMetadataValidation() + + switch m.StorageBackend.(type) { + + case *ApiKeyAuth_K8SSecretApikeyStorage: + + if h, ok := interface{}(m.GetK8SSecretApikeyStorage()).(clone.Cloner); ok { + target.StorageBackend = &ApiKeyAuth_K8SSecretApikeyStorage{ + K8SSecretApikeyStorage: h.Clone().(*K8SSecretApiKeyStorage), + } + } else { + target.StorageBackend = &ApiKeyAuth_K8SSecretApikeyStorage{ + K8SSecretApikeyStorage: proto.Clone(m.GetK8SSecretApikeyStorage()).(*K8SSecretApiKeyStorage), + } + } + + case *ApiKeyAuth_AerospikeApikeyStorage: + + if h, ok := interface{}(m.GetAerospikeApikeyStorage()).(clone.Cloner); ok { + target.StorageBackend = &ApiKeyAuth_AerospikeApikeyStorage{ + AerospikeApikeyStorage: h.Clone().(*AerospikeApiKeyStorage), + } + } else { + target.StorageBackend = &ApiKeyAuth_AerospikeApikeyStorage{ + AerospikeApikeyStorage: proto.Clone(m.GetAerospikeApikeyStorage()).(*AerospikeApiKeyStorage), + } + } + + } + + return target +} + +// Clone function +func (m *K8SSecretApiKeyStorage) Clone() proto.Message { + var target *K8SSecretApiKeyStorage + if m == nil { + return target + } + target = &K8SSecretApiKeyStorage{} + + if m.GetLabelSelector() != nil { + target.LabelSelector = make(map[string]string, len(m.GetLabelSelector())) + for k, v := range m.GetLabelSelector() { + + target.LabelSelector[k] = v + + } + } + + if m.GetApiKeySecretRefs() != nil { + target.ApiKeySecretRefs = make([]*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef, len(m.GetApiKeySecretRefs())) + for idx, v := range m.GetApiKeySecretRefs() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ApiKeySecretRefs[idx] = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.ApiKeySecretRefs[idx] = proto.Clone(v).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + } + } + + return target +} + +// Clone function +func (m *AerospikeApiKeyStorage) Clone() proto.Message { + var target *AerospikeApiKeyStorage + if m == nil { + return target + } + target = &AerospikeApiKeyStorage{} + + target.Hostname = m.GetHostname() + + target.Namespace = m.GetNamespace() + + target.Set = m.GetSet() + + target.Port = m.GetPort() + + target.BatchSize = m.GetBatchSize() + + if h, ok := interface{}(m.GetReadModeSc()).(clone.Cloner); ok { + target.ReadModeSc = h.Clone().(*AerospikeApiKeyStorageReadModeSc) + } else { + target.ReadModeSc = proto.Clone(m.GetReadModeSc()).(*AerospikeApiKeyStorageReadModeSc) + } + + if h, ok := interface{}(m.GetReadModeAp()).(clone.Cloner); ok { + target.ReadModeAp = h.Clone().(*AerospikeApiKeyStorageReadModeAp) + } else { + target.ReadModeAp = proto.Clone(m.GetReadModeAp()).(*AerospikeApiKeyStorageReadModeAp) + } + + target.NodeTlsName = m.GetNodeTlsName() + + target.CertPath = m.GetCertPath() + + target.KeyPath = m.GetKeyPath() + + target.AllowInsecure = m.GetAllowInsecure() + + target.RootCaPath = m.GetRootCaPath() + + target.TlsVersion = m.GetTlsVersion() + + if m.GetTlsCurveGroups() != nil { + target.TlsCurveGroups = make([]*AerospikeApiKeyStorageTlsCurveID, len(m.GetTlsCurveGroups())) + for idx, v := range m.GetTlsCurveGroups() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.TlsCurveGroups[idx] = h.Clone().(*AerospikeApiKeyStorageTlsCurveID) + } else { + target.TlsCurveGroups[idx] = proto.Clone(v).(*AerospikeApiKeyStorageTlsCurveID) + } + + } + } + + if m.GetLabelSelector() != nil { + target.LabelSelector = make(map[string]string, len(m.GetLabelSelector())) + for k, v := range m.GetLabelSelector() { + + target.LabelSelector[k] = v + + } + } + + switch m.CommitLevel.(type) { + + case *AerospikeApiKeyStorage_CommitAll: + + target.CommitLevel = &AerospikeApiKeyStorage_CommitAll{ + CommitAll: m.GetCommitAll(), + } + + case *AerospikeApiKeyStorage_CommitMaster: + + target.CommitLevel = &AerospikeApiKeyStorage_CommitMaster{ + CommitMaster: m.GetCommitMaster(), + } + + } + + return target +} + +// Clone function +func (m *ServerDefaultApiKeyStorage) Clone() proto.Message { + var target *ServerDefaultApiKeyStorage + if m == nil { + return target + } + target = &ServerDefaultApiKeyStorage{} + + return target +} + +// Clone function +func (m *ApiKey) Clone() proto.Message { + var target *ApiKey + if m == nil { + return target + } + target = &ApiKey{} + + target.ApiKey = m.GetApiKey() + + if m.GetLabels() != nil { + target.Labels = make([]string, len(m.GetLabels())) + for idx, v := range m.GetLabels() { + + target.Labels[idx] = v + + } + } + + if m.GetMetadata() != nil { + target.Metadata = make(map[string]string, len(m.GetMetadata())) + for k, v := range m.GetMetadata() { + + target.Metadata[k] = v + + } + } + + target.Uuid = m.GetUuid() + + return target +} + +// Clone function +func (m *ApiKeySecret) Clone() proto.Message { + var target *ApiKeySecret + if m == nil { + return target + } + target = &ApiKeySecret{} + + target.ApiKey = m.GetApiKey() + + if m.GetLabels() != nil { + target.Labels = make([]string, len(m.GetLabels())) + for idx, v := range m.GetLabels() { + + target.Labels[idx] = v + + } + } + + if m.GetMetadata() != nil { + target.Metadata = make(map[string]string, len(m.GetMetadata())) + for k, v := range m.GetMetadata() { + + target.Metadata[k] = v + + } + } + + return target +} + +// Clone function +func (m *OpaAuth) Clone() proto.Message { + var target *OpaAuth + if m == nil { + return target + } + target = &OpaAuth{} + + if m.GetModules() != nil { + target.Modules = make([]*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef, len(m.GetModules())) + for idx, v := range m.GetModules() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Modules[idx] = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.Modules[idx] = proto.Clone(v).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + } + } + + target.Query = m.GetQuery() + + if h, ok := interface{}(m.GetOptions()).(clone.Cloner); ok { + target.Options = h.Clone().(*OpaAuthOptions) + } else { + target.Options = proto.Clone(m.GetOptions()).(*OpaAuthOptions) + } + + return target +} + +// Clone function +func (m *OpaAuthOptions) Clone() proto.Message { + var target *OpaAuthOptions + if m == nil { + return target + } + target = &OpaAuthOptions{} + + target.FastInputConversion = m.GetFastInputConversion() + + target.ReturnDecisionReason = m.GetReturnDecisionReason() + + return target +} + +// Clone function +func (m *OpaServerAuth) Clone() proto.Message { + var target *OpaServerAuth + if m == nil { + return target + } + target = &OpaServerAuth{} + + target.Package = m.GetPackage() + + target.RuleName = m.GetRuleName() + + target.ServerAddr = m.GetServerAddr() + + if h, ok := interface{}(m.GetOptions()).(clone.Cloner); ok { + target.Options = h.Clone().(*OpaAuthOptions) + } else { + target.Options = proto.Clone(m.GetOptions()).(*OpaAuthOptions) + } + + return target +} + +// Clone function +func (m *Ldap) Clone() proto.Message { + var target *Ldap + if m == nil { + return target + } + target = &Ldap{} + + target.Address = m.GetAddress() + + target.UserDnTemplate = m.GetUserDnTemplate() + + target.MembershipAttributeName = m.GetMembershipAttributeName() + + if m.GetAllowedGroups() != nil { + target.AllowedGroups = make([]string, len(m.GetAllowedGroups())) + for idx, v := range m.GetAllowedGroups() { + + target.AllowedGroups[idx] = v + + } + } + + if h, ok := interface{}(m.GetPool()).(clone.Cloner); ok { + target.Pool = h.Clone().(*Ldap_ConnectionPool) + } else { + target.Pool = proto.Clone(m.GetPool()).(*Ldap_ConnectionPool) + } + + target.SearchFilter = m.GetSearchFilter() + + target.DisableGroupChecking = m.GetDisableGroupChecking() + + if h, ok := interface{}(m.GetGroupLookupSettings()).(clone.Cloner); ok { + target.GroupLookupSettings = h.Clone().(*LdapServiceAccount) + } else { + target.GroupLookupSettings = proto.Clone(m.GetGroupLookupSettings()).(*LdapServiceAccount) + } + + return target +} + +// Clone function +func (m *LdapServiceAccount) Clone() proto.Message { + var target *LdapServiceAccount + if m == nil { + return target + } + target = &LdapServiceAccount{} + + if h, ok := interface{}(m.GetCredentialsSecretRef()).(clone.Cloner); ok { + target.CredentialsSecretRef = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.CredentialsSecretRef = proto.Clone(m.GetCredentialsSecretRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + target.CheckGroupsWithServiceAccount = m.GetCheckGroupsWithServiceAccount() + + return target +} + +// Clone function +func (m *PassThroughAuth) Clone() proto.Message { + var target *PassThroughAuth + if m == nil { + return target + } + target = &PassThroughAuth{} + + if h, ok := interface{}(m.GetConfig()).(clone.Cloner); ok { + target.Config = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Config = proto.Clone(m.GetConfig()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + target.FailureModeAllow = m.GetFailureModeAllow() + + switch m.Protocol.(type) { + + case *PassThroughAuth_Grpc: + + if h, ok := interface{}(m.GetGrpc()).(clone.Cloner); ok { + target.Protocol = &PassThroughAuth_Grpc{ + Grpc: h.Clone().(*PassThroughGrpc), + } + } else { + target.Protocol = &PassThroughAuth_Grpc{ + Grpc: proto.Clone(m.GetGrpc()).(*PassThroughGrpc), + } + } + + case *PassThroughAuth_Http: + + if h, ok := interface{}(m.GetHttp()).(clone.Cloner); ok { + target.Protocol = &PassThroughAuth_Http{ + Http: h.Clone().(*PassThroughHttp), + } + } else { + target.Protocol = &PassThroughAuth_Http{ + Http: proto.Clone(m.GetHttp()).(*PassThroughHttp), + } + } + + } + + return target +} + +// Clone function +func (m *BackoffStrategy) Clone() proto.Message { + var target *BackoffStrategy + if m == nil { + return target + } + target = &BackoffStrategy{} + + if h, ok := interface{}(m.GetBaseInterval()).(clone.Cloner); ok { + target.BaseInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.BaseInterval = proto.Clone(m.GetBaseInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetMaxInterval()).(clone.Cloner); ok { + target.MaxInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.MaxInterval = proto.Clone(m.GetMaxInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + return target +} + +// Clone function +func (m *RetryPolicy) Clone() proto.Message { + var target *RetryPolicy + if m == nil { + return target + } + target = &RetryPolicy{} + + if h, ok := interface{}(m.GetNumRetries()).(clone.Cloner); ok { + target.NumRetries = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.NumRetries = proto.Clone(m.GetNumRetries()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + switch m.Strategy.(type) { + + case *RetryPolicy_RetryBackOff: + + if h, ok := interface{}(m.GetRetryBackOff()).(clone.Cloner); ok { + target.Strategy = &RetryPolicy_RetryBackOff{ + RetryBackOff: h.Clone().(*BackoffStrategy), + } + } else { + target.Strategy = &RetryPolicy_RetryBackOff{ + RetryBackOff: proto.Clone(m.GetRetryBackOff()).(*BackoffStrategy), + } + } + + } + + return target +} + +// Clone function +func (m *PassThroughGrpc) Clone() proto.Message { + var target *PassThroughGrpc + if m == nil { + return target + } + target = &PassThroughGrpc{} + + target.Address = m.GetAddress() + + if h, ok := interface{}(m.GetConnectionTimeout()).(clone.Cloner); ok { + target.ConnectionTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.ConnectionTimeout = proto.Clone(m.GetConnectionTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetTlsConfig()).(clone.Cloner); ok { + target.TlsConfig = h.Clone().(*PassThroughGrpcTLSConfig) + } else { + target.TlsConfig = proto.Clone(m.GetTlsConfig()).(*PassThroughGrpcTLSConfig) + } + + if h, ok := interface{}(m.GetRetryPolicy()).(clone.Cloner); ok { + target.RetryPolicy = h.Clone().(*RetryPolicy) + } else { + target.RetryPolicy = proto.Clone(m.GetRetryPolicy()).(*RetryPolicy) + } + + return target +} + +// Clone function +func (m *PassThroughHttp) Clone() proto.Message { + var target *PassThroughHttp + if m == nil { + return target + } + target = &PassThroughHttp{} + + target.Url = m.GetUrl() + + if h, ok := interface{}(m.GetRequest()).(clone.Cloner); ok { + target.Request = h.Clone().(*PassThroughHttp_Request) + } else { + target.Request = proto.Clone(m.GetRequest()).(*PassThroughHttp_Request) + } + + if h, ok := interface{}(m.GetResponse()).(clone.Cloner); ok { + target.Response = h.Clone().(*PassThroughHttp_Response) + } else { + target.Response = proto.Clone(m.GetResponse()).(*PassThroughHttp_Response) + } + + if h, ok := interface{}(m.GetConnectionTimeout()).(clone.Cloner); ok { + target.ConnectionTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.ConnectionTimeout = proto.Clone(m.GetConnectionTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetTlsConfig()).(clone.Cloner); ok { + target.TlsConfig = h.Clone().(*PassThroughHttpTLSConfig) + } else { + target.TlsConfig = proto.Clone(m.GetTlsConfig()).(*PassThroughHttpTLSConfig) + } + + return target +} + +// Clone function +func (m *PassThroughGrpcTLSConfig) Clone() proto.Message { + var target *PassThroughGrpcTLSConfig + if m == nil { + return target + } + target = &PassThroughGrpcTLSConfig{} + + if h, ok := interface{}(m.GetSecretRef()).(clone.Cloner); ok { + target.SecretRef = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.SecretRef = proto.Clone(m.GetSecretRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + if h, ok := interface{}(m.GetSslParams()).(clone.Cloner); ok { + target.SslParams = h.Clone().(*SslParameters) + } else { + target.SslParams = proto.Clone(m.GetSslParams()).(*SslParameters) + } + + return target +} + +// Clone function +func (m *PassThroughHttpTLSConfig) Clone() proto.Message { + var target *PassThroughHttpTLSConfig + if m == nil { + return target + } + target = &PassThroughHttpTLSConfig{} + + if h, ok := interface{}(m.GetSecretRef()).(clone.Cloner); ok { + target.SecretRef = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.SecretRef = proto.Clone(m.GetSecretRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + if h, ok := interface{}(m.GetSslParams()).(clone.Cloner); ok { + target.SslParams = h.Clone().(*SslParameters) + } else { + target.SslParams = proto.Clone(m.GetSslParams()).(*SslParameters) + } + + return target +} + +// Clone function +func (m *SslParameters) Clone() proto.Message { + var target *SslParameters + if m == nil { + return target + } + target = &SslParameters{} + + target.MinimumProtocolVersion = m.GetMinimumProtocolVersion() + + target.MaximumProtocolVersion = m.GetMaximumProtocolVersion() + + return target +} + +// Clone function +func (m *PortalAuth) Clone() proto.Message { + var target *PortalAuth + if m == nil { + return target + } + target = &PortalAuth{} + + target.Url = m.GetUrl() + + target.ApiKeyHeader = m.GetApiKeyHeader() + + if h, ok := interface{}(m.GetRedisOptions()).(clone.Cloner); ok { + target.RedisOptions = h.Clone().(*RedisOptions) + } else { + target.RedisOptions = proto.Clone(m.GetRedisOptions()).(*RedisOptions) + } + + if h, ok := interface{}(m.GetCacheDuration()).(clone.Cloner); ok { + target.CacheDuration = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.CacheDuration = proto.Clone(m.GetCacheDuration()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetRequestTimeout()).(clone.Cloner); ok { + target.RequestTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.RequestTimeout = proto.Clone(m.GetRequestTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + return target +} + +// Clone function +func (m *AuthConfigStatus) Clone() proto.Message { + var target *AuthConfigStatus + if m == nil { + return target + } + target = &AuthConfigStatus{} + + target.State = m.GetState() + + target.Reason = m.GetReason() + + target.ReportedBy = m.GetReportedBy() + + if m.GetSubresourceStatuses() != nil { + target.SubresourceStatuses = make(map[string]*AuthConfigStatus, len(m.GetSubresourceStatuses())) + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SubresourceStatuses[k] = h.Clone().(*AuthConfigStatus) + } else { + target.SubresourceStatuses[k] = proto.Clone(v).(*AuthConfigStatus) + } + + } + } + + if h, ok := interface{}(m.GetDetails()).(clone.Cloner); ok { + target.Details = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Details = proto.Clone(m.GetDetails()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + return target +} + +// Clone function +func (m *AuthConfigNamespacedStatuses) Clone() proto.Message { + var target *AuthConfigNamespacedStatuses + if m == nil { + return target + } + target = &AuthConfigNamespacedStatuses{} + + if m.GetStatuses() != nil { + target.Statuses = make(map[string]*AuthConfigStatus, len(m.GetStatuses())) + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Statuses[k] = h.Clone().(*AuthConfigStatus) + } else { + target.Statuses[k] = proto.Clone(v).(*AuthConfigStatus) + } + + } + } + + return target +} + +// Clone function +func (m *AuthConfigSpec_Config) Clone() proto.Message { + var target *AuthConfigSpec_Config + if m == nil { + return target + } + target = &AuthConfigSpec_Config{} + + if h, ok := interface{}(m.GetName()).(clone.Cloner); ok { + target.Name = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.Name = proto.Clone(m.GetName()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + switch m.AuthConfig.(type) { + + case *AuthConfigSpec_Config_BasicAuth: + + if h, ok := interface{}(m.GetBasicAuth()).(clone.Cloner); ok { + target.AuthConfig = &AuthConfigSpec_Config_BasicAuth{ + BasicAuth: h.Clone().(*BasicAuth), + } + } else { + target.AuthConfig = &AuthConfigSpec_Config_BasicAuth{ + BasicAuth: proto.Clone(m.GetBasicAuth()).(*BasicAuth), + } + } + + case *AuthConfigSpec_Config_Oauth: + + if h, ok := interface{}(m.GetOauth()).(clone.Cloner); ok { + target.AuthConfig = &AuthConfigSpec_Config_Oauth{ + Oauth: h.Clone().(*OAuth), + } + } else { + target.AuthConfig = &AuthConfigSpec_Config_Oauth{ + Oauth: proto.Clone(m.GetOauth()).(*OAuth), + } + } + + case *AuthConfigSpec_Config_Oauth2: + + if h, ok := interface{}(m.GetOauth2()).(clone.Cloner); ok { + target.AuthConfig = &AuthConfigSpec_Config_Oauth2{ + Oauth2: h.Clone().(*OAuth2), + } + } else { + target.AuthConfig = &AuthConfigSpec_Config_Oauth2{ + Oauth2: proto.Clone(m.GetOauth2()).(*OAuth2), + } + } + + case *AuthConfigSpec_Config_ApiKeyAuth: + + if h, ok := interface{}(m.GetApiKeyAuth()).(clone.Cloner); ok { + target.AuthConfig = &AuthConfigSpec_Config_ApiKeyAuth{ + ApiKeyAuth: h.Clone().(*ApiKeyAuth), + } + } else { + target.AuthConfig = &AuthConfigSpec_Config_ApiKeyAuth{ + ApiKeyAuth: proto.Clone(m.GetApiKeyAuth()).(*ApiKeyAuth), + } + } + + case *AuthConfigSpec_Config_PluginAuth: + + if h, ok := interface{}(m.GetPluginAuth()).(clone.Cloner); ok { + target.AuthConfig = &AuthConfigSpec_Config_PluginAuth{ + PluginAuth: h.Clone().(*AuthPlugin), + } + } else { + target.AuthConfig = &AuthConfigSpec_Config_PluginAuth{ + PluginAuth: proto.Clone(m.GetPluginAuth()).(*AuthPlugin), + } + } + + case *AuthConfigSpec_Config_OpaAuth: + + if h, ok := interface{}(m.GetOpaAuth()).(clone.Cloner); ok { + target.AuthConfig = &AuthConfigSpec_Config_OpaAuth{ + OpaAuth: h.Clone().(*OpaAuth), + } + } else { + target.AuthConfig = &AuthConfigSpec_Config_OpaAuth{ + OpaAuth: proto.Clone(m.GetOpaAuth()).(*OpaAuth), + } + } + + case *AuthConfigSpec_Config_Ldap: + + if h, ok := interface{}(m.GetLdap()).(clone.Cloner); ok { + target.AuthConfig = &AuthConfigSpec_Config_Ldap{ + Ldap: h.Clone().(*Ldap), + } + } else { + target.AuthConfig = &AuthConfigSpec_Config_Ldap{ + Ldap: proto.Clone(m.GetLdap()).(*Ldap), + } + } + + case *AuthConfigSpec_Config_Jwt: + + if h, ok := interface{}(m.GetJwt()).(clone.Cloner); ok { + target.AuthConfig = &AuthConfigSpec_Config_Jwt{ + Jwt: h.Clone().(*google_golang_org_protobuf_types_known_emptypb.Empty), + } + } else { + target.AuthConfig = &AuthConfigSpec_Config_Jwt{ + Jwt: proto.Clone(m.GetJwt()).(*google_golang_org_protobuf_types_known_emptypb.Empty), + } + } + + case *AuthConfigSpec_Config_PassThroughAuth: + + if h, ok := interface{}(m.GetPassThroughAuth()).(clone.Cloner); ok { + target.AuthConfig = &AuthConfigSpec_Config_PassThroughAuth{ + PassThroughAuth: h.Clone().(*PassThroughAuth), + } + } else { + target.AuthConfig = &AuthConfigSpec_Config_PassThroughAuth{ + PassThroughAuth: proto.Clone(m.GetPassThroughAuth()).(*PassThroughAuth), + } + } + + case *AuthConfigSpec_Config_HmacAuth: + + if h, ok := interface{}(m.GetHmacAuth()).(clone.Cloner); ok { + target.AuthConfig = &AuthConfigSpec_Config_HmacAuth{ + HmacAuth: h.Clone().(*HmacAuth), + } + } else { + target.AuthConfig = &AuthConfigSpec_Config_HmacAuth{ + HmacAuth: proto.Clone(m.GetHmacAuth()).(*HmacAuth), + } + } + + case *AuthConfigSpec_Config_OpaServerAuth: + + if h, ok := interface{}(m.GetOpaServerAuth()).(clone.Cloner); ok { + target.AuthConfig = &AuthConfigSpec_Config_OpaServerAuth{ + OpaServerAuth: h.Clone().(*OpaServerAuth), + } + } else { + target.AuthConfig = &AuthConfigSpec_Config_OpaServerAuth{ + OpaServerAuth: proto.Clone(m.GetOpaServerAuth()).(*OpaServerAuth), + } + } + + case *AuthConfigSpec_Config_PortalAuth: + + if h, ok := interface{}(m.GetPortalAuth()).(clone.Cloner); ok { + target.AuthConfig = &AuthConfigSpec_Config_PortalAuth{ + PortalAuth: h.Clone().(*PortalAuth), + } + } else { + target.AuthConfig = &AuthConfigSpec_Config_PortalAuth{ + PortalAuth: proto.Clone(m.GetPortalAuth()).(*PortalAuth), + } + } + + } + + return target +} + +// Clone function +func (m *HttpService_Request) Clone() proto.Message { + var target *HttpService_Request + if m == nil { + return target + } + target = &HttpService_Request{} + + if m.GetAllowedHeaders() != nil { + target.AllowedHeaders = make([]string, len(m.GetAllowedHeaders())) + for idx, v := range m.GetAllowedHeaders() { + + target.AllowedHeaders[idx] = v + + } + } + + if m.GetHeadersToAdd() != nil { + target.HeadersToAdd = make(map[string]string, len(m.GetHeadersToAdd())) + for k, v := range m.GetHeadersToAdd() { + + target.HeadersToAdd[k] = v + + } + } + + if m.GetAllowedHeadersRegex() != nil { + target.AllowedHeadersRegex = make([]string, len(m.GetAllowedHeadersRegex())) + for idx, v := range m.GetAllowedHeadersRegex() { + + target.AllowedHeadersRegex[idx] = v + + } + } + + return target +} + +// Clone function +func (m *HttpService_Response) Clone() proto.Message { + var target *HttpService_Response + if m == nil { + return target + } + target = &HttpService_Response{} + + if m.GetAllowedUpstreamHeaders() != nil { + target.AllowedUpstreamHeaders = make([]string, len(m.GetAllowedUpstreamHeaders())) + for idx, v := range m.GetAllowedUpstreamHeaders() { + + target.AllowedUpstreamHeaders[idx] = v + + } + } + + if m.GetAllowedClientHeaders() != nil { + target.AllowedClientHeaders = make([]string, len(m.GetAllowedClientHeaders())) + for idx, v := range m.GetAllowedClientHeaders() { + + target.AllowedClientHeaders[idx] = v + + } + } + + if m.GetAllowedUpstreamHeadersToAppend() != nil { + target.AllowedUpstreamHeadersToAppend = make([]string, len(m.GetAllowedUpstreamHeadersToAppend())) + for idx, v := range m.GetAllowedUpstreamHeadersToAppend() { + + target.AllowedUpstreamHeadersToAppend[idx] = v + + } + } + + return target +} + +// Clone function +func (m *BasicAuth_Apr) Clone() proto.Message { + var target *BasicAuth_Apr + if m == nil { + return target + } + target = &BasicAuth_Apr{} + + if m.GetUsers() != nil { + target.Users = make(map[string]*BasicAuth_Apr_SaltedHashedPassword, len(m.GetUsers())) + for k, v := range m.GetUsers() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Users[k] = h.Clone().(*BasicAuth_Apr_SaltedHashedPassword) + } else { + target.Users[k] = proto.Clone(v).(*BasicAuth_Apr_SaltedHashedPassword) + } + + } + } + + return target +} + +// Clone function +func (m *BasicAuth_EncryptionType) Clone() proto.Message { + var target *BasicAuth_EncryptionType + if m == nil { + return target + } + target = &BasicAuth_EncryptionType{} + + switch m.Algorithm.(type) { + + case *BasicAuth_EncryptionType_Apr_: + + if h, ok := interface{}(m.GetApr()).(clone.Cloner); ok { + target.Algorithm = &BasicAuth_EncryptionType_Apr_{ + Apr: h.Clone().(*BasicAuth_EncryptionType_Apr), + } + } else { + target.Algorithm = &BasicAuth_EncryptionType_Apr_{ + Apr: proto.Clone(m.GetApr()).(*BasicAuth_EncryptionType_Apr), + } + } + + case *BasicAuth_EncryptionType_Sha1_: + + if h, ok := interface{}(m.GetSha1()).(clone.Cloner); ok { + target.Algorithm = &BasicAuth_EncryptionType_Sha1_{ + Sha1: h.Clone().(*BasicAuth_EncryptionType_Sha1), + } + } else { + target.Algorithm = &BasicAuth_EncryptionType_Sha1_{ + Sha1: proto.Clone(m.GetSha1()).(*BasicAuth_EncryptionType_Sha1), + } + } + + } + + return target +} + +// Clone function +func (m *BasicAuth_User) Clone() proto.Message { + var target *BasicAuth_User + if m == nil { + return target + } + target = &BasicAuth_User{} + + target.Salt = m.GetSalt() + + target.HashedPassword = m.GetHashedPassword() + + return target +} + +// Clone function +func (m *BasicAuth_UserList) Clone() proto.Message { + var target *BasicAuth_UserList + if m == nil { + return target + } + target = &BasicAuth_UserList{} + + if m.GetUsers() != nil { + target.Users = make(map[string]*BasicAuth_User, len(m.GetUsers())) + for k, v := range m.GetUsers() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Users[k] = h.Clone().(*BasicAuth_User) + } else { + target.Users[k] = proto.Clone(v).(*BasicAuth_User) + } + + } + } + + return target +} + +// Clone function +func (m *BasicAuth_Apr_SaltedHashedPassword) Clone() proto.Message { + var target *BasicAuth_Apr_SaltedHashedPassword + if m == nil { + return target + } + target = &BasicAuth_Apr_SaltedHashedPassword{} + + target.Salt = m.GetSalt() + + target.HashedPassword = m.GetHashedPassword() + + return target +} + +// Clone function +func (m *BasicAuth_EncryptionType_Sha1) Clone() proto.Message { + var target *BasicAuth_EncryptionType_Sha1 + if m == nil { + return target + } + target = &BasicAuth_EncryptionType_Sha1{} + + return target +} + +// Clone function +func (m *BasicAuth_EncryptionType_Apr) Clone() proto.Message { + var target *BasicAuth_EncryptionType_Apr + if m == nil { + return target + } + target = &BasicAuth_EncryptionType_Apr{} + + return target +} + +// Clone function +func (m *UserSession_InternalSession) Clone() proto.Message { + var target *UserSession_InternalSession + if m == nil { + return target + } + target = &UserSession_InternalSession{} + + if h, ok := interface{}(m.GetAllowRefreshing()).(clone.Cloner); ok { + target.AllowRefreshing = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.AllowRefreshing = proto.Clone(m.GetAllowRefreshing()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + target.KeyPrefix = m.GetKeyPrefix() + + target.TargetDomain = m.GetTargetDomain() + + return target +} + +// Clone function +func (m *UserSession_RedisSession) Clone() proto.Message { + var target *UserSession_RedisSession + if m == nil { + return target + } + target = &UserSession_RedisSession{} + + if h, ok := interface{}(m.GetOptions()).(clone.Cloner); ok { + target.Options = h.Clone().(*RedisOptions) + } else { + target.Options = proto.Clone(m.GetOptions()).(*RedisOptions) + } + + target.KeyPrefix = m.GetKeyPrefix() + + target.CookieName = m.GetCookieName() + + if h, ok := interface{}(m.GetAllowRefreshing()).(clone.Cloner); ok { + target.AllowRefreshing = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.AllowRefreshing = proto.Clone(m.GetAllowRefreshing()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetPreExpiryBuffer()).(clone.Cloner); ok { + target.PreExpiryBuffer = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.PreExpiryBuffer = proto.Clone(m.GetPreExpiryBuffer()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + target.TargetDomain = m.GetTargetDomain() + + target.HeaderName = m.GetHeaderName() + + return target +} + +// Clone function +func (m *UserSession_CookieOptions) Clone() proto.Message { + var target *UserSession_CookieOptions + if m == nil { + return target + } + target = &UserSession_CookieOptions{} + + if h, ok := interface{}(m.GetMaxAge()).(clone.Cloner); ok { + target.MaxAge = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxAge = proto.Clone(m.GetMaxAge()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + target.NotSecure = m.GetNotSecure() + + if h, ok := interface{}(m.GetHttpOnly()).(clone.Cloner); ok { + target.HttpOnly = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.HttpOnly = proto.Clone(m.GetHttpOnly()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetPath()).(clone.Cloner); ok { + target.Path = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.Path = proto.Clone(m.GetPath()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + target.SameSite = m.GetSameSite() + + target.Domain = m.GetDomain() + + return target +} + +// Clone function +func (m *UserSession_CipherConfig) Clone() proto.Message { + var target *UserSession_CipherConfig + if m == nil { + return target + } + target = &UserSession_CipherConfig{} + + switch m.Key.(type) { + + case *UserSession_CipherConfig_KeyRef: + + if h, ok := interface{}(m.GetKeyRef()).(clone.Cloner); ok { + target.Key = &UserSession_CipherConfig_KeyRef{ + KeyRef: h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } else { + target.Key = &UserSession_CipherConfig_KeyRef{ + KeyRef: proto.Clone(m.GetKeyRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } + + } + + return target +} + +// Clone function +func (m *OidcAuthorizationCode_AccessToken) Clone() proto.Message { + var target *OidcAuthorizationCode_AccessToken + if m == nil { + return target + } + target = &OidcAuthorizationCode_AccessToken{} + + if m.GetClaimsToHeaders() != nil { + target.ClaimsToHeaders = make([]*ClaimToHeader, len(m.GetClaimsToHeaders())) + for idx, v := range m.GetClaimsToHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ClaimsToHeaders[idx] = h.Clone().(*ClaimToHeader) + } else { + target.ClaimsToHeaders[idx] = proto.Clone(v).(*ClaimToHeader) + } + + } + } + + return target +} + +// Clone function +func (m *OidcAuthorizationCode_IdentityToken) Clone() proto.Message { + var target *OidcAuthorizationCode_IdentityToken + if m == nil { + return target + } + target = &OidcAuthorizationCode_IdentityToken{} + + if m.GetClaimsToHeaders() != nil { + target.ClaimsToHeaders = make([]*ClaimToHeader, len(m.GetClaimsToHeaders())) + for idx, v := range m.GetClaimsToHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ClaimsToHeaders[idx] = h.Clone().(*ClaimToHeader) + } else { + target.ClaimsToHeaders[idx] = proto.Clone(v).(*ClaimToHeader) + } + + } + } + + return target +} + +// Clone function +func (m *OidcAuthorizationCode_ClientAuthentication) Clone() proto.Message { + var target *OidcAuthorizationCode_ClientAuthentication + if m == nil { + return target + } + target = &OidcAuthorizationCode_ClientAuthentication{} + + switch m.ClientAuthenticationConfig.(type) { + + case *OidcAuthorizationCode_ClientAuthentication_ClientSecret_: + + if h, ok := interface{}(m.GetClientSecret()).(clone.Cloner); ok { + target.ClientAuthenticationConfig = &OidcAuthorizationCode_ClientAuthentication_ClientSecret_{ + ClientSecret: h.Clone().(*OidcAuthorizationCode_ClientAuthentication_ClientSecret), + } + } else { + target.ClientAuthenticationConfig = &OidcAuthorizationCode_ClientAuthentication_ClientSecret_{ + ClientSecret: proto.Clone(m.GetClientSecret()).(*OidcAuthorizationCode_ClientAuthentication_ClientSecret), + } + } + + case *OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt_: + + if h, ok := interface{}(m.GetPrivateKeyJwt()).(clone.Cloner); ok { + target.ClientAuthenticationConfig = &OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt_{ + PrivateKeyJwt: h.Clone().(*OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt), + } + } else { + target.ClientAuthenticationConfig = &OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt_{ + PrivateKeyJwt: proto.Clone(m.GetPrivateKeyJwt()).(*OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt), + } + } + + } + + return target +} + +// Clone function +func (m *OidcAuthorizationCode_Default) Clone() proto.Message { + var target *OidcAuthorizationCode_Default + if m == nil { + return target + } + target = &OidcAuthorizationCode_Default{} + + return target +} + +// Clone function +func (m *OidcAuthorizationCode_FrontChannelLogout) Clone() proto.Message { + var target *OidcAuthorizationCode_FrontChannelLogout + if m == nil { + return target + } + target = &OidcAuthorizationCode_FrontChannelLogout{} + + target.Path = m.GetPath() + + return target +} + +// Clone function +func (m *OidcAuthorizationCode_ClientAuthentication_ClientSecret) Clone() proto.Message { + var target *OidcAuthorizationCode_ClientAuthentication_ClientSecret + if m == nil { + return target + } + target = &OidcAuthorizationCode_ClientAuthentication_ClientSecret{} + + if h, ok := interface{}(m.GetClientSecretRef()).(clone.Cloner); ok { + target.ClientSecretRef = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.ClientSecretRef = proto.Clone(m.GetClientSecretRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + if h, ok := interface{}(m.GetDisableClientSecret()).(clone.Cloner); ok { + target.DisableClientSecret = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.DisableClientSecret = proto.Clone(m.GetDisableClientSecret()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt) Clone() proto.Message { + var target *OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt + if m == nil { + return target + } + target = &OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt{} + + if h, ok := interface{}(m.GetSigningKeyRef()).(clone.Cloner); ok { + target.SigningKeyRef = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.SigningKeyRef = proto.Clone(m.GetSigningKeyRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + if h, ok := interface{}(m.GetValidFor()).(clone.Cloner); ok { + target.ValidFor = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.ValidFor = proto.Clone(m.GetValidFor()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + return target +} + +// Clone function +func (m *JwtValidation_RemoteJwks) Clone() proto.Message { + var target *JwtValidation_RemoteJwks + if m == nil { + return target + } + target = &JwtValidation_RemoteJwks{} + + target.Url = m.GetUrl() + + if h, ok := interface{}(m.GetRefreshInterval()).(clone.Cloner); ok { + target.RefreshInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.RefreshInterval = proto.Clone(m.GetRefreshInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + return target +} + +// Clone function +func (m *JwtValidation_LocalJwks) Clone() proto.Message { + var target *JwtValidation_LocalJwks + if m == nil { + return target + } + target = &JwtValidation_LocalJwks{} + + target.InlineString = m.GetInlineString() + + return target +} + +// Clone function +func (m *AccessTokenValidation_Default) Clone() proto.Message { + var target *AccessTokenValidation_Default + if m == nil { + return target + } + target = &AccessTokenValidation_Default{} + + return target +} + +// Clone function +func (m *AccessTokenValidation_ScopeList) Clone() proto.Message { + var target *AccessTokenValidation_ScopeList + if m == nil { + return target + } + target = &AccessTokenValidation_ScopeList{} + + if m.GetScope() != nil { + target.Scope = make([]string, len(m.GetScope())) + for idx, v := range m.GetScope() { + + target.Scope[idx] = v + + } + } + + return target +} + +// Clone function +func (m *ApiKeyAuth_SecretKey) Clone() proto.Message { + var target *ApiKeyAuth_SecretKey + if m == nil { + return target + } + target = &ApiKeyAuth_SecretKey{} + + target.Name = m.GetName() + + target.Required = m.GetRequired() + + return target +} + +// Clone function +func (m *ApiKeyAuth_MetadataEntry) Clone() proto.Message { + var target *ApiKeyAuth_MetadataEntry + if m == nil { + return target + } + target = &ApiKeyAuth_MetadataEntry{} + + target.Name = m.GetName() + + target.Required = m.GetRequired() + + return target +} + +// Clone function +func (m *AerospikeApiKeyStorageReadModeSc) Clone() proto.Message { + var target *AerospikeApiKeyStorageReadModeSc + if m == nil { + return target + } + target = &AerospikeApiKeyStorageReadModeSc{} + + switch m.ReadModeSc.(type) { + + case *AerospikeApiKeyStorageReadModeSc_ReadModeScSession: + + target.ReadModeSc = &AerospikeApiKeyStorageReadModeSc_ReadModeScSession{ + ReadModeScSession: m.GetReadModeScSession(), + } + + case *AerospikeApiKeyStorageReadModeSc_ReadModeScLinearize: + + target.ReadModeSc = &AerospikeApiKeyStorageReadModeSc_ReadModeScLinearize{ + ReadModeScLinearize: m.GetReadModeScLinearize(), + } + + case *AerospikeApiKeyStorageReadModeSc_ReadModeScReplica: + + target.ReadModeSc = &AerospikeApiKeyStorageReadModeSc_ReadModeScReplica{ + ReadModeScReplica: m.GetReadModeScReplica(), + } + + case *AerospikeApiKeyStorageReadModeSc_ReadModeScAllowUnavailable: + + target.ReadModeSc = &AerospikeApiKeyStorageReadModeSc_ReadModeScAllowUnavailable{ + ReadModeScAllowUnavailable: m.GetReadModeScAllowUnavailable(), + } + + } + + return target +} + +// Clone function +func (m *AerospikeApiKeyStorageReadModeAp) Clone() proto.Message { + var target *AerospikeApiKeyStorageReadModeAp + if m == nil { + return target + } + target = &AerospikeApiKeyStorageReadModeAp{} + + switch m.ReadModeAp.(type) { + + case *AerospikeApiKeyStorageReadModeAp_ReadModeApOne: + + target.ReadModeAp = &AerospikeApiKeyStorageReadModeAp_ReadModeApOne{ + ReadModeApOne: m.GetReadModeApOne(), + } + + case *AerospikeApiKeyStorageReadModeAp_ReadModeApAll: + + target.ReadModeAp = &AerospikeApiKeyStorageReadModeAp_ReadModeApAll{ + ReadModeApAll: m.GetReadModeApAll(), + } + + } + + return target +} + +// Clone function +func (m *AerospikeApiKeyStorageTlsCurveID) Clone() proto.Message { + var target *AerospikeApiKeyStorageTlsCurveID + if m == nil { + return target + } + target = &AerospikeApiKeyStorageTlsCurveID{} + + switch m.CurveId.(type) { + + case *AerospikeApiKeyStorageTlsCurveID_CurveP256: + + target.CurveId = &AerospikeApiKeyStorageTlsCurveID_CurveP256{ + CurveP256: m.GetCurveP256(), + } + + case *AerospikeApiKeyStorageTlsCurveID_CurveP384: + + target.CurveId = &AerospikeApiKeyStorageTlsCurveID_CurveP384{ + CurveP384: m.GetCurveP384(), + } + + case *AerospikeApiKeyStorageTlsCurveID_CurveP521: + + target.CurveId = &AerospikeApiKeyStorageTlsCurveID_CurveP521{ + CurveP521: m.GetCurveP521(), + } + + case *AerospikeApiKeyStorageTlsCurveID_X_25519: + + target.CurveId = &AerospikeApiKeyStorageTlsCurveID_X_25519{ + X_25519: m.GetX_25519(), + } + + } + + return target +} + +// Clone function +func (m *Ldap_ConnectionPool) Clone() proto.Message { + var target *Ldap_ConnectionPool + if m == nil { + return target + } + target = &Ldap_ConnectionPool{} + + if h, ok := interface{}(m.GetMaxSize()).(clone.Cloner); ok { + target.MaxSize = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxSize = proto.Clone(m.GetMaxSize()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetInitialSize()).(clone.Cloner); ok { + target.InitialSize = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.InitialSize = proto.Clone(m.GetInitialSize()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + return target +} + +// Clone function +func (m *PassThroughHttp_Request) Clone() proto.Message { + var target *PassThroughHttp_Request + if m == nil { + return target + } + target = &PassThroughHttp_Request{} + + if m.GetAllowedHeaders() != nil { + target.AllowedHeaders = make([]string, len(m.GetAllowedHeaders())) + for idx, v := range m.GetAllowedHeaders() { + + target.AllowedHeaders[idx] = v + + } + } + + if m.GetHeadersToAdd() != nil { + target.HeadersToAdd = make(map[string]string, len(m.GetHeadersToAdd())) + for k, v := range m.GetHeadersToAdd() { + + target.HeadersToAdd[k] = v + + } + } + + target.PassThroughState = m.GetPassThroughState() + + target.PassThroughFilterMetadata = m.GetPassThroughFilterMetadata() + + target.PassThroughBody = m.GetPassThroughBody() + + return target +} + +// Clone function +func (m *PassThroughHttp_Response) Clone() proto.Message { + var target *PassThroughHttp_Response + if m == nil { + return target + } + target = &PassThroughHttp_Response{} + + if m.GetAllowedUpstreamHeaders() != nil { + target.AllowedUpstreamHeaders = make([]string, len(m.GetAllowedUpstreamHeaders())) + for idx, v := range m.GetAllowedUpstreamHeaders() { + + target.AllowedUpstreamHeaders[idx] = v + + } + } + + if m.GetAllowedClientHeadersOnDenied() != nil { + target.AllowedClientHeadersOnDenied = make([]string, len(m.GetAllowedClientHeadersOnDenied())) + for idx, v := range m.GetAllowedClientHeadersOnDenied() { + + target.AllowedClientHeadersOnDenied[idx] = v + + } + } + + target.ReadStateFromResponse = m.GetReadStateFromResponse() + + if m.GetAllowedUpstreamHeadersToOverwrite() != nil { + target.AllowedUpstreamHeadersToOverwrite = make([]string, len(m.GetAllowedUpstreamHeadersToOverwrite())) + for idx, v := range m.GetAllowedUpstreamHeadersToOverwrite() { + + target.AllowedUpstreamHeadersToOverwrite[idx] = v + + } + } + + return target +} diff --git a/pkg/api/enterprise.gloo.solo.io/v1/auth_config.pb.equal.go b/pkg/api/enterprise.gloo.solo.io/v1/auth_config.pb.equal.go index d7236d4bf..5a6089d5a 100644 --- a/pkg/api/enterprise.gloo.solo.io/v1/auth_config.pb.equal.go +++ b/pkg/api/enterprise.gloo.solo.io/v1/auth_config.pb.equal.go @@ -73,6 +73,10 @@ func (m *AuthConfigSpec) Equal(that interface{}) bool { } } + if m.GetFailOnRedirect() != target.GetFailOnRedirect() { + return false + } + return true } @@ -100,12 +104,18 @@ func (m *ExtAuthExtension) Equal(that interface{}) bool { switch m.Spec.(type) { case *ExtAuthExtension_Disable: + if _, ok := target.Spec.(*ExtAuthExtension_Disable); !ok { + return false + } if m.GetDisable() != target.GetDisable() { return false } case *ExtAuthExtension_ConfigRef: + if _, ok := target.Spec.(*ExtAuthExtension_ConfigRef); !ok { + return false + } if h, ok := interface{}(m.GetConfigRef()).(equality.Equalizer); ok { if !h.Equal(target.GetConfigRef()) { @@ -118,6 +128,9 @@ func (m *ExtAuthExtension) Equal(that interface{}) bool { } case *ExtAuthExtension_CustomAuth: + if _, ok := target.Spec.(*ExtAuthExtension_CustomAuth); !ok { + return false + } if h, ok := interface{}(m.GetCustomAuth()).(equality.Equalizer); ok { if !h.Equal(target.GetCustomAuth()) { @@ -129,6 +142,11 @@ func (m *ExtAuthExtension) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.Spec != target.Spec { + return false + } } return true @@ -165,16 +183,6 @@ func (m *Settings) Equal(that interface{}) bool { } } - if h, ok := interface{}(m.GetHttpService()).(equality.Equalizer); ok { - if !h.Equal(target.GetHttpService()) { - return false - } - } else { - if !proto.Equal(m.GetHttpService(), target.GetHttpService()) { - return false - } - } - if strings.Compare(m.GetUserIdHeader(), target.GetUserIdHeader()) != 0 { return false } @@ -219,6 +227,73 @@ func (m *Settings) Equal(that interface{}) bool { return false } + switch m.ServiceType.(type) { + + case *Settings_HttpService: + if _, ok := target.ServiceType.(*Settings_HttpService); !ok { + return false + } + + if h, ok := interface{}(m.GetHttpService()).(equality.Equalizer); ok { + if !h.Equal(target.GetHttpService()) { + return false + } + } else { + if !proto.Equal(m.GetHttpService(), target.GetHttpService()) { + return false + } + } + + case *Settings_GrpcService: + if _, ok := target.ServiceType.(*Settings_GrpcService); !ok { + return false + } + + if h, ok := interface{}(m.GetGrpcService()).(equality.Equalizer); ok { + if !h.Equal(target.GetGrpcService()) { + return false + } + } else { + if !proto.Equal(m.GetGrpcService(), target.GetGrpcService()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.ServiceType != target.ServiceType { + return false + } + } + + return true +} + +// Equal function +func (m *GrpcService) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*GrpcService) + if !ok { + that2, ok := that.(GrpcService) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetAuthority(), target.GetAuthority()) != 0 { + return false + } + return true } @@ -426,6 +501,177 @@ func (m *BasicAuth) Equal(that interface{}) bool { } } + if h, ok := interface{}(m.GetEncryption()).(equality.Equalizer); ok { + if !h.Equal(target.GetEncryption()) { + return false + } + } else { + if !proto.Equal(m.GetEncryption(), target.GetEncryption()) { + return false + } + } + + switch m.UserSource.(type) { + + case *BasicAuth_UserList_: + if _, ok := target.UserSource.(*BasicAuth_UserList_); !ok { + return false + } + + if h, ok := interface{}(m.GetUserList()).(equality.Equalizer); ok { + if !h.Equal(target.GetUserList()) { + return false + } + } else { + if !proto.Equal(m.GetUserList(), target.GetUserList()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.UserSource != target.UserSource { + return false + } + } + + return true +} + +// Equal function +func (m *HmacAuth) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HmacAuth) + if !ok { + that2, ok := that.(HmacAuth) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + switch m.SecretStorage.(type) { + + case *HmacAuth_SecretRefs: + if _, ok := target.SecretStorage.(*HmacAuth_SecretRefs); !ok { + return false + } + + if h, ok := interface{}(m.GetSecretRefs()).(equality.Equalizer); ok { + if !h.Equal(target.GetSecretRefs()) { + return false + } + } else { + if !proto.Equal(m.GetSecretRefs(), target.GetSecretRefs()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.SecretStorage != target.SecretStorage { + return false + } + } + + switch m.ImplementationType.(type) { + + case *HmacAuth_ParametersInHeaders: + if _, ok := target.ImplementationType.(*HmacAuth_ParametersInHeaders); !ok { + return false + } + + if h, ok := interface{}(m.GetParametersInHeaders()).(equality.Equalizer); ok { + if !h.Equal(target.GetParametersInHeaders()) { + return false + } + } else { + if !proto.Equal(m.GetParametersInHeaders(), target.GetParametersInHeaders()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.ImplementationType != target.ImplementationType { + return false + } + } + + return true +} + +// Equal function +func (m *SecretRefList) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*SecretRefList) + if !ok { + that2, ok := that.(SecretRefList) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetSecretRefs()) != len(target.GetSecretRefs()) { + return false + } + for idx, v := range m.GetSecretRefs() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetSecretRefs()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetSecretRefs()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *HmacParametersInHeaders) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HmacParametersInHeaders) + if !ok { + that2, ok := that.(HmacParametersInHeaders) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + return true } @@ -525,6 +771,9 @@ func (m *OAuth2) Equal(that interface{}) bool { switch m.OauthType.(type) { case *OAuth2_OidcAuthorizationCode: + if _, ok := target.OauthType.(*OAuth2_OidcAuthorizationCode); !ok { + return false + } if h, ok := interface{}(m.GetOidcAuthorizationCode()).(equality.Equalizer); ok { if !h.Equal(target.GetOidcAuthorizationCode()) { @@ -537,6 +786,9 @@ func (m *OAuth2) Equal(that interface{}) bool { } case *OAuth2_AccessTokenValidation: + if _, ok := target.OauthType.(*OAuth2_AccessTokenValidation); !ok { + return false + } if h, ok := interface{}(m.GetAccessTokenValidation()).(equality.Equalizer); ok { if !h.Equal(target.GetAccessTokenValidation()) { @@ -548,6 +800,26 @@ func (m *OAuth2) Equal(that interface{}) bool { } } + case *OAuth2_Oauth2: + if _, ok := target.OauthType.(*OAuth2_Oauth2); !ok { + return false + } + + if h, ok := interface{}(m.GetOauth2()).(equality.Equalizer); ok { + if !h.Equal(target.GetOauth2()) { + return false + } + } else { + if !proto.Equal(m.GetOauth2(), target.GetOauth2()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.OauthType != target.OauthType { + return false + } } return true @@ -586,6 +858,14 @@ func (m *RedisOptions) Equal(that interface{}) bool { return false } + if strings.Compare(m.GetTlsCertMountPath(), target.GetTlsCertMountPath()) != 0 { + return false + } + + if m.GetSocketType() != target.GetSocketType() { + return false + } + return true } @@ -624,9 +904,22 @@ func (m *UserSession) Equal(that interface{}) bool { } } + if h, ok := interface{}(m.GetCipherConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetCipherConfig()) { + return false + } + } else { + if !proto.Equal(m.GetCipherConfig(), target.GetCipherConfig()) { + return false + } + } + switch m.Session.(type) { case *UserSession_Cookie: + if _, ok := target.Session.(*UserSession_Cookie); !ok { + return false + } if h, ok := interface{}(m.GetCookie()).(equality.Equalizer); ok { if !h.Equal(target.GetCookie()) { @@ -639,6 +932,9 @@ func (m *UserSession) Equal(that interface{}) bool { } case *UserSession_Redis: + if _, ok := target.Session.(*UserSession_Redis); !ok { + return false + } if h, ok := interface{}(m.GetRedis()).(equality.Equalizer); ok { if !h.Equal(target.GetRedis()) { @@ -650,6 +946,11 @@ func (m *UserSession) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.Session != target.Session { + return false + } } return true @@ -684,6 +985,16 @@ func (m *HeaderConfiguration) Equal(that interface{}) bool { return false } + if h, ok := interface{}(m.GetUseBearerSchemaForAuthorization()).(equality.Equalizer); ok { + if !h.Equal(target.GetUseBearerSchemaForAuthorization()) { + return false + } + } else { + if !proto.Equal(m.GetUseBearerSchemaForAuthorization(), target.GetUseBearerSchemaForAuthorization()) { + return false + } + } + return true } @@ -786,6 +1097,14 @@ func (m *DiscoveryOverride) Equal(that interface{}) bool { } + if strings.Compare(m.GetRevocationEndpoint(), target.GetRevocationEndpoint()) != 0 { + return false + } + + if strings.Compare(m.GetEndSessionEndpoint(), target.GetEndSessionEndpoint()) != 0 { + return false + } + return true } @@ -813,6 +1132,9 @@ func (m *JwksOnDemandCacheRefreshPolicy) Equal(that interface{}) bool { switch m.Policy.(type) { case *JwksOnDemandCacheRefreshPolicy_Never: + if _, ok := target.Policy.(*JwksOnDemandCacheRefreshPolicy_Never); !ok { + return false + } if h, ok := interface{}(m.GetNever()).(equality.Equalizer); ok { if !h.Equal(target.GetNever()) { @@ -825,6 +1147,9 @@ func (m *JwksOnDemandCacheRefreshPolicy) Equal(that interface{}) bool { } case *JwksOnDemandCacheRefreshPolicy_Always: + if _, ok := target.Policy.(*JwksOnDemandCacheRefreshPolicy_Always); !ok { + return false + } if h, ok := interface{}(m.GetAlways()).(equality.Equalizer); ok { if !h.Equal(target.GetAlways()) { @@ -837,23 +1162,175 @@ func (m *JwksOnDemandCacheRefreshPolicy) Equal(that interface{}) bool { } case *JwksOnDemandCacheRefreshPolicy_MaxIdpReqPerPollingInterval: + if _, ok := target.Policy.(*JwksOnDemandCacheRefreshPolicy_MaxIdpReqPerPollingInterval); !ok { + return false + } if m.GetMaxIdpReqPerPollingInterval() != target.GetMaxIdpReqPerPollingInterval() { return false } + default: + // m is nil but target is not nil + if m.Policy != target.Policy { + return false + } } return true } // Equal function -func (m *OidcAuthorizationCode) Equal(that interface{}) bool { +func (m *AutoMapFromMetadata) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*OidcAuthorizationCode) + target, ok := that.(*AutoMapFromMetadata) + if !ok { + that2, ok := that.(AutoMapFromMetadata) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetNamespace(), target.GetNamespace()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *EndSessionProperties) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*EndSessionProperties) + if !ok { + that2, ok := that.(EndSessionProperties) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetMethodType() != target.GetMethodType() { + return false + } + + return true +} + +// Equal function +func (m *ClaimToHeader) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ClaimToHeader) + if !ok { + that2, ok := that.(ClaimToHeader) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetClaim(), target.GetClaim()) != 0 { + return false + } + + if strings.Compare(m.GetHeader(), target.GetHeader()) != 0 { + return false + } + + if m.GetAppend() != target.GetAppend() { + return false + } + + return true +} + +// Equal function +func (m *Azure) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Azure) + if !ok { + that2, ok := that.(Azure) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetClientId(), target.GetClientId()) != 0 { + return false + } + + if strings.Compare(m.GetTenantId(), target.GetTenantId()) != 0 { + return false + } + + if h, ok := interface{}(m.GetClientSecret()).(equality.Equalizer); ok { + if !h.Equal(target.GetClientSecret()) { + return false + } + } else { + if !proto.Equal(m.GetClientSecret(), target.GetClientSecret()) { + return false + } + } + + if h, ok := interface{}(m.GetClaimsCachingOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetClaimsCachingOptions()) { + return false + } + } else { + if !proto.Equal(m.GetClaimsCachingOptions(), target.GetClaimsCachingOptions()) { + return false + } + } + + return true +} + +// Equal function +func (m *OidcAuthorizationCode) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*OidcAuthorizationCode) if !ok { that2, ok := that.(OidcAuthorizationCode) if ok { @@ -985,106 +1462,146 @@ func (m *OidcAuthorizationCode) Equal(that interface{}) bool { } } - return true -} + if strings.Compare(m.GetSessionIdHeaderName(), target.GetSessionIdHeaderName()) != 0 { + return false + } -// Equal function -func (m *AccessTokenValidation) Equal(that interface{}) bool { - if that == nil { - return m == nil + if m.GetParseCallbackPathAsRegex() != target.GetParseCallbackPathAsRegex() { + return false } - target, ok := that.(*AccessTokenValidation) - if !ok { - that2, ok := that.(AccessTokenValidation) - if ok { - target = &that2 - } else { + if h, ok := interface{}(m.GetAutoMapFromMetadata()).(equality.Equalizer); ok { + if !h.Equal(target.GetAutoMapFromMetadata()) { + return false + } + } else { + if !proto.Equal(m.GetAutoMapFromMetadata(), target.GetAutoMapFromMetadata()) { return false } } - if target == nil { - return m == nil - } else if m == nil { - return false + + if h, ok := interface{}(m.GetEndSessionProperties()).(equality.Equalizer); ok { + if !h.Equal(target.GetEndSessionProperties()) { + return false + } + } else { + if !proto.Equal(m.GetEndSessionProperties(), target.GetEndSessionProperties()) { + return false + } } - if strings.Compare(m.GetUserinfoUrl(), target.GetUserinfoUrl()) != 0 { + if len(m.GetDynamicMetadataFromClaims()) != len(target.GetDynamicMetadataFromClaims()) { return false } + for k, v := range m.GetDynamicMetadataFromClaims() { - if h, ok := interface{}(m.GetCacheTimeout()).(equality.Equalizer); ok { - if !h.Equal(target.GetCacheTimeout()) { + if strings.Compare(v, target.GetDynamicMetadataFromClaims()[k]) != 0 { + return false + } + + } + + if h, ok := interface{}(m.GetDisableClientSecret()).(equality.Equalizer); ok { + if !h.Equal(target.GetDisableClientSecret()) { return false } } else { - if !proto.Equal(m.GetCacheTimeout(), target.GetCacheTimeout()) { + if !proto.Equal(m.GetDisableClientSecret(), target.GetDisableClientSecret()) { return false } } - switch m.ValidationType.(type) { - - case *AccessTokenValidation_IntrospectionUrl: + if h, ok := interface{}(m.GetAccessToken()).(equality.Equalizer); ok { + if !h.Equal(target.GetAccessToken()) { + return false + } + } else { + if !proto.Equal(m.GetAccessToken(), target.GetAccessToken()) { + return false + } + } - if strings.Compare(m.GetIntrospectionUrl(), target.GetIntrospectionUrl()) != 0 { + if h, ok := interface{}(m.GetIdentityToken()).(equality.Equalizer); ok { + if !h.Equal(target.GetIdentityToken()) { + return false + } + } else { + if !proto.Equal(m.GetIdentityToken(), target.GetIdentityToken()) { return false } + } - case *AccessTokenValidation_Jwt: + if h, ok := interface{}(m.GetClientAuthentication()).(equality.Equalizer); ok { + if !h.Equal(target.GetClientAuthentication()) { + return false + } + } else { + if !proto.Equal(m.GetClientAuthentication(), target.GetClientAuthentication()) { + return false + } + } - if h, ok := interface{}(m.GetJwt()).(equality.Equalizer); ok { - if !h.Equal(target.GetJwt()) { - return false - } - } else { - if !proto.Equal(m.GetJwt(), target.GetJwt()) { - return false - } + if h, ok := interface{}(m.GetFrontChannelLogout()).(equality.Equalizer); ok { + if !h.Equal(target.GetFrontChannelLogout()) { + return false + } + } else { + if !proto.Equal(m.GetFrontChannelLogout(), target.GetFrontChannelLogout()) { + return false } + } - case *AccessTokenValidation_Introspection: + switch m.Provider.(type) { - if h, ok := interface{}(m.GetIntrospection()).(equality.Equalizer); ok { - if !h.Equal(target.GetIntrospection()) { + case *OidcAuthorizationCode_Default_: + if _, ok := target.Provider.(*OidcAuthorizationCode_Default_); !ok { + return false + } + + if h, ok := interface{}(m.GetDefault()).(equality.Equalizer); ok { + if !h.Equal(target.GetDefault()) { return false } } else { - if !proto.Equal(m.GetIntrospection(), target.GetIntrospection()) { + if !proto.Equal(m.GetDefault(), target.GetDefault()) { return false } } - } - - switch m.ScopeValidation.(type) { - - case *AccessTokenValidation_RequiredScopes: + case *OidcAuthorizationCode_Azure: + if _, ok := target.Provider.(*OidcAuthorizationCode_Azure); !ok { + return false + } - if h, ok := interface{}(m.GetRequiredScopes()).(equality.Equalizer); ok { - if !h.Equal(target.GetRequiredScopes()) { + if h, ok := interface{}(m.GetAzure()).(equality.Equalizer); ok { + if !h.Equal(target.GetAzure()) { return false } } else { - if !proto.Equal(m.GetRequiredScopes(), target.GetRequiredScopes()) { + if !proto.Equal(m.GetAzure(), target.GetAzure()) { return false } } + default: + // m is nil but target is not nil + if m.Provider != target.Provider { + return false + } } return true } // Equal function -func (m *OauthSecret) Equal(that interface{}) bool { +func (m *PlainOAuth2) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*OauthSecret) + target, ok := that.(*PlainOAuth2) if !ok { - that2, ok := that.(OauthSecret) + that2, ok := that.(PlainOAuth2) if ok { target = &that2 } else { @@ -1097,95 +1614,1143 @@ func (m *OauthSecret) Equal(that interface{}) bool { return false } - if strings.Compare(m.GetClientSecret(), target.GetClientSecret()) != 0 { + if strings.Compare(m.GetClientId(), target.GetClientId()) != 0 { return false } - return true -} - -// Equal function -func (m *ApiKeyAuth) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ApiKeyAuth) - if !ok { - that2, ok := that.(ApiKeyAuth) - if ok { - target = &that2 - } else { + if h, ok := interface{}(m.GetClientSecretRef()).(equality.Equalizer); ok { + if !h.Equal(target.GetClientSecretRef()) { + return false + } + } else { + if !proto.Equal(m.GetClientSecretRef(), target.GetClientSecretRef()) { return false } - } - if target == nil { - return m == nil - } else if m == nil { - return false } - if len(m.GetLabelSelector()) != len(target.GetLabelSelector()) { + if len(m.GetAuthEndpointQueryParams()) != len(target.GetAuthEndpointQueryParams()) { return false } - for k, v := range m.GetLabelSelector() { + for k, v := range m.GetAuthEndpointQueryParams() { - if strings.Compare(v, target.GetLabelSelector()[k]) != 0 { + if strings.Compare(v, target.GetAuthEndpointQueryParams()[k]) != 0 { return false } } - if len(m.GetApiKeySecretRefs()) != len(target.GetApiKeySecretRefs()) { + if strings.Compare(m.GetAppUrl(), target.GetAppUrl()) != 0 { return false } - for idx, v := range m.GetApiKeySecretRefs() { - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetApiKeySecretRefs()[idx]) { - return false - } + if strings.Compare(m.GetCallbackPath(), target.GetCallbackPath()) != 0 { + return false + } + + if len(m.GetScopes()) != len(target.GetScopes()) { + return false + } + for idx, v := range m.GetScopes() { + + if strings.Compare(v, target.GetScopes()[idx]) != 0 { + return false + } + + } + + if h, ok := interface{}(m.GetSession()).(equality.Equalizer); ok { + if !h.Equal(target.GetSession()) { + return false + } + } else { + if !proto.Equal(m.GetSession(), target.GetSession()) { + return false + } + } + + if strings.Compare(m.GetLogoutPath(), target.GetLogoutPath()) != 0 { + return false + } + + if len(m.GetTokenEndpointQueryParams()) != len(target.GetTokenEndpointQueryParams()) { + return false + } + for k, v := range m.GetTokenEndpointQueryParams() { + + if strings.Compare(v, target.GetTokenEndpointQueryParams()[k]) != 0 { + return false + } + + } + + if strings.Compare(m.GetAfterLogoutUrl(), target.GetAfterLogoutUrl()) != 0 { + return false + } + + if strings.Compare(m.GetAuthEndpoint(), target.GetAuthEndpoint()) != 0 { + return false + } + + if strings.Compare(m.GetTokenEndpoint(), target.GetTokenEndpoint()) != 0 { + return false + } + + if strings.Compare(m.GetRevocationEndpoint(), target.GetRevocationEndpoint()) != 0 { + return false + } + + if h, ok := interface{}(m.GetDisableClientSecret()).(equality.Equalizer); ok { + if !h.Equal(target.GetDisableClientSecret()) { + return false + } + } else { + if !proto.Equal(m.GetDisableClientSecret(), target.GetDisableClientSecret()) { + return false + } + } + + return true +} + +// Equal function +func (m *JwtValidation) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*JwtValidation) + if !ok { + that2, ok := that.(JwtValidation) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetIssuer(), target.GetIssuer()) != 0 { + return false + } + + switch m.JwksSourceSpecifier.(type) { + + case *JwtValidation_RemoteJwks_: + if _, ok := target.JwksSourceSpecifier.(*JwtValidation_RemoteJwks_); !ok { + return false + } + + if h, ok := interface{}(m.GetRemoteJwks()).(equality.Equalizer); ok { + if !h.Equal(target.GetRemoteJwks()) { + return false + } + } else { + if !proto.Equal(m.GetRemoteJwks(), target.GetRemoteJwks()) { + return false + } + } + + case *JwtValidation_LocalJwks_: + if _, ok := target.JwksSourceSpecifier.(*JwtValidation_LocalJwks_); !ok { + return false + } + + if h, ok := interface{}(m.GetLocalJwks()).(equality.Equalizer); ok { + if !h.Equal(target.GetLocalJwks()) { + return false + } + } else { + if !proto.Equal(m.GetLocalJwks(), target.GetLocalJwks()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.JwksSourceSpecifier != target.JwksSourceSpecifier { + return false + } + } + + return true +} + +// Equal function +func (m *IntrospectionValidation) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*IntrospectionValidation) + if !ok { + that2, ok := that.(IntrospectionValidation) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetIntrospectionUrl(), target.GetIntrospectionUrl()) != 0 { + return false + } + + if strings.Compare(m.GetClientId(), target.GetClientId()) != 0 { + return false + } + + if h, ok := interface{}(m.GetClientSecretRef()).(equality.Equalizer); ok { + if !h.Equal(target.GetClientSecretRef()) { + return false + } + } else { + if !proto.Equal(m.GetClientSecretRef(), target.GetClientSecretRef()) { + return false + } + } + + if strings.Compare(m.GetUserIdAttributeName(), target.GetUserIdAttributeName()) != 0 { + return false + } + + if h, ok := interface{}(m.GetDisableClientSecret()).(equality.Equalizer); ok { + if !h.Equal(target.GetDisableClientSecret()) { + return false + } + } else { + if !proto.Equal(m.GetDisableClientSecret(), target.GetDisableClientSecret()) { + return false + } + } + + return true +} + +// Equal function +func (m *AccessTokenValidation) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AccessTokenValidation) + if !ok { + that2, ok := that.(AccessTokenValidation) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetUserinfoUrl(), target.GetUserinfoUrl()) != 0 { + return false + } + + if h, ok := interface{}(m.GetCacheTimeout()).(equality.Equalizer); ok { + if !h.Equal(target.GetCacheTimeout()) { + return false + } + } else { + if !proto.Equal(m.GetCacheTimeout(), target.GetCacheTimeout()) { + return false + } + } + + if len(m.GetDynamicMetadataFromClaims()) != len(target.GetDynamicMetadataFromClaims()) { + return false + } + for k, v := range m.GetDynamicMetadataFromClaims() { + + if strings.Compare(v, target.GetDynamicMetadataFromClaims()[k]) != 0 { + return false + } + + } + + if len(m.GetClaimsToHeaders()) != len(target.GetClaimsToHeaders()) { + return false + } + for idx, v := range m.GetClaimsToHeaders() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetClaimsToHeaders()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetClaimsToHeaders()[idx]) { + return false + } + } + + } + + switch m.ValidationType.(type) { + + case *AccessTokenValidation_IntrospectionUrl: + if _, ok := target.ValidationType.(*AccessTokenValidation_IntrospectionUrl); !ok { + return false + } + + if strings.Compare(m.GetIntrospectionUrl(), target.GetIntrospectionUrl()) != 0 { + return false + } + + case *AccessTokenValidation_Jwt: + if _, ok := target.ValidationType.(*AccessTokenValidation_Jwt); !ok { + return false + } + + if h, ok := interface{}(m.GetJwt()).(equality.Equalizer); ok { + if !h.Equal(target.GetJwt()) { + return false + } + } else { + if !proto.Equal(m.GetJwt(), target.GetJwt()) { + return false + } + } + + case *AccessTokenValidation_Introspection: + if _, ok := target.ValidationType.(*AccessTokenValidation_Introspection); !ok { + return false + } + + if h, ok := interface{}(m.GetIntrospection()).(equality.Equalizer); ok { + if !h.Equal(target.GetIntrospection()) { + return false + } + } else { + if !proto.Equal(m.GetIntrospection(), target.GetIntrospection()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.ValidationType != target.ValidationType { + return false + } + } + + switch m.ScopeValidation.(type) { + + case *AccessTokenValidation_RequiredScopes: + if _, ok := target.ScopeValidation.(*AccessTokenValidation_RequiredScopes); !ok { + return false + } + + if h, ok := interface{}(m.GetRequiredScopes()).(equality.Equalizer); ok { + if !h.Equal(target.GetRequiredScopes()) { + return false + } + } else { + if !proto.Equal(m.GetRequiredScopes(), target.GetRequiredScopes()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.ScopeValidation != target.ScopeValidation { + return false + } + } + + switch m.Provider.(type) { + + case *AccessTokenValidation_Default_: + if _, ok := target.Provider.(*AccessTokenValidation_Default_); !ok { + return false + } + + if h, ok := interface{}(m.GetDefault()).(equality.Equalizer); ok { + if !h.Equal(target.GetDefault()) { + return false + } + } else { + if !proto.Equal(m.GetDefault(), target.GetDefault()) { + return false + } + } + + case *AccessTokenValidation_Azure: + if _, ok := target.Provider.(*AccessTokenValidation_Azure); !ok { + return false + } + + if h, ok := interface{}(m.GetAzure()).(equality.Equalizer); ok { + if !h.Equal(target.GetAzure()) { + return false + } + } else { + if !proto.Equal(m.GetAzure(), target.GetAzure()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.Provider != target.Provider { + return false + } + } + + return true +} + +// Equal function +func (m *OauthSecret) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*OauthSecret) + if !ok { + that2, ok := that.(OauthSecret) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetClientSecret(), target.GetClientSecret()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *ApiKeyAuth) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ApiKeyAuth) + if !ok { + that2, ok := that.(ApiKeyAuth) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetLabelSelector()) != len(target.GetLabelSelector()) { + return false + } + for k, v := range m.GetLabelSelector() { + + if strings.Compare(v, target.GetLabelSelector()[k]) != 0 { + return false + } + + } + + if len(m.GetApiKeySecretRefs()) != len(target.GetApiKeySecretRefs()) { + return false + } + for idx, v := range m.GetApiKeySecretRefs() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetApiKeySecretRefs()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetApiKeySecretRefs()[idx]) { + return false + } + } + + } + + if strings.Compare(m.GetHeaderName(), target.GetHeaderName()) != 0 { + return false + } + + if len(m.GetHeadersFromMetadata()) != len(target.GetHeadersFromMetadata()) { + return false + } + for k, v := range m.GetHeadersFromMetadata() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetHeadersFromMetadata()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetHeadersFromMetadata()[k]) { + return false + } + } + + } + + if len(m.GetHeadersFromMetadataEntry()) != len(target.GetHeadersFromMetadataEntry()) { + return false + } + for k, v := range m.GetHeadersFromMetadataEntry() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetHeadersFromMetadataEntry()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetHeadersFromMetadataEntry()[k]) { + return false + } + } + + } + + if m.GetSkipMetadataValidation() != target.GetSkipMetadataValidation() { + return false + } + + switch m.StorageBackend.(type) { + + case *ApiKeyAuth_K8SSecretApikeyStorage: + if _, ok := target.StorageBackend.(*ApiKeyAuth_K8SSecretApikeyStorage); !ok { + return false + } + + if h, ok := interface{}(m.GetK8SSecretApikeyStorage()).(equality.Equalizer); ok { + if !h.Equal(target.GetK8SSecretApikeyStorage()) { + return false + } + } else { + if !proto.Equal(m.GetK8SSecretApikeyStorage(), target.GetK8SSecretApikeyStorage()) { + return false + } + } + + case *ApiKeyAuth_AerospikeApikeyStorage: + if _, ok := target.StorageBackend.(*ApiKeyAuth_AerospikeApikeyStorage); !ok { + return false + } + + if h, ok := interface{}(m.GetAerospikeApikeyStorage()).(equality.Equalizer); ok { + if !h.Equal(target.GetAerospikeApikeyStorage()) { + return false + } + } else { + if !proto.Equal(m.GetAerospikeApikeyStorage(), target.GetAerospikeApikeyStorage()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.StorageBackend != target.StorageBackend { + return false + } + } + + return true +} + +// Equal function +func (m *K8SSecretApiKeyStorage) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*K8SSecretApiKeyStorage) + if !ok { + that2, ok := that.(K8SSecretApiKeyStorage) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetLabelSelector()) != len(target.GetLabelSelector()) { + return false + } + for k, v := range m.GetLabelSelector() { + + if strings.Compare(v, target.GetLabelSelector()[k]) != 0 { + return false + } + + } + + if len(m.GetApiKeySecretRefs()) != len(target.GetApiKeySecretRefs()) { + return false + } + for idx, v := range m.GetApiKeySecretRefs() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetApiKeySecretRefs()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetApiKeySecretRefs()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *AerospikeApiKeyStorage) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AerospikeApiKeyStorage) + if !ok { + that2, ok := that.(AerospikeApiKeyStorage) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetHostname(), target.GetHostname()) != 0 { + return false + } + + if strings.Compare(m.GetNamespace(), target.GetNamespace()) != 0 { + return false + } + + if strings.Compare(m.GetSet(), target.GetSet()) != 0 { + return false + } + + if m.GetPort() != target.GetPort() { + return false + } + + if m.GetBatchSize() != target.GetBatchSize() { + return false + } + + if h, ok := interface{}(m.GetReadModeSc()).(equality.Equalizer); ok { + if !h.Equal(target.GetReadModeSc()) { + return false + } + } else { + if !proto.Equal(m.GetReadModeSc(), target.GetReadModeSc()) { + return false + } + } + + if h, ok := interface{}(m.GetReadModeAp()).(equality.Equalizer); ok { + if !h.Equal(target.GetReadModeAp()) { + return false + } + } else { + if !proto.Equal(m.GetReadModeAp(), target.GetReadModeAp()) { + return false + } + } + + if strings.Compare(m.GetNodeTlsName(), target.GetNodeTlsName()) != 0 { + return false + } + + if strings.Compare(m.GetCertPath(), target.GetCertPath()) != 0 { + return false + } + + if strings.Compare(m.GetKeyPath(), target.GetKeyPath()) != 0 { + return false + } + + if m.GetAllowInsecure() != target.GetAllowInsecure() { + return false + } + + if strings.Compare(m.GetRootCaPath(), target.GetRootCaPath()) != 0 { + return false + } + + if strings.Compare(m.GetTlsVersion(), target.GetTlsVersion()) != 0 { + return false + } + + if len(m.GetTlsCurveGroups()) != len(target.GetTlsCurveGroups()) { + return false + } + for idx, v := range m.GetTlsCurveGroups() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetTlsCurveGroups()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetTlsCurveGroups()[idx]) { + return false + } + } + + } + + if len(m.GetLabelSelector()) != len(target.GetLabelSelector()) { + return false + } + for k, v := range m.GetLabelSelector() { + + if strings.Compare(v, target.GetLabelSelector()[k]) != 0 { + return false + } + + } + + switch m.CommitLevel.(type) { + + case *AerospikeApiKeyStorage_CommitAll: + if _, ok := target.CommitLevel.(*AerospikeApiKeyStorage_CommitAll); !ok { + return false + } + + if m.GetCommitAll() != target.GetCommitAll() { + return false + } + + case *AerospikeApiKeyStorage_CommitMaster: + if _, ok := target.CommitLevel.(*AerospikeApiKeyStorage_CommitMaster); !ok { + return false + } + + if m.GetCommitMaster() != target.GetCommitMaster() { + return false + } + + default: + // m is nil but target is not nil + if m.CommitLevel != target.CommitLevel { + return false + } + } + + return true +} + +// Equal function +func (m *ServerDefaultApiKeyStorage) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ServerDefaultApiKeyStorage) + if !ok { + that2, ok := that.(ServerDefaultApiKeyStorage) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *ApiKey) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ApiKey) + if !ok { + that2, ok := that.(ApiKey) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetApiKey(), target.GetApiKey()) != 0 { + return false + } + + if len(m.GetLabels()) != len(target.GetLabels()) { + return false + } + for idx, v := range m.GetLabels() { + + if strings.Compare(v, target.GetLabels()[idx]) != 0 { + return false + } + + } + + if len(m.GetMetadata()) != len(target.GetMetadata()) { + return false + } + for k, v := range m.GetMetadata() { + + if strings.Compare(v, target.GetMetadata()[k]) != 0 { + return false + } + + } + + if strings.Compare(m.GetUuid(), target.GetUuid()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *ApiKeySecret) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ApiKeySecret) + if !ok { + that2, ok := that.(ApiKeySecret) + if ok { + target = &that2 } else { - if !proto.Equal(v, target.GetApiKeySecretRefs()[idx]) { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetApiKey(), target.GetApiKey()) != 0 { + return false + } + + if len(m.GetLabels()) != len(target.GetLabels()) { + return false + } + for idx, v := range m.GetLabels() { + + if strings.Compare(v, target.GetLabels()[idx]) != 0 { + return false + } + + } + + if len(m.GetMetadata()) != len(target.GetMetadata()) { + return false + } + for k, v := range m.GetMetadata() { + + if strings.Compare(v, target.GetMetadata()[k]) != 0 { + return false + } + + } + + return true +} + +// Equal function +func (m *OpaAuth) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*OpaAuth) + if !ok { + that2, ok := that.(OpaAuth) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetModules()) != len(target.GetModules()) { + return false + } + for idx, v := range m.GetModules() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetModules()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetModules()[idx]) { return false } } - + + } + + if strings.Compare(m.GetQuery(), target.GetQuery()) != 0 { + return false + } + + if h, ok := interface{}(m.GetOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetOptions()) { + return false + } + } else { + if !proto.Equal(m.GetOptions(), target.GetOptions()) { + return false + } + } + + return true +} + +// Equal function +func (m *OpaAuthOptions) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*OpaAuthOptions) + if !ok { + that2, ok := that.(OpaAuthOptions) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetFastInputConversion() != target.GetFastInputConversion() { + return false + } + + if m.GetReturnDecisionReason() != target.GetReturnDecisionReason() { + return false + } + + return true +} + +// Equal function +func (m *OpaServerAuth) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*OpaServerAuth) + if !ok { + that2, ok := that.(OpaServerAuth) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetPackage(), target.GetPackage()) != 0 { + return false + } + + if strings.Compare(m.GetRuleName(), target.GetRuleName()) != 0 { + return false + } + + if strings.Compare(m.GetServerAddr(), target.GetServerAddr()) != 0 { + return false + } + + if h, ok := interface{}(m.GetOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetOptions()) { + return false + } + } else { + if !proto.Equal(m.GetOptions(), target.GetOptions()) { + return false + } + } + + return true +} + +// Equal function +func (m *Ldap) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Ldap) + if !ok { + that2, ok := that.(Ldap) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetAddress(), target.GetAddress()) != 0 { + return false + } + + if strings.Compare(m.GetUserDnTemplate(), target.GetUserDnTemplate()) != 0 { + return false + } + + if strings.Compare(m.GetMembershipAttributeName(), target.GetMembershipAttributeName()) != 0 { + return false + } + + if len(m.GetAllowedGroups()) != len(target.GetAllowedGroups()) { + return false + } + for idx, v := range m.GetAllowedGroups() { + + if strings.Compare(v, target.GetAllowedGroups()[idx]) != 0 { + return false + } + + } + + if h, ok := interface{}(m.GetPool()).(equality.Equalizer); ok { + if !h.Equal(target.GetPool()) { + return false + } + } else { + if !proto.Equal(m.GetPool(), target.GetPool()) { + return false + } + } + + if strings.Compare(m.GetSearchFilter(), target.GetSearchFilter()) != 0 { + return false + } + + if m.GetDisableGroupChecking() != target.GetDisableGroupChecking() { + return false + } + + if h, ok := interface{}(m.GetGroupLookupSettings()).(equality.Equalizer); ok { + if !h.Equal(target.GetGroupLookupSettings()) { + return false + } + } else { + if !proto.Equal(m.GetGroupLookupSettings(), target.GetGroupLookupSettings()) { + return false + } } - if strings.Compare(m.GetHeaderName(), target.GetHeaderName()) != 0 { - return false + return true +} + +// Equal function +func (m *LdapServiceAccount) Equal(that interface{}) bool { + if that == nil { + return m == nil } - if len(m.GetHeadersFromMetadata()) != len(target.GetHeadersFromMetadata()) { + target, ok := that.(*LdapServiceAccount) + if !ok { + that2, ok := that.(LdapServiceAccount) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { return false } - for k, v := range m.GetHeadersFromMetadata() { - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetHeadersFromMetadata()[k]) { - return false - } - } else { - if !proto.Equal(v, target.GetHeadersFromMetadata()[k]) { - return false - } + if h, ok := interface{}(m.GetCredentialsSecretRef()).(equality.Equalizer); ok { + if !h.Equal(target.GetCredentialsSecretRef()) { + return false } + } else { + if !proto.Equal(m.GetCredentialsSecretRef(), target.GetCredentialsSecretRef()) { + return false + } + } + if m.GetCheckGroupsWithServiceAccount() != target.GetCheckGroupsWithServiceAccount() { + return false } return true } // Equal function -func (m *ApiKeySecret) Equal(that interface{}) bool { +func (m *PassThroughAuth) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*ApiKeySecret) + target, ok := that.(*PassThroughAuth) if !ok { - that2, ok := that.(ApiKeySecret) + that2, ok := that.(PassThroughAuth) if ok { target = &that2 } else { @@ -1198,48 +2763,115 @@ func (m *ApiKeySecret) Equal(that interface{}) bool { return false } - if m.GetGenerateApiKey() != target.GetGenerateApiKey() { - return false + if h, ok := interface{}(m.GetConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetConfig()) { + return false + } + } else { + if !proto.Equal(m.GetConfig(), target.GetConfig()) { + return false + } } - if strings.Compare(m.GetApiKey(), target.GetApiKey()) != 0 { + if m.GetFailureModeAllow() != target.GetFailureModeAllow() { return false } - if len(m.GetLabels()) != len(target.GetLabels()) { - return false - } - for idx, v := range m.GetLabels() { + switch m.Protocol.(type) { - if strings.Compare(v, target.GetLabels()[idx]) != 0 { + case *PassThroughAuth_Grpc: + if _, ok := target.Protocol.(*PassThroughAuth_Grpc); !ok { + return false + } + + if h, ok := interface{}(m.GetGrpc()).(equality.Equalizer); ok { + if !h.Equal(target.GetGrpc()) { + return false + } + } else { + if !proto.Equal(m.GetGrpc(), target.GetGrpc()) { + return false + } + } + + case *PassThroughAuth_Http: + if _, ok := target.Protocol.(*PassThroughAuth_Http); !ok { + return false + } + + if h, ok := interface{}(m.GetHttp()).(equality.Equalizer); ok { + if !h.Equal(target.GetHttp()) { + return false + } + } else { + if !proto.Equal(m.GetHttp(), target.GetHttp()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.Protocol != target.Protocol { return false } + } + + return true +} +// Equal function +func (m *BackoffStrategy) Equal(that interface{}) bool { + if that == nil { + return m == nil } - if len(m.GetMetadata()) != len(target.GetMetadata()) { + target, ok := that.(*BackoffStrategy) + if !ok { + that2, ok := that.(BackoffStrategy) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { return false } - for k, v := range m.GetMetadata() { - if strings.Compare(v, target.GetMetadata()[k]) != 0 { + if h, ok := interface{}(m.GetBaseInterval()).(equality.Equalizer); ok { + if !h.Equal(target.GetBaseInterval()) { return false } + } else { + if !proto.Equal(m.GetBaseInterval(), target.GetBaseInterval()) { + return false + } + } + if h, ok := interface{}(m.GetMaxInterval()).(equality.Equalizer); ok { + if !h.Equal(target.GetMaxInterval()) { + return false + } + } else { + if !proto.Equal(m.GetMaxInterval(), target.GetMaxInterval()) { + return false + } } return true } // Equal function -func (m *OpaAuth) Equal(that interface{}) bool { +func (m *RetryPolicy) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*OpaAuth) + target, ok := that.(*RetryPolicy) if !ok { - that2, ok := that.(OpaAuth) + that2, ok := that.(RetryPolicy) if ok { target = &that2 } else { @@ -1252,39 +2884,52 @@ func (m *OpaAuth) Equal(that interface{}) bool { return false } - if len(m.GetModules()) != len(target.GetModules()) { - return false + if h, ok := interface{}(m.GetNumRetries()).(equality.Equalizer); ok { + if !h.Equal(target.GetNumRetries()) { + return false + } + } else { + if !proto.Equal(m.GetNumRetries(), target.GetNumRetries()) { + return false + } } - for idx, v := range m.GetModules() { - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetModules()[idx]) { + switch m.Strategy.(type) { + + case *RetryPolicy_RetryBackOff: + if _, ok := target.Strategy.(*RetryPolicy_RetryBackOff); !ok { + return false + } + + if h, ok := interface{}(m.GetRetryBackOff()).(equality.Equalizer); ok { + if !h.Equal(target.GetRetryBackOff()) { return false } } else { - if !proto.Equal(v, target.GetModules()[idx]) { + if !proto.Equal(m.GetRetryBackOff(), target.GetRetryBackOff()) { return false } } - } - - if strings.Compare(m.GetQuery(), target.GetQuery()) != 0 { - return false + default: + // m is nil but target is not nil + if m.Strategy != target.Strategy { + return false + } } return true } // Equal function -func (m *Ldap) Equal(that interface{}) bool { +func (m *PassThroughGrpc) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*Ldap) + target, ok := that.(*PassThroughGrpc) if !ok { - that2, ok := that.(Ldap) + that2, ok := that.(PassThroughGrpc) if ok { target = &that2 } else { @@ -1301,31 +2946,100 @@ func (m *Ldap) Equal(that interface{}) bool { return false } - if strings.Compare(m.GetUserDnTemplate(), target.GetUserDnTemplate()) != 0 { - return false + if h, ok := interface{}(m.GetConnectionTimeout()).(equality.Equalizer); ok { + if !h.Equal(target.GetConnectionTimeout()) { + return false + } + } else { + if !proto.Equal(m.GetConnectionTimeout(), target.GetConnectionTimeout()) { + return false + } } - if strings.Compare(m.GetMembershipAttributeName(), target.GetMembershipAttributeName()) != 0 { + if h, ok := interface{}(m.GetTlsConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetTlsConfig()) { + return false + } + } else { + if !proto.Equal(m.GetTlsConfig(), target.GetTlsConfig()) { + return false + } + } + + if h, ok := interface{}(m.GetRetryPolicy()).(equality.Equalizer); ok { + if !h.Equal(target.GetRetryPolicy()) { + return false + } + } else { + if !proto.Equal(m.GetRetryPolicy(), target.GetRetryPolicy()) { + return false + } + } + + return true +} + +// Equal function +func (m *PassThroughHttp) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*PassThroughHttp) + if !ok { + that2, ok := that.(PassThroughHttp) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { return false } - if len(m.GetAllowedGroups()) != len(target.GetAllowedGroups()) { + if strings.Compare(m.GetUrl(), target.GetUrl()) != 0 { return false } - for idx, v := range m.GetAllowedGroups() { - if strings.Compare(v, target.GetAllowedGroups()[idx]) != 0 { + if h, ok := interface{}(m.GetRequest()).(equality.Equalizer); ok { + if !h.Equal(target.GetRequest()) { return false } + } else { + if !proto.Equal(m.GetRequest(), target.GetRequest()) { + return false + } + } + if h, ok := interface{}(m.GetResponse()).(equality.Equalizer); ok { + if !h.Equal(target.GetResponse()) { + return false + } + } else { + if !proto.Equal(m.GetResponse(), target.GetResponse()) { + return false + } } - if h, ok := interface{}(m.GetPool()).(equality.Equalizer); ok { - if !h.Equal(target.GetPool()) { + if h, ok := interface{}(m.GetConnectionTimeout()).(equality.Equalizer); ok { + if !h.Equal(target.GetConnectionTimeout()) { return false } } else { - if !proto.Equal(m.GetPool(), target.GetPool()) { + if !proto.Equal(m.GetConnectionTimeout(), target.GetConnectionTimeout()) { + return false + } + } + + if h, ok := interface{}(m.GetTlsConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetTlsConfig()) { + return false + } + } else { + if !proto.Equal(m.GetTlsConfig(), target.GetTlsConfig()) { return false } } @@ -1334,14 +3048,14 @@ func (m *Ldap) Equal(that interface{}) bool { } // Equal function -func (m *PassThroughAuth) Equal(that interface{}) bool { +func (m *PassThroughGrpcTLSConfig) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*PassThroughAuth) + target, ok := that.(*PassThroughGrpcTLSConfig) if !ok { - that2, ok := that.(PassThroughAuth) + that2, ok := that.(PassThroughGrpcTLSConfig) if ok { target = &that2 } else { @@ -1354,44 +3068,82 @@ func (m *PassThroughAuth) Equal(that interface{}) bool { return false } - if h, ok := interface{}(m.GetConfig()).(equality.Equalizer); ok { - if !h.Equal(target.GetConfig()) { + if h, ok := interface{}(m.GetSecretRef()).(equality.Equalizer); ok { + if !h.Equal(target.GetSecretRef()) { return false } } else { - if !proto.Equal(m.GetConfig(), target.GetConfig()) { + if !proto.Equal(m.GetSecretRef(), target.GetSecretRef()) { return false } } - switch m.Protocol.(type) { + if h, ok := interface{}(m.GetSslParams()).(equality.Equalizer); ok { + if !h.Equal(target.GetSslParams()) { + return false + } + } else { + if !proto.Equal(m.GetSslParams(), target.GetSslParams()) { + return false + } + } - case *PassThroughAuth_Grpc: + return true +} - if h, ok := interface{}(m.GetGrpc()).(equality.Equalizer); ok { - if !h.Equal(target.GetGrpc()) { - return false - } +// Equal function +func (m *PassThroughHttpTLSConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*PassThroughHttpTLSConfig) + if !ok { + that2, ok := that.(PassThroughHttpTLSConfig) + if ok { + target = &that2 } else { - if !proto.Equal(m.GetGrpc(), target.GetGrpc()) { - return false - } + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetSecretRef()).(equality.Equalizer); ok { + if !h.Equal(target.GetSecretRef()) { + return false + } + } else { + if !proto.Equal(m.GetSecretRef(), target.GetSecretRef()) { + return false } + } + if h, ok := interface{}(m.GetSslParams()).(equality.Equalizer); ok { + if !h.Equal(target.GetSslParams()) { + return false + } + } else { + if !proto.Equal(m.GetSslParams(), target.GetSslParams()) { + return false + } } return true } // Equal function -func (m *PassThroughGrpc) Equal(that interface{}) bool { +func (m *SslParameters) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*PassThroughGrpc) + target, ok := that.(*SslParameters) if !ok { - that2, ok := that.(PassThroughGrpc) + that2, ok := that.(SslParameters) if ok { target = &that2 } else { @@ -1404,32 +3156,26 @@ func (m *PassThroughGrpc) Equal(that interface{}) bool { return false } - if strings.Compare(m.GetAddress(), target.GetAddress()) != 0 { + if m.GetMinimumProtocolVersion() != target.GetMinimumProtocolVersion() { return false } - if h, ok := interface{}(m.GetConnectionTimeout()).(equality.Equalizer); ok { - if !h.Equal(target.GetConnectionTimeout()) { - return false - } - } else { - if !proto.Equal(m.GetConnectionTimeout(), target.GetConnectionTimeout()) { - return false - } + if m.GetMaximumProtocolVersion() != target.GetMaximumProtocolVersion() { + return false } return true } // Equal function -func (m *ExtAuthConfig) Equal(that interface{}) bool { +func (m *PortalAuth) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*ExtAuthConfig) + target, ok := that.(*PortalAuth) if !ok { - that2, ok := that.(ExtAuthConfig) + that2, ok := that.(PortalAuth) if ok { target = &that2 } else { @@ -1442,33 +3188,40 @@ func (m *ExtAuthConfig) Equal(that interface{}) bool { return false } - if strings.Compare(m.GetAuthConfigRefName(), target.GetAuthConfigRefName()) != 0 { + if strings.Compare(m.GetUrl(), target.GetUrl()) != 0 { return false } - if len(m.GetConfigs()) != len(target.GetConfigs()) { + if strings.Compare(m.GetApiKeyHeader(), target.GetApiKeyHeader()) != 0 { return false } - for idx, v := range m.GetConfigs() { - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetConfigs()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetConfigs()[idx]) { - return false - } + if h, ok := interface{}(m.GetRedisOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetRedisOptions()) { + return false + } + } else { + if !proto.Equal(m.GetRedisOptions(), target.GetRedisOptions()) { + return false } + } + if h, ok := interface{}(m.GetCacheDuration()).(equality.Equalizer); ok { + if !h.Equal(target.GetCacheDuration()) { + return false + } + } else { + if !proto.Equal(m.GetCacheDuration(), target.GetCacheDuration()) { + return false + } } - if h, ok := interface{}(m.GetBooleanExpr()).(equality.Equalizer); ok { - if !h.Equal(target.GetBooleanExpr()) { + if h, ok := interface{}(m.GetRequestTimeout()).(equality.Equalizer); ok { + if !h.Equal(target.GetRequestTimeout()) { return false } } else { - if !proto.Equal(m.GetBooleanExpr(), target.GetBooleanExpr()) { + if !proto.Equal(m.GetRequestTimeout(), target.GetRequestTimeout()) { return false } } @@ -1539,6 +3292,47 @@ func (m *AuthConfigStatus) Equal(that interface{}) bool { return true } +// Equal function +func (m *AuthConfigNamespacedStatuses) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AuthConfigNamespacedStatuses) + if !ok { + that2, ok := that.(AuthConfigNamespacedStatuses) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetStatuses()) != len(target.GetStatuses()) { + return false + } + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetStatuses()[k]) { + return false + } + } + + } + + return true +} + // Equal function func (m *AuthConfigSpec_Config) Equal(that interface{}) bool { if that == nil { @@ -1573,6 +3367,9 @@ func (m *AuthConfigSpec_Config) Equal(that interface{}) bool { switch m.AuthConfig.(type) { case *AuthConfigSpec_Config_BasicAuth: + if _, ok := target.AuthConfig.(*AuthConfigSpec_Config_BasicAuth); !ok { + return false + } if h, ok := interface{}(m.GetBasicAuth()).(equality.Equalizer); ok { if !h.Equal(target.GetBasicAuth()) { @@ -1585,6 +3382,9 @@ func (m *AuthConfigSpec_Config) Equal(that interface{}) bool { } case *AuthConfigSpec_Config_Oauth: + if _, ok := target.AuthConfig.(*AuthConfigSpec_Config_Oauth); !ok { + return false + } if h, ok := interface{}(m.GetOauth()).(equality.Equalizer); ok { if !h.Equal(target.GetOauth()) { @@ -1597,6 +3397,9 @@ func (m *AuthConfigSpec_Config) Equal(that interface{}) bool { } case *AuthConfigSpec_Config_Oauth2: + if _, ok := target.AuthConfig.(*AuthConfigSpec_Config_Oauth2); !ok { + return false + } if h, ok := interface{}(m.GetOauth2()).(equality.Equalizer); ok { if !h.Equal(target.GetOauth2()) { @@ -1609,6 +3412,9 @@ func (m *AuthConfigSpec_Config) Equal(that interface{}) bool { } case *AuthConfigSpec_Config_ApiKeyAuth: + if _, ok := target.AuthConfig.(*AuthConfigSpec_Config_ApiKeyAuth); !ok { + return false + } if h, ok := interface{}(m.GetApiKeyAuth()).(equality.Equalizer); ok { if !h.Equal(target.GetApiKeyAuth()) { @@ -1621,6 +3427,9 @@ func (m *AuthConfigSpec_Config) Equal(that interface{}) bool { } case *AuthConfigSpec_Config_PluginAuth: + if _, ok := target.AuthConfig.(*AuthConfigSpec_Config_PluginAuth); !ok { + return false + } if h, ok := interface{}(m.GetPluginAuth()).(equality.Equalizer); ok { if !h.Equal(target.GetPluginAuth()) { @@ -1633,6 +3442,9 @@ func (m *AuthConfigSpec_Config) Equal(that interface{}) bool { } case *AuthConfigSpec_Config_OpaAuth: + if _, ok := target.AuthConfig.(*AuthConfigSpec_Config_OpaAuth); !ok { + return false + } if h, ok := interface{}(m.GetOpaAuth()).(equality.Equalizer); ok { if !h.Equal(target.GetOpaAuth()) { @@ -1645,6 +3457,9 @@ func (m *AuthConfigSpec_Config) Equal(that interface{}) bool { } case *AuthConfigSpec_Config_Ldap: + if _, ok := target.AuthConfig.(*AuthConfigSpec_Config_Ldap); !ok { + return false + } if h, ok := interface{}(m.GetLdap()).(equality.Equalizer); ok { if !h.Equal(target.GetLdap()) { @@ -1657,6 +3472,9 @@ func (m *AuthConfigSpec_Config) Equal(that interface{}) bool { } case *AuthConfigSpec_Config_Jwt: + if _, ok := target.AuthConfig.(*AuthConfigSpec_Config_Jwt); !ok { + return false + } if h, ok := interface{}(m.GetJwt()).(equality.Equalizer); ok { if !h.Equal(target.GetJwt()) { @@ -1669,6 +3487,9 @@ func (m *AuthConfigSpec_Config) Equal(that interface{}) bool { } case *AuthConfigSpec_Config_PassThroughAuth: + if _, ok := target.AuthConfig.(*AuthConfigSpec_Config_PassThroughAuth); !ok { + return false + } if h, ok := interface{}(m.GetPassThroughAuth()).(equality.Equalizer); ok { if !h.Equal(target.GetPassThroughAuth()) { @@ -1680,6 +3501,56 @@ func (m *AuthConfigSpec_Config) Equal(that interface{}) bool { } } + case *AuthConfigSpec_Config_HmacAuth: + if _, ok := target.AuthConfig.(*AuthConfigSpec_Config_HmacAuth); !ok { + return false + } + + if h, ok := interface{}(m.GetHmacAuth()).(equality.Equalizer); ok { + if !h.Equal(target.GetHmacAuth()) { + return false + } + } else { + if !proto.Equal(m.GetHmacAuth(), target.GetHmacAuth()) { + return false + } + } + + case *AuthConfigSpec_Config_OpaServerAuth: + if _, ok := target.AuthConfig.(*AuthConfigSpec_Config_OpaServerAuth); !ok { + return false + } + + if h, ok := interface{}(m.GetOpaServerAuth()).(equality.Equalizer); ok { + if !h.Equal(target.GetOpaServerAuth()) { + return false + } + } else { + if !proto.Equal(m.GetOpaServerAuth(), target.GetOpaServerAuth()) { + return false + } + } + + case *AuthConfigSpec_Config_PortalAuth: + if _, ok := target.AuthConfig.(*AuthConfigSpec_Config_PortalAuth); !ok { + return false + } + + if h, ok := interface{}(m.GetPortalAuth()).(equality.Equalizer); ok { + if !h.Equal(target.GetPortalAuth()) { + return false + } + } else { + if !proto.Equal(m.GetPortalAuth(), target.GetPortalAuth()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.AuthConfig != target.AuthConfig { + return false + } } return true @@ -1728,6 +3599,17 @@ func (m *HttpService_Request) Equal(that interface{}) bool { } + if len(m.GetAllowedHeadersRegex()) != len(target.GetAllowedHeadersRegex()) { + return false + } + for idx, v := range m.GetAllowedHeadersRegex() { + + if strings.Compare(v, target.GetAllowedHeadersRegex()[idx]) != 0 { + return false + } + + } + return true } @@ -1774,6 +3656,17 @@ func (m *HttpService_Response) Equal(that interface{}) bool { } + if len(m.GetAllowedUpstreamHeadersToAppend()) != len(target.GetAllowedUpstreamHeadersToAppend()) { + return false + } + for idx, v := range m.GetAllowedUpstreamHeadersToAppend() { + + if strings.Compare(v, target.GetAllowedUpstreamHeadersToAppend()[idx]) != 0 { + return false + } + + } + return true } @@ -1819,14 +3712,14 @@ func (m *BasicAuth_Apr) Equal(that interface{}) bool { } // Equal function -func (m *BasicAuth_Apr_SaltedHashedPassword) Equal(that interface{}) bool { +func (m *BasicAuth_EncryptionType) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*BasicAuth_Apr_SaltedHashedPassword) + target, ok := that.(*BasicAuth_EncryptionType) if !ok { - that2, ok := that.(BasicAuth_Apr_SaltedHashedPassword) + that2, ok := that.(BasicAuth_EncryptionType) if ok { target = &that2 } else { @@ -1839,86 +3732,41 @@ func (m *BasicAuth_Apr_SaltedHashedPassword) Equal(that interface{}) bool { return false } - if strings.Compare(m.GetSalt(), target.GetSalt()) != 0 { - return false - } - - if strings.Compare(m.GetHashedPassword(), target.GetHashedPassword()) != 0 { - return false - } - - return true -} - -// Equal function -func (m *UserSession_InternalSession) Equal(that interface{}) bool { - if that == nil { - return m == nil - } + switch m.Algorithm.(type) { - target, ok := that.(*UserSession_InternalSession) - if !ok { - that2, ok := that.(UserSession_InternalSession) - if ok { - target = &that2 - } else { + case *BasicAuth_EncryptionType_Apr_: + if _, ok := target.Algorithm.(*BasicAuth_EncryptionType_Apr_); !ok { return false } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - return true -} - -// Equal function -func (m *UserSession_RedisSession) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - target, ok := that.(*UserSession_RedisSession) - if !ok { - that2, ok := that.(UserSession_RedisSession) - if ok { - target = &that2 + if h, ok := interface{}(m.GetApr()).(equality.Equalizer); ok { + if !h.Equal(target.GetApr()) { + return false + } } else { - return false + if !proto.Equal(m.GetApr(), target.GetApr()) { + return false + } } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - if h, ok := interface{}(m.GetOptions()).(equality.Equalizer); ok { - if !h.Equal(target.GetOptions()) { - return false - } - } else { - if !proto.Equal(m.GetOptions(), target.GetOptions()) { + case *BasicAuth_EncryptionType_Sha1_: + if _, ok := target.Algorithm.(*BasicAuth_EncryptionType_Sha1_); !ok { return false } - } - - if strings.Compare(m.GetKeyPrefix(), target.GetKeyPrefix()) != 0 { - return false - } - - if strings.Compare(m.GetCookieName(), target.GetCookieName()) != 0 { - return false - } - if h, ok := interface{}(m.GetAllowRefreshing()).(equality.Equalizer); ok { - if !h.Equal(target.GetAllowRefreshing()) { - return false + if h, ok := interface{}(m.GetSha1()).(equality.Equalizer); ok { + if !h.Equal(target.GetSha1()) { + return false + } + } else { + if !proto.Equal(m.GetSha1(), target.GetSha1()) { + return false + } } - } else { - if !proto.Equal(m.GetAllowRefreshing(), target.GetAllowRefreshing()) { + + default: + // m is nil but target is not nil + if m.Algorithm != target.Algorithm { return false } } @@ -1927,51 +3775,31 @@ func (m *UserSession_RedisSession) Equal(that interface{}) bool { } // Equal function -func (m *UserSession_CookieOptions) Equal(that interface{}) bool { +func (m *BasicAuth_User) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*UserSession_CookieOptions) - if !ok { - that2, ok := that.(UserSession_CookieOptions) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetMaxAge()).(equality.Equalizer); ok { - if !h.Equal(target.GetMaxAge()) { - return false - } - } else { - if !proto.Equal(m.GetMaxAge(), target.GetMaxAge()) { + target, ok := that.(*BasicAuth_User) + if !ok { + that2, ok := that.(BasicAuth_User) + if ok { + target = &that2 + } else { return false } } - - if m.GetNotSecure() != target.GetNotSecure() { + if target == nil { + return m == nil + } else if m == nil { return false } - if h, ok := interface{}(m.GetPath()).(equality.Equalizer); ok { - if !h.Equal(target.GetPath()) { - return false - } - } else { - if !proto.Equal(m.GetPath(), target.GetPath()) { - return false - } + if strings.Compare(m.GetSalt(), target.GetSalt()) != 0 { + return false } - if strings.Compare(m.GetDomain(), target.GetDomain()) != 0 { + if strings.Compare(m.GetHashedPassword(), target.GetHashedPassword()) != 0 { return false } @@ -1979,14 +3807,14 @@ func (m *UserSession_CookieOptions) Equal(that interface{}) bool { } // Equal function -func (m *AccessTokenValidation_JwtValidation) Equal(that interface{}) bool { +func (m *BasicAuth_UserList) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*AccessTokenValidation_JwtValidation) + target, ok := that.(*BasicAuth_UserList) if !ok { - that2, ok := that.(AccessTokenValidation_JwtValidation) + that2, ok := that.(BasicAuth_UserList) if ok { target = &that2 } else { @@ -1999,32 +3827,17 @@ func (m *AccessTokenValidation_JwtValidation) Equal(that interface{}) bool { return false } - if strings.Compare(m.GetIssuer(), target.GetIssuer()) != 0 { + if len(m.GetUsers()) != len(target.GetUsers()) { return false } + for k, v := range m.GetUsers() { - switch m.JwksSourceSpecifier.(type) { - - case *AccessTokenValidation_JwtValidation_RemoteJwks_: - - if h, ok := interface{}(m.GetRemoteJwks()).(equality.Equalizer); ok { - if !h.Equal(target.GetRemoteJwks()) { - return false - } - } else { - if !proto.Equal(m.GetRemoteJwks(), target.GetRemoteJwks()) { - return false - } - } - - case *AccessTokenValidation_JwtValidation_LocalJwks_: - - if h, ok := interface{}(m.GetLocalJwks()).(equality.Equalizer); ok { - if !h.Equal(target.GetLocalJwks()) { + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetUsers()[k]) { return false } } else { - if !proto.Equal(m.GetLocalJwks(), target.GetLocalJwks()) { + if !proto.Equal(v, target.GetUsers()[k]) { return false } } @@ -2035,14 +3848,14 @@ func (m *AccessTokenValidation_JwtValidation) Equal(that interface{}) bool { } // Equal function -func (m *AccessTokenValidation_IntrospectionValidation) Equal(that interface{}) bool { +func (m *BasicAuth_Apr_SaltedHashedPassword) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*AccessTokenValidation_IntrospectionValidation) + target, ok := that.(*BasicAuth_Apr_SaltedHashedPassword) if !ok { - that2, ok := that.(AccessTokenValidation_IntrospectionValidation) + that2, ok := that.(BasicAuth_Apr_SaltedHashedPassword) if ok { target = &that2 } else { @@ -2055,25 +3868,11 @@ func (m *AccessTokenValidation_IntrospectionValidation) Equal(that interface{}) return false } - if strings.Compare(m.GetIntrospectionUrl(), target.GetIntrospectionUrl()) != 0 { - return false - } - - if strings.Compare(m.GetClientId(), target.GetClientId()) != 0 { + if strings.Compare(m.GetSalt(), target.GetSalt()) != 0 { return false } - if h, ok := interface{}(m.GetClientSecretRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetClientSecretRef()) { - return false - } - } else { - if !proto.Equal(m.GetClientSecretRef(), target.GetClientSecretRef()) { - return false - } - } - - if strings.Compare(m.GetUserIdAttributeName(), target.GetUserIdAttributeName()) != 0 { + if strings.Compare(m.GetHashedPassword(), target.GetHashedPassword()) != 0 { return false } @@ -2081,14 +3880,14 @@ func (m *AccessTokenValidation_IntrospectionValidation) Equal(that interface{}) } // Equal function -func (m *AccessTokenValidation_ScopeList) Equal(that interface{}) bool { +func (m *BasicAuth_EncryptionType_Sha1) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*AccessTokenValidation_ScopeList) + target, ok := that.(*BasicAuth_EncryptionType_Sha1) if !ok { - that2, ok := that.(AccessTokenValidation_ScopeList) + that2, ok := that.(BasicAuth_EncryptionType_Sha1) if ok { target = &that2 } else { @@ -2101,29 +3900,42 @@ func (m *AccessTokenValidation_ScopeList) Equal(that interface{}) bool { return false } - if len(m.GetScope()) != len(target.GetScope()) { - return false + return true +} + +// Equal function +func (m *BasicAuth_EncryptionType_Apr) Equal(that interface{}) bool { + if that == nil { + return m == nil } - for idx, v := range m.GetScope() { - if strings.Compare(v, target.GetScope()[idx]) != 0 { + target, ok := that.(*BasicAuth_EncryptionType_Apr) + if !ok { + that2, ok := that.(BasicAuth_EncryptionType_Apr) + if ok { + target = &that2 + } else { return false } - + } + if target == nil { + return m == nil + } else if m == nil { + return false } return true } // Equal function -func (m *AccessTokenValidation_JwtValidation_RemoteJwks) Equal(that interface{}) bool { +func (m *UserSession_InternalSession) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*AccessTokenValidation_JwtValidation_RemoteJwks) + target, ok := that.(*UserSession_InternalSession) if !ok { - that2, ok := that.(AccessTokenValidation_JwtValidation_RemoteJwks) + that2, ok := that.(UserSession_InternalSession) if ok { target = &that2 } else { @@ -2136,32 +3948,36 @@ func (m *AccessTokenValidation_JwtValidation_RemoteJwks) Equal(that interface{}) return false } - if strings.Compare(m.GetUrl(), target.GetUrl()) != 0 { - return false - } - - if h, ok := interface{}(m.GetRefreshInterval()).(equality.Equalizer); ok { - if !h.Equal(target.GetRefreshInterval()) { + if h, ok := interface{}(m.GetAllowRefreshing()).(equality.Equalizer); ok { + if !h.Equal(target.GetAllowRefreshing()) { return false } } else { - if !proto.Equal(m.GetRefreshInterval(), target.GetRefreshInterval()) { + if !proto.Equal(m.GetAllowRefreshing(), target.GetAllowRefreshing()) { return false } } + if strings.Compare(m.GetKeyPrefix(), target.GetKeyPrefix()) != 0 { + return false + } + + if strings.Compare(m.GetTargetDomain(), target.GetTargetDomain()) != 0 { + return false + } + return true } // Equal function -func (m *AccessTokenValidation_JwtValidation_LocalJwks) Equal(that interface{}) bool { +func (m *UserSession_RedisSession) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*AccessTokenValidation_JwtValidation_LocalJwks) + target, ok := that.(*UserSession_RedisSession) if !ok { - that2, ok := that.(AccessTokenValidation_JwtValidation_LocalJwks) + that2, ok := that.(UserSession_RedisSession) if ok { target = &that2 } else { @@ -2174,7 +3990,49 @@ func (m *AccessTokenValidation_JwtValidation_LocalJwks) Equal(that interface{}) return false } - if strings.Compare(m.GetInlineString(), target.GetInlineString()) != 0 { + if h, ok := interface{}(m.GetOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetOptions()) { + return false + } + } else { + if !proto.Equal(m.GetOptions(), target.GetOptions()) { + return false + } + } + + if strings.Compare(m.GetKeyPrefix(), target.GetKeyPrefix()) != 0 { + return false + } + + if strings.Compare(m.GetCookieName(), target.GetCookieName()) != 0 { + return false + } + + if h, ok := interface{}(m.GetAllowRefreshing()).(equality.Equalizer); ok { + if !h.Equal(target.GetAllowRefreshing()) { + return false + } + } else { + if !proto.Equal(m.GetAllowRefreshing(), target.GetAllowRefreshing()) { + return false + } + } + + if h, ok := interface{}(m.GetPreExpiryBuffer()).(equality.Equalizer); ok { + if !h.Equal(target.GetPreExpiryBuffer()) { + return false + } + } else { + if !proto.Equal(m.GetPreExpiryBuffer(), target.GetPreExpiryBuffer()) { + return false + } + } + + if strings.Compare(m.GetTargetDomain(), target.GetTargetDomain()) != 0 { + return false + } + + if strings.Compare(m.GetHeaderName(), target.GetHeaderName()) != 0 { return false } @@ -2182,14 +4040,14 @@ func (m *AccessTokenValidation_JwtValidation_LocalJwks) Equal(that interface{}) } // Equal function -func (m *ApiKeyAuth_SecretKey) Equal(that interface{}) bool { +func (m *UserSession_CookieOptions) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*ApiKeyAuth_SecretKey) + target, ok := that.(*UserSession_CookieOptions) if !ok { - that2, ok := that.(ApiKeyAuth_SecretKey) + that2, ok := that.(UserSession_CookieOptions) if ok { target = &that2 } else { @@ -2202,11 +4060,45 @@ func (m *ApiKeyAuth_SecretKey) Equal(that interface{}) bool { return false } - if strings.Compare(m.GetName(), target.GetName()) != 0 { + if h, ok := interface{}(m.GetMaxAge()).(equality.Equalizer); ok { + if !h.Equal(target.GetMaxAge()) { + return false + } + } else { + if !proto.Equal(m.GetMaxAge(), target.GetMaxAge()) { + return false + } + } + + if m.GetNotSecure() != target.GetNotSecure() { return false } - if m.GetRequired() != target.GetRequired() { + if h, ok := interface{}(m.GetHttpOnly()).(equality.Equalizer); ok { + if !h.Equal(target.GetHttpOnly()) { + return false + } + } else { + if !proto.Equal(m.GetHttpOnly(), target.GetHttpOnly()) { + return false + } + } + + if h, ok := interface{}(m.GetPath()).(equality.Equalizer); ok { + if !h.Equal(target.GetPath()) { + return false + } + } else { + if !proto.Equal(m.GetPath(), target.GetPath()) { + return false + } + } + + if m.GetSameSite() != target.GetSameSite() { + return false + } + + if strings.Compare(m.GetDomain(), target.GetDomain()) != 0 { return false } @@ -2214,14 +4106,14 @@ func (m *ApiKeyAuth_SecretKey) Equal(that interface{}) bool { } // Equal function -func (m *Ldap_ConnectionPool) Equal(that interface{}) bool { +func (m *UserSession_CipherConfig) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*Ldap_ConnectionPool) + target, ok := that.(*UserSession_CipherConfig) if !ok { - that2, ok := that.(Ldap_ConnectionPool) + that2, ok := that.(UserSession_CipherConfig) if ok { target = &that2 } else { @@ -2234,22 +4126,26 @@ func (m *Ldap_ConnectionPool) Equal(that interface{}) bool { return false } - if h, ok := interface{}(m.GetMaxSize()).(equality.Equalizer); ok { - if !h.Equal(target.GetMaxSize()) { - return false - } - } else { - if !proto.Equal(m.GetMaxSize(), target.GetMaxSize()) { + switch m.Key.(type) { + + case *UserSession_CipherConfig_KeyRef: + if _, ok := target.Key.(*UserSession_CipherConfig_KeyRef); !ok { return false } - } - if h, ok := interface{}(m.GetInitialSize()).(equality.Equalizer); ok { - if !h.Equal(target.GetInitialSize()) { - return false + if h, ok := interface{}(m.GetKeyRef()).(equality.Equalizer); ok { + if !h.Equal(target.GetKeyRef()) { + return false + } + } else { + if !proto.Equal(m.GetKeyRef(), target.GetKeyRef()) { + return false + } } - } else { - if !proto.Equal(m.GetInitialSize(), target.GetInitialSize()) { + + default: + // m is nil but target is not nil + if m.Key != target.Key { return false } } @@ -2258,14 +4154,14 @@ func (m *Ldap_ConnectionPool) Equal(that interface{}) bool { } // Equal function -func (m *ExtAuthConfig_OAuthConfig) Equal(that interface{}) bool { +func (m *OidcAuthorizationCode_AccessToken) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*ExtAuthConfig_OAuthConfig) + target, ok := that.(*OidcAuthorizationCode_AccessToken) if !ok { - that2, ok := that.(ExtAuthConfig_OAuthConfig) + that2, ok := that.(OidcAuthorizationCode_AccessToken) if ok { target = &that2 } else { @@ -2278,44 +4174,60 @@ func (m *ExtAuthConfig_OAuthConfig) Equal(that interface{}) bool { return false } - if strings.Compare(m.GetClientId(), target.GetClientId()) != 0 { + if len(m.GetClaimsToHeaders()) != len(target.GetClaimsToHeaders()) { return false } + for idx, v := range m.GetClaimsToHeaders() { - if strings.Compare(m.GetClientSecret(), target.GetClientSecret()) != 0 { - return false - } + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetClaimsToHeaders()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetClaimsToHeaders()[idx]) { + return false + } + } - if strings.Compare(m.GetIssuerUrl(), target.GetIssuerUrl()) != 0 { - return false } - if len(m.GetAuthEndpointQueryParams()) != len(target.GetAuthEndpointQueryParams()) { - return false + return true +} + +// Equal function +func (m *OidcAuthorizationCode_IdentityToken) Equal(that interface{}) bool { + if that == nil { + return m == nil } - for k, v := range m.GetAuthEndpointQueryParams() { - if strings.Compare(v, target.GetAuthEndpointQueryParams()[k]) != 0 { + target, ok := that.(*OidcAuthorizationCode_IdentityToken) + if !ok { + that2, ok := that.(OidcAuthorizationCode_IdentityToken) + if ok { + target = &that2 + } else { return false } - - } - - if strings.Compare(m.GetAppUrl(), target.GetAppUrl()) != 0 { - return false } - - if strings.Compare(m.GetCallbackPath(), target.GetCallbackPath()) != 0 { + if target == nil { + return m == nil + } else if m == nil { return false } - if len(m.GetScopes()) != len(target.GetScopes()) { + if len(m.GetClaimsToHeaders()) != len(target.GetClaimsToHeaders()) { return false } - for idx, v := range m.GetScopes() { + for idx, v := range m.GetClaimsToHeaders() { - if strings.Compare(v, target.GetScopes()[idx]) != 0 { - return false + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetClaimsToHeaders()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetClaimsToHeaders()[idx]) { + return false + } } } @@ -2324,14 +4236,14 @@ func (m *ExtAuthConfig_OAuthConfig) Equal(that interface{}) bool { } // Equal function -func (m *ExtAuthConfig_OidcAuthorizationCodeConfig) Equal(that interface{}) bool { +func (m *OidcAuthorizationCode_ClientAuthentication) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*ExtAuthConfig_OidcAuthorizationCodeConfig) + target, ok := that.(*OidcAuthorizationCode_ClientAuthentication) if !ok { - that2, ok := that.(ExtAuthConfig_OidcAuthorizationCodeConfig) + that2, ok := that.(OidcAuthorizationCode_ClientAuthentication) if ok { target = &that2 } else { @@ -2344,113 +4256,181 @@ func (m *ExtAuthConfig_OidcAuthorizationCodeConfig) Equal(that interface{}) bool return false } - if strings.Compare(m.GetClientId(), target.GetClientId()) != 0 { - return false - } - - if strings.Compare(m.GetClientSecret(), target.GetClientSecret()) != 0 { - return false - } + switch m.ClientAuthenticationConfig.(type) { - if strings.Compare(m.GetIssuerUrl(), target.GetIssuerUrl()) != 0 { - return false - } + case *OidcAuthorizationCode_ClientAuthentication_ClientSecret_: + if _, ok := target.ClientAuthenticationConfig.(*OidcAuthorizationCode_ClientAuthentication_ClientSecret_); !ok { + return false + } - if len(m.GetAuthEndpointQueryParams()) != len(target.GetAuthEndpointQueryParams()) { - return false - } - for k, v := range m.GetAuthEndpointQueryParams() { + if h, ok := interface{}(m.GetClientSecret()).(equality.Equalizer); ok { + if !h.Equal(target.GetClientSecret()) { + return false + } + } else { + if !proto.Equal(m.GetClientSecret(), target.GetClientSecret()) { + return false + } + } - if strings.Compare(v, target.GetAuthEndpointQueryParams()[k]) != 0 { + case *OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt_: + if _, ok := target.ClientAuthenticationConfig.(*OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt_); !ok { return false } + if h, ok := interface{}(m.GetPrivateKeyJwt()).(equality.Equalizer); ok { + if !h.Equal(target.GetPrivateKeyJwt()) { + return false + } + } else { + if !proto.Equal(m.GetPrivateKeyJwt(), target.GetPrivateKeyJwt()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.ClientAuthenticationConfig != target.ClientAuthenticationConfig { + return false + } } - if len(m.GetTokenEndpointQueryParams()) != len(target.GetTokenEndpointQueryParams()) { - return false + return true +} + +// Equal function +func (m *OidcAuthorizationCode_Default) Equal(that interface{}) bool { + if that == nil { + return m == nil } - for k, v := range m.GetTokenEndpointQueryParams() { - if strings.Compare(v, target.GetTokenEndpointQueryParams()[k]) != 0 { + target, ok := that.(*OidcAuthorizationCode_Default) + if !ok { + that2, ok := that.(OidcAuthorizationCode_Default) + if ok { + target = &that2 + } else { return false } - } - - if strings.Compare(m.GetAppUrl(), target.GetAppUrl()) != 0 { + if target == nil { + return m == nil + } else if m == nil { return false } - if strings.Compare(m.GetCallbackPath(), target.GetCallbackPath()) != 0 { - return false + return true +} + +// Equal function +func (m *OidcAuthorizationCode_FrontChannelLogout) Equal(that interface{}) bool { + if that == nil { + return m == nil } - if strings.Compare(m.GetLogoutPath(), target.GetLogoutPath()) != 0 { + target, ok := that.(*OidcAuthorizationCode_FrontChannelLogout) + if !ok { + that2, ok := that.(OidcAuthorizationCode_FrontChannelLogout) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { return false } - if strings.Compare(m.GetAfterLogoutUrl(), target.GetAfterLogoutUrl()) != 0 { + if strings.Compare(m.GetPath(), target.GetPath()) != 0 { return false } - if len(m.GetScopes()) != len(target.GetScopes()) { - return false + return true +} + +// Equal function +func (m *OidcAuthorizationCode_ClientAuthentication_ClientSecret) Equal(that interface{}) bool { + if that == nil { + return m == nil } - for idx, v := range m.GetScopes() { - if strings.Compare(v, target.GetScopes()[idx]) != 0 { + target, ok := that.(*OidcAuthorizationCode_ClientAuthentication_ClientSecret) + if !ok { + that2, ok := that.(OidcAuthorizationCode_ClientAuthentication_ClientSecret) + if ok { + target = &that2 + } else { return false } - + } + if target == nil { + return m == nil + } else if m == nil { + return false } - if h, ok := interface{}(m.GetSession()).(equality.Equalizer); ok { - if !h.Equal(target.GetSession()) { + if h, ok := interface{}(m.GetClientSecretRef()).(equality.Equalizer); ok { + if !h.Equal(target.GetClientSecretRef()) { return false } } else { - if !proto.Equal(m.GetSession(), target.GetSession()) { + if !proto.Equal(m.GetClientSecretRef(), target.GetClientSecretRef()) { return false } } - if h, ok := interface{}(m.GetHeaders()).(equality.Equalizer); ok { - if !h.Equal(target.GetHeaders()) { + if h, ok := interface{}(m.GetDisableClientSecret()).(equality.Equalizer); ok { + if !h.Equal(target.GetDisableClientSecret()) { return false } } else { - if !proto.Equal(m.GetHeaders(), target.GetHeaders()) { + if !proto.Equal(m.GetDisableClientSecret(), target.GetDisableClientSecret()) { return false } } - if h, ok := interface{}(m.GetDiscoveryOverride()).(equality.Equalizer); ok { - if !h.Equal(target.GetDiscoveryOverride()) { - return false - } - } else { - if !proto.Equal(m.GetDiscoveryOverride(), target.GetDiscoveryOverride()) { + return true +} + +// Equal function +func (m *OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt) + if !ok { + that2, ok := that.(OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt) + if ok { + target = &that2 + } else { return false } } + if target == nil { + return m == nil + } else if m == nil { + return false + } - if h, ok := interface{}(m.GetDiscoveryPollInterval()).(equality.Equalizer); ok { - if !h.Equal(target.GetDiscoveryPollInterval()) { + if h, ok := interface{}(m.GetSigningKeyRef()).(equality.Equalizer); ok { + if !h.Equal(target.GetSigningKeyRef()) { return false } } else { - if !proto.Equal(m.GetDiscoveryPollInterval(), target.GetDiscoveryPollInterval()) { + if !proto.Equal(m.GetSigningKeyRef(), target.GetSigningKeyRef()) { return false } } - if h, ok := interface{}(m.GetJwksCacheRefreshPolicy()).(equality.Equalizer); ok { - if !h.Equal(target.GetJwksCacheRefreshPolicy()) { + if h, ok := interface{}(m.GetValidFor()).(equality.Equalizer); ok { + if !h.Equal(target.GetValidFor()) { return false } } else { - if !proto.Equal(m.GetJwksCacheRefreshPolicy(), target.GetJwksCacheRefreshPolicy()) { + if !proto.Equal(m.GetValidFor(), target.GetValidFor()) { return false } } @@ -2459,14 +4439,14 @@ func (m *ExtAuthConfig_OidcAuthorizationCodeConfig) Equal(that interface{}) bool } // Equal function -func (m *ExtAuthConfig_AccessTokenValidationConfig) Equal(that interface{}) bool { +func (m *JwtValidation_RemoteJwks) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*ExtAuthConfig_AccessTokenValidationConfig) + target, ok := that.(*JwtValidation_RemoteJwks) if !ok { - that2, ok := that.(ExtAuthConfig_AccessTokenValidationConfig) + that2, ok := that.(JwtValidation_RemoteJwks) if ok { target = &that2 } else { @@ -2479,82 +4459,60 @@ func (m *ExtAuthConfig_AccessTokenValidationConfig) Equal(that interface{}) bool return false } - if strings.Compare(m.GetUserinfoUrl(), target.GetUserinfoUrl()) != 0 { + if strings.Compare(m.GetUrl(), target.GetUrl()) != 0 { return false } - if h, ok := interface{}(m.GetCacheTimeout()).(equality.Equalizer); ok { - if !h.Equal(target.GetCacheTimeout()) { + if h, ok := interface{}(m.GetRefreshInterval()).(equality.Equalizer); ok { + if !h.Equal(target.GetRefreshInterval()) { return false } } else { - if !proto.Equal(m.GetCacheTimeout(), target.GetCacheTimeout()) { + if !proto.Equal(m.GetRefreshInterval(), target.GetRefreshInterval()) { return false } } - switch m.ValidationType.(type) { - - case *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionUrl: - - if strings.Compare(m.GetIntrospectionUrl(), target.GetIntrospectionUrl()) != 0 { - return false - } - - case *ExtAuthConfig_AccessTokenValidationConfig_Jwt: - - if h, ok := interface{}(m.GetJwt()).(equality.Equalizer); ok { - if !h.Equal(target.GetJwt()) { - return false - } - } else { - if !proto.Equal(m.GetJwt(), target.GetJwt()) { - return false - } - } - - case *ExtAuthConfig_AccessTokenValidationConfig_Introspection: - - if h, ok := interface{}(m.GetIntrospection()).(equality.Equalizer); ok { - if !h.Equal(target.GetIntrospection()) { - return false - } - } else { - if !proto.Equal(m.GetIntrospection(), target.GetIntrospection()) { - return false - } - } + return true +} +// Equal function +func (m *JwtValidation_LocalJwks) Equal(that interface{}) bool { + if that == nil { + return m == nil } - switch m.ScopeValidation.(type) { - - case *ExtAuthConfig_AccessTokenValidationConfig_RequiredScopes: - - if h, ok := interface{}(m.GetRequiredScopes()).(equality.Equalizer); ok { - if !h.Equal(target.GetRequiredScopes()) { - return false - } + target, ok := that.(*JwtValidation_LocalJwks) + if !ok { + that2, ok := that.(JwtValidation_LocalJwks) + if ok { + target = &that2 } else { - if !proto.Equal(m.GetRequiredScopes(), target.GetRequiredScopes()) { - return false - } + return false } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + if strings.Compare(m.GetInlineString(), target.GetInlineString()) != 0 { + return false } return true } // Equal function -func (m *ExtAuthConfig_OAuth2Config) Equal(that interface{}) bool { +func (m *AccessTokenValidation_Default) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*ExtAuthConfig_OAuth2Config) + target, ok := that.(*AccessTokenValidation_Default) if !ok { - that2, ok := that.(ExtAuthConfig_OAuth2Config) + that2, ok := that.(AccessTokenValidation_Default) if ok { target = &that2 } else { @@ -2567,46 +4525,18 @@ func (m *ExtAuthConfig_OAuth2Config) Equal(that interface{}) bool { return false } - switch m.OauthType.(type) { - - case *ExtAuthConfig_OAuth2Config_OidcAuthorizationCode: - - if h, ok := interface{}(m.GetOidcAuthorizationCode()).(equality.Equalizer); ok { - if !h.Equal(target.GetOidcAuthorizationCode()) { - return false - } - } else { - if !proto.Equal(m.GetOidcAuthorizationCode(), target.GetOidcAuthorizationCode()) { - return false - } - } - - case *ExtAuthConfig_OAuth2Config_AccessTokenValidationConfig: - - if h, ok := interface{}(m.GetAccessTokenValidationConfig()).(equality.Equalizer); ok { - if !h.Equal(target.GetAccessTokenValidationConfig()) { - return false - } - } else { - if !proto.Equal(m.GetAccessTokenValidationConfig(), target.GetAccessTokenValidationConfig()) { - return false - } - } - - } - return true } // Equal function -func (m *ExtAuthConfig_ApiKeyAuthConfig) Equal(that interface{}) bool { +func (m *AccessTokenValidation_ScopeList) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*ExtAuthConfig_ApiKeyAuthConfig) + target, ok := that.(*AccessTokenValidation_ScopeList) if !ok { - that2, ok := that.(ExtAuthConfig_ApiKeyAuthConfig) + that2, ok := that.(AccessTokenValidation_ScopeList) if ok { target = &that2 } else { @@ -2619,50 +4549,61 @@ func (m *ExtAuthConfig_ApiKeyAuthConfig) Equal(that interface{}) bool { return false } - if len(m.GetValidApiKeys()) != len(target.GetValidApiKeys()) { + if len(m.GetScope()) != len(target.GetScope()) { return false } - for k, v := range m.GetValidApiKeys() { + for idx, v := range m.GetScope() { - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetValidApiKeys()[k]) { - return false - } - } else { - if !proto.Equal(v, target.GetValidApiKeys()[k]) { - return false - } + if strings.Compare(v, target.GetScope()[idx]) != 0 { + return false } } - if strings.Compare(m.GetHeaderName(), target.GetHeaderName()) != 0 { + return true +} + +// Equal function +func (m *ApiKeyAuth_SecretKey) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ApiKeyAuth_SecretKey) + if !ok { + that2, ok := that.(ApiKeyAuth_SecretKey) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { return false } - if len(m.GetHeadersFromKeyMetadata()) != len(target.GetHeadersFromKeyMetadata()) { + if strings.Compare(m.GetName(), target.GetName()) != 0 { return false } - for k, v := range m.GetHeadersFromKeyMetadata() { - - if strings.Compare(v, target.GetHeadersFromKeyMetadata()[k]) != 0 { - return false - } + if m.GetRequired() != target.GetRequired() { + return false } return true } // Equal function -func (m *ExtAuthConfig_OpaAuthConfig) Equal(that interface{}) bool { +func (m *ApiKeyAuth_MetadataEntry) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*ExtAuthConfig_OpaAuthConfig) + target, ok := that.(*ApiKeyAuth_MetadataEntry) if !ok { - that2, ok := that.(ExtAuthConfig_OpaAuthConfig) + that2, ok := that.(ApiKeyAuth_MetadataEntry) if ok { target = &that2 } else { @@ -2675,18 +4616,11 @@ func (m *ExtAuthConfig_OpaAuthConfig) Equal(that interface{}) bool { return false } - if len(m.GetModules()) != len(target.GetModules()) { + if strings.Compare(m.GetName(), target.GetName()) != 0 { return false } - for k, v := range m.GetModules() { - - if strings.Compare(v, target.GetModules()[k]) != 0 { - return false - } - - } - if strings.Compare(m.GetQuery(), target.GetQuery()) != 0 { + if m.GetRequired() != target.GetRequired() { return false } @@ -2694,14 +4628,14 @@ func (m *ExtAuthConfig_OpaAuthConfig) Equal(that interface{}) bool { } // Equal function -func (m *ExtAuthConfig_Config) Equal(that interface{}) bool { +func (m *AerospikeApiKeyStorageReadModeSc) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*ExtAuthConfig_Config) + target, ok := that.(*AerospikeApiKeyStorageReadModeSc) if !ok { - that2, ok := that.(ExtAuthConfig_Config) + that2, ok := that.(AerospikeApiKeyStorageReadModeSc) if ok { target = &that2 } else { @@ -2714,140 +4648,63 @@ func (m *ExtAuthConfig_Config) Equal(that interface{}) bool { return false } - if h, ok := interface{}(m.GetName()).(equality.Equalizer); ok { - if !h.Equal(target.GetName()) { - return false - } - } else { - if !proto.Equal(m.GetName(), target.GetName()) { - return false - } - } - - switch m.AuthConfig.(type) { - - case *ExtAuthConfig_Config_Oauth: + switch m.ReadModeSc.(type) { - if h, ok := interface{}(m.GetOauth()).(equality.Equalizer); ok { - if !h.Equal(target.GetOauth()) { - return false - } - } else { - if !proto.Equal(m.GetOauth(), target.GetOauth()) { - return false - } + case *AerospikeApiKeyStorageReadModeSc_ReadModeScSession: + if _, ok := target.ReadModeSc.(*AerospikeApiKeyStorageReadModeSc_ReadModeScSession); !ok { + return false } - case *ExtAuthConfig_Config_Oauth2: - - if h, ok := interface{}(m.GetOauth2()).(equality.Equalizer); ok { - if !h.Equal(target.GetOauth2()) { - return false - } - } else { - if !proto.Equal(m.GetOauth2(), target.GetOauth2()) { - return false - } + if m.GetReadModeScSession() != target.GetReadModeScSession() { + return false } - case *ExtAuthConfig_Config_BasicAuth: - - if h, ok := interface{}(m.GetBasicAuth()).(equality.Equalizer); ok { - if !h.Equal(target.GetBasicAuth()) { - return false - } - } else { - if !proto.Equal(m.GetBasicAuth(), target.GetBasicAuth()) { - return false - } + case *AerospikeApiKeyStorageReadModeSc_ReadModeScLinearize: + if _, ok := target.ReadModeSc.(*AerospikeApiKeyStorageReadModeSc_ReadModeScLinearize); !ok { + return false } - case *ExtAuthConfig_Config_ApiKeyAuth: - - if h, ok := interface{}(m.GetApiKeyAuth()).(equality.Equalizer); ok { - if !h.Equal(target.GetApiKeyAuth()) { - return false - } - } else { - if !proto.Equal(m.GetApiKeyAuth(), target.GetApiKeyAuth()) { - return false - } + if m.GetReadModeScLinearize() != target.GetReadModeScLinearize() { + return false } - case *ExtAuthConfig_Config_PluginAuth: - - if h, ok := interface{}(m.GetPluginAuth()).(equality.Equalizer); ok { - if !h.Equal(target.GetPluginAuth()) { - return false - } - } else { - if !proto.Equal(m.GetPluginAuth(), target.GetPluginAuth()) { - return false - } + case *AerospikeApiKeyStorageReadModeSc_ReadModeScReplica: + if _, ok := target.ReadModeSc.(*AerospikeApiKeyStorageReadModeSc_ReadModeScReplica); !ok { + return false } - case *ExtAuthConfig_Config_OpaAuth: - - if h, ok := interface{}(m.GetOpaAuth()).(equality.Equalizer); ok { - if !h.Equal(target.GetOpaAuth()) { - return false - } - } else { - if !proto.Equal(m.GetOpaAuth(), target.GetOpaAuth()) { - return false - } + if m.GetReadModeScReplica() != target.GetReadModeScReplica() { + return false } - case *ExtAuthConfig_Config_Ldap: - - if h, ok := interface{}(m.GetLdap()).(equality.Equalizer); ok { - if !h.Equal(target.GetLdap()) { - return false - } - } else { - if !proto.Equal(m.GetLdap(), target.GetLdap()) { - return false - } + case *AerospikeApiKeyStorageReadModeSc_ReadModeScAllowUnavailable: + if _, ok := target.ReadModeSc.(*AerospikeApiKeyStorageReadModeSc_ReadModeScAllowUnavailable); !ok { + return false } - case *ExtAuthConfig_Config_Jwt: - - if h, ok := interface{}(m.GetJwt()).(equality.Equalizer); ok { - if !h.Equal(target.GetJwt()) { - return false - } - } else { - if !proto.Equal(m.GetJwt(), target.GetJwt()) { - return false - } + if m.GetReadModeScAllowUnavailable() != target.GetReadModeScAllowUnavailable() { + return false } - case *ExtAuthConfig_Config_PassThroughAuth: - - if h, ok := interface{}(m.GetPassThroughAuth()).(equality.Equalizer); ok { - if !h.Equal(target.GetPassThroughAuth()) { - return false - } - } else { - if !proto.Equal(m.GetPassThroughAuth(), target.GetPassThroughAuth()) { - return false - } + default: + // m is nil but target is not nil + if m.ReadModeSc != target.ReadModeSc { + return false } - } return true } // Equal function -func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) Equal(that interface{}) bool { +func (m *AerospikeApiKeyStorageReadModeAp) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) + target, ok := that.(*AerospikeApiKeyStorageReadModeAp) if !ok { - that2, ok := that.(ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) + that2, ok := that.(AerospikeApiKeyStorageReadModeAp) if ok { target = &that2 } else { @@ -2860,50 +4717,45 @@ func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) Equal(that int return false } - if strings.Compare(m.GetIssuer(), target.GetIssuer()) != 0 { - return false - } - - switch m.JwksSourceSpecifier.(type) { + switch m.ReadModeAp.(type) { - case *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks_: + case *AerospikeApiKeyStorageReadModeAp_ReadModeApOne: + if _, ok := target.ReadModeAp.(*AerospikeApiKeyStorageReadModeAp_ReadModeApOne); !ok { + return false + } - if h, ok := interface{}(m.GetRemoteJwks()).(equality.Equalizer); ok { - if !h.Equal(target.GetRemoteJwks()) { - return false - } - } else { - if !proto.Equal(m.GetRemoteJwks(), target.GetRemoteJwks()) { - return false - } + if m.GetReadModeApOne() != target.GetReadModeApOne() { + return false } - case *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks_: + case *AerospikeApiKeyStorageReadModeAp_ReadModeApAll: + if _, ok := target.ReadModeAp.(*AerospikeApiKeyStorageReadModeAp_ReadModeApAll); !ok { + return false + } - if h, ok := interface{}(m.GetLocalJwks()).(equality.Equalizer); ok { - if !h.Equal(target.GetLocalJwks()) { - return false - } - } else { - if !proto.Equal(m.GetLocalJwks(), target.GetLocalJwks()) { - return false - } + if m.GetReadModeApAll() != target.GetReadModeApAll() { + return false } + default: + // m is nil but target is not nil + if m.ReadModeAp != target.ReadModeAp { + return false + } } return true } // Equal function -func (m *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) Equal(that interface{}) bool { +func (m *AerospikeApiKeyStorageTlsCurveID) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) + target, ok := that.(*AerospikeApiKeyStorageTlsCurveID) if !ok { - that2, ok := that.(ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) + that2, ok := that.(AerospikeApiKeyStorageTlsCurveID) if ok { target = &that2 } else { @@ -2916,34 +4768,63 @@ func (m *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) Equa return false } - if strings.Compare(m.GetIntrospectionUrl(), target.GetIntrospectionUrl()) != 0 { - return false - } + switch m.CurveId.(type) { - if strings.Compare(m.GetClientId(), target.GetClientId()) != 0 { - return false - } + case *AerospikeApiKeyStorageTlsCurveID_CurveP256: + if _, ok := target.CurveId.(*AerospikeApiKeyStorageTlsCurveID_CurveP256); !ok { + return false + } - if strings.Compare(m.GetClientSecret(), target.GetClientSecret()) != 0 { - return false - } + if m.GetCurveP256() != target.GetCurveP256() { + return false + } - if strings.Compare(m.GetUserIdAttributeName(), target.GetUserIdAttributeName()) != 0 { - return false + case *AerospikeApiKeyStorageTlsCurveID_CurveP384: + if _, ok := target.CurveId.(*AerospikeApiKeyStorageTlsCurveID_CurveP384); !ok { + return false + } + + if m.GetCurveP384() != target.GetCurveP384() { + return false + } + + case *AerospikeApiKeyStorageTlsCurveID_CurveP521: + if _, ok := target.CurveId.(*AerospikeApiKeyStorageTlsCurveID_CurveP521); !ok { + return false + } + + if m.GetCurveP521() != target.GetCurveP521() { + return false + } + + case *AerospikeApiKeyStorageTlsCurveID_X_25519: + if _, ok := target.CurveId.(*AerospikeApiKeyStorageTlsCurveID_X_25519); !ok { + return false + } + + if m.GetX_25519() != target.GetX_25519() { + return false + } + + default: + // m is nil but target is not nil + if m.CurveId != target.CurveId { + return false + } } return true } // Equal function -func (m *ExtAuthConfig_AccessTokenValidationConfig_ScopeList) Equal(that interface{}) bool { +func (m *Ldap_ConnectionPool) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*ExtAuthConfig_AccessTokenValidationConfig_ScopeList) + target, ok := that.(*Ldap_ConnectionPool) if !ok { - that2, ok := that.(ExtAuthConfig_AccessTokenValidationConfig_ScopeList) + that2, ok := that.(Ldap_ConnectionPool) if ok { target = &that2 } else { @@ -2956,29 +4837,38 @@ func (m *ExtAuthConfig_AccessTokenValidationConfig_ScopeList) Equal(that interfa return false } - if len(m.GetScope()) != len(target.GetScope()) { - return false + if h, ok := interface{}(m.GetMaxSize()).(equality.Equalizer); ok { + if !h.Equal(target.GetMaxSize()) { + return false + } + } else { + if !proto.Equal(m.GetMaxSize(), target.GetMaxSize()) { + return false + } } - for idx, v := range m.GetScope() { - if strings.Compare(v, target.GetScope()[idx]) != 0 { + if h, ok := interface{}(m.GetInitialSize()).(equality.Equalizer); ok { + if !h.Equal(target.GetInitialSize()) { + return false + } + } else { + if !proto.Equal(m.GetInitialSize(), target.GetInitialSize()) { return false } - } return true } // Equal function -func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) Equal(that interface{}) bool { +func (m *PassThroughHttp_Request) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) + target, ok := that.(*PassThroughHttp_Request) if !ok { - that2, ok := that.(ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) + that2, ok := that.(PassThroughHttp_Request) if ok { target = &that2 } else { @@ -2991,32 +4881,52 @@ func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) Equ return false } - if strings.Compare(m.GetUrl(), target.GetUrl()) != 0 { + if len(m.GetAllowedHeaders()) != len(target.GetAllowedHeaders()) { return false } + for idx, v := range m.GetAllowedHeaders() { - if h, ok := interface{}(m.GetRefreshInterval()).(equality.Equalizer); ok { - if !h.Equal(target.GetRefreshInterval()) { + if strings.Compare(v, target.GetAllowedHeaders()[idx]) != 0 { return false } - } else { - if !proto.Equal(m.GetRefreshInterval(), target.GetRefreshInterval()) { + + } + + if len(m.GetHeadersToAdd()) != len(target.GetHeadersToAdd()) { + return false + } + for k, v := range m.GetHeadersToAdd() { + + if strings.Compare(v, target.GetHeadersToAdd()[k]) != 0 { return false } + + } + + if m.GetPassThroughState() != target.GetPassThroughState() { + return false + } + + if m.GetPassThroughFilterMetadata() != target.GetPassThroughFilterMetadata() { + return false + } + + if m.GetPassThroughBody() != target.GetPassThroughBody() { + return false } return true } // Equal function -func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) Equal(that interface{}) bool { +func (m *PassThroughHttp_Response) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) + target, ok := that.(*PassThroughHttp_Response) if !ok { - that2, ok := that.(ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) + that2, ok := that.(PassThroughHttp_Response) if ok { target = &that2 } else { @@ -3029,44 +4939,38 @@ func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) Equa return false } - if strings.Compare(m.GetInlineString(), target.GetInlineString()) != 0 { + if len(m.GetAllowedUpstreamHeaders()) != len(target.GetAllowedUpstreamHeaders()) { return false } + for idx, v := range m.GetAllowedUpstreamHeaders() { - return true -} + if strings.Compare(v, target.GetAllowedUpstreamHeaders()[idx]) != 0 { + return false + } -// Equal function -func (m *ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) Equal(that interface{}) bool { - if that == nil { - return m == nil } - target, ok := that.(*ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) - if !ok { - that2, ok := that.(ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) - if ok { - target = &that2 - } else { + if len(m.GetAllowedClientHeadersOnDenied()) != len(target.GetAllowedClientHeadersOnDenied()) { + return false + } + for idx, v := range m.GetAllowedClientHeadersOnDenied() { + + if strings.Compare(v, target.GetAllowedClientHeadersOnDenied()[idx]) != 0 { return false } - } - if target == nil { - return m == nil - } else if m == nil { - return false + } - if strings.Compare(m.GetUsername(), target.GetUsername()) != 0 { + if m.GetReadStateFromResponse() != target.GetReadStateFromResponse() { return false } - if len(m.GetMetadata()) != len(target.GetMetadata()) { + if len(m.GetAllowedUpstreamHeadersToOverwrite()) != len(target.GetAllowedUpstreamHeadersToOverwrite()) { return false } - for k, v := range m.GetMetadata() { + for idx, v := range m.GetAllowedUpstreamHeadersToOverwrite() { - if strings.Compare(v, target.GetMetadata()[k]) != 0 { + if strings.Compare(v, target.GetAllowedUpstreamHeadersToOverwrite()[idx]) != 0 { return false } diff --git a/pkg/api/enterprise.gloo.solo.io/v1/auth_config.pb.go b/pkg/api/enterprise.gloo.solo.io/v1/auth_config.pb.go index 13a6c43f7..2fa0f3a51 100644 --- a/pkg/api/enterprise.gloo.solo.io/v1/auth_config.pb.go +++ b/pkg/api/enterprise.gloo.solo.io/v1/auth_config.pb.go @@ -1,30 +1,26 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto package v1 import ( - context "context" reflect "reflect" sync "sync" + unsafe "unsafe" - v2 "github.com/envoyproxy/go-control-plane/envoy/api/v2" - proto "github.com/golang/protobuf/proto" - duration "github.com/golang/protobuf/ptypes/duration" - empty "github.com/golang/protobuf/ptypes/empty" - _struct "github.com/golang/protobuf/ptypes/struct" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" + _ "github.com/solo-io/solo-kit/pkg/api/external/envoy/api/v2" core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + emptypb "google.golang.org/protobuf/types/known/emptypb" + structpb "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -34,10 +30,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Describes the transport protocol version to use when connecting to the ext auth server. type Settings_ApiVersion int32 @@ -83,6 +75,223 @@ func (Settings_ApiVersion) EnumDescriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{2, 0} } +// redis socket types +type RedisOptions_SocketType int32 + +const ( + // TCP connection socket, this is the default. + RedisOptions_TCP RedisOptions_SocketType = 0 + // TLS connection socket. + RedisOptions_TLS RedisOptions_SocketType = 1 +) + +// Enum value maps for RedisOptions_SocketType. +var ( + RedisOptions_SocketType_name = map[int32]string{ + 0: "TCP", + 1: "TLS", + } + RedisOptions_SocketType_value = map[string]int32{ + "TCP": 0, + "TLS": 1, + } +) + +func (x RedisOptions_SocketType) Enum() *RedisOptions_SocketType { + p := new(RedisOptions_SocketType) + *p = x + return p +} + +func (x RedisOptions_SocketType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RedisOptions_SocketType) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_enumTypes[1].Descriptor() +} + +func (RedisOptions_SocketType) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_enumTypes[1] +} + +func (x RedisOptions_SocketType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use RedisOptions_SocketType.Descriptor instead. +func (RedisOptions_SocketType) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{14, 0} +} + +// The SameSite options. The default value is LaxMode. +type UserSession_CookieOptions_SameSite int32 + +const ( + // Default Mode is the same as LaxMode but will not show up in the Cookie Header. This value is ignored. + UserSession_CookieOptions_DefaultMode UserSession_CookieOptions_SameSite = 0 + // Cookies are not sent on normal cross-site subrequests, but are sent when + // navigating to the origin site. + UserSession_CookieOptions_LaxMode UserSession_CookieOptions_SameSite = 1 + // Cookies are sent only in first-party contexts and are not sent along with requests + // initiated by third-party websites. + // + // **Warning**: Do not use this mode if the app and the IdP have different domains. + // In this case, some browsers incorrectly detect the redirect from `/callback` to `/login` + // as a cross-site request. + UserSession_CookieOptions_StrictMode UserSession_CookieOptions_SameSite = 2 + // Cookies are sent in all contexts. Cookie NotSecure must be unset. + UserSession_CookieOptions_NoneMode UserSession_CookieOptions_SameSite = 3 +) + +// Enum value maps for UserSession_CookieOptions_SameSite. +var ( + UserSession_CookieOptions_SameSite_name = map[int32]string{ + 0: "DefaultMode", + 1: "LaxMode", + 2: "StrictMode", + 3: "NoneMode", + } + UserSession_CookieOptions_SameSite_value = map[string]int32{ + "DefaultMode": 0, + "LaxMode": 1, + "StrictMode": 2, + "NoneMode": 3, + } +) + +func (x UserSession_CookieOptions_SameSite) Enum() *UserSession_CookieOptions_SameSite { + p := new(UserSession_CookieOptions_SameSite) + *p = x + return p +} + +func (x UserSession_CookieOptions_SameSite) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (UserSession_CookieOptions_SameSite) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_enumTypes[2].Descriptor() +} + +func (UserSession_CookieOptions_SameSite) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_enumTypes[2] +} + +func (x UserSession_CookieOptions_SameSite) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use UserSession_CookieOptions_SameSite.Descriptor instead. +func (UserSession_CookieOptions_SameSite) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{15, 2, 0} +} + +// The Method used to make the request. +type EndSessionProperties_MethodType int32 + +const ( + // Uses GET method when making the request + EndSessionProperties_GetMethod EndSessionProperties_MethodType = 0 + // Uses POST method when making the request + EndSessionProperties_PostMethod EndSessionProperties_MethodType = 1 +) + +// Enum value maps for EndSessionProperties_MethodType. +var ( + EndSessionProperties_MethodType_name = map[int32]string{ + 0: "GetMethod", + 1: "PostMethod", + } + EndSessionProperties_MethodType_value = map[string]int32{ + "GetMethod": 0, + "PostMethod": 1, + } +) + +func (x EndSessionProperties_MethodType) Enum() *EndSessionProperties_MethodType { + p := new(EndSessionProperties_MethodType) + *p = x + return p +} + +func (x EndSessionProperties_MethodType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (EndSessionProperties_MethodType) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_enumTypes[3].Descriptor() +} + +func (EndSessionProperties_MethodType) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_enumTypes[3] +} + +func (x EndSessionProperties_MethodType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use EndSessionProperties_MethodType.Descriptor instead. +func (EndSessionProperties_MethodType) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{20, 0} +} + +type SslParameters_ProtocolVersion int32 + +const ( + // TLS auto select the optimal settings + SslParameters_TLS_AUTO SslParameters_ProtocolVersion = 0 + // TLS 1.1 + SslParameters_TLSv1_1 SslParameters_ProtocolVersion = 1 + // TLS 1.2 + SslParameters_TLSv1_2 SslParameters_ProtocolVersion = 2 + // TLS 1.3 + SslParameters_TLSv1_3 SslParameters_ProtocolVersion = 3 +) + +// Enum value maps for SslParameters_ProtocolVersion. +var ( + SslParameters_ProtocolVersion_name = map[int32]string{ + 0: "TLS_AUTO", + 1: "TLSv1_1", + 2: "TLSv1_2", + 3: "TLSv1_3", + } + SslParameters_ProtocolVersion_value = map[string]int32{ + "TLS_AUTO": 0, + "TLSv1_1": 1, + "TLSv1_2": 2, + "TLSv1_3": 3, + } +) + +func (x SslParameters_ProtocolVersion) Enum() *SslParameters_ProtocolVersion { + p := new(SslParameters_ProtocolVersion) + *p = x + return p +} + +func (x SslParameters_ProtocolVersion) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SslParameters_ProtocolVersion) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_enumTypes[4].Descriptor() +} + +func (SslParameters_ProtocolVersion) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_enumTypes[4] +} + +func (x SslParameters_ProtocolVersion) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SslParameters_ProtocolVersion.Descriptor instead. +func (SslParameters_ProtocolVersion) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{47, 0} +} + type AuthConfigStatus_State int32 const ( @@ -125,11 +334,11 @@ func (x AuthConfigStatus_State) String() string { } func (AuthConfigStatus_State) Descriptor() protoreflect.EnumDescriptor { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_enumTypes[1].Descriptor() + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_enumTypes[5].Descriptor() } func (AuthConfigStatus_State) Type() protoreflect.EnumType { - return &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_enumTypes[1] + return &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_enumTypes[5] } func (x AuthConfigStatus_State) Number() protoreflect.EnumNumber { @@ -138,37 +347,42 @@ func (x AuthConfigStatus_State) Number() protoreflect.EnumNumber { // Deprecated: Use AuthConfigStatus_State.Descriptor instead. func (AuthConfigStatus_State) EnumDescriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{25, 0} + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{49, 0} } // This is the user-facing auth configuration. When processed by Gloo, certain configuration types (i.a. oauth, opa) // will be translated, e.g. to resolve resource references. See the `ExtAuthConfig.AuthConfig` for the final config // format that will be included in the extauth snapshot. type AuthConfigSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // List of auth configs to be checked for requests on a route referencing this auth config, // By default, every config must be authorized for the entire request to be authorized. This // behavior can be changed by defining names for each config and defining `boolean_expr` below. // // State is shared between successful requests on the chain, i.e., the headers returned from each // successful auth service get appended into the final auth response. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinItems=1 Configs []*AuthConfigSpec_Config `protobuf:"bytes,3,rep,name=configs,proto3" json:"configs,omitempty"` // How to handle processing of named configs within an auth config chain. - // An example config might be: `( basic1 || basic2 || (oidc1 && !oidc2) )` + // An example config might be: `( basic1 \|\| basic2 \|\| (oidc1 && !oidc2) )` // The boolean expression is evaluated left to right but honors parenthesis and short-circuiting. - BooleanExpr *wrappers.StringValue `protobuf:"bytes,10,opt,name=boolean_expr,json=booleanExpr,proto3" json:"boolean_expr,omitempty"` + BooleanExpr *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=boolean_expr,json=booleanExpr,proto3" json:"boolean_expr,omitempty"` + // How the service should handle a redirect response from an OIDC issuer. In the default false mode, + // the redirect will be considered a successful response, and the client will receive a 302 with a location header. + // If this is set to true, the client will instead receive a 401 unauthorized response. This is useful in cases where + // API calls are being made or other such occurrences where the client cannot handle the redirect. + FailOnRedirect bool `protobuf:"varint,11,opt,name=fail_on_redirect,json=failOnRedirect,proto3" json:"fail_on_redirect,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuthConfigSpec) Reset() { *x = AuthConfigSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthConfigSpec) String() string { @@ -179,7 +393,7 @@ func (*AuthConfigSpec) ProtoMessage() {} func (x *AuthConfigSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -201,33 +415,38 @@ func (x *AuthConfigSpec) GetConfigs() []*AuthConfigSpec_Config { return nil } -func (x *AuthConfigSpec) GetBooleanExpr() *wrappers.StringValue { +func (x *AuthConfigSpec) GetBooleanExpr() *wrapperspb.StringValue { if x != nil { return x.BooleanExpr } return nil } +func (x *AuthConfigSpec) GetFailOnRedirect() bool { + if x != nil { + return x.FailOnRedirect + } + return false +} + // Auth configurations defined on virtual hosts, routes, and weighted destinations will be unmarshalled to this message. type ExtAuthExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Spec: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Spec: + // // *ExtAuthExtension_Disable // *ExtAuthExtension_ConfigRef // *ExtAuthExtension_CustomAuth - Spec isExtAuthExtension_Spec `protobuf_oneof:"spec"` + Spec isExtAuthExtension_Spec `protobuf_oneof:"spec"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExtAuthExtension) Reset() { *x = ExtAuthExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExtAuthExtension) String() string { @@ -238,7 +457,7 @@ func (*ExtAuthExtension) ProtoMessage() {} func (x *ExtAuthExtension) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -253,30 +472,36 @@ func (*ExtAuthExtension) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{1} } -func (m *ExtAuthExtension) GetSpec() isExtAuthExtension_Spec { - if m != nil { - return m.Spec +func (x *ExtAuthExtension) GetSpec() isExtAuthExtension_Spec { + if x != nil { + return x.Spec } return nil } func (x *ExtAuthExtension) GetDisable() bool { - if x, ok := x.GetSpec().(*ExtAuthExtension_Disable); ok { - return x.Disable + if x != nil { + if x, ok := x.Spec.(*ExtAuthExtension_Disable); ok { + return x.Disable + } } return false } func (x *ExtAuthExtension) GetConfigRef() *core.ResourceRef { - if x, ok := x.GetSpec().(*ExtAuthExtension_ConfigRef); ok { - return x.ConfigRef + if x != nil { + if x, ok := x.Spec.(*ExtAuthExtension_ConfigRef); ok { + return x.ConfigRef + } } return nil } func (x *ExtAuthExtension) GetCustomAuth() *CustomAuth { - if x, ok := x.GetSpec().(*ExtAuthExtension_CustomAuth); ok { - return x.CustomAuth + if x != nil { + if x, ok := x.Spec.(*ExtAuthExtension_CustomAuth); ok { + return x.CustomAuth + } } return nil } @@ -286,7 +511,7 @@ type isExtAuthExtension_Spec interface { } type ExtAuthExtension_Disable struct { - // Set to true to disable auth on the virtual host/route. + // Set to true to disable auth on the virtual host/route. Disable bool `protobuf:"varint,1,opt,name=disable,proto3,oneof"` } @@ -308,19 +533,19 @@ func (*ExtAuthExtension_CustomAuth) isExtAuthExtension_Spec() {} // Global external auth settings type Settings struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The upstream to ask about auth decisions ExtauthzServerRef *core.ResourceRef `protobuf:"bytes,1,opt,name=extauthz_server_ref,json=extauthzServerRef,proto3" json:"extauthz_server_ref,omitempty"` - // If this is set, communication to the upstream will be via HTTP and not GRPC. - HttpService *HttpService `protobuf:"bytes,2,opt,name=http_service,json=httpService,proto3" json:"http_service,omitempty"` + // Types that are valid to be assigned to ServiceType: + // + // *Settings_HttpService + // *Settings_GrpcService + ServiceType isSettings_ServiceType `protobuf_oneof:"service_type"` // If the auth server trusted id of the user, it will be set in this header. // Specifically this means that this header will be sanitized form the incoming request. UserIdHeader string `protobuf:"bytes,3,opt,name=user_id_header,json=userIdHeader,proto3" json:"user_id_header,omitempty"` // Timeout for the ext auth service to respond. Defaults to 200ms - RequestTimeout *duration.Duration `protobuf:"bytes,4,opt,name=request_timeout,json=requestTimeout,proto3" json:"request_timeout,omitempty"` + RequestTimeout *durationpb.Duration `protobuf:"bytes,4,opt,name=request_timeout,json=requestTimeout,proto3" json:"request_timeout,omitempty"` // In case of a failure or timeout querying the auth server, normally a request is denied. // if this is set to true, the request will be allowed. FailureModeAllow bool `protobuf:"varint,5,opt,name=failure_mode_allow,json=failureModeAllow,proto3" json:"failure_mode_allow,omitempty"` @@ -335,7 +560,6 @@ type Settings struct { // // 3. At least one *authorization response header* is added to the client request, or is used for // altering another client request header. - // ClearRouteCache bool `protobuf:"varint,7,opt,name=clear_route_cache,json=clearRouteCache,proto3" json:"clear_route_cache,omitempty"` // Sets the HTTP status that is returned to the client when there is a network error between the // filter and the authorization server. The default status is HTTP 403 Forbidden. @@ -352,16 +576,16 @@ type Settings struct { TransportApiVersion Settings_ApiVersion `protobuf:"varint,9,opt,name=transport_api_version,json=transportApiVersion,proto3,enum=enterprise.gloo.solo.io.Settings_ApiVersion" json:"transport_api_version,omitempty"` // Optional additional prefix to use when emitting statistics. // This allows to distinguish emitted statistics between configured ext_authz filters in an HTTP filter chain. - StatPrefix string `protobuf:"bytes,10,opt,name=stat_prefix,json=statPrefix,proto3" json:"stat_prefix,omitempty"` + StatPrefix string `protobuf:"bytes,10,opt,name=stat_prefix,json=statPrefix,proto3" json:"stat_prefix,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Settings) Reset() { *x = Settings{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Settings) String() string { @@ -372,7 +596,7 @@ func (*Settings) ProtoMessage() {} func (x *Settings) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -394,9 +618,27 @@ func (x *Settings) GetExtauthzServerRef() *core.ResourceRef { return nil } +func (x *Settings) GetServiceType() isSettings_ServiceType { + if x != nil { + return x.ServiceType + } + return nil +} + func (x *Settings) GetHttpService() *HttpService { if x != nil { - return x.HttpService + if x, ok := x.ServiceType.(*Settings_HttpService); ok { + return x.HttpService + } + } + return nil +} + +func (x *Settings) GetGrpcService() *GrpcService { + if x != nil { + if x, ok := x.ServiceType.(*Settings_GrpcService); ok { + return x.GrpcService + } } return nil } @@ -408,7 +650,7 @@ func (x *Settings) GetUserIdHeader() string { return "" } -func (x *Settings) GetRequestTimeout() *duration.Duration { +func (x *Settings) GetRequestTimeout() *durationpb.Duration { if x != nil { return x.RequestTimeout } @@ -457,24 +699,84 @@ func (x *Settings) GetStatPrefix() string { return "" } -type HttpService struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type isSettings_ServiceType interface { + isSettings_ServiceType() +} + +type Settings_HttpService struct { + // If this is set, communication to the upstream will be via HTTP and not GRPC (default). + HttpService *HttpService `protobuf:"bytes,2,opt,name=http_service,json=httpService,proto3,oneof"` +} + +type Settings_GrpcService struct { + // Optional, if set the communication to the upstream will be via GRPC. + GrpcService *GrpcService `protobuf:"bytes,11,opt,name=grpc_service,json=grpcService,proto3,oneof"` +} + +func (*Settings_HttpService) isSettings_ServiceType() {} + +func (*Settings_GrpcService) isSettings_ServiceType() {} + +type GrpcService struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Set the authority header when calling the GRPC service. + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GrpcService) Reset() { + *x = GrpcService{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GrpcService) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GrpcService) ProtoMessage() {} + +func (x *GrpcService) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GrpcService.ProtoReflect.Descriptor instead. +func (*GrpcService) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{3} +} + +func (x *GrpcService) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} +type HttpService struct { + state protoimpl.MessageState `protogen:"open.v1"` // Sets a prefix to the value of authorization request header *Path*. - PathPrefix string `protobuf:"bytes,1,opt,name=path_prefix,json=pathPrefix,proto3" json:"path_prefix,omitempty"` - Request *HttpService_Request `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` - Response *HttpService_Response `protobuf:"bytes,3,opt,name=response,proto3" json:"response,omitempty"` + PathPrefix string `protobuf:"bytes,1,opt,name=path_prefix,json=pathPrefix,proto3" json:"path_prefix,omitempty"` + Request *HttpService_Request `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` + Response *HttpService_Response `protobuf:"bytes,3,opt,name=response,proto3" json:"response,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HttpService) Reset() { *x = HttpService{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HttpService) String() string { @@ -484,8 +786,8 @@ func (x *HttpService) String() string { func (*HttpService) ProtoMessage() {} func (x *HttpService) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[4] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -497,7 +799,7 @@ func (x *HttpService) ProtoReflect() protoreflect.Message { // Deprecated: Use HttpService.ProtoReflect.Descriptor instead. func (*HttpService) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{3} + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{4} } func (x *HttpService) GetPathPrefix() string { @@ -523,10 +825,7 @@ func (x *HttpService) GetResponse() *HttpService_Response { // Configuration for buffering the request data. type BufferSettings struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Sets the maximum size of a message body that the filter will hold in memory. Envoy will return // *HTTP 413* and will *not* initiate the authorization process when buffer reaches the number // set in this field. Note that this setting will have precedence over failure_mode_allow. @@ -537,16 +836,16 @@ type BufferSettings struct { // filter. AllowPartialMessage bool `protobuf:"varint,2,opt,name=allow_partial_message,json=allowPartialMessage,proto3" json:"allow_partial_message,omitempty"` // When this field is true, Envoy will send the body sent to the external authorization service with raw bytes. - PackAsBytes bool `protobuf:"varint,3,opt,name=pack_as_bytes,json=packAsBytes,proto3" json:"pack_as_bytes,omitempty"` + PackAsBytes bool `protobuf:"varint,3,opt,name=pack_as_bytes,json=packAsBytes,proto3" json:"pack_as_bytes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BufferSettings) Reset() { *x = BufferSettings{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BufferSettings) String() string { @@ -556,8 +855,8 @@ func (x *BufferSettings) String() string { func (*BufferSettings) ProtoMessage() {} func (x *BufferSettings) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[5] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -569,7 +868,7 @@ func (x *BufferSettings) ProtoReflect() protoreflect.Message { // Deprecated: Use BufferSettings.ProtoReflect.Descriptor instead. func (*BufferSettings) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{4} + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{5} } func (x *BufferSettings) GetMaxRequestBytes() uint32 { @@ -596,31 +895,28 @@ func (x *BufferSettings) GetPackAsBytes() bool { // Gloo is not expected to configure the ext auth server in this case. // This is used with custom auth servers. type CustomAuth struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // When a request matches the virtual host, route, or weighted destination on which this configuration is defined, // Gloo will add the given context_extensions to the request that is sent to the external authorization server. // This allows the server to base the auth decision on metadata that you define on the source of the request. // // This attribute is analogous to Envoy's config.filter.http.ext_authz.v2.CheckSettings. See the official - // [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/filter/http/ext_authz/v2/ext_authz.proto.html?highlight=ext_authz#config-filter-http-ext-authz-v2-checksettings) + // [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/ext_authz/v3/ext_authz.proto#envoy-v3-api-msg-extensions-filters-http-ext-authz-v3-checksettings) // for more details. - ContextExtensions map[string]string `protobuf:"bytes,1,rep,name=context_extensions,json=contextExtensions,proto3" json:"context_extensions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ContextExtensions map[string]string `protobuf:"bytes,1,rep,name=context_extensions,json=contextExtensions,proto3" json:"context_extensions,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // [Enterprise-only] // Only required in the case where multiple auth servers are configured in Settings // This name must match a key in the named_extauth Settings. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CustomAuth) Reset() { *x = CustomAuth{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CustomAuth) String() string { @@ -630,8 +926,8 @@ func (x *CustomAuth) String() string { func (*CustomAuth) ProtoMessage() {} func (x *CustomAuth) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[6] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -643,7 +939,7 @@ func (x *CustomAuth) ProtoReflect() protoreflect.Message { // Deprecated: Use CustomAuth.ProtoReflect.Descriptor instead. func (*CustomAuth) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{5} + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{6} } func (x *CustomAuth) GetContextExtensions() map[string]string { @@ -660,28 +956,27 @@ func (x *CustomAuth) GetName() string { return "" } +// **Deprecated**: The pluginAuth config type is deprecated and will be removed in a future release. Use passThroughAuth instead. type AuthPlugin struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Name of the plugin Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Name of the compiled plugin file. If not specified, Gloo Edge will look for an ".so" file with same name as the plugin. PluginFileName string `protobuf:"bytes,2,opt,name=plugin_file_name,json=pluginFileName,proto3" json:"plugin_file_name,omitempty"` // Name of the exported symbol that implements the plugin interface in the plugin. // If not specified, defaults to the name of the plugin - ExportedSymbolName string `protobuf:"bytes,3,opt,name=exported_symbol_name,json=exportedSymbolName,proto3" json:"exported_symbol_name,omitempty"` - Config *_struct.Struct `protobuf:"bytes,4,opt,name=config,proto3" json:"config,omitempty"` + ExportedSymbolName string `protobuf:"bytes,3,opt,name=exported_symbol_name,json=exportedSymbolName,proto3" json:"exported_symbol_name,omitempty"` + // +kubebuilder:validation:Required + Config *structpb.Struct `protobuf:"bytes,4,opt,name=config,proto3" json:"config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuthPlugin) Reset() { *x = AuthPlugin{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthPlugin) String() string { @@ -691,8 +986,8 @@ func (x *AuthPlugin) String() string { func (*AuthPlugin) ProtoMessage() {} func (x *AuthPlugin) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[7] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -704,7 +999,7 @@ func (x *AuthPlugin) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthPlugin.ProtoReflect.Descriptor instead. func (*AuthPlugin) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{6} + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{7} } func (x *AuthPlugin) GetName() string { @@ -728,29 +1023,41 @@ func (x *AuthPlugin) GetExportedSymbolName() string { return "" } -func (x *AuthPlugin) GetConfig() *_struct.Struct { +func (x *AuthPlugin) GetConfig() *structpb.Struct { if x != nil { return x.Config } return nil } +// This is the legacy/simple basic auth config. It supports the APR and SHA-1 hashing algorithms. +// +// When using basic auth, requests can pass only one `Authorization` header. You cannot use basic auth config in +// conjunction with other auth configs that rely on the `Authorization` header as well. In case of such a conflict, +// use a different type of auth config or configure a different header, such as `X-Auth`. type BasicAuth struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Realm string `protobuf:"bytes,1,opt,name=realm,proto3" json:"realm,omitempty"` + Apr *BasicAuth_Apr `protobuf:"bytes,2,opt,name=apr,proto3" json:"apr,omitempty"` + // The encryption type to use to store the password on the server + // If 'encryption' is defined, 'user_source' must be defined and the top level 'apr' field must not be defined or the config will fail validation + Encryption *BasicAuth_EncryptionType `protobuf:"bytes,3,opt,name=encryption,proto3" json:"encryption,omitempty"` + // Source of user credential data + // If 'user_source' is defined, 'encryption' must be defined and the top level 'apr” field must not be defined or the config will fail validation + // + // Types that are valid to be assigned to UserSource: + // + // *BasicAuth_UserList_ + UserSource isBasicAuth_UserSource `protobuf_oneof:"user_source"` unknownFields protoimpl.UnknownFields - - Realm string `protobuf:"bytes,1,opt,name=realm,proto3" json:"realm,omitempty"` - Apr *BasicAuth_Apr `protobuf:"bytes,2,opt,name=apr,proto3" json:"apr,omitempty"` + sizeCache protoimpl.SizeCache } func (x *BasicAuth) Reset() { *x = BasicAuth{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BasicAuth) String() string { @@ -760,8 +1067,8 @@ func (x *BasicAuth) String() string { func (*BasicAuth) ProtoMessage() {} func (x *BasicAuth) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[8] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -773,7 +1080,7 @@ func (x *BasicAuth) ProtoReflect() protoreflect.Message { // Deprecated: Use BasicAuth.ProtoReflect.Descriptor instead. func (*BasicAuth) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{7} + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{8} } func (x *BasicAuth) GetRealm() string { @@ -790,52 +1097,273 @@ func (x *BasicAuth) GetApr() *BasicAuth_Apr { return nil } -// Deprecated: Prefer OAuth2 -type OAuth struct { - state protoimpl.MessageState +func (x *BasicAuth) GetEncryption() *BasicAuth_EncryptionType { + if x != nil { + return x.Encryption + } + return nil +} + +func (x *BasicAuth) GetUserSource() isBasicAuth_UserSource { + if x != nil { + return x.UserSource + } + return nil +} + +func (x *BasicAuth) GetUserList() *BasicAuth_UserList { + if x != nil { + if x, ok := x.UserSource.(*BasicAuth_UserList_); ok { + return x.UserList + } + } + return nil +} + +type isBasicAuth_UserSource interface { + isBasicAuth_UserSource() +} + +type BasicAuth_UserList_ struct { + UserList *BasicAuth_UserList `protobuf:"bytes,4,opt,name=user_list,json=userList,proto3,oneof"` +} + +func (*BasicAuth_UserList_) isBasicAuth_UserSource() {} + +// HMAC is a message authentication technique that can use multiple algorithms for finding credentials and generating signed messages. +// It conforms to https://www.ietf.org/rfc/rfc2104.txt +type HmacAuth struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Configuration for how secrets are stored. + // + // Types that are valid to be assigned to SecretStorage: + // + // *HmacAuth_SecretRefs + SecretStorage isHmacAuth_SecretStorage `protobuf_oneof:"secret_storage"` + // Algorithm to use to turn the request into a hashable string + // + // Types that are valid to be assigned to ImplementationType: + // + // *HmacAuth_ParametersInHeaders + ImplementationType isHmacAuth_ImplementationType `protobuf_oneof:"implementation_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HmacAuth) Reset() { + *x = HmacAuth{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HmacAuth) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HmacAuth) ProtoMessage() {} + +func (x *HmacAuth) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HmacAuth.ProtoReflect.Descriptor instead. +func (*HmacAuth) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{9} +} + +func (x *HmacAuth) GetSecretStorage() isHmacAuth_SecretStorage { + if x != nil { + return x.SecretStorage + } + return nil +} + +func (x *HmacAuth) GetSecretRefs() *SecretRefList { + if x != nil { + if x, ok := x.SecretStorage.(*HmacAuth_SecretRefs); ok { + return x.SecretRefs + } + } + return nil +} + +func (x *HmacAuth) GetImplementationType() isHmacAuth_ImplementationType { + if x != nil { + return x.ImplementationType + } + return nil +} + +func (x *HmacAuth) GetParametersInHeaders() *HmacParametersInHeaders { + if x != nil { + if x, ok := x.ImplementationType.(*HmacAuth_ParametersInHeaders); ok { + return x.ParametersInHeaders + } + } + return nil +} + +type isHmacAuth_SecretStorage interface { + isHmacAuth_SecretStorage() +} + +type HmacAuth_SecretRefs struct { + // +kubebuilder:validation:Required + SecretRefs *SecretRefList `protobuf:"bytes,1,opt,name=secret_refs,json=secretRefs,proto3,oneof"` +} + +func (*HmacAuth_SecretRefs) isHmacAuth_SecretStorage() {} + +type isHmacAuth_ImplementationType interface { + isHmacAuth_ImplementationType() +} + +type HmacAuth_ParametersInHeaders struct { + ParametersInHeaders *HmacParametersInHeaders `protobuf:"bytes,2,opt,name=parameters_in_headers,json=parametersInHeaders,proto3,oneof"` +} + +func (*HmacAuth_ParametersInHeaders) isHmacAuth_ImplementationType() {} + +type SecretRefList struct { + state protoimpl.MessageState `protogen:"open.v1"` + // list of secrets as registered with the issuer + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinItems=1 + SecretRefs []*core.ResourceRef `protobuf:"bytes,1,rep,name=secret_refs,json=secretRefs,proto3" json:"secret_refs,omitempty"` + unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache +} + +func (x *SecretRefList) Reset() { + *x = SecretRefList{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SecretRefList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SecretRefList) ProtoMessage() {} + +func (x *SecretRefList) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SecretRefList.ProtoReflect.Descriptor instead. +func (*SecretRefList) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{10} +} + +func (x *SecretRefList) GetSecretRefs() []*core.ResourceRef { + if x != nil { + return x.SecretRefs + } + return nil +} + +// Extract the HMAC parameters from the HTTP headers and use SHA-1 hashing +type HmacParametersInHeaders struct { + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HmacParametersInHeaders) Reset() { + *x = HmacParametersInHeaders{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HmacParametersInHeaders) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HmacParametersInHeaders) ProtoMessage() {} + +func (x *HmacParametersInHeaders) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} +// Deprecated: Use HmacParametersInHeaders.ProtoReflect.Descriptor instead. +func (*HmacParametersInHeaders) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{11} +} + +// Deprecated: Prefer OAuth2 +type OAuth struct { + state protoimpl.MessageState `protogen:"open.v1"` // your client id as registered with the issuer // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` // your client secret as registered with the issuer // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. ClientSecretRef *core.ResourceRef `protobuf:"bytes,2,opt,name=client_secret_ref,json=clientSecretRef,proto3" json:"client_secret_ref,omitempty"` // The url of the issuer. We will look for OIDC information in issuerUrl+ // ".well-known/openid-configuration" // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. IssuerUrl string `protobuf:"bytes,3,opt,name=issuer_url,json=issuerUrl,proto3" json:"issuer_url,omitempty"` // extra query parameters to apply to the Ext-Auth service's authorization request to the identity provider. // - // Deprecated: Do not use. - AuthEndpointQueryParams map[string]string `protobuf:"bytes,7,rep,name=auth_endpoint_query_params,json=authEndpointQueryParams,proto3" json:"auth_endpoint_query_params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. + AuthEndpointQueryParams map[string]string `protobuf:"bytes,7,rep,name=auth_endpoint_query_params,json=authEndpointQueryParams,proto3" json:"auth_endpoint_query_params,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // we to redirect after successful auth, if we can't determine the original // url this should be your publicly available app url. // - // Deprecated: Do not use. + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. AppUrl string `protobuf:"bytes,4,opt,name=app_url,json=appUrl,proto3" json:"app_url,omitempty"` // a callback path relative to app url that will be used for OIDC callbacks. // needs to not be used by the application // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. CallbackPath string `protobuf:"bytes,5,opt,name=callback_path,json=callbackPath,proto3" json:"callback_path,omitempty"` // Scopes to request in addition to openid scope. // - // Deprecated: Do not use. - Scopes []string `protobuf:"bytes,6,rep,name=scopes,proto3" json:"scopes,omitempty"` + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. + Scopes []string `protobuf:"bytes,6,rep,name=scopes,proto3" json:"scopes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OAuth) Reset() { *x = OAuth{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OAuth) String() string { @@ -845,8 +1373,8 @@ func (x *OAuth) String() string { func (*OAuth) ProtoMessage() {} func (x *OAuth) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[12] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -858,10 +1386,10 @@ func (x *OAuth) ProtoReflect() protoreflect.Message { // Deprecated: Use OAuth.ProtoReflect.Descriptor instead. func (*OAuth) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{8} + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{12} } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. func (x *OAuth) GetClientId() string { if x != nil { return x.ClientId @@ -869,7 +1397,7 @@ func (x *OAuth) GetClientId() string { return "" } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. func (x *OAuth) GetClientSecretRef() *core.ResourceRef { if x != nil { return x.ClientSecretRef @@ -877,7 +1405,7 @@ func (x *OAuth) GetClientSecretRef() *core.ResourceRef { return nil } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. func (x *OAuth) GetIssuerUrl() string { if x != nil { return x.IssuerUrl @@ -885,7 +1413,7 @@ func (x *OAuth) GetIssuerUrl() string { return "" } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. func (x *OAuth) GetAuthEndpointQueryParams() map[string]string { if x != nil { return x.AuthEndpointQueryParams @@ -893,7 +1421,7 @@ func (x *OAuth) GetAuthEndpointQueryParams() map[string]string { return nil } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. func (x *OAuth) GetAppUrl() string { if x != nil { return x.AppUrl @@ -901,7 +1429,7 @@ func (x *OAuth) GetAppUrl() string { return "" } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. func (x *OAuth) GetCallbackPath() string { if x != nil { return x.CallbackPath @@ -909,7 +1437,7 @@ func (x *OAuth) GetCallbackPath() string { return "" } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. func (x *OAuth) GetScopes() []string { if x != nil { return x.Scopes @@ -918,23 +1446,22 @@ func (x *OAuth) GetScopes() []string { } type OAuth2 struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to OauthType: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to OauthType: + // // *OAuth2_OidcAuthorizationCode // *OAuth2_AccessTokenValidation - OauthType isOAuth2_OauthType `protobuf_oneof:"oauth_type"` + // *OAuth2_Oauth2 + OauthType isOAuth2_OauthType `protobuf_oneof:"oauth_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OAuth2) Reset() { *x = OAuth2{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OAuth2) String() string { @@ -944,8 +1471,8 @@ func (x *OAuth2) String() string { func (*OAuth2) ProtoMessage() {} func (x *OAuth2) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[13] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -957,26 +1484,39 @@ func (x *OAuth2) ProtoReflect() protoreflect.Message { // Deprecated: Use OAuth2.ProtoReflect.Descriptor instead. func (*OAuth2) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{9} + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{13} } -func (m *OAuth2) GetOauthType() isOAuth2_OauthType { - if m != nil { - return m.OauthType +func (x *OAuth2) GetOauthType() isOAuth2_OauthType { + if x != nil { + return x.OauthType } return nil } func (x *OAuth2) GetOidcAuthorizationCode() *OidcAuthorizationCode { - if x, ok := x.GetOauthType().(*OAuth2_OidcAuthorizationCode); ok { - return x.OidcAuthorizationCode + if x != nil { + if x, ok := x.OauthType.(*OAuth2_OidcAuthorizationCode); ok { + return x.OidcAuthorizationCode + } } return nil } func (x *OAuth2) GetAccessTokenValidation() *AccessTokenValidation { - if x, ok := x.GetOauthType().(*OAuth2_AccessTokenValidation); ok { - return x.AccessTokenValidation + if x != nil { + if x, ok := x.OauthType.(*OAuth2_AccessTokenValidation); ok { + return x.AccessTokenValidation + } + } + return nil +} + +func (x *OAuth2) GetOauth2() *PlainOAuth2 { + if x != nil { + if x, ok := x.OauthType.(*OAuth2_Oauth2); ok { + return x.Oauth2 + } } return nil } @@ -989,28 +1529,39 @@ type OAuth2_OidcAuthorizationCode struct { // provide issuer location and let gloo handle OIDC flow for you. // requests authorized by validating the contents of ID token. // can also authorize the access token if configured. + // + // +kubebuilder:validation:XValidation:rule="has(self.clientAuthentication) ? !has(self.clientSecretRef) && !has(self.disableClientSecret) : has(self.clientSecretRef) || (has(self.disableClientSecret) && self.disableClientSecret)",message="If clientAuthentication is set, neither clientSecretRef nor disableClientSecret may be set. Otherwise, clientSecretRef must be set or disableClientSecret must be true." OidcAuthorizationCode *OidcAuthorizationCode `protobuf:"bytes,1,opt,name=oidc_authorization_code,json=oidcAuthorizationCode,proto3,oneof"` } type OAuth2_AccessTokenValidation struct { // provide the access token on the request and let gloo handle authorization. // - // according to https://tools.ietf.org/html/rfc6750 you can pass tokens through: + // according to https://datatracker.ietf.org/doc/html/rfc6750 you can pass tokens through: // - form-encoded body parameter. recommended, more likely to appear. e.g.: Authorization: Bearer mytoken123 // - URI query parameter e.g. access_token=mytoken123 // - and (preferably) secure cookies AccessTokenValidation *AccessTokenValidation `protobuf:"bytes,2,opt,name=access_token_validation,json=accessTokenValidation,proto3,oneof"` } +type OAuth2_Oauth2 struct { + // Enterprise-Only: THIS FEATURE IS IN TECH PREVIEW. APIs are versioned as alpha and subject to change. + // provide issuer location and let Gloo handle Oauth2 flow for you. + // requests authorized by validating the contents of access token. + // Prefer to use OIDC for better security. + // + // +kubebuilder:validation:XValidation:rule="has(self.clientSecretRef) || (has(self.disableClientSecret) && self.disableClientSecret)",message="Either clientSecretRef must be set or disableClientSecret must be true" + Oauth2 *PlainOAuth2 `protobuf:"bytes,3,opt,name=oauth2,proto3,oneof"` +} + func (*OAuth2_OidcAuthorizationCode) isOAuth2_OauthType() {} func (*OAuth2_AccessTokenValidation) isOAuth2_OauthType() {} -type RedisOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (*OAuth2_Oauth2) isOAuth2_OauthType() {} +type RedisOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` // address of the redis. can be address:port or unix://path/to/unix.sock Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` // db to use. can leave unset for db 0. @@ -1018,15 +1569,24 @@ type RedisOptions struct { // size of the connection pool. can leave unset for default. // defaults to 10 connections per every CPU PoolSize int32 `protobuf:"varint,3,opt,name=pool_size,json=poolSize,proto3" json:"pool_size,omitempty"` + // enabled with a socket type of TLS. this is the tls cert mount path for this particular host. + // the generic secret can include the keys 'ca.crt', 'tls.crt', and 'tls.key'. + // the secret can contain the root-ca ,'ca.crt', at minimum. If a + // certificate is needed, both the 'tls.crt' and 'tls.key' need to be included. + // reference this to equal the 'mountPath' on the 'redis.certs[x].mountPath' in the helm chart values. + // an example of a mount path is '/certs'. + TlsCertMountPath string `protobuf:"bytes,4,opt,name=tls_cert_mount_path,json=tlsCertMountPath,proto3" json:"tls_cert_mount_path,omitempty"` + // the socket type, default is TCP. + SocketType RedisOptions_SocketType `protobuf:"varint,5,opt,name=socket_type,json=socketType,proto3,enum=enterprise.gloo.solo.io.RedisOptions_SocketType" json:"socket_type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RedisOptions) Reset() { *x = RedisOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RedisOptions) String() string { @@ -1036,8 +1596,8 @@ func (x *RedisOptions) String() string { func (*RedisOptions) ProtoMessage() {} func (x *RedisOptions) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[14] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1049,7 +1609,7 @@ func (x *RedisOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use RedisOptions.ProtoReflect.Descriptor instead. func (*RedisOptions) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{10} + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{14} } func (x *RedisOptions) GetHost() string { @@ -1073,29 +1633,43 @@ func (x *RedisOptions) GetPoolSize() int32 { return 0 } -type UserSession struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *RedisOptions) GetTlsCertMountPath() string { + if x != nil { + return x.TlsCertMountPath + } + return "" +} + +func (x *RedisOptions) GetSocketType() RedisOptions_SocketType { + if x != nil { + return x.SocketType + } + return RedisOptions_TCP +} +type UserSession struct { + state protoimpl.MessageState `protogen:"open.v1"` // should we fail auth flow when failing to get a session from redis, or allow it to continue, // potentially starting a new auth flow and setting a new session. FailOnFetchFailure bool `protobuf:"varint,1,opt,name=fail_on_fetch_failure,json=failOnFetchFailure,proto3" json:"fail_on_fetch_failure,omitempty"` // Set-Cookie options CookieOptions *UserSession_CookieOptions `protobuf:"bytes,2,opt,name=cookie_options,json=cookieOptions,proto3" json:"cookie_options,omitempty"` - // Types that are assignable to Session: + // Types that are valid to be assigned to Session: + // // *UserSession_Cookie // *UserSession_Redis Session isUserSession_Session `protobuf_oneof:"session"` + // the cipher config enables the symmetric key encryption of the cookie values of the user session. + CipherConfig *UserSession_CipherConfig `protobuf:"bytes,5,opt,name=cipher_config,json=cipherConfig,proto3" json:"cipher_config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UserSession) Reset() { *x = UserSession{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UserSession) String() string { @@ -1105,8 +1679,8 @@ func (x *UserSession) String() string { func (*UserSession) ProtoMessage() {} func (x *UserSession) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[15] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1118,7 +1692,7 @@ func (x *UserSession) ProtoReflect() protoreflect.Message { // Deprecated: Use UserSession.ProtoReflect.Descriptor instead. func (*UserSession) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{11} + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{15} } func (x *UserSession) GetFailOnFetchFailure() bool { @@ -1135,23 +1709,34 @@ func (x *UserSession) GetCookieOptions() *UserSession_CookieOptions { return nil } -func (m *UserSession) GetSession() isUserSession_Session { - if m != nil { - return m.Session +func (x *UserSession) GetSession() isUserSession_Session { + if x != nil { + return x.Session } return nil } func (x *UserSession) GetCookie() *UserSession_InternalSession { - if x, ok := x.GetSession().(*UserSession_Cookie); ok { - return x.Cookie + if x != nil { + if x, ok := x.Session.(*UserSession_Cookie); ok { + return x.Cookie + } } return nil } func (x *UserSession) GetRedis() *UserSession_RedisSession { - if x, ok := x.GetSession().(*UserSession_Redis); ok { - return x.Redis + if x != nil { + if x, ok := x.Session.(*UserSession_Redis); ok { + return x.Redis + } + } + return nil +} + +func (x *UserSession) GetCipherConfig() *UserSession_CipherConfig { + if x != nil { + return x.CipherConfig } return nil } @@ -1175,23 +1760,22 @@ func (*UserSession_Cookie) isUserSession_Session() {} func (*UserSession_Redis) isUserSession_Session() {} type HeaderConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // If set, the id token will be forward upstream using this header name. IdTokenHeader string `protobuf:"bytes,1,opt,name=id_token_header,json=idTokenHeader,proto3" json:"id_token_header,omitempty"` // If set, the access token will be forward upstream using this header name. AccessTokenHeader string `protobuf:"bytes,2,opt,name=access_token_header,json=accessTokenHeader,proto3" json:"access_token_header,omitempty"` + // If true, adds the "Bearer" prefix to the upstream access token header value. + UseBearerSchemaForAuthorization *wrapperspb.BoolValue `protobuf:"bytes,3,opt,name=use_bearer_schema_for_authorization,json=useBearerSchemaForAuthorization,proto3" json:"use_bearer_schema_for_authorization,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HeaderConfiguration) Reset() { *x = HeaderConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HeaderConfiguration) String() string { @@ -1201,8 +1785,8 @@ func (x *HeaderConfiguration) String() string { func (*HeaderConfiguration) ProtoMessage() {} func (x *HeaderConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[16] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1214,7 +1798,7 @@ func (x *HeaderConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use HeaderConfiguration.ProtoReflect.Descriptor instead. func (*HeaderConfiguration) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{12} + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{16} } func (x *HeaderConfiguration) GetIdTokenHeader() string { @@ -1231,14 +1815,18 @@ func (x *HeaderConfiguration) GetAccessTokenHeader() string { return "" } +func (x *HeaderConfiguration) GetUseBearerSchemaForAuthorization() *wrapperspb.BoolValue { + if x != nil { + return x.UseBearerSchemaForAuthorization + } + return nil +} + // OIDC configuration is discovered at /.well-known/openid-configuration // The discovery override defines any properties that should override this discovery configuration // https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata type DiscoveryOverride struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // url of the provider authorization endpoint AuthEndpoint string `protobuf:"bytes,1,opt,name=auth_endpoint,json=authEndpoint,proto3" json:"auth_endpoint,omitempty"` // url of the provider token endpoint @@ -1257,15 +1845,19 @@ type DiscoveryOverride struct { AuthMethods []string `protobuf:"bytes,8,rep,name=auth_methods,json=authMethods,proto3" json:"auth_methods,omitempty"` // list of claim types that the provider supports Claims []string `protobuf:"bytes,9,rep,name=claims,proto3" json:"claims,omitempty"` + // url of the provider token revocation endpoint + RevocationEndpoint string `protobuf:"bytes,10,opt,name=revocation_endpoint,json=revocationEndpoint,proto3" json:"revocation_endpoint,omitempty"` + // url of the provider end session endpoint + EndSessionEndpoint string `protobuf:"bytes,11,opt,name=end_session_endpoint,json=endSessionEndpoint,proto3" json:"end_session_endpoint,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DiscoveryOverride) Reset() { *x = DiscoveryOverride{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DiscoveryOverride) String() string { @@ -1275,8 +1867,8 @@ func (x *DiscoveryOverride) String() string { func (*DiscoveryOverride) ProtoMessage() {} func (x *DiscoveryOverride) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[17] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1288,7 +1880,7 @@ func (x *DiscoveryOverride) ProtoReflect() protoreflect.Message { // Deprecated: Use DiscoveryOverride.ProtoReflect.Descriptor instead. func (*DiscoveryOverride) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{13} + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{17} } func (x *DiscoveryOverride) GetAuthEndpoint() string { @@ -1354,7 +1946,21 @@ func (x *DiscoveryOverride) GetClaims() []string { return nil } -// The json web key set (JWKS) (https://tools.ietf.org/html/rfc7517) is discovered at an interval +func (x *DiscoveryOverride) GetRevocationEndpoint() string { + if x != nil { + return x.RevocationEndpoint + } + return "" +} + +func (x *DiscoveryOverride) GetEndSessionEndpoint() string { + if x != nil { + return x.EndSessionEndpoint + } + return "" +} + +// The json web key set (JWKS) (https://datatracker.ietf.org/doc/html/rfc7517) is discovered at an interval // from a remote source. When keys rotate in the remote source, there may be a delay in the // local source picking up those new keys. Therefore, a user could execute a request with a token // that has been signed by a key in the remote JWKS, but the local cache doesn't have the key yet. @@ -1363,24 +1969,22 @@ func (x *DiscoveryOverride) GetClaims() []string { // This policy lets you define the behavior for when a user has a token with a key // not yet in the local cache. type JwksOnDemandCacheRefreshPolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Policy: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Policy: + // // *JwksOnDemandCacheRefreshPolicy_Never // *JwksOnDemandCacheRefreshPolicy_Always // *JwksOnDemandCacheRefreshPolicy_MaxIdpReqPerPollingInterval - Policy isJwksOnDemandCacheRefreshPolicy_Policy `protobuf_oneof:"policy"` + Policy isJwksOnDemandCacheRefreshPolicy_Policy `protobuf_oneof:"policy"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JwksOnDemandCacheRefreshPolicy) Reset() { *x = JwksOnDemandCacheRefreshPolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JwksOnDemandCacheRefreshPolicy) String() string { @@ -1390,8 +1994,8 @@ func (x *JwksOnDemandCacheRefreshPolicy) String() string { func (*JwksOnDemandCacheRefreshPolicy) ProtoMessage() {} func (x *JwksOnDemandCacheRefreshPolicy) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[18] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1403,33 +2007,39 @@ func (x *JwksOnDemandCacheRefreshPolicy) ProtoReflect() protoreflect.Message { // Deprecated: Use JwksOnDemandCacheRefreshPolicy.ProtoReflect.Descriptor instead. func (*JwksOnDemandCacheRefreshPolicy) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{14} + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{18} } -func (m *JwksOnDemandCacheRefreshPolicy) GetPolicy() isJwksOnDemandCacheRefreshPolicy_Policy { - if m != nil { - return m.Policy +func (x *JwksOnDemandCacheRefreshPolicy) GetPolicy() isJwksOnDemandCacheRefreshPolicy_Policy { + if x != nil { + return x.Policy } return nil } -func (x *JwksOnDemandCacheRefreshPolicy) GetNever() *empty.Empty { - if x, ok := x.GetPolicy().(*JwksOnDemandCacheRefreshPolicy_Never); ok { - return x.Never +func (x *JwksOnDemandCacheRefreshPolicy) GetNever() *emptypb.Empty { + if x != nil { + if x, ok := x.Policy.(*JwksOnDemandCacheRefreshPolicy_Never); ok { + return x.Never + } } return nil } -func (x *JwksOnDemandCacheRefreshPolicy) GetAlways() *empty.Empty { - if x, ok := x.GetPolicy().(*JwksOnDemandCacheRefreshPolicy_Always); ok { - return x.Always +func (x *JwksOnDemandCacheRefreshPolicy) GetAlways() *emptypb.Empty { + if x != nil { + if x, ok := x.Policy.(*JwksOnDemandCacheRefreshPolicy_Always); ok { + return x.Always + } } return nil } func (x *JwksOnDemandCacheRefreshPolicy) GetMaxIdpReqPerPollingInterval() uint32 { - if x, ok := x.GetPolicy().(*JwksOnDemandCacheRefreshPolicy_MaxIdpReqPerPollingInterval); ok { - return x.MaxIdpReqPerPollingInterval + if x != nil { + if x, ok := x.Policy.(*JwksOnDemandCacheRefreshPolicy_MaxIdpReqPerPollingInterval); ok { + return x.MaxIdpReqPerPollingInterval + } } return 0 } @@ -1442,7 +2052,7 @@ type JwksOnDemandCacheRefreshPolicy_Never struct { // Never refresh the local JWKS cache on demand. If a key is not in the cache, it is assumed to be malicious. // This is the default policy since we assume that IdPs publish keys before they rotate them, // and frequent polling finds the newest keys. - Never *empty.Empty `protobuf:"bytes,1,opt,name=never,proto3,oneof"` + Never *emptypb.Empty `protobuf:"bytes,1,opt,name=never,proto3,oneof"` } type JwksOnDemandCacheRefreshPolicy_Always struct { @@ -1450,7 +2060,7 @@ type JwksOnDemandCacheRefreshPolicy_Always struct { // NOTE: This should only be done in trusted environments, since missing keys will each trigger // a request to the IdP. Using this in an environment exposed to the internet will allow malicious agents to // execute a DDoS attack by spamming protected endpoints with tokens signed by invalid keys. - Always *empty.Empty `protobuf:"bytes,2,opt,name=always,proto3,oneof"` + Always *emptypb.Empty `protobuf:"bytes,2,opt,name=always,proto3,oneof"` } type JwksOnDemandCacheRefreshPolicy_MaxIdpReqPerPollingInterval struct { @@ -1467,31 +2077,280 @@ func (*JwksOnDemandCacheRefreshPolicy_Always) isJwksOnDemandCacheRefreshPolicy_P func (*JwksOnDemandCacheRefreshPolicy_MaxIdpReqPerPollingInterval) isJwksOnDemandCacheRefreshPolicy_Policy() { } -type OidcAuthorizationCode struct { - state protoimpl.MessageState +type AutoMapFromMetadata struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The namespace from which to map metadata + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AutoMapFromMetadata) Reset() { + *x = AutoMapFromMetadata{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AutoMapFromMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AutoMapFromMetadata) ProtoMessage() {} + +func (x *AutoMapFromMetadata) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AutoMapFromMetadata.ProtoReflect.Descriptor instead. +func (*AutoMapFromMetadata) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{19} +} + +func (x *AutoMapFromMetadata) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +type EndSessionProperties struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The method type used by the end session endpoint, defaults to GET. + MethodType EndSessionProperties_MethodType `protobuf:"varint,1,opt,name=methodType,proto3,enum=enterprise.gloo.solo.io.EndSessionProperties_MethodType" json:"methodType,omitempty"` + unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache +} + +func (x *EndSessionProperties) Reset() { + *x = EndSessionProperties{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EndSessionProperties) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EndSessionProperties) ProtoMessage() {} + +func (x *EndSessionProperties) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EndSessionProperties.ProtoReflect.Descriptor instead. +func (*EndSessionProperties) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{20} +} + +func (x *EndSessionProperties) GetMethodType() EndSessionProperties_MethodType { + if x != nil { + return x.MethodType + } + return EndSessionProperties_GetMethod +} + +// Map a single claim from an OAuth2 or OIDC token to a header in the request to the upstream destination. +type ClaimToHeader struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The claim name from the token, such as `sub`. + Claim string `protobuf:"bytes,1,opt,name=claim,proto3" json:"claim,omitempty"` + // The header to copy the claim to, such as `x-sub`. + Header string `protobuf:"bytes,2,opt,name=header,proto3" json:"header,omitempty"` + // If the header exists, append the claim value to the header (true), or overwrite any existing value (false). The default behavior is to overwrite any existing value (false). + Append bool `protobuf:"varint,3,opt,name=append,proto3" json:"append,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ClaimToHeader) Reset() { + *x = ClaimToHeader{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ClaimToHeader) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ClaimToHeader) ProtoMessage() {} + +func (x *ClaimToHeader) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ClaimToHeader.ProtoReflect.Descriptor instead. +func (*ClaimToHeader) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{21} +} + +func (x *ClaimToHeader) GetClaim() string { + if x != nil { + return x.Claim + } + return "" +} + +func (x *ClaimToHeader) GetHeader() string { + if x != nil { + return x.Header + } + return "" +} + +func (x *ClaimToHeader) GetAppend() bool { + if x != nil { + return x.Append + } + return false +} + +// For apps in Microsoft Azure, configure Microsoft Entra ID as the OpenID Connect (OIDC) provider. +// This way, you can enable distributed claims and caching for when users are members of more than 200 groups. +type Azure struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The client ID for the ExtAuthService app that is registered in MS Entra, + // to access the Microsoft Graph API to retrieve distributed claims. + // This app is NOT the app that you want to configure external auth for. + ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` + // The tenant ID represents the MS Entra organization ID where the ExtAuthService app is registered. + // This tenant ID may or may not be the same as in the top level `OidcAuthorizationCodeConfig`, + // depending on how your Azure account is provisioned. + TenantId string `protobuf:"bytes,2,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` + // The client secret of the ExtAuthService app that is registered with MS Entra to communicate with the MS Graph API. + // The client secret data must be placed in a k8s secret under a key called 'client-secret'. + ClientSecret *core.ResourceRef `protobuf:"bytes,3,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"` + // Redis connection details to cache MS Entra claims. + // This way, you avoid performance issues of accessing the Microsoft Graph API too many times. + // Note that this setting does NOT turn on Redis caching for the user session. + // To turn on Redis user session caching, use the `userSessionConfig` field. + ClaimsCachingOptions *RedisOptions `protobuf:"bytes,4,opt,name=claims_caching_options,json=claimsCachingOptions,proto3" json:"claims_caching_options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Azure) Reset() { + *x = Azure{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Azure) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Azure) ProtoMessage() {} + +func (x *Azure) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Azure.ProtoReflect.Descriptor instead. +func (*Azure) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{22} +} + +func (x *Azure) GetClientId() string { + if x != nil { + return x.ClientId + } + return "" +} + +func (x *Azure) GetTenantId() string { + if x != nil { + return x.TenantId + } + return "" +} + +func (x *Azure) GetClientSecret() *core.ResourceRef { + if x != nil { + return x.ClientSecret + } + return nil +} +func (x *Azure) GetClaimsCachingOptions() *RedisOptions { + if x != nil { + return x.ClaimsCachingOptions + } + return nil +} + +type OidcAuthorizationCode struct { + state protoimpl.MessageState `protogen:"open.v1"` // your client id as registered with the issuer + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` - // your client secret as registered with the issuer + // your client secret as registered with the issuer. + // This is required unless `disable_client_secret` is true + // This field has been deprecated and can be set in the client_secret option of client_authentication + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. ClientSecretRef *core.ResourceRef `protobuf:"bytes,2,opt,name=client_secret_ref,json=clientSecretRef,proto3" json:"client_secret_ref,omitempty"` // The url of the issuer. We will look for OIDC information in issuerUrl+ // ".well-known/openid-configuration" + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 IssuerUrl string `protobuf:"bytes,3,opt,name=issuer_url,json=issuerUrl,proto3" json:"issuer_url,omitempty"` // extra query parameters to apply to the Ext-Auth service's authorization request to the identity provider. // this can be useful for flows such as PKCE (https://www.oauth.com/oauth2-servers/pkce/authorization-request/) // to set the `code_challenge` and `code_challenge_method`. - AuthEndpointQueryParams map[string]string `protobuf:"bytes,4,rep,name=auth_endpoint_query_params,json=authEndpointQueryParams,proto3" json:"auth_endpoint_query_params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + AuthEndpointQueryParams map[string]string `protobuf:"bytes,4,rep,name=auth_endpoint_query_params,json=authEndpointQueryParams,proto3" json:"auth_endpoint_query_params,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // extra query parameters to apply to the Ext-Auth service's token request to the identity provider. // this can be useful for flows such as PKCE (https://www.oauth.com/oauth2-servers/pkce/authorization-request/) // to set the `code_verifier`. - TokenEndpointQueryParams map[string]string `protobuf:"bytes,14,rep,name=token_endpoint_query_params,json=tokenEndpointQueryParams,proto3" json:"token_endpoint_query_params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + TokenEndpointQueryParams map[string]string `protobuf:"bytes,14,rep,name=token_endpoint_query_params,json=tokenEndpointQueryParams,proto3" json:"token_endpoint_query_params,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // where to redirect after successful auth, if we can't determine the original url. // this should be your publicly available app url. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 AppUrl string `protobuf:"bytes,5,opt,name=app_url,json=appUrl,proto3" json:"app_url,omitempty"` // a callback path relative to app url that will be used for OIDC callbacks. // should not be used by the application. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 CallbackPath string `protobuf:"bytes,6,opt,name=callback_path,json=callbackPath,proto3" json:"callback_path,omitempty"` // a path relative to app url that will be used for logging out from an OIDC session. // should not be used by the application. @@ -1509,46 +2368,95 @@ type OidcAuthorizationCode struct { // OIDC configuration is discovered at /.well-known/openid-configuration // The discovery override defines any properties that should override this discovery configuration // For example, the following AuthConfig CRD could be defined as: - // ```yaml - // apiVersion: enterprise.gloo.solo.io/v1 - // kind: AuthConfig - // metadata: - // name: google-oidc - // namespace: gloo-system - // spec: - // configs: - // - oauth: - // app_url: http://localhost:8080 - // callback_path: /callback - // client_id: $CLIENT_ID - // client_secret_ref: - // name: google - // namespace: gloo-system - // issuer_url: https://accounts.google.com - // discovery_override: - // token_endpoint: "https://token.url/gettoken" - // ``` + // + // ```yaml + // apiVersion: enterprise.gloo.solo.io/v1 + // kind: AuthConfig + // metadata: + // name: google-oidc + // namespace: gloo-system + // spec: + // configs: + // - oauth: + // app_url: http://localhost:8080 + // callback_path: /callback + // client_id: $CLIENT_ID + // client_secret_ref: + // name: google + // namespace: gloo-system + // issuer_url: https://accounts.google.com + // discovery_override: + // token_endpoint: "https://token.url/gettoken" + // ``` // // And this will ensure that regardless of what value is discovered at // /.well-known/openid-configuration, "https://token.url/gettoken" will be used as the token endpoint DiscoveryOverride *DiscoveryOverride `protobuf:"bytes,11,opt,name=discovery_override,json=discoveryOverride,proto3" json:"discovery_override,omitempty"` // The interval at which OIDC configuration is discovered at /.well-known/openid-configuration // If not specified, the default value is 30 minutes. - DiscoveryPollInterval *duration.Duration `protobuf:"bytes,12,opt,name=discovery_poll_interval,json=discoveryPollInterval,proto3" json:"discovery_poll_interval,omitempty"` + DiscoveryPollInterval *durationpb.Duration `protobuf:"bytes,12,opt,name=discovery_poll_interval,json=discoveryPollInterval,proto3" json:"discovery_poll_interval,omitempty"` // If a user executes a request with a key that is not found in the JWKS, it could be // that the keys have rotated on the remote source, and not yet in the local cache. // This policy lets you define the behavior for how to refresh the local cache during a request // where an invalid key is provided JwksCacheRefreshPolicy *JwksOnDemandCacheRefreshPolicy `protobuf:"bytes,13,opt,name=jwks_cache_refresh_policy,json=jwksCacheRefreshPolicy,proto3" json:"jwks_cache_refresh_policy,omitempty"` + // DEPRECATED: Prefer the RedisSession.HeaderName field + // If set, the randomly generated session id will be sent to the token endpoint as part of the code exchange + // The session id is used as the key for sessions in Redis + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. + SessionIdHeaderName string `protobuf:"bytes,16,opt,name=session_id_header_name,json=sessionIdHeaderName,proto3" json:"session_id_header_name,omitempty"` + // If set, CallbackPath will be evaluated as a regular expression + ParseCallbackPathAsRegex bool `protobuf:"varint,17,opt,name=parse_callback_path_as_regex,json=parseCallbackPathAsRegex,proto3" json:"parse_callback_path_as_regex,omitempty"` + // If specified, authEndpointQueryParams and tokenEndpointQueryParams will be populated using dynamic metadata values. + // By default parameters will be extracted from the solo_authconfig_oidc namespace + // this behavior can be overridden by explicitly specifying a namespace + AutoMapFromMetadata *AutoMapFromMetadata `protobuf:"bytes,18,opt,name=auto_map_from_metadata,json=autoMapFromMetadata,proto3" json:"auto_map_from_metadata,omitempty"` + // If specified, these are properties defined for the end session endpoint + // specifications. Noted [here](https://openid.net/specs/openid-connect-rpinitiated-1_0.html) + // in the OIDC documentation. + EndSessionProperties *EndSessionProperties `protobuf:"bytes,19,opt,name=end_session_properties,json=endSessionProperties,proto3" json:"end_session_properties,omitempty"` + // Map claims to dynamic metadata keys in the authorization response, such as + // `dynamic_metadata.issuer=iss` and `dynamic_metadata.email=email`. + // Use this approach to enrich the metadata that is passed to upstream services + // so that they can be further processed or used for decision-making. + // Note that metadata keys must be unique, and the claim names must be alphanumeric and use `-` or `_` as separators. + // The metadata live in a namespace specified by the canonical name of the extauth filter (`envoy.filters.http.ext_authz`), + // and the structure of the claim value is preserved in the metadata struct. Dynamic metadata can be viewed in the authorization response. + // You can view the authorization response in the logs of the extauth pod when debug logging is enabled. + // To further process dynamic metadata, you can extract the dynamic metadata keys with an Inja template in a transformation or rate limiting policy. + // For example, to extract a nested `sub` key that is stored under `config_0`, use `{{ dynamic_metadata("config_0:sub", "envoy.filters.http.ext_authz")}}`. + DynamicMetadataFromClaims map[string]string `protobuf:"bytes,20,rep,name=dynamic_metadata_from_claims,json=dynamicMetadataFromClaims,proto3" json:"dynamic_metadata_from_claims,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // If true, do not check for or use the client secret. + // Generally the client secret is required and AuthConfigs will be rejected if it isn't set. + // However certain implementations of the PKCE flow do not use a client secret (including Okta) so this setting allows configuring Oidc without a client secret. + // This field has been deprecated and can be set in the client_secret option of client_authentication + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. + DisableClientSecret *wrapperspb.BoolValue `protobuf:"bytes,21,opt,name=disable_client_secret,json=disableClientSecret,proto3" json:"disable_client_secret,omitempty"` + // Optional: Configuration specific to the OAuth2 access token received and processed by the ext-auth-service. + AccessToken *OidcAuthorizationCode_AccessToken `protobuf:"bytes,23,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` + // Optional: Configuration specific to the OIDC identity token received and processed by the ext-auth-service. + IdentityToken *OidcAuthorizationCode_IdentityToken `protobuf:"bytes,24,opt,name=identity_token,json=identityToken,proto3" json:"identity_token,omitempty"` + // +kubebuilder:validation:XValidation:rule="has(self.clientSecret) || has(self.privateKeyJwt)",message="Must specify clientSecret or privateKeyJwt" + ClientAuthentication *OidcAuthorizationCode_ClientAuthentication `protobuf:"bytes,25,opt,name=client_authentication,json=clientAuthentication,proto3" json:"client_authentication,omitempty"` + // Types that are valid to be assigned to Provider: + // + // *OidcAuthorizationCode_Default_ + // *OidcAuthorizationCode_Azure + Provider isOidcAuthorizationCode_Provider `protobuf_oneof:"Provider"` + // Configuration for front channel logout. This is used to log out the user from multiple apps/clients associated with one OpenId Provider (OP). + // The path is registered with the OP and is called for each app/client that the user is logged into when the logout endpoint is called. + FrontChannelLogout *OidcAuthorizationCode_FrontChannelLogout `protobuf:"bytes,28,opt,name=front_channel_logout,json=frontChannelLogout,proto3" json:"front_channel_logout,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OidcAuthorizationCode) Reset() { *x = OidcAuthorizationCode{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OidcAuthorizationCode) String() string { @@ -1558,8 +2466,8 @@ func (x *OidcAuthorizationCode) String() string { func (*OidcAuthorizationCode) ProtoMessage() {} func (x *OidcAuthorizationCode) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[23] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1571,7 +2479,7 @@ func (x *OidcAuthorizationCode) ProtoReflect() protoreflect.Message { // Deprecated: Use OidcAuthorizationCode.ProtoReflect.Descriptor instead. func (*OidcAuthorizationCode) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{15} + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{23} } func (x *OidcAuthorizationCode) GetClientId() string { @@ -1581,6 +2489,7 @@ func (x *OidcAuthorizationCode) GetClientId() string { return "" } +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. func (x *OidcAuthorizationCode) GetClientSecretRef() *core.ResourceRef { if x != nil { return x.ClientSecretRef @@ -1665,7 +2574,7 @@ func (x *OidcAuthorizationCode) GetDiscoveryOverride() *DiscoveryOverride { return nil } -func (x *OidcAuthorizationCode) GetDiscoveryPollInterval() *duration.Duration { +func (x *OidcAuthorizationCode) GetDiscoveryPollInterval() *durationpb.Duration { if x != nil { return x.DiscoveryPollInterval } @@ -1679,197 +2588,1826 @@ func (x *OidcAuthorizationCode) GetJwksCacheRefreshPolicy() *JwksOnDemandCacheRe return nil } -type AccessTokenValidation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to ValidationType: - // *AccessTokenValidation_IntrospectionUrl - // *AccessTokenValidation_Jwt - // *AccessTokenValidation_Introspection - ValidationType isAccessTokenValidation_ValidationType `protobuf_oneof:"validation_type"` - // The URL for the OIDC userinfo endpoint. - // If provided, the (opaque) access token provided or received from the oauth endpoint - // will be queried and the userinfo response (or cached response) will be added to the - // `AuthorizationRequest` state under the "introspection" key. - // This can be useful to leverage the userinfo response in, for example, an external auth server plugin. - UserinfoUrl string `protobuf:"bytes,4,opt,name=userinfo_url,json=userinfoUrl,proto3" json:"userinfo_url,omitempty"` - // How long the token introspection and userinfo endpoint response for a specific access token should be kept - // in the in-memory cache. The result will be invalidated at this timeout, or at "exp" time from the introspection - // result, whichever comes sooner. If omitted, defaults to 10 minutes. If zero, then no caching will be done. - CacheTimeout *duration.Duration `protobuf:"bytes,5,opt,name=cache_timeout,json=cacheTimeout,proto3" json:"cache_timeout,omitempty"` - // Optional criteria for validating the scopes of a token. - // - // Types that are assignable to ScopeValidation: - // *AccessTokenValidation_RequiredScopes - ScopeValidation isAccessTokenValidation_ScopeValidation `protobuf_oneof:"scope_validation"` -} - -func (x *AccessTokenValidation) Reset() { - *x = AccessTokenValidation{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. +func (x *OidcAuthorizationCode) GetSessionIdHeaderName() string { + if x != nil { + return x.SessionIdHeaderName } + return "" } -func (x *AccessTokenValidation) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AccessTokenValidation) ProtoMessage() {} - -func (x *AccessTokenValidation) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *OidcAuthorizationCode) GetParseCallbackPathAsRegex() bool { + if x != nil { + return x.ParseCallbackPathAsRegex } - return mi.MessageOf(x) + return false } -// Deprecated: Use AccessTokenValidation.ProtoReflect.Descriptor instead. -func (*AccessTokenValidation) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{16} +func (x *OidcAuthorizationCode) GetAutoMapFromMetadata() *AutoMapFromMetadata { + if x != nil { + return x.AutoMapFromMetadata + } + return nil } -func (m *AccessTokenValidation) GetValidationType() isAccessTokenValidation_ValidationType { - if m != nil { - return m.ValidationType +func (x *OidcAuthorizationCode) GetEndSessionProperties() *EndSessionProperties { + if x != nil { + return x.EndSessionProperties } return nil } -// Deprecated: Do not use. -func (x *AccessTokenValidation) GetIntrospectionUrl() string { - if x, ok := x.GetValidationType().(*AccessTokenValidation_IntrospectionUrl); ok { - return x.IntrospectionUrl +func (x *OidcAuthorizationCode) GetDynamicMetadataFromClaims() map[string]string { + if x != nil { + return x.DynamicMetadataFromClaims } - return "" + return nil } -func (x *AccessTokenValidation) GetJwt() *AccessTokenValidation_JwtValidation { - if x, ok := x.GetValidationType().(*AccessTokenValidation_Jwt); ok { - return x.Jwt +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. +func (x *OidcAuthorizationCode) GetDisableClientSecret() *wrapperspb.BoolValue { + if x != nil { + return x.DisableClientSecret } return nil } -func (x *AccessTokenValidation) GetIntrospection() *AccessTokenValidation_IntrospectionValidation { - if x, ok := x.GetValidationType().(*AccessTokenValidation_Introspection); ok { - return x.Introspection +func (x *OidcAuthorizationCode) GetAccessToken() *OidcAuthorizationCode_AccessToken { + if x != nil { + return x.AccessToken } return nil } -func (x *AccessTokenValidation) GetUserinfoUrl() string { +func (x *OidcAuthorizationCode) GetIdentityToken() *OidcAuthorizationCode_IdentityToken { if x != nil { - return x.UserinfoUrl + return x.IdentityToken } - return "" + return nil } -func (x *AccessTokenValidation) GetCacheTimeout() *duration.Duration { +func (x *OidcAuthorizationCode) GetClientAuthentication() *OidcAuthorizationCode_ClientAuthentication { if x != nil { - return x.CacheTimeout + return x.ClientAuthentication } return nil } -func (m *AccessTokenValidation) GetScopeValidation() isAccessTokenValidation_ScopeValidation { - if m != nil { - return m.ScopeValidation +func (x *OidcAuthorizationCode) GetProvider() isOidcAuthorizationCode_Provider { + if x != nil { + return x.Provider + } + return nil +} + +func (x *OidcAuthorizationCode) GetDefault() *OidcAuthorizationCode_Default { + if x != nil { + if x, ok := x.Provider.(*OidcAuthorizationCode_Default_); ok { + return x.Default + } + } + return nil +} + +func (x *OidcAuthorizationCode) GetAzure() *Azure { + if x != nil { + if x, ok := x.Provider.(*OidcAuthorizationCode_Azure); ok { + return x.Azure + } + } + return nil +} + +func (x *OidcAuthorizationCode) GetFrontChannelLogout() *OidcAuthorizationCode_FrontChannelLogout { + if x != nil { + return x.FrontChannelLogout + } + return nil +} + +type isOidcAuthorizationCode_Provider interface { + isOidcAuthorizationCode_Provider() +} + +type OidcAuthorizationCode_Default_ struct { + Default *OidcAuthorizationCode_Default `protobuf:"bytes,26,opt,name=default,proto3,oneof"` +} + +type OidcAuthorizationCode_Azure struct { + Azure *Azure `protobuf:"bytes,27,opt,name=azure,proto3,oneof"` +} + +func (*OidcAuthorizationCode_Default_) isOidcAuthorizationCode_Provider() {} + +func (*OidcAuthorizationCode_Azure) isOidcAuthorizationCode_Provider() {} + +type PlainOAuth2 struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Your client ID as registered with the issuer + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` + // Your client secret as registered with the issuer. + // This is required unless `disable_client_secret` is set. + ClientSecretRef *core.ResourceRef `protobuf:"bytes,2,opt,name=client_secret_ref,json=clientSecretRef,proto3" json:"client_secret_ref,omitempty"` + // Extra query parameters to apply to the Ext-Auth service's authorization request to the identity provider. + // These parameters can be useful for flows such as [PKCE](https://www.oauth.com/oauth2-servers/pkce/authorization-request/) + // to set the `code_challenge` and `code_challenge_method`. + AuthEndpointQueryParams map[string]string `protobuf:"bytes,3,rep,name=auth_endpoint_query_params,json=authEndpointQueryParams,proto3" json:"auth_endpoint_query_params,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Where to redirect after successful auth, if Gloo can't determine the original URL. + // Set this field to your publicly available app URL. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + AppUrl string `protobuf:"bytes,4,opt,name=app_url,json=appUrl,proto3" json:"app_url,omitempty"` + // A callback path relative to the app URL to be used for OAuth2 callbacks. + // Do not use this path in the application itself. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + CallbackPath string `protobuf:"bytes,5,opt,name=callback_path,json=callbackPath,proto3" json:"callback_path,omitempty"` + // Scopes to request for. + Scopes []string `protobuf:"bytes,6,rep,name=scopes,proto3" json:"scopes,omitempty"` + // Configuration related to the user session. + Session *UserSession `protobuf:"bytes,7,opt,name=session,proto3" json:"session,omitempty"` + // A path relative to the app URL to use for logging out from an OAuth2 session. + // Do not use this path in the application itself. + // If not provided, logout functionality is disabled. + LogoutPath string `protobuf:"bytes,8,opt,name=logout_path,json=logoutPath,proto3" json:"logout_path,omitempty"` + // Extra query parameters to apply to the Ext-Auth service's token request to the identity provider. + // These parameters can be useful for flows such as [PKCE](https://www.oauth.com/oauth2-servers/pkce/authorization-request/) + // to set the `code_verifier`. + TokenEndpointQueryParams map[string]string `protobuf:"bytes,9,rep,name=token_endpoint_query_params,json=tokenEndpointQueryParams,proto3" json:"token_endpoint_query_params,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // URL to redirect to after logout. + // Set this field to a publicly available URL. If not provided, this value defaults to the `app_url` value. + AfterLogoutUrl string `protobuf:"bytes,10,opt,name=after_logout_url,json=afterLogoutUrl,proto3" json:"after_logout_url,omitempty"` + // The URL of the provider authorization endpoint. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + AuthEndpoint string `protobuf:"bytes,11,opt,name=auth_endpoint,json=authEndpoint,proto3" json:"auth_endpoint,omitempty"` + // The URL of the provider token endpoint. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + TokenEndpoint string `protobuf:"bytes,12,opt,name=token_endpoint,json=tokenEndpoint,proto3" json:"token_endpoint,omitempty"` + // The URL of the provider token revocation endpoint. + // For more information, refer to https://www.rfc-editor.org/rfc/rfc7009. + RevocationEndpoint string `protobuf:"bytes,13,opt,name=revocation_endpoint,json=revocationEndpoint,proto3" json:"revocation_endpoint,omitempty"` + // If true, do not check for or use the client secret. + // Generally the client secret is required and AuthConfigs will be rejected if it isn't set. + // However certain implementations of the PKCE flow do not use a client secret (including Okta) so this setting allows configuring Oauth2 without a client secret. + DisableClientSecret *wrapperspb.BoolValue `protobuf:"bytes,14,opt,name=disable_client_secret,json=disableClientSecret,proto3" json:"disable_client_secret,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlainOAuth2) Reset() { + *x = PlainOAuth2{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlainOAuth2) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlainOAuth2) ProtoMessage() {} + +func (x *PlainOAuth2) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlainOAuth2.ProtoReflect.Descriptor instead. +func (*PlainOAuth2) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{24} +} + +func (x *PlainOAuth2) GetClientId() string { + if x != nil { + return x.ClientId + } + return "" +} + +func (x *PlainOAuth2) GetClientSecretRef() *core.ResourceRef { + if x != nil { + return x.ClientSecretRef + } + return nil +} + +func (x *PlainOAuth2) GetAuthEndpointQueryParams() map[string]string { + if x != nil { + return x.AuthEndpointQueryParams + } + return nil +} + +func (x *PlainOAuth2) GetAppUrl() string { + if x != nil { + return x.AppUrl + } + return "" +} + +func (x *PlainOAuth2) GetCallbackPath() string { + if x != nil { + return x.CallbackPath + } + return "" +} + +func (x *PlainOAuth2) GetScopes() []string { + if x != nil { + return x.Scopes + } + return nil +} + +func (x *PlainOAuth2) GetSession() *UserSession { + if x != nil { + return x.Session + } + return nil +} + +func (x *PlainOAuth2) GetLogoutPath() string { + if x != nil { + return x.LogoutPath + } + return "" +} + +func (x *PlainOAuth2) GetTokenEndpointQueryParams() map[string]string { + if x != nil { + return x.TokenEndpointQueryParams + } + return nil +} + +func (x *PlainOAuth2) GetAfterLogoutUrl() string { + if x != nil { + return x.AfterLogoutUrl + } + return "" +} + +func (x *PlainOAuth2) GetAuthEndpoint() string { + if x != nil { + return x.AuthEndpoint + } + return "" +} + +func (x *PlainOAuth2) GetTokenEndpoint() string { + if x != nil { + return x.TokenEndpoint + } + return "" +} + +func (x *PlainOAuth2) GetRevocationEndpoint() string { + if x != nil { + return x.RevocationEndpoint + } + return "" +} + +func (x *PlainOAuth2) GetDisableClientSecret() *wrapperspb.BoolValue { + if x != nil { + return x.DisableClientSecret + } + return nil +} + +// Defines how JSON Web Token (JWT) access tokens are validated. +// +// Tokens are validated using a JSON Web Key Set (as defined in +// [Section 5 of RFC7517](https://datatracker.ietf.org/doc/html/rfc7517#section-5)), +// which can be either inlined in the configuration or fetched from a remote location via HTTP. +// Any keys in the JWKS that are not intended for signature verification (i.e. whose +// ["use" parameter](https://datatracker.ietf.org/doc/html/rfc7517#section-4.2) is not "sig") +// will be ignored by the system, as will keys that do not specify a +// ["kid" (Key ID) parameter](https://datatracker.ietf.org/doc/html/rfc7517#section-4.2). +// +// The JWT to be validated must define non-empty "kid" and "alg" headers. The "kid" header +// determines which key in the JWKS will be used to verify the signature of the token; +// if no matching key is found, the token will be rejected. +// +// If present, the server will verify the "exp", "iat", and "nbf" standard JWT claims. +// Validation of the "iss" claim and of token scopes can be configured as well. +// If the JWT has been successfully validated, its set of claims will be added to the +// `AuthorizationRequest` state under the "jwtAccessToken" key. +type JwtValidation struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to JwksSourceSpecifier: + // + // *JwtValidation_RemoteJwks_ + // *JwtValidation_LocalJwks_ + JwksSourceSpecifier isJwtValidation_JwksSourceSpecifier `protobuf_oneof:"jwks_source_specifier"` + // Allow only tokens that have been issued by this principal (i.e. whose "iss" claim matches this value). + // If empty, issuer validation will be skipped. + Issuer string `protobuf:"bytes,3,opt,name=issuer,proto3" json:"issuer,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JwtValidation) Reset() { + *x = JwtValidation{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JwtValidation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JwtValidation) ProtoMessage() {} + +func (x *JwtValidation) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JwtValidation.ProtoReflect.Descriptor instead. +func (*JwtValidation) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{25} +} + +func (x *JwtValidation) GetJwksSourceSpecifier() isJwtValidation_JwksSourceSpecifier { + if x != nil { + return x.JwksSourceSpecifier + } + return nil +} + +func (x *JwtValidation) GetRemoteJwks() *JwtValidation_RemoteJwks { + if x != nil { + if x, ok := x.JwksSourceSpecifier.(*JwtValidation_RemoteJwks_); ok { + return x.RemoteJwks + } + } + return nil +} + +func (x *JwtValidation) GetLocalJwks() *JwtValidation_LocalJwks { + if x != nil { + if x, ok := x.JwksSourceSpecifier.(*JwtValidation_LocalJwks_); ok { + return x.LocalJwks + } + } + return nil +} + +func (x *JwtValidation) GetIssuer() string { + if x != nil { + return x.Issuer + } + return "" +} + +type isJwtValidation_JwksSourceSpecifier interface { + isJwtValidation_JwksSourceSpecifier() +} + +type JwtValidation_RemoteJwks_ struct { + // Fetches the JWKS from a remote location. + RemoteJwks *JwtValidation_RemoteJwks `protobuf:"bytes,1,opt,name=remote_jwks,json=remoteJwks,proto3,oneof"` +} + +type JwtValidation_LocalJwks_ struct { + // Loads the JWKS from a local data source. + LocalJwks *JwtValidation_LocalJwks `protobuf:"bytes,2,opt,name=local_jwks,json=localJwks,proto3,oneof"` +} + +func (*JwtValidation_RemoteJwks_) isJwtValidation_JwksSourceSpecifier() {} + +func (*JwtValidation_LocalJwks_) isJwtValidation_JwksSourceSpecifier() {} + +// Defines how (opaque) access tokens, received from the oauth authorization endpoint, are validated +// [OAuth2.0 Token Introspection](https://datatracker.ietf.org/doc/html/rfc7662) +// +// If the token introspection url requires client authentication, both the client_id and client_secret +// are required. Unless disable_client_secret is set, when only one is provided, the config will be rejected. +// These values will be encoded in a basic auth header in order to authenticate the client. +type IntrospectionValidation struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The URL for the [OAuth2.0 Token Introspection](https://datatracker.ietf.org/doc/html/rfc7662) endpoint. + // If provided, the (opaque) access token provided or received from the oauth authorization endpoint + // will be validated against this endpoint, or locally cached responses for this access token. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + IntrospectionUrl string `protobuf:"bytes,1,opt,name=introspection_url,json=introspectionUrl,proto3" json:"introspection_url,omitempty"` + // Your client id as registered with the issuer. + // Optional: Use if the token introspection url requires client authentication. + ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` + // Your client secret as registered with the issuer. + // Optional: Use if the token introspection url requires client authentication. + ClientSecretRef *core.ResourceRef `protobuf:"bytes,3,opt,name=client_secret_ref,json=clientSecretRef,proto3" json:"client_secret_ref,omitempty"` + // The name of the [introspection response](https://datatracker.ietf.org/doc/html/rfc7662#section-2.2) + // attribute that contains the ID of the resource owner (e.g. `sub`, `username`). + // If specified, the external auth server will use the value of the attribute as the identifier of the + // authenticated user and add it to the request headers and/or dynamic metadata (depending on how the + // server is configured); if the field is set and the attribute cannot be found, the request will be denied. + // This field is optional and by default the server will not try to derive the user ID. + UserIdAttributeName string `protobuf:"bytes,4,opt,name=user_id_attribute_name,json=userIdAttributeName,proto3" json:"user_id_attribute_name,omitempty"` + // Allows setting a client id but not a client secret. + DisableClientSecret *wrapperspb.BoolValue `protobuf:"bytes,5,opt,name=disable_client_secret,json=disableClientSecret,proto3" json:"disable_client_secret,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *IntrospectionValidation) Reset() { + *x = IntrospectionValidation{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *IntrospectionValidation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IntrospectionValidation) ProtoMessage() {} + +func (x *IntrospectionValidation) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IntrospectionValidation.ProtoReflect.Descriptor instead. +func (*IntrospectionValidation) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{26} +} + +func (x *IntrospectionValidation) GetIntrospectionUrl() string { + if x != nil { + return x.IntrospectionUrl + } + return "" +} + +func (x *IntrospectionValidation) GetClientId() string { + if x != nil { + return x.ClientId + } + return "" +} + +func (x *IntrospectionValidation) GetClientSecretRef() *core.ResourceRef { + if x != nil { + return x.ClientSecretRef + } + return nil +} + +func (x *IntrospectionValidation) GetUserIdAttributeName() string { + if x != nil { + return x.UserIdAttributeName + } + return "" +} + +func (x *IntrospectionValidation) GetDisableClientSecret() *wrapperspb.BoolValue { + if x != nil { + return x.DisableClientSecret + } + return nil +} + +type AccessTokenValidation struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to ValidationType: + // + // *AccessTokenValidation_IntrospectionUrl + // *AccessTokenValidation_Jwt + // *AccessTokenValidation_Introspection + ValidationType isAccessTokenValidation_ValidationType `protobuf_oneof:"validation_type"` + // The URL for the OIDC userinfo endpoint. + // If provided, the (opaque) access token provided or received from the oauth endpoint + // will be queried and the userinfo response (or cached response) will be added to the + // `AuthorizationRequest` state under the "introspection" key. + // This can be useful to leverage the userinfo response in, for example, an external auth server plugin. + UserinfoUrl string `protobuf:"bytes,4,opt,name=userinfo_url,json=userinfoUrl,proto3" json:"userinfo_url,omitempty"` + // How long the token introspection and userinfo endpoint response for a specific access token should be kept + // in the in-memory cache. The result will be invalidated at this timeout, or at "exp" time from the introspection + // result, whichever comes sooner. If omitted, defaults to 10 minutes. If zero, then no caching will be done. + CacheTimeout *durationpb.Duration `protobuf:"bytes,5,opt,name=cache_timeout,json=cacheTimeout,proto3" json:"cache_timeout,omitempty"` + // Optional criteria for validating the scopes of a token. + // + // Types that are valid to be assigned to ScopeValidation: + // + // *AccessTokenValidation_RequiredScopes + ScopeValidation isAccessTokenValidation_ScopeValidation `protobuf_oneof:"scope_validation"` + // Map claims to dynamic metadata keys in the authorization response, such as + // 'dynamic_metadata_from_claims.issuer=iss' and 'dynamic_metadata_from_claims.email=email'. + // Use this approach to enrich the metadata that is passed to upstream services + // so that they can be further processed or used for decision-making. + // Note that metadata keys must be unique, and the claim names must be alphanumeric and use `-` or `_` as separators. + // The metadata live in a namespace specified by the canonical name of the extauth filter (`envoy.filters.http.ext_authz`), + // and the structure of the claim value is preserved in the metadata struct. Dynamic metadata can be viewed in the authorization response. + // You can view the authorization response in the logs of the extauth pod when debug logging is enabled. + // To further process dynamic metadata, you can extract the dynamic metadata keys with an Inja template in a transformation or rate limiting policy. + // For example, to extract a nested `sub` key that is stored under `config_0`, use `{{ dynamic_metadata("config_0:sub", "envoy.filters.http.ext_authz")}}`. + DynamicMetadataFromClaims map[string]string `protobuf:"bytes,7,rep,name=dynamic_metadata_from_claims,json=dynamicMetadataFromClaims,proto3" json:"dynamic_metadata_from_claims,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // A list of claims to be mapped from the JWT token received by ext-auth-service to an upstream destination. + // This option is not supported for opaque tokens. + ClaimsToHeaders []*ClaimToHeader `protobuf:"bytes,8,rep,name=claims_to_headers,json=claimsToHeaders,proto3" json:"claims_to_headers,omitempty"` + // Types that are valid to be assigned to Provider: + // + // *AccessTokenValidation_Default_ + // *AccessTokenValidation_Azure + Provider isAccessTokenValidation_Provider `protobuf_oneof:"Provider"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AccessTokenValidation) Reset() { + *x = AccessTokenValidation{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AccessTokenValidation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AccessTokenValidation) ProtoMessage() {} + +func (x *AccessTokenValidation) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AccessTokenValidation.ProtoReflect.Descriptor instead. +func (*AccessTokenValidation) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{27} +} + +func (x *AccessTokenValidation) GetValidationType() isAccessTokenValidation_ValidationType { + if x != nil { + return x.ValidationType + } + return nil +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. +func (x *AccessTokenValidation) GetIntrospectionUrl() string { + if x != nil { + if x, ok := x.ValidationType.(*AccessTokenValidation_IntrospectionUrl); ok { + return x.IntrospectionUrl + } + } + return "" +} + +func (x *AccessTokenValidation) GetJwt() *JwtValidation { + if x != nil { + if x, ok := x.ValidationType.(*AccessTokenValidation_Jwt); ok { + return x.Jwt + } + } + return nil +} + +func (x *AccessTokenValidation) GetIntrospection() *IntrospectionValidation { + if x != nil { + if x, ok := x.ValidationType.(*AccessTokenValidation_Introspection); ok { + return x.Introspection + } + } + return nil +} + +func (x *AccessTokenValidation) GetUserinfoUrl() string { + if x != nil { + return x.UserinfoUrl + } + return "" +} + +func (x *AccessTokenValidation) GetCacheTimeout() *durationpb.Duration { + if x != nil { + return x.CacheTimeout + } + return nil +} + +func (x *AccessTokenValidation) GetScopeValidation() isAccessTokenValidation_ScopeValidation { + if x != nil { + return x.ScopeValidation } return nil } func (x *AccessTokenValidation) GetRequiredScopes() *AccessTokenValidation_ScopeList { - if x, ok := x.GetScopeValidation().(*AccessTokenValidation_RequiredScopes); ok { - return x.RequiredScopes + if x != nil { + if x, ok := x.ScopeValidation.(*AccessTokenValidation_RequiredScopes); ok { + return x.RequiredScopes + } + } + return nil +} + +func (x *AccessTokenValidation) GetDynamicMetadataFromClaims() map[string]string { + if x != nil { + return x.DynamicMetadataFromClaims + } + return nil +} + +func (x *AccessTokenValidation) GetClaimsToHeaders() []*ClaimToHeader { + if x != nil { + return x.ClaimsToHeaders + } + return nil +} + +func (x *AccessTokenValidation) GetProvider() isAccessTokenValidation_Provider { + if x != nil { + return x.Provider + } + return nil +} + +func (x *AccessTokenValidation) GetDefault() *AccessTokenValidation_Default { + if x != nil { + if x, ok := x.Provider.(*AccessTokenValidation_Default_); ok { + return x.Default + } + } + return nil +} + +func (x *AccessTokenValidation) GetAzure() *Azure { + if x != nil { + if x, ok := x.Provider.(*AccessTokenValidation_Azure); ok { + return x.Azure + } + } + return nil +} + +type isAccessTokenValidation_ValidationType interface { + isAccessTokenValidation_ValidationType() +} + +type AccessTokenValidation_IntrospectionUrl struct { + // The URL for the [OAuth2.0 Token Introspection](https://datatracker.ietf.org/doc/html/rfc7662) endpoint. + // If provided, the (opaque) access token provided or received from the oauth authorization endpoint + // will be validated against this endpoint, or locally cached responses for this access token. + // This field is deprecated as it does not support authenticated introspection requests + // + // +kubebuilder:validation:MinLength=1 + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. + IntrospectionUrl string `protobuf:"bytes,1,opt,name=introspection_url,json=introspectionUrl,proto3,oneof"` +} + +type AccessTokenValidation_Jwt struct { + // Validate access tokens that conform to the + // [JSON Web Token (JWT)](https://datatracker.ietf.org/doc/rfc7662/) specification. + Jwt *JwtValidation `protobuf:"bytes,2,opt,name=jwt,proto3,oneof"` +} + +type AccessTokenValidation_Introspection struct { + // Defines how (opaque) access tokens, received from the oauth authorization endpoint, are validated + // [OAuth2.0 Token Introspection](https://datatracker.ietf.org/doc/html/rfc7662) specification. + // + // +kubebuilder:validation:XValidation:rule="has(self.clientId) && size(self.clientId) > 0 ? has(self.clientSecretRef) || (has(self.disableClientSecret) && self.disableClientSecret) : !has(self.clientSecretRef)",message="If clientId is set, clientSecretRef must be set or disableClientSecret must be true. Otherwise, clientSecretRef must not be set." + Introspection *IntrospectionValidation `protobuf:"bytes,3,opt,name=introspection,proto3,oneof"` +} + +func (*AccessTokenValidation_IntrospectionUrl) isAccessTokenValidation_ValidationType() {} + +func (*AccessTokenValidation_Jwt) isAccessTokenValidation_ValidationType() {} + +func (*AccessTokenValidation_Introspection) isAccessTokenValidation_ValidationType() {} + +type isAccessTokenValidation_ScopeValidation interface { + isAccessTokenValidation_ScopeValidation() +} + +type AccessTokenValidation_RequiredScopes struct { + // Require access token to have all of the scopes in the given list. + // This configuration applies to both opaque and JWT tokens. In the case of opaque tokens, + // this will check the scopes returned in the "scope" member of introspection response + // (as described in [Section 2.2 of RFC7662](https://datatracker.ietf.org/doc/html/rfc7662#section-2.2). + // In case of JWTs the scopes to be validated are expected to be contained in the "scope" claim of the + // token in the form of a space-separated string. + // Omitting this field means that scope validation will be skipped. + RequiredScopes *AccessTokenValidation_ScopeList `protobuf:"bytes,6,opt,name=required_scopes,json=requiredScopes,proto3,oneof"` +} + +func (*AccessTokenValidation_RequiredScopes) isAccessTokenValidation_ScopeValidation() {} + +type isAccessTokenValidation_Provider interface { + isAccessTokenValidation_Provider() +} + +type AccessTokenValidation_Default_ struct { + Default *AccessTokenValidation_Default `protobuf:"bytes,9,opt,name=default,proto3,oneof"` +} + +type AccessTokenValidation_Azure struct { + Azure *Azure `protobuf:"bytes,10,opt,name=azure,proto3,oneof"` +} + +func (*AccessTokenValidation_Default_) isAccessTokenValidation_Provider() {} + +func (*AccessTokenValidation_Azure) isAccessTokenValidation_Provider() {} + +type OauthSecret struct { + state protoimpl.MessageState `protogen:"open.v1"` + ClientSecret string `protobuf:"bytes,1,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OauthSecret) Reset() { + *x = OauthSecret{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OauthSecret) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OauthSecret) ProtoMessage() {} + +func (x *OauthSecret) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OauthSecret.ProtoReflect.Descriptor instead. +func (*OauthSecret) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{28} +} + +func (x *OauthSecret) GetClientSecret() string { + if x != nil { + return x.ClientSecret + } + return "" +} + +// Defines how API keys are validated. +// +// When the provided API key token has been successfully validated, it's token will be +// added to the `AuthorizationRequest` state under the "api_key_value" key name. +type ApiKeyAuth struct { + state protoimpl.MessageState `protogen:"open.v1"` + // DEPRECATED: use K8sSecretApiKeyStorage to configure secrets storage backend. Values here + // will be overwritten if values are specified in the storage backend. + // Identify all valid API key secrets that match the provided label selector. + // API key secrets must be in one of the watch namespaces for gloo to locate them. + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. + LabelSelector map[string]string `protobuf:"bytes,1,rep,name=label_selector,json=labelSelector,proto3" json:"label_selector,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // DEPRECATED: use K8sSecretApiKeyStorage to configure secrets storage backend. Values here + // will be overwritten if values are specified in the storage backend. + // A way to directly reference API key secrets. This configuration can be useful for testing, + // but in general the more flexible label selector should be preferred. + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. + ApiKeySecretRefs []*core.ResourceRef `protobuf:"bytes,2,rep,name=api_key_secret_refs,json=apiKeySecretRefs,proto3" json:"api_key_secret_refs,omitempty"` + // When receiving a request, the Gloo Edge Enterprise external auth server will look for an API key in a header + // with this name. This field is optional; if not provided it defaults to `api-key`. + HeaderName string `protobuf:"bytes,3,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"` + // DEPRECATED: use headers_from_metadata_entry + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. + HeadersFromMetadata map[string]*ApiKeyAuth_SecretKey `protobuf:"bytes,4,rep,name=headers_from_metadata,json=headersFromMetadata,proto3" json:"headers_from_metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // API key structures might contain additional data (e.g. the ID of the user that the API key belongs to) + // in the form of extra fields included in the API key metadata structure. + // This configuration can be used to add this data to the headers of successfully authenticated requests. + // Each key in the map represents the name of header to be added; the corresponding value determines the key + // in the API key metadata structure that will be inspected to determine the value for the header. + // + // When the provided API key token has been successfully validated, and this field has been configured, then + // any extra API key metadata fields that were able to be discovered will be added to the `AuthorizationRequest` + // state under the key name that was configured. For example, using the `x-user-name` string as the header name, + // and referencing an existing "user-email" API key metadata entry will result in the value of this "user-email" + // metadata entry being accessable in other auth modules in the `AuthorizationRequest.State["x-user-name"]` key. + // This behavior allows other modules (e.g. OPA) to build more powerful rules to further validate the contents + // of the extra API key metadata than what's possible using the standalone API key module. + HeadersFromMetadataEntry map[string]*ApiKeyAuth_MetadataEntry `protobuf:"bytes,5,rep,name=headers_from_metadata_entry,json=headersFromMetadataEntry,proto3" json:"headers_from_metadata_entry,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Types that are valid to be assigned to StorageBackend: + // + // *ApiKeyAuth_K8SSecretApikeyStorage + // *ApiKeyAuth_AerospikeApikeyStorage + StorageBackend isApiKeyAuth_StorageBackend `protobuf_oneof:"storage_backend"` + // API key metadata may contain data is is invalid for a header, such as a newline. By default, this data will be validated + // in the data plane and mitigated in a way that provides a consistent experience for the user and visibility for the operator. + // This validation comes with a performance cost, and can be disabled by setting this field to `true`. + SkipMetadataValidation bool `protobuf:"varint,8,opt,name=skip_metadata_validation,json=skipMetadataValidation,proto3" json:"skip_metadata_validation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ApiKeyAuth) Reset() { + *x = ApiKeyAuth{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ApiKeyAuth) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApiKeyAuth) ProtoMessage() {} + +func (x *ApiKeyAuth) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[29] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApiKeyAuth.ProtoReflect.Descriptor instead. +func (*ApiKeyAuth) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{29} +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. +func (x *ApiKeyAuth) GetLabelSelector() map[string]string { + if x != nil { + return x.LabelSelector + } + return nil +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. +func (x *ApiKeyAuth) GetApiKeySecretRefs() []*core.ResourceRef { + if x != nil { + return x.ApiKeySecretRefs + } + return nil +} + +func (x *ApiKeyAuth) GetHeaderName() string { + if x != nil { + return x.HeaderName + } + return "" +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. +func (x *ApiKeyAuth) GetHeadersFromMetadata() map[string]*ApiKeyAuth_SecretKey { + if x != nil { + return x.HeadersFromMetadata + } + return nil +} + +func (x *ApiKeyAuth) GetHeadersFromMetadataEntry() map[string]*ApiKeyAuth_MetadataEntry { + if x != nil { + return x.HeadersFromMetadataEntry + } + return nil +} + +func (x *ApiKeyAuth) GetStorageBackend() isApiKeyAuth_StorageBackend { + if x != nil { + return x.StorageBackend + } + return nil +} + +func (x *ApiKeyAuth) GetK8SSecretApikeyStorage() *K8SSecretApiKeyStorage { + if x != nil { + if x, ok := x.StorageBackend.(*ApiKeyAuth_K8SSecretApikeyStorage); ok { + return x.K8SSecretApikeyStorage + } + } + return nil +} + +func (x *ApiKeyAuth) GetAerospikeApikeyStorage() *AerospikeApiKeyStorage { + if x != nil { + if x, ok := x.StorageBackend.(*ApiKeyAuth_AerospikeApikeyStorage); ok { + return x.AerospikeApikeyStorage + } + } + return nil +} + +func (x *ApiKeyAuth) GetSkipMetadataValidation() bool { + if x != nil { + return x.SkipMetadataValidation + } + return false +} + +type isApiKeyAuth_StorageBackend interface { + isApiKeyAuth_StorageBackend() +} + +type ApiKeyAuth_K8SSecretApikeyStorage struct { + K8SSecretApikeyStorage *K8SSecretApiKeyStorage `protobuf:"bytes,6,opt,name=k8s_secret_apikey_storage,json=k8sSecretApikeyStorage,proto3,oneof"` +} + +type ApiKeyAuth_AerospikeApikeyStorage struct { + // Deprecated: Support for Aerospike is deprecated and will be removed in a future release. + // Use of this feature is not recommended. + AerospikeApikeyStorage *AerospikeApiKeyStorage `protobuf:"bytes,7,opt,name=aerospike_apikey_storage,json=aerospikeApikeyStorage,proto3,oneof"` +} + +func (*ApiKeyAuth_K8SSecretApikeyStorage) isApiKeyAuth_StorageBackend() {} + +func (*ApiKeyAuth_AerospikeApikeyStorage) isApiKeyAuth_StorageBackend() {} + +type K8SSecretApiKeyStorage struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Identify all valid API key secrets that match the provided label selector.
+ // API key secrets must be in one of the watch namespaces for gloo to locate them. + LabelSelector map[string]string `protobuf:"bytes,1,rep,name=label_selector,json=labelSelector,proto3" json:"label_selector,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // A way to directly reference API key secrets. This configuration can be useful for testing, + // but in general the more flexible label selector should be preferred. + ApiKeySecretRefs []*core.ResourceRef `protobuf:"bytes,2,rep,name=api_key_secret_refs,json=apiKeySecretRefs,proto3" json:"api_key_secret_refs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *K8SSecretApiKeyStorage) Reset() { + *x = K8SSecretApiKeyStorage{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *K8SSecretApiKeyStorage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*K8SSecretApiKeyStorage) ProtoMessage() {} + +func (x *K8SSecretApiKeyStorage) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[30] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use K8SSecretApiKeyStorage.ProtoReflect.Descriptor instead. +func (*K8SSecretApiKeyStorage) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{30} +} + +func (x *K8SSecretApiKeyStorage) GetLabelSelector() map[string]string { + if x != nil { + return x.LabelSelector + } + return nil +} + +func (x *K8SSecretApiKeyStorage) GetApiKeySecretRefs() []*core.ResourceRef { + if x != nil { + return x.ApiKeySecretRefs + } + return nil +} + +// Deprecated: Support for Aerospike is deprecated and will be removed in a future release. +// Use of this feature is not recommended. +type AerospikeApiKeyStorage struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The IP address or hostname of one of the cluster members of your Aerospike database. The address must be reachable from Gloo Edge, such as in a virtual machine with a public IP address or in a pod in the cluster. + // The client automatically discovers other members of the cluster after establishing a connection. + Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"` + // The Aerospike namespace of the database. Defaults to "solo-namespace". + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + // The Aerospike set to use for storage of API keys. Defaults to "apikeys". + Set string `protobuf:"bytes,3,opt,name=set,proto3" json:"set,omitempty"` + // The port on which to connect to the Aerospike server. Defaults to 3000. + Port int32 `protobuf:"varint,4,opt,name=port,proto3" json:"port,omitempty"` + // The size of the batch, which is the number of keys sent in the request. Defaults to 5000. + BatchSize int32 `protobuf:"varint,5,opt,name=batch_size,json=batchSize,proto3" json:"batch_size,omitempty"` + // The write settings for guaranteed consistency when committing a transaction on the Aerospike server. For more information, see the [Aerospike commit policy](https://github.com/aerospike/aerospike-client-go/blob/master/commit_policy.go). + // Defaults to "commit_all". + // + // Types that are valid to be assigned to CommitLevel: + // + // *AerospikeApiKeyStorage_CommitAll + // *AerospikeApiKeyStorage_CommitMaster + CommitLevel isAerospikeApiKeyStorage_CommitLevel `protobuf_oneof:"commit_level"` + // The read settings for strong consistency (SC). For possible values, see the [Aerospike read mode SC](https://github.com/aerospike/aerospike-client-go/blob/master/read_mode_sc.go). + // Defaults to "read_mode_sc_session". + ReadModeSc *AerospikeApiKeyStorageReadModeSc `protobuf:"bytes,8,opt,name=read_mode_sc,json=readModeSc,proto3" json:"read_mode_sc,omitempty"` + // The read settings for availability (AP). For possible values, see the [Aerospike read mode AP](https://github.com/aerospike/aerospike-client-go/blob/master/read_mode_ap.go). + // Defaults to "read_mode_ap_one". + ReadModeAp *AerospikeApiKeyStorageReadModeAp `protobuf:"bytes,9,opt,name=read_mode_ap,json=readModeAp,proto3" json:"read_mode_ap,omitempty"` + // TLS settings to enable mutual TLS (mTLS) on the server side. These configuration options must match what you configured in your Aerospike setup. For more information, see the Aerospike [security](https://docs.aerospike.com/server/guide/security/tls) and [network TLS](https://docs.aerospike.com/server/operations/configure/network/tls) guides. + // The subject name of the TLS authority. For more information, see the [Aerospike docs](https://docs.aerospike.com/reference/configuration#tls-name). + NodeTlsName string `protobuf:"bytes,10,opt,name=node_tls_name,json=nodeTlsName,proto3" json:"node_tls_name,omitempty"` + // The path to the TLS certfiicate. + CertPath string `protobuf:"bytes,11,opt,name=cert_path,json=certPath,proto3" json:"cert_path,omitempty"` + // The path to the key. + KeyPath string `protobuf:"bytes,12,opt,name=key_path,json=keyPath,proto3" json:"key_path,omitempty"` + // The TLS insecure setting. If set to `true`, the authority of the certificate on the client's end is not authenticated. You might use insecure mode in non-production environments when the certificate is not known. + AllowInsecure bool `protobuf:"varint,13,opt,name=allow_insecure,json=allowInsecure,proto3" json:"allow_insecure,omitempty"` + // If the root certificate authority (CA) is not set, add the system certs by default. + RootCaPath string `protobuf:"bytes,14,opt,name=root_ca_path,json=rootCaPath,proto3" json:"root_ca_path,omitempty"` + // The TLS version. Versions 1.0, 1.1, 1.2, and 1.3 are supported. Defaults to 1.3 + TlsVersion string `protobuf:"bytes,15,opt,name=tls_version,json=tlsVersion,proto3" json:"tls_version,omitempty"` + // The TLS identifier for an elliptic curve. For more information, see [TLS supported groups](https://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8). + TlsCurveGroups []*AerospikeApiKeyStorageTlsCurveID `protobuf:"bytes,16,rep,name=tls_curve_groups,json=tlsCurveGroups,proto3" json:"tls_curve_groups,omitempty"` + // Identify the set of required labels (key/value) which an Aerospike secret must contain + // If a secret contains the provided set of labels, it will be considered valid when authorizing an ApiKey provided in a request + LabelSelector map[string]string `protobuf:"bytes,17,rep,name=label_selector,json=labelSelector,proto3" json:"label_selector,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AerospikeApiKeyStorage) Reset() { + *x = AerospikeApiKeyStorage{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AerospikeApiKeyStorage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AerospikeApiKeyStorage) ProtoMessage() {} + +func (x *AerospikeApiKeyStorage) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[31] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AerospikeApiKeyStorage.ProtoReflect.Descriptor instead. +func (*AerospikeApiKeyStorage) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{31} +} + +func (x *AerospikeApiKeyStorage) GetHostname() string { + if x != nil { + return x.Hostname + } + return "" +} + +func (x *AerospikeApiKeyStorage) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +func (x *AerospikeApiKeyStorage) GetSet() string { + if x != nil { + return x.Set + } + return "" +} + +func (x *AerospikeApiKeyStorage) GetPort() int32 { + if x != nil { + return x.Port + } + return 0 +} + +func (x *AerospikeApiKeyStorage) GetBatchSize() int32 { + if x != nil { + return x.BatchSize + } + return 0 +} + +func (x *AerospikeApiKeyStorage) GetCommitLevel() isAerospikeApiKeyStorage_CommitLevel { + if x != nil { + return x.CommitLevel + } + return nil +} + +func (x *AerospikeApiKeyStorage) GetCommitAll() uint32 { + if x != nil { + if x, ok := x.CommitLevel.(*AerospikeApiKeyStorage_CommitAll); ok { + return x.CommitAll + } + } + return 0 +} + +func (x *AerospikeApiKeyStorage) GetCommitMaster() uint32 { + if x != nil { + if x, ok := x.CommitLevel.(*AerospikeApiKeyStorage_CommitMaster); ok { + return x.CommitMaster + } + } + return 0 +} + +func (x *AerospikeApiKeyStorage) GetReadModeSc() *AerospikeApiKeyStorageReadModeSc { + if x != nil { + return x.ReadModeSc + } + return nil +} + +func (x *AerospikeApiKeyStorage) GetReadModeAp() *AerospikeApiKeyStorageReadModeAp { + if x != nil { + return x.ReadModeAp + } + return nil +} + +func (x *AerospikeApiKeyStorage) GetNodeTlsName() string { + if x != nil { + return x.NodeTlsName + } + return "" +} + +func (x *AerospikeApiKeyStorage) GetCertPath() string { + if x != nil { + return x.CertPath + } + return "" +} + +func (x *AerospikeApiKeyStorage) GetKeyPath() string { + if x != nil { + return x.KeyPath + } + return "" +} + +func (x *AerospikeApiKeyStorage) GetAllowInsecure() bool { + if x != nil { + return x.AllowInsecure + } + return false +} + +func (x *AerospikeApiKeyStorage) GetRootCaPath() string { + if x != nil { + return x.RootCaPath + } + return "" +} + +func (x *AerospikeApiKeyStorage) GetTlsVersion() string { + if x != nil { + return x.TlsVersion + } + return "" +} + +func (x *AerospikeApiKeyStorage) GetTlsCurveGroups() []*AerospikeApiKeyStorageTlsCurveID { + if x != nil { + return x.TlsCurveGroups + } + return nil +} + +func (x *AerospikeApiKeyStorage) GetLabelSelector() map[string]string { + if x != nil { + return x.LabelSelector + } + return nil +} + +type isAerospikeApiKeyStorage_CommitLevel interface { + isAerospikeApiKeyStorage_CommitLevel() +} + +type AerospikeApiKeyStorage_CommitAll struct { + // "commit_all" indicates that the server waits until successfully committing the master and all replicas. + CommitAll uint32 `protobuf:"varint,6,opt,name=commit_all,json=commitAll,proto3,oneof"` +} + +type AerospikeApiKeyStorage_CommitMaster struct { + // "commit_master" indicates that the server waits until successfully committing the master only. + CommitMaster uint32 `protobuf:"varint,7,opt,name=commit_master,json=commitMaster,proto3,oneof"` +} + +func (*AerospikeApiKeyStorage_CommitAll) isAerospikeApiKeyStorage_CommitLevel() {} + +func (*AerospikeApiKeyStorage_CommitMaster) isAerospikeApiKeyStorage_CommitLevel() {} + +// When no storage backend is specified, the default storage backend defined in the extauth server is used. +type ServerDefaultApiKeyStorage struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ServerDefaultApiKeyStorage) Reset() { + *x = ServerDefaultApiKeyStorage{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ServerDefaultApiKeyStorage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ServerDefaultApiKeyStorage) ProtoMessage() {} + +func (x *ServerDefaultApiKeyStorage) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[32] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ServerDefaultApiKeyStorage.ProtoReflect.Descriptor instead. +func (*ServerDefaultApiKeyStorage) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{32} +} + +type ApiKey struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The string value of the API key. + ApiKey string `protobuf:"bytes,2,opt,name=api_key,json=apiKey,proto3" json:"api_key,omitempty"` + // A list of labels (key=value) for the apikey secret. + // These labels are used by the storage driver to facilitate lookups by label + Labels []string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty"` + // additional data the client needs associated with this API key + Metadata map[string]string `protobuf:"bytes,4,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Optional: Unique identifier for the API key + Uuid string `protobuf:"bytes,5,opt,name=uuid,proto3" json:"uuid,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ApiKey) Reset() { + *x = ApiKey{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ApiKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApiKey) ProtoMessage() {} + +func (x *ApiKey) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[33] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApiKey.ProtoReflect.Descriptor instead. +func (*ApiKey) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{33} +} + +func (x *ApiKey) GetApiKey() string { + if x != nil { + return x.ApiKey + } + return "" +} + +func (x *ApiKey) GetLabels() []string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *ApiKey) GetMetadata() map[string]string { + if x != nil { + return x.Metadata + } + return nil +} + +func (x *ApiKey) GetUuid() string { + if x != nil { + return x.Uuid + } + return "" +} + +// DEPRECATED: use ApiKey +type ApiKeySecret struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The string value of the API key. + ApiKey string `protobuf:"bytes,2,opt,name=api_key,json=apiKey,proto3" json:"api_key,omitempty"` + // A list of labels (key=value) for the apikey secret. + // These labels are used by the storage driver to facilitate lookups by label + Labels []string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty"` + // additional data the client needs associated with this API key + Metadata map[string]string `protobuf:"bytes,4,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ApiKeySecret) Reset() { + *x = ApiKeySecret{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ApiKeySecret) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApiKeySecret) ProtoMessage() {} + +func (x *ApiKeySecret) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[34] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApiKeySecret.ProtoReflect.Descriptor instead. +func (*ApiKeySecret) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{34} +} + +func (x *ApiKeySecret) GetApiKey() string { + if x != nil { + return x.ApiKey + } + return "" +} + +func (x *ApiKeySecret) GetLabels() []string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *ApiKeySecret) GetMetadata() map[string]string { + if x != nil { + return x.Metadata + } + return nil +} + +// Enforce Open Policy Agent (OPA) policies through an OPA engine +// that is built into the Gloo external auth server. +// +// For larger scale operations and more capabilities like bundling or caching, +// you might run the OPA engine as a sidecar or bring your own server +// by using the OpaServerAuth setting instead. +type OpaAuth struct { + state protoimpl.MessageState `protogen:"open.v1"` + // An optional resource reference to config maps containing modules to assist in the resolution of `query`. + Modules []*core.ResourceRef `protobuf:"bytes,1,rep,name=modules,proto3" json:"modules,omitempty"` + // The query that determines the auth decision. The result of this query + // must be either a boolean or an array with boolean as the first element. A boolean `true` value means that + // the request will be authorized. Any other value, or error, means that the request will be denied. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` + // Additional Options for Opa Auth configuration. + Options *OpaAuthOptions `protobuf:"bytes,3,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OpaAuth) Reset() { + *x = OpaAuth{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OpaAuth) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OpaAuth) ProtoMessage() {} + +func (x *OpaAuth) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[35] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OpaAuth.ProtoReflect.Descriptor instead. +func (*OpaAuth) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{35} +} + +func (x *OpaAuth) GetModules() []*core.ResourceRef { + if x != nil { + return x.Modules + } + return nil +} + +func (x *OpaAuth) GetQuery() string { + if x != nil { + return x.Query + } + return "" +} + +func (x *OpaAuth) GetOptions() *OpaAuthOptions { + if x != nil { + return x.Options + } + return nil +} + +type OpaAuthOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Decreases OPA latency by speeding up conversion of input to the OPA engine. + // If this is set to true, only http_request and state fields which are a scalar, map, or string array + // are included in the request input. All other fields are dropped. Dropped fields will not be evaluated by the OPA engine. + // By default, this is set to false and all fields are evaluated by OPA. + FastInputConversion bool `protobuf:"varint,1,opt,name=fast_input_conversion,json=fastInputConversion,proto3" json:"fast_input_conversion,omitempty"` + // DEPRECATED: It's recommended to use the `dynamic_metadata` field within Rego policies to specify the decision reason. To learn more about this approach, see the [OPA Envoy Plugin docs](https://github.com/open-policy-agent/opa/blob/c12463c/docs/content/envoy-primer.md#example-policy-with-additional-controls). + // + // When `returnDecisionReason` is set to true, the decision reason is stored in the Envoy Dynamic Metadata and has the following properties:
    + //
  • `body` - a textual explanation of the decision
  • + //
  • `allowed` - whether the request was allowed or rejected
+ // + // When using OpaAuth, the `body` field must be the second parameter of the query. + // + // Both the OpaAuth and OpaServerAuth approaches use the `allowed` and `body` values from the OPA response in the decision reason. + // You can find the `body` and `allowed` fields in the Envoy Filter Dynamic Metadata under the `envoy.filters.http.ext_authz..reason` section. + // + // If, however, `returnDecisionReason` is set to false, OPA's decision to allow or reject a request is made according to the Rego policy rules, and no explanation is provided. + // Despite of this, the `dynamic_metadata` field can still be used to convey any necessary information to the Envoy Dynamic Metadata, including the decision reason. + ReturnDecisionReason bool `protobuf:"varint,2,opt,name=return_decision_reason,json=returnDecisionReason,proto3" json:"return_decision_reason,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OpaAuthOptions) Reset() { + *x = OpaAuthOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OpaAuthOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OpaAuthOptions) ProtoMessage() {} + +func (x *OpaAuthOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[36] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OpaAuthOptions.ProtoReflect.Descriptor instead. +func (*OpaAuthOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{36} +} + +func (x *OpaAuthOptions) GetFastInputConversion() bool { + if x != nil { + return x.FastInputConversion + } + return false +} + +func (x *OpaAuthOptions) GetReturnDecisionReason() bool { + if x != nil { + return x.ReturnDecisionReason + } + return false +} + +// Enforce Open Policy Agent (OPA) policies through an OPA sidecar +// to the the Gloo external auth server, or by bringing your own OPA server. +// This way, you can use OPA at scale and with additional capabilities, such as bundling or caching. +// +// For smaller operations or quick tests, you might use the OpaAuth setting instead. +type OpaServerAuth struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The package from your Rego policy bundle used to query the OPA data API. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + Package string `protobuf:"bytes,1,opt,name=package,proto3" json:"package,omitempty"` + // The rule in your Rego policy bundle used to query the OPA data API. Supports querying subfields with a `/`. For more information, see the [OPA docs for the Data API](https://www.openpolicyagent.org/docs/latest/rest-api/#data-api). + RuleName string `protobuf:"bytes,2,opt,name=rule_name,json=ruleName,proto3" json:"rule_name,omitempty"` + // The address of the OPA server to query, in the format `ADDRESS:PORT`. + // For OPA servers within the cluster, the address is the pod's service address, + // such as `opa-svc.default.svc.cluster.local:8181`. For OPA servers outside the cluster, + // the server must be accessible to the cluster, such as through an ExternalService. + // If you do not have your own OPA server instance, omit this field. + // When the external auth service has the OPA server sidecar enabled, the OPA server + // sidecar will be used instead, with an address such as `http://localhost:8181`. + ServerAddr string `protobuf:"bytes,3,opt,name=server_addr,json=serverAddr,proto3" json:"server_addr,omitempty"` + // Additional options for OPA Auth configuration. + Options *OpaAuthOptions `protobuf:"bytes,4,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OpaServerAuth) Reset() { + *x = OpaServerAuth{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OpaServerAuth) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OpaServerAuth) ProtoMessage() {} + +func (x *OpaServerAuth) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[37] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OpaServerAuth.ProtoReflect.Descriptor instead. +func (*OpaServerAuth) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{37} +} + +func (x *OpaServerAuth) GetPackage() string { + if x != nil { + return x.Package + } + return "" +} + +func (x *OpaServerAuth) GetRuleName() string { + if x != nil { + return x.RuleName + } + return "" +} + +func (x *OpaServerAuth) GetServerAddr() string { + if x != nil { + return x.ServerAddr + } + return "" +} + +func (x *OpaServerAuth) GetOptions() *OpaAuthOptions { + if x != nil { + return x.Options } return nil } -type isAccessTokenValidation_ValidationType interface { - isAccessTokenValidation_ValidationType() -} +// Authenticates and authorizes requests by querying an LDAP server. Gloo makes the following assumptions: +// - Requests provide credentials via the basic HTTP authentication header. Gloo will BIND to the LDAP server using the +// credentials extracted from the header. +// - Your LDAP server is configured so that each entry you want to authorize has an attribute that indicates its group +// memberships. A common way of achieving this is by using the [*memberof* overlay](http://www.openldap.org/software/man.cgi?query=slapo-memberof). +type Ldap struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Address of the LDAP server to query. Should be in the form ADDRESS:PORT, e.g. `ldap.default.svc.cluster.local:389`. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + // Template to build user entry distinguished names (DN). This must contains a single occurrence of the "%s" placeholder. + // When processing a request, Gloo will substitute the name of the user (extracted from the auth header) for the + // placeholder and issue a search request with the resulting DN as baseDN (and 'base' search scope). + // E.g. "uid=%s,ou=people,dc=solo,dc=io" + UserDnTemplate string `protobuf:"bytes,2,opt,name=userDnTemplate,proto3" json:"userDnTemplate,omitempty"` + // Case-insensitive name of the attribute that contains the names of the groups an entry is member of. Gloo will look + // for attributes with the given name to determine which groups the user entry belongs to. Defaults to 'memberOf' if not provided. + MembershipAttributeName string `protobuf:"bytes,3,opt,name=membershipAttributeName,proto3" json:"membershipAttributeName,omitempty"` + // In order for the request to be authenticated, the membership attribute (e.g. *memberOf*) on the user entry must + // contain at least of one of the group DNs specified via this option. + // E.g. []string{ "cn=managers,ou=groups,dc=solo,dc=io", "cn=developers,ou=groups,dc=solo,dc=io" } + AllowedGroups []string `protobuf:"bytes,4,rep,name=allowedGroups,proto3" json:"allowedGroups,omitempty"` + // Use this property to tune the pool of connections to the LDAP server that Gloo maintains. + Pool *Ldap_ConnectionPool `protobuf:"bytes,5,opt,name=pool,proto3" json:"pool,omitempty"` + // Use to set a custom filter when searching a member. Defaults to "(uid=*)". + SearchFilter string `protobuf:"bytes,6,opt,name=searchFilter,proto3" json:"searchFilter,omitempty"` + // Disables group checking, regardless of the value for allowedGroups, + // and disables validation for the membership attribute of the user entry. + // Group checking is enabled by default. + DisableGroupChecking bool `protobuf:"varint,7,opt,name=disable_group_checking,json=disableGroupChecking,proto3" json:"disable_group_checking,omitempty"` + // Settings for using a separate service account for looking up group membership + // To use this, you also need to configure credentials in a secret + GroupLookupSettings *LdapServiceAccount `protobuf:"bytes,8,opt,name=group_lookup_settings,json=groupLookupSettings,proto3" json:"group_lookup_settings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Ldap) Reset() { + *x = Ldap{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Ldap) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Ldap) ProtoMessage() {} -type AccessTokenValidation_IntrospectionUrl struct { - // The URL for the [OAuth2.0 Token Introspection](https://tools.ietf.org/html/rfc7662) endpoint. - // If provided, the (opaque) access token provided or received from the oauth authorization endpoint - // will be validated against this endpoint, or locally cached responses for this access token. - // This field is deprecated as it does not support authenticated introspection requests - // - // Deprecated: Do not use. - IntrospectionUrl string `protobuf:"bytes,1,opt,name=introspection_url,json=introspectionUrl,proto3,oneof"` +func (x *Ldap) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[38] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type AccessTokenValidation_Jwt struct { - // Validate access tokens that conform to the - // [JSON Web Token (JWT)](https://tools.ietf.org/html/rfc7519) specification. - Jwt *AccessTokenValidation_JwtValidation `protobuf:"bytes,2,opt,name=jwt,proto3,oneof"` +// Deprecated: Use Ldap.ProtoReflect.Descriptor instead. +func (*Ldap) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{38} } -type AccessTokenValidation_Introspection struct { - // Defines how (opaque) access tokens, received from the oauth authorization endpoint, are validated - // [OAuth2.0 Token Introspection](https://tools.ietf.org/html/rfc7662) specification. - Introspection *AccessTokenValidation_IntrospectionValidation `protobuf:"bytes,3,opt,name=introspection,proto3,oneof"` +func (x *Ldap) GetAddress() string { + if x != nil { + return x.Address + } + return "" } -func (*AccessTokenValidation_IntrospectionUrl) isAccessTokenValidation_ValidationType() {} +func (x *Ldap) GetUserDnTemplate() string { + if x != nil { + return x.UserDnTemplate + } + return "" +} -func (*AccessTokenValidation_Jwt) isAccessTokenValidation_ValidationType() {} +func (x *Ldap) GetMembershipAttributeName() string { + if x != nil { + return x.MembershipAttributeName + } + return "" +} -func (*AccessTokenValidation_Introspection) isAccessTokenValidation_ValidationType() {} +func (x *Ldap) GetAllowedGroups() []string { + if x != nil { + return x.AllowedGroups + } + return nil +} -type isAccessTokenValidation_ScopeValidation interface { - isAccessTokenValidation_ScopeValidation() +func (x *Ldap) GetPool() *Ldap_ConnectionPool { + if x != nil { + return x.Pool + } + return nil } -type AccessTokenValidation_RequiredScopes struct { - // Require access token to have all of the scopes in the given list. - // This configuration applies to both opaque and JWT tokens. In the case of opaque tokens, - // this will check the scopes returned in the "scope" member of introspection response - // (as described in [Section 2.2 of RFC7662](https://tools.ietf.org/html/rfc7662#section-2.2). - // In case of JWTs the scopes to be validated are expected to be contained in the "scope" claim of the - // token in the form of a space-separated string. - // Omitting this field means that scope validation will be skipped. - RequiredScopes *AccessTokenValidation_ScopeList `protobuf:"bytes,6,opt,name=required_scopes,json=requiredScopes,proto3,oneof"` +func (x *Ldap) GetSearchFilter() string { + if x != nil { + return x.SearchFilter + } + return "" } -func (*AccessTokenValidation_RequiredScopes) isAccessTokenValidation_ScopeValidation() {} +func (x *Ldap) GetDisableGroupChecking() bool { + if x != nil { + return x.DisableGroupChecking + } + return false +} -type OauthSecret struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *Ldap) GetGroupLookupSettings() *LdapServiceAccount { + if x != nil { + return x.GroupLookupSettings + } + return nil +} - ClientSecret string `protobuf:"bytes,1,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"` +type LdapServiceAccount struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Reference to an AccountCredentialsSecret to use to authenticate as the service account + CredentialsSecretRef *core.ResourceRef `protobuf:"bytes,1,opt,name=credentials_secret_ref,json=credentialsSecretRef,proto3" json:"credentials_secret_ref,omitempty"` + // If true, Gloo will use the service account to check group membership + CheckGroupsWithServiceAccount bool `protobuf:"varint,2,opt,name=check_groups_with_service_account,json=checkGroupsWithServiceAccount,proto3" json:"check_groups_with_service_account,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *OauthSecret) Reset() { - *x = OauthSecret{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *LdapServiceAccount) Reset() { + *x = LdapServiceAccount{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *OauthSecret) String() string { +func (x *LdapServiceAccount) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OauthSecret) ProtoMessage() {} +func (*LdapServiceAccount) ProtoMessage() {} -func (x *OauthSecret) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { +func (x *LdapServiceAccount) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[39] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1879,58 +4417,61 @@ func (x *OauthSecret) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OauthSecret.ProtoReflect.Descriptor instead. -func (*OauthSecret) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{17} +// Deprecated: Use LdapServiceAccount.ProtoReflect.Descriptor instead. +func (*LdapServiceAccount) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{39} } -func (x *OauthSecret) GetClientSecret() string { +func (x *LdapServiceAccount) GetCredentialsSecretRef() *core.ResourceRef { if x != nil { - return x.ClientSecret + return x.CredentialsSecretRef } - return "" + return nil } -type ApiKeyAuth struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *LdapServiceAccount) GetCheckGroupsWithServiceAccount() bool { + if x != nil { + return x.CheckGroupsWithServiceAccount + } + return false +} - // Identify all valid API key secrets that match the provided label selector.
- // API key secrets must be in one of the watch namespaces for gloo to locate them. - LabelSelector map[string]string `protobuf:"bytes,1,rep,name=label_selector,json=labelSelector,proto3" json:"label_selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // A way to directly reference API key secrets. This configuration can be useful for testing, - // but in general the more flexible label selector should be preferred. - ApiKeySecretRefs []*core.ResourceRef `protobuf:"bytes,2,rep,name=api_key_secret_refs,json=apiKeySecretRefs,proto3" json:"api_key_secret_refs,omitempty"` - // When receiving a request, the Gloo Edge Enterprise external auth server will look for an API key in a header - // with this name. This field is optional; if not provided it defaults to `api-key`. - HeaderName string `protobuf:"bytes,3,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"` - // API key secrets might contain additional data (e.g. the ID of the user that the API key belongs to) - // in the form of extra keys included in the secret's `data` field. - // This configuration can be used to add this data to the headers of successfully authenticated requests. - // Each key in the map represents the name of header to be added; the corresponding value determines the key - // in the secret data that will be inspected to determine the value for the header. - HeadersFromMetadata map[string]*ApiKeyAuth_SecretKey `protobuf:"bytes,4,rep,name=headers_from_metadata,json=headersFromMetadata,proto3" json:"headers_from_metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +// Authorizes requests by querying a custom extauth server. +type PassThroughAuth struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Protocol: + // + // *PassThroughAuth_Grpc + // *PassThroughAuth_Http + Protocol isPassThroughAuth_Protocol `protobuf_oneof:"protocol"` + // Custom config to be passed per request to the passthrough auth service. + Config *structpb.Struct `protobuf:"bytes,4,opt,name=config,proto3" json:"config,omitempty"` + // If set to true, the service will accept client request even if the communication with + // + // the authorization service has failed, or if the authorization service has returned a server error. + // + // Defaults to false. + FailureModeAllow bool `protobuf:"varint,5,opt,name=failure_mode_allow,json=failureModeAllow,proto3" json:"failure_mode_allow,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *ApiKeyAuth) Reset() { - *x = ApiKeyAuth{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *PassThroughAuth) Reset() { + *x = PassThroughAuth{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ApiKeyAuth) String() string { +func (x *PassThroughAuth) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ApiKeyAuth) ProtoMessage() {} +func (*PassThroughAuth) ProtoMessage() {} -func (x *ApiKeyAuth) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { +func (x *PassThroughAuth) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[40] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1940,79 +4481,95 @@ func (x *ApiKeyAuth) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ApiKeyAuth.ProtoReflect.Descriptor instead. -func (*ApiKeyAuth) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{18} +// Deprecated: Use PassThroughAuth.ProtoReflect.Descriptor instead. +func (*PassThroughAuth) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{40} } -func (x *ApiKeyAuth) GetLabelSelector() map[string]string { +func (x *PassThroughAuth) GetProtocol() isPassThroughAuth_Protocol { if x != nil { - return x.LabelSelector + return x.Protocol } return nil } -func (x *ApiKeyAuth) GetApiKeySecretRefs() []*core.ResourceRef { +func (x *PassThroughAuth) GetGrpc() *PassThroughGrpc { if x != nil { - return x.ApiKeySecretRefs + if x, ok := x.Protocol.(*PassThroughAuth_Grpc); ok { + return x.Grpc + } } return nil } -func (x *ApiKeyAuth) GetHeaderName() string { +func (x *PassThroughAuth) GetHttp() *PassThroughHttp { if x != nil { - return x.HeaderName + if x, ok := x.Protocol.(*PassThroughAuth_Http); ok { + return x.Http + } } - return "" + return nil } -func (x *ApiKeyAuth) GetHeadersFromMetadata() map[string]*ApiKeyAuth_SecretKey { +func (x *PassThroughAuth) GetConfig() *structpb.Struct { if x != nil { - return x.HeadersFromMetadata + return x.Config } return nil } -type ApiKeySecret struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PassThroughAuth) GetFailureModeAllow() bool { + if x != nil { + return x.FailureModeAllow + } + return false +} - // If true, generate an API key. - // This field is deprecated as it was used only internally by `glooctl` and is not actually part of the secret API. - // - // Deprecated: Do not use. - GenerateApiKey bool `protobuf:"varint,1,opt,name=generate_api_key,json=generateApiKey,proto3" json:"generate_api_key,omitempty"` - // The value of the API key. - ApiKey string `protobuf:"bytes,2,opt,name=api_key,json=apiKey,proto3" json:"api_key,omitempty"` - // A list of labels (key=value) for the apikey secret.
- // These labels are used when creating an ApiKeySecret via `glooctl` and then are copied to the metadata of the created secret. - // This field is deprecated as it was used only internally by `glooctl` and is not actually part of the secret API. - // - // Deprecated: Do not use. - Labels []string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty"` - // If the secret data contains entries in addition to the API key one, they will be copied to this field. - Metadata map[string]string `protobuf:"bytes,4,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +type isPassThroughAuth_Protocol interface { + isPassThroughAuth_Protocol() } -func (x *ApiKeySecret) Reset() { - *x = ApiKeySecret{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +type PassThroughAuth_Grpc struct { + Grpc *PassThroughGrpc `protobuf:"bytes,1,opt,name=grpc,proto3,oneof"` } -func (x *ApiKeySecret) String() string { +type PassThroughAuth_Http struct { + Http *PassThroughHttp `protobuf:"bytes,2,opt,name=http,proto3,oneof"` +} + +func (*PassThroughAuth_Grpc) isPassThroughAuth_Protocol() {} + +func (*PassThroughAuth_Http) isPassThroughAuth_Protocol() {} + +// Configuration defining an exponential back off strategy. +type BackoffStrategy struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The base interval to be used for the next back off computation. + // Defaults to 1000 milliseconds + BaseInterval *durationpb.Duration `protobuf:"bytes,1,opt,name=base_interval,json=baseInterval,proto3" json:"base_interval,omitempty"` + // Specifies the maximum delay between retries. + // Defaults to 10 times the base interval. + MaxInterval *durationpb.Duration `protobuf:"bytes,2,opt,name=max_interval,json=maxInterval,proto3" json:"max_interval,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BackoffStrategy) Reset() { + *x = BackoffStrategy{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BackoffStrategy) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ApiKeySecret) ProtoMessage() {} +func (*BackoffStrategy) ProtoMessage() {} -func (x *ApiKeySecret) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { +func (x *BackoffStrategy) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[41] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2022,72 +4579,145 @@ func (x *ApiKeySecret) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ApiKeySecret.ProtoReflect.Descriptor instead. -func (*ApiKeySecret) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{19} +// Deprecated: Use BackoffStrategy.ProtoReflect.Descriptor instead. +func (*BackoffStrategy) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{41} } -// Deprecated: Do not use. -func (x *ApiKeySecret) GetGenerateApiKey() bool { +func (x *BackoffStrategy) GetBaseInterval() *durationpb.Duration { if x != nil { - return x.GenerateApiKey + return x.BaseInterval } - return false + return nil } -func (x *ApiKeySecret) GetApiKey() string { +func (x *BackoffStrategy) GetMaxInterval() *durationpb.Duration { if x != nil { - return x.ApiKey + return x.MaxInterval } - return "" + return nil } -// Deprecated: Do not use. -func (x *ApiKeySecret) GetLabels() []string { +// The message specifies the retry policy of the external gRPC service when unable to initially connect. +type RetryPolicy struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Specifies the allowed number of retries. This parameter is optional and + // defaults to 1. + NumRetries *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=num_retries,json=numRetries,proto3" json:"num_retries,omitempty"` + // Types that are valid to be assigned to Strategy: + // + // *RetryPolicy_RetryBackOff + Strategy isRetryPolicy_Strategy `protobuf_oneof:"strategy"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RetryPolicy) Reset() { + *x = RetryPolicy{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RetryPolicy) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RetryPolicy) ProtoMessage() {} + +func (x *RetryPolicy) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[42] if x != nil { - return x.Labels + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RetryPolicy.ProtoReflect.Descriptor instead. +func (*RetryPolicy) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{42} +} + +func (x *RetryPolicy) GetNumRetries() *wrapperspb.UInt32Value { + if x != nil { + return x.NumRetries } return nil } -func (x *ApiKeySecret) GetMetadata() map[string]string { +func (x *RetryPolicy) GetStrategy() isRetryPolicy_Strategy { if x != nil { - return x.Metadata + return x.Strategy } return nil } -type OpaAuth struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *RetryPolicy) GetRetryBackOff() *BackoffStrategy { + if x != nil { + if x, ok := x.Strategy.(*RetryPolicy_RetryBackOff); ok { + return x.RetryBackOff + } + } + return nil +} - // An optional resource reference to config maps containing modules to assist in the resolution of `query`. - Modules []*core.ResourceRef `protobuf:"bytes,1,rep,name=modules,proto3" json:"modules,omitempty"` - // The query that determines the auth decision. The result of this query must be either a boolean - // or an array with boolean as the first element. A boolean `true` value means that the request - // will be authorized. Any other value, or error, means that the request will be denied. - Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` +type isRetryPolicy_Strategy interface { + isRetryPolicy_Strategy() +} + +type RetryPolicy_RetryBackOff struct { + // Specifies parameters that control the backoff strategy. + // This parameter is optional, in which case the default base interval is 1000 milliseconds. The + // default maximum interval is 10 times the base interval. + RetryBackOff *BackoffStrategy `protobuf:"bytes,2,opt,name=retry_back_off,json=retryBackOff,proto3,oneof"` +} + +func (*RetryPolicy_RetryBackOff) isRetryPolicy_Strategy() {} + +// Authorizes requests by querying a custom extauth grpc server +// To send the request body to the ext-auth service, the settings.extauth.requestBody must be set in the Gloo Edge Settings CRD so that +// the request body is buffered and sent. +// Assumes that the server implements the envoy external authorization spec: +// https://github.com/envoyproxy/envoy/blob/ae1ed1fa74f096dabe8dd5b19fc70333621b0309/api/envoy/service/auth/v3/external_auth.proto#L29 +type PassThroughGrpc struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Address of the auth server to query. Should be in the form ADDRESS:PORT, e.g. `default.svc.cluster.local:389`. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + // Timeout for the auth server to respond. Defaults to 5s + ConnectionTimeout *durationpb.Duration `protobuf:"bytes,2,opt,name=connection_timeout,json=connectionTimeout,proto3" json:"connection_timeout,omitempty"` + // TLS config for the gRPC passthrough, if not configured the connection will use insecure. + // When specified, this supports configuration for either simple TLS or mTLS. + TlsConfig *PassThroughGrpcTLSConfig `protobuf:"bytes,3,opt,name=tls_config,json=tlsConfig,proto3" json:"tls_config,omitempty"` + // Indicates the retry policy for re-establishing the gRPC stream. + // This field is optional and failed calls will not retry unless configured. + RetryPolicy *RetryPolicy `protobuf:"bytes,4,opt,name=retry_policy,json=retryPolicy,proto3" json:"retry_policy,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *OpaAuth) Reset() { - *x = OpaAuth{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *PassThroughGrpc) Reset() { + *x = PassThroughGrpc{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *OpaAuth) String() string { +func (x *PassThroughGrpc) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OpaAuth) ProtoMessage() {} +func (*PassThroughGrpc) ProtoMessage() {} -func (x *OpaAuth) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { +func (x *PassThroughGrpc) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[43] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2097,71 +4727,83 @@ func (x *OpaAuth) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OpaAuth.ProtoReflect.Descriptor instead. -func (*OpaAuth) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{20} +// Deprecated: Use PassThroughGrpc.ProtoReflect.Descriptor instead. +func (*PassThroughGrpc) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{43} } -func (x *OpaAuth) GetModules() []*core.ResourceRef { +func (x *PassThroughGrpc) GetAddress() string { if x != nil { - return x.Modules + return x.Address + } + return "" +} + +func (x *PassThroughGrpc) GetConnectionTimeout() *durationpb.Duration { + if x != nil { + return x.ConnectionTimeout } return nil } -func (x *OpaAuth) GetQuery() string { +func (x *PassThroughGrpc) GetTlsConfig() *PassThroughGrpcTLSConfig { if x != nil { - return x.Query + return x.TlsConfig } - return "" + return nil } -// Authenticates and authorizes requests by querying an LDAP server. Gloo makes the following assumptions: -// * Requests provide credentials via the basic HTTP authentication header. Gloo will BIND to the LDAP server using the -// credentials extracted from the header. -// * Your LDAP server is configured so that each entry you want to authorize has an attribute that indicates its group -// memberships. A common way of achieving this is by using the [*memberof* overlay](http://www.openldap.org/software/man.cgi?query=slapo-memberof). -type Ldap struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PassThroughGrpc) GetRetryPolicy() *RetryPolicy { + if x != nil { + return x.RetryPolicy + } + return nil +} - // Address of the LDAP server to query. Should be in the form ADDRESS:PORT, e.g. `ldap.default.svc.cluster.local:389`. - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - // Template to build user entry distinguished names (DN). This must contains a single occurrence of the "%s" placeholder. - // When processing a request, Gloo will substitute the name of the user (extracted from the auth header) for the - // placeholder and issue a search request with the resulting DN as baseDN (and 'base' search scope). - // E.g. "uid=%s,ou=people,dc=solo,dc=io" - UserDnTemplate string `protobuf:"bytes,2,opt,name=userDnTemplate,proto3" json:"userDnTemplate,omitempty"` - // Case-insensitive name of the attribute that contains the names of the groups an entry is member of. Gloo will look - // for attributes with the given name to determine which groups the user entry belongs to. Defaults to 'memberOf' if not provided. - MembershipAttributeName string `protobuf:"bytes,3,opt,name=membershipAttributeName,proto3" json:"membershipAttributeName,omitempty"` - // In order for the request to be authenticated, the membership attribute (e.g. *memberOf*) on the user entry must - // contain at least of one of the group DNs specified via this option. - // E.g. []string{ "cn=managers,ou=groups,dc=solo,dc=io", "cn=developers,ou=groups,dc=solo,dc=io" } - AllowedGroups []string `protobuf:"bytes,4,rep,name=allowedGroups,proto3" json:"allowedGroups,omitempty"` - // Use this property to tune the pool of connections to the LDAP server that Gloo maintains. - Pool *Ldap_ConnectionPool `protobuf:"bytes,5,opt,name=pool,proto3" json:"pool,omitempty"` +// Authorizes requests by making a POST HTTP/1 request to a custom HTTP auth server +// Assumes the request is authorized if the server returns a OK (200) status code, +// else the request is unauthorized. +type PassThroughHttp struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Required: URL of the passthrough http service, is a fully qualified domain name. + // Example: http://ext-auth-service.svc.local:9001. Path provided in the URL will be respected. + // To use https, provide the cert in the HTTPS_PASSTHROUGH_CA_CERT environment variable to the ext-auth-service + // pod as a base64-encoded string + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` + // Pass through the incoming request body, ext auth state, and filter metadata. + // For more information, see the [PassThrough Http Request description](#request-1). + Request *PassThroughHttp_Request `protobuf:"bytes,3,opt,name=request,proto3" json:"request,omitempty"` + // Pass through response information such as the headers and body to downstream clients. + // For more information, see the [PassThrough Http Response description](#response-1). + Response *PassThroughHttp_Response `protobuf:"bytes,4,opt,name=response,proto3" json:"response,omitempty"` + // Timeout for the auth server to respond. Defaults to 5s + ConnectionTimeout *durationpb.Duration `protobuf:"bytes,8,opt,name=connection_timeout,json=connectionTimeout,proto3" json:"connection_timeout,omitempty"` + // TLS config for the HTTP passthrough, if not configured the connection will use insecure. + // When specified, this supports configuration for either simple TLS or mTLS. + TlsConfig *PassThroughHttpTLSConfig `protobuf:"bytes,9,opt,name=tls_config,json=tlsConfig,proto3" json:"tls_config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *Ldap) Reset() { - *x = Ldap{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *PassThroughHttp) Reset() { + *x = PassThroughHttp{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *Ldap) String() string { +func (x *PassThroughHttp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Ldap) ProtoMessage() {} +func (*PassThroughHttp) ProtoMessage() {} -func (x *Ldap) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { +func (x *PassThroughHttp) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[44] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2171,77 +4813,75 @@ func (x *Ldap) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Ldap.ProtoReflect.Descriptor instead. -func (*Ldap) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{21} +// Deprecated: Use PassThroughHttp.ProtoReflect.Descriptor instead. +func (*PassThroughHttp) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{44} } -func (x *Ldap) GetAddress() string { +func (x *PassThroughHttp) GetUrl() string { if x != nil { - return x.Address + return x.Url } return "" } -func (x *Ldap) GetUserDnTemplate() string { +func (x *PassThroughHttp) GetRequest() *PassThroughHttp_Request { if x != nil { - return x.UserDnTemplate + return x.Request } - return "" + return nil } -func (x *Ldap) GetMembershipAttributeName() string { +func (x *PassThroughHttp) GetResponse() *PassThroughHttp_Response { if x != nil { - return x.MembershipAttributeName + return x.Response } - return "" + return nil } -func (x *Ldap) GetAllowedGroups() []string { +func (x *PassThroughHttp) GetConnectionTimeout() *durationpb.Duration { if x != nil { - return x.AllowedGroups + return x.ConnectionTimeout } return nil } -func (x *Ldap) GetPool() *Ldap_ConnectionPool { +func (x *PassThroughHttp) GetTlsConfig() *PassThroughHttpTLSConfig { if x != nil { - return x.Pool + return x.TlsConfig } return nil } -// Authorizes requests by querying a custom extauth server. -type PassThroughAuth struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +// TLS configuration for the extauth gRPC passthrough connection +type PassThroughGrpcTLSConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // SecretRef contains the secret ref to a Kubernetes tls secret. + // This secret can contain the certificate, key and CA bundle to establish mTLS. + // If CA is not provided it will attempt to perform a simple TLS. + SecretRef *core.ResourceRef `protobuf:"bytes,1,opt,name=secret_ref,json=secretRef,proto3" json:"secret_ref,omitempty"` + // Additional TLS parameters + SslParams *SslParameters `protobuf:"bytes,2,opt,name=ssl_params,json=sslParams,proto3" json:"ssl_params,omitempty"` unknownFields protoimpl.UnknownFields - - // Types that are assignable to Protocol: - // *PassThroughAuth_Grpc - Protocol isPassThroughAuth_Protocol `protobuf_oneof:"protocol"` - // Custom config to be passed per request to the passthrough auth service. - Config *_struct.Struct `protobuf:"bytes,4,opt,name=config,proto3" json:"config,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *PassThroughAuth) Reset() { - *x = PassThroughAuth{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *PassThroughGrpcTLSConfig) Reset() { + *x = PassThroughGrpcTLSConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *PassThroughAuth) String() string { +func (x *PassThroughGrpcTLSConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PassThroughAuth) ProtoMessage() {} +func (*PassThroughGrpcTLSConfig) ProtoMessage() {} -func (x *PassThroughAuth) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { +func (x *PassThroughGrpcTLSConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[45] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2251,74 +4891,54 @@ func (x *PassThroughAuth) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PassThroughAuth.ProtoReflect.Descriptor instead. -func (*PassThroughAuth) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{22} -} - -func (m *PassThroughAuth) GetProtocol() isPassThroughAuth_Protocol { - if m != nil { - return m.Protocol - } - return nil +// Deprecated: Use PassThroughGrpcTLSConfig.ProtoReflect.Descriptor instead. +func (*PassThroughGrpcTLSConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{45} } -func (x *PassThroughAuth) GetGrpc() *PassThroughGrpc { - if x, ok := x.GetProtocol().(*PassThroughAuth_Grpc); ok { - return x.Grpc +func (x *PassThroughGrpcTLSConfig) GetSecretRef() *core.ResourceRef { + if x != nil { + return x.SecretRef } return nil } -func (x *PassThroughAuth) GetConfig() *_struct.Struct { +func (x *PassThroughGrpcTLSConfig) GetSslParams() *SslParameters { if x != nil { - return x.Config + return x.SslParams } return nil } -type isPassThroughAuth_Protocol interface { - isPassThroughAuth_Protocol() -} - -type PassThroughAuth_Grpc struct { - Grpc *PassThroughGrpc `protobuf:"bytes,1,opt,name=grpc,proto3,oneof"` -} - -func (*PassThroughAuth_Grpc) isPassThroughAuth_Protocol() {} - -// Authorizes requests by querying a custom extauth grpc server -// Assumes that the server implements the envoy external authorization spec: -// https://github.com/envoyproxy/envoy/blob/ae1ed1fa74f096dabe8dd5b19fc70333621b0309/api/envoy/service/auth/v3/external_auth.proto#L29 -type PassThroughGrpc struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +// TLS configuration for the extauth HTTP passthrough connection +type PassThroughHttpTLSConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // SecretRef contains the secret ref to a Kubernetes tls secret. + // This secret can contain the certificate, key and CA bundle to establish mTLS. + // If CA is not provided it will attempt to perform a simple TLS. + SecretRef *core.ResourceRef `protobuf:"bytes,1,opt,name=secret_ref,json=secretRef,proto3" json:"secret_ref,omitempty"` + // Additional TLS parameters + SslParams *SslParameters `protobuf:"bytes,2,opt,name=ssl_params,json=sslParams,proto3" json:"ssl_params,omitempty"` unknownFields protoimpl.UnknownFields - - // Address of the auth server to query. Should be in the form ADDRESS:PORT, e.g. `default.svc.cluster.local:389`. - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - // Timeout for the auth server to respond. Defaults to 5s - ConnectionTimeout *duration.Duration `protobuf:"bytes,2,opt,name=connection_timeout,json=connectionTimeout,proto3" json:"connection_timeout,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *PassThroughGrpc) Reset() { - *x = PassThroughGrpc{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *PassThroughHttpTLSConfig) Reset() { + *x = PassThroughHttpTLSConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *PassThroughGrpc) String() string { +func (x *PassThroughHttpTLSConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PassThroughGrpc) ProtoMessage() {} +func (*PassThroughHttpTLSConfig) ProtoMessage() {} -func (x *PassThroughGrpc) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { +func (x *PassThroughHttpTLSConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[46] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2328,69 +4948,118 @@ func (x *PassThroughGrpc) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PassThroughGrpc.ProtoReflect.Descriptor instead. -func (*PassThroughGrpc) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{23} +// Deprecated: Use PassThroughHttpTLSConfig.ProtoReflect.Descriptor instead. +func (*PassThroughHttpTLSConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{46} } -func (x *PassThroughGrpc) GetAddress() string { +func (x *PassThroughHttpTLSConfig) GetSecretRef() *core.ResourceRef { if x != nil { - return x.Address + return x.SecretRef } - return "" + return nil } -func (x *PassThroughGrpc) GetConnectionTimeout() *duration.Duration { +func (x *PassThroughHttpTLSConfig) GetSslParams() *SslParameters { if x != nil { - return x.ConnectionTimeout + return x.SslParams } return nil } -// -//@solo-kit:xds-service=ExtAuthDiscoveryService -//@solo-kit:resource.no_references -type ExtAuthConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type SslParameters struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Minimum TLS protocol version. + // If not explicitly set, the default protocol will be TLS 1.2. + // Avoid using TLS version earlier than 1.2, as this poses significant security risks. For more details, refer to https://www.ietf.org/rfc/rfc8996.html. + MinimumProtocolVersion SslParameters_ProtocolVersion `protobuf:"varint,1,opt,name=minimum_protocol_version,json=minimumProtocolVersion,proto3,enum=enterprise.gloo.solo.io.SslParameters_ProtocolVersion" json:"minimum_protocol_version,omitempty"` + // Maximum TLS protocol version. + // If not explicitly set, the default protocol will be TLS 1.3. + MaximumProtocolVersion SslParameters_ProtocolVersion `protobuf:"varint,2,opt,name=maximum_protocol_version,json=maximumProtocolVersion,proto3,enum=enterprise.gloo.solo.io.SslParameters_ProtocolVersion" json:"maximum_protocol_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} - // @solo-kit:resource.name - // This is the identifier of the AuthConfig resource that this configuration is associated with. - // Any request to the external auth server includes an identifier that is matched against this field to determine - // which AuthConfig should be applied to it. - AuthConfigRefName string `protobuf:"bytes,1,opt,name=auth_config_ref_name,json=authConfigRefName,proto3" json:"auth_config_ref_name,omitempty"` - // List of auth configs to be checked for requests on a route referencing this auth config, - // By default, every config must be authorized for the entire request to be authorized. This - // behavior can be changed by defining names for each config and defining `boolean_expr` below. - // - // State is shared between successful requests on the chain, i.e., the headers returned from each - // successful auth service get appended into the final auth response. - Configs []*ExtAuthConfig_Config `protobuf:"bytes,8,rep,name=configs,proto3" json:"configs,omitempty"` - // How to handle processing of named configs within an auth config chain. - // An example config might be: `( basic1 || basic2 || (oidc1 && !oidc2) )` - // The boolean expression is evaluated left to right but honors parenthesis and short-circuiting. - BooleanExpr *wrappers.StringValue `protobuf:"bytes,10,opt,name=boolean_expr,json=booleanExpr,proto3" json:"boolean_expr,omitempty"` +func (x *SslParameters) Reset() { + *x = SslParameters{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SslParameters) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ExtAuthConfig) Reset() { - *x = ExtAuthConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[24] +func (*SslParameters) ProtoMessage() {} + +func (x *SslParameters) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[47] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SslParameters.ProtoReflect.Descriptor instead. +func (*SslParameters) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{47} +} + +func (x *SslParameters) GetMinimumProtocolVersion() SslParameters_ProtocolVersion { + if x != nil { + return x.MinimumProtocolVersion + } + return SslParameters_TLS_AUTO +} + +func (x *SslParameters) GetMaximumProtocolVersion() SslParameters_ProtocolVersion { + if x != nil { + return x.MaximumProtocolVersion } + return SslParameters_TLS_AUTO } -func (x *ExtAuthConfig) String() string { +// PortalAuth is used to authorize requests for credentials generated by the portal web server. +// This API is only supported for Gloo Gateway Portal. +type PortalAuth struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The portal web server url used to validate credentials generated by the portal for the backing service(s). + Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` + // The api key header name used to find the api key in the request headers. + // If provided will not authorize requests without the api key in the request headers. + // If not provided, will authorize requests with a Bearer token but must be chained with an AccessTokenValidation AuthConfig which will validate the token. + ApiKeyHeader string `protobuf:"bytes,2,opt,name=api_key_header,json=apiKeyHeader,proto3" json:"api_key_header,omitempty"` + // Options to connect to redis. If not provided, data will be cached in memory. + RedisOptions *RedisOptions `protobuf:"bytes,3,opt,name=redis_options,json=redisOptions,proto3" json:"redis_options,omitempty"` + // The frequency at which the validated credential data should be refreshed by quering the portal web server. Defaults to 60s. + CacheDuration *durationpb.Duration `protobuf:"bytes,4,opt,name=cache_duration,json=cacheDuration,proto3" json:"cache_duration,omitempty"` + // Timeout for the portal web server to respond. Defaults to 200ms + RequestTimeout *durationpb.Duration `protobuf:"bytes,5,opt,name=request_timeout,json=requestTimeout,proto3" json:"request_timeout,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PortalAuth) Reset() { + *x = PortalAuth{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PortalAuth) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExtAuthConfig) ProtoMessage() {} +func (*PortalAuth) ProtoMessage() {} -func (x *ExtAuthConfig) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { +func (x *PortalAuth) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[48] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2400,37 +5069,48 @@ func (x *ExtAuthConfig) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ExtAuthConfig.ProtoReflect.Descriptor instead. -func (*ExtAuthConfig) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{24} +// Deprecated: Use PortalAuth.ProtoReflect.Descriptor instead. +func (*PortalAuth) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{48} } -func (x *ExtAuthConfig) GetAuthConfigRefName() string { +func (x *PortalAuth) GetUrl() string { if x != nil { - return x.AuthConfigRefName + return x.Url } return "" } -func (x *ExtAuthConfig) GetConfigs() []*ExtAuthConfig_Config { +func (x *PortalAuth) GetApiKeyHeader() string { if x != nil { - return x.Configs + return x.ApiKeyHeader + } + return "" +} + +func (x *PortalAuth) GetRedisOptions() *RedisOptions { + if x != nil { + return x.RedisOptions } return nil } -func (x *ExtAuthConfig) GetBooleanExpr() *wrappers.StringValue { +func (x *PortalAuth) GetCacheDuration() *durationpb.Duration { if x != nil { - return x.BooleanExpr + return x.CacheDuration } return nil } -type AuthConfigStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PortalAuth) GetRequestTimeout() *durationpb.Duration { + if x != nil { + return x.RequestTimeout + } + return nil +} +type AuthConfigStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` // State is the enum indicating the state of the resource State AuthConfigStatus_State `protobuf:"varint,1,opt,name=state,proto3,enum=enterprise.gloo.solo.io.AuthConfigStatus_State" json:"state,omitempty"` // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty @@ -2438,18 +5118,18 @@ type AuthConfigStatus struct { // Reference to the reporter who wrote this status ReportedBy string `protobuf:"bytes,3,opt,name=reported_by,json=reportedBy,proto3" json:"reported_by,omitempty"` // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource - SubresourceStatuses map[string]*AuthConfigStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + SubresourceStatuses map[string]*AuthConfigStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Opaque details about status results - Details *_struct.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + Details *structpb.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuthConfigStatus) Reset() { *x = AuthConfigStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthConfigStatus) String() string { @@ -2459,8 +5139,8 @@ func (x *AuthConfigStatus) String() string { func (*AuthConfigStatus) ProtoMessage() {} func (x *AuthConfigStatus) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[49] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2472,7 +5152,7 @@ func (x *AuthConfigStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthConfigStatus.ProtoReflect.Descriptor instead. func (*AuthConfigStatus) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{25} + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{49} } func (x *AuthConfigStatus) GetState() AuthConfigStatus_State { @@ -2503,24 +5183,66 @@ func (x *AuthConfigStatus) GetSubresourceStatuses() map[string]*AuthConfigStatus return nil } -func (x *AuthConfigStatus) GetDetails() *_struct.Struct { +func (x *AuthConfigStatus) GetDetails() *structpb.Struct { if x != nil { return x.Details } return nil } -type AuthConfigSpec_Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type AuthConfigNamespacedStatuses struct { + state protoimpl.MessageState `protogen:"open.v1"` + Statuses map[string]*AuthConfigStatus `protobuf:"bytes,1,rep,name=statuses,proto3" json:"statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AuthConfigNamespacedStatuses) Reset() { + *x = AuthConfigNamespacedStatuses{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AuthConfigNamespacedStatuses) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AuthConfigNamespacedStatuses) ProtoMessage() {} + +func (x *AuthConfigNamespacedStatuses) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[50] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AuthConfigNamespacedStatuses.ProtoReflect.Descriptor instead. +func (*AuthConfigNamespacedStatuses) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{50} +} + +func (x *AuthConfigNamespacedStatuses) GetStatuses() map[string]*AuthConfigStatus { + if x != nil { + return x.Statuses + } + return nil +} +type AuthConfigSpec_Config struct { + state protoimpl.MessageState `protogen:"open.v1"` // optional: used when defining complex boolean logic, if `boolean_expr` is defined below. Also used // in logging. If omitted, an automatically generated name will be used (e.g. config_0, of the // pattern 'config_$INDEX_IN_CHAIN'). In the case of plugin auth, this field is ignored in favor of // the name assigned on the plugin config itself. - Name *wrappers.StringValue `protobuf:"bytes,9,opt,name=name,proto3" json:"name,omitempty"` - // Types that are assignable to AuthConfig: + Name *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=name,proto3" json:"name,omitempty"` + // Types that are valid to be assigned to AuthConfig: + // // *AuthConfigSpec_Config_BasicAuth // *AuthConfigSpec_Config_Oauth // *AuthConfigSpec_Config_Oauth2 @@ -2530,16 +5252,19 @@ type AuthConfigSpec_Config struct { // *AuthConfigSpec_Config_Ldap // *AuthConfigSpec_Config_Jwt // *AuthConfigSpec_Config_PassThroughAuth - AuthConfig isAuthConfigSpec_Config_AuthConfig `protobuf_oneof:"auth_config"` + // *AuthConfigSpec_Config_HmacAuth + // *AuthConfigSpec_Config_OpaServerAuth + // *AuthConfigSpec_Config_PortalAuth + AuthConfig isAuthConfigSpec_Config_AuthConfig `protobuf_oneof:"auth_config"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuthConfigSpec_Config) Reset() { *x = AuthConfigSpec_Config{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthConfigSpec_Config) String() string { @@ -2549,8 +5274,8 @@ func (x *AuthConfigSpec_Config) String() string { func (*AuthConfigSpec_Config) ProtoMessage() {} func (x *AuthConfigSpec_Config) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[51] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2565,80 +5290,126 @@ func (*AuthConfigSpec_Config) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{0, 0} } -func (x *AuthConfigSpec_Config) GetName() *wrappers.StringValue { +func (x *AuthConfigSpec_Config) GetName() *wrapperspb.StringValue { if x != nil { return x.Name } return nil } -func (m *AuthConfigSpec_Config) GetAuthConfig() isAuthConfigSpec_Config_AuthConfig { - if m != nil { - return m.AuthConfig +func (x *AuthConfigSpec_Config) GetAuthConfig() isAuthConfigSpec_Config_AuthConfig { + if x != nil { + return x.AuthConfig } return nil } func (x *AuthConfigSpec_Config) GetBasicAuth() *BasicAuth { - if x, ok := x.GetAuthConfig().(*AuthConfigSpec_Config_BasicAuth); ok { - return x.BasicAuth + if x != nil { + if x, ok := x.AuthConfig.(*AuthConfigSpec_Config_BasicAuth); ok { + return x.BasicAuth + } } return nil } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. func (x *AuthConfigSpec_Config) GetOauth() *OAuth { - if x, ok := x.GetAuthConfig().(*AuthConfigSpec_Config_Oauth); ok { - return x.Oauth + if x != nil { + if x, ok := x.AuthConfig.(*AuthConfigSpec_Config_Oauth); ok { + return x.Oauth + } } return nil } func (x *AuthConfigSpec_Config) GetOauth2() *OAuth2 { - if x, ok := x.GetAuthConfig().(*AuthConfigSpec_Config_Oauth2); ok { - return x.Oauth2 + if x != nil { + if x, ok := x.AuthConfig.(*AuthConfigSpec_Config_Oauth2); ok { + return x.Oauth2 + } } return nil } func (x *AuthConfigSpec_Config) GetApiKeyAuth() *ApiKeyAuth { - if x, ok := x.GetAuthConfig().(*AuthConfigSpec_Config_ApiKeyAuth); ok { - return x.ApiKeyAuth + if x != nil { + if x, ok := x.AuthConfig.(*AuthConfigSpec_Config_ApiKeyAuth); ok { + return x.ApiKeyAuth + } } return nil } +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. func (x *AuthConfigSpec_Config) GetPluginAuth() *AuthPlugin { - if x, ok := x.GetAuthConfig().(*AuthConfigSpec_Config_PluginAuth); ok { - return x.PluginAuth + if x != nil { + if x, ok := x.AuthConfig.(*AuthConfigSpec_Config_PluginAuth); ok { + return x.PluginAuth + } } return nil } func (x *AuthConfigSpec_Config) GetOpaAuth() *OpaAuth { - if x, ok := x.GetAuthConfig().(*AuthConfigSpec_Config_OpaAuth); ok { - return x.OpaAuth + if x != nil { + if x, ok := x.AuthConfig.(*AuthConfigSpec_Config_OpaAuth); ok { + return x.OpaAuth + } } return nil } func (x *AuthConfigSpec_Config) GetLdap() *Ldap { - if x, ok := x.GetAuthConfig().(*AuthConfigSpec_Config_Ldap); ok { - return x.Ldap + if x != nil { + if x, ok := x.AuthConfig.(*AuthConfigSpec_Config_Ldap); ok { + return x.Ldap + } } return nil } -func (x *AuthConfigSpec_Config) GetJwt() *empty.Empty { - if x, ok := x.GetAuthConfig().(*AuthConfigSpec_Config_Jwt); ok { - return x.Jwt +func (x *AuthConfigSpec_Config) GetJwt() *emptypb.Empty { + if x != nil { + if x, ok := x.AuthConfig.(*AuthConfigSpec_Config_Jwt); ok { + return x.Jwt + } } return nil } func (x *AuthConfigSpec_Config) GetPassThroughAuth() *PassThroughAuth { - if x, ok := x.GetAuthConfig().(*AuthConfigSpec_Config_PassThroughAuth); ok { - return x.PassThroughAuth + if x != nil { + if x, ok := x.AuthConfig.(*AuthConfigSpec_Config_PassThroughAuth); ok { + return x.PassThroughAuth + } + } + return nil +} + +func (x *AuthConfigSpec_Config) GetHmacAuth() *HmacAuth { + if x != nil { + if x, ok := x.AuthConfig.(*AuthConfigSpec_Config_HmacAuth); ok { + return x.HmacAuth + } + } + return nil +} + +func (x *AuthConfigSpec_Config) GetOpaServerAuth() *OpaServerAuth { + if x != nil { + if x, ok := x.AuthConfig.(*AuthConfigSpec_Config_OpaServerAuth); ok { + return x.OpaServerAuth + } + } + return nil +} + +func (x *AuthConfigSpec_Config) GetPortalAuth() *PortalAuth { + if x != nil { + if x, ok := x.AuthConfig.(*AuthConfigSpec_Config_PortalAuth); ok { + return x.PortalAuth + } } return nil } @@ -2648,11 +5419,12 @@ type isAuthConfigSpec_Config_AuthConfig interface { } type AuthConfigSpec_Config_BasicAuth struct { + // +kubebuilder:validation:XValidation:rule="has(self.apr) ? !has(self.encryption) && !has(self.userList) : has(self.encryption) && has(self.userList)",message="Either apr or both encryption and userSource must be set; apr may not be set alongside either encryption or userSource" BasicAuth *BasicAuth `protobuf:"bytes,1,opt,name=basic_auth,json=basicAuth,proto3,oneof"` } type AuthConfigSpec_Config_Oauth struct { - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. Oauth *OAuth `protobuf:"bytes,2,opt,name=oauth,proto3,oneof"` } @@ -2665,6 +5437,7 @@ type AuthConfigSpec_Config_ApiKeyAuth struct { } type AuthConfigSpec_Config_PluginAuth struct { + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto. PluginAuth *AuthPlugin `protobuf:"bytes,5,opt,name=plugin_auth,json=pluginAuth,proto3,oneof"` } @@ -2680,13 +5453,26 @@ type AuthConfigSpec_Config_Jwt struct { // This is a "dummy" extauth service which can be used to support multiple auth mechanisms with JWT authentication. // If Jwt authentication is to be used in the [boolean expression](https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto.sk/#authconfig) in an AuthConfig, you can use this auth config type to include Jwt as an Auth config. // In addition, `allow_missing_or_failed_jwt` must be set on the Virtual Host or Route that uses JWT auth or else the JWT filter will short circuit this behaviour. - Jwt *empty.Empty `protobuf:"bytes,11,opt,name=jwt,proto3,oneof"` + Jwt *emptypb.Empty `protobuf:"bytes,11,opt,name=jwt,proto3,oneof"` } type AuthConfigSpec_Config_PassThroughAuth struct { + // +kubebuilder:validation:XValidation:rule="has(self.grpc) || has(self.http)",message="Must specify grpc or http" PassThroughAuth *PassThroughAuth `protobuf:"bytes,12,opt,name=pass_through_auth,json=passThroughAuth,proto3,oneof"` } +type AuthConfigSpec_Config_HmacAuth struct { + HmacAuth *HmacAuth `protobuf:"bytes,13,opt,name=hmac_auth,json=hmacAuth,proto3,oneof"` +} + +type AuthConfigSpec_Config_OpaServerAuth struct { + OpaServerAuth *OpaServerAuth `protobuf:"bytes,14,opt,name=opa_server_auth,json=opaServerAuth,proto3,oneof"` +} + +type AuthConfigSpec_Config_PortalAuth struct { + PortalAuth *PortalAuth `protobuf:"bytes,15,opt,name=portal_auth,json=portalAuth,proto3,oneof"` +} + func (*AuthConfigSpec_Config_BasicAuth) isAuthConfigSpec_Config_AuthConfig() {} func (*AuthConfigSpec_Config_Oauth) isAuthConfigSpec_Config_AuthConfig() {} @@ -2705,11 +5491,14 @@ func (*AuthConfigSpec_Config_Jwt) isAuthConfigSpec_Config_AuthConfig() {} func (*AuthConfigSpec_Config_PassThroughAuth) isAuthConfigSpec_Config_AuthConfig() {} -type HttpService_Request struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (*AuthConfigSpec_Config_HmacAuth) isAuthConfigSpec_Config_AuthConfig() {} + +func (*AuthConfigSpec_Config_OpaServerAuth) isAuthConfigSpec_Config_AuthConfig() {} +func (*AuthConfigSpec_Config_PortalAuth) isAuthConfigSpec_Config_AuthConfig() {} + +type HttpService_Request struct { + state protoimpl.MessageState `protogen:"open.v1"` // These headers will be copied from the incoming request to the request going // to the auth server. Note that in addition to the user's supplied matchers: // @@ -2720,16 +5509,19 @@ type HttpService_Request struct { AllowedHeaders []string `protobuf:"bytes,1,rep,name=allowed_headers,json=allowedHeaders,proto3" json:"allowed_headers,omitempty"` // These headers that will be included to the request to authorization service. Note that // client request of the same key will be overridden. - HeadersToAdd map[string]string `protobuf:"bytes,2,rep,name=headers_to_add,json=headersToAdd,proto3" json:"headers_to_add,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + HeadersToAdd map[string]string `protobuf:"bytes,2,rep,name=headers_to_add,json=headersToAdd,proto3" json:"headers_to_add,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Headers that match these regex patterns will be copied from the incoming request + // to the request going to the auth server. + AllowedHeadersRegex []string `protobuf:"bytes,3,rep,name=allowed_headers_regex,json=allowedHeadersRegex,proto3" json:"allowed_headers_regex,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HttpService_Request) Reset() { *x = HttpService_Request{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HttpService_Request) String() string { @@ -2739,8 +5531,8 @@ func (x *HttpService_Request) String() string { func (*HttpService_Request) ProtoMessage() {} func (x *HttpService_Request) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[52] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2752,7 +5544,7 @@ func (x *HttpService_Request) ProtoReflect() protoreflect.Message { // Deprecated: Use HttpService_Request.ProtoReflect.Descriptor instead. func (*HttpService_Request) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{3, 0} + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{4, 0} } func (x *HttpService_Request) GetAllowedHeaders() []string { @@ -2769,28 +5561,35 @@ func (x *HttpService_Request) GetHeadersToAdd() map[string]string { return nil } -type HttpService_Response struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *HttpService_Request) GetAllowedHeadersRegex() []string { + if x != nil { + return x.AllowedHeadersRegex + } + return nil +} - // When this is set, authorization response headers that have a will be added to the original client request and sent to the upstream. +type HttpService_Response struct { + state protoimpl.MessageState `protogen:"open.v1"` + // When this is set, authorization response headers that have a header in this list will be added to the original client request and sent to the upstream. // Note that coexistent headers will be overridden. AllowedUpstreamHeaders []string `protobuf:"bytes,1,rep,name=allowed_upstream_headers,json=allowedUpstreamHeaders,proto3" json:"allowed_upstream_headers,omitempty"` - // When this. is set, authorization response headers that will be added to the client's response when auth request is denied. + // When this is set, authorization response headers in this list will be added to the client's response when the auth request is denied. // Note that when this list is *not* set, all the authorization response headers, except *Authority // (Host)* will be in the response to the client. When a header is included in this list, *Path*, // *Status*, *Content-Length*, *WWW-Authenticate* and *Location* are automatically added. AllowedClientHeaders []string `protobuf:"bytes,2,rep,name=allowed_client_headers,json=allowedClientHeaders,proto3" json:"allowed_client_headers,omitempty"` + // When this is set, authorization response headers that have a correspondent match will be added to the client's response. + // Note that coexistent headers will be appended. + AllowedUpstreamHeadersToAppend []string `protobuf:"bytes,3,rep,name=allowed_upstream_headers_to_append,json=allowedUpstreamHeadersToAppend,proto3" json:"allowed_upstream_headers_to_append,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HttpService_Response) Reset() { *x = HttpService_Response{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HttpService_Response) String() string { @@ -2800,8 +5599,8 @@ func (x *HttpService_Response) String() string { func (*HttpService_Response) ProtoMessage() {} func (x *HttpService_Response) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[53] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2813,7 +5612,7 @@ func (x *HttpService_Response) ProtoReflect() protoreflect.Message { // Deprecated: Use HttpService_Response.ProtoReflect.Descriptor instead. func (*HttpService_Response) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{3, 1} + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{4, 1} } func (x *HttpService_Response) GetAllowedUpstreamHeaders() []string { @@ -2830,21 +5629,27 @@ func (x *HttpService_Response) GetAllowedClientHeaders() []string { return nil } +func (x *HttpService_Response) GetAllowedUpstreamHeadersToAppend() []string { + if x != nil { + return x.AllowedUpstreamHeadersToAppend + } + return nil +} + +// If 'apr' is defined, 'encryption' and 'user_source' must not be defined or the config will fail validation type BasicAuth_Apr struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + // Map of authorized usernames to stored credentials + Users map[string]*BasicAuth_Apr_SaltedHashedPassword `protobuf:"bytes,2,rep,name=users,proto3" json:"users,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - Users map[string]*BasicAuth_Apr_SaltedHashedPassword `protobuf:"bytes,2,rep,name=users,proto3" json:"users,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *BasicAuth_Apr) Reset() { *x = BasicAuth_Apr{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BasicAuth_Apr) String() string { @@ -2854,8 +5659,8 @@ func (x *BasicAuth_Apr) String() string { func (*BasicAuth_Apr) ProtoMessage() {} func (x *BasicAuth_Apr) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[56] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2867,7 +5672,7 @@ func (x *BasicAuth_Apr) ProtoReflect() protoreflect.Message { // Deprecated: Use BasicAuth_Apr.ProtoReflect.Descriptor instead. func (*BasicAuth_Apr) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{7, 0} + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{8, 0} } func (x *BasicAuth_Apr) GetUsers() map[string]*BasicAuth_Apr_SaltedHashedPassword { @@ -2877,211 +5682,34 @@ func (x *BasicAuth_Apr) GetUsers() map[string]*BasicAuth_Apr_SaltedHashedPasswor return nil } -type BasicAuth_Apr_SaltedHashedPassword struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Salt string `protobuf:"bytes,1,opt,name=salt,proto3" json:"salt,omitempty"` - HashedPassword string `protobuf:"bytes,2,opt,name=hashed_password,json=hashedPassword,proto3" json:"hashed_password,omitempty"` -} - -func (x *BasicAuth_Apr_SaltedHashedPassword) Reset() { - *x = BasicAuth_Apr_SaltedHashedPassword{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BasicAuth_Apr_SaltedHashedPassword) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BasicAuth_Apr_SaltedHashedPassword) ProtoMessage() {} - -func (x *BasicAuth_Apr_SaltedHashedPassword) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BasicAuth_Apr_SaltedHashedPassword.ProtoReflect.Descriptor instead. -func (*BasicAuth_Apr_SaltedHashedPassword) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{7, 0, 0} -} - -func (x *BasicAuth_Apr_SaltedHashedPassword) GetSalt() string { - if x != nil { - return x.Salt - } - return "" -} - -func (x *BasicAuth_Apr_SaltedHashedPassword) GetHashedPassword() string { - if x != nil { - return x.HashedPassword - } - return "" -} - -type UserSession_InternalSession struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *UserSession_InternalSession) Reset() { - *x = UserSession_InternalSession{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UserSession_InternalSession) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UserSession_InternalSession) ProtoMessage() {} - -func (x *UserSession_InternalSession) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UserSession_InternalSession.ProtoReflect.Descriptor instead. -func (*UserSession_InternalSession) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{11, 0} -} - -type UserSession_RedisSession struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +// The encryption/hashing algorithm to use to store the password +type BasicAuth_EncryptionType struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Algorithm: + // + // *BasicAuth_EncryptionType_Apr_ + // *BasicAuth_EncryptionType_Sha1_ + Algorithm isBasicAuth_EncryptionType_Algorithm `protobuf_oneof:"algorithm"` unknownFields protoimpl.UnknownFields - - // Options to connect to redis - Options *RedisOptions `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` - // Key prefix inside redis - KeyPrefix string `protobuf:"bytes,2,opt,name=key_prefix,json=keyPrefix,proto3" json:"key_prefix,omitempty"` - // Cookie name to set and store the session id. If empty the default "__session" is used. - CookieName string `protobuf:"bytes,3,opt,name=cookie_name,json=cookieName,proto3" json:"cookie_name,omitempty"` - // When set, refresh expired id-tokens using the refresh-token. Defaults to true. - // Explicitly set to false to disable refreshing. - AllowRefreshing *wrappers.BoolValue `protobuf:"bytes,4,opt,name=allow_refreshing,json=allowRefreshing,proto3" json:"allow_refreshing,omitempty"` -} - -func (x *UserSession_RedisSession) Reset() { - *x = UserSession_RedisSession{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UserSession_RedisSession) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UserSession_RedisSession) ProtoMessage() {} - -func (x *UserSession_RedisSession) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UserSession_RedisSession.ProtoReflect.Descriptor instead. -func (*UserSession_RedisSession) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{11, 1} -} - -func (x *UserSession_RedisSession) GetOptions() *RedisOptions { - if x != nil { - return x.Options - } - return nil -} - -func (x *UserSession_RedisSession) GetKeyPrefix() string { - if x != nil { - return x.KeyPrefix - } - return "" -} - -func (x *UserSession_RedisSession) GetCookieName() string { - if x != nil { - return x.CookieName - } - return "" -} - -func (x *UserSession_RedisSession) GetAllowRefreshing() *wrappers.BoolValue { - if x != nil { - return x.AllowRefreshing - } - return nil -} - -type UserSession_CookieOptions struct { - state protoimpl.MessageState sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Max age for the cookie. Leave unset for a default of 30 days (2592000 seconds). - // To disable cookie expiry, set explicitly to 0. - MaxAge *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=max_age,json=maxAge,proto3" json:"max_age,omitempty"` - // Use a non-secure cookie. Note - this should only be used for testing and in trusted - // environments. - NotSecure bool `protobuf:"varint,2,opt,name=not_secure,json=notSecure,proto3" json:"not_secure,omitempty"` - // Path of the cookie. If unset, defaults to "/". Set it explicitly to "" to avoid setting a - // path. - Path *wrappers.StringValue `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` - // Cookie domain - Domain string `protobuf:"bytes,4,opt,name=domain,proto3" json:"domain,omitempty"` } - -func (x *UserSession_CookieOptions) Reset() { - *x = UserSession_CookieOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + +func (x *BasicAuth_EncryptionType) Reset() { + *x = BasicAuth_EncryptionType{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *UserSession_CookieOptions) String() string { +func (x *BasicAuth_EncryptionType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UserSession_CookieOptions) ProtoMessage() {} +func (*BasicAuth_EncryptionType) ProtoMessage() {} -func (x *UserSession_CookieOptions) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[37] - if protoimpl.UnsafeEnabled && x != nil { +func (x *BasicAuth_EncryptionType) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[57] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3091,89 +5719,79 @@ func (x *UserSession_CookieOptions) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UserSession_CookieOptions.ProtoReflect.Descriptor instead. -func (*UserSession_CookieOptions) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{11, 2} +// Deprecated: Use BasicAuth_EncryptionType.ProtoReflect.Descriptor instead. +func (*BasicAuth_EncryptionType) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{8, 1} } -func (x *UserSession_CookieOptions) GetMaxAge() *wrappers.UInt32Value { +func (x *BasicAuth_EncryptionType) GetAlgorithm() isBasicAuth_EncryptionType_Algorithm { if x != nil { - return x.MaxAge + return x.Algorithm } return nil } -func (x *UserSession_CookieOptions) GetNotSecure() bool { +func (x *BasicAuth_EncryptionType) GetApr() *BasicAuth_EncryptionType_Apr { if x != nil { - return x.NotSecure + if x, ok := x.Algorithm.(*BasicAuth_EncryptionType_Apr_); ok { + return x.Apr + } } - return false + return nil } -func (x *UserSession_CookieOptions) GetPath() *wrappers.StringValue { +func (x *BasicAuth_EncryptionType) GetSha1() *BasicAuth_EncryptionType_Sha1 { if x != nil { - return x.Path + if x, ok := x.Algorithm.(*BasicAuth_EncryptionType_Sha1_); ok { + return x.Sha1 + } } return nil } -func (x *UserSession_CookieOptions) GetDomain() string { - if x != nil { - return x.Domain - } - return "" +type isBasicAuth_EncryptionType_Algorithm interface { + isBasicAuth_EncryptionType_Algorithm() } -// Defines how JSON Web Token (JWT) access tokens are validated. -// -// Tokens are validated using a JSON Web Key Set (as defined in -// [Section 5 of RFC7517](https://tools.ietf.org/html/rfc7517#section-5)), -// which can be either inlined in the configuration or fetched from a remote location via HTTP. -// Any keys in the JWKS that are not intended for signature verification (i.e. whose -// ["use" parameter](https://tools.ietf.org/html/rfc7517#section-4.2) is not "sig") -// will be ignored by the system, as will keys that do not specify a -// ["kid" (Key ID) parameter](https://tools.ietf.org/html/rfc7517#section-4.2). -// -// The JWT to be validated must define non-empty "kid" and "alg" headers. The "kid" header -// determines which key in the JWKS will be used to verify the signature of the token; -// if no matching key is found, the token will be rejected. -// -// If present, the server will verify the "exp", "iat", and "nbf" standard JWT claims. -// Validation of the "iss" claim and of token scopes can be configured as well. -// If the JWT has been successfully validated, its set of claims will be added to the -// `AuthorizationRequest` state under the "jwtAccessToken" key. -type AccessTokenValidation_JwtValidation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type BasicAuth_EncryptionType_Apr_ struct { + Apr *BasicAuth_EncryptionType_Apr `protobuf:"bytes,1,opt,name=apr,proto3,oneof"` +} - // Types that are assignable to JwksSourceSpecifier: - // *AccessTokenValidation_JwtValidation_RemoteJwks_ - // *AccessTokenValidation_JwtValidation_LocalJwks_ - JwksSourceSpecifier isAccessTokenValidation_JwtValidation_JwksSourceSpecifier `protobuf_oneof:"jwks_source_specifier"` - // Allow only tokens that have been issued by this principal (i.e. whose "iss" claim matches this value). - // If empty, issuer validation will be skipped. - Issuer string `protobuf:"bytes,3,opt,name=issuer,proto3" json:"issuer,omitempty"` +type BasicAuth_EncryptionType_Sha1_ struct { + Sha1 *BasicAuth_EncryptionType_Sha1 `protobuf:"bytes,2,opt,name=sha1,proto3,oneof"` } -func (x *AccessTokenValidation_JwtValidation) Reset() { - *x = AccessTokenValidation_JwtValidation{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (*BasicAuth_EncryptionType_Apr_) isBasicAuth_EncryptionType_Algorithm() {} + +func (*BasicAuth_EncryptionType_Sha1_) isBasicAuth_EncryptionType_Algorithm() {} + +// Message to store user data. We need the salt and salted hashed password for each user +type BasicAuth_User struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Salt used with the hashing algorithm for the user + Salt string `protobuf:"bytes,1,opt,name=salt,proto3" json:"salt,omitempty"` + // Salted and hashed password for the user + HashedPassword string `protobuf:"bytes,2,opt,name=hashed_password,json=hashedPassword,proto3" json:"hashed_password,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BasicAuth_User) Reset() { + *x = BasicAuth_User{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *AccessTokenValidation_JwtValidation) String() string { +func (x *BasicAuth_User) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AccessTokenValidation_JwtValidation) ProtoMessage() {} +func (*BasicAuth_User) ProtoMessage() {} -func (x *AccessTokenValidation_JwtValidation) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[40] - if protoimpl.UnsafeEnabled && x != nil { +func (x *BasicAuth_User) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[58] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3183,107 +5801,97 @@ func (x *AccessTokenValidation_JwtValidation) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use AccessTokenValidation_JwtValidation.ProtoReflect.Descriptor instead. -func (*AccessTokenValidation_JwtValidation) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{16, 0} -} - -func (m *AccessTokenValidation_JwtValidation) GetJwksSourceSpecifier() isAccessTokenValidation_JwtValidation_JwksSourceSpecifier { - if m != nil { - return m.JwksSourceSpecifier - } - return nil -} - -func (x *AccessTokenValidation_JwtValidation) GetRemoteJwks() *AccessTokenValidation_JwtValidation_RemoteJwks { - if x, ok := x.GetJwksSourceSpecifier().(*AccessTokenValidation_JwtValidation_RemoteJwks_); ok { - return x.RemoteJwks - } - return nil +// Deprecated: Use BasicAuth_User.ProtoReflect.Descriptor instead. +func (*BasicAuth_User) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{8, 2} } -func (x *AccessTokenValidation_JwtValidation) GetLocalJwks() *AccessTokenValidation_JwtValidation_LocalJwks { - if x, ok := x.GetJwksSourceSpecifier().(*AccessTokenValidation_JwtValidation_LocalJwks_); ok { - return x.LocalJwks +func (x *BasicAuth_User) GetSalt() string { + if x != nil { + return x.Salt } - return nil + return "" } -func (x *AccessTokenValidation_JwtValidation) GetIssuer() string { +func (x *BasicAuth_User) GetHashedPassword() string { if x != nil { - return x.Issuer + return x.HashedPassword } return "" } -type isAccessTokenValidation_JwtValidation_JwksSourceSpecifier interface { - isAccessTokenValidation_JwtValidation_JwksSourceSpecifier() +// Map of valid usernames to stored credentials +type BasicAuth_UserList struct { + state protoimpl.MessageState `protogen:"open.v1"` + Users map[string]*BasicAuth_User `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -type AccessTokenValidation_JwtValidation_RemoteJwks_ struct { - // Fetches the JWKS from a remote location. - RemoteJwks *AccessTokenValidation_JwtValidation_RemoteJwks `protobuf:"bytes,1,opt,name=remote_jwks,json=remoteJwks,proto3,oneof"` +func (x *BasicAuth_UserList) Reset() { + *x = BasicAuth_UserList{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -type AccessTokenValidation_JwtValidation_LocalJwks_ struct { - // Loads the JWKS from a local data source. - LocalJwks *AccessTokenValidation_JwtValidation_LocalJwks `protobuf:"bytes,2,opt,name=local_jwks,json=localJwks,proto3,oneof"` +func (x *BasicAuth_UserList) String() string { + return protoimpl.X.MessageStringOf(x) } -func (*AccessTokenValidation_JwtValidation_RemoteJwks_) isAccessTokenValidation_JwtValidation_JwksSourceSpecifier() { +func (*BasicAuth_UserList) ProtoMessage() {} + +func (x *BasicAuth_UserList) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[59] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (*AccessTokenValidation_JwtValidation_LocalJwks_) isAccessTokenValidation_JwtValidation_JwksSourceSpecifier() { +// Deprecated: Use BasicAuth_UserList.ProtoReflect.Descriptor instead. +func (*BasicAuth_UserList) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{8, 3} } -// Defines how (opaque) access tokens, received from the oauth authorization endpoint, are validated -// [OAuth2.0 Token Introspection](https://tools.ietf.org/html/rfc7662) -// -// If the token introspection url requires client authentication, both the client_id and client_secret -// are required. If only one is provided, the config will be rejected. -// These values will be encoded in a basic auth header in order to authenticate the client. -type AccessTokenValidation_IntrospectionValidation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *BasicAuth_UserList) GetUsers() map[string]*BasicAuth_User { + if x != nil { + return x.Users + } + return nil +} - // The URL for the [OAuth2.0 Token Introspection](https://tools.ietf.org/html/rfc7662) endpoint. - // If provided, the (opaque) access token provided or received from the oauth authorization endpoint - // will be validated against this endpoint, or locally cached responses for this access token. - IntrospectionUrl string `protobuf:"bytes,1,opt,name=introspection_url,json=introspectionUrl,proto3" json:"introspection_url,omitempty"` - // Your client id as registered with the issuer. - // Optional: Use if the token introspection url requires client authentication. - ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` - // Your client secret as registered with the issuer. - // Optional: Use if the token introspection url requires client authentication. - ClientSecretRef *core.ResourceRef `protobuf:"bytes,3,opt,name=client_secret_ref,json=clientSecretRef,proto3" json:"client_secret_ref,omitempty"` - // The name of the [introspection response](https://tools.ietf.org/html/rfc7662#section-2.2) - // attribute that contains the ID of the resource owner (e.g. `sub`, `username`). - // If specified, the external auth server will use the value of the attribute as the identifier of the - // authenticated user and add it to the request headers and/or dynamic metadata (depending on how the - // server is configured); if the field is set and the attribute cannot be found, the request will be denied. - // This field is optional and by default the server will not try to derive the user ID. - UserIdAttributeName string `protobuf:"bytes,4,opt,name=user_id_attribute_name,json=userIdAttributeName,proto3" json:"user_id_attribute_name,omitempty"` +// Message to store the salt and salted hashed password for a user +type BasicAuth_Apr_SaltedHashedPassword struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Salt used with the apr algorithm for the user + Salt string `protobuf:"bytes,1,opt,name=salt,proto3" json:"salt,omitempty"` + // Salted and hashed password for the user + HashedPassword string `protobuf:"bytes,2,opt,name=hashed_password,json=hashedPassword,proto3" json:"hashed_password,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *AccessTokenValidation_IntrospectionValidation) Reset() { - *x = AccessTokenValidation_IntrospectionValidation{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *BasicAuth_Apr_SaltedHashedPassword) Reset() { + *x = BasicAuth_Apr_SaltedHashedPassword{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *AccessTokenValidation_IntrospectionValidation) String() string { +func (x *BasicAuth_Apr_SaltedHashedPassword) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AccessTokenValidation_IntrospectionValidation) ProtoMessage() {} +func (*BasicAuth_Apr_SaltedHashedPassword) ProtoMessage() {} -func (x *AccessTokenValidation_IntrospectionValidation) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[41] - if protoimpl.UnsafeEnabled && x != nil { +func (x *BasicAuth_Apr_SaltedHashedPassword) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[60] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3293,65 +5901,86 @@ func (x *AccessTokenValidation_IntrospectionValidation) ProtoReflect() protorefl return mi.MessageOf(x) } -// Deprecated: Use AccessTokenValidation_IntrospectionValidation.ProtoReflect.Descriptor instead. -func (*AccessTokenValidation_IntrospectionValidation) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{16, 1} +// Deprecated: Use BasicAuth_Apr_SaltedHashedPassword.ProtoReflect.Descriptor instead. +func (*BasicAuth_Apr_SaltedHashedPassword) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{8, 0, 0} } -func (x *AccessTokenValidation_IntrospectionValidation) GetIntrospectionUrl() string { +func (x *BasicAuth_Apr_SaltedHashedPassword) GetSalt() string { if x != nil { - return x.IntrospectionUrl + return x.Salt } return "" } -func (x *AccessTokenValidation_IntrospectionValidation) GetClientId() string { +func (x *BasicAuth_Apr_SaltedHashedPassword) GetHashedPassword() string { if x != nil { - return x.ClientId + return x.HashedPassword } return "" } -func (x *AccessTokenValidation_IntrospectionValidation) GetClientSecretRef() *core.ResourceRef { - if x != nil { - return x.ClientSecretRef - } - return nil +// Sha1 encryption type (https://datatracker.ietf.org/doc/html/rfc3174) +// Sha1 is considered insecure and is not recommended for production use +type BasicAuth_EncryptionType_Sha1 struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BasicAuth_EncryptionType_Sha1) Reset() { + *x = BasicAuth_EncryptionType_Sha1{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BasicAuth_EncryptionType_Sha1) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *AccessTokenValidation_IntrospectionValidation) GetUserIdAttributeName() string { +func (*BasicAuth_EncryptionType_Sha1) ProtoMessage() {} + +func (x *BasicAuth_EncryptionType_Sha1) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[62] if x != nil { - return x.UserIdAttributeName + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -type AccessTokenValidation_ScopeList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +// Deprecated: Use BasicAuth_EncryptionType_Sha1.ProtoReflect.Descriptor instead. +func (*BasicAuth_EncryptionType_Sha1) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{8, 1, 0} +} - Scope []string `protobuf:"bytes,1,rep,name=scope,proto3" json:"scope,omitempty"` +// Apache specific iterated MD5 hashing: (https://httpd.apache.org/docs/2.4/misc/password_encryptions.html) +type BasicAuth_EncryptionType_Apr struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *AccessTokenValidation_ScopeList) Reset() { - *x = AccessTokenValidation_ScopeList{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *BasicAuth_EncryptionType_Apr) Reset() { + *x = BasicAuth_EncryptionType_Apr{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *AccessTokenValidation_ScopeList) String() string { +func (x *BasicAuth_EncryptionType_Apr) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AccessTokenValidation_ScopeList) ProtoMessage() {} +func (*BasicAuth_EncryptionType_Apr) ProtoMessage() {} -func (x *AccessTokenValidation_ScopeList) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[42] - if protoimpl.UnsafeEnabled && x != nil { +func (x *BasicAuth_EncryptionType_Apr) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[63] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3361,49 +5990,44 @@ func (x *AccessTokenValidation_ScopeList) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AccessTokenValidation_ScopeList.ProtoReflect.Descriptor instead. -func (*AccessTokenValidation_ScopeList) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{16, 2} -} - -func (x *AccessTokenValidation_ScopeList) GetScope() []string { - if x != nil { - return x.Scope - } - return nil +// Deprecated: Use BasicAuth_EncryptionType_Apr.ProtoReflect.Descriptor instead. +func (*BasicAuth_EncryptionType_Apr) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{8, 1, 1} } -// Specifies how to fetch JWKS from remote and how to cache it. -type AccessTokenValidation_JwtValidation_RemoteJwks struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type UserSession_InternalSession struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Refresh expired id-tokens using the refresh-token. The tokens refreshes when the client issues a call. + // Defaults to false. To enable refreshing, set to true. + AllowRefreshing *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=allow_refreshing,json=allowRefreshing,proto3" json:"allow_refreshing,omitempty"` + // Prefix to append to cookie keys, such as for separate domain and subdomain prefixes. + // Cookie keys are stored in the form `_`. + // For more information, see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#attributes + KeyPrefix string `protobuf:"bytes,2,opt,name=key_prefix,json=keyPrefix,proto3" json:"key_prefix,omitempty"` + // Domain used to validate against requests in order to ensure that request host name matches target domain. + // If the target domain is provided will prevent requests that do not match the target domain according to + // the domain matching specifications in RFC 6265. For more information, see https://datatracker.ietf.org/doc/html/rfc6265#section-5.1.3 + TargetDomain string `protobuf:"bytes,3,opt,name=target_domain,json=targetDomain,proto3" json:"target_domain,omitempty"` unknownFields protoimpl.UnknownFields - - // The HTTP URI to fetch the JWKS. - Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` - // The frequency at which the JWKS should be refreshed. - // If not specified, the default value is 5 minutes. - RefreshInterval *duration.Duration `protobuf:"bytes,2,opt,name=refresh_interval,json=refreshInterval,proto3" json:"refresh_interval,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *AccessTokenValidation_JwtValidation_RemoteJwks) Reset() { - *x = AccessTokenValidation_JwtValidation_RemoteJwks{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *UserSession_InternalSession) Reset() { + *x = UserSession_InternalSession{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *AccessTokenValidation_JwtValidation_RemoteJwks) String() string { +func (x *UserSession_InternalSession) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AccessTokenValidation_JwtValidation_RemoteJwks) ProtoMessage() {} +func (*UserSession_InternalSession) ProtoMessage() {} -func (x *AccessTokenValidation_JwtValidation_RemoteJwks) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { +func (x *UserSession_InternalSession) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[66] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3413,105 +6037,176 @@ func (x *AccessTokenValidation_JwtValidation_RemoteJwks) ProtoReflect() protoref return mi.MessageOf(x) } -// Deprecated: Use AccessTokenValidation_JwtValidation_RemoteJwks.ProtoReflect.Descriptor instead. -func (*AccessTokenValidation_JwtValidation_RemoteJwks) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{16, 0, 0} +// Deprecated: Use UserSession_InternalSession.ProtoReflect.Descriptor instead. +func (*UserSession_InternalSession) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{15, 0} } -func (x *AccessTokenValidation_JwtValidation_RemoteJwks) GetUrl() string { +func (x *UserSession_InternalSession) GetAllowRefreshing() *wrapperspb.BoolValue { if x != nil { - return x.Url + return x.AllowRefreshing + } + return nil +} + +func (x *UserSession_InternalSession) GetKeyPrefix() string { + if x != nil { + return x.KeyPrefix } return "" } -func (x *AccessTokenValidation_JwtValidation_RemoteJwks) GetRefreshInterval() *duration.Duration { +func (x *UserSession_InternalSession) GetTargetDomain() string { if x != nil { - return x.RefreshInterval + return x.TargetDomain } - return nil + return "" } -// Represents a locally available JWKS. -type AccessTokenValidation_JwtValidation_LocalJwks struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type UserSession_RedisSession struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Options to connect to redis + Options *RedisOptions `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` + // Key prefix inside redis + KeyPrefix string `protobuf:"bytes,2,opt,name=key_prefix,json=keyPrefix,proto3" json:"key_prefix,omitempty"` + // Cookie name to set and store the session id. If empty the default "__session" is used. + CookieName string `protobuf:"bytes,3,opt,name=cookie_name,json=cookieName,proto3" json:"cookie_name,omitempty"` + // Refresh expired id-tokens using the refresh-token. The tokens refreshes when the client issues a call. + // Defaults to true. To disable refreshing, set to false. + AllowRefreshing *wrapperspb.BoolValue `protobuf:"bytes,4,opt,name=allow_refreshing,json=allowRefreshing,proto3" json:"allow_refreshing,omitempty"` + // Specifies a time buffer in which an id-token will be refreshed prior to its + // actual expiration. Defaults to 2 seconds. A duration of 0 will only refresh + // tokens after they have already expired. To refresh tokens, you must also set + // 'allowRefreshing' to 'true'; otherwise, this field is ignored. + PreExpiryBuffer *durationpb.Duration `protobuf:"bytes,5,opt,name=pre_expiry_buffer,json=preExpiryBuffer,proto3" json:"pre_expiry_buffer,omitempty"` + // Domain used to validate against requests in order to ensure that request host name matches target domain. + // If the target domain is provided will prevent requests that do not match the target domain according to + // the domain matching specifications in RFC 6265. For more information, see https://datatracker.ietf.org/doc/html/rfc6265#section-5.1.3 + TargetDomain string `protobuf:"bytes,6,opt,name=target_domain,json=targetDomain,proto3" json:"target_domain,omitempty"` + // If set, the name of the header that will include the randomly generated session id + // This would be used as part of the code exchange with the Oauth2 token endpoint + HeaderName string `protobuf:"bytes,7,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} - // JWKS is embedded as a string. - InlineString string `protobuf:"bytes,1,opt,name=inline_string,json=inlineString,proto3" json:"inline_string,omitempty"` +func (x *UserSession_RedisSession) Reset() { + *x = UserSession_RedisSession{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UserSession_RedisSession) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *AccessTokenValidation_JwtValidation_LocalJwks) Reset() { - *x = AccessTokenValidation_JwtValidation_LocalJwks{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[44] +func (*UserSession_RedisSession) ProtoMessage() {} + +func (x *UserSession_RedisSession) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[67] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } + return mi.MessageOf(x) } -func (x *AccessTokenValidation_JwtValidation_LocalJwks) String() string { - return protoimpl.X.MessageStringOf(x) +// Deprecated: Use UserSession_RedisSession.ProtoReflect.Descriptor instead. +func (*UserSession_RedisSession) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{15, 1} +} + +func (x *UserSession_RedisSession) GetOptions() *RedisOptions { + if x != nil { + return x.Options + } + return nil +} + +func (x *UserSession_RedisSession) GetKeyPrefix() string { + if x != nil { + return x.KeyPrefix + } + return "" +} + +func (x *UserSession_RedisSession) GetCookieName() string { + if x != nil { + return x.CookieName + } + return "" } -func (*AccessTokenValidation_JwtValidation_LocalJwks) ProtoMessage() {} +func (x *UserSession_RedisSession) GetAllowRefreshing() *wrapperspb.BoolValue { + if x != nil { + return x.AllowRefreshing + } + return nil +} -func (x *AccessTokenValidation_JwtValidation_LocalJwks) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[44] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *UserSession_RedisSession) GetPreExpiryBuffer() *durationpb.Duration { + if x != nil { + return x.PreExpiryBuffer } - return mi.MessageOf(x) + return nil } -// Deprecated: Use AccessTokenValidation_JwtValidation_LocalJwks.ProtoReflect.Descriptor instead. -func (*AccessTokenValidation_JwtValidation_LocalJwks) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{16, 0, 1} +func (x *UserSession_RedisSession) GetTargetDomain() string { + if x != nil { + return x.TargetDomain + } + return "" } -func (x *AccessTokenValidation_JwtValidation_LocalJwks) GetInlineString() string { +func (x *UserSession_RedisSession) GetHeaderName() string { if x != nil { - return x.InlineString + return x.HeaderName } return "" } -type ApiKeyAuth_SecretKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type UserSession_CookieOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Max age for the cookie. Leave unset for a default of 30 days (2592000 seconds). + // To disable cookie expiry, set explicitly to 0. + MaxAge *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=max_age,json=maxAge,proto3" json:"max_age,omitempty"` + // Use a non-secure cookie. Note - this should only be used for testing and in trusted + // environments. + NotSecure bool `protobuf:"varint,2,opt,name=not_secure,json=notSecure,proto3" json:"not_secure,omitempty"` + // Set the cookie to be HttpOnly. defaults to true. Set explicity to false to disable. + HttpOnly *wrapperspb.BoolValue `protobuf:"bytes,5,opt,name=http_only,json=httpOnly,proto3" json:"http_only,omitempty"` + // Path of the cookie. If unset, defaults to "/". Set it explicitly to "" to avoid setting a + // path. + Path *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` + // Whether the cookie should be restricted to a first-party or same-site context. + // The default mode is LaxMode. + SameSite UserSession_CookieOptions_SameSite `protobuf:"varint,6,opt,name=same_site,json=sameSite,proto3,enum=enterprise.gloo.solo.io.UserSession_CookieOptions_SameSite" json:"same_site,omitempty"` + // Cookie domain + Domain string `protobuf:"bytes,4,opt,name=domain,proto3" json:"domain,omitempty"` unknownFields protoimpl.UnknownFields - - // (Required) The key of the secret data entry to inspect. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // If this field is set to `true`, Gloo will reject an API key secret that does not contain the given key. - // Defaults to `false`. In this case, if a secret does not contain the requested data, no header will be added - // to the request. - Required bool `protobuf:"varint,2,opt,name=required,proto3" json:"required,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *ApiKeyAuth_SecretKey) Reset() { - *x = ApiKeyAuth_SecretKey{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[47] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *UserSession_CookieOptions) Reset() { + *x = UserSession_CookieOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ApiKeyAuth_SecretKey) String() string { +func (x *UserSession_CookieOptions) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ApiKeyAuth_SecretKey) ProtoMessage() {} +func (*UserSession_CookieOptions) ProtoMessage() {} -func (x *ApiKeyAuth_SecretKey) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[47] - if protoimpl.UnsafeEnabled && x != nil { +func (x *UserSession_CookieOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[68] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3521,141 +6216,83 @@ func (x *ApiKeyAuth_SecretKey) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ApiKeyAuth_SecretKey.ProtoReflect.Descriptor instead. -func (*ApiKeyAuth_SecretKey) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{18, 2} +// Deprecated: Use UserSession_CookieOptions.ProtoReflect.Descriptor instead. +func (*UserSession_CookieOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{15, 2} } -func (x *ApiKeyAuth_SecretKey) GetName() string { +func (x *UserSession_CookieOptions) GetMaxAge() *wrapperspb.UInt32Value { if x != nil { - return x.Name + return x.MaxAge } - return "" + return nil } -func (x *ApiKeyAuth_SecretKey) GetRequired() bool { +func (x *UserSession_CookieOptions) GetNotSecure() bool { if x != nil { - return x.Required + return x.NotSecure } return false } -// Configuration properties for pooling connections to the LDAP server. If the pool is exhausted when a connection -// is requested (meaning that all the polled connections are in use), the connection will be created on the fly. -type Ldap_ConnectionPool struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Maximum number connections that are pooled at any give time. The default value is 5. - MaxSize *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=maxSize,proto3" json:"maxSize,omitempty"` - // Number of connections that the pool will be pre-populated with upon initialization. The default value is 2. - InitialSize *wrappers.UInt32Value `protobuf:"bytes,2,opt,name=initialSize,proto3" json:"initialSize,omitempty"` -} - -func (x *Ldap_ConnectionPool) Reset() { - *x = Ldap_ConnectionPool{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[49] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *UserSession_CookieOptions) GetHttpOnly() *wrapperspb.BoolValue { + if x != nil { + return x.HttpOnly } + return nil } -func (x *Ldap_ConnectionPool) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Ldap_ConnectionPool) ProtoMessage() {} - -func (x *Ldap_ConnectionPool) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[49] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *UserSession_CookieOptions) GetPath() *wrapperspb.StringValue { + if x != nil { + return x.Path } - return mi.MessageOf(x) -} - -// Deprecated: Use Ldap_ConnectionPool.ProtoReflect.Descriptor instead. -func (*Ldap_ConnectionPool) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{21, 0} + return nil } -func (x *Ldap_ConnectionPool) GetMaxSize() *wrappers.UInt32Value { +func (x *UserSession_CookieOptions) GetSameSite() UserSession_CookieOptions_SameSite { if x != nil { - return x.MaxSize + return x.SameSite } - return nil + return UserSession_CookieOptions_DefaultMode } -func (x *Ldap_ConnectionPool) GetInitialSize() *wrappers.UInt32Value { +func (x *UserSession_CookieOptions) GetDomain() string { if x != nil { - return x.InitialSize + return x.Domain } - return nil + return "" } -// Deprecated, prefer OAuth2Config -type ExtAuthConfig_OAuthConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // your client id as registered with the issuer - // - // Deprecated: Do not use. - ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` - // your client secret as registered with the issuer - // - // Deprecated: Do not use. - ClientSecret string `protobuf:"bytes,2,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"` - // The url of the issuer. We will look for OIDC information in issuerUrl+ - // ".well-known/openid-configuration" - // - // Deprecated: Do not use. - IssuerUrl string `protobuf:"bytes,3,opt,name=issuer_url,json=issuerUrl,proto3" json:"issuer_url,omitempty"` - // extra query parameters to apply to the Ext-Auth service's authorization request to the identity provider. - // - // Deprecated: Do not use. - AuthEndpointQueryParams map[string]string `protobuf:"bytes,7,rep,name=auth_endpoint_query_params,json=authEndpointQueryParams,proto3" json:"auth_endpoint_query_params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // we to redirect after successful auth, if we can't determine the original - // url this should be your publicly available app url. - // - // Deprecated: Do not use. - AppUrl string `protobuf:"bytes,4,opt,name=app_url,json=appUrl,proto3" json:"app_url,omitempty"` - // a callback path relative to app url that will be used for OIDC callbacks. - // needs to not be used by the application +// the cipher config is used to encrypt session cookie values. This is currently only available for OIDC. +type UserSession_CipherConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // to enable the cipher encryption, the key has to be present. Note that the key has to be found and 32 bytes in + // length for the authconfig to not be rejected. // - // Deprecated: Do not use. - CallbackPath string `protobuf:"bytes,5,opt,name=callback_path,json=callbackPath,proto3" json:"callback_path,omitempty"` - // scopes to request in addition to the openid scope. + // Types that are valid to be assigned to Key: // - // Deprecated: Do not use. - Scopes []string `protobuf:"bytes,6,rep,name=scopes,proto3" json:"scopes,omitempty"` + // *UserSession_CipherConfig_KeyRef + Key isUserSession_CipherConfig_Key `protobuf_oneof:"key"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *ExtAuthConfig_OAuthConfig) Reset() { - *x = ExtAuthConfig_OAuthConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[50] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *UserSession_CipherConfig) Reset() { + *x = UserSession_CipherConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ExtAuthConfig_OAuthConfig) String() string { +func (x *UserSession_CipherConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExtAuthConfig_OAuthConfig) ProtoMessage() {} +func (*UserSession_CipherConfig) ProtoMessage() {} -func (x *ExtAuthConfig_OAuthConfig) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[50] - if protoimpl.UnsafeEnabled && x != nil { +func (x *UserSession_CipherConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[69] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3665,159 +6302,67 @@ func (x *ExtAuthConfig_OAuthConfig) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ExtAuthConfig_OAuthConfig.ProtoReflect.Descriptor instead. -func (*ExtAuthConfig_OAuthConfig) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{24, 0} -} - -// Deprecated: Do not use. -func (x *ExtAuthConfig_OAuthConfig) GetClientId() string { - if x != nil { - return x.ClientId - } - return "" -} - -// Deprecated: Do not use. -func (x *ExtAuthConfig_OAuthConfig) GetClientSecret() string { - if x != nil { - return x.ClientSecret - } - return "" -} - -// Deprecated: Do not use. -func (x *ExtAuthConfig_OAuthConfig) GetIssuerUrl() string { - if x != nil { - return x.IssuerUrl - } - return "" +// Deprecated: Use UserSession_CipherConfig.ProtoReflect.Descriptor instead. +func (*UserSession_CipherConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{15, 3} } -// Deprecated: Do not use. -func (x *ExtAuthConfig_OAuthConfig) GetAuthEndpointQueryParams() map[string]string { +func (x *UserSession_CipherConfig) GetKey() isUserSession_CipherConfig_Key { if x != nil { - return x.AuthEndpointQueryParams + return x.Key } return nil } -// Deprecated: Do not use. -func (x *ExtAuthConfig_OAuthConfig) GetAppUrl() string { +func (x *UserSession_CipherConfig) GetKeyRef() *core.ResourceRef { if x != nil { - return x.AppUrl + if x, ok := x.Key.(*UserSession_CipherConfig_KeyRef); ok { + return x.KeyRef + } } - return "" + return nil } -// Deprecated: Do not use. -func (x *ExtAuthConfig_OAuthConfig) GetCallbackPath() string { - if x != nil { - return x.CallbackPath - } - return "" +type isUserSession_CipherConfig_Key interface { + isUserSession_CipherConfig_Key() } -// Deprecated: Do not use. -func (x *ExtAuthConfig_OAuthConfig) GetScopes() []string { - if x != nil { - return x.Scopes - } - return nil +type UserSession_CipherConfig_KeyRef struct { + // The key reference used for the cipher. The reference must be a Kubernetes Secret of type `gloo.solo.io.EncryptionKeySecret`. + KeyRef *core.ResourceRef `protobuf:"bytes,1,opt,name=key_ref,json=keyRef,proto3,oneof"` } -type ExtAuthConfig_OidcAuthorizationCodeConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (*UserSession_CipherConfig_KeyRef) isUserSession_CipherConfig_Key() {} - // your client id as registered with the issuer - ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` - // your client secret as registered with the issuer - ClientSecret string `protobuf:"bytes,2,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"` - // The url of the issuer. We will look for OIDC information in issuerUrl+ - // ".well-known/openid-configuration" - IssuerUrl string `protobuf:"bytes,3,opt,name=issuer_url,json=issuerUrl,proto3" json:"issuer_url,omitempty"` - // extra query parameters to apply to the Ext-Auth service's authorization request to the identity provider. - // this can be useful for flows such as PKCE (https://www.oauth.com/oauth2-servers/pkce/authorization-request/) - // to set the `code_challenge` and `code_challenge_method`. - AuthEndpointQueryParams map[string]string `protobuf:"bytes,4,rep,name=auth_endpoint_query_params,json=authEndpointQueryParams,proto3" json:"auth_endpoint_query_params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // extra query parameters to apply to the Ext-Auth service's token request to the identity provider. - // this can be useful for flows such as PKCE (https://www.oauth.com/oauth2-servers/pkce/authorization-request/) - // to set the `code_verifier`. - TokenEndpointQueryParams map[string]string `protobuf:"bytes,14,rep,name=token_endpoint_query_params,json=tokenEndpointQueryParams,proto3" json:"token_endpoint_query_params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // we to redirect after successful auth, if we can't determine the original - // url this should be your publicly available app url. - AppUrl string `protobuf:"bytes,5,opt,name=app_url,json=appUrl,proto3" json:"app_url,omitempty"` - // a callback path relative to app url that will be used for OIDC callbacks. - // needs to not be used by the application - CallbackPath string `protobuf:"bytes,6,opt,name=callback_path,json=callbackPath,proto3" json:"callback_path,omitempty"` - // a path relative to app url that will be used for logging out from an OIDC session. - // should not be used by the application. - // If not provided, logout functionality will be disabled. - LogoutPath string `protobuf:"bytes,9,opt,name=logout_path,json=logoutPath,proto3" json:"logout_path,omitempty"` - // url to redirect to after logout. - // This should be a publicly available URL. If not provided, will default to the `app_url`. - AfterLogoutUrl string `protobuf:"bytes,15,opt,name=after_logout_url,json=afterLogoutUrl,proto3" json:"after_logout_url,omitempty"` - // scopes to request in addition to the openid scope. - Scopes []string `protobuf:"bytes,7,rep,name=scopes,proto3" json:"scopes,omitempty"` - Session *UserSession `protobuf:"bytes,8,opt,name=session,proto3" json:"session,omitempty"` - // Configures headers added to requests. - Headers *HeaderConfiguration `protobuf:"bytes,10,opt,name=headers,proto3" json:"headers,omitempty"` - // OIDC configuration is discovered at /.well-known/openid-configuration - // The configuration override defines any properties that should override this discovery configuration - // For example, the following AuthConfig CRD could be defined as: - // ```yaml - // apiVersion: enterprise.gloo.solo.io/v1 - // kind: AuthConfig - // metadata: - // name: google-oidc - // namespace: gloo-system - // spec: - // configs: - // - oauth: - // app_url: http://localhost:8080 - // callback_path: /callback - // client_id: $CLIENT_ID - // client_secret_ref: - // name: google - // namespace: gloo-system - // issuer_url: https://accounts.google.com - // discovery_override: - // token_endpoint: "https://token.url/gettoken" - // ``` - // - // And this will ensure that regardless of what value is discovered at - // /.well-known/openid-configuration, "https://token.url/gettoken" will be used as the token endpoint - DiscoveryOverride *DiscoveryOverride `protobuf:"bytes,11,opt,name=discovery_override,json=discoveryOverride,proto3" json:"discovery_override,omitempty"` - // The interval at which OIDC configuration is discovered at /.well-known/openid-configuration - // If not specified, the default value is 30 minutes. - DiscoveryPollInterval *duration.Duration `protobuf:"bytes,12,opt,name=discovery_poll_interval,json=discoveryPollInterval,proto3" json:"discovery_poll_interval,omitempty"` - // If a user executes a request with a key that is not found in the JWKS, it could be - // that the keys have rotated on the remote source, and not yet in the local cache. - // This policy lets you define the behavior for how to refresh the local cache during a request - // where an invalid key is provided - JwksCacheRefreshPolicy *JwksOnDemandCacheRefreshPolicy `protobuf:"bytes,13,opt,name=jwks_cache_refresh_policy,json=jwksCacheRefreshPolicy,proto3" json:"jwks_cache_refresh_policy,omitempty"` +// Optional: Map a single claim from an OAuth2 access token to a header in the request to the upstream destination. +// Gloo Mesh products only: Note that if you want to clear the route cache to force the proxy to recalculate the +// routing destination after adding the claims, you must create an additional JwtPolicy or TransformationPolicy, +// and configure the `clearRouteCache` or `recalculateRoutingDestination` options. +type OidcAuthorizationCode_AccessToken struct { + state protoimpl.MessageState `protogen:"open.v1"` + // A list of claims to be mapped from the JWT token received by ext-auth-service to an upstream destination. + // This option is not available for opaque tokens. + ClaimsToHeaders []*ClaimToHeader `protobuf:"bytes,1,rep,name=claims_to_headers,json=claimsToHeaders,proto3" json:"claims_to_headers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) Reset() { - *x = ExtAuthConfig_OidcAuthorizationCodeConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[51] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *OidcAuthorizationCode_AccessToken) Reset() { + *x = OidcAuthorizationCode_AccessToken{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[73] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) String() string { +func (x *OidcAuthorizationCode_AccessToken) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExtAuthConfig_OidcAuthorizationCodeConfig) ProtoMessage() {} +func (*OidcAuthorizationCode_AccessToken) ProtoMessage() {} -func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[51] - if protoimpl.UnsafeEnabled && x != nil { +func (x *OidcAuthorizationCode_AccessToken) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[73] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3827,161 +6372,179 @@ func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) ProtoReflect() protoreflect. return mi.MessageOf(x) } -// Deprecated: Use ExtAuthConfig_OidcAuthorizationCodeConfig.ProtoReflect.Descriptor instead. -func (*ExtAuthConfig_OidcAuthorizationCodeConfig) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{24, 1} +// Deprecated: Use OidcAuthorizationCode_AccessToken.ProtoReflect.Descriptor instead. +func (*OidcAuthorizationCode_AccessToken) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{23, 3} } -func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetClientId() string { +func (x *OidcAuthorizationCode_AccessToken) GetClaimsToHeaders() []*ClaimToHeader { if x != nil { - return x.ClientId + return x.ClaimsToHeaders } - return "" + return nil } -func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetClientSecret() string { - if x != nil { - return x.ClientSecret - } - return "" +// Optional: Map a single claim from an OIDC identity token to a header in the request to the upstream destination. +type OidcAuthorizationCode_IdentityToken struct { + state protoimpl.MessageState `protogen:"open.v1"` + // A list of claims to be mapped from the JWT token received by ext-auth-service to an upstream destination. + // This option is not available for opaque tokens. + ClaimsToHeaders []*ClaimToHeader `protobuf:"bytes,1,rep,name=claims_to_headers,json=claimsToHeaders,proto3" json:"claims_to_headers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetIssuerUrl() string { - if x != nil { - return x.IssuerUrl - } - return "" +func (x *OidcAuthorizationCode_IdentityToken) Reset() { + *x = OidcAuthorizationCode_IdentityToken{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[74] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetAuthEndpointQueryParams() map[string]string { +func (x *OidcAuthorizationCode_IdentityToken) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OidcAuthorizationCode_IdentityToken) ProtoMessage() {} + +func (x *OidcAuthorizationCode_IdentityToken) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[74] if x != nil { - return x.AuthEndpointQueryParams + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetTokenEndpointQueryParams() map[string]string { +// Deprecated: Use OidcAuthorizationCode_IdentityToken.ProtoReflect.Descriptor instead. +func (*OidcAuthorizationCode_IdentityToken) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{23, 4} +} + +func (x *OidcAuthorizationCode_IdentityToken) GetClaimsToHeaders() []*ClaimToHeader { if x != nil { - return x.TokenEndpointQueryParams + return x.ClaimsToHeaders } return nil } -func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetAppUrl() string { - if x != nil { - return x.AppUrl - } - return "" +// Configuration specific to the client authentication type used to exchange the access code for the access and id tokens. +type OidcAuthorizationCode_ClientAuthentication struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Configure how to authenticate the client + // + // Types that are valid to be assigned to ClientAuthenticationConfig: + // + // *OidcAuthorizationCode_ClientAuthentication_ClientSecret_ + // *OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt_ + ClientAuthenticationConfig isOidcAuthorizationCode_ClientAuthentication_ClientAuthenticationConfig `protobuf_oneof:"client_authentication_config"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetCallbackPath() string { - if x != nil { - return x.CallbackPath - } - return "" +func (x *OidcAuthorizationCode_ClientAuthentication) Reset() { + *x = OidcAuthorizationCode_ClientAuthentication{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[75] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OidcAuthorizationCode_ClientAuthentication) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetLogoutPath() string { +func (*OidcAuthorizationCode_ClientAuthentication) ProtoMessage() {} + +func (x *OidcAuthorizationCode_ClientAuthentication) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[75] if x != nil { - return x.LogoutPath + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetAfterLogoutUrl() string { - if x != nil { - return x.AfterLogoutUrl - } - return "" +// Deprecated: Use OidcAuthorizationCode_ClientAuthentication.ProtoReflect.Descriptor instead. +func (*OidcAuthorizationCode_ClientAuthentication) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{23, 5} } -func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetScopes() []string { +func (x *OidcAuthorizationCode_ClientAuthentication) GetClientAuthenticationConfig() isOidcAuthorizationCode_ClientAuthentication_ClientAuthenticationConfig { if x != nil { - return x.Scopes + return x.ClientAuthenticationConfig } return nil } -func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetSession() *UserSession { +func (x *OidcAuthorizationCode_ClientAuthentication) GetClientSecret() *OidcAuthorizationCode_ClientAuthentication_ClientSecret { if x != nil { - return x.Session + if x, ok := x.ClientAuthenticationConfig.(*OidcAuthorizationCode_ClientAuthentication_ClientSecret_); ok { + return x.ClientSecret + } } return nil } -func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetHeaders() *HeaderConfiguration { +func (x *OidcAuthorizationCode_ClientAuthentication) GetPrivateKeyJwt() *OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt { if x != nil { - return x.Headers + if x, ok := x.ClientAuthenticationConfig.(*OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt_); ok { + return x.PrivateKeyJwt + } } return nil } -func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetDiscoveryOverride() *DiscoveryOverride { - if x != nil { - return x.DiscoveryOverride - } - return nil +type isOidcAuthorizationCode_ClientAuthentication_ClientAuthenticationConfig interface { + isOidcAuthorizationCode_ClientAuthentication_ClientAuthenticationConfig() } -func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetDiscoveryPollInterval() *duration.Duration { - if x != nil { - return x.DiscoveryPollInterval - } - return nil +type OidcAuthorizationCode_ClientAuthentication_ClientSecret_ struct { + // Use the client secret method to authenticate the client + // + // +kubebuilder:validation:XValidation:rule="has(self.clientSecretRef) || (has(self.disableClientSecret) && self.disableClientSecret)",message="Either clientSecretRef must be set or disableClientSecret must be true" + ClientSecret *OidcAuthorizationCode_ClientAuthentication_ClientSecret `protobuf:"bytes,1,opt,name=client_secret,json=clientSecret,proto3,oneof"` } -func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetJwksCacheRefreshPolicy() *JwksOnDemandCacheRefreshPolicy { - if x != nil { - return x.JwksCacheRefreshPolicy - } - return nil +type OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt_ struct { + // Use the private ket JWT method to authenticate the client + PrivateKeyJwt *OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt `protobuf:"bytes,2,opt,name=private_key_jwt,json=privateKeyJwt,proto3,oneof"` } -type ExtAuthConfig_AccessTokenValidationConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (*OidcAuthorizationCode_ClientAuthentication_ClientSecret_) isOidcAuthorizationCode_ClientAuthentication_ClientAuthenticationConfig() { +} - // Types that are assignable to ValidationType: - // *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionUrl - // *ExtAuthConfig_AccessTokenValidationConfig_Jwt - // *ExtAuthConfig_AccessTokenValidationConfig_Introspection - ValidationType isExtAuthConfig_AccessTokenValidationConfig_ValidationType `protobuf_oneof:"validation_type"` - // The URL for the OIDC userinfo endpoint. - // If provided, the (opaque) access token provided or received from the oauth endpoint - // will be queried and the userinfo response (or cached response) will be added to the - // `AuthorizationRequest` state under the "introspection" key. - // This can be useful to leverage the userinfo response in, for example, an external auth server plugin. - UserinfoUrl string `protobuf:"bytes,4,opt,name=userinfo_url,json=userinfoUrl,proto3" json:"userinfo_url,omitempty"` - // How long the token introspection and userinfo endpoint response for a specific access token should be kept - // in the in-memory cache. The result will be invalidated at this timeout, or at "exp" time from the introspection - // result, whichever comes sooner. If omitted, defaults to 10 minutes. If zero, then no caching will be done. - CacheTimeout *duration.Duration `protobuf:"bytes,5,opt,name=cache_timeout,json=cacheTimeout,proto3" json:"cache_timeout,omitempty"` - // Optional criteria for validating the scopes of a token. - // - // Types that are assignable to ScopeValidation: - // *ExtAuthConfig_AccessTokenValidationConfig_RequiredScopes - ScopeValidation isExtAuthConfig_AccessTokenValidationConfig_ScopeValidation `protobuf_oneof:"scope_validation"` +func (*OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt_) isOidcAuthorizationCode_ClientAuthentication_ClientAuthenticationConfig() { } -func (x *ExtAuthConfig_AccessTokenValidationConfig) Reset() { - *x = ExtAuthConfig_AccessTokenValidationConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[52] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +// No-op, represents default OIDC behavior +type OidcAuthorizationCode_Default struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OidcAuthorizationCode_Default) Reset() { + *x = OidcAuthorizationCode_Default{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[76] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ExtAuthConfig_AccessTokenValidationConfig) String() string { +func (x *OidcAuthorizationCode_Default) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExtAuthConfig_AccessTokenValidationConfig) ProtoMessage() {} +func (*OidcAuthorizationCode_Default) ProtoMessage() {} -func (x *ExtAuthConfig_AccessTokenValidationConfig) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[52] - if protoimpl.UnsafeEnabled && x != nil { +func (x *OidcAuthorizationCode_Default) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[76] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3991,150 +6554,204 @@ func (x *ExtAuthConfig_AccessTokenValidationConfig) ProtoReflect() protoreflect. return mi.MessageOf(x) } -// Deprecated: Use ExtAuthConfig_AccessTokenValidationConfig.ProtoReflect.Descriptor instead. -func (*ExtAuthConfig_AccessTokenValidationConfig) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{24, 2} +// Deprecated: Use OidcAuthorizationCode_Default.ProtoReflect.Descriptor instead. +func (*OidcAuthorizationCode_Default) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{23, 6} } -func (m *ExtAuthConfig_AccessTokenValidationConfig) GetValidationType() isExtAuthConfig_AccessTokenValidationConfig_ValidationType { - if m != nil { - return m.ValidationType - } - return nil +// For the moment this is just path, but we may want to configure things like iss/sid validation +type OidcAuthorizationCode_FrontChannelLogout struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Path to use for front channel logout. Should not be the same as logout or callback paths. + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -// Deprecated: Do not use. -func (x *ExtAuthConfig_AccessTokenValidationConfig) GetIntrospectionUrl() string { - if x, ok := x.GetValidationType().(*ExtAuthConfig_AccessTokenValidationConfig_IntrospectionUrl); ok { - return x.IntrospectionUrl - } - return "" +func (x *OidcAuthorizationCode_FrontChannelLogout) Reset() { + *x = OidcAuthorizationCode_FrontChannelLogout{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[77] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ExtAuthConfig_AccessTokenValidationConfig) GetJwt() *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation { - if x, ok := x.GetValidationType().(*ExtAuthConfig_AccessTokenValidationConfig_Jwt); ok { - return x.Jwt - } - return nil +func (x *OidcAuthorizationCode_FrontChannelLogout) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ExtAuthConfig_AccessTokenValidationConfig) GetIntrospection() *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation { - if x, ok := x.GetValidationType().(*ExtAuthConfig_AccessTokenValidationConfig_Introspection); ok { - return x.Introspection +func (*OidcAuthorizationCode_FrontChannelLogout) ProtoMessage() {} + +func (x *OidcAuthorizationCode_FrontChannelLogout) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[77] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *ExtAuthConfig_AccessTokenValidationConfig) GetUserinfoUrl() string { +// Deprecated: Use OidcAuthorizationCode_FrontChannelLogout.ProtoReflect.Descriptor instead. +func (*OidcAuthorizationCode_FrontChannelLogout) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{23, 7} +} + +func (x *OidcAuthorizationCode_FrontChannelLogout) GetPath() string { if x != nil { - return x.UserinfoUrl + return x.Path } return "" } -func (x *ExtAuthConfig_AccessTokenValidationConfig) GetCacheTimeout() *duration.Duration { +// Client Secret Authentication requires a client secret (unless it is disabled) +type OidcAuthorizationCode_ClientAuthentication_ClientSecret struct { + state protoimpl.MessageState `protogen:"open.v1"` + // your client secret as registered with the issuer. + // This is required unless `disable_client_secret` is true + ClientSecretRef *core.ResourceRef `protobuf:"bytes,1,opt,name=client_secret_ref,json=clientSecretRef,proto3" json:"client_secret_ref,omitempty"` + // If true, do not check for or use the client secret. + // Generally the client secret is required and AuthConfigs will be rejected if it isn't set. + // However certain implementations of the PKCE flow do not use a client secret (including Okta) so this setting allows configuring Oidc without a client secret. + DisableClientSecret *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=disable_client_secret,json=disableClientSecret,proto3" json:"disable_client_secret,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OidcAuthorizationCode_ClientAuthentication_ClientSecret) Reset() { + *x = OidcAuthorizationCode_ClientAuthentication_ClientSecret{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[78] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OidcAuthorizationCode_ClientAuthentication_ClientSecret) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OidcAuthorizationCode_ClientAuthentication_ClientSecret) ProtoMessage() {} + +func (x *OidcAuthorizationCode_ClientAuthentication_ClientSecret) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[78] if x != nil { - return x.CacheTimeout + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (m *ExtAuthConfig_AccessTokenValidationConfig) GetScopeValidation() isExtAuthConfig_AccessTokenValidationConfig_ScopeValidation { - if m != nil { - return m.ScopeValidation - } - return nil +// Deprecated: Use OidcAuthorizationCode_ClientAuthentication_ClientSecret.ProtoReflect.Descriptor instead. +func (*OidcAuthorizationCode_ClientAuthentication_ClientSecret) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{23, 5, 0} } -func (x *ExtAuthConfig_AccessTokenValidationConfig) GetRequiredScopes() *ExtAuthConfig_AccessTokenValidationConfig_ScopeList { - if x, ok := x.GetScopeValidation().(*ExtAuthConfig_AccessTokenValidationConfig_RequiredScopes); ok { - return x.RequiredScopes +func (x *OidcAuthorizationCode_ClientAuthentication_ClientSecret) GetClientSecretRef() *core.ResourceRef { + if x != nil { + return x.ClientSecretRef } return nil } -type isExtAuthConfig_AccessTokenValidationConfig_ValidationType interface { - isExtAuthConfig_AccessTokenValidationConfig_ValidationType() +func (x *OidcAuthorizationCode_ClientAuthentication_ClientSecret) GetDisableClientSecret() *wrapperspb.BoolValue { + if x != nil { + return x.DisableClientSecret + } + return nil } -type ExtAuthConfig_AccessTokenValidationConfig_IntrospectionUrl struct { - // The URL for the [OAuth2.0 Token Introspection](https://tools.ietf.org/html/rfc7662) endpoint. - // If provided, the (opaque) access token provided or received from the oauth authorization endpoint - // will be validated against this endpoint, or locally cached responses for this access token. - // This field is deprecated as it does not support authenticated introspection requests +// Private Key JWT Authentication requires a signing key for the JWT and an duration for the JWT to be valid. +type OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Signing key for the JWT used to authenticate the client // - // Deprecated: Do not use. - IntrospectionUrl string `protobuf:"bytes,1,opt,name=introspection_url,json=introspectionUrl,proto3,oneof"` -} - -type ExtAuthConfig_AccessTokenValidationConfig_Jwt struct { - // Validate access tokens that conform to the - // [JSON Web Token (JWT)](https://tools.ietf.org/html/rfc7519) specification. - Jwt *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation `protobuf:"bytes,2,opt,name=jwt,proto3,oneof"` + // +kubebuilder:validation:Required + SigningKeyRef *core.ResourceRef `protobuf:"bytes,1,opt,name=signing_key_ref,json=signingKeyRef,proto3" json:"signing_key_ref,omitempty"` + // Amount of time for which the JWT is valid. No maximum is enforced, but different IDPs may impose limits on how far in + // the future the expiration time is allowed to be. If omitted, default is 5s. + ValidFor *durationpb.Duration `protobuf:"bytes,2,opt,name=valid_for,json=validFor,proto3" json:"valid_for,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -type ExtAuthConfig_AccessTokenValidationConfig_Introspection struct { - // Defines how (opaque) access tokens, received from the oauth authorization endpoint, are validated - // [OAuth2.0 Token Introspection](https://tools.ietf.org/html/rfc7662) specification. - Introspection *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation `protobuf:"bytes,3,opt,name=introspection,proto3,oneof"` +func (x *OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt) Reset() { + *x = OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[79] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (*ExtAuthConfig_AccessTokenValidationConfig_IntrospectionUrl) isExtAuthConfig_AccessTokenValidationConfig_ValidationType() { +func (x *OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt) String() string { + return protoimpl.X.MessageStringOf(x) } -func (*ExtAuthConfig_AccessTokenValidationConfig_Jwt) isExtAuthConfig_AccessTokenValidationConfig_ValidationType() { -} +func (*OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt) ProtoMessage() {} -func (*ExtAuthConfig_AccessTokenValidationConfig_Introspection) isExtAuthConfig_AccessTokenValidationConfig_ValidationType() { +func (x *OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[79] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type isExtAuthConfig_AccessTokenValidationConfig_ScopeValidation interface { - isExtAuthConfig_AccessTokenValidationConfig_ScopeValidation() +// Deprecated: Use OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt.ProtoReflect.Descriptor instead. +func (*OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{23, 5, 1} } -type ExtAuthConfig_AccessTokenValidationConfig_RequiredScopes struct { - // Require access token to have all of the scopes in the given list. - // This configuration applies to both opaque and JWT tokens. In the case of opaque tokens, - // this will check the scopes returned in the "scope" member of introspection response - // (as described in [Section 2.2 of RFC7662](https://tools.ietf.org/html/rfc7662#section-2.2). - // In case of JWTs the scopes to be validated are expected to be contained in the "scope" claim of the - // token in the form of a space-separated string. - // Omitting this field means that scope validation will be skipped. - RequiredScopes *ExtAuthConfig_AccessTokenValidationConfig_ScopeList `protobuf:"bytes,6,opt,name=required_scopes,json=requiredScopes,proto3,oneof"` +func (x *OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt) GetSigningKeyRef() *core.ResourceRef { + if x != nil { + return x.SigningKeyRef + } + return nil } -func (*ExtAuthConfig_AccessTokenValidationConfig_RequiredScopes) isExtAuthConfig_AccessTokenValidationConfig_ScopeValidation() { +func (x *OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt) GetValidFor() *durationpb.Duration { + if x != nil { + return x.ValidFor + } + return nil } -type ExtAuthConfig_OAuth2Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to OauthType: - // *ExtAuthConfig_OAuth2Config_OidcAuthorizationCode - // *ExtAuthConfig_OAuth2Config_AccessTokenValidationConfig - OauthType isExtAuthConfig_OAuth2Config_OauthType `protobuf_oneof:"oauth_type"` +// Specifies how to fetch JWKS from remote and how to cache it. +type JwtValidation_RemoteJwks struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The HTTP URI to fetch the JWKS. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` + // The frequency at which the JWKS should be refreshed. + // If not specified, the default value is 5 minutes. + RefreshInterval *durationpb.Duration `protobuf:"bytes,2,opt,name=refresh_interval,json=refreshInterval,proto3" json:"refresh_interval,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *ExtAuthConfig_OAuth2Config) Reset() { - *x = ExtAuthConfig_OAuth2Config{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[53] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *JwtValidation_RemoteJwks) Reset() { + *x = JwtValidation_RemoteJwks{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[82] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ExtAuthConfig_OAuth2Config) String() string { +func (x *JwtValidation_RemoteJwks) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExtAuthConfig_OAuth2Config) ProtoMessage() {} +func (*JwtValidation_RemoteJwks) ProtoMessage() {} -func (x *ExtAuthConfig_OAuth2Config) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[53] - if protoimpl.UnsafeEnabled && x != nil { +func (x *JwtValidation_RemoteJwks) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[82] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4144,94 +6761,97 @@ func (x *ExtAuthConfig_OAuth2Config) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ExtAuthConfig_OAuth2Config.ProtoReflect.Descriptor instead. -func (*ExtAuthConfig_OAuth2Config) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{24, 3} +// Deprecated: Use JwtValidation_RemoteJwks.ProtoReflect.Descriptor instead. +func (*JwtValidation_RemoteJwks) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{25, 0} } -func (m *ExtAuthConfig_OAuth2Config) GetOauthType() isExtAuthConfig_OAuth2Config_OauthType { - if m != nil { - return m.OauthType +func (x *JwtValidation_RemoteJwks) GetUrl() string { + if x != nil { + return x.Url } - return nil + return "" } -func (x *ExtAuthConfig_OAuth2Config) GetOidcAuthorizationCode() *ExtAuthConfig_OidcAuthorizationCodeConfig { - if x, ok := x.GetOauthType().(*ExtAuthConfig_OAuth2Config_OidcAuthorizationCode); ok { - return x.OidcAuthorizationCode +func (x *JwtValidation_RemoteJwks) GetRefreshInterval() *durationpb.Duration { + if x != nil { + return x.RefreshInterval } return nil } -func (x *ExtAuthConfig_OAuth2Config) GetAccessTokenValidationConfig() *ExtAuthConfig_AccessTokenValidationConfig { - if x, ok := x.GetOauthType().(*ExtAuthConfig_OAuth2Config_AccessTokenValidationConfig); ok { - return x.AccessTokenValidationConfig - } - return nil +// Represents a locally available JWKS. +type JwtValidation_LocalJwks struct { + state protoimpl.MessageState `protogen:"open.v1"` + // JWKS is embedded as a string. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:MinLength=1 + InlineString string `protobuf:"bytes,1,opt,name=inline_string,json=inlineString,proto3" json:"inline_string,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -type isExtAuthConfig_OAuth2Config_OauthType interface { - isExtAuthConfig_OAuth2Config_OauthType() +func (x *JwtValidation_LocalJwks) Reset() { + *x = JwtValidation_LocalJwks{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[83] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -type ExtAuthConfig_OAuth2Config_OidcAuthorizationCode struct { - // provide issuer location and let gloo handle OIDC flow for you. - // requests authorized by validating the contents of ID token. - // can also authorize the access token if configured. - OidcAuthorizationCode *ExtAuthConfig_OidcAuthorizationCodeConfig `protobuf:"bytes,1,opt,name=oidc_authorization_code,json=oidcAuthorizationCode,proto3,oneof"` +func (x *JwtValidation_LocalJwks) String() string { + return protoimpl.X.MessageStringOf(x) } -type ExtAuthConfig_OAuth2Config_AccessTokenValidationConfig struct { - // provide the access token on the request and let gloo handle authorization. - // - // according to https://tools.ietf.org/html/rfc6750 you can pass tokens through: - // - form-encoded body parameter. recommended, more likely to appear. e.g.: Authorization: Bearer mytoken123 - // - URI query parameter e.g. access_token=mytoken123 - // - and (preferably) secure cookies - AccessTokenValidationConfig *ExtAuthConfig_AccessTokenValidationConfig `protobuf:"bytes,3,opt,name=access_token_validation_config,json=accessTokenValidationConfig,proto3,oneof"` +func (*JwtValidation_LocalJwks) ProtoMessage() {} + +func (x *JwtValidation_LocalJwks) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[83] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (*ExtAuthConfig_OAuth2Config_OidcAuthorizationCode) isExtAuthConfig_OAuth2Config_OauthType() {} +// Deprecated: Use JwtValidation_LocalJwks.ProtoReflect.Descriptor instead. +func (*JwtValidation_LocalJwks) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{25, 1} +} -func (*ExtAuthConfig_OAuth2Config_AccessTokenValidationConfig) isExtAuthConfig_OAuth2Config_OauthType() { +func (x *JwtValidation_LocalJwks) GetInlineString() string { + if x != nil { + return x.InlineString + } + return "" } -// **NOTE: This configuration is not user-facing and will be auto generated** -type ExtAuthConfig_ApiKeyAuthConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +// No-op, represents default OIDC distributed claims behavior +type AccessTokenValidation_Default struct { + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} - // A mapping of valid API keys to their associated metadata. - // This map is automatically populated with the information from the relevant `ApiKeySecret`s. - ValidApiKeys map[string]*ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata `protobuf:"bytes,1,rep,name=valid_api_keys,json=validApiKeys,proto3" json:"valid_api_keys,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // (Optional) When receiving a request, the Gloo Edge Enterprise external auth server will look for an API key - // in a header with this name. This field is optional; if not provided it defaults to `api-key`. - HeaderName string `protobuf:"bytes,2,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"` - // Determines the key metadata that will be included as headers on the upstream request. - // Each entry represents a header to add: the key is the name of the header, and the - // value is the key that will be used to look up the data entry in the key metadata. - HeadersFromKeyMetadata map[string]string `protobuf:"bytes,3,rep,name=headers_from_key_metadata,json=headersFromKeyMetadata,proto3" json:"headers_from_key_metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -} - -func (x *ExtAuthConfig_ApiKeyAuthConfig) Reset() { - *x = ExtAuthConfig_ApiKeyAuthConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[54] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *AccessTokenValidation_Default) Reset() { + *x = AccessTokenValidation_Default{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[85] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ExtAuthConfig_ApiKeyAuthConfig) String() string { +func (x *AccessTokenValidation_Default) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExtAuthConfig_ApiKeyAuthConfig) ProtoMessage() {} +func (*AccessTokenValidation_Default) ProtoMessage() {} -func (x *ExtAuthConfig_ApiKeyAuthConfig) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[54] - if protoimpl.UnsafeEnabled && x != nil { +func (x *AccessTokenValidation_Default) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[85] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4241,63 +6861,86 @@ func (x *ExtAuthConfig_ApiKeyAuthConfig) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ExtAuthConfig_ApiKeyAuthConfig.ProtoReflect.Descriptor instead. -func (*ExtAuthConfig_ApiKeyAuthConfig) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{24, 4} +// Deprecated: Use AccessTokenValidation_Default.ProtoReflect.Descriptor instead. +func (*AccessTokenValidation_Default) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{27, 1} } -func (x *ExtAuthConfig_ApiKeyAuthConfig) GetValidApiKeys() map[string]*ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata { - if x != nil { - return x.ValidApiKeys - } - return nil +type AccessTokenValidation_ScopeList struct { + state protoimpl.MessageState `protogen:"open.v1"` + Scope []string `protobuf:"bytes,1,rep,name=scope,proto3" json:"scope,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AccessTokenValidation_ScopeList) Reset() { + *x = AccessTokenValidation_ScopeList{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[86] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AccessTokenValidation_ScopeList) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ExtAuthConfig_ApiKeyAuthConfig) GetHeaderName() string { +func (*AccessTokenValidation_ScopeList) ProtoMessage() {} + +func (x *AccessTokenValidation_ScopeList) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[86] if x != nil { - return x.HeaderName + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) +} + +// Deprecated: Use AccessTokenValidation_ScopeList.ProtoReflect.Descriptor instead. +func (*AccessTokenValidation_ScopeList) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{27, 2} } -func (x *ExtAuthConfig_ApiKeyAuthConfig) GetHeadersFromKeyMetadata() map[string]string { +func (x *AccessTokenValidation_ScopeList) GetScope() []string { if x != nil { - return x.HeadersFromKeyMetadata + return x.Scope } return nil } -type ExtAuthConfig_OpaAuthConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +// DEPRECATED: use generalized MetadataEntry +type ApiKeyAuth_SecretKey struct { + state protoimpl.MessageState `protogen:"open.v1"` + // DEPRECATED + // (Required) The key of the API key metadata entry to inspect. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // DEPRECATED + // If this field is set to `true`, Gloo will reject an API key structure that does not contain data for the given key. + // Defaults to `false`. In this case, if an API key structure does not contain the requested data, no header will be added + // to the request. + Required bool `protobuf:"varint,2,opt,name=required,proto3" json:"required,omitempty"` unknownFields protoimpl.UnknownFields - - // An optional modules (filename, module content) maps containing modules assist in the resolution of `query`. - Modules map[string]string `protobuf:"bytes,1,rep,name=modules,proto3" json:"modules,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // The query that determines the auth decision. The result of this query must be either a boolean - // or an array with boolean as the first element. A boolean `true` value means that the request - // will be authorized. Any other value, or error, means that the request will be denied. - Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *ExtAuthConfig_OpaAuthConfig) Reset() { - *x = ExtAuthConfig_OpaAuthConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[55] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *ApiKeyAuth_SecretKey) Reset() { + *x = ApiKeyAuth_SecretKey{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[90] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ExtAuthConfig_OpaAuthConfig) String() string { +func (x *ApiKeyAuth_SecretKey) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExtAuthConfig_OpaAuthConfig) ProtoMessage() {} +func (*ApiKeyAuth_SecretKey) ProtoMessage() {} -func (x *ExtAuthConfig_OpaAuthConfig) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[55] - if protoimpl.UnsafeEnabled && x != nil { +func (x *ApiKeyAuth_SecretKey) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[90] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4307,66 +6950,55 @@ func (x *ExtAuthConfig_OpaAuthConfig) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ExtAuthConfig_OpaAuthConfig.ProtoReflect.Descriptor instead. -func (*ExtAuthConfig_OpaAuthConfig) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{24, 5} +// Deprecated: Use ApiKeyAuth_SecretKey.ProtoReflect.Descriptor instead. +func (*ApiKeyAuth_SecretKey) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{29, 3} } -func (x *ExtAuthConfig_OpaAuthConfig) GetModules() map[string]string { +func (x *ApiKeyAuth_SecretKey) GetName() string { if x != nil { - return x.Modules + return x.Name } - return nil + return "" } -func (x *ExtAuthConfig_OpaAuthConfig) GetQuery() string { +func (x *ApiKeyAuth_SecretKey) GetRequired() bool { if x != nil { - return x.Query + return x.Required } - return "" + return false } -type ExtAuthConfig_Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +// For the K8s secret backend, this data is stored as key-value data in the secret itself. +// For the Aerospike backend, this data is stored as bins on the key's record +type ApiKeyAuth_MetadataEntry struct { + state protoimpl.MessageState `protogen:"open.v1"` + // (Required) The key of the API key metadata entry to inspect. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // If this field is set to `true`, Gloo will reject an API key structure that does not contain data for the given key. + // Defaults to `false`. In this case, if an API key structure does not contain the requested data, no header will be added + // to the request. + Required bool `protobuf:"varint,2,opt,name=required,proto3" json:"required,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} - // optional: used when defining complex boolean logic, if `boolean_expr` is defined below. Also used - // in logging. If omitted, an automatically generated name will be used (e.g. config_0, of the - // pattern 'config_$INDEX_IN_CHAIN'). In the case of plugin auth, this field is ignored in favor of - // the name assigned on the plugin config itself. - Name *wrappers.StringValue `protobuf:"bytes,11,opt,name=name,proto3" json:"name,omitempty"` - // Types that are assignable to AuthConfig: - // *ExtAuthConfig_Config_Oauth - // *ExtAuthConfig_Config_Oauth2 - // *ExtAuthConfig_Config_BasicAuth - // *ExtAuthConfig_Config_ApiKeyAuth - // *ExtAuthConfig_Config_PluginAuth - // *ExtAuthConfig_Config_OpaAuth - // *ExtAuthConfig_Config_Ldap - // *ExtAuthConfig_Config_Jwt - // *ExtAuthConfig_Config_PassThroughAuth - AuthConfig isExtAuthConfig_Config_AuthConfig `protobuf_oneof:"auth_config"` -} - -func (x *ExtAuthConfig_Config) Reset() { - *x = ExtAuthConfig_Config{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[56] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *ApiKeyAuth_MetadataEntry) Reset() { + *x = ApiKeyAuth_MetadataEntry{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[91] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ExtAuthConfig_Config) String() string { +func (x *ApiKeyAuth_MetadataEntry) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExtAuthConfig_Config) ProtoMessage() {} +func (*ApiKeyAuth_MetadataEntry) ProtoMessage() {} -func (x *ExtAuthConfig_Config) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[56] - if protoimpl.UnsafeEnabled && x != nil { +func (x *ApiKeyAuth_MetadataEntry) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[91] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4376,201 +7008,178 @@ func (x *ExtAuthConfig_Config) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ExtAuthConfig_Config.ProtoReflect.Descriptor instead. -func (*ExtAuthConfig_Config) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{24, 6} +// Deprecated: Use ApiKeyAuth_MetadataEntry.ProtoReflect.Descriptor instead. +func (*ApiKeyAuth_MetadataEntry) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{29, 4} } -func (x *ExtAuthConfig_Config) GetName() *wrappers.StringValue { +func (x *ApiKeyAuth_MetadataEntry) GetName() string { if x != nil { return x.Name } - return nil + return "" } -func (m *ExtAuthConfig_Config) GetAuthConfig() isExtAuthConfig_Config_AuthConfig { - if m != nil { - return m.AuthConfig +func (x *ApiKeyAuth_MetadataEntry) GetRequired() bool { + if x != nil { + return x.Required } - return nil + return false } -// Deprecated: Do not use. -func (x *ExtAuthConfig_Config) GetOauth() *ExtAuthConfig_OAuthConfig { - if x, ok := x.GetAuthConfig().(*ExtAuthConfig_Config_Oauth); ok { - return x.Oauth - } - return nil +type AerospikeApiKeyStorageReadModeSc struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to ReadModeSc: + // + // *AerospikeApiKeyStorageReadModeSc_ReadModeScSession + // *AerospikeApiKeyStorageReadModeSc_ReadModeScLinearize + // *AerospikeApiKeyStorageReadModeSc_ReadModeScReplica + // *AerospikeApiKeyStorageReadModeSc_ReadModeScAllowUnavailable + ReadModeSc isAerospikeApiKeyStorageReadModeSc_ReadModeSc `protobuf_oneof:"read_mode_sc"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *ExtAuthConfig_Config) GetOauth2() *ExtAuthConfig_OAuth2Config { - if x, ok := x.GetAuthConfig().(*ExtAuthConfig_Config_Oauth2); ok { - return x.Oauth2 - } - return nil +func (x *AerospikeApiKeyStorageReadModeSc) Reset() { + *x = AerospikeApiKeyStorageReadModeSc{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[93] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ExtAuthConfig_Config) GetBasicAuth() *BasicAuth { - if x, ok := x.GetAuthConfig().(*ExtAuthConfig_Config_BasicAuth); ok { - return x.BasicAuth - } - return nil +func (x *AerospikeApiKeyStorageReadModeSc) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ExtAuthConfig_Config) GetApiKeyAuth() *ExtAuthConfig_ApiKeyAuthConfig { - if x, ok := x.GetAuthConfig().(*ExtAuthConfig_Config_ApiKeyAuth); ok { - return x.ApiKeyAuth +func (*AerospikeApiKeyStorageReadModeSc) ProtoMessage() {} + +func (x *AerospikeApiKeyStorageReadModeSc) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[93] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *ExtAuthConfig_Config) GetPluginAuth() *AuthPlugin { - if x, ok := x.GetAuthConfig().(*ExtAuthConfig_Config_PluginAuth); ok { - return x.PluginAuth - } - return nil +// Deprecated: Use AerospikeApiKeyStorageReadModeSc.ProtoReflect.Descriptor instead. +func (*AerospikeApiKeyStorageReadModeSc) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{31, 0} } -func (x *ExtAuthConfig_Config) GetOpaAuth() *ExtAuthConfig_OpaAuthConfig { - if x, ok := x.GetAuthConfig().(*ExtAuthConfig_Config_OpaAuth); ok { - return x.OpaAuth +func (x *AerospikeApiKeyStorageReadModeSc) GetReadModeSc() isAerospikeApiKeyStorageReadModeSc_ReadModeSc { + if x != nil { + return x.ReadModeSc } return nil } -func (x *ExtAuthConfig_Config) GetLdap() *Ldap { - if x, ok := x.GetAuthConfig().(*ExtAuthConfig_Config_Ldap); ok { - return x.Ldap +func (x *AerospikeApiKeyStorageReadModeSc) GetReadModeScSession() uint32 { + if x != nil { + if x, ok := x.ReadModeSc.(*AerospikeApiKeyStorageReadModeSc_ReadModeScSession); ok { + return x.ReadModeScSession + } } - return nil + return 0 } -func (x *ExtAuthConfig_Config) GetJwt() *empty.Empty { - if x, ok := x.GetAuthConfig().(*ExtAuthConfig_Config_Jwt); ok { - return x.Jwt +func (x *AerospikeApiKeyStorageReadModeSc) GetReadModeScLinearize() uint32 { + if x != nil { + if x, ok := x.ReadModeSc.(*AerospikeApiKeyStorageReadModeSc_ReadModeScLinearize); ok { + return x.ReadModeScLinearize + } } - return nil + return 0 } -func (x *ExtAuthConfig_Config) GetPassThroughAuth() *PassThroughAuth { - if x, ok := x.GetAuthConfig().(*ExtAuthConfig_Config_PassThroughAuth); ok { - return x.PassThroughAuth +func (x *AerospikeApiKeyStorageReadModeSc) GetReadModeScReplica() uint32 { + if x != nil { + if x, ok := x.ReadModeSc.(*AerospikeApiKeyStorageReadModeSc_ReadModeScReplica); ok { + return x.ReadModeScReplica + } } - return nil + return 0 } -type isExtAuthConfig_Config_AuthConfig interface { - isExtAuthConfig_Config_AuthConfig() +func (x *AerospikeApiKeyStorageReadModeSc) GetReadModeScAllowUnavailable() uint32 { + if x != nil { + if x, ok := x.ReadModeSc.(*AerospikeApiKeyStorageReadModeSc_ReadModeScAllowUnavailable); ok { + return x.ReadModeScAllowUnavailable + } + } + return 0 } -type ExtAuthConfig_Config_Oauth struct { - // Deprecated: Do not use. - Oauth *ExtAuthConfig_OAuthConfig `protobuf:"bytes,3,opt,name=oauth,proto3,oneof"` +type isAerospikeApiKeyStorageReadModeSc_ReadModeSc interface { + isAerospikeApiKeyStorageReadModeSc_ReadModeSc() } -type ExtAuthConfig_Config_Oauth2 struct { - Oauth2 *ExtAuthConfig_OAuth2Config `protobuf:"bytes,9,opt,name=oauth2,proto3,oneof"` +type AerospikeApiKeyStorageReadModeSc_ReadModeScSession struct { + // The session ensures this client sees only an increasing sequence of record versions. + // Server reads only from master, which is the default. + ReadModeScSession uint32 `protobuf:"varint,1,opt,name=read_mode_sc_session,json=readModeScSession,proto3,oneof"` } -type ExtAuthConfig_Config_BasicAuth struct { - BasicAuth *BasicAuth `protobuf:"bytes,4,opt,name=basic_auth,json=basicAuth,proto3,oneof"` +type AerospikeApiKeyStorageReadModeSc_ReadModeScLinearize struct { + // "linearize" ensures that ALL clients see only an increasing sequence of record versions. + // "server" reads only from master. + ReadModeScLinearize uint32 `protobuf:"varint,2,opt,name=read_mode_sc_linearize,json=readModeScLinearize,proto3,oneof"` } -type ExtAuthConfig_Config_ApiKeyAuth struct { - ApiKeyAuth *ExtAuthConfig_ApiKeyAuthConfig `protobuf:"bytes,5,opt,name=api_key_auth,json=apiKeyAuth,proto3,oneof"` +type AerospikeApiKeyStorageReadModeSc_ReadModeScReplica struct { + // "replica" indicates that the server can read from master or any full (non-migrating) replica. + // An increasing sequence of record versions is not guaranteed. + ReadModeScReplica uint32 `protobuf:"varint,3,opt,name=read_mode_sc_replica,json=readModeScReplica,proto3,oneof"` } -type ExtAuthConfig_Config_PluginAuth struct { - PluginAuth *AuthPlugin `protobuf:"bytes,6,opt,name=plugin_auth,json=pluginAuth,proto3,oneof"` +type AerospikeApiKeyStorageReadModeSc_ReadModeScAllowUnavailable struct { + // "allow_unavailable" indicates that the server can read from master or any full (non-migrating) replica or from unavailable + // partitions. An increasing sequence of record versions is not guaranteed. + ReadModeScAllowUnavailable uint32 `protobuf:"varint,4,opt,name=read_mode_sc_allow_unavailable,json=readModeScAllowUnavailable,proto3,oneof"` } -type ExtAuthConfig_Config_OpaAuth struct { - OpaAuth *ExtAuthConfig_OpaAuthConfig `protobuf:"bytes,7,opt,name=opa_auth,json=opaAuth,proto3,oneof"` +func (*AerospikeApiKeyStorageReadModeSc_ReadModeScSession) isAerospikeApiKeyStorageReadModeSc_ReadModeSc() { } -type ExtAuthConfig_Config_Ldap struct { - Ldap *Ldap `protobuf:"bytes,8,opt,name=ldap,proto3,oneof"` +func (*AerospikeApiKeyStorageReadModeSc_ReadModeScLinearize) isAerospikeApiKeyStorageReadModeSc_ReadModeSc() { } -type ExtAuthConfig_Config_Jwt struct { - // This is a "dummy" extauth service which can be used to support multiple auth mechanisms with JWT authentication. - // If Jwt authentication is to be used in the [boolean expression](https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto.sk/#authconfig) in an AuthConfig, you can use this auth config type to include Jwt as an Auth config. - // In addition, `allow_missing_or_failed_jwt` must be set on the Virtual Host or Route that uses JWT auth or else the JWT filter will short circuit this behaviour. - Jwt *empty.Empty `protobuf:"bytes,12,opt,name=jwt,proto3,oneof"` +func (*AerospikeApiKeyStorageReadModeSc_ReadModeScReplica) isAerospikeApiKeyStorageReadModeSc_ReadModeSc() { } -type ExtAuthConfig_Config_PassThroughAuth struct { - PassThroughAuth *PassThroughAuth `protobuf:"bytes,13,opt,name=pass_through_auth,json=passThroughAuth,proto3,oneof"` +func (*AerospikeApiKeyStorageReadModeSc_ReadModeScAllowUnavailable) isAerospikeApiKeyStorageReadModeSc_ReadModeSc() { } -func (*ExtAuthConfig_Config_Oauth) isExtAuthConfig_Config_AuthConfig() {} - -func (*ExtAuthConfig_Config_Oauth2) isExtAuthConfig_Config_AuthConfig() {} - -func (*ExtAuthConfig_Config_BasicAuth) isExtAuthConfig_Config_AuthConfig() {} - -func (*ExtAuthConfig_Config_ApiKeyAuth) isExtAuthConfig_Config_AuthConfig() {} - -func (*ExtAuthConfig_Config_PluginAuth) isExtAuthConfig_Config_AuthConfig() {} - -func (*ExtAuthConfig_Config_OpaAuth) isExtAuthConfig_Config_AuthConfig() {} - -func (*ExtAuthConfig_Config_Ldap) isExtAuthConfig_Config_AuthConfig() {} - -func (*ExtAuthConfig_Config_Jwt) isExtAuthConfig_Config_AuthConfig() {} - -func (*ExtAuthConfig_Config_PassThroughAuth) isExtAuthConfig_Config_AuthConfig() {} - -// Defines how JSON Web Token (JWT) access tokens are validated. -// -// Tokens are validated using a JSON Web Key Set (as defined in -// [Section 5 of RFC7517](https://tools.ietf.org/html/rfc7517#section-5)), -// which can be either inlined in the configuration or fetched from a remote location via HTTP. -// Any keys in the JWKS that are not intended for signature verification (i.e. whose -// ["use" parameter](https://tools.ietf.org/html/rfc7517#section-4.2) is not "sig") -// will be ignored by the system, as will keys that do not specify a -// ["kid" (Key ID) parameter](https://tools.ietf.org/html/rfc7517#section-4.2). -// -// The JWT to be validated must define non-empty "kid" and "alg" headers. The "kid" header -// determines which key in the JWKS will be used to verify the signature of the token; -// if no matching key is found, the token will be rejected. -// -// If present, the server will verify the "exp", "iat", and "nbf" standard JWT claims. -// Validation of the "iss" claim and of token scopes can be configured as well. -// If the JWT has been successfully validated, its set of claims will be added to the -// `AuthorizationRequest` state under the "jwtAccessToken" key. -type ExtAuthConfig_AccessTokenValidationConfig_JwtValidation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type AerospikeApiKeyStorageReadModeAp struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to ReadModeAp: + // + // *AerospikeApiKeyStorageReadModeAp_ReadModeApOne + // *AerospikeApiKeyStorageReadModeAp_ReadModeApAll + ReadModeAp isAerospikeApiKeyStorageReadModeAp_ReadModeAp `protobuf_oneof:"read_mode_ap"` unknownFields protoimpl.UnknownFields - - // Types that are assignable to JwksSourceSpecifier: - // *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks_ - // *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks_ - JwksSourceSpecifier isExtAuthConfig_AccessTokenValidationConfig_JwtValidation_JwksSourceSpecifier `protobuf_oneof:"jwks_source_specifier"` - // Allow only tokens that have been issued by this principal (i.e. whose "iss" claim matches this value). - // If empty, issuer validation will be skipped. - Issuer string `protobuf:"bytes,3,opt,name=issuer,proto3" json:"issuer,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) Reset() { - *x = ExtAuthConfig_AccessTokenValidationConfig_JwtValidation{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[60] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *AerospikeApiKeyStorageReadModeAp) Reset() { + *x = AerospikeApiKeyStorageReadModeAp{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[94] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) String() string { +func (x *AerospikeApiKeyStorageReadModeAp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) ProtoMessage() {} +func (*AerospikeApiKeyStorageReadModeAp) ProtoMessage() {} -func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[60] - if protoimpl.UnsafeEnabled && x != nil { +func (x *AerospikeApiKeyStorageReadModeAp) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[94] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4580,107 +7189,86 @@ func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) ProtoReflect() return mi.MessageOf(x) } -// Deprecated: Use ExtAuthConfig_AccessTokenValidationConfig_JwtValidation.ProtoReflect.Descriptor instead. -func (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{24, 2, 0} -} - -func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) GetJwksSourceSpecifier() isExtAuthConfig_AccessTokenValidationConfig_JwtValidation_JwksSourceSpecifier { - if m != nil { - return m.JwksSourceSpecifier - } - return nil +// Deprecated: Use AerospikeApiKeyStorageReadModeAp.ProtoReflect.Descriptor instead. +func (*AerospikeApiKeyStorageReadModeAp) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{31, 1} } -func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) GetRemoteJwks() *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks { - if x, ok := x.GetJwksSourceSpecifier().(*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks_); ok { - return x.RemoteJwks +func (x *AerospikeApiKeyStorageReadModeAp) GetReadModeAp() isAerospikeApiKeyStorageReadModeAp_ReadModeAp { + if x != nil { + return x.ReadModeAp } return nil } -func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) GetLocalJwks() *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks { - if x, ok := x.GetJwksSourceSpecifier().(*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks_); ok { - return x.LocalJwks +func (x *AerospikeApiKeyStorageReadModeAp) GetReadModeApOne() uint32 { + if x != nil { + if x, ok := x.ReadModeAp.(*AerospikeApiKeyStorageReadModeAp_ReadModeApOne); ok { + return x.ReadModeApOne + } } - return nil + return 0 } -func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) GetIssuer() string { +func (x *AerospikeApiKeyStorageReadModeAp) GetReadModeApAll() uint32 { if x != nil { - return x.Issuer + if x, ok := x.ReadModeAp.(*AerospikeApiKeyStorageReadModeAp_ReadModeApAll); ok { + return x.ReadModeApAll + } } - return "" + return 0 } -type isExtAuthConfig_AccessTokenValidationConfig_JwtValidation_JwksSourceSpecifier interface { - isExtAuthConfig_AccessTokenValidationConfig_JwtValidation_JwksSourceSpecifier() +type isAerospikeApiKeyStorageReadModeAp_ReadModeAp interface { + isAerospikeApiKeyStorageReadModeAp_ReadModeAp() } -type ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks_ struct { - // Fetches the JWKS from a remote location. - RemoteJwks *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks `protobuf:"bytes,1,opt,name=remote_jwks,json=remoteJwks,proto3,oneof"` +type AerospikeApiKeyStorageReadModeAp_ReadModeApOne struct { + // "one" indicates that a single node is involved in the read operation. + ReadModeApOne uint32 `protobuf:"varint,1,opt,name=read_mode_ap_one,json=readModeApOne,proto3,oneof"` } -type ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks_ struct { - // Loads the JWKS from a local data source. - LocalJwks *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks `protobuf:"bytes,2,opt,name=local_jwks,json=localJwks,proto3,oneof"` +type AerospikeApiKeyStorageReadModeAp_ReadModeApAll struct { + // "all" indicates that all duplicate nodes are consulted in + // the read operation. + ReadModeApAll uint32 `protobuf:"varint,2,opt,name=read_mode_ap_all,json=readModeApAll,proto3,oneof"` } -func (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks_) isExtAuthConfig_AccessTokenValidationConfig_JwtValidation_JwksSourceSpecifier() { +func (*AerospikeApiKeyStorageReadModeAp_ReadModeApOne) isAerospikeApiKeyStorageReadModeAp_ReadModeAp() { } -func (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks_) isExtAuthConfig_AccessTokenValidationConfig_JwtValidation_JwksSourceSpecifier() { +func (*AerospikeApiKeyStorageReadModeAp_ReadModeApAll) isAerospikeApiKeyStorageReadModeAp_ReadModeAp() { } -// Defines how (opaque) access tokens, received from the oauth authorization endpoint, are validated -// [OAuth2.0 Token Introspection](https://tools.ietf.org/html/rfc7662) -// -// If the token introspection url requires client authentication, both the client_id and client_secret -// are required. If only one is provided, the config will be rejected. -// These values will be encoded in a basic auth header in order to authenticate the client. -type ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type AerospikeApiKeyStorageTlsCurveID struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to CurveId: + // + // *AerospikeApiKeyStorageTlsCurveID_CurveP256 + // *AerospikeApiKeyStorageTlsCurveID_CurveP384 + // *AerospikeApiKeyStorageTlsCurveID_CurveP521 + // *AerospikeApiKeyStorageTlsCurveID_X_25519 + CurveId isAerospikeApiKeyStorageTlsCurveID_CurveId `protobuf_oneof:"curve_id"` unknownFields protoimpl.UnknownFields - - // The URL for the [OAuth2.0 Token Introspection](https://tools.ietf.org/html/rfc7662) endpoint. - // If provided, the (opaque) access token provided or received from the oauth authorization endpoint - // will be validated against this endpoint, or locally cached responses for this access token. - IntrospectionUrl string `protobuf:"bytes,1,opt,name=introspection_url,json=introspectionUrl,proto3" json:"introspection_url,omitempty"` - // Your client id as registered with the issuer. - // Optional: Use if the token introspection url requires client authentication. - ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` - // Your client secret as registered with the issuer. - // Optional: Use if the token introspection url requires client authentication. - ClientSecret string `protobuf:"bytes,3,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"` - // The name of the [introspection response](https://tools.ietf.org/html/rfc7662#section-2.2) - // attribute that contains the ID of the resource owner (e.g. `sub`, `username`). - // If specified, the external auth server will use the value of the attribute as the identifier of the - // authenticated user and add it to the request headers and/or dynamic metadata (depending on how the - // server is configured); if the field is set and the attribute cannot be found, the request will be denied. - // This field is optional and by default the server will not try to derive the user ID. - UserIdAttributeName string `protobuf:"bytes,4,opt,name=user_id_attribute_name,json=userIdAttributeName,proto3" json:"user_id_attribute_name,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) Reset() { - *x = ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[61] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *AerospikeApiKeyStorageTlsCurveID) Reset() { + *x = AerospikeApiKeyStorageTlsCurveID{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[95] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) String() string { +func (x *AerospikeApiKeyStorageTlsCurveID) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) ProtoMessage() {} +func (*AerospikeApiKeyStorageTlsCurveID) ProtoMessage() {} -func (x *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[61] - if protoimpl.UnsafeEnabled && x != nil { +func (x *AerospikeApiKeyStorageTlsCurveID) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[95] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4690,117 +7278,110 @@ func (x *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) Prot return mi.MessageOf(x) } -// Deprecated: Use ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation.ProtoReflect.Descriptor instead. -func (*ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{24, 2, 1} +// Deprecated: Use AerospikeApiKeyStorageTlsCurveID.ProtoReflect.Descriptor instead. +func (*AerospikeApiKeyStorageTlsCurveID) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{31, 2} } -func (x *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) GetIntrospectionUrl() string { +func (x *AerospikeApiKeyStorageTlsCurveID) GetCurveId() isAerospikeApiKeyStorageTlsCurveID_CurveId { if x != nil { - return x.IntrospectionUrl + return x.CurveId } - return "" + return nil } -func (x *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) GetClientId() string { +func (x *AerospikeApiKeyStorageTlsCurveID) GetCurveP256() uint32 { if x != nil { - return x.ClientId + if x, ok := x.CurveId.(*AerospikeApiKeyStorageTlsCurveID_CurveP256); ok { + return x.CurveP256 + } } - return "" + return 0 } -func (x *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) GetClientSecret() string { +func (x *AerospikeApiKeyStorageTlsCurveID) GetCurveP384() uint32 { if x != nil { - return x.ClientSecret + if x, ok := x.CurveId.(*AerospikeApiKeyStorageTlsCurveID_CurveP384); ok { + return x.CurveP384 + } } - return "" + return 0 } -func (x *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) GetUserIdAttributeName() string { +func (x *AerospikeApiKeyStorageTlsCurveID) GetCurveP521() uint32 { if x != nil { - return x.UserIdAttributeName + if x, ok := x.CurveId.(*AerospikeApiKeyStorageTlsCurveID_CurveP521); ok { + return x.CurveP521 + } } - return "" -} - -type ExtAuthConfig_AccessTokenValidationConfig_ScopeList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Scope []string `protobuf:"bytes,1,rep,name=scope,proto3" json:"scope,omitempty"` + return 0 } -func (x *ExtAuthConfig_AccessTokenValidationConfig_ScopeList) Reset() { - *x = ExtAuthConfig_AccessTokenValidationConfig_ScopeList{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[62] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *AerospikeApiKeyStorageTlsCurveID) GetX_25519() uint32 { + if x != nil { + if x, ok := x.CurveId.(*AerospikeApiKeyStorageTlsCurveID_X_25519); ok { + return x.X_25519 + } } + return 0 } -func (x *ExtAuthConfig_AccessTokenValidationConfig_ScopeList) String() string { - return protoimpl.X.MessageStringOf(x) +type isAerospikeApiKeyStorageTlsCurveID_CurveId interface { + isAerospikeApiKeyStorageTlsCurveID_CurveId() } -func (*ExtAuthConfig_AccessTokenValidationConfig_ScopeList) ProtoMessage() {} +type AerospikeApiKeyStorageTlsCurveID_CurveP256 struct { + CurveP256 uint32 `protobuf:"varint,1,opt,name=curve_p256,json=curveP256,proto3,oneof"` +} -func (x *ExtAuthConfig_AccessTokenValidationConfig_ScopeList) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[62] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) +type AerospikeApiKeyStorageTlsCurveID_CurveP384 struct { + CurveP384 uint32 `protobuf:"varint,2,opt,name=curve_p384,json=curveP384,proto3,oneof"` } -// Deprecated: Use ExtAuthConfig_AccessTokenValidationConfig_ScopeList.ProtoReflect.Descriptor instead. -func (*ExtAuthConfig_AccessTokenValidationConfig_ScopeList) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{24, 2, 2} +type AerospikeApiKeyStorageTlsCurveID_CurveP521 struct { + CurveP521 uint32 `protobuf:"varint,3,opt,name=curve_p521,json=curveP521,proto3,oneof"` } -func (x *ExtAuthConfig_AccessTokenValidationConfig_ScopeList) GetScope() []string { - if x != nil { - return x.Scope - } - return nil +type AerospikeApiKeyStorageTlsCurveID_X_25519 struct { + X_25519 uint32 `protobuf:"varint,4,opt,name=x_25519,json=x25519,proto3,oneof"` } -// Specifies how to fetch JWKS from remote and how to cache it. -type ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (*AerospikeApiKeyStorageTlsCurveID_CurveP256) isAerospikeApiKeyStorageTlsCurveID_CurveId() {} - // The HTTP URI to fetch the JWKS. - Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` - // The frequency at which the JWKS should be refreshed. - // If not specified, the default value is 5 minutes. - RefreshInterval *duration.Duration `protobuf:"bytes,2,opt,name=refresh_interval,json=refreshInterval,proto3" json:"refresh_interval,omitempty"` +func (*AerospikeApiKeyStorageTlsCurveID_CurveP384) isAerospikeApiKeyStorageTlsCurveID_CurveId() {} + +func (*AerospikeApiKeyStorageTlsCurveID_CurveP521) isAerospikeApiKeyStorageTlsCurveID_CurveId() {} + +func (*AerospikeApiKeyStorageTlsCurveID_X_25519) isAerospikeApiKeyStorageTlsCurveID_CurveId() {} + +// Configuration properties for pooling connections to the LDAP server. If the pool is exhausted when a connection +// is requested (meaning that all the pooled connections are in use), the connection will be created on the fly. +type Ldap_ConnectionPool struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Maximum number connections that are pooled at any give time. The default value is 5. + MaxSize *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=maxSize,proto3" json:"maxSize,omitempty"` + // Number of connections that the pool will be pre-populated with upon initialization. The default value is 2. + InitialSize *wrapperspb.UInt32Value `protobuf:"bytes,2,opt,name=initialSize,proto3" json:"initialSize,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) Reset() { - *x = ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[63] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *Ldap_ConnectionPool) Reset() { + *x = Ldap_ConnectionPool{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[99] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) String() string { +func (x *Ldap_ConnectionPool) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) ProtoMessage() {} +func (*Ldap_ConnectionPool) ProtoMessage() {} -func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[63] - if protoimpl.UnsafeEnabled && x != nil { +func (x *Ldap_ConnectionPool) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[99] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4810,53 +7391,92 @@ func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) Pro return mi.MessageOf(x) } -// Deprecated: Use ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks.ProtoReflect.Descriptor instead. -func (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{24, 2, 0, 0} +// Deprecated: Use Ldap_ConnectionPool.ProtoReflect.Descriptor instead. +func (*Ldap_ConnectionPool) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{38, 0} } -func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) GetUrl() string { +func (x *Ldap_ConnectionPool) GetMaxSize() *wrapperspb.UInt32Value { if x != nil { - return x.Url + return x.MaxSize } - return "" + return nil } -func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) GetRefreshInterval() *duration.Duration { +func (x *Ldap_ConnectionPool) GetInitialSize() *wrapperspb.UInt32Value { if x != nil { - return x.RefreshInterval + return x.InitialSize } return nil } -// Represents a locally available JWKS. -type ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // JWKS is embedded as a string. - InlineString string `protobuf:"bytes,1,opt,name=inline_string,json=inlineString,proto3" json:"inline_string,omitempty"` -} - -func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) Reset() { - *x = ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[64] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) String() string { +// The passthrough http request can be configured to pass through the incoming request body, +// the ext-auth state (which is shared between different auth methods within one ext-auth instance), and +// the [filterMetadata](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/data_sharing_between_filters#metadata) +// The body of the passthrough auth request will be a JSON as follows: +// { +// "body" : string, +// "state": object (map[string]interface{}), +// "filterMetadata": object (map[string]protobuf.Struct), +// "config": object (protobuf.Struct), +// } +// `config` is the struct block specified under the passthrough auth configuration. +// If `passthrough_body`, `passthrough_state`, `passthrough_filter_metadata`, and `config` are all false/nil, +// the body of the auth request will remain empty. Setting any of these will increase latency slightly due to +// JSON marshalling. +type PassThroughHttp_Request struct { + state protoimpl.MessageState `protogen:"open.v1"` + // These headers will be copied from the incoming request to the request going + // to the auth server. By default, no headers are copied from the incoming request. + // Pseudo-headers such as `:Path`, and `:Method` can not be specified here. + AllowedHeaders []string `protobuf:"bytes,1,rep,name=allowed_headers,json=allowedHeaders,proto3" json:"allowed_headers,omitempty"` + // These headers that will be included to the request to authorization service. Note that + // client request of the same key will be overridden. + // Pseudo-headers such as `:Path`, and `:Method` can not be specified here. + HeadersToAdd map[string]string `protobuf:"bytes,2,rep,name=headers_to_add,json=headersToAdd,proto3" json:"headers_to_add,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Whether or not to include the ext-auth state object in the passthrough request body. + // If this is set to true, it is expected that the state is returned in the HTTP response from the + // passthrough service. The state received from the response will be the state that is shared with + // other ext-auth service methods. + // If pass_through_body, pass_through_filter_metadata and pass_through_state are false, + // the authorization request body will be empty. A non-empty body will increase latency times + // slightly, so this is set to false by default, and should only be set to to true if the + // extauth state is needed in the auth request. + PassThroughState bool `protobuf:"varint,3,opt,name=pass_through_state,json=passThroughState,proto3" json:"pass_through_state,omitempty"` + // Whether or not to include the filter metadata in the passthrough request body. + // If pass_through_body, pass_through_filter_metadata and pass_through_state are false, + // the authorization request body will be empty. A non-empty body will increase latency times + // slightly, so this is set to false by default, and should only be set to to true if the + // filter metadata is needed in the auth request. + PassThroughFilterMetadata bool `protobuf:"varint,4,opt,name=pass_through_filter_metadata,json=passThroughFilterMetadata,proto3" json:"pass_through_filter_metadata,omitempty"` + // Whether or not to include the body in the passthrough request body. + // In order for this to work, the settings.extauth.requestBody must be set in the Gloo Edge Settings CRD so that + // the request body is buffered and sent to the ext-auth service. + // If pass_through_body, pass_through_filter_metadata and pass_through_state are false, + // the authorization request body will be empty. A non-empty body will increase latency times + // slightly, so this is set to false by default, and should only be set to to true if the + // request body is needed in the auth request. + PassThroughBody bool `protobuf:"varint,5,opt,name=pass_through_body,json=passThroughBody,proto3" json:"pass_through_body,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PassThroughHttp_Request) Reset() { + *x = PassThroughHttp_Request{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[100] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PassThroughHttp_Request) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) ProtoMessage() {} +func (*PassThroughHttp_Request) ProtoMessage() {} -func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[64] - if protoimpl.UnsafeEnabled && x != nil { +func (x *PassThroughHttp_Request) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[100] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4866,47 +7486,93 @@ func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) Prot return mi.MessageOf(x) } -// Deprecated: Use ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks.ProtoReflect.Descriptor instead. -func (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{24, 2, 0, 1} +// Deprecated: Use PassThroughHttp_Request.ProtoReflect.Descriptor instead. +func (*PassThroughHttp_Request) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{44, 0} } -func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) GetInlineString() string { +func (x *PassThroughHttp_Request) GetAllowedHeaders() []string { if x != nil { - return x.InlineString + return x.AllowedHeaders } - return "" + return nil } -type ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PassThroughHttp_Request) GetHeadersToAdd() map[string]string { + if x != nil { + return x.HeadersToAdd + } + return nil +} + +func (x *PassThroughHttp_Request) GetPassThroughState() bool { + if x != nil { + return x.PassThroughState + } + return false +} - // The user is mapped as the name of `Secret` which contains the `ApiKeySecret` - Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` - // The metadata present on the `ApiKeySecret`. - Metadata map[string]string `protobuf:"bytes,2,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +func (x *PassThroughHttp_Request) GetPassThroughFilterMetadata() bool { + if x != nil { + return x.PassThroughFilterMetadata + } + return false } -func (x *ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) Reset() { - *x = ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[65] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PassThroughHttp_Request) GetPassThroughBody() bool { + if x != nil { + return x.PassThroughBody } + return false } -func (x *ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) String() string { +type PassThroughHttp_Response struct { + state protoimpl.MessageState `protogen:"open.v1"` + // When this is set, authorization response headers that have a header in this list will be added to the original client request and sent to the upstream + // when the auth request is successful. These will be appended to any request headers that already exist. + // If this and allowed_upstream_headers_to_overwrite are empty, by default, no authorization response headers will be added to the upstream request. + // Header names may not be included in both allowed_upstream_headers and allowed_upstream_headers_to_overwrite. + AllowedUpstreamHeaders []string `protobuf:"bytes,1,rep,name=allowed_upstream_headers,json=allowedUpstreamHeaders,proto3" json:"allowed_upstream_headers,omitempty"` + // When this is set, authorization response headers in this list will be added to the response to the downstream client when the auth request is denied. + // If the response header already exists, it will replace the response header. + // If this is empty, by default, no authorization response headers will be added to the response to the downstream client. + AllowedClientHeadersOnDenied []string `protobuf:"bytes,2,rep,name=allowed_client_headers_on_denied,json=allowedClientHeadersOnDenied,proto3" json:"allowed_client_headers_on_denied,omitempty"` + // If this is set to true, the body of the response from the http passthrough auth server is expected to have shape + // + // { + // "state": object (map[string]interface{}) + // } + // + // The state will be marshalled from the response body and this is the state that will be passed on to other auth configs. + // Because of the marshalling from JSON to Go map, this will add some latency to the request. + // If the marshalling fails, the authorization check will fail and the request will be unauthorized after the ext-auth-service pod + // logs the marshal error. + ReadStateFromResponse bool `protobuf:"varint,3,opt,name=read_state_from_response,json=readStateFromResponse,proto3" json:"read_state_from_response,omitempty"` + // When this is set, authorization response headers that have a header in this list will be added to the original client request and sent to the upstream + // when the auth request is successful. These will overwrite to any request headers that already exist. + // If this and allowed_upstream_headers are empty, by default, no authorization response headers will be added to the upstream request. + // Header names may not be included in both allowed_upstream_headers and allowed_upstream_headers_to_overwrite. + AllowedUpstreamHeadersToOverwrite []string `protobuf:"bytes,4,rep,name=allowed_upstream_headers_to_overwrite,json=allowedUpstreamHeadersToOverwrite,proto3" json:"allowed_upstream_headers_to_overwrite,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PassThroughHttp_Response) Reset() { + *x = PassThroughHttp_Response{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[101] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PassThroughHttp_Response) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) ProtoMessage() {} +func (*PassThroughHttp_Response) ProtoMessage() {} -func (x *ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[65] - if protoimpl.UnsafeEnabled && x != nil { +func (x *PassThroughHttp_Response) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[101] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4916,28 +7582,42 @@ func (x *ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) ProtoReflect() protoreflect return mi.MessageOf(x) } -// Deprecated: Use ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata.ProtoReflect.Descriptor instead. -func (*ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{24, 4, 0} +// Deprecated: Use PassThroughHttp_Response.ProtoReflect.Descriptor instead. +func (*PassThroughHttp_Response) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP(), []int{44, 1} } -func (x *ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) GetUsername() string { +func (x *PassThroughHttp_Response) GetAllowedUpstreamHeaders() []string { if x != nil { - return x.Username + return x.AllowedUpstreamHeaders } - return "" + return nil } -func (x *ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) GetMetadata() map[string]string { +func (x *PassThroughHttp_Response) GetAllowedClientHeadersOnDenied() []string { if x != nil { - return x.Metadata + return x.AllowedClientHeadersOnDenied + } + return nil +} + +func (x *PassThroughHttp_Response) GetReadStateFromResponse() bool { + if x != nil { + return x.ReadStateFromResponse + } + return false +} + +func (x *PassThroughHttp_Response) GetAllowedUpstreamHeadersToOverwrite() []string { + if x != nil { + return x.AllowedUpstreamHeadersToOverwrite } return nil } var File_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDesc = string([]byte{ 0x0a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, @@ -4965,7 +7645,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_pr 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, - 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xac, 0x06, 0x0a, 0x0e, 0x41, + 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbc, 0x08, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12, 0x48, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, @@ -4975,48 +7655,65 @@ var file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_pr 0x61, 0x6e, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x62, 0x6f, 0x6f, - 0x6c, 0x65, 0x61, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x1a, 0x8e, 0x05, 0x0a, 0x06, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x0a, 0x62, 0x61, 0x73, 0x69, 0x63, 0x5f, 0x61, - 0x75, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x48, 0x00, 0x52, - 0x09, 0x62, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x12, 0x3a, 0x0a, 0x05, 0x6f, 0x61, - 0x75, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x6e, 0x74, 0x65, + 0x6c, 0x65, 0x61, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, + 0x5f, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x4f, 0x6e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x1a, 0xee, 0x06, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x43, 0x0a, 0x0a, 0x62, 0x61, 0x73, 0x69, 0x63, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x42, 0x61, + 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x48, 0x00, 0x52, 0x09, 0x62, 0x61, 0x73, 0x69, 0x63, + 0x41, 0x75, 0x74, 0x68, 0x12, 0x3a, 0x0a, 0x05, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x41, + 0x75, 0x74, 0x68, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x05, 0x6f, 0x61, 0x75, 0x74, 0x68, + 0x12, 0x39, 0x0a, 0x06, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, + 0x32, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x12, 0x47, 0x0a, 0x0c, 0x61, + 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x70, 0x69, 0x4b, + 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, + 0x41, 0x75, 0x74, 0x68, 0x12, 0x4a, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x61, + 0x75, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, - 0x05, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x12, 0x39, 0x0a, 0x06, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x32, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x61, 0x75, 0x74, 0x68, - 0x32, 0x12, 0x47, 0x0a, 0x0c, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x75, 0x74, - 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, - 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x48, 0x00, 0x52, 0x0a, - 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x12, 0x46, 0x0a, 0x0b, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x50, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x41, 0x75, - 0x74, 0x68, 0x12, 0x3d, 0x0a, 0x08, 0x6f, 0x70, 0x61, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, - 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, - 0x70, 0x61, 0x41, 0x75, 0x74, 0x68, 0x48, 0x00, 0x52, 0x07, 0x6f, 0x70, 0x61, 0x41, 0x75, 0x74, - 0x68, 0x12, 0x33, 0x0a, 0x04, 0x6c, 0x64, 0x61, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x64, 0x61, 0x70, 0x48, 0x00, - 0x52, 0x04, 0x6c, 0x64, 0x61, 0x70, 0x12, 0x2a, 0x0a, 0x03, 0x6a, 0x77, 0x74, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x03, 0x6a, - 0x77, 0x74, 0x12, 0x56, 0x0a, 0x11, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x74, 0x68, 0x72, 0x6f, 0x75, - 0x67, 0x68, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x42, 0x02, + 0x18, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x41, 0x75, 0x74, 0x68, + 0x12, 0x3d, 0x0a, 0x08, 0x6f, 0x70, 0x61, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x70, 0x61, + 0x41, 0x75, 0x74, 0x68, 0x48, 0x00, 0x52, 0x07, 0x6f, 0x70, 0x61, 0x41, 0x75, 0x74, 0x68, 0x12, + 0x33, 0x0a, 0x04, 0x6c, 0x64, 0x61, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x54, 0x68, 0x72, 0x6f, - 0x75, 0x67, 0x68, 0x41, 0x75, 0x74, 0x68, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x61, 0x73, 0x73, 0x54, - 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x41, 0x75, 0x74, 0x68, 0x42, 0x0d, 0x0a, 0x0b, 0x61, 0x75, - 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xba, 0x01, 0x0a, 0x10, 0x45, 0x78, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x64, 0x61, 0x70, 0x48, 0x00, 0x52, 0x04, + 0x6c, 0x64, 0x61, 0x70, 0x12, 0x2a, 0x0a, 0x03, 0x6a, 0x77, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x03, 0x6a, 0x77, 0x74, + 0x12, 0x56, 0x0a, 0x11, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, + 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, + 0x68, 0x41, 0x75, 0x74, 0x68, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x61, 0x73, 0x73, 0x54, 0x68, 0x72, + 0x6f, 0x75, 0x67, 0x68, 0x41, 0x75, 0x74, 0x68, 0x12, 0x40, 0x0a, 0x09, 0x68, 0x6d, 0x61, 0x63, + 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x6d, 0x61, 0x63, 0x41, 0x75, 0x74, 0x68, 0x48, 0x00, + 0x52, 0x08, 0x68, 0x6d, 0x61, 0x63, 0x41, 0x75, 0x74, 0x68, 0x12, 0x50, 0x0a, 0x0f, 0x6f, 0x70, + 0x61, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x70, + 0x61, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x48, 0x00, 0x52, 0x0d, 0x6f, + 0x70, 0x61, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x12, 0x46, 0x0a, 0x0b, + 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6f, 0x72, 0x74, + 0x61, 0x6c, 0x41, 0x75, 0x74, 0x68, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6c, + 0x41, 0x75, 0x74, 0x68, 0x42, 0x0d, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0xba, 0x01, 0x0a, 0x10, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x07, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x63, 0x6f, @@ -5028,278 +7725,457 @@ var file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_pr 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x75, 0x74, 0x68, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x75, 0x74, 0x68, 0x42, 0x06, - 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0xef, 0x04, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0xcc, 0x05, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x49, 0x0a, 0x13, 0x65, 0x78, 0x74, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x11, 0x65, 0x78, 0x74, - 0x61, 0x75, 0x74, 0x68, 0x7a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x66, 0x12, 0x47, + 0x61, 0x75, 0x74, 0x68, 0x7a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x66, 0x12, 0x49, 0x0a, 0x0c, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, - 0x74, 0x74, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x0b, 0x68, 0x74, 0x74, 0x70, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x42, 0x0a, - 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x66, - 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x12, - 0x4a, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, - 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0b, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x2a, 0x0a, 0x11, 0x63, - 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x52, 0x6f, 0x75, - 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x5f, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, - 0x60, 0x0a, 0x15, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x70, 0x69, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, + 0x74, 0x74, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x68, 0x74, + 0x74, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x49, 0x0a, 0x0c, 0x67, 0x72, 0x70, + 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x67, 0x72, 0x70, 0x63, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x0f, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x2c, + 0x0a, 0x12, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x66, 0x61, 0x69, 0x6c, + 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x4a, 0x0a, 0x0c, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x42, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0b, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6c, 0x65, 0x61, + 0x72, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6f, + 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x4f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x60, 0x0a, 0x15, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, + 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, + 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, + 0x14, 0x0a, 0x0a, 0x41, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x06, 0x0a, + 0x02, 0x56, 0x33, 0x10, 0x00, 0x42, 0x0e, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x2b, 0x0a, 0x0b, 0x47, 0x72, 0x70, 0x63, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x22, 0x9a, 0x05, 0x0a, 0x0b, 0x48, 0x74, 0x74, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x74, 0x68, 0x50, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x12, 0x46, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, + 0x74, 0x74, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x08, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x8d, 0x02, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x65, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x64, 0x0a, 0x0e, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x64, 0x64, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, + 0x74, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x64, + 0x64, 0x12, 0x32, 0x0a, 0x15, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x67, 0x65, 0x78, 0x1a, 0x3f, 0x0a, 0x11, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x54, 0x6f, 0x41, 0x64, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xc6, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x75, + 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x55, 0x70, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x34, 0x0a, + 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x12, 0x4a, 0x0a, 0x22, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x75, + 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, + 0x74, 0x6f, 0x5f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x1e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x22, + 0x94, 0x01, 0x0a, 0x0e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x6d, + 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x32, + 0x0a, 0x15, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x5f, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x61, 0x73, 0x5f, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x41, + 0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xd1, 0x01, 0x0a, 0x0a, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x41, 0x75, 0x74, 0x68, 0x12, 0x69, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x3a, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x41, 0x75, 0x74, 0x68, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x44, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xad, 0x01, 0x0a, 0x0a, 0x41, + 0x75, 0x74, 0x68, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, + 0x10, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x46, + 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x65, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x5f, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, + 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xf1, 0x07, 0x0a, 0x09, 0x42, + 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x6c, + 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x12, 0x38, + 0x0a, 0x03, 0x61, 0x70, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x2e, + 0x41, 0x70, 0x72, 0x52, 0x03, 0x61, 0x70, 0x72, 0x12, 0x51, 0x0a, 0x0a, 0x65, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, + 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x0a, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x09, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x2e, 0x41, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x50, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x22, 0x14, 0x0a, 0x0a, 0x41, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x06, 0x0a, 0x02, 0x56, 0x33, 0x10, 0x00, 0x22, 0x99, 0x04, 0x0a, 0x0b, 0x48, 0x74, 0x74, - 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x74, 0x68, - 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, - 0x61, 0x74, 0x68, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x46, 0x0a, 0x07, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x49, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, - 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, - 0x74, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0xd9, 0x01, 0x0a, - 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, - 0x77, 0x65, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x12, 0x64, 0x0a, 0x0e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, - 0x61, 0x64, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, - 0x6f, 0x41, 0x64, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x1a, 0x3f, 0x0a, 0x11, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x7a, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, - 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x55, - 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x34, - 0x0a, 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, - 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x22, 0x94, 0x01, 0x0a, 0x0e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x79, - 0x74, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x5f, - 0x61, 0x73, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, - 0x70, 0x61, 0x63, 0x6b, 0x41, 0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xd1, 0x01, 0x0a, 0x0a, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x75, 0x74, 0x68, 0x12, 0x69, 0x0a, 0x12, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x75, 0x74, 0x68, 0x2e, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x44, 0x0a, 0x16, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0xad, 0x01, 0x0a, 0x0a, 0x41, 0x75, 0x74, 0x68, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x69, 0x6c, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x46, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, - 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x65, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, - 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, - 0xf8, 0x02, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x12, 0x14, 0x0a, - 0x05, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, - 0x61, 0x6c, 0x6d, 0x12, 0x38, 0x0a, 0x03, 0x61, 0x70, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, - 0x41, 0x75, 0x74, 0x68, 0x2e, 0x41, 0x70, 0x72, 0x52, 0x03, 0x61, 0x70, 0x72, 0x1a, 0x9a, 0x02, - 0x0a, 0x03, 0x41, 0x70, 0x72, 0x12, 0x47, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, + 0x74, 0x68, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x08, 0x75, + 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x9a, 0x02, 0x0a, 0x03, 0x41, 0x70, 0x72, 0x12, + 0x47, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, + 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, + 0x74, 0x68, 0x2e, 0x41, 0x70, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x1a, 0x53, 0x0a, 0x14, 0x53, 0x61, 0x6c, 0x74, + 0x65, 0x64, 0x48, 0x61, 0x73, 0x68, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x73, 0x61, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x73, 0x61, 0x6c, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x70, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x68, + 0x61, 0x73, 0x68, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x1a, 0x75, 0x0a, + 0x0a, 0x55, 0x73, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x51, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, + 0x2e, 0x41, 0x70, 0x72, 0x2e, 0x53, 0x61, 0x6c, 0x74, 0x65, 0x64, 0x48, 0x61, 0x73, 0x68, 0x65, + 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xc5, 0x01, 0x0a, 0x0e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x03, 0x61, 0x70, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x42, - 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x2e, 0x41, 0x70, 0x72, 0x2e, 0x55, 0x73, 0x65, - 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x1a, 0x53, - 0x0a, 0x14, 0x53, 0x61, 0x6c, 0x74, 0x65, 0x64, 0x48, 0x61, 0x73, 0x68, 0x65, 0x64, 0x50, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x61, 0x6c, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x61, 0x6c, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x68, 0x61, - 0x73, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x1a, 0x75, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x51, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x42, 0x61, 0x73, - 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x2e, 0x41, 0x70, 0x72, 0x2e, 0x53, 0x61, 0x6c, 0x74, 0x65, - 0x64, 0x48, 0x61, 0x73, 0x68, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc2, 0x03, 0x0a, 0x05, 0x4f, - 0x41, 0x75, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, - 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x42, 0x02, 0x18, 0x01, 0x52, - 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, - 0x12, 0x21, 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, - 0x55, 0x72, 0x6c, 0x12, 0x7c, 0x0a, 0x1a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, - 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x17, 0x61, 0x75, 0x74, 0x68, 0x45, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x12, 0x1b, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x61, 0x70, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x27, - 0x0a, 0x0d, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x63, 0x61, 0x6c, 0x6c, 0x62, - 0x61, 0x63, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, - 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x73, 0x63, 0x6f, - 0x70, 0x65, 0x73, 0x1a, 0x4a, 0x0a, 0x1c, 0x41, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0xea, 0x01, 0x0a, 0x06, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x12, 0x68, 0x0a, 0x17, 0x6f, 0x69, - 0x64, 0x63, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x65, 0x6e, + 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x41, 0x70, 0x72, 0x48, 0x00, 0x52, 0x03, 0x61, + 0x70, 0x72, 0x12, 0x4c, 0x0a, 0x04, 0x73, 0x68, 0x61, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x36, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, + 0x41, 0x75, 0x74, 0x68, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x2e, 0x53, 0x68, 0x61, 0x31, 0x48, 0x00, 0x52, 0x04, 0x73, 0x68, 0x61, 0x31, + 0x1a, 0x06, 0x0a, 0x04, 0x53, 0x68, 0x61, 0x31, 0x1a, 0x05, 0x0a, 0x03, 0x41, 0x70, 0x72, 0x42, + 0x0b, 0x0a, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x1a, 0x43, 0x0a, 0x04, + 0x55, 0x73, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x61, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x73, 0x61, 0x6c, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x68, 0x61, 0x73, 0x68, + 0x65, 0x64, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x1a, 0xbb, 0x01, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x4c, + 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, + 0x68, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x1a, 0x61, 0x0a, 0x0a, + 0x55, 0x73, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3d, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x69, 0x64, 0x63, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x15, 0x6f, - 0x69, 0x64, 0x63, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x64, 0x65, 0x12, 0x68, 0x0a, 0x17, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, + 0x0d, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xe6, + 0x01, 0x0a, 0x08, 0x48, 0x6d, 0x61, 0x63, 0x41, 0x75, 0x74, 0x68, 0x12, 0x49, 0x0a, 0x0b, 0x73, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x52, 0x65, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x52, 0x65, 0x66, 0x73, 0x12, 0x66, 0x0a, 0x15, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x73, 0x5f, 0x69, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x15, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, - 0x0a, 0x0a, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x4f, 0x0a, 0x0c, - 0x52, 0x65, 0x64, 0x69, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, - 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, - 0x12, 0x0e, 0x0a, 0x02, 0x64, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x64, 0x62, - 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xdf, 0x05, - 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, - 0x15, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x6f, 0x6e, 0x5f, 0x66, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x66, - 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x66, 0x61, - 0x69, 0x6c, 0x4f, 0x6e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, - 0x12, 0x59, 0x0a, 0x0e, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x43, - 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0d, 0x63, 0x6f, - 0x6f, 0x6b, 0x69, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4e, 0x0a, 0x06, 0x63, - 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x49, 0x0a, 0x05, 0x72, - 0x65, 0x64, 0x69, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x65, 0x6e, 0x74, + 0x48, 0x6d, 0x61, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x49, 0x6e, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x48, 0x01, 0x52, 0x13, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x73, 0x49, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x42, 0x10, + 0x0a, 0x0e, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x42, 0x15, 0x0a, 0x13, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x4b, 0x0a, 0x0d, 0x53, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x52, 0x65, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0b, 0x73, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x52, 0x65, 0x66, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x48, 0x6d, 0x61, 0x63, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x49, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, + 0xc2, 0x03, 0x0a, 0x05, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x09, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, + 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x11, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, + 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x21, 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x5f, + 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x69, + 0x73, 0x73, 0x75, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x7c, 0x0a, 0x1a, 0x61, 0x75, 0x74, 0x68, + 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x2e, 0x41, 0x75, 0x74, + 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x17, 0x61, + 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x5f, 0x75, 0x72, + 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x61, 0x70, 0x70, + 0x55, 0x72, 0x6c, 0x12, 0x27, 0x0a, 0x0d, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, + 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x06, + 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, + 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x1a, 0x4a, 0x0a, 0x1c, 0x41, 0x75, 0x74, 0x68, + 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0xaa, 0x02, 0x0a, 0x06, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x12, + 0x68, 0x0a, 0x17, 0x6f, 0x69, 0x64, 0x63, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2e, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x69, 0x64, 0x63, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, + 0x48, 0x00, 0x52, 0x15, 0x6f, 0x69, 0x64, 0x63, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x68, 0x0a, 0x17, 0x61, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x2e, 0x52, 0x65, 0x64, 0x69, 0x73, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x05, 0x72, 0x65, 0x64, 0x69, 0x73, 0x1a, 0x11, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0xd6, 0x01, 0x0a, 0x0c, 0x52, 0x65, - 0x64, 0x69, 0x73, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x07, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6b, - 0x65, 0x79, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6b, 0x65, 0x79, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, - 0x6f, 0x6b, 0x69, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x10, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x69, - 0x6e, 0x67, 0x1a, 0xaf, 0x01, 0x0a, 0x0d, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x67, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x41, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, - 0x6f, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x09, 0x6e, 0x6f, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, - 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, - 0x6d, 0x0a, 0x13, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x64, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x69, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x2e, - 0x0a, 0x13, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0xb4, - 0x02, 0x0a, 0x11, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4f, 0x76, 0x65, 0x72, - 0x72, 0x69, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x75, 0x74, - 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x12, 0x19, 0x0a, 0x08, 0x6a, 0x77, 0x6b, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x6a, 0x77, 0x6b, 0x73, 0x55, 0x72, 0x69, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x6f, - 0x70, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x75, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x64, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x5f, 0x61, 0x6c, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, - 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x6c, 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x75, - 0x74, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x12, 0x16, 0x0a, - 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x63, - 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x22, 0xd5, 0x01, 0x0a, 0x1e, 0x4a, 0x77, 0x6b, 0x73, 0x4f, 0x6e, - 0x44, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x66, 0x72, 0x65, - 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x6e, 0x65, 0x76, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x15, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x06, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, + 0x61, 0x69, 0x6e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x61, 0x75, + 0x74, 0x68, 0x32, 0x42, 0x0c, 0x0a, 0x0a, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x22, 0xf1, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x64, 0x69, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x64, 0x62, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x64, 0x62, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x53, + 0x69, 0x7a, 0x65, 0x12, 0x2d, 0x0a, 0x13, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x5f, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x10, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, + 0x74, 0x68, 0x12, 0x51, 0x0a, 0x0b, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x53, + 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73, 0x6f, 0x63, 0x6b, 0x65, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x1e, 0x0a, 0x0a, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x43, 0x50, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, + 0x54, 0x4c, 0x53, 0x10, 0x01, 0x22, 0xf8, 0x0a, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x15, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x6f, 0x6e, + 0x5f, 0x66, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x66, 0x61, 0x69, 0x6c, 0x4f, 0x6e, 0x46, 0x65, 0x74, 0x63, + 0x68, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x59, 0x0a, 0x0e, 0x63, 0x6f, 0x6f, 0x6b, + 0x69, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x32, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0d, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x4e, 0x0a, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6f, + 0x6b, 0x69, 0x65, 0x12, 0x49, 0x0a, 0x05, 0x72, 0x65, 0x64, 0x69, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x73, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x72, 0x65, 0x64, 0x69, 0x73, 0x12, 0x56, + 0x0a, 0x0d, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, + 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x69, 0x70, 0x68, + 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x9c, 0x01, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x10, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x69, 0x6e, + 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x6b, 0x65, 0x79, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x1a, 0xe3, 0x02, 0x0a, 0x0c, 0x52, 0x65, 0x64, 0x69, 0x73, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6b, 0x65, 0x79, 0x5f, 0x70, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6b, 0x65, 0x79, + 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6f, + 0x6b, 0x69, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x12, 0x45, + 0x0a, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x5f, 0x62, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x70, 0x72, 0x65, 0x45, 0x78, 0x70, 0x69, 0x72, 0x79, 0x42, + 0x75, 0x66, 0x66, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, + 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x8a, 0x03, 0x0a, 0x0d, + 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x0a, + 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x6d, 0x61, + 0x78, 0x41, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6e, 0x6f, 0x74, 0x53, 0x65, 0x63, + 0x75, 0x72, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x08, 0x68, 0x74, 0x74, 0x70, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x30, 0x0a, 0x04, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x58, + 0x0a, 0x09, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x3b, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x53, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x52, 0x08, + 0x73, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x22, 0x46, 0x0a, 0x08, 0x53, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x12, 0x0f, 0x0a, 0x0b, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x10, 0x00, 0x12, 0x0b, 0x0a, + 0x07, 0x4c, 0x61, 0x78, 0x4d, 0x6f, 0x64, 0x65, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x74, + 0x72, 0x69, 0x63, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x6f, + 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x10, 0x03, 0x1a, 0x4b, 0x0a, 0x0c, 0x43, 0x69, 0x70, 0x68, + 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x5f, + 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x52, 0x65, 0x66, 0x48, 0x00, 0x52, 0x06, 0x6b, 0x65, 0x79, 0x52, 0x65, 0x66, 0x42, 0x05, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x22, 0xd7, 0x01, 0x0a, 0x13, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x64, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x69, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x12, 0x2e, 0x0a, 0x13, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x12, 0x68, 0x0a, 0x23, 0x75, 0x73, 0x65, 0x5f, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x5f, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1f, 0x75, 0x73, 0x65, 0x42, 0x65, + 0x61, 0x72, 0x65, 0x72, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x46, 0x6f, 0x72, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x97, 0x03, 0x0a, 0x11, 0x44, + 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, + 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x65, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, + 0x6a, 0x77, 0x6b, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6a, 0x77, 0x6b, 0x73, 0x55, 0x72, 0x69, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, + 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x61, + 0x6c, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x41, 0x6c, 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x75, + 0x74, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6c, 0x61, + 0x69, 0x6d, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, + 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x72, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, + 0x72, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x65, 0x6e, 0x64, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x12, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x22, 0xd5, 0x01, 0x0a, 0x1e, 0x4a, 0x77, 0x6b, 0x73, 0x4f, 0x6e, 0x44, + 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x6e, 0x65, 0x76, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, + 0x52, 0x05, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x06, 0x61, 0x6c, 0x77, 0x61, 0x79, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, - 0x00, 0x52, 0x05, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x06, 0x61, 0x6c, 0x77, 0x61, - 0x79, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x48, 0x00, 0x52, 0x06, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x12, 0x47, 0x0a, 0x20, 0x6d, 0x61, - 0x78, 0x5f, 0x69, 0x64, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x6f, - 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x1b, 0x6d, 0x61, 0x78, 0x49, 0x64, 0x70, 0x52, 0x65, - 0x71, 0x50, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x42, 0x08, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x97, 0x09, - 0x0a, 0x15, 0x4f, 0x69, 0x64, 0x63, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x65, + 0x00, 0x52, 0x06, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x12, 0x47, 0x0a, 0x20, 0x6d, 0x61, 0x78, + 0x5f, 0x69, 0x64, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6c, + 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x1b, 0x6d, 0x61, 0x78, 0x49, 0x64, 0x70, 0x52, 0x65, 0x71, + 0x50, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x42, 0x08, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x33, 0x0a, 0x13, + 0x41, 0x75, 0x74, 0x6f, 0x4d, 0x61, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x22, 0x9d, 0x01, 0x0a, 0x14, 0x45, 0x6e, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x0a, 0x6d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, + 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x6e, 0x64, 0x53, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x2e, 0x4d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x54, 0x79, 0x70, 0x65, 0x22, 0x2b, 0x0a, 0x0a, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x10, + 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x6f, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x10, + 0x01, 0x22, 0x55, 0x0a, 0x0d, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x12, 0x16, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x22, 0xde, 0x01, 0x0a, 0x05, 0x41, 0x7a, 0x75, + 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, + 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x0d, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x0c, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x5b, 0x0a, 0x16, + 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x73, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x14, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x43, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xbb, 0x19, 0x0a, 0x15, 0x4f, 0x69, + 0x64, 0x63, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x49, 0x0a, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x88, 0x01, 0x0a, 0x1a, 0x61, @@ -5356,791 +8232,1129 @@ var file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_pr 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4a, 0x77, 0x6b, 0x73, 0x4f, 0x6e, 0x44, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x16, 0x6a, 0x77, 0x6b, 0x73, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x4a, - 0x0a, 0x1c, 0x41, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x65, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x37, + 0x0a, 0x16, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, + 0x18, 0x01, 0x52, 0x13, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x1c, 0x70, 0x61, 0x72, 0x73, 0x65, + 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x61, + 0x73, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x70, + 0x61, 0x72, 0x73, 0x65, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x74, 0x68, + 0x41, 0x73, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x61, 0x0a, 0x16, 0x61, 0x75, 0x74, 0x6f, 0x5f, + 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x4d, 0x61, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x13, 0x61, 0x75, 0x74, 0x6f, 0x4d, 0x61, 0x70, 0x46, 0x72, + 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x63, 0x0a, 0x16, 0x65, 0x6e, + 0x64, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x69, 0x65, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x6e, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x50, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x14, 0x65, 0x6e, 0x64, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, + 0x8e, 0x01, 0x0a, 0x1c, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, + 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, + 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x4f, 0x69, 0x64, 0x63, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x19, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, + 0x12, 0x52, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, + 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x12, 0x5d, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x69, 0x64, 0x63, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x12, 0x63, 0x0a, 0x0e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x69, 0x64, 0x63, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x2e, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x0d, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x78, 0x0a, 0x15, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x4f, 0x69, 0x64, 0x63, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, + 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x1a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x69, + 0x64, 0x63, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x64, 0x65, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x07, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x36, 0x0a, 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x18, + 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, + 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x41, 0x7a, 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x12, 0x73, + 0x0a, 0x14, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, + 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x69, 0x64, 0x63, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x2e, 0x46, 0x72, 0x6f, + 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x52, + 0x12, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4c, 0x6f, 0x67, + 0x6f, 0x75, 0x74, 0x1a, 0x4a, 0x0a, 0x1c, 0x41, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x4b, 0x0a, 0x1d, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4c, 0x0a, 0x1e, + 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, + 0x72, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4b, 0x0a, 0x1d, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb0, 0x09, 0x0a, 0x15, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x31, 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, - 0x48, 0x00, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x50, 0x0a, 0x03, 0x6a, 0x77, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x3c, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x4a, 0x77, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, - 0x00, 0x52, 0x03, 0x6a, 0x77, 0x74, 0x12, 0x6e, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x73, - 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x61, 0x0a, 0x0b, 0x41, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x52, 0x0a, 0x11, 0x63, 0x6c, 0x61, + 0x69, 0x6d, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, + 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x0f, 0x63, 0x6c, + 0x61, 0x69, 0x6d, 0x73, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0x63, 0x0a, + 0x0d, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x52, + 0x0a, 0x11, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x52, 0x0f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x1a, 0xe1, 0x04, 0x0a, 0x14, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, + 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x77, 0x0a, 0x0d, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x50, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x69, 0x64, + 0x63, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x64, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x12, 0x7b, 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, + 0x6b, 0x65, 0x79, 0x5f, 0x6a, 0x77, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x6e, - 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x69, 0x6e, - 0x66, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x73, - 0x65, 0x72, 0x69, 0x6e, 0x66, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x3e, 0x0a, 0x0d, 0x63, 0x61, 0x63, - 0x68, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x63, 0x61, 0x63, - 0x68, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x63, 0x0a, 0x0f, 0x72, 0x65, 0x71, - 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x01, 0x52, 0x0e, - 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x1a, 0xad, - 0x03, 0x0a, 0x0d, 0x4a, 0x77, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x6a, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x6a, 0x77, 0x6b, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, - 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x77, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4a, 0x77, 0x6b, 0x73, 0x48, 0x00, - 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4a, 0x77, 0x6b, 0x73, 0x12, 0x67, 0x0a, 0x0a, - 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6a, 0x77, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x46, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x4a, 0x77, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, - 0x6f, 0x63, 0x61, 0x6c, 0x4a, 0x77, 0x6b, 0x73, 0x48, 0x00, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, - 0x6c, 0x4a, 0x77, 0x6b, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x1a, 0x64, 0x0a, - 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4a, 0x77, 0x6b, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, - 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x44, 0x0a, - 0x10, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x1a, 0x30, 0x0a, 0x09, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4a, 0x77, 0x6b, 0x73, - 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x17, 0x0a, 0x15, 0x6a, 0x77, 0x6b, 0x73, 0x5f, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x1a, 0xdf, - 0x01, 0x0a, 0x17, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, - 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x69, 0x64, 0x63, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x4a, 0x77, 0x74, + 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x4a, 0x77, + 0x74, 0x1a, 0xa5, 0x01, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x12, 0x45, 0x0a, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x4e, 0x0a, 0x15, 0x64, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x8a, 0x01, 0x0a, 0x0d, 0x50, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x4a, 0x77, 0x74, 0x12, 0x41, 0x0a, 0x0f, 0x73, + 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, + 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x66, 0x12, 0x36, + 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x46, 0x6f, 0x72, 0x42, 0x1e, 0x0a, 0x1c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x09, 0x0a, 0x07, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x1a, 0x28, 0x0a, 0x12, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x42, 0x0a, 0x0a, 0x08, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0xbc, 0x07, 0x0a, 0x0b, 0x50, 0x6c, 0x61, 0x69, + 0x6e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x33, 0x0a, 0x16, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x1a, 0x21, 0x0a, 0x09, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, - 0x6f, 0x70, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x32, 0x0a, 0x0b, 0x4f, 0x61, - 0x75, 0x74, 0x68, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0xbe, - 0x04, 0x0a, 0x0a, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x12, 0x5d, 0x0a, - 0x0e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, - 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x48, 0x0a, 0x13, - 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, - 0x65, 0x66, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x52, 0x65, 0x66, 0x52, 0x10, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x52, 0x65, 0x66, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x70, 0x0a, 0x15, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x2e, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x46, 0x72, 0x6f, - 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x40, 0x0a, 0x12, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x75, 0x0a, 0x18, 0x48, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x7e, 0x0a, 0x1a, 0x61, + 0x75, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x41, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x69, 0x6e, 0x4f, + 0x41, 0x75, 0x74, 0x68, 0x32, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x17, 0x61, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x61, + 0x70, 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x70, + 0x70, 0x55, 0x72, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, + 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x61, 0x6c, + 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x6f, + 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, + 0x73, 0x12, 0x3e, 0x0a, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x50, 0x61, + 0x74, 0x68, 0x12, 0x81, 0x01, 0x0a, 0x1b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x2e, 0x53, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x3b, 0x0a, 0x09, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, - 0xff, 0x01, 0x0a, 0x0c, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x12, 0x2c, 0x0a, 0x10, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x70, 0x69, - 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x17, - 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x12, 0x4f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, - 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x54, 0x0a, 0x07, 0x4f, 0x70, 0x61, 0x41, 0x75, 0x74, 0x68, 0x12, 0x33, 0x0a, 0x07, - 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, - 0x73, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0xf5, 0x02, 0x0a, 0x04, 0x4c, 0x64, 0x61, 0x70, - 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x75, 0x73, - 0x65, 0x72, 0x44, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x44, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x12, 0x38, 0x0a, 0x17, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x17, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, - 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x12, 0x40, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2c, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x64, 0x61, 0x70, 0x2e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x04, - 0x70, 0x6f, 0x6f, 0x6c, 0x1a, 0x88, 0x01, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x53, 0x69, - 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, - 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x12, - 0x3e, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x22, - 0x8e, 0x01, 0x0a, 0x0f, 0x50, 0x61, 0x73, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x41, - 0x75, 0x74, 0x68, 0x12, 0x3e, 0x0a, 0x04, 0x67, 0x72, 0x70, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x61, 0x73, 0x73, - 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x47, 0x72, 0x70, 0x63, 0x48, 0x00, 0x52, 0x04, 0x67, - 0x72, 0x70, 0x63, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x22, 0x75, 0x0a, 0x0f, 0x50, 0x61, 0x73, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x47, - 0x72, 0x70, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x48, 0x0a, - 0x12, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xff, 0x27, 0x0a, 0x0d, 0x45, 0x78, 0x74, 0x41, - 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2f, 0x0a, 0x14, 0x61, 0x75, 0x74, - 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x72, 0x65, 0x66, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x61, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x65, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x47, 0x0a, 0x07, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x73, 0x12, 0x3f, 0x0a, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x5f, 0x65, - 0x78, 0x70, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, - 0x45, 0x78, 0x70, 0x72, 0x1a, 0xbf, 0x03, 0x0a, 0x0b, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, - 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x18, 0x01, - 0xc8, 0xf5, 0x04, 0x01, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x12, 0x21, 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x69, 0x73, 0x73, 0x75, - 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x90, 0x01, 0x0a, 0x1a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4f, 0x2e, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, - 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, - 0x17, 0x61, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x5f, - 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x61, - 0x70, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x27, 0x0a, 0x0d, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, - 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, - 0x52, 0x0c, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1a, - 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, - 0x18, 0x01, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x1a, 0x4a, 0x0a, 0x1c, 0x41, 0x75, - 0x74, 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, + 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x69, 0x6e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x2e, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x18, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, + 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x61, 0x66, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x55, 0x72, 0x6c, + 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x65, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x13, + 0x72, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x72, 0x65, 0x76, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x4e, 0x0a, + 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, + 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, + 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x4a, 0x0a, + 0x1c, 0x41, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4b, 0x0a, 0x1d, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xa9, 0x09, 0x0a, 0x1b, 0x4f, 0x69, 0x64, 0x63, 0x41, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xc8, 0xf5, 0x04, 0x01, - 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x1d, - 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x9c, 0x01, - 0x0a, 0x1a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x5f, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, - 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x69, 0x64, 0x63, 0x41, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x17, 0x61, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x9f, 0x01, 0x0a, - 0x1b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0e, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x60, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, - 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x69, 0x64, 0x63, 0x41, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x45, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x18, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x17, - 0x0a, 0x07, 0x61, 0x70, 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x61, 0x70, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x6c, 0x6c, 0x62, - 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, - 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x28, 0x0a, - 0x10, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x66, 0x74, 0x65, 0x72, 0x4c, 0x6f, - 0x67, 0x6f, 0x75, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, - 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, - 0x3e, 0x0a, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x46, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2c, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x59, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x63, 0x6f, - 0x76, 0x65, 0x72, 0x79, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, - 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x69, - 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, - 0x11, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, - 0x64, 0x65, 0x12, 0x51, 0x0a, 0x17, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, - 0x70, 0x6f, 0x6c, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, - 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x6c, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x72, 0x0a, 0x19, 0x6a, 0x77, 0x6b, 0x73, 0x5f, 0x63, 0x61, - 0x63, 0x68, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x4a, 0x77, 0x6b, 0x73, 0x4f, 0x6e, 0x44, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x52, 0x16, 0x6a, 0x77, 0x6b, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x66, 0x72, - 0x65, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x4a, 0x0a, 0x1c, 0x41, 0x75, 0x74, - 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4b, 0x0a, 0x1d, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x45, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0xff, 0x09, 0x0a, 0x1b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x31, 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, - 0x01, 0x48, 0x00, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x64, 0x0a, 0x03, 0x6a, 0x77, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x50, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, - 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x77, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x6a, 0x77, 0x74, 0x12, 0x82, 0x01, 0x0a, 0x0d, - 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x5a, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, - 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, - 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, - 0x00, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x75, 0x72, 0x6c, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x66, 0x6f, - 0x55, 0x72, 0x6c, 0x12, 0x3e, 0x0a, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x12, 0x77, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, - 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x01, 0x52, 0x0e, 0x72, 0x65, - 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x1a, 0xd5, 0x03, 0x0a, - 0x0d, 0x4a, 0x77, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7e, - 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x6a, 0x77, 0x6b, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x5b, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, - 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, - 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x77, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x81, 0x03, 0x0a, 0x0d, 0x4a, 0x77, 0x74, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x5f, 0x6a, 0x77, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4a, 0x77, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4a, 0x77, 0x6b, 0x73, - 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4a, 0x77, 0x6b, 0x73, 0x12, 0x7b, + 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4a, 0x77, 0x6b, 0x73, 0x12, 0x51, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6a, 0x77, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x5a, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, - 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x77, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4a, 0x77, 0x6b, 0x73, 0x48, 0x00, - 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x4a, 0x77, 0x6b, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, - 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, - 0x75, 0x65, 0x72, 0x1a, 0x64, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4a, 0x77, 0x6b, - 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x75, 0x72, 0x6c, 0x12, 0x44, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, - 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x1a, 0x30, 0x0a, 0x09, 0x4c, 0x6f, 0x63, - 0x61, 0x6c, 0x4a, 0x77, 0x6b, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, - 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, - 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x17, 0x0a, 0x15, 0x6a, - 0x77, 0x6b, 0x73, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x1a, 0xc3, 0x01, 0x0a, 0x17, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x74, - 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, - 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x0d, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x04, 0xc8, 0xf5, 0x04, 0x01, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x33, 0x0a, 0x16, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x21, 0x0a, 0x09, 0x53, 0x63, - 0x6f, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x42, 0x11, 0x0a, - 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x42, 0x12, 0x0a, 0x10, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xac, 0x02, 0x0a, 0x0c, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x7c, 0x0a, 0x17, 0x6f, 0x69, 0x64, 0x63, 0x5f, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, + 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4a, 0x77, 0x74, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, + 0x4a, 0x77, 0x6b, 0x73, 0x48, 0x00, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x4a, 0x77, 0x6b, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x1a, 0x64, 0x0a, 0x0a, 0x52, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x4a, 0x77, 0x6b, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x44, 0x0a, 0x10, 0x72, 0x65, 0x66, + 0x72, 0x65, 0x73, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, + 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x1a, + 0x30, 0x0a, 0x09, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4a, 0x77, 0x6b, 0x73, 0x12, 0x23, 0x0a, 0x0d, + 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x42, 0x17, 0x0a, 0x15, 0x6a, 0x77, 0x6b, 0x73, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0xaf, 0x02, 0x0a, 0x17, 0x49, + 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x73, + 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x45, 0x0a, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x33, 0x0a, 0x16, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x15, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, + 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0xc8, 0x07, 0x0a, + 0x15, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x73, + 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x3a, 0x0a, 0x03, 0x6a, 0x77, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, - 0x69, 0x64, 0x63, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x15, 0x6f, 0x69, - 0x64, 0x63, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x64, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x1e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x65, + 0x2e, 0x4a, 0x77, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, + 0x52, 0x03, 0x6a, 0x77, 0x74, 0x12, 0x58, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x48, 0x00, 0x52, 0x1b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, - 0x0c, 0x0a, 0x0a, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x4a, 0x04, 0x08, - 0x02, 0x10, 0x03, 0x1a, 0xe5, 0x05, 0x0a, 0x10, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, - 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x75, 0x0a, 0x0e, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x49, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, - 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, - 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x41, - 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, 0xc8, 0xf5, 0x04, - 0x01, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x12, - 0x1f, 0x0a, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x8e, 0x01, 0x0a, 0x19, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x66, 0x72, 0x6f, - 0x6d, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x53, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, - 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, - 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x70, 0x69, - 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x1a, 0xd5, 0x01, 0x0a, 0x0b, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x6d, 0x0a, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x51, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, - 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, - 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x84, 0x01, 0x0a, 0x11, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x59, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x43, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, - 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, - 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x1a, 0x49, 0x0a, 0x1b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4b, - 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xbe, 0x01, 0x0a, 0x0d, - 0x4f, 0x70, 0x61, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5b, 0x0a, - 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, + 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x21, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x66, 0x6f, 0x55, + 0x72, 0x6c, 0x12, 0x3e, 0x0a, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x12, 0x63, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x63, 0x6f, 0x70, + 0x65, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x01, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, + 0x64, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x8e, 0x01, 0x0a, 0x1c, 0x64, 0x79, 0x6e, 0x61, + 0x6d, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x66, 0x72, 0x6f, + 0x6d, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x70, 0x61, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x1a, 0x3a, 0x0a, 0x0c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, + 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x72, + 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x19, 0x64, + 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x72, + 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x52, 0x0a, 0x11, 0x63, 0x6c, 0x61, 0x69, + 0x6d, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6c, + 0x61, 0x69, 0x6d, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x0f, 0x63, 0x6c, 0x61, + 0x69, 0x6d, 0x73, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x52, 0x0a, 0x07, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x02, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x12, 0x36, 0x0a, 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x48, + 0x02, 0x52, 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x1a, 0x4c, 0x0a, 0x1e, 0x44, 0x79, 0x6e, 0x61, + 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x72, 0x6f, 0x6d, 0x43, + 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x09, 0x0a, 0x07, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x1a, 0x21, 0x0a, 0x09, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x73, 0x63, 0x6f, 0x70, 0x65, + 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x32, 0x0a, 0x0b, 0x4f, 0x61, 0x75, 0x74, 0x68, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0xb6, 0x09, 0x0a, 0x0a, + 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x12, 0x61, 0x0a, 0x0e, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x70, 0x69, + 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0d, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x4c, 0x0a, + 0x13, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, + 0x72, 0x65, 0x66, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x52, 0x65, 0x66, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x61, 0x70, 0x69, 0x4b, 0x65, + 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x74, 0x0a, 0x15, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, + 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x13, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x80, 0x01, 0x0a, 0x1b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x66, + 0x72, 0x6f, 0x6d, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e, 0x74, + 0x72, 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x2e, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x18, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x6c, 0x0a, 0x19, 0x6b, 0x38, 0x73, 0x5f, 0x73, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x5f, 0x61, 0x70, 0x69, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x4b, 0x38, 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x41, 0x70, 0x69, 0x4b, + 0x65, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x16, 0x6b, 0x38, 0x73, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x41, 0x70, 0x69, 0x6b, 0x65, 0x79, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x12, 0x6b, 0x0a, 0x18, 0x61, 0x65, 0x72, 0x6f, 0x73, 0x70, 0x69, 0x6b, 0x65, + 0x5f, 0x61, 0x70, 0x69, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, + 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x41, 0x65, 0x72, 0x6f, 0x73, 0x70, 0x69, 0x6b, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x16, 0x61, 0x65, 0x72, 0x6f, 0x73, 0x70, + 0x69, 0x6b, 0x65, 0x41, 0x70, 0x69, 0x6b, 0x65, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x12, 0x38, 0x0a, 0x18, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x16, 0x73, 0x6b, 0x69, 0x70, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x40, 0x0a, 0x12, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xea, 0x05, 0x0a, - 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x05, 0x6f, 0x61, 0x75, - 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x02, 0x18, 0x01, - 0x48, 0x00, 0x52, 0x05, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x12, 0x4d, 0x0a, 0x06, 0x6f, 0x61, 0x75, - 0x74, 0x68, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x65, 0x6e, 0x74, 0x65, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x75, 0x0a, 0x18, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, - 0x52, 0x06, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x12, 0x43, 0x0a, 0x0a, 0x62, 0x61, 0x73, 0x69, - 0x63, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, + 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x2e, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x7e, 0x0a, 0x1d, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x46, 0x72, + 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, + 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x3b, 0x0a, 0x09, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, + 0x1a, 0x3f, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, + 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x62, 0x61, 0x63, + 0x6b, 0x65, 0x6e, 0x64, 0x22, 0x8f, 0x02, 0x0a, 0x16, 0x4b, 0x38, 0x73, 0x53, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, + 0x69, 0x0a, 0x0e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x4b, 0x38, 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x41, 0x70, 0x69, 0x4b, 0x65, + 0x79, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x48, 0x0a, 0x13, 0x61, 0x70, + 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, + 0x65, 0x66, 0x52, 0x10, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x52, 0x65, 0x66, 0x73, 0x1a, 0x40, 0x0a, 0x12, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x93, 0x0b, 0x0a, 0x16, 0x41, 0x65, 0x72, 0x6f, 0x73, + 0x70, 0x69, 0x6b, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, + 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, + 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, + 0x12, 0x1f, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x41, 0x6c, + 0x6c, 0x12, 0x25, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x61, 0x73, 0x74, + 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x12, 0x5c, 0x0a, 0x0c, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, + 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x65, 0x72, 0x6f, 0x73, 0x70, 0x69, + 0x6b, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, + 0x72, 0x65, 0x61, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x53, 0x63, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x64, + 0x4d, 0x6f, 0x64, 0x65, 0x53, 0x63, 0x12, 0x5c, 0x0a, 0x0c, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x5f, 0x61, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, - 0x48, 0x00, 0x52, 0x09, 0x62, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x12, 0x5b, 0x0a, - 0x0c, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, - 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, - 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x70, 0x69, 0x4b, - 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0a, - 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x12, 0x46, 0x0a, 0x0b, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x50, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x41, 0x75, - 0x74, 0x68, 0x12, 0x51, 0x0a, 0x08, 0x6f, 0x70, 0x61, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, - 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, - 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x70, 0x61, - 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x07, 0x6f, 0x70, - 0x61, 0x41, 0x75, 0x74, 0x68, 0x12, 0x33, 0x0a, 0x04, 0x6c, 0x64, 0x61, 0x70, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, - 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x64, - 0x61, 0x70, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x64, 0x61, 0x70, 0x12, 0x2a, 0x0a, 0x03, 0x6a, 0x77, - 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, - 0x00, 0x52, 0x03, 0x6a, 0x77, 0x74, 0x12, 0x56, 0x0a, 0x11, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x74, - 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x61, 0x73, 0x73, - 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x41, 0x75, 0x74, 0x68, 0x48, 0x00, 0x52, 0x0f, 0x70, - 0x61, 0x73, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x41, 0x75, 0x74, 0x68, 0x42, 0x0d, - 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x04, 0x08, - 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0xee, 0x03, 0x0a, 0x10, 0x41, 0x75, - 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x45, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x65, 0x72, 0x6f, 0x73, 0x70, 0x69, 0x6b, 0x65, + 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x72, 0x65, + 0x61, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x41, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x6f, + 0x64, 0x65, 0x41, 0x70, 0x12, 0x22, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x6c, 0x73, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, + 0x65, 0x54, 0x6c, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x65, 0x72, 0x74, + 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x65, 0x72, + 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x70, 0x61, 0x74, + 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x50, 0x61, 0x74, 0x68, + 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x49, + 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x12, 0x20, 0x0a, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x5f, + 0x63, 0x61, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, + 0x6f, 0x6f, 0x74, 0x43, 0x61, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6c, 0x73, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x74, 0x6c, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x64, 0x0a, 0x10, 0x74, 0x6c, + 0x73, 0x5f, 0x63, 0x75, 0x72, 0x76, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x10, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, + 0x65, 0x72, 0x6f, 0x73, 0x70, 0x69, 0x6b, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x53, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x74, 0x6c, 0x73, 0x43, 0x75, 0x72, 0x76, 0x65, 0x49, 0x44, + 0x52, 0x0e, 0x74, 0x6c, 0x73, 0x43, 0x75, 0x72, 0x76, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x12, 0x69, 0x0a, 0x0e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x41, 0x65, 0x72, 0x6f, 0x73, 0x70, 0x69, 0x6b, 0x65, 0x41, 0x70, 0x69, 0x4b, + 0x65, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0xff, 0x01, 0x0a, 0x0a, + 0x72, 0x65, 0x61, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x53, 0x63, 0x12, 0x31, 0x0a, 0x14, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x63, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x11, 0x72, 0x65, 0x61, 0x64, + 0x4d, 0x6f, 0x64, 0x65, 0x53, 0x63, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, + 0x16, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x63, 0x5f, 0x6c, 0x69, + 0x6e, 0x65, 0x61, 0x72, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, + 0x13, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x53, 0x63, 0x4c, 0x69, 0x6e, 0x65, 0x61, + 0x72, 0x69, 0x7a, 0x65, 0x12, 0x31, 0x0a, 0x14, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x5f, 0x73, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x00, 0x52, 0x11, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x53, 0x63, + 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x44, 0x0a, 0x1e, 0x72, 0x65, 0x61, 0x64, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x63, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x75, 0x6e, + 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x00, 0x52, 0x1a, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x53, 0x63, 0x41, 0x6c, 0x6c, + 0x6f, 0x77, 0x55, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0e, 0x0a, + 0x0c, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x63, 0x1a, 0x72, 0x0a, + 0x0a, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x41, 0x70, 0x12, 0x29, 0x0a, 0x10, 0x72, + 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x61, 0x70, 0x5f, 0x6f, 0x6e, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x6f, 0x64, + 0x65, 0x41, 0x70, 0x4f, 0x6e, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x5f, 0x61, 0x70, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x41, 0x70, 0x41, 0x6c, + 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x61, + 0x70, 0x1a, 0x96, 0x01, 0x0a, 0x0a, 0x74, 0x6c, 0x73, 0x43, 0x75, 0x72, 0x76, 0x65, 0x49, 0x44, + 0x12, 0x1f, 0x0a, 0x0a, 0x63, 0x75, 0x72, 0x76, 0x65, 0x5f, 0x70, 0x32, 0x35, 0x36, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x09, 0x63, 0x75, 0x72, 0x76, 0x65, 0x50, 0x32, 0x35, + 0x36, 0x12, 0x1f, 0x0a, 0x0a, 0x63, 0x75, 0x72, 0x76, 0x65, 0x5f, 0x70, 0x33, 0x38, 0x34, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x09, 0x63, 0x75, 0x72, 0x76, 0x65, 0x50, 0x33, + 0x38, 0x34, 0x12, 0x1f, 0x0a, 0x0a, 0x63, 0x75, 0x72, 0x76, 0x65, 0x5f, 0x70, 0x35, 0x32, 0x31, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x09, 0x63, 0x75, 0x72, 0x76, 0x65, 0x50, + 0x35, 0x32, 0x31, 0x12, 0x19, 0x0a, 0x07, 0x78, 0x5f, 0x32, 0x35, 0x35, 0x31, 0x39, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x06, 0x78, 0x32, 0x35, 0x35, 0x31, 0x39, 0x42, 0x0a, + 0x0a, 0x08, 0x63, 0x75, 0x72, 0x76, 0x65, 0x5f, 0x69, 0x64, 0x1a, 0x40, 0x0a, 0x12, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0e, 0x0a, 0x0c, + 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x1c, 0x0a, 0x1a, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x70, 0x69, + 0x4b, 0x65, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x22, 0xd5, 0x01, 0x0a, 0x06, 0x41, + 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x16, + 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x75, 0x75, 0x69, 0x64, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0xcd, 0x01, 0x0a, 0x0c, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x12, 0x4f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, + 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x2e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x97, 0x01, 0x0a, 0x07, 0x4f, 0x70, 0x61, 0x41, 0x75, 0x74, 0x68, 0x12, 0x33, + 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x41, 0x0a, 0x07, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x70, 0x61, 0x41, 0x75, 0x74, 0x68, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7a, 0x0a, 0x0e, + 0x4f, 0x70, 0x61, 0x41, 0x75, 0x74, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, + 0x0a, 0x15, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x66, + 0x61, 0x73, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x16, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x64, 0x65, 0x63, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x14, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0xaa, 0x01, 0x0a, 0x0d, 0x4f, 0x70, 0x61, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, + 0x64, 0x72, 0x12, 0x41, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x70, + 0x61, 0x41, 0x75, 0x74, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb0, 0x04, 0x0a, 0x04, 0x4c, 0x64, 0x61, 0x70, 0x12, 0x18, + 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x75, 0x73, 0x65, 0x72, + 0x44, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x44, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x12, 0x38, 0x0a, 0x17, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x17, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x12, 0x40, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, + 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x64, 0x61, 0x70, 0x2e, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x04, 0x70, 0x6f, + 0x6f, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x67, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x12, 0x5f, 0x0a, 0x15, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x64, 0x61, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x13, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4c, + 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x88, 0x01, + 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, + 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x07, 0x6d, 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, + 0x69, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xaf, 0x01, 0x0a, 0x12, 0x4c, 0x64, 0x61, + 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x4f, 0x0a, 0x16, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x5f, 0x73, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x14, 0x63, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, + 0x12, 0x48, 0x0a, 0x21, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xfc, 0x01, 0x0a, 0x0f, 0x50, + 0x61, 0x73, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x41, 0x75, 0x74, 0x68, 0x12, 0x3e, + 0x0a, 0x04, 0x67, 0x72, 0x70, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, + 0x67, 0x68, 0x47, 0x72, 0x70, 0x63, 0x48, 0x00, 0x52, 0x04, 0x67, 0x72, 0x70, 0x63, 0x12, 0x3e, + 0x0a, 0x04, 0x68, 0x74, 0x74, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, + 0x67, 0x68, 0x48, 0x74, 0x74, 0x70, 0x48, 0x00, 0x52, 0x04, 0x68, 0x74, 0x74, 0x70, 0x12, 0x2f, + 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x2c, 0x0a, 0x12, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x66, 0x61, 0x69, + 0x6c, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x42, 0x0a, 0x0a, + 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0x8f, 0x01, 0x0a, 0x0f, 0x42, 0x61, + 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x3e, 0x0a, + 0x0d, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0c, 0x62, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x3c, 0x0a, + 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, + 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xaa, 0x01, 0x0a, 0x0b, + 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3d, 0x0a, 0x0b, 0x6e, + 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, + 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x0e, 0x72, 0x65, + 0x74, 0x72, 0x79, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6f, 0x66, 0x66, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x42, 0x61, 0x63, + 0x6b, 0x6f, 0x66, 0x66, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x48, 0x00, 0x52, 0x0c, + 0x72, 0x65, 0x74, 0x72, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x4f, 0x66, 0x66, 0x42, 0x0a, 0x0a, 0x08, + 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x22, 0x90, 0x02, 0x0a, 0x0f, 0x50, 0x61, 0x73, + 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x47, 0x72, 0x70, 0x63, 0x12, 0x18, 0x0a, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x48, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x12, 0x50, 0x0a, 0x0a, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, + 0x61, 0x73, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x47, 0x72, 0x70, 0x63, 0x54, 0x4c, + 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x74, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x47, 0x0a, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0b, + 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xef, 0x07, 0x0a, 0x0f, + 0x50, 0x61, 0x73, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x48, 0x74, 0x74, 0x70, 0x12, + 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, + 0x6c, 0x12, 0x4a, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x61, 0x73, + 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x48, 0x74, 0x74, 0x70, 0x2e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, + 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x31, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x54, 0x68, + 0x72, 0x6f, 0x75, 0x67, 0x68, 0x48, 0x74, 0x74, 0x70, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x12, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x50, 0x0a, 0x0a, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, + 0x48, 0x74, 0x74, 0x70, 0x54, 0x4c, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x74, + 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0xf8, 0x02, 0x0a, 0x07, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x68, 0x0a, + 0x0e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x64, 0x64, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, + 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x50, 0x61, 0x73, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x48, 0x74, 0x74, 0x70, 0x2e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, + 0x6f, 0x41, 0x64, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x61, 0x73, 0x73, 0x5f, + 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x10, 0x70, 0x61, 0x73, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x0a, 0x1c, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x74, 0x68, + 0x72, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x70, 0x61, 0x73, + 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x74, + 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0f, 0x70, 0x61, 0x73, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x42, 0x6f, + 0x64, 0x79, 0x1a, 0x3f, 0x0a, 0x11, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, + 0x64, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x97, 0x02, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x38, 0x0a, 0x18, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x75, 0x70, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x46, 0x0a, 0x20, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x1c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4f, 0x6e, 0x44, 0x65, 0x6e, 0x69, + 0x65, 0x64, 0x12, 0x37, 0x0a, 0x18, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x72, 0x65, 0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x46, + 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x25, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x21, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x54, 0x6f, 0x4f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x22, 0x9b, 0x01, + 0x0a, 0x18, 0x50, 0x61, 0x73, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x47, 0x72, 0x70, + 0x63, 0x54, 0x4c, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38, 0x0a, 0x0a, 0x73, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x52, 0x65, 0x66, 0x12, 0x45, 0x0a, 0x0a, 0x73, 0x73, 0x6c, 0x5f, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x53, 0x73, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, + 0x52, 0x09, 0x73, 0x73, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x9b, 0x01, 0x0a, 0x18, + 0x50, 0x61, 0x73, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x48, 0x74, 0x74, 0x70, 0x54, + 0x4c, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, + 0x65, 0x66, 0x12, 0x45, 0x0a, 0x0a, 0x73, 0x73, 0x6c, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, + 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x53, 0x73, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x09, + 0x73, 0x73, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xbb, 0x02, 0x0a, 0x0d, 0x53, 0x73, + 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x70, 0x0a, 0x18, 0x6d, + 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, - 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x75, - 0x0a, 0x14, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x65, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x73, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x70, 0x0a, + 0x18, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x36, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x73, 0x6c, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, + 0x46, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x4c, 0x53, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, + 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x76, 0x31, 0x5f, 0x31, 0x10, 0x01, 0x12, 0x0b, 0x0a, + 0x07, 0x54, 0x4c, 0x53, 0x76, 0x31, 0x5f, 0x32, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, + 0x53, 0x76, 0x31, 0x5f, 0x33, 0x10, 0x03, 0x22, 0x96, 0x02, 0x0a, 0x0a, 0x50, 0x6f, 0x72, 0x74, + 0x61, 0x6c, 0x41, 0x75, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x24, 0x0a, 0x0e, 0x61, 0x70, 0x69, 0x5f, + 0x6b, 0x65, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x4a, + 0x0a, 0x0d, 0x72, 0x65, 0x64, 0x69, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, + 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x52, 0x65, 0x64, 0x69, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, 0x72, 0x65, + 0x64, 0x69, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x0e, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, + 0x61, 0x63, 0x68, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x0f, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x22, 0xee, 0x03, 0x0a, 0x10, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x45, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, + 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x75, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x75, + 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, + 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x07, + 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, + 0x71, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3f, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x13, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, - 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x71, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, + 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, + 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, + 0x03, 0x22, 0xe7, 0x01, 0x0a, 0x1c, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x65, 0x73, 0x12, 0x5f, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, + 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x65, 0x73, 0x1a, 0x66, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x05, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, - 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, - 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x10, 0x02, 0x12, 0x0b, 0x0a, - 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x32, 0xdd, 0x02, 0x0a, 0x17, 0x45, - 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5c, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1e, 0x2e, - 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x69, 0x73, - 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, - 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x69, 0x73, - 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x28, 0x01, 0x30, 0x01, 0x12, 0x65, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x45, 0x78, 0x74, - 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x2e, 0x65, 0x6e, 0x76, - 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x44, - 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x24, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, - 0x65, 0x6c, 0x74, 0x61, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x12, 0x46, - 0x65, 0x74, 0x63, 0x68, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x1e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x22, 0x1b, 0x2f, 0x76, 0x32, 0x2f, - 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x3a, 0x65, 0x78, 0x74, 0x61, 0x75, 0x74, - 0x68, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3a, 0x01, 0x2a, 0x42, 0x49, 0x5a, 0x3f, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0xc0, 0xf5, 0x04, - 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x4d, 0xb8, 0xf5, 0x04, + 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x3f, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes = make([]protoimpl.MessageInfo, 71) -var file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_enumTypes = make([]protoimpl.EnumInfo, 6) +var file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes = make([]protoimpl.MessageInfo, 105) +var file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_goTypes = []any{ (Settings_ApiVersion)(0), // 0: enterprise.gloo.solo.io.Settings.ApiVersion - (AuthConfigStatus_State)(0), // 1: enterprise.gloo.solo.io.AuthConfigStatus.State - (*AuthConfigSpec)(nil), // 2: enterprise.gloo.solo.io.AuthConfigSpec - (*ExtAuthExtension)(nil), // 3: enterprise.gloo.solo.io.ExtAuthExtension - (*Settings)(nil), // 4: enterprise.gloo.solo.io.Settings - (*HttpService)(nil), // 5: enterprise.gloo.solo.io.HttpService - (*BufferSettings)(nil), // 6: enterprise.gloo.solo.io.BufferSettings - (*CustomAuth)(nil), // 7: enterprise.gloo.solo.io.CustomAuth - (*AuthPlugin)(nil), // 8: enterprise.gloo.solo.io.AuthPlugin - (*BasicAuth)(nil), // 9: enterprise.gloo.solo.io.BasicAuth - (*OAuth)(nil), // 10: enterprise.gloo.solo.io.OAuth - (*OAuth2)(nil), // 11: enterprise.gloo.solo.io.OAuth2 - (*RedisOptions)(nil), // 12: enterprise.gloo.solo.io.RedisOptions - (*UserSession)(nil), // 13: enterprise.gloo.solo.io.UserSession - (*HeaderConfiguration)(nil), // 14: enterprise.gloo.solo.io.HeaderConfiguration - (*DiscoveryOverride)(nil), // 15: enterprise.gloo.solo.io.DiscoveryOverride - (*JwksOnDemandCacheRefreshPolicy)(nil), // 16: enterprise.gloo.solo.io.JwksOnDemandCacheRefreshPolicy - (*OidcAuthorizationCode)(nil), // 17: enterprise.gloo.solo.io.OidcAuthorizationCode - (*AccessTokenValidation)(nil), // 18: enterprise.gloo.solo.io.AccessTokenValidation - (*OauthSecret)(nil), // 19: enterprise.gloo.solo.io.OauthSecret - (*ApiKeyAuth)(nil), // 20: enterprise.gloo.solo.io.ApiKeyAuth - (*ApiKeySecret)(nil), // 21: enterprise.gloo.solo.io.ApiKeySecret - (*OpaAuth)(nil), // 22: enterprise.gloo.solo.io.OpaAuth - (*Ldap)(nil), // 23: enterprise.gloo.solo.io.Ldap - (*PassThroughAuth)(nil), // 24: enterprise.gloo.solo.io.PassThroughAuth - (*PassThroughGrpc)(nil), // 25: enterprise.gloo.solo.io.PassThroughGrpc - (*ExtAuthConfig)(nil), // 26: enterprise.gloo.solo.io.ExtAuthConfig - (*AuthConfigStatus)(nil), // 27: enterprise.gloo.solo.io.AuthConfigStatus - (*AuthConfigSpec_Config)(nil), // 28: enterprise.gloo.solo.io.AuthConfigSpec.Config - (*HttpService_Request)(nil), // 29: enterprise.gloo.solo.io.HttpService.Request - (*HttpService_Response)(nil), // 30: enterprise.gloo.solo.io.HttpService.Response - nil, // 31: enterprise.gloo.solo.io.HttpService.Request.HeadersToAddEntry - nil, // 32: enterprise.gloo.solo.io.CustomAuth.ContextExtensionsEntry - (*BasicAuth_Apr)(nil), // 33: enterprise.gloo.solo.io.BasicAuth.Apr - (*BasicAuth_Apr_SaltedHashedPassword)(nil), // 34: enterprise.gloo.solo.io.BasicAuth.Apr.SaltedHashedPassword - nil, // 35: enterprise.gloo.solo.io.BasicAuth.Apr.UsersEntry - nil, // 36: enterprise.gloo.solo.io.OAuth.AuthEndpointQueryParamsEntry - (*UserSession_InternalSession)(nil), // 37: enterprise.gloo.solo.io.UserSession.InternalSession - (*UserSession_RedisSession)(nil), // 38: enterprise.gloo.solo.io.UserSession.RedisSession - (*UserSession_CookieOptions)(nil), // 39: enterprise.gloo.solo.io.UserSession.CookieOptions - nil, // 40: enterprise.gloo.solo.io.OidcAuthorizationCode.AuthEndpointQueryParamsEntry - nil, // 41: enterprise.gloo.solo.io.OidcAuthorizationCode.TokenEndpointQueryParamsEntry - (*AccessTokenValidation_JwtValidation)(nil), // 42: enterprise.gloo.solo.io.AccessTokenValidation.JwtValidation - (*AccessTokenValidation_IntrospectionValidation)(nil), // 43: enterprise.gloo.solo.io.AccessTokenValidation.IntrospectionValidation - (*AccessTokenValidation_ScopeList)(nil), // 44: enterprise.gloo.solo.io.AccessTokenValidation.ScopeList - (*AccessTokenValidation_JwtValidation_RemoteJwks)(nil), // 45: enterprise.gloo.solo.io.AccessTokenValidation.JwtValidation.RemoteJwks - (*AccessTokenValidation_JwtValidation_LocalJwks)(nil), // 46: enterprise.gloo.solo.io.AccessTokenValidation.JwtValidation.LocalJwks - nil, // 47: enterprise.gloo.solo.io.ApiKeyAuth.LabelSelectorEntry - nil, // 48: enterprise.gloo.solo.io.ApiKeyAuth.HeadersFromMetadataEntry - (*ApiKeyAuth_SecretKey)(nil), // 49: enterprise.gloo.solo.io.ApiKeyAuth.SecretKey - nil, // 50: enterprise.gloo.solo.io.ApiKeySecret.MetadataEntry - (*Ldap_ConnectionPool)(nil), // 51: enterprise.gloo.solo.io.Ldap.ConnectionPool - (*ExtAuthConfig_OAuthConfig)(nil), // 52: enterprise.gloo.solo.io.ExtAuthConfig.OAuthConfig - (*ExtAuthConfig_OidcAuthorizationCodeConfig)(nil), // 53: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig - (*ExtAuthConfig_AccessTokenValidationConfig)(nil), // 54: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig - (*ExtAuthConfig_OAuth2Config)(nil), // 55: enterprise.gloo.solo.io.ExtAuthConfig.OAuth2Config - (*ExtAuthConfig_ApiKeyAuthConfig)(nil), // 56: enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig - (*ExtAuthConfig_OpaAuthConfig)(nil), // 57: enterprise.gloo.solo.io.ExtAuthConfig.OpaAuthConfig - (*ExtAuthConfig_Config)(nil), // 58: enterprise.gloo.solo.io.ExtAuthConfig.Config - nil, // 59: enterprise.gloo.solo.io.ExtAuthConfig.OAuthConfig.AuthEndpointQueryParamsEntry - nil, // 60: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.AuthEndpointQueryParamsEntry - nil, // 61: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.TokenEndpointQueryParamsEntry - (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation)(nil), // 62: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.JwtValidation - (*ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation)(nil), // 63: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.IntrospectionValidation - (*ExtAuthConfig_AccessTokenValidationConfig_ScopeList)(nil), // 64: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.ScopeList - (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks)(nil), // 65: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.JwtValidation.RemoteJwks - (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks)(nil), // 66: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.JwtValidation.LocalJwks - (*ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata)(nil), // 67: enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.KeyMetadata - nil, // 68: enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.ValidApiKeysEntry - nil, // 69: enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.HeadersFromKeyMetadataEntry - nil, // 70: enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.KeyMetadata.MetadataEntry - nil, // 71: enterprise.gloo.solo.io.ExtAuthConfig.OpaAuthConfig.ModulesEntry - nil, // 72: enterprise.gloo.solo.io.AuthConfigStatus.SubresourceStatusesEntry - (*wrappers.StringValue)(nil), // 73: google.protobuf.StringValue - (*core.ResourceRef)(nil), // 74: core.solo.io.ResourceRef - (*duration.Duration)(nil), // 75: google.protobuf.Duration - (*_struct.Struct)(nil), // 76: google.protobuf.Struct - (*empty.Empty)(nil), // 77: google.protobuf.Empty - (*wrappers.BoolValue)(nil), // 78: google.protobuf.BoolValue - (*wrappers.UInt32Value)(nil), // 79: google.protobuf.UInt32Value - (*v2.DiscoveryRequest)(nil), // 80: envoy.api.v2.DiscoveryRequest - (*v2.DeltaDiscoveryRequest)(nil), // 81: envoy.api.v2.DeltaDiscoveryRequest - (*v2.DiscoveryResponse)(nil), // 82: envoy.api.v2.DiscoveryResponse - (*v2.DeltaDiscoveryResponse)(nil), // 83: envoy.api.v2.DeltaDiscoveryResponse + (RedisOptions_SocketType)(0), // 1: enterprise.gloo.solo.io.RedisOptions.SocketType + (UserSession_CookieOptions_SameSite)(0), // 2: enterprise.gloo.solo.io.UserSession.CookieOptions.SameSite + (EndSessionProperties_MethodType)(0), // 3: enterprise.gloo.solo.io.EndSessionProperties.MethodType + (SslParameters_ProtocolVersion)(0), // 4: enterprise.gloo.solo.io.SslParameters.ProtocolVersion + (AuthConfigStatus_State)(0), // 5: enterprise.gloo.solo.io.AuthConfigStatus.State + (*AuthConfigSpec)(nil), // 6: enterprise.gloo.solo.io.AuthConfigSpec + (*ExtAuthExtension)(nil), // 7: enterprise.gloo.solo.io.ExtAuthExtension + (*Settings)(nil), // 8: enterprise.gloo.solo.io.Settings + (*GrpcService)(nil), // 9: enterprise.gloo.solo.io.GrpcService + (*HttpService)(nil), // 10: enterprise.gloo.solo.io.HttpService + (*BufferSettings)(nil), // 11: enterprise.gloo.solo.io.BufferSettings + (*CustomAuth)(nil), // 12: enterprise.gloo.solo.io.CustomAuth + (*AuthPlugin)(nil), // 13: enterprise.gloo.solo.io.AuthPlugin + (*BasicAuth)(nil), // 14: enterprise.gloo.solo.io.BasicAuth + (*HmacAuth)(nil), // 15: enterprise.gloo.solo.io.HmacAuth + (*SecretRefList)(nil), // 16: enterprise.gloo.solo.io.SecretRefList + (*HmacParametersInHeaders)(nil), // 17: enterprise.gloo.solo.io.HmacParametersInHeaders + (*OAuth)(nil), // 18: enterprise.gloo.solo.io.OAuth + (*OAuth2)(nil), // 19: enterprise.gloo.solo.io.OAuth2 + (*RedisOptions)(nil), // 20: enterprise.gloo.solo.io.RedisOptions + (*UserSession)(nil), // 21: enterprise.gloo.solo.io.UserSession + (*HeaderConfiguration)(nil), // 22: enterprise.gloo.solo.io.HeaderConfiguration + (*DiscoveryOverride)(nil), // 23: enterprise.gloo.solo.io.DiscoveryOverride + (*JwksOnDemandCacheRefreshPolicy)(nil), // 24: enterprise.gloo.solo.io.JwksOnDemandCacheRefreshPolicy + (*AutoMapFromMetadata)(nil), // 25: enterprise.gloo.solo.io.AutoMapFromMetadata + (*EndSessionProperties)(nil), // 26: enterprise.gloo.solo.io.EndSessionProperties + (*ClaimToHeader)(nil), // 27: enterprise.gloo.solo.io.ClaimToHeader + (*Azure)(nil), // 28: enterprise.gloo.solo.io.Azure + (*OidcAuthorizationCode)(nil), // 29: enterprise.gloo.solo.io.OidcAuthorizationCode + (*PlainOAuth2)(nil), // 30: enterprise.gloo.solo.io.PlainOAuth2 + (*JwtValidation)(nil), // 31: enterprise.gloo.solo.io.JwtValidation + (*IntrospectionValidation)(nil), // 32: enterprise.gloo.solo.io.IntrospectionValidation + (*AccessTokenValidation)(nil), // 33: enterprise.gloo.solo.io.AccessTokenValidation + (*OauthSecret)(nil), // 34: enterprise.gloo.solo.io.OauthSecret + (*ApiKeyAuth)(nil), // 35: enterprise.gloo.solo.io.ApiKeyAuth + (*K8SSecretApiKeyStorage)(nil), // 36: enterprise.gloo.solo.io.K8sSecretApiKeyStorage + (*AerospikeApiKeyStorage)(nil), // 37: enterprise.gloo.solo.io.AerospikeApiKeyStorage + (*ServerDefaultApiKeyStorage)(nil), // 38: enterprise.gloo.solo.io.ServerDefaultApiKeyStorage + (*ApiKey)(nil), // 39: enterprise.gloo.solo.io.ApiKey + (*ApiKeySecret)(nil), // 40: enterprise.gloo.solo.io.ApiKeySecret + (*OpaAuth)(nil), // 41: enterprise.gloo.solo.io.OpaAuth + (*OpaAuthOptions)(nil), // 42: enterprise.gloo.solo.io.OpaAuthOptions + (*OpaServerAuth)(nil), // 43: enterprise.gloo.solo.io.OpaServerAuth + (*Ldap)(nil), // 44: enterprise.gloo.solo.io.Ldap + (*LdapServiceAccount)(nil), // 45: enterprise.gloo.solo.io.LdapServiceAccount + (*PassThroughAuth)(nil), // 46: enterprise.gloo.solo.io.PassThroughAuth + (*BackoffStrategy)(nil), // 47: enterprise.gloo.solo.io.BackoffStrategy + (*RetryPolicy)(nil), // 48: enterprise.gloo.solo.io.RetryPolicy + (*PassThroughGrpc)(nil), // 49: enterprise.gloo.solo.io.PassThroughGrpc + (*PassThroughHttp)(nil), // 50: enterprise.gloo.solo.io.PassThroughHttp + (*PassThroughGrpcTLSConfig)(nil), // 51: enterprise.gloo.solo.io.PassThroughGrpcTLSConfig + (*PassThroughHttpTLSConfig)(nil), // 52: enterprise.gloo.solo.io.PassThroughHttpTLSConfig + (*SslParameters)(nil), // 53: enterprise.gloo.solo.io.SslParameters + (*PortalAuth)(nil), // 54: enterprise.gloo.solo.io.PortalAuth + (*AuthConfigStatus)(nil), // 55: enterprise.gloo.solo.io.AuthConfigStatus + (*AuthConfigNamespacedStatuses)(nil), // 56: enterprise.gloo.solo.io.AuthConfigNamespacedStatuses + (*AuthConfigSpec_Config)(nil), // 57: enterprise.gloo.solo.io.AuthConfigSpec.Config + (*HttpService_Request)(nil), // 58: enterprise.gloo.solo.io.HttpService.Request + (*HttpService_Response)(nil), // 59: enterprise.gloo.solo.io.HttpService.Response + nil, // 60: enterprise.gloo.solo.io.HttpService.Request.HeadersToAddEntry + nil, // 61: enterprise.gloo.solo.io.CustomAuth.ContextExtensionsEntry + (*BasicAuth_Apr)(nil), // 62: enterprise.gloo.solo.io.BasicAuth.Apr + (*BasicAuth_EncryptionType)(nil), // 63: enterprise.gloo.solo.io.BasicAuth.EncryptionType + (*BasicAuth_User)(nil), // 64: enterprise.gloo.solo.io.BasicAuth.User + (*BasicAuth_UserList)(nil), // 65: enterprise.gloo.solo.io.BasicAuth.UserList + (*BasicAuth_Apr_SaltedHashedPassword)(nil), // 66: enterprise.gloo.solo.io.BasicAuth.Apr.SaltedHashedPassword + nil, // 67: enterprise.gloo.solo.io.BasicAuth.Apr.UsersEntry + (*BasicAuth_EncryptionType_Sha1)(nil), // 68: enterprise.gloo.solo.io.BasicAuth.EncryptionType.Sha1 + (*BasicAuth_EncryptionType_Apr)(nil), // 69: enterprise.gloo.solo.io.BasicAuth.EncryptionType.Apr + nil, // 70: enterprise.gloo.solo.io.BasicAuth.UserList.UsersEntry + nil, // 71: enterprise.gloo.solo.io.OAuth.AuthEndpointQueryParamsEntry + (*UserSession_InternalSession)(nil), // 72: enterprise.gloo.solo.io.UserSession.InternalSession + (*UserSession_RedisSession)(nil), // 73: enterprise.gloo.solo.io.UserSession.RedisSession + (*UserSession_CookieOptions)(nil), // 74: enterprise.gloo.solo.io.UserSession.CookieOptions + (*UserSession_CipherConfig)(nil), // 75: enterprise.gloo.solo.io.UserSession.CipherConfig + nil, // 76: enterprise.gloo.solo.io.OidcAuthorizationCode.AuthEndpointQueryParamsEntry + nil, // 77: enterprise.gloo.solo.io.OidcAuthorizationCode.TokenEndpointQueryParamsEntry + nil, // 78: enterprise.gloo.solo.io.OidcAuthorizationCode.DynamicMetadataFromClaimsEntry + (*OidcAuthorizationCode_AccessToken)(nil), // 79: enterprise.gloo.solo.io.OidcAuthorizationCode.AccessToken + (*OidcAuthorizationCode_IdentityToken)(nil), // 80: enterprise.gloo.solo.io.OidcAuthorizationCode.IdentityToken + (*OidcAuthorizationCode_ClientAuthentication)(nil), // 81: enterprise.gloo.solo.io.OidcAuthorizationCode.ClientAuthentication + (*OidcAuthorizationCode_Default)(nil), // 82: enterprise.gloo.solo.io.OidcAuthorizationCode.Default + (*OidcAuthorizationCode_FrontChannelLogout)(nil), // 83: enterprise.gloo.solo.io.OidcAuthorizationCode.FrontChannelLogout + (*OidcAuthorizationCode_ClientAuthentication_ClientSecret)(nil), // 84: enterprise.gloo.solo.io.OidcAuthorizationCode.ClientAuthentication.ClientSecret + (*OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt)(nil), // 85: enterprise.gloo.solo.io.OidcAuthorizationCode.ClientAuthentication.PrivateKeyJwt + nil, // 86: enterprise.gloo.solo.io.PlainOAuth2.AuthEndpointQueryParamsEntry + nil, // 87: enterprise.gloo.solo.io.PlainOAuth2.TokenEndpointQueryParamsEntry + (*JwtValidation_RemoteJwks)(nil), // 88: enterprise.gloo.solo.io.JwtValidation.RemoteJwks + (*JwtValidation_LocalJwks)(nil), // 89: enterprise.gloo.solo.io.JwtValidation.LocalJwks + nil, // 90: enterprise.gloo.solo.io.AccessTokenValidation.DynamicMetadataFromClaimsEntry + (*AccessTokenValidation_Default)(nil), // 91: enterprise.gloo.solo.io.AccessTokenValidation.Default + (*AccessTokenValidation_ScopeList)(nil), // 92: enterprise.gloo.solo.io.AccessTokenValidation.ScopeList + nil, // 93: enterprise.gloo.solo.io.ApiKeyAuth.LabelSelectorEntry + nil, // 94: enterprise.gloo.solo.io.ApiKeyAuth.HeadersFromMetadataEntry + nil, // 95: enterprise.gloo.solo.io.ApiKeyAuth.HeadersFromMetadataEntryEntry + (*ApiKeyAuth_SecretKey)(nil), // 96: enterprise.gloo.solo.io.ApiKeyAuth.SecretKey + (*ApiKeyAuth_MetadataEntry)(nil), // 97: enterprise.gloo.solo.io.ApiKeyAuth.MetadataEntry + nil, // 98: enterprise.gloo.solo.io.K8sSecretApiKeyStorage.LabelSelectorEntry + (*AerospikeApiKeyStorageReadModeSc)(nil), // 99: enterprise.gloo.solo.io.AerospikeApiKeyStorage.readModeSc + (*AerospikeApiKeyStorageReadModeAp)(nil), // 100: enterprise.gloo.solo.io.AerospikeApiKeyStorage.readModeAp + (*AerospikeApiKeyStorageTlsCurveID)(nil), // 101: enterprise.gloo.solo.io.AerospikeApiKeyStorage.tlsCurveID + nil, // 102: enterprise.gloo.solo.io.AerospikeApiKeyStorage.LabelSelectorEntry + nil, // 103: enterprise.gloo.solo.io.ApiKey.MetadataEntry + nil, // 104: enterprise.gloo.solo.io.ApiKeySecret.MetadataEntry + (*Ldap_ConnectionPool)(nil), // 105: enterprise.gloo.solo.io.Ldap.ConnectionPool + (*PassThroughHttp_Request)(nil), // 106: enterprise.gloo.solo.io.PassThroughHttp.Request + (*PassThroughHttp_Response)(nil), // 107: enterprise.gloo.solo.io.PassThroughHttp.Response + nil, // 108: enterprise.gloo.solo.io.PassThroughHttp.Request.HeadersToAddEntry + nil, // 109: enterprise.gloo.solo.io.AuthConfigStatus.SubresourceStatusesEntry + nil, // 110: enterprise.gloo.solo.io.AuthConfigNamespacedStatuses.StatusesEntry + (*wrapperspb.StringValue)(nil), // 111: google.protobuf.StringValue + (*core.ResourceRef)(nil), // 112: core.solo.io.ResourceRef + (*durationpb.Duration)(nil), // 113: google.protobuf.Duration + (*structpb.Struct)(nil), // 114: google.protobuf.Struct + (*wrapperspb.BoolValue)(nil), // 115: google.protobuf.BoolValue + (*emptypb.Empty)(nil), // 116: google.protobuf.Empty + (*wrapperspb.UInt32Value)(nil), // 117: google.protobuf.UInt32Value } var file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_depIdxs = []int32{ - 28, // 0: enterprise.gloo.solo.io.AuthConfigSpec.configs:type_name -> enterprise.gloo.solo.io.AuthConfigSpec.Config - 73, // 1: enterprise.gloo.solo.io.AuthConfigSpec.boolean_expr:type_name -> google.protobuf.StringValue - 74, // 2: enterprise.gloo.solo.io.ExtAuthExtension.config_ref:type_name -> core.solo.io.ResourceRef - 7, // 3: enterprise.gloo.solo.io.ExtAuthExtension.custom_auth:type_name -> enterprise.gloo.solo.io.CustomAuth - 74, // 4: enterprise.gloo.solo.io.Settings.extauthz_server_ref:type_name -> core.solo.io.ResourceRef - 5, // 5: enterprise.gloo.solo.io.Settings.http_service:type_name -> enterprise.gloo.solo.io.HttpService - 75, // 6: enterprise.gloo.solo.io.Settings.request_timeout:type_name -> google.protobuf.Duration - 6, // 7: enterprise.gloo.solo.io.Settings.request_body:type_name -> enterprise.gloo.solo.io.BufferSettings - 0, // 8: enterprise.gloo.solo.io.Settings.transport_api_version:type_name -> enterprise.gloo.solo.io.Settings.ApiVersion - 29, // 9: enterprise.gloo.solo.io.HttpService.request:type_name -> enterprise.gloo.solo.io.HttpService.Request - 30, // 10: enterprise.gloo.solo.io.HttpService.response:type_name -> enterprise.gloo.solo.io.HttpService.Response - 32, // 11: enterprise.gloo.solo.io.CustomAuth.context_extensions:type_name -> enterprise.gloo.solo.io.CustomAuth.ContextExtensionsEntry - 76, // 12: enterprise.gloo.solo.io.AuthPlugin.config:type_name -> google.protobuf.Struct - 33, // 13: enterprise.gloo.solo.io.BasicAuth.apr:type_name -> enterprise.gloo.solo.io.BasicAuth.Apr - 74, // 14: enterprise.gloo.solo.io.OAuth.client_secret_ref:type_name -> core.solo.io.ResourceRef - 36, // 15: enterprise.gloo.solo.io.OAuth.auth_endpoint_query_params:type_name -> enterprise.gloo.solo.io.OAuth.AuthEndpointQueryParamsEntry - 17, // 16: enterprise.gloo.solo.io.OAuth2.oidc_authorization_code:type_name -> enterprise.gloo.solo.io.OidcAuthorizationCode - 18, // 17: enterprise.gloo.solo.io.OAuth2.access_token_validation:type_name -> enterprise.gloo.solo.io.AccessTokenValidation - 39, // 18: enterprise.gloo.solo.io.UserSession.cookie_options:type_name -> enterprise.gloo.solo.io.UserSession.CookieOptions - 37, // 19: enterprise.gloo.solo.io.UserSession.cookie:type_name -> enterprise.gloo.solo.io.UserSession.InternalSession - 38, // 20: enterprise.gloo.solo.io.UserSession.redis:type_name -> enterprise.gloo.solo.io.UserSession.RedisSession - 77, // 21: enterprise.gloo.solo.io.JwksOnDemandCacheRefreshPolicy.never:type_name -> google.protobuf.Empty - 77, // 22: enterprise.gloo.solo.io.JwksOnDemandCacheRefreshPolicy.always:type_name -> google.protobuf.Empty - 74, // 23: enterprise.gloo.solo.io.OidcAuthorizationCode.client_secret_ref:type_name -> core.solo.io.ResourceRef - 40, // 24: enterprise.gloo.solo.io.OidcAuthorizationCode.auth_endpoint_query_params:type_name -> enterprise.gloo.solo.io.OidcAuthorizationCode.AuthEndpointQueryParamsEntry - 41, // 25: enterprise.gloo.solo.io.OidcAuthorizationCode.token_endpoint_query_params:type_name -> enterprise.gloo.solo.io.OidcAuthorizationCode.TokenEndpointQueryParamsEntry - 13, // 26: enterprise.gloo.solo.io.OidcAuthorizationCode.session:type_name -> enterprise.gloo.solo.io.UserSession - 14, // 27: enterprise.gloo.solo.io.OidcAuthorizationCode.headers:type_name -> enterprise.gloo.solo.io.HeaderConfiguration - 15, // 28: enterprise.gloo.solo.io.OidcAuthorizationCode.discovery_override:type_name -> enterprise.gloo.solo.io.DiscoveryOverride - 75, // 29: enterprise.gloo.solo.io.OidcAuthorizationCode.discovery_poll_interval:type_name -> google.protobuf.Duration - 16, // 30: enterprise.gloo.solo.io.OidcAuthorizationCode.jwks_cache_refresh_policy:type_name -> enterprise.gloo.solo.io.JwksOnDemandCacheRefreshPolicy - 42, // 31: enterprise.gloo.solo.io.AccessTokenValidation.jwt:type_name -> enterprise.gloo.solo.io.AccessTokenValidation.JwtValidation - 43, // 32: enterprise.gloo.solo.io.AccessTokenValidation.introspection:type_name -> enterprise.gloo.solo.io.AccessTokenValidation.IntrospectionValidation - 75, // 33: enterprise.gloo.solo.io.AccessTokenValidation.cache_timeout:type_name -> google.protobuf.Duration - 44, // 34: enterprise.gloo.solo.io.AccessTokenValidation.required_scopes:type_name -> enterprise.gloo.solo.io.AccessTokenValidation.ScopeList - 47, // 35: enterprise.gloo.solo.io.ApiKeyAuth.label_selector:type_name -> enterprise.gloo.solo.io.ApiKeyAuth.LabelSelectorEntry - 74, // 36: enterprise.gloo.solo.io.ApiKeyAuth.api_key_secret_refs:type_name -> core.solo.io.ResourceRef - 48, // 37: enterprise.gloo.solo.io.ApiKeyAuth.headers_from_metadata:type_name -> enterprise.gloo.solo.io.ApiKeyAuth.HeadersFromMetadataEntry - 50, // 38: enterprise.gloo.solo.io.ApiKeySecret.metadata:type_name -> enterprise.gloo.solo.io.ApiKeySecret.MetadataEntry - 74, // 39: enterprise.gloo.solo.io.OpaAuth.modules:type_name -> core.solo.io.ResourceRef - 51, // 40: enterprise.gloo.solo.io.Ldap.pool:type_name -> enterprise.gloo.solo.io.Ldap.ConnectionPool - 25, // 41: enterprise.gloo.solo.io.PassThroughAuth.grpc:type_name -> enterprise.gloo.solo.io.PassThroughGrpc - 76, // 42: enterprise.gloo.solo.io.PassThroughAuth.config:type_name -> google.protobuf.Struct - 75, // 43: enterprise.gloo.solo.io.PassThroughGrpc.connection_timeout:type_name -> google.protobuf.Duration - 58, // 44: enterprise.gloo.solo.io.ExtAuthConfig.configs:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.Config - 73, // 45: enterprise.gloo.solo.io.ExtAuthConfig.boolean_expr:type_name -> google.protobuf.StringValue - 1, // 46: enterprise.gloo.solo.io.AuthConfigStatus.state:type_name -> enterprise.gloo.solo.io.AuthConfigStatus.State - 72, // 47: enterprise.gloo.solo.io.AuthConfigStatus.subresource_statuses:type_name -> enterprise.gloo.solo.io.AuthConfigStatus.SubresourceStatusesEntry - 76, // 48: enterprise.gloo.solo.io.AuthConfigStatus.details:type_name -> google.protobuf.Struct - 73, // 49: enterprise.gloo.solo.io.AuthConfigSpec.Config.name:type_name -> google.protobuf.StringValue - 9, // 50: enterprise.gloo.solo.io.AuthConfigSpec.Config.basic_auth:type_name -> enterprise.gloo.solo.io.BasicAuth - 10, // 51: enterprise.gloo.solo.io.AuthConfigSpec.Config.oauth:type_name -> enterprise.gloo.solo.io.OAuth - 11, // 52: enterprise.gloo.solo.io.AuthConfigSpec.Config.oauth2:type_name -> enterprise.gloo.solo.io.OAuth2 - 20, // 53: enterprise.gloo.solo.io.AuthConfigSpec.Config.api_key_auth:type_name -> enterprise.gloo.solo.io.ApiKeyAuth - 8, // 54: enterprise.gloo.solo.io.AuthConfigSpec.Config.plugin_auth:type_name -> enterprise.gloo.solo.io.AuthPlugin - 22, // 55: enterprise.gloo.solo.io.AuthConfigSpec.Config.opa_auth:type_name -> enterprise.gloo.solo.io.OpaAuth - 23, // 56: enterprise.gloo.solo.io.AuthConfigSpec.Config.ldap:type_name -> enterprise.gloo.solo.io.Ldap - 77, // 57: enterprise.gloo.solo.io.AuthConfigSpec.Config.jwt:type_name -> google.protobuf.Empty - 24, // 58: enterprise.gloo.solo.io.AuthConfigSpec.Config.pass_through_auth:type_name -> enterprise.gloo.solo.io.PassThroughAuth - 31, // 59: enterprise.gloo.solo.io.HttpService.Request.headers_to_add:type_name -> enterprise.gloo.solo.io.HttpService.Request.HeadersToAddEntry - 35, // 60: enterprise.gloo.solo.io.BasicAuth.Apr.users:type_name -> enterprise.gloo.solo.io.BasicAuth.Apr.UsersEntry - 34, // 61: enterprise.gloo.solo.io.BasicAuth.Apr.UsersEntry.value:type_name -> enterprise.gloo.solo.io.BasicAuth.Apr.SaltedHashedPassword - 12, // 62: enterprise.gloo.solo.io.UserSession.RedisSession.options:type_name -> enterprise.gloo.solo.io.RedisOptions - 78, // 63: enterprise.gloo.solo.io.UserSession.RedisSession.allow_refreshing:type_name -> google.protobuf.BoolValue - 79, // 64: enterprise.gloo.solo.io.UserSession.CookieOptions.max_age:type_name -> google.protobuf.UInt32Value - 73, // 65: enterprise.gloo.solo.io.UserSession.CookieOptions.path:type_name -> google.protobuf.StringValue - 45, // 66: enterprise.gloo.solo.io.AccessTokenValidation.JwtValidation.remote_jwks:type_name -> enterprise.gloo.solo.io.AccessTokenValidation.JwtValidation.RemoteJwks - 46, // 67: enterprise.gloo.solo.io.AccessTokenValidation.JwtValidation.local_jwks:type_name -> enterprise.gloo.solo.io.AccessTokenValidation.JwtValidation.LocalJwks - 74, // 68: enterprise.gloo.solo.io.AccessTokenValidation.IntrospectionValidation.client_secret_ref:type_name -> core.solo.io.ResourceRef - 75, // 69: enterprise.gloo.solo.io.AccessTokenValidation.JwtValidation.RemoteJwks.refresh_interval:type_name -> google.protobuf.Duration - 49, // 70: enterprise.gloo.solo.io.ApiKeyAuth.HeadersFromMetadataEntry.value:type_name -> enterprise.gloo.solo.io.ApiKeyAuth.SecretKey - 79, // 71: enterprise.gloo.solo.io.Ldap.ConnectionPool.maxSize:type_name -> google.protobuf.UInt32Value - 79, // 72: enterprise.gloo.solo.io.Ldap.ConnectionPool.initialSize:type_name -> google.protobuf.UInt32Value - 59, // 73: enterprise.gloo.solo.io.ExtAuthConfig.OAuthConfig.auth_endpoint_query_params:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OAuthConfig.AuthEndpointQueryParamsEntry - 60, // 74: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.auth_endpoint_query_params:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.AuthEndpointQueryParamsEntry - 61, // 75: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.token_endpoint_query_params:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.TokenEndpointQueryParamsEntry - 13, // 76: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.session:type_name -> enterprise.gloo.solo.io.UserSession - 14, // 77: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.headers:type_name -> enterprise.gloo.solo.io.HeaderConfiguration - 15, // 78: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.discovery_override:type_name -> enterprise.gloo.solo.io.DiscoveryOverride - 75, // 79: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.discovery_poll_interval:type_name -> google.protobuf.Duration - 16, // 80: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.jwks_cache_refresh_policy:type_name -> enterprise.gloo.solo.io.JwksOnDemandCacheRefreshPolicy - 62, // 81: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.jwt:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.JwtValidation - 63, // 82: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.introspection:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.IntrospectionValidation - 75, // 83: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.cache_timeout:type_name -> google.protobuf.Duration - 64, // 84: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.required_scopes:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.ScopeList - 53, // 85: enterprise.gloo.solo.io.ExtAuthConfig.OAuth2Config.oidc_authorization_code:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig - 54, // 86: enterprise.gloo.solo.io.ExtAuthConfig.OAuth2Config.access_token_validation_config:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig - 68, // 87: enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.valid_api_keys:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.ValidApiKeysEntry - 69, // 88: enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.headers_from_key_metadata:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.HeadersFromKeyMetadataEntry - 71, // 89: enterprise.gloo.solo.io.ExtAuthConfig.OpaAuthConfig.modules:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OpaAuthConfig.ModulesEntry - 73, // 90: enterprise.gloo.solo.io.ExtAuthConfig.Config.name:type_name -> google.protobuf.StringValue - 52, // 91: enterprise.gloo.solo.io.ExtAuthConfig.Config.oauth:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OAuthConfig - 55, // 92: enterprise.gloo.solo.io.ExtAuthConfig.Config.oauth2:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OAuth2Config - 9, // 93: enterprise.gloo.solo.io.ExtAuthConfig.Config.basic_auth:type_name -> enterprise.gloo.solo.io.BasicAuth - 56, // 94: enterprise.gloo.solo.io.ExtAuthConfig.Config.api_key_auth:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig - 8, // 95: enterprise.gloo.solo.io.ExtAuthConfig.Config.plugin_auth:type_name -> enterprise.gloo.solo.io.AuthPlugin - 57, // 96: enterprise.gloo.solo.io.ExtAuthConfig.Config.opa_auth:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OpaAuthConfig - 23, // 97: enterprise.gloo.solo.io.ExtAuthConfig.Config.ldap:type_name -> enterprise.gloo.solo.io.Ldap - 77, // 98: enterprise.gloo.solo.io.ExtAuthConfig.Config.jwt:type_name -> google.protobuf.Empty - 24, // 99: enterprise.gloo.solo.io.ExtAuthConfig.Config.pass_through_auth:type_name -> enterprise.gloo.solo.io.PassThroughAuth - 65, // 100: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.JwtValidation.remote_jwks:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.JwtValidation.RemoteJwks - 66, // 101: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.JwtValidation.local_jwks:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.JwtValidation.LocalJwks - 75, // 102: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.JwtValidation.RemoteJwks.refresh_interval:type_name -> google.protobuf.Duration - 70, // 103: enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.KeyMetadata.metadata:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.KeyMetadata.MetadataEntry - 67, // 104: enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.ValidApiKeysEntry.value:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.KeyMetadata - 27, // 105: enterprise.gloo.solo.io.AuthConfigStatus.SubresourceStatusesEntry.value:type_name -> enterprise.gloo.solo.io.AuthConfigStatus - 80, // 106: enterprise.gloo.solo.io.ExtAuthDiscoveryService.StreamExtAuthConfig:input_type -> envoy.api.v2.DiscoveryRequest - 81, // 107: enterprise.gloo.solo.io.ExtAuthDiscoveryService.DeltaExtAuthConfig:input_type -> envoy.api.v2.DeltaDiscoveryRequest - 80, // 108: enterprise.gloo.solo.io.ExtAuthDiscoveryService.FetchExtAuthConfig:input_type -> envoy.api.v2.DiscoveryRequest - 82, // 109: enterprise.gloo.solo.io.ExtAuthDiscoveryService.StreamExtAuthConfig:output_type -> envoy.api.v2.DiscoveryResponse - 83, // 110: enterprise.gloo.solo.io.ExtAuthDiscoveryService.DeltaExtAuthConfig:output_type -> envoy.api.v2.DeltaDiscoveryResponse - 82, // 111: enterprise.gloo.solo.io.ExtAuthDiscoveryService.FetchExtAuthConfig:output_type -> envoy.api.v2.DiscoveryResponse - 109, // [109:112] is the sub-list for method output_type - 106, // [106:109] is the sub-list for method input_type - 106, // [106:106] is the sub-list for extension type_name - 106, // [106:106] is the sub-list for extension extendee - 0, // [0:106] is the sub-list for field type_name + 57, // 0: enterprise.gloo.solo.io.AuthConfigSpec.configs:type_name -> enterprise.gloo.solo.io.AuthConfigSpec.Config + 111, // 1: enterprise.gloo.solo.io.AuthConfigSpec.boolean_expr:type_name -> google.protobuf.StringValue + 112, // 2: enterprise.gloo.solo.io.ExtAuthExtension.config_ref:type_name -> core.solo.io.ResourceRef + 12, // 3: enterprise.gloo.solo.io.ExtAuthExtension.custom_auth:type_name -> enterprise.gloo.solo.io.CustomAuth + 112, // 4: enterprise.gloo.solo.io.Settings.extauthz_server_ref:type_name -> core.solo.io.ResourceRef + 10, // 5: enterprise.gloo.solo.io.Settings.http_service:type_name -> enterprise.gloo.solo.io.HttpService + 9, // 6: enterprise.gloo.solo.io.Settings.grpc_service:type_name -> enterprise.gloo.solo.io.GrpcService + 113, // 7: enterprise.gloo.solo.io.Settings.request_timeout:type_name -> google.protobuf.Duration + 11, // 8: enterprise.gloo.solo.io.Settings.request_body:type_name -> enterprise.gloo.solo.io.BufferSettings + 0, // 9: enterprise.gloo.solo.io.Settings.transport_api_version:type_name -> enterprise.gloo.solo.io.Settings.ApiVersion + 58, // 10: enterprise.gloo.solo.io.HttpService.request:type_name -> enterprise.gloo.solo.io.HttpService.Request + 59, // 11: enterprise.gloo.solo.io.HttpService.response:type_name -> enterprise.gloo.solo.io.HttpService.Response + 61, // 12: enterprise.gloo.solo.io.CustomAuth.context_extensions:type_name -> enterprise.gloo.solo.io.CustomAuth.ContextExtensionsEntry + 114, // 13: enterprise.gloo.solo.io.AuthPlugin.config:type_name -> google.protobuf.Struct + 62, // 14: enterprise.gloo.solo.io.BasicAuth.apr:type_name -> enterprise.gloo.solo.io.BasicAuth.Apr + 63, // 15: enterprise.gloo.solo.io.BasicAuth.encryption:type_name -> enterprise.gloo.solo.io.BasicAuth.EncryptionType + 65, // 16: enterprise.gloo.solo.io.BasicAuth.user_list:type_name -> enterprise.gloo.solo.io.BasicAuth.UserList + 16, // 17: enterprise.gloo.solo.io.HmacAuth.secret_refs:type_name -> enterprise.gloo.solo.io.SecretRefList + 17, // 18: enterprise.gloo.solo.io.HmacAuth.parameters_in_headers:type_name -> enterprise.gloo.solo.io.HmacParametersInHeaders + 112, // 19: enterprise.gloo.solo.io.SecretRefList.secret_refs:type_name -> core.solo.io.ResourceRef + 112, // 20: enterprise.gloo.solo.io.OAuth.client_secret_ref:type_name -> core.solo.io.ResourceRef + 71, // 21: enterprise.gloo.solo.io.OAuth.auth_endpoint_query_params:type_name -> enterprise.gloo.solo.io.OAuth.AuthEndpointQueryParamsEntry + 29, // 22: enterprise.gloo.solo.io.OAuth2.oidc_authorization_code:type_name -> enterprise.gloo.solo.io.OidcAuthorizationCode + 33, // 23: enterprise.gloo.solo.io.OAuth2.access_token_validation:type_name -> enterprise.gloo.solo.io.AccessTokenValidation + 30, // 24: enterprise.gloo.solo.io.OAuth2.oauth2:type_name -> enterprise.gloo.solo.io.PlainOAuth2 + 1, // 25: enterprise.gloo.solo.io.RedisOptions.socket_type:type_name -> enterprise.gloo.solo.io.RedisOptions.SocketType + 74, // 26: enterprise.gloo.solo.io.UserSession.cookie_options:type_name -> enterprise.gloo.solo.io.UserSession.CookieOptions + 72, // 27: enterprise.gloo.solo.io.UserSession.cookie:type_name -> enterprise.gloo.solo.io.UserSession.InternalSession + 73, // 28: enterprise.gloo.solo.io.UserSession.redis:type_name -> enterprise.gloo.solo.io.UserSession.RedisSession + 75, // 29: enterprise.gloo.solo.io.UserSession.cipher_config:type_name -> enterprise.gloo.solo.io.UserSession.CipherConfig + 115, // 30: enterprise.gloo.solo.io.HeaderConfiguration.use_bearer_schema_for_authorization:type_name -> google.protobuf.BoolValue + 116, // 31: enterprise.gloo.solo.io.JwksOnDemandCacheRefreshPolicy.never:type_name -> google.protobuf.Empty + 116, // 32: enterprise.gloo.solo.io.JwksOnDemandCacheRefreshPolicy.always:type_name -> google.protobuf.Empty + 3, // 33: enterprise.gloo.solo.io.EndSessionProperties.methodType:type_name -> enterprise.gloo.solo.io.EndSessionProperties.MethodType + 112, // 34: enterprise.gloo.solo.io.Azure.client_secret:type_name -> core.solo.io.ResourceRef + 20, // 35: enterprise.gloo.solo.io.Azure.claims_caching_options:type_name -> enterprise.gloo.solo.io.RedisOptions + 112, // 36: enterprise.gloo.solo.io.OidcAuthorizationCode.client_secret_ref:type_name -> core.solo.io.ResourceRef + 76, // 37: enterprise.gloo.solo.io.OidcAuthorizationCode.auth_endpoint_query_params:type_name -> enterprise.gloo.solo.io.OidcAuthorizationCode.AuthEndpointQueryParamsEntry + 77, // 38: enterprise.gloo.solo.io.OidcAuthorizationCode.token_endpoint_query_params:type_name -> enterprise.gloo.solo.io.OidcAuthorizationCode.TokenEndpointQueryParamsEntry + 21, // 39: enterprise.gloo.solo.io.OidcAuthorizationCode.session:type_name -> enterprise.gloo.solo.io.UserSession + 22, // 40: enterprise.gloo.solo.io.OidcAuthorizationCode.headers:type_name -> enterprise.gloo.solo.io.HeaderConfiguration + 23, // 41: enterprise.gloo.solo.io.OidcAuthorizationCode.discovery_override:type_name -> enterprise.gloo.solo.io.DiscoveryOverride + 113, // 42: enterprise.gloo.solo.io.OidcAuthorizationCode.discovery_poll_interval:type_name -> google.protobuf.Duration + 24, // 43: enterprise.gloo.solo.io.OidcAuthorizationCode.jwks_cache_refresh_policy:type_name -> enterprise.gloo.solo.io.JwksOnDemandCacheRefreshPolicy + 25, // 44: enterprise.gloo.solo.io.OidcAuthorizationCode.auto_map_from_metadata:type_name -> enterprise.gloo.solo.io.AutoMapFromMetadata + 26, // 45: enterprise.gloo.solo.io.OidcAuthorizationCode.end_session_properties:type_name -> enterprise.gloo.solo.io.EndSessionProperties + 78, // 46: enterprise.gloo.solo.io.OidcAuthorizationCode.dynamic_metadata_from_claims:type_name -> enterprise.gloo.solo.io.OidcAuthorizationCode.DynamicMetadataFromClaimsEntry + 115, // 47: enterprise.gloo.solo.io.OidcAuthorizationCode.disable_client_secret:type_name -> google.protobuf.BoolValue + 79, // 48: enterprise.gloo.solo.io.OidcAuthorizationCode.access_token:type_name -> enterprise.gloo.solo.io.OidcAuthorizationCode.AccessToken + 80, // 49: enterprise.gloo.solo.io.OidcAuthorizationCode.identity_token:type_name -> enterprise.gloo.solo.io.OidcAuthorizationCode.IdentityToken + 81, // 50: enterprise.gloo.solo.io.OidcAuthorizationCode.client_authentication:type_name -> enterprise.gloo.solo.io.OidcAuthorizationCode.ClientAuthentication + 82, // 51: enterprise.gloo.solo.io.OidcAuthorizationCode.default:type_name -> enterprise.gloo.solo.io.OidcAuthorizationCode.Default + 28, // 52: enterprise.gloo.solo.io.OidcAuthorizationCode.azure:type_name -> enterprise.gloo.solo.io.Azure + 83, // 53: enterprise.gloo.solo.io.OidcAuthorizationCode.front_channel_logout:type_name -> enterprise.gloo.solo.io.OidcAuthorizationCode.FrontChannelLogout + 112, // 54: enterprise.gloo.solo.io.PlainOAuth2.client_secret_ref:type_name -> core.solo.io.ResourceRef + 86, // 55: enterprise.gloo.solo.io.PlainOAuth2.auth_endpoint_query_params:type_name -> enterprise.gloo.solo.io.PlainOAuth2.AuthEndpointQueryParamsEntry + 21, // 56: enterprise.gloo.solo.io.PlainOAuth2.session:type_name -> enterprise.gloo.solo.io.UserSession + 87, // 57: enterprise.gloo.solo.io.PlainOAuth2.token_endpoint_query_params:type_name -> enterprise.gloo.solo.io.PlainOAuth2.TokenEndpointQueryParamsEntry + 115, // 58: enterprise.gloo.solo.io.PlainOAuth2.disable_client_secret:type_name -> google.protobuf.BoolValue + 88, // 59: enterprise.gloo.solo.io.JwtValidation.remote_jwks:type_name -> enterprise.gloo.solo.io.JwtValidation.RemoteJwks + 89, // 60: enterprise.gloo.solo.io.JwtValidation.local_jwks:type_name -> enterprise.gloo.solo.io.JwtValidation.LocalJwks + 112, // 61: enterprise.gloo.solo.io.IntrospectionValidation.client_secret_ref:type_name -> core.solo.io.ResourceRef + 115, // 62: enterprise.gloo.solo.io.IntrospectionValidation.disable_client_secret:type_name -> google.protobuf.BoolValue + 31, // 63: enterprise.gloo.solo.io.AccessTokenValidation.jwt:type_name -> enterprise.gloo.solo.io.JwtValidation + 32, // 64: enterprise.gloo.solo.io.AccessTokenValidation.introspection:type_name -> enterprise.gloo.solo.io.IntrospectionValidation + 113, // 65: enterprise.gloo.solo.io.AccessTokenValidation.cache_timeout:type_name -> google.protobuf.Duration + 92, // 66: enterprise.gloo.solo.io.AccessTokenValidation.required_scopes:type_name -> enterprise.gloo.solo.io.AccessTokenValidation.ScopeList + 90, // 67: enterprise.gloo.solo.io.AccessTokenValidation.dynamic_metadata_from_claims:type_name -> enterprise.gloo.solo.io.AccessTokenValidation.DynamicMetadataFromClaimsEntry + 27, // 68: enterprise.gloo.solo.io.AccessTokenValidation.claims_to_headers:type_name -> enterprise.gloo.solo.io.ClaimToHeader + 91, // 69: enterprise.gloo.solo.io.AccessTokenValidation.default:type_name -> enterprise.gloo.solo.io.AccessTokenValidation.Default + 28, // 70: enterprise.gloo.solo.io.AccessTokenValidation.azure:type_name -> enterprise.gloo.solo.io.Azure + 93, // 71: enterprise.gloo.solo.io.ApiKeyAuth.label_selector:type_name -> enterprise.gloo.solo.io.ApiKeyAuth.LabelSelectorEntry + 112, // 72: enterprise.gloo.solo.io.ApiKeyAuth.api_key_secret_refs:type_name -> core.solo.io.ResourceRef + 94, // 73: enterprise.gloo.solo.io.ApiKeyAuth.headers_from_metadata:type_name -> enterprise.gloo.solo.io.ApiKeyAuth.HeadersFromMetadataEntry + 95, // 74: enterprise.gloo.solo.io.ApiKeyAuth.headers_from_metadata_entry:type_name -> enterprise.gloo.solo.io.ApiKeyAuth.HeadersFromMetadataEntryEntry + 36, // 75: enterprise.gloo.solo.io.ApiKeyAuth.k8s_secret_apikey_storage:type_name -> enterprise.gloo.solo.io.K8sSecretApiKeyStorage + 37, // 76: enterprise.gloo.solo.io.ApiKeyAuth.aerospike_apikey_storage:type_name -> enterprise.gloo.solo.io.AerospikeApiKeyStorage + 98, // 77: enterprise.gloo.solo.io.K8sSecretApiKeyStorage.label_selector:type_name -> enterprise.gloo.solo.io.K8sSecretApiKeyStorage.LabelSelectorEntry + 112, // 78: enterprise.gloo.solo.io.K8sSecretApiKeyStorage.api_key_secret_refs:type_name -> core.solo.io.ResourceRef + 99, // 79: enterprise.gloo.solo.io.AerospikeApiKeyStorage.read_mode_sc:type_name -> enterprise.gloo.solo.io.AerospikeApiKeyStorage.readModeSc + 100, // 80: enterprise.gloo.solo.io.AerospikeApiKeyStorage.read_mode_ap:type_name -> enterprise.gloo.solo.io.AerospikeApiKeyStorage.readModeAp + 101, // 81: enterprise.gloo.solo.io.AerospikeApiKeyStorage.tls_curve_groups:type_name -> enterprise.gloo.solo.io.AerospikeApiKeyStorage.tlsCurveID + 102, // 82: enterprise.gloo.solo.io.AerospikeApiKeyStorage.label_selector:type_name -> enterprise.gloo.solo.io.AerospikeApiKeyStorage.LabelSelectorEntry + 103, // 83: enterprise.gloo.solo.io.ApiKey.metadata:type_name -> enterprise.gloo.solo.io.ApiKey.MetadataEntry + 104, // 84: enterprise.gloo.solo.io.ApiKeySecret.metadata:type_name -> enterprise.gloo.solo.io.ApiKeySecret.MetadataEntry + 112, // 85: enterprise.gloo.solo.io.OpaAuth.modules:type_name -> core.solo.io.ResourceRef + 42, // 86: enterprise.gloo.solo.io.OpaAuth.options:type_name -> enterprise.gloo.solo.io.OpaAuthOptions + 42, // 87: enterprise.gloo.solo.io.OpaServerAuth.options:type_name -> enterprise.gloo.solo.io.OpaAuthOptions + 105, // 88: enterprise.gloo.solo.io.Ldap.pool:type_name -> enterprise.gloo.solo.io.Ldap.ConnectionPool + 45, // 89: enterprise.gloo.solo.io.Ldap.group_lookup_settings:type_name -> enterprise.gloo.solo.io.LdapServiceAccount + 112, // 90: enterprise.gloo.solo.io.LdapServiceAccount.credentials_secret_ref:type_name -> core.solo.io.ResourceRef + 49, // 91: enterprise.gloo.solo.io.PassThroughAuth.grpc:type_name -> enterprise.gloo.solo.io.PassThroughGrpc + 50, // 92: enterprise.gloo.solo.io.PassThroughAuth.http:type_name -> enterprise.gloo.solo.io.PassThroughHttp + 114, // 93: enterprise.gloo.solo.io.PassThroughAuth.config:type_name -> google.protobuf.Struct + 113, // 94: enterprise.gloo.solo.io.BackoffStrategy.base_interval:type_name -> google.protobuf.Duration + 113, // 95: enterprise.gloo.solo.io.BackoffStrategy.max_interval:type_name -> google.protobuf.Duration + 117, // 96: enterprise.gloo.solo.io.RetryPolicy.num_retries:type_name -> google.protobuf.UInt32Value + 47, // 97: enterprise.gloo.solo.io.RetryPolicy.retry_back_off:type_name -> enterprise.gloo.solo.io.BackoffStrategy + 113, // 98: enterprise.gloo.solo.io.PassThroughGrpc.connection_timeout:type_name -> google.protobuf.Duration + 51, // 99: enterprise.gloo.solo.io.PassThroughGrpc.tls_config:type_name -> enterprise.gloo.solo.io.PassThroughGrpcTLSConfig + 48, // 100: enterprise.gloo.solo.io.PassThroughGrpc.retry_policy:type_name -> enterprise.gloo.solo.io.RetryPolicy + 106, // 101: enterprise.gloo.solo.io.PassThroughHttp.request:type_name -> enterprise.gloo.solo.io.PassThroughHttp.Request + 107, // 102: enterprise.gloo.solo.io.PassThroughHttp.response:type_name -> enterprise.gloo.solo.io.PassThroughHttp.Response + 113, // 103: enterprise.gloo.solo.io.PassThroughHttp.connection_timeout:type_name -> google.protobuf.Duration + 52, // 104: enterprise.gloo.solo.io.PassThroughHttp.tls_config:type_name -> enterprise.gloo.solo.io.PassThroughHttpTLSConfig + 112, // 105: enterprise.gloo.solo.io.PassThroughGrpcTLSConfig.secret_ref:type_name -> core.solo.io.ResourceRef + 53, // 106: enterprise.gloo.solo.io.PassThroughGrpcTLSConfig.ssl_params:type_name -> enterprise.gloo.solo.io.SslParameters + 112, // 107: enterprise.gloo.solo.io.PassThroughHttpTLSConfig.secret_ref:type_name -> core.solo.io.ResourceRef + 53, // 108: enterprise.gloo.solo.io.PassThroughHttpTLSConfig.ssl_params:type_name -> enterprise.gloo.solo.io.SslParameters + 4, // 109: enterprise.gloo.solo.io.SslParameters.minimum_protocol_version:type_name -> enterprise.gloo.solo.io.SslParameters.ProtocolVersion + 4, // 110: enterprise.gloo.solo.io.SslParameters.maximum_protocol_version:type_name -> enterprise.gloo.solo.io.SslParameters.ProtocolVersion + 20, // 111: enterprise.gloo.solo.io.PortalAuth.redis_options:type_name -> enterprise.gloo.solo.io.RedisOptions + 113, // 112: enterprise.gloo.solo.io.PortalAuth.cache_duration:type_name -> google.protobuf.Duration + 113, // 113: enterprise.gloo.solo.io.PortalAuth.request_timeout:type_name -> google.protobuf.Duration + 5, // 114: enterprise.gloo.solo.io.AuthConfigStatus.state:type_name -> enterprise.gloo.solo.io.AuthConfigStatus.State + 109, // 115: enterprise.gloo.solo.io.AuthConfigStatus.subresource_statuses:type_name -> enterprise.gloo.solo.io.AuthConfigStatus.SubresourceStatusesEntry + 114, // 116: enterprise.gloo.solo.io.AuthConfigStatus.details:type_name -> google.protobuf.Struct + 110, // 117: enterprise.gloo.solo.io.AuthConfigNamespacedStatuses.statuses:type_name -> enterprise.gloo.solo.io.AuthConfigNamespacedStatuses.StatusesEntry + 111, // 118: enterprise.gloo.solo.io.AuthConfigSpec.Config.name:type_name -> google.protobuf.StringValue + 14, // 119: enterprise.gloo.solo.io.AuthConfigSpec.Config.basic_auth:type_name -> enterprise.gloo.solo.io.BasicAuth + 18, // 120: enterprise.gloo.solo.io.AuthConfigSpec.Config.oauth:type_name -> enterprise.gloo.solo.io.OAuth + 19, // 121: enterprise.gloo.solo.io.AuthConfigSpec.Config.oauth2:type_name -> enterprise.gloo.solo.io.OAuth2 + 35, // 122: enterprise.gloo.solo.io.AuthConfigSpec.Config.api_key_auth:type_name -> enterprise.gloo.solo.io.ApiKeyAuth + 13, // 123: enterprise.gloo.solo.io.AuthConfigSpec.Config.plugin_auth:type_name -> enterprise.gloo.solo.io.AuthPlugin + 41, // 124: enterprise.gloo.solo.io.AuthConfigSpec.Config.opa_auth:type_name -> enterprise.gloo.solo.io.OpaAuth + 44, // 125: enterprise.gloo.solo.io.AuthConfigSpec.Config.ldap:type_name -> enterprise.gloo.solo.io.Ldap + 116, // 126: enterprise.gloo.solo.io.AuthConfigSpec.Config.jwt:type_name -> google.protobuf.Empty + 46, // 127: enterprise.gloo.solo.io.AuthConfigSpec.Config.pass_through_auth:type_name -> enterprise.gloo.solo.io.PassThroughAuth + 15, // 128: enterprise.gloo.solo.io.AuthConfigSpec.Config.hmac_auth:type_name -> enterprise.gloo.solo.io.HmacAuth + 43, // 129: enterprise.gloo.solo.io.AuthConfigSpec.Config.opa_server_auth:type_name -> enterprise.gloo.solo.io.OpaServerAuth + 54, // 130: enterprise.gloo.solo.io.AuthConfigSpec.Config.portal_auth:type_name -> enterprise.gloo.solo.io.PortalAuth + 60, // 131: enterprise.gloo.solo.io.HttpService.Request.headers_to_add:type_name -> enterprise.gloo.solo.io.HttpService.Request.HeadersToAddEntry + 67, // 132: enterprise.gloo.solo.io.BasicAuth.Apr.users:type_name -> enterprise.gloo.solo.io.BasicAuth.Apr.UsersEntry + 69, // 133: enterprise.gloo.solo.io.BasicAuth.EncryptionType.apr:type_name -> enterprise.gloo.solo.io.BasicAuth.EncryptionType.Apr + 68, // 134: enterprise.gloo.solo.io.BasicAuth.EncryptionType.sha1:type_name -> enterprise.gloo.solo.io.BasicAuth.EncryptionType.Sha1 + 70, // 135: enterprise.gloo.solo.io.BasicAuth.UserList.users:type_name -> enterprise.gloo.solo.io.BasicAuth.UserList.UsersEntry + 66, // 136: enterprise.gloo.solo.io.BasicAuth.Apr.UsersEntry.value:type_name -> enterprise.gloo.solo.io.BasicAuth.Apr.SaltedHashedPassword + 64, // 137: enterprise.gloo.solo.io.BasicAuth.UserList.UsersEntry.value:type_name -> enterprise.gloo.solo.io.BasicAuth.User + 115, // 138: enterprise.gloo.solo.io.UserSession.InternalSession.allow_refreshing:type_name -> google.protobuf.BoolValue + 20, // 139: enterprise.gloo.solo.io.UserSession.RedisSession.options:type_name -> enterprise.gloo.solo.io.RedisOptions + 115, // 140: enterprise.gloo.solo.io.UserSession.RedisSession.allow_refreshing:type_name -> google.protobuf.BoolValue + 113, // 141: enterprise.gloo.solo.io.UserSession.RedisSession.pre_expiry_buffer:type_name -> google.protobuf.Duration + 117, // 142: enterprise.gloo.solo.io.UserSession.CookieOptions.max_age:type_name -> google.protobuf.UInt32Value + 115, // 143: enterprise.gloo.solo.io.UserSession.CookieOptions.http_only:type_name -> google.protobuf.BoolValue + 111, // 144: enterprise.gloo.solo.io.UserSession.CookieOptions.path:type_name -> google.protobuf.StringValue + 2, // 145: enterprise.gloo.solo.io.UserSession.CookieOptions.same_site:type_name -> enterprise.gloo.solo.io.UserSession.CookieOptions.SameSite + 112, // 146: enterprise.gloo.solo.io.UserSession.CipherConfig.key_ref:type_name -> core.solo.io.ResourceRef + 27, // 147: enterprise.gloo.solo.io.OidcAuthorizationCode.AccessToken.claims_to_headers:type_name -> enterprise.gloo.solo.io.ClaimToHeader + 27, // 148: enterprise.gloo.solo.io.OidcAuthorizationCode.IdentityToken.claims_to_headers:type_name -> enterprise.gloo.solo.io.ClaimToHeader + 84, // 149: enterprise.gloo.solo.io.OidcAuthorizationCode.ClientAuthentication.client_secret:type_name -> enterprise.gloo.solo.io.OidcAuthorizationCode.ClientAuthentication.ClientSecret + 85, // 150: enterprise.gloo.solo.io.OidcAuthorizationCode.ClientAuthentication.private_key_jwt:type_name -> enterprise.gloo.solo.io.OidcAuthorizationCode.ClientAuthentication.PrivateKeyJwt + 112, // 151: enterprise.gloo.solo.io.OidcAuthorizationCode.ClientAuthentication.ClientSecret.client_secret_ref:type_name -> core.solo.io.ResourceRef + 115, // 152: enterprise.gloo.solo.io.OidcAuthorizationCode.ClientAuthentication.ClientSecret.disable_client_secret:type_name -> google.protobuf.BoolValue + 112, // 153: enterprise.gloo.solo.io.OidcAuthorizationCode.ClientAuthentication.PrivateKeyJwt.signing_key_ref:type_name -> core.solo.io.ResourceRef + 113, // 154: enterprise.gloo.solo.io.OidcAuthorizationCode.ClientAuthentication.PrivateKeyJwt.valid_for:type_name -> google.protobuf.Duration + 113, // 155: enterprise.gloo.solo.io.JwtValidation.RemoteJwks.refresh_interval:type_name -> google.protobuf.Duration + 96, // 156: enterprise.gloo.solo.io.ApiKeyAuth.HeadersFromMetadataEntry.value:type_name -> enterprise.gloo.solo.io.ApiKeyAuth.SecretKey + 97, // 157: enterprise.gloo.solo.io.ApiKeyAuth.HeadersFromMetadataEntryEntry.value:type_name -> enterprise.gloo.solo.io.ApiKeyAuth.MetadataEntry + 117, // 158: enterprise.gloo.solo.io.Ldap.ConnectionPool.maxSize:type_name -> google.protobuf.UInt32Value + 117, // 159: enterprise.gloo.solo.io.Ldap.ConnectionPool.initialSize:type_name -> google.protobuf.UInt32Value + 108, // 160: enterprise.gloo.solo.io.PassThroughHttp.Request.headers_to_add:type_name -> enterprise.gloo.solo.io.PassThroughHttp.Request.HeadersToAddEntry + 55, // 161: enterprise.gloo.solo.io.AuthConfigStatus.SubresourceStatusesEntry.value:type_name -> enterprise.gloo.solo.io.AuthConfigStatus + 55, // 162: enterprise.gloo.solo.io.AuthConfigNamespacedStatuses.StatusesEntry.value:type_name -> enterprise.gloo.solo.io.AuthConfigStatus + 163, // [163:163] is the sub-list for method output_type + 163, // [163:163] is the sub-list for method input_type + 163, // [163:163] is the sub-list for extension type_name + 163, // [163:163] is the sub-list for extension extendee + 0, // [0:163] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_init() } @@ -6148,684 +9362,68 @@ func file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_p if File_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AuthConfigSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtAuthExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Settings); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HttpService); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BufferSettings); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CustomAuth); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AuthPlugin); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BasicAuth); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OAuth); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OAuth2); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RedisOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserSession); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HeaderConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DiscoveryOverride); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JwksOnDemandCacheRefreshPolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OidcAuthorizationCode); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccessTokenValidation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OauthSecret); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApiKeyAuth); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApiKeySecret); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OpaAuth); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Ldap); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PassThroughAuth); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PassThroughGrpc); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtAuthConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AuthConfigStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AuthConfigSpec_Config); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HttpService_Request); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HttpService_Response); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BasicAuth_Apr); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BasicAuth_Apr_SaltedHashedPassword); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserSession_InternalSession); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserSession_RedisSession); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserSession_CookieOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccessTokenValidation_JwtValidation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccessTokenValidation_IntrospectionValidation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccessTokenValidation_ScopeList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccessTokenValidation_JwtValidation_RemoteJwks); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccessTokenValidation_JwtValidation_LocalJwks); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApiKeyAuth_SecretKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Ldap_ConnectionPool); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtAuthConfig_OAuthConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtAuthConfig_OidcAuthorizationCodeConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtAuthConfig_AccessTokenValidationConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtAuthConfig_OAuth2Config); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtAuthConfig_ApiKeyAuthConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtAuthConfig_OpaAuthConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtAuthConfig_Config); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtAuthConfig_AccessTokenValidationConfig_ScopeList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[1].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[1].OneofWrappers = []any{ (*ExtAuthExtension_Disable)(nil), (*ExtAuthExtension_ConfigRef)(nil), (*ExtAuthExtension_CustomAuth)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[9].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[2].OneofWrappers = []any{ + (*Settings_HttpService)(nil), + (*Settings_GrpcService)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[8].OneofWrappers = []any{ + (*BasicAuth_UserList_)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[9].OneofWrappers = []any{ + (*HmacAuth_SecretRefs)(nil), + (*HmacAuth_ParametersInHeaders)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[13].OneofWrappers = []any{ (*OAuth2_OidcAuthorizationCode)(nil), (*OAuth2_AccessTokenValidation)(nil), + (*OAuth2_Oauth2)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[11].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[15].OneofWrappers = []any{ (*UserSession_Cookie)(nil), (*UserSession_Redis)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[14].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[18].OneofWrappers = []any{ (*JwksOnDemandCacheRefreshPolicy_Never)(nil), (*JwksOnDemandCacheRefreshPolicy_Always)(nil), (*JwksOnDemandCacheRefreshPolicy_MaxIdpReqPerPollingInterval)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[16].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[23].OneofWrappers = []any{ + (*OidcAuthorizationCode_Default_)(nil), + (*OidcAuthorizationCode_Azure)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[25].OneofWrappers = []any{ + (*JwtValidation_RemoteJwks_)(nil), + (*JwtValidation_LocalJwks_)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[27].OneofWrappers = []any{ (*AccessTokenValidation_IntrospectionUrl)(nil), (*AccessTokenValidation_Jwt)(nil), (*AccessTokenValidation_Introspection)(nil), (*AccessTokenValidation_RequiredScopes)(nil), + (*AccessTokenValidation_Default_)(nil), + (*AccessTokenValidation_Azure)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[29].OneofWrappers = []any{ + (*ApiKeyAuth_K8SSecretApikeyStorage)(nil), + (*ApiKeyAuth_AerospikeApikeyStorage)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[22].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[31].OneofWrappers = []any{ + (*AerospikeApiKeyStorage_CommitAll)(nil), + (*AerospikeApiKeyStorage_CommitMaster)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[40].OneofWrappers = []any{ (*PassThroughAuth_Grpc)(nil), + (*PassThroughAuth_Http)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[42].OneofWrappers = []any{ + (*RetryPolicy_RetryBackOff)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[26].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[51].OneofWrappers = []any{ (*AuthConfigSpec_Config_BasicAuth)(nil), (*AuthConfigSpec_Config_Oauth)(nil), (*AuthConfigSpec_Config_Oauth2)(nil), @@ -6835,45 +9433,46 @@ func file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_p (*AuthConfigSpec_Config_Ldap)(nil), (*AuthConfigSpec_Config_Jwt)(nil), (*AuthConfigSpec_Config_PassThroughAuth)(nil), + (*AuthConfigSpec_Config_HmacAuth)(nil), + (*AuthConfigSpec_Config_OpaServerAuth)(nil), + (*AuthConfigSpec_Config_PortalAuth)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[57].OneofWrappers = []any{ + (*BasicAuth_EncryptionType_Apr_)(nil), + (*BasicAuth_EncryptionType_Sha1_)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[69].OneofWrappers = []any{ + (*UserSession_CipherConfig_KeyRef)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[75].OneofWrappers = []any{ + (*OidcAuthorizationCode_ClientAuthentication_ClientSecret_)(nil), + (*OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt_)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[93].OneofWrappers = []any{ + (*AerospikeApiKeyStorageReadModeSc_ReadModeScSession)(nil), + (*AerospikeApiKeyStorageReadModeSc_ReadModeScLinearize)(nil), + (*AerospikeApiKeyStorageReadModeSc_ReadModeScReplica)(nil), + (*AerospikeApiKeyStorageReadModeSc_ReadModeScAllowUnavailable)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[40].OneofWrappers = []interface{}{ - (*AccessTokenValidation_JwtValidation_RemoteJwks_)(nil), - (*AccessTokenValidation_JwtValidation_LocalJwks_)(nil), - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[52].OneofWrappers = []interface{}{ - (*ExtAuthConfig_AccessTokenValidationConfig_IntrospectionUrl)(nil), - (*ExtAuthConfig_AccessTokenValidationConfig_Jwt)(nil), - (*ExtAuthConfig_AccessTokenValidationConfig_Introspection)(nil), - (*ExtAuthConfig_AccessTokenValidationConfig_RequiredScopes)(nil), - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[53].OneofWrappers = []interface{}{ - (*ExtAuthConfig_OAuth2Config_OidcAuthorizationCode)(nil), - (*ExtAuthConfig_OAuth2Config_AccessTokenValidationConfig)(nil), - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[56].OneofWrappers = []interface{}{ - (*ExtAuthConfig_Config_Oauth)(nil), - (*ExtAuthConfig_Config_Oauth2)(nil), - (*ExtAuthConfig_Config_BasicAuth)(nil), - (*ExtAuthConfig_Config_ApiKeyAuth)(nil), - (*ExtAuthConfig_Config_PluginAuth)(nil), - (*ExtAuthConfig_Config_OpaAuth)(nil), - (*ExtAuthConfig_Config_Ldap)(nil), - (*ExtAuthConfig_Config_Jwt)(nil), - (*ExtAuthConfig_Config_PassThroughAuth)(nil), - } - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[60].OneofWrappers = []interface{}{ - (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks_)(nil), - (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks_)(nil), + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[94].OneofWrappers = []any{ + (*AerospikeApiKeyStorageReadModeAp_ReadModeApOne)(nil), + (*AerospikeApiKeyStorageReadModeAp_ReadModeApAll)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes[95].OneofWrappers = []any{ + (*AerospikeApiKeyStorageTlsCurveID_CurveP256)(nil), + (*AerospikeApiKeyStorageTlsCurveID_CurveP384)(nil), + (*AerospikeApiKeyStorageTlsCurveID_CurveP521)(nil), + (*AerospikeApiKeyStorageTlsCurveID_X_25519)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDesc, - NumEnums: 2, - NumMessages: 71, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDesc)), + NumEnums: 6, + NumMessages: 105, NumExtensions: 0, - NumServices: 1, + NumServices: 0, }, GoTypes: file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_goTypes, DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_depIdxs, @@ -6881,224 +9480,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_p MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_depIdxs = nil } - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConnInterface - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion6 - -// ExtAuthDiscoveryServiceClient is the client API for ExtAuthDiscoveryService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type ExtAuthDiscoveryServiceClient interface { - StreamExtAuthConfig(ctx context.Context, opts ...grpc.CallOption) (ExtAuthDiscoveryService_StreamExtAuthConfigClient, error) - DeltaExtAuthConfig(ctx context.Context, opts ...grpc.CallOption) (ExtAuthDiscoveryService_DeltaExtAuthConfigClient, error) - FetchExtAuthConfig(ctx context.Context, in *v2.DiscoveryRequest, opts ...grpc.CallOption) (*v2.DiscoveryResponse, error) -} - -type extAuthDiscoveryServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewExtAuthDiscoveryServiceClient(cc grpc.ClientConnInterface) ExtAuthDiscoveryServiceClient { - return &extAuthDiscoveryServiceClient{cc} -} - -func (c *extAuthDiscoveryServiceClient) StreamExtAuthConfig(ctx context.Context, opts ...grpc.CallOption) (ExtAuthDiscoveryService_StreamExtAuthConfigClient, error) { - stream, err := c.cc.NewStream(ctx, &_ExtAuthDiscoveryService_serviceDesc.Streams[0], "/enterprise.gloo.solo.io.ExtAuthDiscoveryService/StreamExtAuthConfig", opts...) - if err != nil { - return nil, err - } - x := &extAuthDiscoveryServiceStreamExtAuthConfigClient{stream} - return x, nil -} - -type ExtAuthDiscoveryService_StreamExtAuthConfigClient interface { - Send(*v2.DiscoveryRequest) error - Recv() (*v2.DiscoveryResponse, error) - grpc.ClientStream -} - -type extAuthDiscoveryServiceStreamExtAuthConfigClient struct { - grpc.ClientStream -} - -func (x *extAuthDiscoveryServiceStreamExtAuthConfigClient) Send(m *v2.DiscoveryRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *extAuthDiscoveryServiceStreamExtAuthConfigClient) Recv() (*v2.DiscoveryResponse, error) { - m := new(v2.DiscoveryResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *extAuthDiscoveryServiceClient) DeltaExtAuthConfig(ctx context.Context, opts ...grpc.CallOption) (ExtAuthDiscoveryService_DeltaExtAuthConfigClient, error) { - stream, err := c.cc.NewStream(ctx, &_ExtAuthDiscoveryService_serviceDesc.Streams[1], "/enterprise.gloo.solo.io.ExtAuthDiscoveryService/DeltaExtAuthConfig", opts...) - if err != nil { - return nil, err - } - x := &extAuthDiscoveryServiceDeltaExtAuthConfigClient{stream} - return x, nil -} - -type ExtAuthDiscoveryService_DeltaExtAuthConfigClient interface { - Send(*v2.DeltaDiscoveryRequest) error - Recv() (*v2.DeltaDiscoveryResponse, error) - grpc.ClientStream -} - -type extAuthDiscoveryServiceDeltaExtAuthConfigClient struct { - grpc.ClientStream -} - -func (x *extAuthDiscoveryServiceDeltaExtAuthConfigClient) Send(m *v2.DeltaDiscoveryRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *extAuthDiscoveryServiceDeltaExtAuthConfigClient) Recv() (*v2.DeltaDiscoveryResponse, error) { - m := new(v2.DeltaDiscoveryResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *extAuthDiscoveryServiceClient) FetchExtAuthConfig(ctx context.Context, in *v2.DiscoveryRequest, opts ...grpc.CallOption) (*v2.DiscoveryResponse, error) { - out := new(v2.DiscoveryResponse) - err := c.cc.Invoke(ctx, "/enterprise.gloo.solo.io.ExtAuthDiscoveryService/FetchExtAuthConfig", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// ExtAuthDiscoveryServiceServer is the server API for ExtAuthDiscoveryService service. -type ExtAuthDiscoveryServiceServer interface { - StreamExtAuthConfig(ExtAuthDiscoveryService_StreamExtAuthConfigServer) error - DeltaExtAuthConfig(ExtAuthDiscoveryService_DeltaExtAuthConfigServer) error - FetchExtAuthConfig(context.Context, *v2.DiscoveryRequest) (*v2.DiscoveryResponse, error) -} - -// UnimplementedExtAuthDiscoveryServiceServer can be embedded to have forward compatible implementations. -type UnimplementedExtAuthDiscoveryServiceServer struct { -} - -func (*UnimplementedExtAuthDiscoveryServiceServer) StreamExtAuthConfig(ExtAuthDiscoveryService_StreamExtAuthConfigServer) error { - return status.Errorf(codes.Unimplemented, "method StreamExtAuthConfig not implemented") -} -func (*UnimplementedExtAuthDiscoveryServiceServer) DeltaExtAuthConfig(ExtAuthDiscoveryService_DeltaExtAuthConfigServer) error { - return status.Errorf(codes.Unimplemented, "method DeltaExtAuthConfig not implemented") -} -func (*UnimplementedExtAuthDiscoveryServiceServer) FetchExtAuthConfig(context.Context, *v2.DiscoveryRequest) (*v2.DiscoveryResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method FetchExtAuthConfig not implemented") -} - -func RegisterExtAuthDiscoveryServiceServer(s *grpc.Server, srv ExtAuthDiscoveryServiceServer) { - s.RegisterService(&_ExtAuthDiscoveryService_serviceDesc, srv) -} - -func _ExtAuthDiscoveryService_StreamExtAuthConfig_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(ExtAuthDiscoveryServiceServer).StreamExtAuthConfig(&extAuthDiscoveryServiceStreamExtAuthConfigServer{stream}) -} - -type ExtAuthDiscoveryService_StreamExtAuthConfigServer interface { - Send(*v2.DiscoveryResponse) error - Recv() (*v2.DiscoveryRequest, error) - grpc.ServerStream -} - -type extAuthDiscoveryServiceStreamExtAuthConfigServer struct { - grpc.ServerStream -} - -func (x *extAuthDiscoveryServiceStreamExtAuthConfigServer) Send(m *v2.DiscoveryResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *extAuthDiscoveryServiceStreamExtAuthConfigServer) Recv() (*v2.DiscoveryRequest, error) { - m := new(v2.DiscoveryRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _ExtAuthDiscoveryService_DeltaExtAuthConfig_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(ExtAuthDiscoveryServiceServer).DeltaExtAuthConfig(&extAuthDiscoveryServiceDeltaExtAuthConfigServer{stream}) -} - -type ExtAuthDiscoveryService_DeltaExtAuthConfigServer interface { - Send(*v2.DeltaDiscoveryResponse) error - Recv() (*v2.DeltaDiscoveryRequest, error) - grpc.ServerStream -} - -type extAuthDiscoveryServiceDeltaExtAuthConfigServer struct { - grpc.ServerStream -} - -func (x *extAuthDiscoveryServiceDeltaExtAuthConfigServer) Send(m *v2.DeltaDiscoveryResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *extAuthDiscoveryServiceDeltaExtAuthConfigServer) Recv() (*v2.DeltaDiscoveryRequest, error) { - m := new(v2.DeltaDiscoveryRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _ExtAuthDiscoveryService_FetchExtAuthConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(v2.DiscoveryRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ExtAuthDiscoveryServiceServer).FetchExtAuthConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/enterprise.gloo.solo.io.ExtAuthDiscoveryService/FetchExtAuthConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ExtAuthDiscoveryServiceServer).FetchExtAuthConfig(ctx, req.(*v2.DiscoveryRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ExtAuthDiscoveryService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "enterprise.gloo.solo.io.ExtAuthDiscoveryService", - HandlerType: (*ExtAuthDiscoveryServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "FetchExtAuthConfig", - Handler: _ExtAuthDiscoveryService_FetchExtAuthConfig_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "StreamExtAuthConfig", - Handler: _ExtAuthDiscoveryService_StreamExtAuthConfig_Handler, - ServerStreams: true, - ClientStreams: true, - }, - { - StreamName: "DeltaExtAuthConfig", - Handler: _ExtAuthDiscoveryService_DeltaExtAuthConfig_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto", -} diff --git a/pkg/api/enterprise.gloo.solo.io/v1/auth_config.pb.hash.go b/pkg/api/enterprise.gloo.solo.io/v1/auth_config.pb.hash.go index e5b820a98..45ec74986 100644 --- a/pkg/api/enterprise.gloo.solo.io/v1/auth_config.pb.hash.go +++ b/pkg/api/enterprise.gloo.solo.io/v1/auth_config.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *AuthConfigSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -41,14 +45,20 @@ func (m *AuthConfigSpec) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetConfigs() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -57,23 +67,38 @@ func (m *AuthConfigSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetBooleanExpr()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BooleanExpr")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetBooleanExpr(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetBooleanExpr(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("BooleanExpr")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } + err = binary.Write(hasher, binary.LittleEndian, m.GetFailOnRedirect()) + if err != nil { + return 0, err + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ExtAuthExtension) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -98,14 +123,20 @@ func (m *ExtAuthExtension) Hash(hasher hash.Hash64) (uint64, error) { case *ExtAuthExtension_ConfigRef: if h, ok := interface{}(m.GetConfigRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConfigRef")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConfigRef(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConfigRef(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ConfigRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -114,14 +145,20 @@ func (m *ExtAuthExtension) Hash(hasher hash.Hash64) (uint64, error) { case *ExtAuthExtension_CustomAuth: if h, ok := interface{}(m.GetCustomAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomAuth")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCustomAuth(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCustomAuth(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("CustomAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -133,6 +170,10 @@ func (m *ExtAuthExtension) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Settings) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -146,28 +187,20 @@ func (m *Settings) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetExtauthzServerRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetExtauthzServerRef(), nil); err != nil { + if _, err = hasher.Write([]byte("ExtauthzServerRef")); err != nil { return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } } - } - - if h, ok := interface{}(m.GetHttpService()).(safe_hasher.SafeHasher); ok { if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHttpService(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetExtauthzServerRef(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ExtauthzServerRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -178,14 +211,20 @@ func (m *Settings) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetRequestTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTimeout")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRequestTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRequestTimeout(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RequestTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -197,14 +236,20 @@ func (m *Settings) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetRequestBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestBody")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRequestBody(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRequestBody(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RequestBody")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -229,10 +274,86 @@ func (m *Settings) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + switch m.ServiceType.(type) { + + case *Settings_HttpService: + + if h, ok := interface{}(m.GetHttpService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpService")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpService(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Settings_GrpcService: + + if h, ok := interface{}(m.GetGrpcService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcService(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *GrpcService) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.GrpcService")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetAuthority())); err != nil { + return 0, err + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HttpService) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -250,28 +371,40 @@ func (m *HttpService) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetRequest()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Request")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRequest(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRequest(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Request")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetResponse()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Response")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetResponse(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetResponse(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Response")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -281,6 +414,10 @@ func (m *HttpService) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *BufferSettings) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -312,6 +449,10 @@ func (m *BufferSettings) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *CustomAuth) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -355,6 +496,10 @@ func (m *CustomAuth) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *AuthPlugin) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -380,14 +525,20 @@ func (m *AuthPlugin) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -397,6 +548,10 @@ func (m *AuthPlugin) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *BasicAuth) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -414,23 +569,215 @@ func (m *BasicAuth) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetApr()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Apr")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetApr(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Apr")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEncryption()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Encryption")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetApr(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetEncryption(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Encryption")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.UserSource.(type) { + + case *BasicAuth_UserList_: + + if h, ok := interface{}(m.GetUserList()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UserList")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUserList(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UserList")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HmacAuth) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.HmacAuth")); err != nil { + return 0, err + } + + switch m.SecretStorage.(type) { + + case *HmacAuth_SecretRefs: + + if h, ok := interface{}(m.GetSecretRefs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretRefs")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSecretRefs(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SecretRefs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.ImplementationType.(type) { + + case *HmacAuth_ParametersInHeaders: + + if h, ok := interface{}(m.GetParametersInHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ParametersInHeaders")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetParametersInHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ParametersInHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SecretRefList) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.SecretRefList")); err != nil { + return 0, err + } + + for _, v := range m.GetSecretRefs() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } } } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HmacParametersInHeaders) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.HmacParametersInHeaders")); err != nil { + return 0, err } return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *OAuth) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -448,14 +795,20 @@ func (m *OAuth) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetClientSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClientSecretRef")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetClientSecretRef(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetClientSecretRef(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ClientSecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -508,6 +861,10 @@ func (m *OAuth) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *OAuth2) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -525,14 +882,20 @@ func (m *OAuth2) Hash(hasher hash.Hash64) (uint64, error) { case *OAuth2_OidcAuthorizationCode: if h, ok := interface{}(m.GetOidcAuthorizationCode()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OidcAuthorizationCode")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOidcAuthorizationCode(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOidcAuthorizationCode(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("OidcAuthorizationCode")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -541,25 +904,57 @@ func (m *OAuth2) Hash(hasher hash.Hash64) (uint64, error) { case *OAuth2_AccessTokenValidation: if h, ok := interface{}(m.GetAccessTokenValidation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AccessTokenValidation")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAccessTokenValidation(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAccessTokenValidation(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AccessTokenValidation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - } - - return hasher.Sum64(), nil -} + case *OAuth2_Oauth2: + + if h, ok := interface{}(m.GetOauth2()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Oauth2")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOauth2(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Oauth2")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RedisOptions) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -586,10 +981,23 @@ func (m *RedisOptions) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + if _, err = hasher.Write([]byte(m.GetTlsCertMountPath())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetSocketType()) + if err != nil { + return 0, err + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *UserSession) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -608,14 +1016,40 @@ func (m *UserSession) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetCookieOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CookieOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCookieOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CookieOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCipherConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CipherConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCookieOptions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCipherConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("CipherConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -626,14 +1060,20 @@ func (m *UserSession) Hash(hasher hash.Hash64) (uint64, error) { case *UserSession_Cookie: if h, ok := interface{}(m.GetCookie()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cookie")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCookie(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCookie(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Cookie")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -642,14 +1082,20 @@ func (m *UserSession) Hash(hasher hash.Hash64) (uint64, error) { case *UserSession_Redis: if h, ok := interface{}(m.GetRedis()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Redis")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRedis(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRedis(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Redis")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -661,6 +1107,10 @@ func (m *UserSession) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HeaderConfiguration) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -681,10 +1131,34 @@ func (m *HeaderConfiguration) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + if h, ok := interface{}(m.GetUseBearerSchemaForAuthorization()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UseBearerSchemaForAuthorization")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUseBearerSchemaForAuthorization(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UseBearerSchemaForAuthorization")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *DiscoveryOverride) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -757,10 +1231,22 @@ func (m *DiscoveryOverride) Hash(hasher hash.Hash64) (uint64, error) { } + if _, err = hasher.Write([]byte(m.GetRevocationEndpoint())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetEndSessionEndpoint())); err != nil { + return 0, err + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *JwksOnDemandCacheRefreshPolicy) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -778,14 +1264,20 @@ func (m *JwksOnDemandCacheRefreshPolicy) Hash(hasher hash.Hash64) (uint64, error case *JwksOnDemandCacheRefreshPolicy_Never: if h, ok := interface{}(m.GetNever()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Never")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetNever(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetNever(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Never")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -794,14 +1286,20 @@ func (m *JwksOnDemandCacheRefreshPolicy) Hash(hasher hash.Hash64) (uint64, error case *JwksOnDemandCacheRefreshPolicy_Always: if h, ok := interface{}(m.GetAlways()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Always")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAlways(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAlways(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Always")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -820,6 +1318,160 @@ func (m *JwksOnDemandCacheRefreshPolicy) Hash(hasher hash.Hash64) (uint64, error } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AutoMapFromMetadata) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AutoMapFromMetadata")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetNamespace())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *EndSessionProperties) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.EndSessionProperties")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetMethodType()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ClaimToHeader) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ClaimToHeader")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetClaim())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetHeader())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetAppend()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Azure) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.Azure")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetClientId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetTenantId())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetClientSecret()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClientSecret")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetClientSecret(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ClientSecret")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetClaimsCachingOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClaimsCachingOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetClaimsCachingOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ClaimsCachingOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *OidcAuthorizationCode) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -837,14 +1489,20 @@ func (m *OidcAuthorizationCode) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetClientSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClientSecretRef")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetClientSecretRef(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetClientSecretRef(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ClientSecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -925,164 +1583,318 @@ func (m *OidcAuthorizationCode) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetSession()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Session")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSession(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSession(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Session")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHeaders(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHeaders(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetDiscoveryOverride()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DiscoveryOverride")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDiscoveryOverride(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDiscoveryOverride(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DiscoveryOverride")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetDiscoveryPollInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DiscoveryPollInterval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDiscoveryPollInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDiscoveryPollInterval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DiscoveryPollInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetJwksCacheRefreshPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("JwksCacheRefreshPolicy")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetJwksCacheRefreshPolicy(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetJwksCacheRefreshPolicy(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("JwksCacheRefreshPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - return hasher.Sum64(), nil -} - -// Hash function -func (m *AccessTokenValidation) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AccessTokenValidation")); err != nil { + if _, err = hasher.Write([]byte(m.GetSessionIdHeaderName())); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetUserinfoUrl())); err != nil { + err = binary.Write(hasher, binary.LittleEndian, m.GetParseCallbackPathAsRegex()) + if err != nil { return 0, err } - if h, ok := interface{}(m.GetCacheTimeout()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetAutoMapFromMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AutoMapFromMetadata")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCacheTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAutoMapFromMetadata(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AutoMapFromMetadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - switch m.ValidationType.(type) { - - case *AccessTokenValidation_IntrospectionUrl: - - if _, err = hasher.Write([]byte(m.GetIntrospectionUrl())); err != nil { + if h, ok := interface{}(m.GetEndSessionProperties()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EndSessionProperties")); err != nil { return 0, err } - - case *AccessTokenValidation_Jwt: - - if h, ok := interface{}(m.GetJwt()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEndSessionProperties(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EndSessionProperties")); err != nil { return 0, err } - } else { - if val, err := hashstructure.Hash(m.GetJwt(), nil); err != nil { + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } } } + } - case *AccessTokenValidation_Introspection: + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetDynamicMetadataFromClaims() { + innerHash.Reset() - if h, ok := interface{}(m.GetIntrospection()).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDisableClientSecret()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisableClientSecret")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisableClientSecret(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisableClientSecret")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAccessToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AccessToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAccessToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AccessToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetIdentityToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IdentityToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIdentityToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IdentityToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetClientAuthentication()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClientAuthentication")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetClientAuthentication(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ClientAuthentication")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFrontChannelLogout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FrontChannelLogout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFrontChannelLogout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FrontChannelLogout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.Provider.(type) { + + case *OidcAuthorizationCode_Default_: + + if h, ok := interface{}(m.GetDefault()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Default")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetIntrospection(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDefault(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Default")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - } - - switch m.ScopeValidation.(type) { - - case *AccessTokenValidation_RequiredScopes: + case *OidcAuthorizationCode_Azure: - if h, ok := interface{}(m.GetRequiredScopes()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetAzure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRequiredScopes(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAzure(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1094,7 +1906,11 @@ func (m *AccessTokenValidation) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function -func (m *OauthSecret) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *PlainOAuth2) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -1102,19 +1918,1564 @@ func (m *OauthSecret) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OauthSecret")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.PlainOAuth2")); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetClientSecret())); err != nil { + if _, err = hasher.Write([]byte(m.GetClientId())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetClientSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClientSecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetClientSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ClientSecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetAuthEndpointQueryParams() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte(m.GetAppUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetCallbackPath())); err != nil { + return 0, err + } + + for _, v := range m.GetScopes() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetSession()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Session")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSession(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Session")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetLogoutPath())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetTokenEndpointQueryParams() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte(m.GetAfterLogoutUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetAuthEndpoint())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetTokenEndpoint())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetRevocationEndpoint())); err != nil { return 0, err } + if h, ok := interface{}(m.GetDisableClientSecret()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisableClientSecret")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisableClientSecret(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisableClientSecret")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *JwtValidation) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.JwtValidation")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetIssuer())); err != nil { + return 0, err + } + + switch m.JwksSourceSpecifier.(type) { + + case *JwtValidation_RemoteJwks_: + + if h, ok := interface{}(m.GetRemoteJwks()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RemoteJwks")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRemoteJwks(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RemoteJwks")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *JwtValidation_LocalJwks_: + + if h, ok := interface{}(m.GetLocalJwks()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LocalJwks")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLocalJwks(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LocalJwks")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *IntrospectionValidation) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.IntrospectionValidation")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetIntrospectionUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetClientId())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetClientSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClientSecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetClientSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ClientSecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetUserIdAttributeName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDisableClientSecret()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisableClientSecret")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisableClientSecret(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisableClientSecret")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AccessTokenValidation) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AccessTokenValidation")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetUserinfoUrl())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCacheTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CacheTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCacheTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CacheTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetDynamicMetadataFromClaims() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + for _, v := range m.GetClaimsToHeaders() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.ValidationType.(type) { + + case *AccessTokenValidation_IntrospectionUrl: + + if _, err = hasher.Write([]byte(m.GetIntrospectionUrl())); err != nil { + return 0, err + } + + case *AccessTokenValidation_Jwt: + + if h, ok := interface{}(m.GetJwt()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJwt(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessTokenValidation_Introspection: + + if h, ok := interface{}(m.GetIntrospection()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Introspection")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIntrospection(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Introspection")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.ScopeValidation.(type) { + + case *AccessTokenValidation_RequiredScopes: + + if h, ok := interface{}(m.GetRequiredScopes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequiredScopes")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequiredScopes(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequiredScopes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.Provider.(type) { + + case *AccessTokenValidation_Default_: + + if h, ok := interface{}(m.GetDefault()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Default")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDefault(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Default")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessTokenValidation_Azure: + + if h, ok := interface{}(m.GetAzure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAzure(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *OauthSecret) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OauthSecret")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetClientSecret())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ApiKeyAuth) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyAuth")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetLabelSelector() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + for _, v := range m.GetApiKeySecretRefs() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte(m.GetHeaderName())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetHeadersFromMetadata() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetHeadersFromMetadataEntry() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetSkipMetadataValidation()) + if err != nil { + return 0, err + } + + switch m.StorageBackend.(type) { + + case *ApiKeyAuth_K8SSecretApikeyStorage: + + if h, ok := interface{}(m.GetK8SSecretApikeyStorage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("K8SSecretApikeyStorage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetK8SSecretApikeyStorage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("K8SSecretApikeyStorage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ApiKeyAuth_AerospikeApikeyStorage: + + if h, ok := interface{}(m.GetAerospikeApikeyStorage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AerospikeApikeyStorage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAerospikeApikeyStorage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AerospikeApikeyStorage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *K8SSecretApiKeyStorage) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.K8SSecretApiKeyStorage")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetLabelSelector() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + for _, v := range m.GetApiKeySecretRefs() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AerospikeApiKeyStorage) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AerospikeApiKeyStorage")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetHostname())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetNamespace())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetSet())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetPort()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetBatchSize()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetReadModeSc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ReadModeSc")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetReadModeSc(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ReadModeSc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetReadModeAp()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ReadModeAp")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetReadModeAp(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ReadModeAp")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetNodeTlsName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetCertPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetKeyPath())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetAllowInsecure()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetRootCaPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetTlsVersion())); err != nil { + return 0, err + } + + for _, v := range m.GetTlsCurveGroups() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetLabelSelector() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + switch m.CommitLevel.(type) { + + case *AerospikeApiKeyStorage_CommitAll: + + err = binary.Write(hasher, binary.LittleEndian, m.GetCommitAll()) + if err != nil { + return 0, err + } + + case *AerospikeApiKeyStorage_CommitMaster: + + err = binary.Write(hasher, binary.LittleEndian, m.GetCommitMaster()) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ServerDefaultApiKeyStorage) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ServerDefaultApiKeyStorage")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ApiKey) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKey")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetApiKey())); err != nil { + return 0, err + } + + for _, v := range m.GetLabels() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetMetadata() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte(m.GetUuid())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ApiKeySecret) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeySecret")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetApiKey())); err != nil { + return 0, err + } + + for _, v := range m.GetLabels() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetMetadata() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *OpaAuth) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OpaAuth")); err != nil { + return 0, err + } + + for _, v := range m.GetModules() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte(m.GetQuery())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *OpaAuthOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OpaAuthOptions")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetFastInputConversion()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetReturnDecisionReason()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *OpaServerAuth) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OpaServerAuth")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetPackage())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetRuleName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetServerAddr())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Ldap) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.Ldap")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetAddress())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetUserDnTemplate())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetMembershipAttributeName())); err != nil { + return 0, err + } + + for _, v := range m.GetAllowedGroups() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetPool()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Pool")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPool(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Pool")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetSearchFilter())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetDisableGroupChecking()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetGroupLookupSettings()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GroupLookupSettings")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGroupLookupSettings(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GroupLookupSettings")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *LdapServiceAccount) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.LdapServiceAccount")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCredentialsSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CredentialsSecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCredentialsSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CredentialsSecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetCheckGroupsWithServiceAccount()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *PassThroughAuth) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.PassThroughAuth")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetFailureModeAllow()) + if err != nil { + return 0, err + } + + switch m.Protocol.(type) { + + case *PassThroughAuth_Grpc: + + if h, ok := interface{}(m.GetGrpc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Grpc")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpc(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Grpc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *PassThroughAuth_Http: + + if h, ok := interface{}(m.GetHttp()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Http")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttp(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Http")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *BackoffStrategy) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.BackoffStrategy")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetBaseInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBaseInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + return hasher.Sum64(), nil } // Hash function -func (m *ApiKeyAuth) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RetryPolicy) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -1122,84 +3483,52 @@ func (m *ApiKeyAuth) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyAuth")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.RetryPolicy")); err != nil { return 0, err } - { - var result uint64 - innerHash := fnv.New64() - for k, v := range m.GetLabelSelector() { - innerHash.Reset() - - if _, err = innerHash.Write([]byte(v)); err != nil { + if h, ok := interface{}(m.GetNumRetries()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("NumRetries")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetNumRetries(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("NumRetries")); err != nil { return 0, err } - - if _, err = innerHash.Write([]byte(k)); err != nil { + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } - - result = result ^ innerHash.Sum64() - } - err = binary.Write(hasher, binary.LittleEndian, result) - if err != nil { - return 0, err } - } - for _, v := range m.GetApiKeySecretRefs() { + switch m.Strategy.(type) { - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + case *RetryPolicy_RetryBackOff: + + if h, ok := interface{}(m.GetRetryBackOff()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryBackOff")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRetryBackOff(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - if _, err = hasher.Write([]byte(m.GetHeaderName())); err != nil { - return 0, err - } - - { - var result uint64 - innerHash := fnv.New64() - for k, v := range m.GetHeadersFromMetadata() { - innerHash.Reset() - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(innerHash); err != nil { + if _, err = hasher.Write([]byte("RetryBackOff")); err != nil { return 0, err } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err - } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { - return 0, err - } } } - - if _, err = innerHash.Write([]byte(k)); err != nil { - return 0, err - } - - result = result ^ innerHash.Sum64() - } - err = binary.Write(hasher, binary.LittleEndian, result) - if err != nil { - return 0, err } } @@ -1208,7 +3537,11 @@ func (m *ApiKeyAuth) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function -func (m *ApiKeySecret) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *PassThroughGrpc) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -1216,55 +3549,83 @@ func (m *ApiKeySecret) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeySecret")); err != nil { - return 0, err - } - - err = binary.Write(hasher, binary.LittleEndian, m.GetGenerateApiKey()) - if err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.PassThroughGrpc")); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetApiKey())); err != nil { + if _, err = hasher.Write([]byte(m.GetAddress())); err != nil { return 0, err } - for _, v := range m.GetLabels() { - - if _, err = hasher.Write([]byte(v)); err != nil { + if h, ok := interface{}(m.GetConnectionTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectionTimeout")); err != nil { return 0, err } - + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConnectionTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConnectionTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } - { - var result uint64 - innerHash := fnv.New64() - for k, v := range m.GetMetadata() { - innerHash.Reset() - - if _, err = innerHash.Write([]byte(v)); err != nil { + if h, ok := interface{}(m.GetTlsConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TlsConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTlsConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TlsConfig")); err != nil { return 0, err } - - if _, err = innerHash.Write([]byte(k)); err != nil { + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } + } + } - result = result ^ innerHash.Sum64() + if h, ok := interface{}(m.GetRetryPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err } - err = binary.Write(hasher, binary.LittleEndian, result) - if err != nil { + if _, err = h.Hash(hasher); err != nil { return 0, err } - + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetryPolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } return hasher.Sum64(), nil } // Hash function -func (m *OpaAuth) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *PassThroughHttp) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -1272,37 +3633,103 @@ func (m *OpaAuth) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OpaAuth")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.PassThroughHttp")); err != nil { return 0, err } - for _, v := range m.GetModules() { + if _, err = hasher.Write([]byte(m.GetUrl())); err != nil { + return 0, err + } - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { + if h, ok := interface{}(m.GetRequest()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Request")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequest(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Request")); err != nil { return 0, err } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetResponse()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Response")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponse(), nil); err != nil { + return 0, err } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if _, err = hasher.Write([]byte("Response")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } } } + } + if h, ok := interface{}(m.GetConnectionTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectionTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConnectionTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConnectionTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } - if _, err = hasher.Write([]byte(m.GetQuery())); err != nil { - return 0, err + if h, ok := interface{}(m.GetTlsConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TlsConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTlsConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TlsConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } return hasher.Sum64(), nil } // Hash function -func (m *Ldap) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *PassThroughGrpcTLSConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -1310,39 +3737,45 @@ func (m *Ldap) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.Ldap")); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetAddress())); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetUserDnTemplate())); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetMembershipAttributeName())); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.PassThroughGrpcTLSConfig")); err != nil { return 0, err } - for _, v := range m.GetAllowedGroups() { - - if _, err = hasher.Write([]byte(v)); err != nil { + if h, ok := interface{}(m.GetSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { return 0, err } - + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } - if h, ok := interface{}(m.GetPool()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetSslParams()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslParams")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPool(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSslParams(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SslParams")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1352,7 +3785,11 @@ func (m *Ldap) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function -func (m *PassThroughAuth) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *PassThroughHttpTLSConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -1360,49 +3797,59 @@ func (m *PassThroughAuth) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.PassThroughAuth")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.PassThroughHttpTLSConfig")); err != nil { return 0, err } - if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - switch m.Protocol.(type) { - - case *PassThroughAuth_Grpc: - - if h, ok := interface{}(m.GetGrpc()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } + if h, ok := interface{}(m.GetSslParams()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslParams")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslParams(), nil); err != nil { + return 0, err } else { - if val, err := hashstructure.Hash(m.GetGrpc(), nil); err != nil { + if _, err = hasher.Write([]byte("SslParams")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } } } - } return hasher.Sum64(), nil } // Hash function -func (m *PassThroughGrpc) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SslParameters) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -1410,33 +3857,29 @@ func (m *PassThroughGrpc) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.PassThroughGrpc")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.SslParameters")); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetAddress())); err != nil { + err = binary.Write(hasher, binary.LittleEndian, m.GetMinimumProtocolVersion()) + if err != nil { return 0, err } - if h, ok := interface{}(m.GetConnectionTimeout()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetConnectionTimeout(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } + err = binary.Write(hasher, binary.LittleEndian, m.GetMaximumProtocolVersion()) + if err != nil { + return 0, err } return hasher.Sum64(), nil } // Hash function -func (m *ExtAuthConfig) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *PortalAuth) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -1444,41 +3887,73 @@ func (m *ExtAuthConfig) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.PortalAuth")); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetAuthConfigRefName())); err != nil { + if _, err = hasher.Write([]byte(m.GetUrl())); err != nil { return 0, err } - for _, v := range m.GetConfigs() { + if _, err = hasher.Write([]byte(m.GetApiKeyHeader())); err != nil { + return 0, err + } - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { + if h, ok := interface{}(m.GetRedisOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RedisOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRedisOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RedisOptions")); err != nil { return 0, err } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } } } + } + if h, ok := interface{}(m.GetCacheDuration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CacheDuration")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCacheDuration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CacheDuration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } - if h, ok := interface{}(m.GetBooleanExpr()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetRequestTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTimeout")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetBooleanExpr(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRequestTimeout(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RequestTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1488,6 +3963,10 @@ func (m *ExtAuthConfig) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *AuthConfigStatus) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1520,14 +3999,20 @@ func (m *AuthConfigStatus) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1547,14 +4032,20 @@ func (m *AuthConfigStatus) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1564,6 +4055,69 @@ func (m *AuthConfigStatus) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AuthConfigNamespacedStatuses) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AuthConfigNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *AuthConfigSpec_Config) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1577,14 +4131,20 @@ func (m *AuthConfigSpec_Config) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetName()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetName(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetName(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1595,14 +4155,20 @@ func (m *AuthConfigSpec_Config) Hash(hasher hash.Hash64) (uint64, error) { case *AuthConfigSpec_Config_BasicAuth: if h, ok := interface{}(m.GetBasicAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BasicAuth")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetBasicAuth(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetBasicAuth(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("BasicAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1611,14 +4177,20 @@ func (m *AuthConfigSpec_Config) Hash(hasher hash.Hash64) (uint64, error) { case *AuthConfigSpec_Config_Oauth: if h, ok := interface{}(m.GetOauth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Oauth")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOauth(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOauth(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Oauth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1627,14 +4199,20 @@ func (m *AuthConfigSpec_Config) Hash(hasher hash.Hash64) (uint64, error) { case *AuthConfigSpec_Config_Oauth2: if h, ok := interface{}(m.GetOauth2()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Oauth2")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOauth2(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOauth2(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Oauth2")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1643,14 +4221,20 @@ func (m *AuthConfigSpec_Config) Hash(hasher hash.Hash64) (uint64, error) { case *AuthConfigSpec_Config_ApiKeyAuth: if h, ok := interface{}(m.GetApiKeyAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ApiKeyAuth")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetApiKeyAuth(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetApiKeyAuth(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ApiKeyAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1659,14 +4243,20 @@ func (m *AuthConfigSpec_Config) Hash(hasher hash.Hash64) (uint64, error) { case *AuthConfigSpec_Config_PluginAuth: if h, ok := interface{}(m.GetPluginAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PluginAuth")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPluginAuth(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPluginAuth(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PluginAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1675,14 +4265,20 @@ func (m *AuthConfigSpec_Config) Hash(hasher hash.Hash64) (uint64, error) { case *AuthConfigSpec_Config_OpaAuth: if h, ok := interface{}(m.GetOpaAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OpaAuth")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOpaAuth(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOpaAuth(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("OpaAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1691,14 +4287,20 @@ func (m *AuthConfigSpec_Config) Hash(hasher hash.Hash64) (uint64, error) { case *AuthConfigSpec_Config_Ldap: if h, ok := interface{}(m.GetLdap()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ldap")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetLdap(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetLdap(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Ldap")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1707,14 +4309,20 @@ func (m *AuthConfigSpec_Config) Hash(hasher hash.Hash64) (uint64, error) { case *AuthConfigSpec_Config_Jwt: if h, ok := interface{}(m.GetJwt()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetJwt(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetJwt(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1723,64 +4331,89 @@ func (m *AuthConfigSpec_Config) Hash(hasher hash.Hash64) (uint64, error) { case *AuthConfigSpec_Config_PassThroughAuth: if h, ok := interface{}(m.GetPassThroughAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PassThroughAuth")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPassThroughAuth(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPassThroughAuth(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PassThroughAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - } - - return hasher.Sum64(), nil -} + case *AuthConfigSpec_Config_HmacAuth: -// Hash function -func (m *HttpService_Request) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.HttpService_Request")); err != nil { - return 0, err - } + if h, ok := interface{}(m.GetHmacAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HmacAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHmacAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HmacAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } - for _, v := range m.GetAllowedHeaders() { + case *AuthConfigSpec_Config_OpaServerAuth: - if _, err = hasher.Write([]byte(v)); err != nil { - return 0, err + if h, ok := interface{}(m.GetOpaServerAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OpaServerAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOpaServerAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OpaServerAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } - } - - { - var result uint64 - innerHash := fnv.New64() - for k, v := range m.GetHeadersToAdd() { - innerHash.Reset() + case *AuthConfigSpec_Config_PortalAuth: - if _, err = innerHash.Write([]byte(v)); err != nil { + if h, ok := interface{}(m.GetPortalAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PortalAuth")); err != nil { return 0, err } - - if _, err = innerHash.Write([]byte(k)); err != nil { + if _, err = h.Hash(hasher); err != nil { return 0, err } - - result = result ^ innerHash.Sum64() - } - err = binary.Write(hasher, binary.LittleEndian, result) - if err != nil { - return 0, err + } else { + if fieldValue, err := hashstructure.Hash(m.GetPortalAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PortalAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } } @@ -1789,7 +4422,11 @@ func (m *HttpService_Request) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function -func (m *HttpService_Response) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HttpService_Request) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -1797,60 +4434,26 @@ func (m *HttpService_Response) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.HttpService_Response")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.HttpService_Request")); err != nil { return 0, err } - for _, v := range m.GetAllowedUpstreamHeaders() { - - if _, err = hasher.Write([]byte(v)); err != nil { - return 0, err - } - - } - - for _, v := range m.GetAllowedClientHeaders() { + for _, v := range m.GetAllowedHeaders() { if _, err = hasher.Write([]byte(v)); err != nil { - return 0, err - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *BasicAuth_Apr) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.BasicAuth_Apr")); err != nil { - return 0, err + return 0, err + } + } { var result uint64 innerHash := fnv.New64() - for k, v := range m.GetUsers() { + for k, v := range m.GetHeadersToAdd() { innerHash.Reset() - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(innerHash); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { - return 0, err - } - } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err } if _, err = innerHash.Write([]byte(k)); err != nil { @@ -1866,35 +4469,23 @@ func (m *BasicAuth_Apr) Hash(hasher hash.Hash64) (uint64, error) { } - return hasher.Sum64(), nil -} - -// Hash function -func (m *BasicAuth_Apr_SaltedHashedPassword) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.BasicAuth_Apr_SaltedHashedPassword")); err != nil { - return 0, err - } + for _, v := range m.GetAllowedHeadersRegex() { - if _, err = hasher.Write([]byte(m.GetSalt())); err != nil { - return 0, err - } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } - if _, err = hasher.Write([]byte(m.GetHashedPassword())); err != nil { - return 0, err } return hasher.Sum64(), nil } // Hash function -func (m *UserSession_InternalSession) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HttpService_Response) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -1902,67 +4493,43 @@ func (m *UserSession_InternalSession) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.UserSession_InternalSession")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.HttpService_Response")); err != nil { return 0, err } - return hasher.Sum64(), nil -} - -// Hash function -func (m *UserSession_RedisSession) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.UserSession_RedisSession")); err != nil { - return 0, err - } + for _, v := range m.GetAllowedUpstreamHeaders() { - if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + if _, err = hasher.Write([]byte(v)); err != nil { return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } } - } - if _, err = hasher.Write([]byte(m.GetKeyPrefix())); err != nil { - return 0, err } - if _, err = hasher.Write([]byte(m.GetCookieName())); err != nil { - return 0, err - } + for _, v := range m.GetAllowedClientHeaders() { - if h, ok := interface{}(m.GetAllowRefreshing()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { + if _, err = hasher.Write([]byte(v)); err != nil { return 0, err } - } else { - if val, err := hashstructure.Hash(m.GetAllowRefreshing(), nil); err != nil { + + } + + for _, v := range m.GetAllowedUpstreamHeadersToAppend() { + + if _, err = hasher.Write([]byte(v)); err != nil { return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } } + } return hasher.Sum64(), nil } // Hash function -func (m *UserSession_CookieOptions) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *BasicAuth_Apr) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -1970,52 +4537,58 @@ func (m *UserSession_CookieOptions) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.UserSession_CookieOptions")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.BasicAuth_Apr")); err != nil { return 0, err } - if h, ok := interface{}(m.GetMaxAge()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMaxAge(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetUsers() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } - } - } - err = binary.Write(hasher, binary.LittleEndian, m.GetNotSecure()) - if err != nil { - return 0, err - } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } - if h, ok := interface{}(m.GetPath()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err + result = result ^ innerHash.Sum64() } - } else { - if val, err := hashstructure.Hash(m.GetPath(), nil); err != nil { + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } } - } - if _, err = hasher.Write([]byte(m.GetDomain())); err != nil { - return 0, err } return hasher.Sum64(), nil } // Hash function -func (m *AccessTokenValidation_JwtValidation) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *BasicAuth_EncryptionType) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -2023,43 +4596,51 @@ func (m *AccessTokenValidation_JwtValidation) Hash(hasher hash.Hash64) (uint64, hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AccessTokenValidation_JwtValidation")); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetIssuer())); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.BasicAuth_EncryptionType")); err != nil { return 0, err } - switch m.JwksSourceSpecifier.(type) { + switch m.Algorithm.(type) { - case *AccessTokenValidation_JwtValidation_RemoteJwks_: + case *BasicAuth_EncryptionType_Apr_: - if h, ok := interface{}(m.GetRemoteJwks()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetApr()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Apr")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRemoteJwks(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetApr(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Apr")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - case *AccessTokenValidation_JwtValidation_LocalJwks_: + case *BasicAuth_EncryptionType_Sha1_: - if h, ok := interface{}(m.GetLocalJwks()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetSha1()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Sha1")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetLocalJwks(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSha1(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Sha1")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2071,7 +4652,11 @@ func (m *AccessTokenValidation_JwtValidation) Hash(hasher hash.Hash64) (uint64, } // Hash function -func (m *AccessTokenValidation_IntrospectionValidation) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *BasicAuth_User) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -2079,33 +4664,15 @@ func (m *AccessTokenValidation_IntrospectionValidation) Hash(hasher hash.Hash64) hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AccessTokenValidation_IntrospectionValidation")); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetIntrospectionUrl())); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.BasicAuth_User")); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetClientId())); err != nil { + if _, err = hasher.Write([]byte(m.GetSalt())); err != nil { return 0, err } - if h, ok := interface{}(m.GetClientSecretRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetClientSecretRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if _, err = hasher.Write([]byte(m.GetUserIdAttributeName())); err != nil { + if _, err = hasher.Write([]byte(m.GetHashedPassword())); err != nil { return 0, err } @@ -2113,7 +4680,11 @@ func (m *AccessTokenValidation_IntrospectionValidation) Hash(hasher hash.Hash64) } // Hash function -func (m *AccessTokenValidation_ScopeList) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *BasicAuth_UserList) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -2121,77 +4692,58 @@ func (m *AccessTokenValidation_ScopeList) Hash(hasher hash.Hash64) (uint64, erro hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AccessTokenValidation_ScopeList")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.BasicAuth_UserList")); err != nil { return 0, err } - for _, v := range m.GetScope() { - - if _, err = hasher.Write([]byte(v)); err != nil { - return 0, err - } - - } - - return hasher.Sum64(), nil -} + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetUsers() { + innerHash.Reset() -// Hash function -func (m *AccessTokenValidation_JwtValidation_RemoteJwks) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AccessTokenValidation_JwtValidation_RemoteJwks")); err != nil { - return 0, err - } + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } - if _, err = hasher.Write([]byte(m.GetUrl())); err != nil { - return 0, err - } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } - if h, ok := interface{}(m.GetRefreshInterval()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err + result = result ^ innerHash.Sum64() } - } else { - if val, err := hashstructure.Hash(m.GetRefreshInterval(), nil); err != nil { + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } } - } - - return hasher.Sum64(), nil -} -// Hash function -func (m *AccessTokenValidation_JwtValidation_LocalJwks) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AccessTokenValidation_JwtValidation_LocalJwks")); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetInlineString())); err != nil { - return 0, err } return hasher.Sum64(), nil } // Hash function -func (m *ApiKeyAuth_SecretKey) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *BasicAuth_Apr_SaltedHashedPassword) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -2199,16 +4751,15 @@ func (m *ApiKeyAuth_SecretKey) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyAuth_SecretKey")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.BasicAuth_Apr_SaltedHashedPassword")); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetName())); err != nil { + if _, err = hasher.Write([]byte(m.GetSalt())); err != nil { return 0, err } - err = binary.Write(hasher, binary.LittleEndian, m.GetRequired()) - if err != nil { + if _, err = hasher.Write([]byte(m.GetHashedPassword())); err != nil { return 0, err } @@ -2216,7 +4767,11 @@ func (m *ApiKeyAuth_SecretKey) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function -func (m *Ldap_ConnectionPool) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *BasicAuth_EncryptionType_Sha1) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -2224,43 +4779,19 @@ func (m *Ldap_ConnectionPool) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.Ldap_ConnectionPool")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.BasicAuth_EncryptionType_Sha1")); err != nil { return 0, err } - if h, ok := interface{}(m.GetMaxSize()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMaxSize(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetInitialSize()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetInitialSize(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - return hasher.Sum64(), nil } // Hash function -func (m *ExtAuthConfig_OAuthConfig) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *BasicAuth_EncryptionType_Apr) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -2268,66 +4799,67 @@ func (m *ExtAuthConfig_OAuthConfig) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OAuthConfig")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.BasicAuth_EncryptionType_Apr")); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetClientId())); err != nil { - return 0, err - } + return hasher.Sum64(), nil +} - if _, err = hasher.Write([]byte(m.GetClientSecret())); err != nil { - return 0, err +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UserSession_InternalSession) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil } - - if _, err = hasher.Write([]byte(m.GetIssuerUrl())); err != nil { + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.UserSession_InternalSession")); err != nil { return 0, err } - { - var result uint64 - innerHash := fnv.New64() - for k, v := range m.GetAuthEndpointQueryParams() { - innerHash.Reset() - - if _, err = innerHash.Write([]byte(v)); err != nil { + if h, ok := interface{}(m.GetAllowRefreshing()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowRefreshing")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAllowRefreshing(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AllowRefreshing")); err != nil { return 0, err } - - if _, err = innerHash.Write([]byte(k)); err != nil { + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } - - result = result ^ innerHash.Sum64() - } - err = binary.Write(hasher, binary.LittleEndian, result) - if err != nil { - return 0, err } - } - if _, err = hasher.Write([]byte(m.GetAppUrl())); err != nil { + if _, err = hasher.Write([]byte(m.GetKeyPrefix())); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetCallbackPath())); err != nil { + if _, err = hasher.Write([]byte(m.GetTargetDomain())); err != nil { return 0, err } - for _, v := range m.GetScopes() { - - if _, err = hasher.Write([]byte(v)); err != nil { - return 0, err - } - - } - return hasher.Sum64(), nil } // Hash function -func (m *ExtAuthConfig_OidcAuthorizationCodeConfig) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UserSession_RedisSession) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -2335,167 +4867,189 @@ func (m *ExtAuthConfig_OidcAuthorizationCodeConfig) Hash(hasher hash.Hash64) (ui hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OidcAuthorizationCodeConfig")); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetClientId())); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetClientSecret())); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetIssuerUrl())); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.UserSession_RedisSession")); err != nil { return 0, err } - { - var result uint64 - innerHash := fnv.New64() - for k, v := range m.GetAuthEndpointQueryParams() { - innerHash.Reset() - - if _, err = innerHash.Write([]byte(v)); err != nil { - return 0, err - } - - if _, err = innerHash.Write([]byte(k)); err != nil { - return 0, err - } - - result = result ^ innerHash.Sum64() + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err } - err = binary.Write(hasher, binary.LittleEndian, result) - if err != nil { + if _, err = h.Hash(hasher); err != nil { return 0, err } - - } - - { - var result uint64 - innerHash := fnv.New64() - for k, v := range m.GetTokenEndpointQueryParams() { - innerHash.Reset() - - if _, err = innerHash.Write([]byte(v)); err != nil { + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { return 0, err } - - if _, err = innerHash.Write([]byte(k)); err != nil { + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } - - result = result ^ innerHash.Sum64() - } - err = binary.Write(hasher, binary.LittleEndian, result) - if err != nil { - return 0, err } - - } - - if _, err = hasher.Write([]byte(m.GetAppUrl())); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetCallbackPath())); err != nil { - return 0, err } - if _, err = hasher.Write([]byte(m.GetLogoutPath())); err != nil { + if _, err = hasher.Write([]byte(m.GetKeyPrefix())); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetAfterLogoutUrl())); err != nil { + if _, err = hasher.Write([]byte(m.GetCookieName())); err != nil { return 0, err } - for _, v := range m.GetScopes() { - - if _, err = hasher.Write([]byte(v)); err != nil { + if h, ok := interface{}(m.GetAllowRefreshing()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowRefreshing")); err != nil { return 0, err } - - } - - if h, ok := interface{}(m.GetSession()).(safe_hasher.SafeHasher); ok { if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSession(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAllowRefreshing(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AllowRefreshing")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - if h, ok := interface{}(m.GetHeaders()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetPreExpiryBuffer()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PreExpiryBuffer")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHeaders(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPreExpiryBuffer(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PreExpiryBuffer")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - if h, ok := interface{}(m.GetDiscoveryOverride()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte(m.GetTargetDomain())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetHeaderName())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UserSession_CookieOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.UserSession_CookieOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxAge()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxAge")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDiscoveryOverride(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMaxAge(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MaxAge")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - if h, ok := interface{}(m.GetDiscoveryPollInterval()).(safe_hasher.SafeHasher); ok { + err = binary.Write(hasher, binary.LittleEndian, m.GetNotSecure()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHttpOnly()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpOnly")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDiscoveryPollInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHttpOnly(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HttpOnly")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - if h, ok := interface{}(m.GetJwksCacheRefreshPolicy()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetPath()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetJwksCacheRefreshPolicy(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPath(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } + err = binary.Write(hasher, binary.LittleEndian, m.GetSameSite()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetDomain())); err != nil { + return 0, err + } + return hasher.Sum64(), nil } // Hash function -func (m *ExtAuthConfig_AccessTokenValidationConfig) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UserSession_CipherConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -2503,63 +5057,73 @@ func (m *ExtAuthConfig_AccessTokenValidationConfig) Hash(hasher hash.Hash64) (ui hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_AccessTokenValidationConfig")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.UserSession_CipherConfig")); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetUserinfoUrl())); err != nil { - return 0, err - } + switch m.Key.(type) { - if h, ok := interface{}(m.GetCacheTimeout()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetCacheTimeout(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + case *UserSession_CipherConfig_KeyRef: + + if h, ok := interface{}(m.GetKeyRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("KeyRef")); err != nil { return 0, err } - } - } - - switch m.ValidationType.(type) { - - case *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionUrl: - - if _, err = hasher.Write([]byte(m.GetIntrospectionUrl())); err != nil { - return 0, err - } - - case *ExtAuthConfig_AccessTokenValidationConfig_Jwt: - - if h, ok := interface{}(m.GetJwt()).(safe_hasher.SafeHasher); ok { if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetJwt(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetKeyRef(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("KeyRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - case *ExtAuthConfig_AccessTokenValidationConfig_Introspection: + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *OidcAuthorizationCode_AccessToken) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OidcAuthorizationCode_AccessToken")); err != nil { + return 0, err + } + + for _, v := range m.GetClaimsToHeaders() { - if h, ok := interface{}(m.GetIntrospection()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetIntrospection(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2567,19 +5131,43 @@ func (m *ExtAuthConfig_AccessTokenValidationConfig) Hash(hasher hash.Hash64) (ui } - switch m.ScopeValidation.(type) { + return hasher.Sum64(), nil +} - case *ExtAuthConfig_AccessTokenValidationConfig_RequiredScopes: +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *OidcAuthorizationCode_IdentityToken) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OidcAuthorizationCode_IdentityToken")); err != nil { + return 0, err + } - if h, ok := interface{}(m.GetRequiredScopes()).(safe_hasher.SafeHasher); ok { + for _, v := range m.GetClaimsToHeaders() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRequiredScopes(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2591,7 +5179,11 @@ func (m *ExtAuthConfig_AccessTokenValidationConfig) Hash(hasher hash.Hash64) (ui } // Hash function -func (m *ExtAuthConfig_OAuth2Config) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *OidcAuthorizationCode_ClientAuthentication) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -2599,39 +5191,51 @@ func (m *ExtAuthConfig_OAuth2Config) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OAuth2Config")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OidcAuthorizationCode_ClientAuthentication")); err != nil { return 0, err } - switch m.OauthType.(type) { + switch m.ClientAuthenticationConfig.(type) { - case *ExtAuthConfig_OAuth2Config_OidcAuthorizationCode: + case *OidcAuthorizationCode_ClientAuthentication_ClientSecret_: - if h, ok := interface{}(m.GetOidcAuthorizationCode()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetClientSecret()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClientSecret")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOidcAuthorizationCode(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetClientSecret(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ClientSecret")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - case *ExtAuthConfig_OAuth2Config_AccessTokenValidationConfig: + case *OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt_: - if h, ok := interface{}(m.GetAccessTokenValidationConfig()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetPrivateKeyJwt()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PrivateKeyJwt")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAccessTokenValidationConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPrivateKeyJwt(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PrivateKeyJwt")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2643,7 +5247,11 @@ func (m *ExtAuthConfig_OAuth2Config) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function -func (m *ExtAuthConfig_ApiKeyAuthConfig) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *OidcAuthorizationCode_Default) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -2651,75 +5259,43 @@ func (m *ExtAuthConfig_ApiKeyAuthConfig) Hash(hasher hash.Hash64) (uint64, error hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_ApiKeyAuthConfig")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OidcAuthorizationCode_Default")); err != nil { return 0, err } - { - var result uint64 - innerHash := fnv.New64() - for k, v := range m.GetValidApiKeys() { - innerHash.Reset() - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(innerHash); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if _, err = innerHash.Write([]byte(k)); err != nil { - return 0, err - } - - result = result ^ innerHash.Sum64() - } - err = binary.Write(hasher, binary.LittleEndian, result) - if err != nil { - return 0, err - } + return hasher.Sum64(), nil +} +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *OidcAuthorizationCode_FrontChannelLogout) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil } - - if _, err = hasher.Write([]byte(m.GetHeaderName())); err != nil { + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OidcAuthorizationCode_FrontChannelLogout")); err != nil { return 0, err } - { - var result uint64 - innerHash := fnv.New64() - for k, v := range m.GetHeadersFromKeyMetadata() { - innerHash.Reset() - - if _, err = innerHash.Write([]byte(v)); err != nil { - return 0, err - } - - if _, err = innerHash.Write([]byte(k)); err != nil { - return 0, err - } - - result = result ^ innerHash.Sum64() - } - err = binary.Write(hasher, binary.LittleEndian, result) - if err != nil { - return 0, err - } - + if _, err = hasher.Write([]byte(m.GetPath())); err != nil { + return 0, err } return hasher.Sum64(), nil } // Hash function -func (m *ExtAuthConfig_OpaAuthConfig) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *OidcAuthorizationCode_ClientAuthentication_ClientSecret) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -2727,42 +5303,59 @@ func (m *ExtAuthConfig_OpaAuthConfig) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OpaAuthConfig")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OidcAuthorizationCode_ClientAuthentication_ClientSecret")); err != nil { return 0, err } - { - var result uint64 - innerHash := fnv.New64() - for k, v := range m.GetModules() { - innerHash.Reset() - - if _, err = innerHash.Write([]byte(v)); err != nil { + if h, ok := interface{}(m.GetClientSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClientSecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetClientSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ClientSecretRef")); err != nil { return 0, err } - - if _, err = innerHash.Write([]byte(k)); err != nil { + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } + } + } - result = result ^ innerHash.Sum64() + if h, ok := interface{}(m.GetDisableClientSecret()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisableClientSecret")); err != nil { + return 0, err } - err = binary.Write(hasher, binary.LittleEndian, result) - if err != nil { + if _, err = h.Hash(hasher); err != nil { return 0, err } - - } - - if _, err = hasher.Write([]byte(m.GetQuery())); err != nil { - return 0, err + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisableClientSecret(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisableClientSecret")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } return hasher.Sum64(), nil } // Hash function -func (m *ExtAuthConfig_Config) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -2770,177 +5363,103 @@ func (m *ExtAuthConfig_Config) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_Config")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt")); err != nil { return 0, err } - if h, ok := interface{}(m.GetName()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetSigningKeyRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SigningKeyRef")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetName(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSigningKeyRef(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - switch m.AuthConfig.(type) { - - case *ExtAuthConfig_Config_Oauth: - - if h, ok := interface{}(m.GetOauth()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { + if _, err = hasher.Write([]byte("SigningKeyRef")); err != nil { return 0, err } - } else { - if val, err := hashstructure.Hash(m.GetOauth(), nil); err != nil { + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } } } + } - case *ExtAuthConfig_Config_Oauth2: - - if h, ok := interface{}(m.GetOauth2()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetOauth2(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } + if h, ok := interface{}(m.GetValidFor()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ValidFor")); err != nil { + return 0, err } - - case *ExtAuthConfig_Config_BasicAuth: - - if h, ok := interface{}(m.GetBasicAuth()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetBasicAuth(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } + if _, err = h.Hash(hasher); err != nil { + return 0, err } - - case *ExtAuthConfig_Config_ApiKeyAuth: - - if h, ok := interface{}(m.GetApiKeyAuth()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValidFor(), nil); err != nil { + return 0, err } else { - if val, err := hashstructure.Hash(m.GetApiKeyAuth(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - case *ExtAuthConfig_Config_PluginAuth: - - if h, ok := interface{}(m.GetPluginAuth()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { + if _, err = hasher.Write([]byte("ValidFor")); err != nil { return 0, err } - } else { - if val, err := hashstructure.Hash(m.GetPluginAuth(), nil); err != nil { + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } } } + } - case *ExtAuthConfig_Config_OpaAuth: + return hasher.Sum64(), nil +} - if h, ok := interface{}(m.GetOpaAuth()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetOpaAuth(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *JwtValidation_RemoteJwks) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.JwtValidation_RemoteJwks")); err != nil { + return 0, err + } - case *ExtAuthConfig_Config_Ldap: + if _, err = hasher.Write([]byte(m.GetUrl())); err != nil { + return 0, err + } - if h, ok := interface{}(m.GetLdap()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetLdap(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } + if h, ok := interface{}(m.GetRefreshInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RefreshInterval")); err != nil { + return 0, err } - - case *ExtAuthConfig_Config_Jwt: - - if h, ok := interface{}(m.GetJwt()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetJwt(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } + if _, err = h.Hash(hasher); err != nil { + return 0, err } - - case *ExtAuthConfig_Config_PassThroughAuth: - - if h, ok := interface{}(m.GetPassThroughAuth()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { + } else { + if fieldValue, err := hashstructure.Hash(m.GetRefreshInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RefreshInterval")); err != nil { return 0, err } - } else { - if val, err := hashstructure.Hash(m.GetPassThroughAuth(), nil); err != nil { + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } } } - } return hasher.Sum64(), nil } // Hash function -func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *JwtValidation_LocalJwks) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -2948,46 +5467,58 @@ func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) Hash(hasher ha hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_AccessTokenValidationConfig_JwtValidation")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.JwtValidation_LocalJwks")); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetIssuer())); err != nil { + if _, err = hasher.Write([]byte(m.GetInlineString())); err != nil { return 0, err } - switch m.JwksSourceSpecifier.(type) { + return hasher.Sum64(), nil +} - case *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks_: +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AccessTokenValidation_Default) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AccessTokenValidation_Default")); err != nil { + return 0, err + } - if h, ok := interface{}(m.GetRemoteJwks()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetRemoteJwks(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } + return hasher.Sum64(), nil +} - case *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks_: +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AccessTokenValidation_ScopeList) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AccessTokenValidation_ScopeList")); err != nil { + return 0, err + } - if h, ok := interface{}(m.GetLocalJwks()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetLocalJwks(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } + for _, v := range m.GetScope() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err } } @@ -2996,7 +5527,11 @@ func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) Hash(hasher ha } // Hash function -func (m *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ApiKeyAuth_SecretKey) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -3004,23 +5539,45 @@ func (m *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) Hash hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyAuth_SecretKey")); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetIntrospectionUrl())); err != nil { + if _, err = hasher.Write([]byte(m.GetName())); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetClientId())); err != nil { + err = binary.Write(hasher, binary.LittleEndian, m.GetRequired()) + if err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetClientSecret())); err != nil { + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ApiKeyAuth_MetadataEntry) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyAuth_MetadataEntry")); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetUserIdAttributeName())); err != nil { + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetRequired()) + if err != nil { return 0, err } @@ -3028,7 +5585,11 @@ func (m *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) Hash } // Hash function -func (m *ExtAuthConfig_AccessTokenValidationConfig_ScopeList) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AerospikeApiKeyStorageReadModeSc) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -3036,13 +5597,37 @@ func (m *ExtAuthConfig_AccessTokenValidationConfig_ScopeList) Hash(hasher hash.H hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_AccessTokenValidationConfig_ScopeList")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AerospikeApiKeyStorageReadModeSc")); err != nil { return 0, err } - for _, v := range m.GetScope() { + switch m.ReadModeSc.(type) { - if _, err = hasher.Write([]byte(v)); err != nil { + case *AerospikeApiKeyStorageReadModeSc_ReadModeScSession: + + err = binary.Write(hasher, binary.LittleEndian, m.GetReadModeScSession()) + if err != nil { + return 0, err + } + + case *AerospikeApiKeyStorageReadModeSc_ReadModeScLinearize: + + err = binary.Write(hasher, binary.LittleEndian, m.GetReadModeScLinearize()) + if err != nil { + return 0, err + } + + case *AerospikeApiKeyStorageReadModeSc_ReadModeScReplica: + + err = binary.Write(hasher, binary.LittleEndian, m.GetReadModeScReplica()) + if err != nil { + return 0, err + } + + case *AerospikeApiKeyStorageReadModeSc_ReadModeScAllowUnavailable: + + err = binary.Write(hasher, binary.LittleEndian, m.GetReadModeScAllowUnavailable()) + if err != nil { return 0, err } @@ -3052,7 +5637,11 @@ func (m *ExtAuthConfig_AccessTokenValidationConfig_ScopeList) Hash(hasher hash.H } // Hash function -func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AerospikeApiKeyStorageReadModeAp) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -3060,33 +5649,89 @@ func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) Has hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AerospikeApiKeyStorageReadModeAp")); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetUrl())); err != nil { + switch m.ReadModeAp.(type) { + + case *AerospikeApiKeyStorageReadModeAp_ReadModeApOne: + + err = binary.Write(hasher, binary.LittleEndian, m.GetReadModeApOne()) + if err != nil { + return 0, err + } + + case *AerospikeApiKeyStorageReadModeAp_ReadModeApAll: + + err = binary.Write(hasher, binary.LittleEndian, m.GetReadModeApAll()) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AerospikeApiKeyStorageTlsCurveID) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AerospikeApiKeyStorageTlsCurveID")); err != nil { return 0, err } - if h, ok := interface{}(m.GetRefreshInterval()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { + switch m.CurveId.(type) { + + case *AerospikeApiKeyStorageTlsCurveID_CurveP256: + + err = binary.Write(hasher, binary.LittleEndian, m.GetCurveP256()) + if err != nil { return 0, err } - } else { - if val, err := hashstructure.Hash(m.GetRefreshInterval(), nil); err != nil { + + case *AerospikeApiKeyStorageTlsCurveID_CurveP384: + + err = binary.Write(hasher, binary.LittleEndian, m.GetCurveP384()) + if err != nil { + return 0, err + } + + case *AerospikeApiKeyStorageTlsCurveID_CurveP521: + + err = binary.Write(hasher, binary.LittleEndian, m.GetCurveP521()) + if err != nil { + return 0, err + } + + case *AerospikeApiKeyStorageTlsCurveID_X_25519: + + err = binary.Write(hasher, binary.LittleEndian, m.GetX_25519()) + if err != nil { return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } } + } return hasher.Sum64(), nil } // Hash function -func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Ldap_ConnectionPool) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -3094,19 +5739,59 @@ func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) Hash hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.Ldap_ConnectionPool")); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetInlineString())); err != nil { - return 0, err + if h, ok := interface{}(m.GetMaxSize()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxSize")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxSize(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxSize")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetInitialSize()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InitialSize")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInitialSize(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("InitialSize")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } return hasher.Sum64(), nil } // Hash function -func (m *ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *PassThroughHttp_Request) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -3114,18 +5799,22 @@ func (m *ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) Hash(hasher hash.Hash64) (u hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata")); err != nil { + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.PassThroughHttp_Request")); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetUsername())); err != nil { - return 0, err + for _, v := range m.GetAllowedHeaders() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + } { var result uint64 innerHash := fnv.New64() - for k, v := range m.GetMetadata() { + for k, v := range m.GetHeadersToAdd() { innerHash.Reset() if _, err = innerHash.Write([]byte(v)); err != nil { @@ -3145,5 +5834,69 @@ func (m *ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) Hash(hasher hash.Hash64) (u } + err = binary.Write(hasher, binary.LittleEndian, m.GetPassThroughState()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetPassThroughFilterMetadata()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetPassThroughBody()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *PassThroughHttp_Response) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.PassThroughHttp_Response")); err != nil { + return 0, err + } + + for _, v := range m.GetAllowedUpstreamHeaders() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + for _, v := range m.GetAllowedClientHeadersOnDenied() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetReadStateFromResponse()) + if err != nil { + return 0, err + } + + for _, v := range m.GetAllowedUpstreamHeadersToOverwrite() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + return hasher.Sum64(), nil } diff --git a/pkg/api/enterprise.gloo.solo.io/v1/auth_config.pb.uniquehash.go b/pkg/api/enterprise.gloo.solo.io/v1/auth_config.pb.uniquehash.go new file mode 100644 index 000000000..2c35ddbd2 --- /dev/null +++ b/pkg/api/enterprise.gloo.solo.io/v1/auth_config.pb.uniquehash.go @@ -0,0 +1,6600 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AuthConfigSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AuthConfigSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Configs")); err != nil { + return 0, err + } + for i, v := range m.GetConfigs() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetBooleanExpr()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BooleanExpr")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBooleanExpr(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BooleanExpr")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("FailOnRedirect")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetFailOnRedirect()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthExtension) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthExtension")); err != nil { + return 0, err + } + + switch m.Spec.(type) { + + case *ExtAuthExtension_Disable: + + if _, err = hasher.Write([]byte("Disable")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDisable()) + if err != nil { + return 0, err + } + + case *ExtAuthExtension_ConfigRef: + + if h, ok := interface{}(m.GetConfigRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConfigRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConfigRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConfigRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthExtension_CustomAuth: + + if h, ok := interface{}(m.GetCustomAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCustomAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CustomAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Settings) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.Settings")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetExtauthzServerRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ExtauthzServerRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtauthzServerRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ExtauthzServerRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("UserIdHeader")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUserIdHeader())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRequestTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("FailureModeAllow")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetFailureModeAllow()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRequestBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestBody")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestBody")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("ClearRouteCache")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetClearRouteCache()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("StatusOnError")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetStatusOnError()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TransportApiVersion")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetTransportApiVersion()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("StatPrefix")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetStatPrefix())); err != nil { + return 0, err + } + + switch m.ServiceType.(type) { + + case *Settings_HttpService: + + if h, ok := interface{}(m.GetHttpService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpService")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpService(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Settings_GrpcService: + + if h, ok := interface{}(m.GetGrpcService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcService(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcService) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.GrpcService")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Authority")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAuthority())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HttpService) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.HttpService")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("PathPrefix")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPathPrefix())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRequest()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Request")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequest(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Request")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetResponse()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Response")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponse(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Response")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *BufferSettings) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.BufferSettings")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MaxRequestBytes")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMaxRequestBytes()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AllowPartialMessage")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAllowPartialMessage()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("PackAsBytes")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPackAsBytes()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *CustomAuth) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.CustomAuth")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetContextExtensions() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AuthPlugin) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AuthPlugin")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("PluginFileName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPluginFileName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ExportedSymbolName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetExportedSymbolName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *BasicAuth) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.BasicAuth")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Realm")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRealm())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetApr()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Apr")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetApr(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Apr")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEncryption()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Encryption")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEncryption(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Encryption")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.UserSource.(type) { + + case *BasicAuth_UserList_: + + if h, ok := interface{}(m.GetUserList()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UserList")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUserList(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UserList")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HmacAuth) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.HmacAuth")); err != nil { + return 0, err + } + + switch m.SecretStorage.(type) { + + case *HmacAuth_SecretRefs: + + if h, ok := interface{}(m.GetSecretRefs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretRefs")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSecretRefs(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SecretRefs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.ImplementationType.(type) { + + case *HmacAuth_ParametersInHeaders: + + if h, ok := interface{}(m.GetParametersInHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ParametersInHeaders")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetParametersInHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ParametersInHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SecretRefList) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.SecretRefList")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SecretRefs")); err != nil { + return 0, err + } + for i, v := range m.GetSecretRefs() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HmacParametersInHeaders) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.HmacParametersInHeaders")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *OAuth) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OAuth")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClientId")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClientId())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetClientSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClientSecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetClientSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ClientSecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("IssuerUrl")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetIssuerUrl())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetAuthEndpointQueryParams() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("AppUrl")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAppUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CallbackPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCallbackPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Scopes")); err != nil { + return 0, err + } + for i, v := range m.GetScopes() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *OAuth2) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OAuth2")); err != nil { + return 0, err + } + + switch m.OauthType.(type) { + + case *OAuth2_OidcAuthorizationCode: + + if h, ok := interface{}(m.GetOidcAuthorizationCode()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OidcAuthorizationCode")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOidcAuthorizationCode(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OidcAuthorizationCode")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *OAuth2_AccessTokenValidation: + + if h, ok := interface{}(m.GetAccessTokenValidation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AccessTokenValidation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAccessTokenValidation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AccessTokenValidation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *OAuth2_Oauth2: + + if h, ok := interface{}(m.GetOauth2()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Oauth2")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOauth2(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Oauth2")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RedisOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.RedisOptions")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Host")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHost())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Db")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDb()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("PoolSize")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPoolSize()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TlsCertMountPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTlsCertMountPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SocketType")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetSocketType()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UserSession) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.UserSession")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("FailOnFetchFailure")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetFailOnFetchFailure()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCookieOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CookieOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCookieOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CookieOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCipherConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CipherConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCipherConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CipherConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.Session.(type) { + + case *UserSession_Cookie: + + if h, ok := interface{}(m.GetCookie()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cookie")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCookie(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Cookie")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UserSession_Redis: + + if h, ok := interface{}(m.GetRedis()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Redis")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRedis(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Redis")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HeaderConfiguration) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.HeaderConfiguration")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("IdTokenHeader")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetIdTokenHeader())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AccessTokenHeader")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAccessTokenHeader())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetUseBearerSchemaForAuthorization()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UseBearerSchemaForAuthorization")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUseBearerSchemaForAuthorization(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UseBearerSchemaForAuthorization")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DiscoveryOverride) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.DiscoveryOverride")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AuthEndpoint")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAuthEndpoint())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TokenEndpoint")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTokenEndpoint())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("JwksUri")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetJwksUri())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Scopes")); err != nil { + return 0, err + } + for i, v := range m.GetScopes() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("ResponseTypes")); err != nil { + return 0, err + } + for i, v := range m.GetResponseTypes() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("Subjects")); err != nil { + return 0, err + } + for i, v := range m.GetSubjects() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("IdTokenAlgs")); err != nil { + return 0, err + } + for i, v := range m.GetIdTokenAlgs() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("AuthMethods")); err != nil { + return 0, err + } + for i, v := range m.GetAuthMethods() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("Claims")); err != nil { + return 0, err + } + for i, v := range m.GetClaims() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("RevocationEndpoint")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRevocationEndpoint())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("EndSessionEndpoint")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetEndSessionEndpoint())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *JwksOnDemandCacheRefreshPolicy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.JwksOnDemandCacheRefreshPolicy")); err != nil { + return 0, err + } + + switch m.Policy.(type) { + + case *JwksOnDemandCacheRefreshPolicy_Never: + + if h, ok := interface{}(m.GetNever()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Never")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetNever(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Never")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *JwksOnDemandCacheRefreshPolicy_Always: + + if h, ok := interface{}(m.GetAlways()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Always")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAlways(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Always")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *JwksOnDemandCacheRefreshPolicy_MaxIdpReqPerPollingInterval: + + if _, err = hasher.Write([]byte("MaxIdpReqPerPollingInterval")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMaxIdpReqPerPollingInterval()) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AutoMapFromMetadata) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AutoMapFromMetadata")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Namespace")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetNamespace())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *EndSessionProperties) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.EndSessionProperties")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MethodType")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMethodType()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ClaimToHeader) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ClaimToHeader")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Claim")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClaim())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHeader())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Append")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAppend()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Azure) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.Azure")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClientId")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClientId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TenantId")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTenantId())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetClientSecret()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClientSecret")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetClientSecret(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ClientSecret")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetClaimsCachingOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClaimsCachingOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetClaimsCachingOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ClaimsCachingOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *OidcAuthorizationCode) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OidcAuthorizationCode")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClientId")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClientId())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetClientSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClientSecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetClientSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ClientSecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("IssuerUrl")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetIssuerUrl())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetAuthEndpointQueryParams() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetTokenEndpointQueryParams() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("AppUrl")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAppUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CallbackPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCallbackPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("LogoutPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetLogoutPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AfterLogoutUrl")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAfterLogoutUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Scopes")); err != nil { + return 0, err + } + for i, v := range m.GetScopes() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetSession()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Session")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSession(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Session")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDiscoveryOverride()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DiscoveryOverride")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDiscoveryOverride(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DiscoveryOverride")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDiscoveryPollInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DiscoveryPollInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDiscoveryPollInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DiscoveryPollInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetJwksCacheRefreshPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("JwksCacheRefreshPolicy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJwksCacheRefreshPolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("JwksCacheRefreshPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("SessionIdHeaderName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSessionIdHeaderName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ParseCallbackPathAsRegex")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetParseCallbackPathAsRegex()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAutoMapFromMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AutoMapFromMetadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAutoMapFromMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AutoMapFromMetadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEndSessionProperties()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EndSessionProperties")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEndSessionProperties(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EndSessionProperties")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetDynamicMetadataFromClaims() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDisableClientSecret()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisableClientSecret")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisableClientSecret(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisableClientSecret")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAccessToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AccessToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAccessToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AccessToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetIdentityToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IdentityToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIdentityToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IdentityToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetClientAuthentication()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClientAuthentication")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetClientAuthentication(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ClientAuthentication")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFrontChannelLogout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FrontChannelLogout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFrontChannelLogout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FrontChannelLogout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.Provider.(type) { + + case *OidcAuthorizationCode_Default_: + + if h, ok := interface{}(m.GetDefault()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Default")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDefault(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Default")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *OidcAuthorizationCode_Azure: + + if h, ok := interface{}(m.GetAzure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAzure(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *PlainOAuth2) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.PlainOAuth2")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClientId")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClientId())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetClientSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClientSecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetClientSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ClientSecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetAuthEndpointQueryParams() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("AppUrl")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAppUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CallbackPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCallbackPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Scopes")); err != nil { + return 0, err + } + for i, v := range m.GetScopes() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetSession()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Session")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSession(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Session")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("LogoutPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetLogoutPath())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetTokenEndpointQueryParams() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("AfterLogoutUrl")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAfterLogoutUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AuthEndpoint")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAuthEndpoint())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TokenEndpoint")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTokenEndpoint())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RevocationEndpoint")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRevocationEndpoint())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDisableClientSecret()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisableClientSecret")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisableClientSecret(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisableClientSecret")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *JwtValidation) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.JwtValidation")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Issuer")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetIssuer())); err != nil { + return 0, err + } + + switch m.JwksSourceSpecifier.(type) { + + case *JwtValidation_RemoteJwks_: + + if h, ok := interface{}(m.GetRemoteJwks()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RemoteJwks")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRemoteJwks(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RemoteJwks")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *JwtValidation_LocalJwks_: + + if h, ok := interface{}(m.GetLocalJwks()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LocalJwks")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLocalJwks(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LocalJwks")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *IntrospectionValidation) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.IntrospectionValidation")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("IntrospectionUrl")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetIntrospectionUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClientId")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClientId())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetClientSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClientSecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetClientSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ClientSecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("UserIdAttributeName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUserIdAttributeName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDisableClientSecret()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisableClientSecret")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisableClientSecret(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisableClientSecret")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AccessTokenValidation) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AccessTokenValidation")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("UserinfoUrl")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUserinfoUrl())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCacheTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CacheTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCacheTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CacheTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetDynamicMetadataFromClaims() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("ClaimsToHeaders")); err != nil { + return 0, err + } + for i, v := range m.GetClaimsToHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.ValidationType.(type) { + + case *AccessTokenValidation_IntrospectionUrl: + + if _, err = hasher.Write([]byte("IntrospectionUrl")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetIntrospectionUrl())); err != nil { + return 0, err + } + + case *AccessTokenValidation_Jwt: + + if h, ok := interface{}(m.GetJwt()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJwt(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessTokenValidation_Introspection: + + if h, ok := interface{}(m.GetIntrospection()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Introspection")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIntrospection(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Introspection")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.ScopeValidation.(type) { + + case *AccessTokenValidation_RequiredScopes: + + if h, ok := interface{}(m.GetRequiredScopes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequiredScopes")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequiredScopes(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequiredScopes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.Provider.(type) { + + case *AccessTokenValidation_Default_: + + if h, ok := interface{}(m.GetDefault()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Default")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDefault(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Default")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessTokenValidation_Azure: + + if h, ok := interface{}(m.GetAzure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAzure(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *OauthSecret) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OauthSecret")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClientSecret")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClientSecret())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ApiKeyAuth) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyAuth")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetLabelSelector() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("ApiKeySecretRefs")); err != nil { + return 0, err + } + for i, v := range m.GetApiKeySecretRefs() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("HeaderName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHeaderName())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetHeadersFromMetadata() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetHeadersFromMetadataEntry() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("SkipMetadataValidation")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetSkipMetadataValidation()) + if err != nil { + return 0, err + } + + switch m.StorageBackend.(type) { + + case *ApiKeyAuth_K8SSecretApikeyStorage: + + if h, ok := interface{}(m.GetK8SSecretApikeyStorage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("K8SSecretApikeyStorage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetK8SSecretApikeyStorage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("K8SSecretApikeyStorage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ApiKeyAuth_AerospikeApikeyStorage: + + if h, ok := interface{}(m.GetAerospikeApikeyStorage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AerospikeApikeyStorage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAerospikeApikeyStorage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AerospikeApikeyStorage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *K8SSecretApiKeyStorage) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.K8SSecretApiKeyStorage")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetLabelSelector() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("ApiKeySecretRefs")); err != nil { + return 0, err + } + for i, v := range m.GetApiKeySecretRefs() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AerospikeApiKeyStorage) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AerospikeApiKeyStorage")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Hostname")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHostname())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Namespace")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetNamespace())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Set")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSet())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Port")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPort()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("BatchSize")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetBatchSize()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetReadModeSc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ReadModeSc")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetReadModeSc(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ReadModeSc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetReadModeAp()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ReadModeAp")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetReadModeAp(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ReadModeAp")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("NodeTlsName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetNodeTlsName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CertPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCertPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("KeyPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKeyPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AllowInsecure")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAllowInsecure()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RootCaPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRootCaPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TlsVersion")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTlsVersion())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TlsCurveGroups")); err != nil { + return 0, err + } + for i, v := range m.GetTlsCurveGroups() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetLabelSelector() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + switch m.CommitLevel.(type) { + + case *AerospikeApiKeyStorage_CommitAll: + + if _, err = hasher.Write([]byte("CommitAll")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetCommitAll()) + if err != nil { + return 0, err + } + + case *AerospikeApiKeyStorage_CommitMaster: + + if _, err = hasher.Write([]byte("CommitMaster")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetCommitMaster()) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ServerDefaultApiKeyStorage) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ServerDefaultApiKeyStorage")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ApiKey) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKey")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ApiKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetApiKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Labels")); err != nil { + return 0, err + } + for i, v := range m.GetLabels() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetMetadata() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("Uuid")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUuid())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ApiKeySecret) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeySecret")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ApiKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetApiKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Labels")); err != nil { + return 0, err + } + for i, v := range m.GetLabels() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetMetadata() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *OpaAuth) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OpaAuth")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Modules")); err != nil { + return 0, err + } + for i, v := range m.GetModules() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("Query")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetQuery())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *OpaAuthOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OpaAuthOptions")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("FastInputConversion")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetFastInputConversion()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ReturnDecisionReason")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetReturnDecisionReason()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *OpaServerAuth) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OpaServerAuth")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Package")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPackage())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RuleName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRuleName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ServerAddr")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetServerAddr())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Ldap) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.Ldap")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Address")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAddress())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("UserDnTemplate")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUserDnTemplate())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MembershipAttributeName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetMembershipAttributeName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AllowedGroups")); err != nil { + return 0, err + } + for i, v := range m.GetAllowedGroups() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetPool()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Pool")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPool(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Pool")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("SearchFilter")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSearchFilter())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DisableGroupChecking")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDisableGroupChecking()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetGroupLookupSettings()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GroupLookupSettings")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGroupLookupSettings(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GroupLookupSettings")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *LdapServiceAccount) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.LdapServiceAccount")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCredentialsSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CredentialsSecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCredentialsSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CredentialsSecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("CheckGroupsWithServiceAccount")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetCheckGroupsWithServiceAccount()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *PassThroughAuth) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.PassThroughAuth")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("FailureModeAllow")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetFailureModeAllow()) + if err != nil { + return 0, err + } + + switch m.Protocol.(type) { + + case *PassThroughAuth_Grpc: + + if h, ok := interface{}(m.GetGrpc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Grpc")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpc(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Grpc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *PassThroughAuth_Http: + + if h, ok := interface{}(m.GetHttp()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Http")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttp(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Http")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *BackoffStrategy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.BackoffStrategy")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetBaseInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBaseInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RetryPolicy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.RetryPolicy")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetNumRetries()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("NumRetries")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetNumRetries(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("NumRetries")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.Strategy.(type) { + + case *RetryPolicy_RetryBackOff: + + if h, ok := interface{}(m.GetRetryBackOff()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryBackOff")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetryBackOff(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RetryBackOff")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *PassThroughGrpc) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.PassThroughGrpc")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Address")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAddress())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetConnectionTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectionTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConnectionTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConnectionTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTlsConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TlsConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTlsConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TlsConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRetryPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetryPolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *PassThroughHttp) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.PassThroughHttp")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Url")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUrl())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRequest()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Request")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequest(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Request")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetResponse()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Response")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponse(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Response")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetConnectionTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectionTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConnectionTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConnectionTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTlsConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TlsConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTlsConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TlsConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *PassThroughGrpcTLSConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.PassThroughGrpcTLSConfig")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetSslParams()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslParams")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslParams(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslParams")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *PassThroughHttpTLSConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.PassThroughHttpTLSConfig")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetSslParams()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslParams")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslParams(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslParams")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SslParameters) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.SslParameters")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MinimumProtocolVersion")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMinimumProtocolVersion()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MaximumProtocolVersion")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMaximumProtocolVersion()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *PortalAuth) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.PortalAuth")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Url")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ApiKeyHeader")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetApiKeyHeader())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRedisOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RedisOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRedisOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RedisOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCacheDuration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CacheDuration")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCacheDuration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CacheDuration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRequestTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AuthConfigStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AuthConfigStatus")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("State")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Reason")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ReportedBy")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AuthConfigNamespacedStatuses) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AuthConfigNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AuthConfigSpec_Config) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AuthConfigSpec_Config")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetName()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetName(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.AuthConfig.(type) { + + case *AuthConfigSpec_Config_BasicAuth: + + if h, ok := interface{}(m.GetBasicAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BasicAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBasicAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BasicAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AuthConfigSpec_Config_Oauth: + + if h, ok := interface{}(m.GetOauth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Oauth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOauth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Oauth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AuthConfigSpec_Config_Oauth2: + + if h, ok := interface{}(m.GetOauth2()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Oauth2")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOauth2(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Oauth2")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AuthConfigSpec_Config_ApiKeyAuth: + + if h, ok := interface{}(m.GetApiKeyAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ApiKeyAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetApiKeyAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ApiKeyAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AuthConfigSpec_Config_PluginAuth: + + if h, ok := interface{}(m.GetPluginAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PluginAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPluginAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PluginAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AuthConfigSpec_Config_OpaAuth: + + if h, ok := interface{}(m.GetOpaAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OpaAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOpaAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OpaAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AuthConfigSpec_Config_Ldap: + + if h, ok := interface{}(m.GetLdap()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ldap")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLdap(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Ldap")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AuthConfigSpec_Config_Jwt: + + if h, ok := interface{}(m.GetJwt()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJwt(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AuthConfigSpec_Config_PassThroughAuth: + + if h, ok := interface{}(m.GetPassThroughAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PassThroughAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPassThroughAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PassThroughAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AuthConfigSpec_Config_HmacAuth: + + if h, ok := interface{}(m.GetHmacAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HmacAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHmacAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HmacAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AuthConfigSpec_Config_OpaServerAuth: + + if h, ok := interface{}(m.GetOpaServerAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OpaServerAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOpaServerAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OpaServerAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AuthConfigSpec_Config_PortalAuth: + + if h, ok := interface{}(m.GetPortalAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PortalAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPortalAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PortalAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HttpService_Request) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.HttpService_Request")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AllowedHeaders")); err != nil { + return 0, err + } + for i, v := range m.GetAllowedHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetHeadersToAdd() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("AllowedHeadersRegex")); err != nil { + return 0, err + } + for i, v := range m.GetAllowedHeadersRegex() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HttpService_Response) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.HttpService_Response")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AllowedUpstreamHeaders")); err != nil { + return 0, err + } + for i, v := range m.GetAllowedUpstreamHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("AllowedClientHeaders")); err != nil { + return 0, err + } + for i, v := range m.GetAllowedClientHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("AllowedUpstreamHeadersToAppend")); err != nil { + return 0, err + } + for i, v := range m.GetAllowedUpstreamHeadersToAppend() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *BasicAuth_Apr) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.BasicAuth_Apr")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetUsers() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *BasicAuth_EncryptionType) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.BasicAuth_EncryptionType")); err != nil { + return 0, err + } + + switch m.Algorithm.(type) { + + case *BasicAuth_EncryptionType_Apr_: + + if h, ok := interface{}(m.GetApr()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Apr")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetApr(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Apr")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *BasicAuth_EncryptionType_Sha1_: + + if h, ok := interface{}(m.GetSha1()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Sha1")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSha1(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Sha1")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *BasicAuth_User) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.BasicAuth_User")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Salt")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSalt())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("HashedPassword")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHashedPassword())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *BasicAuth_UserList) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.BasicAuth_UserList")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetUsers() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *BasicAuth_Apr_SaltedHashedPassword) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.BasicAuth_Apr_SaltedHashedPassword")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Salt")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSalt())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("HashedPassword")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHashedPassword())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *BasicAuth_EncryptionType_Sha1) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.BasicAuth_EncryptionType_Sha1")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *BasicAuth_EncryptionType_Apr) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.BasicAuth_EncryptionType_Apr")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UserSession_InternalSession) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.UserSession_InternalSession")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAllowRefreshing()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowRefreshing")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAllowRefreshing(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AllowRefreshing")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("KeyPrefix")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKeyPrefix())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TargetDomain")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTargetDomain())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UserSession_RedisSession) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.UserSession_RedisSession")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("KeyPrefix")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKeyPrefix())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CookieName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCookieName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAllowRefreshing()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowRefreshing")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAllowRefreshing(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AllowRefreshing")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPreExpiryBuffer()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PreExpiryBuffer")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPreExpiryBuffer(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PreExpiryBuffer")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("TargetDomain")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTargetDomain())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("HeaderName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHeaderName())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UserSession_CookieOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.UserSession_CookieOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxAge()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxAge")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxAge(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxAge")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("NotSecure")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetNotSecure()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHttpOnly()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpOnly")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpOnly(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpOnly")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPath()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPath(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("SameSite")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetSameSite()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Domain")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDomain())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UserSession_CipherConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.UserSession_CipherConfig")); err != nil { + return 0, err + } + + switch m.Key.(type) { + + case *UserSession_CipherConfig_KeyRef: + + if h, ok := interface{}(m.GetKeyRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("KeyRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetKeyRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("KeyRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *OidcAuthorizationCode_AccessToken) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OidcAuthorizationCode_AccessToken")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClaimsToHeaders")); err != nil { + return 0, err + } + for i, v := range m.GetClaimsToHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *OidcAuthorizationCode_IdentityToken) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OidcAuthorizationCode_IdentityToken")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClaimsToHeaders")); err != nil { + return 0, err + } + for i, v := range m.GetClaimsToHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *OidcAuthorizationCode_ClientAuthentication) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OidcAuthorizationCode_ClientAuthentication")); err != nil { + return 0, err + } + + switch m.ClientAuthenticationConfig.(type) { + + case *OidcAuthorizationCode_ClientAuthentication_ClientSecret_: + + if h, ok := interface{}(m.GetClientSecret()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClientSecret")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetClientSecret(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ClientSecret")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt_: + + if h, ok := interface{}(m.GetPrivateKeyJwt()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PrivateKeyJwt")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPrivateKeyJwt(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PrivateKeyJwt")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *OidcAuthorizationCode_Default) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OidcAuthorizationCode_Default")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *OidcAuthorizationCode_FrontChannelLogout) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OidcAuthorizationCode_FrontChannelLogout")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPath())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *OidcAuthorizationCode_ClientAuthentication_ClientSecret) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OidcAuthorizationCode_ClientAuthentication_ClientSecret")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetClientSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClientSecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetClientSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ClientSecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDisableClientSecret()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisableClientSecret")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisableClientSecret(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisableClientSecret")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.OidcAuthorizationCode_ClientAuthentication_PrivateKeyJwt")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSigningKeyRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SigningKeyRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSigningKeyRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SigningKeyRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetValidFor()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ValidFor")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValidFor(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ValidFor")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *JwtValidation_RemoteJwks) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.JwtValidation_RemoteJwks")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Url")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUrl())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRefreshInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RefreshInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRefreshInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RefreshInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *JwtValidation_LocalJwks) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.JwtValidation_LocalJwks")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("InlineString")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetInlineString())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AccessTokenValidation_Default) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AccessTokenValidation_Default")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AccessTokenValidation_ScopeList) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AccessTokenValidation_ScopeList")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Scope")); err != nil { + return 0, err + } + for i, v := range m.GetScope() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ApiKeyAuth_SecretKey) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyAuth_SecretKey")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Required")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRequired()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ApiKeyAuth_MetadataEntry) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyAuth_MetadataEntry")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Required")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRequired()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AerospikeApiKeyStorageReadModeSc) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AerospikeApiKeyStorageReadModeSc")); err != nil { + return 0, err + } + + switch m.ReadModeSc.(type) { + + case *AerospikeApiKeyStorageReadModeSc_ReadModeScSession: + + if _, err = hasher.Write([]byte("ReadModeScSession")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetReadModeScSession()) + if err != nil { + return 0, err + } + + case *AerospikeApiKeyStorageReadModeSc_ReadModeScLinearize: + + if _, err = hasher.Write([]byte("ReadModeScLinearize")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetReadModeScLinearize()) + if err != nil { + return 0, err + } + + case *AerospikeApiKeyStorageReadModeSc_ReadModeScReplica: + + if _, err = hasher.Write([]byte("ReadModeScReplica")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetReadModeScReplica()) + if err != nil { + return 0, err + } + + case *AerospikeApiKeyStorageReadModeSc_ReadModeScAllowUnavailable: + + if _, err = hasher.Write([]byte("ReadModeScAllowUnavailable")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetReadModeScAllowUnavailable()) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AerospikeApiKeyStorageReadModeAp) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AerospikeApiKeyStorageReadModeAp")); err != nil { + return 0, err + } + + switch m.ReadModeAp.(type) { + + case *AerospikeApiKeyStorageReadModeAp_ReadModeApOne: + + if _, err = hasher.Write([]byte("ReadModeApOne")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetReadModeApOne()) + if err != nil { + return 0, err + } + + case *AerospikeApiKeyStorageReadModeAp_ReadModeApAll: + + if _, err = hasher.Write([]byte("ReadModeApAll")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetReadModeApAll()) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AerospikeApiKeyStorageTlsCurveID) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.AerospikeApiKeyStorageTlsCurveID")); err != nil { + return 0, err + } + + switch m.CurveId.(type) { + + case *AerospikeApiKeyStorageTlsCurveID_CurveP256: + + if _, err = hasher.Write([]byte("CurveP256")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetCurveP256()) + if err != nil { + return 0, err + } + + case *AerospikeApiKeyStorageTlsCurveID_CurveP384: + + if _, err = hasher.Write([]byte("CurveP384")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetCurveP384()) + if err != nil { + return 0, err + } + + case *AerospikeApiKeyStorageTlsCurveID_CurveP521: + + if _, err = hasher.Write([]byte("CurveP521")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetCurveP521()) + if err != nil { + return 0, err + } + + case *AerospikeApiKeyStorageTlsCurveID_X_25519: + + if _, err = hasher.Write([]byte("X_25519")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetX_25519()) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Ldap_ConnectionPool) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.Ldap_ConnectionPool")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxSize()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxSize")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxSize(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxSize")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetInitialSize()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InitialSize")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInitialSize(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("InitialSize")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *PassThroughHttp_Request) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.PassThroughHttp_Request")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AllowedHeaders")); err != nil { + return 0, err + } + for i, v := range m.GetAllowedHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetHeadersToAdd() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("PassThroughState")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPassThroughState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("PassThroughFilterMetadata")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPassThroughFilterMetadata()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("PassThroughBody")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPassThroughBody()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *PassThroughHttp_Response) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.PassThroughHttp_Response")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AllowedUpstreamHeaders")); err != nil { + return 0, err + } + for i, v := range m.GetAllowedUpstreamHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("AllowedClientHeadersOnDenied")); err != nil { + return 0, err + } + for i, v := range m.GetAllowedClientHeadersOnDenied() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("ReadStateFromResponse")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetReadStateFromResponse()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AllowedUpstreamHeadersToOverwrite")); err != nil { + return 0, err + } + for i, v := range m.GetAllowedUpstreamHeadersToOverwrite() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/enterprise.gloo.solo.io/v1/clients.go b/pkg/api/enterprise.gloo.solo.io/v1/clients.go index ec72cbaee..397af09be 100644 --- a/pkg/api/enterprise.gloo.solo.io/v1/clients.go +++ b/pkg/api/enterprise.gloo.solo.io/v1/clients.go @@ -49,7 +49,7 @@ type clientSet struct { func NewClientsetFromConfig(cfg *rest.Config) (Clientset, error) { scheme := scheme.Scheme - if err := AddToScheme(scheme); err != nil { + if err := SchemeBuilder.AddToScheme(scheme); err != nil { return nil, err } client, err := client.New(cfg, client.Options{ @@ -108,10 +108,10 @@ type AuthConfigWriter interface { type AuthConfigStatusWriter interface { // Update updates the fields corresponding to the status subresource for the // given AuthConfig object. - UpdateAuthConfigStatus(ctx context.Context, obj *AuthConfig, opts ...client.UpdateOption) error + UpdateAuthConfigStatus(ctx context.Context, obj *AuthConfig, opts ...client.SubResourceUpdateOption) error // Patch patches the given AuthConfig object's subresource. - PatchAuthConfigStatus(ctx context.Context, obj *AuthConfig, patch client.Patch, opts ...client.PatchOption) error + PatchAuthConfigStatus(ctx context.Context, obj *AuthConfig, patch client.Patch, opts ...client.SubResourcePatchOption) error } // Client knows how to perform CRUD operations on AuthConfigs. @@ -182,11 +182,11 @@ func (c *authConfigClient) UpsertAuthConfig(ctx context.Context, obj *AuthConfig return err } -func (c *authConfigClient) UpdateAuthConfigStatus(ctx context.Context, obj *AuthConfig, opts ...client.UpdateOption) error { +func (c *authConfigClient) UpdateAuthConfigStatus(ctx context.Context, obj *AuthConfig, opts ...client.SubResourceUpdateOption) error { return c.client.Status().Update(ctx, obj, opts...) } -func (c *authConfigClient) PatchAuthConfigStatus(ctx context.Context, obj *AuthConfig, patch client.Patch, opts ...client.PatchOption) error { +func (c *authConfigClient) PatchAuthConfigStatus(ctx context.Context, obj *AuthConfig, patch client.Patch, opts ...client.SubResourcePatchOption) error { return c.client.Status().Patch(ctx, obj, patch, opts...) } diff --git a/pkg/api/enterprise.gloo.solo.io/v1/controller/mocks/event_handlers.go b/pkg/api/enterprise.gloo.solo.io/v1/controller/mocks/event_handlers.go index 6ff49ab1d..1d9dff045 100644 --- a/pkg/api/enterprise.gloo.solo.io/v1/controller/mocks/event_handlers.go +++ b/pkg/api/enterprise.gloo.solo.io/v1/controller/mocks/event_handlers.go @@ -14,30 +14,30 @@ import ( predicate "sigs.k8s.io/controller-runtime/pkg/predicate" ) -// MockAuthConfigEventHandler is a mock of AuthConfigEventHandler interface +// MockAuthConfigEventHandler is a mock of AuthConfigEventHandler interface. type MockAuthConfigEventHandler struct { ctrl *gomock.Controller recorder *MockAuthConfigEventHandlerMockRecorder } -// MockAuthConfigEventHandlerMockRecorder is the mock recorder for MockAuthConfigEventHandler +// MockAuthConfigEventHandlerMockRecorder is the mock recorder for MockAuthConfigEventHandler. type MockAuthConfigEventHandlerMockRecorder struct { mock *MockAuthConfigEventHandler } -// NewMockAuthConfigEventHandler creates a new mock instance +// NewMockAuthConfigEventHandler creates a new mock instance. func NewMockAuthConfigEventHandler(ctrl *gomock.Controller) *MockAuthConfigEventHandler { mock := &MockAuthConfigEventHandler{ctrl: ctrl} mock.recorder = &MockAuthConfigEventHandlerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockAuthConfigEventHandler) EXPECT() *MockAuthConfigEventHandlerMockRecorder { return m.recorder } -// CreateAuthConfig mocks base method +// CreateAuthConfig mocks base method. func (m *MockAuthConfigEventHandler) CreateAuthConfig(obj *v1.AuthConfig) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "CreateAuthConfig", obj) @@ -45,27 +45,13 @@ func (m *MockAuthConfigEventHandler) CreateAuthConfig(obj *v1.AuthConfig) error return ret0 } -// CreateAuthConfig indicates an expected call of CreateAuthConfig +// CreateAuthConfig indicates an expected call of CreateAuthConfig. func (mr *MockAuthConfigEventHandlerMockRecorder) CreateAuthConfig(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateAuthConfig", reflect.TypeOf((*MockAuthConfigEventHandler)(nil).CreateAuthConfig), obj) } -// UpdateAuthConfig mocks base method -func (m *MockAuthConfigEventHandler) UpdateAuthConfig(old, new *v1.AuthConfig) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateAuthConfig", old, new) - ret0, _ := ret[0].(error) - return ret0 -} - -// UpdateAuthConfig indicates an expected call of UpdateAuthConfig -func (mr *MockAuthConfigEventHandlerMockRecorder) UpdateAuthConfig(old, new interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateAuthConfig", reflect.TypeOf((*MockAuthConfigEventHandler)(nil).UpdateAuthConfig), old, new) -} - -// DeleteAuthConfig mocks base method +// DeleteAuthConfig mocks base method. func (m *MockAuthConfigEventHandler) DeleteAuthConfig(obj *v1.AuthConfig) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "DeleteAuthConfig", obj) @@ -73,13 +59,13 @@ func (m *MockAuthConfigEventHandler) DeleteAuthConfig(obj *v1.AuthConfig) error return ret0 } -// DeleteAuthConfig indicates an expected call of DeleteAuthConfig +// DeleteAuthConfig indicates an expected call of DeleteAuthConfig. func (mr *MockAuthConfigEventHandlerMockRecorder) DeleteAuthConfig(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAuthConfig", reflect.TypeOf((*MockAuthConfigEventHandler)(nil).DeleteAuthConfig), obj) } -// GenericAuthConfig mocks base method +// GenericAuthConfig mocks base method. func (m *MockAuthConfigEventHandler) GenericAuthConfig(obj *v1.AuthConfig) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GenericAuthConfig", obj) @@ -87,36 +73,50 @@ func (m *MockAuthConfigEventHandler) GenericAuthConfig(obj *v1.AuthConfig) error return ret0 } -// GenericAuthConfig indicates an expected call of GenericAuthConfig +// GenericAuthConfig indicates an expected call of GenericAuthConfig. func (mr *MockAuthConfigEventHandlerMockRecorder) GenericAuthConfig(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericAuthConfig", reflect.TypeOf((*MockAuthConfigEventHandler)(nil).GenericAuthConfig), obj) } -// MockAuthConfigEventWatcher is a mock of AuthConfigEventWatcher interface +// UpdateAuthConfig mocks base method. +func (m *MockAuthConfigEventHandler) UpdateAuthConfig(old, new *v1.AuthConfig) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateAuthConfig", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateAuthConfig indicates an expected call of UpdateAuthConfig. +func (mr *MockAuthConfigEventHandlerMockRecorder) UpdateAuthConfig(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateAuthConfig", reflect.TypeOf((*MockAuthConfigEventHandler)(nil).UpdateAuthConfig), old, new) +} + +// MockAuthConfigEventWatcher is a mock of AuthConfigEventWatcher interface. type MockAuthConfigEventWatcher struct { ctrl *gomock.Controller recorder *MockAuthConfigEventWatcherMockRecorder } -// MockAuthConfigEventWatcherMockRecorder is the mock recorder for MockAuthConfigEventWatcher +// MockAuthConfigEventWatcherMockRecorder is the mock recorder for MockAuthConfigEventWatcher. type MockAuthConfigEventWatcherMockRecorder struct { mock *MockAuthConfigEventWatcher } -// NewMockAuthConfigEventWatcher creates a new mock instance +// NewMockAuthConfigEventWatcher creates a new mock instance. func NewMockAuthConfigEventWatcher(ctrl *gomock.Controller) *MockAuthConfigEventWatcher { mock := &MockAuthConfigEventWatcher{ctrl: ctrl} mock.recorder = &MockAuthConfigEventWatcherMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockAuthConfigEventWatcher) EXPECT() *MockAuthConfigEventWatcherMockRecorder { return m.recorder } -// AddEventHandler mocks base method +// AddEventHandler mocks base method. func (m *MockAuthConfigEventWatcher) AddEventHandler(ctx context.Context, h controller.AuthConfigEventHandler, predicates ...predicate.Predicate) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, h} @@ -128,7 +128,7 @@ func (m *MockAuthConfigEventWatcher) AddEventHandler(ctx context.Context, h cont return ret0 } -// AddEventHandler indicates an expected call of AddEventHandler +// AddEventHandler indicates an expected call of AddEventHandler. func (mr *MockAuthConfigEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, h}, predicates...) diff --git a/pkg/api/enterprise.gloo.solo.io/v1/controller/mocks/multicluster_reconcilers.go b/pkg/api/enterprise.gloo.solo.io/v1/controller/mocks/multicluster_reconcilers.go index 32ce2f013..71a9e746e 100644 --- a/pkg/api/enterprise.gloo.solo.io/v1/controller/mocks/multicluster_reconcilers.go +++ b/pkg/api/enterprise.gloo.solo.io/v1/controller/mocks/multicluster_reconcilers.go @@ -15,30 +15,30 @@ import ( predicate "sigs.k8s.io/controller-runtime/pkg/predicate" ) -// MockMulticlusterAuthConfigReconciler is a mock of MulticlusterAuthConfigReconciler interface +// MockMulticlusterAuthConfigReconciler is a mock of MulticlusterAuthConfigReconciler interface. type MockMulticlusterAuthConfigReconciler struct { ctrl *gomock.Controller recorder *MockMulticlusterAuthConfigReconcilerMockRecorder } -// MockMulticlusterAuthConfigReconcilerMockRecorder is the mock recorder for MockMulticlusterAuthConfigReconciler +// MockMulticlusterAuthConfigReconcilerMockRecorder is the mock recorder for MockMulticlusterAuthConfigReconciler. type MockMulticlusterAuthConfigReconcilerMockRecorder struct { mock *MockMulticlusterAuthConfigReconciler } -// NewMockMulticlusterAuthConfigReconciler creates a new mock instance +// NewMockMulticlusterAuthConfigReconciler creates a new mock instance. func NewMockMulticlusterAuthConfigReconciler(ctrl *gomock.Controller) *MockMulticlusterAuthConfigReconciler { mock := &MockMulticlusterAuthConfigReconciler{ctrl: ctrl} mock.recorder = &MockMulticlusterAuthConfigReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterAuthConfigReconciler) EXPECT() *MockMulticlusterAuthConfigReconcilerMockRecorder { return m.recorder } -// ReconcileAuthConfig mocks base method +// ReconcileAuthConfig mocks base method. func (m *MockMulticlusterAuthConfigReconciler) ReconcileAuthConfig(clusterName string, obj *v1.AuthConfig) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileAuthConfig", clusterName, obj) @@ -47,36 +47,36 @@ func (m *MockMulticlusterAuthConfigReconciler) ReconcileAuthConfig(clusterName s return ret0, ret1 } -// ReconcileAuthConfig indicates an expected call of ReconcileAuthConfig +// ReconcileAuthConfig indicates an expected call of ReconcileAuthConfig. func (mr *MockMulticlusterAuthConfigReconcilerMockRecorder) ReconcileAuthConfig(clusterName, obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileAuthConfig", reflect.TypeOf((*MockMulticlusterAuthConfigReconciler)(nil).ReconcileAuthConfig), clusterName, obj) } -// MockMulticlusterAuthConfigDeletionReconciler is a mock of MulticlusterAuthConfigDeletionReconciler interface +// MockMulticlusterAuthConfigDeletionReconciler is a mock of MulticlusterAuthConfigDeletionReconciler interface. type MockMulticlusterAuthConfigDeletionReconciler struct { ctrl *gomock.Controller recorder *MockMulticlusterAuthConfigDeletionReconcilerMockRecorder } -// MockMulticlusterAuthConfigDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterAuthConfigDeletionReconciler +// MockMulticlusterAuthConfigDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterAuthConfigDeletionReconciler. type MockMulticlusterAuthConfigDeletionReconcilerMockRecorder struct { mock *MockMulticlusterAuthConfigDeletionReconciler } -// NewMockMulticlusterAuthConfigDeletionReconciler creates a new mock instance +// NewMockMulticlusterAuthConfigDeletionReconciler creates a new mock instance. func NewMockMulticlusterAuthConfigDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterAuthConfigDeletionReconciler { mock := &MockMulticlusterAuthConfigDeletionReconciler{ctrl: ctrl} mock.recorder = &MockMulticlusterAuthConfigDeletionReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterAuthConfigDeletionReconciler) EXPECT() *MockMulticlusterAuthConfigDeletionReconcilerMockRecorder { return m.recorder } -// ReconcileAuthConfigDeletion mocks base method +// ReconcileAuthConfigDeletion mocks base method. func (m *MockMulticlusterAuthConfigDeletionReconciler) ReconcileAuthConfigDeletion(clusterName string, req reconcile.Request) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileAuthConfigDeletion", clusterName, req) @@ -84,36 +84,36 @@ func (m *MockMulticlusterAuthConfigDeletionReconciler) ReconcileAuthConfigDeleti return ret0 } -// ReconcileAuthConfigDeletion indicates an expected call of ReconcileAuthConfigDeletion +// ReconcileAuthConfigDeletion indicates an expected call of ReconcileAuthConfigDeletion. func (mr *MockMulticlusterAuthConfigDeletionReconcilerMockRecorder) ReconcileAuthConfigDeletion(clusterName, req interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileAuthConfigDeletion", reflect.TypeOf((*MockMulticlusterAuthConfigDeletionReconciler)(nil).ReconcileAuthConfigDeletion), clusterName, req) } -// MockMulticlusterAuthConfigReconcileLoop is a mock of MulticlusterAuthConfigReconcileLoop interface +// MockMulticlusterAuthConfigReconcileLoop is a mock of MulticlusterAuthConfigReconcileLoop interface. type MockMulticlusterAuthConfigReconcileLoop struct { ctrl *gomock.Controller recorder *MockMulticlusterAuthConfigReconcileLoopMockRecorder } -// MockMulticlusterAuthConfigReconcileLoopMockRecorder is the mock recorder for MockMulticlusterAuthConfigReconcileLoop +// MockMulticlusterAuthConfigReconcileLoopMockRecorder is the mock recorder for MockMulticlusterAuthConfigReconcileLoop. type MockMulticlusterAuthConfigReconcileLoopMockRecorder struct { mock *MockMulticlusterAuthConfigReconcileLoop } -// NewMockMulticlusterAuthConfigReconcileLoop creates a new mock instance +// NewMockMulticlusterAuthConfigReconcileLoop creates a new mock instance. func NewMockMulticlusterAuthConfigReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterAuthConfigReconcileLoop { mock := &MockMulticlusterAuthConfigReconcileLoop{ctrl: ctrl} mock.recorder = &MockMulticlusterAuthConfigReconcileLoopMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterAuthConfigReconcileLoop) EXPECT() *MockMulticlusterAuthConfigReconcileLoopMockRecorder { return m.recorder } -// AddMulticlusterAuthConfigReconciler mocks base method +// AddMulticlusterAuthConfigReconciler mocks base method. func (m *MockMulticlusterAuthConfigReconcileLoop) AddMulticlusterAuthConfigReconciler(ctx context.Context, rec controller.MulticlusterAuthConfigReconciler, predicates ...predicate.Predicate) { m.ctrl.T.Helper() varargs := []interface{}{ctx, rec} @@ -123,7 +123,7 @@ func (m *MockMulticlusterAuthConfigReconcileLoop) AddMulticlusterAuthConfigRecon m.ctrl.Call(m, "AddMulticlusterAuthConfigReconciler", varargs...) } -// AddMulticlusterAuthConfigReconciler indicates an expected call of AddMulticlusterAuthConfigReconciler +// AddMulticlusterAuthConfigReconciler indicates an expected call of AddMulticlusterAuthConfigReconciler. func (mr *MockMulticlusterAuthConfigReconcileLoopMockRecorder) AddMulticlusterAuthConfigReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, rec}, predicates...) diff --git a/pkg/api/enterprise.gloo.solo.io/v1/controller/mocks/reconcilers.go b/pkg/api/enterprise.gloo.solo.io/v1/controller/mocks/reconcilers.go index d6732b94d..4d316d717 100644 --- a/pkg/api/enterprise.gloo.solo.io/v1/controller/mocks/reconcilers.go +++ b/pkg/api/enterprise.gloo.solo.io/v1/controller/mocks/reconcilers.go @@ -15,30 +15,30 @@ import ( predicate "sigs.k8s.io/controller-runtime/pkg/predicate" ) -// MockAuthConfigReconciler is a mock of AuthConfigReconciler interface +// MockAuthConfigReconciler is a mock of AuthConfigReconciler interface. type MockAuthConfigReconciler struct { ctrl *gomock.Controller recorder *MockAuthConfigReconcilerMockRecorder } -// MockAuthConfigReconcilerMockRecorder is the mock recorder for MockAuthConfigReconciler +// MockAuthConfigReconcilerMockRecorder is the mock recorder for MockAuthConfigReconciler. type MockAuthConfigReconcilerMockRecorder struct { mock *MockAuthConfigReconciler } -// NewMockAuthConfigReconciler creates a new mock instance +// NewMockAuthConfigReconciler creates a new mock instance. func NewMockAuthConfigReconciler(ctrl *gomock.Controller) *MockAuthConfigReconciler { mock := &MockAuthConfigReconciler{ctrl: ctrl} mock.recorder = &MockAuthConfigReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockAuthConfigReconciler) EXPECT() *MockAuthConfigReconcilerMockRecorder { return m.recorder } -// ReconcileAuthConfig mocks base method +// ReconcileAuthConfig mocks base method. func (m *MockAuthConfigReconciler) ReconcileAuthConfig(obj *v1.AuthConfig) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileAuthConfig", obj) @@ -47,36 +47,36 @@ func (m *MockAuthConfigReconciler) ReconcileAuthConfig(obj *v1.AuthConfig) (reco return ret0, ret1 } -// ReconcileAuthConfig indicates an expected call of ReconcileAuthConfig +// ReconcileAuthConfig indicates an expected call of ReconcileAuthConfig. func (mr *MockAuthConfigReconcilerMockRecorder) ReconcileAuthConfig(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileAuthConfig", reflect.TypeOf((*MockAuthConfigReconciler)(nil).ReconcileAuthConfig), obj) } -// MockAuthConfigDeletionReconciler is a mock of AuthConfigDeletionReconciler interface +// MockAuthConfigDeletionReconciler is a mock of AuthConfigDeletionReconciler interface. type MockAuthConfigDeletionReconciler struct { ctrl *gomock.Controller recorder *MockAuthConfigDeletionReconcilerMockRecorder } -// MockAuthConfigDeletionReconcilerMockRecorder is the mock recorder for MockAuthConfigDeletionReconciler +// MockAuthConfigDeletionReconcilerMockRecorder is the mock recorder for MockAuthConfigDeletionReconciler. type MockAuthConfigDeletionReconcilerMockRecorder struct { mock *MockAuthConfigDeletionReconciler } -// NewMockAuthConfigDeletionReconciler creates a new mock instance +// NewMockAuthConfigDeletionReconciler creates a new mock instance. func NewMockAuthConfigDeletionReconciler(ctrl *gomock.Controller) *MockAuthConfigDeletionReconciler { mock := &MockAuthConfigDeletionReconciler{ctrl: ctrl} mock.recorder = &MockAuthConfigDeletionReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockAuthConfigDeletionReconciler) EXPECT() *MockAuthConfigDeletionReconcilerMockRecorder { return m.recorder } -// ReconcileAuthConfigDeletion mocks base method +// ReconcileAuthConfigDeletion mocks base method. func (m *MockAuthConfigDeletionReconciler) ReconcileAuthConfigDeletion(req reconcile.Request) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileAuthConfigDeletion", req) @@ -84,51 +84,36 @@ func (m *MockAuthConfigDeletionReconciler) ReconcileAuthConfigDeletion(req recon return ret0 } -// ReconcileAuthConfigDeletion indicates an expected call of ReconcileAuthConfigDeletion +// ReconcileAuthConfigDeletion indicates an expected call of ReconcileAuthConfigDeletion. func (mr *MockAuthConfigDeletionReconcilerMockRecorder) ReconcileAuthConfigDeletion(req interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileAuthConfigDeletion", reflect.TypeOf((*MockAuthConfigDeletionReconciler)(nil).ReconcileAuthConfigDeletion), req) } -// MockAuthConfigFinalizer is a mock of AuthConfigFinalizer interface +// MockAuthConfigFinalizer is a mock of AuthConfigFinalizer interface. type MockAuthConfigFinalizer struct { ctrl *gomock.Controller recorder *MockAuthConfigFinalizerMockRecorder } -// MockAuthConfigFinalizerMockRecorder is the mock recorder for MockAuthConfigFinalizer +// MockAuthConfigFinalizerMockRecorder is the mock recorder for MockAuthConfigFinalizer. type MockAuthConfigFinalizerMockRecorder struct { mock *MockAuthConfigFinalizer } -// NewMockAuthConfigFinalizer creates a new mock instance +// NewMockAuthConfigFinalizer creates a new mock instance. func NewMockAuthConfigFinalizer(ctrl *gomock.Controller) *MockAuthConfigFinalizer { mock := &MockAuthConfigFinalizer{ctrl: ctrl} mock.recorder = &MockAuthConfigFinalizerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockAuthConfigFinalizer) EXPECT() *MockAuthConfigFinalizerMockRecorder { return m.recorder } -// ReconcileAuthConfig mocks base method -func (m *MockAuthConfigFinalizer) ReconcileAuthConfig(obj *v1.AuthConfig) (reconcile.Result, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ReconcileAuthConfig", obj) - ret0, _ := ret[0].(reconcile.Result) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ReconcileAuthConfig indicates an expected call of ReconcileAuthConfig -func (mr *MockAuthConfigFinalizerMockRecorder) ReconcileAuthConfig(obj interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileAuthConfig", reflect.TypeOf((*MockAuthConfigFinalizer)(nil).ReconcileAuthConfig), obj) -} - -// AuthConfigFinalizerName mocks base method +// AuthConfigFinalizerName mocks base method. func (m *MockAuthConfigFinalizer) AuthConfigFinalizerName() string { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "AuthConfigFinalizerName") @@ -136,13 +121,13 @@ func (m *MockAuthConfigFinalizer) AuthConfigFinalizerName() string { return ret0 } -// AuthConfigFinalizerName indicates an expected call of AuthConfigFinalizerName +// AuthConfigFinalizerName indicates an expected call of AuthConfigFinalizerName. func (mr *MockAuthConfigFinalizerMockRecorder) AuthConfigFinalizerName() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AuthConfigFinalizerName", reflect.TypeOf((*MockAuthConfigFinalizer)(nil).AuthConfigFinalizerName)) } -// FinalizeAuthConfig mocks base method +// FinalizeAuthConfig mocks base method. func (m *MockAuthConfigFinalizer) FinalizeAuthConfig(obj *v1.AuthConfig) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "FinalizeAuthConfig", obj) @@ -150,36 +135,51 @@ func (m *MockAuthConfigFinalizer) FinalizeAuthConfig(obj *v1.AuthConfig) error { return ret0 } -// FinalizeAuthConfig indicates an expected call of FinalizeAuthConfig +// FinalizeAuthConfig indicates an expected call of FinalizeAuthConfig. func (mr *MockAuthConfigFinalizerMockRecorder) FinalizeAuthConfig(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeAuthConfig", reflect.TypeOf((*MockAuthConfigFinalizer)(nil).FinalizeAuthConfig), obj) } -// MockAuthConfigReconcileLoop is a mock of AuthConfigReconcileLoop interface +// ReconcileAuthConfig mocks base method. +func (m *MockAuthConfigFinalizer) ReconcileAuthConfig(obj *v1.AuthConfig) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileAuthConfig", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileAuthConfig indicates an expected call of ReconcileAuthConfig. +func (mr *MockAuthConfigFinalizerMockRecorder) ReconcileAuthConfig(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileAuthConfig", reflect.TypeOf((*MockAuthConfigFinalizer)(nil).ReconcileAuthConfig), obj) +} + +// MockAuthConfigReconcileLoop is a mock of AuthConfigReconcileLoop interface. type MockAuthConfigReconcileLoop struct { ctrl *gomock.Controller recorder *MockAuthConfigReconcileLoopMockRecorder } -// MockAuthConfigReconcileLoopMockRecorder is the mock recorder for MockAuthConfigReconcileLoop +// MockAuthConfigReconcileLoopMockRecorder is the mock recorder for MockAuthConfigReconcileLoop. type MockAuthConfigReconcileLoopMockRecorder struct { mock *MockAuthConfigReconcileLoop } -// NewMockAuthConfigReconcileLoop creates a new mock instance +// NewMockAuthConfigReconcileLoop creates a new mock instance. func NewMockAuthConfigReconcileLoop(ctrl *gomock.Controller) *MockAuthConfigReconcileLoop { mock := &MockAuthConfigReconcileLoop{ctrl: ctrl} mock.recorder = &MockAuthConfigReconcileLoopMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockAuthConfigReconcileLoop) EXPECT() *MockAuthConfigReconcileLoopMockRecorder { return m.recorder } -// RunAuthConfigReconciler mocks base method +// RunAuthConfigReconciler mocks base method. func (m *MockAuthConfigReconcileLoop) RunAuthConfigReconciler(ctx context.Context, rec controller.AuthConfigReconciler, predicates ...predicate.Predicate) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, rec} @@ -191,7 +191,7 @@ func (m *MockAuthConfigReconcileLoop) RunAuthConfigReconciler(ctx context.Contex return ret0 } -// RunAuthConfigReconciler indicates an expected call of RunAuthConfigReconciler +// RunAuthConfigReconciler indicates an expected call of RunAuthConfigReconciler. func (mr *MockAuthConfigReconcileLoopMockRecorder) RunAuthConfigReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, rec}, predicates...) diff --git a/pkg/api/enterprise.gloo.solo.io/v1/extauth-internal.pb.clone.go b/pkg/api/enterprise.gloo.solo.io/v1/extauth-internal.pb.clone.go new file mode 100644 index 000000000..2f34209c3 --- /dev/null +++ b/pkg/api/enterprise.gloo.solo.io/v1/extauth-internal.pb.clone.go @@ -0,0 +1,1724 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_emptypb "google.golang.org/protobuf/types/known/emptypb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *ExtAuthConfig) Clone() proto.Message { + var target *ExtAuthConfig + if m == nil { + return target + } + target = &ExtAuthConfig{} + + target.AuthConfigRefName = m.GetAuthConfigRefName() + + if m.GetConfigs() != nil { + target.Configs = make([]*ExtAuthConfig_Config, len(m.GetConfigs())) + for idx, v := range m.GetConfigs() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Configs[idx] = h.Clone().(*ExtAuthConfig_Config) + } else { + target.Configs[idx] = proto.Clone(v).(*ExtAuthConfig_Config) + } + + } + } + + if h, ok := interface{}(m.GetBooleanExpr()).(clone.Cloner); ok { + target.BooleanExpr = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.BooleanExpr = proto.Clone(m.GetBooleanExpr()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + target.FailOnRedirect = m.GetFailOnRedirect() + + return target +} + +// Clone function +func (m *ApiKeyCreateRequest) Clone() proto.Message { + var target *ApiKeyCreateRequest + if m == nil { + return target + } + target = &ApiKeyCreateRequest{} + + if m.GetApiKeys() != nil { + target.ApiKeys = make([]*ApiKey, len(m.GetApiKeys())) + for idx, v := range m.GetApiKeys() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ApiKeys[idx] = h.Clone().(*ApiKey) + } else { + target.ApiKeys[idx] = proto.Clone(v).(*ApiKey) + } + + } + } + + if m.GetRawApiKeys() != nil { + target.RawApiKeys = make([]string, len(m.GetRawApiKeys())) + for idx, v := range m.GetRawApiKeys() { + + target.RawApiKeys[idx] = v + + } + } + + return target +} + +// Clone function +func (m *ApiKeyCreateResponse) Clone() proto.Message { + var target *ApiKeyCreateResponse + if m == nil { + return target + } + target = &ApiKeyCreateResponse{} + + if m.GetApiKeys() != nil { + target.ApiKeys = make([]*ApiKey, len(m.GetApiKeys())) + for idx, v := range m.GetApiKeys() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ApiKeys[idx] = h.Clone().(*ApiKey) + } else { + target.ApiKeys[idx] = proto.Clone(v).(*ApiKey) + } + + } + } + + return target +} + +// Clone function +func (m *ApiKeyReadRequest) Clone() proto.Message { + var target *ApiKeyReadRequest + if m == nil { + return target + } + target = &ApiKeyReadRequest{} + + if m.GetRawApiKeys() != nil { + target.RawApiKeys = make([]string, len(m.GetRawApiKeys())) + for idx, v := range m.GetRawApiKeys() { + + target.RawApiKeys[idx] = v + + } + } + + if m.GetLabels() != nil { + target.Labels = make([]string, len(m.GetLabels())) + for idx, v := range m.GetLabels() { + + target.Labels[idx] = v + + } + } + + return target +} + +// Clone function +func (m *ApiKeyReadResponse) Clone() proto.Message { + var target *ApiKeyReadResponse + if m == nil { + return target + } + target = &ApiKeyReadResponse{} + + if m.GetApiKeys() != nil { + target.ApiKeys = make([]*ApiKey, len(m.GetApiKeys())) + for idx, v := range m.GetApiKeys() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ApiKeys[idx] = h.Clone().(*ApiKey) + } else { + target.ApiKeys[idx] = proto.Clone(v).(*ApiKey) + } + + } + } + + return target +} + +// Clone function +func (m *ApiKeyUpdateRequest) Clone() proto.Message { + var target *ApiKeyUpdateRequest + if m == nil { + return target + } + target = &ApiKeyUpdateRequest{} + + target.Upsert = m.GetUpsert() + + if m.GetApiKeys() != nil { + target.ApiKeys = make([]*ApiKey, len(m.GetApiKeys())) + for idx, v := range m.GetApiKeys() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ApiKeys[idx] = h.Clone().(*ApiKey) + } else { + target.ApiKeys[idx] = proto.Clone(v).(*ApiKey) + } + + } + } + + if m.GetRawApiKeys() != nil { + target.RawApiKeys = make([]string, len(m.GetRawApiKeys())) + for idx, v := range m.GetRawApiKeys() { + + target.RawApiKeys[idx] = v + + } + } + + return target +} + +// Clone function +func (m *ApiKeyUpdateResponse) Clone() proto.Message { + var target *ApiKeyUpdateResponse + if m == nil { + return target + } + target = &ApiKeyUpdateResponse{} + + if m.GetApiKeys() != nil { + target.ApiKeys = make([]*ApiKey, len(m.GetApiKeys())) + for idx, v := range m.GetApiKeys() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ApiKeys[idx] = h.Clone().(*ApiKey) + } else { + target.ApiKeys[idx] = proto.Clone(v).(*ApiKey) + } + + } + } + + return target +} + +// Clone function +func (m *ApiKeyDeleteRequest) Clone() proto.Message { + var target *ApiKeyDeleteRequest + if m == nil { + return target + } + target = &ApiKeyDeleteRequest{} + + if m.GetRawApiKeys() != nil { + target.RawApiKeys = make([]string, len(m.GetRawApiKeys())) + for idx, v := range m.GetRawApiKeys() { + + target.RawApiKeys[idx] = v + + } + } + + if m.GetLabels() != nil { + target.Labels = make([]string, len(m.GetLabels())) + for idx, v := range m.GetLabels() { + + target.Labels[idx] = v + + } + } + + return target +} + +// Clone function +func (m *ApiKeyDeleteResponse) Clone() proto.Message { + var target *ApiKeyDeleteResponse + if m == nil { + return target + } + target = &ApiKeyDeleteResponse{} + + return target +} + +// Clone function +func (m *ExtAuthConfig_Azure) Clone() proto.Message { + var target *ExtAuthConfig_Azure + if m == nil { + return target + } + target = &ExtAuthConfig_Azure{} + + target.ClientId = m.GetClientId() + + target.TenantId = m.GetTenantId() + + target.ClientSecret = m.GetClientSecret() + + if h, ok := interface{}(m.GetClaimsCachingOptions()).(clone.Cloner); ok { + target.ClaimsCachingOptions = h.Clone().(*RedisOptions) + } else { + target.ClaimsCachingOptions = proto.Clone(m.GetClaimsCachingOptions()).(*RedisOptions) + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_ClaimToHeader) Clone() proto.Message { + var target *ExtAuthConfig_ClaimToHeader + if m == nil { + return target + } + target = &ExtAuthConfig_ClaimToHeader{} + + target.Claim = m.GetClaim() + + target.Header = m.GetHeader() + + target.Append = m.GetAppend() + + return target +} + +// Clone function +func (m *ExtAuthConfig_BasicAuthInternal) Clone() proto.Message { + var target *ExtAuthConfig_BasicAuthInternal + if m == nil { + return target + } + target = &ExtAuthConfig_BasicAuthInternal{} + + target.Realm = m.GetRealm() + + if h, ok := interface{}(m.GetEncryption()).(clone.Cloner); ok { + target.Encryption = h.Clone().(*ExtAuthConfig_BasicAuthInternal_EncryptionType) + } else { + target.Encryption = proto.Clone(m.GetEncryption()).(*ExtAuthConfig_BasicAuthInternal_EncryptionType) + } + + switch m.UserSource.(type) { + + case *ExtAuthConfig_BasicAuthInternal_UserList_: + + if h, ok := interface{}(m.GetUserList()).(clone.Cloner); ok { + target.UserSource = &ExtAuthConfig_BasicAuthInternal_UserList_{ + UserList: h.Clone().(*ExtAuthConfig_BasicAuthInternal_UserList), + } + } else { + target.UserSource = &ExtAuthConfig_BasicAuthInternal_UserList_{ + UserList: proto.Clone(m.GetUserList()).(*ExtAuthConfig_BasicAuthInternal_UserList), + } + } + + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_OAuthConfig) Clone() proto.Message { + var target *ExtAuthConfig_OAuthConfig + if m == nil { + return target + } + target = &ExtAuthConfig_OAuthConfig{} + + target.ClientId = m.GetClientId() + + target.ClientSecret = m.GetClientSecret() + + target.IssuerUrl = m.GetIssuerUrl() + + if m.GetAuthEndpointQueryParams() != nil { + target.AuthEndpointQueryParams = make(map[string]string, len(m.GetAuthEndpointQueryParams())) + for k, v := range m.GetAuthEndpointQueryParams() { + + target.AuthEndpointQueryParams[k] = v + + } + } + + target.AppUrl = m.GetAppUrl() + + target.CallbackPath = m.GetCallbackPath() + + if m.GetScopes() != nil { + target.Scopes = make([]string, len(m.GetScopes())) + for idx, v := range m.GetScopes() { + + target.Scopes[idx] = v + + } + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_UserSessionConfig) Clone() proto.Message { + var target *ExtAuthConfig_UserSessionConfig + if m == nil { + return target + } + target = &ExtAuthConfig_UserSessionConfig{} + + target.FailOnFetchFailure = m.GetFailOnFetchFailure() + + if h, ok := interface{}(m.GetCookieOptions()).(clone.Cloner); ok { + target.CookieOptions = h.Clone().(*UserSession_CookieOptions) + } else { + target.CookieOptions = proto.Clone(m.GetCookieOptions()).(*UserSession_CookieOptions) + } + + if h, ok := interface{}(m.GetCipherConfig()).(clone.Cloner); ok { + target.CipherConfig = h.Clone().(*ExtAuthConfig_UserSessionConfig_CipherConfig) + } else { + target.CipherConfig = proto.Clone(m.GetCipherConfig()).(*ExtAuthConfig_UserSessionConfig_CipherConfig) + } + + switch m.Session.(type) { + + case *ExtAuthConfig_UserSessionConfig_Cookie: + + if h, ok := interface{}(m.GetCookie()).(clone.Cloner); ok { + target.Session = &ExtAuthConfig_UserSessionConfig_Cookie{ + Cookie: h.Clone().(*UserSession_InternalSession), + } + } else { + target.Session = &ExtAuthConfig_UserSessionConfig_Cookie{ + Cookie: proto.Clone(m.GetCookie()).(*UserSession_InternalSession), + } + } + + case *ExtAuthConfig_UserSessionConfig_Redis: + + if h, ok := interface{}(m.GetRedis()).(clone.Cloner); ok { + target.Session = &ExtAuthConfig_UserSessionConfig_Redis{ + Redis: h.Clone().(*UserSession_RedisSession), + } + } else { + target.Session = &ExtAuthConfig_UserSessionConfig_Redis{ + Redis: proto.Clone(m.GetRedis()).(*UserSession_RedisSession), + } + } + + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig) Clone() proto.Message { + var target *ExtAuthConfig_OidcAuthorizationCodeConfig + if m == nil { + return target + } + target = &ExtAuthConfig_OidcAuthorizationCodeConfig{} + + target.ClientId = m.GetClientId() + + target.ClientSecret = m.GetClientSecret() + + target.IssuerUrl = m.GetIssuerUrl() + + if m.GetAuthEndpointQueryParams() != nil { + target.AuthEndpointQueryParams = make(map[string]string, len(m.GetAuthEndpointQueryParams())) + for k, v := range m.GetAuthEndpointQueryParams() { + + target.AuthEndpointQueryParams[k] = v + + } + } + + if m.GetTokenEndpointQueryParams() != nil { + target.TokenEndpointQueryParams = make(map[string]string, len(m.GetTokenEndpointQueryParams())) + for k, v := range m.GetTokenEndpointQueryParams() { + + target.TokenEndpointQueryParams[k] = v + + } + } + + target.AppUrl = m.GetAppUrl() + + target.CallbackPath = m.GetCallbackPath() + + target.LogoutPath = m.GetLogoutPath() + + target.AfterLogoutUrl = m.GetAfterLogoutUrl() + + if m.GetScopes() != nil { + target.Scopes = make([]string, len(m.GetScopes())) + for idx, v := range m.GetScopes() { + + target.Scopes[idx] = v + + } + } + + if h, ok := interface{}(m.GetSession()).(clone.Cloner); ok { + target.Session = h.Clone().(*UserSession) + } else { + target.Session = proto.Clone(m.GetSession()).(*UserSession) + } + + if h, ok := interface{}(m.GetHeaders()).(clone.Cloner); ok { + target.Headers = h.Clone().(*HeaderConfiguration) + } else { + target.Headers = proto.Clone(m.GetHeaders()).(*HeaderConfiguration) + } + + if h, ok := interface{}(m.GetDiscoveryOverride()).(clone.Cloner); ok { + target.DiscoveryOverride = h.Clone().(*DiscoveryOverride) + } else { + target.DiscoveryOverride = proto.Clone(m.GetDiscoveryOverride()).(*DiscoveryOverride) + } + + if h, ok := interface{}(m.GetDiscoveryPollInterval()).(clone.Cloner); ok { + target.DiscoveryPollInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.DiscoveryPollInterval = proto.Clone(m.GetDiscoveryPollInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetJwksCacheRefreshPolicy()).(clone.Cloner); ok { + target.JwksCacheRefreshPolicy = h.Clone().(*JwksOnDemandCacheRefreshPolicy) + } else { + target.JwksCacheRefreshPolicy = proto.Clone(m.GetJwksCacheRefreshPolicy()).(*JwksOnDemandCacheRefreshPolicy) + } + + target.SessionIdHeaderName = m.GetSessionIdHeaderName() + + target.ParseCallbackPathAsRegex = m.GetParseCallbackPathAsRegex() + + if h, ok := interface{}(m.GetAutoMapFromMetadata()).(clone.Cloner); ok { + target.AutoMapFromMetadata = h.Clone().(*AutoMapFromMetadata) + } else { + target.AutoMapFromMetadata = proto.Clone(m.GetAutoMapFromMetadata()).(*AutoMapFromMetadata) + } + + if h, ok := interface{}(m.GetEndSessionProperties()).(clone.Cloner); ok { + target.EndSessionProperties = h.Clone().(*EndSessionProperties) + } else { + target.EndSessionProperties = proto.Clone(m.GetEndSessionProperties()).(*EndSessionProperties) + } + + if h, ok := interface{}(m.GetUserSession()).(clone.Cloner); ok { + target.UserSession = h.Clone().(*ExtAuthConfig_UserSessionConfig) + } else { + target.UserSession = proto.Clone(m.GetUserSession()).(*ExtAuthConfig_UserSessionConfig) + } + + if h, ok := interface{}(m.GetPkJwtClientAuthenticationConfig()).(clone.Cloner); ok { + target.PkJwtClientAuthenticationConfig = h.Clone().(*ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig) + } else { + target.PkJwtClientAuthenticationConfig = proto.Clone(m.GetPkJwtClientAuthenticationConfig()).(*ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig) + } + + if h, ok := interface{}(m.GetAccessToken()).(clone.Cloner); ok { + target.AccessToken = h.Clone().(*ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken) + } else { + target.AccessToken = proto.Clone(m.GetAccessToken()).(*ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken) + } + + if h, ok := interface{}(m.GetIdentityToken()).(clone.Cloner); ok { + target.IdentityToken = h.Clone().(*ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken) + } else { + target.IdentityToken = proto.Clone(m.GetIdentityToken()).(*ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken) + } + + if h, ok := interface{}(m.GetFrontChannelLogout()).(clone.Cloner); ok { + target.FrontChannelLogout = h.Clone().(*ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout) + } else { + target.FrontChannelLogout = proto.Clone(m.GetFrontChannelLogout()).(*ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout) + } + + if m.GetDynamicMetadataFromClaims() != nil { + target.DynamicMetadataFromClaims = make(map[string]string, len(m.GetDynamicMetadataFromClaims())) + for k, v := range m.GetDynamicMetadataFromClaims() { + + target.DynamicMetadataFromClaims[k] = v + + } + } + + switch m.Provider.(type) { + + case *ExtAuthConfig_OidcAuthorizationCodeConfig_Default_: + + if h, ok := interface{}(m.GetDefault()).(clone.Cloner); ok { + target.Provider = &ExtAuthConfig_OidcAuthorizationCodeConfig_Default_{ + Default: h.Clone().(*ExtAuthConfig_OidcAuthorizationCodeConfig_Default), + } + } else { + target.Provider = &ExtAuthConfig_OidcAuthorizationCodeConfig_Default_{ + Default: proto.Clone(m.GetDefault()).(*ExtAuthConfig_OidcAuthorizationCodeConfig_Default), + } + } + + case *ExtAuthConfig_OidcAuthorizationCodeConfig_Azure: + + if h, ok := interface{}(m.GetAzure()).(clone.Cloner); ok { + target.Provider = &ExtAuthConfig_OidcAuthorizationCodeConfig_Azure{ + Azure: h.Clone().(*ExtAuthConfig_Azure), + } + } else { + target.Provider = &ExtAuthConfig_OidcAuthorizationCodeConfig_Azure{ + Azure: proto.Clone(m.GetAzure()).(*ExtAuthConfig_Azure), + } + } + + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_AccessTokenValidationConfig) Clone() proto.Message { + var target *ExtAuthConfig_AccessTokenValidationConfig + if m == nil { + return target + } + target = &ExtAuthConfig_AccessTokenValidationConfig{} + + target.UserinfoUrl = m.GetUserinfoUrl() + + if h, ok := interface{}(m.GetCacheTimeout()).(clone.Cloner); ok { + target.CacheTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.CacheTimeout = proto.Clone(m.GetCacheTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if m.GetDynamicMetadataFromClaims() != nil { + target.DynamicMetadataFromClaims = make(map[string]string, len(m.GetDynamicMetadataFromClaims())) + for k, v := range m.GetDynamicMetadataFromClaims() { + + target.DynamicMetadataFromClaims[k] = v + + } + } + + if m.GetClaimsToHeaders() != nil { + target.ClaimsToHeaders = make([]*ExtAuthConfig_ClaimToHeader, len(m.GetClaimsToHeaders())) + for idx, v := range m.GetClaimsToHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ClaimsToHeaders[idx] = h.Clone().(*ExtAuthConfig_ClaimToHeader) + } else { + target.ClaimsToHeaders[idx] = proto.Clone(v).(*ExtAuthConfig_ClaimToHeader) + } + + } + } + + switch m.ValidationType.(type) { + + case *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionUrl: + + target.ValidationType = &ExtAuthConfig_AccessTokenValidationConfig_IntrospectionUrl{ + IntrospectionUrl: m.GetIntrospectionUrl(), + } + + case *ExtAuthConfig_AccessTokenValidationConfig_Jwt: + + if h, ok := interface{}(m.GetJwt()).(clone.Cloner); ok { + target.ValidationType = &ExtAuthConfig_AccessTokenValidationConfig_Jwt{ + Jwt: h.Clone().(*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation), + } + } else { + target.ValidationType = &ExtAuthConfig_AccessTokenValidationConfig_Jwt{ + Jwt: proto.Clone(m.GetJwt()).(*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation), + } + } + + case *ExtAuthConfig_AccessTokenValidationConfig_Introspection: + + if h, ok := interface{}(m.GetIntrospection()).(clone.Cloner); ok { + target.ValidationType = &ExtAuthConfig_AccessTokenValidationConfig_Introspection{ + Introspection: h.Clone().(*ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation), + } + } else { + target.ValidationType = &ExtAuthConfig_AccessTokenValidationConfig_Introspection{ + Introspection: proto.Clone(m.GetIntrospection()).(*ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation), + } + } + + } + + switch m.ScopeValidation.(type) { + + case *ExtAuthConfig_AccessTokenValidationConfig_RequiredScopes: + + if h, ok := interface{}(m.GetRequiredScopes()).(clone.Cloner); ok { + target.ScopeValidation = &ExtAuthConfig_AccessTokenValidationConfig_RequiredScopes{ + RequiredScopes: h.Clone().(*ExtAuthConfig_AccessTokenValidationConfig_ScopeList), + } + } else { + target.ScopeValidation = &ExtAuthConfig_AccessTokenValidationConfig_RequiredScopes{ + RequiredScopes: proto.Clone(m.GetRequiredScopes()).(*ExtAuthConfig_AccessTokenValidationConfig_ScopeList), + } + } + + } + + switch m.Provider.(type) { + + case *ExtAuthConfig_AccessTokenValidationConfig_Default_: + + if h, ok := interface{}(m.GetDefault()).(clone.Cloner); ok { + target.Provider = &ExtAuthConfig_AccessTokenValidationConfig_Default_{ + Default: h.Clone().(*ExtAuthConfig_AccessTokenValidationConfig_Default), + } + } else { + target.Provider = &ExtAuthConfig_AccessTokenValidationConfig_Default_{ + Default: proto.Clone(m.GetDefault()).(*ExtAuthConfig_AccessTokenValidationConfig_Default), + } + } + + case *ExtAuthConfig_AccessTokenValidationConfig_Azure: + + if h, ok := interface{}(m.GetAzure()).(clone.Cloner); ok { + target.Provider = &ExtAuthConfig_AccessTokenValidationConfig_Azure{ + Azure: h.Clone().(*ExtAuthConfig_Azure), + } + } else { + target.Provider = &ExtAuthConfig_AccessTokenValidationConfig_Azure{ + Azure: proto.Clone(m.GetAzure()).(*ExtAuthConfig_Azure), + } + } + + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_PlainOAuth2Config) Clone() proto.Message { + var target *ExtAuthConfig_PlainOAuth2Config + if m == nil { + return target + } + target = &ExtAuthConfig_PlainOAuth2Config{} + + target.ClientId = m.GetClientId() + + target.ClientSecret = m.GetClientSecret() + + if m.GetAuthEndpointQueryParams() != nil { + target.AuthEndpointQueryParams = make(map[string]string, len(m.GetAuthEndpointQueryParams())) + for k, v := range m.GetAuthEndpointQueryParams() { + + target.AuthEndpointQueryParams[k] = v + + } + } + + target.AppUrl = m.GetAppUrl() + + target.CallbackPath = m.GetCallbackPath() + + if m.GetScopes() != nil { + target.Scopes = make([]string, len(m.GetScopes())) + for idx, v := range m.GetScopes() { + + target.Scopes[idx] = v + + } + } + + if h, ok := interface{}(m.GetSession()).(clone.Cloner); ok { + target.Session = h.Clone().(*UserSession) + } else { + target.Session = proto.Clone(m.GetSession()).(*UserSession) + } + + target.LogoutPath = m.GetLogoutPath() + + if m.GetTokenEndpointQueryParams() != nil { + target.TokenEndpointQueryParams = make(map[string]string, len(m.GetTokenEndpointQueryParams())) + for k, v := range m.GetTokenEndpointQueryParams() { + + target.TokenEndpointQueryParams[k] = v + + } + } + + target.AfterLogoutUrl = m.GetAfterLogoutUrl() + + target.AuthEndpoint = m.GetAuthEndpoint() + + target.TokenEndpoint = m.GetTokenEndpoint() + + target.RevocationEndpoint = m.GetRevocationEndpoint() + + if h, ok := interface{}(m.GetUserSession()).(clone.Cloner); ok { + target.UserSession = h.Clone().(*ExtAuthConfig_UserSessionConfig) + } else { + target.UserSession = proto.Clone(m.GetUserSession()).(*ExtAuthConfig_UserSessionConfig) + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_OAuth2Config) Clone() proto.Message { + var target *ExtAuthConfig_OAuth2Config + if m == nil { + return target + } + target = &ExtAuthConfig_OAuth2Config{} + + switch m.OauthType.(type) { + + case *ExtAuthConfig_OAuth2Config_OidcAuthorizationCode: + + if h, ok := interface{}(m.GetOidcAuthorizationCode()).(clone.Cloner); ok { + target.OauthType = &ExtAuthConfig_OAuth2Config_OidcAuthorizationCode{ + OidcAuthorizationCode: h.Clone().(*ExtAuthConfig_OidcAuthorizationCodeConfig), + } + } else { + target.OauthType = &ExtAuthConfig_OAuth2Config_OidcAuthorizationCode{ + OidcAuthorizationCode: proto.Clone(m.GetOidcAuthorizationCode()).(*ExtAuthConfig_OidcAuthorizationCodeConfig), + } + } + + case *ExtAuthConfig_OAuth2Config_AccessTokenValidationConfig: + + if h, ok := interface{}(m.GetAccessTokenValidationConfig()).(clone.Cloner); ok { + target.OauthType = &ExtAuthConfig_OAuth2Config_AccessTokenValidationConfig{ + AccessTokenValidationConfig: h.Clone().(*ExtAuthConfig_AccessTokenValidationConfig), + } + } else { + target.OauthType = &ExtAuthConfig_OAuth2Config_AccessTokenValidationConfig{ + AccessTokenValidationConfig: proto.Clone(m.GetAccessTokenValidationConfig()).(*ExtAuthConfig_AccessTokenValidationConfig), + } + } + + case *ExtAuthConfig_OAuth2Config_Oauth2Config: + + if h, ok := interface{}(m.GetOauth2Config()).(clone.Cloner); ok { + target.OauthType = &ExtAuthConfig_OAuth2Config_Oauth2Config{ + Oauth2Config: h.Clone().(*ExtAuthConfig_PlainOAuth2Config), + } + } else { + target.OauthType = &ExtAuthConfig_OAuth2Config_Oauth2Config{ + Oauth2Config: proto.Clone(m.GetOauth2Config()).(*ExtAuthConfig_PlainOAuth2Config), + } + } + + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_ApiKeyAuthConfig) Clone() proto.Message { + var target *ExtAuthConfig_ApiKeyAuthConfig + if m == nil { + return target + } + target = &ExtAuthConfig_ApiKeyAuthConfig{} + + if m.GetValidApiKeys() != nil { + target.ValidApiKeys = make(map[string]*ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata, len(m.GetValidApiKeys())) + for k, v := range m.GetValidApiKeys() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ValidApiKeys[k] = h.Clone().(*ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) + } else { + target.ValidApiKeys[k] = proto.Clone(v).(*ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) + } + + } + } + + target.HeaderName = m.GetHeaderName() + + if m.GetHeadersFromKeyMetadata() != nil { + target.HeadersFromKeyMetadata = make(map[string]string, len(m.GetHeadersFromKeyMetadata())) + for k, v := range m.GetHeadersFromKeyMetadata() { + + target.HeadersFromKeyMetadata[k] = v + + } + } + + target.SkipMetadataValidation = m.GetSkipMetadataValidation() + + switch m.StorageBackend.(type) { + + case *ExtAuthConfig_ApiKeyAuthConfig_K8SSecretApikeyStorage: + + if h, ok := interface{}(m.GetK8SSecretApikeyStorage()).(clone.Cloner); ok { + target.StorageBackend = &ExtAuthConfig_ApiKeyAuthConfig_K8SSecretApikeyStorage{ + K8SSecretApikeyStorage: h.Clone().(*K8SSecretApiKeyStorage), + } + } else { + target.StorageBackend = &ExtAuthConfig_ApiKeyAuthConfig_K8SSecretApikeyStorage{ + K8SSecretApikeyStorage: proto.Clone(m.GetK8SSecretApikeyStorage()).(*K8SSecretApiKeyStorage), + } + } + + case *ExtAuthConfig_ApiKeyAuthConfig_AerospikeApikeyStorage: + + if h, ok := interface{}(m.GetAerospikeApikeyStorage()).(clone.Cloner); ok { + target.StorageBackend = &ExtAuthConfig_ApiKeyAuthConfig_AerospikeApikeyStorage{ + AerospikeApikeyStorage: h.Clone().(*AerospikeApiKeyStorage), + } + } else { + target.StorageBackend = &ExtAuthConfig_ApiKeyAuthConfig_AerospikeApikeyStorage{ + AerospikeApikeyStorage: proto.Clone(m.GetAerospikeApikeyStorage()).(*AerospikeApiKeyStorage), + } + } + + case *ExtAuthConfig_ApiKeyAuthConfig_ServerDefaultApikeyStorage: + + if h, ok := interface{}(m.GetServerDefaultApikeyStorage()).(clone.Cloner); ok { + target.StorageBackend = &ExtAuthConfig_ApiKeyAuthConfig_ServerDefaultApikeyStorage{ + ServerDefaultApikeyStorage: h.Clone().(*ServerDefaultApiKeyStorage), + } + } else { + target.StorageBackend = &ExtAuthConfig_ApiKeyAuthConfig_ServerDefaultApikeyStorage{ + ServerDefaultApikeyStorage: proto.Clone(m.GetServerDefaultApikeyStorage()).(*ServerDefaultApiKeyStorage), + } + } + + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_OpaAuthConfig) Clone() proto.Message { + var target *ExtAuthConfig_OpaAuthConfig + if m == nil { + return target + } + target = &ExtAuthConfig_OpaAuthConfig{} + + if m.GetModules() != nil { + target.Modules = make(map[string]string, len(m.GetModules())) + for k, v := range m.GetModules() { + + target.Modules[k] = v + + } + } + + target.Query = m.GetQuery() + + if h, ok := interface{}(m.GetOptions()).(clone.Cloner); ok { + target.Options = h.Clone().(*OpaAuthOptions) + } else { + target.Options = proto.Clone(m.GetOptions()).(*OpaAuthOptions) + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_OpaServerAuthConfig) Clone() proto.Message { + var target *ExtAuthConfig_OpaServerAuthConfig + if m == nil { + return target + } + target = &ExtAuthConfig_OpaServerAuthConfig{} + + target.Package = m.GetPackage() + + target.RuleName = m.GetRuleName() + + target.ServerAddr = m.GetServerAddr() + + if h, ok := interface{}(m.GetOptions()).(clone.Cloner); ok { + target.Options = h.Clone().(*OpaAuthOptions) + } else { + target.Options = proto.Clone(m.GetOptions()).(*OpaAuthOptions) + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_LdapConfig) Clone() proto.Message { + var target *ExtAuthConfig_LdapConfig + if m == nil { + return target + } + target = &ExtAuthConfig_LdapConfig{} + + target.Address = m.GetAddress() + + target.UserDnTemplate = m.GetUserDnTemplate() + + target.MembershipAttributeName = m.GetMembershipAttributeName() + + if m.GetAllowedGroups() != nil { + target.AllowedGroups = make([]string, len(m.GetAllowedGroups())) + for idx, v := range m.GetAllowedGroups() { + + target.AllowedGroups[idx] = v + + } + } + + if h, ok := interface{}(m.GetPool()).(clone.Cloner); ok { + target.Pool = h.Clone().(*Ldap_ConnectionPool) + } else { + target.Pool = proto.Clone(m.GetPool()).(*Ldap_ConnectionPool) + } + + target.SearchFilter = m.GetSearchFilter() + + target.DisableGroupChecking = m.GetDisableGroupChecking() + + if h, ok := interface{}(m.GetGroupLookupSettings()).(clone.Cloner); ok { + target.GroupLookupSettings = h.Clone().(*ExtAuthConfig_LdapServiceAccountConfig) + } else { + target.GroupLookupSettings = proto.Clone(m.GetGroupLookupSettings()).(*ExtAuthConfig_LdapServiceAccountConfig) + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_LdapServiceAccountConfig) Clone() proto.Message { + var target *ExtAuthConfig_LdapServiceAccountConfig + if m == nil { + return target + } + target = &ExtAuthConfig_LdapServiceAccountConfig{} + + target.Username = m.GetUsername() + + target.Password = m.GetPassword() + + target.CheckGroupsWithServiceAccount = m.GetCheckGroupsWithServiceAccount() + + return target +} + +// Clone function +func (m *ExtAuthConfig_HmacAuthConfig) Clone() proto.Message { + var target *ExtAuthConfig_HmacAuthConfig + if m == nil { + return target + } + target = &ExtAuthConfig_HmacAuthConfig{} + + switch m.SecretStorage.(type) { + + case *ExtAuthConfig_HmacAuthConfig_SecretList: + + if h, ok := interface{}(m.GetSecretList()).(clone.Cloner); ok { + target.SecretStorage = &ExtAuthConfig_HmacAuthConfig_SecretList{ + SecretList: h.Clone().(*ExtAuthConfig_InMemorySecretList), + } + } else { + target.SecretStorage = &ExtAuthConfig_HmacAuthConfig_SecretList{ + SecretList: proto.Clone(m.GetSecretList()).(*ExtAuthConfig_InMemorySecretList), + } + } + + } + + switch m.ImplementationType.(type) { + + case *ExtAuthConfig_HmacAuthConfig_ParametersInHeaders: + + if h, ok := interface{}(m.GetParametersInHeaders()).(clone.Cloner); ok { + target.ImplementationType = &ExtAuthConfig_HmacAuthConfig_ParametersInHeaders{ + ParametersInHeaders: h.Clone().(*HmacParametersInHeaders), + } + } else { + target.ImplementationType = &ExtAuthConfig_HmacAuthConfig_ParametersInHeaders{ + ParametersInHeaders: proto.Clone(m.GetParametersInHeaders()).(*HmacParametersInHeaders), + } + } + + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_PortalAuthConfig) Clone() proto.Message { + var target *ExtAuthConfig_PortalAuthConfig + if m == nil { + return target + } + target = &ExtAuthConfig_PortalAuthConfig{} + + target.Url = m.GetUrl() + + target.ApiKeyHeader = m.GetApiKeyHeader() + + if h, ok := interface{}(m.GetRedisOptions()).(clone.Cloner); ok { + target.RedisOptions = h.Clone().(*RedisOptions) + } else { + target.RedisOptions = proto.Clone(m.GetRedisOptions()).(*RedisOptions) + } + + if h, ok := interface{}(m.GetCacheDuration()).(clone.Cloner); ok { + target.CacheDuration = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.CacheDuration = proto.Clone(m.GetCacheDuration()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetRequestTimeout()).(clone.Cloner); ok { + target.RequestTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.RequestTimeout = proto.Clone(m.GetRequestTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_InMemorySecretList) Clone() proto.Message { + var target *ExtAuthConfig_InMemorySecretList + if m == nil { + return target + } + target = &ExtAuthConfig_InMemorySecretList{} + + if m.GetSecretList() != nil { + target.SecretList = make(map[string]string, len(m.GetSecretList())) + for k, v := range m.GetSecretList() { + + target.SecretList[k] = v + + } + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_PassthroughAuthInternalConfig) Clone() proto.Message { + var target *ExtAuthConfig_PassthroughAuthInternalConfig + if m == nil { + return target + } + target = &ExtAuthConfig_PassthroughAuthInternalConfig{} + + if h, ok := interface{}(m.GetPassThroughAuth()).(clone.Cloner); ok { + target.PassThroughAuth = h.Clone().(*PassThroughAuth) + } else { + target.PassThroughAuth = proto.Clone(m.GetPassThroughAuth()).(*PassThroughAuth) + } + + if h, ok := interface{}(m.GetTlsConfigData()).(clone.Cloner); ok { + target.TlsConfigData = h.Clone().(*ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData) + } else { + target.TlsConfigData = proto.Clone(m.GetTlsConfigData()).(*ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData) + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_Config) Clone() proto.Message { + var target *ExtAuthConfig_Config + if m == nil { + return target + } + target = &ExtAuthConfig_Config{} + + if h, ok := interface{}(m.GetName()).(clone.Cloner); ok { + target.Name = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.Name = proto.Clone(m.GetName()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + switch m.AuthConfig.(type) { + + case *ExtAuthConfig_Config_Oauth: + + if h, ok := interface{}(m.GetOauth()).(clone.Cloner); ok { + target.AuthConfig = &ExtAuthConfig_Config_Oauth{ + Oauth: h.Clone().(*ExtAuthConfig_OAuthConfig), + } + } else { + target.AuthConfig = &ExtAuthConfig_Config_Oauth{ + Oauth: proto.Clone(m.GetOauth()).(*ExtAuthConfig_OAuthConfig), + } + } + + case *ExtAuthConfig_Config_Oauth2: + + if h, ok := interface{}(m.GetOauth2()).(clone.Cloner); ok { + target.AuthConfig = &ExtAuthConfig_Config_Oauth2{ + Oauth2: h.Clone().(*ExtAuthConfig_OAuth2Config), + } + } else { + target.AuthConfig = &ExtAuthConfig_Config_Oauth2{ + Oauth2: proto.Clone(m.GetOauth2()).(*ExtAuthConfig_OAuth2Config), + } + } + + case *ExtAuthConfig_Config_BasicAuth: + + if h, ok := interface{}(m.GetBasicAuth()).(clone.Cloner); ok { + target.AuthConfig = &ExtAuthConfig_Config_BasicAuth{ + BasicAuth: h.Clone().(*BasicAuth), + } + } else { + target.AuthConfig = &ExtAuthConfig_Config_BasicAuth{ + BasicAuth: proto.Clone(m.GetBasicAuth()).(*BasicAuth), + } + } + + case *ExtAuthConfig_Config_BasicAuthInternal: + + if h, ok := interface{}(m.GetBasicAuthInternal()).(clone.Cloner); ok { + target.AuthConfig = &ExtAuthConfig_Config_BasicAuthInternal{ + BasicAuthInternal: h.Clone().(*ExtAuthConfig_BasicAuthInternal), + } + } else { + target.AuthConfig = &ExtAuthConfig_Config_BasicAuthInternal{ + BasicAuthInternal: proto.Clone(m.GetBasicAuthInternal()).(*ExtAuthConfig_BasicAuthInternal), + } + } + + case *ExtAuthConfig_Config_ApiKeyAuth: + + if h, ok := interface{}(m.GetApiKeyAuth()).(clone.Cloner); ok { + target.AuthConfig = &ExtAuthConfig_Config_ApiKeyAuth{ + ApiKeyAuth: h.Clone().(*ExtAuthConfig_ApiKeyAuthConfig), + } + } else { + target.AuthConfig = &ExtAuthConfig_Config_ApiKeyAuth{ + ApiKeyAuth: proto.Clone(m.GetApiKeyAuth()).(*ExtAuthConfig_ApiKeyAuthConfig), + } + } + + case *ExtAuthConfig_Config_PluginAuth: + + if h, ok := interface{}(m.GetPluginAuth()).(clone.Cloner); ok { + target.AuthConfig = &ExtAuthConfig_Config_PluginAuth{ + PluginAuth: h.Clone().(*AuthPlugin), + } + } else { + target.AuthConfig = &ExtAuthConfig_Config_PluginAuth{ + PluginAuth: proto.Clone(m.GetPluginAuth()).(*AuthPlugin), + } + } + + case *ExtAuthConfig_Config_OpaAuth: + + if h, ok := interface{}(m.GetOpaAuth()).(clone.Cloner); ok { + target.AuthConfig = &ExtAuthConfig_Config_OpaAuth{ + OpaAuth: h.Clone().(*ExtAuthConfig_OpaAuthConfig), + } + } else { + target.AuthConfig = &ExtAuthConfig_Config_OpaAuth{ + OpaAuth: proto.Clone(m.GetOpaAuth()).(*ExtAuthConfig_OpaAuthConfig), + } + } + + case *ExtAuthConfig_Config_Ldap: + + if h, ok := interface{}(m.GetLdap()).(clone.Cloner); ok { + target.AuthConfig = &ExtAuthConfig_Config_Ldap{ + Ldap: h.Clone().(*Ldap), + } + } else { + target.AuthConfig = &ExtAuthConfig_Config_Ldap{ + Ldap: proto.Clone(m.GetLdap()).(*Ldap), + } + } + + case *ExtAuthConfig_Config_LdapInternal: + + if h, ok := interface{}(m.GetLdapInternal()).(clone.Cloner); ok { + target.AuthConfig = &ExtAuthConfig_Config_LdapInternal{ + LdapInternal: h.Clone().(*ExtAuthConfig_LdapConfig), + } + } else { + target.AuthConfig = &ExtAuthConfig_Config_LdapInternal{ + LdapInternal: proto.Clone(m.GetLdapInternal()).(*ExtAuthConfig_LdapConfig), + } + } + + case *ExtAuthConfig_Config_Jwt: + + if h, ok := interface{}(m.GetJwt()).(clone.Cloner); ok { + target.AuthConfig = &ExtAuthConfig_Config_Jwt{ + Jwt: h.Clone().(*google_golang_org_protobuf_types_known_emptypb.Empty), + } + } else { + target.AuthConfig = &ExtAuthConfig_Config_Jwt{ + Jwt: proto.Clone(m.GetJwt()).(*google_golang_org_protobuf_types_known_emptypb.Empty), + } + } + + case *ExtAuthConfig_Config_PassThroughAuth: + + if h, ok := interface{}(m.GetPassThroughAuth()).(clone.Cloner); ok { + target.AuthConfig = &ExtAuthConfig_Config_PassThroughAuth{ + PassThroughAuth: h.Clone().(*PassThroughAuth), + } + } else { + target.AuthConfig = &ExtAuthConfig_Config_PassThroughAuth{ + PassThroughAuth: proto.Clone(m.GetPassThroughAuth()).(*PassThroughAuth), + } + } + + case *ExtAuthConfig_Config_HmacAuth: + + if h, ok := interface{}(m.GetHmacAuth()).(clone.Cloner); ok { + target.AuthConfig = &ExtAuthConfig_Config_HmacAuth{ + HmacAuth: h.Clone().(*ExtAuthConfig_HmacAuthConfig), + } + } else { + target.AuthConfig = &ExtAuthConfig_Config_HmacAuth{ + HmacAuth: proto.Clone(m.GetHmacAuth()).(*ExtAuthConfig_HmacAuthConfig), + } + } + + case *ExtAuthConfig_Config_OpaServerAuth: + + if h, ok := interface{}(m.GetOpaServerAuth()).(clone.Cloner); ok { + target.AuthConfig = &ExtAuthConfig_Config_OpaServerAuth{ + OpaServerAuth: h.Clone().(*ExtAuthConfig_OpaServerAuthConfig), + } + } else { + target.AuthConfig = &ExtAuthConfig_Config_OpaServerAuth{ + OpaServerAuth: proto.Clone(m.GetOpaServerAuth()).(*ExtAuthConfig_OpaServerAuthConfig), + } + } + + case *ExtAuthConfig_Config_PortalAuth: + + if h, ok := interface{}(m.GetPortalAuth()).(clone.Cloner); ok { + target.AuthConfig = &ExtAuthConfig_Config_PortalAuth{ + PortalAuth: h.Clone().(*ExtAuthConfig_PortalAuthConfig), + } + } else { + target.AuthConfig = &ExtAuthConfig_Config_PortalAuth{ + PortalAuth: proto.Clone(m.GetPortalAuth()).(*ExtAuthConfig_PortalAuthConfig), + } + } + + case *ExtAuthConfig_Config_PassthroughInternal: + + if h, ok := interface{}(m.GetPassthroughInternal()).(clone.Cloner); ok { + target.AuthConfig = &ExtAuthConfig_Config_PassthroughInternal{ + PassthroughInternal: h.Clone().(*ExtAuthConfig_PassthroughAuthInternalConfig), + } + } else { + target.AuthConfig = &ExtAuthConfig_Config_PassthroughInternal{ + PassthroughInternal: proto.Clone(m.GetPassthroughInternal()).(*ExtAuthConfig_PassthroughAuthInternalConfig), + } + } + + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_BasicAuthInternal_EncryptionType) Clone() proto.Message { + var target *ExtAuthConfig_BasicAuthInternal_EncryptionType + if m == nil { + return target + } + target = &ExtAuthConfig_BasicAuthInternal_EncryptionType{} + + switch m.Algorithm.(type) { + + case *ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr_: + + if h, ok := interface{}(m.GetApr()).(clone.Cloner); ok { + target.Algorithm = &ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr_{ + Apr: h.Clone().(*ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr), + } + } else { + target.Algorithm = &ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr_{ + Apr: proto.Clone(m.GetApr()).(*ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr), + } + } + + case *ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1_: + + if h, ok := interface{}(m.GetSha1()).(clone.Cloner); ok { + target.Algorithm = &ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1_{ + Sha1: h.Clone().(*ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1), + } + } else { + target.Algorithm = &ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1_{ + Sha1: proto.Clone(m.GetSha1()).(*ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1), + } + } + + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_BasicAuthInternal_User) Clone() proto.Message { + var target *ExtAuthConfig_BasicAuthInternal_User + if m == nil { + return target + } + target = &ExtAuthConfig_BasicAuthInternal_User{} + + target.Salt = m.GetSalt() + + target.HashedPassword = m.GetHashedPassword() + + return target +} + +// Clone function +func (m *ExtAuthConfig_BasicAuthInternal_UserList) Clone() proto.Message { + var target *ExtAuthConfig_BasicAuthInternal_UserList + if m == nil { + return target + } + target = &ExtAuthConfig_BasicAuthInternal_UserList{} + + if m.GetUsers() != nil { + target.Users = make(map[string]*ExtAuthConfig_BasicAuthInternal_User, len(m.GetUsers())) + for k, v := range m.GetUsers() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Users[k] = h.Clone().(*ExtAuthConfig_BasicAuthInternal_User) + } else { + target.Users[k] = proto.Clone(v).(*ExtAuthConfig_BasicAuthInternal_User) + } + + } + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1) Clone() proto.Message { + var target *ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1 + if m == nil { + return target + } + target = &ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1{} + + return target +} + +// Clone function +func (m *ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr) Clone() proto.Message { + var target *ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr + if m == nil { + return target + } + target = &ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr{} + + return target +} + +// Clone function +func (m *ExtAuthConfig_UserSessionConfig_CipherConfig) Clone() proto.Message { + var target *ExtAuthConfig_UserSessionConfig_CipherConfig + if m == nil { + return target + } + target = &ExtAuthConfig_UserSessionConfig_CipherConfig{} + + target.Key = m.GetKey() + + return target +} + +// Clone function +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig) Clone() proto.Message { + var target *ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig + if m == nil { + return target + } + target = &ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig{} + + target.SigningKey = m.GetSigningKey() + + if h, ok := interface{}(m.GetValidFor()).(clone.Cloner); ok { + target.ValidFor = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.ValidFor = proto.Clone(m.GetValidFor()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken) Clone() proto.Message { + var target *ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken + if m == nil { + return target + } + target = &ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken{} + + if m.GetClaimsToHeaders() != nil { + target.ClaimsToHeaders = make([]*ExtAuthConfig_ClaimToHeader, len(m.GetClaimsToHeaders())) + for idx, v := range m.GetClaimsToHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ClaimsToHeaders[idx] = h.Clone().(*ExtAuthConfig_ClaimToHeader) + } else { + target.ClaimsToHeaders[idx] = proto.Clone(v).(*ExtAuthConfig_ClaimToHeader) + } + + } + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken) Clone() proto.Message { + var target *ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken + if m == nil { + return target + } + target = &ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken{} + + if m.GetClaimsToHeaders() != nil { + target.ClaimsToHeaders = make([]*ExtAuthConfig_ClaimToHeader, len(m.GetClaimsToHeaders())) + for idx, v := range m.GetClaimsToHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ClaimsToHeaders[idx] = h.Clone().(*ExtAuthConfig_ClaimToHeader) + } else { + target.ClaimsToHeaders[idx] = proto.Clone(v).(*ExtAuthConfig_ClaimToHeader) + } + + } + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig_Default) Clone() proto.Message { + var target *ExtAuthConfig_OidcAuthorizationCodeConfig_Default + if m == nil { + return target + } + target = &ExtAuthConfig_OidcAuthorizationCodeConfig_Default{} + + return target +} + +// Clone function +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout) Clone() proto.Message { + var target *ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout + if m == nil { + return target + } + target = &ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout{} + + target.Path = m.GetPath() + + return target +} + +// Clone function +func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) Clone() proto.Message { + var target *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation + if m == nil { + return target + } + target = &ExtAuthConfig_AccessTokenValidationConfig_JwtValidation{} + + target.Issuer = m.GetIssuer() + + switch m.JwksSourceSpecifier.(type) { + + case *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks_: + + if h, ok := interface{}(m.GetRemoteJwks()).(clone.Cloner); ok { + target.JwksSourceSpecifier = &ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks_{ + RemoteJwks: h.Clone().(*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks), + } + } else { + target.JwksSourceSpecifier = &ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks_{ + RemoteJwks: proto.Clone(m.GetRemoteJwks()).(*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks), + } + } + + case *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks_: + + if h, ok := interface{}(m.GetLocalJwks()).(clone.Cloner); ok { + target.JwksSourceSpecifier = &ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks_{ + LocalJwks: h.Clone().(*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks), + } + } else { + target.JwksSourceSpecifier = &ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks_{ + LocalJwks: proto.Clone(m.GetLocalJwks()).(*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks), + } + } + + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) Clone() proto.Message { + var target *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation + if m == nil { + return target + } + target = &ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation{} + + target.IntrospectionUrl = m.GetIntrospectionUrl() + + target.ClientId = m.GetClientId() + + target.ClientSecret = m.GetClientSecret() + + target.UserIdAttributeName = m.GetUserIdAttributeName() + + return target +} + +// Clone function +func (m *ExtAuthConfig_AccessTokenValidationConfig_ScopeList) Clone() proto.Message { + var target *ExtAuthConfig_AccessTokenValidationConfig_ScopeList + if m == nil { + return target + } + target = &ExtAuthConfig_AccessTokenValidationConfig_ScopeList{} + + if m.GetScope() != nil { + target.Scope = make([]string, len(m.GetScope())) + for idx, v := range m.GetScope() { + + target.Scope[idx] = v + + } + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_AccessTokenValidationConfig_Default) Clone() proto.Message { + var target *ExtAuthConfig_AccessTokenValidationConfig_Default + if m == nil { + return target + } + target = &ExtAuthConfig_AccessTokenValidationConfig_Default{} + + return target +} + +// Clone function +func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) Clone() proto.Message { + var target *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks + if m == nil { + return target + } + target = &ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks{} + + target.Url = m.GetUrl() + + if h, ok := interface{}(m.GetRefreshInterval()).(clone.Cloner); ok { + target.RefreshInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.RefreshInterval = proto.Clone(m.GetRefreshInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) Clone() proto.Message { + var target *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks + if m == nil { + return target + } + target = &ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks{} + + target.InlineString = m.GetInlineString() + + return target +} + +// Clone function +func (m *ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) Clone() proto.Message { + var target *ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata + if m == nil { + return target + } + target = &ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata{} + + target.Username = m.GetUsername() + + if m.GetMetadata() != nil { + target.Metadata = make(map[string]string, len(m.GetMetadata())) + for k, v := range m.GetMetadata() { + + target.Metadata[k] = v + + } + } + + return target +} + +// Clone function +func (m *ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData) Clone() proto.Message { + var target *ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData + if m == nil { + return target + } + target = &ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData{} + + target.CertPem = m.GetCertPem() + + target.KeyPem = m.GetKeyPem() + + target.RootCaPem = m.GetRootCaPem() + + if h, ok := interface{}(m.GetSslParams()).(clone.Cloner); ok { + target.SslParams = h.Clone().(*SslParameters) + } else { + target.SslParams = proto.Clone(m.GetSslParams()).(*SslParameters) + } + + return target +} diff --git a/pkg/api/enterprise.gloo.solo.io/v1/extauth-internal.pb.equal.go b/pkg/api/enterprise.gloo.solo.io/v1/extauth-internal.pb.equal.go new file mode 100644 index 000000000..2f0223b10 --- /dev/null +++ b/pkg/api/enterprise.gloo.solo.io/v1/extauth-internal.pb.equal.go @@ -0,0 +1,2862 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *ExtAuthConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig) + if !ok { + that2, ok := that.(ExtAuthConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetAuthConfigRefName(), target.GetAuthConfigRefName()) != 0 { + return false + } + + if len(m.GetConfigs()) != len(target.GetConfigs()) { + return false + } + for idx, v := range m.GetConfigs() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetConfigs()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetConfigs()[idx]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetBooleanExpr()).(equality.Equalizer); ok { + if !h.Equal(target.GetBooleanExpr()) { + return false + } + } else { + if !proto.Equal(m.GetBooleanExpr(), target.GetBooleanExpr()) { + return false + } + } + + if m.GetFailOnRedirect() != target.GetFailOnRedirect() { + return false + } + + return true +} + +// Equal function +func (m *ApiKeyCreateRequest) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ApiKeyCreateRequest) + if !ok { + that2, ok := that.(ApiKeyCreateRequest) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetApiKeys()) != len(target.GetApiKeys()) { + return false + } + for idx, v := range m.GetApiKeys() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetApiKeys()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetApiKeys()[idx]) { + return false + } + } + + } + + if len(m.GetRawApiKeys()) != len(target.GetRawApiKeys()) { + return false + } + for idx, v := range m.GetRawApiKeys() { + + if strings.Compare(v, target.GetRawApiKeys()[idx]) != 0 { + return false + } + + } + + return true +} + +// Equal function +func (m *ApiKeyCreateResponse) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ApiKeyCreateResponse) + if !ok { + that2, ok := that.(ApiKeyCreateResponse) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetApiKeys()) != len(target.GetApiKeys()) { + return false + } + for idx, v := range m.GetApiKeys() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetApiKeys()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetApiKeys()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *ApiKeyReadRequest) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ApiKeyReadRequest) + if !ok { + that2, ok := that.(ApiKeyReadRequest) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetRawApiKeys()) != len(target.GetRawApiKeys()) { + return false + } + for idx, v := range m.GetRawApiKeys() { + + if strings.Compare(v, target.GetRawApiKeys()[idx]) != 0 { + return false + } + + } + + if len(m.GetLabels()) != len(target.GetLabels()) { + return false + } + for idx, v := range m.GetLabels() { + + if strings.Compare(v, target.GetLabels()[idx]) != 0 { + return false + } + + } + + return true +} + +// Equal function +func (m *ApiKeyReadResponse) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ApiKeyReadResponse) + if !ok { + that2, ok := that.(ApiKeyReadResponse) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetApiKeys()) != len(target.GetApiKeys()) { + return false + } + for idx, v := range m.GetApiKeys() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetApiKeys()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetApiKeys()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *ApiKeyUpdateRequest) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ApiKeyUpdateRequest) + if !ok { + that2, ok := that.(ApiKeyUpdateRequest) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetUpsert() != target.GetUpsert() { + return false + } + + if len(m.GetApiKeys()) != len(target.GetApiKeys()) { + return false + } + for idx, v := range m.GetApiKeys() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetApiKeys()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetApiKeys()[idx]) { + return false + } + } + + } + + if len(m.GetRawApiKeys()) != len(target.GetRawApiKeys()) { + return false + } + for idx, v := range m.GetRawApiKeys() { + + if strings.Compare(v, target.GetRawApiKeys()[idx]) != 0 { + return false + } + + } + + return true +} + +// Equal function +func (m *ApiKeyUpdateResponse) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ApiKeyUpdateResponse) + if !ok { + that2, ok := that.(ApiKeyUpdateResponse) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetApiKeys()) != len(target.GetApiKeys()) { + return false + } + for idx, v := range m.GetApiKeys() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetApiKeys()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetApiKeys()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *ApiKeyDeleteRequest) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ApiKeyDeleteRequest) + if !ok { + that2, ok := that.(ApiKeyDeleteRequest) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetRawApiKeys()) != len(target.GetRawApiKeys()) { + return false + } + for idx, v := range m.GetRawApiKeys() { + + if strings.Compare(v, target.GetRawApiKeys()[idx]) != 0 { + return false + } + + } + + if len(m.GetLabels()) != len(target.GetLabels()) { + return false + } + for idx, v := range m.GetLabels() { + + if strings.Compare(v, target.GetLabels()[idx]) != 0 { + return false + } + + } + + return true +} + +// Equal function +func (m *ApiKeyDeleteResponse) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ApiKeyDeleteResponse) + if !ok { + that2, ok := that.(ApiKeyDeleteResponse) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_Azure) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_Azure) + if !ok { + that2, ok := that.(ExtAuthConfig_Azure) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetClientId(), target.GetClientId()) != 0 { + return false + } + + if strings.Compare(m.GetTenantId(), target.GetTenantId()) != 0 { + return false + } + + if strings.Compare(m.GetClientSecret(), target.GetClientSecret()) != 0 { + return false + } + + if h, ok := interface{}(m.GetClaimsCachingOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetClaimsCachingOptions()) { + return false + } + } else { + if !proto.Equal(m.GetClaimsCachingOptions(), target.GetClaimsCachingOptions()) { + return false + } + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_ClaimToHeader) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_ClaimToHeader) + if !ok { + that2, ok := that.(ExtAuthConfig_ClaimToHeader) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetClaim(), target.GetClaim()) != 0 { + return false + } + + if strings.Compare(m.GetHeader(), target.GetHeader()) != 0 { + return false + } + + if m.GetAppend() != target.GetAppend() { + return false + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_BasicAuthInternal) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_BasicAuthInternal) + if !ok { + that2, ok := that.(ExtAuthConfig_BasicAuthInternal) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetRealm(), target.GetRealm()) != 0 { + return false + } + + if h, ok := interface{}(m.GetEncryption()).(equality.Equalizer); ok { + if !h.Equal(target.GetEncryption()) { + return false + } + } else { + if !proto.Equal(m.GetEncryption(), target.GetEncryption()) { + return false + } + } + + switch m.UserSource.(type) { + + case *ExtAuthConfig_BasicAuthInternal_UserList_: + if _, ok := target.UserSource.(*ExtAuthConfig_BasicAuthInternal_UserList_); !ok { + return false + } + + if h, ok := interface{}(m.GetUserList()).(equality.Equalizer); ok { + if !h.Equal(target.GetUserList()) { + return false + } + } else { + if !proto.Equal(m.GetUserList(), target.GetUserList()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.UserSource != target.UserSource { + return false + } + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_OAuthConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_OAuthConfig) + if !ok { + that2, ok := that.(ExtAuthConfig_OAuthConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetClientId(), target.GetClientId()) != 0 { + return false + } + + if strings.Compare(m.GetClientSecret(), target.GetClientSecret()) != 0 { + return false + } + + if strings.Compare(m.GetIssuerUrl(), target.GetIssuerUrl()) != 0 { + return false + } + + if len(m.GetAuthEndpointQueryParams()) != len(target.GetAuthEndpointQueryParams()) { + return false + } + for k, v := range m.GetAuthEndpointQueryParams() { + + if strings.Compare(v, target.GetAuthEndpointQueryParams()[k]) != 0 { + return false + } + + } + + if strings.Compare(m.GetAppUrl(), target.GetAppUrl()) != 0 { + return false + } + + if strings.Compare(m.GetCallbackPath(), target.GetCallbackPath()) != 0 { + return false + } + + if len(m.GetScopes()) != len(target.GetScopes()) { + return false + } + for idx, v := range m.GetScopes() { + + if strings.Compare(v, target.GetScopes()[idx]) != 0 { + return false + } + + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_UserSessionConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_UserSessionConfig) + if !ok { + that2, ok := that.(ExtAuthConfig_UserSessionConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetFailOnFetchFailure() != target.GetFailOnFetchFailure() { + return false + } + + if h, ok := interface{}(m.GetCookieOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetCookieOptions()) { + return false + } + } else { + if !proto.Equal(m.GetCookieOptions(), target.GetCookieOptions()) { + return false + } + } + + if h, ok := interface{}(m.GetCipherConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetCipherConfig()) { + return false + } + } else { + if !proto.Equal(m.GetCipherConfig(), target.GetCipherConfig()) { + return false + } + } + + switch m.Session.(type) { + + case *ExtAuthConfig_UserSessionConfig_Cookie: + if _, ok := target.Session.(*ExtAuthConfig_UserSessionConfig_Cookie); !ok { + return false + } + + if h, ok := interface{}(m.GetCookie()).(equality.Equalizer); ok { + if !h.Equal(target.GetCookie()) { + return false + } + } else { + if !proto.Equal(m.GetCookie(), target.GetCookie()) { + return false + } + } + + case *ExtAuthConfig_UserSessionConfig_Redis: + if _, ok := target.Session.(*ExtAuthConfig_UserSessionConfig_Redis); !ok { + return false + } + + if h, ok := interface{}(m.GetRedis()).(equality.Equalizer); ok { + if !h.Equal(target.GetRedis()) { + return false + } + } else { + if !proto.Equal(m.GetRedis(), target.GetRedis()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.Session != target.Session { + return false + } + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_OidcAuthorizationCodeConfig) + if !ok { + that2, ok := that.(ExtAuthConfig_OidcAuthorizationCodeConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetClientId(), target.GetClientId()) != 0 { + return false + } + + if strings.Compare(m.GetClientSecret(), target.GetClientSecret()) != 0 { + return false + } + + if strings.Compare(m.GetIssuerUrl(), target.GetIssuerUrl()) != 0 { + return false + } + + if len(m.GetAuthEndpointQueryParams()) != len(target.GetAuthEndpointQueryParams()) { + return false + } + for k, v := range m.GetAuthEndpointQueryParams() { + + if strings.Compare(v, target.GetAuthEndpointQueryParams()[k]) != 0 { + return false + } + + } + + if len(m.GetTokenEndpointQueryParams()) != len(target.GetTokenEndpointQueryParams()) { + return false + } + for k, v := range m.GetTokenEndpointQueryParams() { + + if strings.Compare(v, target.GetTokenEndpointQueryParams()[k]) != 0 { + return false + } + + } + + if strings.Compare(m.GetAppUrl(), target.GetAppUrl()) != 0 { + return false + } + + if strings.Compare(m.GetCallbackPath(), target.GetCallbackPath()) != 0 { + return false + } + + if strings.Compare(m.GetLogoutPath(), target.GetLogoutPath()) != 0 { + return false + } + + if strings.Compare(m.GetAfterLogoutUrl(), target.GetAfterLogoutUrl()) != 0 { + return false + } + + if len(m.GetScopes()) != len(target.GetScopes()) { + return false + } + for idx, v := range m.GetScopes() { + + if strings.Compare(v, target.GetScopes()[idx]) != 0 { + return false + } + + } + + if h, ok := interface{}(m.GetSession()).(equality.Equalizer); ok { + if !h.Equal(target.GetSession()) { + return false + } + } else { + if !proto.Equal(m.GetSession(), target.GetSession()) { + return false + } + } + + if h, ok := interface{}(m.GetHeaders()).(equality.Equalizer); ok { + if !h.Equal(target.GetHeaders()) { + return false + } + } else { + if !proto.Equal(m.GetHeaders(), target.GetHeaders()) { + return false + } + } + + if h, ok := interface{}(m.GetDiscoveryOverride()).(equality.Equalizer); ok { + if !h.Equal(target.GetDiscoveryOverride()) { + return false + } + } else { + if !proto.Equal(m.GetDiscoveryOverride(), target.GetDiscoveryOverride()) { + return false + } + } + + if h, ok := interface{}(m.GetDiscoveryPollInterval()).(equality.Equalizer); ok { + if !h.Equal(target.GetDiscoveryPollInterval()) { + return false + } + } else { + if !proto.Equal(m.GetDiscoveryPollInterval(), target.GetDiscoveryPollInterval()) { + return false + } + } + + if h, ok := interface{}(m.GetJwksCacheRefreshPolicy()).(equality.Equalizer); ok { + if !h.Equal(target.GetJwksCacheRefreshPolicy()) { + return false + } + } else { + if !proto.Equal(m.GetJwksCacheRefreshPolicy(), target.GetJwksCacheRefreshPolicy()) { + return false + } + } + + if strings.Compare(m.GetSessionIdHeaderName(), target.GetSessionIdHeaderName()) != 0 { + return false + } + + if m.GetParseCallbackPathAsRegex() != target.GetParseCallbackPathAsRegex() { + return false + } + + if h, ok := interface{}(m.GetAutoMapFromMetadata()).(equality.Equalizer); ok { + if !h.Equal(target.GetAutoMapFromMetadata()) { + return false + } + } else { + if !proto.Equal(m.GetAutoMapFromMetadata(), target.GetAutoMapFromMetadata()) { + return false + } + } + + if h, ok := interface{}(m.GetEndSessionProperties()).(equality.Equalizer); ok { + if !h.Equal(target.GetEndSessionProperties()) { + return false + } + } else { + if !proto.Equal(m.GetEndSessionProperties(), target.GetEndSessionProperties()) { + return false + } + } + + if h, ok := interface{}(m.GetUserSession()).(equality.Equalizer); ok { + if !h.Equal(target.GetUserSession()) { + return false + } + } else { + if !proto.Equal(m.GetUserSession(), target.GetUserSession()) { + return false + } + } + + if h, ok := interface{}(m.GetPkJwtClientAuthenticationConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetPkJwtClientAuthenticationConfig()) { + return false + } + } else { + if !proto.Equal(m.GetPkJwtClientAuthenticationConfig(), target.GetPkJwtClientAuthenticationConfig()) { + return false + } + } + + if h, ok := interface{}(m.GetAccessToken()).(equality.Equalizer); ok { + if !h.Equal(target.GetAccessToken()) { + return false + } + } else { + if !proto.Equal(m.GetAccessToken(), target.GetAccessToken()) { + return false + } + } + + if h, ok := interface{}(m.GetIdentityToken()).(equality.Equalizer); ok { + if !h.Equal(target.GetIdentityToken()) { + return false + } + } else { + if !proto.Equal(m.GetIdentityToken(), target.GetIdentityToken()) { + return false + } + } + + if h, ok := interface{}(m.GetFrontChannelLogout()).(equality.Equalizer); ok { + if !h.Equal(target.GetFrontChannelLogout()) { + return false + } + } else { + if !proto.Equal(m.GetFrontChannelLogout(), target.GetFrontChannelLogout()) { + return false + } + } + + if len(m.GetDynamicMetadataFromClaims()) != len(target.GetDynamicMetadataFromClaims()) { + return false + } + for k, v := range m.GetDynamicMetadataFromClaims() { + + if strings.Compare(v, target.GetDynamicMetadataFromClaims()[k]) != 0 { + return false + } + + } + + switch m.Provider.(type) { + + case *ExtAuthConfig_OidcAuthorizationCodeConfig_Default_: + if _, ok := target.Provider.(*ExtAuthConfig_OidcAuthorizationCodeConfig_Default_); !ok { + return false + } + + if h, ok := interface{}(m.GetDefault()).(equality.Equalizer); ok { + if !h.Equal(target.GetDefault()) { + return false + } + } else { + if !proto.Equal(m.GetDefault(), target.GetDefault()) { + return false + } + } + + case *ExtAuthConfig_OidcAuthorizationCodeConfig_Azure: + if _, ok := target.Provider.(*ExtAuthConfig_OidcAuthorizationCodeConfig_Azure); !ok { + return false + } + + if h, ok := interface{}(m.GetAzure()).(equality.Equalizer); ok { + if !h.Equal(target.GetAzure()) { + return false + } + } else { + if !proto.Equal(m.GetAzure(), target.GetAzure()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.Provider != target.Provider { + return false + } + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_AccessTokenValidationConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_AccessTokenValidationConfig) + if !ok { + that2, ok := that.(ExtAuthConfig_AccessTokenValidationConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetUserinfoUrl(), target.GetUserinfoUrl()) != 0 { + return false + } + + if h, ok := interface{}(m.GetCacheTimeout()).(equality.Equalizer); ok { + if !h.Equal(target.GetCacheTimeout()) { + return false + } + } else { + if !proto.Equal(m.GetCacheTimeout(), target.GetCacheTimeout()) { + return false + } + } + + if len(m.GetDynamicMetadataFromClaims()) != len(target.GetDynamicMetadataFromClaims()) { + return false + } + for k, v := range m.GetDynamicMetadataFromClaims() { + + if strings.Compare(v, target.GetDynamicMetadataFromClaims()[k]) != 0 { + return false + } + + } + + if len(m.GetClaimsToHeaders()) != len(target.GetClaimsToHeaders()) { + return false + } + for idx, v := range m.GetClaimsToHeaders() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetClaimsToHeaders()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetClaimsToHeaders()[idx]) { + return false + } + } + + } + + switch m.ValidationType.(type) { + + case *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionUrl: + if _, ok := target.ValidationType.(*ExtAuthConfig_AccessTokenValidationConfig_IntrospectionUrl); !ok { + return false + } + + if strings.Compare(m.GetIntrospectionUrl(), target.GetIntrospectionUrl()) != 0 { + return false + } + + case *ExtAuthConfig_AccessTokenValidationConfig_Jwt: + if _, ok := target.ValidationType.(*ExtAuthConfig_AccessTokenValidationConfig_Jwt); !ok { + return false + } + + if h, ok := interface{}(m.GetJwt()).(equality.Equalizer); ok { + if !h.Equal(target.GetJwt()) { + return false + } + } else { + if !proto.Equal(m.GetJwt(), target.GetJwt()) { + return false + } + } + + case *ExtAuthConfig_AccessTokenValidationConfig_Introspection: + if _, ok := target.ValidationType.(*ExtAuthConfig_AccessTokenValidationConfig_Introspection); !ok { + return false + } + + if h, ok := interface{}(m.GetIntrospection()).(equality.Equalizer); ok { + if !h.Equal(target.GetIntrospection()) { + return false + } + } else { + if !proto.Equal(m.GetIntrospection(), target.GetIntrospection()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.ValidationType != target.ValidationType { + return false + } + } + + switch m.ScopeValidation.(type) { + + case *ExtAuthConfig_AccessTokenValidationConfig_RequiredScopes: + if _, ok := target.ScopeValidation.(*ExtAuthConfig_AccessTokenValidationConfig_RequiredScopes); !ok { + return false + } + + if h, ok := interface{}(m.GetRequiredScopes()).(equality.Equalizer); ok { + if !h.Equal(target.GetRequiredScopes()) { + return false + } + } else { + if !proto.Equal(m.GetRequiredScopes(), target.GetRequiredScopes()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.ScopeValidation != target.ScopeValidation { + return false + } + } + + switch m.Provider.(type) { + + case *ExtAuthConfig_AccessTokenValidationConfig_Default_: + if _, ok := target.Provider.(*ExtAuthConfig_AccessTokenValidationConfig_Default_); !ok { + return false + } + + if h, ok := interface{}(m.GetDefault()).(equality.Equalizer); ok { + if !h.Equal(target.GetDefault()) { + return false + } + } else { + if !proto.Equal(m.GetDefault(), target.GetDefault()) { + return false + } + } + + case *ExtAuthConfig_AccessTokenValidationConfig_Azure: + if _, ok := target.Provider.(*ExtAuthConfig_AccessTokenValidationConfig_Azure); !ok { + return false + } + + if h, ok := interface{}(m.GetAzure()).(equality.Equalizer); ok { + if !h.Equal(target.GetAzure()) { + return false + } + } else { + if !proto.Equal(m.GetAzure(), target.GetAzure()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.Provider != target.Provider { + return false + } + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_PlainOAuth2Config) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_PlainOAuth2Config) + if !ok { + that2, ok := that.(ExtAuthConfig_PlainOAuth2Config) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetClientId(), target.GetClientId()) != 0 { + return false + } + + if strings.Compare(m.GetClientSecret(), target.GetClientSecret()) != 0 { + return false + } + + if len(m.GetAuthEndpointQueryParams()) != len(target.GetAuthEndpointQueryParams()) { + return false + } + for k, v := range m.GetAuthEndpointQueryParams() { + + if strings.Compare(v, target.GetAuthEndpointQueryParams()[k]) != 0 { + return false + } + + } + + if strings.Compare(m.GetAppUrl(), target.GetAppUrl()) != 0 { + return false + } + + if strings.Compare(m.GetCallbackPath(), target.GetCallbackPath()) != 0 { + return false + } + + if len(m.GetScopes()) != len(target.GetScopes()) { + return false + } + for idx, v := range m.GetScopes() { + + if strings.Compare(v, target.GetScopes()[idx]) != 0 { + return false + } + + } + + if h, ok := interface{}(m.GetSession()).(equality.Equalizer); ok { + if !h.Equal(target.GetSession()) { + return false + } + } else { + if !proto.Equal(m.GetSession(), target.GetSession()) { + return false + } + } + + if strings.Compare(m.GetLogoutPath(), target.GetLogoutPath()) != 0 { + return false + } + + if len(m.GetTokenEndpointQueryParams()) != len(target.GetTokenEndpointQueryParams()) { + return false + } + for k, v := range m.GetTokenEndpointQueryParams() { + + if strings.Compare(v, target.GetTokenEndpointQueryParams()[k]) != 0 { + return false + } + + } + + if strings.Compare(m.GetAfterLogoutUrl(), target.GetAfterLogoutUrl()) != 0 { + return false + } + + if strings.Compare(m.GetAuthEndpoint(), target.GetAuthEndpoint()) != 0 { + return false + } + + if strings.Compare(m.GetTokenEndpoint(), target.GetTokenEndpoint()) != 0 { + return false + } + + if strings.Compare(m.GetRevocationEndpoint(), target.GetRevocationEndpoint()) != 0 { + return false + } + + if h, ok := interface{}(m.GetUserSession()).(equality.Equalizer); ok { + if !h.Equal(target.GetUserSession()) { + return false + } + } else { + if !proto.Equal(m.GetUserSession(), target.GetUserSession()) { + return false + } + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_OAuth2Config) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_OAuth2Config) + if !ok { + that2, ok := that.(ExtAuthConfig_OAuth2Config) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + switch m.OauthType.(type) { + + case *ExtAuthConfig_OAuth2Config_OidcAuthorizationCode: + if _, ok := target.OauthType.(*ExtAuthConfig_OAuth2Config_OidcAuthorizationCode); !ok { + return false + } + + if h, ok := interface{}(m.GetOidcAuthorizationCode()).(equality.Equalizer); ok { + if !h.Equal(target.GetOidcAuthorizationCode()) { + return false + } + } else { + if !proto.Equal(m.GetOidcAuthorizationCode(), target.GetOidcAuthorizationCode()) { + return false + } + } + + case *ExtAuthConfig_OAuth2Config_AccessTokenValidationConfig: + if _, ok := target.OauthType.(*ExtAuthConfig_OAuth2Config_AccessTokenValidationConfig); !ok { + return false + } + + if h, ok := interface{}(m.GetAccessTokenValidationConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetAccessTokenValidationConfig()) { + return false + } + } else { + if !proto.Equal(m.GetAccessTokenValidationConfig(), target.GetAccessTokenValidationConfig()) { + return false + } + } + + case *ExtAuthConfig_OAuth2Config_Oauth2Config: + if _, ok := target.OauthType.(*ExtAuthConfig_OAuth2Config_Oauth2Config); !ok { + return false + } + + if h, ok := interface{}(m.GetOauth2Config()).(equality.Equalizer); ok { + if !h.Equal(target.GetOauth2Config()) { + return false + } + } else { + if !proto.Equal(m.GetOauth2Config(), target.GetOauth2Config()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.OauthType != target.OauthType { + return false + } + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_ApiKeyAuthConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_ApiKeyAuthConfig) + if !ok { + that2, ok := that.(ExtAuthConfig_ApiKeyAuthConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetValidApiKeys()) != len(target.GetValidApiKeys()) { + return false + } + for k, v := range m.GetValidApiKeys() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetValidApiKeys()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetValidApiKeys()[k]) { + return false + } + } + + } + + if strings.Compare(m.GetHeaderName(), target.GetHeaderName()) != 0 { + return false + } + + if len(m.GetHeadersFromKeyMetadata()) != len(target.GetHeadersFromKeyMetadata()) { + return false + } + for k, v := range m.GetHeadersFromKeyMetadata() { + + if strings.Compare(v, target.GetHeadersFromKeyMetadata()[k]) != 0 { + return false + } + + } + + if m.GetSkipMetadataValidation() != target.GetSkipMetadataValidation() { + return false + } + + switch m.StorageBackend.(type) { + + case *ExtAuthConfig_ApiKeyAuthConfig_K8SSecretApikeyStorage: + if _, ok := target.StorageBackend.(*ExtAuthConfig_ApiKeyAuthConfig_K8SSecretApikeyStorage); !ok { + return false + } + + if h, ok := interface{}(m.GetK8SSecretApikeyStorage()).(equality.Equalizer); ok { + if !h.Equal(target.GetK8SSecretApikeyStorage()) { + return false + } + } else { + if !proto.Equal(m.GetK8SSecretApikeyStorage(), target.GetK8SSecretApikeyStorage()) { + return false + } + } + + case *ExtAuthConfig_ApiKeyAuthConfig_AerospikeApikeyStorage: + if _, ok := target.StorageBackend.(*ExtAuthConfig_ApiKeyAuthConfig_AerospikeApikeyStorage); !ok { + return false + } + + if h, ok := interface{}(m.GetAerospikeApikeyStorage()).(equality.Equalizer); ok { + if !h.Equal(target.GetAerospikeApikeyStorage()) { + return false + } + } else { + if !proto.Equal(m.GetAerospikeApikeyStorage(), target.GetAerospikeApikeyStorage()) { + return false + } + } + + case *ExtAuthConfig_ApiKeyAuthConfig_ServerDefaultApikeyStorage: + if _, ok := target.StorageBackend.(*ExtAuthConfig_ApiKeyAuthConfig_ServerDefaultApikeyStorage); !ok { + return false + } + + if h, ok := interface{}(m.GetServerDefaultApikeyStorage()).(equality.Equalizer); ok { + if !h.Equal(target.GetServerDefaultApikeyStorage()) { + return false + } + } else { + if !proto.Equal(m.GetServerDefaultApikeyStorage(), target.GetServerDefaultApikeyStorage()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.StorageBackend != target.StorageBackend { + return false + } + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_OpaAuthConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_OpaAuthConfig) + if !ok { + that2, ok := that.(ExtAuthConfig_OpaAuthConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetModules()) != len(target.GetModules()) { + return false + } + for k, v := range m.GetModules() { + + if strings.Compare(v, target.GetModules()[k]) != 0 { + return false + } + + } + + if strings.Compare(m.GetQuery(), target.GetQuery()) != 0 { + return false + } + + if h, ok := interface{}(m.GetOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetOptions()) { + return false + } + } else { + if !proto.Equal(m.GetOptions(), target.GetOptions()) { + return false + } + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_OpaServerAuthConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_OpaServerAuthConfig) + if !ok { + that2, ok := that.(ExtAuthConfig_OpaServerAuthConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetPackage(), target.GetPackage()) != 0 { + return false + } + + if strings.Compare(m.GetRuleName(), target.GetRuleName()) != 0 { + return false + } + + if strings.Compare(m.GetServerAddr(), target.GetServerAddr()) != 0 { + return false + } + + if h, ok := interface{}(m.GetOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetOptions()) { + return false + } + } else { + if !proto.Equal(m.GetOptions(), target.GetOptions()) { + return false + } + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_LdapConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_LdapConfig) + if !ok { + that2, ok := that.(ExtAuthConfig_LdapConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetAddress(), target.GetAddress()) != 0 { + return false + } + + if strings.Compare(m.GetUserDnTemplate(), target.GetUserDnTemplate()) != 0 { + return false + } + + if strings.Compare(m.GetMembershipAttributeName(), target.GetMembershipAttributeName()) != 0 { + return false + } + + if len(m.GetAllowedGroups()) != len(target.GetAllowedGroups()) { + return false + } + for idx, v := range m.GetAllowedGroups() { + + if strings.Compare(v, target.GetAllowedGroups()[idx]) != 0 { + return false + } + + } + + if h, ok := interface{}(m.GetPool()).(equality.Equalizer); ok { + if !h.Equal(target.GetPool()) { + return false + } + } else { + if !proto.Equal(m.GetPool(), target.GetPool()) { + return false + } + } + + if strings.Compare(m.GetSearchFilter(), target.GetSearchFilter()) != 0 { + return false + } + + if m.GetDisableGroupChecking() != target.GetDisableGroupChecking() { + return false + } + + if h, ok := interface{}(m.GetGroupLookupSettings()).(equality.Equalizer); ok { + if !h.Equal(target.GetGroupLookupSettings()) { + return false + } + } else { + if !proto.Equal(m.GetGroupLookupSettings(), target.GetGroupLookupSettings()) { + return false + } + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_LdapServiceAccountConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_LdapServiceAccountConfig) + if !ok { + that2, ok := that.(ExtAuthConfig_LdapServiceAccountConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetUsername(), target.GetUsername()) != 0 { + return false + } + + if strings.Compare(m.GetPassword(), target.GetPassword()) != 0 { + return false + } + + if m.GetCheckGroupsWithServiceAccount() != target.GetCheckGroupsWithServiceAccount() { + return false + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_HmacAuthConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_HmacAuthConfig) + if !ok { + that2, ok := that.(ExtAuthConfig_HmacAuthConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + switch m.SecretStorage.(type) { + + case *ExtAuthConfig_HmacAuthConfig_SecretList: + if _, ok := target.SecretStorage.(*ExtAuthConfig_HmacAuthConfig_SecretList); !ok { + return false + } + + if h, ok := interface{}(m.GetSecretList()).(equality.Equalizer); ok { + if !h.Equal(target.GetSecretList()) { + return false + } + } else { + if !proto.Equal(m.GetSecretList(), target.GetSecretList()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.SecretStorage != target.SecretStorage { + return false + } + } + + switch m.ImplementationType.(type) { + + case *ExtAuthConfig_HmacAuthConfig_ParametersInHeaders: + if _, ok := target.ImplementationType.(*ExtAuthConfig_HmacAuthConfig_ParametersInHeaders); !ok { + return false + } + + if h, ok := interface{}(m.GetParametersInHeaders()).(equality.Equalizer); ok { + if !h.Equal(target.GetParametersInHeaders()) { + return false + } + } else { + if !proto.Equal(m.GetParametersInHeaders(), target.GetParametersInHeaders()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.ImplementationType != target.ImplementationType { + return false + } + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_PortalAuthConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_PortalAuthConfig) + if !ok { + that2, ok := that.(ExtAuthConfig_PortalAuthConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetUrl(), target.GetUrl()) != 0 { + return false + } + + if strings.Compare(m.GetApiKeyHeader(), target.GetApiKeyHeader()) != 0 { + return false + } + + if h, ok := interface{}(m.GetRedisOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetRedisOptions()) { + return false + } + } else { + if !proto.Equal(m.GetRedisOptions(), target.GetRedisOptions()) { + return false + } + } + + if h, ok := interface{}(m.GetCacheDuration()).(equality.Equalizer); ok { + if !h.Equal(target.GetCacheDuration()) { + return false + } + } else { + if !proto.Equal(m.GetCacheDuration(), target.GetCacheDuration()) { + return false + } + } + + if h, ok := interface{}(m.GetRequestTimeout()).(equality.Equalizer); ok { + if !h.Equal(target.GetRequestTimeout()) { + return false + } + } else { + if !proto.Equal(m.GetRequestTimeout(), target.GetRequestTimeout()) { + return false + } + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_InMemorySecretList) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_InMemorySecretList) + if !ok { + that2, ok := that.(ExtAuthConfig_InMemorySecretList) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetSecretList()) != len(target.GetSecretList()) { + return false + } + for k, v := range m.GetSecretList() { + + if strings.Compare(v, target.GetSecretList()[k]) != 0 { + return false + } + + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_PassthroughAuthInternalConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_PassthroughAuthInternalConfig) + if !ok { + that2, ok := that.(ExtAuthConfig_PassthroughAuthInternalConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetPassThroughAuth()).(equality.Equalizer); ok { + if !h.Equal(target.GetPassThroughAuth()) { + return false + } + } else { + if !proto.Equal(m.GetPassThroughAuth(), target.GetPassThroughAuth()) { + return false + } + } + + if h, ok := interface{}(m.GetTlsConfigData()).(equality.Equalizer); ok { + if !h.Equal(target.GetTlsConfigData()) { + return false + } + } else { + if !proto.Equal(m.GetTlsConfigData(), target.GetTlsConfigData()) { + return false + } + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_Config) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_Config) + if !ok { + that2, ok := that.(ExtAuthConfig_Config) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetName()).(equality.Equalizer); ok { + if !h.Equal(target.GetName()) { + return false + } + } else { + if !proto.Equal(m.GetName(), target.GetName()) { + return false + } + } + + switch m.AuthConfig.(type) { + + case *ExtAuthConfig_Config_Oauth: + if _, ok := target.AuthConfig.(*ExtAuthConfig_Config_Oauth); !ok { + return false + } + + if h, ok := interface{}(m.GetOauth()).(equality.Equalizer); ok { + if !h.Equal(target.GetOauth()) { + return false + } + } else { + if !proto.Equal(m.GetOauth(), target.GetOauth()) { + return false + } + } + + case *ExtAuthConfig_Config_Oauth2: + if _, ok := target.AuthConfig.(*ExtAuthConfig_Config_Oauth2); !ok { + return false + } + + if h, ok := interface{}(m.GetOauth2()).(equality.Equalizer); ok { + if !h.Equal(target.GetOauth2()) { + return false + } + } else { + if !proto.Equal(m.GetOauth2(), target.GetOauth2()) { + return false + } + } + + case *ExtAuthConfig_Config_BasicAuth: + if _, ok := target.AuthConfig.(*ExtAuthConfig_Config_BasicAuth); !ok { + return false + } + + if h, ok := interface{}(m.GetBasicAuth()).(equality.Equalizer); ok { + if !h.Equal(target.GetBasicAuth()) { + return false + } + } else { + if !proto.Equal(m.GetBasicAuth(), target.GetBasicAuth()) { + return false + } + } + + case *ExtAuthConfig_Config_BasicAuthInternal: + if _, ok := target.AuthConfig.(*ExtAuthConfig_Config_BasicAuthInternal); !ok { + return false + } + + if h, ok := interface{}(m.GetBasicAuthInternal()).(equality.Equalizer); ok { + if !h.Equal(target.GetBasicAuthInternal()) { + return false + } + } else { + if !proto.Equal(m.GetBasicAuthInternal(), target.GetBasicAuthInternal()) { + return false + } + } + + case *ExtAuthConfig_Config_ApiKeyAuth: + if _, ok := target.AuthConfig.(*ExtAuthConfig_Config_ApiKeyAuth); !ok { + return false + } + + if h, ok := interface{}(m.GetApiKeyAuth()).(equality.Equalizer); ok { + if !h.Equal(target.GetApiKeyAuth()) { + return false + } + } else { + if !proto.Equal(m.GetApiKeyAuth(), target.GetApiKeyAuth()) { + return false + } + } + + case *ExtAuthConfig_Config_PluginAuth: + if _, ok := target.AuthConfig.(*ExtAuthConfig_Config_PluginAuth); !ok { + return false + } + + if h, ok := interface{}(m.GetPluginAuth()).(equality.Equalizer); ok { + if !h.Equal(target.GetPluginAuth()) { + return false + } + } else { + if !proto.Equal(m.GetPluginAuth(), target.GetPluginAuth()) { + return false + } + } + + case *ExtAuthConfig_Config_OpaAuth: + if _, ok := target.AuthConfig.(*ExtAuthConfig_Config_OpaAuth); !ok { + return false + } + + if h, ok := interface{}(m.GetOpaAuth()).(equality.Equalizer); ok { + if !h.Equal(target.GetOpaAuth()) { + return false + } + } else { + if !proto.Equal(m.GetOpaAuth(), target.GetOpaAuth()) { + return false + } + } + + case *ExtAuthConfig_Config_Ldap: + if _, ok := target.AuthConfig.(*ExtAuthConfig_Config_Ldap); !ok { + return false + } + + if h, ok := interface{}(m.GetLdap()).(equality.Equalizer); ok { + if !h.Equal(target.GetLdap()) { + return false + } + } else { + if !proto.Equal(m.GetLdap(), target.GetLdap()) { + return false + } + } + + case *ExtAuthConfig_Config_LdapInternal: + if _, ok := target.AuthConfig.(*ExtAuthConfig_Config_LdapInternal); !ok { + return false + } + + if h, ok := interface{}(m.GetLdapInternal()).(equality.Equalizer); ok { + if !h.Equal(target.GetLdapInternal()) { + return false + } + } else { + if !proto.Equal(m.GetLdapInternal(), target.GetLdapInternal()) { + return false + } + } + + case *ExtAuthConfig_Config_Jwt: + if _, ok := target.AuthConfig.(*ExtAuthConfig_Config_Jwt); !ok { + return false + } + + if h, ok := interface{}(m.GetJwt()).(equality.Equalizer); ok { + if !h.Equal(target.GetJwt()) { + return false + } + } else { + if !proto.Equal(m.GetJwt(), target.GetJwt()) { + return false + } + } + + case *ExtAuthConfig_Config_PassThroughAuth: + if _, ok := target.AuthConfig.(*ExtAuthConfig_Config_PassThroughAuth); !ok { + return false + } + + if h, ok := interface{}(m.GetPassThroughAuth()).(equality.Equalizer); ok { + if !h.Equal(target.GetPassThroughAuth()) { + return false + } + } else { + if !proto.Equal(m.GetPassThroughAuth(), target.GetPassThroughAuth()) { + return false + } + } + + case *ExtAuthConfig_Config_HmacAuth: + if _, ok := target.AuthConfig.(*ExtAuthConfig_Config_HmacAuth); !ok { + return false + } + + if h, ok := interface{}(m.GetHmacAuth()).(equality.Equalizer); ok { + if !h.Equal(target.GetHmacAuth()) { + return false + } + } else { + if !proto.Equal(m.GetHmacAuth(), target.GetHmacAuth()) { + return false + } + } + + case *ExtAuthConfig_Config_OpaServerAuth: + if _, ok := target.AuthConfig.(*ExtAuthConfig_Config_OpaServerAuth); !ok { + return false + } + + if h, ok := interface{}(m.GetOpaServerAuth()).(equality.Equalizer); ok { + if !h.Equal(target.GetOpaServerAuth()) { + return false + } + } else { + if !proto.Equal(m.GetOpaServerAuth(), target.GetOpaServerAuth()) { + return false + } + } + + case *ExtAuthConfig_Config_PortalAuth: + if _, ok := target.AuthConfig.(*ExtAuthConfig_Config_PortalAuth); !ok { + return false + } + + if h, ok := interface{}(m.GetPortalAuth()).(equality.Equalizer); ok { + if !h.Equal(target.GetPortalAuth()) { + return false + } + } else { + if !proto.Equal(m.GetPortalAuth(), target.GetPortalAuth()) { + return false + } + } + + case *ExtAuthConfig_Config_PassthroughInternal: + if _, ok := target.AuthConfig.(*ExtAuthConfig_Config_PassthroughInternal); !ok { + return false + } + + if h, ok := interface{}(m.GetPassthroughInternal()).(equality.Equalizer); ok { + if !h.Equal(target.GetPassthroughInternal()) { + return false + } + } else { + if !proto.Equal(m.GetPassthroughInternal(), target.GetPassthroughInternal()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.AuthConfig != target.AuthConfig { + return false + } + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_BasicAuthInternal_EncryptionType) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_BasicAuthInternal_EncryptionType) + if !ok { + that2, ok := that.(ExtAuthConfig_BasicAuthInternal_EncryptionType) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + switch m.Algorithm.(type) { + + case *ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr_: + if _, ok := target.Algorithm.(*ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr_); !ok { + return false + } + + if h, ok := interface{}(m.GetApr()).(equality.Equalizer); ok { + if !h.Equal(target.GetApr()) { + return false + } + } else { + if !proto.Equal(m.GetApr(), target.GetApr()) { + return false + } + } + + case *ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1_: + if _, ok := target.Algorithm.(*ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1_); !ok { + return false + } + + if h, ok := interface{}(m.GetSha1()).(equality.Equalizer); ok { + if !h.Equal(target.GetSha1()) { + return false + } + } else { + if !proto.Equal(m.GetSha1(), target.GetSha1()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.Algorithm != target.Algorithm { + return false + } + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_BasicAuthInternal_User) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_BasicAuthInternal_User) + if !ok { + that2, ok := that.(ExtAuthConfig_BasicAuthInternal_User) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetSalt(), target.GetSalt()) != 0 { + return false + } + + if strings.Compare(m.GetHashedPassword(), target.GetHashedPassword()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_BasicAuthInternal_UserList) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_BasicAuthInternal_UserList) + if !ok { + that2, ok := that.(ExtAuthConfig_BasicAuthInternal_UserList) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetUsers()) != len(target.GetUsers()) { + return false + } + for k, v := range m.GetUsers() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetUsers()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetUsers()[k]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1) + if !ok { + that2, ok := that.(ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr) + if !ok { + that2, ok := that.(ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_UserSessionConfig_CipherConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_UserSessionConfig_CipherConfig) + if !ok { + that2, ok := that.(ExtAuthConfig_UserSessionConfig_CipherConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetKey(), target.GetKey()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig) + if !ok { + that2, ok := that.(ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetSigningKey(), target.GetSigningKey()) != 0 { + return false + } + + if h, ok := interface{}(m.GetValidFor()).(equality.Equalizer); ok { + if !h.Equal(target.GetValidFor()) { + return false + } + } else { + if !proto.Equal(m.GetValidFor(), target.GetValidFor()) { + return false + } + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken) + if !ok { + that2, ok := that.(ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetClaimsToHeaders()) != len(target.GetClaimsToHeaders()) { + return false + } + for idx, v := range m.GetClaimsToHeaders() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetClaimsToHeaders()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetClaimsToHeaders()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken) + if !ok { + that2, ok := that.(ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetClaimsToHeaders()) != len(target.GetClaimsToHeaders()) { + return false + } + for idx, v := range m.GetClaimsToHeaders() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetClaimsToHeaders()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetClaimsToHeaders()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig_Default) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_OidcAuthorizationCodeConfig_Default) + if !ok { + that2, ok := that.(ExtAuthConfig_OidcAuthorizationCodeConfig_Default) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout) + if !ok { + that2, ok := that.(ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetPath(), target.GetPath()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) + if !ok { + that2, ok := that.(ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetIssuer(), target.GetIssuer()) != 0 { + return false + } + + switch m.JwksSourceSpecifier.(type) { + + case *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks_: + if _, ok := target.JwksSourceSpecifier.(*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks_); !ok { + return false + } + + if h, ok := interface{}(m.GetRemoteJwks()).(equality.Equalizer); ok { + if !h.Equal(target.GetRemoteJwks()) { + return false + } + } else { + if !proto.Equal(m.GetRemoteJwks(), target.GetRemoteJwks()) { + return false + } + } + + case *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks_: + if _, ok := target.JwksSourceSpecifier.(*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks_); !ok { + return false + } + + if h, ok := interface{}(m.GetLocalJwks()).(equality.Equalizer); ok { + if !h.Equal(target.GetLocalJwks()) { + return false + } + } else { + if !proto.Equal(m.GetLocalJwks(), target.GetLocalJwks()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.JwksSourceSpecifier != target.JwksSourceSpecifier { + return false + } + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) + if !ok { + that2, ok := that.(ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetIntrospectionUrl(), target.GetIntrospectionUrl()) != 0 { + return false + } + + if strings.Compare(m.GetClientId(), target.GetClientId()) != 0 { + return false + } + + if strings.Compare(m.GetClientSecret(), target.GetClientSecret()) != 0 { + return false + } + + if strings.Compare(m.GetUserIdAttributeName(), target.GetUserIdAttributeName()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_AccessTokenValidationConfig_ScopeList) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_AccessTokenValidationConfig_ScopeList) + if !ok { + that2, ok := that.(ExtAuthConfig_AccessTokenValidationConfig_ScopeList) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetScope()) != len(target.GetScope()) { + return false + } + for idx, v := range m.GetScope() { + + if strings.Compare(v, target.GetScope()[idx]) != 0 { + return false + } + + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_AccessTokenValidationConfig_Default) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_AccessTokenValidationConfig_Default) + if !ok { + that2, ok := that.(ExtAuthConfig_AccessTokenValidationConfig_Default) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) + if !ok { + that2, ok := that.(ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetUrl(), target.GetUrl()) != 0 { + return false + } + + if h, ok := interface{}(m.GetRefreshInterval()).(equality.Equalizer); ok { + if !h.Equal(target.GetRefreshInterval()) { + return false + } + } else { + if !proto.Equal(m.GetRefreshInterval(), target.GetRefreshInterval()) { + return false + } + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) + if !ok { + that2, ok := that.(ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetInlineString(), target.GetInlineString()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) + if !ok { + that2, ok := that.(ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetUsername(), target.GetUsername()) != 0 { + return false + } + + if len(m.GetMetadata()) != len(target.GetMetadata()) { + return false + } + for k, v := range m.GetMetadata() { + + if strings.Compare(v, target.GetMetadata()[k]) != 0 { + return false + } + + } + + return true +} + +// Equal function +func (m *ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData) + if !ok { + that2, ok := that.(ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetCertPem(), target.GetCertPem()) != 0 { + return false + } + + if strings.Compare(m.GetKeyPem(), target.GetKeyPem()) != 0 { + return false + } + + if strings.Compare(m.GetRootCaPem(), target.GetRootCaPem()) != 0 { + return false + } + + if h, ok := interface{}(m.GetSslParams()).(equality.Equalizer); ok { + if !h.Equal(target.GetSslParams()) { + return false + } + } else { + if !proto.Equal(m.GetSslParams(), target.GetSslParams()) { + return false + } + } + + return true +} diff --git a/pkg/api/enterprise.gloo.solo.io/v1/extauth-internal.pb.go b/pkg/api/enterprise.gloo.solo.io/v1/extauth-internal.pb.go new file mode 100644 index 000000000..9924b1859 --- /dev/null +++ b/pkg/api/enterprise.gloo.solo.io/v1/extauth-internal.pb.go @@ -0,0 +1,5679 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto + +package v1 + +import ( + context "context" + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + v2 "github.com/solo-io/solo-kit/pkg/api/external/envoy/api/v2" + _ "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + _ "google.golang.org/genproto/googleapis/api/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + emptypb "google.golang.org/protobuf/types/known/emptypb" + _ "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// @solo-kit:xds-service=ExtAuthDiscoveryService +// @solo-kit:resource.no_references +// +// This is an internal API used to share configuration between gloo-ee and extauth. Although this API is only used in gloo-ee, +// rules about breaking changes still apply to ensure we do not get errors during upgrade and downgrade. +type ExtAuthConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // @solo-kit:resource.name + // This is the identifier of the AuthConfig resource that this configuration is associated with. + // Any request to the external auth server includes an identifier that is matched against this field to determine + // which AuthConfig should be applied to it. + AuthConfigRefName string `protobuf:"bytes,1,opt,name=auth_config_ref_name,json=authConfigRefName,proto3" json:"auth_config_ref_name,omitempty"` + // List of auth configs to be checked for requests on a route referencing this auth config, + // By default, every config must be authorized for the entire request to be authorized. This + // behavior can be changed by defining names for each config and defining `boolean_expr` below. + // + // State is shared between successful requests on the chain, i.e., the headers returned from each + // successful auth service get appended into the final auth response. + Configs []*ExtAuthConfig_Config `protobuf:"bytes,8,rep,name=configs,proto3" json:"configs,omitempty"` + // How to handle processing of named configs within an auth config chain. + // An example config might be: `( basic1 || basic2 || (oidc1 && !oidc2) )` + // The boolean expression is evaluated left to right but honors parenthesis and short-circuiting. + // Defaults to an empty string, which is interpreted as `and`-ing the configs. + BooleanExpr *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=boolean_expr,json=booleanExpr,proto3" json:"boolean_expr,omitempty"` + // How the service should handle a redirect response from an OIDC issuer. In the default false mode, + // the redirect will be considered a successful response, and the client will receive a 302 with a location header. + // If this is set to true, the client will instead receive a 401 unauthorized response. This is useful in cases where + // API calls are being made or other such occurrences where the client cannot handle the redirect. + FailOnRedirect bool `protobuf:"varint,11,opt,name=fail_on_redirect,json=failOnRedirect,proto3" json:"fail_on_redirect,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig) Reset() { + *x = ExtAuthConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig) ProtoMessage() {} + +func (x *ExtAuthConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0} +} + +func (x *ExtAuthConfig) GetAuthConfigRefName() string { + if x != nil { + return x.AuthConfigRefName + } + return "" +} + +func (x *ExtAuthConfig) GetConfigs() []*ExtAuthConfig_Config { + if x != nil { + return x.Configs + } + return nil +} + +func (x *ExtAuthConfig) GetBooleanExpr() *wrapperspb.StringValue { + if x != nil { + return x.BooleanExpr + } + return nil +} + +func (x *ExtAuthConfig) GetFailOnRedirect() bool { + if x != nil { + return x.FailOnRedirect + } + return false +} + +type ApiKeyCreateRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + ApiKeys []*ApiKey `protobuf:"bytes,1,rep,name=api_keys,json=apiKeys,proto3" json:"api_keys,omitempty"` + RawApiKeys []string `protobuf:"bytes,2,rep,name=raw_api_keys,json=rawApiKeys,proto3" json:"raw_api_keys,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ApiKeyCreateRequest) Reset() { + *x = ApiKeyCreateRequest{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ApiKeyCreateRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApiKeyCreateRequest) ProtoMessage() {} + +func (x *ApiKeyCreateRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApiKeyCreateRequest.ProtoReflect.Descriptor instead. +func (*ApiKeyCreateRequest) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{1} +} + +func (x *ApiKeyCreateRequest) GetApiKeys() []*ApiKey { + if x != nil { + return x.ApiKeys + } + return nil +} + +func (x *ApiKeyCreateRequest) GetRawApiKeys() []string { + if x != nil { + return x.RawApiKeys + } + return nil +} + +type ApiKeyCreateResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + ApiKeys []*ApiKey `protobuf:"bytes,1,rep,name=api_keys,json=apiKeys,proto3" json:"api_keys,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ApiKeyCreateResponse) Reset() { + *x = ApiKeyCreateResponse{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ApiKeyCreateResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApiKeyCreateResponse) ProtoMessage() {} + +func (x *ApiKeyCreateResponse) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApiKeyCreateResponse.ProtoReflect.Descriptor instead. +func (*ApiKeyCreateResponse) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{2} +} + +func (x *ApiKeyCreateResponse) GetApiKeys() []*ApiKey { + if x != nil { + return x.ApiKeys + } + return nil +} + +type ApiKeyReadRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + RawApiKeys []string `protobuf:"bytes,1,rep,name=raw_api_keys,json=rawApiKeys,proto3" json:"raw_api_keys,omitempty"` + Labels []string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ApiKeyReadRequest) Reset() { + *x = ApiKeyReadRequest{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ApiKeyReadRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApiKeyReadRequest) ProtoMessage() {} + +func (x *ApiKeyReadRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApiKeyReadRequest.ProtoReflect.Descriptor instead. +func (*ApiKeyReadRequest) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{3} +} + +func (x *ApiKeyReadRequest) GetRawApiKeys() []string { + if x != nil { + return x.RawApiKeys + } + return nil +} + +func (x *ApiKeyReadRequest) GetLabels() []string { + if x != nil { + return x.Labels + } + return nil +} + +type ApiKeyReadResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + ApiKeys []*ApiKey `protobuf:"bytes,1,rep,name=api_keys,json=apiKeys,proto3" json:"api_keys,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ApiKeyReadResponse) Reset() { + *x = ApiKeyReadResponse{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ApiKeyReadResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApiKeyReadResponse) ProtoMessage() {} + +func (x *ApiKeyReadResponse) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApiKeyReadResponse.ProtoReflect.Descriptor instead. +func (*ApiKeyReadResponse) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{4} +} + +func (x *ApiKeyReadResponse) GetApiKeys() []*ApiKey { + if x != nil { + return x.ApiKeys + } + return nil +} + +type ApiKeyUpdateRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Upsert bool `protobuf:"varint,1,opt,name=upsert,proto3" json:"upsert,omitempty"` + ApiKeys []*ApiKey `protobuf:"bytes,2,rep,name=api_keys,json=apiKeys,proto3" json:"api_keys,omitempty"` + RawApiKeys []string `protobuf:"bytes,3,rep,name=raw_api_keys,json=rawApiKeys,proto3" json:"raw_api_keys,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ApiKeyUpdateRequest) Reset() { + *x = ApiKeyUpdateRequest{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ApiKeyUpdateRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApiKeyUpdateRequest) ProtoMessage() {} + +func (x *ApiKeyUpdateRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApiKeyUpdateRequest.ProtoReflect.Descriptor instead. +func (*ApiKeyUpdateRequest) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{5} +} + +func (x *ApiKeyUpdateRequest) GetUpsert() bool { + if x != nil { + return x.Upsert + } + return false +} + +func (x *ApiKeyUpdateRequest) GetApiKeys() []*ApiKey { + if x != nil { + return x.ApiKeys + } + return nil +} + +func (x *ApiKeyUpdateRequest) GetRawApiKeys() []string { + if x != nil { + return x.RawApiKeys + } + return nil +} + +type ApiKeyUpdateResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + ApiKeys []*ApiKey `protobuf:"bytes,1,rep,name=api_keys,json=apiKeys,proto3" json:"api_keys,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ApiKeyUpdateResponse) Reset() { + *x = ApiKeyUpdateResponse{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ApiKeyUpdateResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApiKeyUpdateResponse) ProtoMessage() {} + +func (x *ApiKeyUpdateResponse) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApiKeyUpdateResponse.ProtoReflect.Descriptor instead. +func (*ApiKeyUpdateResponse) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{6} +} + +func (x *ApiKeyUpdateResponse) GetApiKeys() []*ApiKey { + if x != nil { + return x.ApiKeys + } + return nil +} + +type ApiKeyDeleteRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + RawApiKeys []string `protobuf:"bytes,1,rep,name=raw_api_keys,json=rawApiKeys,proto3" json:"raw_api_keys,omitempty"` + Labels []string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ApiKeyDeleteRequest) Reset() { + *x = ApiKeyDeleteRequest{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ApiKeyDeleteRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApiKeyDeleteRequest) ProtoMessage() {} + +func (x *ApiKeyDeleteRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApiKeyDeleteRequest.ProtoReflect.Descriptor instead. +func (*ApiKeyDeleteRequest) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{7} +} + +func (x *ApiKeyDeleteRequest) GetRawApiKeys() []string { + if x != nil { + return x.RawApiKeys + } + return nil +} + +func (x *ApiKeyDeleteRequest) GetLabels() []string { + if x != nil { + return x.Labels + } + return nil +} + +type ApiKeyDeleteResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ApiKeyDeleteResponse) Reset() { + *x = ApiKeyDeleteResponse{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ApiKeyDeleteResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApiKeyDeleteResponse) ProtoMessage() {} + +func (x *ApiKeyDeleteResponse) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApiKeyDeleteResponse.ProtoReflect.Descriptor instead. +func (*ApiKeyDeleteResponse) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{8} +} + +// For apps in Microsoft Azure, configure Microsoft Entra ID as the OpenID Connect (OIDC) provider. +// This way, you can enable distributed claims and caching for when users are members of more than 200 groups. +type ExtAuthConfig_Azure struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The client ID for the ExtAuthService app that is registered in MS Entra, + // to access the Microsoft Graph API to retrieve distributed claims. + // This app is NOT the app that you want to configure external auth for. + ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` + // The tenant ID represents the MS Entra organization ID where the ExtAuthService app is registered. + // This tenant ID may or may not be the same as in the top level `OidcAuthorizationCodeConfig`, + // depending on how your Azure account is provisioned. + TenantId string `protobuf:"bytes,2,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` + // The client secret of the ExtAuthService app that is registered with MS Entra to communicate with the MS Graph API. + ClientSecret string `protobuf:"bytes,3,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"` + // Redis connection details to cache MS Entra claims. + // This way, you avoid performance issues of accessing the Microsoft Graph API too many times. + // Note that this setting does NOT turn on Redis caching for the user session. + // To turn on Redis user session caching, use the `userSessionConfig` field. + ClaimsCachingOptions *RedisOptions `protobuf:"bytes,4,opt,name=claims_caching_options,json=claimsCachingOptions,proto3" json:"claims_caching_options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_Azure) Reset() { + *x = ExtAuthConfig_Azure{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_Azure) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_Azure) ProtoMessage() {} + +func (x *ExtAuthConfig_Azure) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_Azure.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_Azure) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *ExtAuthConfig_Azure) GetClientId() string { + if x != nil { + return x.ClientId + } + return "" +} + +func (x *ExtAuthConfig_Azure) GetTenantId() string { + if x != nil { + return x.TenantId + } + return "" +} + +func (x *ExtAuthConfig_Azure) GetClientSecret() string { + if x != nil { + return x.ClientSecret + } + return "" +} + +func (x *ExtAuthConfig_Azure) GetClaimsCachingOptions() *RedisOptions { + if x != nil { + return x.ClaimsCachingOptions + } + return nil +} + +// Map a single claim from an OAuth2 or OIDC token to a header in the request to the upstream destination. +type ExtAuthConfig_ClaimToHeader struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The claim name from the token, such as `sub`. + Claim string `protobuf:"bytes,1,opt,name=claim,proto3" json:"claim,omitempty"` + // The header to copy the claim to, such as `x-sub`. + Header string `protobuf:"bytes,2,opt,name=header,proto3" json:"header,omitempty"` + // If the header exists, append the claim value to the header (true), or overwrite any existing value (false). The default behavior is to overwrite any existing value (false). + Append bool `protobuf:"varint,3,opt,name=append,proto3" json:"append,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_ClaimToHeader) Reset() { + *x = ExtAuthConfig_ClaimToHeader{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_ClaimToHeader) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_ClaimToHeader) ProtoMessage() {} + +func (x *ExtAuthConfig_ClaimToHeader) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_ClaimToHeader.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_ClaimToHeader) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *ExtAuthConfig_ClaimToHeader) GetClaim() string { + if x != nil { + return x.Claim + } + return "" +} + +func (x *ExtAuthConfig_ClaimToHeader) GetHeader() string { + if x != nil { + return x.Header + } + return "" +} + +func (x *ExtAuthConfig_ClaimToHeader) GetAppend() bool { + if x != nil { + return x.Append + } + return false +} + +// Message to store Basic Auth Configuration. +// "Internal" refers to this format allowing for selection of the hashing algorithm and user source. +// If only the legacy "apr" field is defined, the existing public BasicAuth configuration will continue be used. +type ExtAuthConfig_BasicAuthInternal struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Realm to use in the Basic Auth challenge. + Realm string `protobuf:"bytes,1,opt,name=realm,proto3" json:"realm,omitempty"` + // Hashing algorithm to use for password hashing. + Encryption *ExtAuthConfig_BasicAuthInternal_EncryptionType `protobuf:"bytes,2,opt,name=encryption,proto3" json:"encryption,omitempty"` + // Source of user credential data. + // + // Types that are valid to be assigned to UserSource: + // + // *ExtAuthConfig_BasicAuthInternal_UserList_ + UserSource isExtAuthConfig_BasicAuthInternal_UserSource `protobuf_oneof:"user_source"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_BasicAuthInternal) Reset() { + *x = ExtAuthConfig_BasicAuthInternal{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_BasicAuthInternal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_BasicAuthInternal) ProtoMessage() {} + +func (x *ExtAuthConfig_BasicAuthInternal) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_BasicAuthInternal.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_BasicAuthInternal) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 2} +} + +func (x *ExtAuthConfig_BasicAuthInternal) GetRealm() string { + if x != nil { + return x.Realm + } + return "" +} + +func (x *ExtAuthConfig_BasicAuthInternal) GetEncryption() *ExtAuthConfig_BasicAuthInternal_EncryptionType { + if x != nil { + return x.Encryption + } + return nil +} + +func (x *ExtAuthConfig_BasicAuthInternal) GetUserSource() isExtAuthConfig_BasicAuthInternal_UserSource { + if x != nil { + return x.UserSource + } + return nil +} + +func (x *ExtAuthConfig_BasicAuthInternal) GetUserList() *ExtAuthConfig_BasicAuthInternal_UserList { + if x != nil { + if x, ok := x.UserSource.(*ExtAuthConfig_BasicAuthInternal_UserList_); ok { + return x.UserList + } + } + return nil +} + +type isExtAuthConfig_BasicAuthInternal_UserSource interface { + isExtAuthConfig_BasicAuthInternal_UserSource() +} + +type ExtAuthConfig_BasicAuthInternal_UserList_ struct { + UserList *ExtAuthConfig_BasicAuthInternal_UserList `protobuf:"bytes,3,opt,name=user_list,json=userList,proto3,oneof"` +} + +func (*ExtAuthConfig_BasicAuthInternal_UserList_) isExtAuthConfig_BasicAuthInternal_UserSource() {} + +// Deprecated, prefer OAuth2Config +type ExtAuthConfig_OAuthConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // your client id as registered with the issuer + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. + ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` + // your client secret as registered with the issuer + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. + ClientSecret string `protobuf:"bytes,2,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"` + // The url of the issuer. We will look for OIDC information in issuerUrl+ + // ".well-known/openid-configuration" + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. + IssuerUrl string `protobuf:"bytes,3,opt,name=issuer_url,json=issuerUrl,proto3" json:"issuer_url,omitempty"` + // extra query parameters to apply to the Ext-Auth service's authorization request to the identity provider. + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. + AuthEndpointQueryParams map[string]string `protobuf:"bytes,7,rep,name=auth_endpoint_query_params,json=authEndpointQueryParams,proto3" json:"auth_endpoint_query_params,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // we to redirect after successful auth, if we can't determine the original + // url this should be your publicly available app url. + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. + AppUrl string `protobuf:"bytes,4,opt,name=app_url,json=appUrl,proto3" json:"app_url,omitempty"` + // a callback path relative to app url that will be used for OIDC callbacks. + // needs to not be used by the application + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. + CallbackPath string `protobuf:"bytes,5,opt,name=callback_path,json=callbackPath,proto3" json:"callback_path,omitempty"` + // scopes to request in addition to the openid scope. + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. + Scopes []string `protobuf:"bytes,6,rep,name=scopes,proto3" json:"scopes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_OAuthConfig) Reset() { + *x = ExtAuthConfig_OAuthConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_OAuthConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_OAuthConfig) ProtoMessage() {} + +func (x *ExtAuthConfig_OAuthConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_OAuthConfig.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_OAuthConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 3} +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. +func (x *ExtAuthConfig_OAuthConfig) GetClientId() string { + if x != nil { + return x.ClientId + } + return "" +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. +func (x *ExtAuthConfig_OAuthConfig) GetClientSecret() string { + if x != nil { + return x.ClientSecret + } + return "" +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. +func (x *ExtAuthConfig_OAuthConfig) GetIssuerUrl() string { + if x != nil { + return x.IssuerUrl + } + return "" +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. +func (x *ExtAuthConfig_OAuthConfig) GetAuthEndpointQueryParams() map[string]string { + if x != nil { + return x.AuthEndpointQueryParams + } + return nil +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. +func (x *ExtAuthConfig_OAuthConfig) GetAppUrl() string { + if x != nil { + return x.AppUrl + } + return "" +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. +func (x *ExtAuthConfig_OAuthConfig) GetCallbackPath() string { + if x != nil { + return x.CallbackPath + } + return "" +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. +func (x *ExtAuthConfig_OAuthConfig) GetScopes() []string { + if x != nil { + return x.Scopes + } + return nil +} + +type ExtAuthConfig_UserSessionConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // should we fail auth flow when failing to get a session from redis, or allow it to continue, + // potentially starting a new auth flow and setting a new session. + FailOnFetchFailure bool `protobuf:"varint,1,opt,name=fail_on_fetch_failure,json=failOnFetchFailure,proto3" json:"fail_on_fetch_failure,omitempty"` + // Set-Cookie options + CookieOptions *UserSession_CookieOptions `protobuf:"bytes,2,opt,name=cookie_options,json=cookieOptions,proto3" json:"cookie_options,omitempty"` + // Types that are valid to be assigned to Session: + // + // *ExtAuthConfig_UserSessionConfig_Cookie + // *ExtAuthConfig_UserSessionConfig_Redis + Session isExtAuthConfig_UserSessionConfig_Session `protobuf_oneof:"session"` + // the cipher config enables the symmetric key encryption of the cookie values of the user session. + CipherConfig *ExtAuthConfig_UserSessionConfig_CipherConfig `protobuf:"bytes,5,opt,name=cipher_config,json=cipherConfig,proto3" json:"cipher_config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_UserSessionConfig) Reset() { + *x = ExtAuthConfig_UserSessionConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_UserSessionConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_UserSessionConfig) ProtoMessage() {} + +func (x *ExtAuthConfig_UserSessionConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_UserSessionConfig.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_UserSessionConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 4} +} + +func (x *ExtAuthConfig_UserSessionConfig) GetFailOnFetchFailure() bool { + if x != nil { + return x.FailOnFetchFailure + } + return false +} + +func (x *ExtAuthConfig_UserSessionConfig) GetCookieOptions() *UserSession_CookieOptions { + if x != nil { + return x.CookieOptions + } + return nil +} + +func (x *ExtAuthConfig_UserSessionConfig) GetSession() isExtAuthConfig_UserSessionConfig_Session { + if x != nil { + return x.Session + } + return nil +} + +func (x *ExtAuthConfig_UserSessionConfig) GetCookie() *UserSession_InternalSession { + if x != nil { + if x, ok := x.Session.(*ExtAuthConfig_UserSessionConfig_Cookie); ok { + return x.Cookie + } + } + return nil +} + +func (x *ExtAuthConfig_UserSessionConfig) GetRedis() *UserSession_RedisSession { + if x != nil { + if x, ok := x.Session.(*ExtAuthConfig_UserSessionConfig_Redis); ok { + return x.Redis + } + } + return nil +} + +func (x *ExtAuthConfig_UserSessionConfig) GetCipherConfig() *ExtAuthConfig_UserSessionConfig_CipherConfig { + if x != nil { + return x.CipherConfig + } + return nil +} + +type isExtAuthConfig_UserSessionConfig_Session interface { + isExtAuthConfig_UserSessionConfig_Session() +} + +type ExtAuthConfig_UserSessionConfig_Cookie struct { + // Set the tokens in the cookie itself. No need for server side state. + Cookie *UserSession_InternalSession `protobuf:"bytes,3,opt,name=cookie,proto3,oneof"` +} + +type ExtAuthConfig_UserSessionConfig_Redis struct { + // Use redis to store the tokens and just store a random id in the cookie. + Redis *UserSession_RedisSession `protobuf:"bytes,4,opt,name=redis,proto3,oneof"` +} + +func (*ExtAuthConfig_UserSessionConfig_Cookie) isExtAuthConfig_UserSessionConfig_Session() {} + +func (*ExtAuthConfig_UserSessionConfig_Redis) isExtAuthConfig_UserSessionConfig_Session() {} + +type ExtAuthConfig_OidcAuthorizationCodeConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // your client id as registered with the issuer + ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` + // your client secret as registered with the issuer. + // Only one of client_secret or pk_jwt_client_authentication_config should be set. pk_jwt_client_authentication_config takes precedence. + ClientSecret string `protobuf:"bytes,2,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"` + // The url of the issuer. We will look for OIDC information in issuerUrl+ + // ".well-known/openid-configuration" + IssuerUrl string `protobuf:"bytes,3,opt,name=issuer_url,json=issuerUrl,proto3" json:"issuer_url,omitempty"` + // extra query parameters to apply to the Ext-Auth service's authorization request to the identity provider. + // this can be useful for flows such as PKCE (https://www.oauth.com/oauth2-servers/pkce/authorization-request/) + // to set the `code_challenge` and `code_challenge_method`. + AuthEndpointQueryParams map[string]string `protobuf:"bytes,4,rep,name=auth_endpoint_query_params,json=authEndpointQueryParams,proto3" json:"auth_endpoint_query_params,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // extra query parameters to apply to the Ext-Auth service's token request to the identity provider. + // this can be useful for flows such as PKCE (https://www.oauth.com/oauth2-servers/pkce/authorization-request/) + // to set the `code_verifier`. + TokenEndpointQueryParams map[string]string `protobuf:"bytes,14,rep,name=token_endpoint_query_params,json=tokenEndpointQueryParams,proto3" json:"token_endpoint_query_params,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // we to redirect after successful auth, if we can't determine the original + // url this should be your publicly available app url. + AppUrl string `protobuf:"bytes,5,opt,name=app_url,json=appUrl,proto3" json:"app_url,omitempty"` + // a callback path relative to app url that will be used for OIDC callbacks. + // needs to not be used by the application + CallbackPath string `protobuf:"bytes,6,opt,name=callback_path,json=callbackPath,proto3" json:"callback_path,omitempty"` + // a path relative to app url that will be used for logging out from an OIDC session. + // should not be used by the application. + // If not provided, logout functionality will be disabled. + LogoutPath string `protobuf:"bytes,9,opt,name=logout_path,json=logoutPath,proto3" json:"logout_path,omitempty"` + // url to redirect to after logout. + // This should be a publicly available URL. If not provided, will default to the `app_url`. + AfterLogoutUrl string `protobuf:"bytes,15,opt,name=after_logout_url,json=afterLogoutUrl,proto3" json:"after_logout_url,omitempty"` + // scopes to request in addition to the openid scope. + Scopes []string `protobuf:"bytes,7,rep,name=scopes,proto3" json:"scopes,omitempty"` + // DEPRECATED: use userSessionConfig [userSession] + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. + Session *UserSession `protobuf:"bytes,8,opt,name=session,proto3" json:"session,omitempty"` + // Configures headers added to requests. + Headers *HeaderConfiguration `protobuf:"bytes,10,opt,name=headers,proto3" json:"headers,omitempty"` + // OIDC configuration is discovered at /.well-known/openid-configuration + // The configuration override defines any properties that should override this discovery configuration + // For example, the following AuthConfig CRD could be defined as: + // + // ```yaml + // apiVersion: enterprise.gloo.solo.io/v1 + // kind: AuthConfig + // metadata: + // name: google-oidc + // namespace: gloo-system + // spec: + // configs: + // - oauth: + // app_url: http://localhost:8080 + // callback_path: /callback + // client_id: $CLIENT_ID + // client_secret_ref: + // name: google + // namespace: gloo-system + // issuer_url: https://accounts.google.com + // discovery_override: + // token_endpoint: "https://token.url/gettoken" + // ``` + // + // And this will ensure that regardless of what value is discovered at + // /.well-known/openid-configuration, "https://token.url/gettoken" will be used as the token endpoint + DiscoveryOverride *DiscoveryOverride `protobuf:"bytes,11,opt,name=discovery_override,json=discoveryOverride,proto3" json:"discovery_override,omitempty"` + // The interval at which OIDC configuration is discovered at /.well-known/openid-configuration + // If not specified, the default value is 30 minutes. + DiscoveryPollInterval *durationpb.Duration `protobuf:"bytes,12,opt,name=discovery_poll_interval,json=discoveryPollInterval,proto3" json:"discovery_poll_interval,omitempty"` + // If a user executes a request with a key that is not found in the JWKS, it could be + // that the keys have rotated on the remote source, and not yet in the local cache. + // This policy lets you define the behavior for how to refresh the local cache during a request + // where an invalid key is provided + JwksCacheRefreshPolicy *JwksOnDemandCacheRefreshPolicy `protobuf:"bytes,13,opt,name=jwks_cache_refresh_policy,json=jwksCacheRefreshPolicy,proto3" json:"jwks_cache_refresh_policy,omitempty"` + // If set, the randomly generated session id will be sent to the token endpoint as part of the code exchange + // The session id is used as the key for sessions in Redis + SessionIdHeaderName string `protobuf:"bytes,16,opt,name=session_id_header_name,json=sessionIdHeaderName,proto3" json:"session_id_header_name,omitempty"` + // If set, CallbackPath will be evaluated as a regular expression + ParseCallbackPathAsRegex bool `protobuf:"varint,17,opt,name=parse_callback_path_as_regex,json=parseCallbackPathAsRegex,proto3" json:"parse_callback_path_as_regex,omitempty"` + // If specified, authEndpointQueryParams and tokenEndpointQueryParams will be populated using dynamic metadata values. + // By default parameters will be extracted from the solo_authconfig_oidc namespace + // this behavior can be overridden by explicitly specifying a namespace + AutoMapFromMetadata *AutoMapFromMetadata `protobuf:"bytes,18,opt,name=auto_map_from_metadata,json=autoMapFromMetadata,proto3" json:"auto_map_from_metadata,omitempty"` + // If specified, these are properties defined for the end session endpoint + // specifications. Noted [here](https://openid.net/specs/openid-connect-rpinitiated-1_0.html) + // in the OIDC documentation. + EndSessionProperties *EndSessionProperties `protobuf:"bytes,19,opt,name=end_session_properties,json=endSessionProperties,proto3" json:"end_session_properties,omitempty"` + // Configuration related to the user session. + UserSession *ExtAuthConfig_UserSessionConfig `protobuf:"bytes,20,opt,name=user_session,json=userSession,proto3" json:"user_session,omitempty"` + // Configuration for private key JWT client authentication. + // Only one of client_secret or pk_jwt_client_authentication_config should be set. pk_jwt_client_authentication_config takes precedence. + PkJwtClientAuthenticationConfig *ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig `protobuf:"bytes,21,opt,name=pk_jwt_client_authentication_config,json=pkJwtClientAuthenticationConfig,proto3" json:"pk_jwt_client_authentication_config,omitempty"` + // Optional: Configuration specific to the OAuth2 access token received and processed by the ext-auth-service. + AccessToken *ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken `protobuf:"bytes,22,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` + // Optional: Configuration specific to the OIDC identity token received and processed by the ext-auth-service. + IdentityToken *ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken `protobuf:"bytes,23,opt,name=identity_token,json=identityToken,proto3" json:"identity_token,omitempty"` + // Types that are valid to be assigned to Provider: + // + // *ExtAuthConfig_OidcAuthorizationCodeConfig_Default_ + // *ExtAuthConfig_OidcAuthorizationCodeConfig_Azure + Provider isExtAuthConfig_OidcAuthorizationCodeConfig_Provider `protobuf_oneof:"Provider"` + // Configuration for front channel logout. This is used to log out the user from multiple apps/clients associated with one OpenId Provider (OP). + // The path is registered with the OP and is called for each app/client that the user is logged into when the logout endpoint is called. + FrontChannelLogout *ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout `protobuf:"bytes,28,opt,name=front_channel_logout,json=frontChannelLogout,proto3" json:"front_channel_logout,omitempty"` + // Map of metadata key to claim. Ie: + // dynamic_metadata_from_claims: + // + // issuer: iss + // email: email + // + // When specified, the matching claims from the ID token will be emitted as dynamic metadata. + // Note that metadata keys must be unique, and the claim names must be alphanumeric and use `-` or `_` as separators. + // The metadata will live in a namespace specified by the canonical name of the ext auth filter (in our case `envoy.filters.http.ext_authz`), + // and the structure of the claim value will be preserved in the metadata struct. + DynamicMetadataFromClaims map[string]string `protobuf:"bytes,29,rep,name=dynamic_metadata_from_claims,json=dynamicMetadataFromClaims,proto3" json:"dynamic_metadata_from_claims,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) Reset() { + *x = ExtAuthConfig_OidcAuthorizationCodeConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_OidcAuthorizationCodeConfig) ProtoMessage() {} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_OidcAuthorizationCodeConfig.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_OidcAuthorizationCodeConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 5} +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetClientId() string { + if x != nil { + return x.ClientId + } + return "" +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetClientSecret() string { + if x != nil { + return x.ClientSecret + } + return "" +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetIssuerUrl() string { + if x != nil { + return x.IssuerUrl + } + return "" +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetAuthEndpointQueryParams() map[string]string { + if x != nil { + return x.AuthEndpointQueryParams + } + return nil +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetTokenEndpointQueryParams() map[string]string { + if x != nil { + return x.TokenEndpointQueryParams + } + return nil +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetAppUrl() string { + if x != nil { + return x.AppUrl + } + return "" +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetCallbackPath() string { + if x != nil { + return x.CallbackPath + } + return "" +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetLogoutPath() string { + if x != nil { + return x.LogoutPath + } + return "" +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetAfterLogoutUrl() string { + if x != nil { + return x.AfterLogoutUrl + } + return "" +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetScopes() []string { + if x != nil { + return x.Scopes + } + return nil +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetSession() *UserSession { + if x != nil { + return x.Session + } + return nil +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetHeaders() *HeaderConfiguration { + if x != nil { + return x.Headers + } + return nil +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetDiscoveryOverride() *DiscoveryOverride { + if x != nil { + return x.DiscoveryOverride + } + return nil +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetDiscoveryPollInterval() *durationpb.Duration { + if x != nil { + return x.DiscoveryPollInterval + } + return nil +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetJwksCacheRefreshPolicy() *JwksOnDemandCacheRefreshPolicy { + if x != nil { + return x.JwksCacheRefreshPolicy + } + return nil +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetSessionIdHeaderName() string { + if x != nil { + return x.SessionIdHeaderName + } + return "" +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetParseCallbackPathAsRegex() bool { + if x != nil { + return x.ParseCallbackPathAsRegex + } + return false +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetAutoMapFromMetadata() *AutoMapFromMetadata { + if x != nil { + return x.AutoMapFromMetadata + } + return nil +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetEndSessionProperties() *EndSessionProperties { + if x != nil { + return x.EndSessionProperties + } + return nil +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetUserSession() *ExtAuthConfig_UserSessionConfig { + if x != nil { + return x.UserSession + } + return nil +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetPkJwtClientAuthenticationConfig() *ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig { + if x != nil { + return x.PkJwtClientAuthenticationConfig + } + return nil +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetAccessToken() *ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken { + if x != nil { + return x.AccessToken + } + return nil +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetIdentityToken() *ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken { + if x != nil { + return x.IdentityToken + } + return nil +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetProvider() isExtAuthConfig_OidcAuthorizationCodeConfig_Provider { + if x != nil { + return x.Provider + } + return nil +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetDefault() *ExtAuthConfig_OidcAuthorizationCodeConfig_Default { + if x != nil { + if x, ok := x.Provider.(*ExtAuthConfig_OidcAuthorizationCodeConfig_Default_); ok { + return x.Default + } + } + return nil +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetAzure() *ExtAuthConfig_Azure { + if x != nil { + if x, ok := x.Provider.(*ExtAuthConfig_OidcAuthorizationCodeConfig_Azure); ok { + return x.Azure + } + } + return nil +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetFrontChannelLogout() *ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout { + if x != nil { + return x.FrontChannelLogout + } + return nil +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig) GetDynamicMetadataFromClaims() map[string]string { + if x != nil { + return x.DynamicMetadataFromClaims + } + return nil +} + +type isExtAuthConfig_OidcAuthorizationCodeConfig_Provider interface { + isExtAuthConfig_OidcAuthorizationCodeConfig_Provider() +} + +type ExtAuthConfig_OidcAuthorizationCodeConfig_Default_ struct { + Default *ExtAuthConfig_OidcAuthorizationCodeConfig_Default `protobuf:"bytes,26,opt,name=default,proto3,oneof"` +} + +type ExtAuthConfig_OidcAuthorizationCodeConfig_Azure struct { + Azure *ExtAuthConfig_Azure `protobuf:"bytes,27,opt,name=azure,proto3,oneof"` +} + +func (*ExtAuthConfig_OidcAuthorizationCodeConfig_Default_) isExtAuthConfig_OidcAuthorizationCodeConfig_Provider() { +} + +func (*ExtAuthConfig_OidcAuthorizationCodeConfig_Azure) isExtAuthConfig_OidcAuthorizationCodeConfig_Provider() { +} + +type ExtAuthConfig_AccessTokenValidationConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to ValidationType: + // + // *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionUrl + // *ExtAuthConfig_AccessTokenValidationConfig_Jwt + // *ExtAuthConfig_AccessTokenValidationConfig_Introspection + ValidationType isExtAuthConfig_AccessTokenValidationConfig_ValidationType `protobuf_oneof:"validation_type"` + // The URL for the OIDC userinfo endpoint. + // If provided, the (opaque) access token provided or received from the oauth endpoint + // will be queried and the userinfo response (or cached response) will be added to the + // `AuthorizationRequest` state under the "introspection" key. + // This can be useful to leverage the userinfo response in, for example, an external auth server plugin. + UserinfoUrl string `protobuf:"bytes,4,opt,name=userinfo_url,json=userinfoUrl,proto3" json:"userinfo_url,omitempty"` + // How long the token introspection and userinfo endpoint response for a specific access token should be kept + // in the in-memory cache. The result will be invalidated at this timeout, or at "exp" time from the introspection + // result, whichever comes sooner. If omitted, defaults to 10 minutes. If zero, then no caching will be done. + CacheTimeout *durationpb.Duration `protobuf:"bytes,5,opt,name=cache_timeout,json=cacheTimeout,proto3" json:"cache_timeout,omitempty"` + // Optional criteria for validating the scopes of a token. + // + // Types that are valid to be assigned to ScopeValidation: + // + // *ExtAuthConfig_AccessTokenValidationConfig_RequiredScopes + ScopeValidation isExtAuthConfig_AccessTokenValidationConfig_ScopeValidation `protobuf_oneof:"scope_validation"` + // Map of metadata key to claim. Ie: + // dynamic_metadata_from_claims: + // + // issuer: iss + // email: email + // + // When specified, the matching claims from the access token will be emitted as dynamic metadata. + // Note that metadata keys must be unique, and the claim names must be alphanumeric and use `-` or `_` as separators. + // Works when the access token is a JWT or when the access token is opaque, in which case the claims will refer to field in the response from the token introspection endpoint. + // The metadata will live in a namespace specified by the canonical name of the ext auth filter (in our case `envoy.filters.http.ext_authz`), + // and the structure of the claim value will be preserved in the metadata struct. + DynamicMetadataFromClaims map[string]string `protobuf:"bytes,7,rep,name=dynamic_metadata_from_claims,json=dynamicMetadataFromClaims,proto3" json:"dynamic_metadata_from_claims,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + ClaimsToHeaders []*ExtAuthConfig_ClaimToHeader `protobuf:"bytes,8,rep,name=claims_to_headers,json=claimsToHeaders,proto3" json:"claims_to_headers,omitempty"` + // Types that are valid to be assigned to Provider: + // + // *ExtAuthConfig_AccessTokenValidationConfig_Default_ + // *ExtAuthConfig_AccessTokenValidationConfig_Azure + Provider isExtAuthConfig_AccessTokenValidationConfig_Provider `protobuf_oneof:"Provider"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig) Reset() { + *x = ExtAuthConfig_AccessTokenValidationConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_AccessTokenValidationConfig) ProtoMessage() {} + +func (x *ExtAuthConfig_AccessTokenValidationConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_AccessTokenValidationConfig.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_AccessTokenValidationConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 6} +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig) GetValidationType() isExtAuthConfig_AccessTokenValidationConfig_ValidationType { + if x != nil { + return x.ValidationType + } + return nil +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. +func (x *ExtAuthConfig_AccessTokenValidationConfig) GetIntrospectionUrl() string { + if x != nil { + if x, ok := x.ValidationType.(*ExtAuthConfig_AccessTokenValidationConfig_IntrospectionUrl); ok { + return x.IntrospectionUrl + } + } + return "" +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig) GetJwt() *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation { + if x != nil { + if x, ok := x.ValidationType.(*ExtAuthConfig_AccessTokenValidationConfig_Jwt); ok { + return x.Jwt + } + } + return nil +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig) GetIntrospection() *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation { + if x != nil { + if x, ok := x.ValidationType.(*ExtAuthConfig_AccessTokenValidationConfig_Introspection); ok { + return x.Introspection + } + } + return nil +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig) GetUserinfoUrl() string { + if x != nil { + return x.UserinfoUrl + } + return "" +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig) GetCacheTimeout() *durationpb.Duration { + if x != nil { + return x.CacheTimeout + } + return nil +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig) GetScopeValidation() isExtAuthConfig_AccessTokenValidationConfig_ScopeValidation { + if x != nil { + return x.ScopeValidation + } + return nil +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig) GetRequiredScopes() *ExtAuthConfig_AccessTokenValidationConfig_ScopeList { + if x != nil { + if x, ok := x.ScopeValidation.(*ExtAuthConfig_AccessTokenValidationConfig_RequiredScopes); ok { + return x.RequiredScopes + } + } + return nil +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig) GetDynamicMetadataFromClaims() map[string]string { + if x != nil { + return x.DynamicMetadataFromClaims + } + return nil +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig) GetClaimsToHeaders() []*ExtAuthConfig_ClaimToHeader { + if x != nil { + return x.ClaimsToHeaders + } + return nil +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig) GetProvider() isExtAuthConfig_AccessTokenValidationConfig_Provider { + if x != nil { + return x.Provider + } + return nil +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig) GetDefault() *ExtAuthConfig_AccessTokenValidationConfig_Default { + if x != nil { + if x, ok := x.Provider.(*ExtAuthConfig_AccessTokenValidationConfig_Default_); ok { + return x.Default + } + } + return nil +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig) GetAzure() *ExtAuthConfig_Azure { + if x != nil { + if x, ok := x.Provider.(*ExtAuthConfig_AccessTokenValidationConfig_Azure); ok { + return x.Azure + } + } + return nil +} + +type isExtAuthConfig_AccessTokenValidationConfig_ValidationType interface { + isExtAuthConfig_AccessTokenValidationConfig_ValidationType() +} + +type ExtAuthConfig_AccessTokenValidationConfig_IntrospectionUrl struct { + // The URL for the [OAuth2.0 Token Introspection](https://datatracker.ietf.org/doc/html/rfc7662) endpoint. + // If provided, the (opaque) access token provided or received from the oauth authorization endpoint + // will be validated against this endpoint, or locally cached responses for this access token. + // This field is deprecated as it does not support authenticated introspection requests + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. + IntrospectionUrl string `protobuf:"bytes,1,opt,name=introspection_url,json=introspectionUrl,proto3,oneof"` +} + +type ExtAuthConfig_AccessTokenValidationConfig_Jwt struct { + // Validate access tokens that conform to the + // [JSON Web Token (JWT)](https://datatracker.ietf.org/doc/rfc7662/) specification. + Jwt *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation `protobuf:"bytes,2,opt,name=jwt,proto3,oneof"` +} + +type ExtAuthConfig_AccessTokenValidationConfig_Introspection struct { + // Defines how (opaque) access tokens, received from the oauth authorization endpoint, are validated + // [OAuth2.0 Token Introspection](https://datatracker.ietf.org/doc/html/rfc7662) specification. + Introspection *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation `protobuf:"bytes,3,opt,name=introspection,proto3,oneof"` +} + +func (*ExtAuthConfig_AccessTokenValidationConfig_IntrospectionUrl) isExtAuthConfig_AccessTokenValidationConfig_ValidationType() { +} + +func (*ExtAuthConfig_AccessTokenValidationConfig_Jwt) isExtAuthConfig_AccessTokenValidationConfig_ValidationType() { +} + +func (*ExtAuthConfig_AccessTokenValidationConfig_Introspection) isExtAuthConfig_AccessTokenValidationConfig_ValidationType() { +} + +type isExtAuthConfig_AccessTokenValidationConfig_ScopeValidation interface { + isExtAuthConfig_AccessTokenValidationConfig_ScopeValidation() +} + +type ExtAuthConfig_AccessTokenValidationConfig_RequiredScopes struct { + // Require access token to have all of the scopes in the given list. + // This configuration applies to both opaque and JWT tokens. In the case of opaque tokens, + // this will check the scopes returned in the "scope" member of introspection response + // (as described in [Section 2.2 of RFC7662](https://datatracker.ietf.org/doc/html/rfc7662#section-2.2). + // In case of JWTs the scopes to be validated are expected to be contained in the "scope" claim of the + // token in the form of a space-separated string. + // Omitting this field means that scope validation will be skipped. + RequiredScopes *ExtAuthConfig_AccessTokenValidationConfig_ScopeList `protobuf:"bytes,6,opt,name=required_scopes,json=requiredScopes,proto3,oneof"` +} + +func (*ExtAuthConfig_AccessTokenValidationConfig_RequiredScopes) isExtAuthConfig_AccessTokenValidationConfig_ScopeValidation() { +} + +type isExtAuthConfig_AccessTokenValidationConfig_Provider interface { + isExtAuthConfig_AccessTokenValidationConfig_Provider() +} + +type ExtAuthConfig_AccessTokenValidationConfig_Default_ struct { + Default *ExtAuthConfig_AccessTokenValidationConfig_Default `protobuf:"bytes,26,opt,name=default,proto3,oneof"` +} + +type ExtAuthConfig_AccessTokenValidationConfig_Azure struct { + Azure *ExtAuthConfig_Azure `protobuf:"bytes,27,opt,name=azure,proto3,oneof"` +} + +func (*ExtAuthConfig_AccessTokenValidationConfig_Default_) isExtAuthConfig_AccessTokenValidationConfig_Provider() { +} + +func (*ExtAuthConfig_AccessTokenValidationConfig_Azure) isExtAuthConfig_AccessTokenValidationConfig_Provider() { +} + +type ExtAuthConfig_PlainOAuth2Config struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Your client ID as registered with the issuer + ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` + // Your client secret as registered with the issuer + ClientSecret string `protobuf:"bytes,2,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"` + // Extra query parameters to apply to the Ext-Auth service's authorization request to the identity provider. + // These parameters can be useful for flows such as [PKCE](https://www.oauth.com/oauth2-servers/pkce/authorization-request/) + // to set the `code_challenge` and `code_challenge_method`. + AuthEndpointQueryParams map[string]string `protobuf:"bytes,3,rep,name=auth_endpoint_query_params,json=authEndpointQueryParams,proto3" json:"auth_endpoint_query_params,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Where to redirect after successful auth, if Gloo can't determine the original URL. + // Set this field to your publicly available app URL. + AppUrl string `protobuf:"bytes,4,opt,name=app_url,json=appUrl,proto3" json:"app_url,omitempty"` + // A callback path relative to the app URL to be used for OAuth2 callbacks. + // Do not use this path in the application itself. + CallbackPath string `protobuf:"bytes,5,opt,name=callback_path,json=callbackPath,proto3" json:"callback_path,omitempty"` + // Scopes to request for. + Scopes []string `protobuf:"bytes,6,rep,name=scopes,proto3" json:"scopes,omitempty"` + // DEPRECATED: use userSessionConfig [userSession] + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. + Session *UserSession `protobuf:"bytes,7,opt,name=session,proto3" json:"session,omitempty"` + // A path relative to the app URL to use for logging out from an OAuth2 session. + // Do not use this path in the application itself. + // If not provided, logout functionality is disabled. + LogoutPath string `protobuf:"bytes,8,opt,name=logout_path,json=logoutPath,proto3" json:"logout_path,omitempty"` + // Extra query parameters to apply to the Ext-Auth service's token request to the identity provider. + // These parameters can be useful for flows such as [PKCE](https://www.oauth.com/oauth2-servers/pkce/authorization-request/) + // to set the `code_verifier`. + TokenEndpointQueryParams map[string]string `protobuf:"bytes,9,rep,name=token_endpoint_query_params,json=tokenEndpointQueryParams,proto3" json:"token_endpoint_query_params,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // URL to redirect to after logout. + // Set this field to a publicly available URL. If not provided, this value defaults to the `app_url` value. + AfterLogoutUrl string `protobuf:"bytes,10,opt,name=after_logout_url,json=afterLogoutUrl,proto3" json:"after_logout_url,omitempty"` + // The URL of the provider authorization endpoint. + AuthEndpoint string `protobuf:"bytes,11,opt,name=auth_endpoint,json=authEndpoint,proto3" json:"auth_endpoint,omitempty"` + // The URL of the provider token endpoint. + TokenEndpoint string `protobuf:"bytes,12,opt,name=token_endpoint,json=tokenEndpoint,proto3" json:"token_endpoint,omitempty"` + // The URL of the provider token revocation endpoint. + // For more information, refer to https://www.rfc-editor.org/rfc/rfc7009. + RevocationEndpoint string `protobuf:"bytes,13,opt,name=revocation_endpoint,json=revocationEndpoint,proto3" json:"revocation_endpoint,omitempty"` + // Configuration related to the user session. + UserSession *ExtAuthConfig_UserSessionConfig `protobuf:"bytes,14,opt,name=user_session,json=userSession,proto3" json:"user_session,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_PlainOAuth2Config) Reset() { + *x = ExtAuthConfig_PlainOAuth2Config{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_PlainOAuth2Config) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_PlainOAuth2Config) ProtoMessage() {} + +func (x *ExtAuthConfig_PlainOAuth2Config) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_PlainOAuth2Config.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_PlainOAuth2Config) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 7} +} + +func (x *ExtAuthConfig_PlainOAuth2Config) GetClientId() string { + if x != nil { + return x.ClientId + } + return "" +} + +func (x *ExtAuthConfig_PlainOAuth2Config) GetClientSecret() string { + if x != nil { + return x.ClientSecret + } + return "" +} + +func (x *ExtAuthConfig_PlainOAuth2Config) GetAuthEndpointQueryParams() map[string]string { + if x != nil { + return x.AuthEndpointQueryParams + } + return nil +} + +func (x *ExtAuthConfig_PlainOAuth2Config) GetAppUrl() string { + if x != nil { + return x.AppUrl + } + return "" +} + +func (x *ExtAuthConfig_PlainOAuth2Config) GetCallbackPath() string { + if x != nil { + return x.CallbackPath + } + return "" +} + +func (x *ExtAuthConfig_PlainOAuth2Config) GetScopes() []string { + if x != nil { + return x.Scopes + } + return nil +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. +func (x *ExtAuthConfig_PlainOAuth2Config) GetSession() *UserSession { + if x != nil { + return x.Session + } + return nil +} + +func (x *ExtAuthConfig_PlainOAuth2Config) GetLogoutPath() string { + if x != nil { + return x.LogoutPath + } + return "" +} + +func (x *ExtAuthConfig_PlainOAuth2Config) GetTokenEndpointQueryParams() map[string]string { + if x != nil { + return x.TokenEndpointQueryParams + } + return nil +} + +func (x *ExtAuthConfig_PlainOAuth2Config) GetAfterLogoutUrl() string { + if x != nil { + return x.AfterLogoutUrl + } + return "" +} + +func (x *ExtAuthConfig_PlainOAuth2Config) GetAuthEndpoint() string { + if x != nil { + return x.AuthEndpoint + } + return "" +} + +func (x *ExtAuthConfig_PlainOAuth2Config) GetTokenEndpoint() string { + if x != nil { + return x.TokenEndpoint + } + return "" +} + +func (x *ExtAuthConfig_PlainOAuth2Config) GetRevocationEndpoint() string { + if x != nil { + return x.RevocationEndpoint + } + return "" +} + +func (x *ExtAuthConfig_PlainOAuth2Config) GetUserSession() *ExtAuthConfig_UserSessionConfig { + if x != nil { + return x.UserSession + } + return nil +} + +type ExtAuthConfig_OAuth2Config struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to OauthType: + // + // *ExtAuthConfig_OAuth2Config_OidcAuthorizationCode + // *ExtAuthConfig_OAuth2Config_AccessTokenValidationConfig + // *ExtAuthConfig_OAuth2Config_Oauth2Config + OauthType isExtAuthConfig_OAuth2Config_OauthType `protobuf_oneof:"oauth_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_OAuth2Config) Reset() { + *x = ExtAuthConfig_OAuth2Config{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_OAuth2Config) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_OAuth2Config) ProtoMessage() {} + +func (x *ExtAuthConfig_OAuth2Config) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_OAuth2Config.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_OAuth2Config) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 8} +} + +func (x *ExtAuthConfig_OAuth2Config) GetOauthType() isExtAuthConfig_OAuth2Config_OauthType { + if x != nil { + return x.OauthType + } + return nil +} + +func (x *ExtAuthConfig_OAuth2Config) GetOidcAuthorizationCode() *ExtAuthConfig_OidcAuthorizationCodeConfig { + if x != nil { + if x, ok := x.OauthType.(*ExtAuthConfig_OAuth2Config_OidcAuthorizationCode); ok { + return x.OidcAuthorizationCode + } + } + return nil +} + +func (x *ExtAuthConfig_OAuth2Config) GetAccessTokenValidationConfig() *ExtAuthConfig_AccessTokenValidationConfig { + if x != nil { + if x, ok := x.OauthType.(*ExtAuthConfig_OAuth2Config_AccessTokenValidationConfig); ok { + return x.AccessTokenValidationConfig + } + } + return nil +} + +func (x *ExtAuthConfig_OAuth2Config) GetOauth2Config() *ExtAuthConfig_PlainOAuth2Config { + if x != nil { + if x, ok := x.OauthType.(*ExtAuthConfig_OAuth2Config_Oauth2Config); ok { + return x.Oauth2Config + } + } + return nil +} + +type isExtAuthConfig_OAuth2Config_OauthType interface { + isExtAuthConfig_OAuth2Config_OauthType() +} + +type ExtAuthConfig_OAuth2Config_OidcAuthorizationCode struct { + // provide issuer location and let gloo handle OIDC flow for you. + // requests authorized by validating the contents of ID token. + // can also authorize the access token if configured. + OidcAuthorizationCode *ExtAuthConfig_OidcAuthorizationCodeConfig `protobuf:"bytes,1,opt,name=oidc_authorization_code,json=oidcAuthorizationCode,proto3,oneof"` +} + +type ExtAuthConfig_OAuth2Config_AccessTokenValidationConfig struct { + // provide the access token on the request and let gloo handle authorization. + // + // according to https://datatracker.ietf.org/doc/html/rfc6750 you can pass tokens through: + // - form-encoded body parameter. recommended, more likely to appear. e.g.: Authorization: Bearer mytoken123 + // - URI query parameter e.g. access_token=mytoken123 + // - and (preferably) secure cookies + AccessTokenValidationConfig *ExtAuthConfig_AccessTokenValidationConfig `protobuf:"bytes,3,opt,name=access_token_validation_config,json=accessTokenValidationConfig,proto3,oneof"` +} + +type ExtAuthConfig_OAuth2Config_Oauth2Config struct { + // Enterprise-Only: THIS FEATURE IS IN TECH PREVIEW. APIs are versioned as alpha and subject to change. + // provide issuer location and let Gloo handle Oauth2 flow for you. + // requests authorized by validating the contents of access token. + // Prefer to use OIDC for better security. + Oauth2Config *ExtAuthConfig_PlainOAuth2Config `protobuf:"bytes,4,opt,name=oauth2_config,json=oauth2Config,proto3,oneof"` +} + +func (*ExtAuthConfig_OAuth2Config_OidcAuthorizationCode) isExtAuthConfig_OAuth2Config_OauthType() {} + +func (*ExtAuthConfig_OAuth2Config_AccessTokenValidationConfig) isExtAuthConfig_OAuth2Config_OauthType() { +} + +func (*ExtAuthConfig_OAuth2Config_Oauth2Config) isExtAuthConfig_OAuth2Config_OauthType() {} + +// **NOTE: This configuration is not user-facing and will be auto generated** +type ExtAuthConfig_ApiKeyAuthConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // A mapping of valid API keys to their associated metadata. + // This map is automatically populated with the information from the relevant `ApiKey`s. + // Currently this is only configured when using the k8s Secret storage backend + ValidApiKeys map[string]*ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata `protobuf:"bytes,1,rep,name=valid_api_keys,json=validApiKeys,proto3" json:"valid_api_keys,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // (Optional) When receiving a request, the Gloo Edge Enterprise external auth server will look for an API key + // in a header with this name. This field is optional; if not provided it defaults to `api-key`. + HeaderName string `protobuf:"bytes,2,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"` + // Determines the key metadata that will be included as headers on the upstream request. + // Each entry represents a header to add: the key is the name of the header, and the + // value is the key that will be used to look up the data entry in the key metadata. + HeadersFromKeyMetadata map[string]string `protobuf:"bytes,3,rep,name=headers_from_key_metadata,json=headersFromKeyMetadata,proto3" json:"headers_from_key_metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Types that are valid to be assigned to StorageBackend: + // + // *ExtAuthConfig_ApiKeyAuthConfig_K8SSecretApikeyStorage + // *ExtAuthConfig_ApiKeyAuthConfig_AerospikeApikeyStorage + // *ExtAuthConfig_ApiKeyAuthConfig_ServerDefaultApikeyStorage + StorageBackend isExtAuthConfig_ApiKeyAuthConfig_StorageBackend `protobuf_oneof:"storage_backend"` + // API key metadata may contain data is is invalid for a header, such as a newline. By default, this data will be validated + // in the data plane and mitigated in a way that provides a consistent experience for the user and visibility for the operator. + // This validation comes with a performance cost, and can be disabled by setting this field to `true`. + SkipMetadataValidation bool `protobuf:"varint,6,opt,name=skip_metadata_validation,json=skipMetadataValidation,proto3" json:"skip_metadata_validation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_ApiKeyAuthConfig) Reset() { + *x = ExtAuthConfig_ApiKeyAuthConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_ApiKeyAuthConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_ApiKeyAuthConfig) ProtoMessage() {} + +func (x *ExtAuthConfig_ApiKeyAuthConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_ApiKeyAuthConfig.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_ApiKeyAuthConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 9} +} + +func (x *ExtAuthConfig_ApiKeyAuthConfig) GetValidApiKeys() map[string]*ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata { + if x != nil { + return x.ValidApiKeys + } + return nil +} + +func (x *ExtAuthConfig_ApiKeyAuthConfig) GetHeaderName() string { + if x != nil { + return x.HeaderName + } + return "" +} + +func (x *ExtAuthConfig_ApiKeyAuthConfig) GetHeadersFromKeyMetadata() map[string]string { + if x != nil { + return x.HeadersFromKeyMetadata + } + return nil +} + +func (x *ExtAuthConfig_ApiKeyAuthConfig) GetStorageBackend() isExtAuthConfig_ApiKeyAuthConfig_StorageBackend { + if x != nil { + return x.StorageBackend + } + return nil +} + +func (x *ExtAuthConfig_ApiKeyAuthConfig) GetK8SSecretApikeyStorage() *K8SSecretApiKeyStorage { + if x != nil { + if x, ok := x.StorageBackend.(*ExtAuthConfig_ApiKeyAuthConfig_K8SSecretApikeyStorage); ok { + return x.K8SSecretApikeyStorage + } + } + return nil +} + +func (x *ExtAuthConfig_ApiKeyAuthConfig) GetAerospikeApikeyStorage() *AerospikeApiKeyStorage { + if x != nil { + if x, ok := x.StorageBackend.(*ExtAuthConfig_ApiKeyAuthConfig_AerospikeApikeyStorage); ok { + return x.AerospikeApikeyStorage + } + } + return nil +} + +func (x *ExtAuthConfig_ApiKeyAuthConfig) GetServerDefaultApikeyStorage() *ServerDefaultApiKeyStorage { + if x != nil { + if x, ok := x.StorageBackend.(*ExtAuthConfig_ApiKeyAuthConfig_ServerDefaultApikeyStorage); ok { + return x.ServerDefaultApikeyStorage + } + } + return nil +} + +func (x *ExtAuthConfig_ApiKeyAuthConfig) GetSkipMetadataValidation() bool { + if x != nil { + return x.SkipMetadataValidation + } + return false +} + +type isExtAuthConfig_ApiKeyAuthConfig_StorageBackend interface { + isExtAuthConfig_ApiKeyAuthConfig_StorageBackend() +} + +type ExtAuthConfig_ApiKeyAuthConfig_K8SSecretApikeyStorage struct { + K8SSecretApikeyStorage *K8SSecretApiKeyStorage `protobuf:"bytes,4,opt,name=k8s_secret_apikey_storage,json=k8sSecretApikeyStorage,proto3,oneof"` +} + +type ExtAuthConfig_ApiKeyAuthConfig_AerospikeApikeyStorage struct { + // Deprecated: Support for Aerospike is deprecated and will be removed in a future release. + // Use of this feature is not recommended. + AerospikeApikeyStorage *AerospikeApiKeyStorage `protobuf:"bytes,5,opt,name=aerospike_apikey_storage,json=aerospikeApikeyStorage,proto3,oneof"` +} + +type ExtAuthConfig_ApiKeyAuthConfig_ServerDefaultApikeyStorage struct { + ServerDefaultApikeyStorage *ServerDefaultApiKeyStorage `protobuf:"bytes,7,opt,name=server_default_apikey_storage,json=serverDefaultApikeyStorage,proto3,oneof"` +} + +func (*ExtAuthConfig_ApiKeyAuthConfig_K8SSecretApikeyStorage) isExtAuthConfig_ApiKeyAuthConfig_StorageBackend() { +} + +func (*ExtAuthConfig_ApiKeyAuthConfig_AerospikeApikeyStorage) isExtAuthConfig_ApiKeyAuthConfig_StorageBackend() { +} + +func (*ExtAuthConfig_ApiKeyAuthConfig_ServerDefaultApikeyStorage) isExtAuthConfig_ApiKeyAuthConfig_StorageBackend() { +} + +type ExtAuthConfig_OpaAuthConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // An optional modules (filename, module content) maps containing modules assist in the resolution of `query`. + Modules map[string]string `protobuf:"bytes,1,rep,name=modules,proto3" json:"modules,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // The query that determines the auth decision. The result of this query + // must be either a boolean or an array with boolean as the first element. A boolean `true` value means that + // the request will be authorized. Any other value, or error, means that the request will be denied. + Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` + // Additional Options for Opa Auth configuration. + Options *OpaAuthOptions `protobuf:"bytes,3,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_OpaAuthConfig) Reset() { + *x = ExtAuthConfig_OpaAuthConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_OpaAuthConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_OpaAuthConfig) ProtoMessage() {} + +func (x *ExtAuthConfig_OpaAuthConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_OpaAuthConfig.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_OpaAuthConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 10} +} + +func (x *ExtAuthConfig_OpaAuthConfig) GetModules() map[string]string { + if x != nil { + return x.Modules + } + return nil +} + +func (x *ExtAuthConfig_OpaAuthConfig) GetQuery() string { + if x != nil { + return x.Query + } + return "" +} + +func (x *ExtAuthConfig_OpaAuthConfig) GetOptions() *OpaAuthOptions { + if x != nil { + return x.Options + } + return nil +} + +// Configure the Gloo external auth server to use your own Open Policy Agent (OPA) server. +// This way, you can use extra capabilities such as bundling or caching. +type ExtAuthConfig_OpaServerAuthConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The package from your Rego policy bundle used to query the OPA data API. + Package string `protobuf:"bytes,1,opt,name=package,proto3" json:"package,omitempty"` + // The rule in your Rego policy bundle used to query the OPA data API. Supports querying subfields with a `/`. + // For more information, see the [OPA docs for the Data API](https://www.openpolicyagent.org/docs/latest/rest-api/#data-api). + RuleName string `protobuf:"bytes,2,opt,name=rule_name,json=ruleName,proto3" json:"rule_name,omitempty"` + // The address of the OPA server to query, in the format `ADDRESS:PORT`. + // For OPA servers within the cluster, the address is the pod’s service address, + // such as `opa-svc.default.svc.cluster.local:8181`. + // For OPA servers outside the cluster, the server must be accessible to the cluster, + // such as through an ExternalService. + // If you do not have your own OPA server instance, omit this field. + // When the external auth service has the OPA server sidecar enabled, + // the OPA server sidecar will be used instead, with an address such as `http://localhost:8181`. + ServerAddr string `protobuf:"bytes,3,opt,name=server_addr,json=serverAddr,proto3" json:"server_addr,omitempty"` + // Additional options for OPA Auth configuration. + Options *OpaAuthOptions `protobuf:"bytes,4,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_OpaServerAuthConfig) Reset() { + *x = ExtAuthConfig_OpaServerAuthConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_OpaServerAuthConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_OpaServerAuthConfig) ProtoMessage() {} + +func (x *ExtAuthConfig_OpaServerAuthConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_OpaServerAuthConfig.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_OpaServerAuthConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 11} +} + +func (x *ExtAuthConfig_OpaServerAuthConfig) GetPackage() string { + if x != nil { + return x.Package + } + return "" +} + +func (x *ExtAuthConfig_OpaServerAuthConfig) GetRuleName() string { + if x != nil { + return x.RuleName + } + return "" +} + +func (x *ExtAuthConfig_OpaServerAuthConfig) GetServerAddr() string { + if x != nil { + return x.ServerAddr + } + return "" +} + +func (x *ExtAuthConfig_OpaServerAuthConfig) GetOptions() *OpaAuthOptions { + if x != nil { + return x.Options + } + return nil +} + +type ExtAuthConfig_LdapConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Address of the LDAP server to query. Should be in the form ADDRESS:PORT, e.g. `ldap.default.svc.cluster.local:389`. + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + // Template to build user entry distinguished names (DN). This must contains a single occurrence of the "%s" placeholder. + // When processing a request, Gloo will substitute the name of the user (extracted from the auth header) for the + // placeholder and issue a search request with the resulting DN as baseDN (and 'base' search scope). + // E.g. "uid=%s,ou=people,dc=solo,dc=io" + UserDnTemplate string `protobuf:"bytes,2,opt,name=userDnTemplate,proto3" json:"userDnTemplate,omitempty"` + // Case-insensitive name of the attribute that contains the names of the groups an entry is member of. Gloo will look + // for attributes with the given name to determine which groups the user entry belongs to. Defaults to 'memberOf' if not provided. + MembershipAttributeName string `protobuf:"bytes,3,opt,name=membershipAttributeName,proto3" json:"membershipAttributeName,omitempty"` + // In order for the request to be authenticated, the membership attribute (e.g. *memberOf*) on the user entry must + // contain at least of one of the group DNs specified via this option. + // E.g. []string{ "cn=managers,ou=groups,dc=solo,dc=io", "cn=developers,ou=groups,dc=solo,dc=io" } + AllowedGroups []string `protobuf:"bytes,4,rep,name=allowedGroups,proto3" json:"allowedGroups,omitempty"` + // Use this property to tune the pool of connections to the LDAP server that Gloo maintains. + Pool *Ldap_ConnectionPool `protobuf:"bytes,5,opt,name=pool,proto3" json:"pool,omitempty"` + // Use to set a custom filter when searching a member. Defaults to "(uid=*)". + SearchFilter string `protobuf:"bytes,6,opt,name=searchFilter,proto3" json:"searchFilter,omitempty"` + // Disables group checking, regardless of the value for allowedGroups, + // and disables validation for the membership attribute of the user entry. + // Group checking is enabled by default. + DisableGroupChecking bool `protobuf:"varint,7,opt,name=disable_group_checking,json=disableGroupChecking,proto3" json:"disable_group_checking,omitempty"` + // Settings for using a separate service account for looking up group membership + // To use this, you also need to configure credentials + GroupLookupSettings *ExtAuthConfig_LdapServiceAccountConfig `protobuf:"bytes,8,opt,name=group_lookup_settings,json=groupLookupSettings,proto3" json:"group_lookup_settings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_LdapConfig) Reset() { + *x = ExtAuthConfig_LdapConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_LdapConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_LdapConfig) ProtoMessage() {} + +func (x *ExtAuthConfig_LdapConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_LdapConfig.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_LdapConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 12} +} + +func (x *ExtAuthConfig_LdapConfig) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *ExtAuthConfig_LdapConfig) GetUserDnTemplate() string { + if x != nil { + return x.UserDnTemplate + } + return "" +} + +func (x *ExtAuthConfig_LdapConfig) GetMembershipAttributeName() string { + if x != nil { + return x.MembershipAttributeName + } + return "" +} + +func (x *ExtAuthConfig_LdapConfig) GetAllowedGroups() []string { + if x != nil { + return x.AllowedGroups + } + return nil +} + +func (x *ExtAuthConfig_LdapConfig) GetPool() *Ldap_ConnectionPool { + if x != nil { + return x.Pool + } + return nil +} + +func (x *ExtAuthConfig_LdapConfig) GetSearchFilter() string { + if x != nil { + return x.SearchFilter + } + return "" +} + +func (x *ExtAuthConfig_LdapConfig) GetDisableGroupChecking() bool { + if x != nil { + return x.DisableGroupChecking + } + return false +} + +func (x *ExtAuthConfig_LdapConfig) GetGroupLookupSettings() *ExtAuthConfig_LdapServiceAccountConfig { + if x != nil { + return x.GroupLookupSettings + } + return nil +} + +type ExtAuthConfig_LdapServiceAccountConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // username and password are taken from the secret during gloo-ee translation + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` + Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` + // If true, Gloo will use the service account to check group membership + CheckGroupsWithServiceAccount bool `protobuf:"varint,3,opt,name=check_groups_with_service_account,json=checkGroupsWithServiceAccount,proto3" json:"check_groups_with_service_account,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_LdapServiceAccountConfig) Reset() { + *x = ExtAuthConfig_LdapServiceAccountConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_LdapServiceAccountConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_LdapServiceAccountConfig) ProtoMessage() {} + +func (x *ExtAuthConfig_LdapServiceAccountConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_LdapServiceAccountConfig.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_LdapServiceAccountConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 13} +} + +func (x *ExtAuthConfig_LdapServiceAccountConfig) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *ExtAuthConfig_LdapServiceAccountConfig) GetPassword() string { + if x != nil { + return x.Password + } + return "" +} + +func (x *ExtAuthConfig_LdapServiceAccountConfig) GetCheckGroupsWithServiceAccount() bool { + if x != nil { + return x.CheckGroupsWithServiceAccount + } + return false +} + +type ExtAuthConfig_HmacAuthConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to SecretStorage: + // + // *ExtAuthConfig_HmacAuthConfig_SecretList + SecretStorage isExtAuthConfig_HmacAuthConfig_SecretStorage `protobuf_oneof:"secret_storage"` + // Algorithm to use to turn the request into a hashable string + // + // Types that are valid to be assigned to ImplementationType: + // + // *ExtAuthConfig_HmacAuthConfig_ParametersInHeaders + ImplementationType isExtAuthConfig_HmacAuthConfig_ImplementationType `protobuf_oneof:"implementation_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_HmacAuthConfig) Reset() { + *x = ExtAuthConfig_HmacAuthConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_HmacAuthConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_HmacAuthConfig) ProtoMessage() {} + +func (x *ExtAuthConfig_HmacAuthConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_HmacAuthConfig.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_HmacAuthConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 14} +} + +func (x *ExtAuthConfig_HmacAuthConfig) GetSecretStorage() isExtAuthConfig_HmacAuthConfig_SecretStorage { + if x != nil { + return x.SecretStorage + } + return nil +} + +func (x *ExtAuthConfig_HmacAuthConfig) GetSecretList() *ExtAuthConfig_InMemorySecretList { + if x != nil { + if x, ok := x.SecretStorage.(*ExtAuthConfig_HmacAuthConfig_SecretList); ok { + return x.SecretList + } + } + return nil +} + +func (x *ExtAuthConfig_HmacAuthConfig) GetImplementationType() isExtAuthConfig_HmacAuthConfig_ImplementationType { + if x != nil { + return x.ImplementationType + } + return nil +} + +func (x *ExtAuthConfig_HmacAuthConfig) GetParametersInHeaders() *HmacParametersInHeaders { + if x != nil { + if x, ok := x.ImplementationType.(*ExtAuthConfig_HmacAuthConfig_ParametersInHeaders); ok { + return x.ParametersInHeaders + } + } + return nil +} + +type isExtAuthConfig_HmacAuthConfig_SecretStorage interface { + isExtAuthConfig_HmacAuthConfig_SecretStorage() +} + +type ExtAuthConfig_HmacAuthConfig_SecretList struct { + SecretList *ExtAuthConfig_InMemorySecretList `protobuf:"bytes,1,opt,name=secret_list,json=secretList,proto3,oneof"` +} + +func (*ExtAuthConfig_HmacAuthConfig_SecretList) isExtAuthConfig_HmacAuthConfig_SecretStorage() {} + +type isExtAuthConfig_HmacAuthConfig_ImplementationType interface { + isExtAuthConfig_HmacAuthConfig_ImplementationType() +} + +type ExtAuthConfig_HmacAuthConfig_ParametersInHeaders struct { + ParametersInHeaders *HmacParametersInHeaders `protobuf:"bytes,2,opt,name=parameters_in_headers,json=parametersInHeaders,proto3,oneof"` +} + +func (*ExtAuthConfig_HmacAuthConfig_ParametersInHeaders) isExtAuthConfig_HmacAuthConfig_ImplementationType() { +} + +// This API is only supported for Gloo Gateway Portal. +type ExtAuthConfig_PortalAuthConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The portal web server url used to validate credentials generated by the portal for the backing service(s). + Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` + ApiKeyHeader string `protobuf:"bytes,2,opt,name=api_key_header,json=apiKeyHeader,proto3" json:"api_key_header,omitempty"` + // Options to connect to redis. If not provided, data will be cached in memory. + RedisOptions *RedisOptions `protobuf:"bytes,3,opt,name=redis_options,json=redisOptions,proto3" json:"redis_options,omitempty"` + // The frequency at which the validated credential data should be refreshed by quering the portal web server. Defaults to 60s + CacheDuration *durationpb.Duration `protobuf:"bytes,4,opt,name=cache_duration,json=cacheDuration,proto3" json:"cache_duration,omitempty"` + // Timeout for the portal web server to respond. Defaults to 200ms + RequestTimeout *durationpb.Duration `protobuf:"bytes,5,opt,name=request_timeout,json=requestTimeout,proto3" json:"request_timeout,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_PortalAuthConfig) Reset() { + *x = ExtAuthConfig_PortalAuthConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_PortalAuthConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_PortalAuthConfig) ProtoMessage() {} + +func (x *ExtAuthConfig_PortalAuthConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_PortalAuthConfig.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_PortalAuthConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 15} +} + +func (x *ExtAuthConfig_PortalAuthConfig) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *ExtAuthConfig_PortalAuthConfig) GetApiKeyHeader() string { + if x != nil { + return x.ApiKeyHeader + } + return "" +} + +func (x *ExtAuthConfig_PortalAuthConfig) GetRedisOptions() *RedisOptions { + if x != nil { + return x.RedisOptions + } + return nil +} + +func (x *ExtAuthConfig_PortalAuthConfig) GetCacheDuration() *durationpb.Duration { + if x != nil { + return x.CacheDuration + } + return nil +} + +func (x *ExtAuthConfig_PortalAuthConfig) GetRequestTimeout() *durationpb.Duration { + if x != nil { + return x.RequestTimeout + } + return nil +} + +type ExtAuthConfig_InMemorySecretList struct { + state protoimpl.MessageState `protogen:"open.v1"` + // list of username/password pairs taken from secrets during gloo-ee translation + SecretList map[string]string `protobuf:"bytes,1,rep,name=secret_list,json=secretList,proto3" json:"secret_list,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_InMemorySecretList) Reset() { + *x = ExtAuthConfig_InMemorySecretList{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_InMemorySecretList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_InMemorySecretList) ProtoMessage() {} + +func (x *ExtAuthConfig_InMemorySecretList) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_InMemorySecretList.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_InMemorySecretList) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 16} +} + +func (x *ExtAuthConfig_InMemorySecretList) GetSecretList() map[string]string { + if x != nil { + return x.SecretList + } + return nil +} + +type ExtAuthConfig_PassthroughAuthInternalConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // User defined passthrough configuration (any user supplied TLS configuration is masked from this) + PassThroughAuth *PassThroughAuth `protobuf:"bytes,1,opt,name=pass_through_auth,json=passThroughAuth,proto3" json:"pass_through_auth,omitempty"` + // Mapped TLS configuration data that defines TLS certificates and advanced parameters + TlsConfigData *ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData `protobuf:"bytes,2,opt,name=tls_config_data,json=tlsConfigData,proto3" json:"tls_config_data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_PassthroughAuthInternalConfig) Reset() { + *x = ExtAuthConfig_PassthroughAuthInternalConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_PassthroughAuthInternalConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_PassthroughAuthInternalConfig) ProtoMessage() {} + +func (x *ExtAuthConfig_PassthroughAuthInternalConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_PassthroughAuthInternalConfig.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_PassthroughAuthInternalConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 17} +} + +func (x *ExtAuthConfig_PassthroughAuthInternalConfig) GetPassThroughAuth() *PassThroughAuth { + if x != nil { + return x.PassThroughAuth + } + return nil +} + +func (x *ExtAuthConfig_PassthroughAuthInternalConfig) GetTlsConfigData() *ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData { + if x != nil { + return x.TlsConfigData + } + return nil +} + +type ExtAuthConfig_Config struct { + state protoimpl.MessageState `protogen:"open.v1"` + // optional: used when defining complex boolean logic, if `boolean_expr` is defined below. Also used + // in logging. If omitted, an automatically generated name will be used (e.g. config_0, of the + // pattern 'config_$INDEX_IN_CHAIN'). In the case of plugin auth, this field is ignored in favor of + // the name assigned on the plugin config itself. + Name *wrapperspb.StringValue `protobuf:"bytes,11,opt,name=name,proto3" json:"name,omitempty"` + // Types that are valid to be assigned to AuthConfig: + // + // *ExtAuthConfig_Config_Oauth + // *ExtAuthConfig_Config_Oauth2 + // *ExtAuthConfig_Config_BasicAuth + // *ExtAuthConfig_Config_BasicAuthInternal + // *ExtAuthConfig_Config_ApiKeyAuth + // *ExtAuthConfig_Config_PluginAuth + // *ExtAuthConfig_Config_OpaAuth + // *ExtAuthConfig_Config_Ldap + // *ExtAuthConfig_Config_LdapInternal + // *ExtAuthConfig_Config_Jwt + // *ExtAuthConfig_Config_PassThroughAuth + // *ExtAuthConfig_Config_HmacAuth + // *ExtAuthConfig_Config_OpaServerAuth + // *ExtAuthConfig_Config_PortalAuth + // *ExtAuthConfig_Config_PassthroughInternal + AuthConfig isExtAuthConfig_Config_AuthConfig `protobuf_oneof:"auth_config"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_Config) Reset() { + *x = ExtAuthConfig_Config{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_Config) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_Config) ProtoMessage() {} + +func (x *ExtAuthConfig_Config) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_Config.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_Config) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 18} +} + +func (x *ExtAuthConfig_Config) GetName() *wrapperspb.StringValue { + if x != nil { + return x.Name + } + return nil +} + +func (x *ExtAuthConfig_Config) GetAuthConfig() isExtAuthConfig_Config_AuthConfig { + if x != nil { + return x.AuthConfig + } + return nil +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. +func (x *ExtAuthConfig_Config) GetOauth() *ExtAuthConfig_OAuthConfig { + if x != nil { + if x, ok := x.AuthConfig.(*ExtAuthConfig_Config_Oauth); ok { + return x.Oauth + } + } + return nil +} + +func (x *ExtAuthConfig_Config) GetOauth2() *ExtAuthConfig_OAuth2Config { + if x != nil { + if x, ok := x.AuthConfig.(*ExtAuthConfig_Config_Oauth2); ok { + return x.Oauth2 + } + } + return nil +} + +func (x *ExtAuthConfig_Config) GetBasicAuth() *BasicAuth { + if x != nil { + if x, ok := x.AuthConfig.(*ExtAuthConfig_Config_BasicAuth); ok { + return x.BasicAuth + } + } + return nil +} + +func (x *ExtAuthConfig_Config) GetBasicAuthInternal() *ExtAuthConfig_BasicAuthInternal { + if x != nil { + if x, ok := x.AuthConfig.(*ExtAuthConfig_Config_BasicAuthInternal); ok { + return x.BasicAuthInternal + } + } + return nil +} + +func (x *ExtAuthConfig_Config) GetApiKeyAuth() *ExtAuthConfig_ApiKeyAuthConfig { + if x != nil { + if x, ok := x.AuthConfig.(*ExtAuthConfig_Config_ApiKeyAuth); ok { + return x.ApiKeyAuth + } + } + return nil +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. +func (x *ExtAuthConfig_Config) GetPluginAuth() *AuthPlugin { + if x != nil { + if x, ok := x.AuthConfig.(*ExtAuthConfig_Config_PluginAuth); ok { + return x.PluginAuth + } + } + return nil +} + +func (x *ExtAuthConfig_Config) GetOpaAuth() *ExtAuthConfig_OpaAuthConfig { + if x != nil { + if x, ok := x.AuthConfig.(*ExtAuthConfig_Config_OpaAuth); ok { + return x.OpaAuth + } + } + return nil +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. +func (x *ExtAuthConfig_Config) GetLdap() *Ldap { + if x != nil { + if x, ok := x.AuthConfig.(*ExtAuthConfig_Config_Ldap); ok { + return x.Ldap + } + } + return nil +} + +func (x *ExtAuthConfig_Config) GetLdapInternal() *ExtAuthConfig_LdapConfig { + if x != nil { + if x, ok := x.AuthConfig.(*ExtAuthConfig_Config_LdapInternal); ok { + return x.LdapInternal + } + } + return nil +} + +func (x *ExtAuthConfig_Config) GetJwt() *emptypb.Empty { + if x != nil { + if x, ok := x.AuthConfig.(*ExtAuthConfig_Config_Jwt); ok { + return x.Jwt + } + } + return nil +} + +func (x *ExtAuthConfig_Config) GetPassThroughAuth() *PassThroughAuth { + if x != nil { + if x, ok := x.AuthConfig.(*ExtAuthConfig_Config_PassThroughAuth); ok { + return x.PassThroughAuth + } + } + return nil +} + +func (x *ExtAuthConfig_Config) GetHmacAuth() *ExtAuthConfig_HmacAuthConfig { + if x != nil { + if x, ok := x.AuthConfig.(*ExtAuthConfig_Config_HmacAuth); ok { + return x.HmacAuth + } + } + return nil +} + +func (x *ExtAuthConfig_Config) GetOpaServerAuth() *ExtAuthConfig_OpaServerAuthConfig { + if x != nil { + if x, ok := x.AuthConfig.(*ExtAuthConfig_Config_OpaServerAuth); ok { + return x.OpaServerAuth + } + } + return nil +} + +func (x *ExtAuthConfig_Config) GetPortalAuth() *ExtAuthConfig_PortalAuthConfig { + if x != nil { + if x, ok := x.AuthConfig.(*ExtAuthConfig_Config_PortalAuth); ok { + return x.PortalAuth + } + } + return nil +} + +func (x *ExtAuthConfig_Config) GetPassthroughInternal() *ExtAuthConfig_PassthroughAuthInternalConfig { + if x != nil { + if x, ok := x.AuthConfig.(*ExtAuthConfig_Config_PassthroughInternal); ok { + return x.PassthroughInternal + } + } + return nil +} + +type isExtAuthConfig_Config_AuthConfig interface { + isExtAuthConfig_Config_AuthConfig() +} + +type ExtAuthConfig_Config_Oauth struct { + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. + Oauth *ExtAuthConfig_OAuthConfig `protobuf:"bytes,3,opt,name=oauth,proto3,oneof"` +} + +type ExtAuthConfig_Config_Oauth2 struct { + Oauth2 *ExtAuthConfig_OAuth2Config `protobuf:"bytes,9,opt,name=oauth2,proto3,oneof"` +} + +type ExtAuthConfig_Config_BasicAuth struct { + BasicAuth *BasicAuth `protobuf:"bytes,4,opt,name=basic_auth,json=basicAuth,proto3,oneof"` +} + +type ExtAuthConfig_Config_BasicAuthInternal struct { + BasicAuthInternal *ExtAuthConfig_BasicAuthInternal `protobuf:"bytes,17,opt,name=basic_auth_internal,json=basicAuthInternal,proto3,oneof"` +} + +type ExtAuthConfig_Config_ApiKeyAuth struct { + ApiKeyAuth *ExtAuthConfig_ApiKeyAuthConfig `protobuf:"bytes,5,opt,name=api_key_auth,json=apiKeyAuth,proto3,oneof"` +} + +type ExtAuthConfig_Config_PluginAuth struct { + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. + PluginAuth *AuthPlugin `protobuf:"bytes,6,opt,name=plugin_auth,json=pluginAuth,proto3,oneof"` +} + +type ExtAuthConfig_Config_OpaAuth struct { + OpaAuth *ExtAuthConfig_OpaAuthConfig `protobuf:"bytes,7,opt,name=opa_auth,json=opaAuth,proto3,oneof"` +} + +type ExtAuthConfig_Config_Ldap struct { + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto. + Ldap *Ldap `protobuf:"bytes,8,opt,name=ldap,proto3,oneof"` +} + +type ExtAuthConfig_Config_LdapInternal struct { + // Used for LDAP configurations that need service account credentials saved in a secret. + LdapInternal *ExtAuthConfig_LdapConfig `protobuf:"bytes,14,opt,name=ldap_internal,json=ldapInternal,proto3,oneof"` +} + +type ExtAuthConfig_Config_Jwt struct { + // This is a "dummy" extauth service which can be used to support multiple auth mechanisms with JWT authentication. + // If Jwt authentication is to be used in the [boolean expression](https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto.sk/#authconfig) in an AuthConfig, you can use this auth config type to include Jwt as an Auth config. + // In addition, `allow_missing_or_failed_jwt` must be set on the Virtual Host or Route that uses JWT auth or else the JWT filter will short circuit this behaviour. + Jwt *emptypb.Empty `protobuf:"bytes,12,opt,name=jwt,proto3,oneof"` +} + +type ExtAuthConfig_Config_PassThroughAuth struct { + // Deprecated - this is being replaced by "passthrough_internal" field which carries additional TLS configuration + PassThroughAuth *PassThroughAuth `protobuf:"bytes,13,opt,name=pass_through_auth,json=passThroughAuth,proto3,oneof"` +} + +type ExtAuthConfig_Config_HmacAuth struct { + HmacAuth *ExtAuthConfig_HmacAuthConfig `protobuf:"bytes,15,opt,name=hmac_auth,json=hmacAuth,proto3,oneof"` +} + +type ExtAuthConfig_Config_OpaServerAuth struct { + OpaServerAuth *ExtAuthConfig_OpaServerAuthConfig `protobuf:"bytes,16,opt,name=opa_server_auth,json=opaServerAuth,proto3,oneof"` +} + +type ExtAuthConfig_Config_PortalAuth struct { + PortalAuth *ExtAuthConfig_PortalAuthConfig `protobuf:"bytes,18,opt,name=portal_auth,json=portalAuth,proto3,oneof"` +} + +type ExtAuthConfig_Config_PassthroughInternal struct { + PassthroughInternal *ExtAuthConfig_PassthroughAuthInternalConfig `protobuf:"bytes,19,opt,name=passthrough_internal,json=passthroughInternal,proto3,oneof"` +} + +func (*ExtAuthConfig_Config_Oauth) isExtAuthConfig_Config_AuthConfig() {} + +func (*ExtAuthConfig_Config_Oauth2) isExtAuthConfig_Config_AuthConfig() {} + +func (*ExtAuthConfig_Config_BasicAuth) isExtAuthConfig_Config_AuthConfig() {} + +func (*ExtAuthConfig_Config_BasicAuthInternal) isExtAuthConfig_Config_AuthConfig() {} + +func (*ExtAuthConfig_Config_ApiKeyAuth) isExtAuthConfig_Config_AuthConfig() {} + +func (*ExtAuthConfig_Config_PluginAuth) isExtAuthConfig_Config_AuthConfig() {} + +func (*ExtAuthConfig_Config_OpaAuth) isExtAuthConfig_Config_AuthConfig() {} + +func (*ExtAuthConfig_Config_Ldap) isExtAuthConfig_Config_AuthConfig() {} + +func (*ExtAuthConfig_Config_LdapInternal) isExtAuthConfig_Config_AuthConfig() {} + +func (*ExtAuthConfig_Config_Jwt) isExtAuthConfig_Config_AuthConfig() {} + +func (*ExtAuthConfig_Config_PassThroughAuth) isExtAuthConfig_Config_AuthConfig() {} + +func (*ExtAuthConfig_Config_HmacAuth) isExtAuthConfig_Config_AuthConfig() {} + +func (*ExtAuthConfig_Config_OpaServerAuth) isExtAuthConfig_Config_AuthConfig() {} + +func (*ExtAuthConfig_Config_PortalAuth) isExtAuthConfig_Config_AuthConfig() {} + +func (*ExtAuthConfig_Config_PassthroughInternal) isExtAuthConfig_Config_AuthConfig() {} + +// Selection of hashing algorithms to use for password hashing. +type ExtAuthConfig_BasicAuthInternal_EncryptionType struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Algorithm: + // + // *ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr_ + // *ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1_ + Algorithm isExtAuthConfig_BasicAuthInternal_EncryptionType_Algorithm `protobuf_oneof:"algorithm"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_BasicAuthInternal_EncryptionType) Reset() { + *x = ExtAuthConfig_BasicAuthInternal_EncryptionType{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_BasicAuthInternal_EncryptionType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_BasicAuthInternal_EncryptionType) ProtoMessage() {} + +func (x *ExtAuthConfig_BasicAuthInternal_EncryptionType) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_BasicAuthInternal_EncryptionType.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_BasicAuthInternal_EncryptionType) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 2, 0} +} + +func (x *ExtAuthConfig_BasicAuthInternal_EncryptionType) GetAlgorithm() isExtAuthConfig_BasicAuthInternal_EncryptionType_Algorithm { + if x != nil { + return x.Algorithm + } + return nil +} + +func (x *ExtAuthConfig_BasicAuthInternal_EncryptionType) GetApr() *ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr { + if x != nil { + if x, ok := x.Algorithm.(*ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr_); ok { + return x.Apr + } + } + return nil +} + +func (x *ExtAuthConfig_BasicAuthInternal_EncryptionType) GetSha1() *ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1 { + if x != nil { + if x, ok := x.Algorithm.(*ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1_); ok { + return x.Sha1 + } + } + return nil +} + +type isExtAuthConfig_BasicAuthInternal_EncryptionType_Algorithm interface { + isExtAuthConfig_BasicAuthInternal_EncryptionType_Algorithm() +} + +type ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr_ struct { + Apr *ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr `protobuf:"bytes,1,opt,name=apr,proto3,oneof"` +} + +type ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1_ struct { + Sha1 *ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1 `protobuf:"bytes,2,opt,name=sha1,proto3,oneof"` +} + +func (*ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr_) isExtAuthConfig_BasicAuthInternal_EncryptionType_Algorithm() { +} + +func (*ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1_) isExtAuthConfig_BasicAuthInternal_EncryptionType_Algorithm() { +} + +// To authenticate a user we need the salt and hashed password. The username is expected to be the key in a map of Users. +type ExtAuthConfig_BasicAuthInternal_User struct { + state protoimpl.MessageState `protogen:"open.v1"` + Salt string `protobuf:"bytes,1,opt,name=salt,proto3" json:"salt,omitempty"` + HashedPassword string `protobuf:"bytes,2,opt,name=hashed_password,json=hashedPassword,proto3" json:"hashed_password,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_BasicAuthInternal_User) Reset() { + *x = ExtAuthConfig_BasicAuthInternal_User{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_BasicAuthInternal_User) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_BasicAuthInternal_User) ProtoMessage() {} + +func (x *ExtAuthConfig_BasicAuthInternal_User) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[29] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_BasicAuthInternal_User.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_BasicAuthInternal_User) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 2, 1} +} + +func (x *ExtAuthConfig_BasicAuthInternal_User) GetSalt() string { + if x != nil { + return x.Salt + } + return "" +} + +func (x *ExtAuthConfig_BasicAuthInternal_User) GetHashedPassword() string { + if x != nil { + return x.HashedPassword + } + return "" +} + +// Map of valid usernames to stored credentials +type ExtAuthConfig_BasicAuthInternal_UserList struct { + state protoimpl.MessageState `protogen:"open.v1"` + Users map[string]*ExtAuthConfig_BasicAuthInternal_User `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_BasicAuthInternal_UserList) Reset() { + *x = ExtAuthConfig_BasicAuthInternal_UserList{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_BasicAuthInternal_UserList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_BasicAuthInternal_UserList) ProtoMessage() {} + +func (x *ExtAuthConfig_BasicAuthInternal_UserList) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[30] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_BasicAuthInternal_UserList.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_BasicAuthInternal_UserList) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 2, 2} +} + +func (x *ExtAuthConfig_BasicAuthInternal_UserList) GetUsers() map[string]*ExtAuthConfig_BasicAuthInternal_User { + if x != nil { + return x.Users + } + return nil +} + +type ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1 struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1) Reset() { + *x = ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1) ProtoMessage() {} + +func (x *ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[31] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 2, 0, 0} +} + +type ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr) Reset() { + *x = ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr) ProtoMessage() {} + +func (x *ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[32] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 2, 0, 1} +} + +type ExtAuthConfig_UserSessionConfig_CipherConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // to enable the cipher encryption, the key has to be present. + // Note that the key has to be found and 32 bytes in length for the authconfig to not be rejected. + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_UserSessionConfig_CipherConfig) Reset() { + *x = ExtAuthConfig_UserSessionConfig_CipherConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_UserSessionConfig_CipherConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_UserSessionConfig_CipherConfig) ProtoMessage() {} + +func (x *ExtAuthConfig_UserSessionConfig_CipherConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[35] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_UserSessionConfig_CipherConfig.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_UserSessionConfig_CipherConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 4, 0} +} + +func (x *ExtAuthConfig_UserSessionConfig_CipherConfig) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +// Fields for private key JWT Client Authentication. +type ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Signing key for the JWT used for client authentication + SigningKey string `protobuf:"bytes,1,opt,name=signing_key,json=signingKey,proto3" json:"signing_key,omitempty"` + // Amount of time for which the JWT is valid. No maximum is enforced, but different IDPs may impose limits on how far in + // the future the expiration time is allowed to be. Defaults in 5s in front end, but expected to be set explicitly here + ValidFor *durationpb.Duration `protobuf:"bytes,2,opt,name=valid_for,json=validFor,proto3" json:"valid_for,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig) Reset() { + *x = ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig) ProtoMessage() {} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[38] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 5, 2} +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig) GetSigningKey() string { + if x != nil { + return x.SigningKey + } + return "" +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig) GetValidFor() *durationpb.Duration { + if x != nil { + return x.ValidFor + } + return nil +} + +// Optional: Map a single claim from an OAuth2 access token to a header in the request to the upstream destination. +type ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken struct { + state protoimpl.MessageState `protogen:"open.v1"` + // A list of claims to be mapped from the JWT token received by ext-auth-service to an upstream destination + ClaimsToHeaders []*ExtAuthConfig_ClaimToHeader `protobuf:"bytes,1,rep,name=claims_to_headers,json=claimsToHeaders,proto3" json:"claims_to_headers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken) Reset() { + *x = ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken) ProtoMessage() {} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[39] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 5, 3} +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken) GetClaimsToHeaders() []*ExtAuthConfig_ClaimToHeader { + if x != nil { + return x.ClaimsToHeaders + } + return nil +} + +// Optional: Map a single claim from an OIDC identity token to a header in the request to the upstream destination. +type ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken struct { + state protoimpl.MessageState `protogen:"open.v1"` + // A list of claims to be mapped from the JWT token received by ext-auth-service to an upstream destination + ClaimsToHeaders []*ExtAuthConfig_ClaimToHeader `protobuf:"bytes,1,rep,name=claims_to_headers,json=claimsToHeaders,proto3" json:"claims_to_headers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken) Reset() { + *x = ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken) ProtoMessage() {} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[40] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 5, 4} +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken) GetClaimsToHeaders() []*ExtAuthConfig_ClaimToHeader { + if x != nil { + return x.ClaimsToHeaders + } + return nil +} + +// No-op, represents default OIDC behavior +type ExtAuthConfig_OidcAuthorizationCodeConfig_Default struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig_Default) Reset() { + *x = ExtAuthConfig_OidcAuthorizationCodeConfig_Default{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig_Default) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_OidcAuthorizationCodeConfig_Default) ProtoMessage() {} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig_Default) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[41] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_OidcAuthorizationCodeConfig_Default.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_OidcAuthorizationCodeConfig_Default) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 5, 5} +} + +// For the moment this is just path, but we may want to configure things like iss/sid validation +type ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Path to use for front channel logout. Should not be the same as logout or callback paths. + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout) Reset() { + *x = ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout) ProtoMessage() {} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[42] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 5, 6} +} + +func (x *ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +// Defines how JSON Web Token (JWT) access tokens are validated. +// +// Tokens are validated using a JSON Web Key Set (as defined in +// [Section 5 of RFC7517](https://datatracker.ietf.org/doc/html/rfc7517#section-5)), +// which can be either inlined in the configuration or fetched from a remote location via HTTP. +// Any keys in the JWKS that are not intended for signature verification (i.e. whose +// ["use" parameter](https://datatracker.ietf.org/doc/html/rfc7517#section-4.2) is not "sig") +// will be ignored by the system, as will keys that do not specify a +// ["kid" (Key ID) parameter](https://datatracker.ietf.org/doc/html/rfc7517#section-4.2). +// +// The JWT to be validated must define non-empty "kid" and "alg" headers. The "kid" header +// determines which key in the JWKS will be used to verify the signature of the token; +// if no matching key is found, the token will be rejected. +// +// If present, the server will verify the "exp", "iat", and "nbf" standard JWT claims. +// Validation of the "iss" claim and of token scopes can be configured as well. +// If the JWT has been successfully validated, its set of claims will be added to the +// `AuthorizationRequest` state under the "jwtAccessToken" key. +type ExtAuthConfig_AccessTokenValidationConfig_JwtValidation struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to JwksSourceSpecifier: + // + // *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks_ + // *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks_ + JwksSourceSpecifier isExtAuthConfig_AccessTokenValidationConfig_JwtValidation_JwksSourceSpecifier `protobuf_oneof:"jwks_source_specifier"` + // Allow only tokens that have been issued by this principal (i.e. whose "iss" claim matches this value). + // If empty, issuer validation will be skipped. + Issuer string `protobuf:"bytes,3,opt,name=issuer,proto3" json:"issuer,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) Reset() { + *x = ExtAuthConfig_AccessTokenValidationConfig_JwtValidation{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) ProtoMessage() {} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[44] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_AccessTokenValidationConfig_JwtValidation.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 6, 0} +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) GetJwksSourceSpecifier() isExtAuthConfig_AccessTokenValidationConfig_JwtValidation_JwksSourceSpecifier { + if x != nil { + return x.JwksSourceSpecifier + } + return nil +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) GetRemoteJwks() *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks { + if x != nil { + if x, ok := x.JwksSourceSpecifier.(*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks_); ok { + return x.RemoteJwks + } + } + return nil +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) GetLocalJwks() *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks { + if x != nil { + if x, ok := x.JwksSourceSpecifier.(*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks_); ok { + return x.LocalJwks + } + } + return nil +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) GetIssuer() string { + if x != nil { + return x.Issuer + } + return "" +} + +type isExtAuthConfig_AccessTokenValidationConfig_JwtValidation_JwksSourceSpecifier interface { + isExtAuthConfig_AccessTokenValidationConfig_JwtValidation_JwksSourceSpecifier() +} + +type ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks_ struct { + // Fetches the JWKS from a remote location. + RemoteJwks *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks `protobuf:"bytes,1,opt,name=remote_jwks,json=remoteJwks,proto3,oneof"` +} + +type ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks_ struct { + // Loads the JWKS from a local data source. + LocalJwks *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks `protobuf:"bytes,2,opt,name=local_jwks,json=localJwks,proto3,oneof"` +} + +func (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks_) isExtAuthConfig_AccessTokenValidationConfig_JwtValidation_JwksSourceSpecifier() { +} + +func (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks_) isExtAuthConfig_AccessTokenValidationConfig_JwtValidation_JwksSourceSpecifier() { +} + +// Defines how (opaque) access tokens, received from the oauth authorization endpoint, are validated +// [OAuth2.0 Token Introspection](https://datatracker.ietf.org/doc/html/rfc7662) +// +// If the token introspection url requires client authentication, both the client_id and client_secret +// are required. If only one is provided, the config will be rejected. +// These values will be encoded in a basic auth header in order to authenticate the client. +type ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The URL for the [OAuth2.0 Token Introspection](https://datatracker.ietf.org/doc/html/rfc7662) endpoint. + // If provided, the (opaque) access token provided or received from the oauth authorization endpoint + // will be validated against this endpoint, or locally cached responses for this access token. + IntrospectionUrl string `protobuf:"bytes,1,opt,name=introspection_url,json=introspectionUrl,proto3" json:"introspection_url,omitempty"` + // Your client id as registered with the issuer. + // Optional: Use if the token introspection url requires client authentication. + ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` + // Your client secret as registered with the issuer. + // Optional: Use if the token introspection url requires client authentication. + ClientSecret string `protobuf:"bytes,3,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"` + // The name of the [introspection response](https://datatracker.ietf.org/doc/html/rfc7662#section-2.2) + // attribute that contains the ID of the resource owner (e.g. `sub`, `username`). + // If specified, the external auth server will use the value of the attribute as the identifier of the + // authenticated user and add it to the request headers and/or dynamic metadata (depending on how the + // server is configured); if the field is set and the attribute cannot be found, the request will be denied. + // This field is optional and by default the server will not try to derive the user ID. + UserIdAttributeName string `protobuf:"bytes,4,opt,name=user_id_attribute_name,json=userIdAttributeName,proto3" json:"user_id_attribute_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) Reset() { + *x = ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) ProtoMessage() {} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[45] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 6, 1} +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) GetIntrospectionUrl() string { + if x != nil { + return x.IntrospectionUrl + } + return "" +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) GetClientId() string { + if x != nil { + return x.ClientId + } + return "" +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) GetClientSecret() string { + if x != nil { + return x.ClientSecret + } + return "" +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) GetUserIdAttributeName() string { + if x != nil { + return x.UserIdAttributeName + } + return "" +} + +type ExtAuthConfig_AccessTokenValidationConfig_ScopeList struct { + state protoimpl.MessageState `protogen:"open.v1"` + Scope []string `protobuf:"bytes,1,rep,name=scope,proto3" json:"scope,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_ScopeList) Reset() { + *x = ExtAuthConfig_AccessTokenValidationConfig_ScopeList{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_ScopeList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_AccessTokenValidationConfig_ScopeList) ProtoMessage() {} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_ScopeList) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[46] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_AccessTokenValidationConfig_ScopeList.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_AccessTokenValidationConfig_ScopeList) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 6, 2} +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_ScopeList) GetScope() []string { + if x != nil { + return x.Scope + } + return nil +} + +// No-op, represents default OIDC behavior +type ExtAuthConfig_AccessTokenValidationConfig_Default struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_Default) Reset() { + *x = ExtAuthConfig_AccessTokenValidationConfig_Default{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_Default) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_AccessTokenValidationConfig_Default) ProtoMessage() {} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_Default) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[48] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_AccessTokenValidationConfig_Default.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_AccessTokenValidationConfig_Default) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 6, 4} +} + +// Specifies how to fetch JWKS from remote and how to cache it. +type ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The HTTP URI to fetch the JWKS. + Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` + // The frequency at which the JWKS should be refreshed. + // If not specified, the default value is 5 minutes. + RefreshInterval *durationpb.Duration `protobuf:"bytes,2,opt,name=refresh_interval,json=refreshInterval,proto3" json:"refresh_interval,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) Reset() { + *x = ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) ProtoMessage() {} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[49] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 6, 0, 0} +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) GetRefreshInterval() *durationpb.Duration { + if x != nil { + return x.RefreshInterval + } + return nil +} + +// Represents a locally available JWKS. +type ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks struct { + state protoimpl.MessageState `protogen:"open.v1"` + // JWKS is embedded as a string. + InlineString string `protobuf:"bytes,1,opt,name=inline_string,json=inlineString,proto3" json:"inline_string,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) Reset() { + *x = ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) ProtoMessage() {} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[50] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 6, 0, 1} +} + +func (x *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) GetInlineString() string { + if x != nil { + return x.InlineString + } + return "" +} + +type ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The user is mapped as the name of `Secret` which contains the `ApiKey` + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` + // The metadata present on the `ApiKey`. + Metadata map[string]string `protobuf:"bytes,2,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) Reset() { + *x = ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) ProtoMessage() {} + +func (x *ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[53] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 9, 0} +} + +func (x *ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) GetMetadata() map[string]string { + if x != nil { + return x.Metadata + } + return nil +} + +// PassthroughAuthTlsConfigData defines the internal structure used to configure +// client-side TLS settings for passthrough authentication. This is not +// exposed externally and is used internally for constructing TLS client connections +// with support for certificates, private keys, and root CAs. +// +// All PEM fields are base64-encoded. The `ssl_params` field allows for specifying +// additional TLS properties such as protocol versions and cipher preferences. +// +// The fields `server_name`, `insecure_skip_verify`, and `require_client_cert` +// are currently not mapped to `tls.Config` but are retained for future compatibility +// and advanced configuration support. +type ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Base64-encoded PEM for the client certificate + CertPem string `protobuf:"bytes,1,opt,name=cert_pem,json=certPem,proto3" json:"cert_pem,omitempty"` + // Base64-encoded PEM for the client private key + KeyPem string `protobuf:"bytes,2,opt,name=key_pem,json=keyPem,proto3" json:"key_pem,omitempty"` + // Base64-encoded PEM for the trusted root CA(s) + RootCaPem string `protobuf:"bytes,3,opt,name=root_ca_pem,json=rootCaPem,proto3" json:"root_ca_pem,omitempty"` + // Optional: Includes additional TLS parameters + SslParams *SslParameters `protobuf:"bytes,4,opt,name=ssl_params,json=sslParams,proto3" json:"ssl_params,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData) Reset() { + *x = ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData) ProtoMessage() {} + +func (x *ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[59] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData.ProtoReflect.Descriptor instead. +func (*ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP(), []int{0, 17, 0} +} + +func (x *ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData) GetCertPem() string { + if x != nil { + return x.CertPem + } + return "" +} + +func (x *ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData) GetKeyPem() string { + if x != nil { + return x.KeyPem + } + return "" +} + +func (x *ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData) GetRootCaPem() string { + if x != nil { + return x.RootCaPem + } + return "" +} + +func (x *ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData) GetSslParams() *SslParameters { + if x != nil { + return x.SslParams + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDesc = string([]byte{ + 0x0a, 0x62, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x65, 0x78, 0x74, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, + 0x74, 0x61, 0x75, 0x74, 0x68, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x2c, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x72, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x64, 0x69, + 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4a, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xd6, 0x67, 0x0a, 0x0d, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2f, 0x0a, 0x14, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x5f, 0x72, 0x65, 0x66, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x11, 0x61, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, + 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x47, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, + 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, + 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x3f, + 0x0a, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x0b, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, + 0x28, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x4f, + 0x6e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x1a, 0xc9, 0x01, 0x0a, 0x05, 0x41, 0x7a, + 0x75, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x29, 0x0a, + 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xc8, 0xf5, 0x04, 0x01, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x5b, 0x0a, 0x16, 0x63, 0x6c, 0x61, 0x69, + 0x6d, 0x73, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x14, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x43, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x55, 0x0a, 0x0d, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x6f, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x16, 0x0a, 0x06, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x1a, 0xa6, 0x06, 0x0a, + 0x11, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x12, 0x67, 0x0a, 0x0a, 0x65, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x60, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, + 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x61, 0x73, + 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4c, + 0x69, 0x73, 0x74, 0x1a, 0xf1, 0x01, 0x0a, 0x0e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5f, 0x0a, 0x03, 0x61, 0x70, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, + 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x61, 0x73, 0x69, + 0x63, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x45, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x41, 0x70, 0x72, + 0x48, 0x00, 0x52, 0x03, 0x61, 0x70, 0x72, 0x12, 0x62, 0x0a, 0x04, 0x73, 0x68, 0x61, 0x31, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, + 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x61, + 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, + 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x53, + 0x68, 0x61, 0x31, 0x48, 0x00, 0x52, 0x04, 0x73, 0x68, 0x61, 0x31, 0x1a, 0x06, 0x0a, 0x04, 0x53, + 0x68, 0x61, 0x31, 0x1a, 0x05, 0x0a, 0x03, 0x41, 0x70, 0x72, 0x42, 0x0b, 0x0a, 0x09, 0x61, 0x6c, + 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x1a, 0x43, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, + 0x12, 0x0a, 0x04, 0x73, 0x61, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, + 0x61, 0x6c, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x68, 0x61, + 0x73, 0x68, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x1a, 0xe7, 0x01, 0x0a, + 0x08, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x62, 0x0a, 0x05, 0x75, 0x73, 0x65, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x1a, 0x77, 0x0a, + 0x0a, 0x55, 0x73, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x53, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0xbf, 0x03, 0x0a, 0x0b, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xc8, + 0xf5, 0x04, 0x01, 0x18, 0x01, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x5f, 0x75, 0x72, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x69, 0x73, 0x73, + 0x75, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x90, 0x01, 0x0a, 0x1a, 0x61, 0x75, 0x74, 0x68, 0x5f, + 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4f, 0x2e, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x41, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, + 0x52, 0x17, 0x61, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x07, 0x61, 0x70, 0x70, + 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, + 0x61, 0x70, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x27, 0x0a, 0x0d, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, + 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, + 0x01, 0x52, 0x0c, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x12, + 0x1a, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x02, 0x18, 0x01, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x1a, 0x4a, 0x0a, 0x1c, 0x41, + 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xdb, 0x03, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x31, 0x0a, + 0x15, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x6f, 0x6e, 0x5f, 0x66, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x66, + 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x66, 0x61, + 0x69, 0x6c, 0x4f, 0x6e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, + 0x12, 0x59, 0x0a, 0x0e, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x43, + 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0d, 0x63, 0x6f, + 0x6f, 0x6b, 0x69, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4e, 0x0a, 0x06, 0x63, + 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x49, 0x0a, 0x05, 0x72, + 0x65, 0x64, 0x69, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x2e, 0x52, 0x65, 0x64, 0x69, 0x73, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, + 0x05, 0x72, 0x65, 0x64, 0x69, 0x73, 0x12, 0x6a, 0x0a, 0x0d, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x1a, 0x26, 0x0a, 0x0c, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x16, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x04, 0xc8, 0xf5, 0x04, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0xb9, 0x17, 0x0a, 0x1b, 0x4f, 0x69, 0x64, 0x63, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x29, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xc8, 0xf5, 0x04, 0x01, 0x52, + 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x1d, 0x0a, + 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x9c, 0x01, 0x0a, + 0x1a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x5f, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, + 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x69, 0x64, 0x63, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x17, 0x61, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x9f, 0x01, 0x0a, 0x1b, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x60, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, + 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x69, 0x64, 0x63, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x18, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x17, 0x0a, + 0x07, 0x61, 0x70, 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x61, 0x70, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, + 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, + 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, + 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x28, 0x0a, 0x10, + 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x5f, 0x75, 0x72, 0x6c, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x66, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x67, + 0x6f, 0x75, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x42, + 0x0a, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x59, 0x0a, 0x12, 0x64, 0x69, + 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, + 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, + 0x64, 0x65, 0x52, 0x11, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4f, 0x76, 0x65, + 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x51, 0x0a, 0x17, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x15, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x6c, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x72, 0x0a, 0x19, 0x6a, 0x77, 0x6b, 0x73, + 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4a, 0x77, 0x6b, 0x73, 0x4f, 0x6e, 0x44, 0x65, 0x6d, 0x61, + 0x6e, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x52, 0x16, 0x6a, 0x77, 0x6b, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x33, 0x0a, 0x16, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x3e, 0x0a, 0x1c, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x62, + 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x65, + 0x78, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x70, 0x61, 0x72, 0x73, 0x65, 0x43, 0x61, + 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x41, 0x73, 0x52, 0x65, 0x67, 0x65, + 0x78, 0x12, 0x61, 0x0a, 0x16, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x72, + 0x6f, 0x6d, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x12, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x75, 0x74, 0x6f, + 0x4d, 0x61, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, + 0x13, 0x61, 0x75, 0x74, 0x6f, 0x4d, 0x61, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x63, 0x0a, 0x16, 0x65, 0x6e, 0x64, 0x5f, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x13, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, + 0x6e, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, + 0x69, 0x65, 0x73, 0x52, 0x14, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x50, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x5b, 0x0a, 0x0c, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x38, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, + 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xb0, 0x01, 0x0a, 0x23, 0x70, 0x6b, 0x5f, 0x6a, 0x77, + 0x74, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x15, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x62, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, + 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x69, 0x64, + 0x63, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x6b, 0x4a, 0x77, 0x74, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x1f, 0x70, 0x6b, 0x4a, 0x77, 0x74, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x71, 0x0a, 0x0c, 0x61, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x4e, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, + 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x69, 0x64, 0x63, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, + 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x77, 0x0a, 0x0e, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x17, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x50, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, + 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x69, 0x64, + 0x63, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x0d, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x66, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, + 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, + 0x69, 0x64, 0x63, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x44, 0x0a, + 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, 0x05, 0x61, 0x7a, + 0x75, 0x72, 0x65, 0x12, 0x87, 0x01, 0x0a, 0x14, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x5f, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x18, 0x1c, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x55, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, + 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x69, 0x64, 0x63, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x52, 0x12, 0x66, 0x72, 0x6f, 0x6e, 0x74, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x12, 0xa2, 0x01, + 0x0a, 0x1c, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x1d, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x61, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, + 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x69, 0x64, + 0x63, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x69, + 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x19, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x69, + 0x6d, 0x73, 0x1a, 0x4a, 0x0a, 0x1c, 0x41, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4b, + 0x0a, 0x1d, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x80, 0x01, 0x0a, 0x1f, + 0x50, 0x6b, 0x4a, 0x77, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, + 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x25, 0x0a, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xc8, 0xf5, 0x04, 0x01, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, + 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, + 0x66, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x46, 0x6f, 0x72, 0x1a, 0x6f, + 0x0a, 0x0b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x60, 0x0a, + 0x11, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x0f, + 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, + 0x71, 0x0a, 0x0d, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x60, 0x0a, 0x11, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x52, 0x0f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x1a, 0x09, 0x0a, 0x07, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x1a, 0x28, 0x0a, + 0x12, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4c, 0x6f, 0x67, + 0x6f, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x1a, 0x4c, 0x0a, 0x1e, 0x44, 0x79, 0x6e, 0x61, 0x6d, + 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6c, + 0x61, 0x69, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x1a, 0x99, 0x0e, 0x0a, 0x1b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x31, 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, + 0x48, 0x00, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x64, 0x0a, 0x03, 0x6a, 0x77, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x50, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, + 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x77, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x6a, 0x77, 0x74, 0x12, 0x82, 0x01, 0x0a, 0x0d, 0x69, + 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x5a, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, + 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, + 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x21, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x66, 0x6f, 0x55, + 0x72, 0x6c, 0x12, 0x3e, 0x0a, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x12, 0x77, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x53, 0x63, 0x6f, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x01, 0x52, 0x0e, 0x72, 0x65, 0x71, + 0x75, 0x69, 0x72, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0xa2, 0x01, 0x0a, 0x1c, + 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x61, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, + 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x19, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, + 0x12, 0x60, 0x0a, 0x11, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x52, 0x0f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x12, 0x66, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x1a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, + 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, + 0x02, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x44, 0x0a, 0x05, 0x61, 0x7a, + 0x75, 0x72, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x48, 0x02, 0x52, 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, + 0x1a, 0xd5, 0x03, 0x0a, 0x0d, 0x4a, 0x77, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x7e, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x6a, 0x77, 0x6b, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x5b, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x77, 0x74, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x4a, 0x77, 0x6b, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4a, 0x77, + 0x6b, 0x73, 0x12, 0x7b, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6a, 0x77, 0x6b, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x5a, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, + 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x77, 0x74, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4a, 0x77, + 0x6b, 0x73, 0x48, 0x00, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x4a, 0x77, 0x6b, 0x73, 0x12, + 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x1a, 0x64, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x4a, 0x77, 0x6b, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x44, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x72, 0x65, + 0x66, 0x72, 0x65, 0x73, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x1a, 0x30, 0x0a, + 0x09, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4a, 0x77, 0x6b, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, + 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, + 0x17, 0x0a, 0x15, 0x6a, 0x77, 0x6b, 0x73, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x1a, 0xc3, 0x01, 0x0a, 0x17, 0x49, 0x6e, 0x74, + 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, + 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x29, + 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xc8, 0xf5, 0x04, 0x01, 0x52, 0x0c, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x33, 0x0a, 0x16, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x21, + 0x0a, 0x09, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, + 0x65, 0x1a, 0x4c, 0x0a, 0x1e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x09, 0x0a, 0x07, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, + 0x10, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x1a, 0xe0, 0x07, + 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x69, 0x6e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x29, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xc8, 0xf5, 0x04, 0x01, 0x52, 0x0c, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x92, 0x01, 0x0a, 0x1a, + 0x61, 0x75, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x55, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, + 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x6c, 0x61, 0x69, 0x6e, 0x4f, 0x41, + 0x75, 0x74, 0x68, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x45, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x17, 0x61, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x12, 0x17, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x61, 0x70, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x6c, + 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, + 0x01, 0x52, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, + 0x67, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x95, 0x01, 0x0a, 0x1b, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x56, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, + 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x6c, 0x61, 0x69, 0x6e, 0x4f, + 0x41, 0x75, 0x74, 0x68, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x18, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, + 0x6f, 0x75, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, + 0x66, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x23, 0x0a, + 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x13, 0x72, 0x65, 0x76, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x72, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x5b, 0x0a, 0x0c, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x38, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, + 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x4a, 0x0a, 0x1c, 0x41, 0x75, 0x74, 0x68, 0x45, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x4b, 0x0a, 0x1d, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x45, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x8d, 0x03, 0x0a, 0x0c, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x7c, 0x0a, 0x17, 0x6f, 0x69, 0x64, 0x63, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, + 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x69, 0x64, 0x63, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x15, 0x6f, 0x69, 0x64, 0x63, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x89, 0x01, 0x0a, 0x1e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x1b, + 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5f, 0x0a, 0x0d, 0x6f, + 0x61, 0x75, 0x74, 0x68, 0x32, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, + 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x6c, 0x61, 0x69, 0x6e, + 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0c, + 0x6f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0c, 0x0a, 0x0a, + 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, + 0x1a, 0x87, 0x09, 0x0a, 0x10, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x75, 0x0a, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x61, + 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x41, 0x70, 0x69, 0x4b, + 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, 0xc8, 0xf5, 0x04, 0x01, 0x52, 0x0c, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x1f, 0x0a, 0x0b, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x8e, 0x01, + 0x0a, 0x19, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6b, + 0x65, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x53, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, + 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, + 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x46, + 0x72, 0x6f, 0x6d, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x6c, + 0x0a, 0x19, 0x6b, 0x38, 0x73, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x61, 0x70, 0x69, + 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2f, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4b, 0x38, 0x73, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x48, 0x00, 0x52, 0x16, 0x6b, 0x38, 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x41, + 0x70, 0x69, 0x6b, 0x65, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x6b, 0x0a, 0x18, + 0x61, 0x65, 0x72, 0x6f, 0x73, 0x70, 0x69, 0x6b, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x6b, 0x65, 0x79, + 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, + 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x65, 0x72, 0x6f, 0x73, 0x70, 0x69, + 0x6b, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x48, + 0x00, 0x52, 0x16, 0x61, 0x65, 0x72, 0x6f, 0x73, 0x70, 0x69, 0x6b, 0x65, 0x41, 0x70, 0x69, 0x6b, + 0x65, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x78, 0x0a, 0x1d, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x61, 0x70, 0x69, 0x6b, + 0x65, 0x79, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x33, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x53, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x1a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x70, 0x69, 0x6b, 0x65, 0x79, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x73, 0x6b, 0x69, 0x70, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xd5, 0x01, + 0x0a, 0x0b, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, + 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x6d, 0x0a, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x84, 0x01, 0x0a, 0x11, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x41, + 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x59, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x49, 0x0a, 0x1b, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4b, 0x65, 0x79, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x1a, 0x81, 0x02, 0x0a, 0x0d, 0x4f, + 0x70, 0x61, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5b, 0x0a, 0x07, + 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x70, 0x61, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, + 0x41, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x70, 0x61, 0x41, 0x75, + 0x74, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xb0, + 0x01, 0x0a, 0x13, 0x4f, 0x70, 0x61, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, + 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x12, 0x41, + 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x70, 0x61, 0x41, 0x75, 0x74, + 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x1a, 0xbf, 0x03, 0x0a, 0x0a, 0x4c, 0x64, 0x61, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x75, 0x73, + 0x65, 0x72, 0x44, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x44, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x12, 0x38, 0x0a, 0x17, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x17, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x12, 0x40, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2c, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x64, 0x61, 0x70, 0x2e, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x04, + 0x70, 0x6f, 0x6f, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x16, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x69, + 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x12, 0x73, + 0x0a, 0x15, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x64, 0x61, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x13, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x1a, 0xa8, 0x01, 0x0a, 0x18, 0x4c, 0x64, 0x61, 0x70, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x20, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x04, 0xc8, 0xf5, 0x04, 0x01, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xc8, 0xf5, 0x04, 0x01, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x21, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x1d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x57, 0x69, 0x74, 0x68, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xff, + 0x01, 0x0a, 0x0e, 0x48, 0x6d, 0x61, 0x63, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x5c, 0x0a, 0x0b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, + 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x49, + 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4c, 0x69, 0x73, + 0x74, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x66, 0x0a, 0x15, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x5f, 0x69, 0x6e, + 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, + 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x6d, 0x61, 0x63, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x49, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x48, 0x01, 0x52, 0x13, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x49, 0x6e, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x73, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x69, 0x6d, 0x70, + 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x1a, 0x9c, 0x02, 0x0a, 0x10, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x41, 0x75, 0x74, 0x68, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x24, 0x0a, 0x0e, 0x61, 0x70, 0x69, 0x5f, 0x6b, + 0x65, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x4a, 0x0a, + 0x0d, 0x72, 0x65, 0x64, 0x69, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, + 0x65, 0x64, 0x69, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, 0x72, 0x65, 0x64, + 0x69, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x0e, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x0f, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x1a, + 0xc5, 0x01, 0x0a, 0x12, 0x49, 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x70, 0x0a, 0x0b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x49, 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4c, 0x69, 0x73, + 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, 0xc8, 0xf5, 0x04, 0x01, 0x52, 0x0a, 0x73, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x3d, 0x0a, 0x0f, 0x53, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xc3, 0x03, 0x0a, 0x1d, 0x50, 0x61, 0x73, 0x73, + 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x54, 0x0a, 0x11, 0x70, 0x61, 0x73, + 0x73, 0x5f, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, + 0x61, 0x73, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x41, 0x75, 0x74, 0x68, 0x52, 0x0f, + 0x70, 0x61, 0x73, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x41, 0x75, 0x74, 0x68, 0x12, + 0x8f, 0x01, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x61, 0x2e, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x41, 0x75, 0x74, + 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x50, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x41, 0x75, 0x74, 0x68, 0x54, + 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x61, 0x74, 0x61, 0x42, 0x04, 0xc8, 0xf5, + 0x04, 0x01, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x61, 0x74, + 0x61, 0x1a, 0xb9, 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, + 0x68, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x70, 0x65, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x65, 0x72, 0x74, 0x50, 0x65, 0x6d, 0x12, 0x17, 0x0a, + 0x07, 0x6b, 0x65, 0x79, 0x5f, 0x70, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x6b, 0x65, 0x79, 0x50, 0x65, 0x6d, 0x12, 0x1e, 0x0a, 0x0b, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x63, + 0x61, 0x5f, 0x70, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x6f, 0x6f, + 0x74, 0x43, 0x61, 0x50, 0x65, 0x6d, 0x12, 0x45, 0x0a, 0x0a, 0x73, 0x73, 0x6c, 0x5f, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x73, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x73, 0x52, 0x09, 0x73, 0x73, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0xcb, 0x0a, + 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x05, 0x6f, 0x61, + 0x75, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x02, 0x18, + 0x01, 0x48, 0x00, 0x52, 0x05, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x12, 0x4d, 0x0a, 0x06, 0x6f, 0x61, + 0x75, 0x74, 0x68, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, + 0x00, 0x52, 0x06, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x12, 0x43, 0x0a, 0x0a, 0x62, 0x61, 0x73, + 0x69, 0x63, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, + 0x68, 0x48, 0x00, 0x52, 0x09, 0x62, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x12, 0x6a, + 0x0a, 0x13, 0x62, 0x61, 0x73, 0x69, 0x63, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x11, 0x62, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, + 0x74, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x5b, 0x0a, 0x0c, 0x61, 0x70, + 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x37, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, + 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, + 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x70, 0x69, + 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x12, 0x4a, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, + 0x6e, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x50, 0x6c, 0x75, 0x67, 0x69, + 0x6e, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x41, + 0x75, 0x74, 0x68, 0x12, 0x51, 0x0a, 0x08, 0x6f, 0x70, 0x61, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, + 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x70, + 0x61, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x07, 0x6f, + 0x70, 0x61, 0x41, 0x75, 0x74, 0x68, 0x12, 0x37, 0x0a, 0x04, 0x6c, 0x64, 0x61, 0x70, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, + 0x64, 0x61, 0x70, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x64, 0x61, 0x70, 0x12, + 0x58, 0x0a, 0x0d, 0x6c, 0x64, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, + 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, + 0x64, 0x61, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0c, 0x6c, 0x64, 0x61, + 0x70, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x03, 0x6a, 0x77, 0x74, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, + 0x52, 0x03, 0x6a, 0x77, 0x74, 0x12, 0x56, 0x0a, 0x11, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x74, 0x68, + 0x72, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x54, + 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x41, 0x75, 0x74, 0x68, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x61, + 0x73, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x41, 0x75, 0x74, 0x68, 0x12, 0x54, 0x0a, + 0x09, 0x68, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x35, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, + 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x48, 0x6d, 0x61, 0x63, 0x41, 0x75, 0x74, + 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x08, 0x68, 0x6d, 0x61, 0x63, 0x41, + 0x75, 0x74, 0x68, 0x12, 0x64, 0x0a, 0x0f, 0x6f, 0x70, 0x61, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x70, 0x61, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x75, + 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x6f, 0x70, 0x61, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x12, 0x5a, 0x0a, 0x0b, 0x70, 0x6f, 0x72, + 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, + 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x41, 0x75, 0x74, + 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x61, + 0x6c, 0x41, 0x75, 0x74, 0x68, 0x12, 0x79, 0x0a, 0x14, 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, + 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x13, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, + 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x61, 0x73, 0x73, + 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x13, 0x70, 0x61, 0x73, + 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x42, 0x0d, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, + 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x73, 0x0a, 0x13, 0x41, + 0x70, 0x69, 0x4b, 0x65, 0x79, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x08, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, + 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x07, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x20, + 0x0a, 0x0c, 0x72, 0x61, 0x77, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x61, 0x77, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, + 0x22, 0x52, 0x0a, 0x14, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x61, 0x70, 0x69, 0x5f, + 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x07, 0x61, 0x70, 0x69, + 0x4b, 0x65, 0x79, 0x73, 0x22, 0x4d, 0x0a, 0x11, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x65, + 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x72, 0x61, 0x77, + 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0a, 0x72, 0x61, 0x77, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x22, 0x50, 0x0a, 0x12, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x61, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x61, 0x70, 0x69, + 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x07, 0x61, 0x70, + 0x69, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x8b, 0x01, 0x0a, 0x13, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, + 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, + 0x70, 0x73, 0x65, 0x72, 0x74, 0x12, 0x3a, 0x0a, 0x08, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x07, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, + 0x73, 0x12, 0x20, 0x0a, 0x0c, 0x72, 0x61, 0x77, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x61, 0x77, 0x41, 0x70, 0x69, 0x4b, + 0x65, 0x79, 0x73, 0x22, 0x52, 0x0a, 0x14, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x61, + 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x07, + 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x4f, 0x0a, 0x13, 0x41, 0x70, 0x69, 0x4b, 0x65, + 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, + 0x0a, 0x0c, 0x72, 0x61, 0x77, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x61, 0x77, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, + 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x41, 0x70, 0x69, 0x4b, + 0x65, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x32, 0xdd, 0x02, 0x0a, 0x17, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x44, 0x69, 0x73, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5c, 0x0a, 0x13, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x1e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x65, 0x0a, 0x12, 0x44, 0x65, + 0x6c, 0x74, 0x61, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x23, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x44, 0x65, 0x6c, 0x74, 0x61, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, + 0x01, 0x12, 0x7d, 0x0a, 0x12, 0x46, 0x65, 0x74, 0x63, 0x68, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, + 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, + 0x3a, 0x01, 0x2a, 0x22, 0x1b, 0x2f, 0x76, 0x32, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x79, 0x3a, 0x65, 0x78, 0x74, 0x61, 0x75, 0x74, 0x68, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x32, 0xad, 0x03, 0x0a, 0x0d, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x67, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x2e, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x04, 0x52, + 0x65, 0x61, 0x64, 0x12, 0x2a, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x70, + 0x69, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2b, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, + 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x67, + 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, + 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x67, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x12, 0x2c, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x70, 0x69, 0x4b, + 0x65, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2d, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x42, 0x4d, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x3f, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes = make([]protoimpl.MessageInfo, 60) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_goTypes = []any{ + (*ExtAuthConfig)(nil), // 0: enterprise.gloo.solo.io.ExtAuthConfig + (*ApiKeyCreateRequest)(nil), // 1: enterprise.gloo.solo.io.ApiKeyCreateRequest + (*ApiKeyCreateResponse)(nil), // 2: enterprise.gloo.solo.io.ApiKeyCreateResponse + (*ApiKeyReadRequest)(nil), // 3: enterprise.gloo.solo.io.ApiKeyReadRequest + (*ApiKeyReadResponse)(nil), // 4: enterprise.gloo.solo.io.ApiKeyReadResponse + (*ApiKeyUpdateRequest)(nil), // 5: enterprise.gloo.solo.io.ApiKeyUpdateRequest + (*ApiKeyUpdateResponse)(nil), // 6: enterprise.gloo.solo.io.ApiKeyUpdateResponse + (*ApiKeyDeleteRequest)(nil), // 7: enterprise.gloo.solo.io.ApiKeyDeleteRequest + (*ApiKeyDeleteResponse)(nil), // 8: enterprise.gloo.solo.io.ApiKeyDeleteResponse + (*ExtAuthConfig_Azure)(nil), // 9: enterprise.gloo.solo.io.ExtAuthConfig.Azure + (*ExtAuthConfig_ClaimToHeader)(nil), // 10: enterprise.gloo.solo.io.ExtAuthConfig.ClaimToHeader + (*ExtAuthConfig_BasicAuthInternal)(nil), // 11: enterprise.gloo.solo.io.ExtAuthConfig.BasicAuthInternal + (*ExtAuthConfig_OAuthConfig)(nil), // 12: enterprise.gloo.solo.io.ExtAuthConfig.OAuthConfig + (*ExtAuthConfig_UserSessionConfig)(nil), // 13: enterprise.gloo.solo.io.ExtAuthConfig.UserSessionConfig + (*ExtAuthConfig_OidcAuthorizationCodeConfig)(nil), // 14: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig + (*ExtAuthConfig_AccessTokenValidationConfig)(nil), // 15: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig + (*ExtAuthConfig_PlainOAuth2Config)(nil), // 16: enterprise.gloo.solo.io.ExtAuthConfig.PlainOAuth2Config + (*ExtAuthConfig_OAuth2Config)(nil), // 17: enterprise.gloo.solo.io.ExtAuthConfig.OAuth2Config + (*ExtAuthConfig_ApiKeyAuthConfig)(nil), // 18: enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig + (*ExtAuthConfig_OpaAuthConfig)(nil), // 19: enterprise.gloo.solo.io.ExtAuthConfig.OpaAuthConfig + (*ExtAuthConfig_OpaServerAuthConfig)(nil), // 20: enterprise.gloo.solo.io.ExtAuthConfig.OpaServerAuthConfig + (*ExtAuthConfig_LdapConfig)(nil), // 21: enterprise.gloo.solo.io.ExtAuthConfig.LdapConfig + (*ExtAuthConfig_LdapServiceAccountConfig)(nil), // 22: enterprise.gloo.solo.io.ExtAuthConfig.LdapServiceAccountConfig + (*ExtAuthConfig_HmacAuthConfig)(nil), // 23: enterprise.gloo.solo.io.ExtAuthConfig.HmacAuthConfig + (*ExtAuthConfig_PortalAuthConfig)(nil), // 24: enterprise.gloo.solo.io.ExtAuthConfig.PortalAuthConfig + (*ExtAuthConfig_InMemorySecretList)(nil), // 25: enterprise.gloo.solo.io.ExtAuthConfig.InMemorySecretList + (*ExtAuthConfig_PassthroughAuthInternalConfig)(nil), // 26: enterprise.gloo.solo.io.ExtAuthConfig.PassthroughAuthInternalConfig + (*ExtAuthConfig_Config)(nil), // 27: enterprise.gloo.solo.io.ExtAuthConfig.Config + (*ExtAuthConfig_BasicAuthInternal_EncryptionType)(nil), // 28: enterprise.gloo.solo.io.ExtAuthConfig.BasicAuthInternal.EncryptionType + (*ExtAuthConfig_BasicAuthInternal_User)(nil), // 29: enterprise.gloo.solo.io.ExtAuthConfig.BasicAuthInternal.User + (*ExtAuthConfig_BasicAuthInternal_UserList)(nil), // 30: enterprise.gloo.solo.io.ExtAuthConfig.BasicAuthInternal.UserList + (*ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1)(nil), // 31: enterprise.gloo.solo.io.ExtAuthConfig.BasicAuthInternal.EncryptionType.Sha1 + (*ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr)(nil), // 32: enterprise.gloo.solo.io.ExtAuthConfig.BasicAuthInternal.EncryptionType.Apr + nil, // 33: enterprise.gloo.solo.io.ExtAuthConfig.BasicAuthInternal.UserList.UsersEntry + nil, // 34: enterprise.gloo.solo.io.ExtAuthConfig.OAuthConfig.AuthEndpointQueryParamsEntry + (*ExtAuthConfig_UserSessionConfig_CipherConfig)(nil), // 35: enterprise.gloo.solo.io.ExtAuthConfig.UserSessionConfig.CipherConfig + nil, // 36: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.AuthEndpointQueryParamsEntry + nil, // 37: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.TokenEndpointQueryParamsEntry + (*ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig)(nil), // 38: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.PkJwtClientAuthenticationConfig + (*ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken)(nil), // 39: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.AccessToken + (*ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken)(nil), // 40: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.IdentityToken + (*ExtAuthConfig_OidcAuthorizationCodeConfig_Default)(nil), // 41: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.Default + (*ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout)(nil), // 42: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.FrontChannelLogout + nil, // 43: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.DynamicMetadataFromClaimsEntry + (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation)(nil), // 44: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.JwtValidation + (*ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation)(nil), // 45: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.IntrospectionValidation + (*ExtAuthConfig_AccessTokenValidationConfig_ScopeList)(nil), // 46: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.ScopeList + nil, // 47: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.DynamicMetadataFromClaimsEntry + (*ExtAuthConfig_AccessTokenValidationConfig_Default)(nil), // 48: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.Default + (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks)(nil), // 49: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.JwtValidation.RemoteJwks + (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks)(nil), // 50: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.JwtValidation.LocalJwks + nil, // 51: enterprise.gloo.solo.io.ExtAuthConfig.PlainOAuth2Config.AuthEndpointQueryParamsEntry + nil, // 52: enterprise.gloo.solo.io.ExtAuthConfig.PlainOAuth2Config.TokenEndpointQueryParamsEntry + (*ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata)(nil), // 53: enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.KeyMetadata + nil, // 54: enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.ValidApiKeysEntry + nil, // 55: enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.HeadersFromKeyMetadataEntry + nil, // 56: enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.KeyMetadata.MetadataEntry + nil, // 57: enterprise.gloo.solo.io.ExtAuthConfig.OpaAuthConfig.ModulesEntry + nil, // 58: enterprise.gloo.solo.io.ExtAuthConfig.InMemorySecretList.SecretListEntry + (*ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData)(nil), // 59: enterprise.gloo.solo.io.ExtAuthConfig.PassthroughAuthInternalConfig.PassthroughAuthTlsConfigData + (*wrapperspb.StringValue)(nil), // 60: google.protobuf.StringValue + (*ApiKey)(nil), // 61: enterprise.gloo.solo.io.ApiKey + (*RedisOptions)(nil), // 62: enterprise.gloo.solo.io.RedisOptions + (*UserSession_CookieOptions)(nil), // 63: enterprise.gloo.solo.io.UserSession.CookieOptions + (*UserSession_InternalSession)(nil), // 64: enterprise.gloo.solo.io.UserSession.InternalSession + (*UserSession_RedisSession)(nil), // 65: enterprise.gloo.solo.io.UserSession.RedisSession + (*UserSession)(nil), // 66: enterprise.gloo.solo.io.UserSession + (*HeaderConfiguration)(nil), // 67: enterprise.gloo.solo.io.HeaderConfiguration + (*DiscoveryOverride)(nil), // 68: enterprise.gloo.solo.io.DiscoveryOverride + (*durationpb.Duration)(nil), // 69: google.protobuf.Duration + (*JwksOnDemandCacheRefreshPolicy)(nil), // 70: enterprise.gloo.solo.io.JwksOnDemandCacheRefreshPolicy + (*AutoMapFromMetadata)(nil), // 71: enterprise.gloo.solo.io.AutoMapFromMetadata + (*EndSessionProperties)(nil), // 72: enterprise.gloo.solo.io.EndSessionProperties + (*K8SSecretApiKeyStorage)(nil), // 73: enterprise.gloo.solo.io.K8sSecretApiKeyStorage + (*AerospikeApiKeyStorage)(nil), // 74: enterprise.gloo.solo.io.AerospikeApiKeyStorage + (*ServerDefaultApiKeyStorage)(nil), // 75: enterprise.gloo.solo.io.ServerDefaultApiKeyStorage + (*OpaAuthOptions)(nil), // 76: enterprise.gloo.solo.io.OpaAuthOptions + (*Ldap_ConnectionPool)(nil), // 77: enterprise.gloo.solo.io.Ldap.ConnectionPool + (*HmacParametersInHeaders)(nil), // 78: enterprise.gloo.solo.io.HmacParametersInHeaders + (*PassThroughAuth)(nil), // 79: enterprise.gloo.solo.io.PassThroughAuth + (*BasicAuth)(nil), // 80: enterprise.gloo.solo.io.BasicAuth + (*AuthPlugin)(nil), // 81: enterprise.gloo.solo.io.AuthPlugin + (*Ldap)(nil), // 82: enterprise.gloo.solo.io.Ldap + (*emptypb.Empty)(nil), // 83: google.protobuf.Empty + (*SslParameters)(nil), // 84: enterprise.gloo.solo.io.SslParameters + (*v2.DiscoveryRequest)(nil), // 85: envoy.api.v2.DiscoveryRequest + (*v2.DeltaDiscoveryRequest)(nil), // 86: envoy.api.v2.DeltaDiscoveryRequest + (*v2.DiscoveryResponse)(nil), // 87: envoy.api.v2.DiscoveryResponse + (*v2.DeltaDiscoveryResponse)(nil), // 88: envoy.api.v2.DeltaDiscoveryResponse +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_depIdxs = []int32{ + 27, // 0: enterprise.gloo.solo.io.ExtAuthConfig.configs:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.Config + 60, // 1: enterprise.gloo.solo.io.ExtAuthConfig.boolean_expr:type_name -> google.protobuf.StringValue + 61, // 2: enterprise.gloo.solo.io.ApiKeyCreateRequest.api_keys:type_name -> enterprise.gloo.solo.io.ApiKey + 61, // 3: enterprise.gloo.solo.io.ApiKeyCreateResponse.api_keys:type_name -> enterprise.gloo.solo.io.ApiKey + 61, // 4: enterprise.gloo.solo.io.ApiKeyReadResponse.api_keys:type_name -> enterprise.gloo.solo.io.ApiKey + 61, // 5: enterprise.gloo.solo.io.ApiKeyUpdateRequest.api_keys:type_name -> enterprise.gloo.solo.io.ApiKey + 61, // 6: enterprise.gloo.solo.io.ApiKeyUpdateResponse.api_keys:type_name -> enterprise.gloo.solo.io.ApiKey + 62, // 7: enterprise.gloo.solo.io.ExtAuthConfig.Azure.claims_caching_options:type_name -> enterprise.gloo.solo.io.RedisOptions + 28, // 8: enterprise.gloo.solo.io.ExtAuthConfig.BasicAuthInternal.encryption:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.BasicAuthInternal.EncryptionType + 30, // 9: enterprise.gloo.solo.io.ExtAuthConfig.BasicAuthInternal.user_list:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.BasicAuthInternal.UserList + 34, // 10: enterprise.gloo.solo.io.ExtAuthConfig.OAuthConfig.auth_endpoint_query_params:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OAuthConfig.AuthEndpointQueryParamsEntry + 63, // 11: enterprise.gloo.solo.io.ExtAuthConfig.UserSessionConfig.cookie_options:type_name -> enterprise.gloo.solo.io.UserSession.CookieOptions + 64, // 12: enterprise.gloo.solo.io.ExtAuthConfig.UserSessionConfig.cookie:type_name -> enterprise.gloo.solo.io.UserSession.InternalSession + 65, // 13: enterprise.gloo.solo.io.ExtAuthConfig.UserSessionConfig.redis:type_name -> enterprise.gloo.solo.io.UserSession.RedisSession + 35, // 14: enterprise.gloo.solo.io.ExtAuthConfig.UserSessionConfig.cipher_config:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.UserSessionConfig.CipherConfig + 36, // 15: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.auth_endpoint_query_params:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.AuthEndpointQueryParamsEntry + 37, // 16: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.token_endpoint_query_params:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.TokenEndpointQueryParamsEntry + 66, // 17: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.session:type_name -> enterprise.gloo.solo.io.UserSession + 67, // 18: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.headers:type_name -> enterprise.gloo.solo.io.HeaderConfiguration + 68, // 19: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.discovery_override:type_name -> enterprise.gloo.solo.io.DiscoveryOverride + 69, // 20: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.discovery_poll_interval:type_name -> google.protobuf.Duration + 70, // 21: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.jwks_cache_refresh_policy:type_name -> enterprise.gloo.solo.io.JwksOnDemandCacheRefreshPolicy + 71, // 22: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.auto_map_from_metadata:type_name -> enterprise.gloo.solo.io.AutoMapFromMetadata + 72, // 23: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.end_session_properties:type_name -> enterprise.gloo.solo.io.EndSessionProperties + 13, // 24: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.user_session:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.UserSessionConfig + 38, // 25: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.pk_jwt_client_authentication_config:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.PkJwtClientAuthenticationConfig + 39, // 26: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.access_token:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.AccessToken + 40, // 27: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.identity_token:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.IdentityToken + 41, // 28: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.default:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.Default + 9, // 29: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.azure:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.Azure + 42, // 30: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.front_channel_logout:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.FrontChannelLogout + 43, // 31: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.dynamic_metadata_from_claims:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.DynamicMetadataFromClaimsEntry + 44, // 32: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.jwt:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.JwtValidation + 45, // 33: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.introspection:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.IntrospectionValidation + 69, // 34: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.cache_timeout:type_name -> google.protobuf.Duration + 46, // 35: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.required_scopes:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.ScopeList + 47, // 36: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.dynamic_metadata_from_claims:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.DynamicMetadataFromClaimsEntry + 10, // 37: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.claims_to_headers:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.ClaimToHeader + 48, // 38: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.default:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.Default + 9, // 39: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.azure:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.Azure + 51, // 40: enterprise.gloo.solo.io.ExtAuthConfig.PlainOAuth2Config.auth_endpoint_query_params:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.PlainOAuth2Config.AuthEndpointQueryParamsEntry + 66, // 41: enterprise.gloo.solo.io.ExtAuthConfig.PlainOAuth2Config.session:type_name -> enterprise.gloo.solo.io.UserSession + 52, // 42: enterprise.gloo.solo.io.ExtAuthConfig.PlainOAuth2Config.token_endpoint_query_params:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.PlainOAuth2Config.TokenEndpointQueryParamsEntry + 13, // 43: enterprise.gloo.solo.io.ExtAuthConfig.PlainOAuth2Config.user_session:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.UserSessionConfig + 14, // 44: enterprise.gloo.solo.io.ExtAuthConfig.OAuth2Config.oidc_authorization_code:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig + 15, // 45: enterprise.gloo.solo.io.ExtAuthConfig.OAuth2Config.access_token_validation_config:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig + 16, // 46: enterprise.gloo.solo.io.ExtAuthConfig.OAuth2Config.oauth2_config:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.PlainOAuth2Config + 54, // 47: enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.valid_api_keys:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.ValidApiKeysEntry + 55, // 48: enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.headers_from_key_metadata:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.HeadersFromKeyMetadataEntry + 73, // 49: enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.k8s_secret_apikey_storage:type_name -> enterprise.gloo.solo.io.K8sSecretApiKeyStorage + 74, // 50: enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.aerospike_apikey_storage:type_name -> enterprise.gloo.solo.io.AerospikeApiKeyStorage + 75, // 51: enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.server_default_apikey_storage:type_name -> enterprise.gloo.solo.io.ServerDefaultApiKeyStorage + 57, // 52: enterprise.gloo.solo.io.ExtAuthConfig.OpaAuthConfig.modules:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OpaAuthConfig.ModulesEntry + 76, // 53: enterprise.gloo.solo.io.ExtAuthConfig.OpaAuthConfig.options:type_name -> enterprise.gloo.solo.io.OpaAuthOptions + 76, // 54: enterprise.gloo.solo.io.ExtAuthConfig.OpaServerAuthConfig.options:type_name -> enterprise.gloo.solo.io.OpaAuthOptions + 77, // 55: enterprise.gloo.solo.io.ExtAuthConfig.LdapConfig.pool:type_name -> enterprise.gloo.solo.io.Ldap.ConnectionPool + 22, // 56: enterprise.gloo.solo.io.ExtAuthConfig.LdapConfig.group_lookup_settings:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.LdapServiceAccountConfig + 25, // 57: enterprise.gloo.solo.io.ExtAuthConfig.HmacAuthConfig.secret_list:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.InMemorySecretList + 78, // 58: enterprise.gloo.solo.io.ExtAuthConfig.HmacAuthConfig.parameters_in_headers:type_name -> enterprise.gloo.solo.io.HmacParametersInHeaders + 62, // 59: enterprise.gloo.solo.io.ExtAuthConfig.PortalAuthConfig.redis_options:type_name -> enterprise.gloo.solo.io.RedisOptions + 69, // 60: enterprise.gloo.solo.io.ExtAuthConfig.PortalAuthConfig.cache_duration:type_name -> google.protobuf.Duration + 69, // 61: enterprise.gloo.solo.io.ExtAuthConfig.PortalAuthConfig.request_timeout:type_name -> google.protobuf.Duration + 58, // 62: enterprise.gloo.solo.io.ExtAuthConfig.InMemorySecretList.secret_list:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.InMemorySecretList.SecretListEntry + 79, // 63: enterprise.gloo.solo.io.ExtAuthConfig.PassthroughAuthInternalConfig.pass_through_auth:type_name -> enterprise.gloo.solo.io.PassThroughAuth + 59, // 64: enterprise.gloo.solo.io.ExtAuthConfig.PassthroughAuthInternalConfig.tls_config_data:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.PassthroughAuthInternalConfig.PassthroughAuthTlsConfigData + 60, // 65: enterprise.gloo.solo.io.ExtAuthConfig.Config.name:type_name -> google.protobuf.StringValue + 12, // 66: enterprise.gloo.solo.io.ExtAuthConfig.Config.oauth:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OAuthConfig + 17, // 67: enterprise.gloo.solo.io.ExtAuthConfig.Config.oauth2:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OAuth2Config + 80, // 68: enterprise.gloo.solo.io.ExtAuthConfig.Config.basic_auth:type_name -> enterprise.gloo.solo.io.BasicAuth + 11, // 69: enterprise.gloo.solo.io.ExtAuthConfig.Config.basic_auth_internal:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.BasicAuthInternal + 18, // 70: enterprise.gloo.solo.io.ExtAuthConfig.Config.api_key_auth:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig + 81, // 71: enterprise.gloo.solo.io.ExtAuthConfig.Config.plugin_auth:type_name -> enterprise.gloo.solo.io.AuthPlugin + 19, // 72: enterprise.gloo.solo.io.ExtAuthConfig.Config.opa_auth:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OpaAuthConfig + 82, // 73: enterprise.gloo.solo.io.ExtAuthConfig.Config.ldap:type_name -> enterprise.gloo.solo.io.Ldap + 21, // 74: enterprise.gloo.solo.io.ExtAuthConfig.Config.ldap_internal:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.LdapConfig + 83, // 75: enterprise.gloo.solo.io.ExtAuthConfig.Config.jwt:type_name -> google.protobuf.Empty + 79, // 76: enterprise.gloo.solo.io.ExtAuthConfig.Config.pass_through_auth:type_name -> enterprise.gloo.solo.io.PassThroughAuth + 23, // 77: enterprise.gloo.solo.io.ExtAuthConfig.Config.hmac_auth:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.HmacAuthConfig + 20, // 78: enterprise.gloo.solo.io.ExtAuthConfig.Config.opa_server_auth:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.OpaServerAuthConfig + 24, // 79: enterprise.gloo.solo.io.ExtAuthConfig.Config.portal_auth:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.PortalAuthConfig + 26, // 80: enterprise.gloo.solo.io.ExtAuthConfig.Config.passthrough_internal:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.PassthroughAuthInternalConfig + 32, // 81: enterprise.gloo.solo.io.ExtAuthConfig.BasicAuthInternal.EncryptionType.apr:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.BasicAuthInternal.EncryptionType.Apr + 31, // 82: enterprise.gloo.solo.io.ExtAuthConfig.BasicAuthInternal.EncryptionType.sha1:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.BasicAuthInternal.EncryptionType.Sha1 + 33, // 83: enterprise.gloo.solo.io.ExtAuthConfig.BasicAuthInternal.UserList.users:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.BasicAuthInternal.UserList.UsersEntry + 29, // 84: enterprise.gloo.solo.io.ExtAuthConfig.BasicAuthInternal.UserList.UsersEntry.value:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.BasicAuthInternal.User + 69, // 85: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.PkJwtClientAuthenticationConfig.valid_for:type_name -> google.protobuf.Duration + 10, // 86: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.AccessToken.claims_to_headers:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.ClaimToHeader + 10, // 87: enterprise.gloo.solo.io.ExtAuthConfig.OidcAuthorizationCodeConfig.IdentityToken.claims_to_headers:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.ClaimToHeader + 49, // 88: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.JwtValidation.remote_jwks:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.JwtValidation.RemoteJwks + 50, // 89: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.JwtValidation.local_jwks:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.JwtValidation.LocalJwks + 69, // 90: enterprise.gloo.solo.io.ExtAuthConfig.AccessTokenValidationConfig.JwtValidation.RemoteJwks.refresh_interval:type_name -> google.protobuf.Duration + 56, // 91: enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.KeyMetadata.metadata:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.KeyMetadata.MetadataEntry + 53, // 92: enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.ValidApiKeysEntry.value:type_name -> enterprise.gloo.solo.io.ExtAuthConfig.ApiKeyAuthConfig.KeyMetadata + 84, // 93: enterprise.gloo.solo.io.ExtAuthConfig.PassthroughAuthInternalConfig.PassthroughAuthTlsConfigData.ssl_params:type_name -> enterprise.gloo.solo.io.SslParameters + 85, // 94: enterprise.gloo.solo.io.ExtAuthDiscoveryService.StreamExtAuthConfig:input_type -> envoy.api.v2.DiscoveryRequest + 86, // 95: enterprise.gloo.solo.io.ExtAuthDiscoveryService.DeltaExtAuthConfig:input_type -> envoy.api.v2.DeltaDiscoveryRequest + 85, // 96: enterprise.gloo.solo.io.ExtAuthDiscoveryService.FetchExtAuthConfig:input_type -> envoy.api.v2.DiscoveryRequest + 1, // 97: enterprise.gloo.solo.io.ApiKeyService.Create:input_type -> enterprise.gloo.solo.io.ApiKeyCreateRequest + 3, // 98: enterprise.gloo.solo.io.ApiKeyService.Read:input_type -> enterprise.gloo.solo.io.ApiKeyReadRequest + 5, // 99: enterprise.gloo.solo.io.ApiKeyService.Update:input_type -> enterprise.gloo.solo.io.ApiKeyUpdateRequest + 7, // 100: enterprise.gloo.solo.io.ApiKeyService.Delete:input_type -> enterprise.gloo.solo.io.ApiKeyDeleteRequest + 87, // 101: enterprise.gloo.solo.io.ExtAuthDiscoveryService.StreamExtAuthConfig:output_type -> envoy.api.v2.DiscoveryResponse + 88, // 102: enterprise.gloo.solo.io.ExtAuthDiscoveryService.DeltaExtAuthConfig:output_type -> envoy.api.v2.DeltaDiscoveryResponse + 87, // 103: enterprise.gloo.solo.io.ExtAuthDiscoveryService.FetchExtAuthConfig:output_type -> envoy.api.v2.DiscoveryResponse + 2, // 104: enterprise.gloo.solo.io.ApiKeyService.Create:output_type -> enterprise.gloo.solo.io.ApiKeyCreateResponse + 4, // 105: enterprise.gloo.solo.io.ApiKeyService.Read:output_type -> enterprise.gloo.solo.io.ApiKeyReadResponse + 6, // 106: enterprise.gloo.solo.io.ApiKeyService.Update:output_type -> enterprise.gloo.solo.io.ApiKeyUpdateResponse + 8, // 107: enterprise.gloo.solo.io.ApiKeyService.Delete:output_type -> enterprise.gloo.solo.io.ApiKeyDeleteResponse + 101, // [101:108] is the sub-list for method output_type + 94, // [94:101] is the sub-list for method input_type + 94, // [94:94] is the sub-list for extension type_name + 94, // [94:94] is the sub-list for extension extendee + 0, // [0:94] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_enterprise_gloo_v1_auth_config_proto_init() + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[11].OneofWrappers = []any{ + (*ExtAuthConfig_BasicAuthInternal_UserList_)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[13].OneofWrappers = []any{ + (*ExtAuthConfig_UserSessionConfig_Cookie)(nil), + (*ExtAuthConfig_UserSessionConfig_Redis)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[14].OneofWrappers = []any{ + (*ExtAuthConfig_OidcAuthorizationCodeConfig_Default_)(nil), + (*ExtAuthConfig_OidcAuthorizationCodeConfig_Azure)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[15].OneofWrappers = []any{ + (*ExtAuthConfig_AccessTokenValidationConfig_IntrospectionUrl)(nil), + (*ExtAuthConfig_AccessTokenValidationConfig_Jwt)(nil), + (*ExtAuthConfig_AccessTokenValidationConfig_Introspection)(nil), + (*ExtAuthConfig_AccessTokenValidationConfig_RequiredScopes)(nil), + (*ExtAuthConfig_AccessTokenValidationConfig_Default_)(nil), + (*ExtAuthConfig_AccessTokenValidationConfig_Azure)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[17].OneofWrappers = []any{ + (*ExtAuthConfig_OAuth2Config_OidcAuthorizationCode)(nil), + (*ExtAuthConfig_OAuth2Config_AccessTokenValidationConfig)(nil), + (*ExtAuthConfig_OAuth2Config_Oauth2Config)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[18].OneofWrappers = []any{ + (*ExtAuthConfig_ApiKeyAuthConfig_K8SSecretApikeyStorage)(nil), + (*ExtAuthConfig_ApiKeyAuthConfig_AerospikeApikeyStorage)(nil), + (*ExtAuthConfig_ApiKeyAuthConfig_ServerDefaultApikeyStorage)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[23].OneofWrappers = []any{ + (*ExtAuthConfig_HmacAuthConfig_SecretList)(nil), + (*ExtAuthConfig_HmacAuthConfig_ParametersInHeaders)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[27].OneofWrappers = []any{ + (*ExtAuthConfig_Config_Oauth)(nil), + (*ExtAuthConfig_Config_Oauth2)(nil), + (*ExtAuthConfig_Config_BasicAuth)(nil), + (*ExtAuthConfig_Config_BasicAuthInternal)(nil), + (*ExtAuthConfig_Config_ApiKeyAuth)(nil), + (*ExtAuthConfig_Config_PluginAuth)(nil), + (*ExtAuthConfig_Config_OpaAuth)(nil), + (*ExtAuthConfig_Config_Ldap)(nil), + (*ExtAuthConfig_Config_LdapInternal)(nil), + (*ExtAuthConfig_Config_Jwt)(nil), + (*ExtAuthConfig_Config_PassThroughAuth)(nil), + (*ExtAuthConfig_Config_HmacAuth)(nil), + (*ExtAuthConfig_Config_OpaServerAuth)(nil), + (*ExtAuthConfig_Config_PortalAuth)(nil), + (*ExtAuthConfig_Config_PassthroughInternal)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[28].OneofWrappers = []any{ + (*ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr_)(nil), + (*ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1_)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes[44].OneofWrappers = []any{ + (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks_)(nil), + (*ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks_)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_rawDesc)), + NumEnums: 0, + NumMessages: 60, + NumExtensions: 0, + NumServices: 2, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extauth_v1_extauth_internal_proto_depIdxs = nil +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConnInterface + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion6 + +// ExtAuthDiscoveryServiceClient is the client API for ExtAuthDiscoveryService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type ExtAuthDiscoveryServiceClient interface { + StreamExtAuthConfig(ctx context.Context, opts ...grpc.CallOption) (ExtAuthDiscoveryService_StreamExtAuthConfigClient, error) + DeltaExtAuthConfig(ctx context.Context, opts ...grpc.CallOption) (ExtAuthDiscoveryService_DeltaExtAuthConfigClient, error) + FetchExtAuthConfig(ctx context.Context, in *v2.DiscoveryRequest, opts ...grpc.CallOption) (*v2.DiscoveryResponse, error) +} + +type extAuthDiscoveryServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewExtAuthDiscoveryServiceClient(cc grpc.ClientConnInterface) ExtAuthDiscoveryServiceClient { + return &extAuthDiscoveryServiceClient{cc} +} + +func (c *extAuthDiscoveryServiceClient) StreamExtAuthConfig(ctx context.Context, opts ...grpc.CallOption) (ExtAuthDiscoveryService_StreamExtAuthConfigClient, error) { + stream, err := c.cc.NewStream(ctx, &_ExtAuthDiscoveryService_serviceDesc.Streams[0], "/enterprise.gloo.solo.io.ExtAuthDiscoveryService/StreamExtAuthConfig", opts...) + if err != nil { + return nil, err + } + x := &extAuthDiscoveryServiceStreamExtAuthConfigClient{stream} + return x, nil +} + +type ExtAuthDiscoveryService_StreamExtAuthConfigClient interface { + Send(*v2.DiscoveryRequest) error + Recv() (*v2.DiscoveryResponse, error) + grpc.ClientStream +} + +type extAuthDiscoveryServiceStreamExtAuthConfigClient struct { + grpc.ClientStream +} + +func (x *extAuthDiscoveryServiceStreamExtAuthConfigClient) Send(m *v2.DiscoveryRequest) error { + return x.ClientStream.SendMsg(m) +} + +func (x *extAuthDiscoveryServiceStreamExtAuthConfigClient) Recv() (*v2.DiscoveryResponse, error) { + m := new(v2.DiscoveryResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *extAuthDiscoveryServiceClient) DeltaExtAuthConfig(ctx context.Context, opts ...grpc.CallOption) (ExtAuthDiscoveryService_DeltaExtAuthConfigClient, error) { + stream, err := c.cc.NewStream(ctx, &_ExtAuthDiscoveryService_serviceDesc.Streams[1], "/enterprise.gloo.solo.io.ExtAuthDiscoveryService/DeltaExtAuthConfig", opts...) + if err != nil { + return nil, err + } + x := &extAuthDiscoveryServiceDeltaExtAuthConfigClient{stream} + return x, nil +} + +type ExtAuthDiscoveryService_DeltaExtAuthConfigClient interface { + Send(*v2.DeltaDiscoveryRequest) error + Recv() (*v2.DeltaDiscoveryResponse, error) + grpc.ClientStream +} + +type extAuthDiscoveryServiceDeltaExtAuthConfigClient struct { + grpc.ClientStream +} + +func (x *extAuthDiscoveryServiceDeltaExtAuthConfigClient) Send(m *v2.DeltaDiscoveryRequest) error { + return x.ClientStream.SendMsg(m) +} + +func (x *extAuthDiscoveryServiceDeltaExtAuthConfigClient) Recv() (*v2.DeltaDiscoveryResponse, error) { + m := new(v2.DeltaDiscoveryResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *extAuthDiscoveryServiceClient) FetchExtAuthConfig(ctx context.Context, in *v2.DiscoveryRequest, opts ...grpc.CallOption) (*v2.DiscoveryResponse, error) { + out := new(v2.DiscoveryResponse) + err := c.cc.Invoke(ctx, "/enterprise.gloo.solo.io.ExtAuthDiscoveryService/FetchExtAuthConfig", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ExtAuthDiscoveryServiceServer is the server API for ExtAuthDiscoveryService service. +type ExtAuthDiscoveryServiceServer interface { + StreamExtAuthConfig(ExtAuthDiscoveryService_StreamExtAuthConfigServer) error + DeltaExtAuthConfig(ExtAuthDiscoveryService_DeltaExtAuthConfigServer) error + FetchExtAuthConfig(context.Context, *v2.DiscoveryRequest) (*v2.DiscoveryResponse, error) +} + +// UnimplementedExtAuthDiscoveryServiceServer can be embedded to have forward compatible implementations. +type UnimplementedExtAuthDiscoveryServiceServer struct { +} + +func (*UnimplementedExtAuthDiscoveryServiceServer) StreamExtAuthConfig(ExtAuthDiscoveryService_StreamExtAuthConfigServer) error { + return status.Errorf(codes.Unimplemented, "method StreamExtAuthConfig not implemented") +} +func (*UnimplementedExtAuthDiscoveryServiceServer) DeltaExtAuthConfig(ExtAuthDiscoveryService_DeltaExtAuthConfigServer) error { + return status.Errorf(codes.Unimplemented, "method DeltaExtAuthConfig not implemented") +} +func (*UnimplementedExtAuthDiscoveryServiceServer) FetchExtAuthConfig(context.Context, *v2.DiscoveryRequest) (*v2.DiscoveryResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method FetchExtAuthConfig not implemented") +} + +func RegisterExtAuthDiscoveryServiceServer(s *grpc.Server, srv ExtAuthDiscoveryServiceServer) { + s.RegisterService(&_ExtAuthDiscoveryService_serviceDesc, srv) +} + +func _ExtAuthDiscoveryService_StreamExtAuthConfig_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(ExtAuthDiscoveryServiceServer).StreamExtAuthConfig(&extAuthDiscoveryServiceStreamExtAuthConfigServer{stream}) +} + +type ExtAuthDiscoveryService_StreamExtAuthConfigServer interface { + Send(*v2.DiscoveryResponse) error + Recv() (*v2.DiscoveryRequest, error) + grpc.ServerStream +} + +type extAuthDiscoveryServiceStreamExtAuthConfigServer struct { + grpc.ServerStream +} + +func (x *extAuthDiscoveryServiceStreamExtAuthConfigServer) Send(m *v2.DiscoveryResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *extAuthDiscoveryServiceStreamExtAuthConfigServer) Recv() (*v2.DiscoveryRequest, error) { + m := new(v2.DiscoveryRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func _ExtAuthDiscoveryService_DeltaExtAuthConfig_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(ExtAuthDiscoveryServiceServer).DeltaExtAuthConfig(&extAuthDiscoveryServiceDeltaExtAuthConfigServer{stream}) +} + +type ExtAuthDiscoveryService_DeltaExtAuthConfigServer interface { + Send(*v2.DeltaDiscoveryResponse) error + Recv() (*v2.DeltaDiscoveryRequest, error) + grpc.ServerStream +} + +type extAuthDiscoveryServiceDeltaExtAuthConfigServer struct { + grpc.ServerStream +} + +func (x *extAuthDiscoveryServiceDeltaExtAuthConfigServer) Send(m *v2.DeltaDiscoveryResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *extAuthDiscoveryServiceDeltaExtAuthConfigServer) Recv() (*v2.DeltaDiscoveryRequest, error) { + m := new(v2.DeltaDiscoveryRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func _ExtAuthDiscoveryService_FetchExtAuthConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(v2.DiscoveryRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ExtAuthDiscoveryServiceServer).FetchExtAuthConfig(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/enterprise.gloo.solo.io.ExtAuthDiscoveryService/FetchExtAuthConfig", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ExtAuthDiscoveryServiceServer).FetchExtAuthConfig(ctx, req.(*v2.DiscoveryRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _ExtAuthDiscoveryService_serviceDesc = grpc.ServiceDesc{ + ServiceName: "enterprise.gloo.solo.io.ExtAuthDiscoveryService", + HandlerType: (*ExtAuthDiscoveryServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "FetchExtAuthConfig", + Handler: _ExtAuthDiscoveryService_FetchExtAuthConfig_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "StreamExtAuthConfig", + Handler: _ExtAuthDiscoveryService_StreamExtAuthConfig_Handler, + ServerStreams: true, + ClientStreams: true, + }, + { + StreamName: "DeltaExtAuthConfig", + Handler: _ExtAuthDiscoveryService_DeltaExtAuthConfig_Handler, + ServerStreams: true, + ClientStreams: true, + }, + }, + Metadata: "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto", +} + +// ApiKeyServiceClient is the client API for ApiKeyService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type ApiKeyServiceClient interface { + Create(ctx context.Context, in *ApiKeyCreateRequest, opts ...grpc.CallOption) (*ApiKeyCreateResponse, error) + Read(ctx context.Context, in *ApiKeyReadRequest, opts ...grpc.CallOption) (*ApiKeyReadResponse, error) + Update(ctx context.Context, in *ApiKeyUpdateRequest, opts ...grpc.CallOption) (*ApiKeyUpdateResponse, error) + Delete(ctx context.Context, in *ApiKeyDeleteRequest, opts ...grpc.CallOption) (*ApiKeyDeleteResponse, error) +} + +type apiKeyServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewApiKeyServiceClient(cc grpc.ClientConnInterface) ApiKeyServiceClient { + return &apiKeyServiceClient{cc} +} + +func (c *apiKeyServiceClient) Create(ctx context.Context, in *ApiKeyCreateRequest, opts ...grpc.CallOption) (*ApiKeyCreateResponse, error) { + out := new(ApiKeyCreateResponse) + err := c.cc.Invoke(ctx, "/enterprise.gloo.solo.io.ApiKeyService/Create", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *apiKeyServiceClient) Read(ctx context.Context, in *ApiKeyReadRequest, opts ...grpc.CallOption) (*ApiKeyReadResponse, error) { + out := new(ApiKeyReadResponse) + err := c.cc.Invoke(ctx, "/enterprise.gloo.solo.io.ApiKeyService/Read", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *apiKeyServiceClient) Update(ctx context.Context, in *ApiKeyUpdateRequest, opts ...grpc.CallOption) (*ApiKeyUpdateResponse, error) { + out := new(ApiKeyUpdateResponse) + err := c.cc.Invoke(ctx, "/enterprise.gloo.solo.io.ApiKeyService/Update", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *apiKeyServiceClient) Delete(ctx context.Context, in *ApiKeyDeleteRequest, opts ...grpc.CallOption) (*ApiKeyDeleteResponse, error) { + out := new(ApiKeyDeleteResponse) + err := c.cc.Invoke(ctx, "/enterprise.gloo.solo.io.ApiKeyService/Delete", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ApiKeyServiceServer is the server API for ApiKeyService service. +type ApiKeyServiceServer interface { + Create(context.Context, *ApiKeyCreateRequest) (*ApiKeyCreateResponse, error) + Read(context.Context, *ApiKeyReadRequest) (*ApiKeyReadResponse, error) + Update(context.Context, *ApiKeyUpdateRequest) (*ApiKeyUpdateResponse, error) + Delete(context.Context, *ApiKeyDeleteRequest) (*ApiKeyDeleteResponse, error) +} + +// UnimplementedApiKeyServiceServer can be embedded to have forward compatible implementations. +type UnimplementedApiKeyServiceServer struct { +} + +func (*UnimplementedApiKeyServiceServer) Create(context.Context, *ApiKeyCreateRequest) (*ApiKeyCreateResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") +} +func (*UnimplementedApiKeyServiceServer) Read(context.Context, *ApiKeyReadRequest) (*ApiKeyReadResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Read not implemented") +} +func (*UnimplementedApiKeyServiceServer) Update(context.Context, *ApiKeyUpdateRequest) (*ApiKeyUpdateResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") +} +func (*UnimplementedApiKeyServiceServer) Delete(context.Context, *ApiKeyDeleteRequest) (*ApiKeyDeleteResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} + +func RegisterApiKeyServiceServer(s *grpc.Server, srv ApiKeyServiceServer) { + s.RegisterService(&_ApiKeyService_serviceDesc, srv) +} + +func _ApiKeyService_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ApiKeyCreateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApiKeyServiceServer).Create(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/enterprise.gloo.solo.io.ApiKeyService/Create", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApiKeyServiceServer).Create(ctx, req.(*ApiKeyCreateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApiKeyService_Read_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ApiKeyReadRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApiKeyServiceServer).Read(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/enterprise.gloo.solo.io.ApiKeyService/Read", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApiKeyServiceServer).Read(ctx, req.(*ApiKeyReadRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApiKeyService_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ApiKeyUpdateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApiKeyServiceServer).Update(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/enterprise.gloo.solo.io.ApiKeyService/Update", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApiKeyServiceServer).Update(ctx, req.(*ApiKeyUpdateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApiKeyService_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ApiKeyDeleteRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApiKeyServiceServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/enterprise.gloo.solo.io.ApiKeyService/Delete", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApiKeyServiceServer).Delete(ctx, req.(*ApiKeyDeleteRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _ApiKeyService_serviceDesc = grpc.ServiceDesc{ + ServiceName: "enterprise.gloo.solo.io.ApiKeyService", + HandlerType: (*ApiKeyServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Create", + Handler: _ApiKeyService_Create_Handler, + }, + { + MethodName: "Read", + Handler: _ApiKeyService_Read_Handler, + }, + { + MethodName: "Update", + Handler: _ApiKeyService_Update_Handler, + }, + { + MethodName: "Delete", + Handler: _ApiKeyService_Delete_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto", +} diff --git a/pkg/api/enterprise.gloo.solo.io/v1/extauth-internal.pb.hash.go b/pkg/api/enterprise.gloo.solo.io/v1/extauth-internal.pb.hash.go new file mode 100644 index 000000000..9fa2a6956 --- /dev/null +++ b/pkg/api/enterprise.gloo.solo.io/v1/extauth-internal.pb.hash.go @@ -0,0 +1,3409 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetAuthConfigRefName())); err != nil { + return 0, err + } + + for _, v := range m.GetConfigs() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetBooleanExpr()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BooleanExpr")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBooleanExpr(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BooleanExpr")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetFailOnRedirect()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ApiKeyCreateRequest) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyCreateRequest")); err != nil { + return 0, err + } + + for _, v := range m.GetApiKeys() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + for _, v := range m.GetRawApiKeys() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ApiKeyCreateResponse) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyCreateResponse")); err != nil { + return 0, err + } + + for _, v := range m.GetApiKeys() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ApiKeyReadRequest) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyReadRequest")); err != nil { + return 0, err + } + + for _, v := range m.GetRawApiKeys() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + for _, v := range m.GetLabels() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ApiKeyReadResponse) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyReadResponse")); err != nil { + return 0, err + } + + for _, v := range m.GetApiKeys() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ApiKeyUpdateRequest) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyUpdateRequest")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetUpsert()) + if err != nil { + return 0, err + } + + for _, v := range m.GetApiKeys() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + for _, v := range m.GetRawApiKeys() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ApiKeyUpdateResponse) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyUpdateResponse")); err != nil { + return 0, err + } + + for _, v := range m.GetApiKeys() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ApiKeyDeleteRequest) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyDeleteRequest")); err != nil { + return 0, err + } + + for _, v := range m.GetRawApiKeys() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + for _, v := range m.GetLabels() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ApiKeyDeleteResponse) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyDeleteResponse")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_Azure) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_Azure")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetClientId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetTenantId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetClientSecret())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetClaimsCachingOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClaimsCachingOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetClaimsCachingOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ClaimsCachingOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_ClaimToHeader) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_ClaimToHeader")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetClaim())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetHeader())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetAppend()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_BasicAuthInternal) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_BasicAuthInternal")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetRealm())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetEncryption()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Encryption")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEncryption(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Encryption")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.UserSource.(type) { + + case *ExtAuthConfig_BasicAuthInternal_UserList_: + + if h, ok := interface{}(m.GetUserList()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UserList")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUserList(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UserList")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_OAuthConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OAuthConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetClientId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetClientSecret())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetIssuerUrl())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetAuthEndpointQueryParams() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte(m.GetAppUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetCallbackPath())); err != nil { + return 0, err + } + + for _, v := range m.GetScopes() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_UserSessionConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_UserSessionConfig")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetFailOnFetchFailure()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCookieOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CookieOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCookieOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CookieOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCipherConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CipherConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCipherConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CipherConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.Session.(type) { + + case *ExtAuthConfig_UserSessionConfig_Cookie: + + if h, ok := interface{}(m.GetCookie()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cookie")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCookie(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Cookie")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_UserSessionConfig_Redis: + + if h, ok := interface{}(m.GetRedis()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Redis")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRedis(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Redis")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OidcAuthorizationCodeConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetClientId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetClientSecret())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetIssuerUrl())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetAuthEndpointQueryParams() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetTokenEndpointQueryParams() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte(m.GetAppUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetCallbackPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetLogoutPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetAfterLogoutUrl())); err != nil { + return 0, err + } + + for _, v := range m.GetScopes() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetSession()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Session")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSession(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Session")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDiscoveryOverride()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DiscoveryOverride")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDiscoveryOverride(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DiscoveryOverride")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDiscoveryPollInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DiscoveryPollInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDiscoveryPollInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DiscoveryPollInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetJwksCacheRefreshPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("JwksCacheRefreshPolicy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJwksCacheRefreshPolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("JwksCacheRefreshPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetSessionIdHeaderName())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetParseCallbackPathAsRegex()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAutoMapFromMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AutoMapFromMetadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAutoMapFromMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AutoMapFromMetadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEndSessionProperties()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EndSessionProperties")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEndSessionProperties(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EndSessionProperties")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetUserSession()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UserSession")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUserSession(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UserSession")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPkJwtClientAuthenticationConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PkJwtClientAuthenticationConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPkJwtClientAuthenticationConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PkJwtClientAuthenticationConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAccessToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AccessToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAccessToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AccessToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetIdentityToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IdentityToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIdentityToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IdentityToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFrontChannelLogout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FrontChannelLogout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFrontChannelLogout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FrontChannelLogout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetDynamicMetadataFromClaims() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + switch m.Provider.(type) { + + case *ExtAuthConfig_OidcAuthorizationCodeConfig_Default_: + + if h, ok := interface{}(m.GetDefault()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Default")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDefault(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Default")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_OidcAuthorizationCodeConfig_Azure: + + if h, ok := interface{}(m.GetAzure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAzure(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_AccessTokenValidationConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_AccessTokenValidationConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetUserinfoUrl())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCacheTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CacheTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCacheTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CacheTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetDynamicMetadataFromClaims() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + for _, v := range m.GetClaimsToHeaders() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.ValidationType.(type) { + + case *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionUrl: + + if _, err = hasher.Write([]byte(m.GetIntrospectionUrl())); err != nil { + return 0, err + } + + case *ExtAuthConfig_AccessTokenValidationConfig_Jwt: + + if h, ok := interface{}(m.GetJwt()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJwt(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_AccessTokenValidationConfig_Introspection: + + if h, ok := interface{}(m.GetIntrospection()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Introspection")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIntrospection(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Introspection")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.ScopeValidation.(type) { + + case *ExtAuthConfig_AccessTokenValidationConfig_RequiredScopes: + + if h, ok := interface{}(m.GetRequiredScopes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequiredScopes")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequiredScopes(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequiredScopes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.Provider.(type) { + + case *ExtAuthConfig_AccessTokenValidationConfig_Default_: + + if h, ok := interface{}(m.GetDefault()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Default")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDefault(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Default")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_AccessTokenValidationConfig_Azure: + + if h, ok := interface{}(m.GetAzure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAzure(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_PlainOAuth2Config) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_PlainOAuth2Config")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetClientId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetClientSecret())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetAuthEndpointQueryParams() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte(m.GetAppUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetCallbackPath())); err != nil { + return 0, err + } + + for _, v := range m.GetScopes() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetSession()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Session")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSession(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Session")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetLogoutPath())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetTokenEndpointQueryParams() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte(m.GetAfterLogoutUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetAuthEndpoint())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetTokenEndpoint())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetRevocationEndpoint())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetUserSession()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UserSession")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUserSession(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UserSession")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_OAuth2Config) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OAuth2Config")); err != nil { + return 0, err + } + + switch m.OauthType.(type) { + + case *ExtAuthConfig_OAuth2Config_OidcAuthorizationCode: + + if h, ok := interface{}(m.GetOidcAuthorizationCode()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OidcAuthorizationCode")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOidcAuthorizationCode(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OidcAuthorizationCode")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_OAuth2Config_AccessTokenValidationConfig: + + if h, ok := interface{}(m.GetAccessTokenValidationConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AccessTokenValidationConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAccessTokenValidationConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AccessTokenValidationConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_OAuth2Config_Oauth2Config: + + if h, ok := interface{}(m.GetOauth2Config()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Oauth2Config")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOauth2Config(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Oauth2Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_ApiKeyAuthConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_ApiKeyAuthConfig")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetValidApiKeys() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte(m.GetHeaderName())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetHeadersFromKeyMetadata() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetSkipMetadataValidation()) + if err != nil { + return 0, err + } + + switch m.StorageBackend.(type) { + + case *ExtAuthConfig_ApiKeyAuthConfig_K8SSecretApikeyStorage: + + if h, ok := interface{}(m.GetK8SSecretApikeyStorage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("K8SSecretApikeyStorage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetK8SSecretApikeyStorage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("K8SSecretApikeyStorage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_ApiKeyAuthConfig_AerospikeApikeyStorage: + + if h, ok := interface{}(m.GetAerospikeApikeyStorage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AerospikeApikeyStorage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAerospikeApikeyStorage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AerospikeApikeyStorage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_ApiKeyAuthConfig_ServerDefaultApikeyStorage: + + if h, ok := interface{}(m.GetServerDefaultApikeyStorage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServerDefaultApikeyStorage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetServerDefaultApikeyStorage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ServerDefaultApikeyStorage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_OpaAuthConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OpaAuthConfig")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetModules() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte(m.GetQuery())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_OpaServerAuthConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OpaServerAuthConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetPackage())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetRuleName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetServerAddr())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_LdapConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_LdapConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetAddress())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetUserDnTemplate())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetMembershipAttributeName())); err != nil { + return 0, err + } + + for _, v := range m.GetAllowedGroups() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetPool()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Pool")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPool(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Pool")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetSearchFilter())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetDisableGroupChecking()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetGroupLookupSettings()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GroupLookupSettings")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGroupLookupSettings(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GroupLookupSettings")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_LdapServiceAccountConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_LdapServiceAccountConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetUsername())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetPassword())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetCheckGroupsWithServiceAccount()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_HmacAuthConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_HmacAuthConfig")); err != nil { + return 0, err + } + + switch m.SecretStorage.(type) { + + case *ExtAuthConfig_HmacAuthConfig_SecretList: + + if h, ok := interface{}(m.GetSecretList()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretList")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSecretList(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SecretList")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.ImplementationType.(type) { + + case *ExtAuthConfig_HmacAuthConfig_ParametersInHeaders: + + if h, ok := interface{}(m.GetParametersInHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ParametersInHeaders")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetParametersInHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ParametersInHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_PortalAuthConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_PortalAuthConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetApiKeyHeader())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRedisOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RedisOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRedisOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RedisOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCacheDuration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CacheDuration")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCacheDuration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CacheDuration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRequestTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_InMemorySecretList) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_InMemorySecretList")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSecretList() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_PassthroughAuthInternalConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_PassthroughAuthInternalConfig")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPassThroughAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PassThroughAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPassThroughAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PassThroughAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTlsConfigData()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TlsConfigData")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTlsConfigData(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TlsConfigData")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_Config) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_Config")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetName()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetName(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.AuthConfig.(type) { + + case *ExtAuthConfig_Config_Oauth: + + if h, ok := interface{}(m.GetOauth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Oauth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOauth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Oauth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_Oauth2: + + if h, ok := interface{}(m.GetOauth2()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Oauth2")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOauth2(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Oauth2")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_BasicAuth: + + if h, ok := interface{}(m.GetBasicAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BasicAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBasicAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BasicAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_BasicAuthInternal: + + if h, ok := interface{}(m.GetBasicAuthInternal()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BasicAuthInternal")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBasicAuthInternal(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BasicAuthInternal")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_ApiKeyAuth: + + if h, ok := interface{}(m.GetApiKeyAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ApiKeyAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetApiKeyAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ApiKeyAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_PluginAuth: + + if h, ok := interface{}(m.GetPluginAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PluginAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPluginAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PluginAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_OpaAuth: + + if h, ok := interface{}(m.GetOpaAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OpaAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOpaAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OpaAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_Ldap: + + if h, ok := interface{}(m.GetLdap()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ldap")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLdap(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Ldap")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_LdapInternal: + + if h, ok := interface{}(m.GetLdapInternal()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LdapInternal")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLdapInternal(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LdapInternal")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_Jwt: + + if h, ok := interface{}(m.GetJwt()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJwt(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_PassThroughAuth: + + if h, ok := interface{}(m.GetPassThroughAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PassThroughAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPassThroughAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PassThroughAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_HmacAuth: + + if h, ok := interface{}(m.GetHmacAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HmacAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHmacAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HmacAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_OpaServerAuth: + + if h, ok := interface{}(m.GetOpaServerAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OpaServerAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOpaServerAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OpaServerAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_PortalAuth: + + if h, ok := interface{}(m.GetPortalAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PortalAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPortalAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PortalAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_PassthroughInternal: + + if h, ok := interface{}(m.GetPassthroughInternal()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PassthroughInternal")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPassthroughInternal(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PassthroughInternal")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_BasicAuthInternal_EncryptionType) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_BasicAuthInternal_EncryptionType")); err != nil { + return 0, err + } + + switch m.Algorithm.(type) { + + case *ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr_: + + if h, ok := interface{}(m.GetApr()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Apr")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetApr(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Apr")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1_: + + if h, ok := interface{}(m.GetSha1()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Sha1")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSha1(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Sha1")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_BasicAuthInternal_User) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_BasicAuthInternal_User")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetSalt())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetHashedPassword())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_BasicAuthInternal_UserList) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_BasicAuthInternal_UserList")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetUsers() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_UserSessionConfig_CipherConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_UserSessionConfig_CipherConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetSigningKey())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetValidFor()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ValidFor")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValidFor(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ValidFor")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken")); err != nil { + return 0, err + } + + for _, v := range m.GetClaimsToHeaders() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken")); err != nil { + return 0, err + } + + for _, v := range m.GetClaimsToHeaders() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig_Default) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OidcAuthorizationCodeConfig_Default")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetPath())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_AccessTokenValidationConfig_JwtValidation")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetIssuer())); err != nil { + return 0, err + } + + switch m.JwksSourceSpecifier.(type) { + + case *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks_: + + if h, ok := interface{}(m.GetRemoteJwks()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RemoteJwks")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRemoteJwks(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RemoteJwks")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks_: + + if h, ok := interface{}(m.GetLocalJwks()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LocalJwks")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLocalJwks(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LocalJwks")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetIntrospectionUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetClientId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetClientSecret())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetUserIdAttributeName())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_AccessTokenValidationConfig_ScopeList) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_AccessTokenValidationConfig_ScopeList")); err != nil { + return 0, err + } + + for _, v := range m.GetScope() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_AccessTokenValidationConfig_Default) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_AccessTokenValidationConfig_Default")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetUrl())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRefreshInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RefreshInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRefreshInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RefreshInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetInlineString())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetUsername())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetMetadata() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetCertPem())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetKeyPem())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetRootCaPem())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSslParams()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslParams")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslParams(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslParams")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/enterprise.gloo.solo.io/v1/extauth-internal.pb.uniquehash.go b/pkg/api/enterprise.gloo.solo.io/v1/extauth-internal.pb.uniquehash.go new file mode 100644 index 000000000..c1281aa60 --- /dev/null +++ b/pkg/api/enterprise.gloo.solo.io/v1/extauth-internal.pb.uniquehash.go @@ -0,0 +1,3793 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extauth/v1/extauth-internal.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AuthConfigRefName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAuthConfigRefName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Configs")); err != nil { + return 0, err + } + for i, v := range m.GetConfigs() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetBooleanExpr()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BooleanExpr")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBooleanExpr(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BooleanExpr")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("FailOnRedirect")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetFailOnRedirect()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ApiKeyCreateRequest) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyCreateRequest")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ApiKeys")); err != nil { + return 0, err + } + for i, v := range m.GetApiKeys() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("RawApiKeys")); err != nil { + return 0, err + } + for i, v := range m.GetRawApiKeys() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ApiKeyCreateResponse) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyCreateResponse")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ApiKeys")); err != nil { + return 0, err + } + for i, v := range m.GetApiKeys() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ApiKeyReadRequest) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyReadRequest")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RawApiKeys")); err != nil { + return 0, err + } + for i, v := range m.GetRawApiKeys() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("Labels")); err != nil { + return 0, err + } + for i, v := range m.GetLabels() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ApiKeyReadResponse) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyReadResponse")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ApiKeys")); err != nil { + return 0, err + } + for i, v := range m.GetApiKeys() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ApiKeyUpdateRequest) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyUpdateRequest")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Upsert")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetUpsert()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ApiKeys")); err != nil { + return 0, err + } + for i, v := range m.GetApiKeys() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("RawApiKeys")); err != nil { + return 0, err + } + for i, v := range m.GetRawApiKeys() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ApiKeyUpdateResponse) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyUpdateResponse")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ApiKeys")); err != nil { + return 0, err + } + for i, v := range m.GetApiKeys() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ApiKeyDeleteRequest) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyDeleteRequest")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RawApiKeys")); err != nil { + return 0, err + } + for i, v := range m.GetRawApiKeys() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("Labels")); err != nil { + return 0, err + } + for i, v := range m.GetLabels() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ApiKeyDeleteResponse) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ApiKeyDeleteResponse")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_Azure) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_Azure")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClientId")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClientId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TenantId")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTenantId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClientSecret")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClientSecret())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetClaimsCachingOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClaimsCachingOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetClaimsCachingOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ClaimsCachingOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_ClaimToHeader) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_ClaimToHeader")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Claim")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClaim())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHeader())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Append")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAppend()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_BasicAuthInternal) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_BasicAuthInternal")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Realm")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRealm())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetEncryption()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Encryption")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEncryption(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Encryption")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.UserSource.(type) { + + case *ExtAuthConfig_BasicAuthInternal_UserList_: + + if h, ok := interface{}(m.GetUserList()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UserList")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUserList(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UserList")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_OAuthConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OAuthConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClientId")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClientId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClientSecret")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClientSecret())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("IssuerUrl")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetIssuerUrl())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetAuthEndpointQueryParams() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("AppUrl")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAppUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CallbackPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCallbackPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Scopes")); err != nil { + return 0, err + } + for i, v := range m.GetScopes() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_UserSessionConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_UserSessionConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("FailOnFetchFailure")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetFailOnFetchFailure()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCookieOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CookieOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCookieOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CookieOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCipherConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CipherConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCipherConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CipherConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.Session.(type) { + + case *ExtAuthConfig_UserSessionConfig_Cookie: + + if h, ok := interface{}(m.GetCookie()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cookie")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCookie(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Cookie")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_UserSessionConfig_Redis: + + if h, ok := interface{}(m.GetRedis()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Redis")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRedis(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Redis")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OidcAuthorizationCodeConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClientId")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClientId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClientSecret")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClientSecret())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("IssuerUrl")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetIssuerUrl())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetAuthEndpointQueryParams() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetTokenEndpointQueryParams() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("AppUrl")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAppUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CallbackPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCallbackPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("LogoutPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetLogoutPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AfterLogoutUrl")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAfterLogoutUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Scopes")); err != nil { + return 0, err + } + for i, v := range m.GetScopes() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetSession()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Session")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSession(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Session")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDiscoveryOverride()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DiscoveryOverride")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDiscoveryOverride(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DiscoveryOverride")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDiscoveryPollInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DiscoveryPollInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDiscoveryPollInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DiscoveryPollInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetJwksCacheRefreshPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("JwksCacheRefreshPolicy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJwksCacheRefreshPolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("JwksCacheRefreshPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("SessionIdHeaderName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSessionIdHeaderName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ParseCallbackPathAsRegex")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetParseCallbackPathAsRegex()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAutoMapFromMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AutoMapFromMetadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAutoMapFromMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AutoMapFromMetadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEndSessionProperties()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EndSessionProperties")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEndSessionProperties(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EndSessionProperties")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetUserSession()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UserSession")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUserSession(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UserSession")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPkJwtClientAuthenticationConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PkJwtClientAuthenticationConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPkJwtClientAuthenticationConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PkJwtClientAuthenticationConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAccessToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AccessToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAccessToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AccessToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetIdentityToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IdentityToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIdentityToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IdentityToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFrontChannelLogout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FrontChannelLogout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFrontChannelLogout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FrontChannelLogout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetDynamicMetadataFromClaims() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + switch m.Provider.(type) { + + case *ExtAuthConfig_OidcAuthorizationCodeConfig_Default_: + + if h, ok := interface{}(m.GetDefault()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Default")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDefault(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Default")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_OidcAuthorizationCodeConfig_Azure: + + if h, ok := interface{}(m.GetAzure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAzure(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_AccessTokenValidationConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_AccessTokenValidationConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("UserinfoUrl")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUserinfoUrl())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCacheTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CacheTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCacheTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CacheTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetDynamicMetadataFromClaims() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("ClaimsToHeaders")); err != nil { + return 0, err + } + for i, v := range m.GetClaimsToHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.ValidationType.(type) { + + case *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionUrl: + + if _, err = hasher.Write([]byte("IntrospectionUrl")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetIntrospectionUrl())); err != nil { + return 0, err + } + + case *ExtAuthConfig_AccessTokenValidationConfig_Jwt: + + if h, ok := interface{}(m.GetJwt()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJwt(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_AccessTokenValidationConfig_Introspection: + + if h, ok := interface{}(m.GetIntrospection()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Introspection")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIntrospection(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Introspection")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.ScopeValidation.(type) { + + case *ExtAuthConfig_AccessTokenValidationConfig_RequiredScopes: + + if h, ok := interface{}(m.GetRequiredScopes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequiredScopes")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequiredScopes(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequiredScopes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.Provider.(type) { + + case *ExtAuthConfig_AccessTokenValidationConfig_Default_: + + if h, ok := interface{}(m.GetDefault()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Default")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDefault(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Default")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_AccessTokenValidationConfig_Azure: + + if h, ok := interface{}(m.GetAzure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAzure(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_PlainOAuth2Config) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_PlainOAuth2Config")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClientId")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClientId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClientSecret")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClientSecret())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetAuthEndpointQueryParams() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("AppUrl")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAppUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CallbackPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCallbackPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Scopes")); err != nil { + return 0, err + } + for i, v := range m.GetScopes() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetSession()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Session")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSession(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Session")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("LogoutPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetLogoutPath())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetTokenEndpointQueryParams() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("AfterLogoutUrl")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAfterLogoutUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AuthEndpoint")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAuthEndpoint())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TokenEndpoint")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTokenEndpoint())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RevocationEndpoint")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRevocationEndpoint())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetUserSession()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UserSession")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUserSession(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UserSession")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_OAuth2Config) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OAuth2Config")); err != nil { + return 0, err + } + + switch m.OauthType.(type) { + + case *ExtAuthConfig_OAuth2Config_OidcAuthorizationCode: + + if h, ok := interface{}(m.GetOidcAuthorizationCode()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OidcAuthorizationCode")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOidcAuthorizationCode(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OidcAuthorizationCode")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_OAuth2Config_AccessTokenValidationConfig: + + if h, ok := interface{}(m.GetAccessTokenValidationConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AccessTokenValidationConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAccessTokenValidationConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AccessTokenValidationConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_OAuth2Config_Oauth2Config: + + if h, ok := interface{}(m.GetOauth2Config()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Oauth2Config")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOauth2Config(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Oauth2Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_ApiKeyAuthConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_ApiKeyAuthConfig")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetValidApiKeys() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("HeaderName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHeaderName())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetHeadersFromKeyMetadata() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("SkipMetadataValidation")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetSkipMetadataValidation()) + if err != nil { + return 0, err + } + + switch m.StorageBackend.(type) { + + case *ExtAuthConfig_ApiKeyAuthConfig_K8SSecretApikeyStorage: + + if h, ok := interface{}(m.GetK8SSecretApikeyStorage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("K8SSecretApikeyStorage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetK8SSecretApikeyStorage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("K8SSecretApikeyStorage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_ApiKeyAuthConfig_AerospikeApikeyStorage: + + if h, ok := interface{}(m.GetAerospikeApikeyStorage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AerospikeApikeyStorage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAerospikeApikeyStorage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AerospikeApikeyStorage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_ApiKeyAuthConfig_ServerDefaultApikeyStorage: + + if h, ok := interface{}(m.GetServerDefaultApikeyStorage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServerDefaultApikeyStorage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetServerDefaultApikeyStorage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ServerDefaultApikeyStorage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_OpaAuthConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OpaAuthConfig")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetModules() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("Query")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetQuery())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_OpaServerAuthConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OpaServerAuthConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Package")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPackage())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RuleName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRuleName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ServerAddr")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetServerAddr())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_LdapConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_LdapConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Address")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAddress())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("UserDnTemplate")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUserDnTemplate())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MembershipAttributeName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetMembershipAttributeName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AllowedGroups")); err != nil { + return 0, err + } + for i, v := range m.GetAllowedGroups() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetPool()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Pool")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPool(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Pool")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("SearchFilter")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSearchFilter())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DisableGroupChecking")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDisableGroupChecking()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetGroupLookupSettings()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GroupLookupSettings")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGroupLookupSettings(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GroupLookupSettings")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_LdapServiceAccountConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_LdapServiceAccountConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Username")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUsername())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Password")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPassword())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CheckGroupsWithServiceAccount")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetCheckGroupsWithServiceAccount()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_HmacAuthConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_HmacAuthConfig")); err != nil { + return 0, err + } + + switch m.SecretStorage.(type) { + + case *ExtAuthConfig_HmacAuthConfig_SecretList: + + if h, ok := interface{}(m.GetSecretList()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretList")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSecretList(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SecretList")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.ImplementationType.(type) { + + case *ExtAuthConfig_HmacAuthConfig_ParametersInHeaders: + + if h, ok := interface{}(m.GetParametersInHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ParametersInHeaders")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetParametersInHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ParametersInHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_PortalAuthConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_PortalAuthConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Url")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ApiKeyHeader")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetApiKeyHeader())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRedisOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RedisOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRedisOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RedisOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCacheDuration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CacheDuration")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCacheDuration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CacheDuration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRequestTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_InMemorySecretList) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_InMemorySecretList")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSecretList() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_PassthroughAuthInternalConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_PassthroughAuthInternalConfig")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPassThroughAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PassThroughAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPassThroughAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PassThroughAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTlsConfigData()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TlsConfigData")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTlsConfigData(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TlsConfigData")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_Config) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_Config")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetName()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetName(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.AuthConfig.(type) { + + case *ExtAuthConfig_Config_Oauth: + + if h, ok := interface{}(m.GetOauth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Oauth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOauth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Oauth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_Oauth2: + + if h, ok := interface{}(m.GetOauth2()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Oauth2")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOauth2(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Oauth2")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_BasicAuth: + + if h, ok := interface{}(m.GetBasicAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BasicAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBasicAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BasicAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_BasicAuthInternal: + + if h, ok := interface{}(m.GetBasicAuthInternal()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BasicAuthInternal")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBasicAuthInternal(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BasicAuthInternal")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_ApiKeyAuth: + + if h, ok := interface{}(m.GetApiKeyAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ApiKeyAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetApiKeyAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ApiKeyAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_PluginAuth: + + if h, ok := interface{}(m.GetPluginAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PluginAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPluginAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PluginAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_OpaAuth: + + if h, ok := interface{}(m.GetOpaAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OpaAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOpaAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OpaAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_Ldap: + + if h, ok := interface{}(m.GetLdap()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ldap")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLdap(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Ldap")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_LdapInternal: + + if h, ok := interface{}(m.GetLdapInternal()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LdapInternal")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLdapInternal(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LdapInternal")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_Jwt: + + if h, ok := interface{}(m.GetJwt()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJwt(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_PassThroughAuth: + + if h, ok := interface{}(m.GetPassThroughAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PassThroughAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPassThroughAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PassThroughAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_HmacAuth: + + if h, ok := interface{}(m.GetHmacAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HmacAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHmacAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HmacAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_OpaServerAuth: + + if h, ok := interface{}(m.GetOpaServerAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OpaServerAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOpaServerAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OpaServerAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_PortalAuth: + + if h, ok := interface{}(m.GetPortalAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PortalAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPortalAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PortalAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_Config_PassthroughInternal: + + if h, ok := interface{}(m.GetPassthroughInternal()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PassthroughInternal")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPassthroughInternal(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PassthroughInternal")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_BasicAuthInternal_EncryptionType) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_BasicAuthInternal_EncryptionType")); err != nil { + return 0, err + } + + switch m.Algorithm.(type) { + + case *ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr_: + + if h, ok := interface{}(m.GetApr()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Apr")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetApr(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Apr")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1_: + + if h, ok := interface{}(m.GetSha1()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Sha1")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSha1(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Sha1")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_BasicAuthInternal_User) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_BasicAuthInternal_User")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Salt")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSalt())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("HashedPassword")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHashedPassword())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_BasicAuthInternal_UserList) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_BasicAuthInternal_UserList")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetUsers() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_BasicAuthInternal_EncryptionType_Sha1")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_BasicAuthInternal_EncryptionType_Apr")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_UserSessionConfig_CipherConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_UserSessionConfig_CipherConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OidcAuthorizationCodeConfig_PkJwtClientAuthenticationConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SigningKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSigningKey())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetValidFor()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ValidFor")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValidFor(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ValidFor")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OidcAuthorizationCodeConfig_AccessToken")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClaimsToHeaders")); err != nil { + return 0, err + } + for i, v := range m.GetClaimsToHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OidcAuthorizationCodeConfig_IdentityToken")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClaimsToHeaders")); err != nil { + return 0, err + } + for i, v := range m.GetClaimsToHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig_Default) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OidcAuthorizationCodeConfig_Default")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_OidcAuthorizationCodeConfig_FrontChannelLogout")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPath())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_AccessTokenValidationConfig_JwtValidation")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Issuer")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetIssuer())); err != nil { + return 0, err + } + + switch m.JwksSourceSpecifier.(type) { + + case *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks_: + + if h, ok := interface{}(m.GetRemoteJwks()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RemoteJwks")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRemoteJwks(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RemoteJwks")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks_: + + if h, ok := interface{}(m.GetLocalJwks()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LocalJwks")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLocalJwks(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LocalJwks")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_AccessTokenValidationConfig_IntrospectionValidation")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("IntrospectionUrl")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetIntrospectionUrl())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClientId")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClientId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClientSecret")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClientSecret())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("UserIdAttributeName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUserIdAttributeName())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_AccessTokenValidationConfig_ScopeList) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_AccessTokenValidationConfig_ScopeList")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Scope")); err != nil { + return 0, err + } + for i, v := range m.GetScope() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_AccessTokenValidationConfig_Default) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_AccessTokenValidationConfig_Default")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_RemoteJwks")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Url")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUrl())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRefreshInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RefreshInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRefreshInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RefreshInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_AccessTokenValidationConfig_JwtValidation_LocalJwks")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("InlineString")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetInlineString())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_ApiKeyAuthConfig_KeyMetadata")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Username")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUsername())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetMetadata() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1.ExtAuthConfig_PassthroughAuthInternalConfig_PassthroughAuthTlsConfigData")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CertPem")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCertPem())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("KeyPem")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKeyPem())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RootCaPem")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRootCaPem())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSslParams()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslParams")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslParams(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslParams")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/enterprise.gloo.solo.io/v1/json.gen.go b/pkg/api/enterprise.gloo.solo.io/v1/gloo_json.gen.go similarity index 69% rename from pkg/api/enterprise.gloo.solo.io/v1/json.gen.go rename to pkg/api/enterprise.gloo.solo.io/v1/gloo_json.gen.go index 7625ebe2d..6858bdf93 100644 --- a/pkg/api/enterprise.gloo.solo.io/v1/json.gen.go +++ b/pkg/api/enterprise.gloo.solo.io/v1/gloo_json.gen.go @@ -20,8 +20,10 @@ var _ = fmt.Errorf var _ = math.Inf var ( - marshaller = &skv2jsonpb.Marshaler{} - unmarshaller = &jsonpb.Unmarshaler{} + marshaller = &skv2jsonpb.Marshaler{EnumsAsInts: true} + unmarshaller = &jsonpb.Unmarshaler{ + AllowUnknownFields: true, + } ) // MarshalJSON is a custom marshaler for AuthConfigSpec @@ -43,5 +45,17 @@ func (this *AuthConfigStatus) MarshalJSON() ([]byte, error) { // UnmarshalJSON is a custom unmarshaler for AuthConfigStatus func (this *AuthConfigStatus) UnmarshalJSON(b []byte) error { - return unmarshaller.Unmarshal(bytes.NewReader(b), this) + namespacedStatuses := AuthConfigNamespacedStatuses{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), &namespacedStatuses); err != nil { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) + } + + for _, status := range namespacedStatuses.GetStatuses() { + // take the first status + if status != nil { + status.DeepCopyInto(this) + return nil + } + } + return nil } diff --git a/pkg/api/enterprise.gloo.solo.io/v1/mocks/clients.go b/pkg/api/enterprise.gloo.solo.io/v1/mocks/clients.go index e76d80f00..8b248f721 100644 --- a/pkg/api/enterprise.gloo.solo.io/v1/mocks/clients.go +++ b/pkg/api/enterprise.gloo.solo.io/v1/mocks/clients.go @@ -13,30 +13,30 @@ import ( client "sigs.k8s.io/controller-runtime/pkg/client" ) -// MockMulticlusterClientset is a mock of MulticlusterClientset interface +// MockMulticlusterClientset is a mock of MulticlusterClientset interface. type MockMulticlusterClientset struct { ctrl *gomock.Controller recorder *MockMulticlusterClientsetMockRecorder } -// MockMulticlusterClientsetMockRecorder is the mock recorder for MockMulticlusterClientset +// MockMulticlusterClientsetMockRecorder is the mock recorder for MockMulticlusterClientset. type MockMulticlusterClientsetMockRecorder struct { mock *MockMulticlusterClientset } -// NewMockMulticlusterClientset creates a new mock instance +// NewMockMulticlusterClientset creates a new mock instance. func NewMockMulticlusterClientset(ctrl *gomock.Controller) *MockMulticlusterClientset { mock := &MockMulticlusterClientset{ctrl: ctrl} mock.recorder = &MockMulticlusterClientsetMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterClientset) EXPECT() *MockMulticlusterClientsetMockRecorder { return m.recorder } -// Cluster mocks base method +// Cluster mocks base method. func (m *MockMulticlusterClientset) Cluster(cluster string) (v1.Clientset, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Cluster", cluster) @@ -45,36 +45,36 @@ func (m *MockMulticlusterClientset) Cluster(cluster string) (v1.Clientset, error return ret0, ret1 } -// Cluster indicates an expected call of Cluster +// Cluster indicates an expected call of Cluster. func (mr *MockMulticlusterClientsetMockRecorder) Cluster(cluster interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterClientset)(nil).Cluster), cluster) } -// MockClientset is a mock of Clientset interface +// MockClientset is a mock of Clientset interface. type MockClientset struct { ctrl *gomock.Controller recorder *MockClientsetMockRecorder } -// MockClientsetMockRecorder is the mock recorder for MockClientset +// MockClientsetMockRecorder is the mock recorder for MockClientset. type MockClientsetMockRecorder struct { mock *MockClientset } -// NewMockClientset creates a new mock instance +// NewMockClientset creates a new mock instance. func NewMockClientset(ctrl *gomock.Controller) *MockClientset { mock := &MockClientset{ctrl: ctrl} mock.recorder = &MockClientsetMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockClientset) EXPECT() *MockClientsetMockRecorder { return m.recorder } -// AuthConfigs mocks base method +// AuthConfigs mocks base method. func (m *MockClientset) AuthConfigs() v1.AuthConfigClient { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "AuthConfigs") @@ -82,36 +82,36 @@ func (m *MockClientset) AuthConfigs() v1.AuthConfigClient { return ret0 } -// AuthConfigs indicates an expected call of AuthConfigs +// AuthConfigs indicates an expected call of AuthConfigs. func (mr *MockClientsetMockRecorder) AuthConfigs() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AuthConfigs", reflect.TypeOf((*MockClientset)(nil).AuthConfigs)) } -// MockAuthConfigReader is a mock of AuthConfigReader interface +// MockAuthConfigReader is a mock of AuthConfigReader interface. type MockAuthConfigReader struct { ctrl *gomock.Controller recorder *MockAuthConfigReaderMockRecorder } -// MockAuthConfigReaderMockRecorder is the mock recorder for MockAuthConfigReader +// MockAuthConfigReaderMockRecorder is the mock recorder for MockAuthConfigReader. type MockAuthConfigReaderMockRecorder struct { mock *MockAuthConfigReader } -// NewMockAuthConfigReader creates a new mock instance +// NewMockAuthConfigReader creates a new mock instance. func NewMockAuthConfigReader(ctrl *gomock.Controller) *MockAuthConfigReader { mock := &MockAuthConfigReader{ctrl: ctrl} mock.recorder = &MockAuthConfigReaderMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockAuthConfigReader) EXPECT() *MockAuthConfigReaderMockRecorder { return m.recorder } -// GetAuthConfig mocks base method +// GetAuthConfig mocks base method. func (m *MockAuthConfigReader) GetAuthConfig(ctx context.Context, key client.ObjectKey) (*v1.AuthConfig, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetAuthConfig", ctx, key) @@ -120,13 +120,13 @@ func (m *MockAuthConfigReader) GetAuthConfig(ctx context.Context, key client.Obj return ret0, ret1 } -// GetAuthConfig indicates an expected call of GetAuthConfig +// GetAuthConfig indicates an expected call of GetAuthConfig. func (mr *MockAuthConfigReaderMockRecorder) GetAuthConfig(ctx, key interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAuthConfig", reflect.TypeOf((*MockAuthConfigReader)(nil).GetAuthConfig), ctx, key) } -// ListAuthConfig mocks base method +// ListAuthConfig mocks base method. func (m *MockAuthConfigReader) ListAuthConfig(ctx context.Context, opts ...client.ListOption) (*v1.AuthConfigList, error) { m.ctrl.T.Helper() varargs := []interface{}{ctx} @@ -139,37 +139,37 @@ func (m *MockAuthConfigReader) ListAuthConfig(ctx context.Context, opts ...clien return ret0, ret1 } -// ListAuthConfig indicates an expected call of ListAuthConfig +// ListAuthConfig indicates an expected call of ListAuthConfig. func (mr *MockAuthConfigReaderMockRecorder) ListAuthConfig(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListAuthConfig", reflect.TypeOf((*MockAuthConfigReader)(nil).ListAuthConfig), varargs...) } -// MockAuthConfigWriter is a mock of AuthConfigWriter interface +// MockAuthConfigWriter is a mock of AuthConfigWriter interface. type MockAuthConfigWriter struct { ctrl *gomock.Controller recorder *MockAuthConfigWriterMockRecorder } -// MockAuthConfigWriterMockRecorder is the mock recorder for MockAuthConfigWriter +// MockAuthConfigWriterMockRecorder is the mock recorder for MockAuthConfigWriter. type MockAuthConfigWriterMockRecorder struct { mock *MockAuthConfigWriter } -// NewMockAuthConfigWriter creates a new mock instance +// NewMockAuthConfigWriter creates a new mock instance. func NewMockAuthConfigWriter(ctrl *gomock.Controller) *MockAuthConfigWriter { mock := &MockAuthConfigWriter{ctrl: ctrl} mock.recorder = &MockAuthConfigWriterMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockAuthConfigWriter) EXPECT() *MockAuthConfigWriterMockRecorder { return m.recorder } -// CreateAuthConfig mocks base method +// CreateAuthConfig mocks base method. func (m *MockAuthConfigWriter) CreateAuthConfig(ctx context.Context, obj *v1.AuthConfig, opts ...client.CreateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} @@ -181,52 +181,52 @@ func (m *MockAuthConfigWriter) CreateAuthConfig(ctx context.Context, obj *v1.Aut return ret0 } -// CreateAuthConfig indicates an expected call of CreateAuthConfig +// CreateAuthConfig indicates an expected call of CreateAuthConfig. func (mr *MockAuthConfigWriterMockRecorder) CreateAuthConfig(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateAuthConfig", reflect.TypeOf((*MockAuthConfigWriter)(nil).CreateAuthConfig), varargs...) } -// DeleteAuthConfig mocks base method -func (m *MockAuthConfigWriter) DeleteAuthConfig(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { +// DeleteAllOfAuthConfig mocks base method. +func (m *MockAuthConfigWriter) DeleteAllOfAuthConfig(ctx context.Context, opts ...client.DeleteAllOfOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, key} + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteAuthConfig", varargs...) + ret := m.ctrl.Call(m, "DeleteAllOfAuthConfig", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteAuthConfig indicates an expected call of DeleteAuthConfig -func (mr *MockAuthConfigWriterMockRecorder) DeleteAuthConfig(ctx, key interface{}, opts ...interface{}) *gomock.Call { +// DeleteAllOfAuthConfig indicates an expected call of DeleteAllOfAuthConfig. +func (mr *MockAuthConfigWriterMockRecorder) DeleteAllOfAuthConfig(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, key}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAuthConfig", reflect.TypeOf((*MockAuthConfigWriter)(nil).DeleteAuthConfig), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfAuthConfig", reflect.TypeOf((*MockAuthConfigWriter)(nil).DeleteAllOfAuthConfig), varargs...) } -// UpdateAuthConfig mocks base method -func (m *MockAuthConfigWriter) UpdateAuthConfig(ctx context.Context, obj *v1.AuthConfig, opts ...client.UpdateOption) error { +// DeleteAuthConfig mocks base method. +func (m *MockAuthConfigWriter) DeleteAuthConfig(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx, key} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateAuthConfig", varargs...) + ret := m.ctrl.Call(m, "DeleteAuthConfig", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateAuthConfig indicates an expected call of UpdateAuthConfig -func (mr *MockAuthConfigWriterMockRecorder) UpdateAuthConfig(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// DeleteAuthConfig indicates an expected call of DeleteAuthConfig. +func (mr *MockAuthConfigWriterMockRecorder) DeleteAuthConfig(ctx, key interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateAuthConfig", reflect.TypeOf((*MockAuthConfigWriter)(nil).UpdateAuthConfig), varargs...) + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAuthConfig", reflect.TypeOf((*MockAuthConfigWriter)(nil).DeleteAuthConfig), varargs...) } -// PatchAuthConfig mocks base method +// PatchAuthConfig mocks base method. func (m *MockAuthConfigWriter) PatchAuthConfig(ctx context.Context, obj *v1.AuthConfig, patch client.Patch, opts ...client.PatchOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj, patch} @@ -238,33 +238,33 @@ func (m *MockAuthConfigWriter) PatchAuthConfig(ctx context.Context, obj *v1.Auth return ret0 } -// PatchAuthConfig indicates an expected call of PatchAuthConfig +// PatchAuthConfig indicates an expected call of PatchAuthConfig. func (mr *MockAuthConfigWriterMockRecorder) PatchAuthConfig(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj, patch}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchAuthConfig", reflect.TypeOf((*MockAuthConfigWriter)(nil).PatchAuthConfig), varargs...) } -// DeleteAllOfAuthConfig mocks base method -func (m *MockAuthConfigWriter) DeleteAllOfAuthConfig(ctx context.Context, opts ...client.DeleteAllOfOption) error { +// UpdateAuthConfig mocks base method. +func (m *MockAuthConfigWriter) UpdateAuthConfig(ctx context.Context, obj *v1.AuthConfig, opts ...client.UpdateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteAllOfAuthConfig", varargs...) + ret := m.ctrl.Call(m, "UpdateAuthConfig", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteAllOfAuthConfig indicates an expected call of DeleteAllOfAuthConfig -func (mr *MockAuthConfigWriterMockRecorder) DeleteAllOfAuthConfig(ctx interface{}, opts ...interface{}) *gomock.Call { +// UpdateAuthConfig indicates an expected call of UpdateAuthConfig. +func (mr *MockAuthConfigWriterMockRecorder) UpdateAuthConfig(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfAuthConfig", reflect.TypeOf((*MockAuthConfigWriter)(nil).DeleteAllOfAuthConfig), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateAuthConfig", reflect.TypeOf((*MockAuthConfigWriter)(nil).UpdateAuthConfig), varargs...) } -// UpsertAuthConfig mocks base method +// UpsertAuthConfig mocks base method. func (m *MockAuthConfigWriter) UpsertAuthConfig(ctx context.Context, obj *v1.AuthConfig, transitionFuncs ...v1.AuthConfigTransitionFunction) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} @@ -276,152 +276,136 @@ func (m *MockAuthConfigWriter) UpsertAuthConfig(ctx context.Context, obj *v1.Aut return ret0 } -// UpsertAuthConfig indicates an expected call of UpsertAuthConfig +// UpsertAuthConfig indicates an expected call of UpsertAuthConfig. func (mr *MockAuthConfigWriterMockRecorder) UpsertAuthConfig(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, transitionFuncs...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertAuthConfig", reflect.TypeOf((*MockAuthConfigWriter)(nil).UpsertAuthConfig), varargs...) } -// MockAuthConfigStatusWriter is a mock of AuthConfigStatusWriter interface +// MockAuthConfigStatusWriter is a mock of AuthConfigStatusWriter interface. type MockAuthConfigStatusWriter struct { ctrl *gomock.Controller recorder *MockAuthConfigStatusWriterMockRecorder } -// MockAuthConfigStatusWriterMockRecorder is the mock recorder for MockAuthConfigStatusWriter +// MockAuthConfigStatusWriterMockRecorder is the mock recorder for MockAuthConfigStatusWriter. type MockAuthConfigStatusWriterMockRecorder struct { mock *MockAuthConfigStatusWriter } -// NewMockAuthConfigStatusWriter creates a new mock instance +// NewMockAuthConfigStatusWriter creates a new mock instance. func NewMockAuthConfigStatusWriter(ctrl *gomock.Controller) *MockAuthConfigStatusWriter { mock := &MockAuthConfigStatusWriter{ctrl: ctrl} mock.recorder = &MockAuthConfigStatusWriterMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockAuthConfigStatusWriter) EXPECT() *MockAuthConfigStatusWriterMockRecorder { return m.recorder } -// UpdateAuthConfigStatus mocks base method -func (m *MockAuthConfigStatusWriter) UpdateAuthConfigStatus(ctx context.Context, obj *v1.AuthConfig, opts ...client.UpdateOption) error { +// PatchAuthConfigStatus mocks base method. +func (m *MockAuthConfigStatusWriter) PatchAuthConfigStatus(ctx context.Context, obj *v1.AuthConfig, patch client.Patch, opts ...client.SubResourcePatchOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateAuthConfigStatus", varargs...) + ret := m.ctrl.Call(m, "PatchAuthConfigStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateAuthConfigStatus indicates an expected call of UpdateAuthConfigStatus -func (mr *MockAuthConfigStatusWriterMockRecorder) UpdateAuthConfigStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// PatchAuthConfigStatus indicates an expected call of PatchAuthConfigStatus. +func (mr *MockAuthConfigStatusWriterMockRecorder) PatchAuthConfigStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateAuthConfigStatus", reflect.TypeOf((*MockAuthConfigStatusWriter)(nil).UpdateAuthConfigStatus), varargs...) + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchAuthConfigStatus", reflect.TypeOf((*MockAuthConfigStatusWriter)(nil).PatchAuthConfigStatus), varargs...) } -// PatchAuthConfigStatus mocks base method -func (m *MockAuthConfigStatusWriter) PatchAuthConfigStatus(ctx context.Context, obj *v1.AuthConfig, patch client.Patch, opts ...client.PatchOption) error { +// UpdateAuthConfigStatus mocks base method. +func (m *MockAuthConfigStatusWriter) UpdateAuthConfigStatus(ctx context.Context, obj *v1.AuthConfig, opts ...client.SubResourceUpdateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj, patch} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchAuthConfigStatus", varargs...) + ret := m.ctrl.Call(m, "UpdateAuthConfigStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchAuthConfigStatus indicates an expected call of PatchAuthConfigStatus -func (mr *MockAuthConfigStatusWriterMockRecorder) PatchAuthConfigStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// UpdateAuthConfigStatus indicates an expected call of UpdateAuthConfigStatus. +func (mr *MockAuthConfigStatusWriterMockRecorder) UpdateAuthConfigStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchAuthConfigStatus", reflect.TypeOf((*MockAuthConfigStatusWriter)(nil).PatchAuthConfigStatus), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateAuthConfigStatus", reflect.TypeOf((*MockAuthConfigStatusWriter)(nil).UpdateAuthConfigStatus), varargs...) } -// MockAuthConfigClient is a mock of AuthConfigClient interface +// MockAuthConfigClient is a mock of AuthConfigClient interface. type MockAuthConfigClient struct { ctrl *gomock.Controller recorder *MockAuthConfigClientMockRecorder } -// MockAuthConfigClientMockRecorder is the mock recorder for MockAuthConfigClient +// MockAuthConfigClientMockRecorder is the mock recorder for MockAuthConfigClient. type MockAuthConfigClientMockRecorder struct { mock *MockAuthConfigClient } -// NewMockAuthConfigClient creates a new mock instance +// NewMockAuthConfigClient creates a new mock instance. func NewMockAuthConfigClient(ctrl *gomock.Controller) *MockAuthConfigClient { mock := &MockAuthConfigClient{ctrl: ctrl} mock.recorder = &MockAuthConfigClientMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockAuthConfigClient) EXPECT() *MockAuthConfigClientMockRecorder { return m.recorder } -// GetAuthConfig mocks base method -func (m *MockAuthConfigClient) GetAuthConfig(ctx context.Context, key client.ObjectKey) (*v1.AuthConfig, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetAuthConfig", ctx, key) - ret0, _ := ret[0].(*v1.AuthConfig) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetAuthConfig indicates an expected call of GetAuthConfig -func (mr *MockAuthConfigClientMockRecorder) GetAuthConfig(ctx, key interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAuthConfig", reflect.TypeOf((*MockAuthConfigClient)(nil).GetAuthConfig), ctx, key) -} - -// ListAuthConfig mocks base method -func (m *MockAuthConfigClient) ListAuthConfig(ctx context.Context, opts ...client.ListOption) (*v1.AuthConfigList, error) { +// CreateAuthConfig mocks base method. +func (m *MockAuthConfigClient) CreateAuthConfig(ctx context.Context, obj *v1.AuthConfig, opts ...client.CreateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "ListAuthConfig", varargs...) - ret0, _ := ret[0].(*v1.AuthConfigList) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "CreateAuthConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 } -// ListAuthConfig indicates an expected call of ListAuthConfig -func (mr *MockAuthConfigClientMockRecorder) ListAuthConfig(ctx interface{}, opts ...interface{}) *gomock.Call { +// CreateAuthConfig indicates an expected call of CreateAuthConfig. +func (mr *MockAuthConfigClientMockRecorder) CreateAuthConfig(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListAuthConfig", reflect.TypeOf((*MockAuthConfigClient)(nil).ListAuthConfig), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateAuthConfig", reflect.TypeOf((*MockAuthConfigClient)(nil).CreateAuthConfig), varargs...) } -// CreateAuthConfig mocks base method -func (m *MockAuthConfigClient) CreateAuthConfig(ctx context.Context, obj *v1.AuthConfig, opts ...client.CreateOption) error { +// DeleteAllOfAuthConfig mocks base method. +func (m *MockAuthConfigClient) DeleteAllOfAuthConfig(ctx context.Context, opts ...client.DeleteAllOfOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "CreateAuthConfig", varargs...) + ret := m.ctrl.Call(m, "DeleteAllOfAuthConfig", varargs...) ret0, _ := ret[0].(error) return ret0 } -// CreateAuthConfig indicates an expected call of CreateAuthConfig -func (mr *MockAuthConfigClientMockRecorder) CreateAuthConfig(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// DeleteAllOfAuthConfig indicates an expected call of DeleteAllOfAuthConfig. +func (mr *MockAuthConfigClientMockRecorder) DeleteAllOfAuthConfig(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateAuthConfig", reflect.TypeOf((*MockAuthConfigClient)(nil).CreateAuthConfig), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfAuthConfig", reflect.TypeOf((*MockAuthConfigClient)(nil).DeleteAllOfAuthConfig), varargs...) } -// DeleteAuthConfig mocks base method +// DeleteAuthConfig mocks base method. func (m *MockAuthConfigClient) DeleteAuthConfig(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, key} @@ -433,33 +417,49 @@ func (m *MockAuthConfigClient) DeleteAuthConfig(ctx context.Context, key client. return ret0 } -// DeleteAuthConfig indicates an expected call of DeleteAuthConfig +// DeleteAuthConfig indicates an expected call of DeleteAuthConfig. func (mr *MockAuthConfigClientMockRecorder) DeleteAuthConfig(ctx, key interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, key}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAuthConfig", reflect.TypeOf((*MockAuthConfigClient)(nil).DeleteAuthConfig), varargs...) } -// UpdateAuthConfig mocks base method -func (m *MockAuthConfigClient) UpdateAuthConfig(ctx context.Context, obj *v1.AuthConfig, opts ...client.UpdateOption) error { +// GetAuthConfig mocks base method. +func (m *MockAuthConfigClient) GetAuthConfig(ctx context.Context, key client.ObjectKey) (*v1.AuthConfig, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + ret := m.ctrl.Call(m, "GetAuthConfig", ctx, key) + ret0, _ := ret[0].(*v1.AuthConfig) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetAuthConfig indicates an expected call of GetAuthConfig. +func (mr *MockAuthConfigClientMockRecorder) GetAuthConfig(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAuthConfig", reflect.TypeOf((*MockAuthConfigClient)(nil).GetAuthConfig), ctx, key) +} + +// ListAuthConfig mocks base method. +func (m *MockAuthConfigClient) ListAuthConfig(ctx context.Context, opts ...client.ListOption) (*v1.AuthConfigList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateAuthConfig", varargs...) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "ListAuthConfig", varargs...) + ret0, _ := ret[0].(*v1.AuthConfigList) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// UpdateAuthConfig indicates an expected call of UpdateAuthConfig -func (mr *MockAuthConfigClientMockRecorder) UpdateAuthConfig(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// ListAuthConfig indicates an expected call of ListAuthConfig. +func (mr *MockAuthConfigClientMockRecorder) ListAuthConfig(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateAuthConfig", reflect.TypeOf((*MockAuthConfigClient)(nil).UpdateAuthConfig), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListAuthConfig", reflect.TypeOf((*MockAuthConfigClient)(nil).ListAuthConfig), varargs...) } -// PatchAuthConfig mocks base method +// PatchAuthConfig mocks base method. func (m *MockAuthConfigClient) PatchAuthConfig(ctx context.Context, obj *v1.AuthConfig, patch client.Patch, opts ...client.PatchOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj, patch} @@ -471,53 +471,53 @@ func (m *MockAuthConfigClient) PatchAuthConfig(ctx context.Context, obj *v1.Auth return ret0 } -// PatchAuthConfig indicates an expected call of PatchAuthConfig +// PatchAuthConfig indicates an expected call of PatchAuthConfig. func (mr *MockAuthConfigClientMockRecorder) PatchAuthConfig(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj, patch}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchAuthConfig", reflect.TypeOf((*MockAuthConfigClient)(nil).PatchAuthConfig), varargs...) } -// DeleteAllOfAuthConfig mocks base method -func (m *MockAuthConfigClient) DeleteAllOfAuthConfig(ctx context.Context, opts ...client.DeleteAllOfOption) error { +// PatchAuthConfigStatus mocks base method. +func (m *MockAuthConfigClient) PatchAuthConfigStatus(ctx context.Context, obj *v1.AuthConfig, patch client.Patch, opts ...client.SubResourcePatchOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteAllOfAuthConfig", varargs...) + ret := m.ctrl.Call(m, "PatchAuthConfigStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteAllOfAuthConfig indicates an expected call of DeleteAllOfAuthConfig -func (mr *MockAuthConfigClientMockRecorder) DeleteAllOfAuthConfig(ctx interface{}, opts ...interface{}) *gomock.Call { +// PatchAuthConfigStatus indicates an expected call of PatchAuthConfigStatus. +func (mr *MockAuthConfigClientMockRecorder) PatchAuthConfigStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfAuthConfig", reflect.TypeOf((*MockAuthConfigClient)(nil).DeleteAllOfAuthConfig), varargs...) + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchAuthConfigStatus", reflect.TypeOf((*MockAuthConfigClient)(nil).PatchAuthConfigStatus), varargs...) } -// UpsertAuthConfig mocks base method -func (m *MockAuthConfigClient) UpsertAuthConfig(ctx context.Context, obj *v1.AuthConfig, transitionFuncs ...v1.AuthConfigTransitionFunction) error { +// UpdateAuthConfig mocks base method. +func (m *MockAuthConfigClient) UpdateAuthConfig(ctx context.Context, obj *v1.AuthConfig, opts ...client.UpdateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} - for _, a := range transitionFuncs { + for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpsertAuthConfig", varargs...) + ret := m.ctrl.Call(m, "UpdateAuthConfig", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpsertAuthConfig indicates an expected call of UpsertAuthConfig -func (mr *MockAuthConfigClientMockRecorder) UpsertAuthConfig(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { +// UpdateAuthConfig indicates an expected call of UpdateAuthConfig. +func (mr *MockAuthConfigClientMockRecorder) UpdateAuthConfig(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, transitionFuncs...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertAuthConfig", reflect.TypeOf((*MockAuthConfigClient)(nil).UpsertAuthConfig), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateAuthConfig", reflect.TypeOf((*MockAuthConfigClient)(nil).UpdateAuthConfig), varargs...) } -// UpdateAuthConfigStatus mocks base method -func (m *MockAuthConfigClient) UpdateAuthConfigStatus(ctx context.Context, obj *v1.AuthConfig, opts ...client.UpdateOption) error { +// UpdateAuthConfigStatus mocks base method. +func (m *MockAuthConfigClient) UpdateAuthConfigStatus(ctx context.Context, obj *v1.AuthConfig, opts ...client.SubResourceUpdateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} for _, a := range opts { @@ -528,56 +528,56 @@ func (m *MockAuthConfigClient) UpdateAuthConfigStatus(ctx context.Context, obj * return ret0 } -// UpdateAuthConfigStatus indicates an expected call of UpdateAuthConfigStatus +// UpdateAuthConfigStatus indicates an expected call of UpdateAuthConfigStatus. func (mr *MockAuthConfigClientMockRecorder) UpdateAuthConfigStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateAuthConfigStatus", reflect.TypeOf((*MockAuthConfigClient)(nil).UpdateAuthConfigStatus), varargs...) } -// PatchAuthConfigStatus mocks base method -func (m *MockAuthConfigClient) PatchAuthConfigStatus(ctx context.Context, obj *v1.AuthConfig, patch client.Patch, opts ...client.PatchOption) error { +// UpsertAuthConfig mocks base method. +func (m *MockAuthConfigClient) UpsertAuthConfig(ctx context.Context, obj *v1.AuthConfig, transitionFuncs ...v1.AuthConfigTransitionFunction) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj, patch} - for _, a := range opts { + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchAuthConfigStatus", varargs...) + ret := m.ctrl.Call(m, "UpsertAuthConfig", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchAuthConfigStatus indicates an expected call of PatchAuthConfigStatus -func (mr *MockAuthConfigClientMockRecorder) PatchAuthConfigStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// UpsertAuthConfig indicates an expected call of UpsertAuthConfig. +func (mr *MockAuthConfigClientMockRecorder) UpsertAuthConfig(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchAuthConfigStatus", reflect.TypeOf((*MockAuthConfigClient)(nil).PatchAuthConfigStatus), varargs...) + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertAuthConfig", reflect.TypeOf((*MockAuthConfigClient)(nil).UpsertAuthConfig), varargs...) } -// MockMulticlusterAuthConfigClient is a mock of MulticlusterAuthConfigClient interface +// MockMulticlusterAuthConfigClient is a mock of MulticlusterAuthConfigClient interface. type MockMulticlusterAuthConfigClient struct { ctrl *gomock.Controller recorder *MockMulticlusterAuthConfigClientMockRecorder } -// MockMulticlusterAuthConfigClientMockRecorder is the mock recorder for MockMulticlusterAuthConfigClient +// MockMulticlusterAuthConfigClientMockRecorder is the mock recorder for MockMulticlusterAuthConfigClient. type MockMulticlusterAuthConfigClientMockRecorder struct { mock *MockMulticlusterAuthConfigClient } -// NewMockMulticlusterAuthConfigClient creates a new mock instance +// NewMockMulticlusterAuthConfigClient creates a new mock instance. func NewMockMulticlusterAuthConfigClient(ctrl *gomock.Controller) *MockMulticlusterAuthConfigClient { mock := &MockMulticlusterAuthConfigClient{ctrl: ctrl} mock.recorder = &MockMulticlusterAuthConfigClientMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterAuthConfigClient) EXPECT() *MockMulticlusterAuthConfigClientMockRecorder { return m.recorder } -// Cluster mocks base method +// Cluster mocks base method. func (m *MockMulticlusterAuthConfigClient) Cluster(cluster string) (v1.AuthConfigClient, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Cluster", cluster) @@ -586,7 +586,7 @@ func (m *MockMulticlusterAuthConfigClient) Cluster(cluster string) (v1.AuthConfi return ret0, ret1 } -// Cluster indicates an expected call of Cluster +// Cluster indicates an expected call of Cluster. func (mr *MockMulticlusterAuthConfigClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterAuthConfigClient)(nil).Cluster), cluster) diff --git a/pkg/api/enterprise.gloo.solo.io/v1/proto_deepcopy.go b/pkg/api/enterprise.gloo.solo.io/v1/proto_deepcopy.go index ca16cd390..58f462cbd 100644 --- a/pkg/api/enterprise.gloo.solo.io/v1/proto_deepcopy.go +++ b/pkg/api/enterprise.gloo.solo.io/v1/proto_deepcopy.go @@ -6,16 +6,27 @@ package v1 import ( proto "github.com/golang/protobuf/proto" + "github.com/solo-io/protoc-gen-ext/pkg/clone" ) // DeepCopyInto for the AuthConfig.Spec func (in *AuthConfigSpec) DeepCopyInto(out *AuthConfigSpec) { - p := proto.Clone(in).(*AuthConfigSpec) + var p *AuthConfigSpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*AuthConfigSpec) + } else { + p = proto.Clone(in).(*AuthConfigSpec) + } *out = *p } // DeepCopyInto for the AuthConfig.Status func (in *AuthConfigStatus) DeepCopyInto(out *AuthConfigStatus) { - p := proto.Clone(in).(*AuthConfigStatus) + var p *AuthConfigStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*AuthConfigStatus) + } else { + p = proto.Clone(in).(*AuthConfigStatus) + } *out = *p } diff --git a/pkg/api/enterprise.gloo.solo.io/v1/sets/mocks/sets.go b/pkg/api/enterprise.gloo.solo.io/v1/sets/mocks/sets.go index b4e544b77..bdcd6445f 100644 --- a/pkg/api/enterprise.gloo.solo.io/v1/sets/mocks/sets.go +++ b/pkg/api/enterprise.gloo.solo.io/v1/sets/mocks/sets.go @@ -15,110 +15,84 @@ import ( sets0 "k8s.io/apimachinery/pkg/util/sets" ) -// MockAuthConfigSet is a mock of AuthConfigSet interface +// MockAuthConfigSet is a mock of AuthConfigSet interface. type MockAuthConfigSet struct { ctrl *gomock.Controller recorder *MockAuthConfigSetMockRecorder } -// MockAuthConfigSetMockRecorder is the mock recorder for MockAuthConfigSet +// MockAuthConfigSetMockRecorder is the mock recorder for MockAuthConfigSet. type MockAuthConfigSetMockRecorder struct { mock *MockAuthConfigSet } -// NewMockAuthConfigSet creates a new mock instance +// NewMockAuthConfigSet creates a new mock instance. func NewMockAuthConfigSet(ctrl *gomock.Controller) *MockAuthConfigSet { mock := &MockAuthConfigSet{ctrl: ctrl} mock.recorder = &MockAuthConfigSetMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockAuthConfigSet) EXPECT() *MockAuthConfigSetMockRecorder { return m.recorder } -// Keys mocks base method -func (m *MockAuthConfigSet) Keys() sets0.String { +// Clone mocks base method. +func (m *MockAuthConfigSet) Clone() v1sets.AuthConfigSet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Keys") - ret0, _ := ret[0].(sets0.String) + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.AuthConfigSet) return ret0 } -// Keys indicates an expected call of Keys -func (mr *MockAuthConfigSetMockRecorder) Keys() *gomock.Call { +// Clone indicates an expected call of Clone. +func (mr *MockAuthConfigSetMockRecorder) Clone() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockAuthConfigSet)(nil).Keys)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockAuthConfigSet)(nil).Clone)) } -// List mocks base method -func (m *MockAuthConfigSet) List(filterResource ...func(*v1.AuthConfig) bool) []*v1.AuthConfig { +// Delete mocks base method. +func (m *MockAuthConfigSet) Delete(authConfig ezkube.ResourceId) { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range filterResource { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "List", varargs...) - ret0, _ := ret[0].([]*v1.AuthConfig) - return ret0 + m.ctrl.Call(m, "Delete", authConfig) } -// List indicates an expected call of List -func (mr *MockAuthConfigSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { +// Delete indicates an expected call of Delete. +func (mr *MockAuthConfigSetMockRecorder) Delete(authConfig interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockAuthConfigSet)(nil).List), filterResource...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockAuthConfigSet)(nil).Delete), authConfig) } -// UnsortedList mocks base method -func (m *MockAuthConfigSet) UnsortedList(filterResource ...func(*v1.AuthConfig) bool) []*v1.AuthConfig { +// Delta mocks base method. +func (m *MockAuthConfigSet) Delta(newSet v1sets.AuthConfigSet) sets.ResourceDelta { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range filterResource { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "UnsortedList", varargs...) - ret0, _ := ret[0].([]*v1.AuthConfig) + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) return ret0 } -// UnsortedList indicates an expected call of UnsortedList -func (mr *MockAuthConfigSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { +// Delta indicates an expected call of Delta. +func (mr *MockAuthConfigSetMockRecorder) Delta(newSet interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockAuthConfigSet)(nil).UnsortedList), filterResource...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockAuthConfigSet)(nil).Delta), newSet) } -// Map mocks base method -func (m *MockAuthConfigSet) Map() map[string]*v1.AuthConfig { +// Difference mocks base method. +func (m *MockAuthConfigSet) Difference(set v1sets.AuthConfigSet) v1sets.AuthConfigSet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Map") - ret0, _ := ret[0].(map[string]*v1.AuthConfig) + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.AuthConfigSet) return ret0 } -// Map indicates an expected call of Map -func (mr *MockAuthConfigSetMockRecorder) Map() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockAuthConfigSet)(nil).Map)) -} - -// Insert mocks base method -func (m *MockAuthConfigSet) Insert(authConfig ...*v1.AuthConfig) { - m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range authConfig { - varargs = append(varargs, a) - } - m.ctrl.Call(m, "Insert", varargs...) -} - -// Insert indicates an expected call of Insert -func (mr *MockAuthConfigSetMockRecorder) Insert(authConfig ...interface{}) *gomock.Call { +// Difference indicates an expected call of Difference. +func (mr *MockAuthConfigSetMockRecorder) Difference(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockAuthConfigSet)(nil).Insert), authConfig...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockAuthConfigSet)(nil).Difference), set) } -// Equal mocks base method +// Equal mocks base method. func (m *MockAuthConfigSet) Equal(authConfigSet v1sets.AuthConfigSet) bool { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Equal", authConfigSet) @@ -126,67 +100,72 @@ func (m *MockAuthConfigSet) Equal(authConfigSet v1sets.AuthConfigSet) bool { return ret0 } -// Equal indicates an expected call of Equal +// Equal indicates an expected call of Equal. func (mr *MockAuthConfigSetMockRecorder) Equal(authConfigSet interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockAuthConfigSet)(nil).Equal), authConfigSet) } -// Has mocks base method -func (m *MockAuthConfigSet) Has(authConfig ezkube.ResourceId) bool { +// Find mocks base method. +func (m *MockAuthConfigSet) Find(id ezkube.ResourceId) (*v1.AuthConfig, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Has", authConfig) - ret0, _ := ret[0].(bool) - return ret0 + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.AuthConfig) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// Has indicates an expected call of Has -func (mr *MockAuthConfigSetMockRecorder) Has(authConfig interface{}) *gomock.Call { +// Find indicates an expected call of Find. +func (mr *MockAuthConfigSetMockRecorder) Find(id interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockAuthConfigSet)(nil).Has), authConfig) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockAuthConfigSet)(nil).Find), id) } -// Delete mocks base method -func (m *MockAuthConfigSet) Delete(authConfig ezkube.ResourceId) { +// Generic mocks base method. +func (m *MockAuthConfigSet) Generic() sets.ResourceSet { m.ctrl.T.Helper() - m.ctrl.Call(m, "Delete", authConfig) + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 } -// Delete indicates an expected call of Delete -func (mr *MockAuthConfigSetMockRecorder) Delete(authConfig interface{}) *gomock.Call { +// Generic indicates an expected call of Generic. +func (mr *MockAuthConfigSetMockRecorder) Generic() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockAuthConfigSet)(nil).Delete), authConfig) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockAuthConfigSet)(nil).Generic)) } -// Union mocks base method -func (m *MockAuthConfigSet) Union(set v1sets.AuthConfigSet) v1sets.AuthConfigSet { +// Has mocks base method. +func (m *MockAuthConfigSet) Has(authConfig ezkube.ResourceId) bool { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Union", set) - ret0, _ := ret[0].(v1sets.AuthConfigSet) + ret := m.ctrl.Call(m, "Has", authConfig) + ret0, _ := ret[0].(bool) return ret0 } -// Union indicates an expected call of Union -func (mr *MockAuthConfigSetMockRecorder) Union(set interface{}) *gomock.Call { +// Has indicates an expected call of Has. +func (mr *MockAuthConfigSetMockRecorder) Has(authConfig interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockAuthConfigSet)(nil).Union), set) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockAuthConfigSet)(nil).Has), authConfig) } -// Difference mocks base method -func (m *MockAuthConfigSet) Difference(set v1sets.AuthConfigSet) v1sets.AuthConfigSet { +// Insert mocks base method. +func (m *MockAuthConfigSet) Insert(authConfig ...*v1.AuthConfig) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Difference", set) - ret0, _ := ret[0].(v1sets.AuthConfigSet) - return ret0 + varargs := []interface{}{} + for _, a := range authConfig { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) } -// Difference indicates an expected call of Difference -func (mr *MockAuthConfigSetMockRecorder) Difference(set interface{}) *gomock.Call { +// Insert indicates an expected call of Insert. +func (mr *MockAuthConfigSetMockRecorder) Insert(authConfig ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockAuthConfigSet)(nil).Difference), set) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockAuthConfigSet)(nil).Insert), authConfig...) } -// Intersection mocks base method +// Intersection mocks base method. func (m *MockAuthConfigSet) Intersection(set v1sets.AuthConfigSet) v1sets.AuthConfigSet { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Intersection", set) @@ -194,28 +173,27 @@ func (m *MockAuthConfigSet) Intersection(set v1sets.AuthConfigSet) v1sets.AuthCo return ret0 } -// Intersection indicates an expected call of Intersection +// Intersection indicates an expected call of Intersection. func (mr *MockAuthConfigSetMockRecorder) Intersection(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockAuthConfigSet)(nil).Intersection), set) } -// Find mocks base method -func (m *MockAuthConfigSet) Find(id ezkube.ResourceId) (*v1.AuthConfig, error) { +// Keys mocks base method. +func (m *MockAuthConfigSet) Keys() sets0.String { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Find", id) - ret0, _ := ret[0].(*v1.AuthConfig) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 } -// Find indicates an expected call of Find -func (mr *MockAuthConfigSetMockRecorder) Find(id interface{}) *gomock.Call { +// Keys indicates an expected call of Keys. +func (mr *MockAuthConfigSetMockRecorder) Keys() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockAuthConfigSet)(nil).Find), id) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockAuthConfigSet)(nil).Keys)) } -// Length mocks base method +// Length mocks base method. func (m *MockAuthConfigSet) Length() int { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Length") @@ -223,36 +201,72 @@ func (m *MockAuthConfigSet) Length() int { return ret0 } -// Length indicates an expected call of Length +// Length indicates an expected call of Length. func (mr *MockAuthConfigSetMockRecorder) Length() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockAuthConfigSet)(nil).Length)) } -// Generic mocks base method -func (m *MockAuthConfigSet) Generic() sets.ResourceSet { +// List mocks base method. +func (m *MockAuthConfigSet) List(filterResource ...func(*v1.AuthConfig) bool) []*v1.AuthConfig { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Generic") - ret0, _ := ret[0].(sets.ResourceSet) + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.AuthConfig) return ret0 } -// Generic indicates an expected call of Generic -func (mr *MockAuthConfigSetMockRecorder) Generic() *gomock.Call { +// List indicates an expected call of List. +func (mr *MockAuthConfigSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockAuthConfigSet)(nil).Generic)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockAuthConfigSet)(nil).List), filterResource...) } -// Delta mocks base method -func (m *MockAuthConfigSet) Delta(newSet v1sets.AuthConfigSet) sets.ResourceDelta { +// Map mocks base method. +func (m *MockAuthConfigSet) Map() map[string]*v1.AuthConfig { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Delta", newSet) - ret0, _ := ret[0].(sets.ResourceDelta) + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.AuthConfig) return ret0 } -// Delta indicates an expected call of Delta -func (mr *MockAuthConfigSetMockRecorder) Delta(newSet interface{}) *gomock.Call { +// Map indicates an expected call of Map. +func (mr *MockAuthConfigSetMockRecorder) Map() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockAuthConfigSet)(nil).Delta), newSet) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockAuthConfigSet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockAuthConfigSet) Union(set v1sets.AuthConfigSet) v1sets.AuthConfigSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.AuthConfigSet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockAuthConfigSetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockAuthConfigSet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockAuthConfigSet) UnsortedList(filterResource ...func(*v1.AuthConfig) bool) []*v1.AuthConfig { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.AuthConfig) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockAuthConfigSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockAuthConfigSet)(nil).UnsortedList), filterResource...) } diff --git a/pkg/api/enterprise.gloo.solo.io/v1/sets/sets.go b/pkg/api/enterprise.gloo.solo.io/v1/sets/sets.go index 1bb763ad5..4e529f265 100644 --- a/pkg/api/enterprise.gloo.solo.io/v1/sets/sets.go +++ b/pkg/api/enterprise.gloo.solo.io/v1/sets/sets.go @@ -17,8 +17,10 @@ type AuthConfigSet interface { // Get the set stored keys Keys() sets.String // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. List(filterResource ...func(*enterprise_gloo_solo_io_v1.AuthConfig) bool) []*enterprise_gloo_solo_io_v1.AuthConfig // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. UnsortedList(filterResource ...func(*enterprise_gloo_solo_io_v1.AuthConfig) bool) []*enterprise_gloo_solo_io_v1.AuthConfig // Return the Set as a map of key to resource. Map() map[string]*enterprise_gloo_solo_io_v1.AuthConfig @@ -44,6 +46,8 @@ type AuthConfigSet interface { Generic() sksets.ResourceSet // returns the delta between this and and another AuthConfigSet Delta(newSet AuthConfigSet) sksets.ResourceDelta + // Create a deep copy of the current AuthConfigSet + Clone() AuthConfigSet } func makeGenericAuthConfigSet(authConfigList []*enterprise_gloo_solo_io_v1.AuthConfig) sksets.ResourceSet { @@ -83,6 +87,7 @@ func (s *authConfigSet) List(filterResource ...func(*enterprise_gloo_solo_io_v1. } var genericFilters []func(ezkube.ResourceId) bool for _, filter := range filterResource { + filter := filter genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { return filter(obj.(*enterprise_gloo_solo_io_v1.AuthConfig)) }) @@ -102,6 +107,7 @@ func (s *authConfigSet) UnsortedList(filterResource ...func(*enterprise_gloo_sol } var genericFilters []func(ezkube.ResourceId) bool for _, filter := range filterResource { + filter := filter genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { return filter(obj.(*enterprise_gloo_solo_io_v1.AuthConfig)) }) @@ -222,3 +228,10 @@ func (s *authConfigSet) Delta(newSet AuthConfigSet) sksets.ResourceDelta { } return s.Generic().Delta(newSet.Generic()) } + +func (s *authConfigSet) Clone() AuthConfigSet { + if s == nil { + return nil + } + return &authConfigSet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} diff --git a/pkg/api/fed.enterprise.gloo.solo.io/v1/clients.go b/pkg/api/fed.enterprise.gloo.solo.io/v1/clients.go new file mode 100644 index 000000000..29950f1ad --- /dev/null +++ b/pkg/api/fed.enterprise.gloo.solo.io/v1/clients.go @@ -0,0 +1,213 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./clients.go -destination mocks/clients.go + +package v1 + +import ( + "context" + + "github.com/solo-io/skv2/pkg/controllerutils" + "github.com/solo-io/skv2/pkg/multicluster" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/rest" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +// MulticlusterClientset for the fed.enterprise.gloo.solo.io/v1 APIs +type MulticlusterClientset interface { + // Cluster returns a Clientset for the given cluster + Cluster(cluster string) (Clientset, error) +} + +type multiclusterClientset struct { + client multicluster.Client +} + +func NewMulticlusterClientset(client multicluster.Client) MulticlusterClientset { + return &multiclusterClientset{client: client} +} + +func (m *multiclusterClientset) Cluster(cluster string) (Clientset, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewClientset(client), nil +} + +// clienset for the fed.enterprise.gloo.solo.io/v1 APIs +type Clientset interface { + // clienset for the fed.enterprise.gloo.solo.io/v1/v1 APIs + FederatedAuthConfigs() FederatedAuthConfigClient +} + +type clientSet struct { + client client.Client +} + +func NewClientsetFromConfig(cfg *rest.Config) (Clientset, error) { + scheme := scheme.Scheme + if err := SchemeBuilder.AddToScheme(scheme); err != nil { + return nil, err + } + client, err := client.New(cfg, client.Options{ + Scheme: scheme, + }) + if err != nil { + return nil, err + } + return NewClientset(client), nil +} + +func NewClientset(client client.Client) Clientset { + return &clientSet{client: client} +} + +// clienset for the fed.enterprise.gloo.solo.io/v1/v1 APIs +func (c *clientSet) FederatedAuthConfigs() FederatedAuthConfigClient { + return NewFederatedAuthConfigClient(c.client) +} + +// Reader knows how to read and list FederatedAuthConfigs. +type FederatedAuthConfigReader interface { + // Get retrieves a FederatedAuthConfig for the given object key + GetFederatedAuthConfig(ctx context.Context, key client.ObjectKey) (*FederatedAuthConfig, error) + + // List retrieves list of FederatedAuthConfigs for a given namespace and list options. + ListFederatedAuthConfig(ctx context.Context, opts ...client.ListOption) (*FederatedAuthConfigList, error) +} + +// FederatedAuthConfigTransitionFunction instructs the FederatedAuthConfigWriter how to transition between an existing +// FederatedAuthConfig object and a desired on an Upsert +type FederatedAuthConfigTransitionFunction func(existing, desired *FederatedAuthConfig) error + +// Writer knows how to create, delete, and update FederatedAuthConfigs. +type FederatedAuthConfigWriter interface { + // Create saves the FederatedAuthConfig object. + CreateFederatedAuthConfig(ctx context.Context, obj *FederatedAuthConfig, opts ...client.CreateOption) error + + // Delete deletes the FederatedAuthConfig object. + DeleteFederatedAuthConfig(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error + + // Update updates the given FederatedAuthConfig object. + UpdateFederatedAuthConfig(ctx context.Context, obj *FederatedAuthConfig, opts ...client.UpdateOption) error + + // Patch patches the given FederatedAuthConfig object. + PatchFederatedAuthConfig(ctx context.Context, obj *FederatedAuthConfig, patch client.Patch, opts ...client.PatchOption) error + + // DeleteAllOf deletes all FederatedAuthConfig objects matching the given options. + DeleteAllOfFederatedAuthConfig(ctx context.Context, opts ...client.DeleteAllOfOption) error + + // Create or Update the FederatedAuthConfig object. + UpsertFederatedAuthConfig(ctx context.Context, obj *FederatedAuthConfig, transitionFuncs ...FederatedAuthConfigTransitionFunction) error +} + +// StatusWriter knows how to update status subresource of a FederatedAuthConfig object. +type FederatedAuthConfigStatusWriter interface { + // Update updates the fields corresponding to the status subresource for the + // given FederatedAuthConfig object. + UpdateFederatedAuthConfigStatus(ctx context.Context, obj *FederatedAuthConfig, opts ...client.SubResourceUpdateOption) error + + // Patch patches the given FederatedAuthConfig object's subresource. + PatchFederatedAuthConfigStatus(ctx context.Context, obj *FederatedAuthConfig, patch client.Patch, opts ...client.SubResourcePatchOption) error +} + +// Client knows how to perform CRUD operations on FederatedAuthConfigs. +type FederatedAuthConfigClient interface { + FederatedAuthConfigReader + FederatedAuthConfigWriter + FederatedAuthConfigStatusWriter +} + +type federatedAuthConfigClient struct { + client client.Client +} + +func NewFederatedAuthConfigClient(client client.Client) *federatedAuthConfigClient { + return &federatedAuthConfigClient{client: client} +} + +func (c *federatedAuthConfigClient) GetFederatedAuthConfig(ctx context.Context, key client.ObjectKey) (*FederatedAuthConfig, error) { + obj := &FederatedAuthConfig{} + if err := c.client.Get(ctx, key, obj); err != nil { + return nil, err + } + return obj, nil +} + +func (c *federatedAuthConfigClient) ListFederatedAuthConfig(ctx context.Context, opts ...client.ListOption) (*FederatedAuthConfigList, error) { + list := &FederatedAuthConfigList{} + if err := c.client.List(ctx, list, opts...); err != nil { + return nil, err + } + return list, nil +} + +func (c *federatedAuthConfigClient) CreateFederatedAuthConfig(ctx context.Context, obj *FederatedAuthConfig, opts ...client.CreateOption) error { + return c.client.Create(ctx, obj, opts...) +} + +func (c *federatedAuthConfigClient) DeleteFederatedAuthConfig(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + obj := &FederatedAuthConfig{} + obj.SetName(key.Name) + obj.SetNamespace(key.Namespace) + return c.client.Delete(ctx, obj, opts...) +} + +func (c *federatedAuthConfigClient) UpdateFederatedAuthConfig(ctx context.Context, obj *FederatedAuthConfig, opts ...client.UpdateOption) error { + return c.client.Update(ctx, obj, opts...) +} + +func (c *federatedAuthConfigClient) PatchFederatedAuthConfig(ctx context.Context, obj *FederatedAuthConfig, patch client.Patch, opts ...client.PatchOption) error { + return c.client.Patch(ctx, obj, patch, opts...) +} + +func (c *federatedAuthConfigClient) DeleteAllOfFederatedAuthConfig(ctx context.Context, opts ...client.DeleteAllOfOption) error { + obj := &FederatedAuthConfig{} + return c.client.DeleteAllOf(ctx, obj, opts...) +} + +func (c *federatedAuthConfigClient) UpsertFederatedAuthConfig(ctx context.Context, obj *FederatedAuthConfig, transitionFuncs ...FederatedAuthConfigTransitionFunction) error { + genericTxFunc := func(existing, desired runtime.Object) error { + for _, txFunc := range transitionFuncs { + if err := txFunc(existing.(*FederatedAuthConfig), desired.(*FederatedAuthConfig)); err != nil { + return err + } + } + return nil + } + _, err := controllerutils.Upsert(ctx, c.client, obj, genericTxFunc) + return err +} + +func (c *federatedAuthConfigClient) UpdateFederatedAuthConfigStatus(ctx context.Context, obj *FederatedAuthConfig, opts ...client.SubResourceUpdateOption) error { + return c.client.Status().Update(ctx, obj, opts...) +} + +func (c *federatedAuthConfigClient) PatchFederatedAuthConfigStatus(ctx context.Context, obj *FederatedAuthConfig, patch client.Patch, opts ...client.SubResourcePatchOption) error { + return c.client.Status().Patch(ctx, obj, patch, opts...) +} + +// Provides FederatedAuthConfigClients for multiple clusters. +type MulticlusterFederatedAuthConfigClient interface { + // Cluster returns a FederatedAuthConfigClient for the given cluster + Cluster(cluster string) (FederatedAuthConfigClient, error) +} + +type multiclusterFederatedAuthConfigClient struct { + client multicluster.Client +} + +func NewMulticlusterFederatedAuthConfigClient(client multicluster.Client) MulticlusterFederatedAuthConfigClient { + return &multiclusterFederatedAuthConfigClient{client: client} +} + +func (m *multiclusterFederatedAuthConfigClient) Cluster(cluster string) (FederatedAuthConfigClient, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewFederatedAuthConfigClient(client), nil +} diff --git a/pkg/api/fed.enterprise.gloo.solo.io/v1/controller/event_handlers.go b/pkg/api/fed.enterprise.gloo.solo.io/v1/controller/event_handlers.go new file mode 100644 index 000000000..a1086b212 --- /dev/null +++ b/pkg/api/fed.enterprise.gloo.solo.io/v1/controller/event_handlers.go @@ -0,0 +1,125 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./event_handlers.go -destination mocks/event_handlers.go + +// Definitions for the Kubernetes Controllers +package controller + +import ( + "context" + + fed_enterprise_gloo_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/fed.enterprise.gloo.solo.io/v1" + + "github.com/pkg/errors" + "github.com/solo-io/skv2/pkg/events" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/manager" + "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// Handle events for the FederatedAuthConfig Resource +// DEPRECATED: Prefer reconciler pattern. +type FederatedAuthConfigEventHandler interface { + CreateFederatedAuthConfig(obj *fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) error + UpdateFederatedAuthConfig(old, new *fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) error + DeleteFederatedAuthConfig(obj *fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) error + GenericFederatedAuthConfig(obj *fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) error +} + +type FederatedAuthConfigEventHandlerFuncs struct { + OnCreate func(obj *fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) error + OnUpdate func(old, new *fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) error + OnDelete func(obj *fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) error + OnGeneric func(obj *fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) error +} + +func (f *FederatedAuthConfigEventHandlerFuncs) CreateFederatedAuthConfig(obj *fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) error { + if f.OnCreate == nil { + return nil + } + return f.OnCreate(obj) +} + +func (f *FederatedAuthConfigEventHandlerFuncs) DeleteFederatedAuthConfig(obj *fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) error { + if f.OnDelete == nil { + return nil + } + return f.OnDelete(obj) +} + +func (f *FederatedAuthConfigEventHandlerFuncs) UpdateFederatedAuthConfig(objOld, objNew *fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) error { + if f.OnUpdate == nil { + return nil + } + return f.OnUpdate(objOld, objNew) +} + +func (f *FederatedAuthConfigEventHandlerFuncs) GenericFederatedAuthConfig(obj *fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) error { + if f.OnGeneric == nil { + return nil + } + return f.OnGeneric(obj) +} + +type FederatedAuthConfigEventWatcher interface { + AddEventHandler(ctx context.Context, h FederatedAuthConfigEventHandler, predicates ...predicate.Predicate) error +} + +type federatedAuthConfigEventWatcher struct { + watcher events.EventWatcher +} + +func NewFederatedAuthConfigEventWatcher(name string, mgr manager.Manager) FederatedAuthConfigEventWatcher { + return &federatedAuthConfigEventWatcher{ + watcher: events.NewWatcher(name, mgr, &fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig{}), + } +} + +func (c *federatedAuthConfigEventWatcher) AddEventHandler(ctx context.Context, h FederatedAuthConfigEventHandler, predicates ...predicate.Predicate) error { + handler := genericFederatedAuthConfigHandler{handler: h} + if err := c.watcher.Watch(ctx, handler, predicates...); err != nil { + return err + } + return nil +} + +// genericFederatedAuthConfigHandler implements a generic events.EventHandler +type genericFederatedAuthConfigHandler struct { + handler FederatedAuthConfigEventHandler +} + +func (h genericFederatedAuthConfigHandler) Create(object client.Object) error { + obj, ok := object.(*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) + if !ok { + return errors.Errorf("internal error: FederatedAuthConfig handler received event for %T", object) + } + return h.handler.CreateFederatedAuthConfig(obj) +} + +func (h genericFederatedAuthConfigHandler) Delete(object client.Object) error { + obj, ok := object.(*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) + if !ok { + return errors.Errorf("internal error: FederatedAuthConfig handler received event for %T", object) + } + return h.handler.DeleteFederatedAuthConfig(obj) +} + +func (h genericFederatedAuthConfigHandler) Update(old, new client.Object) error { + objOld, ok := old.(*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) + if !ok { + return errors.Errorf("internal error: FederatedAuthConfig handler received event for %T", old) + } + objNew, ok := new.(*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) + if !ok { + return errors.Errorf("internal error: FederatedAuthConfig handler received event for %T", new) + } + return h.handler.UpdateFederatedAuthConfig(objOld, objNew) +} + +func (h genericFederatedAuthConfigHandler) Generic(object client.Object) error { + obj, ok := object.(*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) + if !ok { + return errors.Errorf("internal error: FederatedAuthConfig handler received event for %T", object) + } + return h.handler.GenericFederatedAuthConfig(obj) +} diff --git a/pkg/api/fed.enterprise.gloo.solo.io/v1/controller/mocks/event_handlers.go b/pkg/api/fed.enterprise.gloo.solo.io/v1/controller/mocks/event_handlers.go new file mode 100644 index 000000000..a9a393ed3 --- /dev/null +++ b/pkg/api/fed.enterprise.gloo.solo.io/v1/controller/mocks/event_handlers.go @@ -0,0 +1,136 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./event_handlers.go + +// Package mock_controller is a generated GoMock package. +package mock_controller + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.enterprise.gloo.solo.io/v1" + controller "github.com/solo-io/solo-apis/pkg/api/fed.enterprise.gloo.solo.io/v1/controller" + predicate "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// MockFederatedAuthConfigEventHandler is a mock of FederatedAuthConfigEventHandler interface. +type MockFederatedAuthConfigEventHandler struct { + ctrl *gomock.Controller + recorder *MockFederatedAuthConfigEventHandlerMockRecorder +} + +// MockFederatedAuthConfigEventHandlerMockRecorder is the mock recorder for MockFederatedAuthConfigEventHandler. +type MockFederatedAuthConfigEventHandlerMockRecorder struct { + mock *MockFederatedAuthConfigEventHandler +} + +// NewMockFederatedAuthConfigEventHandler creates a new mock instance. +func NewMockFederatedAuthConfigEventHandler(ctrl *gomock.Controller) *MockFederatedAuthConfigEventHandler { + mock := &MockFederatedAuthConfigEventHandler{ctrl: ctrl} + mock.recorder = &MockFederatedAuthConfigEventHandlerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedAuthConfigEventHandler) EXPECT() *MockFederatedAuthConfigEventHandlerMockRecorder { + return m.recorder +} + +// CreateFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigEventHandler) CreateFederatedAuthConfig(obj *v1.FederatedAuthConfig) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateFederatedAuthConfig", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedAuthConfig indicates an expected call of CreateFederatedAuthConfig. +func (mr *MockFederatedAuthConfigEventHandlerMockRecorder) CreateFederatedAuthConfig(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigEventHandler)(nil).CreateFederatedAuthConfig), obj) +} + +// DeleteFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigEventHandler) DeleteFederatedAuthConfig(obj *v1.FederatedAuthConfig) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteFederatedAuthConfig", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedAuthConfig indicates an expected call of DeleteFederatedAuthConfig. +func (mr *MockFederatedAuthConfigEventHandlerMockRecorder) DeleteFederatedAuthConfig(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigEventHandler)(nil).DeleteFederatedAuthConfig), obj) +} + +// GenericFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigEventHandler) GenericFederatedAuthConfig(obj *v1.FederatedAuthConfig) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GenericFederatedAuthConfig", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// GenericFederatedAuthConfig indicates an expected call of GenericFederatedAuthConfig. +func (mr *MockFederatedAuthConfigEventHandlerMockRecorder) GenericFederatedAuthConfig(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigEventHandler)(nil).GenericFederatedAuthConfig), obj) +} + +// UpdateFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigEventHandler) UpdateFederatedAuthConfig(old, new *v1.FederatedAuthConfig) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateFederatedAuthConfig", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedAuthConfig indicates an expected call of UpdateFederatedAuthConfig. +func (mr *MockFederatedAuthConfigEventHandlerMockRecorder) UpdateFederatedAuthConfig(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigEventHandler)(nil).UpdateFederatedAuthConfig), old, new) +} + +// MockFederatedAuthConfigEventWatcher is a mock of FederatedAuthConfigEventWatcher interface. +type MockFederatedAuthConfigEventWatcher struct { + ctrl *gomock.Controller + recorder *MockFederatedAuthConfigEventWatcherMockRecorder +} + +// MockFederatedAuthConfigEventWatcherMockRecorder is the mock recorder for MockFederatedAuthConfigEventWatcher. +type MockFederatedAuthConfigEventWatcherMockRecorder struct { + mock *MockFederatedAuthConfigEventWatcher +} + +// NewMockFederatedAuthConfigEventWatcher creates a new mock instance. +func NewMockFederatedAuthConfigEventWatcher(ctrl *gomock.Controller) *MockFederatedAuthConfigEventWatcher { + mock := &MockFederatedAuthConfigEventWatcher{ctrl: ctrl} + mock.recorder = &MockFederatedAuthConfigEventWatcherMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedAuthConfigEventWatcher) EXPECT() *MockFederatedAuthConfigEventWatcherMockRecorder { + return m.recorder +} + +// AddEventHandler mocks base method. +func (m *MockFederatedAuthConfigEventWatcher) AddEventHandler(ctx context.Context, h controller.FederatedAuthConfigEventHandler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, h} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "AddEventHandler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddEventHandler indicates an expected call of AddEventHandler. +func (mr *MockFederatedAuthConfigEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, h}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockFederatedAuthConfigEventWatcher)(nil).AddEventHandler), varargs...) +} diff --git a/pkg/api/fed.enterprise.gloo.solo.io/v1/controller/mocks/multicluster_reconcilers.go b/pkg/api/fed.enterprise.gloo.solo.io/v1/controller/mocks/multicluster_reconcilers.go new file mode 100644 index 000000000..ecfc90ab5 --- /dev/null +++ b/pkg/api/fed.enterprise.gloo.solo.io/v1/controller/mocks/multicluster_reconcilers.go @@ -0,0 +1,131 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./multicluster_reconcilers.go + +// Package mock_controller is a generated GoMock package. +package mock_controller + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + reconcile "github.com/solo-io/skv2/pkg/reconcile" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.enterprise.gloo.solo.io/v1" + controller "github.com/solo-io/solo-apis/pkg/api/fed.enterprise.gloo.solo.io/v1/controller" + predicate "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// MockMulticlusterFederatedAuthConfigReconciler is a mock of MulticlusterFederatedAuthConfigReconciler interface. +type MockMulticlusterFederatedAuthConfigReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedAuthConfigReconcilerMockRecorder +} + +// MockMulticlusterFederatedAuthConfigReconcilerMockRecorder is the mock recorder for MockMulticlusterFederatedAuthConfigReconciler. +type MockMulticlusterFederatedAuthConfigReconcilerMockRecorder struct { + mock *MockMulticlusterFederatedAuthConfigReconciler +} + +// NewMockMulticlusterFederatedAuthConfigReconciler creates a new mock instance. +func NewMockMulticlusterFederatedAuthConfigReconciler(ctrl *gomock.Controller) *MockMulticlusterFederatedAuthConfigReconciler { + mock := &MockMulticlusterFederatedAuthConfigReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedAuthConfigReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedAuthConfigReconciler) EXPECT() *MockMulticlusterFederatedAuthConfigReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedAuthConfig mocks base method. +func (m *MockMulticlusterFederatedAuthConfigReconciler) ReconcileFederatedAuthConfig(clusterName string, obj *v1.FederatedAuthConfig) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedAuthConfig", clusterName, obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedAuthConfig indicates an expected call of ReconcileFederatedAuthConfig. +func (mr *MockMulticlusterFederatedAuthConfigReconcilerMockRecorder) ReconcileFederatedAuthConfig(clusterName, obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedAuthConfig", reflect.TypeOf((*MockMulticlusterFederatedAuthConfigReconciler)(nil).ReconcileFederatedAuthConfig), clusterName, obj) +} + +// MockMulticlusterFederatedAuthConfigDeletionReconciler is a mock of MulticlusterFederatedAuthConfigDeletionReconciler interface. +type MockMulticlusterFederatedAuthConfigDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedAuthConfigDeletionReconcilerMockRecorder +} + +// MockMulticlusterFederatedAuthConfigDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterFederatedAuthConfigDeletionReconciler. +type MockMulticlusterFederatedAuthConfigDeletionReconcilerMockRecorder struct { + mock *MockMulticlusterFederatedAuthConfigDeletionReconciler +} + +// NewMockMulticlusterFederatedAuthConfigDeletionReconciler creates a new mock instance. +func NewMockMulticlusterFederatedAuthConfigDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterFederatedAuthConfigDeletionReconciler { + mock := &MockMulticlusterFederatedAuthConfigDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedAuthConfigDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedAuthConfigDeletionReconciler) EXPECT() *MockMulticlusterFederatedAuthConfigDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedAuthConfigDeletion mocks base method. +func (m *MockMulticlusterFederatedAuthConfigDeletionReconciler) ReconcileFederatedAuthConfigDeletion(clusterName string, req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedAuthConfigDeletion", clusterName, req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileFederatedAuthConfigDeletion indicates an expected call of ReconcileFederatedAuthConfigDeletion. +func (mr *MockMulticlusterFederatedAuthConfigDeletionReconcilerMockRecorder) ReconcileFederatedAuthConfigDeletion(clusterName, req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedAuthConfigDeletion", reflect.TypeOf((*MockMulticlusterFederatedAuthConfigDeletionReconciler)(nil).ReconcileFederatedAuthConfigDeletion), clusterName, req) +} + +// MockMulticlusterFederatedAuthConfigReconcileLoop is a mock of MulticlusterFederatedAuthConfigReconcileLoop interface. +type MockMulticlusterFederatedAuthConfigReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedAuthConfigReconcileLoopMockRecorder +} + +// MockMulticlusterFederatedAuthConfigReconcileLoopMockRecorder is the mock recorder for MockMulticlusterFederatedAuthConfigReconcileLoop. +type MockMulticlusterFederatedAuthConfigReconcileLoopMockRecorder struct { + mock *MockMulticlusterFederatedAuthConfigReconcileLoop +} + +// NewMockMulticlusterFederatedAuthConfigReconcileLoop creates a new mock instance. +func NewMockMulticlusterFederatedAuthConfigReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterFederatedAuthConfigReconcileLoop { + mock := &MockMulticlusterFederatedAuthConfigReconcileLoop{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedAuthConfigReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedAuthConfigReconcileLoop) EXPECT() *MockMulticlusterFederatedAuthConfigReconcileLoopMockRecorder { + return m.recorder +} + +// AddMulticlusterFederatedAuthConfigReconciler mocks base method. +func (m *MockMulticlusterFederatedAuthConfigReconcileLoop) AddMulticlusterFederatedAuthConfigReconciler(ctx context.Context, rec controller.MulticlusterFederatedAuthConfigReconciler, predicates ...predicate.Predicate) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "AddMulticlusterFederatedAuthConfigReconciler", varargs...) +} + +// AddMulticlusterFederatedAuthConfigReconciler indicates an expected call of AddMulticlusterFederatedAuthConfigReconciler. +func (mr *MockMulticlusterFederatedAuthConfigReconcileLoopMockRecorder) AddMulticlusterFederatedAuthConfigReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterFederatedAuthConfigReconciler", reflect.TypeOf((*MockMulticlusterFederatedAuthConfigReconcileLoop)(nil).AddMulticlusterFederatedAuthConfigReconciler), varargs...) +} diff --git a/pkg/api/fed.enterprise.gloo.solo.io/v1/controller/mocks/reconcilers.go b/pkg/api/fed.enterprise.gloo.solo.io/v1/controller/mocks/reconcilers.go new file mode 100644 index 000000000..7e4d55f08 --- /dev/null +++ b/pkg/api/fed.enterprise.gloo.solo.io/v1/controller/mocks/reconcilers.go @@ -0,0 +1,199 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./reconcilers.go + +// Package mock_controller is a generated GoMock package. +package mock_controller + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + reconcile "github.com/solo-io/skv2/pkg/reconcile" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.enterprise.gloo.solo.io/v1" + controller "github.com/solo-io/solo-apis/pkg/api/fed.enterprise.gloo.solo.io/v1/controller" + predicate "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// MockFederatedAuthConfigReconciler is a mock of FederatedAuthConfigReconciler interface. +type MockFederatedAuthConfigReconciler struct { + ctrl *gomock.Controller + recorder *MockFederatedAuthConfigReconcilerMockRecorder +} + +// MockFederatedAuthConfigReconcilerMockRecorder is the mock recorder for MockFederatedAuthConfigReconciler. +type MockFederatedAuthConfigReconcilerMockRecorder struct { + mock *MockFederatedAuthConfigReconciler +} + +// NewMockFederatedAuthConfigReconciler creates a new mock instance. +func NewMockFederatedAuthConfigReconciler(ctrl *gomock.Controller) *MockFederatedAuthConfigReconciler { + mock := &MockFederatedAuthConfigReconciler{ctrl: ctrl} + mock.recorder = &MockFederatedAuthConfigReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedAuthConfigReconciler) EXPECT() *MockFederatedAuthConfigReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigReconciler) ReconcileFederatedAuthConfig(obj *v1.FederatedAuthConfig) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedAuthConfig", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedAuthConfig indicates an expected call of ReconcileFederatedAuthConfig. +func (mr *MockFederatedAuthConfigReconcilerMockRecorder) ReconcileFederatedAuthConfig(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigReconciler)(nil).ReconcileFederatedAuthConfig), obj) +} + +// MockFederatedAuthConfigDeletionReconciler is a mock of FederatedAuthConfigDeletionReconciler interface. +type MockFederatedAuthConfigDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockFederatedAuthConfigDeletionReconcilerMockRecorder +} + +// MockFederatedAuthConfigDeletionReconcilerMockRecorder is the mock recorder for MockFederatedAuthConfigDeletionReconciler. +type MockFederatedAuthConfigDeletionReconcilerMockRecorder struct { + mock *MockFederatedAuthConfigDeletionReconciler +} + +// NewMockFederatedAuthConfigDeletionReconciler creates a new mock instance. +func NewMockFederatedAuthConfigDeletionReconciler(ctrl *gomock.Controller) *MockFederatedAuthConfigDeletionReconciler { + mock := &MockFederatedAuthConfigDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockFederatedAuthConfigDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedAuthConfigDeletionReconciler) EXPECT() *MockFederatedAuthConfigDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedAuthConfigDeletion mocks base method. +func (m *MockFederatedAuthConfigDeletionReconciler) ReconcileFederatedAuthConfigDeletion(req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedAuthConfigDeletion", req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileFederatedAuthConfigDeletion indicates an expected call of ReconcileFederatedAuthConfigDeletion. +func (mr *MockFederatedAuthConfigDeletionReconcilerMockRecorder) ReconcileFederatedAuthConfigDeletion(req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedAuthConfigDeletion", reflect.TypeOf((*MockFederatedAuthConfigDeletionReconciler)(nil).ReconcileFederatedAuthConfigDeletion), req) +} + +// MockFederatedAuthConfigFinalizer is a mock of FederatedAuthConfigFinalizer interface. +type MockFederatedAuthConfigFinalizer struct { + ctrl *gomock.Controller + recorder *MockFederatedAuthConfigFinalizerMockRecorder +} + +// MockFederatedAuthConfigFinalizerMockRecorder is the mock recorder for MockFederatedAuthConfigFinalizer. +type MockFederatedAuthConfigFinalizerMockRecorder struct { + mock *MockFederatedAuthConfigFinalizer +} + +// NewMockFederatedAuthConfigFinalizer creates a new mock instance. +func NewMockFederatedAuthConfigFinalizer(ctrl *gomock.Controller) *MockFederatedAuthConfigFinalizer { + mock := &MockFederatedAuthConfigFinalizer{ctrl: ctrl} + mock.recorder = &MockFederatedAuthConfigFinalizerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedAuthConfigFinalizer) EXPECT() *MockFederatedAuthConfigFinalizerMockRecorder { + return m.recorder +} + +// FederatedAuthConfigFinalizerName mocks base method. +func (m *MockFederatedAuthConfigFinalizer) FederatedAuthConfigFinalizerName() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FederatedAuthConfigFinalizerName") + ret0, _ := ret[0].(string) + return ret0 +} + +// FederatedAuthConfigFinalizerName indicates an expected call of FederatedAuthConfigFinalizerName. +func (mr *MockFederatedAuthConfigFinalizerMockRecorder) FederatedAuthConfigFinalizerName() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FederatedAuthConfigFinalizerName", reflect.TypeOf((*MockFederatedAuthConfigFinalizer)(nil).FederatedAuthConfigFinalizerName)) +} + +// FinalizeFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigFinalizer) FinalizeFederatedAuthConfig(obj *v1.FederatedAuthConfig) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeFederatedAuthConfig", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeFederatedAuthConfig indicates an expected call of FinalizeFederatedAuthConfig. +func (mr *MockFederatedAuthConfigFinalizerMockRecorder) FinalizeFederatedAuthConfig(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigFinalizer)(nil).FinalizeFederatedAuthConfig), obj) +} + +// ReconcileFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigFinalizer) ReconcileFederatedAuthConfig(obj *v1.FederatedAuthConfig) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedAuthConfig", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedAuthConfig indicates an expected call of ReconcileFederatedAuthConfig. +func (mr *MockFederatedAuthConfigFinalizerMockRecorder) ReconcileFederatedAuthConfig(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigFinalizer)(nil).ReconcileFederatedAuthConfig), obj) +} + +// MockFederatedAuthConfigReconcileLoop is a mock of FederatedAuthConfigReconcileLoop interface. +type MockFederatedAuthConfigReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockFederatedAuthConfigReconcileLoopMockRecorder +} + +// MockFederatedAuthConfigReconcileLoopMockRecorder is the mock recorder for MockFederatedAuthConfigReconcileLoop. +type MockFederatedAuthConfigReconcileLoopMockRecorder struct { + mock *MockFederatedAuthConfigReconcileLoop +} + +// NewMockFederatedAuthConfigReconcileLoop creates a new mock instance. +func NewMockFederatedAuthConfigReconcileLoop(ctrl *gomock.Controller) *MockFederatedAuthConfigReconcileLoop { + mock := &MockFederatedAuthConfigReconcileLoop{ctrl: ctrl} + mock.recorder = &MockFederatedAuthConfigReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedAuthConfigReconcileLoop) EXPECT() *MockFederatedAuthConfigReconcileLoopMockRecorder { + return m.recorder +} + +// RunFederatedAuthConfigReconciler mocks base method. +func (m *MockFederatedAuthConfigReconcileLoop) RunFederatedAuthConfigReconciler(ctx context.Context, rec controller.FederatedAuthConfigReconciler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RunFederatedAuthConfigReconciler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// RunFederatedAuthConfigReconciler indicates an expected call of RunFederatedAuthConfigReconciler. +func (mr *MockFederatedAuthConfigReconcileLoopMockRecorder) RunFederatedAuthConfigReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunFederatedAuthConfigReconciler", reflect.TypeOf((*MockFederatedAuthConfigReconcileLoop)(nil).RunFederatedAuthConfigReconciler), varargs...) +} diff --git a/pkg/api/fed.enterprise.gloo.solo.io/v1/controller/multicluster_reconcilers.go b/pkg/api/fed.enterprise.gloo.solo.io/v1/controller/multicluster_reconcilers.go new file mode 100644 index 000000000..43b97de86 --- /dev/null +++ b/pkg/api/fed.enterprise.gloo.solo.io/v1/controller/multicluster_reconcilers.go @@ -0,0 +1,90 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./multicluster_reconcilers.go -destination mocks/multicluster_reconcilers.go + +// Definitions for the multicluster Kubernetes Controllers +package controller + +import ( + "context" + + fed_enterprise_gloo_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/fed.enterprise.gloo.solo.io/v1" + + "github.com/pkg/errors" + "github.com/solo-io/skv2/pkg/ezkube" + "github.com/solo-io/skv2/pkg/multicluster" + mc_reconcile "github.com/solo-io/skv2/pkg/multicluster/reconcile" + "github.com/solo-io/skv2/pkg/reconcile" + "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// Reconcile Upsert events for the FederatedAuthConfig Resource across clusters. +// implemented by the user +type MulticlusterFederatedAuthConfigReconciler interface { + ReconcileFederatedAuthConfig(clusterName string, obj *fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) (reconcile.Result, error) +} + +// Reconcile deletion events for the FederatedAuthConfig Resource across clusters. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type MulticlusterFederatedAuthConfigDeletionReconciler interface { + ReconcileFederatedAuthConfigDeletion(clusterName string, req reconcile.Request) error +} + +type MulticlusterFederatedAuthConfigReconcilerFuncs struct { + OnReconcileFederatedAuthConfig func(clusterName string, obj *fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) (reconcile.Result, error) + OnReconcileFederatedAuthConfigDeletion func(clusterName string, req reconcile.Request) error +} + +func (f *MulticlusterFederatedAuthConfigReconcilerFuncs) ReconcileFederatedAuthConfig(clusterName string, obj *fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) (reconcile.Result, error) { + if f.OnReconcileFederatedAuthConfig == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileFederatedAuthConfig(clusterName, obj) +} + +func (f *MulticlusterFederatedAuthConfigReconcilerFuncs) ReconcileFederatedAuthConfigDeletion(clusterName string, req reconcile.Request) error { + if f.OnReconcileFederatedAuthConfigDeletion == nil { + return nil + } + return f.OnReconcileFederatedAuthConfigDeletion(clusterName, req) +} + +type MulticlusterFederatedAuthConfigReconcileLoop interface { + // AddMulticlusterFederatedAuthConfigReconciler adds a MulticlusterFederatedAuthConfigReconciler to the MulticlusterFederatedAuthConfigReconcileLoop. + AddMulticlusterFederatedAuthConfigReconciler(ctx context.Context, rec MulticlusterFederatedAuthConfigReconciler, predicates ...predicate.Predicate) +} + +type multiclusterFederatedAuthConfigReconcileLoop struct { + loop multicluster.Loop +} + +func (m *multiclusterFederatedAuthConfigReconcileLoop) AddMulticlusterFederatedAuthConfigReconciler(ctx context.Context, rec MulticlusterFederatedAuthConfigReconciler, predicates ...predicate.Predicate) { + genericReconciler := genericFederatedAuthConfigMulticlusterReconciler{reconciler: rec} + + m.loop.AddReconciler(ctx, genericReconciler, predicates...) +} + +func NewMulticlusterFederatedAuthConfigReconcileLoop(name string, cw multicluster.ClusterWatcher, options reconcile.Options) MulticlusterFederatedAuthConfigReconcileLoop { + return &multiclusterFederatedAuthConfigReconcileLoop{loop: mc_reconcile.NewLoop(name, cw, &fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig{}, options)} +} + +type genericFederatedAuthConfigMulticlusterReconciler struct { + reconciler MulticlusterFederatedAuthConfigReconciler +} + +func (g genericFederatedAuthConfigMulticlusterReconciler) ReconcileDeletion(cluster string, req reconcile.Request) error { + if deletionReconciler, ok := g.reconciler.(MulticlusterFederatedAuthConfigDeletionReconciler); ok { + return deletionReconciler.ReconcileFederatedAuthConfigDeletion(cluster, req) + } + return nil +} + +func (g genericFederatedAuthConfigMulticlusterReconciler) Reconcile(cluster string, object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: FederatedAuthConfig handler received event for %T", object) + } + return g.reconciler.ReconcileFederatedAuthConfig(cluster, obj) +} diff --git a/pkg/api/fed.enterprise.gloo.solo.io/v1/controller/reconcilers.go b/pkg/api/fed.enterprise.gloo.solo.io/v1/controller/reconcilers.go new file mode 100644 index 000000000..e3f3f8850 --- /dev/null +++ b/pkg/api/fed.enterprise.gloo.solo.io/v1/controller/reconcilers.go @@ -0,0 +1,135 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./reconcilers.go -destination mocks/reconcilers.go + +// Definitions for the Kubernetes Controllers +package controller + +import ( + "context" + + fed_enterprise_gloo_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/fed.enterprise.gloo.solo.io/v1" + + "github.com/pkg/errors" + "github.com/solo-io/skv2/pkg/ezkube" + "github.com/solo-io/skv2/pkg/reconcile" + "sigs.k8s.io/controller-runtime/pkg/manager" + "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// Reconcile Upsert events for the FederatedAuthConfig Resource. +// implemented by the user +type FederatedAuthConfigReconciler interface { + ReconcileFederatedAuthConfig(obj *fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) (reconcile.Result, error) +} + +// Reconcile deletion events for the FederatedAuthConfig Resource. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type FederatedAuthConfigDeletionReconciler interface { + ReconcileFederatedAuthConfigDeletion(req reconcile.Request) error +} + +type FederatedAuthConfigReconcilerFuncs struct { + OnReconcileFederatedAuthConfig func(obj *fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) (reconcile.Result, error) + OnReconcileFederatedAuthConfigDeletion func(req reconcile.Request) error +} + +func (f *FederatedAuthConfigReconcilerFuncs) ReconcileFederatedAuthConfig(obj *fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) (reconcile.Result, error) { + if f.OnReconcileFederatedAuthConfig == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileFederatedAuthConfig(obj) +} + +func (f *FederatedAuthConfigReconcilerFuncs) ReconcileFederatedAuthConfigDeletion(req reconcile.Request) error { + if f.OnReconcileFederatedAuthConfigDeletion == nil { + return nil + } + return f.OnReconcileFederatedAuthConfigDeletion(req) +} + +// Reconcile and finalize the FederatedAuthConfig Resource +// implemented by the user +type FederatedAuthConfigFinalizer interface { + FederatedAuthConfigReconciler + + // name of the finalizer used by this handler. + // finalizer names should be unique for a single task + FederatedAuthConfigFinalizerName() string + + // finalize the object before it is deleted. + // Watchers created with a finalizing handler will a + FinalizeFederatedAuthConfig(obj *fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) error +} + +type FederatedAuthConfigReconcileLoop interface { + RunFederatedAuthConfigReconciler(ctx context.Context, rec FederatedAuthConfigReconciler, predicates ...predicate.Predicate) error +} + +type federatedAuthConfigReconcileLoop struct { + loop reconcile.Loop +} + +func NewFederatedAuthConfigReconcileLoop(name string, mgr manager.Manager, options reconcile.Options) FederatedAuthConfigReconcileLoop { + return &federatedAuthConfigReconcileLoop{ + // empty cluster indicates this reconciler is built for the local cluster + loop: reconcile.NewLoop(name, "", mgr, &fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig{}, options), + } +} + +func (c *federatedAuthConfigReconcileLoop) RunFederatedAuthConfigReconciler(ctx context.Context, reconciler FederatedAuthConfigReconciler, predicates ...predicate.Predicate) error { + genericReconciler := genericFederatedAuthConfigReconciler{ + reconciler: reconciler, + } + + var reconcilerWrapper reconcile.Reconciler + if finalizingReconciler, ok := reconciler.(FederatedAuthConfigFinalizer); ok { + reconcilerWrapper = genericFederatedAuthConfigFinalizer{ + genericFederatedAuthConfigReconciler: genericReconciler, + finalizingReconciler: finalizingReconciler, + } + } else { + reconcilerWrapper = genericReconciler + } + return c.loop.RunReconciler(ctx, reconcilerWrapper, predicates...) +} + +// genericFederatedAuthConfigHandler implements a generic reconcile.Reconciler +type genericFederatedAuthConfigReconciler struct { + reconciler FederatedAuthConfigReconciler +} + +func (r genericFederatedAuthConfigReconciler) Reconcile(object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: FederatedAuthConfig handler received event for %T", object) + } + return r.reconciler.ReconcileFederatedAuthConfig(obj) +} + +func (r genericFederatedAuthConfigReconciler) ReconcileDeletion(request reconcile.Request) error { + if deletionReconciler, ok := r.reconciler.(FederatedAuthConfigDeletionReconciler); ok { + return deletionReconciler.ReconcileFederatedAuthConfigDeletion(request) + } + return nil +} + +// genericFederatedAuthConfigFinalizer implements a generic reconcile.FinalizingReconciler +type genericFederatedAuthConfigFinalizer struct { + genericFederatedAuthConfigReconciler + finalizingReconciler FederatedAuthConfigFinalizer +} + +func (r genericFederatedAuthConfigFinalizer) FinalizerName() string { + return r.finalizingReconciler.FederatedAuthConfigFinalizerName() +} + +func (r genericFederatedAuthConfigFinalizer) Finalize(object ezkube.Object) error { + obj, ok := object.(*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) + if !ok { + return errors.Errorf("internal error: FederatedAuthConfig handler received event for %T", object) + } + return r.finalizingReconciler.FinalizeFederatedAuthConfig(obj) +} diff --git a/pkg/api/fed.enterprise.gloo.solo.io/v1/doc.go b/pkg/api/fed.enterprise.gloo.solo.io/v1/doc.go new file mode 100644 index 000000000..252bd0d18 --- /dev/null +++ b/pkg/api/fed.enterprise.gloo.solo.io/v1/doc.go @@ -0,0 +1,6 @@ +// Code generated by skv2. DO NOT EDIT. + +// Package v1 contains API Schema definitions for the fed.enterprise.gloo.solo.io v1 API group +// +k8s:deepcopy-gen=package,register +// +groupName=fed.enterprise.gloo.solo.io +package v1 diff --git a/pkg/api/fed.enterprise.gloo.solo.io/v1/mocks/clients.go b/pkg/api/fed.enterprise.gloo.solo.io/v1/mocks/clients.go new file mode 100644 index 000000000..93220a334 --- /dev/null +++ b/pkg/api/fed.enterprise.gloo.solo.io/v1/mocks/clients.go @@ -0,0 +1,593 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./clients.go + +// Package mock_v1 is a generated GoMock package. +package mock_v1 + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.enterprise.gloo.solo.io/v1" + client "sigs.k8s.io/controller-runtime/pkg/client" +) + +// MockMulticlusterClientset is a mock of MulticlusterClientset interface. +type MockMulticlusterClientset struct { + ctrl *gomock.Controller + recorder *MockMulticlusterClientsetMockRecorder +} + +// MockMulticlusterClientsetMockRecorder is the mock recorder for MockMulticlusterClientset. +type MockMulticlusterClientsetMockRecorder struct { + mock *MockMulticlusterClientset +} + +// NewMockMulticlusterClientset creates a new mock instance. +func NewMockMulticlusterClientset(ctrl *gomock.Controller) *MockMulticlusterClientset { + mock := &MockMulticlusterClientset{ctrl: ctrl} + mock.recorder = &MockMulticlusterClientsetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterClientset) EXPECT() *MockMulticlusterClientsetMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterClientset) Cluster(cluster string) (v1.Clientset, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1.Clientset) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterClientsetMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterClientset)(nil).Cluster), cluster) +} + +// MockClientset is a mock of Clientset interface. +type MockClientset struct { + ctrl *gomock.Controller + recorder *MockClientsetMockRecorder +} + +// MockClientsetMockRecorder is the mock recorder for MockClientset. +type MockClientsetMockRecorder struct { + mock *MockClientset +} + +// NewMockClientset creates a new mock instance. +func NewMockClientset(ctrl *gomock.Controller) *MockClientset { + mock := &MockClientset{ctrl: ctrl} + mock.recorder = &MockClientsetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockClientset) EXPECT() *MockClientsetMockRecorder { + return m.recorder +} + +// FederatedAuthConfigs mocks base method. +func (m *MockClientset) FederatedAuthConfigs() v1.FederatedAuthConfigClient { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FederatedAuthConfigs") + ret0, _ := ret[0].(v1.FederatedAuthConfigClient) + return ret0 +} + +// FederatedAuthConfigs indicates an expected call of FederatedAuthConfigs. +func (mr *MockClientsetMockRecorder) FederatedAuthConfigs() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FederatedAuthConfigs", reflect.TypeOf((*MockClientset)(nil).FederatedAuthConfigs)) +} + +// MockFederatedAuthConfigReader is a mock of FederatedAuthConfigReader interface. +type MockFederatedAuthConfigReader struct { + ctrl *gomock.Controller + recorder *MockFederatedAuthConfigReaderMockRecorder +} + +// MockFederatedAuthConfigReaderMockRecorder is the mock recorder for MockFederatedAuthConfigReader. +type MockFederatedAuthConfigReaderMockRecorder struct { + mock *MockFederatedAuthConfigReader +} + +// NewMockFederatedAuthConfigReader creates a new mock instance. +func NewMockFederatedAuthConfigReader(ctrl *gomock.Controller) *MockFederatedAuthConfigReader { + mock := &MockFederatedAuthConfigReader{ctrl: ctrl} + mock.recorder = &MockFederatedAuthConfigReaderMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedAuthConfigReader) EXPECT() *MockFederatedAuthConfigReaderMockRecorder { + return m.recorder +} + +// GetFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigReader) GetFederatedAuthConfig(ctx context.Context, key client.ObjectKey) (*v1.FederatedAuthConfig, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFederatedAuthConfig", ctx, key) + ret0, _ := ret[0].(*v1.FederatedAuthConfig) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFederatedAuthConfig indicates an expected call of GetFederatedAuthConfig. +func (mr *MockFederatedAuthConfigReaderMockRecorder) GetFederatedAuthConfig(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigReader)(nil).GetFederatedAuthConfig), ctx, key) +} + +// ListFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigReader) ListFederatedAuthConfig(ctx context.Context, opts ...client.ListOption) (*v1.FederatedAuthConfigList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFederatedAuthConfig", varargs...) + ret0, _ := ret[0].(*v1.FederatedAuthConfigList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFederatedAuthConfig indicates an expected call of ListFederatedAuthConfig. +func (mr *MockFederatedAuthConfigReaderMockRecorder) ListFederatedAuthConfig(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigReader)(nil).ListFederatedAuthConfig), varargs...) +} + +// MockFederatedAuthConfigWriter is a mock of FederatedAuthConfigWriter interface. +type MockFederatedAuthConfigWriter struct { + ctrl *gomock.Controller + recorder *MockFederatedAuthConfigWriterMockRecorder +} + +// MockFederatedAuthConfigWriterMockRecorder is the mock recorder for MockFederatedAuthConfigWriter. +type MockFederatedAuthConfigWriterMockRecorder struct { + mock *MockFederatedAuthConfigWriter +} + +// NewMockFederatedAuthConfigWriter creates a new mock instance. +func NewMockFederatedAuthConfigWriter(ctrl *gomock.Controller) *MockFederatedAuthConfigWriter { + mock := &MockFederatedAuthConfigWriter{ctrl: ctrl} + mock.recorder = &MockFederatedAuthConfigWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedAuthConfigWriter) EXPECT() *MockFederatedAuthConfigWriterMockRecorder { + return m.recorder +} + +// CreateFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigWriter) CreateFederatedAuthConfig(ctx context.Context, obj *v1.FederatedAuthConfig, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateFederatedAuthConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedAuthConfig indicates an expected call of CreateFederatedAuthConfig. +func (mr *MockFederatedAuthConfigWriterMockRecorder) CreateFederatedAuthConfig(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigWriter)(nil).CreateFederatedAuthConfig), varargs...) +} + +// DeleteAllOfFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigWriter) DeleteAllOfFederatedAuthConfig(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfFederatedAuthConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfFederatedAuthConfig indicates an expected call of DeleteAllOfFederatedAuthConfig. +func (mr *MockFederatedAuthConfigWriterMockRecorder) DeleteAllOfFederatedAuthConfig(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigWriter)(nil).DeleteAllOfFederatedAuthConfig), varargs...) +} + +// DeleteFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigWriter) DeleteFederatedAuthConfig(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteFederatedAuthConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedAuthConfig indicates an expected call of DeleteFederatedAuthConfig. +func (mr *MockFederatedAuthConfigWriterMockRecorder) DeleteFederatedAuthConfig(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigWriter)(nil).DeleteFederatedAuthConfig), varargs...) +} + +// PatchFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigWriter) PatchFederatedAuthConfig(ctx context.Context, obj *v1.FederatedAuthConfig, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedAuthConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedAuthConfig indicates an expected call of PatchFederatedAuthConfig. +func (mr *MockFederatedAuthConfigWriterMockRecorder) PatchFederatedAuthConfig(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigWriter)(nil).PatchFederatedAuthConfig), varargs...) +} + +// UpdateFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigWriter) UpdateFederatedAuthConfig(ctx context.Context, obj *v1.FederatedAuthConfig, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedAuthConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedAuthConfig indicates an expected call of UpdateFederatedAuthConfig. +func (mr *MockFederatedAuthConfigWriterMockRecorder) UpdateFederatedAuthConfig(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigWriter)(nil).UpdateFederatedAuthConfig), varargs...) +} + +// UpsertFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigWriter) UpsertFederatedAuthConfig(ctx context.Context, obj *v1.FederatedAuthConfig, transitionFuncs ...v1.FederatedAuthConfigTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertFederatedAuthConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertFederatedAuthConfig indicates an expected call of UpsertFederatedAuthConfig. +func (mr *MockFederatedAuthConfigWriterMockRecorder) UpsertFederatedAuthConfig(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigWriter)(nil).UpsertFederatedAuthConfig), varargs...) +} + +// MockFederatedAuthConfigStatusWriter is a mock of FederatedAuthConfigStatusWriter interface. +type MockFederatedAuthConfigStatusWriter struct { + ctrl *gomock.Controller + recorder *MockFederatedAuthConfigStatusWriterMockRecorder +} + +// MockFederatedAuthConfigStatusWriterMockRecorder is the mock recorder for MockFederatedAuthConfigStatusWriter. +type MockFederatedAuthConfigStatusWriterMockRecorder struct { + mock *MockFederatedAuthConfigStatusWriter +} + +// NewMockFederatedAuthConfigStatusWriter creates a new mock instance. +func NewMockFederatedAuthConfigStatusWriter(ctrl *gomock.Controller) *MockFederatedAuthConfigStatusWriter { + mock := &MockFederatedAuthConfigStatusWriter{ctrl: ctrl} + mock.recorder = &MockFederatedAuthConfigStatusWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedAuthConfigStatusWriter) EXPECT() *MockFederatedAuthConfigStatusWriterMockRecorder { + return m.recorder +} + +// PatchFederatedAuthConfigStatus mocks base method. +func (m *MockFederatedAuthConfigStatusWriter) PatchFederatedAuthConfigStatus(ctx context.Context, obj *v1.FederatedAuthConfig, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedAuthConfigStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedAuthConfigStatus indicates an expected call of PatchFederatedAuthConfigStatus. +func (mr *MockFederatedAuthConfigStatusWriterMockRecorder) PatchFederatedAuthConfigStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedAuthConfigStatus", reflect.TypeOf((*MockFederatedAuthConfigStatusWriter)(nil).PatchFederatedAuthConfigStatus), varargs...) +} + +// UpdateFederatedAuthConfigStatus mocks base method. +func (m *MockFederatedAuthConfigStatusWriter) UpdateFederatedAuthConfigStatus(ctx context.Context, obj *v1.FederatedAuthConfig, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedAuthConfigStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedAuthConfigStatus indicates an expected call of UpdateFederatedAuthConfigStatus. +func (mr *MockFederatedAuthConfigStatusWriterMockRecorder) UpdateFederatedAuthConfigStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedAuthConfigStatus", reflect.TypeOf((*MockFederatedAuthConfigStatusWriter)(nil).UpdateFederatedAuthConfigStatus), varargs...) +} + +// MockFederatedAuthConfigClient is a mock of FederatedAuthConfigClient interface. +type MockFederatedAuthConfigClient struct { + ctrl *gomock.Controller + recorder *MockFederatedAuthConfigClientMockRecorder +} + +// MockFederatedAuthConfigClientMockRecorder is the mock recorder for MockFederatedAuthConfigClient. +type MockFederatedAuthConfigClientMockRecorder struct { + mock *MockFederatedAuthConfigClient +} + +// NewMockFederatedAuthConfigClient creates a new mock instance. +func NewMockFederatedAuthConfigClient(ctrl *gomock.Controller) *MockFederatedAuthConfigClient { + mock := &MockFederatedAuthConfigClient{ctrl: ctrl} + mock.recorder = &MockFederatedAuthConfigClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedAuthConfigClient) EXPECT() *MockFederatedAuthConfigClientMockRecorder { + return m.recorder +} + +// CreateFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigClient) CreateFederatedAuthConfig(ctx context.Context, obj *v1.FederatedAuthConfig, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateFederatedAuthConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedAuthConfig indicates an expected call of CreateFederatedAuthConfig. +func (mr *MockFederatedAuthConfigClientMockRecorder) CreateFederatedAuthConfig(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigClient)(nil).CreateFederatedAuthConfig), varargs...) +} + +// DeleteAllOfFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigClient) DeleteAllOfFederatedAuthConfig(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfFederatedAuthConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfFederatedAuthConfig indicates an expected call of DeleteAllOfFederatedAuthConfig. +func (mr *MockFederatedAuthConfigClientMockRecorder) DeleteAllOfFederatedAuthConfig(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigClient)(nil).DeleteAllOfFederatedAuthConfig), varargs...) +} + +// DeleteFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigClient) DeleteFederatedAuthConfig(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteFederatedAuthConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedAuthConfig indicates an expected call of DeleteFederatedAuthConfig. +func (mr *MockFederatedAuthConfigClientMockRecorder) DeleteFederatedAuthConfig(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigClient)(nil).DeleteFederatedAuthConfig), varargs...) +} + +// GetFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigClient) GetFederatedAuthConfig(ctx context.Context, key client.ObjectKey) (*v1.FederatedAuthConfig, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFederatedAuthConfig", ctx, key) + ret0, _ := ret[0].(*v1.FederatedAuthConfig) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFederatedAuthConfig indicates an expected call of GetFederatedAuthConfig. +func (mr *MockFederatedAuthConfigClientMockRecorder) GetFederatedAuthConfig(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigClient)(nil).GetFederatedAuthConfig), ctx, key) +} + +// ListFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigClient) ListFederatedAuthConfig(ctx context.Context, opts ...client.ListOption) (*v1.FederatedAuthConfigList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFederatedAuthConfig", varargs...) + ret0, _ := ret[0].(*v1.FederatedAuthConfigList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFederatedAuthConfig indicates an expected call of ListFederatedAuthConfig. +func (mr *MockFederatedAuthConfigClientMockRecorder) ListFederatedAuthConfig(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigClient)(nil).ListFederatedAuthConfig), varargs...) +} + +// PatchFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigClient) PatchFederatedAuthConfig(ctx context.Context, obj *v1.FederatedAuthConfig, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedAuthConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedAuthConfig indicates an expected call of PatchFederatedAuthConfig. +func (mr *MockFederatedAuthConfigClientMockRecorder) PatchFederatedAuthConfig(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigClient)(nil).PatchFederatedAuthConfig), varargs...) +} + +// PatchFederatedAuthConfigStatus mocks base method. +func (m *MockFederatedAuthConfigClient) PatchFederatedAuthConfigStatus(ctx context.Context, obj *v1.FederatedAuthConfig, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedAuthConfigStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedAuthConfigStatus indicates an expected call of PatchFederatedAuthConfigStatus. +func (mr *MockFederatedAuthConfigClientMockRecorder) PatchFederatedAuthConfigStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedAuthConfigStatus", reflect.TypeOf((*MockFederatedAuthConfigClient)(nil).PatchFederatedAuthConfigStatus), varargs...) +} + +// UpdateFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigClient) UpdateFederatedAuthConfig(ctx context.Context, obj *v1.FederatedAuthConfig, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedAuthConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedAuthConfig indicates an expected call of UpdateFederatedAuthConfig. +func (mr *MockFederatedAuthConfigClientMockRecorder) UpdateFederatedAuthConfig(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigClient)(nil).UpdateFederatedAuthConfig), varargs...) +} + +// UpdateFederatedAuthConfigStatus mocks base method. +func (m *MockFederatedAuthConfigClient) UpdateFederatedAuthConfigStatus(ctx context.Context, obj *v1.FederatedAuthConfig, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedAuthConfigStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedAuthConfigStatus indicates an expected call of UpdateFederatedAuthConfigStatus. +func (mr *MockFederatedAuthConfigClientMockRecorder) UpdateFederatedAuthConfigStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedAuthConfigStatus", reflect.TypeOf((*MockFederatedAuthConfigClient)(nil).UpdateFederatedAuthConfigStatus), varargs...) +} + +// UpsertFederatedAuthConfig mocks base method. +func (m *MockFederatedAuthConfigClient) UpsertFederatedAuthConfig(ctx context.Context, obj *v1.FederatedAuthConfig, transitionFuncs ...v1.FederatedAuthConfigTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertFederatedAuthConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertFederatedAuthConfig indicates an expected call of UpsertFederatedAuthConfig. +func (mr *MockFederatedAuthConfigClientMockRecorder) UpsertFederatedAuthConfig(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertFederatedAuthConfig", reflect.TypeOf((*MockFederatedAuthConfigClient)(nil).UpsertFederatedAuthConfig), varargs...) +} + +// MockMulticlusterFederatedAuthConfigClient is a mock of MulticlusterFederatedAuthConfigClient interface. +type MockMulticlusterFederatedAuthConfigClient struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedAuthConfigClientMockRecorder +} + +// MockMulticlusterFederatedAuthConfigClientMockRecorder is the mock recorder for MockMulticlusterFederatedAuthConfigClient. +type MockMulticlusterFederatedAuthConfigClientMockRecorder struct { + mock *MockMulticlusterFederatedAuthConfigClient +} + +// NewMockMulticlusterFederatedAuthConfigClient creates a new mock instance. +func NewMockMulticlusterFederatedAuthConfigClient(ctrl *gomock.Controller) *MockMulticlusterFederatedAuthConfigClient { + mock := &MockMulticlusterFederatedAuthConfigClient{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedAuthConfigClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedAuthConfigClient) EXPECT() *MockMulticlusterFederatedAuthConfigClientMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterFederatedAuthConfigClient) Cluster(cluster string) (v1.FederatedAuthConfigClient, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1.FederatedAuthConfigClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterFederatedAuthConfigClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterFederatedAuthConfigClient)(nil).Cluster), cluster) +} diff --git a/pkg/api/fed.enterprise.gloo.solo.io/v1/providers/client_providers.go b/pkg/api/fed.enterprise.gloo.solo.io/v1/providers/client_providers.go new file mode 100644 index 000000000..da6f4cf27 --- /dev/null +++ b/pkg/api/fed.enterprise.gloo.solo.io/v1/providers/client_providers.go @@ -0,0 +1,46 @@ +// Code generated by skv2. DO NOT EDIT. + +package v1 + +import ( + fed_enterprise_gloo_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/fed.enterprise.gloo.solo.io/v1" + + "k8s.io/client-go/rest" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +/* + The intention of these providers are to be used for Mocking. + They expose the Clients as interfaces, as well as factories to provide mocked versions + of the clients when they require building within a component. + + See package `github.com/solo-io/skv2/pkg/multicluster/register` for example +*/ + +// Provider for FederatedAuthConfigClient from Clientset +func FederatedAuthConfigClientFromClientsetProvider(clients fed_enterprise_gloo_solo_io_v1.Clientset) fed_enterprise_gloo_solo_io_v1.FederatedAuthConfigClient { + return clients.FederatedAuthConfigs() +} + +// Provider for FederatedAuthConfig Client from Client +func FederatedAuthConfigClientProvider(client client.Client) fed_enterprise_gloo_solo_io_v1.FederatedAuthConfigClient { + return fed_enterprise_gloo_solo_io_v1.NewFederatedAuthConfigClient(client) +} + +type FederatedAuthConfigClientFactory func(client client.Client) fed_enterprise_gloo_solo_io_v1.FederatedAuthConfigClient + +func FederatedAuthConfigClientFactoryProvider() FederatedAuthConfigClientFactory { + return FederatedAuthConfigClientProvider +} + +type FederatedAuthConfigClientFromConfigFactory func(cfg *rest.Config) (fed_enterprise_gloo_solo_io_v1.FederatedAuthConfigClient, error) + +func FederatedAuthConfigClientFromConfigFactoryProvider() FederatedAuthConfigClientFromConfigFactory { + return func(cfg *rest.Config) (fed_enterprise_gloo_solo_io_v1.FederatedAuthConfigClient, error) { + clients, err := fed_enterprise_gloo_solo_io_v1.NewClientsetFromConfig(cfg) + if err != nil { + return nil, err + } + return clients.FederatedAuthConfigs(), nil + } +} diff --git a/pkg/api/fed.enterprise.gloo.solo.io/v1/register.go b/pkg/api/fed.enterprise.gloo.solo.io/v1/register.go new file mode 100644 index 000000000..16d0555d9 --- /dev/null +++ b/pkg/api/fed.enterprise.gloo.solo.io/v1/register.go @@ -0,0 +1,33 @@ +// Code generated by skv2. DO NOT EDIT. + +// NOTE: Boilerplate only. Ignore this file. +// Used to register the Go types with the Kubernetes +// internal scheme +package v1 + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// AddToSchemes may be used to add all resources defined in the project to a Scheme + +// AddToScheme adds all Resources to the Scheme + +var ( + // SchemeGroupVersion is group version used to register these objects + SchemeGroupVersion = schema.GroupVersion{Group: "fed.enterprise.gloo.solo.io", Version: "v1"} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion} +) + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +func AddToScheme(s *runtime.Scheme) error { + return SchemeBuilder.AddToScheme(s) +} diff --git a/pkg/api/fed.enterprise.gloo.solo.io/v1/sets/mocks/sets.go b/pkg/api/fed.enterprise.gloo.solo.io/v1/sets/mocks/sets.go new file mode 100644 index 000000000..ded85853e --- /dev/null +++ b/pkg/api/fed.enterprise.gloo.solo.io/v1/sets/mocks/sets.go @@ -0,0 +1,272 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./sets.go + +// Package mock_v1sets is a generated GoMock package. +package mock_v1sets + +import ( + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + sets "github.com/solo-io/skv2/contrib/pkg/sets" + ezkube "github.com/solo-io/skv2/pkg/ezkube" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.enterprise.gloo.solo.io/v1" + v1sets "github.com/solo-io/solo-apis/pkg/api/fed.enterprise.gloo.solo.io/v1/sets" + sets0 "k8s.io/apimachinery/pkg/util/sets" +) + +// MockFederatedAuthConfigSet is a mock of FederatedAuthConfigSet interface. +type MockFederatedAuthConfigSet struct { + ctrl *gomock.Controller + recorder *MockFederatedAuthConfigSetMockRecorder +} + +// MockFederatedAuthConfigSetMockRecorder is the mock recorder for MockFederatedAuthConfigSet. +type MockFederatedAuthConfigSetMockRecorder struct { + mock *MockFederatedAuthConfigSet +} + +// NewMockFederatedAuthConfigSet creates a new mock instance. +func NewMockFederatedAuthConfigSet(ctrl *gomock.Controller) *MockFederatedAuthConfigSet { + mock := &MockFederatedAuthConfigSet{ctrl: ctrl} + mock.recorder = &MockFederatedAuthConfigSetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedAuthConfigSet) EXPECT() *MockFederatedAuthConfigSetMockRecorder { + return m.recorder +} + +// Clone mocks base method. +func (m *MockFederatedAuthConfigSet) Clone() v1sets.FederatedAuthConfigSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.FederatedAuthConfigSet) + return ret0 +} + +// Clone indicates an expected call of Clone. +func (mr *MockFederatedAuthConfigSetMockRecorder) Clone() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockFederatedAuthConfigSet)(nil).Clone)) +} + +// Delete mocks base method. +func (m *MockFederatedAuthConfigSet) Delete(federatedAuthConfig ezkube.ResourceId) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Delete", federatedAuthConfig) +} + +// Delete indicates an expected call of Delete. +func (mr *MockFederatedAuthConfigSetMockRecorder) Delete(federatedAuthConfig interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockFederatedAuthConfigSet)(nil).Delete), federatedAuthConfig) +} + +// Delta mocks base method. +func (m *MockFederatedAuthConfigSet) Delta(newSet v1sets.FederatedAuthConfigSet) sets.ResourceDelta { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) + return ret0 +} + +// Delta indicates an expected call of Delta. +func (mr *MockFederatedAuthConfigSetMockRecorder) Delta(newSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockFederatedAuthConfigSet)(nil).Delta), newSet) +} + +// Difference mocks base method. +func (m *MockFederatedAuthConfigSet) Difference(set v1sets.FederatedAuthConfigSet) v1sets.FederatedAuthConfigSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.FederatedAuthConfigSet) + return ret0 +} + +// Difference indicates an expected call of Difference. +func (mr *MockFederatedAuthConfigSetMockRecorder) Difference(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockFederatedAuthConfigSet)(nil).Difference), set) +} + +// Equal mocks base method. +func (m *MockFederatedAuthConfigSet) Equal(federatedAuthConfigSet v1sets.FederatedAuthConfigSet) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Equal", federatedAuthConfigSet) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Equal indicates an expected call of Equal. +func (mr *MockFederatedAuthConfigSetMockRecorder) Equal(federatedAuthConfigSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockFederatedAuthConfigSet)(nil).Equal), federatedAuthConfigSet) +} + +// Find mocks base method. +func (m *MockFederatedAuthConfigSet) Find(id ezkube.ResourceId) (*v1.FederatedAuthConfig, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.FederatedAuthConfig) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Find indicates an expected call of Find. +func (mr *MockFederatedAuthConfigSetMockRecorder) Find(id interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockFederatedAuthConfigSet)(nil).Find), id) +} + +// Generic mocks base method. +func (m *MockFederatedAuthConfigSet) Generic() sets.ResourceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 +} + +// Generic indicates an expected call of Generic. +func (mr *MockFederatedAuthConfigSetMockRecorder) Generic() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockFederatedAuthConfigSet)(nil).Generic)) +} + +// Has mocks base method. +func (m *MockFederatedAuthConfigSet) Has(federatedAuthConfig ezkube.ResourceId) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Has", federatedAuthConfig) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Has indicates an expected call of Has. +func (mr *MockFederatedAuthConfigSetMockRecorder) Has(federatedAuthConfig interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockFederatedAuthConfigSet)(nil).Has), federatedAuthConfig) +} + +// Insert mocks base method. +func (m *MockFederatedAuthConfigSet) Insert(federatedAuthConfig ...*v1.FederatedAuthConfig) { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range federatedAuthConfig { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) +} + +// Insert indicates an expected call of Insert. +func (mr *MockFederatedAuthConfigSetMockRecorder) Insert(federatedAuthConfig ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockFederatedAuthConfigSet)(nil).Insert), federatedAuthConfig...) +} + +// Intersection mocks base method. +func (m *MockFederatedAuthConfigSet) Intersection(set v1sets.FederatedAuthConfigSet) v1sets.FederatedAuthConfigSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Intersection", set) + ret0, _ := ret[0].(v1sets.FederatedAuthConfigSet) + return ret0 +} + +// Intersection indicates an expected call of Intersection. +func (mr *MockFederatedAuthConfigSetMockRecorder) Intersection(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockFederatedAuthConfigSet)(nil).Intersection), set) +} + +// Keys mocks base method. +func (m *MockFederatedAuthConfigSet) Keys() sets0.String { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 +} + +// Keys indicates an expected call of Keys. +func (mr *MockFederatedAuthConfigSetMockRecorder) Keys() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockFederatedAuthConfigSet)(nil).Keys)) +} + +// Length mocks base method. +func (m *MockFederatedAuthConfigSet) Length() int { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Length") + ret0, _ := ret[0].(int) + return ret0 +} + +// Length indicates an expected call of Length. +func (mr *MockFederatedAuthConfigSetMockRecorder) Length() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockFederatedAuthConfigSet)(nil).Length)) +} + +// List mocks base method. +func (m *MockFederatedAuthConfigSet) List(filterResource ...func(*v1.FederatedAuthConfig) bool) []*v1.FederatedAuthConfig { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.FederatedAuthConfig) + return ret0 +} + +// List indicates an expected call of List. +func (mr *MockFederatedAuthConfigSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockFederatedAuthConfigSet)(nil).List), filterResource...) +} + +// Map mocks base method. +func (m *MockFederatedAuthConfigSet) Map() map[string]*v1.FederatedAuthConfig { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.FederatedAuthConfig) + return ret0 +} + +// Map indicates an expected call of Map. +func (mr *MockFederatedAuthConfigSetMockRecorder) Map() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockFederatedAuthConfigSet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockFederatedAuthConfigSet) Union(set v1sets.FederatedAuthConfigSet) v1sets.FederatedAuthConfigSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.FederatedAuthConfigSet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockFederatedAuthConfigSetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockFederatedAuthConfigSet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockFederatedAuthConfigSet) UnsortedList(filterResource ...func(*v1.FederatedAuthConfig) bool) []*v1.FederatedAuthConfig { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.FederatedAuthConfig) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockFederatedAuthConfigSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockFederatedAuthConfigSet)(nil).UnsortedList), filterResource...) +} diff --git a/pkg/api/fed.enterprise.gloo.solo.io/v1/sets/sets.go b/pkg/api/fed.enterprise.gloo.solo.io/v1/sets/sets.go new file mode 100644 index 000000000..29063b1df --- /dev/null +++ b/pkg/api/fed.enterprise.gloo.solo.io/v1/sets/sets.go @@ -0,0 +1,237 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./sets.go -destination mocks/sets.go + +package v1sets + +import ( + fed_enterprise_gloo_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/fed.enterprise.gloo.solo.io/v1" + + "github.com/rotisserie/eris" + sksets "github.com/solo-io/skv2/contrib/pkg/sets" + "github.com/solo-io/skv2/pkg/ezkube" + "k8s.io/apimachinery/pkg/util/sets" +) + +type FederatedAuthConfigSet interface { + // Get the set stored keys + Keys() sets.String + // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + List(filterResource ...func(*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) bool) []*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig + // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + UnsortedList(filterResource ...func(*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) bool) []*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig + // Return the Set as a map of key to resource. + Map() map[string]*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig + // Insert a resource into the set. + Insert(federatedAuthConfig ...*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) + // Compare the equality of the keys in two sets (not the resources themselves) + Equal(federatedAuthConfigSet FederatedAuthConfigSet) bool + // Check if the set contains a key matching the resource (not the resource itself) + Has(federatedAuthConfig ezkube.ResourceId) bool + // Delete the key matching the resource + Delete(federatedAuthConfig ezkube.ResourceId) + // Return the union with the provided set + Union(set FederatedAuthConfigSet) FederatedAuthConfigSet + // Return the difference with the provided set + Difference(set FederatedAuthConfigSet) FederatedAuthConfigSet + // Return the intersection with the provided set + Intersection(set FederatedAuthConfigSet) FederatedAuthConfigSet + // Find the resource with the given ID + Find(id ezkube.ResourceId) (*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig, error) + // Get the length of the set + Length() int + // returns the generic implementation of the set + Generic() sksets.ResourceSet + // returns the delta between this and and another FederatedAuthConfigSet + Delta(newSet FederatedAuthConfigSet) sksets.ResourceDelta + // Create a deep copy of the current FederatedAuthConfigSet + Clone() FederatedAuthConfigSet +} + +func makeGenericFederatedAuthConfigSet(federatedAuthConfigList []*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) sksets.ResourceSet { + var genericResources []ezkube.ResourceId + for _, obj := range federatedAuthConfigList { + genericResources = append(genericResources, obj) + } + return sksets.NewResourceSet(genericResources...) +} + +type federatedAuthConfigSet struct { + set sksets.ResourceSet +} + +func NewFederatedAuthConfigSet(federatedAuthConfigList ...*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) FederatedAuthConfigSet { + return &federatedAuthConfigSet{set: makeGenericFederatedAuthConfigSet(federatedAuthConfigList)} +} + +func NewFederatedAuthConfigSetFromList(federatedAuthConfigList *fed_enterprise_gloo_solo_io_v1.FederatedAuthConfigList) FederatedAuthConfigSet { + list := make([]*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig, 0, len(federatedAuthConfigList.Items)) + for idx := range federatedAuthConfigList.Items { + list = append(list, &federatedAuthConfigList.Items[idx]) + } + return &federatedAuthConfigSet{set: makeGenericFederatedAuthConfigSet(list)} +} + +func (s *federatedAuthConfigSet) Keys() sets.String { + if s == nil { + return sets.String{} + } + return s.Generic().Keys() +} + +func (s *federatedAuthConfigSet) List(filterResource ...func(*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) bool) []*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig)) + }) + } + + objs := s.Generic().List(genericFilters...) + federatedAuthConfigList := make([]*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig, 0, len(objs)) + for _, obj := range objs { + federatedAuthConfigList = append(federatedAuthConfigList, obj.(*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig)) + } + return federatedAuthConfigList +} + +func (s *federatedAuthConfigSet) UnsortedList(filterResource ...func(*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) bool) []*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig)) + }) + } + + var federatedAuthConfigList []*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig + for _, obj := range s.Generic().UnsortedList(genericFilters...) { + federatedAuthConfigList = append(federatedAuthConfigList, obj.(*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig)) + } + return federatedAuthConfigList +} + +func (s *federatedAuthConfigSet) Map() map[string]*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig { + if s == nil { + return nil + } + + newMap := map[string]*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig{} + for k, v := range s.Generic().Map() { + newMap[k] = v.(*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig) + } + return newMap +} + +func (s *federatedAuthConfigSet) Insert( + federatedAuthConfigList ...*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig, +) { + if s == nil { + panic("cannot insert into nil set") + } + + for _, obj := range federatedAuthConfigList { + s.Generic().Insert(obj) + } +} + +func (s *federatedAuthConfigSet) Has(federatedAuthConfig ezkube.ResourceId) bool { + if s == nil { + return false + } + return s.Generic().Has(federatedAuthConfig) +} + +func (s *federatedAuthConfigSet) Equal( + federatedAuthConfigSet FederatedAuthConfigSet, +) bool { + if s == nil { + return federatedAuthConfigSet == nil + } + return s.Generic().Equal(federatedAuthConfigSet.Generic()) +} + +func (s *federatedAuthConfigSet) Delete(FederatedAuthConfig ezkube.ResourceId) { + if s == nil { + return + } + s.Generic().Delete(FederatedAuthConfig) +} + +func (s *federatedAuthConfigSet) Union(set FederatedAuthConfigSet) FederatedAuthConfigSet { + if s == nil { + return set + } + return NewFederatedAuthConfigSet(append(s.List(), set.List()...)...) +} + +func (s *federatedAuthConfigSet) Difference(set FederatedAuthConfigSet) FederatedAuthConfigSet { + if s == nil { + return set + } + newSet := s.Generic().Difference(set.Generic()) + return &federatedAuthConfigSet{set: newSet} +} + +func (s *federatedAuthConfigSet) Intersection(set FederatedAuthConfigSet) FederatedAuthConfigSet { + if s == nil { + return nil + } + newSet := s.Generic().Intersection(set.Generic()) + var federatedAuthConfigList []*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig + for _, obj := range newSet.List() { + federatedAuthConfigList = append(federatedAuthConfigList, obj.(*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig)) + } + return NewFederatedAuthConfigSet(federatedAuthConfigList...) +} + +func (s *federatedAuthConfigSet) Find(id ezkube.ResourceId) (*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig, error) { + if s == nil { + return nil, eris.Errorf("empty set, cannot find FederatedAuthConfig %v", sksets.Key(id)) + } + obj, err := s.Generic().Find(&fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig{}, id) + if err != nil { + return nil, err + } + + return obj.(*fed_enterprise_gloo_solo_io_v1.FederatedAuthConfig), nil +} + +func (s *federatedAuthConfigSet) Length() int { + if s == nil { + return 0 + } + return s.Generic().Length() +} + +func (s *federatedAuthConfigSet) Generic() sksets.ResourceSet { + if s == nil { + return nil + } + return s.set +} + +func (s *federatedAuthConfigSet) Delta(newSet FederatedAuthConfigSet) sksets.ResourceDelta { + if s == nil { + return sksets.ResourceDelta{ + Inserted: newSet.Generic(), + } + } + return s.Generic().Delta(newSet.Generic()) +} + +func (s *federatedAuthConfigSet) Clone() FederatedAuthConfigSet { + if s == nil { + return nil + } + return &federatedAuthConfigSet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} diff --git a/pkg/api/fed.enterprise.gloo.solo.io/v1/type_helpers.go b/pkg/api/fed.enterprise.gloo.solo.io/v1/type_helpers.go new file mode 100644 index 000000000..98e8a3e85 --- /dev/null +++ b/pkg/api/fed.enterprise.gloo.solo.io/v1/type_helpers.go @@ -0,0 +1,7 @@ +// Code generated by skv2. DO NOT EDIT. + +// Definitions for the Kubernetes types +package v1 + +// FederatedAuthConfigSlice represents a slice of *FederatedAuthConfig +type FederatedAuthConfigSlice []*FederatedAuthConfig diff --git a/pkg/api/fed.enterprise.gloo.solo.io/v1/types.go b/pkg/api/fed.enterprise.gloo.solo.io/v1/types.go new file mode 100644 index 000000000..ace71a7a4 --- /dev/null +++ b/pkg/api/fed.enterprise.gloo.solo.io/v1/types.go @@ -0,0 +1,49 @@ +// Code generated by skv2. DO NOT EDIT. + +// Definitions for the Kubernetes types +package v1 + +import ( + i5345b6a73a23b1ba71598d84ccc955e9 "github.com/solo-io/solo-apis/pkg/api/fed.enterprise.gloo.solo.io/v1/types" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:openapi-gen=true +// +kubebuilder:subresource:status + +// GroupVersionKind for FederatedAuthConfig +var FederatedAuthConfigGVK = schema.GroupVersionKind{ + Group: "fed.enterprise.gloo.solo.io", + Version: "v1", + Kind: "FederatedAuthConfig", +} + +// FederatedAuthConfig is the Schema for the federatedAuthConfig API +type FederatedAuthConfig struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec i5345b6a73a23b1ba71598d84ccc955e9.FederatedAuthConfigSpec `json:"spec,omitempty"` + Status i5345b6a73a23b1ba71598d84ccc955e9.FederatedAuthConfigStatus `json:"status,omitempty"` +} + +// GVK returns the GroupVersionKind associated with the resource type. +func (FederatedAuthConfig) GVK() schema.GroupVersionKind { + return FederatedAuthConfigGVK +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// FederatedAuthConfigList contains a list of FederatedAuthConfig +type FederatedAuthConfigList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FederatedAuthConfig `json:"items"` +} + +func init() { + SchemeBuilder.Register(&FederatedAuthConfig{}, &FederatedAuthConfigList{}) +} diff --git a/pkg/api/fed.enterprise.gloo.solo.io/v1/types/auth_config.pb.equal.go b/pkg/api/fed.enterprise.gloo.solo.io/v1/types/auth_config.pb.equal.go index 0b9cb4280..1431035d9 100644 --- a/pkg/api/fed.enterprise.gloo.solo.io/v1/types/auth_config.pb.equal.go +++ b/pkg/api/fed.enterprise.gloo.solo.io/v1/types/auth_config.pb.equal.go @@ -100,6 +100,23 @@ func (m *FederatedAuthConfigStatus) Equal(that interface{}) bool { } } + if len(m.GetNamespacedPlacementStatuses()) != len(target.GetNamespacedPlacementStatuses()) { + return false + } + for k, v := range m.GetNamespacedPlacementStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetNamespacedPlacementStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetNamespacedPlacementStatuses()[k]) { + return false + } + } + + } + return true } diff --git a/pkg/api/fed.enterprise.gloo.solo.io/v1/types/auth_config.pb.go b/pkg/api/fed.enterprise.gloo.solo.io/v1/types/auth_config.pb.go index 73e128890..3872afbaa 100644 --- a/pkg/api/fed.enterprise.gloo.solo.io/v1/types/auth_config.pb.go +++ b/pkg/api/fed.enterprise.gloo.solo.io/v1/types/auth_config.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo-fed/fed.enterprise.gloo/v1/auth_config.proto @@ -9,12 +9,12 @@ package types import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" v11 "github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1" v1 "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/core/v1" - v1alpha1 "github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1" + types "github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) @@ -26,26 +26,22 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - +// The Federated[Resource] CRDs are a gloo-fed wrapper around Gloo Edge CRDs, with a Placement field indicating which +// clusters and namespaces to federate the object to. +// For more, see: https://docs.solo.io/gloo-edge/latest/guides/gloo_federation/federated_configuration/ type FederatedAuthConfigSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Template *FederatedAuthConfigSpec_Template `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` + Placement *types.Placement `protobuf:"bytes,2,opt,name=placement,proto3" json:"placement,omitempty"` unknownFields protoimpl.UnknownFields - - Template *FederatedAuthConfigSpec_Template `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` - Placement *v1alpha1.Placement `protobuf:"bytes,2,opt,name=placement,proto3" json:"placement,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FederatedAuthConfigSpec) Reset() { *x = FederatedAuthConfigSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedAuthConfigSpec) String() string { @@ -56,7 +52,7 @@ func (*FederatedAuthConfigSpec) ProtoMessage() {} func (x *FederatedAuthConfigSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -78,7 +74,7 @@ func (x *FederatedAuthConfigSpec) GetTemplate() *FederatedAuthConfigSpec_Templat return nil } -func (x *FederatedAuthConfigSpec) GetPlacement() *v1alpha1.Placement { +func (x *FederatedAuthConfigSpec) GetPlacement() *types.Placement { if x != nil { return x.Placement } @@ -86,20 +82,18 @@ func (x *FederatedAuthConfigSpec) GetPlacement() *v1alpha1.Placement { } type FederatedAuthConfigStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PlacementStatus *v1.PlacementStatus `protobuf:"bytes,1,opt,name=placement_status,json=placementStatus,proto3" json:"placement_status,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PlacementStatus *v1.PlacementStatus `protobuf:"bytes,1,opt,name=placement_status,json=placementStatus,proto3" json:"placement_status,omitempty"` + NamespacedPlacementStatuses map[string]*v1.PlacementStatus `protobuf:"bytes,2,rep,name=namespaced_placement_statuses,json=namespacedPlacementStatuses,proto3" json:"namespaced_placement_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FederatedAuthConfigStatus) Reset() { *x = FederatedAuthConfigStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedAuthConfigStatus) String() string { @@ -110,7 +104,7 @@ func (*FederatedAuthConfigStatus) ProtoMessage() {} func (x *FederatedAuthConfigStatus) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -132,22 +126,26 @@ func (x *FederatedAuthConfigStatus) GetPlacementStatus() *v1.PlacementStatus { return nil } +func (x *FederatedAuthConfigStatus) GetNamespacedPlacementStatuses() map[string]*v1.PlacementStatus { + if x != nil { + return x.NamespacedPlacementStatuses + } + return nil +} + type FederatedAuthConfigSpec_Template struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Spec *v11.AuthConfigSpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` + Metadata *v1.TemplateMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` unknownFields protoimpl.UnknownFields - - Spec *v11.AuthConfigSpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` - Metadata *v1.TemplateMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FederatedAuthConfigSpec_Template) Reset() { *x = FederatedAuthConfigSpec_Template{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedAuthConfigSpec_Template) String() string { @@ -158,7 +156,7 @@ func (*FederatedAuthConfigSpec_Template) ProtoMessage() {} func (x *FederatedAuthConfigSpec_Template) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -189,7 +187,7 @@ func (x *FederatedAuthConfigSpec_Template) GetMetadata() *v1.TemplateMetadata { var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_rawDesc = string([]byte{ 0x0a, 0x52, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, @@ -198,88 +196,109 @@ var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_c 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1b, 0x66, 0x65, 0x64, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x52, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, - 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6b, 0x76, 0x32, 0x2d, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, - 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, - 0x65, 0x64, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6c, 0x61, 0x63, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4a, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, - 0x6f, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbd, 0x02, 0x0a, 0x17, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, - 0x65, 0x63, 0x12, 0x59, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, - 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, + 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, + 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, + 0x2f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, + 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbd, 0x02, 0x0a, + 0x17, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12, 0x59, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x66, 0x65, 0x64, + 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, 0x63, + 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, + 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x1a, 0x87, 0x01, 0x0a, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, + 0x3b, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x3e, 0x0a, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xfa, 0x02, 0x0a, + 0x19, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4c, 0x0a, 0x10, 0x70, 0x6c, + 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x87, 0x01, 0x0a, - 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x04, 0x73, 0x70, 0x65, - 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, - 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, 0x63, - 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x3e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x69, 0x0a, 0x19, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x4c, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x42, 0x53, 0x5a, 0x49, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x9b, 0x01, 0x0a, 0x1d, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x57, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x1b, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, 0x71, 0x0a, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, + 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x53, 0xb8, 0xf5, 0x04, 0x01, 0xc0, + 0xf5, 0x04, 0x01, 0x5a, 0x49, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0xb8, 0xf5, - 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_goTypes = []any{ (*FederatedAuthConfigSpec)(nil), // 0: fed.enterprise.gloo.solo.io.FederatedAuthConfigSpec (*FederatedAuthConfigStatus)(nil), // 1: fed.enterprise.gloo.solo.io.FederatedAuthConfigStatus (*FederatedAuthConfigSpec_Template)(nil), // 2: fed.enterprise.gloo.solo.io.FederatedAuthConfigSpec.Template - (*v1alpha1.Placement)(nil), // 3: multicluster.solo.io.Placement - (*v1.PlacementStatus)(nil), // 4: core.fed.solo.io.PlacementStatus - (*v11.AuthConfigSpec)(nil), // 5: enterprise.gloo.solo.io.AuthConfigSpec - (*v1.TemplateMetadata)(nil), // 6: core.fed.solo.io.TemplateMetadata + nil, // 3: fed.enterprise.gloo.solo.io.FederatedAuthConfigStatus.NamespacedPlacementStatusesEntry + (*types.Placement)(nil), // 4: multicluster.solo.io.Placement + (*v1.PlacementStatus)(nil), // 5: core.fed.solo.io.PlacementStatus + (*v11.AuthConfigSpec)(nil), // 6: enterprise.gloo.solo.io.AuthConfigSpec + (*v1.TemplateMetadata)(nil), // 7: core.fed.solo.io.TemplateMetadata } var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_depIdxs = []int32{ 2, // 0: fed.enterprise.gloo.solo.io.FederatedAuthConfigSpec.template:type_name -> fed.enterprise.gloo.solo.io.FederatedAuthConfigSpec.Template - 3, // 1: fed.enterprise.gloo.solo.io.FederatedAuthConfigSpec.placement:type_name -> multicluster.solo.io.Placement - 4, // 2: fed.enterprise.gloo.solo.io.FederatedAuthConfigStatus.placement_status:type_name -> core.fed.solo.io.PlacementStatus - 5, // 3: fed.enterprise.gloo.solo.io.FederatedAuthConfigSpec.Template.spec:type_name -> enterprise.gloo.solo.io.AuthConfigSpec - 6, // 4: fed.enterprise.gloo.solo.io.FederatedAuthConfigSpec.Template.metadata:type_name -> core.fed.solo.io.TemplateMetadata - 5, // [5:5] is the sub-list for method output_type - 5, // [5:5] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 4, // 1: fed.enterprise.gloo.solo.io.FederatedAuthConfigSpec.placement:type_name -> multicluster.solo.io.Placement + 5, // 2: fed.enterprise.gloo.solo.io.FederatedAuthConfigStatus.placement_status:type_name -> core.fed.solo.io.PlacementStatus + 3, // 3: fed.enterprise.gloo.solo.io.FederatedAuthConfigStatus.namespaced_placement_statuses:type_name -> fed.enterprise.gloo.solo.io.FederatedAuthConfigStatus.NamespacedPlacementStatusesEntry + 6, // 4: fed.enterprise.gloo.solo.io.FederatedAuthConfigSpec.Template.spec:type_name -> enterprise.gloo.solo.io.AuthConfigSpec + 7, // 5: fed.enterprise.gloo.solo.io.FederatedAuthConfigSpec.Template.metadata:type_name -> core.fed.solo.io.TemplateMetadata + 5, // 6: fed.enterprise.gloo.solo.io.FederatedAuthConfigStatus.NamespacedPlacementStatusesEntry.value:type_name -> core.fed.solo.io.PlacementStatus + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { @@ -289,51 +308,13 @@ func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_ if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedAuthConfigSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedAuthConfigStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedAuthConfigSpec_Template); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_rawDesc)), NumEnums: 0, - NumMessages: 3, + NumMessages: 4, NumExtensions: 0, NumServices: 0, }, @@ -342,7 +323,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_ MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_fed_fed_enterprise_gloo_v1_auth_config_proto_depIdxs = nil } diff --git a/pkg/api/fed.enterprise.gloo.solo.io/v1/types/auth_config.pb.hash.go b/pkg/api/fed.enterprise.gloo.solo.io/v1/types/auth_config.pb.hash.go index 3f61a9886..334f24a4a 100644 --- a/pkg/api/fed.enterprise.gloo.solo.io/v1/types/auth_config.pb.hash.go +++ b/pkg/api/fed.enterprise.gloo.solo.io/v1/types/auth_config.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FederatedAuthConfigSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,28 +43,40 @@ func (m *FederatedAuthConfigSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetPlacement()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -70,6 +86,10 @@ func (m *FederatedAuthConfigSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FederatedAuthConfigStatus) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -83,23 +103,72 @@ func (m *FederatedAuthConfigStatus) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetPlacementStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespacedPlacementStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { return 0, err } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err } + } return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FederatedAuthConfigSpec_Template) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -113,28 +182,40 @@ func (m *FederatedAuthConfigSpec_Template) Hash(hasher hash.Hash64) (uint64, err } if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/fed.enterprise.gloo.solo.io/v1/types/auth_config.pb.uniquehash.go b/pkg/api/fed.enterprise.gloo.solo.io/v1/types/auth_config.pb.uniquehash.go new file mode 100644 index 000000000..797bb6330 --- /dev/null +++ b/pkg/api/fed.enterprise.gloo.solo.io/v1/types/auth_config.pb.uniquehash.go @@ -0,0 +1,227 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.enterprise.gloo/v1/auth_config.proto + +package types + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedAuthConfigSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.enterprise.gloo.solo.io/v1/types.FederatedAuthConfigSpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPlacement()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedAuthConfigStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.enterprise.gloo.solo.io/v1/types.FederatedAuthConfigStatus")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPlacementStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespacedPlacementStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedAuthConfigSpec_Template) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.enterprise.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.enterprise.gloo.solo.io/v1/types.FederatedAuthConfigSpec_Template")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/fed.enterprise.gloo.solo.io/v1/types/json.gen.go b/pkg/api/fed.enterprise.gloo.solo.io/v1/types/json.gen.go new file mode 100644 index 000000000..e7b4f1244 --- /dev/null +++ b/pkg/api/fed.enterprise.gloo.solo.io/v1/types/json.gen.go @@ -0,0 +1,50 @@ +// Code generated by skv2. DO NOT EDIT. + +// Generated json marshal and unmarshal functions + +package types + +import ( + bytes "bytes" + fmt "fmt" + math "math" + + jsonpb "github.com/golang/protobuf/jsonpb" + proto "github.com/golang/protobuf/proto" + skv2jsonpb "github.com/solo-io/skv2/pkg/kube_jsonpb" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +var ( + marshaller = &skv2jsonpb.Marshaler{} + unmarshaller = &jsonpb.Unmarshaler{ + AllowUnknownFields: true, + } + strictUnmarshaller = &jsonpb.Unmarshaler{} +) + +// MarshalJSON is a custom marshaler for FederatedAuthConfigSpec +func (this *FederatedAuthConfigSpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for FederatedAuthConfigSpec +func (this *FederatedAuthConfigSpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for FederatedAuthConfigStatus +func (this *FederatedAuthConfigStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for FederatedAuthConfigStatus +func (this *FederatedAuthConfigStatus) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} diff --git a/pkg/api/fed.enterprise.gloo.solo.io/v1/types/proto_deepcopy.go b/pkg/api/fed.enterprise.gloo.solo.io/v1/types/proto_deepcopy.go new file mode 100644 index 000000000..ba4486168 --- /dev/null +++ b/pkg/api/fed.enterprise.gloo.solo.io/v1/types/proto_deepcopy.go @@ -0,0 +1,32 @@ +// Code generated by skv2. DO NOT EDIT. + +// This file contains generated Deepcopy methods for proto-based Spec and Status fields + +package types + +import ( + proto "github.com/golang/protobuf/proto" + "github.com/solo-io/protoc-gen-ext/pkg/clone" +) + +// DeepCopyInto for the FederatedAuthConfig.Spec +func (in *FederatedAuthConfigSpec) DeepCopyInto(out *FederatedAuthConfigSpec) { + var p *FederatedAuthConfigSpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*FederatedAuthConfigSpec) + } else { + p = proto.Clone(in).(*FederatedAuthConfigSpec) + } + *out = *p +} + +// DeepCopyInto for the FederatedAuthConfig.Status +func (in *FederatedAuthConfigStatus) DeepCopyInto(out *FederatedAuthConfigStatus) { + var p *FederatedAuthConfigStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*FederatedAuthConfigStatus) + } else { + p = proto.Clone(in).(*FederatedAuthConfigStatus) + } + *out = *p +} diff --git a/pkg/api/fed.enterprise.gloo.solo.io/v1/zz_generated.deepcopy.go b/pkg/api/fed.enterprise.gloo.solo.io/v1/zz_generated.deepcopy.go new file mode 100644 index 000000000..b53966067 --- /dev/null +++ b/pkg/api/fed.enterprise.gloo.solo.io/v1/zz_generated.deepcopy.go @@ -0,0 +1,69 @@ +// Code generated by skv2. DO NOT EDIT. + +// This file contains generated Deepcopy methods for fed.enterprise.gloo.solo.io/v1 resources + +package v1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// Generated Deepcopy methods for FederatedAuthConfig + +func (in *FederatedAuthConfig) DeepCopyInto(out *FederatedAuthConfig) { + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + + // deepcopy spec + in.Spec.DeepCopyInto(&out.Spec) + // deepcopy status + in.Status.DeepCopyInto(&out.Status) + + return +} + +func (in *FederatedAuthConfig) DeepCopy() *FederatedAuthConfig { + if in == nil { + return nil + } + out := new(FederatedAuthConfig) + in.DeepCopyInto(out) + return out +} + +func (in *FederatedAuthConfig) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +func (in *FederatedAuthConfigList) DeepCopyInto(out *FederatedAuthConfigList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FederatedAuthConfig, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +func (in *FederatedAuthConfigList) DeepCopy() *FederatedAuthConfigList { + if in == nil { + return nil + } + out := new(FederatedAuthConfigList) + in.DeepCopyInto(out) + return out +} + +func (in *FederatedAuthConfigList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} diff --git a/pkg/api/fed.gateway.solo.io/v1/clients.go b/pkg/api/fed.gateway.solo.io/v1/clients.go new file mode 100644 index 000000000..8e9e49c9e --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/clients.go @@ -0,0 +1,809 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./clients.go -destination mocks/clients.go + +package v1 + +import ( + "context" + + "github.com/solo-io/skv2/pkg/controllerutils" + "github.com/solo-io/skv2/pkg/multicluster" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/rest" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +// MulticlusterClientset for the fed.gateway.solo.io/v1 APIs +type MulticlusterClientset interface { + // Cluster returns a Clientset for the given cluster + Cluster(cluster string) (Clientset, error) +} + +type multiclusterClientset struct { + client multicluster.Client +} + +func NewMulticlusterClientset(client multicluster.Client) MulticlusterClientset { + return &multiclusterClientset{client: client} +} + +func (m *multiclusterClientset) Cluster(cluster string) (Clientset, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewClientset(client), nil +} + +// clienset for the fed.gateway.solo.io/v1 APIs +type Clientset interface { + // clienset for the fed.gateway.solo.io/v1/v1 APIs + FederatedGateways() FederatedGatewayClient + // clienset for the fed.gateway.solo.io/v1/v1 APIs + FederatedMatchableHttpGateways() FederatedMatchableHttpGatewayClient + // clienset for the fed.gateway.solo.io/v1/v1 APIs + FederatedMatchableTcpGateways() FederatedMatchableTcpGatewayClient + // clienset for the fed.gateway.solo.io/v1/v1 APIs + FederatedRouteTables() FederatedRouteTableClient + // clienset for the fed.gateway.solo.io/v1/v1 APIs + FederatedVirtualServices() FederatedVirtualServiceClient +} + +type clientSet struct { + client client.Client +} + +func NewClientsetFromConfig(cfg *rest.Config) (Clientset, error) { + scheme := scheme.Scheme + if err := SchemeBuilder.AddToScheme(scheme); err != nil { + return nil, err + } + client, err := client.New(cfg, client.Options{ + Scheme: scheme, + }) + if err != nil { + return nil, err + } + return NewClientset(client), nil +} + +func NewClientset(client client.Client) Clientset { + return &clientSet{client: client} +} + +// clienset for the fed.gateway.solo.io/v1/v1 APIs +func (c *clientSet) FederatedGateways() FederatedGatewayClient { + return NewFederatedGatewayClient(c.client) +} + +// clienset for the fed.gateway.solo.io/v1/v1 APIs +func (c *clientSet) FederatedMatchableHttpGateways() FederatedMatchableHttpGatewayClient { + return NewFederatedMatchableHttpGatewayClient(c.client) +} + +// clienset for the fed.gateway.solo.io/v1/v1 APIs +func (c *clientSet) FederatedMatchableTcpGateways() FederatedMatchableTcpGatewayClient { + return NewFederatedMatchableTcpGatewayClient(c.client) +} + +// clienset for the fed.gateway.solo.io/v1/v1 APIs +func (c *clientSet) FederatedRouteTables() FederatedRouteTableClient { + return NewFederatedRouteTableClient(c.client) +} + +// clienset for the fed.gateway.solo.io/v1/v1 APIs +func (c *clientSet) FederatedVirtualServices() FederatedVirtualServiceClient { + return NewFederatedVirtualServiceClient(c.client) +} + +// Reader knows how to read and list FederatedGateways. +type FederatedGatewayReader interface { + // Get retrieves a FederatedGateway for the given object key + GetFederatedGateway(ctx context.Context, key client.ObjectKey) (*FederatedGateway, error) + + // List retrieves list of FederatedGateways for a given namespace and list options. + ListFederatedGateway(ctx context.Context, opts ...client.ListOption) (*FederatedGatewayList, error) +} + +// FederatedGatewayTransitionFunction instructs the FederatedGatewayWriter how to transition between an existing +// FederatedGateway object and a desired on an Upsert +type FederatedGatewayTransitionFunction func(existing, desired *FederatedGateway) error + +// Writer knows how to create, delete, and update FederatedGateways. +type FederatedGatewayWriter interface { + // Create saves the FederatedGateway object. + CreateFederatedGateway(ctx context.Context, obj *FederatedGateway, opts ...client.CreateOption) error + + // Delete deletes the FederatedGateway object. + DeleteFederatedGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error + + // Update updates the given FederatedGateway object. + UpdateFederatedGateway(ctx context.Context, obj *FederatedGateway, opts ...client.UpdateOption) error + + // Patch patches the given FederatedGateway object. + PatchFederatedGateway(ctx context.Context, obj *FederatedGateway, patch client.Patch, opts ...client.PatchOption) error + + // DeleteAllOf deletes all FederatedGateway objects matching the given options. + DeleteAllOfFederatedGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error + + // Create or Update the FederatedGateway object. + UpsertFederatedGateway(ctx context.Context, obj *FederatedGateway, transitionFuncs ...FederatedGatewayTransitionFunction) error +} + +// StatusWriter knows how to update status subresource of a FederatedGateway object. +type FederatedGatewayStatusWriter interface { + // Update updates the fields corresponding to the status subresource for the + // given FederatedGateway object. + UpdateFederatedGatewayStatus(ctx context.Context, obj *FederatedGateway, opts ...client.SubResourceUpdateOption) error + + // Patch patches the given FederatedGateway object's subresource. + PatchFederatedGatewayStatus(ctx context.Context, obj *FederatedGateway, patch client.Patch, opts ...client.SubResourcePatchOption) error +} + +// Client knows how to perform CRUD operations on FederatedGateways. +type FederatedGatewayClient interface { + FederatedGatewayReader + FederatedGatewayWriter + FederatedGatewayStatusWriter +} + +type federatedGatewayClient struct { + client client.Client +} + +func NewFederatedGatewayClient(client client.Client) *federatedGatewayClient { + return &federatedGatewayClient{client: client} +} + +func (c *federatedGatewayClient) GetFederatedGateway(ctx context.Context, key client.ObjectKey) (*FederatedGateway, error) { + obj := &FederatedGateway{} + if err := c.client.Get(ctx, key, obj); err != nil { + return nil, err + } + return obj, nil +} + +func (c *federatedGatewayClient) ListFederatedGateway(ctx context.Context, opts ...client.ListOption) (*FederatedGatewayList, error) { + list := &FederatedGatewayList{} + if err := c.client.List(ctx, list, opts...); err != nil { + return nil, err + } + return list, nil +} + +func (c *federatedGatewayClient) CreateFederatedGateway(ctx context.Context, obj *FederatedGateway, opts ...client.CreateOption) error { + return c.client.Create(ctx, obj, opts...) +} + +func (c *federatedGatewayClient) DeleteFederatedGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + obj := &FederatedGateway{} + obj.SetName(key.Name) + obj.SetNamespace(key.Namespace) + return c.client.Delete(ctx, obj, opts...) +} + +func (c *federatedGatewayClient) UpdateFederatedGateway(ctx context.Context, obj *FederatedGateway, opts ...client.UpdateOption) error { + return c.client.Update(ctx, obj, opts...) +} + +func (c *federatedGatewayClient) PatchFederatedGateway(ctx context.Context, obj *FederatedGateway, patch client.Patch, opts ...client.PatchOption) error { + return c.client.Patch(ctx, obj, patch, opts...) +} + +func (c *federatedGatewayClient) DeleteAllOfFederatedGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error { + obj := &FederatedGateway{} + return c.client.DeleteAllOf(ctx, obj, opts...) +} + +func (c *federatedGatewayClient) UpsertFederatedGateway(ctx context.Context, obj *FederatedGateway, transitionFuncs ...FederatedGatewayTransitionFunction) error { + genericTxFunc := func(existing, desired runtime.Object) error { + for _, txFunc := range transitionFuncs { + if err := txFunc(existing.(*FederatedGateway), desired.(*FederatedGateway)); err != nil { + return err + } + } + return nil + } + _, err := controllerutils.Upsert(ctx, c.client, obj, genericTxFunc) + return err +} + +func (c *federatedGatewayClient) UpdateFederatedGatewayStatus(ctx context.Context, obj *FederatedGateway, opts ...client.SubResourceUpdateOption) error { + return c.client.Status().Update(ctx, obj, opts...) +} + +func (c *federatedGatewayClient) PatchFederatedGatewayStatus(ctx context.Context, obj *FederatedGateway, patch client.Patch, opts ...client.SubResourcePatchOption) error { + return c.client.Status().Patch(ctx, obj, patch, opts...) +} + +// Provides FederatedGatewayClients for multiple clusters. +type MulticlusterFederatedGatewayClient interface { + // Cluster returns a FederatedGatewayClient for the given cluster + Cluster(cluster string) (FederatedGatewayClient, error) +} + +type multiclusterFederatedGatewayClient struct { + client multicluster.Client +} + +func NewMulticlusterFederatedGatewayClient(client multicluster.Client) MulticlusterFederatedGatewayClient { + return &multiclusterFederatedGatewayClient{client: client} +} + +func (m *multiclusterFederatedGatewayClient) Cluster(cluster string) (FederatedGatewayClient, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewFederatedGatewayClient(client), nil +} + +// Reader knows how to read and list FederatedMatchableHttpGateways. +type FederatedMatchableHttpGatewayReader interface { + // Get retrieves a FederatedMatchableHttpGateway for the given object key + GetFederatedMatchableHttpGateway(ctx context.Context, key client.ObjectKey) (*FederatedMatchableHttpGateway, error) + + // List retrieves list of FederatedMatchableHttpGateways for a given namespace and list options. + ListFederatedMatchableHttpGateway(ctx context.Context, opts ...client.ListOption) (*FederatedMatchableHttpGatewayList, error) +} + +// FederatedMatchableHttpGatewayTransitionFunction instructs the FederatedMatchableHttpGatewayWriter how to transition between an existing +// FederatedMatchableHttpGateway object and a desired on an Upsert +type FederatedMatchableHttpGatewayTransitionFunction func(existing, desired *FederatedMatchableHttpGateway) error + +// Writer knows how to create, delete, and update FederatedMatchableHttpGateways. +type FederatedMatchableHttpGatewayWriter interface { + // Create saves the FederatedMatchableHttpGateway object. + CreateFederatedMatchableHttpGateway(ctx context.Context, obj *FederatedMatchableHttpGateway, opts ...client.CreateOption) error + + // Delete deletes the FederatedMatchableHttpGateway object. + DeleteFederatedMatchableHttpGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error + + // Update updates the given FederatedMatchableHttpGateway object. + UpdateFederatedMatchableHttpGateway(ctx context.Context, obj *FederatedMatchableHttpGateway, opts ...client.UpdateOption) error + + // Patch patches the given FederatedMatchableHttpGateway object. + PatchFederatedMatchableHttpGateway(ctx context.Context, obj *FederatedMatchableHttpGateway, patch client.Patch, opts ...client.PatchOption) error + + // DeleteAllOf deletes all FederatedMatchableHttpGateway objects matching the given options. + DeleteAllOfFederatedMatchableHttpGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error + + // Create or Update the FederatedMatchableHttpGateway object. + UpsertFederatedMatchableHttpGateway(ctx context.Context, obj *FederatedMatchableHttpGateway, transitionFuncs ...FederatedMatchableHttpGatewayTransitionFunction) error +} + +// StatusWriter knows how to update status subresource of a FederatedMatchableHttpGateway object. +type FederatedMatchableHttpGatewayStatusWriter interface { + // Update updates the fields corresponding to the status subresource for the + // given FederatedMatchableHttpGateway object. + UpdateFederatedMatchableHttpGatewayStatus(ctx context.Context, obj *FederatedMatchableHttpGateway, opts ...client.SubResourceUpdateOption) error + + // Patch patches the given FederatedMatchableHttpGateway object's subresource. + PatchFederatedMatchableHttpGatewayStatus(ctx context.Context, obj *FederatedMatchableHttpGateway, patch client.Patch, opts ...client.SubResourcePatchOption) error +} + +// Client knows how to perform CRUD operations on FederatedMatchableHttpGateways. +type FederatedMatchableHttpGatewayClient interface { + FederatedMatchableHttpGatewayReader + FederatedMatchableHttpGatewayWriter + FederatedMatchableHttpGatewayStatusWriter +} + +type federatedMatchableHttpGatewayClient struct { + client client.Client +} + +func NewFederatedMatchableHttpGatewayClient(client client.Client) *federatedMatchableHttpGatewayClient { + return &federatedMatchableHttpGatewayClient{client: client} +} + +func (c *federatedMatchableHttpGatewayClient) GetFederatedMatchableHttpGateway(ctx context.Context, key client.ObjectKey) (*FederatedMatchableHttpGateway, error) { + obj := &FederatedMatchableHttpGateway{} + if err := c.client.Get(ctx, key, obj); err != nil { + return nil, err + } + return obj, nil +} + +func (c *federatedMatchableHttpGatewayClient) ListFederatedMatchableHttpGateway(ctx context.Context, opts ...client.ListOption) (*FederatedMatchableHttpGatewayList, error) { + list := &FederatedMatchableHttpGatewayList{} + if err := c.client.List(ctx, list, opts...); err != nil { + return nil, err + } + return list, nil +} + +func (c *federatedMatchableHttpGatewayClient) CreateFederatedMatchableHttpGateway(ctx context.Context, obj *FederatedMatchableHttpGateway, opts ...client.CreateOption) error { + return c.client.Create(ctx, obj, opts...) +} + +func (c *federatedMatchableHttpGatewayClient) DeleteFederatedMatchableHttpGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + obj := &FederatedMatchableHttpGateway{} + obj.SetName(key.Name) + obj.SetNamespace(key.Namespace) + return c.client.Delete(ctx, obj, opts...) +} + +func (c *federatedMatchableHttpGatewayClient) UpdateFederatedMatchableHttpGateway(ctx context.Context, obj *FederatedMatchableHttpGateway, opts ...client.UpdateOption) error { + return c.client.Update(ctx, obj, opts...) +} + +func (c *federatedMatchableHttpGatewayClient) PatchFederatedMatchableHttpGateway(ctx context.Context, obj *FederatedMatchableHttpGateway, patch client.Patch, opts ...client.PatchOption) error { + return c.client.Patch(ctx, obj, patch, opts...) +} + +func (c *federatedMatchableHttpGatewayClient) DeleteAllOfFederatedMatchableHttpGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error { + obj := &FederatedMatchableHttpGateway{} + return c.client.DeleteAllOf(ctx, obj, opts...) +} + +func (c *federatedMatchableHttpGatewayClient) UpsertFederatedMatchableHttpGateway(ctx context.Context, obj *FederatedMatchableHttpGateway, transitionFuncs ...FederatedMatchableHttpGatewayTransitionFunction) error { + genericTxFunc := func(existing, desired runtime.Object) error { + for _, txFunc := range transitionFuncs { + if err := txFunc(existing.(*FederatedMatchableHttpGateway), desired.(*FederatedMatchableHttpGateway)); err != nil { + return err + } + } + return nil + } + _, err := controllerutils.Upsert(ctx, c.client, obj, genericTxFunc) + return err +} + +func (c *federatedMatchableHttpGatewayClient) UpdateFederatedMatchableHttpGatewayStatus(ctx context.Context, obj *FederatedMatchableHttpGateway, opts ...client.SubResourceUpdateOption) error { + return c.client.Status().Update(ctx, obj, opts...) +} + +func (c *federatedMatchableHttpGatewayClient) PatchFederatedMatchableHttpGatewayStatus(ctx context.Context, obj *FederatedMatchableHttpGateway, patch client.Patch, opts ...client.SubResourcePatchOption) error { + return c.client.Status().Patch(ctx, obj, patch, opts...) +} + +// Provides FederatedMatchableHttpGatewayClients for multiple clusters. +type MulticlusterFederatedMatchableHttpGatewayClient interface { + // Cluster returns a FederatedMatchableHttpGatewayClient for the given cluster + Cluster(cluster string) (FederatedMatchableHttpGatewayClient, error) +} + +type multiclusterFederatedMatchableHttpGatewayClient struct { + client multicluster.Client +} + +func NewMulticlusterFederatedMatchableHttpGatewayClient(client multicluster.Client) MulticlusterFederatedMatchableHttpGatewayClient { + return &multiclusterFederatedMatchableHttpGatewayClient{client: client} +} + +func (m *multiclusterFederatedMatchableHttpGatewayClient) Cluster(cluster string) (FederatedMatchableHttpGatewayClient, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewFederatedMatchableHttpGatewayClient(client), nil +} + +// Reader knows how to read and list FederatedMatchableTcpGateways. +type FederatedMatchableTcpGatewayReader interface { + // Get retrieves a FederatedMatchableTcpGateway for the given object key + GetFederatedMatchableTcpGateway(ctx context.Context, key client.ObjectKey) (*FederatedMatchableTcpGateway, error) + + // List retrieves list of FederatedMatchableTcpGateways for a given namespace and list options. + ListFederatedMatchableTcpGateway(ctx context.Context, opts ...client.ListOption) (*FederatedMatchableTcpGatewayList, error) +} + +// FederatedMatchableTcpGatewayTransitionFunction instructs the FederatedMatchableTcpGatewayWriter how to transition between an existing +// FederatedMatchableTcpGateway object and a desired on an Upsert +type FederatedMatchableTcpGatewayTransitionFunction func(existing, desired *FederatedMatchableTcpGateway) error + +// Writer knows how to create, delete, and update FederatedMatchableTcpGateways. +type FederatedMatchableTcpGatewayWriter interface { + // Create saves the FederatedMatchableTcpGateway object. + CreateFederatedMatchableTcpGateway(ctx context.Context, obj *FederatedMatchableTcpGateway, opts ...client.CreateOption) error + + // Delete deletes the FederatedMatchableTcpGateway object. + DeleteFederatedMatchableTcpGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error + + // Update updates the given FederatedMatchableTcpGateway object. + UpdateFederatedMatchableTcpGateway(ctx context.Context, obj *FederatedMatchableTcpGateway, opts ...client.UpdateOption) error + + // Patch patches the given FederatedMatchableTcpGateway object. + PatchFederatedMatchableTcpGateway(ctx context.Context, obj *FederatedMatchableTcpGateway, patch client.Patch, opts ...client.PatchOption) error + + // DeleteAllOf deletes all FederatedMatchableTcpGateway objects matching the given options. + DeleteAllOfFederatedMatchableTcpGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error + + // Create or Update the FederatedMatchableTcpGateway object. + UpsertFederatedMatchableTcpGateway(ctx context.Context, obj *FederatedMatchableTcpGateway, transitionFuncs ...FederatedMatchableTcpGatewayTransitionFunction) error +} + +// StatusWriter knows how to update status subresource of a FederatedMatchableTcpGateway object. +type FederatedMatchableTcpGatewayStatusWriter interface { + // Update updates the fields corresponding to the status subresource for the + // given FederatedMatchableTcpGateway object. + UpdateFederatedMatchableTcpGatewayStatus(ctx context.Context, obj *FederatedMatchableTcpGateway, opts ...client.SubResourceUpdateOption) error + + // Patch patches the given FederatedMatchableTcpGateway object's subresource. + PatchFederatedMatchableTcpGatewayStatus(ctx context.Context, obj *FederatedMatchableTcpGateway, patch client.Patch, opts ...client.SubResourcePatchOption) error +} + +// Client knows how to perform CRUD operations on FederatedMatchableTcpGateways. +type FederatedMatchableTcpGatewayClient interface { + FederatedMatchableTcpGatewayReader + FederatedMatchableTcpGatewayWriter + FederatedMatchableTcpGatewayStatusWriter +} + +type federatedMatchableTcpGatewayClient struct { + client client.Client +} + +func NewFederatedMatchableTcpGatewayClient(client client.Client) *federatedMatchableTcpGatewayClient { + return &federatedMatchableTcpGatewayClient{client: client} +} + +func (c *federatedMatchableTcpGatewayClient) GetFederatedMatchableTcpGateway(ctx context.Context, key client.ObjectKey) (*FederatedMatchableTcpGateway, error) { + obj := &FederatedMatchableTcpGateway{} + if err := c.client.Get(ctx, key, obj); err != nil { + return nil, err + } + return obj, nil +} + +func (c *federatedMatchableTcpGatewayClient) ListFederatedMatchableTcpGateway(ctx context.Context, opts ...client.ListOption) (*FederatedMatchableTcpGatewayList, error) { + list := &FederatedMatchableTcpGatewayList{} + if err := c.client.List(ctx, list, opts...); err != nil { + return nil, err + } + return list, nil +} + +func (c *federatedMatchableTcpGatewayClient) CreateFederatedMatchableTcpGateway(ctx context.Context, obj *FederatedMatchableTcpGateway, opts ...client.CreateOption) error { + return c.client.Create(ctx, obj, opts...) +} + +func (c *federatedMatchableTcpGatewayClient) DeleteFederatedMatchableTcpGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + obj := &FederatedMatchableTcpGateway{} + obj.SetName(key.Name) + obj.SetNamespace(key.Namespace) + return c.client.Delete(ctx, obj, opts...) +} + +func (c *federatedMatchableTcpGatewayClient) UpdateFederatedMatchableTcpGateway(ctx context.Context, obj *FederatedMatchableTcpGateway, opts ...client.UpdateOption) error { + return c.client.Update(ctx, obj, opts...) +} + +func (c *federatedMatchableTcpGatewayClient) PatchFederatedMatchableTcpGateway(ctx context.Context, obj *FederatedMatchableTcpGateway, patch client.Patch, opts ...client.PatchOption) error { + return c.client.Patch(ctx, obj, patch, opts...) +} + +func (c *federatedMatchableTcpGatewayClient) DeleteAllOfFederatedMatchableTcpGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error { + obj := &FederatedMatchableTcpGateway{} + return c.client.DeleteAllOf(ctx, obj, opts...) +} + +func (c *federatedMatchableTcpGatewayClient) UpsertFederatedMatchableTcpGateway(ctx context.Context, obj *FederatedMatchableTcpGateway, transitionFuncs ...FederatedMatchableTcpGatewayTransitionFunction) error { + genericTxFunc := func(existing, desired runtime.Object) error { + for _, txFunc := range transitionFuncs { + if err := txFunc(existing.(*FederatedMatchableTcpGateway), desired.(*FederatedMatchableTcpGateway)); err != nil { + return err + } + } + return nil + } + _, err := controllerutils.Upsert(ctx, c.client, obj, genericTxFunc) + return err +} + +func (c *federatedMatchableTcpGatewayClient) UpdateFederatedMatchableTcpGatewayStatus(ctx context.Context, obj *FederatedMatchableTcpGateway, opts ...client.SubResourceUpdateOption) error { + return c.client.Status().Update(ctx, obj, opts...) +} + +func (c *federatedMatchableTcpGatewayClient) PatchFederatedMatchableTcpGatewayStatus(ctx context.Context, obj *FederatedMatchableTcpGateway, patch client.Patch, opts ...client.SubResourcePatchOption) error { + return c.client.Status().Patch(ctx, obj, patch, opts...) +} + +// Provides FederatedMatchableTcpGatewayClients for multiple clusters. +type MulticlusterFederatedMatchableTcpGatewayClient interface { + // Cluster returns a FederatedMatchableTcpGatewayClient for the given cluster + Cluster(cluster string) (FederatedMatchableTcpGatewayClient, error) +} + +type multiclusterFederatedMatchableTcpGatewayClient struct { + client multicluster.Client +} + +func NewMulticlusterFederatedMatchableTcpGatewayClient(client multicluster.Client) MulticlusterFederatedMatchableTcpGatewayClient { + return &multiclusterFederatedMatchableTcpGatewayClient{client: client} +} + +func (m *multiclusterFederatedMatchableTcpGatewayClient) Cluster(cluster string) (FederatedMatchableTcpGatewayClient, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewFederatedMatchableTcpGatewayClient(client), nil +} + +// Reader knows how to read and list FederatedRouteTables. +type FederatedRouteTableReader interface { + // Get retrieves a FederatedRouteTable for the given object key + GetFederatedRouteTable(ctx context.Context, key client.ObjectKey) (*FederatedRouteTable, error) + + // List retrieves list of FederatedRouteTables for a given namespace and list options. + ListFederatedRouteTable(ctx context.Context, opts ...client.ListOption) (*FederatedRouteTableList, error) +} + +// FederatedRouteTableTransitionFunction instructs the FederatedRouteTableWriter how to transition between an existing +// FederatedRouteTable object and a desired on an Upsert +type FederatedRouteTableTransitionFunction func(existing, desired *FederatedRouteTable) error + +// Writer knows how to create, delete, and update FederatedRouteTables. +type FederatedRouteTableWriter interface { + // Create saves the FederatedRouteTable object. + CreateFederatedRouteTable(ctx context.Context, obj *FederatedRouteTable, opts ...client.CreateOption) error + + // Delete deletes the FederatedRouteTable object. + DeleteFederatedRouteTable(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error + + // Update updates the given FederatedRouteTable object. + UpdateFederatedRouteTable(ctx context.Context, obj *FederatedRouteTable, opts ...client.UpdateOption) error + + // Patch patches the given FederatedRouteTable object. + PatchFederatedRouteTable(ctx context.Context, obj *FederatedRouteTable, patch client.Patch, opts ...client.PatchOption) error + + // DeleteAllOf deletes all FederatedRouteTable objects matching the given options. + DeleteAllOfFederatedRouteTable(ctx context.Context, opts ...client.DeleteAllOfOption) error + + // Create or Update the FederatedRouteTable object. + UpsertFederatedRouteTable(ctx context.Context, obj *FederatedRouteTable, transitionFuncs ...FederatedRouteTableTransitionFunction) error +} + +// StatusWriter knows how to update status subresource of a FederatedRouteTable object. +type FederatedRouteTableStatusWriter interface { + // Update updates the fields corresponding to the status subresource for the + // given FederatedRouteTable object. + UpdateFederatedRouteTableStatus(ctx context.Context, obj *FederatedRouteTable, opts ...client.SubResourceUpdateOption) error + + // Patch patches the given FederatedRouteTable object's subresource. + PatchFederatedRouteTableStatus(ctx context.Context, obj *FederatedRouteTable, patch client.Patch, opts ...client.SubResourcePatchOption) error +} + +// Client knows how to perform CRUD operations on FederatedRouteTables. +type FederatedRouteTableClient interface { + FederatedRouteTableReader + FederatedRouteTableWriter + FederatedRouteTableStatusWriter +} + +type federatedRouteTableClient struct { + client client.Client +} + +func NewFederatedRouteTableClient(client client.Client) *federatedRouteTableClient { + return &federatedRouteTableClient{client: client} +} + +func (c *federatedRouteTableClient) GetFederatedRouteTable(ctx context.Context, key client.ObjectKey) (*FederatedRouteTable, error) { + obj := &FederatedRouteTable{} + if err := c.client.Get(ctx, key, obj); err != nil { + return nil, err + } + return obj, nil +} + +func (c *federatedRouteTableClient) ListFederatedRouteTable(ctx context.Context, opts ...client.ListOption) (*FederatedRouteTableList, error) { + list := &FederatedRouteTableList{} + if err := c.client.List(ctx, list, opts...); err != nil { + return nil, err + } + return list, nil +} + +func (c *federatedRouteTableClient) CreateFederatedRouteTable(ctx context.Context, obj *FederatedRouteTable, opts ...client.CreateOption) error { + return c.client.Create(ctx, obj, opts...) +} + +func (c *federatedRouteTableClient) DeleteFederatedRouteTable(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + obj := &FederatedRouteTable{} + obj.SetName(key.Name) + obj.SetNamespace(key.Namespace) + return c.client.Delete(ctx, obj, opts...) +} + +func (c *federatedRouteTableClient) UpdateFederatedRouteTable(ctx context.Context, obj *FederatedRouteTable, opts ...client.UpdateOption) error { + return c.client.Update(ctx, obj, opts...) +} + +func (c *federatedRouteTableClient) PatchFederatedRouteTable(ctx context.Context, obj *FederatedRouteTable, patch client.Patch, opts ...client.PatchOption) error { + return c.client.Patch(ctx, obj, patch, opts...) +} + +func (c *federatedRouteTableClient) DeleteAllOfFederatedRouteTable(ctx context.Context, opts ...client.DeleteAllOfOption) error { + obj := &FederatedRouteTable{} + return c.client.DeleteAllOf(ctx, obj, opts...) +} + +func (c *federatedRouteTableClient) UpsertFederatedRouteTable(ctx context.Context, obj *FederatedRouteTable, transitionFuncs ...FederatedRouteTableTransitionFunction) error { + genericTxFunc := func(existing, desired runtime.Object) error { + for _, txFunc := range transitionFuncs { + if err := txFunc(existing.(*FederatedRouteTable), desired.(*FederatedRouteTable)); err != nil { + return err + } + } + return nil + } + _, err := controllerutils.Upsert(ctx, c.client, obj, genericTxFunc) + return err +} + +func (c *federatedRouteTableClient) UpdateFederatedRouteTableStatus(ctx context.Context, obj *FederatedRouteTable, opts ...client.SubResourceUpdateOption) error { + return c.client.Status().Update(ctx, obj, opts...) +} + +func (c *federatedRouteTableClient) PatchFederatedRouteTableStatus(ctx context.Context, obj *FederatedRouteTable, patch client.Patch, opts ...client.SubResourcePatchOption) error { + return c.client.Status().Patch(ctx, obj, patch, opts...) +} + +// Provides FederatedRouteTableClients for multiple clusters. +type MulticlusterFederatedRouteTableClient interface { + // Cluster returns a FederatedRouteTableClient for the given cluster + Cluster(cluster string) (FederatedRouteTableClient, error) +} + +type multiclusterFederatedRouteTableClient struct { + client multicluster.Client +} + +func NewMulticlusterFederatedRouteTableClient(client multicluster.Client) MulticlusterFederatedRouteTableClient { + return &multiclusterFederatedRouteTableClient{client: client} +} + +func (m *multiclusterFederatedRouteTableClient) Cluster(cluster string) (FederatedRouteTableClient, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewFederatedRouteTableClient(client), nil +} + +// Reader knows how to read and list FederatedVirtualServices. +type FederatedVirtualServiceReader interface { + // Get retrieves a FederatedVirtualService for the given object key + GetFederatedVirtualService(ctx context.Context, key client.ObjectKey) (*FederatedVirtualService, error) + + // List retrieves list of FederatedVirtualServices for a given namespace and list options. + ListFederatedVirtualService(ctx context.Context, opts ...client.ListOption) (*FederatedVirtualServiceList, error) +} + +// FederatedVirtualServiceTransitionFunction instructs the FederatedVirtualServiceWriter how to transition between an existing +// FederatedVirtualService object and a desired on an Upsert +type FederatedVirtualServiceTransitionFunction func(existing, desired *FederatedVirtualService) error + +// Writer knows how to create, delete, and update FederatedVirtualServices. +type FederatedVirtualServiceWriter interface { + // Create saves the FederatedVirtualService object. + CreateFederatedVirtualService(ctx context.Context, obj *FederatedVirtualService, opts ...client.CreateOption) error + + // Delete deletes the FederatedVirtualService object. + DeleteFederatedVirtualService(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error + + // Update updates the given FederatedVirtualService object. + UpdateFederatedVirtualService(ctx context.Context, obj *FederatedVirtualService, opts ...client.UpdateOption) error + + // Patch patches the given FederatedVirtualService object. + PatchFederatedVirtualService(ctx context.Context, obj *FederatedVirtualService, patch client.Patch, opts ...client.PatchOption) error + + // DeleteAllOf deletes all FederatedVirtualService objects matching the given options. + DeleteAllOfFederatedVirtualService(ctx context.Context, opts ...client.DeleteAllOfOption) error + + // Create or Update the FederatedVirtualService object. + UpsertFederatedVirtualService(ctx context.Context, obj *FederatedVirtualService, transitionFuncs ...FederatedVirtualServiceTransitionFunction) error +} + +// StatusWriter knows how to update status subresource of a FederatedVirtualService object. +type FederatedVirtualServiceStatusWriter interface { + // Update updates the fields corresponding to the status subresource for the + // given FederatedVirtualService object. + UpdateFederatedVirtualServiceStatus(ctx context.Context, obj *FederatedVirtualService, opts ...client.SubResourceUpdateOption) error + + // Patch patches the given FederatedVirtualService object's subresource. + PatchFederatedVirtualServiceStatus(ctx context.Context, obj *FederatedVirtualService, patch client.Patch, opts ...client.SubResourcePatchOption) error +} + +// Client knows how to perform CRUD operations on FederatedVirtualServices. +type FederatedVirtualServiceClient interface { + FederatedVirtualServiceReader + FederatedVirtualServiceWriter + FederatedVirtualServiceStatusWriter +} + +type federatedVirtualServiceClient struct { + client client.Client +} + +func NewFederatedVirtualServiceClient(client client.Client) *federatedVirtualServiceClient { + return &federatedVirtualServiceClient{client: client} +} + +func (c *federatedVirtualServiceClient) GetFederatedVirtualService(ctx context.Context, key client.ObjectKey) (*FederatedVirtualService, error) { + obj := &FederatedVirtualService{} + if err := c.client.Get(ctx, key, obj); err != nil { + return nil, err + } + return obj, nil +} + +func (c *federatedVirtualServiceClient) ListFederatedVirtualService(ctx context.Context, opts ...client.ListOption) (*FederatedVirtualServiceList, error) { + list := &FederatedVirtualServiceList{} + if err := c.client.List(ctx, list, opts...); err != nil { + return nil, err + } + return list, nil +} + +func (c *federatedVirtualServiceClient) CreateFederatedVirtualService(ctx context.Context, obj *FederatedVirtualService, opts ...client.CreateOption) error { + return c.client.Create(ctx, obj, opts...) +} + +func (c *federatedVirtualServiceClient) DeleteFederatedVirtualService(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + obj := &FederatedVirtualService{} + obj.SetName(key.Name) + obj.SetNamespace(key.Namespace) + return c.client.Delete(ctx, obj, opts...) +} + +func (c *federatedVirtualServiceClient) UpdateFederatedVirtualService(ctx context.Context, obj *FederatedVirtualService, opts ...client.UpdateOption) error { + return c.client.Update(ctx, obj, opts...) +} + +func (c *federatedVirtualServiceClient) PatchFederatedVirtualService(ctx context.Context, obj *FederatedVirtualService, patch client.Patch, opts ...client.PatchOption) error { + return c.client.Patch(ctx, obj, patch, opts...) +} + +func (c *federatedVirtualServiceClient) DeleteAllOfFederatedVirtualService(ctx context.Context, opts ...client.DeleteAllOfOption) error { + obj := &FederatedVirtualService{} + return c.client.DeleteAllOf(ctx, obj, opts...) +} + +func (c *federatedVirtualServiceClient) UpsertFederatedVirtualService(ctx context.Context, obj *FederatedVirtualService, transitionFuncs ...FederatedVirtualServiceTransitionFunction) error { + genericTxFunc := func(existing, desired runtime.Object) error { + for _, txFunc := range transitionFuncs { + if err := txFunc(existing.(*FederatedVirtualService), desired.(*FederatedVirtualService)); err != nil { + return err + } + } + return nil + } + _, err := controllerutils.Upsert(ctx, c.client, obj, genericTxFunc) + return err +} + +func (c *federatedVirtualServiceClient) UpdateFederatedVirtualServiceStatus(ctx context.Context, obj *FederatedVirtualService, opts ...client.SubResourceUpdateOption) error { + return c.client.Status().Update(ctx, obj, opts...) +} + +func (c *federatedVirtualServiceClient) PatchFederatedVirtualServiceStatus(ctx context.Context, obj *FederatedVirtualService, patch client.Patch, opts ...client.SubResourcePatchOption) error { + return c.client.Status().Patch(ctx, obj, patch, opts...) +} + +// Provides FederatedVirtualServiceClients for multiple clusters. +type MulticlusterFederatedVirtualServiceClient interface { + // Cluster returns a FederatedVirtualServiceClient for the given cluster + Cluster(cluster string) (FederatedVirtualServiceClient, error) +} + +type multiclusterFederatedVirtualServiceClient struct { + client multicluster.Client +} + +func NewMulticlusterFederatedVirtualServiceClient(client multicluster.Client) MulticlusterFederatedVirtualServiceClient { + return &multiclusterFederatedVirtualServiceClient{client: client} +} + +func (m *multiclusterFederatedVirtualServiceClient) Cluster(cluster string) (FederatedVirtualServiceClient, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewFederatedVirtualServiceClient(client), nil +} diff --git a/pkg/api/fed.gateway.solo.io/v1/controller/event_handlers.go b/pkg/api/fed.gateway.solo.io/v1/controller/event_handlers.go new file mode 100644 index 000000000..2744deb95 --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/controller/event_handlers.go @@ -0,0 +1,553 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./event_handlers.go -destination mocks/event_handlers.go + +// Definitions for the Kubernetes Controllers +package controller + +import ( + "context" + + fed_gateway_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1" + + "github.com/pkg/errors" + "github.com/solo-io/skv2/pkg/events" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/manager" + "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// Handle events for the FederatedGateway Resource +// DEPRECATED: Prefer reconciler pattern. +type FederatedGatewayEventHandler interface { + CreateFederatedGateway(obj *fed_gateway_solo_io_v1.FederatedGateway) error + UpdateFederatedGateway(old, new *fed_gateway_solo_io_v1.FederatedGateway) error + DeleteFederatedGateway(obj *fed_gateway_solo_io_v1.FederatedGateway) error + GenericFederatedGateway(obj *fed_gateway_solo_io_v1.FederatedGateway) error +} + +type FederatedGatewayEventHandlerFuncs struct { + OnCreate func(obj *fed_gateway_solo_io_v1.FederatedGateway) error + OnUpdate func(old, new *fed_gateway_solo_io_v1.FederatedGateway) error + OnDelete func(obj *fed_gateway_solo_io_v1.FederatedGateway) error + OnGeneric func(obj *fed_gateway_solo_io_v1.FederatedGateway) error +} + +func (f *FederatedGatewayEventHandlerFuncs) CreateFederatedGateway(obj *fed_gateway_solo_io_v1.FederatedGateway) error { + if f.OnCreate == nil { + return nil + } + return f.OnCreate(obj) +} + +func (f *FederatedGatewayEventHandlerFuncs) DeleteFederatedGateway(obj *fed_gateway_solo_io_v1.FederatedGateway) error { + if f.OnDelete == nil { + return nil + } + return f.OnDelete(obj) +} + +func (f *FederatedGatewayEventHandlerFuncs) UpdateFederatedGateway(objOld, objNew *fed_gateway_solo_io_v1.FederatedGateway) error { + if f.OnUpdate == nil { + return nil + } + return f.OnUpdate(objOld, objNew) +} + +func (f *FederatedGatewayEventHandlerFuncs) GenericFederatedGateway(obj *fed_gateway_solo_io_v1.FederatedGateway) error { + if f.OnGeneric == nil { + return nil + } + return f.OnGeneric(obj) +} + +type FederatedGatewayEventWatcher interface { + AddEventHandler(ctx context.Context, h FederatedGatewayEventHandler, predicates ...predicate.Predicate) error +} + +type federatedGatewayEventWatcher struct { + watcher events.EventWatcher +} + +func NewFederatedGatewayEventWatcher(name string, mgr manager.Manager) FederatedGatewayEventWatcher { + return &federatedGatewayEventWatcher{ + watcher: events.NewWatcher(name, mgr, &fed_gateway_solo_io_v1.FederatedGateway{}), + } +} + +func (c *federatedGatewayEventWatcher) AddEventHandler(ctx context.Context, h FederatedGatewayEventHandler, predicates ...predicate.Predicate) error { + handler := genericFederatedGatewayHandler{handler: h} + if err := c.watcher.Watch(ctx, handler, predicates...); err != nil { + return err + } + return nil +} + +// genericFederatedGatewayHandler implements a generic events.EventHandler +type genericFederatedGatewayHandler struct { + handler FederatedGatewayEventHandler +} + +func (h genericFederatedGatewayHandler) Create(object client.Object) error { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedGateway) + if !ok { + return errors.Errorf("internal error: FederatedGateway handler received event for %T", object) + } + return h.handler.CreateFederatedGateway(obj) +} + +func (h genericFederatedGatewayHandler) Delete(object client.Object) error { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedGateway) + if !ok { + return errors.Errorf("internal error: FederatedGateway handler received event for %T", object) + } + return h.handler.DeleteFederatedGateway(obj) +} + +func (h genericFederatedGatewayHandler) Update(old, new client.Object) error { + objOld, ok := old.(*fed_gateway_solo_io_v1.FederatedGateway) + if !ok { + return errors.Errorf("internal error: FederatedGateway handler received event for %T", old) + } + objNew, ok := new.(*fed_gateway_solo_io_v1.FederatedGateway) + if !ok { + return errors.Errorf("internal error: FederatedGateway handler received event for %T", new) + } + return h.handler.UpdateFederatedGateway(objOld, objNew) +} + +func (h genericFederatedGatewayHandler) Generic(object client.Object) error { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedGateway) + if !ok { + return errors.Errorf("internal error: FederatedGateway handler received event for %T", object) + } + return h.handler.GenericFederatedGateway(obj) +} + +// Handle events for the FederatedMatchableHttpGateway Resource +// DEPRECATED: Prefer reconciler pattern. +type FederatedMatchableHttpGatewayEventHandler interface { + CreateFederatedMatchableHttpGateway(obj *fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) error + UpdateFederatedMatchableHttpGateway(old, new *fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) error + DeleteFederatedMatchableHttpGateway(obj *fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) error + GenericFederatedMatchableHttpGateway(obj *fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) error +} + +type FederatedMatchableHttpGatewayEventHandlerFuncs struct { + OnCreate func(obj *fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) error + OnUpdate func(old, new *fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) error + OnDelete func(obj *fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) error + OnGeneric func(obj *fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) error +} + +func (f *FederatedMatchableHttpGatewayEventHandlerFuncs) CreateFederatedMatchableHttpGateway(obj *fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) error { + if f.OnCreate == nil { + return nil + } + return f.OnCreate(obj) +} + +func (f *FederatedMatchableHttpGatewayEventHandlerFuncs) DeleteFederatedMatchableHttpGateway(obj *fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) error { + if f.OnDelete == nil { + return nil + } + return f.OnDelete(obj) +} + +func (f *FederatedMatchableHttpGatewayEventHandlerFuncs) UpdateFederatedMatchableHttpGateway(objOld, objNew *fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) error { + if f.OnUpdate == nil { + return nil + } + return f.OnUpdate(objOld, objNew) +} + +func (f *FederatedMatchableHttpGatewayEventHandlerFuncs) GenericFederatedMatchableHttpGateway(obj *fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) error { + if f.OnGeneric == nil { + return nil + } + return f.OnGeneric(obj) +} + +type FederatedMatchableHttpGatewayEventWatcher interface { + AddEventHandler(ctx context.Context, h FederatedMatchableHttpGatewayEventHandler, predicates ...predicate.Predicate) error +} + +type federatedMatchableHttpGatewayEventWatcher struct { + watcher events.EventWatcher +} + +func NewFederatedMatchableHttpGatewayEventWatcher(name string, mgr manager.Manager) FederatedMatchableHttpGatewayEventWatcher { + return &federatedMatchableHttpGatewayEventWatcher{ + watcher: events.NewWatcher(name, mgr, &fed_gateway_solo_io_v1.FederatedMatchableHttpGateway{}), + } +} + +func (c *federatedMatchableHttpGatewayEventWatcher) AddEventHandler(ctx context.Context, h FederatedMatchableHttpGatewayEventHandler, predicates ...predicate.Predicate) error { + handler := genericFederatedMatchableHttpGatewayHandler{handler: h} + if err := c.watcher.Watch(ctx, handler, predicates...); err != nil { + return err + } + return nil +} + +// genericFederatedMatchableHttpGatewayHandler implements a generic events.EventHandler +type genericFederatedMatchableHttpGatewayHandler struct { + handler FederatedMatchableHttpGatewayEventHandler +} + +func (h genericFederatedMatchableHttpGatewayHandler) Create(object client.Object) error { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) + if !ok { + return errors.Errorf("internal error: FederatedMatchableHttpGateway handler received event for %T", object) + } + return h.handler.CreateFederatedMatchableHttpGateway(obj) +} + +func (h genericFederatedMatchableHttpGatewayHandler) Delete(object client.Object) error { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) + if !ok { + return errors.Errorf("internal error: FederatedMatchableHttpGateway handler received event for %T", object) + } + return h.handler.DeleteFederatedMatchableHttpGateway(obj) +} + +func (h genericFederatedMatchableHttpGatewayHandler) Update(old, new client.Object) error { + objOld, ok := old.(*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) + if !ok { + return errors.Errorf("internal error: FederatedMatchableHttpGateway handler received event for %T", old) + } + objNew, ok := new.(*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) + if !ok { + return errors.Errorf("internal error: FederatedMatchableHttpGateway handler received event for %T", new) + } + return h.handler.UpdateFederatedMatchableHttpGateway(objOld, objNew) +} + +func (h genericFederatedMatchableHttpGatewayHandler) Generic(object client.Object) error { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) + if !ok { + return errors.Errorf("internal error: FederatedMatchableHttpGateway handler received event for %T", object) + } + return h.handler.GenericFederatedMatchableHttpGateway(obj) +} + +// Handle events for the FederatedMatchableTcpGateway Resource +// DEPRECATED: Prefer reconciler pattern. +type FederatedMatchableTcpGatewayEventHandler interface { + CreateFederatedMatchableTcpGateway(obj *fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) error + UpdateFederatedMatchableTcpGateway(old, new *fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) error + DeleteFederatedMatchableTcpGateway(obj *fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) error + GenericFederatedMatchableTcpGateway(obj *fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) error +} + +type FederatedMatchableTcpGatewayEventHandlerFuncs struct { + OnCreate func(obj *fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) error + OnUpdate func(old, new *fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) error + OnDelete func(obj *fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) error + OnGeneric func(obj *fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) error +} + +func (f *FederatedMatchableTcpGatewayEventHandlerFuncs) CreateFederatedMatchableTcpGateway(obj *fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) error { + if f.OnCreate == nil { + return nil + } + return f.OnCreate(obj) +} + +func (f *FederatedMatchableTcpGatewayEventHandlerFuncs) DeleteFederatedMatchableTcpGateway(obj *fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) error { + if f.OnDelete == nil { + return nil + } + return f.OnDelete(obj) +} + +func (f *FederatedMatchableTcpGatewayEventHandlerFuncs) UpdateFederatedMatchableTcpGateway(objOld, objNew *fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) error { + if f.OnUpdate == nil { + return nil + } + return f.OnUpdate(objOld, objNew) +} + +func (f *FederatedMatchableTcpGatewayEventHandlerFuncs) GenericFederatedMatchableTcpGateway(obj *fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) error { + if f.OnGeneric == nil { + return nil + } + return f.OnGeneric(obj) +} + +type FederatedMatchableTcpGatewayEventWatcher interface { + AddEventHandler(ctx context.Context, h FederatedMatchableTcpGatewayEventHandler, predicates ...predicate.Predicate) error +} + +type federatedMatchableTcpGatewayEventWatcher struct { + watcher events.EventWatcher +} + +func NewFederatedMatchableTcpGatewayEventWatcher(name string, mgr manager.Manager) FederatedMatchableTcpGatewayEventWatcher { + return &federatedMatchableTcpGatewayEventWatcher{ + watcher: events.NewWatcher(name, mgr, &fed_gateway_solo_io_v1.FederatedMatchableTcpGateway{}), + } +} + +func (c *federatedMatchableTcpGatewayEventWatcher) AddEventHandler(ctx context.Context, h FederatedMatchableTcpGatewayEventHandler, predicates ...predicate.Predicate) error { + handler := genericFederatedMatchableTcpGatewayHandler{handler: h} + if err := c.watcher.Watch(ctx, handler, predicates...); err != nil { + return err + } + return nil +} + +// genericFederatedMatchableTcpGatewayHandler implements a generic events.EventHandler +type genericFederatedMatchableTcpGatewayHandler struct { + handler FederatedMatchableTcpGatewayEventHandler +} + +func (h genericFederatedMatchableTcpGatewayHandler) Create(object client.Object) error { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) + if !ok { + return errors.Errorf("internal error: FederatedMatchableTcpGateway handler received event for %T", object) + } + return h.handler.CreateFederatedMatchableTcpGateway(obj) +} + +func (h genericFederatedMatchableTcpGatewayHandler) Delete(object client.Object) error { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) + if !ok { + return errors.Errorf("internal error: FederatedMatchableTcpGateway handler received event for %T", object) + } + return h.handler.DeleteFederatedMatchableTcpGateway(obj) +} + +func (h genericFederatedMatchableTcpGatewayHandler) Update(old, new client.Object) error { + objOld, ok := old.(*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) + if !ok { + return errors.Errorf("internal error: FederatedMatchableTcpGateway handler received event for %T", old) + } + objNew, ok := new.(*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) + if !ok { + return errors.Errorf("internal error: FederatedMatchableTcpGateway handler received event for %T", new) + } + return h.handler.UpdateFederatedMatchableTcpGateway(objOld, objNew) +} + +func (h genericFederatedMatchableTcpGatewayHandler) Generic(object client.Object) error { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) + if !ok { + return errors.Errorf("internal error: FederatedMatchableTcpGateway handler received event for %T", object) + } + return h.handler.GenericFederatedMatchableTcpGateway(obj) +} + +// Handle events for the FederatedRouteTable Resource +// DEPRECATED: Prefer reconciler pattern. +type FederatedRouteTableEventHandler interface { + CreateFederatedRouteTable(obj *fed_gateway_solo_io_v1.FederatedRouteTable) error + UpdateFederatedRouteTable(old, new *fed_gateway_solo_io_v1.FederatedRouteTable) error + DeleteFederatedRouteTable(obj *fed_gateway_solo_io_v1.FederatedRouteTable) error + GenericFederatedRouteTable(obj *fed_gateway_solo_io_v1.FederatedRouteTable) error +} + +type FederatedRouteTableEventHandlerFuncs struct { + OnCreate func(obj *fed_gateway_solo_io_v1.FederatedRouteTable) error + OnUpdate func(old, new *fed_gateway_solo_io_v1.FederatedRouteTable) error + OnDelete func(obj *fed_gateway_solo_io_v1.FederatedRouteTable) error + OnGeneric func(obj *fed_gateway_solo_io_v1.FederatedRouteTable) error +} + +func (f *FederatedRouteTableEventHandlerFuncs) CreateFederatedRouteTable(obj *fed_gateway_solo_io_v1.FederatedRouteTable) error { + if f.OnCreate == nil { + return nil + } + return f.OnCreate(obj) +} + +func (f *FederatedRouteTableEventHandlerFuncs) DeleteFederatedRouteTable(obj *fed_gateway_solo_io_v1.FederatedRouteTable) error { + if f.OnDelete == nil { + return nil + } + return f.OnDelete(obj) +} + +func (f *FederatedRouteTableEventHandlerFuncs) UpdateFederatedRouteTable(objOld, objNew *fed_gateway_solo_io_v1.FederatedRouteTable) error { + if f.OnUpdate == nil { + return nil + } + return f.OnUpdate(objOld, objNew) +} + +func (f *FederatedRouteTableEventHandlerFuncs) GenericFederatedRouteTable(obj *fed_gateway_solo_io_v1.FederatedRouteTable) error { + if f.OnGeneric == nil { + return nil + } + return f.OnGeneric(obj) +} + +type FederatedRouteTableEventWatcher interface { + AddEventHandler(ctx context.Context, h FederatedRouteTableEventHandler, predicates ...predicate.Predicate) error +} + +type federatedRouteTableEventWatcher struct { + watcher events.EventWatcher +} + +func NewFederatedRouteTableEventWatcher(name string, mgr manager.Manager) FederatedRouteTableEventWatcher { + return &federatedRouteTableEventWatcher{ + watcher: events.NewWatcher(name, mgr, &fed_gateway_solo_io_v1.FederatedRouteTable{}), + } +} + +func (c *federatedRouteTableEventWatcher) AddEventHandler(ctx context.Context, h FederatedRouteTableEventHandler, predicates ...predicate.Predicate) error { + handler := genericFederatedRouteTableHandler{handler: h} + if err := c.watcher.Watch(ctx, handler, predicates...); err != nil { + return err + } + return nil +} + +// genericFederatedRouteTableHandler implements a generic events.EventHandler +type genericFederatedRouteTableHandler struct { + handler FederatedRouteTableEventHandler +} + +func (h genericFederatedRouteTableHandler) Create(object client.Object) error { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedRouteTable) + if !ok { + return errors.Errorf("internal error: FederatedRouteTable handler received event for %T", object) + } + return h.handler.CreateFederatedRouteTable(obj) +} + +func (h genericFederatedRouteTableHandler) Delete(object client.Object) error { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedRouteTable) + if !ok { + return errors.Errorf("internal error: FederatedRouteTable handler received event for %T", object) + } + return h.handler.DeleteFederatedRouteTable(obj) +} + +func (h genericFederatedRouteTableHandler) Update(old, new client.Object) error { + objOld, ok := old.(*fed_gateway_solo_io_v1.FederatedRouteTable) + if !ok { + return errors.Errorf("internal error: FederatedRouteTable handler received event for %T", old) + } + objNew, ok := new.(*fed_gateway_solo_io_v1.FederatedRouteTable) + if !ok { + return errors.Errorf("internal error: FederatedRouteTable handler received event for %T", new) + } + return h.handler.UpdateFederatedRouteTable(objOld, objNew) +} + +func (h genericFederatedRouteTableHandler) Generic(object client.Object) error { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedRouteTable) + if !ok { + return errors.Errorf("internal error: FederatedRouteTable handler received event for %T", object) + } + return h.handler.GenericFederatedRouteTable(obj) +} + +// Handle events for the FederatedVirtualService Resource +// DEPRECATED: Prefer reconciler pattern. +type FederatedVirtualServiceEventHandler interface { + CreateFederatedVirtualService(obj *fed_gateway_solo_io_v1.FederatedVirtualService) error + UpdateFederatedVirtualService(old, new *fed_gateway_solo_io_v1.FederatedVirtualService) error + DeleteFederatedVirtualService(obj *fed_gateway_solo_io_v1.FederatedVirtualService) error + GenericFederatedVirtualService(obj *fed_gateway_solo_io_v1.FederatedVirtualService) error +} + +type FederatedVirtualServiceEventHandlerFuncs struct { + OnCreate func(obj *fed_gateway_solo_io_v1.FederatedVirtualService) error + OnUpdate func(old, new *fed_gateway_solo_io_v1.FederatedVirtualService) error + OnDelete func(obj *fed_gateway_solo_io_v1.FederatedVirtualService) error + OnGeneric func(obj *fed_gateway_solo_io_v1.FederatedVirtualService) error +} + +func (f *FederatedVirtualServiceEventHandlerFuncs) CreateFederatedVirtualService(obj *fed_gateway_solo_io_v1.FederatedVirtualService) error { + if f.OnCreate == nil { + return nil + } + return f.OnCreate(obj) +} + +func (f *FederatedVirtualServiceEventHandlerFuncs) DeleteFederatedVirtualService(obj *fed_gateway_solo_io_v1.FederatedVirtualService) error { + if f.OnDelete == nil { + return nil + } + return f.OnDelete(obj) +} + +func (f *FederatedVirtualServiceEventHandlerFuncs) UpdateFederatedVirtualService(objOld, objNew *fed_gateway_solo_io_v1.FederatedVirtualService) error { + if f.OnUpdate == nil { + return nil + } + return f.OnUpdate(objOld, objNew) +} + +func (f *FederatedVirtualServiceEventHandlerFuncs) GenericFederatedVirtualService(obj *fed_gateway_solo_io_v1.FederatedVirtualService) error { + if f.OnGeneric == nil { + return nil + } + return f.OnGeneric(obj) +} + +type FederatedVirtualServiceEventWatcher interface { + AddEventHandler(ctx context.Context, h FederatedVirtualServiceEventHandler, predicates ...predicate.Predicate) error +} + +type federatedVirtualServiceEventWatcher struct { + watcher events.EventWatcher +} + +func NewFederatedVirtualServiceEventWatcher(name string, mgr manager.Manager) FederatedVirtualServiceEventWatcher { + return &federatedVirtualServiceEventWatcher{ + watcher: events.NewWatcher(name, mgr, &fed_gateway_solo_io_v1.FederatedVirtualService{}), + } +} + +func (c *federatedVirtualServiceEventWatcher) AddEventHandler(ctx context.Context, h FederatedVirtualServiceEventHandler, predicates ...predicate.Predicate) error { + handler := genericFederatedVirtualServiceHandler{handler: h} + if err := c.watcher.Watch(ctx, handler, predicates...); err != nil { + return err + } + return nil +} + +// genericFederatedVirtualServiceHandler implements a generic events.EventHandler +type genericFederatedVirtualServiceHandler struct { + handler FederatedVirtualServiceEventHandler +} + +func (h genericFederatedVirtualServiceHandler) Create(object client.Object) error { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedVirtualService) + if !ok { + return errors.Errorf("internal error: FederatedVirtualService handler received event for %T", object) + } + return h.handler.CreateFederatedVirtualService(obj) +} + +func (h genericFederatedVirtualServiceHandler) Delete(object client.Object) error { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedVirtualService) + if !ok { + return errors.Errorf("internal error: FederatedVirtualService handler received event for %T", object) + } + return h.handler.DeleteFederatedVirtualService(obj) +} + +func (h genericFederatedVirtualServiceHandler) Update(old, new client.Object) error { + objOld, ok := old.(*fed_gateway_solo_io_v1.FederatedVirtualService) + if !ok { + return errors.Errorf("internal error: FederatedVirtualService handler received event for %T", old) + } + objNew, ok := new.(*fed_gateway_solo_io_v1.FederatedVirtualService) + if !ok { + return errors.Errorf("internal error: FederatedVirtualService handler received event for %T", new) + } + return h.handler.UpdateFederatedVirtualService(objOld, objNew) +} + +func (h genericFederatedVirtualServiceHandler) Generic(object client.Object) error { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedVirtualService) + if !ok { + return errors.Errorf("internal error: FederatedVirtualService handler received event for %T", object) + } + return h.handler.GenericFederatedVirtualService(obj) +} diff --git a/pkg/api/fed.gateway.solo.io/v1/controller/mocks/event_handlers.go b/pkg/api/fed.gateway.solo.io/v1/controller/mocks/event_handlers.go new file mode 100644 index 000000000..4af610093 --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/controller/mocks/event_handlers.go @@ -0,0 +1,620 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./event_handlers.go + +// Package mock_controller is a generated GoMock package. +package mock_controller + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1" + controller "github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/controller" + predicate "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// MockFederatedGatewayEventHandler is a mock of FederatedGatewayEventHandler interface. +type MockFederatedGatewayEventHandler struct { + ctrl *gomock.Controller + recorder *MockFederatedGatewayEventHandlerMockRecorder +} + +// MockFederatedGatewayEventHandlerMockRecorder is the mock recorder for MockFederatedGatewayEventHandler. +type MockFederatedGatewayEventHandlerMockRecorder struct { + mock *MockFederatedGatewayEventHandler +} + +// NewMockFederatedGatewayEventHandler creates a new mock instance. +func NewMockFederatedGatewayEventHandler(ctrl *gomock.Controller) *MockFederatedGatewayEventHandler { + mock := &MockFederatedGatewayEventHandler{ctrl: ctrl} + mock.recorder = &MockFederatedGatewayEventHandlerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedGatewayEventHandler) EXPECT() *MockFederatedGatewayEventHandlerMockRecorder { + return m.recorder +} + +// CreateFederatedGateway mocks base method. +func (m *MockFederatedGatewayEventHandler) CreateFederatedGateway(obj *v1.FederatedGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateFederatedGateway", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedGateway indicates an expected call of CreateFederatedGateway. +func (mr *MockFederatedGatewayEventHandlerMockRecorder) CreateFederatedGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedGateway", reflect.TypeOf((*MockFederatedGatewayEventHandler)(nil).CreateFederatedGateway), obj) +} + +// DeleteFederatedGateway mocks base method. +func (m *MockFederatedGatewayEventHandler) DeleteFederatedGateway(obj *v1.FederatedGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteFederatedGateway", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedGateway indicates an expected call of DeleteFederatedGateway. +func (mr *MockFederatedGatewayEventHandlerMockRecorder) DeleteFederatedGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedGateway", reflect.TypeOf((*MockFederatedGatewayEventHandler)(nil).DeleteFederatedGateway), obj) +} + +// GenericFederatedGateway mocks base method. +func (m *MockFederatedGatewayEventHandler) GenericFederatedGateway(obj *v1.FederatedGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GenericFederatedGateway", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// GenericFederatedGateway indicates an expected call of GenericFederatedGateway. +func (mr *MockFederatedGatewayEventHandlerMockRecorder) GenericFederatedGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericFederatedGateway", reflect.TypeOf((*MockFederatedGatewayEventHandler)(nil).GenericFederatedGateway), obj) +} + +// UpdateFederatedGateway mocks base method. +func (m *MockFederatedGatewayEventHandler) UpdateFederatedGateway(old, new *v1.FederatedGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateFederatedGateway", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedGateway indicates an expected call of UpdateFederatedGateway. +func (mr *MockFederatedGatewayEventHandlerMockRecorder) UpdateFederatedGateway(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedGateway", reflect.TypeOf((*MockFederatedGatewayEventHandler)(nil).UpdateFederatedGateway), old, new) +} + +// MockFederatedGatewayEventWatcher is a mock of FederatedGatewayEventWatcher interface. +type MockFederatedGatewayEventWatcher struct { + ctrl *gomock.Controller + recorder *MockFederatedGatewayEventWatcherMockRecorder +} + +// MockFederatedGatewayEventWatcherMockRecorder is the mock recorder for MockFederatedGatewayEventWatcher. +type MockFederatedGatewayEventWatcherMockRecorder struct { + mock *MockFederatedGatewayEventWatcher +} + +// NewMockFederatedGatewayEventWatcher creates a new mock instance. +func NewMockFederatedGatewayEventWatcher(ctrl *gomock.Controller) *MockFederatedGatewayEventWatcher { + mock := &MockFederatedGatewayEventWatcher{ctrl: ctrl} + mock.recorder = &MockFederatedGatewayEventWatcherMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedGatewayEventWatcher) EXPECT() *MockFederatedGatewayEventWatcherMockRecorder { + return m.recorder +} + +// AddEventHandler mocks base method. +func (m *MockFederatedGatewayEventWatcher) AddEventHandler(ctx context.Context, h controller.FederatedGatewayEventHandler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, h} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "AddEventHandler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddEventHandler indicates an expected call of AddEventHandler. +func (mr *MockFederatedGatewayEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, h}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockFederatedGatewayEventWatcher)(nil).AddEventHandler), varargs...) +} + +// MockFederatedMatchableHttpGatewayEventHandler is a mock of FederatedMatchableHttpGatewayEventHandler interface. +type MockFederatedMatchableHttpGatewayEventHandler struct { + ctrl *gomock.Controller + recorder *MockFederatedMatchableHttpGatewayEventHandlerMockRecorder +} + +// MockFederatedMatchableHttpGatewayEventHandlerMockRecorder is the mock recorder for MockFederatedMatchableHttpGatewayEventHandler. +type MockFederatedMatchableHttpGatewayEventHandlerMockRecorder struct { + mock *MockFederatedMatchableHttpGatewayEventHandler +} + +// NewMockFederatedMatchableHttpGatewayEventHandler creates a new mock instance. +func NewMockFederatedMatchableHttpGatewayEventHandler(ctrl *gomock.Controller) *MockFederatedMatchableHttpGatewayEventHandler { + mock := &MockFederatedMatchableHttpGatewayEventHandler{ctrl: ctrl} + mock.recorder = &MockFederatedMatchableHttpGatewayEventHandlerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedMatchableHttpGatewayEventHandler) EXPECT() *MockFederatedMatchableHttpGatewayEventHandlerMockRecorder { + return m.recorder +} + +// CreateFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayEventHandler) CreateFederatedMatchableHttpGateway(obj *v1.FederatedMatchableHttpGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateFederatedMatchableHttpGateway", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedMatchableHttpGateway indicates an expected call of CreateFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayEventHandlerMockRecorder) CreateFederatedMatchableHttpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayEventHandler)(nil).CreateFederatedMatchableHttpGateway), obj) +} + +// DeleteFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayEventHandler) DeleteFederatedMatchableHttpGateway(obj *v1.FederatedMatchableHttpGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteFederatedMatchableHttpGateway", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedMatchableHttpGateway indicates an expected call of DeleteFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayEventHandlerMockRecorder) DeleteFederatedMatchableHttpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayEventHandler)(nil).DeleteFederatedMatchableHttpGateway), obj) +} + +// GenericFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayEventHandler) GenericFederatedMatchableHttpGateway(obj *v1.FederatedMatchableHttpGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GenericFederatedMatchableHttpGateway", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// GenericFederatedMatchableHttpGateway indicates an expected call of GenericFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayEventHandlerMockRecorder) GenericFederatedMatchableHttpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayEventHandler)(nil).GenericFederatedMatchableHttpGateway), obj) +} + +// UpdateFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayEventHandler) UpdateFederatedMatchableHttpGateway(old, new *v1.FederatedMatchableHttpGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateFederatedMatchableHttpGateway", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedMatchableHttpGateway indicates an expected call of UpdateFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayEventHandlerMockRecorder) UpdateFederatedMatchableHttpGateway(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayEventHandler)(nil).UpdateFederatedMatchableHttpGateway), old, new) +} + +// MockFederatedMatchableHttpGatewayEventWatcher is a mock of FederatedMatchableHttpGatewayEventWatcher interface. +type MockFederatedMatchableHttpGatewayEventWatcher struct { + ctrl *gomock.Controller + recorder *MockFederatedMatchableHttpGatewayEventWatcherMockRecorder +} + +// MockFederatedMatchableHttpGatewayEventWatcherMockRecorder is the mock recorder for MockFederatedMatchableHttpGatewayEventWatcher. +type MockFederatedMatchableHttpGatewayEventWatcherMockRecorder struct { + mock *MockFederatedMatchableHttpGatewayEventWatcher +} + +// NewMockFederatedMatchableHttpGatewayEventWatcher creates a new mock instance. +func NewMockFederatedMatchableHttpGatewayEventWatcher(ctrl *gomock.Controller) *MockFederatedMatchableHttpGatewayEventWatcher { + mock := &MockFederatedMatchableHttpGatewayEventWatcher{ctrl: ctrl} + mock.recorder = &MockFederatedMatchableHttpGatewayEventWatcherMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedMatchableHttpGatewayEventWatcher) EXPECT() *MockFederatedMatchableHttpGatewayEventWatcherMockRecorder { + return m.recorder +} + +// AddEventHandler mocks base method. +func (m *MockFederatedMatchableHttpGatewayEventWatcher) AddEventHandler(ctx context.Context, h controller.FederatedMatchableHttpGatewayEventHandler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, h} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "AddEventHandler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddEventHandler indicates an expected call of AddEventHandler. +func (mr *MockFederatedMatchableHttpGatewayEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, h}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockFederatedMatchableHttpGatewayEventWatcher)(nil).AddEventHandler), varargs...) +} + +// MockFederatedMatchableTcpGatewayEventHandler is a mock of FederatedMatchableTcpGatewayEventHandler interface. +type MockFederatedMatchableTcpGatewayEventHandler struct { + ctrl *gomock.Controller + recorder *MockFederatedMatchableTcpGatewayEventHandlerMockRecorder +} + +// MockFederatedMatchableTcpGatewayEventHandlerMockRecorder is the mock recorder for MockFederatedMatchableTcpGatewayEventHandler. +type MockFederatedMatchableTcpGatewayEventHandlerMockRecorder struct { + mock *MockFederatedMatchableTcpGatewayEventHandler +} + +// NewMockFederatedMatchableTcpGatewayEventHandler creates a new mock instance. +func NewMockFederatedMatchableTcpGatewayEventHandler(ctrl *gomock.Controller) *MockFederatedMatchableTcpGatewayEventHandler { + mock := &MockFederatedMatchableTcpGatewayEventHandler{ctrl: ctrl} + mock.recorder = &MockFederatedMatchableTcpGatewayEventHandlerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedMatchableTcpGatewayEventHandler) EXPECT() *MockFederatedMatchableTcpGatewayEventHandlerMockRecorder { + return m.recorder +} + +// CreateFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayEventHandler) CreateFederatedMatchableTcpGateway(obj *v1.FederatedMatchableTcpGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateFederatedMatchableTcpGateway", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedMatchableTcpGateway indicates an expected call of CreateFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayEventHandlerMockRecorder) CreateFederatedMatchableTcpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayEventHandler)(nil).CreateFederatedMatchableTcpGateway), obj) +} + +// DeleteFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayEventHandler) DeleteFederatedMatchableTcpGateway(obj *v1.FederatedMatchableTcpGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteFederatedMatchableTcpGateway", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedMatchableTcpGateway indicates an expected call of DeleteFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayEventHandlerMockRecorder) DeleteFederatedMatchableTcpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayEventHandler)(nil).DeleteFederatedMatchableTcpGateway), obj) +} + +// GenericFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayEventHandler) GenericFederatedMatchableTcpGateway(obj *v1.FederatedMatchableTcpGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GenericFederatedMatchableTcpGateway", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// GenericFederatedMatchableTcpGateway indicates an expected call of GenericFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayEventHandlerMockRecorder) GenericFederatedMatchableTcpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayEventHandler)(nil).GenericFederatedMatchableTcpGateway), obj) +} + +// UpdateFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayEventHandler) UpdateFederatedMatchableTcpGateway(old, new *v1.FederatedMatchableTcpGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateFederatedMatchableTcpGateway", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedMatchableTcpGateway indicates an expected call of UpdateFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayEventHandlerMockRecorder) UpdateFederatedMatchableTcpGateway(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayEventHandler)(nil).UpdateFederatedMatchableTcpGateway), old, new) +} + +// MockFederatedMatchableTcpGatewayEventWatcher is a mock of FederatedMatchableTcpGatewayEventWatcher interface. +type MockFederatedMatchableTcpGatewayEventWatcher struct { + ctrl *gomock.Controller + recorder *MockFederatedMatchableTcpGatewayEventWatcherMockRecorder +} + +// MockFederatedMatchableTcpGatewayEventWatcherMockRecorder is the mock recorder for MockFederatedMatchableTcpGatewayEventWatcher. +type MockFederatedMatchableTcpGatewayEventWatcherMockRecorder struct { + mock *MockFederatedMatchableTcpGatewayEventWatcher +} + +// NewMockFederatedMatchableTcpGatewayEventWatcher creates a new mock instance. +func NewMockFederatedMatchableTcpGatewayEventWatcher(ctrl *gomock.Controller) *MockFederatedMatchableTcpGatewayEventWatcher { + mock := &MockFederatedMatchableTcpGatewayEventWatcher{ctrl: ctrl} + mock.recorder = &MockFederatedMatchableTcpGatewayEventWatcherMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedMatchableTcpGatewayEventWatcher) EXPECT() *MockFederatedMatchableTcpGatewayEventWatcherMockRecorder { + return m.recorder +} + +// AddEventHandler mocks base method. +func (m *MockFederatedMatchableTcpGatewayEventWatcher) AddEventHandler(ctx context.Context, h controller.FederatedMatchableTcpGatewayEventHandler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, h} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "AddEventHandler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddEventHandler indicates an expected call of AddEventHandler. +func (mr *MockFederatedMatchableTcpGatewayEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, h}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockFederatedMatchableTcpGatewayEventWatcher)(nil).AddEventHandler), varargs...) +} + +// MockFederatedRouteTableEventHandler is a mock of FederatedRouteTableEventHandler interface. +type MockFederatedRouteTableEventHandler struct { + ctrl *gomock.Controller + recorder *MockFederatedRouteTableEventHandlerMockRecorder +} + +// MockFederatedRouteTableEventHandlerMockRecorder is the mock recorder for MockFederatedRouteTableEventHandler. +type MockFederatedRouteTableEventHandlerMockRecorder struct { + mock *MockFederatedRouteTableEventHandler +} + +// NewMockFederatedRouteTableEventHandler creates a new mock instance. +func NewMockFederatedRouteTableEventHandler(ctrl *gomock.Controller) *MockFederatedRouteTableEventHandler { + mock := &MockFederatedRouteTableEventHandler{ctrl: ctrl} + mock.recorder = &MockFederatedRouteTableEventHandlerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedRouteTableEventHandler) EXPECT() *MockFederatedRouteTableEventHandlerMockRecorder { + return m.recorder +} + +// CreateFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableEventHandler) CreateFederatedRouteTable(obj *v1.FederatedRouteTable) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateFederatedRouteTable", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedRouteTable indicates an expected call of CreateFederatedRouteTable. +func (mr *MockFederatedRouteTableEventHandlerMockRecorder) CreateFederatedRouteTable(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableEventHandler)(nil).CreateFederatedRouteTable), obj) +} + +// DeleteFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableEventHandler) DeleteFederatedRouteTable(obj *v1.FederatedRouteTable) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteFederatedRouteTable", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedRouteTable indicates an expected call of DeleteFederatedRouteTable. +func (mr *MockFederatedRouteTableEventHandlerMockRecorder) DeleteFederatedRouteTable(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableEventHandler)(nil).DeleteFederatedRouteTable), obj) +} + +// GenericFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableEventHandler) GenericFederatedRouteTable(obj *v1.FederatedRouteTable) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GenericFederatedRouteTable", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// GenericFederatedRouteTable indicates an expected call of GenericFederatedRouteTable. +func (mr *MockFederatedRouteTableEventHandlerMockRecorder) GenericFederatedRouteTable(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableEventHandler)(nil).GenericFederatedRouteTable), obj) +} + +// UpdateFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableEventHandler) UpdateFederatedRouteTable(old, new *v1.FederatedRouteTable) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateFederatedRouteTable", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedRouteTable indicates an expected call of UpdateFederatedRouteTable. +func (mr *MockFederatedRouteTableEventHandlerMockRecorder) UpdateFederatedRouteTable(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableEventHandler)(nil).UpdateFederatedRouteTable), old, new) +} + +// MockFederatedRouteTableEventWatcher is a mock of FederatedRouteTableEventWatcher interface. +type MockFederatedRouteTableEventWatcher struct { + ctrl *gomock.Controller + recorder *MockFederatedRouteTableEventWatcherMockRecorder +} + +// MockFederatedRouteTableEventWatcherMockRecorder is the mock recorder for MockFederatedRouteTableEventWatcher. +type MockFederatedRouteTableEventWatcherMockRecorder struct { + mock *MockFederatedRouteTableEventWatcher +} + +// NewMockFederatedRouteTableEventWatcher creates a new mock instance. +func NewMockFederatedRouteTableEventWatcher(ctrl *gomock.Controller) *MockFederatedRouteTableEventWatcher { + mock := &MockFederatedRouteTableEventWatcher{ctrl: ctrl} + mock.recorder = &MockFederatedRouteTableEventWatcherMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedRouteTableEventWatcher) EXPECT() *MockFederatedRouteTableEventWatcherMockRecorder { + return m.recorder +} + +// AddEventHandler mocks base method. +func (m *MockFederatedRouteTableEventWatcher) AddEventHandler(ctx context.Context, h controller.FederatedRouteTableEventHandler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, h} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "AddEventHandler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddEventHandler indicates an expected call of AddEventHandler. +func (mr *MockFederatedRouteTableEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, h}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockFederatedRouteTableEventWatcher)(nil).AddEventHandler), varargs...) +} + +// MockFederatedVirtualServiceEventHandler is a mock of FederatedVirtualServiceEventHandler interface. +type MockFederatedVirtualServiceEventHandler struct { + ctrl *gomock.Controller + recorder *MockFederatedVirtualServiceEventHandlerMockRecorder +} + +// MockFederatedVirtualServiceEventHandlerMockRecorder is the mock recorder for MockFederatedVirtualServiceEventHandler. +type MockFederatedVirtualServiceEventHandlerMockRecorder struct { + mock *MockFederatedVirtualServiceEventHandler +} + +// NewMockFederatedVirtualServiceEventHandler creates a new mock instance. +func NewMockFederatedVirtualServiceEventHandler(ctrl *gomock.Controller) *MockFederatedVirtualServiceEventHandler { + mock := &MockFederatedVirtualServiceEventHandler{ctrl: ctrl} + mock.recorder = &MockFederatedVirtualServiceEventHandlerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedVirtualServiceEventHandler) EXPECT() *MockFederatedVirtualServiceEventHandlerMockRecorder { + return m.recorder +} + +// CreateFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceEventHandler) CreateFederatedVirtualService(obj *v1.FederatedVirtualService) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateFederatedVirtualService", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedVirtualService indicates an expected call of CreateFederatedVirtualService. +func (mr *MockFederatedVirtualServiceEventHandlerMockRecorder) CreateFederatedVirtualService(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceEventHandler)(nil).CreateFederatedVirtualService), obj) +} + +// DeleteFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceEventHandler) DeleteFederatedVirtualService(obj *v1.FederatedVirtualService) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteFederatedVirtualService", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedVirtualService indicates an expected call of DeleteFederatedVirtualService. +func (mr *MockFederatedVirtualServiceEventHandlerMockRecorder) DeleteFederatedVirtualService(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceEventHandler)(nil).DeleteFederatedVirtualService), obj) +} + +// GenericFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceEventHandler) GenericFederatedVirtualService(obj *v1.FederatedVirtualService) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GenericFederatedVirtualService", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// GenericFederatedVirtualService indicates an expected call of GenericFederatedVirtualService. +func (mr *MockFederatedVirtualServiceEventHandlerMockRecorder) GenericFederatedVirtualService(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceEventHandler)(nil).GenericFederatedVirtualService), obj) +} + +// UpdateFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceEventHandler) UpdateFederatedVirtualService(old, new *v1.FederatedVirtualService) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateFederatedVirtualService", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedVirtualService indicates an expected call of UpdateFederatedVirtualService. +func (mr *MockFederatedVirtualServiceEventHandlerMockRecorder) UpdateFederatedVirtualService(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceEventHandler)(nil).UpdateFederatedVirtualService), old, new) +} + +// MockFederatedVirtualServiceEventWatcher is a mock of FederatedVirtualServiceEventWatcher interface. +type MockFederatedVirtualServiceEventWatcher struct { + ctrl *gomock.Controller + recorder *MockFederatedVirtualServiceEventWatcherMockRecorder +} + +// MockFederatedVirtualServiceEventWatcherMockRecorder is the mock recorder for MockFederatedVirtualServiceEventWatcher. +type MockFederatedVirtualServiceEventWatcherMockRecorder struct { + mock *MockFederatedVirtualServiceEventWatcher +} + +// NewMockFederatedVirtualServiceEventWatcher creates a new mock instance. +func NewMockFederatedVirtualServiceEventWatcher(ctrl *gomock.Controller) *MockFederatedVirtualServiceEventWatcher { + mock := &MockFederatedVirtualServiceEventWatcher{ctrl: ctrl} + mock.recorder = &MockFederatedVirtualServiceEventWatcherMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedVirtualServiceEventWatcher) EXPECT() *MockFederatedVirtualServiceEventWatcherMockRecorder { + return m.recorder +} + +// AddEventHandler mocks base method. +func (m *MockFederatedVirtualServiceEventWatcher) AddEventHandler(ctx context.Context, h controller.FederatedVirtualServiceEventHandler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, h} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "AddEventHandler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddEventHandler indicates an expected call of AddEventHandler. +func (mr *MockFederatedVirtualServiceEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, h}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockFederatedVirtualServiceEventWatcher)(nil).AddEventHandler), varargs...) +} diff --git a/pkg/api/fed.gateway.solo.io/v1/controller/mocks/multicluster_reconcilers.go b/pkg/api/fed.gateway.solo.io/v1/controller/mocks/multicluster_reconcilers.go new file mode 100644 index 000000000..7515dfe59 --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/controller/mocks/multicluster_reconcilers.go @@ -0,0 +1,591 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./multicluster_reconcilers.go + +// Package mock_controller is a generated GoMock package. +package mock_controller + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + reconcile "github.com/solo-io/skv2/pkg/reconcile" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1" + controller "github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/controller" + predicate "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// MockMulticlusterFederatedGatewayReconciler is a mock of MulticlusterFederatedGatewayReconciler interface. +type MockMulticlusterFederatedGatewayReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedGatewayReconcilerMockRecorder +} + +// MockMulticlusterFederatedGatewayReconcilerMockRecorder is the mock recorder for MockMulticlusterFederatedGatewayReconciler. +type MockMulticlusterFederatedGatewayReconcilerMockRecorder struct { + mock *MockMulticlusterFederatedGatewayReconciler +} + +// NewMockMulticlusterFederatedGatewayReconciler creates a new mock instance. +func NewMockMulticlusterFederatedGatewayReconciler(ctrl *gomock.Controller) *MockMulticlusterFederatedGatewayReconciler { + mock := &MockMulticlusterFederatedGatewayReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedGatewayReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedGatewayReconciler) EXPECT() *MockMulticlusterFederatedGatewayReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedGateway mocks base method. +func (m *MockMulticlusterFederatedGatewayReconciler) ReconcileFederatedGateway(clusterName string, obj *v1.FederatedGateway) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedGateway", clusterName, obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedGateway indicates an expected call of ReconcileFederatedGateway. +func (mr *MockMulticlusterFederatedGatewayReconcilerMockRecorder) ReconcileFederatedGateway(clusterName, obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedGateway", reflect.TypeOf((*MockMulticlusterFederatedGatewayReconciler)(nil).ReconcileFederatedGateway), clusterName, obj) +} + +// MockMulticlusterFederatedGatewayDeletionReconciler is a mock of MulticlusterFederatedGatewayDeletionReconciler interface. +type MockMulticlusterFederatedGatewayDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedGatewayDeletionReconcilerMockRecorder +} + +// MockMulticlusterFederatedGatewayDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterFederatedGatewayDeletionReconciler. +type MockMulticlusterFederatedGatewayDeletionReconcilerMockRecorder struct { + mock *MockMulticlusterFederatedGatewayDeletionReconciler +} + +// NewMockMulticlusterFederatedGatewayDeletionReconciler creates a new mock instance. +func NewMockMulticlusterFederatedGatewayDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterFederatedGatewayDeletionReconciler { + mock := &MockMulticlusterFederatedGatewayDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedGatewayDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedGatewayDeletionReconciler) EXPECT() *MockMulticlusterFederatedGatewayDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedGatewayDeletion mocks base method. +func (m *MockMulticlusterFederatedGatewayDeletionReconciler) ReconcileFederatedGatewayDeletion(clusterName string, req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedGatewayDeletion", clusterName, req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileFederatedGatewayDeletion indicates an expected call of ReconcileFederatedGatewayDeletion. +func (mr *MockMulticlusterFederatedGatewayDeletionReconcilerMockRecorder) ReconcileFederatedGatewayDeletion(clusterName, req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedGatewayDeletion", reflect.TypeOf((*MockMulticlusterFederatedGatewayDeletionReconciler)(nil).ReconcileFederatedGatewayDeletion), clusterName, req) +} + +// MockMulticlusterFederatedGatewayReconcileLoop is a mock of MulticlusterFederatedGatewayReconcileLoop interface. +type MockMulticlusterFederatedGatewayReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedGatewayReconcileLoopMockRecorder +} + +// MockMulticlusterFederatedGatewayReconcileLoopMockRecorder is the mock recorder for MockMulticlusterFederatedGatewayReconcileLoop. +type MockMulticlusterFederatedGatewayReconcileLoopMockRecorder struct { + mock *MockMulticlusterFederatedGatewayReconcileLoop +} + +// NewMockMulticlusterFederatedGatewayReconcileLoop creates a new mock instance. +func NewMockMulticlusterFederatedGatewayReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterFederatedGatewayReconcileLoop { + mock := &MockMulticlusterFederatedGatewayReconcileLoop{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedGatewayReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedGatewayReconcileLoop) EXPECT() *MockMulticlusterFederatedGatewayReconcileLoopMockRecorder { + return m.recorder +} + +// AddMulticlusterFederatedGatewayReconciler mocks base method. +func (m *MockMulticlusterFederatedGatewayReconcileLoop) AddMulticlusterFederatedGatewayReconciler(ctx context.Context, rec controller.MulticlusterFederatedGatewayReconciler, predicates ...predicate.Predicate) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "AddMulticlusterFederatedGatewayReconciler", varargs...) +} + +// AddMulticlusterFederatedGatewayReconciler indicates an expected call of AddMulticlusterFederatedGatewayReconciler. +func (mr *MockMulticlusterFederatedGatewayReconcileLoopMockRecorder) AddMulticlusterFederatedGatewayReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterFederatedGatewayReconciler", reflect.TypeOf((*MockMulticlusterFederatedGatewayReconcileLoop)(nil).AddMulticlusterFederatedGatewayReconciler), varargs...) +} + +// MockMulticlusterFederatedMatchableHttpGatewayReconciler is a mock of MulticlusterFederatedMatchableHttpGatewayReconciler interface. +type MockMulticlusterFederatedMatchableHttpGatewayReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedMatchableHttpGatewayReconcilerMockRecorder +} + +// MockMulticlusterFederatedMatchableHttpGatewayReconcilerMockRecorder is the mock recorder for MockMulticlusterFederatedMatchableHttpGatewayReconciler. +type MockMulticlusterFederatedMatchableHttpGatewayReconcilerMockRecorder struct { + mock *MockMulticlusterFederatedMatchableHttpGatewayReconciler +} + +// NewMockMulticlusterFederatedMatchableHttpGatewayReconciler creates a new mock instance. +func NewMockMulticlusterFederatedMatchableHttpGatewayReconciler(ctrl *gomock.Controller) *MockMulticlusterFederatedMatchableHttpGatewayReconciler { + mock := &MockMulticlusterFederatedMatchableHttpGatewayReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedMatchableHttpGatewayReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedMatchableHttpGatewayReconciler) EXPECT() *MockMulticlusterFederatedMatchableHttpGatewayReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedMatchableHttpGateway mocks base method. +func (m *MockMulticlusterFederatedMatchableHttpGatewayReconciler) ReconcileFederatedMatchableHttpGateway(clusterName string, obj *v1.FederatedMatchableHttpGateway) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedMatchableHttpGateway", clusterName, obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedMatchableHttpGateway indicates an expected call of ReconcileFederatedMatchableHttpGateway. +func (mr *MockMulticlusterFederatedMatchableHttpGatewayReconcilerMockRecorder) ReconcileFederatedMatchableHttpGateway(clusterName, obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedMatchableHttpGateway", reflect.TypeOf((*MockMulticlusterFederatedMatchableHttpGatewayReconciler)(nil).ReconcileFederatedMatchableHttpGateway), clusterName, obj) +} + +// MockMulticlusterFederatedMatchableHttpGatewayDeletionReconciler is a mock of MulticlusterFederatedMatchableHttpGatewayDeletionReconciler interface. +type MockMulticlusterFederatedMatchableHttpGatewayDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedMatchableHttpGatewayDeletionReconcilerMockRecorder +} + +// MockMulticlusterFederatedMatchableHttpGatewayDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterFederatedMatchableHttpGatewayDeletionReconciler. +type MockMulticlusterFederatedMatchableHttpGatewayDeletionReconcilerMockRecorder struct { + mock *MockMulticlusterFederatedMatchableHttpGatewayDeletionReconciler +} + +// NewMockMulticlusterFederatedMatchableHttpGatewayDeletionReconciler creates a new mock instance. +func NewMockMulticlusterFederatedMatchableHttpGatewayDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterFederatedMatchableHttpGatewayDeletionReconciler { + mock := &MockMulticlusterFederatedMatchableHttpGatewayDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedMatchableHttpGatewayDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedMatchableHttpGatewayDeletionReconciler) EXPECT() *MockMulticlusterFederatedMatchableHttpGatewayDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedMatchableHttpGatewayDeletion mocks base method. +func (m *MockMulticlusterFederatedMatchableHttpGatewayDeletionReconciler) ReconcileFederatedMatchableHttpGatewayDeletion(clusterName string, req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedMatchableHttpGatewayDeletion", clusterName, req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileFederatedMatchableHttpGatewayDeletion indicates an expected call of ReconcileFederatedMatchableHttpGatewayDeletion. +func (mr *MockMulticlusterFederatedMatchableHttpGatewayDeletionReconcilerMockRecorder) ReconcileFederatedMatchableHttpGatewayDeletion(clusterName, req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedMatchableHttpGatewayDeletion", reflect.TypeOf((*MockMulticlusterFederatedMatchableHttpGatewayDeletionReconciler)(nil).ReconcileFederatedMatchableHttpGatewayDeletion), clusterName, req) +} + +// MockMulticlusterFederatedMatchableHttpGatewayReconcileLoop is a mock of MulticlusterFederatedMatchableHttpGatewayReconcileLoop interface. +type MockMulticlusterFederatedMatchableHttpGatewayReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedMatchableHttpGatewayReconcileLoopMockRecorder +} + +// MockMulticlusterFederatedMatchableHttpGatewayReconcileLoopMockRecorder is the mock recorder for MockMulticlusterFederatedMatchableHttpGatewayReconcileLoop. +type MockMulticlusterFederatedMatchableHttpGatewayReconcileLoopMockRecorder struct { + mock *MockMulticlusterFederatedMatchableHttpGatewayReconcileLoop +} + +// NewMockMulticlusterFederatedMatchableHttpGatewayReconcileLoop creates a new mock instance. +func NewMockMulticlusterFederatedMatchableHttpGatewayReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterFederatedMatchableHttpGatewayReconcileLoop { + mock := &MockMulticlusterFederatedMatchableHttpGatewayReconcileLoop{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedMatchableHttpGatewayReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedMatchableHttpGatewayReconcileLoop) EXPECT() *MockMulticlusterFederatedMatchableHttpGatewayReconcileLoopMockRecorder { + return m.recorder +} + +// AddMulticlusterFederatedMatchableHttpGatewayReconciler mocks base method. +func (m *MockMulticlusterFederatedMatchableHttpGatewayReconcileLoop) AddMulticlusterFederatedMatchableHttpGatewayReconciler(ctx context.Context, rec controller.MulticlusterFederatedMatchableHttpGatewayReconciler, predicates ...predicate.Predicate) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "AddMulticlusterFederatedMatchableHttpGatewayReconciler", varargs...) +} + +// AddMulticlusterFederatedMatchableHttpGatewayReconciler indicates an expected call of AddMulticlusterFederatedMatchableHttpGatewayReconciler. +func (mr *MockMulticlusterFederatedMatchableHttpGatewayReconcileLoopMockRecorder) AddMulticlusterFederatedMatchableHttpGatewayReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterFederatedMatchableHttpGatewayReconciler", reflect.TypeOf((*MockMulticlusterFederatedMatchableHttpGatewayReconcileLoop)(nil).AddMulticlusterFederatedMatchableHttpGatewayReconciler), varargs...) +} + +// MockMulticlusterFederatedMatchableTcpGatewayReconciler is a mock of MulticlusterFederatedMatchableTcpGatewayReconciler interface. +type MockMulticlusterFederatedMatchableTcpGatewayReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedMatchableTcpGatewayReconcilerMockRecorder +} + +// MockMulticlusterFederatedMatchableTcpGatewayReconcilerMockRecorder is the mock recorder for MockMulticlusterFederatedMatchableTcpGatewayReconciler. +type MockMulticlusterFederatedMatchableTcpGatewayReconcilerMockRecorder struct { + mock *MockMulticlusterFederatedMatchableTcpGatewayReconciler +} + +// NewMockMulticlusterFederatedMatchableTcpGatewayReconciler creates a new mock instance. +func NewMockMulticlusterFederatedMatchableTcpGatewayReconciler(ctrl *gomock.Controller) *MockMulticlusterFederatedMatchableTcpGatewayReconciler { + mock := &MockMulticlusterFederatedMatchableTcpGatewayReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedMatchableTcpGatewayReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedMatchableTcpGatewayReconciler) EXPECT() *MockMulticlusterFederatedMatchableTcpGatewayReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedMatchableTcpGateway mocks base method. +func (m *MockMulticlusterFederatedMatchableTcpGatewayReconciler) ReconcileFederatedMatchableTcpGateway(clusterName string, obj *v1.FederatedMatchableTcpGateway) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedMatchableTcpGateway", clusterName, obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedMatchableTcpGateway indicates an expected call of ReconcileFederatedMatchableTcpGateway. +func (mr *MockMulticlusterFederatedMatchableTcpGatewayReconcilerMockRecorder) ReconcileFederatedMatchableTcpGateway(clusterName, obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedMatchableTcpGateway", reflect.TypeOf((*MockMulticlusterFederatedMatchableTcpGatewayReconciler)(nil).ReconcileFederatedMatchableTcpGateway), clusterName, obj) +} + +// MockMulticlusterFederatedMatchableTcpGatewayDeletionReconciler is a mock of MulticlusterFederatedMatchableTcpGatewayDeletionReconciler interface. +type MockMulticlusterFederatedMatchableTcpGatewayDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedMatchableTcpGatewayDeletionReconcilerMockRecorder +} + +// MockMulticlusterFederatedMatchableTcpGatewayDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterFederatedMatchableTcpGatewayDeletionReconciler. +type MockMulticlusterFederatedMatchableTcpGatewayDeletionReconcilerMockRecorder struct { + mock *MockMulticlusterFederatedMatchableTcpGatewayDeletionReconciler +} + +// NewMockMulticlusterFederatedMatchableTcpGatewayDeletionReconciler creates a new mock instance. +func NewMockMulticlusterFederatedMatchableTcpGatewayDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterFederatedMatchableTcpGatewayDeletionReconciler { + mock := &MockMulticlusterFederatedMatchableTcpGatewayDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedMatchableTcpGatewayDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedMatchableTcpGatewayDeletionReconciler) EXPECT() *MockMulticlusterFederatedMatchableTcpGatewayDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedMatchableTcpGatewayDeletion mocks base method. +func (m *MockMulticlusterFederatedMatchableTcpGatewayDeletionReconciler) ReconcileFederatedMatchableTcpGatewayDeletion(clusterName string, req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedMatchableTcpGatewayDeletion", clusterName, req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileFederatedMatchableTcpGatewayDeletion indicates an expected call of ReconcileFederatedMatchableTcpGatewayDeletion. +func (mr *MockMulticlusterFederatedMatchableTcpGatewayDeletionReconcilerMockRecorder) ReconcileFederatedMatchableTcpGatewayDeletion(clusterName, req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedMatchableTcpGatewayDeletion", reflect.TypeOf((*MockMulticlusterFederatedMatchableTcpGatewayDeletionReconciler)(nil).ReconcileFederatedMatchableTcpGatewayDeletion), clusterName, req) +} + +// MockMulticlusterFederatedMatchableTcpGatewayReconcileLoop is a mock of MulticlusterFederatedMatchableTcpGatewayReconcileLoop interface. +type MockMulticlusterFederatedMatchableTcpGatewayReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedMatchableTcpGatewayReconcileLoopMockRecorder +} + +// MockMulticlusterFederatedMatchableTcpGatewayReconcileLoopMockRecorder is the mock recorder for MockMulticlusterFederatedMatchableTcpGatewayReconcileLoop. +type MockMulticlusterFederatedMatchableTcpGatewayReconcileLoopMockRecorder struct { + mock *MockMulticlusterFederatedMatchableTcpGatewayReconcileLoop +} + +// NewMockMulticlusterFederatedMatchableTcpGatewayReconcileLoop creates a new mock instance. +func NewMockMulticlusterFederatedMatchableTcpGatewayReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterFederatedMatchableTcpGatewayReconcileLoop { + mock := &MockMulticlusterFederatedMatchableTcpGatewayReconcileLoop{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedMatchableTcpGatewayReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedMatchableTcpGatewayReconcileLoop) EXPECT() *MockMulticlusterFederatedMatchableTcpGatewayReconcileLoopMockRecorder { + return m.recorder +} + +// AddMulticlusterFederatedMatchableTcpGatewayReconciler mocks base method. +func (m *MockMulticlusterFederatedMatchableTcpGatewayReconcileLoop) AddMulticlusterFederatedMatchableTcpGatewayReconciler(ctx context.Context, rec controller.MulticlusterFederatedMatchableTcpGatewayReconciler, predicates ...predicate.Predicate) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "AddMulticlusterFederatedMatchableTcpGatewayReconciler", varargs...) +} + +// AddMulticlusterFederatedMatchableTcpGatewayReconciler indicates an expected call of AddMulticlusterFederatedMatchableTcpGatewayReconciler. +func (mr *MockMulticlusterFederatedMatchableTcpGatewayReconcileLoopMockRecorder) AddMulticlusterFederatedMatchableTcpGatewayReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterFederatedMatchableTcpGatewayReconciler", reflect.TypeOf((*MockMulticlusterFederatedMatchableTcpGatewayReconcileLoop)(nil).AddMulticlusterFederatedMatchableTcpGatewayReconciler), varargs...) +} + +// MockMulticlusterFederatedRouteTableReconciler is a mock of MulticlusterFederatedRouteTableReconciler interface. +type MockMulticlusterFederatedRouteTableReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedRouteTableReconcilerMockRecorder +} + +// MockMulticlusterFederatedRouteTableReconcilerMockRecorder is the mock recorder for MockMulticlusterFederatedRouteTableReconciler. +type MockMulticlusterFederatedRouteTableReconcilerMockRecorder struct { + mock *MockMulticlusterFederatedRouteTableReconciler +} + +// NewMockMulticlusterFederatedRouteTableReconciler creates a new mock instance. +func NewMockMulticlusterFederatedRouteTableReconciler(ctrl *gomock.Controller) *MockMulticlusterFederatedRouteTableReconciler { + mock := &MockMulticlusterFederatedRouteTableReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedRouteTableReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedRouteTableReconciler) EXPECT() *MockMulticlusterFederatedRouteTableReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedRouteTable mocks base method. +func (m *MockMulticlusterFederatedRouteTableReconciler) ReconcileFederatedRouteTable(clusterName string, obj *v1.FederatedRouteTable) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedRouteTable", clusterName, obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedRouteTable indicates an expected call of ReconcileFederatedRouteTable. +func (mr *MockMulticlusterFederatedRouteTableReconcilerMockRecorder) ReconcileFederatedRouteTable(clusterName, obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedRouteTable", reflect.TypeOf((*MockMulticlusterFederatedRouteTableReconciler)(nil).ReconcileFederatedRouteTable), clusterName, obj) +} + +// MockMulticlusterFederatedRouteTableDeletionReconciler is a mock of MulticlusterFederatedRouteTableDeletionReconciler interface. +type MockMulticlusterFederatedRouteTableDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedRouteTableDeletionReconcilerMockRecorder +} + +// MockMulticlusterFederatedRouteTableDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterFederatedRouteTableDeletionReconciler. +type MockMulticlusterFederatedRouteTableDeletionReconcilerMockRecorder struct { + mock *MockMulticlusterFederatedRouteTableDeletionReconciler +} + +// NewMockMulticlusterFederatedRouteTableDeletionReconciler creates a new mock instance. +func NewMockMulticlusterFederatedRouteTableDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterFederatedRouteTableDeletionReconciler { + mock := &MockMulticlusterFederatedRouteTableDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedRouteTableDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedRouteTableDeletionReconciler) EXPECT() *MockMulticlusterFederatedRouteTableDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedRouteTableDeletion mocks base method. +func (m *MockMulticlusterFederatedRouteTableDeletionReconciler) ReconcileFederatedRouteTableDeletion(clusterName string, req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedRouteTableDeletion", clusterName, req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileFederatedRouteTableDeletion indicates an expected call of ReconcileFederatedRouteTableDeletion. +func (mr *MockMulticlusterFederatedRouteTableDeletionReconcilerMockRecorder) ReconcileFederatedRouteTableDeletion(clusterName, req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedRouteTableDeletion", reflect.TypeOf((*MockMulticlusterFederatedRouteTableDeletionReconciler)(nil).ReconcileFederatedRouteTableDeletion), clusterName, req) +} + +// MockMulticlusterFederatedRouteTableReconcileLoop is a mock of MulticlusterFederatedRouteTableReconcileLoop interface. +type MockMulticlusterFederatedRouteTableReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedRouteTableReconcileLoopMockRecorder +} + +// MockMulticlusterFederatedRouteTableReconcileLoopMockRecorder is the mock recorder for MockMulticlusterFederatedRouteTableReconcileLoop. +type MockMulticlusterFederatedRouteTableReconcileLoopMockRecorder struct { + mock *MockMulticlusterFederatedRouteTableReconcileLoop +} + +// NewMockMulticlusterFederatedRouteTableReconcileLoop creates a new mock instance. +func NewMockMulticlusterFederatedRouteTableReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterFederatedRouteTableReconcileLoop { + mock := &MockMulticlusterFederatedRouteTableReconcileLoop{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedRouteTableReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedRouteTableReconcileLoop) EXPECT() *MockMulticlusterFederatedRouteTableReconcileLoopMockRecorder { + return m.recorder +} + +// AddMulticlusterFederatedRouteTableReconciler mocks base method. +func (m *MockMulticlusterFederatedRouteTableReconcileLoop) AddMulticlusterFederatedRouteTableReconciler(ctx context.Context, rec controller.MulticlusterFederatedRouteTableReconciler, predicates ...predicate.Predicate) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "AddMulticlusterFederatedRouteTableReconciler", varargs...) +} + +// AddMulticlusterFederatedRouteTableReconciler indicates an expected call of AddMulticlusterFederatedRouteTableReconciler. +func (mr *MockMulticlusterFederatedRouteTableReconcileLoopMockRecorder) AddMulticlusterFederatedRouteTableReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterFederatedRouteTableReconciler", reflect.TypeOf((*MockMulticlusterFederatedRouteTableReconcileLoop)(nil).AddMulticlusterFederatedRouteTableReconciler), varargs...) +} + +// MockMulticlusterFederatedVirtualServiceReconciler is a mock of MulticlusterFederatedVirtualServiceReconciler interface. +type MockMulticlusterFederatedVirtualServiceReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedVirtualServiceReconcilerMockRecorder +} + +// MockMulticlusterFederatedVirtualServiceReconcilerMockRecorder is the mock recorder for MockMulticlusterFederatedVirtualServiceReconciler. +type MockMulticlusterFederatedVirtualServiceReconcilerMockRecorder struct { + mock *MockMulticlusterFederatedVirtualServiceReconciler +} + +// NewMockMulticlusterFederatedVirtualServiceReconciler creates a new mock instance. +func NewMockMulticlusterFederatedVirtualServiceReconciler(ctrl *gomock.Controller) *MockMulticlusterFederatedVirtualServiceReconciler { + mock := &MockMulticlusterFederatedVirtualServiceReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedVirtualServiceReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedVirtualServiceReconciler) EXPECT() *MockMulticlusterFederatedVirtualServiceReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedVirtualService mocks base method. +func (m *MockMulticlusterFederatedVirtualServiceReconciler) ReconcileFederatedVirtualService(clusterName string, obj *v1.FederatedVirtualService) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedVirtualService", clusterName, obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedVirtualService indicates an expected call of ReconcileFederatedVirtualService. +func (mr *MockMulticlusterFederatedVirtualServiceReconcilerMockRecorder) ReconcileFederatedVirtualService(clusterName, obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedVirtualService", reflect.TypeOf((*MockMulticlusterFederatedVirtualServiceReconciler)(nil).ReconcileFederatedVirtualService), clusterName, obj) +} + +// MockMulticlusterFederatedVirtualServiceDeletionReconciler is a mock of MulticlusterFederatedVirtualServiceDeletionReconciler interface. +type MockMulticlusterFederatedVirtualServiceDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedVirtualServiceDeletionReconcilerMockRecorder +} + +// MockMulticlusterFederatedVirtualServiceDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterFederatedVirtualServiceDeletionReconciler. +type MockMulticlusterFederatedVirtualServiceDeletionReconcilerMockRecorder struct { + mock *MockMulticlusterFederatedVirtualServiceDeletionReconciler +} + +// NewMockMulticlusterFederatedVirtualServiceDeletionReconciler creates a new mock instance. +func NewMockMulticlusterFederatedVirtualServiceDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterFederatedVirtualServiceDeletionReconciler { + mock := &MockMulticlusterFederatedVirtualServiceDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedVirtualServiceDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedVirtualServiceDeletionReconciler) EXPECT() *MockMulticlusterFederatedVirtualServiceDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedVirtualServiceDeletion mocks base method. +func (m *MockMulticlusterFederatedVirtualServiceDeletionReconciler) ReconcileFederatedVirtualServiceDeletion(clusterName string, req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedVirtualServiceDeletion", clusterName, req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileFederatedVirtualServiceDeletion indicates an expected call of ReconcileFederatedVirtualServiceDeletion. +func (mr *MockMulticlusterFederatedVirtualServiceDeletionReconcilerMockRecorder) ReconcileFederatedVirtualServiceDeletion(clusterName, req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedVirtualServiceDeletion", reflect.TypeOf((*MockMulticlusterFederatedVirtualServiceDeletionReconciler)(nil).ReconcileFederatedVirtualServiceDeletion), clusterName, req) +} + +// MockMulticlusterFederatedVirtualServiceReconcileLoop is a mock of MulticlusterFederatedVirtualServiceReconcileLoop interface. +type MockMulticlusterFederatedVirtualServiceReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedVirtualServiceReconcileLoopMockRecorder +} + +// MockMulticlusterFederatedVirtualServiceReconcileLoopMockRecorder is the mock recorder for MockMulticlusterFederatedVirtualServiceReconcileLoop. +type MockMulticlusterFederatedVirtualServiceReconcileLoopMockRecorder struct { + mock *MockMulticlusterFederatedVirtualServiceReconcileLoop +} + +// NewMockMulticlusterFederatedVirtualServiceReconcileLoop creates a new mock instance. +func NewMockMulticlusterFederatedVirtualServiceReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterFederatedVirtualServiceReconcileLoop { + mock := &MockMulticlusterFederatedVirtualServiceReconcileLoop{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedVirtualServiceReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedVirtualServiceReconcileLoop) EXPECT() *MockMulticlusterFederatedVirtualServiceReconcileLoopMockRecorder { + return m.recorder +} + +// AddMulticlusterFederatedVirtualServiceReconciler mocks base method. +func (m *MockMulticlusterFederatedVirtualServiceReconcileLoop) AddMulticlusterFederatedVirtualServiceReconciler(ctx context.Context, rec controller.MulticlusterFederatedVirtualServiceReconciler, predicates ...predicate.Predicate) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "AddMulticlusterFederatedVirtualServiceReconciler", varargs...) +} + +// AddMulticlusterFederatedVirtualServiceReconciler indicates an expected call of AddMulticlusterFederatedVirtualServiceReconciler. +func (mr *MockMulticlusterFederatedVirtualServiceReconcileLoopMockRecorder) AddMulticlusterFederatedVirtualServiceReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterFederatedVirtualServiceReconciler", reflect.TypeOf((*MockMulticlusterFederatedVirtualServiceReconcileLoop)(nil).AddMulticlusterFederatedVirtualServiceReconciler), varargs...) +} diff --git a/pkg/api/fed.gateway.solo.io/v1/controller/mocks/reconcilers.go b/pkg/api/fed.gateway.solo.io/v1/controller/mocks/reconcilers.go new file mode 100644 index 000000000..4b28293fb --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/controller/mocks/reconcilers.go @@ -0,0 +1,931 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./reconcilers.go + +// Package mock_controller is a generated GoMock package. +package mock_controller + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + reconcile "github.com/solo-io/skv2/pkg/reconcile" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1" + controller "github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/controller" + predicate "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// MockFederatedGatewayReconciler is a mock of FederatedGatewayReconciler interface. +type MockFederatedGatewayReconciler struct { + ctrl *gomock.Controller + recorder *MockFederatedGatewayReconcilerMockRecorder +} + +// MockFederatedGatewayReconcilerMockRecorder is the mock recorder for MockFederatedGatewayReconciler. +type MockFederatedGatewayReconcilerMockRecorder struct { + mock *MockFederatedGatewayReconciler +} + +// NewMockFederatedGatewayReconciler creates a new mock instance. +func NewMockFederatedGatewayReconciler(ctrl *gomock.Controller) *MockFederatedGatewayReconciler { + mock := &MockFederatedGatewayReconciler{ctrl: ctrl} + mock.recorder = &MockFederatedGatewayReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedGatewayReconciler) EXPECT() *MockFederatedGatewayReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedGateway mocks base method. +func (m *MockFederatedGatewayReconciler) ReconcileFederatedGateway(obj *v1.FederatedGateway) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedGateway", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedGateway indicates an expected call of ReconcileFederatedGateway. +func (mr *MockFederatedGatewayReconcilerMockRecorder) ReconcileFederatedGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedGateway", reflect.TypeOf((*MockFederatedGatewayReconciler)(nil).ReconcileFederatedGateway), obj) +} + +// MockFederatedGatewayDeletionReconciler is a mock of FederatedGatewayDeletionReconciler interface. +type MockFederatedGatewayDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockFederatedGatewayDeletionReconcilerMockRecorder +} + +// MockFederatedGatewayDeletionReconcilerMockRecorder is the mock recorder for MockFederatedGatewayDeletionReconciler. +type MockFederatedGatewayDeletionReconcilerMockRecorder struct { + mock *MockFederatedGatewayDeletionReconciler +} + +// NewMockFederatedGatewayDeletionReconciler creates a new mock instance. +func NewMockFederatedGatewayDeletionReconciler(ctrl *gomock.Controller) *MockFederatedGatewayDeletionReconciler { + mock := &MockFederatedGatewayDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockFederatedGatewayDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedGatewayDeletionReconciler) EXPECT() *MockFederatedGatewayDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedGatewayDeletion mocks base method. +func (m *MockFederatedGatewayDeletionReconciler) ReconcileFederatedGatewayDeletion(req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedGatewayDeletion", req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileFederatedGatewayDeletion indicates an expected call of ReconcileFederatedGatewayDeletion. +func (mr *MockFederatedGatewayDeletionReconcilerMockRecorder) ReconcileFederatedGatewayDeletion(req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedGatewayDeletion", reflect.TypeOf((*MockFederatedGatewayDeletionReconciler)(nil).ReconcileFederatedGatewayDeletion), req) +} + +// MockFederatedGatewayFinalizer is a mock of FederatedGatewayFinalizer interface. +type MockFederatedGatewayFinalizer struct { + ctrl *gomock.Controller + recorder *MockFederatedGatewayFinalizerMockRecorder +} + +// MockFederatedGatewayFinalizerMockRecorder is the mock recorder for MockFederatedGatewayFinalizer. +type MockFederatedGatewayFinalizerMockRecorder struct { + mock *MockFederatedGatewayFinalizer +} + +// NewMockFederatedGatewayFinalizer creates a new mock instance. +func NewMockFederatedGatewayFinalizer(ctrl *gomock.Controller) *MockFederatedGatewayFinalizer { + mock := &MockFederatedGatewayFinalizer{ctrl: ctrl} + mock.recorder = &MockFederatedGatewayFinalizerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedGatewayFinalizer) EXPECT() *MockFederatedGatewayFinalizerMockRecorder { + return m.recorder +} + +// FederatedGatewayFinalizerName mocks base method. +func (m *MockFederatedGatewayFinalizer) FederatedGatewayFinalizerName() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FederatedGatewayFinalizerName") + ret0, _ := ret[0].(string) + return ret0 +} + +// FederatedGatewayFinalizerName indicates an expected call of FederatedGatewayFinalizerName. +func (mr *MockFederatedGatewayFinalizerMockRecorder) FederatedGatewayFinalizerName() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FederatedGatewayFinalizerName", reflect.TypeOf((*MockFederatedGatewayFinalizer)(nil).FederatedGatewayFinalizerName)) +} + +// FinalizeFederatedGateway mocks base method. +func (m *MockFederatedGatewayFinalizer) FinalizeFederatedGateway(obj *v1.FederatedGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeFederatedGateway", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeFederatedGateway indicates an expected call of FinalizeFederatedGateway. +func (mr *MockFederatedGatewayFinalizerMockRecorder) FinalizeFederatedGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeFederatedGateway", reflect.TypeOf((*MockFederatedGatewayFinalizer)(nil).FinalizeFederatedGateway), obj) +} + +// ReconcileFederatedGateway mocks base method. +func (m *MockFederatedGatewayFinalizer) ReconcileFederatedGateway(obj *v1.FederatedGateway) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedGateway", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedGateway indicates an expected call of ReconcileFederatedGateway. +func (mr *MockFederatedGatewayFinalizerMockRecorder) ReconcileFederatedGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedGateway", reflect.TypeOf((*MockFederatedGatewayFinalizer)(nil).ReconcileFederatedGateway), obj) +} + +// MockFederatedGatewayReconcileLoop is a mock of FederatedGatewayReconcileLoop interface. +type MockFederatedGatewayReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockFederatedGatewayReconcileLoopMockRecorder +} + +// MockFederatedGatewayReconcileLoopMockRecorder is the mock recorder for MockFederatedGatewayReconcileLoop. +type MockFederatedGatewayReconcileLoopMockRecorder struct { + mock *MockFederatedGatewayReconcileLoop +} + +// NewMockFederatedGatewayReconcileLoop creates a new mock instance. +func NewMockFederatedGatewayReconcileLoop(ctrl *gomock.Controller) *MockFederatedGatewayReconcileLoop { + mock := &MockFederatedGatewayReconcileLoop{ctrl: ctrl} + mock.recorder = &MockFederatedGatewayReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedGatewayReconcileLoop) EXPECT() *MockFederatedGatewayReconcileLoopMockRecorder { + return m.recorder +} + +// RunFederatedGatewayReconciler mocks base method. +func (m *MockFederatedGatewayReconcileLoop) RunFederatedGatewayReconciler(ctx context.Context, rec controller.FederatedGatewayReconciler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RunFederatedGatewayReconciler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// RunFederatedGatewayReconciler indicates an expected call of RunFederatedGatewayReconciler. +func (mr *MockFederatedGatewayReconcileLoopMockRecorder) RunFederatedGatewayReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunFederatedGatewayReconciler", reflect.TypeOf((*MockFederatedGatewayReconcileLoop)(nil).RunFederatedGatewayReconciler), varargs...) +} + +// MockFederatedMatchableHttpGatewayReconciler is a mock of FederatedMatchableHttpGatewayReconciler interface. +type MockFederatedMatchableHttpGatewayReconciler struct { + ctrl *gomock.Controller + recorder *MockFederatedMatchableHttpGatewayReconcilerMockRecorder +} + +// MockFederatedMatchableHttpGatewayReconcilerMockRecorder is the mock recorder for MockFederatedMatchableHttpGatewayReconciler. +type MockFederatedMatchableHttpGatewayReconcilerMockRecorder struct { + mock *MockFederatedMatchableHttpGatewayReconciler +} + +// NewMockFederatedMatchableHttpGatewayReconciler creates a new mock instance. +func NewMockFederatedMatchableHttpGatewayReconciler(ctrl *gomock.Controller) *MockFederatedMatchableHttpGatewayReconciler { + mock := &MockFederatedMatchableHttpGatewayReconciler{ctrl: ctrl} + mock.recorder = &MockFederatedMatchableHttpGatewayReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedMatchableHttpGatewayReconciler) EXPECT() *MockFederatedMatchableHttpGatewayReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayReconciler) ReconcileFederatedMatchableHttpGateway(obj *v1.FederatedMatchableHttpGateway) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedMatchableHttpGateway", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedMatchableHttpGateway indicates an expected call of ReconcileFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayReconcilerMockRecorder) ReconcileFederatedMatchableHttpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayReconciler)(nil).ReconcileFederatedMatchableHttpGateway), obj) +} + +// MockFederatedMatchableHttpGatewayDeletionReconciler is a mock of FederatedMatchableHttpGatewayDeletionReconciler interface. +type MockFederatedMatchableHttpGatewayDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockFederatedMatchableHttpGatewayDeletionReconcilerMockRecorder +} + +// MockFederatedMatchableHttpGatewayDeletionReconcilerMockRecorder is the mock recorder for MockFederatedMatchableHttpGatewayDeletionReconciler. +type MockFederatedMatchableHttpGatewayDeletionReconcilerMockRecorder struct { + mock *MockFederatedMatchableHttpGatewayDeletionReconciler +} + +// NewMockFederatedMatchableHttpGatewayDeletionReconciler creates a new mock instance. +func NewMockFederatedMatchableHttpGatewayDeletionReconciler(ctrl *gomock.Controller) *MockFederatedMatchableHttpGatewayDeletionReconciler { + mock := &MockFederatedMatchableHttpGatewayDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockFederatedMatchableHttpGatewayDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedMatchableHttpGatewayDeletionReconciler) EXPECT() *MockFederatedMatchableHttpGatewayDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedMatchableHttpGatewayDeletion mocks base method. +func (m *MockFederatedMatchableHttpGatewayDeletionReconciler) ReconcileFederatedMatchableHttpGatewayDeletion(req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedMatchableHttpGatewayDeletion", req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileFederatedMatchableHttpGatewayDeletion indicates an expected call of ReconcileFederatedMatchableHttpGatewayDeletion. +func (mr *MockFederatedMatchableHttpGatewayDeletionReconcilerMockRecorder) ReconcileFederatedMatchableHttpGatewayDeletion(req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedMatchableHttpGatewayDeletion", reflect.TypeOf((*MockFederatedMatchableHttpGatewayDeletionReconciler)(nil).ReconcileFederatedMatchableHttpGatewayDeletion), req) +} + +// MockFederatedMatchableHttpGatewayFinalizer is a mock of FederatedMatchableHttpGatewayFinalizer interface. +type MockFederatedMatchableHttpGatewayFinalizer struct { + ctrl *gomock.Controller + recorder *MockFederatedMatchableHttpGatewayFinalizerMockRecorder +} + +// MockFederatedMatchableHttpGatewayFinalizerMockRecorder is the mock recorder for MockFederatedMatchableHttpGatewayFinalizer. +type MockFederatedMatchableHttpGatewayFinalizerMockRecorder struct { + mock *MockFederatedMatchableHttpGatewayFinalizer +} + +// NewMockFederatedMatchableHttpGatewayFinalizer creates a new mock instance. +func NewMockFederatedMatchableHttpGatewayFinalizer(ctrl *gomock.Controller) *MockFederatedMatchableHttpGatewayFinalizer { + mock := &MockFederatedMatchableHttpGatewayFinalizer{ctrl: ctrl} + mock.recorder = &MockFederatedMatchableHttpGatewayFinalizerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedMatchableHttpGatewayFinalizer) EXPECT() *MockFederatedMatchableHttpGatewayFinalizerMockRecorder { + return m.recorder +} + +// FederatedMatchableHttpGatewayFinalizerName mocks base method. +func (m *MockFederatedMatchableHttpGatewayFinalizer) FederatedMatchableHttpGatewayFinalizerName() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FederatedMatchableHttpGatewayFinalizerName") + ret0, _ := ret[0].(string) + return ret0 +} + +// FederatedMatchableHttpGatewayFinalizerName indicates an expected call of FederatedMatchableHttpGatewayFinalizerName. +func (mr *MockFederatedMatchableHttpGatewayFinalizerMockRecorder) FederatedMatchableHttpGatewayFinalizerName() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FederatedMatchableHttpGatewayFinalizerName", reflect.TypeOf((*MockFederatedMatchableHttpGatewayFinalizer)(nil).FederatedMatchableHttpGatewayFinalizerName)) +} + +// FinalizeFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayFinalizer) FinalizeFederatedMatchableHttpGateway(obj *v1.FederatedMatchableHttpGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeFederatedMatchableHttpGateway", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeFederatedMatchableHttpGateway indicates an expected call of FinalizeFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayFinalizerMockRecorder) FinalizeFederatedMatchableHttpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayFinalizer)(nil).FinalizeFederatedMatchableHttpGateway), obj) +} + +// ReconcileFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayFinalizer) ReconcileFederatedMatchableHttpGateway(obj *v1.FederatedMatchableHttpGateway) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedMatchableHttpGateway", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedMatchableHttpGateway indicates an expected call of ReconcileFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayFinalizerMockRecorder) ReconcileFederatedMatchableHttpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayFinalizer)(nil).ReconcileFederatedMatchableHttpGateway), obj) +} + +// MockFederatedMatchableHttpGatewayReconcileLoop is a mock of FederatedMatchableHttpGatewayReconcileLoop interface. +type MockFederatedMatchableHttpGatewayReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockFederatedMatchableHttpGatewayReconcileLoopMockRecorder +} + +// MockFederatedMatchableHttpGatewayReconcileLoopMockRecorder is the mock recorder for MockFederatedMatchableHttpGatewayReconcileLoop. +type MockFederatedMatchableHttpGatewayReconcileLoopMockRecorder struct { + mock *MockFederatedMatchableHttpGatewayReconcileLoop +} + +// NewMockFederatedMatchableHttpGatewayReconcileLoop creates a new mock instance. +func NewMockFederatedMatchableHttpGatewayReconcileLoop(ctrl *gomock.Controller) *MockFederatedMatchableHttpGatewayReconcileLoop { + mock := &MockFederatedMatchableHttpGatewayReconcileLoop{ctrl: ctrl} + mock.recorder = &MockFederatedMatchableHttpGatewayReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedMatchableHttpGatewayReconcileLoop) EXPECT() *MockFederatedMatchableHttpGatewayReconcileLoopMockRecorder { + return m.recorder +} + +// RunFederatedMatchableHttpGatewayReconciler mocks base method. +func (m *MockFederatedMatchableHttpGatewayReconcileLoop) RunFederatedMatchableHttpGatewayReconciler(ctx context.Context, rec controller.FederatedMatchableHttpGatewayReconciler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RunFederatedMatchableHttpGatewayReconciler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// RunFederatedMatchableHttpGatewayReconciler indicates an expected call of RunFederatedMatchableHttpGatewayReconciler. +func (mr *MockFederatedMatchableHttpGatewayReconcileLoopMockRecorder) RunFederatedMatchableHttpGatewayReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunFederatedMatchableHttpGatewayReconciler", reflect.TypeOf((*MockFederatedMatchableHttpGatewayReconcileLoop)(nil).RunFederatedMatchableHttpGatewayReconciler), varargs...) +} + +// MockFederatedMatchableTcpGatewayReconciler is a mock of FederatedMatchableTcpGatewayReconciler interface. +type MockFederatedMatchableTcpGatewayReconciler struct { + ctrl *gomock.Controller + recorder *MockFederatedMatchableTcpGatewayReconcilerMockRecorder +} + +// MockFederatedMatchableTcpGatewayReconcilerMockRecorder is the mock recorder for MockFederatedMatchableTcpGatewayReconciler. +type MockFederatedMatchableTcpGatewayReconcilerMockRecorder struct { + mock *MockFederatedMatchableTcpGatewayReconciler +} + +// NewMockFederatedMatchableTcpGatewayReconciler creates a new mock instance. +func NewMockFederatedMatchableTcpGatewayReconciler(ctrl *gomock.Controller) *MockFederatedMatchableTcpGatewayReconciler { + mock := &MockFederatedMatchableTcpGatewayReconciler{ctrl: ctrl} + mock.recorder = &MockFederatedMatchableTcpGatewayReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedMatchableTcpGatewayReconciler) EXPECT() *MockFederatedMatchableTcpGatewayReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayReconciler) ReconcileFederatedMatchableTcpGateway(obj *v1.FederatedMatchableTcpGateway) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedMatchableTcpGateway", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedMatchableTcpGateway indicates an expected call of ReconcileFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayReconcilerMockRecorder) ReconcileFederatedMatchableTcpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayReconciler)(nil).ReconcileFederatedMatchableTcpGateway), obj) +} + +// MockFederatedMatchableTcpGatewayDeletionReconciler is a mock of FederatedMatchableTcpGatewayDeletionReconciler interface. +type MockFederatedMatchableTcpGatewayDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockFederatedMatchableTcpGatewayDeletionReconcilerMockRecorder +} + +// MockFederatedMatchableTcpGatewayDeletionReconcilerMockRecorder is the mock recorder for MockFederatedMatchableTcpGatewayDeletionReconciler. +type MockFederatedMatchableTcpGatewayDeletionReconcilerMockRecorder struct { + mock *MockFederatedMatchableTcpGatewayDeletionReconciler +} + +// NewMockFederatedMatchableTcpGatewayDeletionReconciler creates a new mock instance. +func NewMockFederatedMatchableTcpGatewayDeletionReconciler(ctrl *gomock.Controller) *MockFederatedMatchableTcpGatewayDeletionReconciler { + mock := &MockFederatedMatchableTcpGatewayDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockFederatedMatchableTcpGatewayDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedMatchableTcpGatewayDeletionReconciler) EXPECT() *MockFederatedMatchableTcpGatewayDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedMatchableTcpGatewayDeletion mocks base method. +func (m *MockFederatedMatchableTcpGatewayDeletionReconciler) ReconcileFederatedMatchableTcpGatewayDeletion(req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedMatchableTcpGatewayDeletion", req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileFederatedMatchableTcpGatewayDeletion indicates an expected call of ReconcileFederatedMatchableTcpGatewayDeletion. +func (mr *MockFederatedMatchableTcpGatewayDeletionReconcilerMockRecorder) ReconcileFederatedMatchableTcpGatewayDeletion(req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedMatchableTcpGatewayDeletion", reflect.TypeOf((*MockFederatedMatchableTcpGatewayDeletionReconciler)(nil).ReconcileFederatedMatchableTcpGatewayDeletion), req) +} + +// MockFederatedMatchableTcpGatewayFinalizer is a mock of FederatedMatchableTcpGatewayFinalizer interface. +type MockFederatedMatchableTcpGatewayFinalizer struct { + ctrl *gomock.Controller + recorder *MockFederatedMatchableTcpGatewayFinalizerMockRecorder +} + +// MockFederatedMatchableTcpGatewayFinalizerMockRecorder is the mock recorder for MockFederatedMatchableTcpGatewayFinalizer. +type MockFederatedMatchableTcpGatewayFinalizerMockRecorder struct { + mock *MockFederatedMatchableTcpGatewayFinalizer +} + +// NewMockFederatedMatchableTcpGatewayFinalizer creates a new mock instance. +func NewMockFederatedMatchableTcpGatewayFinalizer(ctrl *gomock.Controller) *MockFederatedMatchableTcpGatewayFinalizer { + mock := &MockFederatedMatchableTcpGatewayFinalizer{ctrl: ctrl} + mock.recorder = &MockFederatedMatchableTcpGatewayFinalizerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedMatchableTcpGatewayFinalizer) EXPECT() *MockFederatedMatchableTcpGatewayFinalizerMockRecorder { + return m.recorder +} + +// FederatedMatchableTcpGatewayFinalizerName mocks base method. +func (m *MockFederatedMatchableTcpGatewayFinalizer) FederatedMatchableTcpGatewayFinalizerName() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FederatedMatchableTcpGatewayFinalizerName") + ret0, _ := ret[0].(string) + return ret0 +} + +// FederatedMatchableTcpGatewayFinalizerName indicates an expected call of FederatedMatchableTcpGatewayFinalizerName. +func (mr *MockFederatedMatchableTcpGatewayFinalizerMockRecorder) FederatedMatchableTcpGatewayFinalizerName() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FederatedMatchableTcpGatewayFinalizerName", reflect.TypeOf((*MockFederatedMatchableTcpGatewayFinalizer)(nil).FederatedMatchableTcpGatewayFinalizerName)) +} + +// FinalizeFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayFinalizer) FinalizeFederatedMatchableTcpGateway(obj *v1.FederatedMatchableTcpGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeFederatedMatchableTcpGateway", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeFederatedMatchableTcpGateway indicates an expected call of FinalizeFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayFinalizerMockRecorder) FinalizeFederatedMatchableTcpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayFinalizer)(nil).FinalizeFederatedMatchableTcpGateway), obj) +} + +// ReconcileFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayFinalizer) ReconcileFederatedMatchableTcpGateway(obj *v1.FederatedMatchableTcpGateway) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedMatchableTcpGateway", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedMatchableTcpGateway indicates an expected call of ReconcileFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayFinalizerMockRecorder) ReconcileFederatedMatchableTcpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayFinalizer)(nil).ReconcileFederatedMatchableTcpGateway), obj) +} + +// MockFederatedMatchableTcpGatewayReconcileLoop is a mock of FederatedMatchableTcpGatewayReconcileLoop interface. +type MockFederatedMatchableTcpGatewayReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockFederatedMatchableTcpGatewayReconcileLoopMockRecorder +} + +// MockFederatedMatchableTcpGatewayReconcileLoopMockRecorder is the mock recorder for MockFederatedMatchableTcpGatewayReconcileLoop. +type MockFederatedMatchableTcpGatewayReconcileLoopMockRecorder struct { + mock *MockFederatedMatchableTcpGatewayReconcileLoop +} + +// NewMockFederatedMatchableTcpGatewayReconcileLoop creates a new mock instance. +func NewMockFederatedMatchableTcpGatewayReconcileLoop(ctrl *gomock.Controller) *MockFederatedMatchableTcpGatewayReconcileLoop { + mock := &MockFederatedMatchableTcpGatewayReconcileLoop{ctrl: ctrl} + mock.recorder = &MockFederatedMatchableTcpGatewayReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedMatchableTcpGatewayReconcileLoop) EXPECT() *MockFederatedMatchableTcpGatewayReconcileLoopMockRecorder { + return m.recorder +} + +// RunFederatedMatchableTcpGatewayReconciler mocks base method. +func (m *MockFederatedMatchableTcpGatewayReconcileLoop) RunFederatedMatchableTcpGatewayReconciler(ctx context.Context, rec controller.FederatedMatchableTcpGatewayReconciler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RunFederatedMatchableTcpGatewayReconciler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// RunFederatedMatchableTcpGatewayReconciler indicates an expected call of RunFederatedMatchableTcpGatewayReconciler. +func (mr *MockFederatedMatchableTcpGatewayReconcileLoopMockRecorder) RunFederatedMatchableTcpGatewayReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunFederatedMatchableTcpGatewayReconciler", reflect.TypeOf((*MockFederatedMatchableTcpGatewayReconcileLoop)(nil).RunFederatedMatchableTcpGatewayReconciler), varargs...) +} + +// MockFederatedRouteTableReconciler is a mock of FederatedRouteTableReconciler interface. +type MockFederatedRouteTableReconciler struct { + ctrl *gomock.Controller + recorder *MockFederatedRouteTableReconcilerMockRecorder +} + +// MockFederatedRouteTableReconcilerMockRecorder is the mock recorder for MockFederatedRouteTableReconciler. +type MockFederatedRouteTableReconcilerMockRecorder struct { + mock *MockFederatedRouteTableReconciler +} + +// NewMockFederatedRouteTableReconciler creates a new mock instance. +func NewMockFederatedRouteTableReconciler(ctrl *gomock.Controller) *MockFederatedRouteTableReconciler { + mock := &MockFederatedRouteTableReconciler{ctrl: ctrl} + mock.recorder = &MockFederatedRouteTableReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedRouteTableReconciler) EXPECT() *MockFederatedRouteTableReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableReconciler) ReconcileFederatedRouteTable(obj *v1.FederatedRouteTable) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedRouteTable", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedRouteTable indicates an expected call of ReconcileFederatedRouteTable. +func (mr *MockFederatedRouteTableReconcilerMockRecorder) ReconcileFederatedRouteTable(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableReconciler)(nil).ReconcileFederatedRouteTable), obj) +} + +// MockFederatedRouteTableDeletionReconciler is a mock of FederatedRouteTableDeletionReconciler interface. +type MockFederatedRouteTableDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockFederatedRouteTableDeletionReconcilerMockRecorder +} + +// MockFederatedRouteTableDeletionReconcilerMockRecorder is the mock recorder for MockFederatedRouteTableDeletionReconciler. +type MockFederatedRouteTableDeletionReconcilerMockRecorder struct { + mock *MockFederatedRouteTableDeletionReconciler +} + +// NewMockFederatedRouteTableDeletionReconciler creates a new mock instance. +func NewMockFederatedRouteTableDeletionReconciler(ctrl *gomock.Controller) *MockFederatedRouteTableDeletionReconciler { + mock := &MockFederatedRouteTableDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockFederatedRouteTableDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedRouteTableDeletionReconciler) EXPECT() *MockFederatedRouteTableDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedRouteTableDeletion mocks base method. +func (m *MockFederatedRouteTableDeletionReconciler) ReconcileFederatedRouteTableDeletion(req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedRouteTableDeletion", req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileFederatedRouteTableDeletion indicates an expected call of ReconcileFederatedRouteTableDeletion. +func (mr *MockFederatedRouteTableDeletionReconcilerMockRecorder) ReconcileFederatedRouteTableDeletion(req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedRouteTableDeletion", reflect.TypeOf((*MockFederatedRouteTableDeletionReconciler)(nil).ReconcileFederatedRouteTableDeletion), req) +} + +// MockFederatedRouteTableFinalizer is a mock of FederatedRouteTableFinalizer interface. +type MockFederatedRouteTableFinalizer struct { + ctrl *gomock.Controller + recorder *MockFederatedRouteTableFinalizerMockRecorder +} + +// MockFederatedRouteTableFinalizerMockRecorder is the mock recorder for MockFederatedRouteTableFinalizer. +type MockFederatedRouteTableFinalizerMockRecorder struct { + mock *MockFederatedRouteTableFinalizer +} + +// NewMockFederatedRouteTableFinalizer creates a new mock instance. +func NewMockFederatedRouteTableFinalizer(ctrl *gomock.Controller) *MockFederatedRouteTableFinalizer { + mock := &MockFederatedRouteTableFinalizer{ctrl: ctrl} + mock.recorder = &MockFederatedRouteTableFinalizerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedRouteTableFinalizer) EXPECT() *MockFederatedRouteTableFinalizerMockRecorder { + return m.recorder +} + +// FederatedRouteTableFinalizerName mocks base method. +func (m *MockFederatedRouteTableFinalizer) FederatedRouteTableFinalizerName() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FederatedRouteTableFinalizerName") + ret0, _ := ret[0].(string) + return ret0 +} + +// FederatedRouteTableFinalizerName indicates an expected call of FederatedRouteTableFinalizerName. +func (mr *MockFederatedRouteTableFinalizerMockRecorder) FederatedRouteTableFinalizerName() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FederatedRouteTableFinalizerName", reflect.TypeOf((*MockFederatedRouteTableFinalizer)(nil).FederatedRouteTableFinalizerName)) +} + +// FinalizeFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableFinalizer) FinalizeFederatedRouteTable(obj *v1.FederatedRouteTable) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeFederatedRouteTable", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeFederatedRouteTable indicates an expected call of FinalizeFederatedRouteTable. +func (mr *MockFederatedRouteTableFinalizerMockRecorder) FinalizeFederatedRouteTable(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableFinalizer)(nil).FinalizeFederatedRouteTable), obj) +} + +// ReconcileFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableFinalizer) ReconcileFederatedRouteTable(obj *v1.FederatedRouteTable) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedRouteTable", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedRouteTable indicates an expected call of ReconcileFederatedRouteTable. +func (mr *MockFederatedRouteTableFinalizerMockRecorder) ReconcileFederatedRouteTable(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableFinalizer)(nil).ReconcileFederatedRouteTable), obj) +} + +// MockFederatedRouteTableReconcileLoop is a mock of FederatedRouteTableReconcileLoop interface. +type MockFederatedRouteTableReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockFederatedRouteTableReconcileLoopMockRecorder +} + +// MockFederatedRouteTableReconcileLoopMockRecorder is the mock recorder for MockFederatedRouteTableReconcileLoop. +type MockFederatedRouteTableReconcileLoopMockRecorder struct { + mock *MockFederatedRouteTableReconcileLoop +} + +// NewMockFederatedRouteTableReconcileLoop creates a new mock instance. +func NewMockFederatedRouteTableReconcileLoop(ctrl *gomock.Controller) *MockFederatedRouteTableReconcileLoop { + mock := &MockFederatedRouteTableReconcileLoop{ctrl: ctrl} + mock.recorder = &MockFederatedRouteTableReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedRouteTableReconcileLoop) EXPECT() *MockFederatedRouteTableReconcileLoopMockRecorder { + return m.recorder +} + +// RunFederatedRouteTableReconciler mocks base method. +func (m *MockFederatedRouteTableReconcileLoop) RunFederatedRouteTableReconciler(ctx context.Context, rec controller.FederatedRouteTableReconciler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RunFederatedRouteTableReconciler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// RunFederatedRouteTableReconciler indicates an expected call of RunFederatedRouteTableReconciler. +func (mr *MockFederatedRouteTableReconcileLoopMockRecorder) RunFederatedRouteTableReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunFederatedRouteTableReconciler", reflect.TypeOf((*MockFederatedRouteTableReconcileLoop)(nil).RunFederatedRouteTableReconciler), varargs...) +} + +// MockFederatedVirtualServiceReconciler is a mock of FederatedVirtualServiceReconciler interface. +type MockFederatedVirtualServiceReconciler struct { + ctrl *gomock.Controller + recorder *MockFederatedVirtualServiceReconcilerMockRecorder +} + +// MockFederatedVirtualServiceReconcilerMockRecorder is the mock recorder for MockFederatedVirtualServiceReconciler. +type MockFederatedVirtualServiceReconcilerMockRecorder struct { + mock *MockFederatedVirtualServiceReconciler +} + +// NewMockFederatedVirtualServiceReconciler creates a new mock instance. +func NewMockFederatedVirtualServiceReconciler(ctrl *gomock.Controller) *MockFederatedVirtualServiceReconciler { + mock := &MockFederatedVirtualServiceReconciler{ctrl: ctrl} + mock.recorder = &MockFederatedVirtualServiceReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedVirtualServiceReconciler) EXPECT() *MockFederatedVirtualServiceReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceReconciler) ReconcileFederatedVirtualService(obj *v1.FederatedVirtualService) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedVirtualService", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedVirtualService indicates an expected call of ReconcileFederatedVirtualService. +func (mr *MockFederatedVirtualServiceReconcilerMockRecorder) ReconcileFederatedVirtualService(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceReconciler)(nil).ReconcileFederatedVirtualService), obj) +} + +// MockFederatedVirtualServiceDeletionReconciler is a mock of FederatedVirtualServiceDeletionReconciler interface. +type MockFederatedVirtualServiceDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockFederatedVirtualServiceDeletionReconcilerMockRecorder +} + +// MockFederatedVirtualServiceDeletionReconcilerMockRecorder is the mock recorder for MockFederatedVirtualServiceDeletionReconciler. +type MockFederatedVirtualServiceDeletionReconcilerMockRecorder struct { + mock *MockFederatedVirtualServiceDeletionReconciler +} + +// NewMockFederatedVirtualServiceDeletionReconciler creates a new mock instance. +func NewMockFederatedVirtualServiceDeletionReconciler(ctrl *gomock.Controller) *MockFederatedVirtualServiceDeletionReconciler { + mock := &MockFederatedVirtualServiceDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockFederatedVirtualServiceDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedVirtualServiceDeletionReconciler) EXPECT() *MockFederatedVirtualServiceDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedVirtualServiceDeletion mocks base method. +func (m *MockFederatedVirtualServiceDeletionReconciler) ReconcileFederatedVirtualServiceDeletion(req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedVirtualServiceDeletion", req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileFederatedVirtualServiceDeletion indicates an expected call of ReconcileFederatedVirtualServiceDeletion. +func (mr *MockFederatedVirtualServiceDeletionReconcilerMockRecorder) ReconcileFederatedVirtualServiceDeletion(req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedVirtualServiceDeletion", reflect.TypeOf((*MockFederatedVirtualServiceDeletionReconciler)(nil).ReconcileFederatedVirtualServiceDeletion), req) +} + +// MockFederatedVirtualServiceFinalizer is a mock of FederatedVirtualServiceFinalizer interface. +type MockFederatedVirtualServiceFinalizer struct { + ctrl *gomock.Controller + recorder *MockFederatedVirtualServiceFinalizerMockRecorder +} + +// MockFederatedVirtualServiceFinalizerMockRecorder is the mock recorder for MockFederatedVirtualServiceFinalizer. +type MockFederatedVirtualServiceFinalizerMockRecorder struct { + mock *MockFederatedVirtualServiceFinalizer +} + +// NewMockFederatedVirtualServiceFinalizer creates a new mock instance. +func NewMockFederatedVirtualServiceFinalizer(ctrl *gomock.Controller) *MockFederatedVirtualServiceFinalizer { + mock := &MockFederatedVirtualServiceFinalizer{ctrl: ctrl} + mock.recorder = &MockFederatedVirtualServiceFinalizerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedVirtualServiceFinalizer) EXPECT() *MockFederatedVirtualServiceFinalizerMockRecorder { + return m.recorder +} + +// FederatedVirtualServiceFinalizerName mocks base method. +func (m *MockFederatedVirtualServiceFinalizer) FederatedVirtualServiceFinalizerName() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FederatedVirtualServiceFinalizerName") + ret0, _ := ret[0].(string) + return ret0 +} + +// FederatedVirtualServiceFinalizerName indicates an expected call of FederatedVirtualServiceFinalizerName. +func (mr *MockFederatedVirtualServiceFinalizerMockRecorder) FederatedVirtualServiceFinalizerName() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FederatedVirtualServiceFinalizerName", reflect.TypeOf((*MockFederatedVirtualServiceFinalizer)(nil).FederatedVirtualServiceFinalizerName)) +} + +// FinalizeFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceFinalizer) FinalizeFederatedVirtualService(obj *v1.FederatedVirtualService) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeFederatedVirtualService", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeFederatedVirtualService indicates an expected call of FinalizeFederatedVirtualService. +func (mr *MockFederatedVirtualServiceFinalizerMockRecorder) FinalizeFederatedVirtualService(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceFinalizer)(nil).FinalizeFederatedVirtualService), obj) +} + +// ReconcileFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceFinalizer) ReconcileFederatedVirtualService(obj *v1.FederatedVirtualService) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedVirtualService", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedVirtualService indicates an expected call of ReconcileFederatedVirtualService. +func (mr *MockFederatedVirtualServiceFinalizerMockRecorder) ReconcileFederatedVirtualService(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceFinalizer)(nil).ReconcileFederatedVirtualService), obj) +} + +// MockFederatedVirtualServiceReconcileLoop is a mock of FederatedVirtualServiceReconcileLoop interface. +type MockFederatedVirtualServiceReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockFederatedVirtualServiceReconcileLoopMockRecorder +} + +// MockFederatedVirtualServiceReconcileLoopMockRecorder is the mock recorder for MockFederatedVirtualServiceReconcileLoop. +type MockFederatedVirtualServiceReconcileLoopMockRecorder struct { + mock *MockFederatedVirtualServiceReconcileLoop +} + +// NewMockFederatedVirtualServiceReconcileLoop creates a new mock instance. +func NewMockFederatedVirtualServiceReconcileLoop(ctrl *gomock.Controller) *MockFederatedVirtualServiceReconcileLoop { + mock := &MockFederatedVirtualServiceReconcileLoop{ctrl: ctrl} + mock.recorder = &MockFederatedVirtualServiceReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedVirtualServiceReconcileLoop) EXPECT() *MockFederatedVirtualServiceReconcileLoopMockRecorder { + return m.recorder +} + +// RunFederatedVirtualServiceReconciler mocks base method. +func (m *MockFederatedVirtualServiceReconcileLoop) RunFederatedVirtualServiceReconciler(ctx context.Context, rec controller.FederatedVirtualServiceReconciler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RunFederatedVirtualServiceReconciler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// RunFederatedVirtualServiceReconciler indicates an expected call of RunFederatedVirtualServiceReconciler. +func (mr *MockFederatedVirtualServiceReconcileLoopMockRecorder) RunFederatedVirtualServiceReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunFederatedVirtualServiceReconciler", reflect.TypeOf((*MockFederatedVirtualServiceReconcileLoop)(nil).RunFederatedVirtualServiceReconciler), varargs...) +} diff --git a/pkg/api/fed.gateway.solo.io/v1/controller/multicluster_reconcilers.go b/pkg/api/fed.gateway.solo.io/v1/controller/multicluster_reconcilers.go new file mode 100644 index 000000000..ef1f8486c --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/controller/multicluster_reconcilers.go @@ -0,0 +1,374 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./multicluster_reconcilers.go -destination mocks/multicluster_reconcilers.go + +// Definitions for the multicluster Kubernetes Controllers +package controller + +import ( + "context" + + fed_gateway_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1" + + "github.com/pkg/errors" + "github.com/solo-io/skv2/pkg/ezkube" + "github.com/solo-io/skv2/pkg/multicluster" + mc_reconcile "github.com/solo-io/skv2/pkg/multicluster/reconcile" + "github.com/solo-io/skv2/pkg/reconcile" + "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// Reconcile Upsert events for the FederatedGateway Resource across clusters. +// implemented by the user +type MulticlusterFederatedGatewayReconciler interface { + ReconcileFederatedGateway(clusterName string, obj *fed_gateway_solo_io_v1.FederatedGateway) (reconcile.Result, error) +} + +// Reconcile deletion events for the FederatedGateway Resource across clusters. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type MulticlusterFederatedGatewayDeletionReconciler interface { + ReconcileFederatedGatewayDeletion(clusterName string, req reconcile.Request) error +} + +type MulticlusterFederatedGatewayReconcilerFuncs struct { + OnReconcileFederatedGateway func(clusterName string, obj *fed_gateway_solo_io_v1.FederatedGateway) (reconcile.Result, error) + OnReconcileFederatedGatewayDeletion func(clusterName string, req reconcile.Request) error +} + +func (f *MulticlusterFederatedGatewayReconcilerFuncs) ReconcileFederatedGateway(clusterName string, obj *fed_gateway_solo_io_v1.FederatedGateway) (reconcile.Result, error) { + if f.OnReconcileFederatedGateway == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileFederatedGateway(clusterName, obj) +} + +func (f *MulticlusterFederatedGatewayReconcilerFuncs) ReconcileFederatedGatewayDeletion(clusterName string, req reconcile.Request) error { + if f.OnReconcileFederatedGatewayDeletion == nil { + return nil + } + return f.OnReconcileFederatedGatewayDeletion(clusterName, req) +} + +type MulticlusterFederatedGatewayReconcileLoop interface { + // AddMulticlusterFederatedGatewayReconciler adds a MulticlusterFederatedGatewayReconciler to the MulticlusterFederatedGatewayReconcileLoop. + AddMulticlusterFederatedGatewayReconciler(ctx context.Context, rec MulticlusterFederatedGatewayReconciler, predicates ...predicate.Predicate) +} + +type multiclusterFederatedGatewayReconcileLoop struct { + loop multicluster.Loop +} + +func (m *multiclusterFederatedGatewayReconcileLoop) AddMulticlusterFederatedGatewayReconciler(ctx context.Context, rec MulticlusterFederatedGatewayReconciler, predicates ...predicate.Predicate) { + genericReconciler := genericFederatedGatewayMulticlusterReconciler{reconciler: rec} + + m.loop.AddReconciler(ctx, genericReconciler, predicates...) +} + +func NewMulticlusterFederatedGatewayReconcileLoop(name string, cw multicluster.ClusterWatcher, options reconcile.Options) MulticlusterFederatedGatewayReconcileLoop { + return &multiclusterFederatedGatewayReconcileLoop{loop: mc_reconcile.NewLoop(name, cw, &fed_gateway_solo_io_v1.FederatedGateway{}, options)} +} + +type genericFederatedGatewayMulticlusterReconciler struct { + reconciler MulticlusterFederatedGatewayReconciler +} + +func (g genericFederatedGatewayMulticlusterReconciler) ReconcileDeletion(cluster string, req reconcile.Request) error { + if deletionReconciler, ok := g.reconciler.(MulticlusterFederatedGatewayDeletionReconciler); ok { + return deletionReconciler.ReconcileFederatedGatewayDeletion(cluster, req) + } + return nil +} + +func (g genericFederatedGatewayMulticlusterReconciler) Reconcile(cluster string, object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedGateway) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: FederatedGateway handler received event for %T", object) + } + return g.reconciler.ReconcileFederatedGateway(cluster, obj) +} + +// Reconcile Upsert events for the FederatedMatchableHttpGateway Resource across clusters. +// implemented by the user +type MulticlusterFederatedMatchableHttpGatewayReconciler interface { + ReconcileFederatedMatchableHttpGateway(clusterName string, obj *fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) (reconcile.Result, error) +} + +// Reconcile deletion events for the FederatedMatchableHttpGateway Resource across clusters. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type MulticlusterFederatedMatchableHttpGatewayDeletionReconciler interface { + ReconcileFederatedMatchableHttpGatewayDeletion(clusterName string, req reconcile.Request) error +} + +type MulticlusterFederatedMatchableHttpGatewayReconcilerFuncs struct { + OnReconcileFederatedMatchableHttpGateway func(clusterName string, obj *fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) (reconcile.Result, error) + OnReconcileFederatedMatchableHttpGatewayDeletion func(clusterName string, req reconcile.Request) error +} + +func (f *MulticlusterFederatedMatchableHttpGatewayReconcilerFuncs) ReconcileFederatedMatchableHttpGateway(clusterName string, obj *fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) (reconcile.Result, error) { + if f.OnReconcileFederatedMatchableHttpGateway == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileFederatedMatchableHttpGateway(clusterName, obj) +} + +func (f *MulticlusterFederatedMatchableHttpGatewayReconcilerFuncs) ReconcileFederatedMatchableHttpGatewayDeletion(clusterName string, req reconcile.Request) error { + if f.OnReconcileFederatedMatchableHttpGatewayDeletion == nil { + return nil + } + return f.OnReconcileFederatedMatchableHttpGatewayDeletion(clusterName, req) +} + +type MulticlusterFederatedMatchableHttpGatewayReconcileLoop interface { + // AddMulticlusterFederatedMatchableHttpGatewayReconciler adds a MulticlusterFederatedMatchableHttpGatewayReconciler to the MulticlusterFederatedMatchableHttpGatewayReconcileLoop. + AddMulticlusterFederatedMatchableHttpGatewayReconciler(ctx context.Context, rec MulticlusterFederatedMatchableHttpGatewayReconciler, predicates ...predicate.Predicate) +} + +type multiclusterFederatedMatchableHttpGatewayReconcileLoop struct { + loop multicluster.Loop +} + +func (m *multiclusterFederatedMatchableHttpGatewayReconcileLoop) AddMulticlusterFederatedMatchableHttpGatewayReconciler(ctx context.Context, rec MulticlusterFederatedMatchableHttpGatewayReconciler, predicates ...predicate.Predicate) { + genericReconciler := genericFederatedMatchableHttpGatewayMulticlusterReconciler{reconciler: rec} + + m.loop.AddReconciler(ctx, genericReconciler, predicates...) +} + +func NewMulticlusterFederatedMatchableHttpGatewayReconcileLoop(name string, cw multicluster.ClusterWatcher, options reconcile.Options) MulticlusterFederatedMatchableHttpGatewayReconcileLoop { + return &multiclusterFederatedMatchableHttpGatewayReconcileLoop{loop: mc_reconcile.NewLoop(name, cw, &fed_gateway_solo_io_v1.FederatedMatchableHttpGateway{}, options)} +} + +type genericFederatedMatchableHttpGatewayMulticlusterReconciler struct { + reconciler MulticlusterFederatedMatchableHttpGatewayReconciler +} + +func (g genericFederatedMatchableHttpGatewayMulticlusterReconciler) ReconcileDeletion(cluster string, req reconcile.Request) error { + if deletionReconciler, ok := g.reconciler.(MulticlusterFederatedMatchableHttpGatewayDeletionReconciler); ok { + return deletionReconciler.ReconcileFederatedMatchableHttpGatewayDeletion(cluster, req) + } + return nil +} + +func (g genericFederatedMatchableHttpGatewayMulticlusterReconciler) Reconcile(cluster string, object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: FederatedMatchableHttpGateway handler received event for %T", object) + } + return g.reconciler.ReconcileFederatedMatchableHttpGateway(cluster, obj) +} + +// Reconcile Upsert events for the FederatedMatchableTcpGateway Resource across clusters. +// implemented by the user +type MulticlusterFederatedMatchableTcpGatewayReconciler interface { + ReconcileFederatedMatchableTcpGateway(clusterName string, obj *fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) (reconcile.Result, error) +} + +// Reconcile deletion events for the FederatedMatchableTcpGateway Resource across clusters. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type MulticlusterFederatedMatchableTcpGatewayDeletionReconciler interface { + ReconcileFederatedMatchableTcpGatewayDeletion(clusterName string, req reconcile.Request) error +} + +type MulticlusterFederatedMatchableTcpGatewayReconcilerFuncs struct { + OnReconcileFederatedMatchableTcpGateway func(clusterName string, obj *fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) (reconcile.Result, error) + OnReconcileFederatedMatchableTcpGatewayDeletion func(clusterName string, req reconcile.Request) error +} + +func (f *MulticlusterFederatedMatchableTcpGatewayReconcilerFuncs) ReconcileFederatedMatchableTcpGateway(clusterName string, obj *fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) (reconcile.Result, error) { + if f.OnReconcileFederatedMatchableTcpGateway == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileFederatedMatchableTcpGateway(clusterName, obj) +} + +func (f *MulticlusterFederatedMatchableTcpGatewayReconcilerFuncs) ReconcileFederatedMatchableTcpGatewayDeletion(clusterName string, req reconcile.Request) error { + if f.OnReconcileFederatedMatchableTcpGatewayDeletion == nil { + return nil + } + return f.OnReconcileFederatedMatchableTcpGatewayDeletion(clusterName, req) +} + +type MulticlusterFederatedMatchableTcpGatewayReconcileLoop interface { + // AddMulticlusterFederatedMatchableTcpGatewayReconciler adds a MulticlusterFederatedMatchableTcpGatewayReconciler to the MulticlusterFederatedMatchableTcpGatewayReconcileLoop. + AddMulticlusterFederatedMatchableTcpGatewayReconciler(ctx context.Context, rec MulticlusterFederatedMatchableTcpGatewayReconciler, predicates ...predicate.Predicate) +} + +type multiclusterFederatedMatchableTcpGatewayReconcileLoop struct { + loop multicluster.Loop +} + +func (m *multiclusterFederatedMatchableTcpGatewayReconcileLoop) AddMulticlusterFederatedMatchableTcpGatewayReconciler(ctx context.Context, rec MulticlusterFederatedMatchableTcpGatewayReconciler, predicates ...predicate.Predicate) { + genericReconciler := genericFederatedMatchableTcpGatewayMulticlusterReconciler{reconciler: rec} + + m.loop.AddReconciler(ctx, genericReconciler, predicates...) +} + +func NewMulticlusterFederatedMatchableTcpGatewayReconcileLoop(name string, cw multicluster.ClusterWatcher, options reconcile.Options) MulticlusterFederatedMatchableTcpGatewayReconcileLoop { + return &multiclusterFederatedMatchableTcpGatewayReconcileLoop{loop: mc_reconcile.NewLoop(name, cw, &fed_gateway_solo_io_v1.FederatedMatchableTcpGateway{}, options)} +} + +type genericFederatedMatchableTcpGatewayMulticlusterReconciler struct { + reconciler MulticlusterFederatedMatchableTcpGatewayReconciler +} + +func (g genericFederatedMatchableTcpGatewayMulticlusterReconciler) ReconcileDeletion(cluster string, req reconcile.Request) error { + if deletionReconciler, ok := g.reconciler.(MulticlusterFederatedMatchableTcpGatewayDeletionReconciler); ok { + return deletionReconciler.ReconcileFederatedMatchableTcpGatewayDeletion(cluster, req) + } + return nil +} + +func (g genericFederatedMatchableTcpGatewayMulticlusterReconciler) Reconcile(cluster string, object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: FederatedMatchableTcpGateway handler received event for %T", object) + } + return g.reconciler.ReconcileFederatedMatchableTcpGateway(cluster, obj) +} + +// Reconcile Upsert events for the FederatedRouteTable Resource across clusters. +// implemented by the user +type MulticlusterFederatedRouteTableReconciler interface { + ReconcileFederatedRouteTable(clusterName string, obj *fed_gateway_solo_io_v1.FederatedRouteTable) (reconcile.Result, error) +} + +// Reconcile deletion events for the FederatedRouteTable Resource across clusters. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type MulticlusterFederatedRouteTableDeletionReconciler interface { + ReconcileFederatedRouteTableDeletion(clusterName string, req reconcile.Request) error +} + +type MulticlusterFederatedRouteTableReconcilerFuncs struct { + OnReconcileFederatedRouteTable func(clusterName string, obj *fed_gateway_solo_io_v1.FederatedRouteTable) (reconcile.Result, error) + OnReconcileFederatedRouteTableDeletion func(clusterName string, req reconcile.Request) error +} + +func (f *MulticlusterFederatedRouteTableReconcilerFuncs) ReconcileFederatedRouteTable(clusterName string, obj *fed_gateway_solo_io_v1.FederatedRouteTable) (reconcile.Result, error) { + if f.OnReconcileFederatedRouteTable == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileFederatedRouteTable(clusterName, obj) +} + +func (f *MulticlusterFederatedRouteTableReconcilerFuncs) ReconcileFederatedRouteTableDeletion(clusterName string, req reconcile.Request) error { + if f.OnReconcileFederatedRouteTableDeletion == nil { + return nil + } + return f.OnReconcileFederatedRouteTableDeletion(clusterName, req) +} + +type MulticlusterFederatedRouteTableReconcileLoop interface { + // AddMulticlusterFederatedRouteTableReconciler adds a MulticlusterFederatedRouteTableReconciler to the MulticlusterFederatedRouteTableReconcileLoop. + AddMulticlusterFederatedRouteTableReconciler(ctx context.Context, rec MulticlusterFederatedRouteTableReconciler, predicates ...predicate.Predicate) +} + +type multiclusterFederatedRouteTableReconcileLoop struct { + loop multicluster.Loop +} + +func (m *multiclusterFederatedRouteTableReconcileLoop) AddMulticlusterFederatedRouteTableReconciler(ctx context.Context, rec MulticlusterFederatedRouteTableReconciler, predicates ...predicate.Predicate) { + genericReconciler := genericFederatedRouteTableMulticlusterReconciler{reconciler: rec} + + m.loop.AddReconciler(ctx, genericReconciler, predicates...) +} + +func NewMulticlusterFederatedRouteTableReconcileLoop(name string, cw multicluster.ClusterWatcher, options reconcile.Options) MulticlusterFederatedRouteTableReconcileLoop { + return &multiclusterFederatedRouteTableReconcileLoop{loop: mc_reconcile.NewLoop(name, cw, &fed_gateway_solo_io_v1.FederatedRouteTable{}, options)} +} + +type genericFederatedRouteTableMulticlusterReconciler struct { + reconciler MulticlusterFederatedRouteTableReconciler +} + +func (g genericFederatedRouteTableMulticlusterReconciler) ReconcileDeletion(cluster string, req reconcile.Request) error { + if deletionReconciler, ok := g.reconciler.(MulticlusterFederatedRouteTableDeletionReconciler); ok { + return deletionReconciler.ReconcileFederatedRouteTableDeletion(cluster, req) + } + return nil +} + +func (g genericFederatedRouteTableMulticlusterReconciler) Reconcile(cluster string, object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedRouteTable) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: FederatedRouteTable handler received event for %T", object) + } + return g.reconciler.ReconcileFederatedRouteTable(cluster, obj) +} + +// Reconcile Upsert events for the FederatedVirtualService Resource across clusters. +// implemented by the user +type MulticlusterFederatedVirtualServiceReconciler interface { + ReconcileFederatedVirtualService(clusterName string, obj *fed_gateway_solo_io_v1.FederatedVirtualService) (reconcile.Result, error) +} + +// Reconcile deletion events for the FederatedVirtualService Resource across clusters. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type MulticlusterFederatedVirtualServiceDeletionReconciler interface { + ReconcileFederatedVirtualServiceDeletion(clusterName string, req reconcile.Request) error +} + +type MulticlusterFederatedVirtualServiceReconcilerFuncs struct { + OnReconcileFederatedVirtualService func(clusterName string, obj *fed_gateway_solo_io_v1.FederatedVirtualService) (reconcile.Result, error) + OnReconcileFederatedVirtualServiceDeletion func(clusterName string, req reconcile.Request) error +} + +func (f *MulticlusterFederatedVirtualServiceReconcilerFuncs) ReconcileFederatedVirtualService(clusterName string, obj *fed_gateway_solo_io_v1.FederatedVirtualService) (reconcile.Result, error) { + if f.OnReconcileFederatedVirtualService == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileFederatedVirtualService(clusterName, obj) +} + +func (f *MulticlusterFederatedVirtualServiceReconcilerFuncs) ReconcileFederatedVirtualServiceDeletion(clusterName string, req reconcile.Request) error { + if f.OnReconcileFederatedVirtualServiceDeletion == nil { + return nil + } + return f.OnReconcileFederatedVirtualServiceDeletion(clusterName, req) +} + +type MulticlusterFederatedVirtualServiceReconcileLoop interface { + // AddMulticlusterFederatedVirtualServiceReconciler adds a MulticlusterFederatedVirtualServiceReconciler to the MulticlusterFederatedVirtualServiceReconcileLoop. + AddMulticlusterFederatedVirtualServiceReconciler(ctx context.Context, rec MulticlusterFederatedVirtualServiceReconciler, predicates ...predicate.Predicate) +} + +type multiclusterFederatedVirtualServiceReconcileLoop struct { + loop multicluster.Loop +} + +func (m *multiclusterFederatedVirtualServiceReconcileLoop) AddMulticlusterFederatedVirtualServiceReconciler(ctx context.Context, rec MulticlusterFederatedVirtualServiceReconciler, predicates ...predicate.Predicate) { + genericReconciler := genericFederatedVirtualServiceMulticlusterReconciler{reconciler: rec} + + m.loop.AddReconciler(ctx, genericReconciler, predicates...) +} + +func NewMulticlusterFederatedVirtualServiceReconcileLoop(name string, cw multicluster.ClusterWatcher, options reconcile.Options) MulticlusterFederatedVirtualServiceReconcileLoop { + return &multiclusterFederatedVirtualServiceReconcileLoop{loop: mc_reconcile.NewLoop(name, cw, &fed_gateway_solo_io_v1.FederatedVirtualService{}, options)} +} + +type genericFederatedVirtualServiceMulticlusterReconciler struct { + reconciler MulticlusterFederatedVirtualServiceReconciler +} + +func (g genericFederatedVirtualServiceMulticlusterReconciler) ReconcileDeletion(cluster string, req reconcile.Request) error { + if deletionReconciler, ok := g.reconciler.(MulticlusterFederatedVirtualServiceDeletionReconciler); ok { + return deletionReconciler.ReconcileFederatedVirtualServiceDeletion(cluster, req) + } + return nil +} + +func (g genericFederatedVirtualServiceMulticlusterReconciler) Reconcile(cluster string, object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedVirtualService) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: FederatedVirtualService handler received event for %T", object) + } + return g.reconciler.ReconcileFederatedVirtualService(cluster, obj) +} diff --git a/pkg/api/fed.gateway.solo.io/v1/controller/reconcilers.go b/pkg/api/fed.gateway.solo.io/v1/controller/reconcilers.go new file mode 100644 index 000000000..31730b8de --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/controller/reconcilers.go @@ -0,0 +1,603 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./reconcilers.go -destination mocks/reconcilers.go + +// Definitions for the Kubernetes Controllers +package controller + +import ( + "context" + + fed_gateway_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1" + + "github.com/pkg/errors" + "github.com/solo-io/skv2/pkg/ezkube" + "github.com/solo-io/skv2/pkg/reconcile" + "sigs.k8s.io/controller-runtime/pkg/manager" + "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// Reconcile Upsert events for the FederatedGateway Resource. +// implemented by the user +type FederatedGatewayReconciler interface { + ReconcileFederatedGateway(obj *fed_gateway_solo_io_v1.FederatedGateway) (reconcile.Result, error) +} + +// Reconcile deletion events for the FederatedGateway Resource. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type FederatedGatewayDeletionReconciler interface { + ReconcileFederatedGatewayDeletion(req reconcile.Request) error +} + +type FederatedGatewayReconcilerFuncs struct { + OnReconcileFederatedGateway func(obj *fed_gateway_solo_io_v1.FederatedGateway) (reconcile.Result, error) + OnReconcileFederatedGatewayDeletion func(req reconcile.Request) error +} + +func (f *FederatedGatewayReconcilerFuncs) ReconcileFederatedGateway(obj *fed_gateway_solo_io_v1.FederatedGateway) (reconcile.Result, error) { + if f.OnReconcileFederatedGateway == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileFederatedGateway(obj) +} + +func (f *FederatedGatewayReconcilerFuncs) ReconcileFederatedGatewayDeletion(req reconcile.Request) error { + if f.OnReconcileFederatedGatewayDeletion == nil { + return nil + } + return f.OnReconcileFederatedGatewayDeletion(req) +} + +// Reconcile and finalize the FederatedGateway Resource +// implemented by the user +type FederatedGatewayFinalizer interface { + FederatedGatewayReconciler + + // name of the finalizer used by this handler. + // finalizer names should be unique for a single task + FederatedGatewayFinalizerName() string + + // finalize the object before it is deleted. + // Watchers created with a finalizing handler will a + FinalizeFederatedGateway(obj *fed_gateway_solo_io_v1.FederatedGateway) error +} + +type FederatedGatewayReconcileLoop interface { + RunFederatedGatewayReconciler(ctx context.Context, rec FederatedGatewayReconciler, predicates ...predicate.Predicate) error +} + +type federatedGatewayReconcileLoop struct { + loop reconcile.Loop +} + +func NewFederatedGatewayReconcileLoop(name string, mgr manager.Manager, options reconcile.Options) FederatedGatewayReconcileLoop { + return &federatedGatewayReconcileLoop{ + // empty cluster indicates this reconciler is built for the local cluster + loop: reconcile.NewLoop(name, "", mgr, &fed_gateway_solo_io_v1.FederatedGateway{}, options), + } +} + +func (c *federatedGatewayReconcileLoop) RunFederatedGatewayReconciler(ctx context.Context, reconciler FederatedGatewayReconciler, predicates ...predicate.Predicate) error { + genericReconciler := genericFederatedGatewayReconciler{ + reconciler: reconciler, + } + + var reconcilerWrapper reconcile.Reconciler + if finalizingReconciler, ok := reconciler.(FederatedGatewayFinalizer); ok { + reconcilerWrapper = genericFederatedGatewayFinalizer{ + genericFederatedGatewayReconciler: genericReconciler, + finalizingReconciler: finalizingReconciler, + } + } else { + reconcilerWrapper = genericReconciler + } + return c.loop.RunReconciler(ctx, reconcilerWrapper, predicates...) +} + +// genericFederatedGatewayHandler implements a generic reconcile.Reconciler +type genericFederatedGatewayReconciler struct { + reconciler FederatedGatewayReconciler +} + +func (r genericFederatedGatewayReconciler) Reconcile(object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedGateway) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: FederatedGateway handler received event for %T", object) + } + return r.reconciler.ReconcileFederatedGateway(obj) +} + +func (r genericFederatedGatewayReconciler) ReconcileDeletion(request reconcile.Request) error { + if deletionReconciler, ok := r.reconciler.(FederatedGatewayDeletionReconciler); ok { + return deletionReconciler.ReconcileFederatedGatewayDeletion(request) + } + return nil +} + +// genericFederatedGatewayFinalizer implements a generic reconcile.FinalizingReconciler +type genericFederatedGatewayFinalizer struct { + genericFederatedGatewayReconciler + finalizingReconciler FederatedGatewayFinalizer +} + +func (r genericFederatedGatewayFinalizer) FinalizerName() string { + return r.finalizingReconciler.FederatedGatewayFinalizerName() +} + +func (r genericFederatedGatewayFinalizer) Finalize(object ezkube.Object) error { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedGateway) + if !ok { + return errors.Errorf("internal error: FederatedGateway handler received event for %T", object) + } + return r.finalizingReconciler.FinalizeFederatedGateway(obj) +} + +// Reconcile Upsert events for the FederatedMatchableHttpGateway Resource. +// implemented by the user +type FederatedMatchableHttpGatewayReconciler interface { + ReconcileFederatedMatchableHttpGateway(obj *fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) (reconcile.Result, error) +} + +// Reconcile deletion events for the FederatedMatchableHttpGateway Resource. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type FederatedMatchableHttpGatewayDeletionReconciler interface { + ReconcileFederatedMatchableHttpGatewayDeletion(req reconcile.Request) error +} + +type FederatedMatchableHttpGatewayReconcilerFuncs struct { + OnReconcileFederatedMatchableHttpGateway func(obj *fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) (reconcile.Result, error) + OnReconcileFederatedMatchableHttpGatewayDeletion func(req reconcile.Request) error +} + +func (f *FederatedMatchableHttpGatewayReconcilerFuncs) ReconcileFederatedMatchableHttpGateway(obj *fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) (reconcile.Result, error) { + if f.OnReconcileFederatedMatchableHttpGateway == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileFederatedMatchableHttpGateway(obj) +} + +func (f *FederatedMatchableHttpGatewayReconcilerFuncs) ReconcileFederatedMatchableHttpGatewayDeletion(req reconcile.Request) error { + if f.OnReconcileFederatedMatchableHttpGatewayDeletion == nil { + return nil + } + return f.OnReconcileFederatedMatchableHttpGatewayDeletion(req) +} + +// Reconcile and finalize the FederatedMatchableHttpGateway Resource +// implemented by the user +type FederatedMatchableHttpGatewayFinalizer interface { + FederatedMatchableHttpGatewayReconciler + + // name of the finalizer used by this handler. + // finalizer names should be unique for a single task + FederatedMatchableHttpGatewayFinalizerName() string + + // finalize the object before it is deleted. + // Watchers created with a finalizing handler will a + FinalizeFederatedMatchableHttpGateway(obj *fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) error +} + +type FederatedMatchableHttpGatewayReconcileLoop interface { + RunFederatedMatchableHttpGatewayReconciler(ctx context.Context, rec FederatedMatchableHttpGatewayReconciler, predicates ...predicate.Predicate) error +} + +type federatedMatchableHttpGatewayReconcileLoop struct { + loop reconcile.Loop +} + +func NewFederatedMatchableHttpGatewayReconcileLoop(name string, mgr manager.Manager, options reconcile.Options) FederatedMatchableHttpGatewayReconcileLoop { + return &federatedMatchableHttpGatewayReconcileLoop{ + // empty cluster indicates this reconciler is built for the local cluster + loop: reconcile.NewLoop(name, "", mgr, &fed_gateway_solo_io_v1.FederatedMatchableHttpGateway{}, options), + } +} + +func (c *federatedMatchableHttpGatewayReconcileLoop) RunFederatedMatchableHttpGatewayReconciler(ctx context.Context, reconciler FederatedMatchableHttpGatewayReconciler, predicates ...predicate.Predicate) error { + genericReconciler := genericFederatedMatchableHttpGatewayReconciler{ + reconciler: reconciler, + } + + var reconcilerWrapper reconcile.Reconciler + if finalizingReconciler, ok := reconciler.(FederatedMatchableHttpGatewayFinalizer); ok { + reconcilerWrapper = genericFederatedMatchableHttpGatewayFinalizer{ + genericFederatedMatchableHttpGatewayReconciler: genericReconciler, + finalizingReconciler: finalizingReconciler, + } + } else { + reconcilerWrapper = genericReconciler + } + return c.loop.RunReconciler(ctx, reconcilerWrapper, predicates...) +} + +// genericFederatedMatchableHttpGatewayHandler implements a generic reconcile.Reconciler +type genericFederatedMatchableHttpGatewayReconciler struct { + reconciler FederatedMatchableHttpGatewayReconciler +} + +func (r genericFederatedMatchableHttpGatewayReconciler) Reconcile(object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: FederatedMatchableHttpGateway handler received event for %T", object) + } + return r.reconciler.ReconcileFederatedMatchableHttpGateway(obj) +} + +func (r genericFederatedMatchableHttpGatewayReconciler) ReconcileDeletion(request reconcile.Request) error { + if deletionReconciler, ok := r.reconciler.(FederatedMatchableHttpGatewayDeletionReconciler); ok { + return deletionReconciler.ReconcileFederatedMatchableHttpGatewayDeletion(request) + } + return nil +} + +// genericFederatedMatchableHttpGatewayFinalizer implements a generic reconcile.FinalizingReconciler +type genericFederatedMatchableHttpGatewayFinalizer struct { + genericFederatedMatchableHttpGatewayReconciler + finalizingReconciler FederatedMatchableHttpGatewayFinalizer +} + +func (r genericFederatedMatchableHttpGatewayFinalizer) FinalizerName() string { + return r.finalizingReconciler.FederatedMatchableHttpGatewayFinalizerName() +} + +func (r genericFederatedMatchableHttpGatewayFinalizer) Finalize(object ezkube.Object) error { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) + if !ok { + return errors.Errorf("internal error: FederatedMatchableHttpGateway handler received event for %T", object) + } + return r.finalizingReconciler.FinalizeFederatedMatchableHttpGateway(obj) +} + +// Reconcile Upsert events for the FederatedMatchableTcpGateway Resource. +// implemented by the user +type FederatedMatchableTcpGatewayReconciler interface { + ReconcileFederatedMatchableTcpGateway(obj *fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) (reconcile.Result, error) +} + +// Reconcile deletion events for the FederatedMatchableTcpGateway Resource. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type FederatedMatchableTcpGatewayDeletionReconciler interface { + ReconcileFederatedMatchableTcpGatewayDeletion(req reconcile.Request) error +} + +type FederatedMatchableTcpGatewayReconcilerFuncs struct { + OnReconcileFederatedMatchableTcpGateway func(obj *fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) (reconcile.Result, error) + OnReconcileFederatedMatchableTcpGatewayDeletion func(req reconcile.Request) error +} + +func (f *FederatedMatchableTcpGatewayReconcilerFuncs) ReconcileFederatedMatchableTcpGateway(obj *fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) (reconcile.Result, error) { + if f.OnReconcileFederatedMatchableTcpGateway == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileFederatedMatchableTcpGateway(obj) +} + +func (f *FederatedMatchableTcpGatewayReconcilerFuncs) ReconcileFederatedMatchableTcpGatewayDeletion(req reconcile.Request) error { + if f.OnReconcileFederatedMatchableTcpGatewayDeletion == nil { + return nil + } + return f.OnReconcileFederatedMatchableTcpGatewayDeletion(req) +} + +// Reconcile and finalize the FederatedMatchableTcpGateway Resource +// implemented by the user +type FederatedMatchableTcpGatewayFinalizer interface { + FederatedMatchableTcpGatewayReconciler + + // name of the finalizer used by this handler. + // finalizer names should be unique for a single task + FederatedMatchableTcpGatewayFinalizerName() string + + // finalize the object before it is deleted. + // Watchers created with a finalizing handler will a + FinalizeFederatedMatchableTcpGateway(obj *fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) error +} + +type FederatedMatchableTcpGatewayReconcileLoop interface { + RunFederatedMatchableTcpGatewayReconciler(ctx context.Context, rec FederatedMatchableTcpGatewayReconciler, predicates ...predicate.Predicate) error +} + +type federatedMatchableTcpGatewayReconcileLoop struct { + loop reconcile.Loop +} + +func NewFederatedMatchableTcpGatewayReconcileLoop(name string, mgr manager.Manager, options reconcile.Options) FederatedMatchableTcpGatewayReconcileLoop { + return &federatedMatchableTcpGatewayReconcileLoop{ + // empty cluster indicates this reconciler is built for the local cluster + loop: reconcile.NewLoop(name, "", mgr, &fed_gateway_solo_io_v1.FederatedMatchableTcpGateway{}, options), + } +} + +func (c *federatedMatchableTcpGatewayReconcileLoop) RunFederatedMatchableTcpGatewayReconciler(ctx context.Context, reconciler FederatedMatchableTcpGatewayReconciler, predicates ...predicate.Predicate) error { + genericReconciler := genericFederatedMatchableTcpGatewayReconciler{ + reconciler: reconciler, + } + + var reconcilerWrapper reconcile.Reconciler + if finalizingReconciler, ok := reconciler.(FederatedMatchableTcpGatewayFinalizer); ok { + reconcilerWrapper = genericFederatedMatchableTcpGatewayFinalizer{ + genericFederatedMatchableTcpGatewayReconciler: genericReconciler, + finalizingReconciler: finalizingReconciler, + } + } else { + reconcilerWrapper = genericReconciler + } + return c.loop.RunReconciler(ctx, reconcilerWrapper, predicates...) +} + +// genericFederatedMatchableTcpGatewayHandler implements a generic reconcile.Reconciler +type genericFederatedMatchableTcpGatewayReconciler struct { + reconciler FederatedMatchableTcpGatewayReconciler +} + +func (r genericFederatedMatchableTcpGatewayReconciler) Reconcile(object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: FederatedMatchableTcpGateway handler received event for %T", object) + } + return r.reconciler.ReconcileFederatedMatchableTcpGateway(obj) +} + +func (r genericFederatedMatchableTcpGatewayReconciler) ReconcileDeletion(request reconcile.Request) error { + if deletionReconciler, ok := r.reconciler.(FederatedMatchableTcpGatewayDeletionReconciler); ok { + return deletionReconciler.ReconcileFederatedMatchableTcpGatewayDeletion(request) + } + return nil +} + +// genericFederatedMatchableTcpGatewayFinalizer implements a generic reconcile.FinalizingReconciler +type genericFederatedMatchableTcpGatewayFinalizer struct { + genericFederatedMatchableTcpGatewayReconciler + finalizingReconciler FederatedMatchableTcpGatewayFinalizer +} + +func (r genericFederatedMatchableTcpGatewayFinalizer) FinalizerName() string { + return r.finalizingReconciler.FederatedMatchableTcpGatewayFinalizerName() +} + +func (r genericFederatedMatchableTcpGatewayFinalizer) Finalize(object ezkube.Object) error { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) + if !ok { + return errors.Errorf("internal error: FederatedMatchableTcpGateway handler received event for %T", object) + } + return r.finalizingReconciler.FinalizeFederatedMatchableTcpGateway(obj) +} + +// Reconcile Upsert events for the FederatedRouteTable Resource. +// implemented by the user +type FederatedRouteTableReconciler interface { + ReconcileFederatedRouteTable(obj *fed_gateway_solo_io_v1.FederatedRouteTable) (reconcile.Result, error) +} + +// Reconcile deletion events for the FederatedRouteTable Resource. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type FederatedRouteTableDeletionReconciler interface { + ReconcileFederatedRouteTableDeletion(req reconcile.Request) error +} + +type FederatedRouteTableReconcilerFuncs struct { + OnReconcileFederatedRouteTable func(obj *fed_gateway_solo_io_v1.FederatedRouteTable) (reconcile.Result, error) + OnReconcileFederatedRouteTableDeletion func(req reconcile.Request) error +} + +func (f *FederatedRouteTableReconcilerFuncs) ReconcileFederatedRouteTable(obj *fed_gateway_solo_io_v1.FederatedRouteTable) (reconcile.Result, error) { + if f.OnReconcileFederatedRouteTable == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileFederatedRouteTable(obj) +} + +func (f *FederatedRouteTableReconcilerFuncs) ReconcileFederatedRouteTableDeletion(req reconcile.Request) error { + if f.OnReconcileFederatedRouteTableDeletion == nil { + return nil + } + return f.OnReconcileFederatedRouteTableDeletion(req) +} + +// Reconcile and finalize the FederatedRouteTable Resource +// implemented by the user +type FederatedRouteTableFinalizer interface { + FederatedRouteTableReconciler + + // name of the finalizer used by this handler. + // finalizer names should be unique for a single task + FederatedRouteTableFinalizerName() string + + // finalize the object before it is deleted. + // Watchers created with a finalizing handler will a + FinalizeFederatedRouteTable(obj *fed_gateway_solo_io_v1.FederatedRouteTable) error +} + +type FederatedRouteTableReconcileLoop interface { + RunFederatedRouteTableReconciler(ctx context.Context, rec FederatedRouteTableReconciler, predicates ...predicate.Predicate) error +} + +type federatedRouteTableReconcileLoop struct { + loop reconcile.Loop +} + +func NewFederatedRouteTableReconcileLoop(name string, mgr manager.Manager, options reconcile.Options) FederatedRouteTableReconcileLoop { + return &federatedRouteTableReconcileLoop{ + // empty cluster indicates this reconciler is built for the local cluster + loop: reconcile.NewLoop(name, "", mgr, &fed_gateway_solo_io_v1.FederatedRouteTable{}, options), + } +} + +func (c *federatedRouteTableReconcileLoop) RunFederatedRouteTableReconciler(ctx context.Context, reconciler FederatedRouteTableReconciler, predicates ...predicate.Predicate) error { + genericReconciler := genericFederatedRouteTableReconciler{ + reconciler: reconciler, + } + + var reconcilerWrapper reconcile.Reconciler + if finalizingReconciler, ok := reconciler.(FederatedRouteTableFinalizer); ok { + reconcilerWrapper = genericFederatedRouteTableFinalizer{ + genericFederatedRouteTableReconciler: genericReconciler, + finalizingReconciler: finalizingReconciler, + } + } else { + reconcilerWrapper = genericReconciler + } + return c.loop.RunReconciler(ctx, reconcilerWrapper, predicates...) +} + +// genericFederatedRouteTableHandler implements a generic reconcile.Reconciler +type genericFederatedRouteTableReconciler struct { + reconciler FederatedRouteTableReconciler +} + +func (r genericFederatedRouteTableReconciler) Reconcile(object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedRouteTable) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: FederatedRouteTable handler received event for %T", object) + } + return r.reconciler.ReconcileFederatedRouteTable(obj) +} + +func (r genericFederatedRouteTableReconciler) ReconcileDeletion(request reconcile.Request) error { + if deletionReconciler, ok := r.reconciler.(FederatedRouteTableDeletionReconciler); ok { + return deletionReconciler.ReconcileFederatedRouteTableDeletion(request) + } + return nil +} + +// genericFederatedRouteTableFinalizer implements a generic reconcile.FinalizingReconciler +type genericFederatedRouteTableFinalizer struct { + genericFederatedRouteTableReconciler + finalizingReconciler FederatedRouteTableFinalizer +} + +func (r genericFederatedRouteTableFinalizer) FinalizerName() string { + return r.finalizingReconciler.FederatedRouteTableFinalizerName() +} + +func (r genericFederatedRouteTableFinalizer) Finalize(object ezkube.Object) error { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedRouteTable) + if !ok { + return errors.Errorf("internal error: FederatedRouteTable handler received event for %T", object) + } + return r.finalizingReconciler.FinalizeFederatedRouteTable(obj) +} + +// Reconcile Upsert events for the FederatedVirtualService Resource. +// implemented by the user +type FederatedVirtualServiceReconciler interface { + ReconcileFederatedVirtualService(obj *fed_gateway_solo_io_v1.FederatedVirtualService) (reconcile.Result, error) +} + +// Reconcile deletion events for the FederatedVirtualService Resource. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type FederatedVirtualServiceDeletionReconciler interface { + ReconcileFederatedVirtualServiceDeletion(req reconcile.Request) error +} + +type FederatedVirtualServiceReconcilerFuncs struct { + OnReconcileFederatedVirtualService func(obj *fed_gateway_solo_io_v1.FederatedVirtualService) (reconcile.Result, error) + OnReconcileFederatedVirtualServiceDeletion func(req reconcile.Request) error +} + +func (f *FederatedVirtualServiceReconcilerFuncs) ReconcileFederatedVirtualService(obj *fed_gateway_solo_io_v1.FederatedVirtualService) (reconcile.Result, error) { + if f.OnReconcileFederatedVirtualService == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileFederatedVirtualService(obj) +} + +func (f *FederatedVirtualServiceReconcilerFuncs) ReconcileFederatedVirtualServiceDeletion(req reconcile.Request) error { + if f.OnReconcileFederatedVirtualServiceDeletion == nil { + return nil + } + return f.OnReconcileFederatedVirtualServiceDeletion(req) +} + +// Reconcile and finalize the FederatedVirtualService Resource +// implemented by the user +type FederatedVirtualServiceFinalizer interface { + FederatedVirtualServiceReconciler + + // name of the finalizer used by this handler. + // finalizer names should be unique for a single task + FederatedVirtualServiceFinalizerName() string + + // finalize the object before it is deleted. + // Watchers created with a finalizing handler will a + FinalizeFederatedVirtualService(obj *fed_gateway_solo_io_v1.FederatedVirtualService) error +} + +type FederatedVirtualServiceReconcileLoop interface { + RunFederatedVirtualServiceReconciler(ctx context.Context, rec FederatedVirtualServiceReconciler, predicates ...predicate.Predicate) error +} + +type federatedVirtualServiceReconcileLoop struct { + loop reconcile.Loop +} + +func NewFederatedVirtualServiceReconcileLoop(name string, mgr manager.Manager, options reconcile.Options) FederatedVirtualServiceReconcileLoop { + return &federatedVirtualServiceReconcileLoop{ + // empty cluster indicates this reconciler is built for the local cluster + loop: reconcile.NewLoop(name, "", mgr, &fed_gateway_solo_io_v1.FederatedVirtualService{}, options), + } +} + +func (c *federatedVirtualServiceReconcileLoop) RunFederatedVirtualServiceReconciler(ctx context.Context, reconciler FederatedVirtualServiceReconciler, predicates ...predicate.Predicate) error { + genericReconciler := genericFederatedVirtualServiceReconciler{ + reconciler: reconciler, + } + + var reconcilerWrapper reconcile.Reconciler + if finalizingReconciler, ok := reconciler.(FederatedVirtualServiceFinalizer); ok { + reconcilerWrapper = genericFederatedVirtualServiceFinalizer{ + genericFederatedVirtualServiceReconciler: genericReconciler, + finalizingReconciler: finalizingReconciler, + } + } else { + reconcilerWrapper = genericReconciler + } + return c.loop.RunReconciler(ctx, reconcilerWrapper, predicates...) +} + +// genericFederatedVirtualServiceHandler implements a generic reconcile.Reconciler +type genericFederatedVirtualServiceReconciler struct { + reconciler FederatedVirtualServiceReconciler +} + +func (r genericFederatedVirtualServiceReconciler) Reconcile(object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedVirtualService) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: FederatedVirtualService handler received event for %T", object) + } + return r.reconciler.ReconcileFederatedVirtualService(obj) +} + +func (r genericFederatedVirtualServiceReconciler) ReconcileDeletion(request reconcile.Request) error { + if deletionReconciler, ok := r.reconciler.(FederatedVirtualServiceDeletionReconciler); ok { + return deletionReconciler.ReconcileFederatedVirtualServiceDeletion(request) + } + return nil +} + +// genericFederatedVirtualServiceFinalizer implements a generic reconcile.FinalizingReconciler +type genericFederatedVirtualServiceFinalizer struct { + genericFederatedVirtualServiceReconciler + finalizingReconciler FederatedVirtualServiceFinalizer +} + +func (r genericFederatedVirtualServiceFinalizer) FinalizerName() string { + return r.finalizingReconciler.FederatedVirtualServiceFinalizerName() +} + +func (r genericFederatedVirtualServiceFinalizer) Finalize(object ezkube.Object) error { + obj, ok := object.(*fed_gateway_solo_io_v1.FederatedVirtualService) + if !ok { + return errors.Errorf("internal error: FederatedVirtualService handler received event for %T", object) + } + return r.finalizingReconciler.FinalizeFederatedVirtualService(obj) +} diff --git a/pkg/api/fed.gateway.solo.io/v1/doc.go b/pkg/api/fed.gateway.solo.io/v1/doc.go new file mode 100644 index 000000000..11abec6cc --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/doc.go @@ -0,0 +1,6 @@ +// Code generated by skv2. DO NOT EDIT. + +// Package v1 contains API Schema definitions for the fed.gateway.solo.io v1 API group +// +k8s:deepcopy-gen=package,register +// +groupName=fed.gateway.solo.io +package v1 diff --git a/pkg/api/fed.gateway.solo.io/v1/mocks/clients.go b/pkg/api/fed.gateway.solo.io/v1/mocks/clients.go new file mode 100644 index 000000000..a4508ab15 --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/mocks/clients.go @@ -0,0 +1,2665 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./clients.go + +// Package mock_v1 is a generated GoMock package. +package mock_v1 + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1" + client "sigs.k8s.io/controller-runtime/pkg/client" +) + +// MockMulticlusterClientset is a mock of MulticlusterClientset interface. +type MockMulticlusterClientset struct { + ctrl *gomock.Controller + recorder *MockMulticlusterClientsetMockRecorder +} + +// MockMulticlusterClientsetMockRecorder is the mock recorder for MockMulticlusterClientset. +type MockMulticlusterClientsetMockRecorder struct { + mock *MockMulticlusterClientset +} + +// NewMockMulticlusterClientset creates a new mock instance. +func NewMockMulticlusterClientset(ctrl *gomock.Controller) *MockMulticlusterClientset { + mock := &MockMulticlusterClientset{ctrl: ctrl} + mock.recorder = &MockMulticlusterClientsetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterClientset) EXPECT() *MockMulticlusterClientsetMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterClientset) Cluster(cluster string) (v1.Clientset, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1.Clientset) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterClientsetMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterClientset)(nil).Cluster), cluster) +} + +// MockClientset is a mock of Clientset interface. +type MockClientset struct { + ctrl *gomock.Controller + recorder *MockClientsetMockRecorder +} + +// MockClientsetMockRecorder is the mock recorder for MockClientset. +type MockClientsetMockRecorder struct { + mock *MockClientset +} + +// NewMockClientset creates a new mock instance. +func NewMockClientset(ctrl *gomock.Controller) *MockClientset { + mock := &MockClientset{ctrl: ctrl} + mock.recorder = &MockClientsetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockClientset) EXPECT() *MockClientsetMockRecorder { + return m.recorder +} + +// FederatedGateways mocks base method. +func (m *MockClientset) FederatedGateways() v1.FederatedGatewayClient { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FederatedGateways") + ret0, _ := ret[0].(v1.FederatedGatewayClient) + return ret0 +} + +// FederatedGateways indicates an expected call of FederatedGateways. +func (mr *MockClientsetMockRecorder) FederatedGateways() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FederatedGateways", reflect.TypeOf((*MockClientset)(nil).FederatedGateways)) +} + +// FederatedMatchableHttpGateways mocks base method. +func (m *MockClientset) FederatedMatchableHttpGateways() v1.FederatedMatchableHttpGatewayClient { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FederatedMatchableHttpGateways") + ret0, _ := ret[0].(v1.FederatedMatchableHttpGatewayClient) + return ret0 +} + +// FederatedMatchableHttpGateways indicates an expected call of FederatedMatchableHttpGateways. +func (mr *MockClientsetMockRecorder) FederatedMatchableHttpGateways() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FederatedMatchableHttpGateways", reflect.TypeOf((*MockClientset)(nil).FederatedMatchableHttpGateways)) +} + +// FederatedMatchableTcpGateways mocks base method. +func (m *MockClientset) FederatedMatchableTcpGateways() v1.FederatedMatchableTcpGatewayClient { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FederatedMatchableTcpGateways") + ret0, _ := ret[0].(v1.FederatedMatchableTcpGatewayClient) + return ret0 +} + +// FederatedMatchableTcpGateways indicates an expected call of FederatedMatchableTcpGateways. +func (mr *MockClientsetMockRecorder) FederatedMatchableTcpGateways() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FederatedMatchableTcpGateways", reflect.TypeOf((*MockClientset)(nil).FederatedMatchableTcpGateways)) +} + +// FederatedRouteTables mocks base method. +func (m *MockClientset) FederatedRouteTables() v1.FederatedRouteTableClient { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FederatedRouteTables") + ret0, _ := ret[0].(v1.FederatedRouteTableClient) + return ret0 +} + +// FederatedRouteTables indicates an expected call of FederatedRouteTables. +func (mr *MockClientsetMockRecorder) FederatedRouteTables() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FederatedRouteTables", reflect.TypeOf((*MockClientset)(nil).FederatedRouteTables)) +} + +// FederatedVirtualServices mocks base method. +func (m *MockClientset) FederatedVirtualServices() v1.FederatedVirtualServiceClient { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FederatedVirtualServices") + ret0, _ := ret[0].(v1.FederatedVirtualServiceClient) + return ret0 +} + +// FederatedVirtualServices indicates an expected call of FederatedVirtualServices. +func (mr *MockClientsetMockRecorder) FederatedVirtualServices() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FederatedVirtualServices", reflect.TypeOf((*MockClientset)(nil).FederatedVirtualServices)) +} + +// MockFederatedGatewayReader is a mock of FederatedGatewayReader interface. +type MockFederatedGatewayReader struct { + ctrl *gomock.Controller + recorder *MockFederatedGatewayReaderMockRecorder +} + +// MockFederatedGatewayReaderMockRecorder is the mock recorder for MockFederatedGatewayReader. +type MockFederatedGatewayReaderMockRecorder struct { + mock *MockFederatedGatewayReader +} + +// NewMockFederatedGatewayReader creates a new mock instance. +func NewMockFederatedGatewayReader(ctrl *gomock.Controller) *MockFederatedGatewayReader { + mock := &MockFederatedGatewayReader{ctrl: ctrl} + mock.recorder = &MockFederatedGatewayReaderMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedGatewayReader) EXPECT() *MockFederatedGatewayReaderMockRecorder { + return m.recorder +} + +// GetFederatedGateway mocks base method. +func (m *MockFederatedGatewayReader) GetFederatedGateway(ctx context.Context, key client.ObjectKey) (*v1.FederatedGateway, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFederatedGateway", ctx, key) + ret0, _ := ret[0].(*v1.FederatedGateway) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFederatedGateway indicates an expected call of GetFederatedGateway. +func (mr *MockFederatedGatewayReaderMockRecorder) GetFederatedGateway(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFederatedGateway", reflect.TypeOf((*MockFederatedGatewayReader)(nil).GetFederatedGateway), ctx, key) +} + +// ListFederatedGateway mocks base method. +func (m *MockFederatedGatewayReader) ListFederatedGateway(ctx context.Context, opts ...client.ListOption) (*v1.FederatedGatewayList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFederatedGateway", varargs...) + ret0, _ := ret[0].(*v1.FederatedGatewayList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFederatedGateway indicates an expected call of ListFederatedGateway. +func (mr *MockFederatedGatewayReaderMockRecorder) ListFederatedGateway(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFederatedGateway", reflect.TypeOf((*MockFederatedGatewayReader)(nil).ListFederatedGateway), varargs...) +} + +// MockFederatedGatewayWriter is a mock of FederatedGatewayWriter interface. +type MockFederatedGatewayWriter struct { + ctrl *gomock.Controller + recorder *MockFederatedGatewayWriterMockRecorder +} + +// MockFederatedGatewayWriterMockRecorder is the mock recorder for MockFederatedGatewayWriter. +type MockFederatedGatewayWriterMockRecorder struct { + mock *MockFederatedGatewayWriter +} + +// NewMockFederatedGatewayWriter creates a new mock instance. +func NewMockFederatedGatewayWriter(ctrl *gomock.Controller) *MockFederatedGatewayWriter { + mock := &MockFederatedGatewayWriter{ctrl: ctrl} + mock.recorder = &MockFederatedGatewayWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedGatewayWriter) EXPECT() *MockFederatedGatewayWriterMockRecorder { + return m.recorder +} + +// CreateFederatedGateway mocks base method. +func (m *MockFederatedGatewayWriter) CreateFederatedGateway(ctx context.Context, obj *v1.FederatedGateway, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateFederatedGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedGateway indicates an expected call of CreateFederatedGateway. +func (mr *MockFederatedGatewayWriterMockRecorder) CreateFederatedGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedGateway", reflect.TypeOf((*MockFederatedGatewayWriter)(nil).CreateFederatedGateway), varargs...) +} + +// DeleteAllOfFederatedGateway mocks base method. +func (m *MockFederatedGatewayWriter) DeleteAllOfFederatedGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfFederatedGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfFederatedGateway indicates an expected call of DeleteAllOfFederatedGateway. +func (mr *MockFederatedGatewayWriterMockRecorder) DeleteAllOfFederatedGateway(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfFederatedGateway", reflect.TypeOf((*MockFederatedGatewayWriter)(nil).DeleteAllOfFederatedGateway), varargs...) +} + +// DeleteFederatedGateway mocks base method. +func (m *MockFederatedGatewayWriter) DeleteFederatedGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteFederatedGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedGateway indicates an expected call of DeleteFederatedGateway. +func (mr *MockFederatedGatewayWriterMockRecorder) DeleteFederatedGateway(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedGateway", reflect.TypeOf((*MockFederatedGatewayWriter)(nil).DeleteFederatedGateway), varargs...) +} + +// PatchFederatedGateway mocks base method. +func (m *MockFederatedGatewayWriter) PatchFederatedGateway(ctx context.Context, obj *v1.FederatedGateway, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedGateway indicates an expected call of PatchFederatedGateway. +func (mr *MockFederatedGatewayWriterMockRecorder) PatchFederatedGateway(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedGateway", reflect.TypeOf((*MockFederatedGatewayWriter)(nil).PatchFederatedGateway), varargs...) +} + +// UpdateFederatedGateway mocks base method. +func (m *MockFederatedGatewayWriter) UpdateFederatedGateway(ctx context.Context, obj *v1.FederatedGateway, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedGateway indicates an expected call of UpdateFederatedGateway. +func (mr *MockFederatedGatewayWriterMockRecorder) UpdateFederatedGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedGateway", reflect.TypeOf((*MockFederatedGatewayWriter)(nil).UpdateFederatedGateway), varargs...) +} + +// UpsertFederatedGateway mocks base method. +func (m *MockFederatedGatewayWriter) UpsertFederatedGateway(ctx context.Context, obj *v1.FederatedGateway, transitionFuncs ...v1.FederatedGatewayTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertFederatedGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertFederatedGateway indicates an expected call of UpsertFederatedGateway. +func (mr *MockFederatedGatewayWriterMockRecorder) UpsertFederatedGateway(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertFederatedGateway", reflect.TypeOf((*MockFederatedGatewayWriter)(nil).UpsertFederatedGateway), varargs...) +} + +// MockFederatedGatewayStatusWriter is a mock of FederatedGatewayStatusWriter interface. +type MockFederatedGatewayStatusWriter struct { + ctrl *gomock.Controller + recorder *MockFederatedGatewayStatusWriterMockRecorder +} + +// MockFederatedGatewayStatusWriterMockRecorder is the mock recorder for MockFederatedGatewayStatusWriter. +type MockFederatedGatewayStatusWriterMockRecorder struct { + mock *MockFederatedGatewayStatusWriter +} + +// NewMockFederatedGatewayStatusWriter creates a new mock instance. +func NewMockFederatedGatewayStatusWriter(ctrl *gomock.Controller) *MockFederatedGatewayStatusWriter { + mock := &MockFederatedGatewayStatusWriter{ctrl: ctrl} + mock.recorder = &MockFederatedGatewayStatusWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedGatewayStatusWriter) EXPECT() *MockFederatedGatewayStatusWriterMockRecorder { + return m.recorder +} + +// PatchFederatedGatewayStatus mocks base method. +func (m *MockFederatedGatewayStatusWriter) PatchFederatedGatewayStatus(ctx context.Context, obj *v1.FederatedGateway, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedGatewayStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedGatewayStatus indicates an expected call of PatchFederatedGatewayStatus. +func (mr *MockFederatedGatewayStatusWriterMockRecorder) PatchFederatedGatewayStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedGatewayStatus", reflect.TypeOf((*MockFederatedGatewayStatusWriter)(nil).PatchFederatedGatewayStatus), varargs...) +} + +// UpdateFederatedGatewayStatus mocks base method. +func (m *MockFederatedGatewayStatusWriter) UpdateFederatedGatewayStatus(ctx context.Context, obj *v1.FederatedGateway, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedGatewayStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedGatewayStatus indicates an expected call of UpdateFederatedGatewayStatus. +func (mr *MockFederatedGatewayStatusWriterMockRecorder) UpdateFederatedGatewayStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedGatewayStatus", reflect.TypeOf((*MockFederatedGatewayStatusWriter)(nil).UpdateFederatedGatewayStatus), varargs...) +} + +// MockFederatedGatewayClient is a mock of FederatedGatewayClient interface. +type MockFederatedGatewayClient struct { + ctrl *gomock.Controller + recorder *MockFederatedGatewayClientMockRecorder +} + +// MockFederatedGatewayClientMockRecorder is the mock recorder for MockFederatedGatewayClient. +type MockFederatedGatewayClientMockRecorder struct { + mock *MockFederatedGatewayClient +} + +// NewMockFederatedGatewayClient creates a new mock instance. +func NewMockFederatedGatewayClient(ctrl *gomock.Controller) *MockFederatedGatewayClient { + mock := &MockFederatedGatewayClient{ctrl: ctrl} + mock.recorder = &MockFederatedGatewayClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedGatewayClient) EXPECT() *MockFederatedGatewayClientMockRecorder { + return m.recorder +} + +// CreateFederatedGateway mocks base method. +func (m *MockFederatedGatewayClient) CreateFederatedGateway(ctx context.Context, obj *v1.FederatedGateway, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateFederatedGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedGateway indicates an expected call of CreateFederatedGateway. +func (mr *MockFederatedGatewayClientMockRecorder) CreateFederatedGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedGateway", reflect.TypeOf((*MockFederatedGatewayClient)(nil).CreateFederatedGateway), varargs...) +} + +// DeleteAllOfFederatedGateway mocks base method. +func (m *MockFederatedGatewayClient) DeleteAllOfFederatedGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfFederatedGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfFederatedGateway indicates an expected call of DeleteAllOfFederatedGateway. +func (mr *MockFederatedGatewayClientMockRecorder) DeleteAllOfFederatedGateway(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfFederatedGateway", reflect.TypeOf((*MockFederatedGatewayClient)(nil).DeleteAllOfFederatedGateway), varargs...) +} + +// DeleteFederatedGateway mocks base method. +func (m *MockFederatedGatewayClient) DeleteFederatedGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteFederatedGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedGateway indicates an expected call of DeleteFederatedGateway. +func (mr *MockFederatedGatewayClientMockRecorder) DeleteFederatedGateway(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedGateway", reflect.TypeOf((*MockFederatedGatewayClient)(nil).DeleteFederatedGateway), varargs...) +} + +// GetFederatedGateway mocks base method. +func (m *MockFederatedGatewayClient) GetFederatedGateway(ctx context.Context, key client.ObjectKey) (*v1.FederatedGateway, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFederatedGateway", ctx, key) + ret0, _ := ret[0].(*v1.FederatedGateway) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFederatedGateway indicates an expected call of GetFederatedGateway. +func (mr *MockFederatedGatewayClientMockRecorder) GetFederatedGateway(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFederatedGateway", reflect.TypeOf((*MockFederatedGatewayClient)(nil).GetFederatedGateway), ctx, key) +} + +// ListFederatedGateway mocks base method. +func (m *MockFederatedGatewayClient) ListFederatedGateway(ctx context.Context, opts ...client.ListOption) (*v1.FederatedGatewayList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFederatedGateway", varargs...) + ret0, _ := ret[0].(*v1.FederatedGatewayList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFederatedGateway indicates an expected call of ListFederatedGateway. +func (mr *MockFederatedGatewayClientMockRecorder) ListFederatedGateway(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFederatedGateway", reflect.TypeOf((*MockFederatedGatewayClient)(nil).ListFederatedGateway), varargs...) +} + +// PatchFederatedGateway mocks base method. +func (m *MockFederatedGatewayClient) PatchFederatedGateway(ctx context.Context, obj *v1.FederatedGateway, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedGateway indicates an expected call of PatchFederatedGateway. +func (mr *MockFederatedGatewayClientMockRecorder) PatchFederatedGateway(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedGateway", reflect.TypeOf((*MockFederatedGatewayClient)(nil).PatchFederatedGateway), varargs...) +} + +// PatchFederatedGatewayStatus mocks base method. +func (m *MockFederatedGatewayClient) PatchFederatedGatewayStatus(ctx context.Context, obj *v1.FederatedGateway, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedGatewayStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedGatewayStatus indicates an expected call of PatchFederatedGatewayStatus. +func (mr *MockFederatedGatewayClientMockRecorder) PatchFederatedGatewayStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedGatewayStatus", reflect.TypeOf((*MockFederatedGatewayClient)(nil).PatchFederatedGatewayStatus), varargs...) +} + +// UpdateFederatedGateway mocks base method. +func (m *MockFederatedGatewayClient) UpdateFederatedGateway(ctx context.Context, obj *v1.FederatedGateway, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedGateway indicates an expected call of UpdateFederatedGateway. +func (mr *MockFederatedGatewayClientMockRecorder) UpdateFederatedGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedGateway", reflect.TypeOf((*MockFederatedGatewayClient)(nil).UpdateFederatedGateway), varargs...) +} + +// UpdateFederatedGatewayStatus mocks base method. +func (m *MockFederatedGatewayClient) UpdateFederatedGatewayStatus(ctx context.Context, obj *v1.FederatedGateway, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedGatewayStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedGatewayStatus indicates an expected call of UpdateFederatedGatewayStatus. +func (mr *MockFederatedGatewayClientMockRecorder) UpdateFederatedGatewayStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedGatewayStatus", reflect.TypeOf((*MockFederatedGatewayClient)(nil).UpdateFederatedGatewayStatus), varargs...) +} + +// UpsertFederatedGateway mocks base method. +func (m *MockFederatedGatewayClient) UpsertFederatedGateway(ctx context.Context, obj *v1.FederatedGateway, transitionFuncs ...v1.FederatedGatewayTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertFederatedGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertFederatedGateway indicates an expected call of UpsertFederatedGateway. +func (mr *MockFederatedGatewayClientMockRecorder) UpsertFederatedGateway(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertFederatedGateway", reflect.TypeOf((*MockFederatedGatewayClient)(nil).UpsertFederatedGateway), varargs...) +} + +// MockMulticlusterFederatedGatewayClient is a mock of MulticlusterFederatedGatewayClient interface. +type MockMulticlusterFederatedGatewayClient struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedGatewayClientMockRecorder +} + +// MockMulticlusterFederatedGatewayClientMockRecorder is the mock recorder for MockMulticlusterFederatedGatewayClient. +type MockMulticlusterFederatedGatewayClientMockRecorder struct { + mock *MockMulticlusterFederatedGatewayClient +} + +// NewMockMulticlusterFederatedGatewayClient creates a new mock instance. +func NewMockMulticlusterFederatedGatewayClient(ctrl *gomock.Controller) *MockMulticlusterFederatedGatewayClient { + mock := &MockMulticlusterFederatedGatewayClient{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedGatewayClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedGatewayClient) EXPECT() *MockMulticlusterFederatedGatewayClientMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterFederatedGatewayClient) Cluster(cluster string) (v1.FederatedGatewayClient, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1.FederatedGatewayClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterFederatedGatewayClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterFederatedGatewayClient)(nil).Cluster), cluster) +} + +// MockFederatedMatchableHttpGatewayReader is a mock of FederatedMatchableHttpGatewayReader interface. +type MockFederatedMatchableHttpGatewayReader struct { + ctrl *gomock.Controller + recorder *MockFederatedMatchableHttpGatewayReaderMockRecorder +} + +// MockFederatedMatchableHttpGatewayReaderMockRecorder is the mock recorder for MockFederatedMatchableHttpGatewayReader. +type MockFederatedMatchableHttpGatewayReaderMockRecorder struct { + mock *MockFederatedMatchableHttpGatewayReader +} + +// NewMockFederatedMatchableHttpGatewayReader creates a new mock instance. +func NewMockFederatedMatchableHttpGatewayReader(ctrl *gomock.Controller) *MockFederatedMatchableHttpGatewayReader { + mock := &MockFederatedMatchableHttpGatewayReader{ctrl: ctrl} + mock.recorder = &MockFederatedMatchableHttpGatewayReaderMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedMatchableHttpGatewayReader) EXPECT() *MockFederatedMatchableHttpGatewayReaderMockRecorder { + return m.recorder +} + +// GetFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayReader) GetFederatedMatchableHttpGateway(ctx context.Context, key client.ObjectKey) (*v1.FederatedMatchableHttpGateway, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFederatedMatchableHttpGateway", ctx, key) + ret0, _ := ret[0].(*v1.FederatedMatchableHttpGateway) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFederatedMatchableHttpGateway indicates an expected call of GetFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayReaderMockRecorder) GetFederatedMatchableHttpGateway(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayReader)(nil).GetFederatedMatchableHttpGateway), ctx, key) +} + +// ListFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayReader) ListFederatedMatchableHttpGateway(ctx context.Context, opts ...client.ListOption) (*v1.FederatedMatchableHttpGatewayList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFederatedMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(*v1.FederatedMatchableHttpGatewayList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFederatedMatchableHttpGateway indicates an expected call of ListFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayReaderMockRecorder) ListFederatedMatchableHttpGateway(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayReader)(nil).ListFederatedMatchableHttpGateway), varargs...) +} + +// MockFederatedMatchableHttpGatewayWriter is a mock of FederatedMatchableHttpGatewayWriter interface. +type MockFederatedMatchableHttpGatewayWriter struct { + ctrl *gomock.Controller + recorder *MockFederatedMatchableHttpGatewayWriterMockRecorder +} + +// MockFederatedMatchableHttpGatewayWriterMockRecorder is the mock recorder for MockFederatedMatchableHttpGatewayWriter. +type MockFederatedMatchableHttpGatewayWriterMockRecorder struct { + mock *MockFederatedMatchableHttpGatewayWriter +} + +// NewMockFederatedMatchableHttpGatewayWriter creates a new mock instance. +func NewMockFederatedMatchableHttpGatewayWriter(ctrl *gomock.Controller) *MockFederatedMatchableHttpGatewayWriter { + mock := &MockFederatedMatchableHttpGatewayWriter{ctrl: ctrl} + mock.recorder = &MockFederatedMatchableHttpGatewayWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedMatchableHttpGatewayWriter) EXPECT() *MockFederatedMatchableHttpGatewayWriterMockRecorder { + return m.recorder +} + +// CreateFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayWriter) CreateFederatedMatchableHttpGateway(ctx context.Context, obj *v1.FederatedMatchableHttpGateway, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateFederatedMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedMatchableHttpGateway indicates an expected call of CreateFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayWriterMockRecorder) CreateFederatedMatchableHttpGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayWriter)(nil).CreateFederatedMatchableHttpGateway), varargs...) +} + +// DeleteAllOfFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayWriter) DeleteAllOfFederatedMatchableHttpGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfFederatedMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfFederatedMatchableHttpGateway indicates an expected call of DeleteAllOfFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayWriterMockRecorder) DeleteAllOfFederatedMatchableHttpGateway(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayWriter)(nil).DeleteAllOfFederatedMatchableHttpGateway), varargs...) +} + +// DeleteFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayWriter) DeleteFederatedMatchableHttpGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteFederatedMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedMatchableHttpGateway indicates an expected call of DeleteFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayWriterMockRecorder) DeleteFederatedMatchableHttpGateway(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayWriter)(nil).DeleteFederatedMatchableHttpGateway), varargs...) +} + +// PatchFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayWriter) PatchFederatedMatchableHttpGateway(ctx context.Context, obj *v1.FederatedMatchableHttpGateway, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedMatchableHttpGateway indicates an expected call of PatchFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayWriterMockRecorder) PatchFederatedMatchableHttpGateway(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayWriter)(nil).PatchFederatedMatchableHttpGateway), varargs...) +} + +// UpdateFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayWriter) UpdateFederatedMatchableHttpGateway(ctx context.Context, obj *v1.FederatedMatchableHttpGateway, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedMatchableHttpGateway indicates an expected call of UpdateFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayWriterMockRecorder) UpdateFederatedMatchableHttpGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayWriter)(nil).UpdateFederatedMatchableHttpGateway), varargs...) +} + +// UpsertFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayWriter) UpsertFederatedMatchableHttpGateway(ctx context.Context, obj *v1.FederatedMatchableHttpGateway, transitionFuncs ...v1.FederatedMatchableHttpGatewayTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertFederatedMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertFederatedMatchableHttpGateway indicates an expected call of UpsertFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayWriterMockRecorder) UpsertFederatedMatchableHttpGateway(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayWriter)(nil).UpsertFederatedMatchableHttpGateway), varargs...) +} + +// MockFederatedMatchableHttpGatewayStatusWriter is a mock of FederatedMatchableHttpGatewayStatusWriter interface. +type MockFederatedMatchableHttpGatewayStatusWriter struct { + ctrl *gomock.Controller + recorder *MockFederatedMatchableHttpGatewayStatusWriterMockRecorder +} + +// MockFederatedMatchableHttpGatewayStatusWriterMockRecorder is the mock recorder for MockFederatedMatchableHttpGatewayStatusWriter. +type MockFederatedMatchableHttpGatewayStatusWriterMockRecorder struct { + mock *MockFederatedMatchableHttpGatewayStatusWriter +} + +// NewMockFederatedMatchableHttpGatewayStatusWriter creates a new mock instance. +func NewMockFederatedMatchableHttpGatewayStatusWriter(ctrl *gomock.Controller) *MockFederatedMatchableHttpGatewayStatusWriter { + mock := &MockFederatedMatchableHttpGatewayStatusWriter{ctrl: ctrl} + mock.recorder = &MockFederatedMatchableHttpGatewayStatusWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedMatchableHttpGatewayStatusWriter) EXPECT() *MockFederatedMatchableHttpGatewayStatusWriterMockRecorder { + return m.recorder +} + +// PatchFederatedMatchableHttpGatewayStatus mocks base method. +func (m *MockFederatedMatchableHttpGatewayStatusWriter) PatchFederatedMatchableHttpGatewayStatus(ctx context.Context, obj *v1.FederatedMatchableHttpGateway, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedMatchableHttpGatewayStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedMatchableHttpGatewayStatus indicates an expected call of PatchFederatedMatchableHttpGatewayStatus. +func (mr *MockFederatedMatchableHttpGatewayStatusWriterMockRecorder) PatchFederatedMatchableHttpGatewayStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedMatchableHttpGatewayStatus", reflect.TypeOf((*MockFederatedMatchableHttpGatewayStatusWriter)(nil).PatchFederatedMatchableHttpGatewayStatus), varargs...) +} + +// UpdateFederatedMatchableHttpGatewayStatus mocks base method. +func (m *MockFederatedMatchableHttpGatewayStatusWriter) UpdateFederatedMatchableHttpGatewayStatus(ctx context.Context, obj *v1.FederatedMatchableHttpGateway, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedMatchableHttpGatewayStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedMatchableHttpGatewayStatus indicates an expected call of UpdateFederatedMatchableHttpGatewayStatus. +func (mr *MockFederatedMatchableHttpGatewayStatusWriterMockRecorder) UpdateFederatedMatchableHttpGatewayStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedMatchableHttpGatewayStatus", reflect.TypeOf((*MockFederatedMatchableHttpGatewayStatusWriter)(nil).UpdateFederatedMatchableHttpGatewayStatus), varargs...) +} + +// MockFederatedMatchableHttpGatewayClient is a mock of FederatedMatchableHttpGatewayClient interface. +type MockFederatedMatchableHttpGatewayClient struct { + ctrl *gomock.Controller + recorder *MockFederatedMatchableHttpGatewayClientMockRecorder +} + +// MockFederatedMatchableHttpGatewayClientMockRecorder is the mock recorder for MockFederatedMatchableHttpGatewayClient. +type MockFederatedMatchableHttpGatewayClientMockRecorder struct { + mock *MockFederatedMatchableHttpGatewayClient +} + +// NewMockFederatedMatchableHttpGatewayClient creates a new mock instance. +func NewMockFederatedMatchableHttpGatewayClient(ctrl *gomock.Controller) *MockFederatedMatchableHttpGatewayClient { + mock := &MockFederatedMatchableHttpGatewayClient{ctrl: ctrl} + mock.recorder = &MockFederatedMatchableHttpGatewayClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedMatchableHttpGatewayClient) EXPECT() *MockFederatedMatchableHttpGatewayClientMockRecorder { + return m.recorder +} + +// CreateFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayClient) CreateFederatedMatchableHttpGateway(ctx context.Context, obj *v1.FederatedMatchableHttpGateway, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateFederatedMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedMatchableHttpGateway indicates an expected call of CreateFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayClientMockRecorder) CreateFederatedMatchableHttpGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayClient)(nil).CreateFederatedMatchableHttpGateway), varargs...) +} + +// DeleteAllOfFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayClient) DeleteAllOfFederatedMatchableHttpGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfFederatedMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfFederatedMatchableHttpGateway indicates an expected call of DeleteAllOfFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayClientMockRecorder) DeleteAllOfFederatedMatchableHttpGateway(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayClient)(nil).DeleteAllOfFederatedMatchableHttpGateway), varargs...) +} + +// DeleteFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayClient) DeleteFederatedMatchableHttpGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteFederatedMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedMatchableHttpGateway indicates an expected call of DeleteFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayClientMockRecorder) DeleteFederatedMatchableHttpGateway(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayClient)(nil).DeleteFederatedMatchableHttpGateway), varargs...) +} + +// GetFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayClient) GetFederatedMatchableHttpGateway(ctx context.Context, key client.ObjectKey) (*v1.FederatedMatchableHttpGateway, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFederatedMatchableHttpGateway", ctx, key) + ret0, _ := ret[0].(*v1.FederatedMatchableHttpGateway) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFederatedMatchableHttpGateway indicates an expected call of GetFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayClientMockRecorder) GetFederatedMatchableHttpGateway(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayClient)(nil).GetFederatedMatchableHttpGateway), ctx, key) +} + +// ListFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayClient) ListFederatedMatchableHttpGateway(ctx context.Context, opts ...client.ListOption) (*v1.FederatedMatchableHttpGatewayList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFederatedMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(*v1.FederatedMatchableHttpGatewayList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFederatedMatchableHttpGateway indicates an expected call of ListFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayClientMockRecorder) ListFederatedMatchableHttpGateway(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayClient)(nil).ListFederatedMatchableHttpGateway), varargs...) +} + +// PatchFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayClient) PatchFederatedMatchableHttpGateway(ctx context.Context, obj *v1.FederatedMatchableHttpGateway, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedMatchableHttpGateway indicates an expected call of PatchFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayClientMockRecorder) PatchFederatedMatchableHttpGateway(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayClient)(nil).PatchFederatedMatchableHttpGateway), varargs...) +} + +// PatchFederatedMatchableHttpGatewayStatus mocks base method. +func (m *MockFederatedMatchableHttpGatewayClient) PatchFederatedMatchableHttpGatewayStatus(ctx context.Context, obj *v1.FederatedMatchableHttpGateway, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedMatchableHttpGatewayStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedMatchableHttpGatewayStatus indicates an expected call of PatchFederatedMatchableHttpGatewayStatus. +func (mr *MockFederatedMatchableHttpGatewayClientMockRecorder) PatchFederatedMatchableHttpGatewayStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedMatchableHttpGatewayStatus", reflect.TypeOf((*MockFederatedMatchableHttpGatewayClient)(nil).PatchFederatedMatchableHttpGatewayStatus), varargs...) +} + +// UpdateFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayClient) UpdateFederatedMatchableHttpGateway(ctx context.Context, obj *v1.FederatedMatchableHttpGateway, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedMatchableHttpGateway indicates an expected call of UpdateFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayClientMockRecorder) UpdateFederatedMatchableHttpGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayClient)(nil).UpdateFederatedMatchableHttpGateway), varargs...) +} + +// UpdateFederatedMatchableHttpGatewayStatus mocks base method. +func (m *MockFederatedMatchableHttpGatewayClient) UpdateFederatedMatchableHttpGatewayStatus(ctx context.Context, obj *v1.FederatedMatchableHttpGateway, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedMatchableHttpGatewayStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedMatchableHttpGatewayStatus indicates an expected call of UpdateFederatedMatchableHttpGatewayStatus. +func (mr *MockFederatedMatchableHttpGatewayClientMockRecorder) UpdateFederatedMatchableHttpGatewayStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedMatchableHttpGatewayStatus", reflect.TypeOf((*MockFederatedMatchableHttpGatewayClient)(nil).UpdateFederatedMatchableHttpGatewayStatus), varargs...) +} + +// UpsertFederatedMatchableHttpGateway mocks base method. +func (m *MockFederatedMatchableHttpGatewayClient) UpsertFederatedMatchableHttpGateway(ctx context.Context, obj *v1.FederatedMatchableHttpGateway, transitionFuncs ...v1.FederatedMatchableHttpGatewayTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertFederatedMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertFederatedMatchableHttpGateway indicates an expected call of UpsertFederatedMatchableHttpGateway. +func (mr *MockFederatedMatchableHttpGatewayClientMockRecorder) UpsertFederatedMatchableHttpGateway(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertFederatedMatchableHttpGateway", reflect.TypeOf((*MockFederatedMatchableHttpGatewayClient)(nil).UpsertFederatedMatchableHttpGateway), varargs...) +} + +// MockMulticlusterFederatedMatchableHttpGatewayClient is a mock of MulticlusterFederatedMatchableHttpGatewayClient interface. +type MockMulticlusterFederatedMatchableHttpGatewayClient struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedMatchableHttpGatewayClientMockRecorder +} + +// MockMulticlusterFederatedMatchableHttpGatewayClientMockRecorder is the mock recorder for MockMulticlusterFederatedMatchableHttpGatewayClient. +type MockMulticlusterFederatedMatchableHttpGatewayClientMockRecorder struct { + mock *MockMulticlusterFederatedMatchableHttpGatewayClient +} + +// NewMockMulticlusterFederatedMatchableHttpGatewayClient creates a new mock instance. +func NewMockMulticlusterFederatedMatchableHttpGatewayClient(ctrl *gomock.Controller) *MockMulticlusterFederatedMatchableHttpGatewayClient { + mock := &MockMulticlusterFederatedMatchableHttpGatewayClient{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedMatchableHttpGatewayClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedMatchableHttpGatewayClient) EXPECT() *MockMulticlusterFederatedMatchableHttpGatewayClientMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterFederatedMatchableHttpGatewayClient) Cluster(cluster string) (v1.FederatedMatchableHttpGatewayClient, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1.FederatedMatchableHttpGatewayClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterFederatedMatchableHttpGatewayClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterFederatedMatchableHttpGatewayClient)(nil).Cluster), cluster) +} + +// MockFederatedMatchableTcpGatewayReader is a mock of FederatedMatchableTcpGatewayReader interface. +type MockFederatedMatchableTcpGatewayReader struct { + ctrl *gomock.Controller + recorder *MockFederatedMatchableTcpGatewayReaderMockRecorder +} + +// MockFederatedMatchableTcpGatewayReaderMockRecorder is the mock recorder for MockFederatedMatchableTcpGatewayReader. +type MockFederatedMatchableTcpGatewayReaderMockRecorder struct { + mock *MockFederatedMatchableTcpGatewayReader +} + +// NewMockFederatedMatchableTcpGatewayReader creates a new mock instance. +func NewMockFederatedMatchableTcpGatewayReader(ctrl *gomock.Controller) *MockFederatedMatchableTcpGatewayReader { + mock := &MockFederatedMatchableTcpGatewayReader{ctrl: ctrl} + mock.recorder = &MockFederatedMatchableTcpGatewayReaderMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedMatchableTcpGatewayReader) EXPECT() *MockFederatedMatchableTcpGatewayReaderMockRecorder { + return m.recorder +} + +// GetFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayReader) GetFederatedMatchableTcpGateway(ctx context.Context, key client.ObjectKey) (*v1.FederatedMatchableTcpGateway, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFederatedMatchableTcpGateway", ctx, key) + ret0, _ := ret[0].(*v1.FederatedMatchableTcpGateway) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFederatedMatchableTcpGateway indicates an expected call of GetFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayReaderMockRecorder) GetFederatedMatchableTcpGateway(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayReader)(nil).GetFederatedMatchableTcpGateway), ctx, key) +} + +// ListFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayReader) ListFederatedMatchableTcpGateway(ctx context.Context, opts ...client.ListOption) (*v1.FederatedMatchableTcpGatewayList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFederatedMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(*v1.FederatedMatchableTcpGatewayList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFederatedMatchableTcpGateway indicates an expected call of ListFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayReaderMockRecorder) ListFederatedMatchableTcpGateway(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayReader)(nil).ListFederatedMatchableTcpGateway), varargs...) +} + +// MockFederatedMatchableTcpGatewayWriter is a mock of FederatedMatchableTcpGatewayWriter interface. +type MockFederatedMatchableTcpGatewayWriter struct { + ctrl *gomock.Controller + recorder *MockFederatedMatchableTcpGatewayWriterMockRecorder +} + +// MockFederatedMatchableTcpGatewayWriterMockRecorder is the mock recorder for MockFederatedMatchableTcpGatewayWriter. +type MockFederatedMatchableTcpGatewayWriterMockRecorder struct { + mock *MockFederatedMatchableTcpGatewayWriter +} + +// NewMockFederatedMatchableTcpGatewayWriter creates a new mock instance. +func NewMockFederatedMatchableTcpGatewayWriter(ctrl *gomock.Controller) *MockFederatedMatchableTcpGatewayWriter { + mock := &MockFederatedMatchableTcpGatewayWriter{ctrl: ctrl} + mock.recorder = &MockFederatedMatchableTcpGatewayWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedMatchableTcpGatewayWriter) EXPECT() *MockFederatedMatchableTcpGatewayWriterMockRecorder { + return m.recorder +} + +// CreateFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayWriter) CreateFederatedMatchableTcpGateway(ctx context.Context, obj *v1.FederatedMatchableTcpGateway, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateFederatedMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedMatchableTcpGateway indicates an expected call of CreateFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayWriterMockRecorder) CreateFederatedMatchableTcpGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayWriter)(nil).CreateFederatedMatchableTcpGateway), varargs...) +} + +// DeleteAllOfFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayWriter) DeleteAllOfFederatedMatchableTcpGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfFederatedMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfFederatedMatchableTcpGateway indicates an expected call of DeleteAllOfFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayWriterMockRecorder) DeleteAllOfFederatedMatchableTcpGateway(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayWriter)(nil).DeleteAllOfFederatedMatchableTcpGateway), varargs...) +} + +// DeleteFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayWriter) DeleteFederatedMatchableTcpGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteFederatedMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedMatchableTcpGateway indicates an expected call of DeleteFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayWriterMockRecorder) DeleteFederatedMatchableTcpGateway(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayWriter)(nil).DeleteFederatedMatchableTcpGateway), varargs...) +} + +// PatchFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayWriter) PatchFederatedMatchableTcpGateway(ctx context.Context, obj *v1.FederatedMatchableTcpGateway, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedMatchableTcpGateway indicates an expected call of PatchFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayWriterMockRecorder) PatchFederatedMatchableTcpGateway(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayWriter)(nil).PatchFederatedMatchableTcpGateway), varargs...) +} + +// UpdateFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayWriter) UpdateFederatedMatchableTcpGateway(ctx context.Context, obj *v1.FederatedMatchableTcpGateway, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedMatchableTcpGateway indicates an expected call of UpdateFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayWriterMockRecorder) UpdateFederatedMatchableTcpGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayWriter)(nil).UpdateFederatedMatchableTcpGateway), varargs...) +} + +// UpsertFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayWriter) UpsertFederatedMatchableTcpGateway(ctx context.Context, obj *v1.FederatedMatchableTcpGateway, transitionFuncs ...v1.FederatedMatchableTcpGatewayTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertFederatedMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertFederatedMatchableTcpGateway indicates an expected call of UpsertFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayWriterMockRecorder) UpsertFederatedMatchableTcpGateway(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayWriter)(nil).UpsertFederatedMatchableTcpGateway), varargs...) +} + +// MockFederatedMatchableTcpGatewayStatusWriter is a mock of FederatedMatchableTcpGatewayStatusWriter interface. +type MockFederatedMatchableTcpGatewayStatusWriter struct { + ctrl *gomock.Controller + recorder *MockFederatedMatchableTcpGatewayStatusWriterMockRecorder +} + +// MockFederatedMatchableTcpGatewayStatusWriterMockRecorder is the mock recorder for MockFederatedMatchableTcpGatewayStatusWriter. +type MockFederatedMatchableTcpGatewayStatusWriterMockRecorder struct { + mock *MockFederatedMatchableTcpGatewayStatusWriter +} + +// NewMockFederatedMatchableTcpGatewayStatusWriter creates a new mock instance. +func NewMockFederatedMatchableTcpGatewayStatusWriter(ctrl *gomock.Controller) *MockFederatedMatchableTcpGatewayStatusWriter { + mock := &MockFederatedMatchableTcpGatewayStatusWriter{ctrl: ctrl} + mock.recorder = &MockFederatedMatchableTcpGatewayStatusWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedMatchableTcpGatewayStatusWriter) EXPECT() *MockFederatedMatchableTcpGatewayStatusWriterMockRecorder { + return m.recorder +} + +// PatchFederatedMatchableTcpGatewayStatus mocks base method. +func (m *MockFederatedMatchableTcpGatewayStatusWriter) PatchFederatedMatchableTcpGatewayStatus(ctx context.Context, obj *v1.FederatedMatchableTcpGateway, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedMatchableTcpGatewayStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedMatchableTcpGatewayStatus indicates an expected call of PatchFederatedMatchableTcpGatewayStatus. +func (mr *MockFederatedMatchableTcpGatewayStatusWriterMockRecorder) PatchFederatedMatchableTcpGatewayStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedMatchableTcpGatewayStatus", reflect.TypeOf((*MockFederatedMatchableTcpGatewayStatusWriter)(nil).PatchFederatedMatchableTcpGatewayStatus), varargs...) +} + +// UpdateFederatedMatchableTcpGatewayStatus mocks base method. +func (m *MockFederatedMatchableTcpGatewayStatusWriter) UpdateFederatedMatchableTcpGatewayStatus(ctx context.Context, obj *v1.FederatedMatchableTcpGateway, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedMatchableTcpGatewayStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedMatchableTcpGatewayStatus indicates an expected call of UpdateFederatedMatchableTcpGatewayStatus. +func (mr *MockFederatedMatchableTcpGatewayStatusWriterMockRecorder) UpdateFederatedMatchableTcpGatewayStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedMatchableTcpGatewayStatus", reflect.TypeOf((*MockFederatedMatchableTcpGatewayStatusWriter)(nil).UpdateFederatedMatchableTcpGatewayStatus), varargs...) +} + +// MockFederatedMatchableTcpGatewayClient is a mock of FederatedMatchableTcpGatewayClient interface. +type MockFederatedMatchableTcpGatewayClient struct { + ctrl *gomock.Controller + recorder *MockFederatedMatchableTcpGatewayClientMockRecorder +} + +// MockFederatedMatchableTcpGatewayClientMockRecorder is the mock recorder for MockFederatedMatchableTcpGatewayClient. +type MockFederatedMatchableTcpGatewayClientMockRecorder struct { + mock *MockFederatedMatchableTcpGatewayClient +} + +// NewMockFederatedMatchableTcpGatewayClient creates a new mock instance. +func NewMockFederatedMatchableTcpGatewayClient(ctrl *gomock.Controller) *MockFederatedMatchableTcpGatewayClient { + mock := &MockFederatedMatchableTcpGatewayClient{ctrl: ctrl} + mock.recorder = &MockFederatedMatchableTcpGatewayClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedMatchableTcpGatewayClient) EXPECT() *MockFederatedMatchableTcpGatewayClientMockRecorder { + return m.recorder +} + +// CreateFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayClient) CreateFederatedMatchableTcpGateway(ctx context.Context, obj *v1.FederatedMatchableTcpGateway, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateFederatedMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedMatchableTcpGateway indicates an expected call of CreateFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayClientMockRecorder) CreateFederatedMatchableTcpGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayClient)(nil).CreateFederatedMatchableTcpGateway), varargs...) +} + +// DeleteAllOfFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayClient) DeleteAllOfFederatedMatchableTcpGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfFederatedMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfFederatedMatchableTcpGateway indicates an expected call of DeleteAllOfFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayClientMockRecorder) DeleteAllOfFederatedMatchableTcpGateway(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayClient)(nil).DeleteAllOfFederatedMatchableTcpGateway), varargs...) +} + +// DeleteFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayClient) DeleteFederatedMatchableTcpGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteFederatedMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedMatchableTcpGateway indicates an expected call of DeleteFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayClientMockRecorder) DeleteFederatedMatchableTcpGateway(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayClient)(nil).DeleteFederatedMatchableTcpGateway), varargs...) +} + +// GetFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayClient) GetFederatedMatchableTcpGateway(ctx context.Context, key client.ObjectKey) (*v1.FederatedMatchableTcpGateway, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFederatedMatchableTcpGateway", ctx, key) + ret0, _ := ret[0].(*v1.FederatedMatchableTcpGateway) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFederatedMatchableTcpGateway indicates an expected call of GetFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayClientMockRecorder) GetFederatedMatchableTcpGateway(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayClient)(nil).GetFederatedMatchableTcpGateway), ctx, key) +} + +// ListFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayClient) ListFederatedMatchableTcpGateway(ctx context.Context, opts ...client.ListOption) (*v1.FederatedMatchableTcpGatewayList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFederatedMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(*v1.FederatedMatchableTcpGatewayList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFederatedMatchableTcpGateway indicates an expected call of ListFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayClientMockRecorder) ListFederatedMatchableTcpGateway(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayClient)(nil).ListFederatedMatchableTcpGateway), varargs...) +} + +// PatchFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayClient) PatchFederatedMatchableTcpGateway(ctx context.Context, obj *v1.FederatedMatchableTcpGateway, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedMatchableTcpGateway indicates an expected call of PatchFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayClientMockRecorder) PatchFederatedMatchableTcpGateway(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayClient)(nil).PatchFederatedMatchableTcpGateway), varargs...) +} + +// PatchFederatedMatchableTcpGatewayStatus mocks base method. +func (m *MockFederatedMatchableTcpGatewayClient) PatchFederatedMatchableTcpGatewayStatus(ctx context.Context, obj *v1.FederatedMatchableTcpGateway, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedMatchableTcpGatewayStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedMatchableTcpGatewayStatus indicates an expected call of PatchFederatedMatchableTcpGatewayStatus. +func (mr *MockFederatedMatchableTcpGatewayClientMockRecorder) PatchFederatedMatchableTcpGatewayStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedMatchableTcpGatewayStatus", reflect.TypeOf((*MockFederatedMatchableTcpGatewayClient)(nil).PatchFederatedMatchableTcpGatewayStatus), varargs...) +} + +// UpdateFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayClient) UpdateFederatedMatchableTcpGateway(ctx context.Context, obj *v1.FederatedMatchableTcpGateway, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedMatchableTcpGateway indicates an expected call of UpdateFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayClientMockRecorder) UpdateFederatedMatchableTcpGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayClient)(nil).UpdateFederatedMatchableTcpGateway), varargs...) +} + +// UpdateFederatedMatchableTcpGatewayStatus mocks base method. +func (m *MockFederatedMatchableTcpGatewayClient) UpdateFederatedMatchableTcpGatewayStatus(ctx context.Context, obj *v1.FederatedMatchableTcpGateway, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedMatchableTcpGatewayStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedMatchableTcpGatewayStatus indicates an expected call of UpdateFederatedMatchableTcpGatewayStatus. +func (mr *MockFederatedMatchableTcpGatewayClientMockRecorder) UpdateFederatedMatchableTcpGatewayStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedMatchableTcpGatewayStatus", reflect.TypeOf((*MockFederatedMatchableTcpGatewayClient)(nil).UpdateFederatedMatchableTcpGatewayStatus), varargs...) +} + +// UpsertFederatedMatchableTcpGateway mocks base method. +func (m *MockFederatedMatchableTcpGatewayClient) UpsertFederatedMatchableTcpGateway(ctx context.Context, obj *v1.FederatedMatchableTcpGateway, transitionFuncs ...v1.FederatedMatchableTcpGatewayTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertFederatedMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertFederatedMatchableTcpGateway indicates an expected call of UpsertFederatedMatchableTcpGateway. +func (mr *MockFederatedMatchableTcpGatewayClientMockRecorder) UpsertFederatedMatchableTcpGateway(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertFederatedMatchableTcpGateway", reflect.TypeOf((*MockFederatedMatchableTcpGatewayClient)(nil).UpsertFederatedMatchableTcpGateway), varargs...) +} + +// MockMulticlusterFederatedMatchableTcpGatewayClient is a mock of MulticlusterFederatedMatchableTcpGatewayClient interface. +type MockMulticlusterFederatedMatchableTcpGatewayClient struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedMatchableTcpGatewayClientMockRecorder +} + +// MockMulticlusterFederatedMatchableTcpGatewayClientMockRecorder is the mock recorder for MockMulticlusterFederatedMatchableTcpGatewayClient. +type MockMulticlusterFederatedMatchableTcpGatewayClientMockRecorder struct { + mock *MockMulticlusterFederatedMatchableTcpGatewayClient +} + +// NewMockMulticlusterFederatedMatchableTcpGatewayClient creates a new mock instance. +func NewMockMulticlusterFederatedMatchableTcpGatewayClient(ctrl *gomock.Controller) *MockMulticlusterFederatedMatchableTcpGatewayClient { + mock := &MockMulticlusterFederatedMatchableTcpGatewayClient{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedMatchableTcpGatewayClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedMatchableTcpGatewayClient) EXPECT() *MockMulticlusterFederatedMatchableTcpGatewayClientMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterFederatedMatchableTcpGatewayClient) Cluster(cluster string) (v1.FederatedMatchableTcpGatewayClient, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1.FederatedMatchableTcpGatewayClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterFederatedMatchableTcpGatewayClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterFederatedMatchableTcpGatewayClient)(nil).Cluster), cluster) +} + +// MockFederatedRouteTableReader is a mock of FederatedRouteTableReader interface. +type MockFederatedRouteTableReader struct { + ctrl *gomock.Controller + recorder *MockFederatedRouteTableReaderMockRecorder +} + +// MockFederatedRouteTableReaderMockRecorder is the mock recorder for MockFederatedRouteTableReader. +type MockFederatedRouteTableReaderMockRecorder struct { + mock *MockFederatedRouteTableReader +} + +// NewMockFederatedRouteTableReader creates a new mock instance. +func NewMockFederatedRouteTableReader(ctrl *gomock.Controller) *MockFederatedRouteTableReader { + mock := &MockFederatedRouteTableReader{ctrl: ctrl} + mock.recorder = &MockFederatedRouteTableReaderMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedRouteTableReader) EXPECT() *MockFederatedRouteTableReaderMockRecorder { + return m.recorder +} + +// GetFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableReader) GetFederatedRouteTable(ctx context.Context, key client.ObjectKey) (*v1.FederatedRouteTable, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFederatedRouteTable", ctx, key) + ret0, _ := ret[0].(*v1.FederatedRouteTable) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFederatedRouteTable indicates an expected call of GetFederatedRouteTable. +func (mr *MockFederatedRouteTableReaderMockRecorder) GetFederatedRouteTable(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableReader)(nil).GetFederatedRouteTable), ctx, key) +} + +// ListFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableReader) ListFederatedRouteTable(ctx context.Context, opts ...client.ListOption) (*v1.FederatedRouteTableList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFederatedRouteTable", varargs...) + ret0, _ := ret[0].(*v1.FederatedRouteTableList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFederatedRouteTable indicates an expected call of ListFederatedRouteTable. +func (mr *MockFederatedRouteTableReaderMockRecorder) ListFederatedRouteTable(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableReader)(nil).ListFederatedRouteTable), varargs...) +} + +// MockFederatedRouteTableWriter is a mock of FederatedRouteTableWriter interface. +type MockFederatedRouteTableWriter struct { + ctrl *gomock.Controller + recorder *MockFederatedRouteTableWriterMockRecorder +} + +// MockFederatedRouteTableWriterMockRecorder is the mock recorder for MockFederatedRouteTableWriter. +type MockFederatedRouteTableWriterMockRecorder struct { + mock *MockFederatedRouteTableWriter +} + +// NewMockFederatedRouteTableWriter creates a new mock instance. +func NewMockFederatedRouteTableWriter(ctrl *gomock.Controller) *MockFederatedRouteTableWriter { + mock := &MockFederatedRouteTableWriter{ctrl: ctrl} + mock.recorder = &MockFederatedRouteTableWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedRouteTableWriter) EXPECT() *MockFederatedRouteTableWriterMockRecorder { + return m.recorder +} + +// CreateFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableWriter) CreateFederatedRouteTable(ctx context.Context, obj *v1.FederatedRouteTable, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateFederatedRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedRouteTable indicates an expected call of CreateFederatedRouteTable. +func (mr *MockFederatedRouteTableWriterMockRecorder) CreateFederatedRouteTable(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableWriter)(nil).CreateFederatedRouteTable), varargs...) +} + +// DeleteAllOfFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableWriter) DeleteAllOfFederatedRouteTable(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfFederatedRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfFederatedRouteTable indicates an expected call of DeleteAllOfFederatedRouteTable. +func (mr *MockFederatedRouteTableWriterMockRecorder) DeleteAllOfFederatedRouteTable(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableWriter)(nil).DeleteAllOfFederatedRouteTable), varargs...) +} + +// DeleteFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableWriter) DeleteFederatedRouteTable(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteFederatedRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedRouteTable indicates an expected call of DeleteFederatedRouteTable. +func (mr *MockFederatedRouteTableWriterMockRecorder) DeleteFederatedRouteTable(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableWriter)(nil).DeleteFederatedRouteTable), varargs...) +} + +// PatchFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableWriter) PatchFederatedRouteTable(ctx context.Context, obj *v1.FederatedRouteTable, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedRouteTable indicates an expected call of PatchFederatedRouteTable. +func (mr *MockFederatedRouteTableWriterMockRecorder) PatchFederatedRouteTable(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableWriter)(nil).PatchFederatedRouteTable), varargs...) +} + +// UpdateFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableWriter) UpdateFederatedRouteTable(ctx context.Context, obj *v1.FederatedRouteTable, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedRouteTable indicates an expected call of UpdateFederatedRouteTable. +func (mr *MockFederatedRouteTableWriterMockRecorder) UpdateFederatedRouteTable(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableWriter)(nil).UpdateFederatedRouteTable), varargs...) +} + +// UpsertFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableWriter) UpsertFederatedRouteTable(ctx context.Context, obj *v1.FederatedRouteTable, transitionFuncs ...v1.FederatedRouteTableTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertFederatedRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertFederatedRouteTable indicates an expected call of UpsertFederatedRouteTable. +func (mr *MockFederatedRouteTableWriterMockRecorder) UpsertFederatedRouteTable(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableWriter)(nil).UpsertFederatedRouteTable), varargs...) +} + +// MockFederatedRouteTableStatusWriter is a mock of FederatedRouteTableStatusWriter interface. +type MockFederatedRouteTableStatusWriter struct { + ctrl *gomock.Controller + recorder *MockFederatedRouteTableStatusWriterMockRecorder +} + +// MockFederatedRouteTableStatusWriterMockRecorder is the mock recorder for MockFederatedRouteTableStatusWriter. +type MockFederatedRouteTableStatusWriterMockRecorder struct { + mock *MockFederatedRouteTableStatusWriter +} + +// NewMockFederatedRouteTableStatusWriter creates a new mock instance. +func NewMockFederatedRouteTableStatusWriter(ctrl *gomock.Controller) *MockFederatedRouteTableStatusWriter { + mock := &MockFederatedRouteTableStatusWriter{ctrl: ctrl} + mock.recorder = &MockFederatedRouteTableStatusWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedRouteTableStatusWriter) EXPECT() *MockFederatedRouteTableStatusWriterMockRecorder { + return m.recorder +} + +// PatchFederatedRouteTableStatus mocks base method. +func (m *MockFederatedRouteTableStatusWriter) PatchFederatedRouteTableStatus(ctx context.Context, obj *v1.FederatedRouteTable, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedRouteTableStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedRouteTableStatus indicates an expected call of PatchFederatedRouteTableStatus. +func (mr *MockFederatedRouteTableStatusWriterMockRecorder) PatchFederatedRouteTableStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedRouteTableStatus", reflect.TypeOf((*MockFederatedRouteTableStatusWriter)(nil).PatchFederatedRouteTableStatus), varargs...) +} + +// UpdateFederatedRouteTableStatus mocks base method. +func (m *MockFederatedRouteTableStatusWriter) UpdateFederatedRouteTableStatus(ctx context.Context, obj *v1.FederatedRouteTable, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedRouteTableStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedRouteTableStatus indicates an expected call of UpdateFederatedRouteTableStatus. +func (mr *MockFederatedRouteTableStatusWriterMockRecorder) UpdateFederatedRouteTableStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedRouteTableStatus", reflect.TypeOf((*MockFederatedRouteTableStatusWriter)(nil).UpdateFederatedRouteTableStatus), varargs...) +} + +// MockFederatedRouteTableClient is a mock of FederatedRouteTableClient interface. +type MockFederatedRouteTableClient struct { + ctrl *gomock.Controller + recorder *MockFederatedRouteTableClientMockRecorder +} + +// MockFederatedRouteTableClientMockRecorder is the mock recorder for MockFederatedRouteTableClient. +type MockFederatedRouteTableClientMockRecorder struct { + mock *MockFederatedRouteTableClient +} + +// NewMockFederatedRouteTableClient creates a new mock instance. +func NewMockFederatedRouteTableClient(ctrl *gomock.Controller) *MockFederatedRouteTableClient { + mock := &MockFederatedRouteTableClient{ctrl: ctrl} + mock.recorder = &MockFederatedRouteTableClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedRouteTableClient) EXPECT() *MockFederatedRouteTableClientMockRecorder { + return m.recorder +} + +// CreateFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableClient) CreateFederatedRouteTable(ctx context.Context, obj *v1.FederatedRouteTable, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateFederatedRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedRouteTable indicates an expected call of CreateFederatedRouteTable. +func (mr *MockFederatedRouteTableClientMockRecorder) CreateFederatedRouteTable(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableClient)(nil).CreateFederatedRouteTable), varargs...) +} + +// DeleteAllOfFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableClient) DeleteAllOfFederatedRouteTable(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfFederatedRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfFederatedRouteTable indicates an expected call of DeleteAllOfFederatedRouteTable. +func (mr *MockFederatedRouteTableClientMockRecorder) DeleteAllOfFederatedRouteTable(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableClient)(nil).DeleteAllOfFederatedRouteTable), varargs...) +} + +// DeleteFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableClient) DeleteFederatedRouteTable(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteFederatedRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedRouteTable indicates an expected call of DeleteFederatedRouteTable. +func (mr *MockFederatedRouteTableClientMockRecorder) DeleteFederatedRouteTable(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableClient)(nil).DeleteFederatedRouteTable), varargs...) +} + +// GetFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableClient) GetFederatedRouteTable(ctx context.Context, key client.ObjectKey) (*v1.FederatedRouteTable, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFederatedRouteTable", ctx, key) + ret0, _ := ret[0].(*v1.FederatedRouteTable) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFederatedRouteTable indicates an expected call of GetFederatedRouteTable. +func (mr *MockFederatedRouteTableClientMockRecorder) GetFederatedRouteTable(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableClient)(nil).GetFederatedRouteTable), ctx, key) +} + +// ListFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableClient) ListFederatedRouteTable(ctx context.Context, opts ...client.ListOption) (*v1.FederatedRouteTableList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFederatedRouteTable", varargs...) + ret0, _ := ret[0].(*v1.FederatedRouteTableList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFederatedRouteTable indicates an expected call of ListFederatedRouteTable. +func (mr *MockFederatedRouteTableClientMockRecorder) ListFederatedRouteTable(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableClient)(nil).ListFederatedRouteTable), varargs...) +} + +// PatchFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableClient) PatchFederatedRouteTable(ctx context.Context, obj *v1.FederatedRouteTable, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedRouteTable indicates an expected call of PatchFederatedRouteTable. +func (mr *MockFederatedRouteTableClientMockRecorder) PatchFederatedRouteTable(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableClient)(nil).PatchFederatedRouteTable), varargs...) +} + +// PatchFederatedRouteTableStatus mocks base method. +func (m *MockFederatedRouteTableClient) PatchFederatedRouteTableStatus(ctx context.Context, obj *v1.FederatedRouteTable, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedRouteTableStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedRouteTableStatus indicates an expected call of PatchFederatedRouteTableStatus. +func (mr *MockFederatedRouteTableClientMockRecorder) PatchFederatedRouteTableStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedRouteTableStatus", reflect.TypeOf((*MockFederatedRouteTableClient)(nil).PatchFederatedRouteTableStatus), varargs...) +} + +// UpdateFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableClient) UpdateFederatedRouteTable(ctx context.Context, obj *v1.FederatedRouteTable, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedRouteTable indicates an expected call of UpdateFederatedRouteTable. +func (mr *MockFederatedRouteTableClientMockRecorder) UpdateFederatedRouteTable(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableClient)(nil).UpdateFederatedRouteTable), varargs...) +} + +// UpdateFederatedRouteTableStatus mocks base method. +func (m *MockFederatedRouteTableClient) UpdateFederatedRouteTableStatus(ctx context.Context, obj *v1.FederatedRouteTable, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedRouteTableStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedRouteTableStatus indicates an expected call of UpdateFederatedRouteTableStatus. +func (mr *MockFederatedRouteTableClientMockRecorder) UpdateFederatedRouteTableStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedRouteTableStatus", reflect.TypeOf((*MockFederatedRouteTableClient)(nil).UpdateFederatedRouteTableStatus), varargs...) +} + +// UpsertFederatedRouteTable mocks base method. +func (m *MockFederatedRouteTableClient) UpsertFederatedRouteTable(ctx context.Context, obj *v1.FederatedRouteTable, transitionFuncs ...v1.FederatedRouteTableTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertFederatedRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertFederatedRouteTable indicates an expected call of UpsertFederatedRouteTable. +func (mr *MockFederatedRouteTableClientMockRecorder) UpsertFederatedRouteTable(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertFederatedRouteTable", reflect.TypeOf((*MockFederatedRouteTableClient)(nil).UpsertFederatedRouteTable), varargs...) +} + +// MockMulticlusterFederatedRouteTableClient is a mock of MulticlusterFederatedRouteTableClient interface. +type MockMulticlusterFederatedRouteTableClient struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedRouteTableClientMockRecorder +} + +// MockMulticlusterFederatedRouteTableClientMockRecorder is the mock recorder for MockMulticlusterFederatedRouteTableClient. +type MockMulticlusterFederatedRouteTableClientMockRecorder struct { + mock *MockMulticlusterFederatedRouteTableClient +} + +// NewMockMulticlusterFederatedRouteTableClient creates a new mock instance. +func NewMockMulticlusterFederatedRouteTableClient(ctrl *gomock.Controller) *MockMulticlusterFederatedRouteTableClient { + mock := &MockMulticlusterFederatedRouteTableClient{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedRouteTableClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedRouteTableClient) EXPECT() *MockMulticlusterFederatedRouteTableClientMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterFederatedRouteTableClient) Cluster(cluster string) (v1.FederatedRouteTableClient, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1.FederatedRouteTableClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterFederatedRouteTableClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterFederatedRouteTableClient)(nil).Cluster), cluster) +} + +// MockFederatedVirtualServiceReader is a mock of FederatedVirtualServiceReader interface. +type MockFederatedVirtualServiceReader struct { + ctrl *gomock.Controller + recorder *MockFederatedVirtualServiceReaderMockRecorder +} + +// MockFederatedVirtualServiceReaderMockRecorder is the mock recorder for MockFederatedVirtualServiceReader. +type MockFederatedVirtualServiceReaderMockRecorder struct { + mock *MockFederatedVirtualServiceReader +} + +// NewMockFederatedVirtualServiceReader creates a new mock instance. +func NewMockFederatedVirtualServiceReader(ctrl *gomock.Controller) *MockFederatedVirtualServiceReader { + mock := &MockFederatedVirtualServiceReader{ctrl: ctrl} + mock.recorder = &MockFederatedVirtualServiceReaderMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedVirtualServiceReader) EXPECT() *MockFederatedVirtualServiceReaderMockRecorder { + return m.recorder +} + +// GetFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceReader) GetFederatedVirtualService(ctx context.Context, key client.ObjectKey) (*v1.FederatedVirtualService, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFederatedVirtualService", ctx, key) + ret0, _ := ret[0].(*v1.FederatedVirtualService) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFederatedVirtualService indicates an expected call of GetFederatedVirtualService. +func (mr *MockFederatedVirtualServiceReaderMockRecorder) GetFederatedVirtualService(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceReader)(nil).GetFederatedVirtualService), ctx, key) +} + +// ListFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceReader) ListFederatedVirtualService(ctx context.Context, opts ...client.ListOption) (*v1.FederatedVirtualServiceList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFederatedVirtualService", varargs...) + ret0, _ := ret[0].(*v1.FederatedVirtualServiceList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFederatedVirtualService indicates an expected call of ListFederatedVirtualService. +func (mr *MockFederatedVirtualServiceReaderMockRecorder) ListFederatedVirtualService(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceReader)(nil).ListFederatedVirtualService), varargs...) +} + +// MockFederatedVirtualServiceWriter is a mock of FederatedVirtualServiceWriter interface. +type MockFederatedVirtualServiceWriter struct { + ctrl *gomock.Controller + recorder *MockFederatedVirtualServiceWriterMockRecorder +} + +// MockFederatedVirtualServiceWriterMockRecorder is the mock recorder for MockFederatedVirtualServiceWriter. +type MockFederatedVirtualServiceWriterMockRecorder struct { + mock *MockFederatedVirtualServiceWriter +} + +// NewMockFederatedVirtualServiceWriter creates a new mock instance. +func NewMockFederatedVirtualServiceWriter(ctrl *gomock.Controller) *MockFederatedVirtualServiceWriter { + mock := &MockFederatedVirtualServiceWriter{ctrl: ctrl} + mock.recorder = &MockFederatedVirtualServiceWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedVirtualServiceWriter) EXPECT() *MockFederatedVirtualServiceWriterMockRecorder { + return m.recorder +} + +// CreateFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceWriter) CreateFederatedVirtualService(ctx context.Context, obj *v1.FederatedVirtualService, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateFederatedVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedVirtualService indicates an expected call of CreateFederatedVirtualService. +func (mr *MockFederatedVirtualServiceWriterMockRecorder) CreateFederatedVirtualService(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceWriter)(nil).CreateFederatedVirtualService), varargs...) +} + +// DeleteAllOfFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceWriter) DeleteAllOfFederatedVirtualService(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfFederatedVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfFederatedVirtualService indicates an expected call of DeleteAllOfFederatedVirtualService. +func (mr *MockFederatedVirtualServiceWriterMockRecorder) DeleteAllOfFederatedVirtualService(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceWriter)(nil).DeleteAllOfFederatedVirtualService), varargs...) +} + +// DeleteFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceWriter) DeleteFederatedVirtualService(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteFederatedVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedVirtualService indicates an expected call of DeleteFederatedVirtualService. +func (mr *MockFederatedVirtualServiceWriterMockRecorder) DeleteFederatedVirtualService(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceWriter)(nil).DeleteFederatedVirtualService), varargs...) +} + +// PatchFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceWriter) PatchFederatedVirtualService(ctx context.Context, obj *v1.FederatedVirtualService, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedVirtualService indicates an expected call of PatchFederatedVirtualService. +func (mr *MockFederatedVirtualServiceWriterMockRecorder) PatchFederatedVirtualService(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceWriter)(nil).PatchFederatedVirtualService), varargs...) +} + +// UpdateFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceWriter) UpdateFederatedVirtualService(ctx context.Context, obj *v1.FederatedVirtualService, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedVirtualService indicates an expected call of UpdateFederatedVirtualService. +func (mr *MockFederatedVirtualServiceWriterMockRecorder) UpdateFederatedVirtualService(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceWriter)(nil).UpdateFederatedVirtualService), varargs...) +} + +// UpsertFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceWriter) UpsertFederatedVirtualService(ctx context.Context, obj *v1.FederatedVirtualService, transitionFuncs ...v1.FederatedVirtualServiceTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertFederatedVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertFederatedVirtualService indicates an expected call of UpsertFederatedVirtualService. +func (mr *MockFederatedVirtualServiceWriterMockRecorder) UpsertFederatedVirtualService(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceWriter)(nil).UpsertFederatedVirtualService), varargs...) +} + +// MockFederatedVirtualServiceStatusWriter is a mock of FederatedVirtualServiceStatusWriter interface. +type MockFederatedVirtualServiceStatusWriter struct { + ctrl *gomock.Controller + recorder *MockFederatedVirtualServiceStatusWriterMockRecorder +} + +// MockFederatedVirtualServiceStatusWriterMockRecorder is the mock recorder for MockFederatedVirtualServiceStatusWriter. +type MockFederatedVirtualServiceStatusWriterMockRecorder struct { + mock *MockFederatedVirtualServiceStatusWriter +} + +// NewMockFederatedVirtualServiceStatusWriter creates a new mock instance. +func NewMockFederatedVirtualServiceStatusWriter(ctrl *gomock.Controller) *MockFederatedVirtualServiceStatusWriter { + mock := &MockFederatedVirtualServiceStatusWriter{ctrl: ctrl} + mock.recorder = &MockFederatedVirtualServiceStatusWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedVirtualServiceStatusWriter) EXPECT() *MockFederatedVirtualServiceStatusWriterMockRecorder { + return m.recorder +} + +// PatchFederatedVirtualServiceStatus mocks base method. +func (m *MockFederatedVirtualServiceStatusWriter) PatchFederatedVirtualServiceStatus(ctx context.Context, obj *v1.FederatedVirtualService, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedVirtualServiceStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedVirtualServiceStatus indicates an expected call of PatchFederatedVirtualServiceStatus. +func (mr *MockFederatedVirtualServiceStatusWriterMockRecorder) PatchFederatedVirtualServiceStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedVirtualServiceStatus", reflect.TypeOf((*MockFederatedVirtualServiceStatusWriter)(nil).PatchFederatedVirtualServiceStatus), varargs...) +} + +// UpdateFederatedVirtualServiceStatus mocks base method. +func (m *MockFederatedVirtualServiceStatusWriter) UpdateFederatedVirtualServiceStatus(ctx context.Context, obj *v1.FederatedVirtualService, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedVirtualServiceStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedVirtualServiceStatus indicates an expected call of UpdateFederatedVirtualServiceStatus. +func (mr *MockFederatedVirtualServiceStatusWriterMockRecorder) UpdateFederatedVirtualServiceStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedVirtualServiceStatus", reflect.TypeOf((*MockFederatedVirtualServiceStatusWriter)(nil).UpdateFederatedVirtualServiceStatus), varargs...) +} + +// MockFederatedVirtualServiceClient is a mock of FederatedVirtualServiceClient interface. +type MockFederatedVirtualServiceClient struct { + ctrl *gomock.Controller + recorder *MockFederatedVirtualServiceClientMockRecorder +} + +// MockFederatedVirtualServiceClientMockRecorder is the mock recorder for MockFederatedVirtualServiceClient. +type MockFederatedVirtualServiceClientMockRecorder struct { + mock *MockFederatedVirtualServiceClient +} + +// NewMockFederatedVirtualServiceClient creates a new mock instance. +func NewMockFederatedVirtualServiceClient(ctrl *gomock.Controller) *MockFederatedVirtualServiceClient { + mock := &MockFederatedVirtualServiceClient{ctrl: ctrl} + mock.recorder = &MockFederatedVirtualServiceClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedVirtualServiceClient) EXPECT() *MockFederatedVirtualServiceClientMockRecorder { + return m.recorder +} + +// CreateFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceClient) CreateFederatedVirtualService(ctx context.Context, obj *v1.FederatedVirtualService, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateFederatedVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedVirtualService indicates an expected call of CreateFederatedVirtualService. +func (mr *MockFederatedVirtualServiceClientMockRecorder) CreateFederatedVirtualService(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceClient)(nil).CreateFederatedVirtualService), varargs...) +} + +// DeleteAllOfFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceClient) DeleteAllOfFederatedVirtualService(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfFederatedVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfFederatedVirtualService indicates an expected call of DeleteAllOfFederatedVirtualService. +func (mr *MockFederatedVirtualServiceClientMockRecorder) DeleteAllOfFederatedVirtualService(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceClient)(nil).DeleteAllOfFederatedVirtualService), varargs...) +} + +// DeleteFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceClient) DeleteFederatedVirtualService(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteFederatedVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedVirtualService indicates an expected call of DeleteFederatedVirtualService. +func (mr *MockFederatedVirtualServiceClientMockRecorder) DeleteFederatedVirtualService(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceClient)(nil).DeleteFederatedVirtualService), varargs...) +} + +// GetFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceClient) GetFederatedVirtualService(ctx context.Context, key client.ObjectKey) (*v1.FederatedVirtualService, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFederatedVirtualService", ctx, key) + ret0, _ := ret[0].(*v1.FederatedVirtualService) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFederatedVirtualService indicates an expected call of GetFederatedVirtualService. +func (mr *MockFederatedVirtualServiceClientMockRecorder) GetFederatedVirtualService(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceClient)(nil).GetFederatedVirtualService), ctx, key) +} + +// ListFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceClient) ListFederatedVirtualService(ctx context.Context, opts ...client.ListOption) (*v1.FederatedVirtualServiceList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFederatedVirtualService", varargs...) + ret0, _ := ret[0].(*v1.FederatedVirtualServiceList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFederatedVirtualService indicates an expected call of ListFederatedVirtualService. +func (mr *MockFederatedVirtualServiceClientMockRecorder) ListFederatedVirtualService(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceClient)(nil).ListFederatedVirtualService), varargs...) +} + +// PatchFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceClient) PatchFederatedVirtualService(ctx context.Context, obj *v1.FederatedVirtualService, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedVirtualService indicates an expected call of PatchFederatedVirtualService. +func (mr *MockFederatedVirtualServiceClientMockRecorder) PatchFederatedVirtualService(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceClient)(nil).PatchFederatedVirtualService), varargs...) +} + +// PatchFederatedVirtualServiceStatus mocks base method. +func (m *MockFederatedVirtualServiceClient) PatchFederatedVirtualServiceStatus(ctx context.Context, obj *v1.FederatedVirtualService, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedVirtualServiceStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedVirtualServiceStatus indicates an expected call of PatchFederatedVirtualServiceStatus. +func (mr *MockFederatedVirtualServiceClientMockRecorder) PatchFederatedVirtualServiceStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedVirtualServiceStatus", reflect.TypeOf((*MockFederatedVirtualServiceClient)(nil).PatchFederatedVirtualServiceStatus), varargs...) +} + +// UpdateFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceClient) UpdateFederatedVirtualService(ctx context.Context, obj *v1.FederatedVirtualService, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedVirtualService indicates an expected call of UpdateFederatedVirtualService. +func (mr *MockFederatedVirtualServiceClientMockRecorder) UpdateFederatedVirtualService(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceClient)(nil).UpdateFederatedVirtualService), varargs...) +} + +// UpdateFederatedVirtualServiceStatus mocks base method. +func (m *MockFederatedVirtualServiceClient) UpdateFederatedVirtualServiceStatus(ctx context.Context, obj *v1.FederatedVirtualService, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedVirtualServiceStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedVirtualServiceStatus indicates an expected call of UpdateFederatedVirtualServiceStatus. +func (mr *MockFederatedVirtualServiceClientMockRecorder) UpdateFederatedVirtualServiceStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedVirtualServiceStatus", reflect.TypeOf((*MockFederatedVirtualServiceClient)(nil).UpdateFederatedVirtualServiceStatus), varargs...) +} + +// UpsertFederatedVirtualService mocks base method. +func (m *MockFederatedVirtualServiceClient) UpsertFederatedVirtualService(ctx context.Context, obj *v1.FederatedVirtualService, transitionFuncs ...v1.FederatedVirtualServiceTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertFederatedVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertFederatedVirtualService indicates an expected call of UpsertFederatedVirtualService. +func (mr *MockFederatedVirtualServiceClientMockRecorder) UpsertFederatedVirtualService(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertFederatedVirtualService", reflect.TypeOf((*MockFederatedVirtualServiceClient)(nil).UpsertFederatedVirtualService), varargs...) +} + +// MockMulticlusterFederatedVirtualServiceClient is a mock of MulticlusterFederatedVirtualServiceClient interface. +type MockMulticlusterFederatedVirtualServiceClient struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedVirtualServiceClientMockRecorder +} + +// MockMulticlusterFederatedVirtualServiceClientMockRecorder is the mock recorder for MockMulticlusterFederatedVirtualServiceClient. +type MockMulticlusterFederatedVirtualServiceClientMockRecorder struct { + mock *MockMulticlusterFederatedVirtualServiceClient +} + +// NewMockMulticlusterFederatedVirtualServiceClient creates a new mock instance. +func NewMockMulticlusterFederatedVirtualServiceClient(ctrl *gomock.Controller) *MockMulticlusterFederatedVirtualServiceClient { + mock := &MockMulticlusterFederatedVirtualServiceClient{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedVirtualServiceClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedVirtualServiceClient) EXPECT() *MockMulticlusterFederatedVirtualServiceClientMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterFederatedVirtualServiceClient) Cluster(cluster string) (v1.FederatedVirtualServiceClient, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1.FederatedVirtualServiceClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterFederatedVirtualServiceClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterFederatedVirtualServiceClient)(nil).Cluster), cluster) +} diff --git a/pkg/api/fed.gateway.solo.io/v1/providers/client_providers.go b/pkg/api/fed.gateway.solo.io/v1/providers/client_providers.go new file mode 100644 index 000000000..416183110 --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/providers/client_providers.go @@ -0,0 +1,158 @@ +// Code generated by skv2. DO NOT EDIT. + +package v1 + +import ( + fed_gateway_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1" + + "k8s.io/client-go/rest" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +/* + The intention of these providers are to be used for Mocking. + They expose the Clients as interfaces, as well as factories to provide mocked versions + of the clients when they require building within a component. + + See package `github.com/solo-io/skv2/pkg/multicluster/register` for example +*/ + +// Provider for FederatedGatewayClient from Clientset +func FederatedGatewayClientFromClientsetProvider(clients fed_gateway_solo_io_v1.Clientset) fed_gateway_solo_io_v1.FederatedGatewayClient { + return clients.FederatedGateways() +} + +// Provider for FederatedGateway Client from Client +func FederatedGatewayClientProvider(client client.Client) fed_gateway_solo_io_v1.FederatedGatewayClient { + return fed_gateway_solo_io_v1.NewFederatedGatewayClient(client) +} + +type FederatedGatewayClientFactory func(client client.Client) fed_gateway_solo_io_v1.FederatedGatewayClient + +func FederatedGatewayClientFactoryProvider() FederatedGatewayClientFactory { + return FederatedGatewayClientProvider +} + +type FederatedGatewayClientFromConfigFactory func(cfg *rest.Config) (fed_gateway_solo_io_v1.FederatedGatewayClient, error) + +func FederatedGatewayClientFromConfigFactoryProvider() FederatedGatewayClientFromConfigFactory { + return func(cfg *rest.Config) (fed_gateway_solo_io_v1.FederatedGatewayClient, error) { + clients, err := fed_gateway_solo_io_v1.NewClientsetFromConfig(cfg) + if err != nil { + return nil, err + } + return clients.FederatedGateways(), nil + } +} + +// Provider for FederatedMatchableHttpGatewayClient from Clientset +func FederatedMatchableHttpGatewayClientFromClientsetProvider(clients fed_gateway_solo_io_v1.Clientset) fed_gateway_solo_io_v1.FederatedMatchableHttpGatewayClient { + return clients.FederatedMatchableHttpGateways() +} + +// Provider for FederatedMatchableHttpGateway Client from Client +func FederatedMatchableHttpGatewayClientProvider(client client.Client) fed_gateway_solo_io_v1.FederatedMatchableHttpGatewayClient { + return fed_gateway_solo_io_v1.NewFederatedMatchableHttpGatewayClient(client) +} + +type FederatedMatchableHttpGatewayClientFactory func(client client.Client) fed_gateway_solo_io_v1.FederatedMatchableHttpGatewayClient + +func FederatedMatchableHttpGatewayClientFactoryProvider() FederatedMatchableHttpGatewayClientFactory { + return FederatedMatchableHttpGatewayClientProvider +} + +type FederatedMatchableHttpGatewayClientFromConfigFactory func(cfg *rest.Config) (fed_gateway_solo_io_v1.FederatedMatchableHttpGatewayClient, error) + +func FederatedMatchableHttpGatewayClientFromConfigFactoryProvider() FederatedMatchableHttpGatewayClientFromConfigFactory { + return func(cfg *rest.Config) (fed_gateway_solo_io_v1.FederatedMatchableHttpGatewayClient, error) { + clients, err := fed_gateway_solo_io_v1.NewClientsetFromConfig(cfg) + if err != nil { + return nil, err + } + return clients.FederatedMatchableHttpGateways(), nil + } +} + +// Provider for FederatedMatchableTcpGatewayClient from Clientset +func FederatedMatchableTcpGatewayClientFromClientsetProvider(clients fed_gateway_solo_io_v1.Clientset) fed_gateway_solo_io_v1.FederatedMatchableTcpGatewayClient { + return clients.FederatedMatchableTcpGateways() +} + +// Provider for FederatedMatchableTcpGateway Client from Client +func FederatedMatchableTcpGatewayClientProvider(client client.Client) fed_gateway_solo_io_v1.FederatedMatchableTcpGatewayClient { + return fed_gateway_solo_io_v1.NewFederatedMatchableTcpGatewayClient(client) +} + +type FederatedMatchableTcpGatewayClientFactory func(client client.Client) fed_gateway_solo_io_v1.FederatedMatchableTcpGatewayClient + +func FederatedMatchableTcpGatewayClientFactoryProvider() FederatedMatchableTcpGatewayClientFactory { + return FederatedMatchableTcpGatewayClientProvider +} + +type FederatedMatchableTcpGatewayClientFromConfigFactory func(cfg *rest.Config) (fed_gateway_solo_io_v1.FederatedMatchableTcpGatewayClient, error) + +func FederatedMatchableTcpGatewayClientFromConfigFactoryProvider() FederatedMatchableTcpGatewayClientFromConfigFactory { + return func(cfg *rest.Config) (fed_gateway_solo_io_v1.FederatedMatchableTcpGatewayClient, error) { + clients, err := fed_gateway_solo_io_v1.NewClientsetFromConfig(cfg) + if err != nil { + return nil, err + } + return clients.FederatedMatchableTcpGateways(), nil + } +} + +// Provider for FederatedRouteTableClient from Clientset +func FederatedRouteTableClientFromClientsetProvider(clients fed_gateway_solo_io_v1.Clientset) fed_gateway_solo_io_v1.FederatedRouteTableClient { + return clients.FederatedRouteTables() +} + +// Provider for FederatedRouteTable Client from Client +func FederatedRouteTableClientProvider(client client.Client) fed_gateway_solo_io_v1.FederatedRouteTableClient { + return fed_gateway_solo_io_v1.NewFederatedRouteTableClient(client) +} + +type FederatedRouteTableClientFactory func(client client.Client) fed_gateway_solo_io_v1.FederatedRouteTableClient + +func FederatedRouteTableClientFactoryProvider() FederatedRouteTableClientFactory { + return FederatedRouteTableClientProvider +} + +type FederatedRouteTableClientFromConfigFactory func(cfg *rest.Config) (fed_gateway_solo_io_v1.FederatedRouteTableClient, error) + +func FederatedRouteTableClientFromConfigFactoryProvider() FederatedRouteTableClientFromConfigFactory { + return func(cfg *rest.Config) (fed_gateway_solo_io_v1.FederatedRouteTableClient, error) { + clients, err := fed_gateway_solo_io_v1.NewClientsetFromConfig(cfg) + if err != nil { + return nil, err + } + return clients.FederatedRouteTables(), nil + } +} + +// Provider for FederatedVirtualServiceClient from Clientset +func FederatedVirtualServiceClientFromClientsetProvider(clients fed_gateway_solo_io_v1.Clientset) fed_gateway_solo_io_v1.FederatedVirtualServiceClient { + return clients.FederatedVirtualServices() +} + +// Provider for FederatedVirtualService Client from Client +func FederatedVirtualServiceClientProvider(client client.Client) fed_gateway_solo_io_v1.FederatedVirtualServiceClient { + return fed_gateway_solo_io_v1.NewFederatedVirtualServiceClient(client) +} + +type FederatedVirtualServiceClientFactory func(client client.Client) fed_gateway_solo_io_v1.FederatedVirtualServiceClient + +func FederatedVirtualServiceClientFactoryProvider() FederatedVirtualServiceClientFactory { + return FederatedVirtualServiceClientProvider +} + +type FederatedVirtualServiceClientFromConfigFactory func(cfg *rest.Config) (fed_gateway_solo_io_v1.FederatedVirtualServiceClient, error) + +func FederatedVirtualServiceClientFromConfigFactoryProvider() FederatedVirtualServiceClientFromConfigFactory { + return func(cfg *rest.Config) (fed_gateway_solo_io_v1.FederatedVirtualServiceClient, error) { + clients, err := fed_gateway_solo_io_v1.NewClientsetFromConfig(cfg) + if err != nil { + return nil, err + } + return clients.FederatedVirtualServices(), nil + } +} diff --git a/pkg/api/fed.gateway.solo.io/v1/register.go b/pkg/api/fed.gateway.solo.io/v1/register.go new file mode 100644 index 000000000..9dac7d445 --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/register.go @@ -0,0 +1,33 @@ +// Code generated by skv2. DO NOT EDIT. + +// NOTE: Boilerplate only. Ignore this file. +// Used to register the Go types with the Kubernetes +// internal scheme +package v1 + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// AddToSchemes may be used to add all resources defined in the project to a Scheme + +// AddToScheme adds all Resources to the Scheme + +var ( + // SchemeGroupVersion is group version used to register these objects + SchemeGroupVersion = schema.GroupVersion{Group: "fed.gateway.solo.io", Version: "v1"} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion} +) + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +func AddToScheme(s *runtime.Scheme) error { + return SchemeBuilder.AddToScheme(s) +} diff --git a/pkg/api/fed.gateway.solo.io/v1/sets/mocks/sets.go b/pkg/api/fed.gateway.solo.io/v1/sets/mocks/sets.go new file mode 100644 index 000000000..b7ff57fb3 --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/sets/mocks/sets.go @@ -0,0 +1,1296 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./sets.go + +// Package mock_v1sets is a generated GoMock package. +package mock_v1sets + +import ( + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + sets "github.com/solo-io/skv2/contrib/pkg/sets" + ezkube "github.com/solo-io/skv2/pkg/ezkube" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1" + v1sets "github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/sets" + sets0 "k8s.io/apimachinery/pkg/util/sets" +) + +// MockFederatedGatewaySet is a mock of FederatedGatewaySet interface. +type MockFederatedGatewaySet struct { + ctrl *gomock.Controller + recorder *MockFederatedGatewaySetMockRecorder +} + +// MockFederatedGatewaySetMockRecorder is the mock recorder for MockFederatedGatewaySet. +type MockFederatedGatewaySetMockRecorder struct { + mock *MockFederatedGatewaySet +} + +// NewMockFederatedGatewaySet creates a new mock instance. +func NewMockFederatedGatewaySet(ctrl *gomock.Controller) *MockFederatedGatewaySet { + mock := &MockFederatedGatewaySet{ctrl: ctrl} + mock.recorder = &MockFederatedGatewaySetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedGatewaySet) EXPECT() *MockFederatedGatewaySetMockRecorder { + return m.recorder +} + +// Clone mocks base method. +func (m *MockFederatedGatewaySet) Clone() v1sets.FederatedGatewaySet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.FederatedGatewaySet) + return ret0 +} + +// Clone indicates an expected call of Clone. +func (mr *MockFederatedGatewaySetMockRecorder) Clone() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockFederatedGatewaySet)(nil).Clone)) +} + +// Delete mocks base method. +func (m *MockFederatedGatewaySet) Delete(federatedGateway ezkube.ResourceId) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Delete", federatedGateway) +} + +// Delete indicates an expected call of Delete. +func (mr *MockFederatedGatewaySetMockRecorder) Delete(federatedGateway interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockFederatedGatewaySet)(nil).Delete), federatedGateway) +} + +// Delta mocks base method. +func (m *MockFederatedGatewaySet) Delta(newSet v1sets.FederatedGatewaySet) sets.ResourceDelta { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) + return ret0 +} + +// Delta indicates an expected call of Delta. +func (mr *MockFederatedGatewaySetMockRecorder) Delta(newSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockFederatedGatewaySet)(nil).Delta), newSet) +} + +// Difference mocks base method. +func (m *MockFederatedGatewaySet) Difference(set v1sets.FederatedGatewaySet) v1sets.FederatedGatewaySet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.FederatedGatewaySet) + return ret0 +} + +// Difference indicates an expected call of Difference. +func (mr *MockFederatedGatewaySetMockRecorder) Difference(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockFederatedGatewaySet)(nil).Difference), set) +} + +// Equal mocks base method. +func (m *MockFederatedGatewaySet) Equal(federatedGatewaySet v1sets.FederatedGatewaySet) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Equal", federatedGatewaySet) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Equal indicates an expected call of Equal. +func (mr *MockFederatedGatewaySetMockRecorder) Equal(federatedGatewaySet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockFederatedGatewaySet)(nil).Equal), federatedGatewaySet) +} + +// Find mocks base method. +func (m *MockFederatedGatewaySet) Find(id ezkube.ResourceId) (*v1.FederatedGateway, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.FederatedGateway) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Find indicates an expected call of Find. +func (mr *MockFederatedGatewaySetMockRecorder) Find(id interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockFederatedGatewaySet)(nil).Find), id) +} + +// Generic mocks base method. +func (m *MockFederatedGatewaySet) Generic() sets.ResourceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 +} + +// Generic indicates an expected call of Generic. +func (mr *MockFederatedGatewaySetMockRecorder) Generic() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockFederatedGatewaySet)(nil).Generic)) +} + +// Has mocks base method. +func (m *MockFederatedGatewaySet) Has(federatedGateway ezkube.ResourceId) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Has", federatedGateway) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Has indicates an expected call of Has. +func (mr *MockFederatedGatewaySetMockRecorder) Has(federatedGateway interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockFederatedGatewaySet)(nil).Has), federatedGateway) +} + +// Insert mocks base method. +func (m *MockFederatedGatewaySet) Insert(federatedGateway ...*v1.FederatedGateway) { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range federatedGateway { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) +} + +// Insert indicates an expected call of Insert. +func (mr *MockFederatedGatewaySetMockRecorder) Insert(federatedGateway ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockFederatedGatewaySet)(nil).Insert), federatedGateway...) +} + +// Intersection mocks base method. +func (m *MockFederatedGatewaySet) Intersection(set v1sets.FederatedGatewaySet) v1sets.FederatedGatewaySet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Intersection", set) + ret0, _ := ret[0].(v1sets.FederatedGatewaySet) + return ret0 +} + +// Intersection indicates an expected call of Intersection. +func (mr *MockFederatedGatewaySetMockRecorder) Intersection(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockFederatedGatewaySet)(nil).Intersection), set) +} + +// Keys mocks base method. +func (m *MockFederatedGatewaySet) Keys() sets0.String { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 +} + +// Keys indicates an expected call of Keys. +func (mr *MockFederatedGatewaySetMockRecorder) Keys() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockFederatedGatewaySet)(nil).Keys)) +} + +// Length mocks base method. +func (m *MockFederatedGatewaySet) Length() int { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Length") + ret0, _ := ret[0].(int) + return ret0 +} + +// Length indicates an expected call of Length. +func (mr *MockFederatedGatewaySetMockRecorder) Length() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockFederatedGatewaySet)(nil).Length)) +} + +// List mocks base method. +func (m *MockFederatedGatewaySet) List(filterResource ...func(*v1.FederatedGateway) bool) []*v1.FederatedGateway { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.FederatedGateway) + return ret0 +} + +// List indicates an expected call of List. +func (mr *MockFederatedGatewaySetMockRecorder) List(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockFederatedGatewaySet)(nil).List), filterResource...) +} + +// Map mocks base method. +func (m *MockFederatedGatewaySet) Map() map[string]*v1.FederatedGateway { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.FederatedGateway) + return ret0 +} + +// Map indicates an expected call of Map. +func (mr *MockFederatedGatewaySetMockRecorder) Map() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockFederatedGatewaySet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockFederatedGatewaySet) Union(set v1sets.FederatedGatewaySet) v1sets.FederatedGatewaySet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.FederatedGatewaySet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockFederatedGatewaySetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockFederatedGatewaySet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockFederatedGatewaySet) UnsortedList(filterResource ...func(*v1.FederatedGateway) bool) []*v1.FederatedGateway { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.FederatedGateway) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockFederatedGatewaySetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockFederatedGatewaySet)(nil).UnsortedList), filterResource...) +} + +// MockFederatedMatchableHttpGatewaySet is a mock of FederatedMatchableHttpGatewaySet interface. +type MockFederatedMatchableHttpGatewaySet struct { + ctrl *gomock.Controller + recorder *MockFederatedMatchableHttpGatewaySetMockRecorder +} + +// MockFederatedMatchableHttpGatewaySetMockRecorder is the mock recorder for MockFederatedMatchableHttpGatewaySet. +type MockFederatedMatchableHttpGatewaySetMockRecorder struct { + mock *MockFederatedMatchableHttpGatewaySet +} + +// NewMockFederatedMatchableHttpGatewaySet creates a new mock instance. +func NewMockFederatedMatchableHttpGatewaySet(ctrl *gomock.Controller) *MockFederatedMatchableHttpGatewaySet { + mock := &MockFederatedMatchableHttpGatewaySet{ctrl: ctrl} + mock.recorder = &MockFederatedMatchableHttpGatewaySetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedMatchableHttpGatewaySet) EXPECT() *MockFederatedMatchableHttpGatewaySetMockRecorder { + return m.recorder +} + +// Clone mocks base method. +func (m *MockFederatedMatchableHttpGatewaySet) Clone() v1sets.FederatedMatchableHttpGatewaySet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.FederatedMatchableHttpGatewaySet) + return ret0 +} + +// Clone indicates an expected call of Clone. +func (mr *MockFederatedMatchableHttpGatewaySetMockRecorder) Clone() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockFederatedMatchableHttpGatewaySet)(nil).Clone)) +} + +// Delete mocks base method. +func (m *MockFederatedMatchableHttpGatewaySet) Delete(federatedMatchableHttpGateway ezkube.ResourceId) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Delete", federatedMatchableHttpGateway) +} + +// Delete indicates an expected call of Delete. +func (mr *MockFederatedMatchableHttpGatewaySetMockRecorder) Delete(federatedMatchableHttpGateway interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockFederatedMatchableHttpGatewaySet)(nil).Delete), federatedMatchableHttpGateway) +} + +// Delta mocks base method. +func (m *MockFederatedMatchableHttpGatewaySet) Delta(newSet v1sets.FederatedMatchableHttpGatewaySet) sets.ResourceDelta { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) + return ret0 +} + +// Delta indicates an expected call of Delta. +func (mr *MockFederatedMatchableHttpGatewaySetMockRecorder) Delta(newSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockFederatedMatchableHttpGatewaySet)(nil).Delta), newSet) +} + +// Difference mocks base method. +func (m *MockFederatedMatchableHttpGatewaySet) Difference(set v1sets.FederatedMatchableHttpGatewaySet) v1sets.FederatedMatchableHttpGatewaySet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.FederatedMatchableHttpGatewaySet) + return ret0 +} + +// Difference indicates an expected call of Difference. +func (mr *MockFederatedMatchableHttpGatewaySetMockRecorder) Difference(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockFederatedMatchableHttpGatewaySet)(nil).Difference), set) +} + +// Equal mocks base method. +func (m *MockFederatedMatchableHttpGatewaySet) Equal(federatedMatchableHttpGatewaySet v1sets.FederatedMatchableHttpGatewaySet) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Equal", federatedMatchableHttpGatewaySet) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Equal indicates an expected call of Equal. +func (mr *MockFederatedMatchableHttpGatewaySetMockRecorder) Equal(federatedMatchableHttpGatewaySet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockFederatedMatchableHttpGatewaySet)(nil).Equal), federatedMatchableHttpGatewaySet) +} + +// Find mocks base method. +func (m *MockFederatedMatchableHttpGatewaySet) Find(id ezkube.ResourceId) (*v1.FederatedMatchableHttpGateway, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.FederatedMatchableHttpGateway) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Find indicates an expected call of Find. +func (mr *MockFederatedMatchableHttpGatewaySetMockRecorder) Find(id interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockFederatedMatchableHttpGatewaySet)(nil).Find), id) +} + +// Generic mocks base method. +func (m *MockFederatedMatchableHttpGatewaySet) Generic() sets.ResourceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 +} + +// Generic indicates an expected call of Generic. +func (mr *MockFederatedMatchableHttpGatewaySetMockRecorder) Generic() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockFederatedMatchableHttpGatewaySet)(nil).Generic)) +} + +// Has mocks base method. +func (m *MockFederatedMatchableHttpGatewaySet) Has(federatedMatchableHttpGateway ezkube.ResourceId) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Has", federatedMatchableHttpGateway) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Has indicates an expected call of Has. +func (mr *MockFederatedMatchableHttpGatewaySetMockRecorder) Has(federatedMatchableHttpGateway interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockFederatedMatchableHttpGatewaySet)(nil).Has), federatedMatchableHttpGateway) +} + +// Insert mocks base method. +func (m *MockFederatedMatchableHttpGatewaySet) Insert(federatedMatchableHttpGateway ...*v1.FederatedMatchableHttpGateway) { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range federatedMatchableHttpGateway { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) +} + +// Insert indicates an expected call of Insert. +func (mr *MockFederatedMatchableHttpGatewaySetMockRecorder) Insert(federatedMatchableHttpGateway ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockFederatedMatchableHttpGatewaySet)(nil).Insert), federatedMatchableHttpGateway...) +} + +// Intersection mocks base method. +func (m *MockFederatedMatchableHttpGatewaySet) Intersection(set v1sets.FederatedMatchableHttpGatewaySet) v1sets.FederatedMatchableHttpGatewaySet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Intersection", set) + ret0, _ := ret[0].(v1sets.FederatedMatchableHttpGatewaySet) + return ret0 +} + +// Intersection indicates an expected call of Intersection. +func (mr *MockFederatedMatchableHttpGatewaySetMockRecorder) Intersection(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockFederatedMatchableHttpGatewaySet)(nil).Intersection), set) +} + +// Keys mocks base method. +func (m *MockFederatedMatchableHttpGatewaySet) Keys() sets0.String { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 +} + +// Keys indicates an expected call of Keys. +func (mr *MockFederatedMatchableHttpGatewaySetMockRecorder) Keys() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockFederatedMatchableHttpGatewaySet)(nil).Keys)) +} + +// Length mocks base method. +func (m *MockFederatedMatchableHttpGatewaySet) Length() int { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Length") + ret0, _ := ret[0].(int) + return ret0 +} + +// Length indicates an expected call of Length. +func (mr *MockFederatedMatchableHttpGatewaySetMockRecorder) Length() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockFederatedMatchableHttpGatewaySet)(nil).Length)) +} + +// List mocks base method. +func (m *MockFederatedMatchableHttpGatewaySet) List(filterResource ...func(*v1.FederatedMatchableHttpGateway) bool) []*v1.FederatedMatchableHttpGateway { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.FederatedMatchableHttpGateway) + return ret0 +} + +// List indicates an expected call of List. +func (mr *MockFederatedMatchableHttpGatewaySetMockRecorder) List(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockFederatedMatchableHttpGatewaySet)(nil).List), filterResource...) +} + +// Map mocks base method. +func (m *MockFederatedMatchableHttpGatewaySet) Map() map[string]*v1.FederatedMatchableHttpGateway { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.FederatedMatchableHttpGateway) + return ret0 +} + +// Map indicates an expected call of Map. +func (mr *MockFederatedMatchableHttpGatewaySetMockRecorder) Map() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockFederatedMatchableHttpGatewaySet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockFederatedMatchableHttpGatewaySet) Union(set v1sets.FederatedMatchableHttpGatewaySet) v1sets.FederatedMatchableHttpGatewaySet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.FederatedMatchableHttpGatewaySet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockFederatedMatchableHttpGatewaySetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockFederatedMatchableHttpGatewaySet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockFederatedMatchableHttpGatewaySet) UnsortedList(filterResource ...func(*v1.FederatedMatchableHttpGateway) bool) []*v1.FederatedMatchableHttpGateway { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.FederatedMatchableHttpGateway) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockFederatedMatchableHttpGatewaySetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockFederatedMatchableHttpGatewaySet)(nil).UnsortedList), filterResource...) +} + +// MockFederatedMatchableTcpGatewaySet is a mock of FederatedMatchableTcpGatewaySet interface. +type MockFederatedMatchableTcpGatewaySet struct { + ctrl *gomock.Controller + recorder *MockFederatedMatchableTcpGatewaySetMockRecorder +} + +// MockFederatedMatchableTcpGatewaySetMockRecorder is the mock recorder for MockFederatedMatchableTcpGatewaySet. +type MockFederatedMatchableTcpGatewaySetMockRecorder struct { + mock *MockFederatedMatchableTcpGatewaySet +} + +// NewMockFederatedMatchableTcpGatewaySet creates a new mock instance. +func NewMockFederatedMatchableTcpGatewaySet(ctrl *gomock.Controller) *MockFederatedMatchableTcpGatewaySet { + mock := &MockFederatedMatchableTcpGatewaySet{ctrl: ctrl} + mock.recorder = &MockFederatedMatchableTcpGatewaySetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedMatchableTcpGatewaySet) EXPECT() *MockFederatedMatchableTcpGatewaySetMockRecorder { + return m.recorder +} + +// Clone mocks base method. +func (m *MockFederatedMatchableTcpGatewaySet) Clone() v1sets.FederatedMatchableTcpGatewaySet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.FederatedMatchableTcpGatewaySet) + return ret0 +} + +// Clone indicates an expected call of Clone. +func (mr *MockFederatedMatchableTcpGatewaySetMockRecorder) Clone() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockFederatedMatchableTcpGatewaySet)(nil).Clone)) +} + +// Delete mocks base method. +func (m *MockFederatedMatchableTcpGatewaySet) Delete(federatedMatchableTcpGateway ezkube.ResourceId) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Delete", federatedMatchableTcpGateway) +} + +// Delete indicates an expected call of Delete. +func (mr *MockFederatedMatchableTcpGatewaySetMockRecorder) Delete(federatedMatchableTcpGateway interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockFederatedMatchableTcpGatewaySet)(nil).Delete), federatedMatchableTcpGateway) +} + +// Delta mocks base method. +func (m *MockFederatedMatchableTcpGatewaySet) Delta(newSet v1sets.FederatedMatchableTcpGatewaySet) sets.ResourceDelta { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) + return ret0 +} + +// Delta indicates an expected call of Delta. +func (mr *MockFederatedMatchableTcpGatewaySetMockRecorder) Delta(newSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockFederatedMatchableTcpGatewaySet)(nil).Delta), newSet) +} + +// Difference mocks base method. +func (m *MockFederatedMatchableTcpGatewaySet) Difference(set v1sets.FederatedMatchableTcpGatewaySet) v1sets.FederatedMatchableTcpGatewaySet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.FederatedMatchableTcpGatewaySet) + return ret0 +} + +// Difference indicates an expected call of Difference. +func (mr *MockFederatedMatchableTcpGatewaySetMockRecorder) Difference(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockFederatedMatchableTcpGatewaySet)(nil).Difference), set) +} + +// Equal mocks base method. +func (m *MockFederatedMatchableTcpGatewaySet) Equal(federatedMatchableTcpGatewaySet v1sets.FederatedMatchableTcpGatewaySet) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Equal", federatedMatchableTcpGatewaySet) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Equal indicates an expected call of Equal. +func (mr *MockFederatedMatchableTcpGatewaySetMockRecorder) Equal(federatedMatchableTcpGatewaySet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockFederatedMatchableTcpGatewaySet)(nil).Equal), federatedMatchableTcpGatewaySet) +} + +// Find mocks base method. +func (m *MockFederatedMatchableTcpGatewaySet) Find(id ezkube.ResourceId) (*v1.FederatedMatchableTcpGateway, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.FederatedMatchableTcpGateway) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Find indicates an expected call of Find. +func (mr *MockFederatedMatchableTcpGatewaySetMockRecorder) Find(id interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockFederatedMatchableTcpGatewaySet)(nil).Find), id) +} + +// Generic mocks base method. +func (m *MockFederatedMatchableTcpGatewaySet) Generic() sets.ResourceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 +} + +// Generic indicates an expected call of Generic. +func (mr *MockFederatedMatchableTcpGatewaySetMockRecorder) Generic() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockFederatedMatchableTcpGatewaySet)(nil).Generic)) +} + +// Has mocks base method. +func (m *MockFederatedMatchableTcpGatewaySet) Has(federatedMatchableTcpGateway ezkube.ResourceId) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Has", federatedMatchableTcpGateway) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Has indicates an expected call of Has. +func (mr *MockFederatedMatchableTcpGatewaySetMockRecorder) Has(federatedMatchableTcpGateway interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockFederatedMatchableTcpGatewaySet)(nil).Has), federatedMatchableTcpGateway) +} + +// Insert mocks base method. +func (m *MockFederatedMatchableTcpGatewaySet) Insert(federatedMatchableTcpGateway ...*v1.FederatedMatchableTcpGateway) { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range federatedMatchableTcpGateway { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) +} + +// Insert indicates an expected call of Insert. +func (mr *MockFederatedMatchableTcpGatewaySetMockRecorder) Insert(federatedMatchableTcpGateway ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockFederatedMatchableTcpGatewaySet)(nil).Insert), federatedMatchableTcpGateway...) +} + +// Intersection mocks base method. +func (m *MockFederatedMatchableTcpGatewaySet) Intersection(set v1sets.FederatedMatchableTcpGatewaySet) v1sets.FederatedMatchableTcpGatewaySet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Intersection", set) + ret0, _ := ret[0].(v1sets.FederatedMatchableTcpGatewaySet) + return ret0 +} + +// Intersection indicates an expected call of Intersection. +func (mr *MockFederatedMatchableTcpGatewaySetMockRecorder) Intersection(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockFederatedMatchableTcpGatewaySet)(nil).Intersection), set) +} + +// Keys mocks base method. +func (m *MockFederatedMatchableTcpGatewaySet) Keys() sets0.String { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 +} + +// Keys indicates an expected call of Keys. +func (mr *MockFederatedMatchableTcpGatewaySetMockRecorder) Keys() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockFederatedMatchableTcpGatewaySet)(nil).Keys)) +} + +// Length mocks base method. +func (m *MockFederatedMatchableTcpGatewaySet) Length() int { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Length") + ret0, _ := ret[0].(int) + return ret0 +} + +// Length indicates an expected call of Length. +func (mr *MockFederatedMatchableTcpGatewaySetMockRecorder) Length() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockFederatedMatchableTcpGatewaySet)(nil).Length)) +} + +// List mocks base method. +func (m *MockFederatedMatchableTcpGatewaySet) List(filterResource ...func(*v1.FederatedMatchableTcpGateway) bool) []*v1.FederatedMatchableTcpGateway { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.FederatedMatchableTcpGateway) + return ret0 +} + +// List indicates an expected call of List. +func (mr *MockFederatedMatchableTcpGatewaySetMockRecorder) List(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockFederatedMatchableTcpGatewaySet)(nil).List), filterResource...) +} + +// Map mocks base method. +func (m *MockFederatedMatchableTcpGatewaySet) Map() map[string]*v1.FederatedMatchableTcpGateway { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.FederatedMatchableTcpGateway) + return ret0 +} + +// Map indicates an expected call of Map. +func (mr *MockFederatedMatchableTcpGatewaySetMockRecorder) Map() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockFederatedMatchableTcpGatewaySet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockFederatedMatchableTcpGatewaySet) Union(set v1sets.FederatedMatchableTcpGatewaySet) v1sets.FederatedMatchableTcpGatewaySet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.FederatedMatchableTcpGatewaySet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockFederatedMatchableTcpGatewaySetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockFederatedMatchableTcpGatewaySet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockFederatedMatchableTcpGatewaySet) UnsortedList(filterResource ...func(*v1.FederatedMatchableTcpGateway) bool) []*v1.FederatedMatchableTcpGateway { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.FederatedMatchableTcpGateway) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockFederatedMatchableTcpGatewaySetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockFederatedMatchableTcpGatewaySet)(nil).UnsortedList), filterResource...) +} + +// MockFederatedRouteTableSet is a mock of FederatedRouteTableSet interface. +type MockFederatedRouteTableSet struct { + ctrl *gomock.Controller + recorder *MockFederatedRouteTableSetMockRecorder +} + +// MockFederatedRouteTableSetMockRecorder is the mock recorder for MockFederatedRouteTableSet. +type MockFederatedRouteTableSetMockRecorder struct { + mock *MockFederatedRouteTableSet +} + +// NewMockFederatedRouteTableSet creates a new mock instance. +func NewMockFederatedRouteTableSet(ctrl *gomock.Controller) *MockFederatedRouteTableSet { + mock := &MockFederatedRouteTableSet{ctrl: ctrl} + mock.recorder = &MockFederatedRouteTableSetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedRouteTableSet) EXPECT() *MockFederatedRouteTableSetMockRecorder { + return m.recorder +} + +// Clone mocks base method. +func (m *MockFederatedRouteTableSet) Clone() v1sets.FederatedRouteTableSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.FederatedRouteTableSet) + return ret0 +} + +// Clone indicates an expected call of Clone. +func (mr *MockFederatedRouteTableSetMockRecorder) Clone() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockFederatedRouteTableSet)(nil).Clone)) +} + +// Delete mocks base method. +func (m *MockFederatedRouteTableSet) Delete(federatedRouteTable ezkube.ResourceId) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Delete", federatedRouteTable) +} + +// Delete indicates an expected call of Delete. +func (mr *MockFederatedRouteTableSetMockRecorder) Delete(federatedRouteTable interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockFederatedRouteTableSet)(nil).Delete), federatedRouteTable) +} + +// Delta mocks base method. +func (m *MockFederatedRouteTableSet) Delta(newSet v1sets.FederatedRouteTableSet) sets.ResourceDelta { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) + return ret0 +} + +// Delta indicates an expected call of Delta. +func (mr *MockFederatedRouteTableSetMockRecorder) Delta(newSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockFederatedRouteTableSet)(nil).Delta), newSet) +} + +// Difference mocks base method. +func (m *MockFederatedRouteTableSet) Difference(set v1sets.FederatedRouteTableSet) v1sets.FederatedRouteTableSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.FederatedRouteTableSet) + return ret0 +} + +// Difference indicates an expected call of Difference. +func (mr *MockFederatedRouteTableSetMockRecorder) Difference(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockFederatedRouteTableSet)(nil).Difference), set) +} + +// Equal mocks base method. +func (m *MockFederatedRouteTableSet) Equal(federatedRouteTableSet v1sets.FederatedRouteTableSet) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Equal", federatedRouteTableSet) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Equal indicates an expected call of Equal. +func (mr *MockFederatedRouteTableSetMockRecorder) Equal(federatedRouteTableSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockFederatedRouteTableSet)(nil).Equal), federatedRouteTableSet) +} + +// Find mocks base method. +func (m *MockFederatedRouteTableSet) Find(id ezkube.ResourceId) (*v1.FederatedRouteTable, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.FederatedRouteTable) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Find indicates an expected call of Find. +func (mr *MockFederatedRouteTableSetMockRecorder) Find(id interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockFederatedRouteTableSet)(nil).Find), id) +} + +// Generic mocks base method. +func (m *MockFederatedRouteTableSet) Generic() sets.ResourceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 +} + +// Generic indicates an expected call of Generic. +func (mr *MockFederatedRouteTableSetMockRecorder) Generic() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockFederatedRouteTableSet)(nil).Generic)) +} + +// Has mocks base method. +func (m *MockFederatedRouteTableSet) Has(federatedRouteTable ezkube.ResourceId) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Has", federatedRouteTable) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Has indicates an expected call of Has. +func (mr *MockFederatedRouteTableSetMockRecorder) Has(federatedRouteTable interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockFederatedRouteTableSet)(nil).Has), federatedRouteTable) +} + +// Insert mocks base method. +func (m *MockFederatedRouteTableSet) Insert(federatedRouteTable ...*v1.FederatedRouteTable) { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range federatedRouteTable { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) +} + +// Insert indicates an expected call of Insert. +func (mr *MockFederatedRouteTableSetMockRecorder) Insert(federatedRouteTable ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockFederatedRouteTableSet)(nil).Insert), federatedRouteTable...) +} + +// Intersection mocks base method. +func (m *MockFederatedRouteTableSet) Intersection(set v1sets.FederatedRouteTableSet) v1sets.FederatedRouteTableSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Intersection", set) + ret0, _ := ret[0].(v1sets.FederatedRouteTableSet) + return ret0 +} + +// Intersection indicates an expected call of Intersection. +func (mr *MockFederatedRouteTableSetMockRecorder) Intersection(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockFederatedRouteTableSet)(nil).Intersection), set) +} + +// Keys mocks base method. +func (m *MockFederatedRouteTableSet) Keys() sets0.String { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 +} + +// Keys indicates an expected call of Keys. +func (mr *MockFederatedRouteTableSetMockRecorder) Keys() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockFederatedRouteTableSet)(nil).Keys)) +} + +// Length mocks base method. +func (m *MockFederatedRouteTableSet) Length() int { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Length") + ret0, _ := ret[0].(int) + return ret0 +} + +// Length indicates an expected call of Length. +func (mr *MockFederatedRouteTableSetMockRecorder) Length() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockFederatedRouteTableSet)(nil).Length)) +} + +// List mocks base method. +func (m *MockFederatedRouteTableSet) List(filterResource ...func(*v1.FederatedRouteTable) bool) []*v1.FederatedRouteTable { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.FederatedRouteTable) + return ret0 +} + +// List indicates an expected call of List. +func (mr *MockFederatedRouteTableSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockFederatedRouteTableSet)(nil).List), filterResource...) +} + +// Map mocks base method. +func (m *MockFederatedRouteTableSet) Map() map[string]*v1.FederatedRouteTable { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.FederatedRouteTable) + return ret0 +} + +// Map indicates an expected call of Map. +func (mr *MockFederatedRouteTableSetMockRecorder) Map() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockFederatedRouteTableSet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockFederatedRouteTableSet) Union(set v1sets.FederatedRouteTableSet) v1sets.FederatedRouteTableSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.FederatedRouteTableSet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockFederatedRouteTableSetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockFederatedRouteTableSet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockFederatedRouteTableSet) UnsortedList(filterResource ...func(*v1.FederatedRouteTable) bool) []*v1.FederatedRouteTable { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.FederatedRouteTable) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockFederatedRouteTableSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockFederatedRouteTableSet)(nil).UnsortedList), filterResource...) +} + +// MockFederatedVirtualServiceSet is a mock of FederatedVirtualServiceSet interface. +type MockFederatedVirtualServiceSet struct { + ctrl *gomock.Controller + recorder *MockFederatedVirtualServiceSetMockRecorder +} + +// MockFederatedVirtualServiceSetMockRecorder is the mock recorder for MockFederatedVirtualServiceSet. +type MockFederatedVirtualServiceSetMockRecorder struct { + mock *MockFederatedVirtualServiceSet +} + +// NewMockFederatedVirtualServiceSet creates a new mock instance. +func NewMockFederatedVirtualServiceSet(ctrl *gomock.Controller) *MockFederatedVirtualServiceSet { + mock := &MockFederatedVirtualServiceSet{ctrl: ctrl} + mock.recorder = &MockFederatedVirtualServiceSetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedVirtualServiceSet) EXPECT() *MockFederatedVirtualServiceSetMockRecorder { + return m.recorder +} + +// Clone mocks base method. +func (m *MockFederatedVirtualServiceSet) Clone() v1sets.FederatedVirtualServiceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.FederatedVirtualServiceSet) + return ret0 +} + +// Clone indicates an expected call of Clone. +func (mr *MockFederatedVirtualServiceSetMockRecorder) Clone() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockFederatedVirtualServiceSet)(nil).Clone)) +} + +// Delete mocks base method. +func (m *MockFederatedVirtualServiceSet) Delete(federatedVirtualService ezkube.ResourceId) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Delete", federatedVirtualService) +} + +// Delete indicates an expected call of Delete. +func (mr *MockFederatedVirtualServiceSetMockRecorder) Delete(federatedVirtualService interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockFederatedVirtualServiceSet)(nil).Delete), federatedVirtualService) +} + +// Delta mocks base method. +func (m *MockFederatedVirtualServiceSet) Delta(newSet v1sets.FederatedVirtualServiceSet) sets.ResourceDelta { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) + return ret0 +} + +// Delta indicates an expected call of Delta. +func (mr *MockFederatedVirtualServiceSetMockRecorder) Delta(newSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockFederatedVirtualServiceSet)(nil).Delta), newSet) +} + +// Difference mocks base method. +func (m *MockFederatedVirtualServiceSet) Difference(set v1sets.FederatedVirtualServiceSet) v1sets.FederatedVirtualServiceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.FederatedVirtualServiceSet) + return ret0 +} + +// Difference indicates an expected call of Difference. +func (mr *MockFederatedVirtualServiceSetMockRecorder) Difference(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockFederatedVirtualServiceSet)(nil).Difference), set) +} + +// Equal mocks base method. +func (m *MockFederatedVirtualServiceSet) Equal(federatedVirtualServiceSet v1sets.FederatedVirtualServiceSet) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Equal", federatedVirtualServiceSet) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Equal indicates an expected call of Equal. +func (mr *MockFederatedVirtualServiceSetMockRecorder) Equal(federatedVirtualServiceSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockFederatedVirtualServiceSet)(nil).Equal), federatedVirtualServiceSet) +} + +// Find mocks base method. +func (m *MockFederatedVirtualServiceSet) Find(id ezkube.ResourceId) (*v1.FederatedVirtualService, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.FederatedVirtualService) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Find indicates an expected call of Find. +func (mr *MockFederatedVirtualServiceSetMockRecorder) Find(id interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockFederatedVirtualServiceSet)(nil).Find), id) +} + +// Generic mocks base method. +func (m *MockFederatedVirtualServiceSet) Generic() sets.ResourceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 +} + +// Generic indicates an expected call of Generic. +func (mr *MockFederatedVirtualServiceSetMockRecorder) Generic() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockFederatedVirtualServiceSet)(nil).Generic)) +} + +// Has mocks base method. +func (m *MockFederatedVirtualServiceSet) Has(federatedVirtualService ezkube.ResourceId) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Has", federatedVirtualService) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Has indicates an expected call of Has. +func (mr *MockFederatedVirtualServiceSetMockRecorder) Has(federatedVirtualService interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockFederatedVirtualServiceSet)(nil).Has), federatedVirtualService) +} + +// Insert mocks base method. +func (m *MockFederatedVirtualServiceSet) Insert(federatedVirtualService ...*v1.FederatedVirtualService) { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range federatedVirtualService { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) +} + +// Insert indicates an expected call of Insert. +func (mr *MockFederatedVirtualServiceSetMockRecorder) Insert(federatedVirtualService ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockFederatedVirtualServiceSet)(nil).Insert), federatedVirtualService...) +} + +// Intersection mocks base method. +func (m *MockFederatedVirtualServiceSet) Intersection(set v1sets.FederatedVirtualServiceSet) v1sets.FederatedVirtualServiceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Intersection", set) + ret0, _ := ret[0].(v1sets.FederatedVirtualServiceSet) + return ret0 +} + +// Intersection indicates an expected call of Intersection. +func (mr *MockFederatedVirtualServiceSetMockRecorder) Intersection(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockFederatedVirtualServiceSet)(nil).Intersection), set) +} + +// Keys mocks base method. +func (m *MockFederatedVirtualServiceSet) Keys() sets0.String { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 +} + +// Keys indicates an expected call of Keys. +func (mr *MockFederatedVirtualServiceSetMockRecorder) Keys() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockFederatedVirtualServiceSet)(nil).Keys)) +} + +// Length mocks base method. +func (m *MockFederatedVirtualServiceSet) Length() int { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Length") + ret0, _ := ret[0].(int) + return ret0 +} + +// Length indicates an expected call of Length. +func (mr *MockFederatedVirtualServiceSetMockRecorder) Length() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockFederatedVirtualServiceSet)(nil).Length)) +} + +// List mocks base method. +func (m *MockFederatedVirtualServiceSet) List(filterResource ...func(*v1.FederatedVirtualService) bool) []*v1.FederatedVirtualService { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.FederatedVirtualService) + return ret0 +} + +// List indicates an expected call of List. +func (mr *MockFederatedVirtualServiceSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockFederatedVirtualServiceSet)(nil).List), filterResource...) +} + +// Map mocks base method. +func (m *MockFederatedVirtualServiceSet) Map() map[string]*v1.FederatedVirtualService { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.FederatedVirtualService) + return ret0 +} + +// Map indicates an expected call of Map. +func (mr *MockFederatedVirtualServiceSetMockRecorder) Map() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockFederatedVirtualServiceSet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockFederatedVirtualServiceSet) Union(set v1sets.FederatedVirtualServiceSet) v1sets.FederatedVirtualServiceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.FederatedVirtualServiceSet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockFederatedVirtualServiceSetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockFederatedVirtualServiceSet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockFederatedVirtualServiceSet) UnsortedList(filterResource ...func(*v1.FederatedVirtualService) bool) []*v1.FederatedVirtualService { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.FederatedVirtualService) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockFederatedVirtualServiceSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockFederatedVirtualServiceSet)(nil).UnsortedList), filterResource...) +} diff --git a/pkg/api/fed.gateway.solo.io/v1/sets/sets.go b/pkg/api/fed.gateway.solo.io/v1/sets/sets.go new file mode 100644 index 000000000..03b7136bf --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/sets/sets.go @@ -0,0 +1,1129 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./sets.go -destination mocks/sets.go + +package v1sets + +import ( + fed_gateway_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1" + + "github.com/rotisserie/eris" + sksets "github.com/solo-io/skv2/contrib/pkg/sets" + "github.com/solo-io/skv2/pkg/ezkube" + "k8s.io/apimachinery/pkg/util/sets" +) + +type FederatedGatewaySet interface { + // Get the set stored keys + Keys() sets.String + // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + List(filterResource ...func(*fed_gateway_solo_io_v1.FederatedGateway) bool) []*fed_gateway_solo_io_v1.FederatedGateway + // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + UnsortedList(filterResource ...func(*fed_gateway_solo_io_v1.FederatedGateway) bool) []*fed_gateway_solo_io_v1.FederatedGateway + // Return the Set as a map of key to resource. + Map() map[string]*fed_gateway_solo_io_v1.FederatedGateway + // Insert a resource into the set. + Insert(federatedGateway ...*fed_gateway_solo_io_v1.FederatedGateway) + // Compare the equality of the keys in two sets (not the resources themselves) + Equal(federatedGatewaySet FederatedGatewaySet) bool + // Check if the set contains a key matching the resource (not the resource itself) + Has(federatedGateway ezkube.ResourceId) bool + // Delete the key matching the resource + Delete(federatedGateway ezkube.ResourceId) + // Return the union with the provided set + Union(set FederatedGatewaySet) FederatedGatewaySet + // Return the difference with the provided set + Difference(set FederatedGatewaySet) FederatedGatewaySet + // Return the intersection with the provided set + Intersection(set FederatedGatewaySet) FederatedGatewaySet + // Find the resource with the given ID + Find(id ezkube.ResourceId) (*fed_gateway_solo_io_v1.FederatedGateway, error) + // Get the length of the set + Length() int + // returns the generic implementation of the set + Generic() sksets.ResourceSet + // returns the delta between this and and another FederatedGatewaySet + Delta(newSet FederatedGatewaySet) sksets.ResourceDelta + // Create a deep copy of the current FederatedGatewaySet + Clone() FederatedGatewaySet +} + +func makeGenericFederatedGatewaySet(federatedGatewayList []*fed_gateway_solo_io_v1.FederatedGateway) sksets.ResourceSet { + var genericResources []ezkube.ResourceId + for _, obj := range federatedGatewayList { + genericResources = append(genericResources, obj) + } + return sksets.NewResourceSet(genericResources...) +} + +type federatedGatewaySet struct { + set sksets.ResourceSet +} + +func NewFederatedGatewaySet(federatedGatewayList ...*fed_gateway_solo_io_v1.FederatedGateway) FederatedGatewaySet { + return &federatedGatewaySet{set: makeGenericFederatedGatewaySet(federatedGatewayList)} +} + +func NewFederatedGatewaySetFromList(federatedGatewayList *fed_gateway_solo_io_v1.FederatedGatewayList) FederatedGatewaySet { + list := make([]*fed_gateway_solo_io_v1.FederatedGateway, 0, len(federatedGatewayList.Items)) + for idx := range federatedGatewayList.Items { + list = append(list, &federatedGatewayList.Items[idx]) + } + return &federatedGatewaySet{set: makeGenericFederatedGatewaySet(list)} +} + +func (s *federatedGatewaySet) Keys() sets.String { + if s == nil { + return sets.String{} + } + return s.Generic().Keys() +} + +func (s *federatedGatewaySet) List(filterResource ...func(*fed_gateway_solo_io_v1.FederatedGateway) bool) []*fed_gateway_solo_io_v1.FederatedGateway { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_gateway_solo_io_v1.FederatedGateway)) + }) + } + + objs := s.Generic().List(genericFilters...) + federatedGatewayList := make([]*fed_gateway_solo_io_v1.FederatedGateway, 0, len(objs)) + for _, obj := range objs { + federatedGatewayList = append(federatedGatewayList, obj.(*fed_gateway_solo_io_v1.FederatedGateway)) + } + return federatedGatewayList +} + +func (s *federatedGatewaySet) UnsortedList(filterResource ...func(*fed_gateway_solo_io_v1.FederatedGateway) bool) []*fed_gateway_solo_io_v1.FederatedGateway { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_gateway_solo_io_v1.FederatedGateway)) + }) + } + + var federatedGatewayList []*fed_gateway_solo_io_v1.FederatedGateway + for _, obj := range s.Generic().UnsortedList(genericFilters...) { + federatedGatewayList = append(federatedGatewayList, obj.(*fed_gateway_solo_io_v1.FederatedGateway)) + } + return federatedGatewayList +} + +func (s *federatedGatewaySet) Map() map[string]*fed_gateway_solo_io_v1.FederatedGateway { + if s == nil { + return nil + } + + newMap := map[string]*fed_gateway_solo_io_v1.FederatedGateway{} + for k, v := range s.Generic().Map() { + newMap[k] = v.(*fed_gateway_solo_io_v1.FederatedGateway) + } + return newMap +} + +func (s *federatedGatewaySet) Insert( + federatedGatewayList ...*fed_gateway_solo_io_v1.FederatedGateway, +) { + if s == nil { + panic("cannot insert into nil set") + } + + for _, obj := range federatedGatewayList { + s.Generic().Insert(obj) + } +} + +func (s *federatedGatewaySet) Has(federatedGateway ezkube.ResourceId) bool { + if s == nil { + return false + } + return s.Generic().Has(federatedGateway) +} + +func (s *federatedGatewaySet) Equal( + federatedGatewaySet FederatedGatewaySet, +) bool { + if s == nil { + return federatedGatewaySet == nil + } + return s.Generic().Equal(federatedGatewaySet.Generic()) +} + +func (s *federatedGatewaySet) Delete(FederatedGateway ezkube.ResourceId) { + if s == nil { + return + } + s.Generic().Delete(FederatedGateway) +} + +func (s *federatedGatewaySet) Union(set FederatedGatewaySet) FederatedGatewaySet { + if s == nil { + return set + } + return NewFederatedGatewaySet(append(s.List(), set.List()...)...) +} + +func (s *federatedGatewaySet) Difference(set FederatedGatewaySet) FederatedGatewaySet { + if s == nil { + return set + } + newSet := s.Generic().Difference(set.Generic()) + return &federatedGatewaySet{set: newSet} +} + +func (s *federatedGatewaySet) Intersection(set FederatedGatewaySet) FederatedGatewaySet { + if s == nil { + return nil + } + newSet := s.Generic().Intersection(set.Generic()) + var federatedGatewayList []*fed_gateway_solo_io_v1.FederatedGateway + for _, obj := range newSet.List() { + federatedGatewayList = append(federatedGatewayList, obj.(*fed_gateway_solo_io_v1.FederatedGateway)) + } + return NewFederatedGatewaySet(federatedGatewayList...) +} + +func (s *federatedGatewaySet) Find(id ezkube.ResourceId) (*fed_gateway_solo_io_v1.FederatedGateway, error) { + if s == nil { + return nil, eris.Errorf("empty set, cannot find FederatedGateway %v", sksets.Key(id)) + } + obj, err := s.Generic().Find(&fed_gateway_solo_io_v1.FederatedGateway{}, id) + if err != nil { + return nil, err + } + + return obj.(*fed_gateway_solo_io_v1.FederatedGateway), nil +} + +func (s *federatedGatewaySet) Length() int { + if s == nil { + return 0 + } + return s.Generic().Length() +} + +func (s *federatedGatewaySet) Generic() sksets.ResourceSet { + if s == nil { + return nil + } + return s.set +} + +func (s *federatedGatewaySet) Delta(newSet FederatedGatewaySet) sksets.ResourceDelta { + if s == nil { + return sksets.ResourceDelta{ + Inserted: newSet.Generic(), + } + } + return s.Generic().Delta(newSet.Generic()) +} + +func (s *federatedGatewaySet) Clone() FederatedGatewaySet { + if s == nil { + return nil + } + return &federatedGatewaySet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} + +type FederatedMatchableHttpGatewaySet interface { + // Get the set stored keys + Keys() sets.String + // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + List(filterResource ...func(*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) bool) []*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway + // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + UnsortedList(filterResource ...func(*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) bool) []*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway + // Return the Set as a map of key to resource. + Map() map[string]*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway + // Insert a resource into the set. + Insert(federatedMatchableHttpGateway ...*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) + // Compare the equality of the keys in two sets (not the resources themselves) + Equal(federatedMatchableHttpGatewaySet FederatedMatchableHttpGatewaySet) bool + // Check if the set contains a key matching the resource (not the resource itself) + Has(federatedMatchableHttpGateway ezkube.ResourceId) bool + // Delete the key matching the resource + Delete(federatedMatchableHttpGateway ezkube.ResourceId) + // Return the union with the provided set + Union(set FederatedMatchableHttpGatewaySet) FederatedMatchableHttpGatewaySet + // Return the difference with the provided set + Difference(set FederatedMatchableHttpGatewaySet) FederatedMatchableHttpGatewaySet + // Return the intersection with the provided set + Intersection(set FederatedMatchableHttpGatewaySet) FederatedMatchableHttpGatewaySet + // Find the resource with the given ID + Find(id ezkube.ResourceId) (*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway, error) + // Get the length of the set + Length() int + // returns the generic implementation of the set + Generic() sksets.ResourceSet + // returns the delta between this and and another FederatedMatchableHttpGatewaySet + Delta(newSet FederatedMatchableHttpGatewaySet) sksets.ResourceDelta + // Create a deep copy of the current FederatedMatchableHttpGatewaySet + Clone() FederatedMatchableHttpGatewaySet +} + +func makeGenericFederatedMatchableHttpGatewaySet(federatedMatchableHttpGatewayList []*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) sksets.ResourceSet { + var genericResources []ezkube.ResourceId + for _, obj := range federatedMatchableHttpGatewayList { + genericResources = append(genericResources, obj) + } + return sksets.NewResourceSet(genericResources...) +} + +type federatedMatchableHttpGatewaySet struct { + set sksets.ResourceSet +} + +func NewFederatedMatchableHttpGatewaySet(federatedMatchableHttpGatewayList ...*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) FederatedMatchableHttpGatewaySet { + return &federatedMatchableHttpGatewaySet{set: makeGenericFederatedMatchableHttpGatewaySet(federatedMatchableHttpGatewayList)} +} + +func NewFederatedMatchableHttpGatewaySetFromList(federatedMatchableHttpGatewayList *fed_gateway_solo_io_v1.FederatedMatchableHttpGatewayList) FederatedMatchableHttpGatewaySet { + list := make([]*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway, 0, len(federatedMatchableHttpGatewayList.Items)) + for idx := range federatedMatchableHttpGatewayList.Items { + list = append(list, &federatedMatchableHttpGatewayList.Items[idx]) + } + return &federatedMatchableHttpGatewaySet{set: makeGenericFederatedMatchableHttpGatewaySet(list)} +} + +func (s *federatedMatchableHttpGatewaySet) Keys() sets.String { + if s == nil { + return sets.String{} + } + return s.Generic().Keys() +} + +func (s *federatedMatchableHttpGatewaySet) List(filterResource ...func(*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) bool) []*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway)) + }) + } + + objs := s.Generic().List(genericFilters...) + federatedMatchableHttpGatewayList := make([]*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway, 0, len(objs)) + for _, obj := range objs { + federatedMatchableHttpGatewayList = append(federatedMatchableHttpGatewayList, obj.(*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway)) + } + return federatedMatchableHttpGatewayList +} + +func (s *federatedMatchableHttpGatewaySet) UnsortedList(filterResource ...func(*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) bool) []*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway)) + }) + } + + var federatedMatchableHttpGatewayList []*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway + for _, obj := range s.Generic().UnsortedList(genericFilters...) { + federatedMatchableHttpGatewayList = append(federatedMatchableHttpGatewayList, obj.(*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway)) + } + return federatedMatchableHttpGatewayList +} + +func (s *federatedMatchableHttpGatewaySet) Map() map[string]*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway { + if s == nil { + return nil + } + + newMap := map[string]*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway{} + for k, v := range s.Generic().Map() { + newMap[k] = v.(*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway) + } + return newMap +} + +func (s *federatedMatchableHttpGatewaySet) Insert( + federatedMatchableHttpGatewayList ...*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway, +) { + if s == nil { + panic("cannot insert into nil set") + } + + for _, obj := range federatedMatchableHttpGatewayList { + s.Generic().Insert(obj) + } +} + +func (s *federatedMatchableHttpGatewaySet) Has(federatedMatchableHttpGateway ezkube.ResourceId) bool { + if s == nil { + return false + } + return s.Generic().Has(federatedMatchableHttpGateway) +} + +func (s *federatedMatchableHttpGatewaySet) Equal( + federatedMatchableHttpGatewaySet FederatedMatchableHttpGatewaySet, +) bool { + if s == nil { + return federatedMatchableHttpGatewaySet == nil + } + return s.Generic().Equal(federatedMatchableHttpGatewaySet.Generic()) +} + +func (s *federatedMatchableHttpGatewaySet) Delete(FederatedMatchableHttpGateway ezkube.ResourceId) { + if s == nil { + return + } + s.Generic().Delete(FederatedMatchableHttpGateway) +} + +func (s *federatedMatchableHttpGatewaySet) Union(set FederatedMatchableHttpGatewaySet) FederatedMatchableHttpGatewaySet { + if s == nil { + return set + } + return NewFederatedMatchableHttpGatewaySet(append(s.List(), set.List()...)...) +} + +func (s *federatedMatchableHttpGatewaySet) Difference(set FederatedMatchableHttpGatewaySet) FederatedMatchableHttpGatewaySet { + if s == nil { + return set + } + newSet := s.Generic().Difference(set.Generic()) + return &federatedMatchableHttpGatewaySet{set: newSet} +} + +func (s *federatedMatchableHttpGatewaySet) Intersection(set FederatedMatchableHttpGatewaySet) FederatedMatchableHttpGatewaySet { + if s == nil { + return nil + } + newSet := s.Generic().Intersection(set.Generic()) + var federatedMatchableHttpGatewayList []*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway + for _, obj := range newSet.List() { + federatedMatchableHttpGatewayList = append(federatedMatchableHttpGatewayList, obj.(*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway)) + } + return NewFederatedMatchableHttpGatewaySet(federatedMatchableHttpGatewayList...) +} + +func (s *federatedMatchableHttpGatewaySet) Find(id ezkube.ResourceId) (*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway, error) { + if s == nil { + return nil, eris.Errorf("empty set, cannot find FederatedMatchableHttpGateway %v", sksets.Key(id)) + } + obj, err := s.Generic().Find(&fed_gateway_solo_io_v1.FederatedMatchableHttpGateway{}, id) + if err != nil { + return nil, err + } + + return obj.(*fed_gateway_solo_io_v1.FederatedMatchableHttpGateway), nil +} + +func (s *federatedMatchableHttpGatewaySet) Length() int { + if s == nil { + return 0 + } + return s.Generic().Length() +} + +func (s *federatedMatchableHttpGatewaySet) Generic() sksets.ResourceSet { + if s == nil { + return nil + } + return s.set +} + +func (s *federatedMatchableHttpGatewaySet) Delta(newSet FederatedMatchableHttpGatewaySet) sksets.ResourceDelta { + if s == nil { + return sksets.ResourceDelta{ + Inserted: newSet.Generic(), + } + } + return s.Generic().Delta(newSet.Generic()) +} + +func (s *federatedMatchableHttpGatewaySet) Clone() FederatedMatchableHttpGatewaySet { + if s == nil { + return nil + } + return &federatedMatchableHttpGatewaySet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} + +type FederatedMatchableTcpGatewaySet interface { + // Get the set stored keys + Keys() sets.String + // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + List(filterResource ...func(*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) bool) []*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway + // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + UnsortedList(filterResource ...func(*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) bool) []*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway + // Return the Set as a map of key to resource. + Map() map[string]*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway + // Insert a resource into the set. + Insert(federatedMatchableTcpGateway ...*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) + // Compare the equality of the keys in two sets (not the resources themselves) + Equal(federatedMatchableTcpGatewaySet FederatedMatchableTcpGatewaySet) bool + // Check if the set contains a key matching the resource (not the resource itself) + Has(federatedMatchableTcpGateway ezkube.ResourceId) bool + // Delete the key matching the resource + Delete(federatedMatchableTcpGateway ezkube.ResourceId) + // Return the union with the provided set + Union(set FederatedMatchableTcpGatewaySet) FederatedMatchableTcpGatewaySet + // Return the difference with the provided set + Difference(set FederatedMatchableTcpGatewaySet) FederatedMatchableTcpGatewaySet + // Return the intersection with the provided set + Intersection(set FederatedMatchableTcpGatewaySet) FederatedMatchableTcpGatewaySet + // Find the resource with the given ID + Find(id ezkube.ResourceId) (*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway, error) + // Get the length of the set + Length() int + // returns the generic implementation of the set + Generic() sksets.ResourceSet + // returns the delta between this and and another FederatedMatchableTcpGatewaySet + Delta(newSet FederatedMatchableTcpGatewaySet) sksets.ResourceDelta + // Create a deep copy of the current FederatedMatchableTcpGatewaySet + Clone() FederatedMatchableTcpGatewaySet +} + +func makeGenericFederatedMatchableTcpGatewaySet(federatedMatchableTcpGatewayList []*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) sksets.ResourceSet { + var genericResources []ezkube.ResourceId + for _, obj := range federatedMatchableTcpGatewayList { + genericResources = append(genericResources, obj) + } + return sksets.NewResourceSet(genericResources...) +} + +type federatedMatchableTcpGatewaySet struct { + set sksets.ResourceSet +} + +func NewFederatedMatchableTcpGatewaySet(federatedMatchableTcpGatewayList ...*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) FederatedMatchableTcpGatewaySet { + return &federatedMatchableTcpGatewaySet{set: makeGenericFederatedMatchableTcpGatewaySet(federatedMatchableTcpGatewayList)} +} + +func NewFederatedMatchableTcpGatewaySetFromList(federatedMatchableTcpGatewayList *fed_gateway_solo_io_v1.FederatedMatchableTcpGatewayList) FederatedMatchableTcpGatewaySet { + list := make([]*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway, 0, len(federatedMatchableTcpGatewayList.Items)) + for idx := range federatedMatchableTcpGatewayList.Items { + list = append(list, &federatedMatchableTcpGatewayList.Items[idx]) + } + return &federatedMatchableTcpGatewaySet{set: makeGenericFederatedMatchableTcpGatewaySet(list)} +} + +func (s *federatedMatchableTcpGatewaySet) Keys() sets.String { + if s == nil { + return sets.String{} + } + return s.Generic().Keys() +} + +func (s *federatedMatchableTcpGatewaySet) List(filterResource ...func(*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) bool) []*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway)) + }) + } + + objs := s.Generic().List(genericFilters...) + federatedMatchableTcpGatewayList := make([]*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway, 0, len(objs)) + for _, obj := range objs { + federatedMatchableTcpGatewayList = append(federatedMatchableTcpGatewayList, obj.(*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway)) + } + return federatedMatchableTcpGatewayList +} + +func (s *federatedMatchableTcpGatewaySet) UnsortedList(filterResource ...func(*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) bool) []*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway)) + }) + } + + var federatedMatchableTcpGatewayList []*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway + for _, obj := range s.Generic().UnsortedList(genericFilters...) { + federatedMatchableTcpGatewayList = append(federatedMatchableTcpGatewayList, obj.(*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway)) + } + return federatedMatchableTcpGatewayList +} + +func (s *federatedMatchableTcpGatewaySet) Map() map[string]*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway { + if s == nil { + return nil + } + + newMap := map[string]*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway{} + for k, v := range s.Generic().Map() { + newMap[k] = v.(*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway) + } + return newMap +} + +func (s *federatedMatchableTcpGatewaySet) Insert( + federatedMatchableTcpGatewayList ...*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway, +) { + if s == nil { + panic("cannot insert into nil set") + } + + for _, obj := range federatedMatchableTcpGatewayList { + s.Generic().Insert(obj) + } +} + +func (s *federatedMatchableTcpGatewaySet) Has(federatedMatchableTcpGateway ezkube.ResourceId) bool { + if s == nil { + return false + } + return s.Generic().Has(federatedMatchableTcpGateway) +} + +func (s *federatedMatchableTcpGatewaySet) Equal( + federatedMatchableTcpGatewaySet FederatedMatchableTcpGatewaySet, +) bool { + if s == nil { + return federatedMatchableTcpGatewaySet == nil + } + return s.Generic().Equal(federatedMatchableTcpGatewaySet.Generic()) +} + +func (s *federatedMatchableTcpGatewaySet) Delete(FederatedMatchableTcpGateway ezkube.ResourceId) { + if s == nil { + return + } + s.Generic().Delete(FederatedMatchableTcpGateway) +} + +func (s *federatedMatchableTcpGatewaySet) Union(set FederatedMatchableTcpGatewaySet) FederatedMatchableTcpGatewaySet { + if s == nil { + return set + } + return NewFederatedMatchableTcpGatewaySet(append(s.List(), set.List()...)...) +} + +func (s *federatedMatchableTcpGatewaySet) Difference(set FederatedMatchableTcpGatewaySet) FederatedMatchableTcpGatewaySet { + if s == nil { + return set + } + newSet := s.Generic().Difference(set.Generic()) + return &federatedMatchableTcpGatewaySet{set: newSet} +} + +func (s *federatedMatchableTcpGatewaySet) Intersection(set FederatedMatchableTcpGatewaySet) FederatedMatchableTcpGatewaySet { + if s == nil { + return nil + } + newSet := s.Generic().Intersection(set.Generic()) + var federatedMatchableTcpGatewayList []*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway + for _, obj := range newSet.List() { + federatedMatchableTcpGatewayList = append(federatedMatchableTcpGatewayList, obj.(*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway)) + } + return NewFederatedMatchableTcpGatewaySet(federatedMatchableTcpGatewayList...) +} + +func (s *federatedMatchableTcpGatewaySet) Find(id ezkube.ResourceId) (*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway, error) { + if s == nil { + return nil, eris.Errorf("empty set, cannot find FederatedMatchableTcpGateway %v", sksets.Key(id)) + } + obj, err := s.Generic().Find(&fed_gateway_solo_io_v1.FederatedMatchableTcpGateway{}, id) + if err != nil { + return nil, err + } + + return obj.(*fed_gateway_solo_io_v1.FederatedMatchableTcpGateway), nil +} + +func (s *federatedMatchableTcpGatewaySet) Length() int { + if s == nil { + return 0 + } + return s.Generic().Length() +} + +func (s *federatedMatchableTcpGatewaySet) Generic() sksets.ResourceSet { + if s == nil { + return nil + } + return s.set +} + +func (s *federatedMatchableTcpGatewaySet) Delta(newSet FederatedMatchableTcpGatewaySet) sksets.ResourceDelta { + if s == nil { + return sksets.ResourceDelta{ + Inserted: newSet.Generic(), + } + } + return s.Generic().Delta(newSet.Generic()) +} + +func (s *federatedMatchableTcpGatewaySet) Clone() FederatedMatchableTcpGatewaySet { + if s == nil { + return nil + } + return &federatedMatchableTcpGatewaySet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} + +type FederatedRouteTableSet interface { + // Get the set stored keys + Keys() sets.String + // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + List(filterResource ...func(*fed_gateway_solo_io_v1.FederatedRouteTable) bool) []*fed_gateway_solo_io_v1.FederatedRouteTable + // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + UnsortedList(filterResource ...func(*fed_gateway_solo_io_v1.FederatedRouteTable) bool) []*fed_gateway_solo_io_v1.FederatedRouteTable + // Return the Set as a map of key to resource. + Map() map[string]*fed_gateway_solo_io_v1.FederatedRouteTable + // Insert a resource into the set. + Insert(federatedRouteTable ...*fed_gateway_solo_io_v1.FederatedRouteTable) + // Compare the equality of the keys in two sets (not the resources themselves) + Equal(federatedRouteTableSet FederatedRouteTableSet) bool + // Check if the set contains a key matching the resource (not the resource itself) + Has(federatedRouteTable ezkube.ResourceId) bool + // Delete the key matching the resource + Delete(federatedRouteTable ezkube.ResourceId) + // Return the union with the provided set + Union(set FederatedRouteTableSet) FederatedRouteTableSet + // Return the difference with the provided set + Difference(set FederatedRouteTableSet) FederatedRouteTableSet + // Return the intersection with the provided set + Intersection(set FederatedRouteTableSet) FederatedRouteTableSet + // Find the resource with the given ID + Find(id ezkube.ResourceId) (*fed_gateway_solo_io_v1.FederatedRouteTable, error) + // Get the length of the set + Length() int + // returns the generic implementation of the set + Generic() sksets.ResourceSet + // returns the delta between this and and another FederatedRouteTableSet + Delta(newSet FederatedRouteTableSet) sksets.ResourceDelta + // Create a deep copy of the current FederatedRouteTableSet + Clone() FederatedRouteTableSet +} + +func makeGenericFederatedRouteTableSet(federatedRouteTableList []*fed_gateway_solo_io_v1.FederatedRouteTable) sksets.ResourceSet { + var genericResources []ezkube.ResourceId + for _, obj := range federatedRouteTableList { + genericResources = append(genericResources, obj) + } + return sksets.NewResourceSet(genericResources...) +} + +type federatedRouteTableSet struct { + set sksets.ResourceSet +} + +func NewFederatedRouteTableSet(federatedRouteTableList ...*fed_gateway_solo_io_v1.FederatedRouteTable) FederatedRouteTableSet { + return &federatedRouteTableSet{set: makeGenericFederatedRouteTableSet(federatedRouteTableList)} +} + +func NewFederatedRouteTableSetFromList(federatedRouteTableList *fed_gateway_solo_io_v1.FederatedRouteTableList) FederatedRouteTableSet { + list := make([]*fed_gateway_solo_io_v1.FederatedRouteTable, 0, len(federatedRouteTableList.Items)) + for idx := range federatedRouteTableList.Items { + list = append(list, &federatedRouteTableList.Items[idx]) + } + return &federatedRouteTableSet{set: makeGenericFederatedRouteTableSet(list)} +} + +func (s *federatedRouteTableSet) Keys() sets.String { + if s == nil { + return sets.String{} + } + return s.Generic().Keys() +} + +func (s *federatedRouteTableSet) List(filterResource ...func(*fed_gateway_solo_io_v1.FederatedRouteTable) bool) []*fed_gateway_solo_io_v1.FederatedRouteTable { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_gateway_solo_io_v1.FederatedRouteTable)) + }) + } + + objs := s.Generic().List(genericFilters...) + federatedRouteTableList := make([]*fed_gateway_solo_io_v1.FederatedRouteTable, 0, len(objs)) + for _, obj := range objs { + federatedRouteTableList = append(federatedRouteTableList, obj.(*fed_gateway_solo_io_v1.FederatedRouteTable)) + } + return federatedRouteTableList +} + +func (s *federatedRouteTableSet) UnsortedList(filterResource ...func(*fed_gateway_solo_io_v1.FederatedRouteTable) bool) []*fed_gateway_solo_io_v1.FederatedRouteTable { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_gateway_solo_io_v1.FederatedRouteTable)) + }) + } + + var federatedRouteTableList []*fed_gateway_solo_io_v1.FederatedRouteTable + for _, obj := range s.Generic().UnsortedList(genericFilters...) { + federatedRouteTableList = append(federatedRouteTableList, obj.(*fed_gateway_solo_io_v1.FederatedRouteTable)) + } + return federatedRouteTableList +} + +func (s *federatedRouteTableSet) Map() map[string]*fed_gateway_solo_io_v1.FederatedRouteTable { + if s == nil { + return nil + } + + newMap := map[string]*fed_gateway_solo_io_v1.FederatedRouteTable{} + for k, v := range s.Generic().Map() { + newMap[k] = v.(*fed_gateway_solo_io_v1.FederatedRouteTable) + } + return newMap +} + +func (s *federatedRouteTableSet) Insert( + federatedRouteTableList ...*fed_gateway_solo_io_v1.FederatedRouteTable, +) { + if s == nil { + panic("cannot insert into nil set") + } + + for _, obj := range federatedRouteTableList { + s.Generic().Insert(obj) + } +} + +func (s *federatedRouteTableSet) Has(federatedRouteTable ezkube.ResourceId) bool { + if s == nil { + return false + } + return s.Generic().Has(federatedRouteTable) +} + +func (s *federatedRouteTableSet) Equal( + federatedRouteTableSet FederatedRouteTableSet, +) bool { + if s == nil { + return federatedRouteTableSet == nil + } + return s.Generic().Equal(federatedRouteTableSet.Generic()) +} + +func (s *federatedRouteTableSet) Delete(FederatedRouteTable ezkube.ResourceId) { + if s == nil { + return + } + s.Generic().Delete(FederatedRouteTable) +} + +func (s *federatedRouteTableSet) Union(set FederatedRouteTableSet) FederatedRouteTableSet { + if s == nil { + return set + } + return NewFederatedRouteTableSet(append(s.List(), set.List()...)...) +} + +func (s *federatedRouteTableSet) Difference(set FederatedRouteTableSet) FederatedRouteTableSet { + if s == nil { + return set + } + newSet := s.Generic().Difference(set.Generic()) + return &federatedRouteTableSet{set: newSet} +} + +func (s *federatedRouteTableSet) Intersection(set FederatedRouteTableSet) FederatedRouteTableSet { + if s == nil { + return nil + } + newSet := s.Generic().Intersection(set.Generic()) + var federatedRouteTableList []*fed_gateway_solo_io_v1.FederatedRouteTable + for _, obj := range newSet.List() { + federatedRouteTableList = append(federatedRouteTableList, obj.(*fed_gateway_solo_io_v1.FederatedRouteTable)) + } + return NewFederatedRouteTableSet(federatedRouteTableList...) +} + +func (s *federatedRouteTableSet) Find(id ezkube.ResourceId) (*fed_gateway_solo_io_v1.FederatedRouteTable, error) { + if s == nil { + return nil, eris.Errorf("empty set, cannot find FederatedRouteTable %v", sksets.Key(id)) + } + obj, err := s.Generic().Find(&fed_gateway_solo_io_v1.FederatedRouteTable{}, id) + if err != nil { + return nil, err + } + + return obj.(*fed_gateway_solo_io_v1.FederatedRouteTable), nil +} + +func (s *federatedRouteTableSet) Length() int { + if s == nil { + return 0 + } + return s.Generic().Length() +} + +func (s *federatedRouteTableSet) Generic() sksets.ResourceSet { + if s == nil { + return nil + } + return s.set +} + +func (s *federatedRouteTableSet) Delta(newSet FederatedRouteTableSet) sksets.ResourceDelta { + if s == nil { + return sksets.ResourceDelta{ + Inserted: newSet.Generic(), + } + } + return s.Generic().Delta(newSet.Generic()) +} + +func (s *federatedRouteTableSet) Clone() FederatedRouteTableSet { + if s == nil { + return nil + } + return &federatedRouteTableSet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} + +type FederatedVirtualServiceSet interface { + // Get the set stored keys + Keys() sets.String + // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + List(filterResource ...func(*fed_gateway_solo_io_v1.FederatedVirtualService) bool) []*fed_gateway_solo_io_v1.FederatedVirtualService + // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + UnsortedList(filterResource ...func(*fed_gateway_solo_io_v1.FederatedVirtualService) bool) []*fed_gateway_solo_io_v1.FederatedVirtualService + // Return the Set as a map of key to resource. + Map() map[string]*fed_gateway_solo_io_v1.FederatedVirtualService + // Insert a resource into the set. + Insert(federatedVirtualService ...*fed_gateway_solo_io_v1.FederatedVirtualService) + // Compare the equality of the keys in two sets (not the resources themselves) + Equal(federatedVirtualServiceSet FederatedVirtualServiceSet) bool + // Check if the set contains a key matching the resource (not the resource itself) + Has(federatedVirtualService ezkube.ResourceId) bool + // Delete the key matching the resource + Delete(federatedVirtualService ezkube.ResourceId) + // Return the union with the provided set + Union(set FederatedVirtualServiceSet) FederatedVirtualServiceSet + // Return the difference with the provided set + Difference(set FederatedVirtualServiceSet) FederatedVirtualServiceSet + // Return the intersection with the provided set + Intersection(set FederatedVirtualServiceSet) FederatedVirtualServiceSet + // Find the resource with the given ID + Find(id ezkube.ResourceId) (*fed_gateway_solo_io_v1.FederatedVirtualService, error) + // Get the length of the set + Length() int + // returns the generic implementation of the set + Generic() sksets.ResourceSet + // returns the delta between this and and another FederatedVirtualServiceSet + Delta(newSet FederatedVirtualServiceSet) sksets.ResourceDelta + // Create a deep copy of the current FederatedVirtualServiceSet + Clone() FederatedVirtualServiceSet +} + +func makeGenericFederatedVirtualServiceSet(federatedVirtualServiceList []*fed_gateway_solo_io_v1.FederatedVirtualService) sksets.ResourceSet { + var genericResources []ezkube.ResourceId + for _, obj := range federatedVirtualServiceList { + genericResources = append(genericResources, obj) + } + return sksets.NewResourceSet(genericResources...) +} + +type federatedVirtualServiceSet struct { + set sksets.ResourceSet +} + +func NewFederatedVirtualServiceSet(federatedVirtualServiceList ...*fed_gateway_solo_io_v1.FederatedVirtualService) FederatedVirtualServiceSet { + return &federatedVirtualServiceSet{set: makeGenericFederatedVirtualServiceSet(federatedVirtualServiceList)} +} + +func NewFederatedVirtualServiceSetFromList(federatedVirtualServiceList *fed_gateway_solo_io_v1.FederatedVirtualServiceList) FederatedVirtualServiceSet { + list := make([]*fed_gateway_solo_io_v1.FederatedVirtualService, 0, len(federatedVirtualServiceList.Items)) + for idx := range federatedVirtualServiceList.Items { + list = append(list, &federatedVirtualServiceList.Items[idx]) + } + return &federatedVirtualServiceSet{set: makeGenericFederatedVirtualServiceSet(list)} +} + +func (s *federatedVirtualServiceSet) Keys() sets.String { + if s == nil { + return sets.String{} + } + return s.Generic().Keys() +} + +func (s *federatedVirtualServiceSet) List(filterResource ...func(*fed_gateway_solo_io_v1.FederatedVirtualService) bool) []*fed_gateway_solo_io_v1.FederatedVirtualService { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_gateway_solo_io_v1.FederatedVirtualService)) + }) + } + + objs := s.Generic().List(genericFilters...) + federatedVirtualServiceList := make([]*fed_gateway_solo_io_v1.FederatedVirtualService, 0, len(objs)) + for _, obj := range objs { + federatedVirtualServiceList = append(federatedVirtualServiceList, obj.(*fed_gateway_solo_io_v1.FederatedVirtualService)) + } + return federatedVirtualServiceList +} + +func (s *federatedVirtualServiceSet) UnsortedList(filterResource ...func(*fed_gateway_solo_io_v1.FederatedVirtualService) bool) []*fed_gateway_solo_io_v1.FederatedVirtualService { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_gateway_solo_io_v1.FederatedVirtualService)) + }) + } + + var federatedVirtualServiceList []*fed_gateway_solo_io_v1.FederatedVirtualService + for _, obj := range s.Generic().UnsortedList(genericFilters...) { + federatedVirtualServiceList = append(federatedVirtualServiceList, obj.(*fed_gateway_solo_io_v1.FederatedVirtualService)) + } + return federatedVirtualServiceList +} + +func (s *federatedVirtualServiceSet) Map() map[string]*fed_gateway_solo_io_v1.FederatedVirtualService { + if s == nil { + return nil + } + + newMap := map[string]*fed_gateway_solo_io_v1.FederatedVirtualService{} + for k, v := range s.Generic().Map() { + newMap[k] = v.(*fed_gateway_solo_io_v1.FederatedVirtualService) + } + return newMap +} + +func (s *federatedVirtualServiceSet) Insert( + federatedVirtualServiceList ...*fed_gateway_solo_io_v1.FederatedVirtualService, +) { + if s == nil { + panic("cannot insert into nil set") + } + + for _, obj := range federatedVirtualServiceList { + s.Generic().Insert(obj) + } +} + +func (s *federatedVirtualServiceSet) Has(federatedVirtualService ezkube.ResourceId) bool { + if s == nil { + return false + } + return s.Generic().Has(federatedVirtualService) +} + +func (s *federatedVirtualServiceSet) Equal( + federatedVirtualServiceSet FederatedVirtualServiceSet, +) bool { + if s == nil { + return federatedVirtualServiceSet == nil + } + return s.Generic().Equal(federatedVirtualServiceSet.Generic()) +} + +func (s *federatedVirtualServiceSet) Delete(FederatedVirtualService ezkube.ResourceId) { + if s == nil { + return + } + s.Generic().Delete(FederatedVirtualService) +} + +func (s *federatedVirtualServiceSet) Union(set FederatedVirtualServiceSet) FederatedVirtualServiceSet { + if s == nil { + return set + } + return NewFederatedVirtualServiceSet(append(s.List(), set.List()...)...) +} + +func (s *federatedVirtualServiceSet) Difference(set FederatedVirtualServiceSet) FederatedVirtualServiceSet { + if s == nil { + return set + } + newSet := s.Generic().Difference(set.Generic()) + return &federatedVirtualServiceSet{set: newSet} +} + +func (s *federatedVirtualServiceSet) Intersection(set FederatedVirtualServiceSet) FederatedVirtualServiceSet { + if s == nil { + return nil + } + newSet := s.Generic().Intersection(set.Generic()) + var federatedVirtualServiceList []*fed_gateway_solo_io_v1.FederatedVirtualService + for _, obj := range newSet.List() { + federatedVirtualServiceList = append(federatedVirtualServiceList, obj.(*fed_gateway_solo_io_v1.FederatedVirtualService)) + } + return NewFederatedVirtualServiceSet(federatedVirtualServiceList...) +} + +func (s *federatedVirtualServiceSet) Find(id ezkube.ResourceId) (*fed_gateway_solo_io_v1.FederatedVirtualService, error) { + if s == nil { + return nil, eris.Errorf("empty set, cannot find FederatedVirtualService %v", sksets.Key(id)) + } + obj, err := s.Generic().Find(&fed_gateway_solo_io_v1.FederatedVirtualService{}, id) + if err != nil { + return nil, err + } + + return obj.(*fed_gateway_solo_io_v1.FederatedVirtualService), nil +} + +func (s *federatedVirtualServiceSet) Length() int { + if s == nil { + return 0 + } + return s.Generic().Length() +} + +func (s *federatedVirtualServiceSet) Generic() sksets.ResourceSet { + if s == nil { + return nil + } + return s.set +} + +func (s *federatedVirtualServiceSet) Delta(newSet FederatedVirtualServiceSet) sksets.ResourceDelta { + if s == nil { + return sksets.ResourceDelta{ + Inserted: newSet.Generic(), + } + } + return s.Generic().Delta(newSet.Generic()) +} + +func (s *federatedVirtualServiceSet) Clone() FederatedVirtualServiceSet { + if s == nil { + return nil + } + return &federatedVirtualServiceSet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} diff --git a/pkg/api/fed.gateway.solo.io/v1/type_helpers.go b/pkg/api/fed.gateway.solo.io/v1/type_helpers.go new file mode 100644 index 000000000..316c6d8e7 --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/type_helpers.go @@ -0,0 +1,19 @@ +// Code generated by skv2. DO NOT EDIT. + +// Definitions for the Kubernetes types +package v1 + +// FederatedGatewaySlice represents a slice of *FederatedGateway +type FederatedGatewaySlice []*FederatedGateway + +// FederatedMatchableHttpGatewaySlice represents a slice of *FederatedMatchableHttpGateway +type FederatedMatchableHttpGatewaySlice []*FederatedMatchableHttpGateway + +// FederatedMatchableTcpGatewaySlice represents a slice of *FederatedMatchableTcpGateway +type FederatedMatchableTcpGatewaySlice []*FederatedMatchableTcpGateway + +// FederatedRouteTableSlice represents a slice of *FederatedRouteTable +type FederatedRouteTableSlice []*FederatedRouteTable + +// FederatedVirtualServiceSlice represents a slice of *FederatedVirtualService +type FederatedVirtualServiceSlice []*FederatedVirtualService diff --git a/pkg/api/fed.gateway.solo.io/v1/types.go b/pkg/api/fed.gateway.solo.io/v1/types.go new file mode 100644 index 000000000..e21293d84 --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/types.go @@ -0,0 +1,193 @@ +// Code generated by skv2. DO NOT EDIT. + +// Definitions for the Kubernetes types +package v1 + +import ( + ia0552ed88a14a7609c8a695ce249939f "github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:openapi-gen=true +// +kubebuilder:subresource:status + +// GroupVersionKind for FederatedGateway +var FederatedGatewayGVK = schema.GroupVersionKind{ + Group: "fed.gateway.solo.io", + Version: "v1", + Kind: "FederatedGateway", +} + +// FederatedGateway is the Schema for the federatedGateway API +type FederatedGateway struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec ia0552ed88a14a7609c8a695ce249939f.FederatedGatewaySpec `json:"spec,omitempty"` + Status ia0552ed88a14a7609c8a695ce249939f.FederatedGatewayStatus `json:"status,omitempty"` +} + +// GVK returns the GroupVersionKind associated with the resource type. +func (FederatedGateway) GVK() schema.GroupVersionKind { + return FederatedGatewayGVK +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// FederatedGatewayList contains a list of FederatedGateway +type FederatedGatewayList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FederatedGateway `json:"items"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:openapi-gen=true +// +kubebuilder:subresource:status + +// GroupVersionKind for FederatedMatchableHttpGateway +var FederatedMatchableHttpGatewayGVK = schema.GroupVersionKind{ + Group: "fed.gateway.solo.io", + Version: "v1", + Kind: "FederatedMatchableHttpGateway", +} + +// FederatedMatchableHttpGateway is the Schema for the federatedMatchableHttpGateway API +type FederatedMatchableHttpGateway struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec ia0552ed88a14a7609c8a695ce249939f.FederatedMatchableHttpGatewaySpec `json:"spec,omitempty"` + Status ia0552ed88a14a7609c8a695ce249939f.FederatedMatchableHttpGatewayStatus `json:"status,omitempty"` +} + +// GVK returns the GroupVersionKind associated with the resource type. +func (FederatedMatchableHttpGateway) GVK() schema.GroupVersionKind { + return FederatedMatchableHttpGatewayGVK +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// FederatedMatchableHttpGatewayList contains a list of FederatedMatchableHttpGateway +type FederatedMatchableHttpGatewayList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FederatedMatchableHttpGateway `json:"items"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:openapi-gen=true +// +kubebuilder:subresource:status + +// GroupVersionKind for FederatedMatchableTcpGateway +var FederatedMatchableTcpGatewayGVK = schema.GroupVersionKind{ + Group: "fed.gateway.solo.io", + Version: "v1", + Kind: "FederatedMatchableTcpGateway", +} + +// FederatedMatchableTcpGateway is the Schema for the federatedMatchableTcpGateway API +type FederatedMatchableTcpGateway struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec ia0552ed88a14a7609c8a695ce249939f.FederatedMatchableTcpGatewaySpec `json:"spec,omitempty"` + Status ia0552ed88a14a7609c8a695ce249939f.FederatedMatchableTcpGatewayStatus `json:"status,omitempty"` +} + +// GVK returns the GroupVersionKind associated with the resource type. +func (FederatedMatchableTcpGateway) GVK() schema.GroupVersionKind { + return FederatedMatchableTcpGatewayGVK +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// FederatedMatchableTcpGatewayList contains a list of FederatedMatchableTcpGateway +type FederatedMatchableTcpGatewayList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FederatedMatchableTcpGateway `json:"items"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:openapi-gen=true +// +kubebuilder:subresource:status + +// GroupVersionKind for FederatedRouteTable +var FederatedRouteTableGVK = schema.GroupVersionKind{ + Group: "fed.gateway.solo.io", + Version: "v1", + Kind: "FederatedRouteTable", +} + +// FederatedRouteTable is the Schema for the federatedRouteTable API +type FederatedRouteTable struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec ia0552ed88a14a7609c8a695ce249939f.FederatedRouteTableSpec `json:"spec,omitempty"` + Status ia0552ed88a14a7609c8a695ce249939f.FederatedRouteTableStatus `json:"status,omitempty"` +} + +// GVK returns the GroupVersionKind associated with the resource type. +func (FederatedRouteTable) GVK() schema.GroupVersionKind { + return FederatedRouteTableGVK +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// FederatedRouteTableList contains a list of FederatedRouteTable +type FederatedRouteTableList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FederatedRouteTable `json:"items"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:openapi-gen=true +// +kubebuilder:subresource:status + +// GroupVersionKind for FederatedVirtualService +var FederatedVirtualServiceGVK = schema.GroupVersionKind{ + Group: "fed.gateway.solo.io", + Version: "v1", + Kind: "FederatedVirtualService", +} + +// FederatedVirtualService is the Schema for the federatedVirtualService API +type FederatedVirtualService struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec ia0552ed88a14a7609c8a695ce249939f.FederatedVirtualServiceSpec `json:"spec,omitempty"` + Status ia0552ed88a14a7609c8a695ce249939f.FederatedVirtualServiceStatus `json:"status,omitempty"` +} + +// GVK returns the GroupVersionKind associated with the resource type. +func (FederatedVirtualService) GVK() schema.GroupVersionKind { + return FederatedVirtualServiceGVK +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// FederatedVirtualServiceList contains a list of FederatedVirtualService +type FederatedVirtualServiceList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FederatedVirtualService `json:"items"` +} + +func init() { + SchemeBuilder.Register(&FederatedGateway{}, &FederatedGatewayList{}) + SchemeBuilder.Register(&FederatedMatchableHttpGateway{}, &FederatedMatchableHttpGatewayList{}) + SchemeBuilder.Register(&FederatedMatchableTcpGateway{}, &FederatedMatchableTcpGatewayList{}) + SchemeBuilder.Register(&FederatedRouteTable{}, &FederatedRouteTableList{}) + SchemeBuilder.Register(&FederatedVirtualService{}, &FederatedVirtualServiceList{}) +} diff --git a/pkg/api/fed.gateway.solo.io/v1/types/gateway.pb.equal.go b/pkg/api/fed.gateway.solo.io/v1/types/gateway.pb.equal.go index 9ca5805be..9a8ee2b37 100644 --- a/pkg/api/fed.gateway.solo.io/v1/types/gateway.pb.equal.go +++ b/pkg/api/fed.gateway.solo.io/v1/types/gateway.pb.equal.go @@ -100,6 +100,23 @@ func (m *FederatedGatewayStatus) Equal(that interface{}) bool { } } + if len(m.GetNamespacedPlacementStatuses()) != len(target.GetNamespacedPlacementStatuses()) { + return false + } + for k, v := range m.GetNamespacedPlacementStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetNamespacedPlacementStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetNamespacedPlacementStatuses()[k]) { + return false + } + } + + } + return true } diff --git a/pkg/api/fed.gateway.solo.io/v1/types/gateway.pb.go b/pkg/api/fed.gateway.solo.io/v1/types/gateway.pb.go index 22e2d9f40..1e9b46de3 100644 --- a/pkg/api/fed.gateway.solo.io/v1/types/gateway.pb.go +++ b/pkg/api/fed.gateway.solo.io/v1/types/gateway.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo-fed/fed.gateway/v1/gateway.proto @@ -9,15 +9,15 @@ package types import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - _ "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" v1 "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/core/v1" v11 "github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1" - v1alpha1 "github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1" + types "github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -27,26 +27,22 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - +// The Federated[Resource] CRDs are a gloo-fed wrapper around Gloo Edge CRDs, with a Placement field indicating which +// clusters and namespaces to federate the object to. +// For more, see: https://docs.solo.io/gloo-edge/latest/guides/gloo_federation/federated_configuration/ type FederatedGatewaySpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Template *FederatedGatewaySpec_Template `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` + Placement *types.Placement `protobuf:"bytes,2,opt,name=placement,proto3" json:"placement,omitempty"` unknownFields protoimpl.UnknownFields - - Template *FederatedGatewaySpec_Template `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` - Placement *v1alpha1.Placement `protobuf:"bytes,2,opt,name=placement,proto3" json:"placement,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FederatedGatewaySpec) Reset() { *x = FederatedGatewaySpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedGatewaySpec) String() string { @@ -57,7 +53,7 @@ func (*FederatedGatewaySpec) ProtoMessage() {} func (x *FederatedGatewaySpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -79,7 +75,7 @@ func (x *FederatedGatewaySpec) GetTemplate() *FederatedGatewaySpec_Template { return nil } -func (x *FederatedGatewaySpec) GetPlacement() *v1alpha1.Placement { +func (x *FederatedGatewaySpec) GetPlacement() *types.Placement { if x != nil { return x.Placement } @@ -87,20 +83,18 @@ func (x *FederatedGatewaySpec) GetPlacement() *v1alpha1.Placement { } type FederatedGatewayStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PlacementStatus *v1.PlacementStatus `protobuf:"bytes,1,opt,name=placement_status,json=placementStatus,proto3" json:"placement_status,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PlacementStatus *v1.PlacementStatus `protobuf:"bytes,1,opt,name=placement_status,json=placementStatus,proto3" json:"placement_status,omitempty"` + NamespacedPlacementStatuses map[string]*v1.PlacementStatus `protobuf:"bytes,2,rep,name=namespaced_placement_statuses,json=namespacedPlacementStatuses,proto3" json:"namespaced_placement_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FederatedGatewayStatus) Reset() { *x = FederatedGatewayStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedGatewayStatus) String() string { @@ -111,7 +105,7 @@ func (*FederatedGatewayStatus) ProtoMessage() {} func (x *FederatedGatewayStatus) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -133,22 +127,26 @@ func (x *FederatedGatewayStatus) GetPlacementStatus() *v1.PlacementStatus { return nil } +func (x *FederatedGatewayStatus) GetNamespacedPlacementStatuses() map[string]*v1.PlacementStatus { + if x != nil { + return x.NamespacedPlacementStatuses + } + return nil +} + type FederatedGatewaySpec_Template struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Spec *v11.GatewaySpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` + Metadata *v1.TemplateMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` unknownFields protoimpl.UnknownFields - - Spec *v11.GatewaySpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` - Metadata *v1.TemplateMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FederatedGatewaySpec_Template) Reset() { *x = FederatedGatewaySpec_Template{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedGatewaySpec_Template) String() string { @@ -159,7 +157,7 @@ func (*FederatedGatewaySpec_Template) ProtoMessage() {} func (x *FederatedGatewaySpec_Template) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -190,7 +188,7 @@ func (x *FederatedGatewaySpec_Template) GetMetadata() *v1.TemplateMetadata { var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_rawDesc = string([]byte{ 0x0a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, @@ -198,87 +196,107 @@ var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_ 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6f, 0x1a, 0x52, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6b, 0x76, 0x32, 0x2d, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x69, 0x73, 0x65, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x75, 0x6c, - 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2f, 0x63, - 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa3, 0x02, 0x0a, 0x14, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, - 0x4e, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x32, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, - 0x3d, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x7c, - 0x0a, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x70, - 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x3e, 0x0a, 0x08, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x66, 0x0a, 0x16, - 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4c, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x42, 0x4b, 0x5a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x65, 0x64, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, + 0x2f, 0x66, 0x65, 0x64, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6c, 0x61, + 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, + 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa3, 0x02, 0x0a, + 0x14, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4e, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, + 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x70, + 0x65, 0x63, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x7c, 0x0a, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x12, 0x30, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, - 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, + 0x65, 0x63, 0x12, 0x3e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x22, 0xec, 0x02, 0x0a, 0x16, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4c, 0x0a, + 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, + 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x63, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x1d, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x63, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x1b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x50, 0x6c, 0x61, + 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, 0x71, + 0x0a, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x63, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x42, 0x4b, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x5a, 0x41, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_goTypes = []any{ (*FederatedGatewaySpec)(nil), // 0: fed.gateway.solo.io.FederatedGatewaySpec (*FederatedGatewayStatus)(nil), // 1: fed.gateway.solo.io.FederatedGatewayStatus (*FederatedGatewaySpec_Template)(nil), // 2: fed.gateway.solo.io.FederatedGatewaySpec.Template - (*v1alpha1.Placement)(nil), // 3: multicluster.solo.io.Placement - (*v1.PlacementStatus)(nil), // 4: core.fed.solo.io.PlacementStatus - (*v11.GatewaySpec)(nil), // 5: gateway.solo.io.GatewaySpec - (*v1.TemplateMetadata)(nil), // 6: core.fed.solo.io.TemplateMetadata + nil, // 3: fed.gateway.solo.io.FederatedGatewayStatus.NamespacedPlacementStatusesEntry + (*types.Placement)(nil), // 4: multicluster.solo.io.Placement + (*v1.PlacementStatus)(nil), // 5: core.fed.solo.io.PlacementStatus + (*v11.GatewaySpec)(nil), // 6: gateway.solo.io.GatewaySpec + (*v1.TemplateMetadata)(nil), // 7: core.fed.solo.io.TemplateMetadata } var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_depIdxs = []int32{ 2, // 0: fed.gateway.solo.io.FederatedGatewaySpec.template:type_name -> fed.gateway.solo.io.FederatedGatewaySpec.Template - 3, // 1: fed.gateway.solo.io.FederatedGatewaySpec.placement:type_name -> multicluster.solo.io.Placement - 4, // 2: fed.gateway.solo.io.FederatedGatewayStatus.placement_status:type_name -> core.fed.solo.io.PlacementStatus - 5, // 3: fed.gateway.solo.io.FederatedGatewaySpec.Template.spec:type_name -> gateway.solo.io.GatewaySpec - 6, // 4: fed.gateway.solo.io.FederatedGatewaySpec.Template.metadata:type_name -> core.fed.solo.io.TemplateMetadata - 5, // [5:5] is the sub-list for method output_type - 5, // [5:5] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 4, // 1: fed.gateway.solo.io.FederatedGatewaySpec.placement:type_name -> multicluster.solo.io.Placement + 5, // 2: fed.gateway.solo.io.FederatedGatewayStatus.placement_status:type_name -> core.fed.solo.io.PlacementStatus + 3, // 3: fed.gateway.solo.io.FederatedGatewayStatus.namespaced_placement_statuses:type_name -> fed.gateway.solo.io.FederatedGatewayStatus.NamespacedPlacementStatusesEntry + 6, // 4: fed.gateway.solo.io.FederatedGatewaySpec.Template.spec:type_name -> gateway.solo.io.GatewaySpec + 7, // 5: fed.gateway.solo.io.FederatedGatewaySpec.Template.metadata:type_name -> core.fed.solo.io.TemplateMetadata + 5, // 6: fed.gateway.solo.io.FederatedGatewayStatus.NamespacedPlacementStatusesEntry.value:type_name -> core.fed.solo.io.PlacementStatus + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_init() } @@ -286,51 +304,13 @@ func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedGatewaySpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedGatewayStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedGatewaySpec_Template); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_rawDesc)), NumEnums: 0, - NumMessages: 3, + NumMessages: 4, NumExtensions: 0, NumServices: 0, }, @@ -339,7 +319,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_gateway_proto_depIdxs = nil } diff --git a/pkg/api/fed.gateway.solo.io/v1/types/gateway.pb.hash.go b/pkg/api/fed.gateway.solo.io/v1/types/gateway.pb.hash.go index 70876de32..14fa1d544 100644 --- a/pkg/api/fed.gateway.solo.io/v1/types/gateway.pb.hash.go +++ b/pkg/api/fed.gateway.solo.io/v1/types/gateway.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FederatedGatewaySpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,28 +43,40 @@ func (m *FederatedGatewaySpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetPlacement()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -70,6 +86,10 @@ func (m *FederatedGatewaySpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FederatedGatewayStatus) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -83,23 +103,72 @@ func (m *FederatedGatewayStatus) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetPlacementStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespacedPlacementStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { return 0, err } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err } + } return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FederatedGatewaySpec_Template) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -113,28 +182,40 @@ func (m *FederatedGatewaySpec_Template) Hash(hasher hash.Hash64) (uint64, error) } if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/fed.gateway.solo.io/v1/types/gateway.pb.uniquehash.go b/pkg/api/fed.gateway.solo.io/v1/types/gateway.pb.uniquehash.go new file mode 100644 index 000000000..1d2a3355d --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/types/gateway.pb.uniquehash.go @@ -0,0 +1,227 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.gateway/v1/gateway.proto + +package types + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedGatewaySpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types.FederatedGatewaySpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPlacement()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedGatewayStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types.FederatedGatewayStatus")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPlacementStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespacedPlacementStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedGatewaySpec_Template) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types.FederatedGatewaySpec_Template")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/fed.gateway.solo.io/v1/types/json.gen.go b/pkg/api/fed.gateway.solo.io/v1/types/json.gen.go new file mode 100644 index 000000000..0e95d5ae9 --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/types/json.gen.go @@ -0,0 +1,138 @@ +// Code generated by skv2. DO NOT EDIT. + +// Generated json marshal and unmarshal functions + +package types + +import ( + bytes "bytes" + fmt "fmt" + math "math" + + jsonpb "github.com/golang/protobuf/jsonpb" + proto "github.com/golang/protobuf/proto" + skv2jsonpb "github.com/solo-io/skv2/pkg/kube_jsonpb" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +var ( + marshaller = &skv2jsonpb.Marshaler{} + unmarshaller = &jsonpb.Unmarshaler{ + AllowUnknownFields: true, + } + strictUnmarshaller = &jsonpb.Unmarshaler{} +) + +// MarshalJSON is a custom marshaler for FederatedGatewaySpec +func (this *FederatedGatewaySpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for FederatedGatewaySpec +func (this *FederatedGatewaySpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for FederatedGatewayStatus +func (this *FederatedGatewayStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for FederatedGatewayStatus +func (this *FederatedGatewayStatus) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for FederatedMatchableHttpGatewaySpec +func (this *FederatedMatchableHttpGatewaySpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for FederatedMatchableHttpGatewaySpec +func (this *FederatedMatchableHttpGatewaySpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for FederatedMatchableHttpGatewayStatus +func (this *FederatedMatchableHttpGatewayStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for FederatedMatchableHttpGatewayStatus +func (this *FederatedMatchableHttpGatewayStatus) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for FederatedMatchableTcpGatewaySpec +func (this *FederatedMatchableTcpGatewaySpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for FederatedMatchableTcpGatewaySpec +func (this *FederatedMatchableTcpGatewaySpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for FederatedMatchableTcpGatewayStatus +func (this *FederatedMatchableTcpGatewayStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for FederatedMatchableTcpGatewayStatus +func (this *FederatedMatchableTcpGatewayStatus) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for FederatedRouteTableSpec +func (this *FederatedRouteTableSpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for FederatedRouteTableSpec +func (this *FederatedRouteTableSpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for FederatedRouteTableStatus +func (this *FederatedRouteTableStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for FederatedRouteTableStatus +func (this *FederatedRouteTableStatus) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for FederatedVirtualServiceSpec +func (this *FederatedVirtualServiceSpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for FederatedVirtualServiceSpec +func (this *FederatedVirtualServiceSpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for FederatedVirtualServiceStatus +func (this *FederatedVirtualServiceStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for FederatedVirtualServiceStatus +func (this *FederatedVirtualServiceStatus) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} diff --git a/pkg/api/fed.gateway.solo.io/v1/types/matchable_http_gateway.pb.equal.go b/pkg/api/fed.gateway.solo.io/v1/types/matchable_http_gateway.pb.equal.go new file mode 100644 index 000000000..1137266e8 --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/types/matchable_http_gateway.pb.equal.go @@ -0,0 +1,165 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.gateway/v1/matchable_http_gateway.proto + +package types + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *FederatedMatchableHttpGatewaySpec) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*FederatedMatchableHttpGatewaySpec) + if !ok { + that2, ok := that.(FederatedMatchableHttpGatewaySpec) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetTemplate()).(equality.Equalizer); ok { + if !h.Equal(target.GetTemplate()) { + return false + } + } else { + if !proto.Equal(m.GetTemplate(), target.GetTemplate()) { + return false + } + } + + if h, ok := interface{}(m.GetPlacement()).(equality.Equalizer); ok { + if !h.Equal(target.GetPlacement()) { + return false + } + } else { + if !proto.Equal(m.GetPlacement(), target.GetPlacement()) { + return false + } + } + + return true +} + +// Equal function +func (m *FederatedMatchableHttpGatewayStatus) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*FederatedMatchableHttpGatewayStatus) + if !ok { + that2, ok := that.(FederatedMatchableHttpGatewayStatus) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetPlacementStatus()).(equality.Equalizer); ok { + if !h.Equal(target.GetPlacementStatus()) { + return false + } + } else { + if !proto.Equal(m.GetPlacementStatus(), target.GetPlacementStatus()) { + return false + } + } + + if len(m.GetNamespacedPlacementStatuses()) != len(target.GetNamespacedPlacementStatuses()) { + return false + } + for k, v := range m.GetNamespacedPlacementStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetNamespacedPlacementStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetNamespacedPlacementStatuses()[k]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *FederatedMatchableHttpGatewaySpec_Template) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*FederatedMatchableHttpGatewaySpec_Template) + if !ok { + that2, ok := that.(FederatedMatchableHttpGatewaySpec_Template) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetSpec()).(equality.Equalizer); ok { + if !h.Equal(target.GetSpec()) { + return false + } + } else { + if !proto.Equal(m.GetSpec(), target.GetSpec()) { + return false + } + } + + if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { + if !h.Equal(target.GetMetadata()) { + return false + } + } else { + if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { + return false + } + } + + return true +} diff --git a/pkg/api/fed.gateway.solo.io/v1/types/matchable_http_gateway.pb.go b/pkg/api/fed.gateway.solo.io/v1/types/matchable_http_gateway.pb.go new file mode 100644 index 000000000..2e386e879 --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/types/matchable_http_gateway.pb.go @@ -0,0 +1,332 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.gateway/v1/matchable_http_gateway.proto + +package types + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/core/v1" + v11 "github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1" + types "github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// The Federated[Resource] CRDs are a gloo-fed wrapper around Gloo Edge CRDs, with a Placement field indicating which +// clusters and namespaces to federate the object to. +// For more, see: https://docs.solo.io/gloo-edge/latest/guides/gloo_federation/federated_configuration/ +type FederatedMatchableHttpGatewaySpec struct { + state protoimpl.MessageState `protogen:"open.v1"` + Template *FederatedMatchableHttpGatewaySpec_Template `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` + Placement *types.Placement `protobuf:"bytes,2,opt,name=placement,proto3" json:"placement,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FederatedMatchableHttpGatewaySpec) Reset() { + *x = FederatedMatchableHttpGatewaySpec{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FederatedMatchableHttpGatewaySpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FederatedMatchableHttpGatewaySpec) ProtoMessage() {} + +func (x *FederatedMatchableHttpGatewaySpec) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FederatedMatchableHttpGatewaySpec.ProtoReflect.Descriptor instead. +func (*FederatedMatchableHttpGatewaySpec) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_rawDescGZIP(), []int{0} +} + +func (x *FederatedMatchableHttpGatewaySpec) GetTemplate() *FederatedMatchableHttpGatewaySpec_Template { + if x != nil { + return x.Template + } + return nil +} + +func (x *FederatedMatchableHttpGatewaySpec) GetPlacement() *types.Placement { + if x != nil { + return x.Placement + } + return nil +} + +type FederatedMatchableHttpGatewayStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + PlacementStatus *v1.PlacementStatus `protobuf:"bytes,1,opt,name=placement_status,json=placementStatus,proto3" json:"placement_status,omitempty"` + NamespacedPlacementStatuses map[string]*v1.PlacementStatus `protobuf:"bytes,2,rep,name=namespaced_placement_statuses,json=namespacedPlacementStatuses,proto3" json:"namespaced_placement_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FederatedMatchableHttpGatewayStatus) Reset() { + *x = FederatedMatchableHttpGatewayStatus{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FederatedMatchableHttpGatewayStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FederatedMatchableHttpGatewayStatus) ProtoMessage() {} + +func (x *FederatedMatchableHttpGatewayStatus) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FederatedMatchableHttpGatewayStatus.ProtoReflect.Descriptor instead. +func (*FederatedMatchableHttpGatewayStatus) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_rawDescGZIP(), []int{1} +} + +func (x *FederatedMatchableHttpGatewayStatus) GetPlacementStatus() *v1.PlacementStatus { + if x != nil { + return x.PlacementStatus + } + return nil +} + +func (x *FederatedMatchableHttpGatewayStatus) GetNamespacedPlacementStatuses() map[string]*v1.PlacementStatus { + if x != nil { + return x.NamespacedPlacementStatuses + } + return nil +} + +type FederatedMatchableHttpGatewaySpec_Template struct { + state protoimpl.MessageState `protogen:"open.v1"` + Spec *v11.MatchableHttpGatewaySpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` + Metadata *v1.TemplateMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FederatedMatchableHttpGatewaySpec_Template) Reset() { + *x = FederatedMatchableHttpGatewaySpec_Template{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FederatedMatchableHttpGatewaySpec_Template) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FederatedMatchableHttpGatewaySpec_Template) ProtoMessage() {} + +func (x *FederatedMatchableHttpGatewaySpec_Template) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FederatedMatchableHttpGatewaySpec_Template.ProtoReflect.Descriptor instead. +func (*FederatedMatchableHttpGatewaySpec_Template) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *FederatedMatchableHttpGatewaySpec_Template) GetSpec() *v11.MatchableHttpGatewaySpec { + if x != nil { + return x.Spec + } + return nil +} + +func (x *FederatedMatchableHttpGatewaySpec_Template) GetMetadata() *v1.TemplateMetadata { + if x != nil { + return x.Metadata + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_rawDesc = string([]byte{ + 0x0a, 0x55, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, + 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x52, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x6d, 0x75, 0x6c, 0x74, + 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, + 0x66, 0x65, 0x64, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6c, 0x61, 0x63, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4d, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, + 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcb, 0x02, 0x0a, 0x21, 0x46, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, + 0x65, 0x48, 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x70, 0x65, 0x63, + 0x12, 0x5b, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x74, 0x74, 0x70, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, + 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x89, 0x01, 0x0a, + 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x73, 0x70, 0x65, + 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, + 0x62, 0x6c, 0x65, 0x48, 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x70, + 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x3e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x86, 0x03, 0x0a, 0x23, 0x46, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x48, + 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x4c, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, + 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x9d, + 0x01, 0x0a, 0x1d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x5f, 0x70, 0x6c, + 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x59, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x48, + 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x63, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x1b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x50, 0x6c, 0x61, + 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, 0x71, + 0x0a, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x63, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x42, 0x4b, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x5a, 0x41, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_goTypes = []any{ + (*FederatedMatchableHttpGatewaySpec)(nil), // 0: fed.gateway.solo.io.FederatedMatchableHttpGatewaySpec + (*FederatedMatchableHttpGatewayStatus)(nil), // 1: fed.gateway.solo.io.FederatedMatchableHttpGatewayStatus + (*FederatedMatchableHttpGatewaySpec_Template)(nil), // 2: fed.gateway.solo.io.FederatedMatchableHttpGatewaySpec.Template + nil, // 3: fed.gateway.solo.io.FederatedMatchableHttpGatewayStatus.NamespacedPlacementStatusesEntry + (*types.Placement)(nil), // 4: multicluster.solo.io.Placement + (*v1.PlacementStatus)(nil), // 5: core.fed.solo.io.PlacementStatus + (*v11.MatchableHttpGatewaySpec)(nil), // 6: gateway.solo.io.MatchableHttpGatewaySpec + (*v1.TemplateMetadata)(nil), // 7: core.fed.solo.io.TemplateMetadata +} +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_depIdxs = []int32{ + 2, // 0: fed.gateway.solo.io.FederatedMatchableHttpGatewaySpec.template:type_name -> fed.gateway.solo.io.FederatedMatchableHttpGatewaySpec.Template + 4, // 1: fed.gateway.solo.io.FederatedMatchableHttpGatewaySpec.placement:type_name -> multicluster.solo.io.Placement + 5, // 2: fed.gateway.solo.io.FederatedMatchableHttpGatewayStatus.placement_status:type_name -> core.fed.solo.io.PlacementStatus + 3, // 3: fed.gateway.solo.io.FederatedMatchableHttpGatewayStatus.namespaced_placement_statuses:type_name -> fed.gateway.solo.io.FederatedMatchableHttpGatewayStatus.NamespacedPlacementStatusesEntry + 6, // 4: fed.gateway.solo.io.FederatedMatchableHttpGatewaySpec.Template.spec:type_name -> gateway.solo.io.MatchableHttpGatewaySpec + 7, // 5: fed.gateway.solo.io.FederatedMatchableHttpGatewaySpec.Template.metadata:type_name -> core.fed.solo.io.TemplateMetadata + 5, // 6: fed.gateway.solo.io.FederatedMatchableHttpGatewayStatus.NamespacedPlacementStatusesEntry.value:type_name -> core.fed.solo.io.PlacementStatus + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_rawDesc)), + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_http_gateway_proto_depIdxs = nil +} diff --git a/pkg/api/fed.gateway.solo.io/v1/types/matchable_http_gateway.pb.hash.go b/pkg/api/fed.gateway.solo.io/v1/types/matchable_http_gateway.pb.hash.go new file mode 100644 index 000000000..583d83353 --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/types/matchable_http_gateway.pb.hash.go @@ -0,0 +1,225 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.gateway/v1/matchable_http_gateway.proto + +package types + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *FederatedMatchableHttpGatewaySpec) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types.FederatedMatchableHttpGatewaySpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPlacement()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *FederatedMatchableHttpGatewayStatus) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types.FederatedMatchableHttpGatewayStatus")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPlacementStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespacedPlacementStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *FederatedMatchableHttpGatewaySpec_Template) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types.FederatedMatchableHttpGatewaySpec_Template")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/fed.gateway.solo.io/v1/types/matchable_http_gateway.pb.uniquehash.go b/pkg/api/fed.gateway.solo.io/v1/types/matchable_http_gateway.pb.uniquehash.go new file mode 100644 index 000000000..289d10272 --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/types/matchable_http_gateway.pb.uniquehash.go @@ -0,0 +1,227 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.gateway/v1/matchable_http_gateway.proto + +package types + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedMatchableHttpGatewaySpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types.FederatedMatchableHttpGatewaySpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPlacement()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedMatchableHttpGatewayStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types.FederatedMatchableHttpGatewayStatus")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPlacementStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespacedPlacementStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedMatchableHttpGatewaySpec_Template) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types.FederatedMatchableHttpGatewaySpec_Template")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/fed.gateway.solo.io/v1/types/matchable_tcp_gateway.pb.equal.go b/pkg/api/fed.gateway.solo.io/v1/types/matchable_tcp_gateway.pb.equal.go new file mode 100644 index 000000000..c736f17a3 --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/types/matchable_tcp_gateway.pb.equal.go @@ -0,0 +1,165 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.gateway/v1/matchable_tcp_gateway.proto + +package types + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *FederatedMatchableTcpGatewaySpec) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*FederatedMatchableTcpGatewaySpec) + if !ok { + that2, ok := that.(FederatedMatchableTcpGatewaySpec) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetTemplate()).(equality.Equalizer); ok { + if !h.Equal(target.GetTemplate()) { + return false + } + } else { + if !proto.Equal(m.GetTemplate(), target.GetTemplate()) { + return false + } + } + + if h, ok := interface{}(m.GetPlacement()).(equality.Equalizer); ok { + if !h.Equal(target.GetPlacement()) { + return false + } + } else { + if !proto.Equal(m.GetPlacement(), target.GetPlacement()) { + return false + } + } + + return true +} + +// Equal function +func (m *FederatedMatchableTcpGatewayStatus) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*FederatedMatchableTcpGatewayStatus) + if !ok { + that2, ok := that.(FederatedMatchableTcpGatewayStatus) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetPlacementStatus()).(equality.Equalizer); ok { + if !h.Equal(target.GetPlacementStatus()) { + return false + } + } else { + if !proto.Equal(m.GetPlacementStatus(), target.GetPlacementStatus()) { + return false + } + } + + if len(m.GetNamespacedPlacementStatuses()) != len(target.GetNamespacedPlacementStatuses()) { + return false + } + for k, v := range m.GetNamespacedPlacementStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetNamespacedPlacementStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetNamespacedPlacementStatuses()[k]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *FederatedMatchableTcpGatewaySpec_Template) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*FederatedMatchableTcpGatewaySpec_Template) + if !ok { + that2, ok := that.(FederatedMatchableTcpGatewaySpec_Template) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetSpec()).(equality.Equalizer); ok { + if !h.Equal(target.GetSpec()) { + return false + } + } else { + if !proto.Equal(m.GetSpec(), target.GetSpec()) { + return false + } + } + + if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { + if !h.Equal(target.GetMetadata()) { + return false + } + } else { + if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { + return false + } + } + + return true +} diff --git a/pkg/api/fed.gateway.solo.io/v1/types/matchable_tcp_gateway.pb.go b/pkg/api/fed.gateway.solo.io/v1/types/matchable_tcp_gateway.pb.go new file mode 100644 index 000000000..74f59ed6a --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/types/matchable_tcp_gateway.pb.go @@ -0,0 +1,331 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.gateway/v1/matchable_tcp_gateway.proto + +package types + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/core/v1" + v11 "github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1" + types "github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// The Federated[Resource] CRDs are a gloo-fed wrapper around Gloo Edge CRDs, with a Placement field indicating which +// clusters and namespaces to federate the object to. +// For more, see: https://docs.solo.io/gloo-edge/latest/guides/gloo_federation/federated_configuration/ +type FederatedMatchableTcpGatewaySpec struct { + state protoimpl.MessageState `protogen:"open.v1"` + Template *FederatedMatchableTcpGatewaySpec_Template `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` + Placement *types.Placement `protobuf:"bytes,2,opt,name=placement,proto3" json:"placement,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FederatedMatchableTcpGatewaySpec) Reset() { + *x = FederatedMatchableTcpGatewaySpec{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FederatedMatchableTcpGatewaySpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FederatedMatchableTcpGatewaySpec) ProtoMessage() {} + +func (x *FederatedMatchableTcpGatewaySpec) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FederatedMatchableTcpGatewaySpec.ProtoReflect.Descriptor instead. +func (*FederatedMatchableTcpGatewaySpec) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_rawDescGZIP(), []int{0} +} + +func (x *FederatedMatchableTcpGatewaySpec) GetTemplate() *FederatedMatchableTcpGatewaySpec_Template { + if x != nil { + return x.Template + } + return nil +} + +func (x *FederatedMatchableTcpGatewaySpec) GetPlacement() *types.Placement { + if x != nil { + return x.Placement + } + return nil +} + +type FederatedMatchableTcpGatewayStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + PlacementStatus *v1.PlacementStatus `protobuf:"bytes,1,opt,name=placement_status,json=placementStatus,proto3" json:"placement_status,omitempty"` + NamespacedPlacementStatuses map[string]*v1.PlacementStatus `protobuf:"bytes,2,rep,name=namespaced_placement_statuses,json=namespacedPlacementStatuses,proto3" json:"namespaced_placement_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FederatedMatchableTcpGatewayStatus) Reset() { + *x = FederatedMatchableTcpGatewayStatus{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FederatedMatchableTcpGatewayStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FederatedMatchableTcpGatewayStatus) ProtoMessage() {} + +func (x *FederatedMatchableTcpGatewayStatus) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FederatedMatchableTcpGatewayStatus.ProtoReflect.Descriptor instead. +func (*FederatedMatchableTcpGatewayStatus) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_rawDescGZIP(), []int{1} +} + +func (x *FederatedMatchableTcpGatewayStatus) GetPlacementStatus() *v1.PlacementStatus { + if x != nil { + return x.PlacementStatus + } + return nil +} + +func (x *FederatedMatchableTcpGatewayStatus) GetNamespacedPlacementStatuses() map[string]*v1.PlacementStatus { + if x != nil { + return x.NamespacedPlacementStatuses + } + return nil +} + +type FederatedMatchableTcpGatewaySpec_Template struct { + state protoimpl.MessageState `protogen:"open.v1"` + Spec *v11.MatchableTcpGatewaySpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` + Metadata *v1.TemplateMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FederatedMatchableTcpGatewaySpec_Template) Reset() { + *x = FederatedMatchableTcpGatewaySpec_Template{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FederatedMatchableTcpGatewaySpec_Template) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FederatedMatchableTcpGatewaySpec_Template) ProtoMessage() {} + +func (x *FederatedMatchableTcpGatewaySpec_Template) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FederatedMatchableTcpGatewaySpec_Template.ProtoReflect.Descriptor instead. +func (*FederatedMatchableTcpGatewaySpec_Template) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *FederatedMatchableTcpGatewaySpec_Template) GetSpec() *v11.MatchableTcpGatewaySpec { + if x != nil { + return x.Spec + } + return nil +} + +func (x *FederatedMatchableTcpGatewaySpec_Template) GetMetadata() *v1.TemplateMetadata { + if x != nil { + return x.Metadata + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_rawDesc = string([]byte{ + 0x0a, 0x54, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x63, 0x70, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x52, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, + 0x65, 0x64, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6c, 0x61, 0x63, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4c, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x63, 0x70, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, + 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc8, 0x02, 0x0a, 0x20, 0x46, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x54, + 0x63, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5a, 0x0a, + 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3e, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x63, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x70, 0x6c, 0x61, + 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, + 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x88, 0x01, 0x0a, 0x08, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x54, + 0x63, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, + 0x70, 0x65, 0x63, 0x12, 0x3e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x22, 0x84, 0x03, 0x0a, 0x22, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x63, 0x70, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4c, 0x0a, 0x10, 0x70, 0x6c, + 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x9c, 0x01, 0x0a, 0x1d, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x58, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x63, 0x70, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x1b, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, 0x71, 0x0a, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x4b, 0xb8, 0xf5, 0x04, 0x01, + 0xc0, 0xf5, 0x04, 0x01, 0x5a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, + 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_goTypes = []any{ + (*FederatedMatchableTcpGatewaySpec)(nil), // 0: fed.gateway.solo.io.FederatedMatchableTcpGatewaySpec + (*FederatedMatchableTcpGatewayStatus)(nil), // 1: fed.gateway.solo.io.FederatedMatchableTcpGatewayStatus + (*FederatedMatchableTcpGatewaySpec_Template)(nil), // 2: fed.gateway.solo.io.FederatedMatchableTcpGatewaySpec.Template + nil, // 3: fed.gateway.solo.io.FederatedMatchableTcpGatewayStatus.NamespacedPlacementStatusesEntry + (*types.Placement)(nil), // 4: multicluster.solo.io.Placement + (*v1.PlacementStatus)(nil), // 5: core.fed.solo.io.PlacementStatus + (*v11.MatchableTcpGatewaySpec)(nil), // 6: gateway.solo.io.MatchableTcpGatewaySpec + (*v1.TemplateMetadata)(nil), // 7: core.fed.solo.io.TemplateMetadata +} +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_depIdxs = []int32{ + 2, // 0: fed.gateway.solo.io.FederatedMatchableTcpGatewaySpec.template:type_name -> fed.gateway.solo.io.FederatedMatchableTcpGatewaySpec.Template + 4, // 1: fed.gateway.solo.io.FederatedMatchableTcpGatewaySpec.placement:type_name -> multicluster.solo.io.Placement + 5, // 2: fed.gateway.solo.io.FederatedMatchableTcpGatewayStatus.placement_status:type_name -> core.fed.solo.io.PlacementStatus + 3, // 3: fed.gateway.solo.io.FederatedMatchableTcpGatewayStatus.namespaced_placement_statuses:type_name -> fed.gateway.solo.io.FederatedMatchableTcpGatewayStatus.NamespacedPlacementStatusesEntry + 6, // 4: fed.gateway.solo.io.FederatedMatchableTcpGatewaySpec.Template.spec:type_name -> gateway.solo.io.MatchableTcpGatewaySpec + 7, // 5: fed.gateway.solo.io.FederatedMatchableTcpGatewaySpec.Template.metadata:type_name -> core.fed.solo.io.TemplateMetadata + 5, // 6: fed.gateway.solo.io.FederatedMatchableTcpGatewayStatus.NamespacedPlacementStatusesEntry.value:type_name -> core.fed.solo.io.PlacementStatus + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_rawDesc)), + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_matchable_tcp_gateway_proto_depIdxs = nil +} diff --git a/pkg/api/fed.gateway.solo.io/v1/types/matchable_tcp_gateway.pb.hash.go b/pkg/api/fed.gateway.solo.io/v1/types/matchable_tcp_gateway.pb.hash.go new file mode 100644 index 000000000..4915bedbe --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/types/matchable_tcp_gateway.pb.hash.go @@ -0,0 +1,225 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.gateway/v1/matchable_tcp_gateway.proto + +package types + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *FederatedMatchableTcpGatewaySpec) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types.FederatedMatchableTcpGatewaySpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPlacement()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *FederatedMatchableTcpGatewayStatus) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types.FederatedMatchableTcpGatewayStatus")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPlacementStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespacedPlacementStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *FederatedMatchableTcpGatewaySpec_Template) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types.FederatedMatchableTcpGatewaySpec_Template")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/fed.gateway.solo.io/v1/types/matchable_tcp_gateway.pb.uniquehash.go b/pkg/api/fed.gateway.solo.io/v1/types/matchable_tcp_gateway.pb.uniquehash.go new file mode 100644 index 000000000..df14a2bd8 --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/types/matchable_tcp_gateway.pb.uniquehash.go @@ -0,0 +1,227 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.gateway/v1/matchable_tcp_gateway.proto + +package types + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedMatchableTcpGatewaySpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types.FederatedMatchableTcpGatewaySpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPlacement()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedMatchableTcpGatewayStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types.FederatedMatchableTcpGatewayStatus")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPlacementStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespacedPlacementStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedMatchableTcpGatewaySpec_Template) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types.FederatedMatchableTcpGatewaySpec_Template")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/fed.gateway.solo.io/v1/types/proto_deepcopy.go b/pkg/api/fed.gateway.solo.io/v1/types/proto_deepcopy.go new file mode 100644 index 000000000..3fc440bab --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/types/proto_deepcopy.go @@ -0,0 +1,120 @@ +// Code generated by skv2. DO NOT EDIT. + +// This file contains generated Deepcopy methods for proto-based Spec and Status fields + +package types + +import ( + proto "github.com/golang/protobuf/proto" + "github.com/solo-io/protoc-gen-ext/pkg/clone" +) + +// DeepCopyInto for the FederatedGateway.Spec +func (in *FederatedGatewaySpec) DeepCopyInto(out *FederatedGatewaySpec) { + var p *FederatedGatewaySpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*FederatedGatewaySpec) + } else { + p = proto.Clone(in).(*FederatedGatewaySpec) + } + *out = *p +} + +// DeepCopyInto for the FederatedGateway.Status +func (in *FederatedGatewayStatus) DeepCopyInto(out *FederatedGatewayStatus) { + var p *FederatedGatewayStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*FederatedGatewayStatus) + } else { + p = proto.Clone(in).(*FederatedGatewayStatus) + } + *out = *p +} + +// DeepCopyInto for the FederatedMatchableHttpGateway.Spec +func (in *FederatedMatchableHttpGatewaySpec) DeepCopyInto(out *FederatedMatchableHttpGatewaySpec) { + var p *FederatedMatchableHttpGatewaySpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*FederatedMatchableHttpGatewaySpec) + } else { + p = proto.Clone(in).(*FederatedMatchableHttpGatewaySpec) + } + *out = *p +} + +// DeepCopyInto for the FederatedMatchableHttpGateway.Status +func (in *FederatedMatchableHttpGatewayStatus) DeepCopyInto(out *FederatedMatchableHttpGatewayStatus) { + var p *FederatedMatchableHttpGatewayStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*FederatedMatchableHttpGatewayStatus) + } else { + p = proto.Clone(in).(*FederatedMatchableHttpGatewayStatus) + } + *out = *p +} + +// DeepCopyInto for the FederatedMatchableTcpGateway.Spec +func (in *FederatedMatchableTcpGatewaySpec) DeepCopyInto(out *FederatedMatchableTcpGatewaySpec) { + var p *FederatedMatchableTcpGatewaySpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*FederatedMatchableTcpGatewaySpec) + } else { + p = proto.Clone(in).(*FederatedMatchableTcpGatewaySpec) + } + *out = *p +} + +// DeepCopyInto for the FederatedMatchableTcpGateway.Status +func (in *FederatedMatchableTcpGatewayStatus) DeepCopyInto(out *FederatedMatchableTcpGatewayStatus) { + var p *FederatedMatchableTcpGatewayStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*FederatedMatchableTcpGatewayStatus) + } else { + p = proto.Clone(in).(*FederatedMatchableTcpGatewayStatus) + } + *out = *p +} + +// DeepCopyInto for the FederatedRouteTable.Spec +func (in *FederatedRouteTableSpec) DeepCopyInto(out *FederatedRouteTableSpec) { + var p *FederatedRouteTableSpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*FederatedRouteTableSpec) + } else { + p = proto.Clone(in).(*FederatedRouteTableSpec) + } + *out = *p +} + +// DeepCopyInto for the FederatedRouteTable.Status +func (in *FederatedRouteTableStatus) DeepCopyInto(out *FederatedRouteTableStatus) { + var p *FederatedRouteTableStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*FederatedRouteTableStatus) + } else { + p = proto.Clone(in).(*FederatedRouteTableStatus) + } + *out = *p +} + +// DeepCopyInto for the FederatedVirtualService.Spec +func (in *FederatedVirtualServiceSpec) DeepCopyInto(out *FederatedVirtualServiceSpec) { + var p *FederatedVirtualServiceSpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*FederatedVirtualServiceSpec) + } else { + p = proto.Clone(in).(*FederatedVirtualServiceSpec) + } + *out = *p +} + +// DeepCopyInto for the FederatedVirtualService.Status +func (in *FederatedVirtualServiceStatus) DeepCopyInto(out *FederatedVirtualServiceStatus) { + var p *FederatedVirtualServiceStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*FederatedVirtualServiceStatus) + } else { + p = proto.Clone(in).(*FederatedVirtualServiceStatus) + } + *out = *p +} diff --git a/pkg/api/fed.gateway.solo.io/v1/types/route_table.pb.equal.go b/pkg/api/fed.gateway.solo.io/v1/types/route_table.pb.equal.go index 463699bbb..1996c4d16 100644 --- a/pkg/api/fed.gateway.solo.io/v1/types/route_table.pb.equal.go +++ b/pkg/api/fed.gateway.solo.io/v1/types/route_table.pb.equal.go @@ -100,6 +100,23 @@ func (m *FederatedRouteTableStatus) Equal(that interface{}) bool { } } + if len(m.GetNamespacedPlacementStatuses()) != len(target.GetNamespacedPlacementStatuses()) { + return false + } + for k, v := range m.GetNamespacedPlacementStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetNamespacedPlacementStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetNamespacedPlacementStatuses()[k]) { + return false + } + } + + } + return true } diff --git a/pkg/api/fed.gateway.solo.io/v1/types/route_table.pb.go b/pkg/api/fed.gateway.solo.io/v1/types/route_table.pb.go index 7ad0130f2..469dcc7fe 100644 --- a/pkg/api/fed.gateway.solo.io/v1/types/route_table.pb.go +++ b/pkg/api/fed.gateway.solo.io/v1/types/route_table.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo-fed/fed.gateway/v1/route_table.proto @@ -9,15 +9,15 @@ package types import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - _ "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" v1 "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/core/v1" v11 "github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1" - v1alpha1 "github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1" + types "github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -27,26 +27,22 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - +// The Federated[Resource] CRDs are a gloo-fed wrapper around Gloo Edge CRDs, with a Placement field indicating which +// clusters and namespaces to federate the object to. +// For more, see: https://docs.solo.io/gloo-edge/latest/guides/gloo_federation/federated_configuration/ type FederatedRouteTableSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Template *FederatedRouteTableSpec_Template `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` + Placement *types.Placement `protobuf:"bytes,2,opt,name=placement,proto3" json:"placement,omitempty"` unknownFields protoimpl.UnknownFields - - Template *FederatedRouteTableSpec_Template `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` - Placement *v1alpha1.Placement `protobuf:"bytes,2,opt,name=placement,proto3" json:"placement,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FederatedRouteTableSpec) Reset() { *x = FederatedRouteTableSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedRouteTableSpec) String() string { @@ -57,7 +53,7 @@ func (*FederatedRouteTableSpec) ProtoMessage() {} func (x *FederatedRouteTableSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -79,7 +75,7 @@ func (x *FederatedRouteTableSpec) GetTemplate() *FederatedRouteTableSpec_Templat return nil } -func (x *FederatedRouteTableSpec) GetPlacement() *v1alpha1.Placement { +func (x *FederatedRouteTableSpec) GetPlacement() *types.Placement { if x != nil { return x.Placement } @@ -87,20 +83,18 @@ func (x *FederatedRouteTableSpec) GetPlacement() *v1alpha1.Placement { } type FederatedRouteTableStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PlacementStatus *v1.PlacementStatus `protobuf:"bytes,1,opt,name=placement_status,json=placementStatus,proto3" json:"placement_status,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PlacementStatus *v1.PlacementStatus `protobuf:"bytes,1,opt,name=placement_status,json=placementStatus,proto3" json:"placement_status,omitempty"` + NamespacedPlacementStatuses map[string]*v1.PlacementStatus `protobuf:"bytes,2,rep,name=namespaced_placement_statuses,json=namespacedPlacementStatuses,proto3" json:"namespaced_placement_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FederatedRouteTableStatus) Reset() { *x = FederatedRouteTableStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedRouteTableStatus) String() string { @@ -111,7 +105,7 @@ func (*FederatedRouteTableStatus) ProtoMessage() {} func (x *FederatedRouteTableStatus) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -133,22 +127,26 @@ func (x *FederatedRouteTableStatus) GetPlacementStatus() *v1.PlacementStatus { return nil } +func (x *FederatedRouteTableStatus) GetNamespacedPlacementStatuses() map[string]*v1.PlacementStatus { + if x != nil { + return x.NamespacedPlacementStatuses + } + return nil +} + type FederatedRouteTableSpec_Template struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Spec *v11.RouteTableSpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` + Metadata *v1.TemplateMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` unknownFields protoimpl.UnknownFields - - Spec *v11.RouteTableSpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` - Metadata *v1.TemplateMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FederatedRouteTableSpec_Template) Reset() { *x = FederatedRouteTableSpec_Template{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedRouteTableSpec_Template) String() string { @@ -159,7 +157,7 @@ func (*FederatedRouteTableSpec_Template) ProtoMessage() {} func (x *FederatedRouteTableSpec_Template) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -190,7 +188,7 @@ func (x *FederatedRouteTableSpec_Template) GetMetadata() *v1.TemplateMetadata { var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_rawDesc = string([]byte{ 0x0a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, @@ -198,88 +196,108 @@ var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_pr 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x52, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, - 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6b, 0x76, 0x32, 0x2d, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, - 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, - 0x65, 0x64, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6c, 0x61, 0x63, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x42, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, - 0x6f, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xac, - 0x02, 0x0a, 0x17, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, - 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x51, 0x0a, 0x08, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x66, - 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, - 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, - 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x7f, 0x0a, 0x08, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x3e, 0x0a, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x69, 0x0a, - 0x19, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4c, 0x0a, 0x10, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x4b, 0x5a, 0x41, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0xb8, 0xf5, 0x04, - 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, + 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, + 0x2f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x42, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, + 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xac, 0x02, 0x0a, 0x17, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, + 0x12, 0x51, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, + 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, + 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x1a, 0x7f, 0x0a, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x33, + 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, + 0x70, 0x65, 0x63, 0x12, 0x3e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x22, 0xf2, 0x02, 0x0a, 0x19, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x4c, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, + 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, + 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x93, 0x01, 0x0a, 0x1d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x5f, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4f, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, + 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x64, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x1b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, 0x71, 0x0a, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, + 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x4b, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, + 0x04, 0x01, 0x5a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_goTypes = []any{ (*FederatedRouteTableSpec)(nil), // 0: fed.gateway.solo.io.FederatedRouteTableSpec (*FederatedRouteTableStatus)(nil), // 1: fed.gateway.solo.io.FederatedRouteTableStatus (*FederatedRouteTableSpec_Template)(nil), // 2: fed.gateway.solo.io.FederatedRouteTableSpec.Template - (*v1alpha1.Placement)(nil), // 3: multicluster.solo.io.Placement - (*v1.PlacementStatus)(nil), // 4: core.fed.solo.io.PlacementStatus - (*v11.RouteTableSpec)(nil), // 5: gateway.solo.io.RouteTableSpec - (*v1.TemplateMetadata)(nil), // 6: core.fed.solo.io.TemplateMetadata + nil, // 3: fed.gateway.solo.io.FederatedRouteTableStatus.NamespacedPlacementStatusesEntry + (*types.Placement)(nil), // 4: multicluster.solo.io.Placement + (*v1.PlacementStatus)(nil), // 5: core.fed.solo.io.PlacementStatus + (*v11.RouteTableSpec)(nil), // 6: gateway.solo.io.RouteTableSpec + (*v1.TemplateMetadata)(nil), // 7: core.fed.solo.io.TemplateMetadata } var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_depIdxs = []int32{ 2, // 0: fed.gateway.solo.io.FederatedRouteTableSpec.template:type_name -> fed.gateway.solo.io.FederatedRouteTableSpec.Template - 3, // 1: fed.gateway.solo.io.FederatedRouteTableSpec.placement:type_name -> multicluster.solo.io.Placement - 4, // 2: fed.gateway.solo.io.FederatedRouteTableStatus.placement_status:type_name -> core.fed.solo.io.PlacementStatus - 5, // 3: fed.gateway.solo.io.FederatedRouteTableSpec.Template.spec:type_name -> gateway.solo.io.RouteTableSpec - 6, // 4: fed.gateway.solo.io.FederatedRouteTableSpec.Template.metadata:type_name -> core.fed.solo.io.TemplateMetadata - 5, // [5:5] is the sub-list for method output_type - 5, // [5:5] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 4, // 1: fed.gateway.solo.io.FederatedRouteTableSpec.placement:type_name -> multicluster.solo.io.Placement + 5, // 2: fed.gateway.solo.io.FederatedRouteTableStatus.placement_status:type_name -> core.fed.solo.io.PlacementStatus + 3, // 3: fed.gateway.solo.io.FederatedRouteTableStatus.namespaced_placement_statuses:type_name -> fed.gateway.solo.io.FederatedRouteTableStatus.NamespacedPlacementStatusesEntry + 6, // 4: fed.gateway.solo.io.FederatedRouteTableSpec.Template.spec:type_name -> gateway.solo.io.RouteTableSpec + 7, // 5: fed.gateway.solo.io.FederatedRouteTableSpec.Template.metadata:type_name -> core.fed.solo.io.TemplateMetadata + 5, // 6: fed.gateway.solo.io.FederatedRouteTableStatus.NamespacedPlacementStatusesEntry.value:type_name -> core.fed.solo.io.PlacementStatus + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_init() } @@ -287,51 +305,13 @@ func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_p if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedRouteTableSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedRouteTableStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedRouteTableSpec_Template); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_rawDesc)), NumEnums: 0, - NumMessages: 3, + NumMessages: 4, NumExtensions: 0, NumServices: 0, }, @@ -340,7 +320,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_p MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_route_table_proto_depIdxs = nil } diff --git a/pkg/api/fed.gateway.solo.io/v1/types/route_table.pb.hash.go b/pkg/api/fed.gateway.solo.io/v1/types/route_table.pb.hash.go index 111284bad..8cfec1410 100644 --- a/pkg/api/fed.gateway.solo.io/v1/types/route_table.pb.hash.go +++ b/pkg/api/fed.gateway.solo.io/v1/types/route_table.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FederatedRouteTableSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,28 +43,40 @@ func (m *FederatedRouteTableSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetPlacement()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -70,6 +86,10 @@ func (m *FederatedRouteTableSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FederatedRouteTableStatus) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -83,23 +103,72 @@ func (m *FederatedRouteTableStatus) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetPlacementStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespacedPlacementStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { return 0, err } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err } + } return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FederatedRouteTableSpec_Template) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -113,28 +182,40 @@ func (m *FederatedRouteTableSpec_Template) Hash(hasher hash.Hash64) (uint64, err } if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/fed.gateway.solo.io/v1/types/route_table.pb.uniquehash.go b/pkg/api/fed.gateway.solo.io/v1/types/route_table.pb.uniquehash.go new file mode 100644 index 000000000..6b48eea1b --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/types/route_table.pb.uniquehash.go @@ -0,0 +1,227 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.gateway/v1/route_table.proto + +package types + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedRouteTableSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types.FederatedRouteTableSpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPlacement()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedRouteTableStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types.FederatedRouteTableStatus")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPlacementStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespacedPlacementStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedRouteTableSpec_Template) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types.FederatedRouteTableSpec_Template")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/fed.gateway.solo.io/v1/types/virtual_service.pb.equal.go b/pkg/api/fed.gateway.solo.io/v1/types/virtual_service.pb.equal.go index beb4199e1..2ac748f6d 100644 --- a/pkg/api/fed.gateway.solo.io/v1/types/virtual_service.pb.equal.go +++ b/pkg/api/fed.gateway.solo.io/v1/types/virtual_service.pb.equal.go @@ -100,6 +100,23 @@ func (m *FederatedVirtualServiceStatus) Equal(that interface{}) bool { } } + if len(m.GetNamespacedPlacementStatuses()) != len(target.GetNamespacedPlacementStatuses()) { + return false + } + for k, v := range m.GetNamespacedPlacementStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetNamespacedPlacementStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetNamespacedPlacementStatuses()[k]) { + return false + } + } + + } + return true } diff --git a/pkg/api/fed.gateway.solo.io/v1/types/virtual_service.pb.go b/pkg/api/fed.gateway.solo.io/v1/types/virtual_service.pb.go index 91d448f3c..d22d8b659 100644 --- a/pkg/api/fed.gateway.solo.io/v1/types/virtual_service.pb.go +++ b/pkg/api/fed.gateway.solo.io/v1/types/virtual_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo-fed/fed.gateway/v1/virtual_service.proto @@ -9,12 +9,12 @@ package types import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" v1 "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/core/v1" v11 "github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1" - v1alpha1 "github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1" + types "github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) @@ -26,26 +26,22 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - +// The Federated[Resource] CRDs are a gloo-fed wrapper around Gloo Edge CRDs, with a Placement field indicating which +// clusters and namespaces to federate the object to. +// For more, see: https://docs.solo.io/gloo-edge/latest/guides/gloo_federation/federated_configuration/ type FederatedVirtualServiceSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Template *FederatedVirtualServiceSpec_Template `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` + Placement *types.Placement `protobuf:"bytes,2,opt,name=placement,proto3" json:"placement,omitempty"` unknownFields protoimpl.UnknownFields - - Template *FederatedVirtualServiceSpec_Template `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` - Placement *v1alpha1.Placement `protobuf:"bytes,2,opt,name=placement,proto3" json:"placement,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FederatedVirtualServiceSpec) Reset() { *x = FederatedVirtualServiceSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedVirtualServiceSpec) String() string { @@ -56,7 +52,7 @@ func (*FederatedVirtualServiceSpec) ProtoMessage() {} func (x *FederatedVirtualServiceSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -78,7 +74,7 @@ func (x *FederatedVirtualServiceSpec) GetTemplate() *FederatedVirtualServiceSpec return nil } -func (x *FederatedVirtualServiceSpec) GetPlacement() *v1alpha1.Placement { +func (x *FederatedVirtualServiceSpec) GetPlacement() *types.Placement { if x != nil { return x.Placement } @@ -86,20 +82,18 @@ func (x *FederatedVirtualServiceSpec) GetPlacement() *v1alpha1.Placement { } type FederatedVirtualServiceStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PlacementStatus *v1.PlacementStatus `protobuf:"bytes,1,opt,name=placement_status,json=placementStatus,proto3" json:"placement_status,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PlacementStatus *v1.PlacementStatus `protobuf:"bytes,1,opt,name=placement_status,json=placementStatus,proto3" json:"placement_status,omitempty"` + NamespacedPlacementStatuses map[string]*v1.PlacementStatus `protobuf:"bytes,2,rep,name=namespaced_placement_statuses,json=namespacedPlacementStatuses,proto3" json:"namespaced_placement_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FederatedVirtualServiceStatus) Reset() { *x = FederatedVirtualServiceStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedVirtualServiceStatus) String() string { @@ -110,7 +104,7 @@ func (*FederatedVirtualServiceStatus) ProtoMessage() {} func (x *FederatedVirtualServiceStatus) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -132,22 +126,26 @@ func (x *FederatedVirtualServiceStatus) GetPlacementStatus() *v1.PlacementStatus return nil } +func (x *FederatedVirtualServiceStatus) GetNamespacedPlacementStatuses() map[string]*v1.PlacementStatus { + if x != nil { + return x.NamespacedPlacementStatuses + } + return nil +} + type FederatedVirtualServiceSpec_Template struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Spec *v11.VirtualServiceSpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` + Metadata *v1.TemplateMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` unknownFields protoimpl.UnknownFields - - Spec *v11.VirtualServiceSpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` - Metadata *v1.TemplateMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FederatedVirtualServiceSpec_Template) Reset() { *x = FederatedVirtualServiceSpec_Template{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedVirtualServiceSpec_Template) String() string { @@ -158,7 +156,7 @@ func (*FederatedVirtualServiceSpec_Template) ProtoMessage() {} func (x *FederatedVirtualServiceSpec_Template) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -189,7 +187,7 @@ func (x *FederatedVirtualServiceSpec_Template) GetMetadata() *v1.TemplateMetadat var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_rawDesc = string([]byte{ 0x0a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, @@ -197,88 +195,108 @@ var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_servic 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, - 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x52, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6b, 0x76, 0x32, - 0x2d, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, - 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x46, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, - 0x2f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb9, 0x02, 0x0a, 0x1b, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x55, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, - 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, + 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2f, 0x63, 0x6f, 0x72, + 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb9, 0x02, 0x0a, + 0x1b, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, + 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x55, 0x0a, 0x08, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, + 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x56, 0x69, + 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, + 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, + 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x1a, 0x83, 0x01, 0x0a, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, + 0x37, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, + 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x3e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xfa, 0x02, 0x0a, 0x1d, 0x46, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4c, 0x0a, 0x10, 0x70, 0x6c, + 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x83, 0x01, 0x0a, - 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x73, 0x70, 0x65, - 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, - 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, - 0x65, 0x63, 0x12, 0x3e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x22, 0x6d, 0x0a, 0x1d, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x56, - 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x4c, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x42, 0x4b, 0x5a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, - 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, - 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x97, 0x01, 0x0a, 0x1d, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x53, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x50, + 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x1b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x64, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x65, 0x73, 0x1a, 0x71, 0x0a, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, + 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, + 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x4b, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x5a, + 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_goTypes = []any{ (*FederatedVirtualServiceSpec)(nil), // 0: fed.gateway.solo.io.FederatedVirtualServiceSpec (*FederatedVirtualServiceStatus)(nil), // 1: fed.gateway.solo.io.FederatedVirtualServiceStatus (*FederatedVirtualServiceSpec_Template)(nil), // 2: fed.gateway.solo.io.FederatedVirtualServiceSpec.Template - (*v1alpha1.Placement)(nil), // 3: multicluster.solo.io.Placement - (*v1.PlacementStatus)(nil), // 4: core.fed.solo.io.PlacementStatus - (*v11.VirtualServiceSpec)(nil), // 5: gateway.solo.io.VirtualServiceSpec - (*v1.TemplateMetadata)(nil), // 6: core.fed.solo.io.TemplateMetadata + nil, // 3: fed.gateway.solo.io.FederatedVirtualServiceStatus.NamespacedPlacementStatusesEntry + (*types.Placement)(nil), // 4: multicluster.solo.io.Placement + (*v1.PlacementStatus)(nil), // 5: core.fed.solo.io.PlacementStatus + (*v11.VirtualServiceSpec)(nil), // 6: gateway.solo.io.VirtualServiceSpec + (*v1.TemplateMetadata)(nil), // 7: core.fed.solo.io.TemplateMetadata } var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_depIdxs = []int32{ 2, // 0: fed.gateway.solo.io.FederatedVirtualServiceSpec.template:type_name -> fed.gateway.solo.io.FederatedVirtualServiceSpec.Template - 3, // 1: fed.gateway.solo.io.FederatedVirtualServiceSpec.placement:type_name -> multicluster.solo.io.Placement - 4, // 2: fed.gateway.solo.io.FederatedVirtualServiceStatus.placement_status:type_name -> core.fed.solo.io.PlacementStatus - 5, // 3: fed.gateway.solo.io.FederatedVirtualServiceSpec.Template.spec:type_name -> gateway.solo.io.VirtualServiceSpec - 6, // 4: fed.gateway.solo.io.FederatedVirtualServiceSpec.Template.metadata:type_name -> core.fed.solo.io.TemplateMetadata - 5, // [5:5] is the sub-list for method output_type - 5, // [5:5] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 4, // 1: fed.gateway.solo.io.FederatedVirtualServiceSpec.placement:type_name -> multicluster.solo.io.Placement + 5, // 2: fed.gateway.solo.io.FederatedVirtualServiceStatus.placement_status:type_name -> core.fed.solo.io.PlacementStatus + 3, // 3: fed.gateway.solo.io.FederatedVirtualServiceStatus.namespaced_placement_statuses:type_name -> fed.gateway.solo.io.FederatedVirtualServiceStatus.NamespacedPlacementStatusesEntry + 6, // 4: fed.gateway.solo.io.FederatedVirtualServiceSpec.Template.spec:type_name -> gateway.solo.io.VirtualServiceSpec + 7, // 5: fed.gateway.solo.io.FederatedVirtualServiceSpec.Template.metadata:type_name -> core.fed.solo.io.TemplateMetadata + 5, // 6: fed.gateway.solo.io.FederatedVirtualServiceStatus.NamespacedPlacementStatusesEntry.value:type_name -> core.fed.solo.io.PlacementStatus + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { @@ -288,51 +306,13 @@ func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_servi if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedVirtualServiceSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedVirtualServiceStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedVirtualServiceSpec_Template); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_rawDesc)), NumEnums: 0, - NumMessages: 3, + NumMessages: 4, NumExtensions: 0, NumServices: 0, }, @@ -341,7 +321,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_servi MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gateway_v1_virtual_service_proto_depIdxs = nil } diff --git a/pkg/api/fed.gateway.solo.io/v1/types/virtual_service.pb.hash.go b/pkg/api/fed.gateway.solo.io/v1/types/virtual_service.pb.hash.go index a2be549f2..68a5dcf8e 100644 --- a/pkg/api/fed.gateway.solo.io/v1/types/virtual_service.pb.hash.go +++ b/pkg/api/fed.gateway.solo.io/v1/types/virtual_service.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FederatedVirtualServiceSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,28 +43,40 @@ func (m *FederatedVirtualServiceSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetPlacement()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -70,6 +86,10 @@ func (m *FederatedVirtualServiceSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FederatedVirtualServiceStatus) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -83,23 +103,72 @@ func (m *FederatedVirtualServiceStatus) Hash(hasher hash.Hash64) (uint64, error) } if h, ok := interface{}(m.GetPlacementStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespacedPlacementStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { return 0, err } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err } + } return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FederatedVirtualServiceSpec_Template) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -113,28 +182,40 @@ func (m *FederatedVirtualServiceSpec_Template) Hash(hasher hash.Hash64) (uint64, } if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/fed.gateway.solo.io/v1/types/virtual_service.pb.uniquehash.go b/pkg/api/fed.gateway.solo.io/v1/types/virtual_service.pb.uniquehash.go new file mode 100644 index 000000000..5f38df2da --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/types/virtual_service.pb.uniquehash.go @@ -0,0 +1,227 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.gateway/v1/virtual_service.proto + +package types + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedVirtualServiceSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types.FederatedVirtualServiceSpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPlacement()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedVirtualServiceStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types.FederatedVirtualServiceStatus")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPlacementStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespacedPlacementStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedVirtualServiceSpec_Template) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types.FederatedVirtualServiceSpec_Template")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/fed.gateway.solo.io/v1/zz_generated.deepcopy.go b/pkg/api/fed.gateway.solo.io/v1/zz_generated.deepcopy.go new file mode 100644 index 000000000..e17efa5e5 --- /dev/null +++ b/pkg/api/fed.gateway.solo.io/v1/zz_generated.deepcopy.go @@ -0,0 +1,309 @@ +// Code generated by skv2. DO NOT EDIT. + +// This file contains generated Deepcopy methods for fed.gateway.solo.io/v1 resources + +package v1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// Generated Deepcopy methods for FederatedGateway + +func (in *FederatedGateway) DeepCopyInto(out *FederatedGateway) { + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + + // deepcopy spec + in.Spec.DeepCopyInto(&out.Spec) + // deepcopy status + in.Status.DeepCopyInto(&out.Status) + + return +} + +func (in *FederatedGateway) DeepCopy() *FederatedGateway { + if in == nil { + return nil + } + out := new(FederatedGateway) + in.DeepCopyInto(out) + return out +} + +func (in *FederatedGateway) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +func (in *FederatedGatewayList) DeepCopyInto(out *FederatedGatewayList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FederatedGateway, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +func (in *FederatedGatewayList) DeepCopy() *FederatedGatewayList { + if in == nil { + return nil + } + out := new(FederatedGatewayList) + in.DeepCopyInto(out) + return out +} + +func (in *FederatedGatewayList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// Generated Deepcopy methods for FederatedMatchableHttpGateway + +func (in *FederatedMatchableHttpGateway) DeepCopyInto(out *FederatedMatchableHttpGateway) { + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + + // deepcopy spec + in.Spec.DeepCopyInto(&out.Spec) + // deepcopy status + in.Status.DeepCopyInto(&out.Status) + + return +} + +func (in *FederatedMatchableHttpGateway) DeepCopy() *FederatedMatchableHttpGateway { + if in == nil { + return nil + } + out := new(FederatedMatchableHttpGateway) + in.DeepCopyInto(out) + return out +} + +func (in *FederatedMatchableHttpGateway) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +func (in *FederatedMatchableHttpGatewayList) DeepCopyInto(out *FederatedMatchableHttpGatewayList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FederatedMatchableHttpGateway, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +func (in *FederatedMatchableHttpGatewayList) DeepCopy() *FederatedMatchableHttpGatewayList { + if in == nil { + return nil + } + out := new(FederatedMatchableHttpGatewayList) + in.DeepCopyInto(out) + return out +} + +func (in *FederatedMatchableHttpGatewayList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// Generated Deepcopy methods for FederatedMatchableTcpGateway + +func (in *FederatedMatchableTcpGateway) DeepCopyInto(out *FederatedMatchableTcpGateway) { + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + + // deepcopy spec + in.Spec.DeepCopyInto(&out.Spec) + // deepcopy status + in.Status.DeepCopyInto(&out.Status) + + return +} + +func (in *FederatedMatchableTcpGateway) DeepCopy() *FederatedMatchableTcpGateway { + if in == nil { + return nil + } + out := new(FederatedMatchableTcpGateway) + in.DeepCopyInto(out) + return out +} + +func (in *FederatedMatchableTcpGateway) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +func (in *FederatedMatchableTcpGatewayList) DeepCopyInto(out *FederatedMatchableTcpGatewayList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FederatedMatchableTcpGateway, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +func (in *FederatedMatchableTcpGatewayList) DeepCopy() *FederatedMatchableTcpGatewayList { + if in == nil { + return nil + } + out := new(FederatedMatchableTcpGatewayList) + in.DeepCopyInto(out) + return out +} + +func (in *FederatedMatchableTcpGatewayList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// Generated Deepcopy methods for FederatedRouteTable + +func (in *FederatedRouteTable) DeepCopyInto(out *FederatedRouteTable) { + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + + // deepcopy spec + in.Spec.DeepCopyInto(&out.Spec) + // deepcopy status + in.Status.DeepCopyInto(&out.Status) + + return +} + +func (in *FederatedRouteTable) DeepCopy() *FederatedRouteTable { + if in == nil { + return nil + } + out := new(FederatedRouteTable) + in.DeepCopyInto(out) + return out +} + +func (in *FederatedRouteTable) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +func (in *FederatedRouteTableList) DeepCopyInto(out *FederatedRouteTableList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FederatedRouteTable, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +func (in *FederatedRouteTableList) DeepCopy() *FederatedRouteTableList { + if in == nil { + return nil + } + out := new(FederatedRouteTableList) + in.DeepCopyInto(out) + return out +} + +func (in *FederatedRouteTableList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// Generated Deepcopy methods for FederatedVirtualService + +func (in *FederatedVirtualService) DeepCopyInto(out *FederatedVirtualService) { + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + + // deepcopy spec + in.Spec.DeepCopyInto(&out.Spec) + // deepcopy status + in.Status.DeepCopyInto(&out.Status) + + return +} + +func (in *FederatedVirtualService) DeepCopy() *FederatedVirtualService { + if in == nil { + return nil + } + out := new(FederatedVirtualService) + in.DeepCopyInto(out) + return out +} + +func (in *FederatedVirtualService) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +func (in *FederatedVirtualServiceList) DeepCopyInto(out *FederatedVirtualServiceList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FederatedVirtualService, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +func (in *FederatedVirtualServiceList) DeepCopy() *FederatedVirtualServiceList { + if in == nil { + return nil + } + out := new(FederatedVirtualServiceList) + in.DeepCopyInto(out) + return out +} + +func (in *FederatedVirtualServiceList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} diff --git a/pkg/api/fed.gloo.solo.io/v1/clients.go b/pkg/api/fed.gloo.solo.io/v1/clients.go new file mode 100644 index 000000000..0dd242fb6 --- /dev/null +++ b/pkg/api/fed.gloo.solo.io/v1/clients.go @@ -0,0 +1,511 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./clients.go -destination mocks/clients.go + +package v1 + +import ( + "context" + + "github.com/solo-io/skv2/pkg/controllerutils" + "github.com/solo-io/skv2/pkg/multicluster" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/rest" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +// MulticlusterClientset for the fed.gloo.solo.io/v1 APIs +type MulticlusterClientset interface { + // Cluster returns a Clientset for the given cluster + Cluster(cluster string) (Clientset, error) +} + +type multiclusterClientset struct { + client multicluster.Client +} + +func NewMulticlusterClientset(client multicluster.Client) MulticlusterClientset { + return &multiclusterClientset{client: client} +} + +func (m *multiclusterClientset) Cluster(cluster string) (Clientset, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewClientset(client), nil +} + +// clienset for the fed.gloo.solo.io/v1 APIs +type Clientset interface { + // clienset for the fed.gloo.solo.io/v1/v1 APIs + FederatedSettings() FederatedSettingsClient + // clienset for the fed.gloo.solo.io/v1/v1 APIs + FederatedUpstreams() FederatedUpstreamClient + // clienset for the fed.gloo.solo.io/v1/v1 APIs + FederatedUpstreamGroups() FederatedUpstreamGroupClient +} + +type clientSet struct { + client client.Client +} + +func NewClientsetFromConfig(cfg *rest.Config) (Clientset, error) { + scheme := scheme.Scheme + if err := SchemeBuilder.AddToScheme(scheme); err != nil { + return nil, err + } + client, err := client.New(cfg, client.Options{ + Scheme: scheme, + }) + if err != nil { + return nil, err + } + return NewClientset(client), nil +} + +func NewClientset(client client.Client) Clientset { + return &clientSet{client: client} +} + +// clienset for the fed.gloo.solo.io/v1/v1 APIs +func (c *clientSet) FederatedSettings() FederatedSettingsClient { + return NewFederatedSettingsClient(c.client) +} + +// clienset for the fed.gloo.solo.io/v1/v1 APIs +func (c *clientSet) FederatedUpstreams() FederatedUpstreamClient { + return NewFederatedUpstreamClient(c.client) +} + +// clienset for the fed.gloo.solo.io/v1/v1 APIs +func (c *clientSet) FederatedUpstreamGroups() FederatedUpstreamGroupClient { + return NewFederatedUpstreamGroupClient(c.client) +} + +// Reader knows how to read and list FederatedSettingss. +type FederatedSettingsReader interface { + // Get retrieves a FederatedSettings for the given object key + GetFederatedSettings(ctx context.Context, key client.ObjectKey) (*FederatedSettings, error) + + // List retrieves list of FederatedSettingss for a given namespace and list options. + ListFederatedSettings(ctx context.Context, opts ...client.ListOption) (*FederatedSettingsList, error) +} + +// FederatedSettingsTransitionFunction instructs the FederatedSettingsWriter how to transition between an existing +// FederatedSettings object and a desired on an Upsert +type FederatedSettingsTransitionFunction func(existing, desired *FederatedSettings) error + +// Writer knows how to create, delete, and update FederatedSettingss. +type FederatedSettingsWriter interface { + // Create saves the FederatedSettings object. + CreateFederatedSettings(ctx context.Context, obj *FederatedSettings, opts ...client.CreateOption) error + + // Delete deletes the FederatedSettings object. + DeleteFederatedSettings(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error + + // Update updates the given FederatedSettings object. + UpdateFederatedSettings(ctx context.Context, obj *FederatedSettings, opts ...client.UpdateOption) error + + // Patch patches the given FederatedSettings object. + PatchFederatedSettings(ctx context.Context, obj *FederatedSettings, patch client.Patch, opts ...client.PatchOption) error + + // DeleteAllOf deletes all FederatedSettings objects matching the given options. + DeleteAllOfFederatedSettings(ctx context.Context, opts ...client.DeleteAllOfOption) error + + // Create or Update the FederatedSettings object. + UpsertFederatedSettings(ctx context.Context, obj *FederatedSettings, transitionFuncs ...FederatedSettingsTransitionFunction) error +} + +// StatusWriter knows how to update status subresource of a FederatedSettings object. +type FederatedSettingsStatusWriter interface { + // Update updates the fields corresponding to the status subresource for the + // given FederatedSettings object. + UpdateFederatedSettingsStatus(ctx context.Context, obj *FederatedSettings, opts ...client.SubResourceUpdateOption) error + + // Patch patches the given FederatedSettings object's subresource. + PatchFederatedSettingsStatus(ctx context.Context, obj *FederatedSettings, patch client.Patch, opts ...client.SubResourcePatchOption) error +} + +// Client knows how to perform CRUD operations on FederatedSettingss. +type FederatedSettingsClient interface { + FederatedSettingsReader + FederatedSettingsWriter + FederatedSettingsStatusWriter +} + +type federatedSettingsClient struct { + client client.Client +} + +func NewFederatedSettingsClient(client client.Client) *federatedSettingsClient { + return &federatedSettingsClient{client: client} +} + +func (c *federatedSettingsClient) GetFederatedSettings(ctx context.Context, key client.ObjectKey) (*FederatedSettings, error) { + obj := &FederatedSettings{} + if err := c.client.Get(ctx, key, obj); err != nil { + return nil, err + } + return obj, nil +} + +func (c *federatedSettingsClient) ListFederatedSettings(ctx context.Context, opts ...client.ListOption) (*FederatedSettingsList, error) { + list := &FederatedSettingsList{} + if err := c.client.List(ctx, list, opts...); err != nil { + return nil, err + } + return list, nil +} + +func (c *federatedSettingsClient) CreateFederatedSettings(ctx context.Context, obj *FederatedSettings, opts ...client.CreateOption) error { + return c.client.Create(ctx, obj, opts...) +} + +func (c *federatedSettingsClient) DeleteFederatedSettings(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + obj := &FederatedSettings{} + obj.SetName(key.Name) + obj.SetNamespace(key.Namespace) + return c.client.Delete(ctx, obj, opts...) +} + +func (c *federatedSettingsClient) UpdateFederatedSettings(ctx context.Context, obj *FederatedSettings, opts ...client.UpdateOption) error { + return c.client.Update(ctx, obj, opts...) +} + +func (c *federatedSettingsClient) PatchFederatedSettings(ctx context.Context, obj *FederatedSettings, patch client.Patch, opts ...client.PatchOption) error { + return c.client.Patch(ctx, obj, patch, opts...) +} + +func (c *federatedSettingsClient) DeleteAllOfFederatedSettings(ctx context.Context, opts ...client.DeleteAllOfOption) error { + obj := &FederatedSettings{} + return c.client.DeleteAllOf(ctx, obj, opts...) +} + +func (c *federatedSettingsClient) UpsertFederatedSettings(ctx context.Context, obj *FederatedSettings, transitionFuncs ...FederatedSettingsTransitionFunction) error { + genericTxFunc := func(existing, desired runtime.Object) error { + for _, txFunc := range transitionFuncs { + if err := txFunc(existing.(*FederatedSettings), desired.(*FederatedSettings)); err != nil { + return err + } + } + return nil + } + _, err := controllerutils.Upsert(ctx, c.client, obj, genericTxFunc) + return err +} + +func (c *federatedSettingsClient) UpdateFederatedSettingsStatus(ctx context.Context, obj *FederatedSettings, opts ...client.SubResourceUpdateOption) error { + return c.client.Status().Update(ctx, obj, opts...) +} + +func (c *federatedSettingsClient) PatchFederatedSettingsStatus(ctx context.Context, obj *FederatedSettings, patch client.Patch, opts ...client.SubResourcePatchOption) error { + return c.client.Status().Patch(ctx, obj, patch, opts...) +} + +// Provides FederatedSettingsClients for multiple clusters. +type MulticlusterFederatedSettingsClient interface { + // Cluster returns a FederatedSettingsClient for the given cluster + Cluster(cluster string) (FederatedSettingsClient, error) +} + +type multiclusterFederatedSettingsClient struct { + client multicluster.Client +} + +func NewMulticlusterFederatedSettingsClient(client multicluster.Client) MulticlusterFederatedSettingsClient { + return &multiclusterFederatedSettingsClient{client: client} +} + +func (m *multiclusterFederatedSettingsClient) Cluster(cluster string) (FederatedSettingsClient, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewFederatedSettingsClient(client), nil +} + +// Reader knows how to read and list FederatedUpstreams. +type FederatedUpstreamReader interface { + // Get retrieves a FederatedUpstream for the given object key + GetFederatedUpstream(ctx context.Context, key client.ObjectKey) (*FederatedUpstream, error) + + // List retrieves list of FederatedUpstreams for a given namespace and list options. + ListFederatedUpstream(ctx context.Context, opts ...client.ListOption) (*FederatedUpstreamList, error) +} + +// FederatedUpstreamTransitionFunction instructs the FederatedUpstreamWriter how to transition between an existing +// FederatedUpstream object and a desired on an Upsert +type FederatedUpstreamTransitionFunction func(existing, desired *FederatedUpstream) error + +// Writer knows how to create, delete, and update FederatedUpstreams. +type FederatedUpstreamWriter interface { + // Create saves the FederatedUpstream object. + CreateFederatedUpstream(ctx context.Context, obj *FederatedUpstream, opts ...client.CreateOption) error + + // Delete deletes the FederatedUpstream object. + DeleteFederatedUpstream(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error + + // Update updates the given FederatedUpstream object. + UpdateFederatedUpstream(ctx context.Context, obj *FederatedUpstream, opts ...client.UpdateOption) error + + // Patch patches the given FederatedUpstream object. + PatchFederatedUpstream(ctx context.Context, obj *FederatedUpstream, patch client.Patch, opts ...client.PatchOption) error + + // DeleteAllOf deletes all FederatedUpstream objects matching the given options. + DeleteAllOfFederatedUpstream(ctx context.Context, opts ...client.DeleteAllOfOption) error + + // Create or Update the FederatedUpstream object. + UpsertFederatedUpstream(ctx context.Context, obj *FederatedUpstream, transitionFuncs ...FederatedUpstreamTransitionFunction) error +} + +// StatusWriter knows how to update status subresource of a FederatedUpstream object. +type FederatedUpstreamStatusWriter interface { + // Update updates the fields corresponding to the status subresource for the + // given FederatedUpstream object. + UpdateFederatedUpstreamStatus(ctx context.Context, obj *FederatedUpstream, opts ...client.SubResourceUpdateOption) error + + // Patch patches the given FederatedUpstream object's subresource. + PatchFederatedUpstreamStatus(ctx context.Context, obj *FederatedUpstream, patch client.Patch, opts ...client.SubResourcePatchOption) error +} + +// Client knows how to perform CRUD operations on FederatedUpstreams. +type FederatedUpstreamClient interface { + FederatedUpstreamReader + FederatedUpstreamWriter + FederatedUpstreamStatusWriter +} + +type federatedUpstreamClient struct { + client client.Client +} + +func NewFederatedUpstreamClient(client client.Client) *federatedUpstreamClient { + return &federatedUpstreamClient{client: client} +} + +func (c *federatedUpstreamClient) GetFederatedUpstream(ctx context.Context, key client.ObjectKey) (*FederatedUpstream, error) { + obj := &FederatedUpstream{} + if err := c.client.Get(ctx, key, obj); err != nil { + return nil, err + } + return obj, nil +} + +func (c *federatedUpstreamClient) ListFederatedUpstream(ctx context.Context, opts ...client.ListOption) (*FederatedUpstreamList, error) { + list := &FederatedUpstreamList{} + if err := c.client.List(ctx, list, opts...); err != nil { + return nil, err + } + return list, nil +} + +func (c *federatedUpstreamClient) CreateFederatedUpstream(ctx context.Context, obj *FederatedUpstream, opts ...client.CreateOption) error { + return c.client.Create(ctx, obj, opts...) +} + +func (c *federatedUpstreamClient) DeleteFederatedUpstream(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + obj := &FederatedUpstream{} + obj.SetName(key.Name) + obj.SetNamespace(key.Namespace) + return c.client.Delete(ctx, obj, opts...) +} + +func (c *federatedUpstreamClient) UpdateFederatedUpstream(ctx context.Context, obj *FederatedUpstream, opts ...client.UpdateOption) error { + return c.client.Update(ctx, obj, opts...) +} + +func (c *federatedUpstreamClient) PatchFederatedUpstream(ctx context.Context, obj *FederatedUpstream, patch client.Patch, opts ...client.PatchOption) error { + return c.client.Patch(ctx, obj, patch, opts...) +} + +func (c *federatedUpstreamClient) DeleteAllOfFederatedUpstream(ctx context.Context, opts ...client.DeleteAllOfOption) error { + obj := &FederatedUpstream{} + return c.client.DeleteAllOf(ctx, obj, opts...) +} + +func (c *federatedUpstreamClient) UpsertFederatedUpstream(ctx context.Context, obj *FederatedUpstream, transitionFuncs ...FederatedUpstreamTransitionFunction) error { + genericTxFunc := func(existing, desired runtime.Object) error { + for _, txFunc := range transitionFuncs { + if err := txFunc(existing.(*FederatedUpstream), desired.(*FederatedUpstream)); err != nil { + return err + } + } + return nil + } + _, err := controllerutils.Upsert(ctx, c.client, obj, genericTxFunc) + return err +} + +func (c *federatedUpstreamClient) UpdateFederatedUpstreamStatus(ctx context.Context, obj *FederatedUpstream, opts ...client.SubResourceUpdateOption) error { + return c.client.Status().Update(ctx, obj, opts...) +} + +func (c *federatedUpstreamClient) PatchFederatedUpstreamStatus(ctx context.Context, obj *FederatedUpstream, patch client.Patch, opts ...client.SubResourcePatchOption) error { + return c.client.Status().Patch(ctx, obj, patch, opts...) +} + +// Provides FederatedUpstreamClients for multiple clusters. +type MulticlusterFederatedUpstreamClient interface { + // Cluster returns a FederatedUpstreamClient for the given cluster + Cluster(cluster string) (FederatedUpstreamClient, error) +} + +type multiclusterFederatedUpstreamClient struct { + client multicluster.Client +} + +func NewMulticlusterFederatedUpstreamClient(client multicluster.Client) MulticlusterFederatedUpstreamClient { + return &multiclusterFederatedUpstreamClient{client: client} +} + +func (m *multiclusterFederatedUpstreamClient) Cluster(cluster string) (FederatedUpstreamClient, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewFederatedUpstreamClient(client), nil +} + +// Reader knows how to read and list FederatedUpstreamGroups. +type FederatedUpstreamGroupReader interface { + // Get retrieves a FederatedUpstreamGroup for the given object key + GetFederatedUpstreamGroup(ctx context.Context, key client.ObjectKey) (*FederatedUpstreamGroup, error) + + // List retrieves list of FederatedUpstreamGroups for a given namespace and list options. + ListFederatedUpstreamGroup(ctx context.Context, opts ...client.ListOption) (*FederatedUpstreamGroupList, error) +} + +// FederatedUpstreamGroupTransitionFunction instructs the FederatedUpstreamGroupWriter how to transition between an existing +// FederatedUpstreamGroup object and a desired on an Upsert +type FederatedUpstreamGroupTransitionFunction func(existing, desired *FederatedUpstreamGroup) error + +// Writer knows how to create, delete, and update FederatedUpstreamGroups. +type FederatedUpstreamGroupWriter interface { + // Create saves the FederatedUpstreamGroup object. + CreateFederatedUpstreamGroup(ctx context.Context, obj *FederatedUpstreamGroup, opts ...client.CreateOption) error + + // Delete deletes the FederatedUpstreamGroup object. + DeleteFederatedUpstreamGroup(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error + + // Update updates the given FederatedUpstreamGroup object. + UpdateFederatedUpstreamGroup(ctx context.Context, obj *FederatedUpstreamGroup, opts ...client.UpdateOption) error + + // Patch patches the given FederatedUpstreamGroup object. + PatchFederatedUpstreamGroup(ctx context.Context, obj *FederatedUpstreamGroup, patch client.Patch, opts ...client.PatchOption) error + + // DeleteAllOf deletes all FederatedUpstreamGroup objects matching the given options. + DeleteAllOfFederatedUpstreamGroup(ctx context.Context, opts ...client.DeleteAllOfOption) error + + // Create or Update the FederatedUpstreamGroup object. + UpsertFederatedUpstreamGroup(ctx context.Context, obj *FederatedUpstreamGroup, transitionFuncs ...FederatedUpstreamGroupTransitionFunction) error +} + +// StatusWriter knows how to update status subresource of a FederatedUpstreamGroup object. +type FederatedUpstreamGroupStatusWriter interface { + // Update updates the fields corresponding to the status subresource for the + // given FederatedUpstreamGroup object. + UpdateFederatedUpstreamGroupStatus(ctx context.Context, obj *FederatedUpstreamGroup, opts ...client.SubResourceUpdateOption) error + + // Patch patches the given FederatedUpstreamGroup object's subresource. + PatchFederatedUpstreamGroupStatus(ctx context.Context, obj *FederatedUpstreamGroup, patch client.Patch, opts ...client.SubResourcePatchOption) error +} + +// Client knows how to perform CRUD operations on FederatedUpstreamGroups. +type FederatedUpstreamGroupClient interface { + FederatedUpstreamGroupReader + FederatedUpstreamGroupWriter + FederatedUpstreamGroupStatusWriter +} + +type federatedUpstreamGroupClient struct { + client client.Client +} + +func NewFederatedUpstreamGroupClient(client client.Client) *federatedUpstreamGroupClient { + return &federatedUpstreamGroupClient{client: client} +} + +func (c *federatedUpstreamGroupClient) GetFederatedUpstreamGroup(ctx context.Context, key client.ObjectKey) (*FederatedUpstreamGroup, error) { + obj := &FederatedUpstreamGroup{} + if err := c.client.Get(ctx, key, obj); err != nil { + return nil, err + } + return obj, nil +} + +func (c *federatedUpstreamGroupClient) ListFederatedUpstreamGroup(ctx context.Context, opts ...client.ListOption) (*FederatedUpstreamGroupList, error) { + list := &FederatedUpstreamGroupList{} + if err := c.client.List(ctx, list, opts...); err != nil { + return nil, err + } + return list, nil +} + +func (c *federatedUpstreamGroupClient) CreateFederatedUpstreamGroup(ctx context.Context, obj *FederatedUpstreamGroup, opts ...client.CreateOption) error { + return c.client.Create(ctx, obj, opts...) +} + +func (c *federatedUpstreamGroupClient) DeleteFederatedUpstreamGroup(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + obj := &FederatedUpstreamGroup{} + obj.SetName(key.Name) + obj.SetNamespace(key.Namespace) + return c.client.Delete(ctx, obj, opts...) +} + +func (c *federatedUpstreamGroupClient) UpdateFederatedUpstreamGroup(ctx context.Context, obj *FederatedUpstreamGroup, opts ...client.UpdateOption) error { + return c.client.Update(ctx, obj, opts...) +} + +func (c *federatedUpstreamGroupClient) PatchFederatedUpstreamGroup(ctx context.Context, obj *FederatedUpstreamGroup, patch client.Patch, opts ...client.PatchOption) error { + return c.client.Patch(ctx, obj, patch, opts...) +} + +func (c *federatedUpstreamGroupClient) DeleteAllOfFederatedUpstreamGroup(ctx context.Context, opts ...client.DeleteAllOfOption) error { + obj := &FederatedUpstreamGroup{} + return c.client.DeleteAllOf(ctx, obj, opts...) +} + +func (c *federatedUpstreamGroupClient) UpsertFederatedUpstreamGroup(ctx context.Context, obj *FederatedUpstreamGroup, transitionFuncs ...FederatedUpstreamGroupTransitionFunction) error { + genericTxFunc := func(existing, desired runtime.Object) error { + for _, txFunc := range transitionFuncs { + if err := txFunc(existing.(*FederatedUpstreamGroup), desired.(*FederatedUpstreamGroup)); err != nil { + return err + } + } + return nil + } + _, err := controllerutils.Upsert(ctx, c.client, obj, genericTxFunc) + return err +} + +func (c *federatedUpstreamGroupClient) UpdateFederatedUpstreamGroupStatus(ctx context.Context, obj *FederatedUpstreamGroup, opts ...client.SubResourceUpdateOption) error { + return c.client.Status().Update(ctx, obj, opts...) +} + +func (c *federatedUpstreamGroupClient) PatchFederatedUpstreamGroupStatus(ctx context.Context, obj *FederatedUpstreamGroup, patch client.Patch, opts ...client.SubResourcePatchOption) error { + return c.client.Status().Patch(ctx, obj, patch, opts...) +} + +// Provides FederatedUpstreamGroupClients for multiple clusters. +type MulticlusterFederatedUpstreamGroupClient interface { + // Cluster returns a FederatedUpstreamGroupClient for the given cluster + Cluster(cluster string) (FederatedUpstreamGroupClient, error) +} + +type multiclusterFederatedUpstreamGroupClient struct { + client multicluster.Client +} + +func NewMulticlusterFederatedUpstreamGroupClient(client multicluster.Client) MulticlusterFederatedUpstreamGroupClient { + return &multiclusterFederatedUpstreamGroupClient{client: client} +} + +func (m *multiclusterFederatedUpstreamGroupClient) Cluster(cluster string) (FederatedUpstreamGroupClient, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewFederatedUpstreamGroupClient(client), nil +} diff --git a/pkg/api/fed.gloo.solo.io/v1/controller/event_handlers.go b/pkg/api/fed.gloo.solo.io/v1/controller/event_handlers.go new file mode 100644 index 000000000..5a0412cec --- /dev/null +++ b/pkg/api/fed.gloo.solo.io/v1/controller/event_handlers.go @@ -0,0 +1,339 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./event_handlers.go -destination mocks/event_handlers.go + +// Definitions for the Kubernetes Controllers +package controller + +import ( + "context" + + fed_gloo_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1" + + "github.com/pkg/errors" + "github.com/solo-io/skv2/pkg/events" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/manager" + "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// Handle events for the FederatedSettings Resource +// DEPRECATED: Prefer reconciler pattern. +type FederatedSettingsEventHandler interface { + CreateFederatedSettings(obj *fed_gloo_solo_io_v1.FederatedSettings) error + UpdateFederatedSettings(old, new *fed_gloo_solo_io_v1.FederatedSettings) error + DeleteFederatedSettings(obj *fed_gloo_solo_io_v1.FederatedSettings) error + GenericFederatedSettings(obj *fed_gloo_solo_io_v1.FederatedSettings) error +} + +type FederatedSettingsEventHandlerFuncs struct { + OnCreate func(obj *fed_gloo_solo_io_v1.FederatedSettings) error + OnUpdate func(old, new *fed_gloo_solo_io_v1.FederatedSettings) error + OnDelete func(obj *fed_gloo_solo_io_v1.FederatedSettings) error + OnGeneric func(obj *fed_gloo_solo_io_v1.FederatedSettings) error +} + +func (f *FederatedSettingsEventHandlerFuncs) CreateFederatedSettings(obj *fed_gloo_solo_io_v1.FederatedSettings) error { + if f.OnCreate == nil { + return nil + } + return f.OnCreate(obj) +} + +func (f *FederatedSettingsEventHandlerFuncs) DeleteFederatedSettings(obj *fed_gloo_solo_io_v1.FederatedSettings) error { + if f.OnDelete == nil { + return nil + } + return f.OnDelete(obj) +} + +func (f *FederatedSettingsEventHandlerFuncs) UpdateFederatedSettings(objOld, objNew *fed_gloo_solo_io_v1.FederatedSettings) error { + if f.OnUpdate == nil { + return nil + } + return f.OnUpdate(objOld, objNew) +} + +func (f *FederatedSettingsEventHandlerFuncs) GenericFederatedSettings(obj *fed_gloo_solo_io_v1.FederatedSettings) error { + if f.OnGeneric == nil { + return nil + } + return f.OnGeneric(obj) +} + +type FederatedSettingsEventWatcher interface { + AddEventHandler(ctx context.Context, h FederatedSettingsEventHandler, predicates ...predicate.Predicate) error +} + +type federatedSettingsEventWatcher struct { + watcher events.EventWatcher +} + +func NewFederatedSettingsEventWatcher(name string, mgr manager.Manager) FederatedSettingsEventWatcher { + return &federatedSettingsEventWatcher{ + watcher: events.NewWatcher(name, mgr, &fed_gloo_solo_io_v1.FederatedSettings{}), + } +} + +func (c *federatedSettingsEventWatcher) AddEventHandler(ctx context.Context, h FederatedSettingsEventHandler, predicates ...predicate.Predicate) error { + handler := genericFederatedSettingsHandler{handler: h} + if err := c.watcher.Watch(ctx, handler, predicates...); err != nil { + return err + } + return nil +} + +// genericFederatedSettingsHandler implements a generic events.EventHandler +type genericFederatedSettingsHandler struct { + handler FederatedSettingsEventHandler +} + +func (h genericFederatedSettingsHandler) Create(object client.Object) error { + obj, ok := object.(*fed_gloo_solo_io_v1.FederatedSettings) + if !ok { + return errors.Errorf("internal error: FederatedSettings handler received event for %T", object) + } + return h.handler.CreateFederatedSettings(obj) +} + +func (h genericFederatedSettingsHandler) Delete(object client.Object) error { + obj, ok := object.(*fed_gloo_solo_io_v1.FederatedSettings) + if !ok { + return errors.Errorf("internal error: FederatedSettings handler received event for %T", object) + } + return h.handler.DeleteFederatedSettings(obj) +} + +func (h genericFederatedSettingsHandler) Update(old, new client.Object) error { + objOld, ok := old.(*fed_gloo_solo_io_v1.FederatedSettings) + if !ok { + return errors.Errorf("internal error: FederatedSettings handler received event for %T", old) + } + objNew, ok := new.(*fed_gloo_solo_io_v1.FederatedSettings) + if !ok { + return errors.Errorf("internal error: FederatedSettings handler received event for %T", new) + } + return h.handler.UpdateFederatedSettings(objOld, objNew) +} + +func (h genericFederatedSettingsHandler) Generic(object client.Object) error { + obj, ok := object.(*fed_gloo_solo_io_v1.FederatedSettings) + if !ok { + return errors.Errorf("internal error: FederatedSettings handler received event for %T", object) + } + return h.handler.GenericFederatedSettings(obj) +} + +// Handle events for the FederatedUpstream Resource +// DEPRECATED: Prefer reconciler pattern. +type FederatedUpstreamEventHandler interface { + CreateFederatedUpstream(obj *fed_gloo_solo_io_v1.FederatedUpstream) error + UpdateFederatedUpstream(old, new *fed_gloo_solo_io_v1.FederatedUpstream) error + DeleteFederatedUpstream(obj *fed_gloo_solo_io_v1.FederatedUpstream) error + GenericFederatedUpstream(obj *fed_gloo_solo_io_v1.FederatedUpstream) error +} + +type FederatedUpstreamEventHandlerFuncs struct { + OnCreate func(obj *fed_gloo_solo_io_v1.FederatedUpstream) error + OnUpdate func(old, new *fed_gloo_solo_io_v1.FederatedUpstream) error + OnDelete func(obj *fed_gloo_solo_io_v1.FederatedUpstream) error + OnGeneric func(obj *fed_gloo_solo_io_v1.FederatedUpstream) error +} + +func (f *FederatedUpstreamEventHandlerFuncs) CreateFederatedUpstream(obj *fed_gloo_solo_io_v1.FederatedUpstream) error { + if f.OnCreate == nil { + return nil + } + return f.OnCreate(obj) +} + +func (f *FederatedUpstreamEventHandlerFuncs) DeleteFederatedUpstream(obj *fed_gloo_solo_io_v1.FederatedUpstream) error { + if f.OnDelete == nil { + return nil + } + return f.OnDelete(obj) +} + +func (f *FederatedUpstreamEventHandlerFuncs) UpdateFederatedUpstream(objOld, objNew *fed_gloo_solo_io_v1.FederatedUpstream) error { + if f.OnUpdate == nil { + return nil + } + return f.OnUpdate(objOld, objNew) +} + +func (f *FederatedUpstreamEventHandlerFuncs) GenericFederatedUpstream(obj *fed_gloo_solo_io_v1.FederatedUpstream) error { + if f.OnGeneric == nil { + return nil + } + return f.OnGeneric(obj) +} + +type FederatedUpstreamEventWatcher interface { + AddEventHandler(ctx context.Context, h FederatedUpstreamEventHandler, predicates ...predicate.Predicate) error +} + +type federatedUpstreamEventWatcher struct { + watcher events.EventWatcher +} + +func NewFederatedUpstreamEventWatcher(name string, mgr manager.Manager) FederatedUpstreamEventWatcher { + return &federatedUpstreamEventWatcher{ + watcher: events.NewWatcher(name, mgr, &fed_gloo_solo_io_v1.FederatedUpstream{}), + } +} + +func (c *federatedUpstreamEventWatcher) AddEventHandler(ctx context.Context, h FederatedUpstreamEventHandler, predicates ...predicate.Predicate) error { + handler := genericFederatedUpstreamHandler{handler: h} + if err := c.watcher.Watch(ctx, handler, predicates...); err != nil { + return err + } + return nil +} + +// genericFederatedUpstreamHandler implements a generic events.EventHandler +type genericFederatedUpstreamHandler struct { + handler FederatedUpstreamEventHandler +} + +func (h genericFederatedUpstreamHandler) Create(object client.Object) error { + obj, ok := object.(*fed_gloo_solo_io_v1.FederatedUpstream) + if !ok { + return errors.Errorf("internal error: FederatedUpstream handler received event for %T", object) + } + return h.handler.CreateFederatedUpstream(obj) +} + +func (h genericFederatedUpstreamHandler) Delete(object client.Object) error { + obj, ok := object.(*fed_gloo_solo_io_v1.FederatedUpstream) + if !ok { + return errors.Errorf("internal error: FederatedUpstream handler received event for %T", object) + } + return h.handler.DeleteFederatedUpstream(obj) +} + +func (h genericFederatedUpstreamHandler) Update(old, new client.Object) error { + objOld, ok := old.(*fed_gloo_solo_io_v1.FederatedUpstream) + if !ok { + return errors.Errorf("internal error: FederatedUpstream handler received event for %T", old) + } + objNew, ok := new.(*fed_gloo_solo_io_v1.FederatedUpstream) + if !ok { + return errors.Errorf("internal error: FederatedUpstream handler received event for %T", new) + } + return h.handler.UpdateFederatedUpstream(objOld, objNew) +} + +func (h genericFederatedUpstreamHandler) Generic(object client.Object) error { + obj, ok := object.(*fed_gloo_solo_io_v1.FederatedUpstream) + if !ok { + return errors.Errorf("internal error: FederatedUpstream handler received event for %T", object) + } + return h.handler.GenericFederatedUpstream(obj) +} + +// Handle events for the FederatedUpstreamGroup Resource +// DEPRECATED: Prefer reconciler pattern. +type FederatedUpstreamGroupEventHandler interface { + CreateFederatedUpstreamGroup(obj *fed_gloo_solo_io_v1.FederatedUpstreamGroup) error + UpdateFederatedUpstreamGroup(old, new *fed_gloo_solo_io_v1.FederatedUpstreamGroup) error + DeleteFederatedUpstreamGroup(obj *fed_gloo_solo_io_v1.FederatedUpstreamGroup) error + GenericFederatedUpstreamGroup(obj *fed_gloo_solo_io_v1.FederatedUpstreamGroup) error +} + +type FederatedUpstreamGroupEventHandlerFuncs struct { + OnCreate func(obj *fed_gloo_solo_io_v1.FederatedUpstreamGroup) error + OnUpdate func(old, new *fed_gloo_solo_io_v1.FederatedUpstreamGroup) error + OnDelete func(obj *fed_gloo_solo_io_v1.FederatedUpstreamGroup) error + OnGeneric func(obj *fed_gloo_solo_io_v1.FederatedUpstreamGroup) error +} + +func (f *FederatedUpstreamGroupEventHandlerFuncs) CreateFederatedUpstreamGroup(obj *fed_gloo_solo_io_v1.FederatedUpstreamGroup) error { + if f.OnCreate == nil { + return nil + } + return f.OnCreate(obj) +} + +func (f *FederatedUpstreamGroupEventHandlerFuncs) DeleteFederatedUpstreamGroup(obj *fed_gloo_solo_io_v1.FederatedUpstreamGroup) error { + if f.OnDelete == nil { + return nil + } + return f.OnDelete(obj) +} + +func (f *FederatedUpstreamGroupEventHandlerFuncs) UpdateFederatedUpstreamGroup(objOld, objNew *fed_gloo_solo_io_v1.FederatedUpstreamGroup) error { + if f.OnUpdate == nil { + return nil + } + return f.OnUpdate(objOld, objNew) +} + +func (f *FederatedUpstreamGroupEventHandlerFuncs) GenericFederatedUpstreamGroup(obj *fed_gloo_solo_io_v1.FederatedUpstreamGroup) error { + if f.OnGeneric == nil { + return nil + } + return f.OnGeneric(obj) +} + +type FederatedUpstreamGroupEventWatcher interface { + AddEventHandler(ctx context.Context, h FederatedUpstreamGroupEventHandler, predicates ...predicate.Predicate) error +} + +type federatedUpstreamGroupEventWatcher struct { + watcher events.EventWatcher +} + +func NewFederatedUpstreamGroupEventWatcher(name string, mgr manager.Manager) FederatedUpstreamGroupEventWatcher { + return &federatedUpstreamGroupEventWatcher{ + watcher: events.NewWatcher(name, mgr, &fed_gloo_solo_io_v1.FederatedUpstreamGroup{}), + } +} + +func (c *federatedUpstreamGroupEventWatcher) AddEventHandler(ctx context.Context, h FederatedUpstreamGroupEventHandler, predicates ...predicate.Predicate) error { + handler := genericFederatedUpstreamGroupHandler{handler: h} + if err := c.watcher.Watch(ctx, handler, predicates...); err != nil { + return err + } + return nil +} + +// genericFederatedUpstreamGroupHandler implements a generic events.EventHandler +type genericFederatedUpstreamGroupHandler struct { + handler FederatedUpstreamGroupEventHandler +} + +func (h genericFederatedUpstreamGroupHandler) Create(object client.Object) error { + obj, ok := object.(*fed_gloo_solo_io_v1.FederatedUpstreamGroup) + if !ok { + return errors.Errorf("internal error: FederatedUpstreamGroup handler received event for %T", object) + } + return h.handler.CreateFederatedUpstreamGroup(obj) +} + +func (h genericFederatedUpstreamGroupHandler) Delete(object client.Object) error { + obj, ok := object.(*fed_gloo_solo_io_v1.FederatedUpstreamGroup) + if !ok { + return errors.Errorf("internal error: FederatedUpstreamGroup handler received event for %T", object) + } + return h.handler.DeleteFederatedUpstreamGroup(obj) +} + +func (h genericFederatedUpstreamGroupHandler) Update(old, new client.Object) error { + objOld, ok := old.(*fed_gloo_solo_io_v1.FederatedUpstreamGroup) + if !ok { + return errors.Errorf("internal error: FederatedUpstreamGroup handler received event for %T", old) + } + objNew, ok := new.(*fed_gloo_solo_io_v1.FederatedUpstreamGroup) + if !ok { + return errors.Errorf("internal error: FederatedUpstreamGroup handler received event for %T", new) + } + return h.handler.UpdateFederatedUpstreamGroup(objOld, objNew) +} + +func (h genericFederatedUpstreamGroupHandler) Generic(object client.Object) error { + obj, ok := object.(*fed_gloo_solo_io_v1.FederatedUpstreamGroup) + if !ok { + return errors.Errorf("internal error: FederatedUpstreamGroup handler received event for %T", object) + } + return h.handler.GenericFederatedUpstreamGroup(obj) +} diff --git a/pkg/api/fed.gloo.solo.io/v1/controller/mocks/event_handlers.go b/pkg/api/fed.gloo.solo.io/v1/controller/mocks/event_handlers.go new file mode 100644 index 000000000..725c738fa --- /dev/null +++ b/pkg/api/fed.gloo.solo.io/v1/controller/mocks/event_handlers.go @@ -0,0 +1,378 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./event_handlers.go + +// Package mock_controller is a generated GoMock package. +package mock_controller + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1" + controller "github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1/controller" + predicate "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// MockFederatedSettingsEventHandler is a mock of FederatedSettingsEventHandler interface. +type MockFederatedSettingsEventHandler struct { + ctrl *gomock.Controller + recorder *MockFederatedSettingsEventHandlerMockRecorder +} + +// MockFederatedSettingsEventHandlerMockRecorder is the mock recorder for MockFederatedSettingsEventHandler. +type MockFederatedSettingsEventHandlerMockRecorder struct { + mock *MockFederatedSettingsEventHandler +} + +// NewMockFederatedSettingsEventHandler creates a new mock instance. +func NewMockFederatedSettingsEventHandler(ctrl *gomock.Controller) *MockFederatedSettingsEventHandler { + mock := &MockFederatedSettingsEventHandler{ctrl: ctrl} + mock.recorder = &MockFederatedSettingsEventHandlerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedSettingsEventHandler) EXPECT() *MockFederatedSettingsEventHandlerMockRecorder { + return m.recorder +} + +// CreateFederatedSettings mocks base method. +func (m *MockFederatedSettingsEventHandler) CreateFederatedSettings(obj *v1.FederatedSettings) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateFederatedSettings", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedSettings indicates an expected call of CreateFederatedSettings. +func (mr *MockFederatedSettingsEventHandlerMockRecorder) CreateFederatedSettings(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedSettings", reflect.TypeOf((*MockFederatedSettingsEventHandler)(nil).CreateFederatedSettings), obj) +} + +// DeleteFederatedSettings mocks base method. +func (m *MockFederatedSettingsEventHandler) DeleteFederatedSettings(obj *v1.FederatedSettings) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteFederatedSettings", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedSettings indicates an expected call of DeleteFederatedSettings. +func (mr *MockFederatedSettingsEventHandlerMockRecorder) DeleteFederatedSettings(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedSettings", reflect.TypeOf((*MockFederatedSettingsEventHandler)(nil).DeleteFederatedSettings), obj) +} + +// GenericFederatedSettings mocks base method. +func (m *MockFederatedSettingsEventHandler) GenericFederatedSettings(obj *v1.FederatedSettings) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GenericFederatedSettings", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// GenericFederatedSettings indicates an expected call of GenericFederatedSettings. +func (mr *MockFederatedSettingsEventHandlerMockRecorder) GenericFederatedSettings(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericFederatedSettings", reflect.TypeOf((*MockFederatedSettingsEventHandler)(nil).GenericFederatedSettings), obj) +} + +// UpdateFederatedSettings mocks base method. +func (m *MockFederatedSettingsEventHandler) UpdateFederatedSettings(old, new *v1.FederatedSettings) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateFederatedSettings", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedSettings indicates an expected call of UpdateFederatedSettings. +func (mr *MockFederatedSettingsEventHandlerMockRecorder) UpdateFederatedSettings(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedSettings", reflect.TypeOf((*MockFederatedSettingsEventHandler)(nil).UpdateFederatedSettings), old, new) +} + +// MockFederatedSettingsEventWatcher is a mock of FederatedSettingsEventWatcher interface. +type MockFederatedSettingsEventWatcher struct { + ctrl *gomock.Controller + recorder *MockFederatedSettingsEventWatcherMockRecorder +} + +// MockFederatedSettingsEventWatcherMockRecorder is the mock recorder for MockFederatedSettingsEventWatcher. +type MockFederatedSettingsEventWatcherMockRecorder struct { + mock *MockFederatedSettingsEventWatcher +} + +// NewMockFederatedSettingsEventWatcher creates a new mock instance. +func NewMockFederatedSettingsEventWatcher(ctrl *gomock.Controller) *MockFederatedSettingsEventWatcher { + mock := &MockFederatedSettingsEventWatcher{ctrl: ctrl} + mock.recorder = &MockFederatedSettingsEventWatcherMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedSettingsEventWatcher) EXPECT() *MockFederatedSettingsEventWatcherMockRecorder { + return m.recorder +} + +// AddEventHandler mocks base method. +func (m *MockFederatedSettingsEventWatcher) AddEventHandler(ctx context.Context, h controller.FederatedSettingsEventHandler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, h} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "AddEventHandler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddEventHandler indicates an expected call of AddEventHandler. +func (mr *MockFederatedSettingsEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, h}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockFederatedSettingsEventWatcher)(nil).AddEventHandler), varargs...) +} + +// MockFederatedUpstreamEventHandler is a mock of FederatedUpstreamEventHandler interface. +type MockFederatedUpstreamEventHandler struct { + ctrl *gomock.Controller + recorder *MockFederatedUpstreamEventHandlerMockRecorder +} + +// MockFederatedUpstreamEventHandlerMockRecorder is the mock recorder for MockFederatedUpstreamEventHandler. +type MockFederatedUpstreamEventHandlerMockRecorder struct { + mock *MockFederatedUpstreamEventHandler +} + +// NewMockFederatedUpstreamEventHandler creates a new mock instance. +func NewMockFederatedUpstreamEventHandler(ctrl *gomock.Controller) *MockFederatedUpstreamEventHandler { + mock := &MockFederatedUpstreamEventHandler{ctrl: ctrl} + mock.recorder = &MockFederatedUpstreamEventHandlerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedUpstreamEventHandler) EXPECT() *MockFederatedUpstreamEventHandlerMockRecorder { + return m.recorder +} + +// CreateFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamEventHandler) CreateFederatedUpstream(obj *v1.FederatedUpstream) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateFederatedUpstream", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedUpstream indicates an expected call of CreateFederatedUpstream. +func (mr *MockFederatedUpstreamEventHandlerMockRecorder) CreateFederatedUpstream(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamEventHandler)(nil).CreateFederatedUpstream), obj) +} + +// DeleteFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamEventHandler) DeleteFederatedUpstream(obj *v1.FederatedUpstream) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteFederatedUpstream", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedUpstream indicates an expected call of DeleteFederatedUpstream. +func (mr *MockFederatedUpstreamEventHandlerMockRecorder) DeleteFederatedUpstream(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamEventHandler)(nil).DeleteFederatedUpstream), obj) +} + +// GenericFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamEventHandler) GenericFederatedUpstream(obj *v1.FederatedUpstream) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GenericFederatedUpstream", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// GenericFederatedUpstream indicates an expected call of GenericFederatedUpstream. +func (mr *MockFederatedUpstreamEventHandlerMockRecorder) GenericFederatedUpstream(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamEventHandler)(nil).GenericFederatedUpstream), obj) +} + +// UpdateFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamEventHandler) UpdateFederatedUpstream(old, new *v1.FederatedUpstream) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateFederatedUpstream", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedUpstream indicates an expected call of UpdateFederatedUpstream. +func (mr *MockFederatedUpstreamEventHandlerMockRecorder) UpdateFederatedUpstream(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamEventHandler)(nil).UpdateFederatedUpstream), old, new) +} + +// MockFederatedUpstreamEventWatcher is a mock of FederatedUpstreamEventWatcher interface. +type MockFederatedUpstreamEventWatcher struct { + ctrl *gomock.Controller + recorder *MockFederatedUpstreamEventWatcherMockRecorder +} + +// MockFederatedUpstreamEventWatcherMockRecorder is the mock recorder for MockFederatedUpstreamEventWatcher. +type MockFederatedUpstreamEventWatcherMockRecorder struct { + mock *MockFederatedUpstreamEventWatcher +} + +// NewMockFederatedUpstreamEventWatcher creates a new mock instance. +func NewMockFederatedUpstreamEventWatcher(ctrl *gomock.Controller) *MockFederatedUpstreamEventWatcher { + mock := &MockFederatedUpstreamEventWatcher{ctrl: ctrl} + mock.recorder = &MockFederatedUpstreamEventWatcherMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedUpstreamEventWatcher) EXPECT() *MockFederatedUpstreamEventWatcherMockRecorder { + return m.recorder +} + +// AddEventHandler mocks base method. +func (m *MockFederatedUpstreamEventWatcher) AddEventHandler(ctx context.Context, h controller.FederatedUpstreamEventHandler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, h} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "AddEventHandler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddEventHandler indicates an expected call of AddEventHandler. +func (mr *MockFederatedUpstreamEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, h}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockFederatedUpstreamEventWatcher)(nil).AddEventHandler), varargs...) +} + +// MockFederatedUpstreamGroupEventHandler is a mock of FederatedUpstreamGroupEventHandler interface. +type MockFederatedUpstreamGroupEventHandler struct { + ctrl *gomock.Controller + recorder *MockFederatedUpstreamGroupEventHandlerMockRecorder +} + +// MockFederatedUpstreamGroupEventHandlerMockRecorder is the mock recorder for MockFederatedUpstreamGroupEventHandler. +type MockFederatedUpstreamGroupEventHandlerMockRecorder struct { + mock *MockFederatedUpstreamGroupEventHandler +} + +// NewMockFederatedUpstreamGroupEventHandler creates a new mock instance. +func NewMockFederatedUpstreamGroupEventHandler(ctrl *gomock.Controller) *MockFederatedUpstreamGroupEventHandler { + mock := &MockFederatedUpstreamGroupEventHandler{ctrl: ctrl} + mock.recorder = &MockFederatedUpstreamGroupEventHandlerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedUpstreamGroupEventHandler) EXPECT() *MockFederatedUpstreamGroupEventHandlerMockRecorder { + return m.recorder +} + +// CreateFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupEventHandler) CreateFederatedUpstreamGroup(obj *v1.FederatedUpstreamGroup) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateFederatedUpstreamGroup", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedUpstreamGroup indicates an expected call of CreateFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupEventHandlerMockRecorder) CreateFederatedUpstreamGroup(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupEventHandler)(nil).CreateFederatedUpstreamGroup), obj) +} + +// DeleteFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupEventHandler) DeleteFederatedUpstreamGroup(obj *v1.FederatedUpstreamGroup) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteFederatedUpstreamGroup", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedUpstreamGroup indicates an expected call of DeleteFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupEventHandlerMockRecorder) DeleteFederatedUpstreamGroup(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupEventHandler)(nil).DeleteFederatedUpstreamGroup), obj) +} + +// GenericFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupEventHandler) GenericFederatedUpstreamGroup(obj *v1.FederatedUpstreamGroup) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GenericFederatedUpstreamGroup", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// GenericFederatedUpstreamGroup indicates an expected call of GenericFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupEventHandlerMockRecorder) GenericFederatedUpstreamGroup(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupEventHandler)(nil).GenericFederatedUpstreamGroup), obj) +} + +// UpdateFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupEventHandler) UpdateFederatedUpstreamGroup(old, new *v1.FederatedUpstreamGroup) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateFederatedUpstreamGroup", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedUpstreamGroup indicates an expected call of UpdateFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupEventHandlerMockRecorder) UpdateFederatedUpstreamGroup(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupEventHandler)(nil).UpdateFederatedUpstreamGroup), old, new) +} + +// MockFederatedUpstreamGroupEventWatcher is a mock of FederatedUpstreamGroupEventWatcher interface. +type MockFederatedUpstreamGroupEventWatcher struct { + ctrl *gomock.Controller + recorder *MockFederatedUpstreamGroupEventWatcherMockRecorder +} + +// MockFederatedUpstreamGroupEventWatcherMockRecorder is the mock recorder for MockFederatedUpstreamGroupEventWatcher. +type MockFederatedUpstreamGroupEventWatcherMockRecorder struct { + mock *MockFederatedUpstreamGroupEventWatcher +} + +// NewMockFederatedUpstreamGroupEventWatcher creates a new mock instance. +func NewMockFederatedUpstreamGroupEventWatcher(ctrl *gomock.Controller) *MockFederatedUpstreamGroupEventWatcher { + mock := &MockFederatedUpstreamGroupEventWatcher{ctrl: ctrl} + mock.recorder = &MockFederatedUpstreamGroupEventWatcherMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedUpstreamGroupEventWatcher) EXPECT() *MockFederatedUpstreamGroupEventWatcherMockRecorder { + return m.recorder +} + +// AddEventHandler mocks base method. +func (m *MockFederatedUpstreamGroupEventWatcher) AddEventHandler(ctx context.Context, h controller.FederatedUpstreamGroupEventHandler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, h} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "AddEventHandler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddEventHandler indicates an expected call of AddEventHandler. +func (mr *MockFederatedUpstreamGroupEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, h}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockFederatedUpstreamGroupEventWatcher)(nil).AddEventHandler), varargs...) +} diff --git a/pkg/api/fed.gloo.solo.io/v1/controller/mocks/multicluster_reconcilers.go b/pkg/api/fed.gloo.solo.io/v1/controller/mocks/multicluster_reconcilers.go new file mode 100644 index 000000000..11ff79abc --- /dev/null +++ b/pkg/api/fed.gloo.solo.io/v1/controller/mocks/multicluster_reconcilers.go @@ -0,0 +1,361 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./multicluster_reconcilers.go + +// Package mock_controller is a generated GoMock package. +package mock_controller + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + reconcile "github.com/solo-io/skv2/pkg/reconcile" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1" + controller "github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1/controller" + predicate "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// MockMulticlusterFederatedSettingsReconciler is a mock of MulticlusterFederatedSettingsReconciler interface. +type MockMulticlusterFederatedSettingsReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedSettingsReconcilerMockRecorder +} + +// MockMulticlusterFederatedSettingsReconcilerMockRecorder is the mock recorder for MockMulticlusterFederatedSettingsReconciler. +type MockMulticlusterFederatedSettingsReconcilerMockRecorder struct { + mock *MockMulticlusterFederatedSettingsReconciler +} + +// NewMockMulticlusterFederatedSettingsReconciler creates a new mock instance. +func NewMockMulticlusterFederatedSettingsReconciler(ctrl *gomock.Controller) *MockMulticlusterFederatedSettingsReconciler { + mock := &MockMulticlusterFederatedSettingsReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedSettingsReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedSettingsReconciler) EXPECT() *MockMulticlusterFederatedSettingsReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedSettings mocks base method. +func (m *MockMulticlusterFederatedSettingsReconciler) ReconcileFederatedSettings(clusterName string, obj *v1.FederatedSettings) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedSettings", clusterName, obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedSettings indicates an expected call of ReconcileFederatedSettings. +func (mr *MockMulticlusterFederatedSettingsReconcilerMockRecorder) ReconcileFederatedSettings(clusterName, obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedSettings", reflect.TypeOf((*MockMulticlusterFederatedSettingsReconciler)(nil).ReconcileFederatedSettings), clusterName, obj) +} + +// MockMulticlusterFederatedSettingsDeletionReconciler is a mock of MulticlusterFederatedSettingsDeletionReconciler interface. +type MockMulticlusterFederatedSettingsDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedSettingsDeletionReconcilerMockRecorder +} + +// MockMulticlusterFederatedSettingsDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterFederatedSettingsDeletionReconciler. +type MockMulticlusterFederatedSettingsDeletionReconcilerMockRecorder struct { + mock *MockMulticlusterFederatedSettingsDeletionReconciler +} + +// NewMockMulticlusterFederatedSettingsDeletionReconciler creates a new mock instance. +func NewMockMulticlusterFederatedSettingsDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterFederatedSettingsDeletionReconciler { + mock := &MockMulticlusterFederatedSettingsDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedSettingsDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedSettingsDeletionReconciler) EXPECT() *MockMulticlusterFederatedSettingsDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedSettingsDeletion mocks base method. +func (m *MockMulticlusterFederatedSettingsDeletionReconciler) ReconcileFederatedSettingsDeletion(clusterName string, req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedSettingsDeletion", clusterName, req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileFederatedSettingsDeletion indicates an expected call of ReconcileFederatedSettingsDeletion. +func (mr *MockMulticlusterFederatedSettingsDeletionReconcilerMockRecorder) ReconcileFederatedSettingsDeletion(clusterName, req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedSettingsDeletion", reflect.TypeOf((*MockMulticlusterFederatedSettingsDeletionReconciler)(nil).ReconcileFederatedSettingsDeletion), clusterName, req) +} + +// MockMulticlusterFederatedSettingsReconcileLoop is a mock of MulticlusterFederatedSettingsReconcileLoop interface. +type MockMulticlusterFederatedSettingsReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedSettingsReconcileLoopMockRecorder +} + +// MockMulticlusterFederatedSettingsReconcileLoopMockRecorder is the mock recorder for MockMulticlusterFederatedSettingsReconcileLoop. +type MockMulticlusterFederatedSettingsReconcileLoopMockRecorder struct { + mock *MockMulticlusterFederatedSettingsReconcileLoop +} + +// NewMockMulticlusterFederatedSettingsReconcileLoop creates a new mock instance. +func NewMockMulticlusterFederatedSettingsReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterFederatedSettingsReconcileLoop { + mock := &MockMulticlusterFederatedSettingsReconcileLoop{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedSettingsReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedSettingsReconcileLoop) EXPECT() *MockMulticlusterFederatedSettingsReconcileLoopMockRecorder { + return m.recorder +} + +// AddMulticlusterFederatedSettingsReconciler mocks base method. +func (m *MockMulticlusterFederatedSettingsReconcileLoop) AddMulticlusterFederatedSettingsReconciler(ctx context.Context, rec controller.MulticlusterFederatedSettingsReconciler, predicates ...predicate.Predicate) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "AddMulticlusterFederatedSettingsReconciler", varargs...) +} + +// AddMulticlusterFederatedSettingsReconciler indicates an expected call of AddMulticlusterFederatedSettingsReconciler. +func (mr *MockMulticlusterFederatedSettingsReconcileLoopMockRecorder) AddMulticlusterFederatedSettingsReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterFederatedSettingsReconciler", reflect.TypeOf((*MockMulticlusterFederatedSettingsReconcileLoop)(nil).AddMulticlusterFederatedSettingsReconciler), varargs...) +} + +// MockMulticlusterFederatedUpstreamReconciler is a mock of MulticlusterFederatedUpstreamReconciler interface. +type MockMulticlusterFederatedUpstreamReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedUpstreamReconcilerMockRecorder +} + +// MockMulticlusterFederatedUpstreamReconcilerMockRecorder is the mock recorder for MockMulticlusterFederatedUpstreamReconciler. +type MockMulticlusterFederatedUpstreamReconcilerMockRecorder struct { + mock *MockMulticlusterFederatedUpstreamReconciler +} + +// NewMockMulticlusterFederatedUpstreamReconciler creates a new mock instance. +func NewMockMulticlusterFederatedUpstreamReconciler(ctrl *gomock.Controller) *MockMulticlusterFederatedUpstreamReconciler { + mock := &MockMulticlusterFederatedUpstreamReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedUpstreamReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedUpstreamReconciler) EXPECT() *MockMulticlusterFederatedUpstreamReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedUpstream mocks base method. +func (m *MockMulticlusterFederatedUpstreamReconciler) ReconcileFederatedUpstream(clusterName string, obj *v1.FederatedUpstream) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedUpstream", clusterName, obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedUpstream indicates an expected call of ReconcileFederatedUpstream. +func (mr *MockMulticlusterFederatedUpstreamReconcilerMockRecorder) ReconcileFederatedUpstream(clusterName, obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedUpstream", reflect.TypeOf((*MockMulticlusterFederatedUpstreamReconciler)(nil).ReconcileFederatedUpstream), clusterName, obj) +} + +// MockMulticlusterFederatedUpstreamDeletionReconciler is a mock of MulticlusterFederatedUpstreamDeletionReconciler interface. +type MockMulticlusterFederatedUpstreamDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedUpstreamDeletionReconcilerMockRecorder +} + +// MockMulticlusterFederatedUpstreamDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterFederatedUpstreamDeletionReconciler. +type MockMulticlusterFederatedUpstreamDeletionReconcilerMockRecorder struct { + mock *MockMulticlusterFederatedUpstreamDeletionReconciler +} + +// NewMockMulticlusterFederatedUpstreamDeletionReconciler creates a new mock instance. +func NewMockMulticlusterFederatedUpstreamDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterFederatedUpstreamDeletionReconciler { + mock := &MockMulticlusterFederatedUpstreamDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedUpstreamDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedUpstreamDeletionReconciler) EXPECT() *MockMulticlusterFederatedUpstreamDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedUpstreamDeletion mocks base method. +func (m *MockMulticlusterFederatedUpstreamDeletionReconciler) ReconcileFederatedUpstreamDeletion(clusterName string, req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedUpstreamDeletion", clusterName, req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileFederatedUpstreamDeletion indicates an expected call of ReconcileFederatedUpstreamDeletion. +func (mr *MockMulticlusterFederatedUpstreamDeletionReconcilerMockRecorder) ReconcileFederatedUpstreamDeletion(clusterName, req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedUpstreamDeletion", reflect.TypeOf((*MockMulticlusterFederatedUpstreamDeletionReconciler)(nil).ReconcileFederatedUpstreamDeletion), clusterName, req) +} + +// MockMulticlusterFederatedUpstreamReconcileLoop is a mock of MulticlusterFederatedUpstreamReconcileLoop interface. +type MockMulticlusterFederatedUpstreamReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedUpstreamReconcileLoopMockRecorder +} + +// MockMulticlusterFederatedUpstreamReconcileLoopMockRecorder is the mock recorder for MockMulticlusterFederatedUpstreamReconcileLoop. +type MockMulticlusterFederatedUpstreamReconcileLoopMockRecorder struct { + mock *MockMulticlusterFederatedUpstreamReconcileLoop +} + +// NewMockMulticlusterFederatedUpstreamReconcileLoop creates a new mock instance. +func NewMockMulticlusterFederatedUpstreamReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterFederatedUpstreamReconcileLoop { + mock := &MockMulticlusterFederatedUpstreamReconcileLoop{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedUpstreamReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedUpstreamReconcileLoop) EXPECT() *MockMulticlusterFederatedUpstreamReconcileLoopMockRecorder { + return m.recorder +} + +// AddMulticlusterFederatedUpstreamReconciler mocks base method. +func (m *MockMulticlusterFederatedUpstreamReconcileLoop) AddMulticlusterFederatedUpstreamReconciler(ctx context.Context, rec controller.MulticlusterFederatedUpstreamReconciler, predicates ...predicate.Predicate) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "AddMulticlusterFederatedUpstreamReconciler", varargs...) +} + +// AddMulticlusterFederatedUpstreamReconciler indicates an expected call of AddMulticlusterFederatedUpstreamReconciler. +func (mr *MockMulticlusterFederatedUpstreamReconcileLoopMockRecorder) AddMulticlusterFederatedUpstreamReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterFederatedUpstreamReconciler", reflect.TypeOf((*MockMulticlusterFederatedUpstreamReconcileLoop)(nil).AddMulticlusterFederatedUpstreamReconciler), varargs...) +} + +// MockMulticlusterFederatedUpstreamGroupReconciler is a mock of MulticlusterFederatedUpstreamGroupReconciler interface. +type MockMulticlusterFederatedUpstreamGroupReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedUpstreamGroupReconcilerMockRecorder +} + +// MockMulticlusterFederatedUpstreamGroupReconcilerMockRecorder is the mock recorder for MockMulticlusterFederatedUpstreamGroupReconciler. +type MockMulticlusterFederatedUpstreamGroupReconcilerMockRecorder struct { + mock *MockMulticlusterFederatedUpstreamGroupReconciler +} + +// NewMockMulticlusterFederatedUpstreamGroupReconciler creates a new mock instance. +func NewMockMulticlusterFederatedUpstreamGroupReconciler(ctrl *gomock.Controller) *MockMulticlusterFederatedUpstreamGroupReconciler { + mock := &MockMulticlusterFederatedUpstreamGroupReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedUpstreamGroupReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedUpstreamGroupReconciler) EXPECT() *MockMulticlusterFederatedUpstreamGroupReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedUpstreamGroup mocks base method. +func (m *MockMulticlusterFederatedUpstreamGroupReconciler) ReconcileFederatedUpstreamGroup(clusterName string, obj *v1.FederatedUpstreamGroup) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedUpstreamGroup", clusterName, obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedUpstreamGroup indicates an expected call of ReconcileFederatedUpstreamGroup. +func (mr *MockMulticlusterFederatedUpstreamGroupReconcilerMockRecorder) ReconcileFederatedUpstreamGroup(clusterName, obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedUpstreamGroup", reflect.TypeOf((*MockMulticlusterFederatedUpstreamGroupReconciler)(nil).ReconcileFederatedUpstreamGroup), clusterName, obj) +} + +// MockMulticlusterFederatedUpstreamGroupDeletionReconciler is a mock of MulticlusterFederatedUpstreamGroupDeletionReconciler interface. +type MockMulticlusterFederatedUpstreamGroupDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedUpstreamGroupDeletionReconcilerMockRecorder +} + +// MockMulticlusterFederatedUpstreamGroupDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterFederatedUpstreamGroupDeletionReconciler. +type MockMulticlusterFederatedUpstreamGroupDeletionReconcilerMockRecorder struct { + mock *MockMulticlusterFederatedUpstreamGroupDeletionReconciler +} + +// NewMockMulticlusterFederatedUpstreamGroupDeletionReconciler creates a new mock instance. +func NewMockMulticlusterFederatedUpstreamGroupDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterFederatedUpstreamGroupDeletionReconciler { + mock := &MockMulticlusterFederatedUpstreamGroupDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedUpstreamGroupDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedUpstreamGroupDeletionReconciler) EXPECT() *MockMulticlusterFederatedUpstreamGroupDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedUpstreamGroupDeletion mocks base method. +func (m *MockMulticlusterFederatedUpstreamGroupDeletionReconciler) ReconcileFederatedUpstreamGroupDeletion(clusterName string, req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedUpstreamGroupDeletion", clusterName, req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileFederatedUpstreamGroupDeletion indicates an expected call of ReconcileFederatedUpstreamGroupDeletion. +func (mr *MockMulticlusterFederatedUpstreamGroupDeletionReconcilerMockRecorder) ReconcileFederatedUpstreamGroupDeletion(clusterName, req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedUpstreamGroupDeletion", reflect.TypeOf((*MockMulticlusterFederatedUpstreamGroupDeletionReconciler)(nil).ReconcileFederatedUpstreamGroupDeletion), clusterName, req) +} + +// MockMulticlusterFederatedUpstreamGroupReconcileLoop is a mock of MulticlusterFederatedUpstreamGroupReconcileLoop interface. +type MockMulticlusterFederatedUpstreamGroupReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedUpstreamGroupReconcileLoopMockRecorder +} + +// MockMulticlusterFederatedUpstreamGroupReconcileLoopMockRecorder is the mock recorder for MockMulticlusterFederatedUpstreamGroupReconcileLoop. +type MockMulticlusterFederatedUpstreamGroupReconcileLoopMockRecorder struct { + mock *MockMulticlusterFederatedUpstreamGroupReconcileLoop +} + +// NewMockMulticlusterFederatedUpstreamGroupReconcileLoop creates a new mock instance. +func NewMockMulticlusterFederatedUpstreamGroupReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterFederatedUpstreamGroupReconcileLoop { + mock := &MockMulticlusterFederatedUpstreamGroupReconcileLoop{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedUpstreamGroupReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedUpstreamGroupReconcileLoop) EXPECT() *MockMulticlusterFederatedUpstreamGroupReconcileLoopMockRecorder { + return m.recorder +} + +// AddMulticlusterFederatedUpstreamGroupReconciler mocks base method. +func (m *MockMulticlusterFederatedUpstreamGroupReconcileLoop) AddMulticlusterFederatedUpstreamGroupReconciler(ctx context.Context, rec controller.MulticlusterFederatedUpstreamGroupReconciler, predicates ...predicate.Predicate) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "AddMulticlusterFederatedUpstreamGroupReconciler", varargs...) +} + +// AddMulticlusterFederatedUpstreamGroupReconciler indicates an expected call of AddMulticlusterFederatedUpstreamGroupReconciler. +func (mr *MockMulticlusterFederatedUpstreamGroupReconcileLoopMockRecorder) AddMulticlusterFederatedUpstreamGroupReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterFederatedUpstreamGroupReconciler", reflect.TypeOf((*MockMulticlusterFederatedUpstreamGroupReconcileLoop)(nil).AddMulticlusterFederatedUpstreamGroupReconciler), varargs...) +} diff --git a/pkg/api/fed.gloo.solo.io/v1/controller/mocks/reconcilers.go b/pkg/api/fed.gloo.solo.io/v1/controller/mocks/reconcilers.go new file mode 100644 index 000000000..030ab8fec --- /dev/null +++ b/pkg/api/fed.gloo.solo.io/v1/controller/mocks/reconcilers.go @@ -0,0 +1,565 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./reconcilers.go + +// Package mock_controller is a generated GoMock package. +package mock_controller + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + reconcile "github.com/solo-io/skv2/pkg/reconcile" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1" + controller "github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1/controller" + predicate "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// MockFederatedSettingsReconciler is a mock of FederatedSettingsReconciler interface. +type MockFederatedSettingsReconciler struct { + ctrl *gomock.Controller + recorder *MockFederatedSettingsReconcilerMockRecorder +} + +// MockFederatedSettingsReconcilerMockRecorder is the mock recorder for MockFederatedSettingsReconciler. +type MockFederatedSettingsReconcilerMockRecorder struct { + mock *MockFederatedSettingsReconciler +} + +// NewMockFederatedSettingsReconciler creates a new mock instance. +func NewMockFederatedSettingsReconciler(ctrl *gomock.Controller) *MockFederatedSettingsReconciler { + mock := &MockFederatedSettingsReconciler{ctrl: ctrl} + mock.recorder = &MockFederatedSettingsReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedSettingsReconciler) EXPECT() *MockFederatedSettingsReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedSettings mocks base method. +func (m *MockFederatedSettingsReconciler) ReconcileFederatedSettings(obj *v1.FederatedSettings) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedSettings", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedSettings indicates an expected call of ReconcileFederatedSettings. +func (mr *MockFederatedSettingsReconcilerMockRecorder) ReconcileFederatedSettings(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedSettings", reflect.TypeOf((*MockFederatedSettingsReconciler)(nil).ReconcileFederatedSettings), obj) +} + +// MockFederatedSettingsDeletionReconciler is a mock of FederatedSettingsDeletionReconciler interface. +type MockFederatedSettingsDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockFederatedSettingsDeletionReconcilerMockRecorder +} + +// MockFederatedSettingsDeletionReconcilerMockRecorder is the mock recorder for MockFederatedSettingsDeletionReconciler. +type MockFederatedSettingsDeletionReconcilerMockRecorder struct { + mock *MockFederatedSettingsDeletionReconciler +} + +// NewMockFederatedSettingsDeletionReconciler creates a new mock instance. +func NewMockFederatedSettingsDeletionReconciler(ctrl *gomock.Controller) *MockFederatedSettingsDeletionReconciler { + mock := &MockFederatedSettingsDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockFederatedSettingsDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedSettingsDeletionReconciler) EXPECT() *MockFederatedSettingsDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedSettingsDeletion mocks base method. +func (m *MockFederatedSettingsDeletionReconciler) ReconcileFederatedSettingsDeletion(req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedSettingsDeletion", req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileFederatedSettingsDeletion indicates an expected call of ReconcileFederatedSettingsDeletion. +func (mr *MockFederatedSettingsDeletionReconcilerMockRecorder) ReconcileFederatedSettingsDeletion(req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedSettingsDeletion", reflect.TypeOf((*MockFederatedSettingsDeletionReconciler)(nil).ReconcileFederatedSettingsDeletion), req) +} + +// MockFederatedSettingsFinalizer is a mock of FederatedSettingsFinalizer interface. +type MockFederatedSettingsFinalizer struct { + ctrl *gomock.Controller + recorder *MockFederatedSettingsFinalizerMockRecorder +} + +// MockFederatedSettingsFinalizerMockRecorder is the mock recorder for MockFederatedSettingsFinalizer. +type MockFederatedSettingsFinalizerMockRecorder struct { + mock *MockFederatedSettingsFinalizer +} + +// NewMockFederatedSettingsFinalizer creates a new mock instance. +func NewMockFederatedSettingsFinalizer(ctrl *gomock.Controller) *MockFederatedSettingsFinalizer { + mock := &MockFederatedSettingsFinalizer{ctrl: ctrl} + mock.recorder = &MockFederatedSettingsFinalizerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedSettingsFinalizer) EXPECT() *MockFederatedSettingsFinalizerMockRecorder { + return m.recorder +} + +// FederatedSettingsFinalizerName mocks base method. +func (m *MockFederatedSettingsFinalizer) FederatedSettingsFinalizerName() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FederatedSettingsFinalizerName") + ret0, _ := ret[0].(string) + return ret0 +} + +// FederatedSettingsFinalizerName indicates an expected call of FederatedSettingsFinalizerName. +func (mr *MockFederatedSettingsFinalizerMockRecorder) FederatedSettingsFinalizerName() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FederatedSettingsFinalizerName", reflect.TypeOf((*MockFederatedSettingsFinalizer)(nil).FederatedSettingsFinalizerName)) +} + +// FinalizeFederatedSettings mocks base method. +func (m *MockFederatedSettingsFinalizer) FinalizeFederatedSettings(obj *v1.FederatedSettings) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeFederatedSettings", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeFederatedSettings indicates an expected call of FinalizeFederatedSettings. +func (mr *MockFederatedSettingsFinalizerMockRecorder) FinalizeFederatedSettings(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeFederatedSettings", reflect.TypeOf((*MockFederatedSettingsFinalizer)(nil).FinalizeFederatedSettings), obj) +} + +// ReconcileFederatedSettings mocks base method. +func (m *MockFederatedSettingsFinalizer) ReconcileFederatedSettings(obj *v1.FederatedSettings) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedSettings", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedSettings indicates an expected call of ReconcileFederatedSettings. +func (mr *MockFederatedSettingsFinalizerMockRecorder) ReconcileFederatedSettings(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedSettings", reflect.TypeOf((*MockFederatedSettingsFinalizer)(nil).ReconcileFederatedSettings), obj) +} + +// MockFederatedSettingsReconcileLoop is a mock of FederatedSettingsReconcileLoop interface. +type MockFederatedSettingsReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockFederatedSettingsReconcileLoopMockRecorder +} + +// MockFederatedSettingsReconcileLoopMockRecorder is the mock recorder for MockFederatedSettingsReconcileLoop. +type MockFederatedSettingsReconcileLoopMockRecorder struct { + mock *MockFederatedSettingsReconcileLoop +} + +// NewMockFederatedSettingsReconcileLoop creates a new mock instance. +func NewMockFederatedSettingsReconcileLoop(ctrl *gomock.Controller) *MockFederatedSettingsReconcileLoop { + mock := &MockFederatedSettingsReconcileLoop{ctrl: ctrl} + mock.recorder = &MockFederatedSettingsReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedSettingsReconcileLoop) EXPECT() *MockFederatedSettingsReconcileLoopMockRecorder { + return m.recorder +} + +// RunFederatedSettingsReconciler mocks base method. +func (m *MockFederatedSettingsReconcileLoop) RunFederatedSettingsReconciler(ctx context.Context, rec controller.FederatedSettingsReconciler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RunFederatedSettingsReconciler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// RunFederatedSettingsReconciler indicates an expected call of RunFederatedSettingsReconciler. +func (mr *MockFederatedSettingsReconcileLoopMockRecorder) RunFederatedSettingsReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunFederatedSettingsReconciler", reflect.TypeOf((*MockFederatedSettingsReconcileLoop)(nil).RunFederatedSettingsReconciler), varargs...) +} + +// MockFederatedUpstreamReconciler is a mock of FederatedUpstreamReconciler interface. +type MockFederatedUpstreamReconciler struct { + ctrl *gomock.Controller + recorder *MockFederatedUpstreamReconcilerMockRecorder +} + +// MockFederatedUpstreamReconcilerMockRecorder is the mock recorder for MockFederatedUpstreamReconciler. +type MockFederatedUpstreamReconcilerMockRecorder struct { + mock *MockFederatedUpstreamReconciler +} + +// NewMockFederatedUpstreamReconciler creates a new mock instance. +func NewMockFederatedUpstreamReconciler(ctrl *gomock.Controller) *MockFederatedUpstreamReconciler { + mock := &MockFederatedUpstreamReconciler{ctrl: ctrl} + mock.recorder = &MockFederatedUpstreamReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedUpstreamReconciler) EXPECT() *MockFederatedUpstreamReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamReconciler) ReconcileFederatedUpstream(obj *v1.FederatedUpstream) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedUpstream", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedUpstream indicates an expected call of ReconcileFederatedUpstream. +func (mr *MockFederatedUpstreamReconcilerMockRecorder) ReconcileFederatedUpstream(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamReconciler)(nil).ReconcileFederatedUpstream), obj) +} + +// MockFederatedUpstreamDeletionReconciler is a mock of FederatedUpstreamDeletionReconciler interface. +type MockFederatedUpstreamDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockFederatedUpstreamDeletionReconcilerMockRecorder +} + +// MockFederatedUpstreamDeletionReconcilerMockRecorder is the mock recorder for MockFederatedUpstreamDeletionReconciler. +type MockFederatedUpstreamDeletionReconcilerMockRecorder struct { + mock *MockFederatedUpstreamDeletionReconciler +} + +// NewMockFederatedUpstreamDeletionReconciler creates a new mock instance. +func NewMockFederatedUpstreamDeletionReconciler(ctrl *gomock.Controller) *MockFederatedUpstreamDeletionReconciler { + mock := &MockFederatedUpstreamDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockFederatedUpstreamDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedUpstreamDeletionReconciler) EXPECT() *MockFederatedUpstreamDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedUpstreamDeletion mocks base method. +func (m *MockFederatedUpstreamDeletionReconciler) ReconcileFederatedUpstreamDeletion(req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedUpstreamDeletion", req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileFederatedUpstreamDeletion indicates an expected call of ReconcileFederatedUpstreamDeletion. +func (mr *MockFederatedUpstreamDeletionReconcilerMockRecorder) ReconcileFederatedUpstreamDeletion(req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedUpstreamDeletion", reflect.TypeOf((*MockFederatedUpstreamDeletionReconciler)(nil).ReconcileFederatedUpstreamDeletion), req) +} + +// MockFederatedUpstreamFinalizer is a mock of FederatedUpstreamFinalizer interface. +type MockFederatedUpstreamFinalizer struct { + ctrl *gomock.Controller + recorder *MockFederatedUpstreamFinalizerMockRecorder +} + +// MockFederatedUpstreamFinalizerMockRecorder is the mock recorder for MockFederatedUpstreamFinalizer. +type MockFederatedUpstreamFinalizerMockRecorder struct { + mock *MockFederatedUpstreamFinalizer +} + +// NewMockFederatedUpstreamFinalizer creates a new mock instance. +func NewMockFederatedUpstreamFinalizer(ctrl *gomock.Controller) *MockFederatedUpstreamFinalizer { + mock := &MockFederatedUpstreamFinalizer{ctrl: ctrl} + mock.recorder = &MockFederatedUpstreamFinalizerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedUpstreamFinalizer) EXPECT() *MockFederatedUpstreamFinalizerMockRecorder { + return m.recorder +} + +// FederatedUpstreamFinalizerName mocks base method. +func (m *MockFederatedUpstreamFinalizer) FederatedUpstreamFinalizerName() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FederatedUpstreamFinalizerName") + ret0, _ := ret[0].(string) + return ret0 +} + +// FederatedUpstreamFinalizerName indicates an expected call of FederatedUpstreamFinalizerName. +func (mr *MockFederatedUpstreamFinalizerMockRecorder) FederatedUpstreamFinalizerName() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FederatedUpstreamFinalizerName", reflect.TypeOf((*MockFederatedUpstreamFinalizer)(nil).FederatedUpstreamFinalizerName)) +} + +// FinalizeFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamFinalizer) FinalizeFederatedUpstream(obj *v1.FederatedUpstream) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeFederatedUpstream", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeFederatedUpstream indicates an expected call of FinalizeFederatedUpstream. +func (mr *MockFederatedUpstreamFinalizerMockRecorder) FinalizeFederatedUpstream(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamFinalizer)(nil).FinalizeFederatedUpstream), obj) +} + +// ReconcileFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamFinalizer) ReconcileFederatedUpstream(obj *v1.FederatedUpstream) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedUpstream", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedUpstream indicates an expected call of ReconcileFederatedUpstream. +func (mr *MockFederatedUpstreamFinalizerMockRecorder) ReconcileFederatedUpstream(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamFinalizer)(nil).ReconcileFederatedUpstream), obj) +} + +// MockFederatedUpstreamReconcileLoop is a mock of FederatedUpstreamReconcileLoop interface. +type MockFederatedUpstreamReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockFederatedUpstreamReconcileLoopMockRecorder +} + +// MockFederatedUpstreamReconcileLoopMockRecorder is the mock recorder for MockFederatedUpstreamReconcileLoop. +type MockFederatedUpstreamReconcileLoopMockRecorder struct { + mock *MockFederatedUpstreamReconcileLoop +} + +// NewMockFederatedUpstreamReconcileLoop creates a new mock instance. +func NewMockFederatedUpstreamReconcileLoop(ctrl *gomock.Controller) *MockFederatedUpstreamReconcileLoop { + mock := &MockFederatedUpstreamReconcileLoop{ctrl: ctrl} + mock.recorder = &MockFederatedUpstreamReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedUpstreamReconcileLoop) EXPECT() *MockFederatedUpstreamReconcileLoopMockRecorder { + return m.recorder +} + +// RunFederatedUpstreamReconciler mocks base method. +func (m *MockFederatedUpstreamReconcileLoop) RunFederatedUpstreamReconciler(ctx context.Context, rec controller.FederatedUpstreamReconciler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RunFederatedUpstreamReconciler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// RunFederatedUpstreamReconciler indicates an expected call of RunFederatedUpstreamReconciler. +func (mr *MockFederatedUpstreamReconcileLoopMockRecorder) RunFederatedUpstreamReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunFederatedUpstreamReconciler", reflect.TypeOf((*MockFederatedUpstreamReconcileLoop)(nil).RunFederatedUpstreamReconciler), varargs...) +} + +// MockFederatedUpstreamGroupReconciler is a mock of FederatedUpstreamGroupReconciler interface. +type MockFederatedUpstreamGroupReconciler struct { + ctrl *gomock.Controller + recorder *MockFederatedUpstreamGroupReconcilerMockRecorder +} + +// MockFederatedUpstreamGroupReconcilerMockRecorder is the mock recorder for MockFederatedUpstreamGroupReconciler. +type MockFederatedUpstreamGroupReconcilerMockRecorder struct { + mock *MockFederatedUpstreamGroupReconciler +} + +// NewMockFederatedUpstreamGroupReconciler creates a new mock instance. +func NewMockFederatedUpstreamGroupReconciler(ctrl *gomock.Controller) *MockFederatedUpstreamGroupReconciler { + mock := &MockFederatedUpstreamGroupReconciler{ctrl: ctrl} + mock.recorder = &MockFederatedUpstreamGroupReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedUpstreamGroupReconciler) EXPECT() *MockFederatedUpstreamGroupReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupReconciler) ReconcileFederatedUpstreamGroup(obj *v1.FederatedUpstreamGroup) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedUpstreamGroup", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedUpstreamGroup indicates an expected call of ReconcileFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupReconcilerMockRecorder) ReconcileFederatedUpstreamGroup(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupReconciler)(nil).ReconcileFederatedUpstreamGroup), obj) +} + +// MockFederatedUpstreamGroupDeletionReconciler is a mock of FederatedUpstreamGroupDeletionReconciler interface. +type MockFederatedUpstreamGroupDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockFederatedUpstreamGroupDeletionReconcilerMockRecorder +} + +// MockFederatedUpstreamGroupDeletionReconcilerMockRecorder is the mock recorder for MockFederatedUpstreamGroupDeletionReconciler. +type MockFederatedUpstreamGroupDeletionReconcilerMockRecorder struct { + mock *MockFederatedUpstreamGroupDeletionReconciler +} + +// NewMockFederatedUpstreamGroupDeletionReconciler creates a new mock instance. +func NewMockFederatedUpstreamGroupDeletionReconciler(ctrl *gomock.Controller) *MockFederatedUpstreamGroupDeletionReconciler { + mock := &MockFederatedUpstreamGroupDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockFederatedUpstreamGroupDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedUpstreamGroupDeletionReconciler) EXPECT() *MockFederatedUpstreamGroupDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedUpstreamGroupDeletion mocks base method. +func (m *MockFederatedUpstreamGroupDeletionReconciler) ReconcileFederatedUpstreamGroupDeletion(req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedUpstreamGroupDeletion", req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileFederatedUpstreamGroupDeletion indicates an expected call of ReconcileFederatedUpstreamGroupDeletion. +func (mr *MockFederatedUpstreamGroupDeletionReconcilerMockRecorder) ReconcileFederatedUpstreamGroupDeletion(req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedUpstreamGroupDeletion", reflect.TypeOf((*MockFederatedUpstreamGroupDeletionReconciler)(nil).ReconcileFederatedUpstreamGroupDeletion), req) +} + +// MockFederatedUpstreamGroupFinalizer is a mock of FederatedUpstreamGroupFinalizer interface. +type MockFederatedUpstreamGroupFinalizer struct { + ctrl *gomock.Controller + recorder *MockFederatedUpstreamGroupFinalizerMockRecorder +} + +// MockFederatedUpstreamGroupFinalizerMockRecorder is the mock recorder for MockFederatedUpstreamGroupFinalizer. +type MockFederatedUpstreamGroupFinalizerMockRecorder struct { + mock *MockFederatedUpstreamGroupFinalizer +} + +// NewMockFederatedUpstreamGroupFinalizer creates a new mock instance. +func NewMockFederatedUpstreamGroupFinalizer(ctrl *gomock.Controller) *MockFederatedUpstreamGroupFinalizer { + mock := &MockFederatedUpstreamGroupFinalizer{ctrl: ctrl} + mock.recorder = &MockFederatedUpstreamGroupFinalizerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedUpstreamGroupFinalizer) EXPECT() *MockFederatedUpstreamGroupFinalizerMockRecorder { + return m.recorder +} + +// FederatedUpstreamGroupFinalizerName mocks base method. +func (m *MockFederatedUpstreamGroupFinalizer) FederatedUpstreamGroupFinalizerName() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FederatedUpstreamGroupFinalizerName") + ret0, _ := ret[0].(string) + return ret0 +} + +// FederatedUpstreamGroupFinalizerName indicates an expected call of FederatedUpstreamGroupFinalizerName. +func (mr *MockFederatedUpstreamGroupFinalizerMockRecorder) FederatedUpstreamGroupFinalizerName() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FederatedUpstreamGroupFinalizerName", reflect.TypeOf((*MockFederatedUpstreamGroupFinalizer)(nil).FederatedUpstreamGroupFinalizerName)) +} + +// FinalizeFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupFinalizer) FinalizeFederatedUpstreamGroup(obj *v1.FederatedUpstreamGroup) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeFederatedUpstreamGroup", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeFederatedUpstreamGroup indicates an expected call of FinalizeFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupFinalizerMockRecorder) FinalizeFederatedUpstreamGroup(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupFinalizer)(nil).FinalizeFederatedUpstreamGroup), obj) +} + +// ReconcileFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupFinalizer) ReconcileFederatedUpstreamGroup(obj *v1.FederatedUpstreamGroup) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedUpstreamGroup", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedUpstreamGroup indicates an expected call of ReconcileFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupFinalizerMockRecorder) ReconcileFederatedUpstreamGroup(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupFinalizer)(nil).ReconcileFederatedUpstreamGroup), obj) +} + +// MockFederatedUpstreamGroupReconcileLoop is a mock of FederatedUpstreamGroupReconcileLoop interface. +type MockFederatedUpstreamGroupReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockFederatedUpstreamGroupReconcileLoopMockRecorder +} + +// MockFederatedUpstreamGroupReconcileLoopMockRecorder is the mock recorder for MockFederatedUpstreamGroupReconcileLoop. +type MockFederatedUpstreamGroupReconcileLoopMockRecorder struct { + mock *MockFederatedUpstreamGroupReconcileLoop +} + +// NewMockFederatedUpstreamGroupReconcileLoop creates a new mock instance. +func NewMockFederatedUpstreamGroupReconcileLoop(ctrl *gomock.Controller) *MockFederatedUpstreamGroupReconcileLoop { + mock := &MockFederatedUpstreamGroupReconcileLoop{ctrl: ctrl} + mock.recorder = &MockFederatedUpstreamGroupReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedUpstreamGroupReconcileLoop) EXPECT() *MockFederatedUpstreamGroupReconcileLoopMockRecorder { + return m.recorder +} + +// RunFederatedUpstreamGroupReconciler mocks base method. +func (m *MockFederatedUpstreamGroupReconcileLoop) RunFederatedUpstreamGroupReconciler(ctx context.Context, rec controller.FederatedUpstreamGroupReconciler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RunFederatedUpstreamGroupReconciler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// RunFederatedUpstreamGroupReconciler indicates an expected call of RunFederatedUpstreamGroupReconciler. +func (mr *MockFederatedUpstreamGroupReconcileLoopMockRecorder) RunFederatedUpstreamGroupReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunFederatedUpstreamGroupReconciler", reflect.TypeOf((*MockFederatedUpstreamGroupReconcileLoop)(nil).RunFederatedUpstreamGroupReconciler), varargs...) +} diff --git a/pkg/api/fed.gloo.solo.io/v1/controller/multicluster_reconcilers.go b/pkg/api/fed.gloo.solo.io/v1/controller/multicluster_reconcilers.go new file mode 100644 index 000000000..982fdb084 --- /dev/null +++ b/pkg/api/fed.gloo.solo.io/v1/controller/multicluster_reconcilers.go @@ -0,0 +1,232 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./multicluster_reconcilers.go -destination mocks/multicluster_reconcilers.go + +// Definitions for the multicluster Kubernetes Controllers +package controller + +import ( + "context" + + fed_gloo_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1" + + "github.com/pkg/errors" + "github.com/solo-io/skv2/pkg/ezkube" + "github.com/solo-io/skv2/pkg/multicluster" + mc_reconcile "github.com/solo-io/skv2/pkg/multicluster/reconcile" + "github.com/solo-io/skv2/pkg/reconcile" + "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// Reconcile Upsert events for the FederatedSettings Resource across clusters. +// implemented by the user +type MulticlusterFederatedSettingsReconciler interface { + ReconcileFederatedSettings(clusterName string, obj *fed_gloo_solo_io_v1.FederatedSettings) (reconcile.Result, error) +} + +// Reconcile deletion events for the FederatedSettings Resource across clusters. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type MulticlusterFederatedSettingsDeletionReconciler interface { + ReconcileFederatedSettingsDeletion(clusterName string, req reconcile.Request) error +} + +type MulticlusterFederatedSettingsReconcilerFuncs struct { + OnReconcileFederatedSettings func(clusterName string, obj *fed_gloo_solo_io_v1.FederatedSettings) (reconcile.Result, error) + OnReconcileFederatedSettingsDeletion func(clusterName string, req reconcile.Request) error +} + +func (f *MulticlusterFederatedSettingsReconcilerFuncs) ReconcileFederatedSettings(clusterName string, obj *fed_gloo_solo_io_v1.FederatedSettings) (reconcile.Result, error) { + if f.OnReconcileFederatedSettings == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileFederatedSettings(clusterName, obj) +} + +func (f *MulticlusterFederatedSettingsReconcilerFuncs) ReconcileFederatedSettingsDeletion(clusterName string, req reconcile.Request) error { + if f.OnReconcileFederatedSettingsDeletion == nil { + return nil + } + return f.OnReconcileFederatedSettingsDeletion(clusterName, req) +} + +type MulticlusterFederatedSettingsReconcileLoop interface { + // AddMulticlusterFederatedSettingsReconciler adds a MulticlusterFederatedSettingsReconciler to the MulticlusterFederatedSettingsReconcileLoop. + AddMulticlusterFederatedSettingsReconciler(ctx context.Context, rec MulticlusterFederatedSettingsReconciler, predicates ...predicate.Predicate) +} + +type multiclusterFederatedSettingsReconcileLoop struct { + loop multicluster.Loop +} + +func (m *multiclusterFederatedSettingsReconcileLoop) AddMulticlusterFederatedSettingsReconciler(ctx context.Context, rec MulticlusterFederatedSettingsReconciler, predicates ...predicate.Predicate) { + genericReconciler := genericFederatedSettingsMulticlusterReconciler{reconciler: rec} + + m.loop.AddReconciler(ctx, genericReconciler, predicates...) +} + +func NewMulticlusterFederatedSettingsReconcileLoop(name string, cw multicluster.ClusterWatcher, options reconcile.Options) MulticlusterFederatedSettingsReconcileLoop { + return &multiclusterFederatedSettingsReconcileLoop{loop: mc_reconcile.NewLoop(name, cw, &fed_gloo_solo_io_v1.FederatedSettings{}, options)} +} + +type genericFederatedSettingsMulticlusterReconciler struct { + reconciler MulticlusterFederatedSettingsReconciler +} + +func (g genericFederatedSettingsMulticlusterReconciler) ReconcileDeletion(cluster string, req reconcile.Request) error { + if deletionReconciler, ok := g.reconciler.(MulticlusterFederatedSettingsDeletionReconciler); ok { + return deletionReconciler.ReconcileFederatedSettingsDeletion(cluster, req) + } + return nil +} + +func (g genericFederatedSettingsMulticlusterReconciler) Reconcile(cluster string, object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_gloo_solo_io_v1.FederatedSettings) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: FederatedSettings handler received event for %T", object) + } + return g.reconciler.ReconcileFederatedSettings(cluster, obj) +} + +// Reconcile Upsert events for the FederatedUpstream Resource across clusters. +// implemented by the user +type MulticlusterFederatedUpstreamReconciler interface { + ReconcileFederatedUpstream(clusterName string, obj *fed_gloo_solo_io_v1.FederatedUpstream) (reconcile.Result, error) +} + +// Reconcile deletion events for the FederatedUpstream Resource across clusters. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type MulticlusterFederatedUpstreamDeletionReconciler interface { + ReconcileFederatedUpstreamDeletion(clusterName string, req reconcile.Request) error +} + +type MulticlusterFederatedUpstreamReconcilerFuncs struct { + OnReconcileFederatedUpstream func(clusterName string, obj *fed_gloo_solo_io_v1.FederatedUpstream) (reconcile.Result, error) + OnReconcileFederatedUpstreamDeletion func(clusterName string, req reconcile.Request) error +} + +func (f *MulticlusterFederatedUpstreamReconcilerFuncs) ReconcileFederatedUpstream(clusterName string, obj *fed_gloo_solo_io_v1.FederatedUpstream) (reconcile.Result, error) { + if f.OnReconcileFederatedUpstream == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileFederatedUpstream(clusterName, obj) +} + +func (f *MulticlusterFederatedUpstreamReconcilerFuncs) ReconcileFederatedUpstreamDeletion(clusterName string, req reconcile.Request) error { + if f.OnReconcileFederatedUpstreamDeletion == nil { + return nil + } + return f.OnReconcileFederatedUpstreamDeletion(clusterName, req) +} + +type MulticlusterFederatedUpstreamReconcileLoop interface { + // AddMulticlusterFederatedUpstreamReconciler adds a MulticlusterFederatedUpstreamReconciler to the MulticlusterFederatedUpstreamReconcileLoop. + AddMulticlusterFederatedUpstreamReconciler(ctx context.Context, rec MulticlusterFederatedUpstreamReconciler, predicates ...predicate.Predicate) +} + +type multiclusterFederatedUpstreamReconcileLoop struct { + loop multicluster.Loop +} + +func (m *multiclusterFederatedUpstreamReconcileLoop) AddMulticlusterFederatedUpstreamReconciler(ctx context.Context, rec MulticlusterFederatedUpstreamReconciler, predicates ...predicate.Predicate) { + genericReconciler := genericFederatedUpstreamMulticlusterReconciler{reconciler: rec} + + m.loop.AddReconciler(ctx, genericReconciler, predicates...) +} + +func NewMulticlusterFederatedUpstreamReconcileLoop(name string, cw multicluster.ClusterWatcher, options reconcile.Options) MulticlusterFederatedUpstreamReconcileLoop { + return &multiclusterFederatedUpstreamReconcileLoop{loop: mc_reconcile.NewLoop(name, cw, &fed_gloo_solo_io_v1.FederatedUpstream{}, options)} +} + +type genericFederatedUpstreamMulticlusterReconciler struct { + reconciler MulticlusterFederatedUpstreamReconciler +} + +func (g genericFederatedUpstreamMulticlusterReconciler) ReconcileDeletion(cluster string, req reconcile.Request) error { + if deletionReconciler, ok := g.reconciler.(MulticlusterFederatedUpstreamDeletionReconciler); ok { + return deletionReconciler.ReconcileFederatedUpstreamDeletion(cluster, req) + } + return nil +} + +func (g genericFederatedUpstreamMulticlusterReconciler) Reconcile(cluster string, object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_gloo_solo_io_v1.FederatedUpstream) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: FederatedUpstream handler received event for %T", object) + } + return g.reconciler.ReconcileFederatedUpstream(cluster, obj) +} + +// Reconcile Upsert events for the FederatedUpstreamGroup Resource across clusters. +// implemented by the user +type MulticlusterFederatedUpstreamGroupReconciler interface { + ReconcileFederatedUpstreamGroup(clusterName string, obj *fed_gloo_solo_io_v1.FederatedUpstreamGroup) (reconcile.Result, error) +} + +// Reconcile deletion events for the FederatedUpstreamGroup Resource across clusters. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type MulticlusterFederatedUpstreamGroupDeletionReconciler interface { + ReconcileFederatedUpstreamGroupDeletion(clusterName string, req reconcile.Request) error +} + +type MulticlusterFederatedUpstreamGroupReconcilerFuncs struct { + OnReconcileFederatedUpstreamGroup func(clusterName string, obj *fed_gloo_solo_io_v1.FederatedUpstreamGroup) (reconcile.Result, error) + OnReconcileFederatedUpstreamGroupDeletion func(clusterName string, req reconcile.Request) error +} + +func (f *MulticlusterFederatedUpstreamGroupReconcilerFuncs) ReconcileFederatedUpstreamGroup(clusterName string, obj *fed_gloo_solo_io_v1.FederatedUpstreamGroup) (reconcile.Result, error) { + if f.OnReconcileFederatedUpstreamGroup == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileFederatedUpstreamGroup(clusterName, obj) +} + +func (f *MulticlusterFederatedUpstreamGroupReconcilerFuncs) ReconcileFederatedUpstreamGroupDeletion(clusterName string, req reconcile.Request) error { + if f.OnReconcileFederatedUpstreamGroupDeletion == nil { + return nil + } + return f.OnReconcileFederatedUpstreamGroupDeletion(clusterName, req) +} + +type MulticlusterFederatedUpstreamGroupReconcileLoop interface { + // AddMulticlusterFederatedUpstreamGroupReconciler adds a MulticlusterFederatedUpstreamGroupReconciler to the MulticlusterFederatedUpstreamGroupReconcileLoop. + AddMulticlusterFederatedUpstreamGroupReconciler(ctx context.Context, rec MulticlusterFederatedUpstreamGroupReconciler, predicates ...predicate.Predicate) +} + +type multiclusterFederatedUpstreamGroupReconcileLoop struct { + loop multicluster.Loop +} + +func (m *multiclusterFederatedUpstreamGroupReconcileLoop) AddMulticlusterFederatedUpstreamGroupReconciler(ctx context.Context, rec MulticlusterFederatedUpstreamGroupReconciler, predicates ...predicate.Predicate) { + genericReconciler := genericFederatedUpstreamGroupMulticlusterReconciler{reconciler: rec} + + m.loop.AddReconciler(ctx, genericReconciler, predicates...) +} + +func NewMulticlusterFederatedUpstreamGroupReconcileLoop(name string, cw multicluster.ClusterWatcher, options reconcile.Options) MulticlusterFederatedUpstreamGroupReconcileLoop { + return &multiclusterFederatedUpstreamGroupReconcileLoop{loop: mc_reconcile.NewLoop(name, cw, &fed_gloo_solo_io_v1.FederatedUpstreamGroup{}, options)} +} + +type genericFederatedUpstreamGroupMulticlusterReconciler struct { + reconciler MulticlusterFederatedUpstreamGroupReconciler +} + +func (g genericFederatedUpstreamGroupMulticlusterReconciler) ReconcileDeletion(cluster string, req reconcile.Request) error { + if deletionReconciler, ok := g.reconciler.(MulticlusterFederatedUpstreamGroupDeletionReconciler); ok { + return deletionReconciler.ReconcileFederatedUpstreamGroupDeletion(cluster, req) + } + return nil +} + +func (g genericFederatedUpstreamGroupMulticlusterReconciler) Reconcile(cluster string, object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_gloo_solo_io_v1.FederatedUpstreamGroup) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: FederatedUpstreamGroup handler received event for %T", object) + } + return g.reconciler.ReconcileFederatedUpstreamGroup(cluster, obj) +} diff --git a/pkg/api/fed.gloo.solo.io/v1/controller/reconcilers.go b/pkg/api/fed.gloo.solo.io/v1/controller/reconcilers.go new file mode 100644 index 000000000..b5b77a0f4 --- /dev/null +++ b/pkg/api/fed.gloo.solo.io/v1/controller/reconcilers.go @@ -0,0 +1,369 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./reconcilers.go -destination mocks/reconcilers.go + +// Definitions for the Kubernetes Controllers +package controller + +import ( + "context" + + fed_gloo_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1" + + "github.com/pkg/errors" + "github.com/solo-io/skv2/pkg/ezkube" + "github.com/solo-io/skv2/pkg/reconcile" + "sigs.k8s.io/controller-runtime/pkg/manager" + "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// Reconcile Upsert events for the FederatedSettings Resource. +// implemented by the user +type FederatedSettingsReconciler interface { + ReconcileFederatedSettings(obj *fed_gloo_solo_io_v1.FederatedSettings) (reconcile.Result, error) +} + +// Reconcile deletion events for the FederatedSettings Resource. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type FederatedSettingsDeletionReconciler interface { + ReconcileFederatedSettingsDeletion(req reconcile.Request) error +} + +type FederatedSettingsReconcilerFuncs struct { + OnReconcileFederatedSettings func(obj *fed_gloo_solo_io_v1.FederatedSettings) (reconcile.Result, error) + OnReconcileFederatedSettingsDeletion func(req reconcile.Request) error +} + +func (f *FederatedSettingsReconcilerFuncs) ReconcileFederatedSettings(obj *fed_gloo_solo_io_v1.FederatedSettings) (reconcile.Result, error) { + if f.OnReconcileFederatedSettings == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileFederatedSettings(obj) +} + +func (f *FederatedSettingsReconcilerFuncs) ReconcileFederatedSettingsDeletion(req reconcile.Request) error { + if f.OnReconcileFederatedSettingsDeletion == nil { + return nil + } + return f.OnReconcileFederatedSettingsDeletion(req) +} + +// Reconcile and finalize the FederatedSettings Resource +// implemented by the user +type FederatedSettingsFinalizer interface { + FederatedSettingsReconciler + + // name of the finalizer used by this handler. + // finalizer names should be unique for a single task + FederatedSettingsFinalizerName() string + + // finalize the object before it is deleted. + // Watchers created with a finalizing handler will a + FinalizeFederatedSettings(obj *fed_gloo_solo_io_v1.FederatedSettings) error +} + +type FederatedSettingsReconcileLoop interface { + RunFederatedSettingsReconciler(ctx context.Context, rec FederatedSettingsReconciler, predicates ...predicate.Predicate) error +} + +type federatedSettingsReconcileLoop struct { + loop reconcile.Loop +} + +func NewFederatedSettingsReconcileLoop(name string, mgr manager.Manager, options reconcile.Options) FederatedSettingsReconcileLoop { + return &federatedSettingsReconcileLoop{ + // empty cluster indicates this reconciler is built for the local cluster + loop: reconcile.NewLoop(name, "", mgr, &fed_gloo_solo_io_v1.FederatedSettings{}, options), + } +} + +func (c *federatedSettingsReconcileLoop) RunFederatedSettingsReconciler(ctx context.Context, reconciler FederatedSettingsReconciler, predicates ...predicate.Predicate) error { + genericReconciler := genericFederatedSettingsReconciler{ + reconciler: reconciler, + } + + var reconcilerWrapper reconcile.Reconciler + if finalizingReconciler, ok := reconciler.(FederatedSettingsFinalizer); ok { + reconcilerWrapper = genericFederatedSettingsFinalizer{ + genericFederatedSettingsReconciler: genericReconciler, + finalizingReconciler: finalizingReconciler, + } + } else { + reconcilerWrapper = genericReconciler + } + return c.loop.RunReconciler(ctx, reconcilerWrapper, predicates...) +} + +// genericFederatedSettingsHandler implements a generic reconcile.Reconciler +type genericFederatedSettingsReconciler struct { + reconciler FederatedSettingsReconciler +} + +func (r genericFederatedSettingsReconciler) Reconcile(object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_gloo_solo_io_v1.FederatedSettings) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: FederatedSettings handler received event for %T", object) + } + return r.reconciler.ReconcileFederatedSettings(obj) +} + +func (r genericFederatedSettingsReconciler) ReconcileDeletion(request reconcile.Request) error { + if deletionReconciler, ok := r.reconciler.(FederatedSettingsDeletionReconciler); ok { + return deletionReconciler.ReconcileFederatedSettingsDeletion(request) + } + return nil +} + +// genericFederatedSettingsFinalizer implements a generic reconcile.FinalizingReconciler +type genericFederatedSettingsFinalizer struct { + genericFederatedSettingsReconciler + finalizingReconciler FederatedSettingsFinalizer +} + +func (r genericFederatedSettingsFinalizer) FinalizerName() string { + return r.finalizingReconciler.FederatedSettingsFinalizerName() +} + +func (r genericFederatedSettingsFinalizer) Finalize(object ezkube.Object) error { + obj, ok := object.(*fed_gloo_solo_io_v1.FederatedSettings) + if !ok { + return errors.Errorf("internal error: FederatedSettings handler received event for %T", object) + } + return r.finalizingReconciler.FinalizeFederatedSettings(obj) +} + +// Reconcile Upsert events for the FederatedUpstream Resource. +// implemented by the user +type FederatedUpstreamReconciler interface { + ReconcileFederatedUpstream(obj *fed_gloo_solo_io_v1.FederatedUpstream) (reconcile.Result, error) +} + +// Reconcile deletion events for the FederatedUpstream Resource. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type FederatedUpstreamDeletionReconciler interface { + ReconcileFederatedUpstreamDeletion(req reconcile.Request) error +} + +type FederatedUpstreamReconcilerFuncs struct { + OnReconcileFederatedUpstream func(obj *fed_gloo_solo_io_v1.FederatedUpstream) (reconcile.Result, error) + OnReconcileFederatedUpstreamDeletion func(req reconcile.Request) error +} + +func (f *FederatedUpstreamReconcilerFuncs) ReconcileFederatedUpstream(obj *fed_gloo_solo_io_v1.FederatedUpstream) (reconcile.Result, error) { + if f.OnReconcileFederatedUpstream == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileFederatedUpstream(obj) +} + +func (f *FederatedUpstreamReconcilerFuncs) ReconcileFederatedUpstreamDeletion(req reconcile.Request) error { + if f.OnReconcileFederatedUpstreamDeletion == nil { + return nil + } + return f.OnReconcileFederatedUpstreamDeletion(req) +} + +// Reconcile and finalize the FederatedUpstream Resource +// implemented by the user +type FederatedUpstreamFinalizer interface { + FederatedUpstreamReconciler + + // name of the finalizer used by this handler. + // finalizer names should be unique for a single task + FederatedUpstreamFinalizerName() string + + // finalize the object before it is deleted. + // Watchers created with a finalizing handler will a + FinalizeFederatedUpstream(obj *fed_gloo_solo_io_v1.FederatedUpstream) error +} + +type FederatedUpstreamReconcileLoop interface { + RunFederatedUpstreamReconciler(ctx context.Context, rec FederatedUpstreamReconciler, predicates ...predicate.Predicate) error +} + +type federatedUpstreamReconcileLoop struct { + loop reconcile.Loop +} + +func NewFederatedUpstreamReconcileLoop(name string, mgr manager.Manager, options reconcile.Options) FederatedUpstreamReconcileLoop { + return &federatedUpstreamReconcileLoop{ + // empty cluster indicates this reconciler is built for the local cluster + loop: reconcile.NewLoop(name, "", mgr, &fed_gloo_solo_io_v1.FederatedUpstream{}, options), + } +} + +func (c *federatedUpstreamReconcileLoop) RunFederatedUpstreamReconciler(ctx context.Context, reconciler FederatedUpstreamReconciler, predicates ...predicate.Predicate) error { + genericReconciler := genericFederatedUpstreamReconciler{ + reconciler: reconciler, + } + + var reconcilerWrapper reconcile.Reconciler + if finalizingReconciler, ok := reconciler.(FederatedUpstreamFinalizer); ok { + reconcilerWrapper = genericFederatedUpstreamFinalizer{ + genericFederatedUpstreamReconciler: genericReconciler, + finalizingReconciler: finalizingReconciler, + } + } else { + reconcilerWrapper = genericReconciler + } + return c.loop.RunReconciler(ctx, reconcilerWrapper, predicates...) +} + +// genericFederatedUpstreamHandler implements a generic reconcile.Reconciler +type genericFederatedUpstreamReconciler struct { + reconciler FederatedUpstreamReconciler +} + +func (r genericFederatedUpstreamReconciler) Reconcile(object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_gloo_solo_io_v1.FederatedUpstream) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: FederatedUpstream handler received event for %T", object) + } + return r.reconciler.ReconcileFederatedUpstream(obj) +} + +func (r genericFederatedUpstreamReconciler) ReconcileDeletion(request reconcile.Request) error { + if deletionReconciler, ok := r.reconciler.(FederatedUpstreamDeletionReconciler); ok { + return deletionReconciler.ReconcileFederatedUpstreamDeletion(request) + } + return nil +} + +// genericFederatedUpstreamFinalizer implements a generic reconcile.FinalizingReconciler +type genericFederatedUpstreamFinalizer struct { + genericFederatedUpstreamReconciler + finalizingReconciler FederatedUpstreamFinalizer +} + +func (r genericFederatedUpstreamFinalizer) FinalizerName() string { + return r.finalizingReconciler.FederatedUpstreamFinalizerName() +} + +func (r genericFederatedUpstreamFinalizer) Finalize(object ezkube.Object) error { + obj, ok := object.(*fed_gloo_solo_io_v1.FederatedUpstream) + if !ok { + return errors.Errorf("internal error: FederatedUpstream handler received event for %T", object) + } + return r.finalizingReconciler.FinalizeFederatedUpstream(obj) +} + +// Reconcile Upsert events for the FederatedUpstreamGroup Resource. +// implemented by the user +type FederatedUpstreamGroupReconciler interface { + ReconcileFederatedUpstreamGroup(obj *fed_gloo_solo_io_v1.FederatedUpstreamGroup) (reconcile.Result, error) +} + +// Reconcile deletion events for the FederatedUpstreamGroup Resource. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type FederatedUpstreamGroupDeletionReconciler interface { + ReconcileFederatedUpstreamGroupDeletion(req reconcile.Request) error +} + +type FederatedUpstreamGroupReconcilerFuncs struct { + OnReconcileFederatedUpstreamGroup func(obj *fed_gloo_solo_io_v1.FederatedUpstreamGroup) (reconcile.Result, error) + OnReconcileFederatedUpstreamGroupDeletion func(req reconcile.Request) error +} + +func (f *FederatedUpstreamGroupReconcilerFuncs) ReconcileFederatedUpstreamGroup(obj *fed_gloo_solo_io_v1.FederatedUpstreamGroup) (reconcile.Result, error) { + if f.OnReconcileFederatedUpstreamGroup == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileFederatedUpstreamGroup(obj) +} + +func (f *FederatedUpstreamGroupReconcilerFuncs) ReconcileFederatedUpstreamGroupDeletion(req reconcile.Request) error { + if f.OnReconcileFederatedUpstreamGroupDeletion == nil { + return nil + } + return f.OnReconcileFederatedUpstreamGroupDeletion(req) +} + +// Reconcile and finalize the FederatedUpstreamGroup Resource +// implemented by the user +type FederatedUpstreamGroupFinalizer interface { + FederatedUpstreamGroupReconciler + + // name of the finalizer used by this handler. + // finalizer names should be unique for a single task + FederatedUpstreamGroupFinalizerName() string + + // finalize the object before it is deleted. + // Watchers created with a finalizing handler will a + FinalizeFederatedUpstreamGroup(obj *fed_gloo_solo_io_v1.FederatedUpstreamGroup) error +} + +type FederatedUpstreamGroupReconcileLoop interface { + RunFederatedUpstreamGroupReconciler(ctx context.Context, rec FederatedUpstreamGroupReconciler, predicates ...predicate.Predicate) error +} + +type federatedUpstreamGroupReconcileLoop struct { + loop reconcile.Loop +} + +func NewFederatedUpstreamGroupReconcileLoop(name string, mgr manager.Manager, options reconcile.Options) FederatedUpstreamGroupReconcileLoop { + return &federatedUpstreamGroupReconcileLoop{ + // empty cluster indicates this reconciler is built for the local cluster + loop: reconcile.NewLoop(name, "", mgr, &fed_gloo_solo_io_v1.FederatedUpstreamGroup{}, options), + } +} + +func (c *federatedUpstreamGroupReconcileLoop) RunFederatedUpstreamGroupReconciler(ctx context.Context, reconciler FederatedUpstreamGroupReconciler, predicates ...predicate.Predicate) error { + genericReconciler := genericFederatedUpstreamGroupReconciler{ + reconciler: reconciler, + } + + var reconcilerWrapper reconcile.Reconciler + if finalizingReconciler, ok := reconciler.(FederatedUpstreamGroupFinalizer); ok { + reconcilerWrapper = genericFederatedUpstreamGroupFinalizer{ + genericFederatedUpstreamGroupReconciler: genericReconciler, + finalizingReconciler: finalizingReconciler, + } + } else { + reconcilerWrapper = genericReconciler + } + return c.loop.RunReconciler(ctx, reconcilerWrapper, predicates...) +} + +// genericFederatedUpstreamGroupHandler implements a generic reconcile.Reconciler +type genericFederatedUpstreamGroupReconciler struct { + reconciler FederatedUpstreamGroupReconciler +} + +func (r genericFederatedUpstreamGroupReconciler) Reconcile(object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_gloo_solo_io_v1.FederatedUpstreamGroup) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: FederatedUpstreamGroup handler received event for %T", object) + } + return r.reconciler.ReconcileFederatedUpstreamGroup(obj) +} + +func (r genericFederatedUpstreamGroupReconciler) ReconcileDeletion(request reconcile.Request) error { + if deletionReconciler, ok := r.reconciler.(FederatedUpstreamGroupDeletionReconciler); ok { + return deletionReconciler.ReconcileFederatedUpstreamGroupDeletion(request) + } + return nil +} + +// genericFederatedUpstreamGroupFinalizer implements a generic reconcile.FinalizingReconciler +type genericFederatedUpstreamGroupFinalizer struct { + genericFederatedUpstreamGroupReconciler + finalizingReconciler FederatedUpstreamGroupFinalizer +} + +func (r genericFederatedUpstreamGroupFinalizer) FinalizerName() string { + return r.finalizingReconciler.FederatedUpstreamGroupFinalizerName() +} + +func (r genericFederatedUpstreamGroupFinalizer) Finalize(object ezkube.Object) error { + obj, ok := object.(*fed_gloo_solo_io_v1.FederatedUpstreamGroup) + if !ok { + return errors.Errorf("internal error: FederatedUpstreamGroup handler received event for %T", object) + } + return r.finalizingReconciler.FinalizeFederatedUpstreamGroup(obj) +} diff --git a/pkg/api/fed.gloo.solo.io/v1/doc.go b/pkg/api/fed.gloo.solo.io/v1/doc.go new file mode 100644 index 000000000..139948edc --- /dev/null +++ b/pkg/api/fed.gloo.solo.io/v1/doc.go @@ -0,0 +1,6 @@ +// Code generated by skv2. DO NOT EDIT. + +// Package v1 contains API Schema definitions for the fed.gloo.solo.io v1 API group +// +k8s:deepcopy-gen=package,register +// +groupName=fed.gloo.solo.io +package v1 diff --git a/pkg/api/fed.gloo.solo.io/v1/mocks/clients.go b/pkg/api/fed.gloo.solo.io/v1/mocks/clients.go new file mode 100644 index 000000000..c56e4d94b --- /dev/null +++ b/pkg/api/fed.gloo.solo.io/v1/mocks/clients.go @@ -0,0 +1,1629 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./clients.go + +// Package mock_v1 is a generated GoMock package. +package mock_v1 + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1" + client "sigs.k8s.io/controller-runtime/pkg/client" +) + +// MockMulticlusterClientset is a mock of MulticlusterClientset interface. +type MockMulticlusterClientset struct { + ctrl *gomock.Controller + recorder *MockMulticlusterClientsetMockRecorder +} + +// MockMulticlusterClientsetMockRecorder is the mock recorder for MockMulticlusterClientset. +type MockMulticlusterClientsetMockRecorder struct { + mock *MockMulticlusterClientset +} + +// NewMockMulticlusterClientset creates a new mock instance. +func NewMockMulticlusterClientset(ctrl *gomock.Controller) *MockMulticlusterClientset { + mock := &MockMulticlusterClientset{ctrl: ctrl} + mock.recorder = &MockMulticlusterClientsetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterClientset) EXPECT() *MockMulticlusterClientsetMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterClientset) Cluster(cluster string) (v1.Clientset, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1.Clientset) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterClientsetMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterClientset)(nil).Cluster), cluster) +} + +// MockClientset is a mock of Clientset interface. +type MockClientset struct { + ctrl *gomock.Controller + recorder *MockClientsetMockRecorder +} + +// MockClientsetMockRecorder is the mock recorder for MockClientset. +type MockClientsetMockRecorder struct { + mock *MockClientset +} + +// NewMockClientset creates a new mock instance. +func NewMockClientset(ctrl *gomock.Controller) *MockClientset { + mock := &MockClientset{ctrl: ctrl} + mock.recorder = &MockClientsetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockClientset) EXPECT() *MockClientsetMockRecorder { + return m.recorder +} + +// FederatedSettings mocks base method. +func (m *MockClientset) FederatedSettings() v1.FederatedSettingsClient { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FederatedSettings") + ret0, _ := ret[0].(v1.FederatedSettingsClient) + return ret0 +} + +// FederatedSettings indicates an expected call of FederatedSettings. +func (mr *MockClientsetMockRecorder) FederatedSettings() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FederatedSettings", reflect.TypeOf((*MockClientset)(nil).FederatedSettings)) +} + +// FederatedUpstreamGroups mocks base method. +func (m *MockClientset) FederatedUpstreamGroups() v1.FederatedUpstreamGroupClient { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FederatedUpstreamGroups") + ret0, _ := ret[0].(v1.FederatedUpstreamGroupClient) + return ret0 +} + +// FederatedUpstreamGroups indicates an expected call of FederatedUpstreamGroups. +func (mr *MockClientsetMockRecorder) FederatedUpstreamGroups() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FederatedUpstreamGroups", reflect.TypeOf((*MockClientset)(nil).FederatedUpstreamGroups)) +} + +// FederatedUpstreams mocks base method. +func (m *MockClientset) FederatedUpstreams() v1.FederatedUpstreamClient { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FederatedUpstreams") + ret0, _ := ret[0].(v1.FederatedUpstreamClient) + return ret0 +} + +// FederatedUpstreams indicates an expected call of FederatedUpstreams. +func (mr *MockClientsetMockRecorder) FederatedUpstreams() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FederatedUpstreams", reflect.TypeOf((*MockClientset)(nil).FederatedUpstreams)) +} + +// MockFederatedSettingsReader is a mock of FederatedSettingsReader interface. +type MockFederatedSettingsReader struct { + ctrl *gomock.Controller + recorder *MockFederatedSettingsReaderMockRecorder +} + +// MockFederatedSettingsReaderMockRecorder is the mock recorder for MockFederatedSettingsReader. +type MockFederatedSettingsReaderMockRecorder struct { + mock *MockFederatedSettingsReader +} + +// NewMockFederatedSettingsReader creates a new mock instance. +func NewMockFederatedSettingsReader(ctrl *gomock.Controller) *MockFederatedSettingsReader { + mock := &MockFederatedSettingsReader{ctrl: ctrl} + mock.recorder = &MockFederatedSettingsReaderMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedSettingsReader) EXPECT() *MockFederatedSettingsReaderMockRecorder { + return m.recorder +} + +// GetFederatedSettings mocks base method. +func (m *MockFederatedSettingsReader) GetFederatedSettings(ctx context.Context, key client.ObjectKey) (*v1.FederatedSettings, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFederatedSettings", ctx, key) + ret0, _ := ret[0].(*v1.FederatedSettings) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFederatedSettings indicates an expected call of GetFederatedSettings. +func (mr *MockFederatedSettingsReaderMockRecorder) GetFederatedSettings(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFederatedSettings", reflect.TypeOf((*MockFederatedSettingsReader)(nil).GetFederatedSettings), ctx, key) +} + +// ListFederatedSettings mocks base method. +func (m *MockFederatedSettingsReader) ListFederatedSettings(ctx context.Context, opts ...client.ListOption) (*v1.FederatedSettingsList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFederatedSettings", varargs...) + ret0, _ := ret[0].(*v1.FederatedSettingsList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFederatedSettings indicates an expected call of ListFederatedSettings. +func (mr *MockFederatedSettingsReaderMockRecorder) ListFederatedSettings(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFederatedSettings", reflect.TypeOf((*MockFederatedSettingsReader)(nil).ListFederatedSettings), varargs...) +} + +// MockFederatedSettingsWriter is a mock of FederatedSettingsWriter interface. +type MockFederatedSettingsWriter struct { + ctrl *gomock.Controller + recorder *MockFederatedSettingsWriterMockRecorder +} + +// MockFederatedSettingsWriterMockRecorder is the mock recorder for MockFederatedSettingsWriter. +type MockFederatedSettingsWriterMockRecorder struct { + mock *MockFederatedSettingsWriter +} + +// NewMockFederatedSettingsWriter creates a new mock instance. +func NewMockFederatedSettingsWriter(ctrl *gomock.Controller) *MockFederatedSettingsWriter { + mock := &MockFederatedSettingsWriter{ctrl: ctrl} + mock.recorder = &MockFederatedSettingsWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedSettingsWriter) EXPECT() *MockFederatedSettingsWriterMockRecorder { + return m.recorder +} + +// CreateFederatedSettings mocks base method. +func (m *MockFederatedSettingsWriter) CreateFederatedSettings(ctx context.Context, obj *v1.FederatedSettings, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateFederatedSettings", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedSettings indicates an expected call of CreateFederatedSettings. +func (mr *MockFederatedSettingsWriterMockRecorder) CreateFederatedSettings(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedSettings", reflect.TypeOf((*MockFederatedSettingsWriter)(nil).CreateFederatedSettings), varargs...) +} + +// DeleteAllOfFederatedSettings mocks base method. +func (m *MockFederatedSettingsWriter) DeleteAllOfFederatedSettings(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfFederatedSettings", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfFederatedSettings indicates an expected call of DeleteAllOfFederatedSettings. +func (mr *MockFederatedSettingsWriterMockRecorder) DeleteAllOfFederatedSettings(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfFederatedSettings", reflect.TypeOf((*MockFederatedSettingsWriter)(nil).DeleteAllOfFederatedSettings), varargs...) +} + +// DeleteFederatedSettings mocks base method. +func (m *MockFederatedSettingsWriter) DeleteFederatedSettings(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteFederatedSettings", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedSettings indicates an expected call of DeleteFederatedSettings. +func (mr *MockFederatedSettingsWriterMockRecorder) DeleteFederatedSettings(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedSettings", reflect.TypeOf((*MockFederatedSettingsWriter)(nil).DeleteFederatedSettings), varargs...) +} + +// PatchFederatedSettings mocks base method. +func (m *MockFederatedSettingsWriter) PatchFederatedSettings(ctx context.Context, obj *v1.FederatedSettings, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedSettings", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedSettings indicates an expected call of PatchFederatedSettings. +func (mr *MockFederatedSettingsWriterMockRecorder) PatchFederatedSettings(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedSettings", reflect.TypeOf((*MockFederatedSettingsWriter)(nil).PatchFederatedSettings), varargs...) +} + +// UpdateFederatedSettings mocks base method. +func (m *MockFederatedSettingsWriter) UpdateFederatedSettings(ctx context.Context, obj *v1.FederatedSettings, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedSettings", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedSettings indicates an expected call of UpdateFederatedSettings. +func (mr *MockFederatedSettingsWriterMockRecorder) UpdateFederatedSettings(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedSettings", reflect.TypeOf((*MockFederatedSettingsWriter)(nil).UpdateFederatedSettings), varargs...) +} + +// UpsertFederatedSettings mocks base method. +func (m *MockFederatedSettingsWriter) UpsertFederatedSettings(ctx context.Context, obj *v1.FederatedSettings, transitionFuncs ...v1.FederatedSettingsTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertFederatedSettings", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertFederatedSettings indicates an expected call of UpsertFederatedSettings. +func (mr *MockFederatedSettingsWriterMockRecorder) UpsertFederatedSettings(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertFederatedSettings", reflect.TypeOf((*MockFederatedSettingsWriter)(nil).UpsertFederatedSettings), varargs...) +} + +// MockFederatedSettingsStatusWriter is a mock of FederatedSettingsStatusWriter interface. +type MockFederatedSettingsStatusWriter struct { + ctrl *gomock.Controller + recorder *MockFederatedSettingsStatusWriterMockRecorder +} + +// MockFederatedSettingsStatusWriterMockRecorder is the mock recorder for MockFederatedSettingsStatusWriter. +type MockFederatedSettingsStatusWriterMockRecorder struct { + mock *MockFederatedSettingsStatusWriter +} + +// NewMockFederatedSettingsStatusWriter creates a new mock instance. +func NewMockFederatedSettingsStatusWriter(ctrl *gomock.Controller) *MockFederatedSettingsStatusWriter { + mock := &MockFederatedSettingsStatusWriter{ctrl: ctrl} + mock.recorder = &MockFederatedSettingsStatusWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedSettingsStatusWriter) EXPECT() *MockFederatedSettingsStatusWriterMockRecorder { + return m.recorder +} + +// PatchFederatedSettingsStatus mocks base method. +func (m *MockFederatedSettingsStatusWriter) PatchFederatedSettingsStatus(ctx context.Context, obj *v1.FederatedSettings, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedSettingsStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedSettingsStatus indicates an expected call of PatchFederatedSettingsStatus. +func (mr *MockFederatedSettingsStatusWriterMockRecorder) PatchFederatedSettingsStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedSettingsStatus", reflect.TypeOf((*MockFederatedSettingsStatusWriter)(nil).PatchFederatedSettingsStatus), varargs...) +} + +// UpdateFederatedSettingsStatus mocks base method. +func (m *MockFederatedSettingsStatusWriter) UpdateFederatedSettingsStatus(ctx context.Context, obj *v1.FederatedSettings, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedSettingsStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedSettingsStatus indicates an expected call of UpdateFederatedSettingsStatus. +func (mr *MockFederatedSettingsStatusWriterMockRecorder) UpdateFederatedSettingsStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedSettingsStatus", reflect.TypeOf((*MockFederatedSettingsStatusWriter)(nil).UpdateFederatedSettingsStatus), varargs...) +} + +// MockFederatedSettingsClient is a mock of FederatedSettingsClient interface. +type MockFederatedSettingsClient struct { + ctrl *gomock.Controller + recorder *MockFederatedSettingsClientMockRecorder +} + +// MockFederatedSettingsClientMockRecorder is the mock recorder for MockFederatedSettingsClient. +type MockFederatedSettingsClientMockRecorder struct { + mock *MockFederatedSettingsClient +} + +// NewMockFederatedSettingsClient creates a new mock instance. +func NewMockFederatedSettingsClient(ctrl *gomock.Controller) *MockFederatedSettingsClient { + mock := &MockFederatedSettingsClient{ctrl: ctrl} + mock.recorder = &MockFederatedSettingsClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedSettingsClient) EXPECT() *MockFederatedSettingsClientMockRecorder { + return m.recorder +} + +// CreateFederatedSettings mocks base method. +func (m *MockFederatedSettingsClient) CreateFederatedSettings(ctx context.Context, obj *v1.FederatedSettings, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateFederatedSettings", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedSettings indicates an expected call of CreateFederatedSettings. +func (mr *MockFederatedSettingsClientMockRecorder) CreateFederatedSettings(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedSettings", reflect.TypeOf((*MockFederatedSettingsClient)(nil).CreateFederatedSettings), varargs...) +} + +// DeleteAllOfFederatedSettings mocks base method. +func (m *MockFederatedSettingsClient) DeleteAllOfFederatedSettings(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfFederatedSettings", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfFederatedSettings indicates an expected call of DeleteAllOfFederatedSettings. +func (mr *MockFederatedSettingsClientMockRecorder) DeleteAllOfFederatedSettings(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfFederatedSettings", reflect.TypeOf((*MockFederatedSettingsClient)(nil).DeleteAllOfFederatedSettings), varargs...) +} + +// DeleteFederatedSettings mocks base method. +func (m *MockFederatedSettingsClient) DeleteFederatedSettings(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteFederatedSettings", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedSettings indicates an expected call of DeleteFederatedSettings. +func (mr *MockFederatedSettingsClientMockRecorder) DeleteFederatedSettings(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedSettings", reflect.TypeOf((*MockFederatedSettingsClient)(nil).DeleteFederatedSettings), varargs...) +} + +// GetFederatedSettings mocks base method. +func (m *MockFederatedSettingsClient) GetFederatedSettings(ctx context.Context, key client.ObjectKey) (*v1.FederatedSettings, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFederatedSettings", ctx, key) + ret0, _ := ret[0].(*v1.FederatedSettings) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFederatedSettings indicates an expected call of GetFederatedSettings. +func (mr *MockFederatedSettingsClientMockRecorder) GetFederatedSettings(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFederatedSettings", reflect.TypeOf((*MockFederatedSettingsClient)(nil).GetFederatedSettings), ctx, key) +} + +// ListFederatedSettings mocks base method. +func (m *MockFederatedSettingsClient) ListFederatedSettings(ctx context.Context, opts ...client.ListOption) (*v1.FederatedSettingsList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFederatedSettings", varargs...) + ret0, _ := ret[0].(*v1.FederatedSettingsList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFederatedSettings indicates an expected call of ListFederatedSettings. +func (mr *MockFederatedSettingsClientMockRecorder) ListFederatedSettings(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFederatedSettings", reflect.TypeOf((*MockFederatedSettingsClient)(nil).ListFederatedSettings), varargs...) +} + +// PatchFederatedSettings mocks base method. +func (m *MockFederatedSettingsClient) PatchFederatedSettings(ctx context.Context, obj *v1.FederatedSettings, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedSettings", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedSettings indicates an expected call of PatchFederatedSettings. +func (mr *MockFederatedSettingsClientMockRecorder) PatchFederatedSettings(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedSettings", reflect.TypeOf((*MockFederatedSettingsClient)(nil).PatchFederatedSettings), varargs...) +} + +// PatchFederatedSettingsStatus mocks base method. +func (m *MockFederatedSettingsClient) PatchFederatedSettingsStatus(ctx context.Context, obj *v1.FederatedSettings, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedSettingsStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedSettingsStatus indicates an expected call of PatchFederatedSettingsStatus. +func (mr *MockFederatedSettingsClientMockRecorder) PatchFederatedSettingsStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedSettingsStatus", reflect.TypeOf((*MockFederatedSettingsClient)(nil).PatchFederatedSettingsStatus), varargs...) +} + +// UpdateFederatedSettings mocks base method. +func (m *MockFederatedSettingsClient) UpdateFederatedSettings(ctx context.Context, obj *v1.FederatedSettings, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedSettings", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedSettings indicates an expected call of UpdateFederatedSettings. +func (mr *MockFederatedSettingsClientMockRecorder) UpdateFederatedSettings(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedSettings", reflect.TypeOf((*MockFederatedSettingsClient)(nil).UpdateFederatedSettings), varargs...) +} + +// UpdateFederatedSettingsStatus mocks base method. +func (m *MockFederatedSettingsClient) UpdateFederatedSettingsStatus(ctx context.Context, obj *v1.FederatedSettings, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedSettingsStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedSettingsStatus indicates an expected call of UpdateFederatedSettingsStatus. +func (mr *MockFederatedSettingsClientMockRecorder) UpdateFederatedSettingsStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedSettingsStatus", reflect.TypeOf((*MockFederatedSettingsClient)(nil).UpdateFederatedSettingsStatus), varargs...) +} + +// UpsertFederatedSettings mocks base method. +func (m *MockFederatedSettingsClient) UpsertFederatedSettings(ctx context.Context, obj *v1.FederatedSettings, transitionFuncs ...v1.FederatedSettingsTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertFederatedSettings", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertFederatedSettings indicates an expected call of UpsertFederatedSettings. +func (mr *MockFederatedSettingsClientMockRecorder) UpsertFederatedSettings(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertFederatedSettings", reflect.TypeOf((*MockFederatedSettingsClient)(nil).UpsertFederatedSettings), varargs...) +} + +// MockMulticlusterFederatedSettingsClient is a mock of MulticlusterFederatedSettingsClient interface. +type MockMulticlusterFederatedSettingsClient struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedSettingsClientMockRecorder +} + +// MockMulticlusterFederatedSettingsClientMockRecorder is the mock recorder for MockMulticlusterFederatedSettingsClient. +type MockMulticlusterFederatedSettingsClientMockRecorder struct { + mock *MockMulticlusterFederatedSettingsClient +} + +// NewMockMulticlusterFederatedSettingsClient creates a new mock instance. +func NewMockMulticlusterFederatedSettingsClient(ctrl *gomock.Controller) *MockMulticlusterFederatedSettingsClient { + mock := &MockMulticlusterFederatedSettingsClient{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedSettingsClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedSettingsClient) EXPECT() *MockMulticlusterFederatedSettingsClientMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterFederatedSettingsClient) Cluster(cluster string) (v1.FederatedSettingsClient, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1.FederatedSettingsClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterFederatedSettingsClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterFederatedSettingsClient)(nil).Cluster), cluster) +} + +// MockFederatedUpstreamReader is a mock of FederatedUpstreamReader interface. +type MockFederatedUpstreamReader struct { + ctrl *gomock.Controller + recorder *MockFederatedUpstreamReaderMockRecorder +} + +// MockFederatedUpstreamReaderMockRecorder is the mock recorder for MockFederatedUpstreamReader. +type MockFederatedUpstreamReaderMockRecorder struct { + mock *MockFederatedUpstreamReader +} + +// NewMockFederatedUpstreamReader creates a new mock instance. +func NewMockFederatedUpstreamReader(ctrl *gomock.Controller) *MockFederatedUpstreamReader { + mock := &MockFederatedUpstreamReader{ctrl: ctrl} + mock.recorder = &MockFederatedUpstreamReaderMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedUpstreamReader) EXPECT() *MockFederatedUpstreamReaderMockRecorder { + return m.recorder +} + +// GetFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamReader) GetFederatedUpstream(ctx context.Context, key client.ObjectKey) (*v1.FederatedUpstream, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFederatedUpstream", ctx, key) + ret0, _ := ret[0].(*v1.FederatedUpstream) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFederatedUpstream indicates an expected call of GetFederatedUpstream. +func (mr *MockFederatedUpstreamReaderMockRecorder) GetFederatedUpstream(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamReader)(nil).GetFederatedUpstream), ctx, key) +} + +// ListFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamReader) ListFederatedUpstream(ctx context.Context, opts ...client.ListOption) (*v1.FederatedUpstreamList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFederatedUpstream", varargs...) + ret0, _ := ret[0].(*v1.FederatedUpstreamList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFederatedUpstream indicates an expected call of ListFederatedUpstream. +func (mr *MockFederatedUpstreamReaderMockRecorder) ListFederatedUpstream(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamReader)(nil).ListFederatedUpstream), varargs...) +} + +// MockFederatedUpstreamWriter is a mock of FederatedUpstreamWriter interface. +type MockFederatedUpstreamWriter struct { + ctrl *gomock.Controller + recorder *MockFederatedUpstreamWriterMockRecorder +} + +// MockFederatedUpstreamWriterMockRecorder is the mock recorder for MockFederatedUpstreamWriter. +type MockFederatedUpstreamWriterMockRecorder struct { + mock *MockFederatedUpstreamWriter +} + +// NewMockFederatedUpstreamWriter creates a new mock instance. +func NewMockFederatedUpstreamWriter(ctrl *gomock.Controller) *MockFederatedUpstreamWriter { + mock := &MockFederatedUpstreamWriter{ctrl: ctrl} + mock.recorder = &MockFederatedUpstreamWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedUpstreamWriter) EXPECT() *MockFederatedUpstreamWriterMockRecorder { + return m.recorder +} + +// CreateFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamWriter) CreateFederatedUpstream(ctx context.Context, obj *v1.FederatedUpstream, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateFederatedUpstream", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedUpstream indicates an expected call of CreateFederatedUpstream. +func (mr *MockFederatedUpstreamWriterMockRecorder) CreateFederatedUpstream(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamWriter)(nil).CreateFederatedUpstream), varargs...) +} + +// DeleteAllOfFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamWriter) DeleteAllOfFederatedUpstream(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfFederatedUpstream", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfFederatedUpstream indicates an expected call of DeleteAllOfFederatedUpstream. +func (mr *MockFederatedUpstreamWriterMockRecorder) DeleteAllOfFederatedUpstream(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamWriter)(nil).DeleteAllOfFederatedUpstream), varargs...) +} + +// DeleteFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamWriter) DeleteFederatedUpstream(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteFederatedUpstream", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedUpstream indicates an expected call of DeleteFederatedUpstream. +func (mr *MockFederatedUpstreamWriterMockRecorder) DeleteFederatedUpstream(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamWriter)(nil).DeleteFederatedUpstream), varargs...) +} + +// PatchFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamWriter) PatchFederatedUpstream(ctx context.Context, obj *v1.FederatedUpstream, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedUpstream", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedUpstream indicates an expected call of PatchFederatedUpstream. +func (mr *MockFederatedUpstreamWriterMockRecorder) PatchFederatedUpstream(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamWriter)(nil).PatchFederatedUpstream), varargs...) +} + +// UpdateFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamWriter) UpdateFederatedUpstream(ctx context.Context, obj *v1.FederatedUpstream, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedUpstream", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedUpstream indicates an expected call of UpdateFederatedUpstream. +func (mr *MockFederatedUpstreamWriterMockRecorder) UpdateFederatedUpstream(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamWriter)(nil).UpdateFederatedUpstream), varargs...) +} + +// UpsertFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamWriter) UpsertFederatedUpstream(ctx context.Context, obj *v1.FederatedUpstream, transitionFuncs ...v1.FederatedUpstreamTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertFederatedUpstream", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertFederatedUpstream indicates an expected call of UpsertFederatedUpstream. +func (mr *MockFederatedUpstreamWriterMockRecorder) UpsertFederatedUpstream(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamWriter)(nil).UpsertFederatedUpstream), varargs...) +} + +// MockFederatedUpstreamStatusWriter is a mock of FederatedUpstreamStatusWriter interface. +type MockFederatedUpstreamStatusWriter struct { + ctrl *gomock.Controller + recorder *MockFederatedUpstreamStatusWriterMockRecorder +} + +// MockFederatedUpstreamStatusWriterMockRecorder is the mock recorder for MockFederatedUpstreamStatusWriter. +type MockFederatedUpstreamStatusWriterMockRecorder struct { + mock *MockFederatedUpstreamStatusWriter +} + +// NewMockFederatedUpstreamStatusWriter creates a new mock instance. +func NewMockFederatedUpstreamStatusWriter(ctrl *gomock.Controller) *MockFederatedUpstreamStatusWriter { + mock := &MockFederatedUpstreamStatusWriter{ctrl: ctrl} + mock.recorder = &MockFederatedUpstreamStatusWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedUpstreamStatusWriter) EXPECT() *MockFederatedUpstreamStatusWriterMockRecorder { + return m.recorder +} + +// PatchFederatedUpstreamStatus mocks base method. +func (m *MockFederatedUpstreamStatusWriter) PatchFederatedUpstreamStatus(ctx context.Context, obj *v1.FederatedUpstream, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedUpstreamStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedUpstreamStatus indicates an expected call of PatchFederatedUpstreamStatus. +func (mr *MockFederatedUpstreamStatusWriterMockRecorder) PatchFederatedUpstreamStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedUpstreamStatus", reflect.TypeOf((*MockFederatedUpstreamStatusWriter)(nil).PatchFederatedUpstreamStatus), varargs...) +} + +// UpdateFederatedUpstreamStatus mocks base method. +func (m *MockFederatedUpstreamStatusWriter) UpdateFederatedUpstreamStatus(ctx context.Context, obj *v1.FederatedUpstream, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedUpstreamStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedUpstreamStatus indicates an expected call of UpdateFederatedUpstreamStatus. +func (mr *MockFederatedUpstreamStatusWriterMockRecorder) UpdateFederatedUpstreamStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedUpstreamStatus", reflect.TypeOf((*MockFederatedUpstreamStatusWriter)(nil).UpdateFederatedUpstreamStatus), varargs...) +} + +// MockFederatedUpstreamClient is a mock of FederatedUpstreamClient interface. +type MockFederatedUpstreamClient struct { + ctrl *gomock.Controller + recorder *MockFederatedUpstreamClientMockRecorder +} + +// MockFederatedUpstreamClientMockRecorder is the mock recorder for MockFederatedUpstreamClient. +type MockFederatedUpstreamClientMockRecorder struct { + mock *MockFederatedUpstreamClient +} + +// NewMockFederatedUpstreamClient creates a new mock instance. +func NewMockFederatedUpstreamClient(ctrl *gomock.Controller) *MockFederatedUpstreamClient { + mock := &MockFederatedUpstreamClient{ctrl: ctrl} + mock.recorder = &MockFederatedUpstreamClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedUpstreamClient) EXPECT() *MockFederatedUpstreamClientMockRecorder { + return m.recorder +} + +// CreateFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamClient) CreateFederatedUpstream(ctx context.Context, obj *v1.FederatedUpstream, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateFederatedUpstream", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedUpstream indicates an expected call of CreateFederatedUpstream. +func (mr *MockFederatedUpstreamClientMockRecorder) CreateFederatedUpstream(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamClient)(nil).CreateFederatedUpstream), varargs...) +} + +// DeleteAllOfFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamClient) DeleteAllOfFederatedUpstream(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfFederatedUpstream", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfFederatedUpstream indicates an expected call of DeleteAllOfFederatedUpstream. +func (mr *MockFederatedUpstreamClientMockRecorder) DeleteAllOfFederatedUpstream(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamClient)(nil).DeleteAllOfFederatedUpstream), varargs...) +} + +// DeleteFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamClient) DeleteFederatedUpstream(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteFederatedUpstream", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedUpstream indicates an expected call of DeleteFederatedUpstream. +func (mr *MockFederatedUpstreamClientMockRecorder) DeleteFederatedUpstream(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamClient)(nil).DeleteFederatedUpstream), varargs...) +} + +// GetFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamClient) GetFederatedUpstream(ctx context.Context, key client.ObjectKey) (*v1.FederatedUpstream, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFederatedUpstream", ctx, key) + ret0, _ := ret[0].(*v1.FederatedUpstream) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFederatedUpstream indicates an expected call of GetFederatedUpstream. +func (mr *MockFederatedUpstreamClientMockRecorder) GetFederatedUpstream(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamClient)(nil).GetFederatedUpstream), ctx, key) +} + +// ListFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamClient) ListFederatedUpstream(ctx context.Context, opts ...client.ListOption) (*v1.FederatedUpstreamList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFederatedUpstream", varargs...) + ret0, _ := ret[0].(*v1.FederatedUpstreamList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFederatedUpstream indicates an expected call of ListFederatedUpstream. +func (mr *MockFederatedUpstreamClientMockRecorder) ListFederatedUpstream(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamClient)(nil).ListFederatedUpstream), varargs...) +} + +// PatchFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamClient) PatchFederatedUpstream(ctx context.Context, obj *v1.FederatedUpstream, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedUpstream", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedUpstream indicates an expected call of PatchFederatedUpstream. +func (mr *MockFederatedUpstreamClientMockRecorder) PatchFederatedUpstream(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamClient)(nil).PatchFederatedUpstream), varargs...) +} + +// PatchFederatedUpstreamStatus mocks base method. +func (m *MockFederatedUpstreamClient) PatchFederatedUpstreamStatus(ctx context.Context, obj *v1.FederatedUpstream, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedUpstreamStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedUpstreamStatus indicates an expected call of PatchFederatedUpstreamStatus. +func (mr *MockFederatedUpstreamClientMockRecorder) PatchFederatedUpstreamStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedUpstreamStatus", reflect.TypeOf((*MockFederatedUpstreamClient)(nil).PatchFederatedUpstreamStatus), varargs...) +} + +// UpdateFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamClient) UpdateFederatedUpstream(ctx context.Context, obj *v1.FederatedUpstream, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedUpstream", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedUpstream indicates an expected call of UpdateFederatedUpstream. +func (mr *MockFederatedUpstreamClientMockRecorder) UpdateFederatedUpstream(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamClient)(nil).UpdateFederatedUpstream), varargs...) +} + +// UpdateFederatedUpstreamStatus mocks base method. +func (m *MockFederatedUpstreamClient) UpdateFederatedUpstreamStatus(ctx context.Context, obj *v1.FederatedUpstream, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedUpstreamStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedUpstreamStatus indicates an expected call of UpdateFederatedUpstreamStatus. +func (mr *MockFederatedUpstreamClientMockRecorder) UpdateFederatedUpstreamStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedUpstreamStatus", reflect.TypeOf((*MockFederatedUpstreamClient)(nil).UpdateFederatedUpstreamStatus), varargs...) +} + +// UpsertFederatedUpstream mocks base method. +func (m *MockFederatedUpstreamClient) UpsertFederatedUpstream(ctx context.Context, obj *v1.FederatedUpstream, transitionFuncs ...v1.FederatedUpstreamTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertFederatedUpstream", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertFederatedUpstream indicates an expected call of UpsertFederatedUpstream. +func (mr *MockFederatedUpstreamClientMockRecorder) UpsertFederatedUpstream(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertFederatedUpstream", reflect.TypeOf((*MockFederatedUpstreamClient)(nil).UpsertFederatedUpstream), varargs...) +} + +// MockMulticlusterFederatedUpstreamClient is a mock of MulticlusterFederatedUpstreamClient interface. +type MockMulticlusterFederatedUpstreamClient struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedUpstreamClientMockRecorder +} + +// MockMulticlusterFederatedUpstreamClientMockRecorder is the mock recorder for MockMulticlusterFederatedUpstreamClient. +type MockMulticlusterFederatedUpstreamClientMockRecorder struct { + mock *MockMulticlusterFederatedUpstreamClient +} + +// NewMockMulticlusterFederatedUpstreamClient creates a new mock instance. +func NewMockMulticlusterFederatedUpstreamClient(ctrl *gomock.Controller) *MockMulticlusterFederatedUpstreamClient { + mock := &MockMulticlusterFederatedUpstreamClient{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedUpstreamClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedUpstreamClient) EXPECT() *MockMulticlusterFederatedUpstreamClientMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterFederatedUpstreamClient) Cluster(cluster string) (v1.FederatedUpstreamClient, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1.FederatedUpstreamClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterFederatedUpstreamClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterFederatedUpstreamClient)(nil).Cluster), cluster) +} + +// MockFederatedUpstreamGroupReader is a mock of FederatedUpstreamGroupReader interface. +type MockFederatedUpstreamGroupReader struct { + ctrl *gomock.Controller + recorder *MockFederatedUpstreamGroupReaderMockRecorder +} + +// MockFederatedUpstreamGroupReaderMockRecorder is the mock recorder for MockFederatedUpstreamGroupReader. +type MockFederatedUpstreamGroupReaderMockRecorder struct { + mock *MockFederatedUpstreamGroupReader +} + +// NewMockFederatedUpstreamGroupReader creates a new mock instance. +func NewMockFederatedUpstreamGroupReader(ctrl *gomock.Controller) *MockFederatedUpstreamGroupReader { + mock := &MockFederatedUpstreamGroupReader{ctrl: ctrl} + mock.recorder = &MockFederatedUpstreamGroupReaderMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedUpstreamGroupReader) EXPECT() *MockFederatedUpstreamGroupReaderMockRecorder { + return m.recorder +} + +// GetFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupReader) GetFederatedUpstreamGroup(ctx context.Context, key client.ObjectKey) (*v1.FederatedUpstreamGroup, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFederatedUpstreamGroup", ctx, key) + ret0, _ := ret[0].(*v1.FederatedUpstreamGroup) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFederatedUpstreamGroup indicates an expected call of GetFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupReaderMockRecorder) GetFederatedUpstreamGroup(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupReader)(nil).GetFederatedUpstreamGroup), ctx, key) +} + +// ListFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupReader) ListFederatedUpstreamGroup(ctx context.Context, opts ...client.ListOption) (*v1.FederatedUpstreamGroupList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFederatedUpstreamGroup", varargs...) + ret0, _ := ret[0].(*v1.FederatedUpstreamGroupList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFederatedUpstreamGroup indicates an expected call of ListFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupReaderMockRecorder) ListFederatedUpstreamGroup(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupReader)(nil).ListFederatedUpstreamGroup), varargs...) +} + +// MockFederatedUpstreamGroupWriter is a mock of FederatedUpstreamGroupWriter interface. +type MockFederatedUpstreamGroupWriter struct { + ctrl *gomock.Controller + recorder *MockFederatedUpstreamGroupWriterMockRecorder +} + +// MockFederatedUpstreamGroupWriterMockRecorder is the mock recorder for MockFederatedUpstreamGroupWriter. +type MockFederatedUpstreamGroupWriterMockRecorder struct { + mock *MockFederatedUpstreamGroupWriter +} + +// NewMockFederatedUpstreamGroupWriter creates a new mock instance. +func NewMockFederatedUpstreamGroupWriter(ctrl *gomock.Controller) *MockFederatedUpstreamGroupWriter { + mock := &MockFederatedUpstreamGroupWriter{ctrl: ctrl} + mock.recorder = &MockFederatedUpstreamGroupWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedUpstreamGroupWriter) EXPECT() *MockFederatedUpstreamGroupWriterMockRecorder { + return m.recorder +} + +// CreateFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupWriter) CreateFederatedUpstreamGroup(ctx context.Context, obj *v1.FederatedUpstreamGroup, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateFederatedUpstreamGroup", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedUpstreamGroup indicates an expected call of CreateFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupWriterMockRecorder) CreateFederatedUpstreamGroup(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupWriter)(nil).CreateFederatedUpstreamGroup), varargs...) +} + +// DeleteAllOfFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupWriter) DeleteAllOfFederatedUpstreamGroup(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfFederatedUpstreamGroup", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfFederatedUpstreamGroup indicates an expected call of DeleteAllOfFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupWriterMockRecorder) DeleteAllOfFederatedUpstreamGroup(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupWriter)(nil).DeleteAllOfFederatedUpstreamGroup), varargs...) +} + +// DeleteFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupWriter) DeleteFederatedUpstreamGroup(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteFederatedUpstreamGroup", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedUpstreamGroup indicates an expected call of DeleteFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupWriterMockRecorder) DeleteFederatedUpstreamGroup(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupWriter)(nil).DeleteFederatedUpstreamGroup), varargs...) +} + +// PatchFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupWriter) PatchFederatedUpstreamGroup(ctx context.Context, obj *v1.FederatedUpstreamGroup, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedUpstreamGroup", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedUpstreamGroup indicates an expected call of PatchFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupWriterMockRecorder) PatchFederatedUpstreamGroup(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupWriter)(nil).PatchFederatedUpstreamGroup), varargs...) +} + +// UpdateFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupWriter) UpdateFederatedUpstreamGroup(ctx context.Context, obj *v1.FederatedUpstreamGroup, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedUpstreamGroup", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedUpstreamGroup indicates an expected call of UpdateFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupWriterMockRecorder) UpdateFederatedUpstreamGroup(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupWriter)(nil).UpdateFederatedUpstreamGroup), varargs...) +} + +// UpsertFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupWriter) UpsertFederatedUpstreamGroup(ctx context.Context, obj *v1.FederatedUpstreamGroup, transitionFuncs ...v1.FederatedUpstreamGroupTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertFederatedUpstreamGroup", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertFederatedUpstreamGroup indicates an expected call of UpsertFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupWriterMockRecorder) UpsertFederatedUpstreamGroup(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupWriter)(nil).UpsertFederatedUpstreamGroup), varargs...) +} + +// MockFederatedUpstreamGroupStatusWriter is a mock of FederatedUpstreamGroupStatusWriter interface. +type MockFederatedUpstreamGroupStatusWriter struct { + ctrl *gomock.Controller + recorder *MockFederatedUpstreamGroupStatusWriterMockRecorder +} + +// MockFederatedUpstreamGroupStatusWriterMockRecorder is the mock recorder for MockFederatedUpstreamGroupStatusWriter. +type MockFederatedUpstreamGroupStatusWriterMockRecorder struct { + mock *MockFederatedUpstreamGroupStatusWriter +} + +// NewMockFederatedUpstreamGroupStatusWriter creates a new mock instance. +func NewMockFederatedUpstreamGroupStatusWriter(ctrl *gomock.Controller) *MockFederatedUpstreamGroupStatusWriter { + mock := &MockFederatedUpstreamGroupStatusWriter{ctrl: ctrl} + mock.recorder = &MockFederatedUpstreamGroupStatusWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedUpstreamGroupStatusWriter) EXPECT() *MockFederatedUpstreamGroupStatusWriterMockRecorder { + return m.recorder +} + +// PatchFederatedUpstreamGroupStatus mocks base method. +func (m *MockFederatedUpstreamGroupStatusWriter) PatchFederatedUpstreamGroupStatus(ctx context.Context, obj *v1.FederatedUpstreamGroup, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedUpstreamGroupStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedUpstreamGroupStatus indicates an expected call of PatchFederatedUpstreamGroupStatus. +func (mr *MockFederatedUpstreamGroupStatusWriterMockRecorder) PatchFederatedUpstreamGroupStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedUpstreamGroupStatus", reflect.TypeOf((*MockFederatedUpstreamGroupStatusWriter)(nil).PatchFederatedUpstreamGroupStatus), varargs...) +} + +// UpdateFederatedUpstreamGroupStatus mocks base method. +func (m *MockFederatedUpstreamGroupStatusWriter) UpdateFederatedUpstreamGroupStatus(ctx context.Context, obj *v1.FederatedUpstreamGroup, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedUpstreamGroupStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedUpstreamGroupStatus indicates an expected call of UpdateFederatedUpstreamGroupStatus. +func (mr *MockFederatedUpstreamGroupStatusWriterMockRecorder) UpdateFederatedUpstreamGroupStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedUpstreamGroupStatus", reflect.TypeOf((*MockFederatedUpstreamGroupStatusWriter)(nil).UpdateFederatedUpstreamGroupStatus), varargs...) +} + +// MockFederatedUpstreamGroupClient is a mock of FederatedUpstreamGroupClient interface. +type MockFederatedUpstreamGroupClient struct { + ctrl *gomock.Controller + recorder *MockFederatedUpstreamGroupClientMockRecorder +} + +// MockFederatedUpstreamGroupClientMockRecorder is the mock recorder for MockFederatedUpstreamGroupClient. +type MockFederatedUpstreamGroupClientMockRecorder struct { + mock *MockFederatedUpstreamGroupClient +} + +// NewMockFederatedUpstreamGroupClient creates a new mock instance. +func NewMockFederatedUpstreamGroupClient(ctrl *gomock.Controller) *MockFederatedUpstreamGroupClient { + mock := &MockFederatedUpstreamGroupClient{ctrl: ctrl} + mock.recorder = &MockFederatedUpstreamGroupClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedUpstreamGroupClient) EXPECT() *MockFederatedUpstreamGroupClientMockRecorder { + return m.recorder +} + +// CreateFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupClient) CreateFederatedUpstreamGroup(ctx context.Context, obj *v1.FederatedUpstreamGroup, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateFederatedUpstreamGroup", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedUpstreamGroup indicates an expected call of CreateFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupClientMockRecorder) CreateFederatedUpstreamGroup(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupClient)(nil).CreateFederatedUpstreamGroup), varargs...) +} + +// DeleteAllOfFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupClient) DeleteAllOfFederatedUpstreamGroup(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfFederatedUpstreamGroup", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfFederatedUpstreamGroup indicates an expected call of DeleteAllOfFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupClientMockRecorder) DeleteAllOfFederatedUpstreamGroup(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupClient)(nil).DeleteAllOfFederatedUpstreamGroup), varargs...) +} + +// DeleteFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupClient) DeleteFederatedUpstreamGroup(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteFederatedUpstreamGroup", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedUpstreamGroup indicates an expected call of DeleteFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupClientMockRecorder) DeleteFederatedUpstreamGroup(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupClient)(nil).DeleteFederatedUpstreamGroup), varargs...) +} + +// GetFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupClient) GetFederatedUpstreamGroup(ctx context.Context, key client.ObjectKey) (*v1.FederatedUpstreamGroup, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFederatedUpstreamGroup", ctx, key) + ret0, _ := ret[0].(*v1.FederatedUpstreamGroup) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFederatedUpstreamGroup indicates an expected call of GetFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupClientMockRecorder) GetFederatedUpstreamGroup(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupClient)(nil).GetFederatedUpstreamGroup), ctx, key) +} + +// ListFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupClient) ListFederatedUpstreamGroup(ctx context.Context, opts ...client.ListOption) (*v1.FederatedUpstreamGroupList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFederatedUpstreamGroup", varargs...) + ret0, _ := ret[0].(*v1.FederatedUpstreamGroupList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFederatedUpstreamGroup indicates an expected call of ListFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupClientMockRecorder) ListFederatedUpstreamGroup(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupClient)(nil).ListFederatedUpstreamGroup), varargs...) +} + +// PatchFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupClient) PatchFederatedUpstreamGroup(ctx context.Context, obj *v1.FederatedUpstreamGroup, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedUpstreamGroup", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedUpstreamGroup indicates an expected call of PatchFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupClientMockRecorder) PatchFederatedUpstreamGroup(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupClient)(nil).PatchFederatedUpstreamGroup), varargs...) +} + +// PatchFederatedUpstreamGroupStatus mocks base method. +func (m *MockFederatedUpstreamGroupClient) PatchFederatedUpstreamGroupStatus(ctx context.Context, obj *v1.FederatedUpstreamGroup, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedUpstreamGroupStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedUpstreamGroupStatus indicates an expected call of PatchFederatedUpstreamGroupStatus. +func (mr *MockFederatedUpstreamGroupClientMockRecorder) PatchFederatedUpstreamGroupStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedUpstreamGroupStatus", reflect.TypeOf((*MockFederatedUpstreamGroupClient)(nil).PatchFederatedUpstreamGroupStatus), varargs...) +} + +// UpdateFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupClient) UpdateFederatedUpstreamGroup(ctx context.Context, obj *v1.FederatedUpstreamGroup, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedUpstreamGroup", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedUpstreamGroup indicates an expected call of UpdateFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupClientMockRecorder) UpdateFederatedUpstreamGroup(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupClient)(nil).UpdateFederatedUpstreamGroup), varargs...) +} + +// UpdateFederatedUpstreamGroupStatus mocks base method. +func (m *MockFederatedUpstreamGroupClient) UpdateFederatedUpstreamGroupStatus(ctx context.Context, obj *v1.FederatedUpstreamGroup, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedUpstreamGroupStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedUpstreamGroupStatus indicates an expected call of UpdateFederatedUpstreamGroupStatus. +func (mr *MockFederatedUpstreamGroupClientMockRecorder) UpdateFederatedUpstreamGroupStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedUpstreamGroupStatus", reflect.TypeOf((*MockFederatedUpstreamGroupClient)(nil).UpdateFederatedUpstreamGroupStatus), varargs...) +} + +// UpsertFederatedUpstreamGroup mocks base method. +func (m *MockFederatedUpstreamGroupClient) UpsertFederatedUpstreamGroup(ctx context.Context, obj *v1.FederatedUpstreamGroup, transitionFuncs ...v1.FederatedUpstreamGroupTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertFederatedUpstreamGroup", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertFederatedUpstreamGroup indicates an expected call of UpsertFederatedUpstreamGroup. +func (mr *MockFederatedUpstreamGroupClientMockRecorder) UpsertFederatedUpstreamGroup(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertFederatedUpstreamGroup", reflect.TypeOf((*MockFederatedUpstreamGroupClient)(nil).UpsertFederatedUpstreamGroup), varargs...) +} + +// MockMulticlusterFederatedUpstreamGroupClient is a mock of MulticlusterFederatedUpstreamGroupClient interface. +type MockMulticlusterFederatedUpstreamGroupClient struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedUpstreamGroupClientMockRecorder +} + +// MockMulticlusterFederatedUpstreamGroupClientMockRecorder is the mock recorder for MockMulticlusterFederatedUpstreamGroupClient. +type MockMulticlusterFederatedUpstreamGroupClientMockRecorder struct { + mock *MockMulticlusterFederatedUpstreamGroupClient +} + +// NewMockMulticlusterFederatedUpstreamGroupClient creates a new mock instance. +func NewMockMulticlusterFederatedUpstreamGroupClient(ctrl *gomock.Controller) *MockMulticlusterFederatedUpstreamGroupClient { + mock := &MockMulticlusterFederatedUpstreamGroupClient{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedUpstreamGroupClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedUpstreamGroupClient) EXPECT() *MockMulticlusterFederatedUpstreamGroupClientMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterFederatedUpstreamGroupClient) Cluster(cluster string) (v1.FederatedUpstreamGroupClient, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1.FederatedUpstreamGroupClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterFederatedUpstreamGroupClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterFederatedUpstreamGroupClient)(nil).Cluster), cluster) +} diff --git a/pkg/api/fed.gloo.solo.io/v1/providers/client_providers.go b/pkg/api/fed.gloo.solo.io/v1/providers/client_providers.go new file mode 100644 index 000000000..56c7779ff --- /dev/null +++ b/pkg/api/fed.gloo.solo.io/v1/providers/client_providers.go @@ -0,0 +1,102 @@ +// Code generated by skv2. DO NOT EDIT. + +package v1 + +import ( + fed_gloo_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1" + + "k8s.io/client-go/rest" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +/* + The intention of these providers are to be used for Mocking. + They expose the Clients as interfaces, as well as factories to provide mocked versions + of the clients when they require building within a component. + + See package `github.com/solo-io/skv2/pkg/multicluster/register` for example +*/ + +// Provider for FederatedSettingsClient from Clientset +func FederatedSettingsClientFromClientsetProvider(clients fed_gloo_solo_io_v1.Clientset) fed_gloo_solo_io_v1.FederatedSettingsClient { + return clients.FederatedSettings() +} + +// Provider for FederatedSettings Client from Client +func FederatedSettingsClientProvider(client client.Client) fed_gloo_solo_io_v1.FederatedSettingsClient { + return fed_gloo_solo_io_v1.NewFederatedSettingsClient(client) +} + +type FederatedSettingsClientFactory func(client client.Client) fed_gloo_solo_io_v1.FederatedSettingsClient + +func FederatedSettingsClientFactoryProvider() FederatedSettingsClientFactory { + return FederatedSettingsClientProvider +} + +type FederatedSettingsClientFromConfigFactory func(cfg *rest.Config) (fed_gloo_solo_io_v1.FederatedSettingsClient, error) + +func FederatedSettingsClientFromConfigFactoryProvider() FederatedSettingsClientFromConfigFactory { + return func(cfg *rest.Config) (fed_gloo_solo_io_v1.FederatedSettingsClient, error) { + clients, err := fed_gloo_solo_io_v1.NewClientsetFromConfig(cfg) + if err != nil { + return nil, err + } + return clients.FederatedSettings(), nil + } +} + +// Provider for FederatedUpstreamClient from Clientset +func FederatedUpstreamClientFromClientsetProvider(clients fed_gloo_solo_io_v1.Clientset) fed_gloo_solo_io_v1.FederatedUpstreamClient { + return clients.FederatedUpstreams() +} + +// Provider for FederatedUpstream Client from Client +func FederatedUpstreamClientProvider(client client.Client) fed_gloo_solo_io_v1.FederatedUpstreamClient { + return fed_gloo_solo_io_v1.NewFederatedUpstreamClient(client) +} + +type FederatedUpstreamClientFactory func(client client.Client) fed_gloo_solo_io_v1.FederatedUpstreamClient + +func FederatedUpstreamClientFactoryProvider() FederatedUpstreamClientFactory { + return FederatedUpstreamClientProvider +} + +type FederatedUpstreamClientFromConfigFactory func(cfg *rest.Config) (fed_gloo_solo_io_v1.FederatedUpstreamClient, error) + +func FederatedUpstreamClientFromConfigFactoryProvider() FederatedUpstreamClientFromConfigFactory { + return func(cfg *rest.Config) (fed_gloo_solo_io_v1.FederatedUpstreamClient, error) { + clients, err := fed_gloo_solo_io_v1.NewClientsetFromConfig(cfg) + if err != nil { + return nil, err + } + return clients.FederatedUpstreams(), nil + } +} + +// Provider for FederatedUpstreamGroupClient from Clientset +func FederatedUpstreamGroupClientFromClientsetProvider(clients fed_gloo_solo_io_v1.Clientset) fed_gloo_solo_io_v1.FederatedUpstreamGroupClient { + return clients.FederatedUpstreamGroups() +} + +// Provider for FederatedUpstreamGroup Client from Client +func FederatedUpstreamGroupClientProvider(client client.Client) fed_gloo_solo_io_v1.FederatedUpstreamGroupClient { + return fed_gloo_solo_io_v1.NewFederatedUpstreamGroupClient(client) +} + +type FederatedUpstreamGroupClientFactory func(client client.Client) fed_gloo_solo_io_v1.FederatedUpstreamGroupClient + +func FederatedUpstreamGroupClientFactoryProvider() FederatedUpstreamGroupClientFactory { + return FederatedUpstreamGroupClientProvider +} + +type FederatedUpstreamGroupClientFromConfigFactory func(cfg *rest.Config) (fed_gloo_solo_io_v1.FederatedUpstreamGroupClient, error) + +func FederatedUpstreamGroupClientFromConfigFactoryProvider() FederatedUpstreamGroupClientFromConfigFactory { + return func(cfg *rest.Config) (fed_gloo_solo_io_v1.FederatedUpstreamGroupClient, error) { + clients, err := fed_gloo_solo_io_v1.NewClientsetFromConfig(cfg) + if err != nil { + return nil, err + } + return clients.FederatedUpstreamGroups(), nil + } +} diff --git a/pkg/api/fed.gloo.solo.io/v1/register.go b/pkg/api/fed.gloo.solo.io/v1/register.go new file mode 100644 index 000000000..027954455 --- /dev/null +++ b/pkg/api/fed.gloo.solo.io/v1/register.go @@ -0,0 +1,33 @@ +// Code generated by skv2. DO NOT EDIT. + +// NOTE: Boilerplate only. Ignore this file. +// Used to register the Go types with the Kubernetes +// internal scheme +package v1 + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// AddToSchemes may be used to add all resources defined in the project to a Scheme + +// AddToScheme adds all Resources to the Scheme + +var ( + // SchemeGroupVersion is group version used to register these objects + SchemeGroupVersion = schema.GroupVersion{Group: "fed.gloo.solo.io", Version: "v1"} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion} +) + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +func AddToScheme(s *runtime.Scheme) error { + return SchemeBuilder.AddToScheme(s) +} diff --git a/pkg/api/fed.gloo.solo.io/v1/sets/mocks/sets.go b/pkg/api/fed.gloo.solo.io/v1/sets/mocks/sets.go new file mode 100644 index 000000000..b8431b367 --- /dev/null +++ b/pkg/api/fed.gloo.solo.io/v1/sets/mocks/sets.go @@ -0,0 +1,784 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./sets.go + +// Package mock_v1sets is a generated GoMock package. +package mock_v1sets + +import ( + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + sets "github.com/solo-io/skv2/contrib/pkg/sets" + ezkube "github.com/solo-io/skv2/pkg/ezkube" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1" + v1sets "github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1/sets" + sets0 "k8s.io/apimachinery/pkg/util/sets" +) + +// MockFederatedSettingsSet is a mock of FederatedSettingsSet interface. +type MockFederatedSettingsSet struct { + ctrl *gomock.Controller + recorder *MockFederatedSettingsSetMockRecorder +} + +// MockFederatedSettingsSetMockRecorder is the mock recorder for MockFederatedSettingsSet. +type MockFederatedSettingsSetMockRecorder struct { + mock *MockFederatedSettingsSet +} + +// NewMockFederatedSettingsSet creates a new mock instance. +func NewMockFederatedSettingsSet(ctrl *gomock.Controller) *MockFederatedSettingsSet { + mock := &MockFederatedSettingsSet{ctrl: ctrl} + mock.recorder = &MockFederatedSettingsSetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedSettingsSet) EXPECT() *MockFederatedSettingsSetMockRecorder { + return m.recorder +} + +// Clone mocks base method. +func (m *MockFederatedSettingsSet) Clone() v1sets.FederatedSettingsSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.FederatedSettingsSet) + return ret0 +} + +// Clone indicates an expected call of Clone. +func (mr *MockFederatedSettingsSetMockRecorder) Clone() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockFederatedSettingsSet)(nil).Clone)) +} + +// Delete mocks base method. +func (m *MockFederatedSettingsSet) Delete(federatedSettings ezkube.ResourceId) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Delete", federatedSettings) +} + +// Delete indicates an expected call of Delete. +func (mr *MockFederatedSettingsSetMockRecorder) Delete(federatedSettings interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockFederatedSettingsSet)(nil).Delete), federatedSettings) +} + +// Delta mocks base method. +func (m *MockFederatedSettingsSet) Delta(newSet v1sets.FederatedSettingsSet) sets.ResourceDelta { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) + return ret0 +} + +// Delta indicates an expected call of Delta. +func (mr *MockFederatedSettingsSetMockRecorder) Delta(newSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockFederatedSettingsSet)(nil).Delta), newSet) +} + +// Difference mocks base method. +func (m *MockFederatedSettingsSet) Difference(set v1sets.FederatedSettingsSet) v1sets.FederatedSettingsSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.FederatedSettingsSet) + return ret0 +} + +// Difference indicates an expected call of Difference. +func (mr *MockFederatedSettingsSetMockRecorder) Difference(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockFederatedSettingsSet)(nil).Difference), set) +} + +// Equal mocks base method. +func (m *MockFederatedSettingsSet) Equal(federatedSettingsSet v1sets.FederatedSettingsSet) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Equal", federatedSettingsSet) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Equal indicates an expected call of Equal. +func (mr *MockFederatedSettingsSetMockRecorder) Equal(federatedSettingsSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockFederatedSettingsSet)(nil).Equal), federatedSettingsSet) +} + +// Find mocks base method. +func (m *MockFederatedSettingsSet) Find(id ezkube.ResourceId) (*v1.FederatedSettings, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.FederatedSettings) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Find indicates an expected call of Find. +func (mr *MockFederatedSettingsSetMockRecorder) Find(id interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockFederatedSettingsSet)(nil).Find), id) +} + +// Generic mocks base method. +func (m *MockFederatedSettingsSet) Generic() sets.ResourceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 +} + +// Generic indicates an expected call of Generic. +func (mr *MockFederatedSettingsSetMockRecorder) Generic() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockFederatedSettingsSet)(nil).Generic)) +} + +// Has mocks base method. +func (m *MockFederatedSettingsSet) Has(federatedSettings ezkube.ResourceId) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Has", federatedSettings) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Has indicates an expected call of Has. +func (mr *MockFederatedSettingsSetMockRecorder) Has(federatedSettings interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockFederatedSettingsSet)(nil).Has), federatedSettings) +} + +// Insert mocks base method. +func (m *MockFederatedSettingsSet) Insert(federatedSettings ...*v1.FederatedSettings) { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range federatedSettings { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) +} + +// Insert indicates an expected call of Insert. +func (mr *MockFederatedSettingsSetMockRecorder) Insert(federatedSettings ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockFederatedSettingsSet)(nil).Insert), federatedSettings...) +} + +// Intersection mocks base method. +func (m *MockFederatedSettingsSet) Intersection(set v1sets.FederatedSettingsSet) v1sets.FederatedSettingsSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Intersection", set) + ret0, _ := ret[0].(v1sets.FederatedSettingsSet) + return ret0 +} + +// Intersection indicates an expected call of Intersection. +func (mr *MockFederatedSettingsSetMockRecorder) Intersection(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockFederatedSettingsSet)(nil).Intersection), set) +} + +// Keys mocks base method. +func (m *MockFederatedSettingsSet) Keys() sets0.String { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 +} + +// Keys indicates an expected call of Keys. +func (mr *MockFederatedSettingsSetMockRecorder) Keys() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockFederatedSettingsSet)(nil).Keys)) +} + +// Length mocks base method. +func (m *MockFederatedSettingsSet) Length() int { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Length") + ret0, _ := ret[0].(int) + return ret0 +} + +// Length indicates an expected call of Length. +func (mr *MockFederatedSettingsSetMockRecorder) Length() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockFederatedSettingsSet)(nil).Length)) +} + +// List mocks base method. +func (m *MockFederatedSettingsSet) List(filterResource ...func(*v1.FederatedSettings) bool) []*v1.FederatedSettings { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.FederatedSettings) + return ret0 +} + +// List indicates an expected call of List. +func (mr *MockFederatedSettingsSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockFederatedSettingsSet)(nil).List), filterResource...) +} + +// Map mocks base method. +func (m *MockFederatedSettingsSet) Map() map[string]*v1.FederatedSettings { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.FederatedSettings) + return ret0 +} + +// Map indicates an expected call of Map. +func (mr *MockFederatedSettingsSetMockRecorder) Map() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockFederatedSettingsSet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockFederatedSettingsSet) Union(set v1sets.FederatedSettingsSet) v1sets.FederatedSettingsSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.FederatedSettingsSet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockFederatedSettingsSetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockFederatedSettingsSet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockFederatedSettingsSet) UnsortedList(filterResource ...func(*v1.FederatedSettings) bool) []*v1.FederatedSettings { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.FederatedSettings) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockFederatedSettingsSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockFederatedSettingsSet)(nil).UnsortedList), filterResource...) +} + +// MockFederatedUpstreamSet is a mock of FederatedUpstreamSet interface. +type MockFederatedUpstreamSet struct { + ctrl *gomock.Controller + recorder *MockFederatedUpstreamSetMockRecorder +} + +// MockFederatedUpstreamSetMockRecorder is the mock recorder for MockFederatedUpstreamSet. +type MockFederatedUpstreamSetMockRecorder struct { + mock *MockFederatedUpstreamSet +} + +// NewMockFederatedUpstreamSet creates a new mock instance. +func NewMockFederatedUpstreamSet(ctrl *gomock.Controller) *MockFederatedUpstreamSet { + mock := &MockFederatedUpstreamSet{ctrl: ctrl} + mock.recorder = &MockFederatedUpstreamSetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedUpstreamSet) EXPECT() *MockFederatedUpstreamSetMockRecorder { + return m.recorder +} + +// Clone mocks base method. +func (m *MockFederatedUpstreamSet) Clone() v1sets.FederatedUpstreamSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.FederatedUpstreamSet) + return ret0 +} + +// Clone indicates an expected call of Clone. +func (mr *MockFederatedUpstreamSetMockRecorder) Clone() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockFederatedUpstreamSet)(nil).Clone)) +} + +// Delete mocks base method. +func (m *MockFederatedUpstreamSet) Delete(federatedUpstream ezkube.ResourceId) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Delete", federatedUpstream) +} + +// Delete indicates an expected call of Delete. +func (mr *MockFederatedUpstreamSetMockRecorder) Delete(federatedUpstream interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockFederatedUpstreamSet)(nil).Delete), federatedUpstream) +} + +// Delta mocks base method. +func (m *MockFederatedUpstreamSet) Delta(newSet v1sets.FederatedUpstreamSet) sets.ResourceDelta { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) + return ret0 +} + +// Delta indicates an expected call of Delta. +func (mr *MockFederatedUpstreamSetMockRecorder) Delta(newSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockFederatedUpstreamSet)(nil).Delta), newSet) +} + +// Difference mocks base method. +func (m *MockFederatedUpstreamSet) Difference(set v1sets.FederatedUpstreamSet) v1sets.FederatedUpstreamSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.FederatedUpstreamSet) + return ret0 +} + +// Difference indicates an expected call of Difference. +func (mr *MockFederatedUpstreamSetMockRecorder) Difference(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockFederatedUpstreamSet)(nil).Difference), set) +} + +// Equal mocks base method. +func (m *MockFederatedUpstreamSet) Equal(federatedUpstreamSet v1sets.FederatedUpstreamSet) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Equal", federatedUpstreamSet) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Equal indicates an expected call of Equal. +func (mr *MockFederatedUpstreamSetMockRecorder) Equal(federatedUpstreamSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockFederatedUpstreamSet)(nil).Equal), federatedUpstreamSet) +} + +// Find mocks base method. +func (m *MockFederatedUpstreamSet) Find(id ezkube.ResourceId) (*v1.FederatedUpstream, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.FederatedUpstream) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Find indicates an expected call of Find. +func (mr *MockFederatedUpstreamSetMockRecorder) Find(id interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockFederatedUpstreamSet)(nil).Find), id) +} + +// Generic mocks base method. +func (m *MockFederatedUpstreamSet) Generic() sets.ResourceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 +} + +// Generic indicates an expected call of Generic. +func (mr *MockFederatedUpstreamSetMockRecorder) Generic() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockFederatedUpstreamSet)(nil).Generic)) +} + +// Has mocks base method. +func (m *MockFederatedUpstreamSet) Has(federatedUpstream ezkube.ResourceId) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Has", federatedUpstream) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Has indicates an expected call of Has. +func (mr *MockFederatedUpstreamSetMockRecorder) Has(federatedUpstream interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockFederatedUpstreamSet)(nil).Has), federatedUpstream) +} + +// Insert mocks base method. +func (m *MockFederatedUpstreamSet) Insert(federatedUpstream ...*v1.FederatedUpstream) { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range federatedUpstream { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) +} + +// Insert indicates an expected call of Insert. +func (mr *MockFederatedUpstreamSetMockRecorder) Insert(federatedUpstream ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockFederatedUpstreamSet)(nil).Insert), federatedUpstream...) +} + +// Intersection mocks base method. +func (m *MockFederatedUpstreamSet) Intersection(set v1sets.FederatedUpstreamSet) v1sets.FederatedUpstreamSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Intersection", set) + ret0, _ := ret[0].(v1sets.FederatedUpstreamSet) + return ret0 +} + +// Intersection indicates an expected call of Intersection. +func (mr *MockFederatedUpstreamSetMockRecorder) Intersection(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockFederatedUpstreamSet)(nil).Intersection), set) +} + +// Keys mocks base method. +func (m *MockFederatedUpstreamSet) Keys() sets0.String { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 +} + +// Keys indicates an expected call of Keys. +func (mr *MockFederatedUpstreamSetMockRecorder) Keys() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockFederatedUpstreamSet)(nil).Keys)) +} + +// Length mocks base method. +func (m *MockFederatedUpstreamSet) Length() int { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Length") + ret0, _ := ret[0].(int) + return ret0 +} + +// Length indicates an expected call of Length. +func (mr *MockFederatedUpstreamSetMockRecorder) Length() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockFederatedUpstreamSet)(nil).Length)) +} + +// List mocks base method. +func (m *MockFederatedUpstreamSet) List(filterResource ...func(*v1.FederatedUpstream) bool) []*v1.FederatedUpstream { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.FederatedUpstream) + return ret0 +} + +// List indicates an expected call of List. +func (mr *MockFederatedUpstreamSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockFederatedUpstreamSet)(nil).List), filterResource...) +} + +// Map mocks base method. +func (m *MockFederatedUpstreamSet) Map() map[string]*v1.FederatedUpstream { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.FederatedUpstream) + return ret0 +} + +// Map indicates an expected call of Map. +func (mr *MockFederatedUpstreamSetMockRecorder) Map() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockFederatedUpstreamSet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockFederatedUpstreamSet) Union(set v1sets.FederatedUpstreamSet) v1sets.FederatedUpstreamSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.FederatedUpstreamSet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockFederatedUpstreamSetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockFederatedUpstreamSet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockFederatedUpstreamSet) UnsortedList(filterResource ...func(*v1.FederatedUpstream) bool) []*v1.FederatedUpstream { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.FederatedUpstream) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockFederatedUpstreamSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockFederatedUpstreamSet)(nil).UnsortedList), filterResource...) +} + +// MockFederatedUpstreamGroupSet is a mock of FederatedUpstreamGroupSet interface. +type MockFederatedUpstreamGroupSet struct { + ctrl *gomock.Controller + recorder *MockFederatedUpstreamGroupSetMockRecorder +} + +// MockFederatedUpstreamGroupSetMockRecorder is the mock recorder for MockFederatedUpstreamGroupSet. +type MockFederatedUpstreamGroupSetMockRecorder struct { + mock *MockFederatedUpstreamGroupSet +} + +// NewMockFederatedUpstreamGroupSet creates a new mock instance. +func NewMockFederatedUpstreamGroupSet(ctrl *gomock.Controller) *MockFederatedUpstreamGroupSet { + mock := &MockFederatedUpstreamGroupSet{ctrl: ctrl} + mock.recorder = &MockFederatedUpstreamGroupSetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedUpstreamGroupSet) EXPECT() *MockFederatedUpstreamGroupSetMockRecorder { + return m.recorder +} + +// Clone mocks base method. +func (m *MockFederatedUpstreamGroupSet) Clone() v1sets.FederatedUpstreamGroupSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.FederatedUpstreamGroupSet) + return ret0 +} + +// Clone indicates an expected call of Clone. +func (mr *MockFederatedUpstreamGroupSetMockRecorder) Clone() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockFederatedUpstreamGroupSet)(nil).Clone)) +} + +// Delete mocks base method. +func (m *MockFederatedUpstreamGroupSet) Delete(federatedUpstreamGroup ezkube.ResourceId) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Delete", federatedUpstreamGroup) +} + +// Delete indicates an expected call of Delete. +func (mr *MockFederatedUpstreamGroupSetMockRecorder) Delete(federatedUpstreamGroup interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockFederatedUpstreamGroupSet)(nil).Delete), federatedUpstreamGroup) +} + +// Delta mocks base method. +func (m *MockFederatedUpstreamGroupSet) Delta(newSet v1sets.FederatedUpstreamGroupSet) sets.ResourceDelta { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) + return ret0 +} + +// Delta indicates an expected call of Delta. +func (mr *MockFederatedUpstreamGroupSetMockRecorder) Delta(newSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockFederatedUpstreamGroupSet)(nil).Delta), newSet) +} + +// Difference mocks base method. +func (m *MockFederatedUpstreamGroupSet) Difference(set v1sets.FederatedUpstreamGroupSet) v1sets.FederatedUpstreamGroupSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.FederatedUpstreamGroupSet) + return ret0 +} + +// Difference indicates an expected call of Difference. +func (mr *MockFederatedUpstreamGroupSetMockRecorder) Difference(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockFederatedUpstreamGroupSet)(nil).Difference), set) +} + +// Equal mocks base method. +func (m *MockFederatedUpstreamGroupSet) Equal(federatedUpstreamGroupSet v1sets.FederatedUpstreamGroupSet) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Equal", federatedUpstreamGroupSet) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Equal indicates an expected call of Equal. +func (mr *MockFederatedUpstreamGroupSetMockRecorder) Equal(federatedUpstreamGroupSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockFederatedUpstreamGroupSet)(nil).Equal), federatedUpstreamGroupSet) +} + +// Find mocks base method. +func (m *MockFederatedUpstreamGroupSet) Find(id ezkube.ResourceId) (*v1.FederatedUpstreamGroup, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.FederatedUpstreamGroup) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Find indicates an expected call of Find. +func (mr *MockFederatedUpstreamGroupSetMockRecorder) Find(id interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockFederatedUpstreamGroupSet)(nil).Find), id) +} + +// Generic mocks base method. +func (m *MockFederatedUpstreamGroupSet) Generic() sets.ResourceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 +} + +// Generic indicates an expected call of Generic. +func (mr *MockFederatedUpstreamGroupSetMockRecorder) Generic() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockFederatedUpstreamGroupSet)(nil).Generic)) +} + +// Has mocks base method. +func (m *MockFederatedUpstreamGroupSet) Has(federatedUpstreamGroup ezkube.ResourceId) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Has", federatedUpstreamGroup) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Has indicates an expected call of Has. +func (mr *MockFederatedUpstreamGroupSetMockRecorder) Has(federatedUpstreamGroup interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockFederatedUpstreamGroupSet)(nil).Has), federatedUpstreamGroup) +} + +// Insert mocks base method. +func (m *MockFederatedUpstreamGroupSet) Insert(federatedUpstreamGroup ...*v1.FederatedUpstreamGroup) { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range federatedUpstreamGroup { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) +} + +// Insert indicates an expected call of Insert. +func (mr *MockFederatedUpstreamGroupSetMockRecorder) Insert(federatedUpstreamGroup ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockFederatedUpstreamGroupSet)(nil).Insert), federatedUpstreamGroup...) +} + +// Intersection mocks base method. +func (m *MockFederatedUpstreamGroupSet) Intersection(set v1sets.FederatedUpstreamGroupSet) v1sets.FederatedUpstreamGroupSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Intersection", set) + ret0, _ := ret[0].(v1sets.FederatedUpstreamGroupSet) + return ret0 +} + +// Intersection indicates an expected call of Intersection. +func (mr *MockFederatedUpstreamGroupSetMockRecorder) Intersection(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockFederatedUpstreamGroupSet)(nil).Intersection), set) +} + +// Keys mocks base method. +func (m *MockFederatedUpstreamGroupSet) Keys() sets0.String { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 +} + +// Keys indicates an expected call of Keys. +func (mr *MockFederatedUpstreamGroupSetMockRecorder) Keys() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockFederatedUpstreamGroupSet)(nil).Keys)) +} + +// Length mocks base method. +func (m *MockFederatedUpstreamGroupSet) Length() int { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Length") + ret0, _ := ret[0].(int) + return ret0 +} + +// Length indicates an expected call of Length. +func (mr *MockFederatedUpstreamGroupSetMockRecorder) Length() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockFederatedUpstreamGroupSet)(nil).Length)) +} + +// List mocks base method. +func (m *MockFederatedUpstreamGroupSet) List(filterResource ...func(*v1.FederatedUpstreamGroup) bool) []*v1.FederatedUpstreamGroup { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.FederatedUpstreamGroup) + return ret0 +} + +// List indicates an expected call of List. +func (mr *MockFederatedUpstreamGroupSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockFederatedUpstreamGroupSet)(nil).List), filterResource...) +} + +// Map mocks base method. +func (m *MockFederatedUpstreamGroupSet) Map() map[string]*v1.FederatedUpstreamGroup { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.FederatedUpstreamGroup) + return ret0 +} + +// Map indicates an expected call of Map. +func (mr *MockFederatedUpstreamGroupSetMockRecorder) Map() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockFederatedUpstreamGroupSet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockFederatedUpstreamGroupSet) Union(set v1sets.FederatedUpstreamGroupSet) v1sets.FederatedUpstreamGroupSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.FederatedUpstreamGroupSet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockFederatedUpstreamGroupSetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockFederatedUpstreamGroupSet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockFederatedUpstreamGroupSet) UnsortedList(filterResource ...func(*v1.FederatedUpstreamGroup) bool) []*v1.FederatedUpstreamGroup { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.FederatedUpstreamGroup) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockFederatedUpstreamGroupSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockFederatedUpstreamGroupSet)(nil).UnsortedList), filterResource...) +} diff --git a/pkg/api/fed.gloo.solo.io/v1/sets/sets.go b/pkg/api/fed.gloo.solo.io/v1/sets/sets.go new file mode 100644 index 000000000..2143be4e2 --- /dev/null +++ b/pkg/api/fed.gloo.solo.io/v1/sets/sets.go @@ -0,0 +1,683 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./sets.go -destination mocks/sets.go + +package v1sets + +import ( + fed_gloo_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1" + + "github.com/rotisserie/eris" + sksets "github.com/solo-io/skv2/contrib/pkg/sets" + "github.com/solo-io/skv2/pkg/ezkube" + "k8s.io/apimachinery/pkg/util/sets" +) + +type FederatedSettingsSet interface { + // Get the set stored keys + Keys() sets.String + // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + List(filterResource ...func(*fed_gloo_solo_io_v1.FederatedSettings) bool) []*fed_gloo_solo_io_v1.FederatedSettings + // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + UnsortedList(filterResource ...func(*fed_gloo_solo_io_v1.FederatedSettings) bool) []*fed_gloo_solo_io_v1.FederatedSettings + // Return the Set as a map of key to resource. + Map() map[string]*fed_gloo_solo_io_v1.FederatedSettings + // Insert a resource into the set. + Insert(federatedSettings ...*fed_gloo_solo_io_v1.FederatedSettings) + // Compare the equality of the keys in two sets (not the resources themselves) + Equal(federatedSettingsSet FederatedSettingsSet) bool + // Check if the set contains a key matching the resource (not the resource itself) + Has(federatedSettings ezkube.ResourceId) bool + // Delete the key matching the resource + Delete(federatedSettings ezkube.ResourceId) + // Return the union with the provided set + Union(set FederatedSettingsSet) FederatedSettingsSet + // Return the difference with the provided set + Difference(set FederatedSettingsSet) FederatedSettingsSet + // Return the intersection with the provided set + Intersection(set FederatedSettingsSet) FederatedSettingsSet + // Find the resource with the given ID + Find(id ezkube.ResourceId) (*fed_gloo_solo_io_v1.FederatedSettings, error) + // Get the length of the set + Length() int + // returns the generic implementation of the set + Generic() sksets.ResourceSet + // returns the delta between this and and another FederatedSettingsSet + Delta(newSet FederatedSettingsSet) sksets.ResourceDelta + // Create a deep copy of the current FederatedSettingsSet + Clone() FederatedSettingsSet +} + +func makeGenericFederatedSettingsSet(federatedSettingsList []*fed_gloo_solo_io_v1.FederatedSettings) sksets.ResourceSet { + var genericResources []ezkube.ResourceId + for _, obj := range federatedSettingsList { + genericResources = append(genericResources, obj) + } + return sksets.NewResourceSet(genericResources...) +} + +type federatedSettingsSet struct { + set sksets.ResourceSet +} + +func NewFederatedSettingsSet(federatedSettingsList ...*fed_gloo_solo_io_v1.FederatedSettings) FederatedSettingsSet { + return &federatedSettingsSet{set: makeGenericFederatedSettingsSet(federatedSettingsList)} +} + +func NewFederatedSettingsSetFromList(federatedSettingsList *fed_gloo_solo_io_v1.FederatedSettingsList) FederatedSettingsSet { + list := make([]*fed_gloo_solo_io_v1.FederatedSettings, 0, len(federatedSettingsList.Items)) + for idx := range federatedSettingsList.Items { + list = append(list, &federatedSettingsList.Items[idx]) + } + return &federatedSettingsSet{set: makeGenericFederatedSettingsSet(list)} +} + +func (s *federatedSettingsSet) Keys() sets.String { + if s == nil { + return sets.String{} + } + return s.Generic().Keys() +} + +func (s *federatedSettingsSet) List(filterResource ...func(*fed_gloo_solo_io_v1.FederatedSettings) bool) []*fed_gloo_solo_io_v1.FederatedSettings { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_gloo_solo_io_v1.FederatedSettings)) + }) + } + + objs := s.Generic().List(genericFilters...) + federatedSettingsList := make([]*fed_gloo_solo_io_v1.FederatedSettings, 0, len(objs)) + for _, obj := range objs { + federatedSettingsList = append(federatedSettingsList, obj.(*fed_gloo_solo_io_v1.FederatedSettings)) + } + return federatedSettingsList +} + +func (s *federatedSettingsSet) UnsortedList(filterResource ...func(*fed_gloo_solo_io_v1.FederatedSettings) bool) []*fed_gloo_solo_io_v1.FederatedSettings { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_gloo_solo_io_v1.FederatedSettings)) + }) + } + + var federatedSettingsList []*fed_gloo_solo_io_v1.FederatedSettings + for _, obj := range s.Generic().UnsortedList(genericFilters...) { + federatedSettingsList = append(federatedSettingsList, obj.(*fed_gloo_solo_io_v1.FederatedSettings)) + } + return federatedSettingsList +} + +func (s *federatedSettingsSet) Map() map[string]*fed_gloo_solo_io_v1.FederatedSettings { + if s == nil { + return nil + } + + newMap := map[string]*fed_gloo_solo_io_v1.FederatedSettings{} + for k, v := range s.Generic().Map() { + newMap[k] = v.(*fed_gloo_solo_io_v1.FederatedSettings) + } + return newMap +} + +func (s *federatedSettingsSet) Insert( + federatedSettingsList ...*fed_gloo_solo_io_v1.FederatedSettings, +) { + if s == nil { + panic("cannot insert into nil set") + } + + for _, obj := range federatedSettingsList { + s.Generic().Insert(obj) + } +} + +func (s *federatedSettingsSet) Has(federatedSettings ezkube.ResourceId) bool { + if s == nil { + return false + } + return s.Generic().Has(federatedSettings) +} + +func (s *federatedSettingsSet) Equal( + federatedSettingsSet FederatedSettingsSet, +) bool { + if s == nil { + return federatedSettingsSet == nil + } + return s.Generic().Equal(federatedSettingsSet.Generic()) +} + +func (s *federatedSettingsSet) Delete(FederatedSettings ezkube.ResourceId) { + if s == nil { + return + } + s.Generic().Delete(FederatedSettings) +} + +func (s *federatedSettingsSet) Union(set FederatedSettingsSet) FederatedSettingsSet { + if s == nil { + return set + } + return NewFederatedSettingsSet(append(s.List(), set.List()...)...) +} + +func (s *federatedSettingsSet) Difference(set FederatedSettingsSet) FederatedSettingsSet { + if s == nil { + return set + } + newSet := s.Generic().Difference(set.Generic()) + return &federatedSettingsSet{set: newSet} +} + +func (s *federatedSettingsSet) Intersection(set FederatedSettingsSet) FederatedSettingsSet { + if s == nil { + return nil + } + newSet := s.Generic().Intersection(set.Generic()) + var federatedSettingsList []*fed_gloo_solo_io_v1.FederatedSettings + for _, obj := range newSet.List() { + federatedSettingsList = append(federatedSettingsList, obj.(*fed_gloo_solo_io_v1.FederatedSettings)) + } + return NewFederatedSettingsSet(federatedSettingsList...) +} + +func (s *federatedSettingsSet) Find(id ezkube.ResourceId) (*fed_gloo_solo_io_v1.FederatedSettings, error) { + if s == nil { + return nil, eris.Errorf("empty set, cannot find FederatedSettings %v", sksets.Key(id)) + } + obj, err := s.Generic().Find(&fed_gloo_solo_io_v1.FederatedSettings{}, id) + if err != nil { + return nil, err + } + + return obj.(*fed_gloo_solo_io_v1.FederatedSettings), nil +} + +func (s *federatedSettingsSet) Length() int { + if s == nil { + return 0 + } + return s.Generic().Length() +} + +func (s *federatedSettingsSet) Generic() sksets.ResourceSet { + if s == nil { + return nil + } + return s.set +} + +func (s *federatedSettingsSet) Delta(newSet FederatedSettingsSet) sksets.ResourceDelta { + if s == nil { + return sksets.ResourceDelta{ + Inserted: newSet.Generic(), + } + } + return s.Generic().Delta(newSet.Generic()) +} + +func (s *federatedSettingsSet) Clone() FederatedSettingsSet { + if s == nil { + return nil + } + return &federatedSettingsSet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} + +type FederatedUpstreamSet interface { + // Get the set stored keys + Keys() sets.String + // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + List(filterResource ...func(*fed_gloo_solo_io_v1.FederatedUpstream) bool) []*fed_gloo_solo_io_v1.FederatedUpstream + // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + UnsortedList(filterResource ...func(*fed_gloo_solo_io_v1.FederatedUpstream) bool) []*fed_gloo_solo_io_v1.FederatedUpstream + // Return the Set as a map of key to resource. + Map() map[string]*fed_gloo_solo_io_v1.FederatedUpstream + // Insert a resource into the set. + Insert(federatedUpstream ...*fed_gloo_solo_io_v1.FederatedUpstream) + // Compare the equality of the keys in two sets (not the resources themselves) + Equal(federatedUpstreamSet FederatedUpstreamSet) bool + // Check if the set contains a key matching the resource (not the resource itself) + Has(federatedUpstream ezkube.ResourceId) bool + // Delete the key matching the resource + Delete(federatedUpstream ezkube.ResourceId) + // Return the union with the provided set + Union(set FederatedUpstreamSet) FederatedUpstreamSet + // Return the difference with the provided set + Difference(set FederatedUpstreamSet) FederatedUpstreamSet + // Return the intersection with the provided set + Intersection(set FederatedUpstreamSet) FederatedUpstreamSet + // Find the resource with the given ID + Find(id ezkube.ResourceId) (*fed_gloo_solo_io_v1.FederatedUpstream, error) + // Get the length of the set + Length() int + // returns the generic implementation of the set + Generic() sksets.ResourceSet + // returns the delta between this and and another FederatedUpstreamSet + Delta(newSet FederatedUpstreamSet) sksets.ResourceDelta + // Create a deep copy of the current FederatedUpstreamSet + Clone() FederatedUpstreamSet +} + +func makeGenericFederatedUpstreamSet(federatedUpstreamList []*fed_gloo_solo_io_v1.FederatedUpstream) sksets.ResourceSet { + var genericResources []ezkube.ResourceId + for _, obj := range federatedUpstreamList { + genericResources = append(genericResources, obj) + } + return sksets.NewResourceSet(genericResources...) +} + +type federatedUpstreamSet struct { + set sksets.ResourceSet +} + +func NewFederatedUpstreamSet(federatedUpstreamList ...*fed_gloo_solo_io_v1.FederatedUpstream) FederatedUpstreamSet { + return &federatedUpstreamSet{set: makeGenericFederatedUpstreamSet(federatedUpstreamList)} +} + +func NewFederatedUpstreamSetFromList(federatedUpstreamList *fed_gloo_solo_io_v1.FederatedUpstreamList) FederatedUpstreamSet { + list := make([]*fed_gloo_solo_io_v1.FederatedUpstream, 0, len(federatedUpstreamList.Items)) + for idx := range federatedUpstreamList.Items { + list = append(list, &federatedUpstreamList.Items[idx]) + } + return &federatedUpstreamSet{set: makeGenericFederatedUpstreamSet(list)} +} + +func (s *federatedUpstreamSet) Keys() sets.String { + if s == nil { + return sets.String{} + } + return s.Generic().Keys() +} + +func (s *federatedUpstreamSet) List(filterResource ...func(*fed_gloo_solo_io_v1.FederatedUpstream) bool) []*fed_gloo_solo_io_v1.FederatedUpstream { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_gloo_solo_io_v1.FederatedUpstream)) + }) + } + + objs := s.Generic().List(genericFilters...) + federatedUpstreamList := make([]*fed_gloo_solo_io_v1.FederatedUpstream, 0, len(objs)) + for _, obj := range objs { + federatedUpstreamList = append(federatedUpstreamList, obj.(*fed_gloo_solo_io_v1.FederatedUpstream)) + } + return federatedUpstreamList +} + +func (s *federatedUpstreamSet) UnsortedList(filterResource ...func(*fed_gloo_solo_io_v1.FederatedUpstream) bool) []*fed_gloo_solo_io_v1.FederatedUpstream { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_gloo_solo_io_v1.FederatedUpstream)) + }) + } + + var federatedUpstreamList []*fed_gloo_solo_io_v1.FederatedUpstream + for _, obj := range s.Generic().UnsortedList(genericFilters...) { + federatedUpstreamList = append(federatedUpstreamList, obj.(*fed_gloo_solo_io_v1.FederatedUpstream)) + } + return federatedUpstreamList +} + +func (s *federatedUpstreamSet) Map() map[string]*fed_gloo_solo_io_v1.FederatedUpstream { + if s == nil { + return nil + } + + newMap := map[string]*fed_gloo_solo_io_v1.FederatedUpstream{} + for k, v := range s.Generic().Map() { + newMap[k] = v.(*fed_gloo_solo_io_v1.FederatedUpstream) + } + return newMap +} + +func (s *federatedUpstreamSet) Insert( + federatedUpstreamList ...*fed_gloo_solo_io_v1.FederatedUpstream, +) { + if s == nil { + panic("cannot insert into nil set") + } + + for _, obj := range federatedUpstreamList { + s.Generic().Insert(obj) + } +} + +func (s *federatedUpstreamSet) Has(federatedUpstream ezkube.ResourceId) bool { + if s == nil { + return false + } + return s.Generic().Has(federatedUpstream) +} + +func (s *federatedUpstreamSet) Equal( + federatedUpstreamSet FederatedUpstreamSet, +) bool { + if s == nil { + return federatedUpstreamSet == nil + } + return s.Generic().Equal(federatedUpstreamSet.Generic()) +} + +func (s *federatedUpstreamSet) Delete(FederatedUpstream ezkube.ResourceId) { + if s == nil { + return + } + s.Generic().Delete(FederatedUpstream) +} + +func (s *federatedUpstreamSet) Union(set FederatedUpstreamSet) FederatedUpstreamSet { + if s == nil { + return set + } + return NewFederatedUpstreamSet(append(s.List(), set.List()...)...) +} + +func (s *federatedUpstreamSet) Difference(set FederatedUpstreamSet) FederatedUpstreamSet { + if s == nil { + return set + } + newSet := s.Generic().Difference(set.Generic()) + return &federatedUpstreamSet{set: newSet} +} + +func (s *federatedUpstreamSet) Intersection(set FederatedUpstreamSet) FederatedUpstreamSet { + if s == nil { + return nil + } + newSet := s.Generic().Intersection(set.Generic()) + var federatedUpstreamList []*fed_gloo_solo_io_v1.FederatedUpstream + for _, obj := range newSet.List() { + federatedUpstreamList = append(federatedUpstreamList, obj.(*fed_gloo_solo_io_v1.FederatedUpstream)) + } + return NewFederatedUpstreamSet(federatedUpstreamList...) +} + +func (s *federatedUpstreamSet) Find(id ezkube.ResourceId) (*fed_gloo_solo_io_v1.FederatedUpstream, error) { + if s == nil { + return nil, eris.Errorf("empty set, cannot find FederatedUpstream %v", sksets.Key(id)) + } + obj, err := s.Generic().Find(&fed_gloo_solo_io_v1.FederatedUpstream{}, id) + if err != nil { + return nil, err + } + + return obj.(*fed_gloo_solo_io_v1.FederatedUpstream), nil +} + +func (s *federatedUpstreamSet) Length() int { + if s == nil { + return 0 + } + return s.Generic().Length() +} + +func (s *federatedUpstreamSet) Generic() sksets.ResourceSet { + if s == nil { + return nil + } + return s.set +} + +func (s *federatedUpstreamSet) Delta(newSet FederatedUpstreamSet) sksets.ResourceDelta { + if s == nil { + return sksets.ResourceDelta{ + Inserted: newSet.Generic(), + } + } + return s.Generic().Delta(newSet.Generic()) +} + +func (s *federatedUpstreamSet) Clone() FederatedUpstreamSet { + if s == nil { + return nil + } + return &federatedUpstreamSet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} + +type FederatedUpstreamGroupSet interface { + // Get the set stored keys + Keys() sets.String + // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + List(filterResource ...func(*fed_gloo_solo_io_v1.FederatedUpstreamGroup) bool) []*fed_gloo_solo_io_v1.FederatedUpstreamGroup + // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + UnsortedList(filterResource ...func(*fed_gloo_solo_io_v1.FederatedUpstreamGroup) bool) []*fed_gloo_solo_io_v1.FederatedUpstreamGroup + // Return the Set as a map of key to resource. + Map() map[string]*fed_gloo_solo_io_v1.FederatedUpstreamGroup + // Insert a resource into the set. + Insert(federatedUpstreamGroup ...*fed_gloo_solo_io_v1.FederatedUpstreamGroup) + // Compare the equality of the keys in two sets (not the resources themselves) + Equal(federatedUpstreamGroupSet FederatedUpstreamGroupSet) bool + // Check if the set contains a key matching the resource (not the resource itself) + Has(federatedUpstreamGroup ezkube.ResourceId) bool + // Delete the key matching the resource + Delete(federatedUpstreamGroup ezkube.ResourceId) + // Return the union with the provided set + Union(set FederatedUpstreamGroupSet) FederatedUpstreamGroupSet + // Return the difference with the provided set + Difference(set FederatedUpstreamGroupSet) FederatedUpstreamGroupSet + // Return the intersection with the provided set + Intersection(set FederatedUpstreamGroupSet) FederatedUpstreamGroupSet + // Find the resource with the given ID + Find(id ezkube.ResourceId) (*fed_gloo_solo_io_v1.FederatedUpstreamGroup, error) + // Get the length of the set + Length() int + // returns the generic implementation of the set + Generic() sksets.ResourceSet + // returns the delta between this and and another FederatedUpstreamGroupSet + Delta(newSet FederatedUpstreamGroupSet) sksets.ResourceDelta + // Create a deep copy of the current FederatedUpstreamGroupSet + Clone() FederatedUpstreamGroupSet +} + +func makeGenericFederatedUpstreamGroupSet(federatedUpstreamGroupList []*fed_gloo_solo_io_v1.FederatedUpstreamGroup) sksets.ResourceSet { + var genericResources []ezkube.ResourceId + for _, obj := range federatedUpstreamGroupList { + genericResources = append(genericResources, obj) + } + return sksets.NewResourceSet(genericResources...) +} + +type federatedUpstreamGroupSet struct { + set sksets.ResourceSet +} + +func NewFederatedUpstreamGroupSet(federatedUpstreamGroupList ...*fed_gloo_solo_io_v1.FederatedUpstreamGroup) FederatedUpstreamGroupSet { + return &federatedUpstreamGroupSet{set: makeGenericFederatedUpstreamGroupSet(federatedUpstreamGroupList)} +} + +func NewFederatedUpstreamGroupSetFromList(federatedUpstreamGroupList *fed_gloo_solo_io_v1.FederatedUpstreamGroupList) FederatedUpstreamGroupSet { + list := make([]*fed_gloo_solo_io_v1.FederatedUpstreamGroup, 0, len(federatedUpstreamGroupList.Items)) + for idx := range federatedUpstreamGroupList.Items { + list = append(list, &federatedUpstreamGroupList.Items[idx]) + } + return &federatedUpstreamGroupSet{set: makeGenericFederatedUpstreamGroupSet(list)} +} + +func (s *federatedUpstreamGroupSet) Keys() sets.String { + if s == nil { + return sets.String{} + } + return s.Generic().Keys() +} + +func (s *federatedUpstreamGroupSet) List(filterResource ...func(*fed_gloo_solo_io_v1.FederatedUpstreamGroup) bool) []*fed_gloo_solo_io_v1.FederatedUpstreamGroup { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_gloo_solo_io_v1.FederatedUpstreamGroup)) + }) + } + + objs := s.Generic().List(genericFilters...) + federatedUpstreamGroupList := make([]*fed_gloo_solo_io_v1.FederatedUpstreamGroup, 0, len(objs)) + for _, obj := range objs { + federatedUpstreamGroupList = append(federatedUpstreamGroupList, obj.(*fed_gloo_solo_io_v1.FederatedUpstreamGroup)) + } + return federatedUpstreamGroupList +} + +func (s *federatedUpstreamGroupSet) UnsortedList(filterResource ...func(*fed_gloo_solo_io_v1.FederatedUpstreamGroup) bool) []*fed_gloo_solo_io_v1.FederatedUpstreamGroup { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_gloo_solo_io_v1.FederatedUpstreamGroup)) + }) + } + + var federatedUpstreamGroupList []*fed_gloo_solo_io_v1.FederatedUpstreamGroup + for _, obj := range s.Generic().UnsortedList(genericFilters...) { + federatedUpstreamGroupList = append(federatedUpstreamGroupList, obj.(*fed_gloo_solo_io_v1.FederatedUpstreamGroup)) + } + return federatedUpstreamGroupList +} + +func (s *federatedUpstreamGroupSet) Map() map[string]*fed_gloo_solo_io_v1.FederatedUpstreamGroup { + if s == nil { + return nil + } + + newMap := map[string]*fed_gloo_solo_io_v1.FederatedUpstreamGroup{} + for k, v := range s.Generic().Map() { + newMap[k] = v.(*fed_gloo_solo_io_v1.FederatedUpstreamGroup) + } + return newMap +} + +func (s *federatedUpstreamGroupSet) Insert( + federatedUpstreamGroupList ...*fed_gloo_solo_io_v1.FederatedUpstreamGroup, +) { + if s == nil { + panic("cannot insert into nil set") + } + + for _, obj := range federatedUpstreamGroupList { + s.Generic().Insert(obj) + } +} + +func (s *federatedUpstreamGroupSet) Has(federatedUpstreamGroup ezkube.ResourceId) bool { + if s == nil { + return false + } + return s.Generic().Has(federatedUpstreamGroup) +} + +func (s *federatedUpstreamGroupSet) Equal( + federatedUpstreamGroupSet FederatedUpstreamGroupSet, +) bool { + if s == nil { + return federatedUpstreamGroupSet == nil + } + return s.Generic().Equal(federatedUpstreamGroupSet.Generic()) +} + +func (s *federatedUpstreamGroupSet) Delete(FederatedUpstreamGroup ezkube.ResourceId) { + if s == nil { + return + } + s.Generic().Delete(FederatedUpstreamGroup) +} + +func (s *federatedUpstreamGroupSet) Union(set FederatedUpstreamGroupSet) FederatedUpstreamGroupSet { + if s == nil { + return set + } + return NewFederatedUpstreamGroupSet(append(s.List(), set.List()...)...) +} + +func (s *federatedUpstreamGroupSet) Difference(set FederatedUpstreamGroupSet) FederatedUpstreamGroupSet { + if s == nil { + return set + } + newSet := s.Generic().Difference(set.Generic()) + return &federatedUpstreamGroupSet{set: newSet} +} + +func (s *federatedUpstreamGroupSet) Intersection(set FederatedUpstreamGroupSet) FederatedUpstreamGroupSet { + if s == nil { + return nil + } + newSet := s.Generic().Intersection(set.Generic()) + var federatedUpstreamGroupList []*fed_gloo_solo_io_v1.FederatedUpstreamGroup + for _, obj := range newSet.List() { + federatedUpstreamGroupList = append(federatedUpstreamGroupList, obj.(*fed_gloo_solo_io_v1.FederatedUpstreamGroup)) + } + return NewFederatedUpstreamGroupSet(federatedUpstreamGroupList...) +} + +func (s *federatedUpstreamGroupSet) Find(id ezkube.ResourceId) (*fed_gloo_solo_io_v1.FederatedUpstreamGroup, error) { + if s == nil { + return nil, eris.Errorf("empty set, cannot find FederatedUpstreamGroup %v", sksets.Key(id)) + } + obj, err := s.Generic().Find(&fed_gloo_solo_io_v1.FederatedUpstreamGroup{}, id) + if err != nil { + return nil, err + } + + return obj.(*fed_gloo_solo_io_v1.FederatedUpstreamGroup), nil +} + +func (s *federatedUpstreamGroupSet) Length() int { + if s == nil { + return 0 + } + return s.Generic().Length() +} + +func (s *federatedUpstreamGroupSet) Generic() sksets.ResourceSet { + if s == nil { + return nil + } + return s.set +} + +func (s *federatedUpstreamGroupSet) Delta(newSet FederatedUpstreamGroupSet) sksets.ResourceDelta { + if s == nil { + return sksets.ResourceDelta{ + Inserted: newSet.Generic(), + } + } + return s.Generic().Delta(newSet.Generic()) +} + +func (s *federatedUpstreamGroupSet) Clone() FederatedUpstreamGroupSet { + if s == nil { + return nil + } + return &federatedUpstreamGroupSet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} diff --git a/pkg/api/fed.gloo.solo.io/v1/type_helpers.go b/pkg/api/fed.gloo.solo.io/v1/type_helpers.go new file mode 100644 index 000000000..7612c8984 --- /dev/null +++ b/pkg/api/fed.gloo.solo.io/v1/type_helpers.go @@ -0,0 +1,13 @@ +// Code generated by skv2. DO NOT EDIT. + +// Definitions for the Kubernetes types +package v1 + +// FederatedSettingsSlice represents a slice of *FederatedSettings +type FederatedSettingsSlice []*FederatedSettings + +// FederatedUpstreamSlice represents a slice of *FederatedUpstream +type FederatedUpstreamSlice []*FederatedUpstream + +// FederatedUpstreamGroupSlice represents a slice of *FederatedUpstreamGroup +type FederatedUpstreamGroupSlice []*FederatedUpstreamGroup diff --git a/pkg/api/fed.gloo.solo.io/v1/types.go b/pkg/api/fed.gloo.solo.io/v1/types.go new file mode 100644 index 000000000..16cdc3dd4 --- /dev/null +++ b/pkg/api/fed.gloo.solo.io/v1/types.go @@ -0,0 +1,121 @@ +// Code generated by skv2. DO NOT EDIT. + +// Definitions for the Kubernetes types +package v1 + +import ( + ibcbcba3d723d592db06b09047ca22d90 "github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1/types" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:openapi-gen=true +// +kubebuilder:subresource:status + +// GroupVersionKind for FederatedSettings +var FederatedSettingsGVK = schema.GroupVersionKind{ + Group: "fed.gloo.solo.io", + Version: "v1", + Kind: "FederatedSettings", +} + +// FederatedSettings is the Schema for the federatedSettings API +type FederatedSettings struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec ibcbcba3d723d592db06b09047ca22d90.FederatedSettingsSpec `json:"spec,omitempty"` + Status ibcbcba3d723d592db06b09047ca22d90.FederatedSettingsStatus `json:"status,omitempty"` +} + +// GVK returns the GroupVersionKind associated with the resource type. +func (FederatedSettings) GVK() schema.GroupVersionKind { + return FederatedSettingsGVK +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// FederatedSettingsList contains a list of FederatedSettings +type FederatedSettingsList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FederatedSettings `json:"items"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:openapi-gen=true +// +kubebuilder:subresource:status + +// GroupVersionKind for FederatedUpstream +var FederatedUpstreamGVK = schema.GroupVersionKind{ + Group: "fed.gloo.solo.io", + Version: "v1", + Kind: "FederatedUpstream", +} + +// FederatedUpstream is the Schema for the federatedUpstream API +type FederatedUpstream struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec ibcbcba3d723d592db06b09047ca22d90.FederatedUpstreamSpec `json:"spec,omitempty"` + Status ibcbcba3d723d592db06b09047ca22d90.FederatedUpstreamStatus `json:"status,omitempty"` +} + +// GVK returns the GroupVersionKind associated with the resource type. +func (FederatedUpstream) GVK() schema.GroupVersionKind { + return FederatedUpstreamGVK +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// FederatedUpstreamList contains a list of FederatedUpstream +type FederatedUpstreamList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FederatedUpstream `json:"items"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:openapi-gen=true +// +kubebuilder:subresource:status + +// GroupVersionKind for FederatedUpstreamGroup +var FederatedUpstreamGroupGVK = schema.GroupVersionKind{ + Group: "fed.gloo.solo.io", + Version: "v1", + Kind: "FederatedUpstreamGroup", +} + +// FederatedUpstreamGroup is the Schema for the federatedUpstreamGroup API +type FederatedUpstreamGroup struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec ibcbcba3d723d592db06b09047ca22d90.FederatedUpstreamGroupSpec `json:"spec,omitempty"` + Status ibcbcba3d723d592db06b09047ca22d90.FederatedUpstreamGroupStatus `json:"status,omitempty"` +} + +// GVK returns the GroupVersionKind associated with the resource type. +func (FederatedUpstreamGroup) GVK() schema.GroupVersionKind { + return FederatedUpstreamGroupGVK +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// FederatedUpstreamGroupList contains a list of FederatedUpstreamGroup +type FederatedUpstreamGroupList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FederatedUpstreamGroup `json:"items"` +} + +func init() { + SchemeBuilder.Register(&FederatedSettings{}, &FederatedSettingsList{}) + SchemeBuilder.Register(&FederatedUpstream{}, &FederatedUpstreamList{}) + SchemeBuilder.Register(&FederatedUpstreamGroup{}, &FederatedUpstreamGroupList{}) +} diff --git a/pkg/api/fed.gloo.solo.io/v1/types/json.gen.go b/pkg/api/fed.gloo.solo.io/v1/types/json.gen.go new file mode 100644 index 000000000..a56558655 --- /dev/null +++ b/pkg/api/fed.gloo.solo.io/v1/types/json.gen.go @@ -0,0 +1,94 @@ +// Code generated by skv2. DO NOT EDIT. + +// Generated json marshal and unmarshal functions + +package types + +import ( + bytes "bytes" + fmt "fmt" + math "math" + + jsonpb "github.com/golang/protobuf/jsonpb" + proto "github.com/golang/protobuf/proto" + skv2jsonpb "github.com/solo-io/skv2/pkg/kube_jsonpb" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +var ( + marshaller = &skv2jsonpb.Marshaler{} + unmarshaller = &jsonpb.Unmarshaler{ + AllowUnknownFields: true, + } + strictUnmarshaller = &jsonpb.Unmarshaler{} +) + +// MarshalJSON is a custom marshaler for FederatedSettingsSpec +func (this *FederatedSettingsSpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for FederatedSettingsSpec +func (this *FederatedSettingsSpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for FederatedSettingsStatus +func (this *FederatedSettingsStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for FederatedSettingsStatus +func (this *FederatedSettingsStatus) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for FederatedUpstreamSpec +func (this *FederatedUpstreamSpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for FederatedUpstreamSpec +func (this *FederatedUpstreamSpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for FederatedUpstreamStatus +func (this *FederatedUpstreamStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for FederatedUpstreamStatus +func (this *FederatedUpstreamStatus) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for FederatedUpstreamGroupSpec +func (this *FederatedUpstreamGroupSpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for FederatedUpstreamGroupSpec +func (this *FederatedUpstreamGroupSpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for FederatedUpstreamGroupStatus +func (this *FederatedUpstreamGroupStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for FederatedUpstreamGroupStatus +func (this *FederatedUpstreamGroupStatus) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} diff --git a/pkg/api/fed.gloo.solo.io/v1/types/proto_deepcopy.go b/pkg/api/fed.gloo.solo.io/v1/types/proto_deepcopy.go new file mode 100644 index 000000000..d0196152c --- /dev/null +++ b/pkg/api/fed.gloo.solo.io/v1/types/proto_deepcopy.go @@ -0,0 +1,76 @@ +// Code generated by skv2. DO NOT EDIT. + +// This file contains generated Deepcopy methods for proto-based Spec and Status fields + +package types + +import ( + proto "github.com/golang/protobuf/proto" + "github.com/solo-io/protoc-gen-ext/pkg/clone" +) + +// DeepCopyInto for the FederatedSettings.Spec +func (in *FederatedSettingsSpec) DeepCopyInto(out *FederatedSettingsSpec) { + var p *FederatedSettingsSpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*FederatedSettingsSpec) + } else { + p = proto.Clone(in).(*FederatedSettingsSpec) + } + *out = *p +} + +// DeepCopyInto for the FederatedSettings.Status +func (in *FederatedSettingsStatus) DeepCopyInto(out *FederatedSettingsStatus) { + var p *FederatedSettingsStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*FederatedSettingsStatus) + } else { + p = proto.Clone(in).(*FederatedSettingsStatus) + } + *out = *p +} + +// DeepCopyInto for the FederatedUpstream.Spec +func (in *FederatedUpstreamSpec) DeepCopyInto(out *FederatedUpstreamSpec) { + var p *FederatedUpstreamSpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*FederatedUpstreamSpec) + } else { + p = proto.Clone(in).(*FederatedUpstreamSpec) + } + *out = *p +} + +// DeepCopyInto for the FederatedUpstream.Status +func (in *FederatedUpstreamStatus) DeepCopyInto(out *FederatedUpstreamStatus) { + var p *FederatedUpstreamStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*FederatedUpstreamStatus) + } else { + p = proto.Clone(in).(*FederatedUpstreamStatus) + } + *out = *p +} + +// DeepCopyInto for the FederatedUpstreamGroup.Spec +func (in *FederatedUpstreamGroupSpec) DeepCopyInto(out *FederatedUpstreamGroupSpec) { + var p *FederatedUpstreamGroupSpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*FederatedUpstreamGroupSpec) + } else { + p = proto.Clone(in).(*FederatedUpstreamGroupSpec) + } + *out = *p +} + +// DeepCopyInto for the FederatedUpstreamGroup.Status +func (in *FederatedUpstreamGroupStatus) DeepCopyInto(out *FederatedUpstreamGroupStatus) { + var p *FederatedUpstreamGroupStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*FederatedUpstreamGroupStatus) + } else { + p = proto.Clone(in).(*FederatedUpstreamGroupStatus) + } + *out = *p +} diff --git a/pkg/api/fed.gloo.solo.io/v1/types/settings.pb.equal.go b/pkg/api/fed.gloo.solo.io/v1/types/settings.pb.equal.go index 804c0fc08..0c5a90522 100644 --- a/pkg/api/fed.gloo.solo.io/v1/types/settings.pb.equal.go +++ b/pkg/api/fed.gloo.solo.io/v1/types/settings.pb.equal.go @@ -100,6 +100,23 @@ func (m *FederatedSettingsStatus) Equal(that interface{}) bool { } } + if len(m.GetNamespacedPlacementStatuses()) != len(target.GetNamespacedPlacementStatuses()) { + return false + } + for k, v := range m.GetNamespacedPlacementStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetNamespacedPlacementStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetNamespacedPlacementStatuses()[k]) { + return false + } + } + + } + return true } diff --git a/pkg/api/fed.gloo.solo.io/v1/types/settings.pb.go b/pkg/api/fed.gloo.solo.io/v1/types/settings.pb.go index 8953d47b6..841ee8cd9 100644 --- a/pkg/api/fed.gloo.solo.io/v1/types/settings.pb.go +++ b/pkg/api/fed.gloo.solo.io/v1/types/settings.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo-fed/fed.gloo/v1/settings.proto @@ -9,12 +9,12 @@ package types import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" v1 "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/core/v1" v11 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1" - v1alpha1 "github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1" + types "github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) @@ -26,26 +26,22 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - +// The Federated[Resource] CRDs are a gloo-fed wrapper around Gloo Edge CRDs, with a Placement field indicating which +// clusters and namespaces to federate the object to. +// For more, see: https://docs.solo.io/gloo-edge/latest/guides/gloo_federation/federated_configuration/ type FederatedSettingsSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Template *FederatedSettingsSpec_Template `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` + Placement *types.Placement `protobuf:"bytes,2,opt,name=placement,proto3" json:"placement,omitempty"` unknownFields protoimpl.UnknownFields - - Template *FederatedSettingsSpec_Template `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` - Placement *v1alpha1.Placement `protobuf:"bytes,2,opt,name=placement,proto3" json:"placement,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FederatedSettingsSpec) Reset() { *x = FederatedSettingsSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedSettingsSpec) String() string { @@ -56,7 +52,7 @@ func (*FederatedSettingsSpec) ProtoMessage() {} func (x *FederatedSettingsSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -78,7 +74,7 @@ func (x *FederatedSettingsSpec) GetTemplate() *FederatedSettingsSpec_Template { return nil } -func (x *FederatedSettingsSpec) GetPlacement() *v1alpha1.Placement { +func (x *FederatedSettingsSpec) GetPlacement() *types.Placement { if x != nil { return x.Placement } @@ -86,20 +82,18 @@ func (x *FederatedSettingsSpec) GetPlacement() *v1alpha1.Placement { } type FederatedSettingsStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PlacementStatus *v1.PlacementStatus `protobuf:"bytes,1,opt,name=placement_status,json=placementStatus,proto3" json:"placement_status,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PlacementStatus *v1.PlacementStatus `protobuf:"bytes,1,opt,name=placement_status,json=placementStatus,proto3" json:"placement_status,omitempty"` + NamespacedPlacementStatuses map[string]*v1.PlacementStatus `protobuf:"bytes,2,rep,name=namespaced_placement_statuses,json=namespacedPlacementStatuses,proto3" json:"namespaced_placement_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FederatedSettingsStatus) Reset() { *x = FederatedSettingsStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedSettingsStatus) String() string { @@ -110,7 +104,7 @@ func (*FederatedSettingsStatus) ProtoMessage() {} func (x *FederatedSettingsStatus) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -132,22 +126,26 @@ func (x *FederatedSettingsStatus) GetPlacementStatus() *v1.PlacementStatus { return nil } +func (x *FederatedSettingsStatus) GetNamespacedPlacementStatuses() map[string]*v1.PlacementStatus { + if x != nil { + return x.NamespacedPlacementStatuses + } + return nil +} + type FederatedSettingsSpec_Template struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Spec *v11.SettingsSpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` + Metadata *v1.TemplateMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` unknownFields protoimpl.UnknownFields - - Spec *v11.SettingsSpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` - Metadata *v1.TemplateMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FederatedSettingsSpec_Template) Reset() { *x = FederatedSettingsSpec_Template{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedSettingsSpec_Template) String() string { @@ -158,7 +156,7 @@ func (*FederatedSettingsSpec_Template) ProtoMessage() {} func (x *FederatedSettingsSpec_Template) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -189,92 +187,112 @@ func (x *FederatedSettingsSpec_Template) GetMetadata() *v1.TemplateMetadata { var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_rawDesc = string([]byte{ 0x0a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4c, 0x67, 0x69, + 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x52, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, - 0x6b, 0x76, 0x32, 0x2d, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, - 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, - 0x31, 0x2f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, - 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0xa0, 0x02, 0x0a, 0x15, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4c, 0x0a, 0x08, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x66, 0x65, - 0x64, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x53, 0x70, 0x65, 0x63, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x75, 0x6c, - 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x7a, 0x0a, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, - 0x65, 0x63, 0x12, 0x3e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x22, 0x67, 0x0a, 0x17, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4c, 0x0a, - 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, - 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x63, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x48, 0x5a, 0x3e, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, - 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0xb8, 0xf5, 0x04, - 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x75, + 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2f, + 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa0, 0x02, 0x0a, 0x15, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, + 0x4c, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x30, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, + 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x7a, 0x0a, 0x08, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, + 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x3e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xeb, 0x02, 0x0a, 0x17, 0x46, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x4c, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x8e, 0x01, 0x0a, 0x1d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x64, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x66, 0x65, 0x64, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, + 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, + 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x1b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x64, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x65, 0x73, 0x1a, 0x71, 0x0a, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x64, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x48, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, + 0x5a, 0x3e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_goTypes = []any{ (*FederatedSettingsSpec)(nil), // 0: fed.gloo.solo.io.FederatedSettingsSpec (*FederatedSettingsStatus)(nil), // 1: fed.gloo.solo.io.FederatedSettingsStatus (*FederatedSettingsSpec_Template)(nil), // 2: fed.gloo.solo.io.FederatedSettingsSpec.Template - (*v1alpha1.Placement)(nil), // 3: multicluster.solo.io.Placement - (*v1.PlacementStatus)(nil), // 4: core.fed.solo.io.PlacementStatus - (*v11.SettingsSpec)(nil), // 5: gloo.solo.io.SettingsSpec - (*v1.TemplateMetadata)(nil), // 6: core.fed.solo.io.TemplateMetadata + nil, // 3: fed.gloo.solo.io.FederatedSettingsStatus.NamespacedPlacementStatusesEntry + (*types.Placement)(nil), // 4: multicluster.solo.io.Placement + (*v1.PlacementStatus)(nil), // 5: core.fed.solo.io.PlacementStatus + (*v11.SettingsSpec)(nil), // 6: gloo.solo.io.SettingsSpec + (*v1.TemplateMetadata)(nil), // 7: core.fed.solo.io.TemplateMetadata } var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_depIdxs = []int32{ 2, // 0: fed.gloo.solo.io.FederatedSettingsSpec.template:type_name -> fed.gloo.solo.io.FederatedSettingsSpec.Template - 3, // 1: fed.gloo.solo.io.FederatedSettingsSpec.placement:type_name -> multicluster.solo.io.Placement - 4, // 2: fed.gloo.solo.io.FederatedSettingsStatus.placement_status:type_name -> core.fed.solo.io.PlacementStatus - 5, // 3: fed.gloo.solo.io.FederatedSettingsSpec.Template.spec:type_name -> gloo.solo.io.SettingsSpec - 6, // 4: fed.gloo.solo.io.FederatedSettingsSpec.Template.metadata:type_name -> core.fed.solo.io.TemplateMetadata - 5, // [5:5] is the sub-list for method output_type - 5, // [5:5] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 4, // 1: fed.gloo.solo.io.FederatedSettingsSpec.placement:type_name -> multicluster.solo.io.Placement + 5, // 2: fed.gloo.solo.io.FederatedSettingsStatus.placement_status:type_name -> core.fed.solo.io.PlacementStatus + 3, // 3: fed.gloo.solo.io.FederatedSettingsStatus.namespaced_placement_statuses:type_name -> fed.gloo.solo.io.FederatedSettingsStatus.NamespacedPlacementStatusesEntry + 6, // 4: fed.gloo.solo.io.FederatedSettingsSpec.Template.spec:type_name -> gloo.solo.io.SettingsSpec + 7, // 5: fed.gloo.solo.io.FederatedSettingsSpec.Template.metadata:type_name -> core.fed.solo.io.TemplateMetadata + 5, // 6: fed.gloo.solo.io.FederatedSettingsStatus.NamespacedPlacementStatusesEntry.value:type_name -> core.fed.solo.io.PlacementStatus + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_init() } @@ -282,51 +300,13 @@ func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_i if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedSettingsSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedSettingsStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedSettingsSpec_Template); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_rawDesc)), NumEnums: 0, - NumMessages: 3, + NumMessages: 4, NumExtensions: 0, NumServices: 0, }, @@ -335,7 +315,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_i MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_settings_proto_depIdxs = nil } diff --git a/pkg/api/fed.gloo.solo.io/v1/types/settings.pb.hash.go b/pkg/api/fed.gloo.solo.io/v1/types/settings.pb.hash.go index 394ba2a2e..63ba7daed 100644 --- a/pkg/api/fed.gloo.solo.io/v1/types/settings.pb.hash.go +++ b/pkg/api/fed.gloo.solo.io/v1/types/settings.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FederatedSettingsSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,28 +43,40 @@ func (m *FederatedSettingsSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetPlacement()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -70,6 +86,10 @@ func (m *FederatedSettingsSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FederatedSettingsStatus) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -83,23 +103,72 @@ func (m *FederatedSettingsStatus) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetPlacementStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespacedPlacementStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { return 0, err } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err } + } return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FederatedSettingsSpec_Template) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -113,28 +182,40 @@ func (m *FederatedSettingsSpec_Template) Hash(hasher hash.Hash64) (uint64, error } if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/fed.gloo.solo.io/v1/types/settings.pb.uniquehash.go b/pkg/api/fed.gloo.solo.io/v1/types/settings.pb.uniquehash.go new file mode 100644 index 000000000..2b138ae68 --- /dev/null +++ b/pkg/api/fed.gloo.solo.io/v1/types/settings.pb.uniquehash.go @@ -0,0 +1,227 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.gloo/v1/settings.proto + +package types + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedSettingsSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1/types.FederatedSettingsSpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPlacement()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedSettingsStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1/types.FederatedSettingsStatus")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPlacementStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespacedPlacementStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedSettingsSpec_Template) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1/types.FederatedSettingsSpec_Template")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/fed.gloo.solo.io/v1/types/upstream.pb.equal.go b/pkg/api/fed.gloo.solo.io/v1/types/upstream.pb.equal.go index 040c907ee..d4fd76fb3 100644 --- a/pkg/api/fed.gloo.solo.io/v1/types/upstream.pb.equal.go +++ b/pkg/api/fed.gloo.solo.io/v1/types/upstream.pb.equal.go @@ -100,6 +100,23 @@ func (m *FederatedUpstreamStatus) Equal(that interface{}) bool { } } + if len(m.GetNamespacedPlacementStatuses()) != len(target.GetNamespacedPlacementStatuses()) { + return false + } + for k, v := range m.GetNamespacedPlacementStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetNamespacedPlacementStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetNamespacedPlacementStatuses()[k]) { + return false + } + } + + } + return true } diff --git a/pkg/api/fed.gloo.solo.io/v1/types/upstream.pb.go b/pkg/api/fed.gloo.solo.io/v1/types/upstream.pb.go index 5c086ecf8..1a77e4002 100644 --- a/pkg/api/fed.gloo.solo.io/v1/types/upstream.pb.go +++ b/pkg/api/fed.gloo.solo.io/v1/types/upstream.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo-fed/fed.gloo/v1/upstream.proto @@ -9,12 +9,12 @@ package types import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" v1 "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/core/v1" v11 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1" - v1alpha1 "github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1" + types "github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) @@ -26,26 +26,22 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - +// The Federated[Resource] CRDs are a gloo-fed wrapper around Gloo Edge CRDs, with a Placement field indicating which +// clusters and namespaces to federate the object to. +// For more, see: https://docs.solo.io/gloo-edge/latest/guides/gloo_federation/federated_configuration/ type FederatedUpstreamSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Template *FederatedUpstreamSpec_Template `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` + Placement *types.Placement `protobuf:"bytes,2,opt,name=placement,proto3" json:"placement,omitempty"` unknownFields protoimpl.UnknownFields - - Template *FederatedUpstreamSpec_Template `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` - Placement *v1alpha1.Placement `protobuf:"bytes,2,opt,name=placement,proto3" json:"placement,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FederatedUpstreamSpec) Reset() { *x = FederatedUpstreamSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedUpstreamSpec) String() string { @@ -56,7 +52,7 @@ func (*FederatedUpstreamSpec) ProtoMessage() {} func (x *FederatedUpstreamSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -78,7 +74,7 @@ func (x *FederatedUpstreamSpec) GetTemplate() *FederatedUpstreamSpec_Template { return nil } -func (x *FederatedUpstreamSpec) GetPlacement() *v1alpha1.Placement { +func (x *FederatedUpstreamSpec) GetPlacement() *types.Placement { if x != nil { return x.Placement } @@ -86,20 +82,18 @@ func (x *FederatedUpstreamSpec) GetPlacement() *v1alpha1.Placement { } type FederatedUpstreamStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PlacementStatus *v1.PlacementStatus `protobuf:"bytes,1,opt,name=placement_status,json=placementStatus,proto3" json:"placement_status,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PlacementStatus *v1.PlacementStatus `protobuf:"bytes,1,opt,name=placement_status,json=placementStatus,proto3" json:"placement_status,omitempty"` + NamespacedPlacementStatuses map[string]*v1.PlacementStatus `protobuf:"bytes,2,rep,name=namespaced_placement_statuses,json=namespacedPlacementStatuses,proto3" json:"namespaced_placement_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FederatedUpstreamStatus) Reset() { *x = FederatedUpstreamStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedUpstreamStatus) String() string { @@ -110,7 +104,7 @@ func (*FederatedUpstreamStatus) ProtoMessage() {} func (x *FederatedUpstreamStatus) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -132,22 +126,26 @@ func (x *FederatedUpstreamStatus) GetPlacementStatus() *v1.PlacementStatus { return nil } +func (x *FederatedUpstreamStatus) GetNamespacedPlacementStatuses() map[string]*v1.PlacementStatus { + if x != nil { + return x.NamespacedPlacementStatuses + } + return nil +} + type FederatedUpstreamSpec_Template struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Spec *v11.UpstreamSpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` + Metadata *v1.TemplateMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` unknownFields protoimpl.UnknownFields - - Spec *v11.UpstreamSpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` - Metadata *v1.TemplateMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FederatedUpstreamSpec_Template) Reset() { *x = FederatedUpstreamSpec_Template{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedUpstreamSpec_Template) String() string { @@ -158,7 +156,7 @@ func (*FederatedUpstreamSpec_Template) ProtoMessage() {} func (x *FederatedUpstreamSpec_Template) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -189,92 +187,112 @@ func (x *FederatedUpstreamSpec_Template) GetMetadata() *v1.TemplateMetadata { var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_rawDesc = string([]byte{ 0x0a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4c, 0x67, 0x69, + 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x52, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, - 0x6b, 0x76, 0x32, 0x2d, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, - 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, - 0x31, 0x2f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, - 0x2f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0xa0, 0x02, 0x0a, 0x15, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4c, 0x0a, 0x08, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x66, 0x65, - 0x64, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x53, 0x70, 0x65, 0x63, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x75, 0x6c, - 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x7a, 0x0a, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, - 0x65, 0x63, 0x12, 0x3e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x22, 0x67, 0x0a, 0x17, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, - 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4c, 0x0a, - 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, - 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x63, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x48, 0x5a, 0x3e, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, - 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0xb8, 0xf5, 0x04, - 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x75, + 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2f, + 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa0, 0x02, 0x0a, 0x15, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x12, + 0x4c, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x30, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, + 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x7a, 0x0a, 0x08, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, + 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x3e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xeb, 0x02, 0x0a, 0x17, 0x46, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x4c, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x8e, 0x01, 0x0a, 0x1d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x64, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x66, 0x65, 0x64, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, + 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, + 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x1b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x64, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x65, 0x73, 0x1a, 0x71, 0x0a, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x64, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x48, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, + 0x5a, 0x3e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_goTypes = []any{ (*FederatedUpstreamSpec)(nil), // 0: fed.gloo.solo.io.FederatedUpstreamSpec (*FederatedUpstreamStatus)(nil), // 1: fed.gloo.solo.io.FederatedUpstreamStatus (*FederatedUpstreamSpec_Template)(nil), // 2: fed.gloo.solo.io.FederatedUpstreamSpec.Template - (*v1alpha1.Placement)(nil), // 3: multicluster.solo.io.Placement - (*v1.PlacementStatus)(nil), // 4: core.fed.solo.io.PlacementStatus - (*v11.UpstreamSpec)(nil), // 5: gloo.solo.io.UpstreamSpec - (*v1.TemplateMetadata)(nil), // 6: core.fed.solo.io.TemplateMetadata + nil, // 3: fed.gloo.solo.io.FederatedUpstreamStatus.NamespacedPlacementStatusesEntry + (*types.Placement)(nil), // 4: multicluster.solo.io.Placement + (*v1.PlacementStatus)(nil), // 5: core.fed.solo.io.PlacementStatus + (*v11.UpstreamSpec)(nil), // 6: gloo.solo.io.UpstreamSpec + (*v1.TemplateMetadata)(nil), // 7: core.fed.solo.io.TemplateMetadata } var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_depIdxs = []int32{ 2, // 0: fed.gloo.solo.io.FederatedUpstreamSpec.template:type_name -> fed.gloo.solo.io.FederatedUpstreamSpec.Template - 3, // 1: fed.gloo.solo.io.FederatedUpstreamSpec.placement:type_name -> multicluster.solo.io.Placement - 4, // 2: fed.gloo.solo.io.FederatedUpstreamStatus.placement_status:type_name -> core.fed.solo.io.PlacementStatus - 5, // 3: fed.gloo.solo.io.FederatedUpstreamSpec.Template.spec:type_name -> gloo.solo.io.UpstreamSpec - 6, // 4: fed.gloo.solo.io.FederatedUpstreamSpec.Template.metadata:type_name -> core.fed.solo.io.TemplateMetadata - 5, // [5:5] is the sub-list for method output_type - 5, // [5:5] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 4, // 1: fed.gloo.solo.io.FederatedUpstreamSpec.placement:type_name -> multicluster.solo.io.Placement + 5, // 2: fed.gloo.solo.io.FederatedUpstreamStatus.placement_status:type_name -> core.fed.solo.io.PlacementStatus + 3, // 3: fed.gloo.solo.io.FederatedUpstreamStatus.namespaced_placement_statuses:type_name -> fed.gloo.solo.io.FederatedUpstreamStatus.NamespacedPlacementStatusesEntry + 6, // 4: fed.gloo.solo.io.FederatedUpstreamSpec.Template.spec:type_name -> gloo.solo.io.UpstreamSpec + 7, // 5: fed.gloo.solo.io.FederatedUpstreamSpec.Template.metadata:type_name -> core.fed.solo.io.TemplateMetadata + 5, // 6: fed.gloo.solo.io.FederatedUpstreamStatus.NamespacedPlacementStatusesEntry.value:type_name -> core.fed.solo.io.PlacementStatus + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_init() } @@ -282,51 +300,13 @@ func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_i if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedUpstreamSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedUpstreamStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedUpstreamSpec_Template); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_rawDesc)), NumEnums: 0, - NumMessages: 3, + NumMessages: 4, NumExtensions: 0, NumServices: 0, }, @@ -335,7 +315,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_i MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_proto_depIdxs = nil } diff --git a/pkg/api/fed.gloo.solo.io/v1/types/upstream.pb.hash.go b/pkg/api/fed.gloo.solo.io/v1/types/upstream.pb.hash.go index ea131013a..825b3eb56 100644 --- a/pkg/api/fed.gloo.solo.io/v1/types/upstream.pb.hash.go +++ b/pkg/api/fed.gloo.solo.io/v1/types/upstream.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FederatedUpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,28 +43,40 @@ func (m *FederatedUpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetPlacement()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -70,6 +86,10 @@ func (m *FederatedUpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FederatedUpstreamStatus) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -83,23 +103,72 @@ func (m *FederatedUpstreamStatus) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetPlacementStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespacedPlacementStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { return 0, err } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err } + } return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FederatedUpstreamSpec_Template) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -113,28 +182,40 @@ func (m *FederatedUpstreamSpec_Template) Hash(hasher hash.Hash64) (uint64, error } if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/fed.gloo.solo.io/v1/types/upstream.pb.uniquehash.go b/pkg/api/fed.gloo.solo.io/v1/types/upstream.pb.uniquehash.go new file mode 100644 index 000000000..f1c44539b --- /dev/null +++ b/pkg/api/fed.gloo.solo.io/v1/types/upstream.pb.uniquehash.go @@ -0,0 +1,227 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.gloo/v1/upstream.proto + +package types + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedUpstreamSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1/types.FederatedUpstreamSpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPlacement()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedUpstreamStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1/types.FederatedUpstreamStatus")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPlacementStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespacedPlacementStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedUpstreamSpec_Template) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1/types.FederatedUpstreamSpec_Template")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/fed.gloo.solo.io/v1/types/upstream_group.pb.equal.go b/pkg/api/fed.gloo.solo.io/v1/types/upstream_group.pb.equal.go index afbead6e8..47c928e65 100644 --- a/pkg/api/fed.gloo.solo.io/v1/types/upstream_group.pb.equal.go +++ b/pkg/api/fed.gloo.solo.io/v1/types/upstream_group.pb.equal.go @@ -100,6 +100,23 @@ func (m *FederatedUpstreamGroupStatus) Equal(that interface{}) bool { } } + if len(m.GetNamespacedPlacementStatuses()) != len(target.GetNamespacedPlacementStatuses()) { + return false + } + for k, v := range m.GetNamespacedPlacementStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetNamespacedPlacementStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetNamespacedPlacementStatuses()[k]) { + return false + } + } + + } + return true } diff --git a/pkg/api/fed.gloo.solo.io/v1/types/upstream_group.pb.go b/pkg/api/fed.gloo.solo.io/v1/types/upstream_group.pb.go index c25041624..348083ea2 100644 --- a/pkg/api/fed.gloo.solo.io/v1/types/upstream_group.pb.go +++ b/pkg/api/fed.gloo.solo.io/v1/types/upstream_group.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo-fed/fed.gloo/v1/upstream_group.proto @@ -9,12 +9,12 @@ package types import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" v1 "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/core/v1" v11 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1" - v1alpha1 "github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1" + types "github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) @@ -26,26 +26,22 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - +// The Federated[Resource] CRDs are a gloo-fed wrapper around Gloo Edge CRDs, with a Placement field indicating which +// clusters and namespaces to federate the object to. +// For more, see: https://docs.solo.io/gloo-edge/latest/guides/gloo_federation/federated_configuration/ type FederatedUpstreamGroupSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Template *FederatedUpstreamGroupSpec_Template `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` + Placement *types.Placement `protobuf:"bytes,2,opt,name=placement,proto3" json:"placement,omitempty"` unknownFields protoimpl.UnknownFields - - Template *FederatedUpstreamGroupSpec_Template `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` - Placement *v1alpha1.Placement `protobuf:"bytes,2,opt,name=placement,proto3" json:"placement,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FederatedUpstreamGroupSpec) Reset() { *x = FederatedUpstreamGroupSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedUpstreamGroupSpec) String() string { @@ -56,7 +52,7 @@ func (*FederatedUpstreamGroupSpec) ProtoMessage() {} func (x *FederatedUpstreamGroupSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -78,7 +74,7 @@ func (x *FederatedUpstreamGroupSpec) GetTemplate() *FederatedUpstreamGroupSpec_T return nil } -func (x *FederatedUpstreamGroupSpec) GetPlacement() *v1alpha1.Placement { +func (x *FederatedUpstreamGroupSpec) GetPlacement() *types.Placement { if x != nil { return x.Placement } @@ -86,20 +82,18 @@ func (x *FederatedUpstreamGroupSpec) GetPlacement() *v1alpha1.Placement { } type FederatedUpstreamGroupStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PlacementStatus *v1.PlacementStatus `protobuf:"bytes,1,opt,name=placement_status,json=placementStatus,proto3" json:"placement_status,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PlacementStatus *v1.PlacementStatus `protobuf:"bytes,1,opt,name=placement_status,json=placementStatus,proto3" json:"placement_status,omitempty"` + NamespacedPlacementStatuses map[string]*v1.PlacementStatus `protobuf:"bytes,2,rep,name=namespaced_placement_statuses,json=namespacedPlacementStatuses,proto3" json:"namespaced_placement_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FederatedUpstreamGroupStatus) Reset() { *x = FederatedUpstreamGroupStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedUpstreamGroupStatus) String() string { @@ -110,7 +104,7 @@ func (*FederatedUpstreamGroupStatus) ProtoMessage() {} func (x *FederatedUpstreamGroupStatus) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -132,22 +126,26 @@ func (x *FederatedUpstreamGroupStatus) GetPlacementStatus() *v1.PlacementStatus return nil } +func (x *FederatedUpstreamGroupStatus) GetNamespacedPlacementStatuses() map[string]*v1.PlacementStatus { + if x != nil { + return x.NamespacedPlacementStatuses + } + return nil +} + type FederatedUpstreamGroupSpec_Template struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Spec *v11.UpstreamGroupSpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` + Metadata *v1.TemplateMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` unknownFields protoimpl.UnknownFields - - Spec *v11.UpstreamGroupSpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` - Metadata *v1.TemplateMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FederatedUpstreamGroupSpec_Template) Reset() { *x = FederatedUpstreamGroupSpec_Template{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedUpstreamGroupSpec_Template) String() string { @@ -158,7 +156,7 @@ func (*FederatedUpstreamGroupSpec_Template) ProtoMessage() {} func (x *FederatedUpstreamGroupSpec_Template) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -189,7 +187,7 @@ func (x *FederatedUpstreamGroupSpec_Template) GetMetadata() *v1.TemplateMetadata var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_rawDesc = string([]byte{ 0x0a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, @@ -197,86 +195,106 @@ var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_pr 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x74, 0x6f, 0x1a, 0x52, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6b, 0x76, 0x32, 0x2d, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, - 0x72, 0x69, 0x73, 0x65, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x75, - 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2f, - 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, - 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xaf, 0x02, 0x0a, 0x1a, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, - 0x63, 0x12, 0x51, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, - 0x63, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, - 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x1a, 0x7f, 0x0a, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, - 0x33, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, - 0x73, 0x70, 0x65, 0x63, 0x12, 0x3e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, - 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x22, 0x6c, 0x0a, 0x1c, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x4c, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x42, 0x48, 0x5a, 0x3e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, - 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, - 0x79, 0x70, 0x65, 0x73, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x6d, 0x75, + 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, + 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6c, + 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x39, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, + 0x78, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xaf, 0x02, 0x0a, 0x1a, 0x46, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x51, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x66, 0x65, 0x64, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x70, 0x6c, + 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, + 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x7f, 0x0a, 0x08, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x3e, 0x0a, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xf5, 0x02, 0x0a, 0x1c, 0x46, + 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4c, 0x0a, 0x10, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x93, 0x01, 0x0a, 0x1d, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x4f, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x63, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x1b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x50, 0x6c, + 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, + 0x71, 0x0a, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x50, 0x6c, 0x61, + 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x42, 0x48, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x5a, 0x3e, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_goTypes = []any{ (*FederatedUpstreamGroupSpec)(nil), // 0: fed.gloo.solo.io.FederatedUpstreamGroupSpec (*FederatedUpstreamGroupStatus)(nil), // 1: fed.gloo.solo.io.FederatedUpstreamGroupStatus (*FederatedUpstreamGroupSpec_Template)(nil), // 2: fed.gloo.solo.io.FederatedUpstreamGroupSpec.Template - (*v1alpha1.Placement)(nil), // 3: multicluster.solo.io.Placement - (*v1.PlacementStatus)(nil), // 4: core.fed.solo.io.PlacementStatus - (*v11.UpstreamGroupSpec)(nil), // 5: gloo.solo.io.UpstreamGroupSpec - (*v1.TemplateMetadata)(nil), // 6: core.fed.solo.io.TemplateMetadata + nil, // 3: fed.gloo.solo.io.FederatedUpstreamGroupStatus.NamespacedPlacementStatusesEntry + (*types.Placement)(nil), // 4: multicluster.solo.io.Placement + (*v1.PlacementStatus)(nil), // 5: core.fed.solo.io.PlacementStatus + (*v11.UpstreamGroupSpec)(nil), // 6: gloo.solo.io.UpstreamGroupSpec + (*v1.TemplateMetadata)(nil), // 7: core.fed.solo.io.TemplateMetadata } var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_depIdxs = []int32{ 2, // 0: fed.gloo.solo.io.FederatedUpstreamGroupSpec.template:type_name -> fed.gloo.solo.io.FederatedUpstreamGroupSpec.Template - 3, // 1: fed.gloo.solo.io.FederatedUpstreamGroupSpec.placement:type_name -> multicluster.solo.io.Placement - 4, // 2: fed.gloo.solo.io.FederatedUpstreamGroupStatus.placement_status:type_name -> core.fed.solo.io.PlacementStatus - 5, // 3: fed.gloo.solo.io.FederatedUpstreamGroupSpec.Template.spec:type_name -> gloo.solo.io.UpstreamGroupSpec - 6, // 4: fed.gloo.solo.io.FederatedUpstreamGroupSpec.Template.metadata:type_name -> core.fed.solo.io.TemplateMetadata - 5, // [5:5] is the sub-list for method output_type - 5, // [5:5] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 4, // 1: fed.gloo.solo.io.FederatedUpstreamGroupSpec.placement:type_name -> multicluster.solo.io.Placement + 5, // 2: fed.gloo.solo.io.FederatedUpstreamGroupStatus.placement_status:type_name -> core.fed.solo.io.PlacementStatus + 3, // 3: fed.gloo.solo.io.FederatedUpstreamGroupStatus.namespaced_placement_statuses:type_name -> fed.gloo.solo.io.FederatedUpstreamGroupStatus.NamespacedPlacementStatusesEntry + 6, // 4: fed.gloo.solo.io.FederatedUpstreamGroupSpec.Template.spec:type_name -> gloo.solo.io.UpstreamGroupSpec + 7, // 5: fed.gloo.solo.io.FederatedUpstreamGroupSpec.Template.metadata:type_name -> core.fed.solo.io.TemplateMetadata + 5, // 6: fed.gloo.solo.io.FederatedUpstreamGroupStatus.NamespacedPlacementStatusesEntry.value:type_name -> core.fed.solo.io.PlacementStatus + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_init() } @@ -284,51 +302,13 @@ func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_p if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedUpstreamGroupSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedUpstreamGroupStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedUpstreamGroupSpec_Template); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_rawDesc)), NumEnums: 0, - NumMessages: 3, + NumMessages: 4, NumExtensions: 0, NumServices: 0, }, @@ -337,7 +317,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_p MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_fed_fed_gloo_v1_upstream_group_proto_depIdxs = nil } diff --git a/pkg/api/fed.gloo.solo.io/v1/types/upstream_group.pb.hash.go b/pkg/api/fed.gloo.solo.io/v1/types/upstream_group.pb.hash.go index 60c37e471..1afcc4ca9 100644 --- a/pkg/api/fed.gloo.solo.io/v1/types/upstream_group.pb.hash.go +++ b/pkg/api/fed.gloo.solo.io/v1/types/upstream_group.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FederatedUpstreamGroupSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,28 +43,40 @@ func (m *FederatedUpstreamGroupSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetPlacement()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -70,6 +86,10 @@ func (m *FederatedUpstreamGroupSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FederatedUpstreamGroupStatus) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -83,23 +103,72 @@ func (m *FederatedUpstreamGroupStatus) Hash(hasher hash.Hash64) (uint64, error) } if h, ok := interface{}(m.GetPlacementStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespacedPlacementStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { return 0, err } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err } + } return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FederatedUpstreamGroupSpec_Template) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -113,28 +182,40 @@ func (m *FederatedUpstreamGroupSpec_Template) Hash(hasher hash.Hash64) (uint64, } if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/fed.gloo.solo.io/v1/types/upstream_group.pb.uniquehash.go b/pkg/api/fed.gloo.solo.io/v1/types/upstream_group.pb.uniquehash.go new file mode 100644 index 000000000..47304934a --- /dev/null +++ b/pkg/api/fed.gloo.solo.io/v1/types/upstream_group.pb.uniquehash.go @@ -0,0 +1,227 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.gloo/v1/upstream_group.proto + +package types + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedUpstreamGroupSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1/types.FederatedUpstreamGroupSpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPlacement()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedUpstreamGroupStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1/types.FederatedUpstreamGroupStatus")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPlacementStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespacedPlacementStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedUpstreamGroupSpec_Template) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1/types.FederatedUpstreamGroupSpec_Template")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/fed.gloo.solo.io/v1/zz_generated.deepcopy.go b/pkg/api/fed.gloo.solo.io/v1/zz_generated.deepcopy.go new file mode 100644 index 000000000..487b687d6 --- /dev/null +++ b/pkg/api/fed.gloo.solo.io/v1/zz_generated.deepcopy.go @@ -0,0 +1,189 @@ +// Code generated by skv2. DO NOT EDIT. + +// This file contains generated Deepcopy methods for fed.gloo.solo.io/v1 resources + +package v1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// Generated Deepcopy methods for FederatedSettings + +func (in *FederatedSettings) DeepCopyInto(out *FederatedSettings) { + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + + // deepcopy spec + in.Spec.DeepCopyInto(&out.Spec) + // deepcopy status + in.Status.DeepCopyInto(&out.Status) + + return +} + +func (in *FederatedSettings) DeepCopy() *FederatedSettings { + if in == nil { + return nil + } + out := new(FederatedSettings) + in.DeepCopyInto(out) + return out +} + +func (in *FederatedSettings) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +func (in *FederatedSettingsList) DeepCopyInto(out *FederatedSettingsList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FederatedSettings, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +func (in *FederatedSettingsList) DeepCopy() *FederatedSettingsList { + if in == nil { + return nil + } + out := new(FederatedSettingsList) + in.DeepCopyInto(out) + return out +} + +func (in *FederatedSettingsList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// Generated Deepcopy methods for FederatedUpstream + +func (in *FederatedUpstream) DeepCopyInto(out *FederatedUpstream) { + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + + // deepcopy spec + in.Spec.DeepCopyInto(&out.Spec) + // deepcopy status + in.Status.DeepCopyInto(&out.Status) + + return +} + +func (in *FederatedUpstream) DeepCopy() *FederatedUpstream { + if in == nil { + return nil + } + out := new(FederatedUpstream) + in.DeepCopyInto(out) + return out +} + +func (in *FederatedUpstream) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +func (in *FederatedUpstreamList) DeepCopyInto(out *FederatedUpstreamList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FederatedUpstream, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +func (in *FederatedUpstreamList) DeepCopy() *FederatedUpstreamList { + if in == nil { + return nil + } + out := new(FederatedUpstreamList) + in.DeepCopyInto(out) + return out +} + +func (in *FederatedUpstreamList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// Generated Deepcopy methods for FederatedUpstreamGroup + +func (in *FederatedUpstreamGroup) DeepCopyInto(out *FederatedUpstreamGroup) { + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + + // deepcopy spec + in.Spec.DeepCopyInto(&out.Spec) + // deepcopy status + in.Status.DeepCopyInto(&out.Status) + + return +} + +func (in *FederatedUpstreamGroup) DeepCopy() *FederatedUpstreamGroup { + if in == nil { + return nil + } + out := new(FederatedUpstreamGroup) + in.DeepCopyInto(out) + return out +} + +func (in *FederatedUpstreamGroup) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +func (in *FederatedUpstreamGroupList) DeepCopyInto(out *FederatedUpstreamGroupList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FederatedUpstreamGroup, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +func (in *FederatedUpstreamGroupList) DeepCopy() *FederatedUpstreamGroupList { + if in == nil { + return nil + } + out := new(FederatedUpstreamGroupList) + in.DeepCopyInto(out) + return out +} + +func (in *FederatedUpstreamGroupList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} diff --git a/pkg/api/fed.ratelimit.solo.io/v1alpha1/clients.go b/pkg/api/fed.ratelimit.solo.io/v1alpha1/clients.go new file mode 100644 index 000000000..859c12f4d --- /dev/null +++ b/pkg/api/fed.ratelimit.solo.io/v1alpha1/clients.go @@ -0,0 +1,213 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./clients.go -destination mocks/clients.go + +package v1alpha1 + +import ( + "context" + + "github.com/solo-io/skv2/pkg/controllerutils" + "github.com/solo-io/skv2/pkg/multicluster" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/rest" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +// MulticlusterClientset for the fed.ratelimit.solo.io/v1alpha1 APIs +type MulticlusterClientset interface { + // Cluster returns a Clientset for the given cluster + Cluster(cluster string) (Clientset, error) +} + +type multiclusterClientset struct { + client multicluster.Client +} + +func NewMulticlusterClientset(client multicluster.Client) MulticlusterClientset { + return &multiclusterClientset{client: client} +} + +func (m *multiclusterClientset) Cluster(cluster string) (Clientset, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewClientset(client), nil +} + +// clienset for the fed.ratelimit.solo.io/v1alpha1 APIs +type Clientset interface { + // clienset for the fed.ratelimit.solo.io/v1alpha1/v1alpha1 APIs + FederatedRateLimitConfigs() FederatedRateLimitConfigClient +} + +type clientSet struct { + client client.Client +} + +func NewClientsetFromConfig(cfg *rest.Config) (Clientset, error) { + scheme := scheme.Scheme + if err := SchemeBuilder.AddToScheme(scheme); err != nil { + return nil, err + } + client, err := client.New(cfg, client.Options{ + Scheme: scheme, + }) + if err != nil { + return nil, err + } + return NewClientset(client), nil +} + +func NewClientset(client client.Client) Clientset { + return &clientSet{client: client} +} + +// clienset for the fed.ratelimit.solo.io/v1alpha1/v1alpha1 APIs +func (c *clientSet) FederatedRateLimitConfigs() FederatedRateLimitConfigClient { + return NewFederatedRateLimitConfigClient(c.client) +} + +// Reader knows how to read and list FederatedRateLimitConfigs. +type FederatedRateLimitConfigReader interface { + // Get retrieves a FederatedRateLimitConfig for the given object key + GetFederatedRateLimitConfig(ctx context.Context, key client.ObjectKey) (*FederatedRateLimitConfig, error) + + // List retrieves list of FederatedRateLimitConfigs for a given namespace and list options. + ListFederatedRateLimitConfig(ctx context.Context, opts ...client.ListOption) (*FederatedRateLimitConfigList, error) +} + +// FederatedRateLimitConfigTransitionFunction instructs the FederatedRateLimitConfigWriter how to transition between an existing +// FederatedRateLimitConfig object and a desired on an Upsert +type FederatedRateLimitConfigTransitionFunction func(existing, desired *FederatedRateLimitConfig) error + +// Writer knows how to create, delete, and update FederatedRateLimitConfigs. +type FederatedRateLimitConfigWriter interface { + // Create saves the FederatedRateLimitConfig object. + CreateFederatedRateLimitConfig(ctx context.Context, obj *FederatedRateLimitConfig, opts ...client.CreateOption) error + + // Delete deletes the FederatedRateLimitConfig object. + DeleteFederatedRateLimitConfig(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error + + // Update updates the given FederatedRateLimitConfig object. + UpdateFederatedRateLimitConfig(ctx context.Context, obj *FederatedRateLimitConfig, opts ...client.UpdateOption) error + + // Patch patches the given FederatedRateLimitConfig object. + PatchFederatedRateLimitConfig(ctx context.Context, obj *FederatedRateLimitConfig, patch client.Patch, opts ...client.PatchOption) error + + // DeleteAllOf deletes all FederatedRateLimitConfig objects matching the given options. + DeleteAllOfFederatedRateLimitConfig(ctx context.Context, opts ...client.DeleteAllOfOption) error + + // Create or Update the FederatedRateLimitConfig object. + UpsertFederatedRateLimitConfig(ctx context.Context, obj *FederatedRateLimitConfig, transitionFuncs ...FederatedRateLimitConfigTransitionFunction) error +} + +// StatusWriter knows how to update status subresource of a FederatedRateLimitConfig object. +type FederatedRateLimitConfigStatusWriter interface { + // Update updates the fields corresponding to the status subresource for the + // given FederatedRateLimitConfig object. + UpdateFederatedRateLimitConfigStatus(ctx context.Context, obj *FederatedRateLimitConfig, opts ...client.SubResourceUpdateOption) error + + // Patch patches the given FederatedRateLimitConfig object's subresource. + PatchFederatedRateLimitConfigStatus(ctx context.Context, obj *FederatedRateLimitConfig, patch client.Patch, opts ...client.SubResourcePatchOption) error +} + +// Client knows how to perform CRUD operations on FederatedRateLimitConfigs. +type FederatedRateLimitConfigClient interface { + FederatedRateLimitConfigReader + FederatedRateLimitConfigWriter + FederatedRateLimitConfigStatusWriter +} + +type federatedRateLimitConfigClient struct { + client client.Client +} + +func NewFederatedRateLimitConfigClient(client client.Client) *federatedRateLimitConfigClient { + return &federatedRateLimitConfigClient{client: client} +} + +func (c *federatedRateLimitConfigClient) GetFederatedRateLimitConfig(ctx context.Context, key client.ObjectKey) (*FederatedRateLimitConfig, error) { + obj := &FederatedRateLimitConfig{} + if err := c.client.Get(ctx, key, obj); err != nil { + return nil, err + } + return obj, nil +} + +func (c *federatedRateLimitConfigClient) ListFederatedRateLimitConfig(ctx context.Context, opts ...client.ListOption) (*FederatedRateLimitConfigList, error) { + list := &FederatedRateLimitConfigList{} + if err := c.client.List(ctx, list, opts...); err != nil { + return nil, err + } + return list, nil +} + +func (c *federatedRateLimitConfigClient) CreateFederatedRateLimitConfig(ctx context.Context, obj *FederatedRateLimitConfig, opts ...client.CreateOption) error { + return c.client.Create(ctx, obj, opts...) +} + +func (c *federatedRateLimitConfigClient) DeleteFederatedRateLimitConfig(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + obj := &FederatedRateLimitConfig{} + obj.SetName(key.Name) + obj.SetNamespace(key.Namespace) + return c.client.Delete(ctx, obj, opts...) +} + +func (c *federatedRateLimitConfigClient) UpdateFederatedRateLimitConfig(ctx context.Context, obj *FederatedRateLimitConfig, opts ...client.UpdateOption) error { + return c.client.Update(ctx, obj, opts...) +} + +func (c *federatedRateLimitConfigClient) PatchFederatedRateLimitConfig(ctx context.Context, obj *FederatedRateLimitConfig, patch client.Patch, opts ...client.PatchOption) error { + return c.client.Patch(ctx, obj, patch, opts...) +} + +func (c *federatedRateLimitConfigClient) DeleteAllOfFederatedRateLimitConfig(ctx context.Context, opts ...client.DeleteAllOfOption) error { + obj := &FederatedRateLimitConfig{} + return c.client.DeleteAllOf(ctx, obj, opts...) +} + +func (c *federatedRateLimitConfigClient) UpsertFederatedRateLimitConfig(ctx context.Context, obj *FederatedRateLimitConfig, transitionFuncs ...FederatedRateLimitConfigTransitionFunction) error { + genericTxFunc := func(existing, desired runtime.Object) error { + for _, txFunc := range transitionFuncs { + if err := txFunc(existing.(*FederatedRateLimitConfig), desired.(*FederatedRateLimitConfig)); err != nil { + return err + } + } + return nil + } + _, err := controllerutils.Upsert(ctx, c.client, obj, genericTxFunc) + return err +} + +func (c *federatedRateLimitConfigClient) UpdateFederatedRateLimitConfigStatus(ctx context.Context, obj *FederatedRateLimitConfig, opts ...client.SubResourceUpdateOption) error { + return c.client.Status().Update(ctx, obj, opts...) +} + +func (c *federatedRateLimitConfigClient) PatchFederatedRateLimitConfigStatus(ctx context.Context, obj *FederatedRateLimitConfig, patch client.Patch, opts ...client.SubResourcePatchOption) error { + return c.client.Status().Patch(ctx, obj, patch, opts...) +} + +// Provides FederatedRateLimitConfigClients for multiple clusters. +type MulticlusterFederatedRateLimitConfigClient interface { + // Cluster returns a FederatedRateLimitConfigClient for the given cluster + Cluster(cluster string) (FederatedRateLimitConfigClient, error) +} + +type multiclusterFederatedRateLimitConfigClient struct { + client multicluster.Client +} + +func NewMulticlusterFederatedRateLimitConfigClient(client multicluster.Client) MulticlusterFederatedRateLimitConfigClient { + return &multiclusterFederatedRateLimitConfigClient{client: client} +} + +func (m *multiclusterFederatedRateLimitConfigClient) Cluster(cluster string) (FederatedRateLimitConfigClient, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewFederatedRateLimitConfigClient(client), nil +} diff --git a/pkg/api/fed.ratelimit.solo.io/v1alpha1/controller/event_handlers.go b/pkg/api/fed.ratelimit.solo.io/v1alpha1/controller/event_handlers.go new file mode 100644 index 000000000..38ca9588d --- /dev/null +++ b/pkg/api/fed.ratelimit.solo.io/v1alpha1/controller/event_handlers.go @@ -0,0 +1,125 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./event_handlers.go -destination mocks/event_handlers.go + +// Definitions for the Kubernetes Controllers +package controller + +import ( + "context" + + fed_ratelimit_solo_io_v1alpha1 "github.com/solo-io/solo-apis/pkg/api/fed.ratelimit.solo.io/v1alpha1" + + "github.com/pkg/errors" + "github.com/solo-io/skv2/pkg/events" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/manager" + "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// Handle events for the FederatedRateLimitConfig Resource +// DEPRECATED: Prefer reconciler pattern. +type FederatedRateLimitConfigEventHandler interface { + CreateFederatedRateLimitConfig(obj *fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) error + UpdateFederatedRateLimitConfig(old, new *fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) error + DeleteFederatedRateLimitConfig(obj *fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) error + GenericFederatedRateLimitConfig(obj *fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) error +} + +type FederatedRateLimitConfigEventHandlerFuncs struct { + OnCreate func(obj *fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) error + OnUpdate func(old, new *fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) error + OnDelete func(obj *fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) error + OnGeneric func(obj *fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) error +} + +func (f *FederatedRateLimitConfigEventHandlerFuncs) CreateFederatedRateLimitConfig(obj *fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) error { + if f.OnCreate == nil { + return nil + } + return f.OnCreate(obj) +} + +func (f *FederatedRateLimitConfigEventHandlerFuncs) DeleteFederatedRateLimitConfig(obj *fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) error { + if f.OnDelete == nil { + return nil + } + return f.OnDelete(obj) +} + +func (f *FederatedRateLimitConfigEventHandlerFuncs) UpdateFederatedRateLimitConfig(objOld, objNew *fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) error { + if f.OnUpdate == nil { + return nil + } + return f.OnUpdate(objOld, objNew) +} + +func (f *FederatedRateLimitConfigEventHandlerFuncs) GenericFederatedRateLimitConfig(obj *fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) error { + if f.OnGeneric == nil { + return nil + } + return f.OnGeneric(obj) +} + +type FederatedRateLimitConfigEventWatcher interface { + AddEventHandler(ctx context.Context, h FederatedRateLimitConfigEventHandler, predicates ...predicate.Predicate) error +} + +type federatedRateLimitConfigEventWatcher struct { + watcher events.EventWatcher +} + +func NewFederatedRateLimitConfigEventWatcher(name string, mgr manager.Manager) FederatedRateLimitConfigEventWatcher { + return &federatedRateLimitConfigEventWatcher{ + watcher: events.NewWatcher(name, mgr, &fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig{}), + } +} + +func (c *federatedRateLimitConfigEventWatcher) AddEventHandler(ctx context.Context, h FederatedRateLimitConfigEventHandler, predicates ...predicate.Predicate) error { + handler := genericFederatedRateLimitConfigHandler{handler: h} + if err := c.watcher.Watch(ctx, handler, predicates...); err != nil { + return err + } + return nil +} + +// genericFederatedRateLimitConfigHandler implements a generic events.EventHandler +type genericFederatedRateLimitConfigHandler struct { + handler FederatedRateLimitConfigEventHandler +} + +func (h genericFederatedRateLimitConfigHandler) Create(object client.Object) error { + obj, ok := object.(*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) + if !ok { + return errors.Errorf("internal error: FederatedRateLimitConfig handler received event for %T", object) + } + return h.handler.CreateFederatedRateLimitConfig(obj) +} + +func (h genericFederatedRateLimitConfigHandler) Delete(object client.Object) error { + obj, ok := object.(*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) + if !ok { + return errors.Errorf("internal error: FederatedRateLimitConfig handler received event for %T", object) + } + return h.handler.DeleteFederatedRateLimitConfig(obj) +} + +func (h genericFederatedRateLimitConfigHandler) Update(old, new client.Object) error { + objOld, ok := old.(*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) + if !ok { + return errors.Errorf("internal error: FederatedRateLimitConfig handler received event for %T", old) + } + objNew, ok := new.(*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) + if !ok { + return errors.Errorf("internal error: FederatedRateLimitConfig handler received event for %T", new) + } + return h.handler.UpdateFederatedRateLimitConfig(objOld, objNew) +} + +func (h genericFederatedRateLimitConfigHandler) Generic(object client.Object) error { + obj, ok := object.(*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) + if !ok { + return errors.Errorf("internal error: FederatedRateLimitConfig handler received event for %T", object) + } + return h.handler.GenericFederatedRateLimitConfig(obj) +} diff --git a/pkg/api/fed.ratelimit.solo.io/v1alpha1/controller/mocks/event_handlers.go b/pkg/api/fed.ratelimit.solo.io/v1alpha1/controller/mocks/event_handlers.go new file mode 100644 index 000000000..9d4f90e1d --- /dev/null +++ b/pkg/api/fed.ratelimit.solo.io/v1alpha1/controller/mocks/event_handlers.go @@ -0,0 +1,136 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./event_handlers.go + +// Package mock_controller is a generated GoMock package. +package mock_controller + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + v1alpha1 "github.com/solo-io/solo-apis/pkg/api/fed.ratelimit.solo.io/v1alpha1" + controller "github.com/solo-io/solo-apis/pkg/api/fed.ratelimit.solo.io/v1alpha1/controller" + predicate "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// MockFederatedRateLimitConfigEventHandler is a mock of FederatedRateLimitConfigEventHandler interface. +type MockFederatedRateLimitConfigEventHandler struct { + ctrl *gomock.Controller + recorder *MockFederatedRateLimitConfigEventHandlerMockRecorder +} + +// MockFederatedRateLimitConfigEventHandlerMockRecorder is the mock recorder for MockFederatedRateLimitConfigEventHandler. +type MockFederatedRateLimitConfigEventHandlerMockRecorder struct { + mock *MockFederatedRateLimitConfigEventHandler +} + +// NewMockFederatedRateLimitConfigEventHandler creates a new mock instance. +func NewMockFederatedRateLimitConfigEventHandler(ctrl *gomock.Controller) *MockFederatedRateLimitConfigEventHandler { + mock := &MockFederatedRateLimitConfigEventHandler{ctrl: ctrl} + mock.recorder = &MockFederatedRateLimitConfigEventHandlerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedRateLimitConfigEventHandler) EXPECT() *MockFederatedRateLimitConfigEventHandlerMockRecorder { + return m.recorder +} + +// CreateFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigEventHandler) CreateFederatedRateLimitConfig(obj *v1alpha1.FederatedRateLimitConfig) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateFederatedRateLimitConfig", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedRateLimitConfig indicates an expected call of CreateFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigEventHandlerMockRecorder) CreateFederatedRateLimitConfig(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigEventHandler)(nil).CreateFederatedRateLimitConfig), obj) +} + +// DeleteFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigEventHandler) DeleteFederatedRateLimitConfig(obj *v1alpha1.FederatedRateLimitConfig) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteFederatedRateLimitConfig", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedRateLimitConfig indicates an expected call of DeleteFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigEventHandlerMockRecorder) DeleteFederatedRateLimitConfig(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigEventHandler)(nil).DeleteFederatedRateLimitConfig), obj) +} + +// GenericFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigEventHandler) GenericFederatedRateLimitConfig(obj *v1alpha1.FederatedRateLimitConfig) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GenericFederatedRateLimitConfig", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// GenericFederatedRateLimitConfig indicates an expected call of GenericFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigEventHandlerMockRecorder) GenericFederatedRateLimitConfig(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigEventHandler)(nil).GenericFederatedRateLimitConfig), obj) +} + +// UpdateFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigEventHandler) UpdateFederatedRateLimitConfig(old, new *v1alpha1.FederatedRateLimitConfig) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateFederatedRateLimitConfig", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedRateLimitConfig indicates an expected call of UpdateFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigEventHandlerMockRecorder) UpdateFederatedRateLimitConfig(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigEventHandler)(nil).UpdateFederatedRateLimitConfig), old, new) +} + +// MockFederatedRateLimitConfigEventWatcher is a mock of FederatedRateLimitConfigEventWatcher interface. +type MockFederatedRateLimitConfigEventWatcher struct { + ctrl *gomock.Controller + recorder *MockFederatedRateLimitConfigEventWatcherMockRecorder +} + +// MockFederatedRateLimitConfigEventWatcherMockRecorder is the mock recorder for MockFederatedRateLimitConfigEventWatcher. +type MockFederatedRateLimitConfigEventWatcherMockRecorder struct { + mock *MockFederatedRateLimitConfigEventWatcher +} + +// NewMockFederatedRateLimitConfigEventWatcher creates a new mock instance. +func NewMockFederatedRateLimitConfigEventWatcher(ctrl *gomock.Controller) *MockFederatedRateLimitConfigEventWatcher { + mock := &MockFederatedRateLimitConfigEventWatcher{ctrl: ctrl} + mock.recorder = &MockFederatedRateLimitConfigEventWatcherMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedRateLimitConfigEventWatcher) EXPECT() *MockFederatedRateLimitConfigEventWatcherMockRecorder { + return m.recorder +} + +// AddEventHandler mocks base method. +func (m *MockFederatedRateLimitConfigEventWatcher) AddEventHandler(ctx context.Context, h controller.FederatedRateLimitConfigEventHandler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, h} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "AddEventHandler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddEventHandler indicates an expected call of AddEventHandler. +func (mr *MockFederatedRateLimitConfigEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, h}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockFederatedRateLimitConfigEventWatcher)(nil).AddEventHandler), varargs...) +} diff --git a/pkg/api/fed.ratelimit.solo.io/v1alpha1/controller/mocks/multicluster_reconcilers.go b/pkg/api/fed.ratelimit.solo.io/v1alpha1/controller/mocks/multicluster_reconcilers.go new file mode 100644 index 000000000..e4ba47957 --- /dev/null +++ b/pkg/api/fed.ratelimit.solo.io/v1alpha1/controller/mocks/multicluster_reconcilers.go @@ -0,0 +1,131 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./multicluster_reconcilers.go + +// Package mock_controller is a generated GoMock package. +package mock_controller + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + reconcile "github.com/solo-io/skv2/pkg/reconcile" + v1alpha1 "github.com/solo-io/solo-apis/pkg/api/fed.ratelimit.solo.io/v1alpha1" + controller "github.com/solo-io/solo-apis/pkg/api/fed.ratelimit.solo.io/v1alpha1/controller" + predicate "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// MockMulticlusterFederatedRateLimitConfigReconciler is a mock of MulticlusterFederatedRateLimitConfigReconciler interface. +type MockMulticlusterFederatedRateLimitConfigReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedRateLimitConfigReconcilerMockRecorder +} + +// MockMulticlusterFederatedRateLimitConfigReconcilerMockRecorder is the mock recorder for MockMulticlusterFederatedRateLimitConfigReconciler. +type MockMulticlusterFederatedRateLimitConfigReconcilerMockRecorder struct { + mock *MockMulticlusterFederatedRateLimitConfigReconciler +} + +// NewMockMulticlusterFederatedRateLimitConfigReconciler creates a new mock instance. +func NewMockMulticlusterFederatedRateLimitConfigReconciler(ctrl *gomock.Controller) *MockMulticlusterFederatedRateLimitConfigReconciler { + mock := &MockMulticlusterFederatedRateLimitConfigReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedRateLimitConfigReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedRateLimitConfigReconciler) EXPECT() *MockMulticlusterFederatedRateLimitConfigReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedRateLimitConfig mocks base method. +func (m *MockMulticlusterFederatedRateLimitConfigReconciler) ReconcileFederatedRateLimitConfig(clusterName string, obj *v1alpha1.FederatedRateLimitConfig) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedRateLimitConfig", clusterName, obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedRateLimitConfig indicates an expected call of ReconcileFederatedRateLimitConfig. +func (mr *MockMulticlusterFederatedRateLimitConfigReconcilerMockRecorder) ReconcileFederatedRateLimitConfig(clusterName, obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedRateLimitConfig", reflect.TypeOf((*MockMulticlusterFederatedRateLimitConfigReconciler)(nil).ReconcileFederatedRateLimitConfig), clusterName, obj) +} + +// MockMulticlusterFederatedRateLimitConfigDeletionReconciler is a mock of MulticlusterFederatedRateLimitConfigDeletionReconciler interface. +type MockMulticlusterFederatedRateLimitConfigDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedRateLimitConfigDeletionReconcilerMockRecorder +} + +// MockMulticlusterFederatedRateLimitConfigDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterFederatedRateLimitConfigDeletionReconciler. +type MockMulticlusterFederatedRateLimitConfigDeletionReconcilerMockRecorder struct { + mock *MockMulticlusterFederatedRateLimitConfigDeletionReconciler +} + +// NewMockMulticlusterFederatedRateLimitConfigDeletionReconciler creates a new mock instance. +func NewMockMulticlusterFederatedRateLimitConfigDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterFederatedRateLimitConfigDeletionReconciler { + mock := &MockMulticlusterFederatedRateLimitConfigDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedRateLimitConfigDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedRateLimitConfigDeletionReconciler) EXPECT() *MockMulticlusterFederatedRateLimitConfigDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedRateLimitConfigDeletion mocks base method. +func (m *MockMulticlusterFederatedRateLimitConfigDeletionReconciler) ReconcileFederatedRateLimitConfigDeletion(clusterName string, req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedRateLimitConfigDeletion", clusterName, req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileFederatedRateLimitConfigDeletion indicates an expected call of ReconcileFederatedRateLimitConfigDeletion. +func (mr *MockMulticlusterFederatedRateLimitConfigDeletionReconcilerMockRecorder) ReconcileFederatedRateLimitConfigDeletion(clusterName, req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedRateLimitConfigDeletion", reflect.TypeOf((*MockMulticlusterFederatedRateLimitConfigDeletionReconciler)(nil).ReconcileFederatedRateLimitConfigDeletion), clusterName, req) +} + +// MockMulticlusterFederatedRateLimitConfigReconcileLoop is a mock of MulticlusterFederatedRateLimitConfigReconcileLoop interface. +type MockMulticlusterFederatedRateLimitConfigReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedRateLimitConfigReconcileLoopMockRecorder +} + +// MockMulticlusterFederatedRateLimitConfigReconcileLoopMockRecorder is the mock recorder for MockMulticlusterFederatedRateLimitConfigReconcileLoop. +type MockMulticlusterFederatedRateLimitConfigReconcileLoopMockRecorder struct { + mock *MockMulticlusterFederatedRateLimitConfigReconcileLoop +} + +// NewMockMulticlusterFederatedRateLimitConfigReconcileLoop creates a new mock instance. +func NewMockMulticlusterFederatedRateLimitConfigReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterFederatedRateLimitConfigReconcileLoop { + mock := &MockMulticlusterFederatedRateLimitConfigReconcileLoop{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedRateLimitConfigReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedRateLimitConfigReconcileLoop) EXPECT() *MockMulticlusterFederatedRateLimitConfigReconcileLoopMockRecorder { + return m.recorder +} + +// AddMulticlusterFederatedRateLimitConfigReconciler mocks base method. +func (m *MockMulticlusterFederatedRateLimitConfigReconcileLoop) AddMulticlusterFederatedRateLimitConfigReconciler(ctx context.Context, rec controller.MulticlusterFederatedRateLimitConfigReconciler, predicates ...predicate.Predicate) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "AddMulticlusterFederatedRateLimitConfigReconciler", varargs...) +} + +// AddMulticlusterFederatedRateLimitConfigReconciler indicates an expected call of AddMulticlusterFederatedRateLimitConfigReconciler. +func (mr *MockMulticlusterFederatedRateLimitConfigReconcileLoopMockRecorder) AddMulticlusterFederatedRateLimitConfigReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterFederatedRateLimitConfigReconciler", reflect.TypeOf((*MockMulticlusterFederatedRateLimitConfigReconcileLoop)(nil).AddMulticlusterFederatedRateLimitConfigReconciler), varargs...) +} diff --git a/pkg/api/fed.ratelimit.solo.io/v1alpha1/controller/mocks/reconcilers.go b/pkg/api/fed.ratelimit.solo.io/v1alpha1/controller/mocks/reconcilers.go new file mode 100644 index 000000000..4bc8a9ba7 --- /dev/null +++ b/pkg/api/fed.ratelimit.solo.io/v1alpha1/controller/mocks/reconcilers.go @@ -0,0 +1,199 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./reconcilers.go + +// Package mock_controller is a generated GoMock package. +package mock_controller + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + reconcile "github.com/solo-io/skv2/pkg/reconcile" + v1alpha1 "github.com/solo-io/solo-apis/pkg/api/fed.ratelimit.solo.io/v1alpha1" + controller "github.com/solo-io/solo-apis/pkg/api/fed.ratelimit.solo.io/v1alpha1/controller" + predicate "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// MockFederatedRateLimitConfigReconciler is a mock of FederatedRateLimitConfigReconciler interface. +type MockFederatedRateLimitConfigReconciler struct { + ctrl *gomock.Controller + recorder *MockFederatedRateLimitConfigReconcilerMockRecorder +} + +// MockFederatedRateLimitConfigReconcilerMockRecorder is the mock recorder for MockFederatedRateLimitConfigReconciler. +type MockFederatedRateLimitConfigReconcilerMockRecorder struct { + mock *MockFederatedRateLimitConfigReconciler +} + +// NewMockFederatedRateLimitConfigReconciler creates a new mock instance. +func NewMockFederatedRateLimitConfigReconciler(ctrl *gomock.Controller) *MockFederatedRateLimitConfigReconciler { + mock := &MockFederatedRateLimitConfigReconciler{ctrl: ctrl} + mock.recorder = &MockFederatedRateLimitConfigReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedRateLimitConfigReconciler) EXPECT() *MockFederatedRateLimitConfigReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigReconciler) ReconcileFederatedRateLimitConfig(obj *v1alpha1.FederatedRateLimitConfig) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedRateLimitConfig", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedRateLimitConfig indicates an expected call of ReconcileFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigReconcilerMockRecorder) ReconcileFederatedRateLimitConfig(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigReconciler)(nil).ReconcileFederatedRateLimitConfig), obj) +} + +// MockFederatedRateLimitConfigDeletionReconciler is a mock of FederatedRateLimitConfigDeletionReconciler interface. +type MockFederatedRateLimitConfigDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockFederatedRateLimitConfigDeletionReconcilerMockRecorder +} + +// MockFederatedRateLimitConfigDeletionReconcilerMockRecorder is the mock recorder for MockFederatedRateLimitConfigDeletionReconciler. +type MockFederatedRateLimitConfigDeletionReconcilerMockRecorder struct { + mock *MockFederatedRateLimitConfigDeletionReconciler +} + +// NewMockFederatedRateLimitConfigDeletionReconciler creates a new mock instance. +func NewMockFederatedRateLimitConfigDeletionReconciler(ctrl *gomock.Controller) *MockFederatedRateLimitConfigDeletionReconciler { + mock := &MockFederatedRateLimitConfigDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockFederatedRateLimitConfigDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedRateLimitConfigDeletionReconciler) EXPECT() *MockFederatedRateLimitConfigDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFederatedRateLimitConfigDeletion mocks base method. +func (m *MockFederatedRateLimitConfigDeletionReconciler) ReconcileFederatedRateLimitConfigDeletion(req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedRateLimitConfigDeletion", req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileFederatedRateLimitConfigDeletion indicates an expected call of ReconcileFederatedRateLimitConfigDeletion. +func (mr *MockFederatedRateLimitConfigDeletionReconcilerMockRecorder) ReconcileFederatedRateLimitConfigDeletion(req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedRateLimitConfigDeletion", reflect.TypeOf((*MockFederatedRateLimitConfigDeletionReconciler)(nil).ReconcileFederatedRateLimitConfigDeletion), req) +} + +// MockFederatedRateLimitConfigFinalizer is a mock of FederatedRateLimitConfigFinalizer interface. +type MockFederatedRateLimitConfigFinalizer struct { + ctrl *gomock.Controller + recorder *MockFederatedRateLimitConfigFinalizerMockRecorder +} + +// MockFederatedRateLimitConfigFinalizerMockRecorder is the mock recorder for MockFederatedRateLimitConfigFinalizer. +type MockFederatedRateLimitConfigFinalizerMockRecorder struct { + mock *MockFederatedRateLimitConfigFinalizer +} + +// NewMockFederatedRateLimitConfigFinalizer creates a new mock instance. +func NewMockFederatedRateLimitConfigFinalizer(ctrl *gomock.Controller) *MockFederatedRateLimitConfigFinalizer { + mock := &MockFederatedRateLimitConfigFinalizer{ctrl: ctrl} + mock.recorder = &MockFederatedRateLimitConfigFinalizerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedRateLimitConfigFinalizer) EXPECT() *MockFederatedRateLimitConfigFinalizerMockRecorder { + return m.recorder +} + +// FederatedRateLimitConfigFinalizerName mocks base method. +func (m *MockFederatedRateLimitConfigFinalizer) FederatedRateLimitConfigFinalizerName() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FederatedRateLimitConfigFinalizerName") + ret0, _ := ret[0].(string) + return ret0 +} + +// FederatedRateLimitConfigFinalizerName indicates an expected call of FederatedRateLimitConfigFinalizerName. +func (mr *MockFederatedRateLimitConfigFinalizerMockRecorder) FederatedRateLimitConfigFinalizerName() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FederatedRateLimitConfigFinalizerName", reflect.TypeOf((*MockFederatedRateLimitConfigFinalizer)(nil).FederatedRateLimitConfigFinalizerName)) +} + +// FinalizeFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigFinalizer) FinalizeFederatedRateLimitConfig(obj *v1alpha1.FederatedRateLimitConfig) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeFederatedRateLimitConfig", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeFederatedRateLimitConfig indicates an expected call of FinalizeFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigFinalizerMockRecorder) FinalizeFederatedRateLimitConfig(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigFinalizer)(nil).FinalizeFederatedRateLimitConfig), obj) +} + +// ReconcileFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigFinalizer) ReconcileFederatedRateLimitConfig(obj *v1alpha1.FederatedRateLimitConfig) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFederatedRateLimitConfig", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFederatedRateLimitConfig indicates an expected call of ReconcileFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigFinalizerMockRecorder) ReconcileFederatedRateLimitConfig(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigFinalizer)(nil).ReconcileFederatedRateLimitConfig), obj) +} + +// MockFederatedRateLimitConfigReconcileLoop is a mock of FederatedRateLimitConfigReconcileLoop interface. +type MockFederatedRateLimitConfigReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockFederatedRateLimitConfigReconcileLoopMockRecorder +} + +// MockFederatedRateLimitConfigReconcileLoopMockRecorder is the mock recorder for MockFederatedRateLimitConfigReconcileLoop. +type MockFederatedRateLimitConfigReconcileLoopMockRecorder struct { + mock *MockFederatedRateLimitConfigReconcileLoop +} + +// NewMockFederatedRateLimitConfigReconcileLoop creates a new mock instance. +func NewMockFederatedRateLimitConfigReconcileLoop(ctrl *gomock.Controller) *MockFederatedRateLimitConfigReconcileLoop { + mock := &MockFederatedRateLimitConfigReconcileLoop{ctrl: ctrl} + mock.recorder = &MockFederatedRateLimitConfigReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedRateLimitConfigReconcileLoop) EXPECT() *MockFederatedRateLimitConfigReconcileLoopMockRecorder { + return m.recorder +} + +// RunFederatedRateLimitConfigReconciler mocks base method. +func (m *MockFederatedRateLimitConfigReconcileLoop) RunFederatedRateLimitConfigReconciler(ctx context.Context, rec controller.FederatedRateLimitConfigReconciler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RunFederatedRateLimitConfigReconciler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// RunFederatedRateLimitConfigReconciler indicates an expected call of RunFederatedRateLimitConfigReconciler. +func (mr *MockFederatedRateLimitConfigReconcileLoopMockRecorder) RunFederatedRateLimitConfigReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunFederatedRateLimitConfigReconciler", reflect.TypeOf((*MockFederatedRateLimitConfigReconcileLoop)(nil).RunFederatedRateLimitConfigReconciler), varargs...) +} diff --git a/pkg/api/fed.ratelimit.solo.io/v1alpha1/controller/multicluster_reconcilers.go b/pkg/api/fed.ratelimit.solo.io/v1alpha1/controller/multicluster_reconcilers.go new file mode 100644 index 000000000..e83878ec9 --- /dev/null +++ b/pkg/api/fed.ratelimit.solo.io/v1alpha1/controller/multicluster_reconcilers.go @@ -0,0 +1,90 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./multicluster_reconcilers.go -destination mocks/multicluster_reconcilers.go + +// Definitions for the multicluster Kubernetes Controllers +package controller + +import ( + "context" + + fed_ratelimit_solo_io_v1alpha1 "github.com/solo-io/solo-apis/pkg/api/fed.ratelimit.solo.io/v1alpha1" + + "github.com/pkg/errors" + "github.com/solo-io/skv2/pkg/ezkube" + "github.com/solo-io/skv2/pkg/multicluster" + mc_reconcile "github.com/solo-io/skv2/pkg/multicluster/reconcile" + "github.com/solo-io/skv2/pkg/reconcile" + "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// Reconcile Upsert events for the FederatedRateLimitConfig Resource across clusters. +// implemented by the user +type MulticlusterFederatedRateLimitConfigReconciler interface { + ReconcileFederatedRateLimitConfig(clusterName string, obj *fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) (reconcile.Result, error) +} + +// Reconcile deletion events for the FederatedRateLimitConfig Resource across clusters. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type MulticlusterFederatedRateLimitConfigDeletionReconciler interface { + ReconcileFederatedRateLimitConfigDeletion(clusterName string, req reconcile.Request) error +} + +type MulticlusterFederatedRateLimitConfigReconcilerFuncs struct { + OnReconcileFederatedRateLimitConfig func(clusterName string, obj *fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) (reconcile.Result, error) + OnReconcileFederatedRateLimitConfigDeletion func(clusterName string, req reconcile.Request) error +} + +func (f *MulticlusterFederatedRateLimitConfigReconcilerFuncs) ReconcileFederatedRateLimitConfig(clusterName string, obj *fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) (reconcile.Result, error) { + if f.OnReconcileFederatedRateLimitConfig == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileFederatedRateLimitConfig(clusterName, obj) +} + +func (f *MulticlusterFederatedRateLimitConfigReconcilerFuncs) ReconcileFederatedRateLimitConfigDeletion(clusterName string, req reconcile.Request) error { + if f.OnReconcileFederatedRateLimitConfigDeletion == nil { + return nil + } + return f.OnReconcileFederatedRateLimitConfigDeletion(clusterName, req) +} + +type MulticlusterFederatedRateLimitConfigReconcileLoop interface { + // AddMulticlusterFederatedRateLimitConfigReconciler adds a MulticlusterFederatedRateLimitConfigReconciler to the MulticlusterFederatedRateLimitConfigReconcileLoop. + AddMulticlusterFederatedRateLimitConfigReconciler(ctx context.Context, rec MulticlusterFederatedRateLimitConfigReconciler, predicates ...predicate.Predicate) +} + +type multiclusterFederatedRateLimitConfigReconcileLoop struct { + loop multicluster.Loop +} + +func (m *multiclusterFederatedRateLimitConfigReconcileLoop) AddMulticlusterFederatedRateLimitConfigReconciler(ctx context.Context, rec MulticlusterFederatedRateLimitConfigReconciler, predicates ...predicate.Predicate) { + genericReconciler := genericFederatedRateLimitConfigMulticlusterReconciler{reconciler: rec} + + m.loop.AddReconciler(ctx, genericReconciler, predicates...) +} + +func NewMulticlusterFederatedRateLimitConfigReconcileLoop(name string, cw multicluster.ClusterWatcher, options reconcile.Options) MulticlusterFederatedRateLimitConfigReconcileLoop { + return &multiclusterFederatedRateLimitConfigReconcileLoop{loop: mc_reconcile.NewLoop(name, cw, &fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig{}, options)} +} + +type genericFederatedRateLimitConfigMulticlusterReconciler struct { + reconciler MulticlusterFederatedRateLimitConfigReconciler +} + +func (g genericFederatedRateLimitConfigMulticlusterReconciler) ReconcileDeletion(cluster string, req reconcile.Request) error { + if deletionReconciler, ok := g.reconciler.(MulticlusterFederatedRateLimitConfigDeletionReconciler); ok { + return deletionReconciler.ReconcileFederatedRateLimitConfigDeletion(cluster, req) + } + return nil +} + +func (g genericFederatedRateLimitConfigMulticlusterReconciler) Reconcile(cluster string, object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: FederatedRateLimitConfig handler received event for %T", object) + } + return g.reconciler.ReconcileFederatedRateLimitConfig(cluster, obj) +} diff --git a/pkg/api/fed.ratelimit.solo.io/v1alpha1/controller/reconcilers.go b/pkg/api/fed.ratelimit.solo.io/v1alpha1/controller/reconcilers.go new file mode 100644 index 000000000..e6c50de37 --- /dev/null +++ b/pkg/api/fed.ratelimit.solo.io/v1alpha1/controller/reconcilers.go @@ -0,0 +1,135 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./reconcilers.go -destination mocks/reconcilers.go + +// Definitions for the Kubernetes Controllers +package controller + +import ( + "context" + + fed_ratelimit_solo_io_v1alpha1 "github.com/solo-io/solo-apis/pkg/api/fed.ratelimit.solo.io/v1alpha1" + + "github.com/pkg/errors" + "github.com/solo-io/skv2/pkg/ezkube" + "github.com/solo-io/skv2/pkg/reconcile" + "sigs.k8s.io/controller-runtime/pkg/manager" + "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// Reconcile Upsert events for the FederatedRateLimitConfig Resource. +// implemented by the user +type FederatedRateLimitConfigReconciler interface { + ReconcileFederatedRateLimitConfig(obj *fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) (reconcile.Result, error) +} + +// Reconcile deletion events for the FederatedRateLimitConfig Resource. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type FederatedRateLimitConfigDeletionReconciler interface { + ReconcileFederatedRateLimitConfigDeletion(req reconcile.Request) error +} + +type FederatedRateLimitConfigReconcilerFuncs struct { + OnReconcileFederatedRateLimitConfig func(obj *fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) (reconcile.Result, error) + OnReconcileFederatedRateLimitConfigDeletion func(req reconcile.Request) error +} + +func (f *FederatedRateLimitConfigReconcilerFuncs) ReconcileFederatedRateLimitConfig(obj *fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) (reconcile.Result, error) { + if f.OnReconcileFederatedRateLimitConfig == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileFederatedRateLimitConfig(obj) +} + +func (f *FederatedRateLimitConfigReconcilerFuncs) ReconcileFederatedRateLimitConfigDeletion(req reconcile.Request) error { + if f.OnReconcileFederatedRateLimitConfigDeletion == nil { + return nil + } + return f.OnReconcileFederatedRateLimitConfigDeletion(req) +} + +// Reconcile and finalize the FederatedRateLimitConfig Resource +// implemented by the user +type FederatedRateLimitConfigFinalizer interface { + FederatedRateLimitConfigReconciler + + // name of the finalizer used by this handler. + // finalizer names should be unique for a single task + FederatedRateLimitConfigFinalizerName() string + + // finalize the object before it is deleted. + // Watchers created with a finalizing handler will a + FinalizeFederatedRateLimitConfig(obj *fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) error +} + +type FederatedRateLimitConfigReconcileLoop interface { + RunFederatedRateLimitConfigReconciler(ctx context.Context, rec FederatedRateLimitConfigReconciler, predicates ...predicate.Predicate) error +} + +type federatedRateLimitConfigReconcileLoop struct { + loop reconcile.Loop +} + +func NewFederatedRateLimitConfigReconcileLoop(name string, mgr manager.Manager, options reconcile.Options) FederatedRateLimitConfigReconcileLoop { + return &federatedRateLimitConfigReconcileLoop{ + // empty cluster indicates this reconciler is built for the local cluster + loop: reconcile.NewLoop(name, "", mgr, &fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig{}, options), + } +} + +func (c *federatedRateLimitConfigReconcileLoop) RunFederatedRateLimitConfigReconciler(ctx context.Context, reconciler FederatedRateLimitConfigReconciler, predicates ...predicate.Predicate) error { + genericReconciler := genericFederatedRateLimitConfigReconciler{ + reconciler: reconciler, + } + + var reconcilerWrapper reconcile.Reconciler + if finalizingReconciler, ok := reconciler.(FederatedRateLimitConfigFinalizer); ok { + reconcilerWrapper = genericFederatedRateLimitConfigFinalizer{ + genericFederatedRateLimitConfigReconciler: genericReconciler, + finalizingReconciler: finalizingReconciler, + } + } else { + reconcilerWrapper = genericReconciler + } + return c.loop.RunReconciler(ctx, reconcilerWrapper, predicates...) +} + +// genericFederatedRateLimitConfigHandler implements a generic reconcile.Reconciler +type genericFederatedRateLimitConfigReconciler struct { + reconciler FederatedRateLimitConfigReconciler +} + +func (r genericFederatedRateLimitConfigReconciler) Reconcile(object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: FederatedRateLimitConfig handler received event for %T", object) + } + return r.reconciler.ReconcileFederatedRateLimitConfig(obj) +} + +func (r genericFederatedRateLimitConfigReconciler) ReconcileDeletion(request reconcile.Request) error { + if deletionReconciler, ok := r.reconciler.(FederatedRateLimitConfigDeletionReconciler); ok { + return deletionReconciler.ReconcileFederatedRateLimitConfigDeletion(request) + } + return nil +} + +// genericFederatedRateLimitConfigFinalizer implements a generic reconcile.FinalizingReconciler +type genericFederatedRateLimitConfigFinalizer struct { + genericFederatedRateLimitConfigReconciler + finalizingReconciler FederatedRateLimitConfigFinalizer +} + +func (r genericFederatedRateLimitConfigFinalizer) FinalizerName() string { + return r.finalizingReconciler.FederatedRateLimitConfigFinalizerName() +} + +func (r genericFederatedRateLimitConfigFinalizer) Finalize(object ezkube.Object) error { + obj, ok := object.(*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) + if !ok { + return errors.Errorf("internal error: FederatedRateLimitConfig handler received event for %T", object) + } + return r.finalizingReconciler.FinalizeFederatedRateLimitConfig(obj) +} diff --git a/pkg/api/fed.ratelimit.solo.io/v1alpha1/doc.go b/pkg/api/fed.ratelimit.solo.io/v1alpha1/doc.go new file mode 100644 index 000000000..4b1c4bf16 --- /dev/null +++ b/pkg/api/fed.ratelimit.solo.io/v1alpha1/doc.go @@ -0,0 +1,6 @@ +// Code generated by skv2. DO NOT EDIT. + +// Package v1alpha1 contains API Schema definitions for the fed.ratelimit.solo.io v1alpha1 API group +// +k8s:deepcopy-gen=package,register +// +groupName=fed.ratelimit.solo.io +package v1alpha1 diff --git a/pkg/api/fed.ratelimit.solo.io/v1alpha1/mocks/clients.go b/pkg/api/fed.ratelimit.solo.io/v1alpha1/mocks/clients.go new file mode 100644 index 000000000..774347f91 --- /dev/null +++ b/pkg/api/fed.ratelimit.solo.io/v1alpha1/mocks/clients.go @@ -0,0 +1,593 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./clients.go + +// Package mock_v1alpha1 is a generated GoMock package. +package mock_v1alpha1 + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + v1alpha1 "github.com/solo-io/solo-apis/pkg/api/fed.ratelimit.solo.io/v1alpha1" + client "sigs.k8s.io/controller-runtime/pkg/client" +) + +// MockMulticlusterClientset is a mock of MulticlusterClientset interface. +type MockMulticlusterClientset struct { + ctrl *gomock.Controller + recorder *MockMulticlusterClientsetMockRecorder +} + +// MockMulticlusterClientsetMockRecorder is the mock recorder for MockMulticlusterClientset. +type MockMulticlusterClientsetMockRecorder struct { + mock *MockMulticlusterClientset +} + +// NewMockMulticlusterClientset creates a new mock instance. +func NewMockMulticlusterClientset(ctrl *gomock.Controller) *MockMulticlusterClientset { + mock := &MockMulticlusterClientset{ctrl: ctrl} + mock.recorder = &MockMulticlusterClientsetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterClientset) EXPECT() *MockMulticlusterClientsetMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterClientset) Cluster(cluster string) (v1alpha1.Clientset, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1alpha1.Clientset) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterClientsetMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterClientset)(nil).Cluster), cluster) +} + +// MockClientset is a mock of Clientset interface. +type MockClientset struct { + ctrl *gomock.Controller + recorder *MockClientsetMockRecorder +} + +// MockClientsetMockRecorder is the mock recorder for MockClientset. +type MockClientsetMockRecorder struct { + mock *MockClientset +} + +// NewMockClientset creates a new mock instance. +func NewMockClientset(ctrl *gomock.Controller) *MockClientset { + mock := &MockClientset{ctrl: ctrl} + mock.recorder = &MockClientsetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockClientset) EXPECT() *MockClientsetMockRecorder { + return m.recorder +} + +// FederatedRateLimitConfigs mocks base method. +func (m *MockClientset) FederatedRateLimitConfigs() v1alpha1.FederatedRateLimitConfigClient { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FederatedRateLimitConfigs") + ret0, _ := ret[0].(v1alpha1.FederatedRateLimitConfigClient) + return ret0 +} + +// FederatedRateLimitConfigs indicates an expected call of FederatedRateLimitConfigs. +func (mr *MockClientsetMockRecorder) FederatedRateLimitConfigs() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FederatedRateLimitConfigs", reflect.TypeOf((*MockClientset)(nil).FederatedRateLimitConfigs)) +} + +// MockFederatedRateLimitConfigReader is a mock of FederatedRateLimitConfigReader interface. +type MockFederatedRateLimitConfigReader struct { + ctrl *gomock.Controller + recorder *MockFederatedRateLimitConfigReaderMockRecorder +} + +// MockFederatedRateLimitConfigReaderMockRecorder is the mock recorder for MockFederatedRateLimitConfigReader. +type MockFederatedRateLimitConfigReaderMockRecorder struct { + mock *MockFederatedRateLimitConfigReader +} + +// NewMockFederatedRateLimitConfigReader creates a new mock instance. +func NewMockFederatedRateLimitConfigReader(ctrl *gomock.Controller) *MockFederatedRateLimitConfigReader { + mock := &MockFederatedRateLimitConfigReader{ctrl: ctrl} + mock.recorder = &MockFederatedRateLimitConfigReaderMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedRateLimitConfigReader) EXPECT() *MockFederatedRateLimitConfigReaderMockRecorder { + return m.recorder +} + +// GetFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigReader) GetFederatedRateLimitConfig(ctx context.Context, key client.ObjectKey) (*v1alpha1.FederatedRateLimitConfig, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFederatedRateLimitConfig", ctx, key) + ret0, _ := ret[0].(*v1alpha1.FederatedRateLimitConfig) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFederatedRateLimitConfig indicates an expected call of GetFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigReaderMockRecorder) GetFederatedRateLimitConfig(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigReader)(nil).GetFederatedRateLimitConfig), ctx, key) +} + +// ListFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigReader) ListFederatedRateLimitConfig(ctx context.Context, opts ...client.ListOption) (*v1alpha1.FederatedRateLimitConfigList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFederatedRateLimitConfig", varargs...) + ret0, _ := ret[0].(*v1alpha1.FederatedRateLimitConfigList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFederatedRateLimitConfig indicates an expected call of ListFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigReaderMockRecorder) ListFederatedRateLimitConfig(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigReader)(nil).ListFederatedRateLimitConfig), varargs...) +} + +// MockFederatedRateLimitConfigWriter is a mock of FederatedRateLimitConfigWriter interface. +type MockFederatedRateLimitConfigWriter struct { + ctrl *gomock.Controller + recorder *MockFederatedRateLimitConfigWriterMockRecorder +} + +// MockFederatedRateLimitConfigWriterMockRecorder is the mock recorder for MockFederatedRateLimitConfigWriter. +type MockFederatedRateLimitConfigWriterMockRecorder struct { + mock *MockFederatedRateLimitConfigWriter +} + +// NewMockFederatedRateLimitConfigWriter creates a new mock instance. +func NewMockFederatedRateLimitConfigWriter(ctrl *gomock.Controller) *MockFederatedRateLimitConfigWriter { + mock := &MockFederatedRateLimitConfigWriter{ctrl: ctrl} + mock.recorder = &MockFederatedRateLimitConfigWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedRateLimitConfigWriter) EXPECT() *MockFederatedRateLimitConfigWriterMockRecorder { + return m.recorder +} + +// CreateFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigWriter) CreateFederatedRateLimitConfig(ctx context.Context, obj *v1alpha1.FederatedRateLimitConfig, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateFederatedRateLimitConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedRateLimitConfig indicates an expected call of CreateFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigWriterMockRecorder) CreateFederatedRateLimitConfig(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigWriter)(nil).CreateFederatedRateLimitConfig), varargs...) +} + +// DeleteAllOfFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigWriter) DeleteAllOfFederatedRateLimitConfig(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfFederatedRateLimitConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfFederatedRateLimitConfig indicates an expected call of DeleteAllOfFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigWriterMockRecorder) DeleteAllOfFederatedRateLimitConfig(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigWriter)(nil).DeleteAllOfFederatedRateLimitConfig), varargs...) +} + +// DeleteFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigWriter) DeleteFederatedRateLimitConfig(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteFederatedRateLimitConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedRateLimitConfig indicates an expected call of DeleteFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigWriterMockRecorder) DeleteFederatedRateLimitConfig(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigWriter)(nil).DeleteFederatedRateLimitConfig), varargs...) +} + +// PatchFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigWriter) PatchFederatedRateLimitConfig(ctx context.Context, obj *v1alpha1.FederatedRateLimitConfig, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedRateLimitConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedRateLimitConfig indicates an expected call of PatchFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigWriterMockRecorder) PatchFederatedRateLimitConfig(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigWriter)(nil).PatchFederatedRateLimitConfig), varargs...) +} + +// UpdateFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigWriter) UpdateFederatedRateLimitConfig(ctx context.Context, obj *v1alpha1.FederatedRateLimitConfig, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedRateLimitConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedRateLimitConfig indicates an expected call of UpdateFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigWriterMockRecorder) UpdateFederatedRateLimitConfig(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigWriter)(nil).UpdateFederatedRateLimitConfig), varargs...) +} + +// UpsertFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigWriter) UpsertFederatedRateLimitConfig(ctx context.Context, obj *v1alpha1.FederatedRateLimitConfig, transitionFuncs ...v1alpha1.FederatedRateLimitConfigTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertFederatedRateLimitConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertFederatedRateLimitConfig indicates an expected call of UpsertFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigWriterMockRecorder) UpsertFederatedRateLimitConfig(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigWriter)(nil).UpsertFederatedRateLimitConfig), varargs...) +} + +// MockFederatedRateLimitConfigStatusWriter is a mock of FederatedRateLimitConfigStatusWriter interface. +type MockFederatedRateLimitConfigStatusWriter struct { + ctrl *gomock.Controller + recorder *MockFederatedRateLimitConfigStatusWriterMockRecorder +} + +// MockFederatedRateLimitConfigStatusWriterMockRecorder is the mock recorder for MockFederatedRateLimitConfigStatusWriter. +type MockFederatedRateLimitConfigStatusWriterMockRecorder struct { + mock *MockFederatedRateLimitConfigStatusWriter +} + +// NewMockFederatedRateLimitConfigStatusWriter creates a new mock instance. +func NewMockFederatedRateLimitConfigStatusWriter(ctrl *gomock.Controller) *MockFederatedRateLimitConfigStatusWriter { + mock := &MockFederatedRateLimitConfigStatusWriter{ctrl: ctrl} + mock.recorder = &MockFederatedRateLimitConfigStatusWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedRateLimitConfigStatusWriter) EXPECT() *MockFederatedRateLimitConfigStatusWriterMockRecorder { + return m.recorder +} + +// PatchFederatedRateLimitConfigStatus mocks base method. +func (m *MockFederatedRateLimitConfigStatusWriter) PatchFederatedRateLimitConfigStatus(ctx context.Context, obj *v1alpha1.FederatedRateLimitConfig, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedRateLimitConfigStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedRateLimitConfigStatus indicates an expected call of PatchFederatedRateLimitConfigStatus. +func (mr *MockFederatedRateLimitConfigStatusWriterMockRecorder) PatchFederatedRateLimitConfigStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedRateLimitConfigStatus", reflect.TypeOf((*MockFederatedRateLimitConfigStatusWriter)(nil).PatchFederatedRateLimitConfigStatus), varargs...) +} + +// UpdateFederatedRateLimitConfigStatus mocks base method. +func (m *MockFederatedRateLimitConfigStatusWriter) UpdateFederatedRateLimitConfigStatus(ctx context.Context, obj *v1alpha1.FederatedRateLimitConfig, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedRateLimitConfigStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedRateLimitConfigStatus indicates an expected call of UpdateFederatedRateLimitConfigStatus. +func (mr *MockFederatedRateLimitConfigStatusWriterMockRecorder) UpdateFederatedRateLimitConfigStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedRateLimitConfigStatus", reflect.TypeOf((*MockFederatedRateLimitConfigStatusWriter)(nil).UpdateFederatedRateLimitConfigStatus), varargs...) +} + +// MockFederatedRateLimitConfigClient is a mock of FederatedRateLimitConfigClient interface. +type MockFederatedRateLimitConfigClient struct { + ctrl *gomock.Controller + recorder *MockFederatedRateLimitConfigClientMockRecorder +} + +// MockFederatedRateLimitConfigClientMockRecorder is the mock recorder for MockFederatedRateLimitConfigClient. +type MockFederatedRateLimitConfigClientMockRecorder struct { + mock *MockFederatedRateLimitConfigClient +} + +// NewMockFederatedRateLimitConfigClient creates a new mock instance. +func NewMockFederatedRateLimitConfigClient(ctrl *gomock.Controller) *MockFederatedRateLimitConfigClient { + mock := &MockFederatedRateLimitConfigClient{ctrl: ctrl} + mock.recorder = &MockFederatedRateLimitConfigClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedRateLimitConfigClient) EXPECT() *MockFederatedRateLimitConfigClientMockRecorder { + return m.recorder +} + +// CreateFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigClient) CreateFederatedRateLimitConfig(ctx context.Context, obj *v1alpha1.FederatedRateLimitConfig, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateFederatedRateLimitConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFederatedRateLimitConfig indicates an expected call of CreateFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigClientMockRecorder) CreateFederatedRateLimitConfig(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigClient)(nil).CreateFederatedRateLimitConfig), varargs...) +} + +// DeleteAllOfFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigClient) DeleteAllOfFederatedRateLimitConfig(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfFederatedRateLimitConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfFederatedRateLimitConfig indicates an expected call of DeleteAllOfFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigClientMockRecorder) DeleteAllOfFederatedRateLimitConfig(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigClient)(nil).DeleteAllOfFederatedRateLimitConfig), varargs...) +} + +// DeleteFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigClient) DeleteFederatedRateLimitConfig(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteFederatedRateLimitConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFederatedRateLimitConfig indicates an expected call of DeleteFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigClientMockRecorder) DeleteFederatedRateLimitConfig(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigClient)(nil).DeleteFederatedRateLimitConfig), varargs...) +} + +// GetFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigClient) GetFederatedRateLimitConfig(ctx context.Context, key client.ObjectKey) (*v1alpha1.FederatedRateLimitConfig, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFederatedRateLimitConfig", ctx, key) + ret0, _ := ret[0].(*v1alpha1.FederatedRateLimitConfig) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFederatedRateLimitConfig indicates an expected call of GetFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigClientMockRecorder) GetFederatedRateLimitConfig(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigClient)(nil).GetFederatedRateLimitConfig), ctx, key) +} + +// ListFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigClient) ListFederatedRateLimitConfig(ctx context.Context, opts ...client.ListOption) (*v1alpha1.FederatedRateLimitConfigList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFederatedRateLimitConfig", varargs...) + ret0, _ := ret[0].(*v1alpha1.FederatedRateLimitConfigList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFederatedRateLimitConfig indicates an expected call of ListFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigClientMockRecorder) ListFederatedRateLimitConfig(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigClient)(nil).ListFederatedRateLimitConfig), varargs...) +} + +// PatchFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigClient) PatchFederatedRateLimitConfig(ctx context.Context, obj *v1alpha1.FederatedRateLimitConfig, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedRateLimitConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedRateLimitConfig indicates an expected call of PatchFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigClientMockRecorder) PatchFederatedRateLimitConfig(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigClient)(nil).PatchFederatedRateLimitConfig), varargs...) +} + +// PatchFederatedRateLimitConfigStatus mocks base method. +func (m *MockFederatedRateLimitConfigClient) PatchFederatedRateLimitConfigStatus(ctx context.Context, obj *v1alpha1.FederatedRateLimitConfig, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFederatedRateLimitConfigStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFederatedRateLimitConfigStatus indicates an expected call of PatchFederatedRateLimitConfigStatus. +func (mr *MockFederatedRateLimitConfigClientMockRecorder) PatchFederatedRateLimitConfigStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFederatedRateLimitConfigStatus", reflect.TypeOf((*MockFederatedRateLimitConfigClient)(nil).PatchFederatedRateLimitConfigStatus), varargs...) +} + +// UpdateFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigClient) UpdateFederatedRateLimitConfig(ctx context.Context, obj *v1alpha1.FederatedRateLimitConfig, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedRateLimitConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedRateLimitConfig indicates an expected call of UpdateFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigClientMockRecorder) UpdateFederatedRateLimitConfig(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigClient)(nil).UpdateFederatedRateLimitConfig), varargs...) +} + +// UpdateFederatedRateLimitConfigStatus mocks base method. +func (m *MockFederatedRateLimitConfigClient) UpdateFederatedRateLimitConfigStatus(ctx context.Context, obj *v1alpha1.FederatedRateLimitConfig, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFederatedRateLimitConfigStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFederatedRateLimitConfigStatus indicates an expected call of UpdateFederatedRateLimitConfigStatus. +func (mr *MockFederatedRateLimitConfigClientMockRecorder) UpdateFederatedRateLimitConfigStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFederatedRateLimitConfigStatus", reflect.TypeOf((*MockFederatedRateLimitConfigClient)(nil).UpdateFederatedRateLimitConfigStatus), varargs...) +} + +// UpsertFederatedRateLimitConfig mocks base method. +func (m *MockFederatedRateLimitConfigClient) UpsertFederatedRateLimitConfig(ctx context.Context, obj *v1alpha1.FederatedRateLimitConfig, transitionFuncs ...v1alpha1.FederatedRateLimitConfigTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertFederatedRateLimitConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertFederatedRateLimitConfig indicates an expected call of UpsertFederatedRateLimitConfig. +func (mr *MockFederatedRateLimitConfigClientMockRecorder) UpsertFederatedRateLimitConfig(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertFederatedRateLimitConfig", reflect.TypeOf((*MockFederatedRateLimitConfigClient)(nil).UpsertFederatedRateLimitConfig), varargs...) +} + +// MockMulticlusterFederatedRateLimitConfigClient is a mock of MulticlusterFederatedRateLimitConfigClient interface. +type MockMulticlusterFederatedRateLimitConfigClient struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFederatedRateLimitConfigClientMockRecorder +} + +// MockMulticlusterFederatedRateLimitConfigClientMockRecorder is the mock recorder for MockMulticlusterFederatedRateLimitConfigClient. +type MockMulticlusterFederatedRateLimitConfigClientMockRecorder struct { + mock *MockMulticlusterFederatedRateLimitConfigClient +} + +// NewMockMulticlusterFederatedRateLimitConfigClient creates a new mock instance. +func NewMockMulticlusterFederatedRateLimitConfigClient(ctrl *gomock.Controller) *MockMulticlusterFederatedRateLimitConfigClient { + mock := &MockMulticlusterFederatedRateLimitConfigClient{ctrl: ctrl} + mock.recorder = &MockMulticlusterFederatedRateLimitConfigClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFederatedRateLimitConfigClient) EXPECT() *MockMulticlusterFederatedRateLimitConfigClientMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterFederatedRateLimitConfigClient) Cluster(cluster string) (v1alpha1.FederatedRateLimitConfigClient, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1alpha1.FederatedRateLimitConfigClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterFederatedRateLimitConfigClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterFederatedRateLimitConfigClient)(nil).Cluster), cluster) +} diff --git a/pkg/api/fed.ratelimit.solo.io/v1alpha1/providers/client_providers.go b/pkg/api/fed.ratelimit.solo.io/v1alpha1/providers/client_providers.go new file mode 100644 index 000000000..41ffdbcba --- /dev/null +++ b/pkg/api/fed.ratelimit.solo.io/v1alpha1/providers/client_providers.go @@ -0,0 +1,46 @@ +// Code generated by skv2. DO NOT EDIT. + +package v1alpha1 + +import ( + fed_ratelimit_solo_io_v1alpha1 "github.com/solo-io/solo-apis/pkg/api/fed.ratelimit.solo.io/v1alpha1" + + "k8s.io/client-go/rest" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +/* + The intention of these providers are to be used for Mocking. + They expose the Clients as interfaces, as well as factories to provide mocked versions + of the clients when they require building within a component. + + See package `github.com/solo-io/skv2/pkg/multicluster/register` for example +*/ + +// Provider for FederatedRateLimitConfigClient from Clientset +func FederatedRateLimitConfigClientFromClientsetProvider(clients fed_ratelimit_solo_io_v1alpha1.Clientset) fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfigClient { + return clients.FederatedRateLimitConfigs() +} + +// Provider for FederatedRateLimitConfig Client from Client +func FederatedRateLimitConfigClientProvider(client client.Client) fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfigClient { + return fed_ratelimit_solo_io_v1alpha1.NewFederatedRateLimitConfigClient(client) +} + +type FederatedRateLimitConfigClientFactory func(client client.Client) fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfigClient + +func FederatedRateLimitConfigClientFactoryProvider() FederatedRateLimitConfigClientFactory { + return FederatedRateLimitConfigClientProvider +} + +type FederatedRateLimitConfigClientFromConfigFactory func(cfg *rest.Config) (fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfigClient, error) + +func FederatedRateLimitConfigClientFromConfigFactoryProvider() FederatedRateLimitConfigClientFromConfigFactory { + return func(cfg *rest.Config) (fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfigClient, error) { + clients, err := fed_ratelimit_solo_io_v1alpha1.NewClientsetFromConfig(cfg) + if err != nil { + return nil, err + } + return clients.FederatedRateLimitConfigs(), nil + } +} diff --git a/pkg/api/fed.ratelimit.solo.io/v1alpha1/register.go b/pkg/api/fed.ratelimit.solo.io/v1alpha1/register.go new file mode 100644 index 000000000..18946d9ad --- /dev/null +++ b/pkg/api/fed.ratelimit.solo.io/v1alpha1/register.go @@ -0,0 +1,33 @@ +// Code generated by skv2. DO NOT EDIT. + +// NOTE: Boilerplate only. Ignore this file. +// Used to register the Go types with the Kubernetes +// internal scheme +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// AddToSchemes may be used to add all resources defined in the project to a Scheme + +// AddToScheme adds all Resources to the Scheme + +var ( + // SchemeGroupVersion is group version used to register these objects + SchemeGroupVersion = schema.GroupVersion{Group: "fed.ratelimit.solo.io", Version: "v1alpha1"} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion} +) + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +func AddToScheme(s *runtime.Scheme) error { + return SchemeBuilder.AddToScheme(s) +} diff --git a/pkg/api/fed.ratelimit.solo.io/v1alpha1/sets/mocks/sets.go b/pkg/api/fed.ratelimit.solo.io/v1alpha1/sets/mocks/sets.go new file mode 100644 index 000000000..21189586f --- /dev/null +++ b/pkg/api/fed.ratelimit.solo.io/v1alpha1/sets/mocks/sets.go @@ -0,0 +1,272 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./sets.go + +// Package mock_v1alpha1sets is a generated GoMock package. +package mock_v1alpha1sets + +import ( + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + sets "github.com/solo-io/skv2/contrib/pkg/sets" + ezkube "github.com/solo-io/skv2/pkg/ezkube" + v1alpha1 "github.com/solo-io/solo-apis/pkg/api/fed.ratelimit.solo.io/v1alpha1" + v1alpha1sets "github.com/solo-io/solo-apis/pkg/api/fed.ratelimit.solo.io/v1alpha1/sets" + sets0 "k8s.io/apimachinery/pkg/util/sets" +) + +// MockFederatedRateLimitConfigSet is a mock of FederatedRateLimitConfigSet interface. +type MockFederatedRateLimitConfigSet struct { + ctrl *gomock.Controller + recorder *MockFederatedRateLimitConfigSetMockRecorder +} + +// MockFederatedRateLimitConfigSetMockRecorder is the mock recorder for MockFederatedRateLimitConfigSet. +type MockFederatedRateLimitConfigSetMockRecorder struct { + mock *MockFederatedRateLimitConfigSet +} + +// NewMockFederatedRateLimitConfigSet creates a new mock instance. +func NewMockFederatedRateLimitConfigSet(ctrl *gomock.Controller) *MockFederatedRateLimitConfigSet { + mock := &MockFederatedRateLimitConfigSet{ctrl: ctrl} + mock.recorder = &MockFederatedRateLimitConfigSetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFederatedRateLimitConfigSet) EXPECT() *MockFederatedRateLimitConfigSetMockRecorder { + return m.recorder +} + +// Clone mocks base method. +func (m *MockFederatedRateLimitConfigSet) Clone() v1alpha1sets.FederatedRateLimitConfigSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1alpha1sets.FederatedRateLimitConfigSet) + return ret0 +} + +// Clone indicates an expected call of Clone. +func (mr *MockFederatedRateLimitConfigSetMockRecorder) Clone() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockFederatedRateLimitConfigSet)(nil).Clone)) +} + +// Delete mocks base method. +func (m *MockFederatedRateLimitConfigSet) Delete(federatedRateLimitConfig ezkube.ResourceId) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Delete", federatedRateLimitConfig) +} + +// Delete indicates an expected call of Delete. +func (mr *MockFederatedRateLimitConfigSetMockRecorder) Delete(federatedRateLimitConfig interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockFederatedRateLimitConfigSet)(nil).Delete), federatedRateLimitConfig) +} + +// Delta mocks base method. +func (m *MockFederatedRateLimitConfigSet) Delta(newSet v1alpha1sets.FederatedRateLimitConfigSet) sets.ResourceDelta { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) + return ret0 +} + +// Delta indicates an expected call of Delta. +func (mr *MockFederatedRateLimitConfigSetMockRecorder) Delta(newSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockFederatedRateLimitConfigSet)(nil).Delta), newSet) +} + +// Difference mocks base method. +func (m *MockFederatedRateLimitConfigSet) Difference(set v1alpha1sets.FederatedRateLimitConfigSet) v1alpha1sets.FederatedRateLimitConfigSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1alpha1sets.FederatedRateLimitConfigSet) + return ret0 +} + +// Difference indicates an expected call of Difference. +func (mr *MockFederatedRateLimitConfigSetMockRecorder) Difference(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockFederatedRateLimitConfigSet)(nil).Difference), set) +} + +// Equal mocks base method. +func (m *MockFederatedRateLimitConfigSet) Equal(federatedRateLimitConfigSet v1alpha1sets.FederatedRateLimitConfigSet) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Equal", federatedRateLimitConfigSet) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Equal indicates an expected call of Equal. +func (mr *MockFederatedRateLimitConfigSetMockRecorder) Equal(federatedRateLimitConfigSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockFederatedRateLimitConfigSet)(nil).Equal), federatedRateLimitConfigSet) +} + +// Find mocks base method. +func (m *MockFederatedRateLimitConfigSet) Find(id ezkube.ResourceId) (*v1alpha1.FederatedRateLimitConfig, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1alpha1.FederatedRateLimitConfig) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Find indicates an expected call of Find. +func (mr *MockFederatedRateLimitConfigSetMockRecorder) Find(id interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockFederatedRateLimitConfigSet)(nil).Find), id) +} + +// Generic mocks base method. +func (m *MockFederatedRateLimitConfigSet) Generic() sets.ResourceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 +} + +// Generic indicates an expected call of Generic. +func (mr *MockFederatedRateLimitConfigSetMockRecorder) Generic() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockFederatedRateLimitConfigSet)(nil).Generic)) +} + +// Has mocks base method. +func (m *MockFederatedRateLimitConfigSet) Has(federatedRateLimitConfig ezkube.ResourceId) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Has", federatedRateLimitConfig) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Has indicates an expected call of Has. +func (mr *MockFederatedRateLimitConfigSetMockRecorder) Has(federatedRateLimitConfig interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockFederatedRateLimitConfigSet)(nil).Has), federatedRateLimitConfig) +} + +// Insert mocks base method. +func (m *MockFederatedRateLimitConfigSet) Insert(federatedRateLimitConfig ...*v1alpha1.FederatedRateLimitConfig) { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range federatedRateLimitConfig { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) +} + +// Insert indicates an expected call of Insert. +func (mr *MockFederatedRateLimitConfigSetMockRecorder) Insert(federatedRateLimitConfig ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockFederatedRateLimitConfigSet)(nil).Insert), federatedRateLimitConfig...) +} + +// Intersection mocks base method. +func (m *MockFederatedRateLimitConfigSet) Intersection(set v1alpha1sets.FederatedRateLimitConfigSet) v1alpha1sets.FederatedRateLimitConfigSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Intersection", set) + ret0, _ := ret[0].(v1alpha1sets.FederatedRateLimitConfigSet) + return ret0 +} + +// Intersection indicates an expected call of Intersection. +func (mr *MockFederatedRateLimitConfigSetMockRecorder) Intersection(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockFederatedRateLimitConfigSet)(nil).Intersection), set) +} + +// Keys mocks base method. +func (m *MockFederatedRateLimitConfigSet) Keys() sets0.String { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 +} + +// Keys indicates an expected call of Keys. +func (mr *MockFederatedRateLimitConfigSetMockRecorder) Keys() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockFederatedRateLimitConfigSet)(nil).Keys)) +} + +// Length mocks base method. +func (m *MockFederatedRateLimitConfigSet) Length() int { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Length") + ret0, _ := ret[0].(int) + return ret0 +} + +// Length indicates an expected call of Length. +func (mr *MockFederatedRateLimitConfigSetMockRecorder) Length() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockFederatedRateLimitConfigSet)(nil).Length)) +} + +// List mocks base method. +func (m *MockFederatedRateLimitConfigSet) List(filterResource ...func(*v1alpha1.FederatedRateLimitConfig) bool) []*v1alpha1.FederatedRateLimitConfig { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1alpha1.FederatedRateLimitConfig) + return ret0 +} + +// List indicates an expected call of List. +func (mr *MockFederatedRateLimitConfigSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockFederatedRateLimitConfigSet)(nil).List), filterResource...) +} + +// Map mocks base method. +func (m *MockFederatedRateLimitConfigSet) Map() map[string]*v1alpha1.FederatedRateLimitConfig { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1alpha1.FederatedRateLimitConfig) + return ret0 +} + +// Map indicates an expected call of Map. +func (mr *MockFederatedRateLimitConfigSetMockRecorder) Map() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockFederatedRateLimitConfigSet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockFederatedRateLimitConfigSet) Union(set v1alpha1sets.FederatedRateLimitConfigSet) v1alpha1sets.FederatedRateLimitConfigSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1alpha1sets.FederatedRateLimitConfigSet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockFederatedRateLimitConfigSetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockFederatedRateLimitConfigSet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockFederatedRateLimitConfigSet) UnsortedList(filterResource ...func(*v1alpha1.FederatedRateLimitConfig) bool) []*v1alpha1.FederatedRateLimitConfig { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1alpha1.FederatedRateLimitConfig) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockFederatedRateLimitConfigSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockFederatedRateLimitConfigSet)(nil).UnsortedList), filterResource...) +} diff --git a/pkg/api/fed.ratelimit.solo.io/v1alpha1/sets/sets.go b/pkg/api/fed.ratelimit.solo.io/v1alpha1/sets/sets.go new file mode 100644 index 000000000..e14fd6bab --- /dev/null +++ b/pkg/api/fed.ratelimit.solo.io/v1alpha1/sets/sets.go @@ -0,0 +1,237 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./sets.go -destination mocks/sets.go + +package v1alpha1sets + +import ( + fed_ratelimit_solo_io_v1alpha1 "github.com/solo-io/solo-apis/pkg/api/fed.ratelimit.solo.io/v1alpha1" + + "github.com/rotisserie/eris" + sksets "github.com/solo-io/skv2/contrib/pkg/sets" + "github.com/solo-io/skv2/pkg/ezkube" + "k8s.io/apimachinery/pkg/util/sets" +) + +type FederatedRateLimitConfigSet interface { + // Get the set stored keys + Keys() sets.String + // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + List(filterResource ...func(*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) bool) []*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig + // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + UnsortedList(filterResource ...func(*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) bool) []*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig + // Return the Set as a map of key to resource. + Map() map[string]*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig + // Insert a resource into the set. + Insert(federatedRateLimitConfig ...*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) + // Compare the equality of the keys in two sets (not the resources themselves) + Equal(federatedRateLimitConfigSet FederatedRateLimitConfigSet) bool + // Check if the set contains a key matching the resource (not the resource itself) + Has(federatedRateLimitConfig ezkube.ResourceId) bool + // Delete the key matching the resource + Delete(federatedRateLimitConfig ezkube.ResourceId) + // Return the union with the provided set + Union(set FederatedRateLimitConfigSet) FederatedRateLimitConfigSet + // Return the difference with the provided set + Difference(set FederatedRateLimitConfigSet) FederatedRateLimitConfigSet + // Return the intersection with the provided set + Intersection(set FederatedRateLimitConfigSet) FederatedRateLimitConfigSet + // Find the resource with the given ID + Find(id ezkube.ResourceId) (*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig, error) + // Get the length of the set + Length() int + // returns the generic implementation of the set + Generic() sksets.ResourceSet + // returns the delta between this and and another FederatedRateLimitConfigSet + Delta(newSet FederatedRateLimitConfigSet) sksets.ResourceDelta + // Create a deep copy of the current FederatedRateLimitConfigSet + Clone() FederatedRateLimitConfigSet +} + +func makeGenericFederatedRateLimitConfigSet(federatedRateLimitConfigList []*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) sksets.ResourceSet { + var genericResources []ezkube.ResourceId + for _, obj := range federatedRateLimitConfigList { + genericResources = append(genericResources, obj) + } + return sksets.NewResourceSet(genericResources...) +} + +type federatedRateLimitConfigSet struct { + set sksets.ResourceSet +} + +func NewFederatedRateLimitConfigSet(federatedRateLimitConfigList ...*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) FederatedRateLimitConfigSet { + return &federatedRateLimitConfigSet{set: makeGenericFederatedRateLimitConfigSet(federatedRateLimitConfigList)} +} + +func NewFederatedRateLimitConfigSetFromList(federatedRateLimitConfigList *fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfigList) FederatedRateLimitConfigSet { + list := make([]*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig, 0, len(federatedRateLimitConfigList.Items)) + for idx := range federatedRateLimitConfigList.Items { + list = append(list, &federatedRateLimitConfigList.Items[idx]) + } + return &federatedRateLimitConfigSet{set: makeGenericFederatedRateLimitConfigSet(list)} +} + +func (s *federatedRateLimitConfigSet) Keys() sets.String { + if s == nil { + return sets.String{} + } + return s.Generic().Keys() +} + +func (s *federatedRateLimitConfigSet) List(filterResource ...func(*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) bool) []*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig)) + }) + } + + objs := s.Generic().List(genericFilters...) + federatedRateLimitConfigList := make([]*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig, 0, len(objs)) + for _, obj := range objs { + federatedRateLimitConfigList = append(federatedRateLimitConfigList, obj.(*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig)) + } + return federatedRateLimitConfigList +} + +func (s *federatedRateLimitConfigSet) UnsortedList(filterResource ...func(*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) bool) []*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig)) + }) + } + + var federatedRateLimitConfigList []*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig + for _, obj := range s.Generic().UnsortedList(genericFilters...) { + federatedRateLimitConfigList = append(federatedRateLimitConfigList, obj.(*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig)) + } + return federatedRateLimitConfigList +} + +func (s *federatedRateLimitConfigSet) Map() map[string]*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig { + if s == nil { + return nil + } + + newMap := map[string]*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig{} + for k, v := range s.Generic().Map() { + newMap[k] = v.(*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig) + } + return newMap +} + +func (s *federatedRateLimitConfigSet) Insert( + federatedRateLimitConfigList ...*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig, +) { + if s == nil { + panic("cannot insert into nil set") + } + + for _, obj := range federatedRateLimitConfigList { + s.Generic().Insert(obj) + } +} + +func (s *federatedRateLimitConfigSet) Has(federatedRateLimitConfig ezkube.ResourceId) bool { + if s == nil { + return false + } + return s.Generic().Has(federatedRateLimitConfig) +} + +func (s *federatedRateLimitConfigSet) Equal( + federatedRateLimitConfigSet FederatedRateLimitConfigSet, +) bool { + if s == nil { + return federatedRateLimitConfigSet == nil + } + return s.Generic().Equal(federatedRateLimitConfigSet.Generic()) +} + +func (s *federatedRateLimitConfigSet) Delete(FederatedRateLimitConfig ezkube.ResourceId) { + if s == nil { + return + } + s.Generic().Delete(FederatedRateLimitConfig) +} + +func (s *federatedRateLimitConfigSet) Union(set FederatedRateLimitConfigSet) FederatedRateLimitConfigSet { + if s == nil { + return set + } + return NewFederatedRateLimitConfigSet(append(s.List(), set.List()...)...) +} + +func (s *federatedRateLimitConfigSet) Difference(set FederatedRateLimitConfigSet) FederatedRateLimitConfigSet { + if s == nil { + return set + } + newSet := s.Generic().Difference(set.Generic()) + return &federatedRateLimitConfigSet{set: newSet} +} + +func (s *federatedRateLimitConfigSet) Intersection(set FederatedRateLimitConfigSet) FederatedRateLimitConfigSet { + if s == nil { + return nil + } + newSet := s.Generic().Intersection(set.Generic()) + var federatedRateLimitConfigList []*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig + for _, obj := range newSet.List() { + federatedRateLimitConfigList = append(federatedRateLimitConfigList, obj.(*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig)) + } + return NewFederatedRateLimitConfigSet(federatedRateLimitConfigList...) +} + +func (s *federatedRateLimitConfigSet) Find(id ezkube.ResourceId) (*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig, error) { + if s == nil { + return nil, eris.Errorf("empty set, cannot find FederatedRateLimitConfig %v", sksets.Key(id)) + } + obj, err := s.Generic().Find(&fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig{}, id) + if err != nil { + return nil, err + } + + return obj.(*fed_ratelimit_solo_io_v1alpha1.FederatedRateLimitConfig), nil +} + +func (s *federatedRateLimitConfigSet) Length() int { + if s == nil { + return 0 + } + return s.Generic().Length() +} + +func (s *federatedRateLimitConfigSet) Generic() sksets.ResourceSet { + if s == nil { + return nil + } + return s.set +} + +func (s *federatedRateLimitConfigSet) Delta(newSet FederatedRateLimitConfigSet) sksets.ResourceDelta { + if s == nil { + return sksets.ResourceDelta{ + Inserted: newSet.Generic(), + } + } + return s.Generic().Delta(newSet.Generic()) +} + +func (s *federatedRateLimitConfigSet) Clone() FederatedRateLimitConfigSet { + if s == nil { + return nil + } + return &federatedRateLimitConfigSet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} diff --git a/pkg/api/fed.ratelimit.solo.io/v1alpha1/type_helpers.go b/pkg/api/fed.ratelimit.solo.io/v1alpha1/type_helpers.go new file mode 100644 index 000000000..20d604c7b --- /dev/null +++ b/pkg/api/fed.ratelimit.solo.io/v1alpha1/type_helpers.go @@ -0,0 +1,7 @@ +// Code generated by skv2. DO NOT EDIT. + +// Definitions for the Kubernetes types +package v1alpha1 + +// FederatedRateLimitConfigSlice represents a slice of *FederatedRateLimitConfig +type FederatedRateLimitConfigSlice []*FederatedRateLimitConfig diff --git a/pkg/api/fed.ratelimit.solo.io/v1alpha1/types.go b/pkg/api/fed.ratelimit.solo.io/v1alpha1/types.go new file mode 100644 index 000000000..b29ef567d --- /dev/null +++ b/pkg/api/fed.ratelimit.solo.io/v1alpha1/types.go @@ -0,0 +1,49 @@ +// Code generated by skv2. DO NOT EDIT. + +// Definitions for the Kubernetes types +package v1alpha1 + +import ( + i030ea16e9a32c349e55238df46175e70 "github.com/solo-io/solo-apis/pkg/api/fed.ratelimit.solo.io/v1alpha1/types" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:openapi-gen=true +// +kubebuilder:subresource:status + +// GroupVersionKind for FederatedRateLimitConfig +var FederatedRateLimitConfigGVK = schema.GroupVersionKind{ + Group: "fed.ratelimit.solo.io", + Version: "v1alpha1", + Kind: "FederatedRateLimitConfig", +} + +// FederatedRateLimitConfig is the Schema for the federatedRateLimitConfig API +type FederatedRateLimitConfig struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec i030ea16e9a32c349e55238df46175e70.FederatedRateLimitConfigSpec `json:"spec,omitempty"` + Status i030ea16e9a32c349e55238df46175e70.FederatedRateLimitConfigStatus `json:"status,omitempty"` +} + +// GVK returns the GroupVersionKind associated with the resource type. +func (FederatedRateLimitConfig) GVK() schema.GroupVersionKind { + return FederatedRateLimitConfigGVK +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// FederatedRateLimitConfigList contains a list of FederatedRateLimitConfig +type FederatedRateLimitConfigList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FederatedRateLimitConfig `json:"items"` +} + +func init() { + SchemeBuilder.Register(&FederatedRateLimitConfig{}, &FederatedRateLimitConfigList{}) +} diff --git a/pkg/api/fed.ratelimit.solo.io/v1alpha1/types/json.gen.go b/pkg/api/fed.ratelimit.solo.io/v1alpha1/types/json.gen.go new file mode 100644 index 000000000..8b76a5149 --- /dev/null +++ b/pkg/api/fed.ratelimit.solo.io/v1alpha1/types/json.gen.go @@ -0,0 +1,50 @@ +// Code generated by skv2. DO NOT EDIT. + +// Generated json marshal and unmarshal functions + +package types + +import ( + bytes "bytes" + fmt "fmt" + math "math" + + jsonpb "github.com/golang/protobuf/jsonpb" + proto "github.com/golang/protobuf/proto" + skv2jsonpb "github.com/solo-io/skv2/pkg/kube_jsonpb" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +var ( + marshaller = &skv2jsonpb.Marshaler{} + unmarshaller = &jsonpb.Unmarshaler{ + AllowUnknownFields: true, + } + strictUnmarshaller = &jsonpb.Unmarshaler{} +) + +// MarshalJSON is a custom marshaler for FederatedRateLimitConfigSpec +func (this *FederatedRateLimitConfigSpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for FederatedRateLimitConfigSpec +func (this *FederatedRateLimitConfigSpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for FederatedRateLimitConfigStatus +func (this *FederatedRateLimitConfigStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for FederatedRateLimitConfigStatus +func (this *FederatedRateLimitConfigStatus) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} diff --git a/pkg/api/fed.ratelimit.solo.io/v1alpha1/types/proto_deepcopy.go b/pkg/api/fed.ratelimit.solo.io/v1alpha1/types/proto_deepcopy.go new file mode 100644 index 000000000..209e40bd3 --- /dev/null +++ b/pkg/api/fed.ratelimit.solo.io/v1alpha1/types/proto_deepcopy.go @@ -0,0 +1,32 @@ +// Code generated by skv2. DO NOT EDIT. + +// This file contains generated Deepcopy methods for proto-based Spec and Status fields + +package types + +import ( + proto "github.com/golang/protobuf/proto" + "github.com/solo-io/protoc-gen-ext/pkg/clone" +) + +// DeepCopyInto for the FederatedRateLimitConfig.Spec +func (in *FederatedRateLimitConfigSpec) DeepCopyInto(out *FederatedRateLimitConfigSpec) { + var p *FederatedRateLimitConfigSpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*FederatedRateLimitConfigSpec) + } else { + p = proto.Clone(in).(*FederatedRateLimitConfigSpec) + } + *out = *p +} + +// DeepCopyInto for the FederatedRateLimitConfig.Status +func (in *FederatedRateLimitConfigStatus) DeepCopyInto(out *FederatedRateLimitConfigStatus) { + var p *FederatedRateLimitConfigStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*FederatedRateLimitConfigStatus) + } else { + p = proto.Clone(in).(*FederatedRateLimitConfigStatus) + } + *out = *p +} diff --git a/pkg/api/fed.ratelimit.solo.io/v1alpha1/types/rate_limit_config.pb.equal.go b/pkg/api/fed.ratelimit.solo.io/v1alpha1/types/rate_limit_config.pb.equal.go new file mode 100644 index 000000000..55aa7e854 --- /dev/null +++ b/pkg/api/fed.ratelimit.solo.io/v1alpha1/types/rate_limit_config.pb.equal.go @@ -0,0 +1,165 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.ratelimit/v1alpha1/rate_limit_config.proto + +package types + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *FederatedRateLimitConfigSpec) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*FederatedRateLimitConfigSpec) + if !ok { + that2, ok := that.(FederatedRateLimitConfigSpec) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetTemplate()).(equality.Equalizer); ok { + if !h.Equal(target.GetTemplate()) { + return false + } + } else { + if !proto.Equal(m.GetTemplate(), target.GetTemplate()) { + return false + } + } + + if h, ok := interface{}(m.GetPlacement()).(equality.Equalizer); ok { + if !h.Equal(target.GetPlacement()) { + return false + } + } else { + if !proto.Equal(m.GetPlacement(), target.GetPlacement()) { + return false + } + } + + return true +} + +// Equal function +func (m *FederatedRateLimitConfigStatus) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*FederatedRateLimitConfigStatus) + if !ok { + that2, ok := that.(FederatedRateLimitConfigStatus) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetPlacementStatus()).(equality.Equalizer); ok { + if !h.Equal(target.GetPlacementStatus()) { + return false + } + } else { + if !proto.Equal(m.GetPlacementStatus(), target.GetPlacementStatus()) { + return false + } + } + + if len(m.GetNamespacedPlacementStatuses()) != len(target.GetNamespacedPlacementStatuses()) { + return false + } + for k, v := range m.GetNamespacedPlacementStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetNamespacedPlacementStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetNamespacedPlacementStatuses()[k]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *FederatedRateLimitConfigSpec_Template) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*FederatedRateLimitConfigSpec_Template) + if !ok { + that2, ok := that.(FederatedRateLimitConfigSpec_Template) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetSpec()).(equality.Equalizer); ok { + if !h.Equal(target.GetSpec()) { + return false + } + } else { + if !proto.Equal(m.GetSpec(), target.GetSpec()) { + return false + } + } + + if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { + if !h.Equal(target.GetMetadata()) { + return false + } + } else { + if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { + return false + } + } + + return true +} diff --git a/pkg/api/fed.ratelimit.solo.io/v1alpha1/types/rate_limit_config.pb.go b/pkg/api/fed.ratelimit.solo.io/v1alpha1/types/rate_limit_config.pb.go new file mode 100644 index 000000000..6136566c5 --- /dev/null +++ b/pkg/api/fed.ratelimit.solo.io/v1alpha1/types/rate_limit_config.pb.go @@ -0,0 +1,328 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.ratelimit/v1alpha1/rate_limit_config.proto + +package types + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/core/v1" + types "github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types" + v1alpha1 "github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// The Federated[Resource] CRDs are a gloo-fed wrapper around Gloo Edge CRDs, with a Placement field indicating which +// clusters and namespaces to federate the object to. +// For more, see: https://docs.solo.io/gloo-edge/latest/guides/gloo_federation/federated_configuration/ +type FederatedRateLimitConfigSpec struct { + state protoimpl.MessageState `protogen:"open.v1"` + Template *FederatedRateLimitConfigSpec_Template `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` + Placement *types.Placement `protobuf:"bytes,2,opt,name=placement,proto3" json:"placement,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FederatedRateLimitConfigSpec) Reset() { + *x = FederatedRateLimitConfigSpec{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FederatedRateLimitConfigSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FederatedRateLimitConfigSpec) ProtoMessage() {} + +func (x *FederatedRateLimitConfigSpec) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FederatedRateLimitConfigSpec.ProtoReflect.Descriptor instead. +func (*FederatedRateLimitConfigSpec) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_rawDescGZIP(), []int{0} +} + +func (x *FederatedRateLimitConfigSpec) GetTemplate() *FederatedRateLimitConfigSpec_Template { + if x != nil { + return x.Template + } + return nil +} + +func (x *FederatedRateLimitConfigSpec) GetPlacement() *types.Placement { + if x != nil { + return x.Placement + } + return nil +} + +type FederatedRateLimitConfigStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + PlacementStatus *v1.PlacementStatus `protobuf:"bytes,1,opt,name=placement_status,json=placementStatus,proto3" json:"placement_status,omitempty"` + NamespacedPlacementStatuses map[string]*v1.PlacementStatus `protobuf:"bytes,2,rep,name=namespaced_placement_statuses,json=namespacedPlacementStatuses,proto3" json:"namespaced_placement_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FederatedRateLimitConfigStatus) Reset() { + *x = FederatedRateLimitConfigStatus{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FederatedRateLimitConfigStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FederatedRateLimitConfigStatus) ProtoMessage() {} + +func (x *FederatedRateLimitConfigStatus) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FederatedRateLimitConfigStatus.ProtoReflect.Descriptor instead. +func (*FederatedRateLimitConfigStatus) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_rawDescGZIP(), []int{1} +} + +func (x *FederatedRateLimitConfigStatus) GetPlacementStatus() *v1.PlacementStatus { + if x != nil { + return x.PlacementStatus + } + return nil +} + +func (x *FederatedRateLimitConfigStatus) GetNamespacedPlacementStatuses() map[string]*v1.PlacementStatus { + if x != nil { + return x.NamespacedPlacementStatuses + } + return nil +} + +type FederatedRateLimitConfigSpec_Template struct { + state protoimpl.MessageState `protogen:"open.v1"` + Spec *v1alpha1.RateLimitConfigSpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` + Metadata *v1.TemplateMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FederatedRateLimitConfigSpec_Template) Reset() { + *x = FederatedRateLimitConfigSpec_Template{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FederatedRateLimitConfigSpec_Template) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FederatedRateLimitConfigSpec_Template) ProtoMessage() {} + +func (x *FederatedRateLimitConfigSpec_Template) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FederatedRateLimitConfigSpec_Template.ProtoReflect.Descriptor instead. +func (*FederatedRateLimitConfigSpec_Template) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *FederatedRateLimitConfigSpec_Template) GetSpec() *v1alpha1.RateLimitConfigSpec { + if x != nil { + return x.Spec + } + return nil +} + +func (x *FederatedRateLimitConfigSpec_Template) GetMetadata() *v1.TemplateMetadata { + if x != nil { + return x.Metadata + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_rawDesc = string([]byte{ + 0x0a, 0x58, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, + 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x66, 0x65, 0x64, 0x2e, + 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x52, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, + 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, + 0x2f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x72, 0x61, 0x74, 0x65, 0x2d, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x2f, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc4, 0x02, 0x0a, 0x1c, 0x46, 0x65, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12, 0x58, 0x0a, 0x08, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x66, 0x65, + 0x64, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x61, 0x74, + 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, 0x63, + 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, + 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x1a, 0x8a, 0x01, 0x0a, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, + 0x3e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, + 0x3e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, + 0xfe, 0x02, 0x0a, 0x1e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x61, 0x74, + 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x4c, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x0f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x9a, 0x01, 0x0a, 0x1d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x5f, + 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x56, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, + 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x1b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x63, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, 0x71, 0x0a, + 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x63, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x42, 0x53, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x5a, 0x49, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_goTypes = []any{ + (*FederatedRateLimitConfigSpec)(nil), // 0: fed.ratelimit.solo.io.FederatedRateLimitConfigSpec + (*FederatedRateLimitConfigStatus)(nil), // 1: fed.ratelimit.solo.io.FederatedRateLimitConfigStatus + (*FederatedRateLimitConfigSpec_Template)(nil), // 2: fed.ratelimit.solo.io.FederatedRateLimitConfigSpec.Template + nil, // 3: fed.ratelimit.solo.io.FederatedRateLimitConfigStatus.NamespacedPlacementStatusesEntry + (*types.Placement)(nil), // 4: multicluster.solo.io.Placement + (*v1.PlacementStatus)(nil), // 5: core.fed.solo.io.PlacementStatus + (*v1alpha1.RateLimitConfigSpec)(nil), // 6: ratelimit.api.solo.io.RateLimitConfigSpec + (*v1.TemplateMetadata)(nil), // 7: core.fed.solo.io.TemplateMetadata +} +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_depIdxs = []int32{ + 2, // 0: fed.ratelimit.solo.io.FederatedRateLimitConfigSpec.template:type_name -> fed.ratelimit.solo.io.FederatedRateLimitConfigSpec.Template + 4, // 1: fed.ratelimit.solo.io.FederatedRateLimitConfigSpec.placement:type_name -> multicluster.solo.io.Placement + 5, // 2: fed.ratelimit.solo.io.FederatedRateLimitConfigStatus.placement_status:type_name -> core.fed.solo.io.PlacementStatus + 3, // 3: fed.ratelimit.solo.io.FederatedRateLimitConfigStatus.namespaced_placement_statuses:type_name -> fed.ratelimit.solo.io.FederatedRateLimitConfigStatus.NamespacedPlacementStatusesEntry + 6, // 4: fed.ratelimit.solo.io.FederatedRateLimitConfigSpec.Template.spec:type_name -> ratelimit.api.solo.io.RateLimitConfigSpec + 7, // 5: fed.ratelimit.solo.io.FederatedRateLimitConfigSpec.Template.metadata:type_name -> core.fed.solo.io.TemplateMetadata + 5, // 6: fed.ratelimit.solo.io.FederatedRateLimitConfigStatus.NamespacedPlacementStatusesEntry.value:type_name -> core.fed.solo.io.PlacementStatus + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_rawDesc)), + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_ratelimit_v1alpha1_rate_limit_config_proto_depIdxs = nil +} diff --git a/pkg/api/fed.ratelimit.solo.io/v1alpha1/types/rate_limit_config.pb.hash.go b/pkg/api/fed.ratelimit.solo.io/v1alpha1/types/rate_limit_config.pb.hash.go new file mode 100644 index 000000000..74c9dafa7 --- /dev/null +++ b/pkg/api/fed.ratelimit.solo.io/v1alpha1/types/rate_limit_config.pb.hash.go @@ -0,0 +1,225 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.ratelimit/v1alpha1/rate_limit_config.proto + +package types + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *FederatedRateLimitConfigSpec) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.ratelimit.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.ratelimit.solo.io/v1alpha1/types.FederatedRateLimitConfigSpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPlacement()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *FederatedRateLimitConfigStatus) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.ratelimit.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.ratelimit.solo.io/v1alpha1/types.FederatedRateLimitConfigStatus")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPlacementStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespacedPlacementStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *FederatedRateLimitConfigSpec_Template) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.ratelimit.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.ratelimit.solo.io/v1alpha1/types.FederatedRateLimitConfigSpec_Template")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/fed.ratelimit.solo.io/v1alpha1/types/rate_limit_config.pb.uniquehash.go b/pkg/api/fed.ratelimit.solo.io/v1alpha1/types/rate_limit_config.pb.uniquehash.go new file mode 100644 index 000000000..185cbbd1a --- /dev/null +++ b/pkg/api/fed.ratelimit.solo.io/v1alpha1/types/rate_limit_config.pb.uniquehash.go @@ -0,0 +1,227 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.ratelimit/v1alpha1/rate_limit_config.proto + +package types + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedRateLimitConfigSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.ratelimit.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.ratelimit.solo.io/v1alpha1/types.FederatedRateLimitConfigSpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTemplate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Template")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPlacement()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacement(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Placement")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedRateLimitConfigStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.ratelimit.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.ratelimit.solo.io/v1alpha1/types.FederatedRateLimitConfigStatus")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPlacementStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPlacementStatus(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PlacementStatus")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespacedPlacementStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FederatedRateLimitConfigSpec_Template) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.ratelimit.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.ratelimit.solo.io/v1alpha1/types.FederatedRateLimitConfigSpec_Template")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Spec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/fed.ratelimit.solo.io/v1alpha1/zz_generated.deepcopy.go b/pkg/api/fed.ratelimit.solo.io/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 000000000..2d141e284 --- /dev/null +++ b/pkg/api/fed.ratelimit.solo.io/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,69 @@ +// Code generated by skv2. DO NOT EDIT. + +// This file contains generated Deepcopy methods for fed.ratelimit.solo.io/v1alpha1 resources + +package v1alpha1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// Generated Deepcopy methods for FederatedRateLimitConfig + +func (in *FederatedRateLimitConfig) DeepCopyInto(out *FederatedRateLimitConfig) { + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + + // deepcopy spec + in.Spec.DeepCopyInto(&out.Spec) + // deepcopy status + in.Status.DeepCopyInto(&out.Status) + + return +} + +func (in *FederatedRateLimitConfig) DeepCopy() *FederatedRateLimitConfig { + if in == nil { + return nil + } + out := new(FederatedRateLimitConfig) + in.DeepCopyInto(out) + return out +} + +func (in *FederatedRateLimitConfig) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +func (in *FederatedRateLimitConfigList) DeepCopyInto(out *FederatedRateLimitConfigList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FederatedRateLimitConfig, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +func (in *FederatedRateLimitConfigList) DeepCopy() *FederatedRateLimitConfigList { + if in == nil { + return nil + } + out := new(FederatedRateLimitConfigList) + in.DeepCopyInto(out) + return out +} + +func (in *FederatedRateLimitConfigList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} diff --git a/pkg/api/fed.rpc/v1/common.pb.equal.go b/pkg/api/fed.rpc/v1/common.pb.equal.go deleted file mode 100644 index e523869d5..000000000 --- a/pkg/api/fed.rpc/v1/common.pb.equal.go +++ /dev/null @@ -1,162 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/common.proto - -package v1 - -import ( - "bytes" - "encoding/binary" - "errors" - "fmt" - "strings" - - "github.com/golang/protobuf/proto" - equality "github.com/solo-io/protoc-gen-ext/pkg/equality" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = bytes.Compare - _ = strings.Compare - _ = equality.Equalizer(nil) - _ = proto.Message(nil) -) - -// Equal function -func (m *ObjectMeta) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ObjectMeta) - if !ok { - that2, ok := that.(ObjectMeta) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if strings.Compare(m.GetName(), target.GetName()) != 0 { - return false - } - - if strings.Compare(m.GetNamespace(), target.GetNamespace()) != 0 { - return false - } - - if strings.Compare(m.GetUid(), target.GetUid()) != 0 { - return false - } - - if strings.Compare(m.GetResourceVersion(), target.GetResourceVersion()) != 0 { - return false - } - - if h, ok := interface{}(m.GetCreationTimestamp()).(equality.Equalizer); ok { - if !h.Equal(target.GetCreationTimestamp()) { - return false - } - } else { - if !proto.Equal(m.GetCreationTimestamp(), target.GetCreationTimestamp()) { - return false - } - } - - if len(m.GetLabels()) != len(target.GetLabels()) { - return false - } - for k, v := range m.GetLabels() { - - if strings.Compare(v, target.GetLabels()[k]) != 0 { - return false - } - - } - - if len(m.GetAnnotations()) != len(target.GetAnnotations()) { - return false - } - for k, v := range m.GetAnnotations() { - - if strings.Compare(v, target.GetAnnotations()[k]) != 0 { - return false - } - - } - - if strings.Compare(m.GetClusterName(), target.GetClusterName()) != 0 { - return false - } - - return true -} - -// Equal function -func (m *Time) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*Time) - if !ok { - that2, ok := that.(Time) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if m.GetSeconds() != target.GetSeconds() { - return false - } - - if m.GetNanos() != target.GetNanos() { - return false - } - - return true -} - -// Equal function -func (m *ResourceYaml) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ResourceYaml) - if !ok { - that2, ok := that.(ResourceYaml) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if strings.Compare(m.GetYaml(), target.GetYaml()) != 0 { - return false - } - - return true -} diff --git a/pkg/api/fed.rpc/v1/common.pb.go b/pkg/api/fed.rpc/v1/common.pb.go deleted file mode 100644 index 4c96e2e91..000000000 --- a/pkg/api/fed.rpc/v1/common.pb.go +++ /dev/null @@ -1,457 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.6.1 -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/common.proto - -// defines common types shared across DevPortal component APIs - -package v1 - -import ( - reflect "reflect" - sync "sync" - - proto "github.com/golang/protobuf/proto" - _ "github.com/solo-io/protoc-gen-ext/extproto" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -// ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. -// This is a boiled-down version of Kubernetes ObjectMeta which can be found at: -// https://github.com/kubernetes/apimachinery/blob/master/pkg/apis/meta/v1/generated.proto -type ObjectMeta struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Name must be unique within a namespace. Is required when creating resources, although - // some resources may allow a client to request the generation of an appropriate name - // automatically. Name is primarily intended for creation idempotence and configuration - // definition. - // Cannot be updated. - // More info: http://kubernetes.io/docs/user-guide/identifiers#names - // +optional - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Namespace defines the space within each name must be unique. An empty namespace is - // equivalent to the "default" namespace, but "default" is the canonical representation. - // Not all objects are required to be scoped to a namespace - the value of this field for - // those objects will be empty. - // - // Must be a DNS_LABEL. - // Cannot be updated. - // More info: http://kubernetes.io/docs/user-guide/namespaces - // +optional - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` - // UID is the unique in time and space value for this object. It is typically generated by - // the server on successful creation of a resource and is not allowed to change on PUT - // operations. - // - // Populated by the system. - // Read-only. - // More info: http://kubernetes.io/docs/user-guide/identifiers#uids - // +optional - Uid string `protobuf:"bytes,5,opt,name=uid,proto3" json:"uid,omitempty"` - // An opaque value that represents the internal version of this object that can - // be used by clients to determine when objects have changed. May be used for optimistic - // concurrency, change detection, and the watch operation on a resource or set of resources. - // Clients must treat these values as opaque and passed unmodified back to the server. - // They may only be valid for a particular resource or set of resources. - // - // Populated by the system. - // Read-only. - // Value must be treated as opaque by clients and . - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency - // +optional - ResourceVersion string `protobuf:"bytes,6,opt,name=resource_version,json=resourceVersion,proto3" json:"resource_version,omitempty"` - // CreationTimestamp is a timestamp representing the server time when this object was - // created. It is not guaranteed to be set in happens-before order across separate operations. - // Clients may not set this value. It is represented in RFC3339 form and is in UTC. - // - // Populated by the system. - // Read-only. - // Null for lists. - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - // +optional - CreationTimestamp *Time `protobuf:"bytes,8,opt,name=creation_timestamp,json=creationTimestamp,proto3" json:"creation_timestamp,omitempty"` - // Map of string keys and values that can be used to organize and categorize - // (scope and select) objects. May match selectors of replication controllers - // and services. - // More info: http://kubernetes.io/docs/user-guide/labels - // +optional - Labels map[string]string `protobuf:"bytes,11,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // Annotations is an unstructured key value map stored with a resource that may be - // set by external tools to store and retrieve arbitrary metadata. They are not - // queryable and should be preserved when modifying objects. - // More info: http://kubernetes.io/docs/user-guide/annotations - // +optional - Annotations map[string]string `protobuf:"bytes,12,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // The name of the cluster which the object belongs to. - // This is used to distinguish resources with same name and namespace in different clusters. - // This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request. - // +optional - ClusterName string `protobuf:"bytes,13,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` -} - -func (x *ObjectMeta) Reset() { - *x = ObjectMeta{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ObjectMeta) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ObjectMeta) ProtoMessage() {} - -func (x *ObjectMeta) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ObjectMeta.ProtoReflect.Descriptor instead. -func (*ObjectMeta) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_rawDescGZIP(), []int{0} -} - -func (x *ObjectMeta) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *ObjectMeta) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" -} - -func (x *ObjectMeta) GetUid() string { - if x != nil { - return x.Uid - } - return "" -} - -func (x *ObjectMeta) GetResourceVersion() string { - if x != nil { - return x.ResourceVersion - } - return "" -} - -func (x *ObjectMeta) GetCreationTimestamp() *Time { - if x != nil { - return x.CreationTimestamp - } - return nil -} - -func (x *ObjectMeta) GetLabels() map[string]string { - if x != nil { - return x.Labels - } - return nil -} - -func (x *ObjectMeta) GetAnnotations() map[string]string { - if x != nil { - return x.Annotations - } - return nil -} - -func (x *ObjectMeta) GetClusterName() string { - if x != nil { - return x.ClusterName - } - return "" -} - -// Time is a wrapper around time.Time which supports correct -// marshaling to YAML and JSON. Wrappers are provided for many -// of the factory methods that the time package offers. -// -// +protobuf.options.marshal=false -// +protobuf.as=Timestamp -// +protobuf.options.(gogoproto.goproto_stringer)=false -type Time struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Represents seconds of UTC time since Unix epoch - // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to - // 9999-12-31T23:59:59Z inclusive. - Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"` - // Non-negative fractions of a second at nanosecond resolution. Negative - // second values with fractions must still have non-negative nanos values - // that count forward in time. Must be from 0 to 999,999,999 - // inclusive. This field may be limited in precision depending on context. - Nanos int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"` -} - -func (x *Time) Reset() { - *x = Time{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Time) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Time) ProtoMessage() {} - -func (x *Time) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Time.ProtoReflect.Descriptor instead. -func (*Time) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_rawDescGZIP(), []int{1} -} - -func (x *Time) GetSeconds() int64 { - if x != nil { - return x.Seconds - } - return 0 -} - -func (x *Time) GetNanos() int32 { - if x != nil { - return x.Nanos - } - return 0 -} - -type ResourceYaml struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Yaml string `protobuf:"bytes,1,opt,name=yaml,proto3" json:"yaml,omitempty"` -} - -func (x *ResourceYaml) Reset() { - *x = ResourceYaml{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ResourceYaml) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResourceYaml) ProtoMessage() {} - -func (x *ResourceYaml) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResourceYaml.ProtoReflect.Descriptor instead. -func (*ResourceYaml) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_rawDescGZIP(), []int{2} -} - -func (x *ResourceYaml) GetYaml() string { - if x != nil { - return x.Yaml - } - return "" -} - -var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto protoreflect.FileDescriptor - -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_rawDesc = []byte{ - 0x0a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, - 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, - 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf0, 0x03, 0x0a, 0x0a, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3f, 0x0a, 0x06, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x66, - 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x4e, 0x0a, - 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, - 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, - 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, - 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x36, 0x0a, 0x04, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x14, 0x0a, - 0x05, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6e, 0x61, - 0x6e, 0x6f, 0x73, 0x22, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x59, - 0x61, 0x6d, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x42, 0x39, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, - 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_rawDesc -) - -func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_rawDescGZIP() []byte { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_rawDescData) - }) - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_rawDescData -} - -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_msgTypes = make([]protoimpl.MessageInfo, 5) -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_goTypes = []interface{}{ - (*ObjectMeta)(nil), // 0: fed.rpc.solo.io.ObjectMeta - (*Time)(nil), // 1: fed.rpc.solo.io.Time - (*ResourceYaml)(nil), // 2: fed.rpc.solo.io.ResourceYaml - nil, // 3: fed.rpc.solo.io.ObjectMeta.LabelsEntry - nil, // 4: fed.rpc.solo.io.ObjectMeta.AnnotationsEntry -} -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_depIdxs = []int32{ - 1, // 0: fed.rpc.solo.io.ObjectMeta.creation_timestamp:type_name -> fed.rpc.solo.io.Time - 3, // 1: fed.rpc.solo.io.ObjectMeta.labels:type_name -> fed.rpc.solo.io.ObjectMeta.LabelsEntry - 4, // 2: fed.rpc.solo.io.ObjectMeta.annotations:type_name -> fed.rpc.solo.io.ObjectMeta.AnnotationsEntry - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name -} - -func init() { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_init() } -func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_init() { - if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ObjectMeta); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Time); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResourceYaml); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_rawDesc, - NumEnums: 0, - NumMessages: 5, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_goTypes, - DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_depIdxs, - MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_msgTypes, - }.Build() - File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_rawDesc = nil - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_goTypes = nil - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_depIdxs = nil -} diff --git a/pkg/api/fed.rpc/v1/common.pb.hash.go b/pkg/api/fed.rpc/v1/common.pb.hash.go deleted file mode 100644 index e0ebaab06..000000000 --- a/pkg/api/fed.rpc/v1/common.pb.hash.go +++ /dev/null @@ -1,168 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/common.proto - -package v1 - -import ( - "encoding/binary" - "errors" - "fmt" - "hash" - "hash/fnv" - - "github.com/mitchellh/hashstructure" - safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = new(hash.Hash64) - _ = fnv.New64 - _ = hashstructure.Hash - _ = new(safe_hasher.SafeHasher) -) - -// Hash function -func (m *ObjectMeta) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ObjectMeta")); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetName())); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetNamespace())); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetUid())); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetResourceVersion())); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetCreationTimestamp()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetCreationTimestamp(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - { - var result uint64 - innerHash := fnv.New64() - for k, v := range m.GetLabels() { - innerHash.Reset() - - if _, err = innerHash.Write([]byte(v)); err != nil { - return 0, err - } - - if _, err = innerHash.Write([]byte(k)); err != nil { - return 0, err - } - - result = result ^ innerHash.Sum64() - } - err = binary.Write(hasher, binary.LittleEndian, result) - if err != nil { - return 0, err - } - - } - - { - var result uint64 - innerHash := fnv.New64() - for k, v := range m.GetAnnotations() { - innerHash.Reset() - - if _, err = innerHash.Write([]byte(v)); err != nil { - return 0, err - } - - if _, err = innerHash.Write([]byte(k)); err != nil { - return 0, err - } - - result = result ^ innerHash.Sum64() - } - err = binary.Write(hasher, binary.LittleEndian, result) - if err != nil { - return 0, err - } - - } - - if _, err = hasher.Write([]byte(m.GetClusterName())); err != nil { - return 0, err - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *Time) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.Time")); err != nil { - return 0, err - } - - err = binary.Write(hasher, binary.LittleEndian, m.GetSeconds()) - if err != nil { - return 0, err - } - - err = binary.Write(hasher, binary.LittleEndian, m.GetNanos()) - if err != nil { - return 0, err - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ResourceYaml) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ResourceYaml")); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetYaml())); err != nil { - return 0, err - } - - return hasher.Sum64(), nil -} diff --git a/pkg/api/fed.rpc/v1/enterprise_gloo_resources.pb.equal.go b/pkg/api/fed.rpc/v1/enterprise_gloo_resources.pb.equal.go deleted file mode 100644 index 06acee7b5..000000000 --- a/pkg/api/fed.rpc/v1/enterprise_gloo_resources.pb.equal.go +++ /dev/null @@ -1,233 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/enterprise_gloo_resources.proto - -package v1 - -import ( - "bytes" - "encoding/binary" - "errors" - "fmt" - "strings" - - "github.com/golang/protobuf/proto" - equality "github.com/solo-io/protoc-gen-ext/pkg/equality" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = bytes.Compare - _ = strings.Compare - _ = equality.Equalizer(nil) - _ = proto.Message(nil) -) - -// Equal function -func (m *AuthConfig) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*AuthConfig) - if !ok { - that2, ok := that.(AuthConfig) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadata()) { - return false - } - } else { - if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { - return false - } - } - - if h, ok := interface{}(m.GetSpec()).(equality.Equalizer); ok { - if !h.Equal(target.GetSpec()) { - return false - } - } else { - if !proto.Equal(m.GetSpec(), target.GetSpec()) { - return false - } - } - - if h, ok := interface{}(m.GetStatus()).(equality.Equalizer); ok { - if !h.Equal(target.GetStatus()) { - return false - } - } else { - if !proto.Equal(m.GetStatus(), target.GetStatus()) { - return false - } - } - - if h, ok := interface{}(m.GetGlooInstance()).(equality.Equalizer); ok { - if !h.Equal(target.GetGlooInstance()) { - return false - } - } else { - if !proto.Equal(m.GetGlooInstance(), target.GetGlooInstance()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListAuthConfigsRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListAuthConfigsRequest) - if !ok { - that2, ok := that.(ListAuthConfigsRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetGlooInstanceRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetGlooInstanceRef()) { - return false - } - } else { - if !proto.Equal(m.GetGlooInstanceRef(), target.GetGlooInstanceRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListAuthConfigsResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListAuthConfigsResponse) - if !ok { - that2, ok := that.(ListAuthConfigsResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if len(m.GetAuthConfigs()) != len(target.GetAuthConfigs()) { - return false - } - for idx, v := range m.GetAuthConfigs() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetAuthConfigs()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetAuthConfigs()[idx]) { - return false - } - } - - } - - return true -} - -// Equal function -func (m *GetAuthConfigYamlRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetAuthConfigYamlRequest) - if !ok { - that2, ok := that.(GetAuthConfigYamlRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetAuthConfigRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetAuthConfigRef()) { - return false - } - } else { - if !proto.Equal(m.GetAuthConfigRef(), target.GetAuthConfigRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *GetAuthConfigYamlResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetAuthConfigYamlResponse) - if !ok { - that2, ok := that.(GetAuthConfigYamlResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetYamlData()).(equality.Equalizer); ok { - if !h.Equal(target.GetYamlData()) { - return false - } - } else { - if !proto.Equal(m.GetYamlData(), target.GetYamlData()) { - return false - } - } - - return true -} diff --git a/pkg/api/fed.rpc/v1/enterprise_gloo_resources.pb.go b/pkg/api/fed.rpc/v1/enterprise_gloo_resources.pb.go deleted file mode 100644 index 23bbb2a95..000000000 --- a/pkg/api/fed.rpc/v1/enterprise_gloo_resources.pb.go +++ /dev/null @@ -1,632 +0,0 @@ -// Code generated by skv2. DO NOT EDIT. - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.6.1 -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/enterprise_gloo_resources.proto - -package v1 - -import ( - context "context" - reflect "reflect" - sync "sync" - - proto "github.com/golang/protobuf/proto" - _ "github.com/solo-io/protoc-gen-ext/extproto" - v11 "github.com/solo-io/skv2/pkg/api/core.skv2.solo.io/v1" - v1 "github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -type AuthConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *ObjectMeta `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - Spec *v1.AuthConfigSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` - Status *v1.AuthConfigStatus `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` - GlooInstance *v11.ObjectRef `protobuf:"bytes,4,opt,name=gloo_instance,json=glooInstance,proto3" json:"gloo_instance,omitempty"` -} - -func (x *AuthConfig) Reset() { - *x = AuthConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AuthConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AuthConfig) ProtoMessage() {} - -func (x *AuthConfig) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AuthConfig.ProtoReflect.Descriptor instead. -func (*AuthConfig) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_rawDescGZIP(), []int{0} -} - -func (x *AuthConfig) GetMetadata() *ObjectMeta { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *AuthConfig) GetSpec() *v1.AuthConfigSpec { - if x != nil { - return x.Spec - } - return nil -} - -func (x *AuthConfig) GetStatus() *v1.AuthConfigStatus { - if x != nil { - return x.Status - } - return nil -} - -func (x *AuthConfig) GetGlooInstance() *v11.ObjectRef { - if x != nil { - return x.GlooInstance - } - return nil -} - -type ListAuthConfigsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GlooInstanceRef *v11.ObjectRef `protobuf:"bytes,1,opt,name=gloo_instance_ref,json=glooInstanceRef,proto3" json:"gloo_instance_ref,omitempty"` -} - -func (x *ListAuthConfigsRequest) Reset() { - *x = ListAuthConfigsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListAuthConfigsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListAuthConfigsRequest) ProtoMessage() {} - -func (x *ListAuthConfigsRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListAuthConfigsRequest.ProtoReflect.Descriptor instead. -func (*ListAuthConfigsRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_rawDescGZIP(), []int{1} -} - -func (x *ListAuthConfigsRequest) GetGlooInstanceRef() *v11.ObjectRef { - if x != nil { - return x.GlooInstanceRef - } - return nil -} - -type ListAuthConfigsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - AuthConfigs []*AuthConfig `protobuf:"bytes,1,rep,name=auth_configs,json=authConfigs,proto3" json:"auth_configs,omitempty"` -} - -func (x *ListAuthConfigsResponse) Reset() { - *x = ListAuthConfigsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListAuthConfigsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListAuthConfigsResponse) ProtoMessage() {} - -func (x *ListAuthConfigsResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListAuthConfigsResponse.ProtoReflect.Descriptor instead. -func (*ListAuthConfigsResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_rawDescGZIP(), []int{2} -} - -func (x *ListAuthConfigsResponse) GetAuthConfigs() []*AuthConfig { - if x != nil { - return x.AuthConfigs - } - return nil -} - -type GetAuthConfigYamlRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - AuthConfigRef *v11.ClusterObjectRef `protobuf:"bytes,1,opt,name=auth_config_ref,json=authConfigRef,proto3" json:"auth_config_ref,omitempty"` -} - -func (x *GetAuthConfigYamlRequest) Reset() { - *x = GetAuthConfigYamlRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetAuthConfigYamlRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetAuthConfigYamlRequest) ProtoMessage() {} - -func (x *GetAuthConfigYamlRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetAuthConfigYamlRequest.ProtoReflect.Descriptor instead. -func (*GetAuthConfigYamlRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_rawDescGZIP(), []int{3} -} - -func (x *GetAuthConfigYamlRequest) GetAuthConfigRef() *v11.ClusterObjectRef { - if x != nil { - return x.AuthConfigRef - } - return nil -} - -type GetAuthConfigYamlResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - YamlData *ResourceYaml `protobuf:"bytes,1,opt,name=yaml_data,json=yamlData,proto3" json:"yaml_data,omitempty"` -} - -func (x *GetAuthConfigYamlResponse) Reset() { - *x = GetAuthConfigYamlResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetAuthConfigYamlResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetAuthConfigYamlResponse) ProtoMessage() {} - -func (x *GetAuthConfigYamlResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetAuthConfigYamlResponse.ProtoReflect.Descriptor instead. -func (*GetAuthConfigYamlResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_rawDescGZIP(), []int{4} -} - -func (x *GetAuthConfigYamlResponse) GetYamlData() *ResourceYaml { - if x != nil { - return x.YamlData - } - return nil -} - -var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto protoreflect.FileDescriptor - -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_rawDesc = []byte{ - 0x0a, 0x54, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, - 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, - 0x65, 0x5f, 0x67, 0x6c, 0x6f, 0x6f, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4a, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, - 0x6f, 0x6f, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6b, 0x76, 0x32, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, - 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x88, 0x02, 0x0a, 0x0a, 0x41, - 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x65, - 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x27, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, - 0x41, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x29, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x41, 0x0a, 0x0d, 0x67, 0x6c, 0x6f, 0x6f, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x0c, 0x67, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x62, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75, 0x74, - 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x48, 0x0a, 0x11, 0x67, 0x6c, 0x6f, 0x6f, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x0f, 0x67, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x66, 0x22, 0x59, 0x0a, 0x17, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x65, 0x64, - 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x75, 0x74, - 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x73, 0x22, 0x67, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x4b, 0x0a, 0x0f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, - 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x0d, - 0x61, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x66, 0x22, 0x57, 0x0a, - 0x19, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x59, 0x61, - 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x79, 0x61, - 0x6d, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x08, 0x79, 0x61, - 0x6d, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x32, 0xf1, 0x01, 0x0a, 0x19, 0x45, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x69, 0x73, 0x65, 0x47, 0x6c, 0x6f, 0x6f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x41, 0x70, 0x69, 0x12, 0x66, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75, 0x74, 0x68, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x27, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75, - 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x28, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x11, - 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x59, 0x61, 0x6d, - 0x6c, 0x12, 0x29, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x66, - 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, - 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x59, 0x61, 0x6d, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x39, 0x5a, 0x2f, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0xb8, 0xf5, 0x04, - 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_rawDesc -) - -func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_rawDescGZIP() []byte { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_rawDescData) - }) - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_rawDescData -} - -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_msgTypes = make([]protoimpl.MessageInfo, 5) -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_goTypes = []interface{}{ - (*AuthConfig)(nil), // 0: fed.rpc.solo.io.AuthConfig - (*ListAuthConfigsRequest)(nil), // 1: fed.rpc.solo.io.ListAuthConfigsRequest - (*ListAuthConfigsResponse)(nil), // 2: fed.rpc.solo.io.ListAuthConfigsResponse - (*GetAuthConfigYamlRequest)(nil), // 3: fed.rpc.solo.io.GetAuthConfigYamlRequest - (*GetAuthConfigYamlResponse)(nil), // 4: fed.rpc.solo.io.GetAuthConfigYamlResponse - (*ObjectMeta)(nil), // 5: fed.rpc.solo.io.ObjectMeta - (*v1.AuthConfigSpec)(nil), // 6: enterprise.gloo.solo.io.AuthConfigSpec - (*v1.AuthConfigStatus)(nil), // 7: enterprise.gloo.solo.io.AuthConfigStatus - (*v11.ObjectRef)(nil), // 8: core.skv2.solo.io.ObjectRef - (*v11.ClusterObjectRef)(nil), // 9: core.skv2.solo.io.ClusterObjectRef - (*ResourceYaml)(nil), // 10: fed.rpc.solo.io.ResourceYaml -} -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_depIdxs = []int32{ - 5, // 0: fed.rpc.solo.io.AuthConfig.metadata:type_name -> fed.rpc.solo.io.ObjectMeta - 6, // 1: fed.rpc.solo.io.AuthConfig.spec:type_name -> enterprise.gloo.solo.io.AuthConfigSpec - 7, // 2: fed.rpc.solo.io.AuthConfig.status:type_name -> enterprise.gloo.solo.io.AuthConfigStatus - 8, // 3: fed.rpc.solo.io.AuthConfig.gloo_instance:type_name -> core.skv2.solo.io.ObjectRef - 8, // 4: fed.rpc.solo.io.ListAuthConfigsRequest.gloo_instance_ref:type_name -> core.skv2.solo.io.ObjectRef - 0, // 5: fed.rpc.solo.io.ListAuthConfigsResponse.auth_configs:type_name -> fed.rpc.solo.io.AuthConfig - 9, // 6: fed.rpc.solo.io.GetAuthConfigYamlRequest.auth_config_ref:type_name -> core.skv2.solo.io.ClusterObjectRef - 10, // 7: fed.rpc.solo.io.GetAuthConfigYamlResponse.yaml_data:type_name -> fed.rpc.solo.io.ResourceYaml - 1, // 8: fed.rpc.solo.io.EnterpriseGlooResourceApi.ListAuthConfigs:input_type -> fed.rpc.solo.io.ListAuthConfigsRequest - 3, // 9: fed.rpc.solo.io.EnterpriseGlooResourceApi.GetAuthConfigYaml:input_type -> fed.rpc.solo.io.GetAuthConfigYamlRequest - 2, // 10: fed.rpc.solo.io.EnterpriseGlooResourceApi.ListAuthConfigs:output_type -> fed.rpc.solo.io.ListAuthConfigsResponse - 4, // 11: fed.rpc.solo.io.EnterpriseGlooResourceApi.GetAuthConfigYaml:output_type -> fed.rpc.solo.io.GetAuthConfigYamlResponse - 10, // [10:12] is the sub-list for method output_type - 8, // [8:10] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name -} - -func init() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_init() -} -func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_init() { - if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto != nil { - return - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_init() - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AuthConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAuthConfigsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAuthConfigsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetAuthConfigYamlRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetAuthConfigYamlResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_rawDesc, - NumEnums: 0, - NumMessages: 5, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_goTypes, - DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_depIdxs, - MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_msgTypes, - }.Build() - File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_rawDesc = nil - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_goTypes = nil - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_enterprise_gloo_resources_proto_depIdxs = nil -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConnInterface - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion6 - -// EnterpriseGlooResourceApiClient is the client API for EnterpriseGlooResourceApi service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type EnterpriseGlooResourceApiClient interface { - ListAuthConfigs(ctx context.Context, in *ListAuthConfigsRequest, opts ...grpc.CallOption) (*ListAuthConfigsResponse, error) - GetAuthConfigYaml(ctx context.Context, in *GetAuthConfigYamlRequest, opts ...grpc.CallOption) (*GetAuthConfigYamlResponse, error) -} - -type enterpriseGlooResourceApiClient struct { - cc grpc.ClientConnInterface -} - -func NewEnterpriseGlooResourceApiClient(cc grpc.ClientConnInterface) EnterpriseGlooResourceApiClient { - return &enterpriseGlooResourceApiClient{cc} -} - -func (c *enterpriseGlooResourceApiClient) ListAuthConfigs(ctx context.Context, in *ListAuthConfigsRequest, opts ...grpc.CallOption) (*ListAuthConfigsResponse, error) { - out := new(ListAuthConfigsResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.EnterpriseGlooResourceApi/ListAuthConfigs", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *enterpriseGlooResourceApiClient) GetAuthConfigYaml(ctx context.Context, in *GetAuthConfigYamlRequest, opts ...grpc.CallOption) (*GetAuthConfigYamlResponse, error) { - out := new(GetAuthConfigYamlResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.EnterpriseGlooResourceApi/GetAuthConfigYaml", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// EnterpriseGlooResourceApiServer is the server API for EnterpriseGlooResourceApi service. -type EnterpriseGlooResourceApiServer interface { - ListAuthConfigs(context.Context, *ListAuthConfigsRequest) (*ListAuthConfigsResponse, error) - GetAuthConfigYaml(context.Context, *GetAuthConfigYamlRequest) (*GetAuthConfigYamlResponse, error) -} - -// UnimplementedEnterpriseGlooResourceApiServer can be embedded to have forward compatible implementations. -type UnimplementedEnterpriseGlooResourceApiServer struct { -} - -func (*UnimplementedEnterpriseGlooResourceApiServer) ListAuthConfigs(context.Context, *ListAuthConfigsRequest) (*ListAuthConfigsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListAuthConfigs not implemented") -} -func (*UnimplementedEnterpriseGlooResourceApiServer) GetAuthConfigYaml(context.Context, *GetAuthConfigYamlRequest) (*GetAuthConfigYamlResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetAuthConfigYaml not implemented") -} - -func RegisterEnterpriseGlooResourceApiServer(s *grpc.Server, srv EnterpriseGlooResourceApiServer) { - s.RegisterService(&_EnterpriseGlooResourceApi_serviceDesc, srv) -} - -func _EnterpriseGlooResourceApi_ListAuthConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListAuthConfigsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EnterpriseGlooResourceApiServer).ListAuthConfigs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.EnterpriseGlooResourceApi/ListAuthConfigs", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EnterpriseGlooResourceApiServer).ListAuthConfigs(ctx, req.(*ListAuthConfigsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _EnterpriseGlooResourceApi_GetAuthConfigYaml_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetAuthConfigYamlRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EnterpriseGlooResourceApiServer).GetAuthConfigYaml(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.EnterpriseGlooResourceApi/GetAuthConfigYaml", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EnterpriseGlooResourceApiServer).GetAuthConfigYaml(ctx, req.(*GetAuthConfigYamlRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _EnterpriseGlooResourceApi_serviceDesc = grpc.ServiceDesc{ - ServiceName: "fed.rpc.solo.io.EnterpriseGlooResourceApi", - HandlerType: (*EnterpriseGlooResourceApiServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListAuthConfigs", - Handler: _EnterpriseGlooResourceApi_ListAuthConfigs_Handler, - }, - { - MethodName: "GetAuthConfigYaml", - Handler: _EnterpriseGlooResourceApi_GetAuthConfigYaml_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/enterprise_gloo_resources.proto", -} diff --git a/pkg/api/fed.rpc/v1/enterprise_gloo_resources.pb.hash.go b/pkg/api/fed.rpc/v1/enterprise_gloo_resources.pb.hash.go deleted file mode 100644 index 5c38752ef..000000000 --- a/pkg/api/fed.rpc/v1/enterprise_gloo_resources.pb.hash.go +++ /dev/null @@ -1,222 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/enterprise_gloo_resources.proto - -package v1 - -import ( - "encoding/binary" - "errors" - "fmt" - "hash" - "hash/fnv" - - "github.com/mitchellh/hashstructure" - safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = new(hash.Hash64) - _ = fnv.New64 - _ = hashstructure.Hash - _ = new(safe_hasher.SafeHasher) -) - -// Hash function -func (m *AuthConfig) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.AuthConfig")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetStatus()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetStatus(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetGlooInstance()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetGlooInstance(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListAuthConfigsRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListAuthConfigsRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetGlooInstanceRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetGlooInstanceRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListAuthConfigsResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListAuthConfigsResponse")); err != nil { - return 0, err - } - - for _, v := range m.GetAuthConfigs() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetAuthConfigYamlRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetAuthConfigYamlRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetAuthConfigRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetAuthConfigRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetAuthConfigYamlResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetAuthConfigYamlResponse")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetYamlData()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetYamlData(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} diff --git a/pkg/api/fed.rpc/v1/failover_scheme.pb.equal.go b/pkg/api/fed.rpc/v1/failover_scheme.pb.equal.go deleted file mode 100644 index 73b09fc06..000000000 --- a/pkg/api/fed.rpc/v1/failover_scheme.pb.equal.go +++ /dev/null @@ -1,216 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/failover_scheme.proto - -package v1 - -import ( - "bytes" - "encoding/binary" - "errors" - "fmt" - "strings" - - "github.com/golang/protobuf/proto" - equality "github.com/solo-io/protoc-gen-ext/pkg/equality" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = bytes.Compare - _ = strings.Compare - _ = equality.Equalizer(nil) - _ = proto.Message(nil) -) - -// Equal function -func (m *FailoverScheme) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*FailoverScheme) - if !ok { - that2, ok := that.(FailoverScheme) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadata()) { - return false - } - } else { - if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { - return false - } - } - - if h, ok := interface{}(m.GetSpec()).(equality.Equalizer); ok { - if !h.Equal(target.GetSpec()) { - return false - } - } else { - if !proto.Equal(m.GetSpec(), target.GetSpec()) { - return false - } - } - - if h, ok := interface{}(m.GetStatus()).(equality.Equalizer); ok { - if !h.Equal(target.GetStatus()) { - return false - } - } else { - if !proto.Equal(m.GetStatus(), target.GetStatus()) { - return false - } - } - - return true -} - -// Equal function -func (m *GetFailoverSchemeRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetFailoverSchemeRequest) - if !ok { - that2, ok := that.(GetFailoverSchemeRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetUpstreamRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetUpstreamRef()) { - return false - } - } else { - if !proto.Equal(m.GetUpstreamRef(), target.GetUpstreamRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *GetFailoverSchemeResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetFailoverSchemeResponse) - if !ok { - that2, ok := that.(GetFailoverSchemeResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetFailoverScheme()).(equality.Equalizer); ok { - if !h.Equal(target.GetFailoverScheme()) { - return false - } - } else { - if !proto.Equal(m.GetFailoverScheme(), target.GetFailoverScheme()) { - return false - } - } - - return true -} - -// Equal function -func (m *GetFailoverSchemeYamlRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetFailoverSchemeYamlRequest) - if !ok { - that2, ok := that.(GetFailoverSchemeYamlRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetFailoverSchemeRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetFailoverSchemeRef()) { - return false - } - } else { - if !proto.Equal(m.GetFailoverSchemeRef(), target.GetFailoverSchemeRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *GetFailoverSchemeYamlResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetFailoverSchemeYamlResponse) - if !ok { - that2, ok := that.(GetFailoverSchemeYamlResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetYamlData()).(equality.Equalizer); ok { - if !h.Equal(target.GetYamlData()) { - return false - } - } else { - if !proto.Equal(m.GetYamlData(), target.GetYamlData()) { - return false - } - } - - return true -} diff --git a/pkg/api/fed.rpc/v1/failover_scheme.pb.go b/pkg/api/fed.rpc/v1/failover_scheme.pb.go deleted file mode 100644 index 577fd612d..000000000 --- a/pkg/api/fed.rpc/v1/failover_scheme.pb.go +++ /dev/null @@ -1,615 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.6.1 -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/failover_scheme.proto - -package v1 - -import ( - context "context" - reflect "reflect" - sync "sync" - - proto "github.com/golang/protobuf/proto" - _ "github.com/solo-io/protoc-gen-ext/extproto" - v1 "github.com/solo-io/skv2/pkg/api/core.skv2.solo.io/v1" - types "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -type FailoverScheme struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *ObjectMeta `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - Spec *types.FailoverSchemeSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` - Status *types.FailoverSchemeStatus `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` -} - -func (x *FailoverScheme) Reset() { - *x = FailoverScheme{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FailoverScheme) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FailoverScheme) ProtoMessage() {} - -func (x *FailoverScheme) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FailoverScheme.ProtoReflect.Descriptor instead. -func (*FailoverScheme) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_rawDescGZIP(), []int{0} -} - -func (x *FailoverScheme) GetMetadata() *ObjectMeta { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *FailoverScheme) GetSpec() *types.FailoverSchemeSpec { - if x != nil { - return x.Spec - } - return nil -} - -func (x *FailoverScheme) GetStatus() *types.FailoverSchemeStatus { - if x != nil { - return x.Status - } - return nil -} - -type GetFailoverSchemeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UpstreamRef *v1.ClusterObjectRef `protobuf:"bytes,1,opt,name=upstream_ref,json=upstreamRef,proto3" json:"upstream_ref,omitempty"` -} - -func (x *GetFailoverSchemeRequest) Reset() { - *x = GetFailoverSchemeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetFailoverSchemeRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetFailoverSchemeRequest) ProtoMessage() {} - -func (x *GetFailoverSchemeRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetFailoverSchemeRequest.ProtoReflect.Descriptor instead. -func (*GetFailoverSchemeRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_rawDescGZIP(), []int{1} -} - -func (x *GetFailoverSchemeRequest) GetUpstreamRef() *v1.ClusterObjectRef { - if x != nil { - return x.UpstreamRef - } - return nil -} - -type GetFailoverSchemeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FailoverScheme *FailoverScheme `protobuf:"bytes,1,opt,name=failover_scheme,json=failoverScheme,proto3" json:"failover_scheme,omitempty"` -} - -func (x *GetFailoverSchemeResponse) Reset() { - *x = GetFailoverSchemeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetFailoverSchemeResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetFailoverSchemeResponse) ProtoMessage() {} - -func (x *GetFailoverSchemeResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetFailoverSchemeResponse.ProtoReflect.Descriptor instead. -func (*GetFailoverSchemeResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_rawDescGZIP(), []int{2} -} - -func (x *GetFailoverSchemeResponse) GetFailoverScheme() *FailoverScheme { - if x != nil { - return x.FailoverScheme - } - return nil -} - -type GetFailoverSchemeYamlRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FailoverSchemeRef *v1.ObjectRef `protobuf:"bytes,1,opt,name=failover_scheme_ref,json=failoverSchemeRef,proto3" json:"failover_scheme_ref,omitempty"` -} - -func (x *GetFailoverSchemeYamlRequest) Reset() { - *x = GetFailoverSchemeYamlRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetFailoverSchemeYamlRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetFailoverSchemeYamlRequest) ProtoMessage() {} - -func (x *GetFailoverSchemeYamlRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetFailoverSchemeYamlRequest.ProtoReflect.Descriptor instead. -func (*GetFailoverSchemeYamlRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_rawDescGZIP(), []int{3} -} - -func (x *GetFailoverSchemeYamlRequest) GetFailoverSchemeRef() *v1.ObjectRef { - if x != nil { - return x.FailoverSchemeRef - } - return nil -} - -type GetFailoverSchemeYamlResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - YamlData *ResourceYaml `protobuf:"bytes,1,opt,name=yaml_data,json=yamlData,proto3" json:"yaml_data,omitempty"` -} - -func (x *GetFailoverSchemeYamlResponse) Reset() { - *x = GetFailoverSchemeYamlResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetFailoverSchemeYamlResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetFailoverSchemeYamlResponse) ProtoMessage() {} - -func (x *GetFailoverSchemeYamlResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetFailoverSchemeYamlResponse.ProtoReflect.Descriptor instead. -func (*GetFailoverSchemeYamlResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_rawDescGZIP(), []int{4} -} - -func (x *GetFailoverSchemeYamlResponse) GetYamlData() *ResourceYaml { - if x != nil { - return x.YamlData - } - return nil -} - -var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto protoreflect.FileDescriptor - -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_rawDesc = []byte{ - 0x0a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, - 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x66, 0x65, - 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, - 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x3f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, - 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, - 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6b, 0x76, 0x32, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb9, 0x01, 0x0a, 0x0e, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, - 0x65, 0x72, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x65, 0x64, - 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x33, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x61, - 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x53, 0x70, 0x65, 0x63, - 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x22, 0x62, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, - 0x0c, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x0b, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x52, 0x65, 0x66, 0x22, 0x65, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x46, 0x61, 0x69, 0x6c, - 0x6f, 0x76, 0x65, 0x72, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x65, - 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x61, - 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x52, 0x0e, 0x66, 0x61, - 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x22, 0x6c, 0x0a, 0x1c, - 0x47, 0x65, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x13, - 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x5f, - 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, - 0x72, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x52, 0x65, 0x66, 0x22, 0x5b, 0x0a, 0x1d, 0x47, 0x65, - 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x59, - 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x79, - 0x61, 0x6d, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x08, 0x79, - 0x61, 0x6d, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x32, 0xfb, 0x01, 0x0a, 0x11, 0x46, 0x61, 0x69, 0x6c, - 0x6f, 0x76, 0x65, 0x72, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x41, 0x70, 0x69, 0x12, 0x6c, 0x0a, - 0x11, 0x47, 0x65, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x65, 0x12, 0x29, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, - 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x47, 0x65, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x15, 0x47, - 0x65, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, - 0x59, 0x61, 0x6d, 0x6c, 0x12, 0x2d, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, - 0x65, 0x72, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, - 0x72, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x39, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x65, - 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_rawDesc -) - -func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_rawDescGZIP() []byte { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_rawDescData) - }) - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_rawDescData -} - -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_msgTypes = make([]protoimpl.MessageInfo, 5) -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_goTypes = []interface{}{ - (*FailoverScheme)(nil), // 0: fed.rpc.solo.io.FailoverScheme - (*GetFailoverSchemeRequest)(nil), // 1: fed.rpc.solo.io.GetFailoverSchemeRequest - (*GetFailoverSchemeResponse)(nil), // 2: fed.rpc.solo.io.GetFailoverSchemeResponse - (*GetFailoverSchemeYamlRequest)(nil), // 3: fed.rpc.solo.io.GetFailoverSchemeYamlRequest - (*GetFailoverSchemeYamlResponse)(nil), // 4: fed.rpc.solo.io.GetFailoverSchemeYamlResponse - (*ObjectMeta)(nil), // 5: fed.rpc.solo.io.ObjectMeta - (*types.FailoverSchemeSpec)(nil), // 6: fed.solo.io.FailoverSchemeSpec - (*types.FailoverSchemeStatus)(nil), // 7: fed.solo.io.FailoverSchemeStatus - (*v1.ClusterObjectRef)(nil), // 8: core.skv2.solo.io.ClusterObjectRef - (*v1.ObjectRef)(nil), // 9: core.skv2.solo.io.ObjectRef - (*ResourceYaml)(nil), // 10: fed.rpc.solo.io.ResourceYaml -} -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_depIdxs = []int32{ - 5, // 0: fed.rpc.solo.io.FailoverScheme.metadata:type_name -> fed.rpc.solo.io.ObjectMeta - 6, // 1: fed.rpc.solo.io.FailoverScheme.spec:type_name -> fed.solo.io.FailoverSchemeSpec - 7, // 2: fed.rpc.solo.io.FailoverScheme.status:type_name -> fed.solo.io.FailoverSchemeStatus - 8, // 3: fed.rpc.solo.io.GetFailoverSchemeRequest.upstream_ref:type_name -> core.skv2.solo.io.ClusterObjectRef - 0, // 4: fed.rpc.solo.io.GetFailoverSchemeResponse.failover_scheme:type_name -> fed.rpc.solo.io.FailoverScheme - 9, // 5: fed.rpc.solo.io.GetFailoverSchemeYamlRequest.failover_scheme_ref:type_name -> core.skv2.solo.io.ObjectRef - 10, // 6: fed.rpc.solo.io.GetFailoverSchemeYamlResponse.yaml_data:type_name -> fed.rpc.solo.io.ResourceYaml - 1, // 7: fed.rpc.solo.io.FailoverSchemeApi.GetFailoverScheme:input_type -> fed.rpc.solo.io.GetFailoverSchemeRequest - 3, // 8: fed.rpc.solo.io.FailoverSchemeApi.GetFailoverSchemeYaml:input_type -> fed.rpc.solo.io.GetFailoverSchemeYamlRequest - 2, // 9: fed.rpc.solo.io.FailoverSchemeApi.GetFailoverScheme:output_type -> fed.rpc.solo.io.GetFailoverSchemeResponse - 4, // 10: fed.rpc.solo.io.FailoverSchemeApi.GetFailoverSchemeYaml:output_type -> fed.rpc.solo.io.GetFailoverSchemeYamlResponse - 9, // [9:11] is the sub-list for method output_type - 7, // [7:9] is the sub-list for method input_type - 7, // [7:7] is the sub-list for extension type_name - 7, // [7:7] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name -} - -func init() { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_init() } -func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_init() { - if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto != nil { - return - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_init() - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FailoverScheme); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFailoverSchemeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFailoverSchemeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFailoverSchemeYamlRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFailoverSchemeYamlResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_rawDesc, - NumEnums: 0, - NumMessages: 5, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_goTypes, - DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_depIdxs, - MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_msgTypes, - }.Build() - File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_rawDesc = nil - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_goTypes = nil - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_failover_scheme_proto_depIdxs = nil -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConnInterface - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion6 - -// FailoverSchemeApiClient is the client API for FailoverSchemeApi service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type FailoverSchemeApiClient interface { - GetFailoverScheme(ctx context.Context, in *GetFailoverSchemeRequest, opts ...grpc.CallOption) (*GetFailoverSchemeResponse, error) - GetFailoverSchemeYaml(ctx context.Context, in *GetFailoverSchemeYamlRequest, opts ...grpc.CallOption) (*GetFailoverSchemeYamlResponse, error) -} - -type failoverSchemeApiClient struct { - cc grpc.ClientConnInterface -} - -func NewFailoverSchemeApiClient(cc grpc.ClientConnInterface) FailoverSchemeApiClient { - return &failoverSchemeApiClient{cc} -} - -func (c *failoverSchemeApiClient) GetFailoverScheme(ctx context.Context, in *GetFailoverSchemeRequest, opts ...grpc.CallOption) (*GetFailoverSchemeResponse, error) { - out := new(GetFailoverSchemeResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.FailoverSchemeApi/GetFailoverScheme", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *failoverSchemeApiClient) GetFailoverSchemeYaml(ctx context.Context, in *GetFailoverSchemeYamlRequest, opts ...grpc.CallOption) (*GetFailoverSchemeYamlResponse, error) { - out := new(GetFailoverSchemeYamlResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.FailoverSchemeApi/GetFailoverSchemeYaml", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// FailoverSchemeApiServer is the server API for FailoverSchemeApi service. -type FailoverSchemeApiServer interface { - GetFailoverScheme(context.Context, *GetFailoverSchemeRequest) (*GetFailoverSchemeResponse, error) - GetFailoverSchemeYaml(context.Context, *GetFailoverSchemeYamlRequest) (*GetFailoverSchemeYamlResponse, error) -} - -// UnimplementedFailoverSchemeApiServer can be embedded to have forward compatible implementations. -type UnimplementedFailoverSchemeApiServer struct { -} - -func (*UnimplementedFailoverSchemeApiServer) GetFailoverScheme(context.Context, *GetFailoverSchemeRequest) (*GetFailoverSchemeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetFailoverScheme not implemented") -} -func (*UnimplementedFailoverSchemeApiServer) GetFailoverSchemeYaml(context.Context, *GetFailoverSchemeYamlRequest) (*GetFailoverSchemeYamlResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetFailoverSchemeYaml not implemented") -} - -func RegisterFailoverSchemeApiServer(s *grpc.Server, srv FailoverSchemeApiServer) { - s.RegisterService(&_FailoverSchemeApi_serviceDesc, srv) -} - -func _FailoverSchemeApi_GetFailoverScheme_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetFailoverSchemeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FailoverSchemeApiServer).GetFailoverScheme(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.FailoverSchemeApi/GetFailoverScheme", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FailoverSchemeApiServer).GetFailoverScheme(ctx, req.(*GetFailoverSchemeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _FailoverSchemeApi_GetFailoverSchemeYaml_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetFailoverSchemeYamlRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FailoverSchemeApiServer).GetFailoverSchemeYaml(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.FailoverSchemeApi/GetFailoverSchemeYaml", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FailoverSchemeApiServer).GetFailoverSchemeYaml(ctx, req.(*GetFailoverSchemeYamlRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _FailoverSchemeApi_serviceDesc = grpc.ServiceDesc{ - ServiceName: "fed.rpc.solo.io.FailoverSchemeApi", - HandlerType: (*FailoverSchemeApiServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetFailoverScheme", - Handler: _FailoverSchemeApi_GetFailoverScheme_Handler, - }, - { - MethodName: "GetFailoverSchemeYaml", - Handler: _FailoverSchemeApi_GetFailoverSchemeYaml_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/failover_scheme.proto", -} diff --git a/pkg/api/fed.rpc/v1/failover_scheme.pb.hash.go b/pkg/api/fed.rpc/v1/failover_scheme.pb.hash.go deleted file mode 100644 index 2a5931684..000000000 --- a/pkg/api/fed.rpc/v1/failover_scheme.pb.hash.go +++ /dev/null @@ -1,204 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/failover_scheme.proto - -package v1 - -import ( - "encoding/binary" - "errors" - "fmt" - "hash" - "hash/fnv" - - "github.com/mitchellh/hashstructure" - safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = new(hash.Hash64) - _ = fnv.New64 - _ = hashstructure.Hash - _ = new(safe_hasher.SafeHasher) -) - -// Hash function -func (m *FailoverScheme) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.FailoverScheme")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetStatus()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetStatus(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetFailoverSchemeRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetFailoverSchemeRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetUpstreamRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetUpstreamRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetFailoverSchemeResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetFailoverSchemeResponse")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetFailoverScheme()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetFailoverScheme(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetFailoverSchemeYamlRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetFailoverSchemeYamlRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetFailoverSchemeRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetFailoverSchemeRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetFailoverSchemeYamlResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetFailoverSchemeYamlResponse")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetYamlData()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetYamlData(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} diff --git a/pkg/api/fed.rpc/v1/federated_enterprise_gloo_resources.pb.equal.go b/pkg/api/fed.rpc/v1/federated_enterprise_gloo_resources.pb.equal.go deleted file mode 100644 index ec03ea5c4..000000000 --- a/pkg/api/fed.rpc/v1/federated_enterprise_gloo_resources.pb.equal.go +++ /dev/null @@ -1,213 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/federated_enterprise_gloo_resources.proto - -package v1 - -import ( - "bytes" - "encoding/binary" - "errors" - "fmt" - "strings" - - "github.com/golang/protobuf/proto" - equality "github.com/solo-io/protoc-gen-ext/pkg/equality" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = bytes.Compare - _ = strings.Compare - _ = equality.Equalizer(nil) - _ = proto.Message(nil) -) - -// Equal function -func (m *FederatedAuthConfig) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*FederatedAuthConfig) - if !ok { - that2, ok := that.(FederatedAuthConfig) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadata()) { - return false - } - } else { - if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { - return false - } - } - - if h, ok := interface{}(m.GetSpec()).(equality.Equalizer); ok { - if !h.Equal(target.GetSpec()) { - return false - } - } else { - if !proto.Equal(m.GetSpec(), target.GetSpec()) { - return false - } - } - - if h, ok := interface{}(m.GetStatus()).(equality.Equalizer); ok { - if !h.Equal(target.GetStatus()) { - return false - } - } else { - if !proto.Equal(m.GetStatus(), target.GetStatus()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListFederatedAuthConfigsRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListFederatedAuthConfigsRequest) - if !ok { - that2, ok := that.(ListFederatedAuthConfigsRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - return true -} - -// Equal function -func (m *ListFederatedAuthConfigsResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListFederatedAuthConfigsResponse) - if !ok { - that2, ok := that.(ListFederatedAuthConfigsResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if len(m.GetFederatedAuthConfigs()) != len(target.GetFederatedAuthConfigs()) { - return false - } - for idx, v := range m.GetFederatedAuthConfigs() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetFederatedAuthConfigs()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetFederatedAuthConfigs()[idx]) { - return false - } - } - - } - - return true -} - -// Equal function -func (m *GetFederatedAuthConfigYamlRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetFederatedAuthConfigYamlRequest) - if !ok { - that2, ok := that.(GetFederatedAuthConfigYamlRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetFederatedAuthConfigRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetFederatedAuthConfigRef()) { - return false - } - } else { - if !proto.Equal(m.GetFederatedAuthConfigRef(), target.GetFederatedAuthConfigRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *GetFederatedAuthConfigYamlResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetFederatedAuthConfigYamlResponse) - if !ok { - that2, ok := that.(GetFederatedAuthConfigYamlResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetYamlData()).(equality.Equalizer); ok { - if !h.Equal(target.GetYamlData()) { - return false - } - } else { - if !proto.Equal(m.GetYamlData(), target.GetYamlData()) { - return false - } - } - - return true -} diff --git a/pkg/api/fed.rpc/v1/federated_enterprise_gloo_resources.pb.go b/pkg/api/fed.rpc/v1/federated_enterprise_gloo_resources.pb.go deleted file mode 100644 index 7adbf12ea..000000000 --- a/pkg/api/fed.rpc/v1/federated_enterprise_gloo_resources.pb.go +++ /dev/null @@ -1,616 +0,0 @@ -// Code generated by skv2. DO NOT EDIT. - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.6.1 -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/federated_enterprise_gloo_resources.proto - -package v1 - -import ( - context "context" - reflect "reflect" - sync "sync" - - proto "github.com/golang/protobuf/proto" - _ "github.com/solo-io/protoc-gen-ext/extproto" - v1 "github.com/solo-io/skv2/pkg/api/core.skv2.solo.io/v1" - types "github.com/solo-io/solo-apis/pkg/api/fed.enterprise.gloo.solo.io/v1/types" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -type FederatedAuthConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *ObjectMeta `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - Spec *types.FederatedAuthConfigSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` - Status *types.FederatedAuthConfigStatus `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` -} - -func (x *FederatedAuthConfig) Reset() { - *x = FederatedAuthConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FederatedAuthConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FederatedAuthConfig) ProtoMessage() {} - -func (x *FederatedAuthConfig) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FederatedAuthConfig.ProtoReflect.Descriptor instead. -func (*FederatedAuthConfig) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_rawDescGZIP(), []int{0} -} - -func (x *FederatedAuthConfig) GetMetadata() *ObjectMeta { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *FederatedAuthConfig) GetSpec() *types.FederatedAuthConfigSpec { - if x != nil { - return x.Spec - } - return nil -} - -func (x *FederatedAuthConfig) GetStatus() *types.FederatedAuthConfigStatus { - if x != nil { - return x.Status - } - return nil -} - -type ListFederatedAuthConfigsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *ListFederatedAuthConfigsRequest) Reset() { - *x = ListFederatedAuthConfigsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListFederatedAuthConfigsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListFederatedAuthConfigsRequest) ProtoMessage() {} - -func (x *ListFederatedAuthConfigsRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListFederatedAuthConfigsRequest.ProtoReflect.Descriptor instead. -func (*ListFederatedAuthConfigsRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_rawDescGZIP(), []int{1} -} - -type ListFederatedAuthConfigsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedAuthConfigs []*FederatedAuthConfig `protobuf:"bytes,1,rep,name=federated_auth_configs,json=federatedAuthConfigs,proto3" json:"federated_auth_configs,omitempty"` -} - -func (x *ListFederatedAuthConfigsResponse) Reset() { - *x = ListFederatedAuthConfigsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListFederatedAuthConfigsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListFederatedAuthConfigsResponse) ProtoMessage() {} - -func (x *ListFederatedAuthConfigsResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListFederatedAuthConfigsResponse.ProtoReflect.Descriptor instead. -func (*ListFederatedAuthConfigsResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_rawDescGZIP(), []int{2} -} - -func (x *ListFederatedAuthConfigsResponse) GetFederatedAuthConfigs() []*FederatedAuthConfig { - if x != nil { - return x.FederatedAuthConfigs - } - return nil -} - -type GetFederatedAuthConfigYamlRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedAuthConfigRef *v1.ObjectRef `protobuf:"bytes,1,opt,name=federated_auth_config_ref,json=federatedAuthConfigRef,proto3" json:"federated_auth_config_ref,omitempty"` -} - -func (x *GetFederatedAuthConfigYamlRequest) Reset() { - *x = GetFederatedAuthConfigYamlRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetFederatedAuthConfigYamlRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetFederatedAuthConfigYamlRequest) ProtoMessage() {} - -func (x *GetFederatedAuthConfigYamlRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetFederatedAuthConfigYamlRequest.ProtoReflect.Descriptor instead. -func (*GetFederatedAuthConfigYamlRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_rawDescGZIP(), []int{3} -} - -func (x *GetFederatedAuthConfigYamlRequest) GetFederatedAuthConfigRef() *v1.ObjectRef { - if x != nil { - return x.FederatedAuthConfigRef - } - return nil -} - -type GetFederatedAuthConfigYamlResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - YamlData *ResourceYaml `protobuf:"bytes,1,opt,name=yaml_data,json=yamlData,proto3" json:"yaml_data,omitempty"` -} - -func (x *GetFederatedAuthConfigYamlResponse) Reset() { - *x = GetFederatedAuthConfigYamlResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetFederatedAuthConfigYamlResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetFederatedAuthConfigYamlResponse) ProtoMessage() {} - -func (x *GetFederatedAuthConfigYamlResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetFederatedAuthConfigYamlResponse.ProtoReflect.Descriptor instead. -func (*GetFederatedAuthConfigYamlResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_rawDescGZIP(), []int{4} -} - -func (x *GetFederatedAuthConfigYamlResponse) GetYamlData() *ResourceYaml { - if x != nil { - return x.YamlData - } - return nil -} - -var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto protoreflect.FileDescriptor - -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_rawDesc = []byte{ - 0x0a, 0x5e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, - 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x5f, 0x67, 0x6c, 0x6f, 0x6f, - 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x12, 0x0f, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x52, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, - 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, - 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6b, - 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, - 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0x2f, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe8, 0x01, 0x0a, - 0x13, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, - 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x48, 0x0a, - 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x66, 0x65, - 0x64, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, - 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x4e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x21, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x7e, 0x0a, 0x20, 0x4c, 0x69, - 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, - 0x0a, 0x16, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x75, 0x74, 0x68, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, - 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x14, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x22, 0x7c, 0x0a, 0x21, 0x47, 0x65, - 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x57, 0x0a, 0x19, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x75, 0x74, - 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, - 0x52, 0x16, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x66, 0x22, 0x60, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, - 0x0a, 0x09, 0x79, 0x61, 0x6d, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x59, 0x61, 0x6d, 0x6c, - 0x52, 0x08, 0x79, 0x61, 0x6d, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x32, 0xb2, 0x02, 0x0a, 0x22, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, - 0x73, 0x65, 0x47, 0x6c, 0x6f, 0x6f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x70, - 0x69, 0x12, 0x81, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x30, - 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x75, - 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x31, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x59, 0x61, 0x6d, 0x6c, 0x12, 0x32, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x59, 0x61, 0x6d, - 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, - 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, - 0x39, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, - 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2f, - 0x76, 0x31, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} - -var ( - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_rawDesc -) - -func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_rawDescGZIP() []byte { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_rawDescData) - }) - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_rawDescData -} - -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_msgTypes = make([]protoimpl.MessageInfo, 5) -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_goTypes = []interface{}{ - (*FederatedAuthConfig)(nil), // 0: fed.rpc.solo.io.FederatedAuthConfig - (*ListFederatedAuthConfigsRequest)(nil), // 1: fed.rpc.solo.io.ListFederatedAuthConfigsRequest - (*ListFederatedAuthConfigsResponse)(nil), // 2: fed.rpc.solo.io.ListFederatedAuthConfigsResponse - (*GetFederatedAuthConfigYamlRequest)(nil), // 3: fed.rpc.solo.io.GetFederatedAuthConfigYamlRequest - (*GetFederatedAuthConfigYamlResponse)(nil), // 4: fed.rpc.solo.io.GetFederatedAuthConfigYamlResponse - (*ObjectMeta)(nil), // 5: fed.rpc.solo.io.ObjectMeta - (*types.FederatedAuthConfigSpec)(nil), // 6: fed.enterprise.gloo.solo.io.FederatedAuthConfigSpec - (*types.FederatedAuthConfigStatus)(nil), // 7: fed.enterprise.gloo.solo.io.FederatedAuthConfigStatus - (*v1.ObjectRef)(nil), // 8: core.skv2.solo.io.ObjectRef - (*ResourceYaml)(nil), // 9: fed.rpc.solo.io.ResourceYaml -} -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_depIdxs = []int32{ - 5, // 0: fed.rpc.solo.io.FederatedAuthConfig.metadata:type_name -> fed.rpc.solo.io.ObjectMeta - 6, // 1: fed.rpc.solo.io.FederatedAuthConfig.spec:type_name -> fed.enterprise.gloo.solo.io.FederatedAuthConfigSpec - 7, // 2: fed.rpc.solo.io.FederatedAuthConfig.status:type_name -> fed.enterprise.gloo.solo.io.FederatedAuthConfigStatus - 0, // 3: fed.rpc.solo.io.ListFederatedAuthConfigsResponse.federated_auth_configs:type_name -> fed.rpc.solo.io.FederatedAuthConfig - 8, // 4: fed.rpc.solo.io.GetFederatedAuthConfigYamlRequest.federated_auth_config_ref:type_name -> core.skv2.solo.io.ObjectRef - 9, // 5: fed.rpc.solo.io.GetFederatedAuthConfigYamlResponse.yaml_data:type_name -> fed.rpc.solo.io.ResourceYaml - 1, // 6: fed.rpc.solo.io.FederatedEnterpriseGlooResourceApi.ListFederatedAuthConfigs:input_type -> fed.rpc.solo.io.ListFederatedAuthConfigsRequest - 3, // 7: fed.rpc.solo.io.FederatedEnterpriseGlooResourceApi.GetFederatedAuthConfigYaml:input_type -> fed.rpc.solo.io.GetFederatedAuthConfigYamlRequest - 2, // 8: fed.rpc.solo.io.FederatedEnterpriseGlooResourceApi.ListFederatedAuthConfigs:output_type -> fed.rpc.solo.io.ListFederatedAuthConfigsResponse - 4, // 9: fed.rpc.solo.io.FederatedEnterpriseGlooResourceApi.GetFederatedAuthConfigYaml:output_type -> fed.rpc.solo.io.GetFederatedAuthConfigYamlResponse - 8, // [8:10] is the sub-list for method output_type - 6, // [6:8] is the sub-list for method input_type - 6, // [6:6] is the sub-list for extension type_name - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name -} - -func init() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_init() -} -func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_init() { - if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto != nil { - return - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_init() - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedAuthConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListFederatedAuthConfigsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListFederatedAuthConfigsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFederatedAuthConfigYamlRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFederatedAuthConfigYamlResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_rawDesc, - NumEnums: 0, - NumMessages: 5, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_goTypes, - DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_depIdxs, - MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_msgTypes, - }.Build() - File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_rawDesc = nil - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_goTypes = nil - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_enterprise_gloo_resources_proto_depIdxs = nil -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConnInterface - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion6 - -// FederatedEnterpriseGlooResourceApiClient is the client API for FederatedEnterpriseGlooResourceApi service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type FederatedEnterpriseGlooResourceApiClient interface { - ListFederatedAuthConfigs(ctx context.Context, in *ListFederatedAuthConfigsRequest, opts ...grpc.CallOption) (*ListFederatedAuthConfigsResponse, error) - GetFederatedAuthConfigYaml(ctx context.Context, in *GetFederatedAuthConfigYamlRequest, opts ...grpc.CallOption) (*GetFederatedAuthConfigYamlResponse, error) -} - -type federatedEnterpriseGlooResourceApiClient struct { - cc grpc.ClientConnInterface -} - -func NewFederatedEnterpriseGlooResourceApiClient(cc grpc.ClientConnInterface) FederatedEnterpriseGlooResourceApiClient { - return &federatedEnterpriseGlooResourceApiClient{cc} -} - -func (c *federatedEnterpriseGlooResourceApiClient) ListFederatedAuthConfigs(ctx context.Context, in *ListFederatedAuthConfigsRequest, opts ...grpc.CallOption) (*ListFederatedAuthConfigsResponse, error) { - out := new(ListFederatedAuthConfigsResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.FederatedEnterpriseGlooResourceApi/ListFederatedAuthConfigs", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *federatedEnterpriseGlooResourceApiClient) GetFederatedAuthConfigYaml(ctx context.Context, in *GetFederatedAuthConfigYamlRequest, opts ...grpc.CallOption) (*GetFederatedAuthConfigYamlResponse, error) { - out := new(GetFederatedAuthConfigYamlResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.FederatedEnterpriseGlooResourceApi/GetFederatedAuthConfigYaml", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// FederatedEnterpriseGlooResourceApiServer is the server API for FederatedEnterpriseGlooResourceApi service. -type FederatedEnterpriseGlooResourceApiServer interface { - ListFederatedAuthConfigs(context.Context, *ListFederatedAuthConfigsRequest) (*ListFederatedAuthConfigsResponse, error) - GetFederatedAuthConfigYaml(context.Context, *GetFederatedAuthConfigYamlRequest) (*GetFederatedAuthConfigYamlResponse, error) -} - -// UnimplementedFederatedEnterpriseGlooResourceApiServer can be embedded to have forward compatible implementations. -type UnimplementedFederatedEnterpriseGlooResourceApiServer struct { -} - -func (*UnimplementedFederatedEnterpriseGlooResourceApiServer) ListFederatedAuthConfigs(context.Context, *ListFederatedAuthConfigsRequest) (*ListFederatedAuthConfigsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListFederatedAuthConfigs not implemented") -} -func (*UnimplementedFederatedEnterpriseGlooResourceApiServer) GetFederatedAuthConfigYaml(context.Context, *GetFederatedAuthConfigYamlRequest) (*GetFederatedAuthConfigYamlResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetFederatedAuthConfigYaml not implemented") -} - -func RegisterFederatedEnterpriseGlooResourceApiServer(s *grpc.Server, srv FederatedEnterpriseGlooResourceApiServer) { - s.RegisterService(&_FederatedEnterpriseGlooResourceApi_serviceDesc, srv) -} - -func _FederatedEnterpriseGlooResourceApi_ListFederatedAuthConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListFederatedAuthConfigsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FederatedEnterpriseGlooResourceApiServer).ListFederatedAuthConfigs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.FederatedEnterpriseGlooResourceApi/ListFederatedAuthConfigs", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FederatedEnterpriseGlooResourceApiServer).ListFederatedAuthConfigs(ctx, req.(*ListFederatedAuthConfigsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _FederatedEnterpriseGlooResourceApi_GetFederatedAuthConfigYaml_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetFederatedAuthConfigYamlRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FederatedEnterpriseGlooResourceApiServer).GetFederatedAuthConfigYaml(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.FederatedEnterpriseGlooResourceApi/GetFederatedAuthConfigYaml", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FederatedEnterpriseGlooResourceApiServer).GetFederatedAuthConfigYaml(ctx, req.(*GetFederatedAuthConfigYamlRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _FederatedEnterpriseGlooResourceApi_serviceDesc = grpc.ServiceDesc{ - ServiceName: "fed.rpc.solo.io.FederatedEnterpriseGlooResourceApi", - HandlerType: (*FederatedEnterpriseGlooResourceApiServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListFederatedAuthConfigs", - Handler: _FederatedEnterpriseGlooResourceApi_ListFederatedAuthConfigs_Handler, - }, - { - MethodName: "GetFederatedAuthConfigYaml", - Handler: _FederatedEnterpriseGlooResourceApi_GetFederatedAuthConfigYaml_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/federated_enterprise_gloo_resources.proto", -} diff --git a/pkg/api/fed.rpc/v1/federated_enterprise_gloo_resources.pb.hash.go b/pkg/api/fed.rpc/v1/federated_enterprise_gloo_resources.pb.hash.go deleted file mode 100644 index 2a6fa3a2c..000000000 --- a/pkg/api/fed.rpc/v1/federated_enterprise_gloo_resources.pb.hash.go +++ /dev/null @@ -1,194 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/federated_enterprise_gloo_resources.proto - -package v1 - -import ( - "encoding/binary" - "errors" - "fmt" - "hash" - "hash/fnv" - - "github.com/mitchellh/hashstructure" - safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = new(hash.Hash64) - _ = fnv.New64 - _ = hashstructure.Hash - _ = new(safe_hasher.SafeHasher) -) - -// Hash function -func (m *FederatedAuthConfig) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.FederatedAuthConfig")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetStatus()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetStatus(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListFederatedAuthConfigsRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListFederatedAuthConfigsRequest")); err != nil { - return 0, err - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListFederatedAuthConfigsResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListFederatedAuthConfigsResponse")); err != nil { - return 0, err - } - - for _, v := range m.GetFederatedAuthConfigs() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetFederatedAuthConfigYamlRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetFederatedAuthConfigYamlRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetFederatedAuthConfigRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetFederatedAuthConfigRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetFederatedAuthConfigYamlResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetFederatedAuthConfigYamlResponse")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetYamlData()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetYamlData(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} diff --git a/pkg/api/fed.rpc/v1/federated_gateway_resources.pb.equal.go b/pkg/api/fed.rpc/v1/federated_gateway_resources.pb.equal.go deleted file mode 100644 index 6d1d3c3f5..000000000 --- a/pkg/api/fed.rpc/v1/federated_gateway_resources.pb.equal.go +++ /dev/null @@ -1,587 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/federated_gateway_resources.proto - -package v1 - -import ( - "bytes" - "encoding/binary" - "errors" - "fmt" - "strings" - - "github.com/golang/protobuf/proto" - equality "github.com/solo-io/protoc-gen-ext/pkg/equality" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = bytes.Compare - _ = strings.Compare - _ = equality.Equalizer(nil) - _ = proto.Message(nil) -) - -// Equal function -func (m *FederatedGateway) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*FederatedGateway) - if !ok { - that2, ok := that.(FederatedGateway) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadata()) { - return false - } - } else { - if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { - return false - } - } - - if h, ok := interface{}(m.GetSpec()).(equality.Equalizer); ok { - if !h.Equal(target.GetSpec()) { - return false - } - } else { - if !proto.Equal(m.GetSpec(), target.GetSpec()) { - return false - } - } - - if h, ok := interface{}(m.GetStatus()).(equality.Equalizer); ok { - if !h.Equal(target.GetStatus()) { - return false - } - } else { - if !proto.Equal(m.GetStatus(), target.GetStatus()) { - return false - } - } - - return true -} - -// Equal function -func (m *FederatedVirtualService) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*FederatedVirtualService) - if !ok { - that2, ok := that.(FederatedVirtualService) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadata()) { - return false - } - } else { - if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { - return false - } - } - - if h, ok := interface{}(m.GetSpec()).(equality.Equalizer); ok { - if !h.Equal(target.GetSpec()) { - return false - } - } else { - if !proto.Equal(m.GetSpec(), target.GetSpec()) { - return false - } - } - - if h, ok := interface{}(m.GetStatus()).(equality.Equalizer); ok { - if !h.Equal(target.GetStatus()) { - return false - } - } else { - if !proto.Equal(m.GetStatus(), target.GetStatus()) { - return false - } - } - - return true -} - -// Equal function -func (m *FederatedRouteTable) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*FederatedRouteTable) - if !ok { - that2, ok := that.(FederatedRouteTable) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadata()) { - return false - } - } else { - if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { - return false - } - } - - if h, ok := interface{}(m.GetSpec()).(equality.Equalizer); ok { - if !h.Equal(target.GetSpec()) { - return false - } - } else { - if !proto.Equal(m.GetSpec(), target.GetSpec()) { - return false - } - } - - if h, ok := interface{}(m.GetStatus()).(equality.Equalizer); ok { - if !h.Equal(target.GetStatus()) { - return false - } - } else { - if !proto.Equal(m.GetStatus(), target.GetStatus()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListFederatedGatewaysRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListFederatedGatewaysRequest) - if !ok { - that2, ok := that.(ListFederatedGatewaysRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - return true -} - -// Equal function -func (m *ListFederatedGatewaysResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListFederatedGatewaysResponse) - if !ok { - that2, ok := that.(ListFederatedGatewaysResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if len(m.GetFederatedGateways()) != len(target.GetFederatedGateways()) { - return false - } - for idx, v := range m.GetFederatedGateways() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetFederatedGateways()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetFederatedGateways()[idx]) { - return false - } - } - - } - - return true -} - -// Equal function -func (m *GetFederatedGatewayYamlRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetFederatedGatewayYamlRequest) - if !ok { - that2, ok := that.(GetFederatedGatewayYamlRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetFederatedGatewayRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetFederatedGatewayRef()) { - return false - } - } else { - if !proto.Equal(m.GetFederatedGatewayRef(), target.GetFederatedGatewayRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *GetFederatedGatewayYamlResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetFederatedGatewayYamlResponse) - if !ok { - that2, ok := that.(GetFederatedGatewayYamlResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetYamlData()).(equality.Equalizer); ok { - if !h.Equal(target.GetYamlData()) { - return false - } - } else { - if !proto.Equal(m.GetYamlData(), target.GetYamlData()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListFederatedVirtualServicesRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListFederatedVirtualServicesRequest) - if !ok { - that2, ok := that.(ListFederatedVirtualServicesRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - return true -} - -// Equal function -func (m *ListFederatedVirtualServicesResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListFederatedVirtualServicesResponse) - if !ok { - that2, ok := that.(ListFederatedVirtualServicesResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if len(m.GetFederatedVirtualServices()) != len(target.GetFederatedVirtualServices()) { - return false - } - for idx, v := range m.GetFederatedVirtualServices() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetFederatedVirtualServices()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetFederatedVirtualServices()[idx]) { - return false - } - } - - } - - return true -} - -// Equal function -func (m *GetFederatedVirtualServiceYamlRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetFederatedVirtualServiceYamlRequest) - if !ok { - that2, ok := that.(GetFederatedVirtualServiceYamlRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetFederatedVirtualServiceRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetFederatedVirtualServiceRef()) { - return false - } - } else { - if !proto.Equal(m.GetFederatedVirtualServiceRef(), target.GetFederatedVirtualServiceRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *GetFederatedVirtualServiceYamlResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetFederatedVirtualServiceYamlResponse) - if !ok { - that2, ok := that.(GetFederatedVirtualServiceYamlResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetYamlData()).(equality.Equalizer); ok { - if !h.Equal(target.GetYamlData()) { - return false - } - } else { - if !proto.Equal(m.GetYamlData(), target.GetYamlData()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListFederatedRouteTablesRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListFederatedRouteTablesRequest) - if !ok { - that2, ok := that.(ListFederatedRouteTablesRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - return true -} - -// Equal function -func (m *ListFederatedRouteTablesResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListFederatedRouteTablesResponse) - if !ok { - that2, ok := that.(ListFederatedRouteTablesResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if len(m.GetFederatedRouteTables()) != len(target.GetFederatedRouteTables()) { - return false - } - for idx, v := range m.GetFederatedRouteTables() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetFederatedRouteTables()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetFederatedRouteTables()[idx]) { - return false - } - } - - } - - return true -} - -// Equal function -func (m *GetFederatedRouteTableYamlRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetFederatedRouteTableYamlRequest) - if !ok { - that2, ok := that.(GetFederatedRouteTableYamlRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetFederatedRouteTableRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetFederatedRouteTableRef()) { - return false - } - } else { - if !proto.Equal(m.GetFederatedRouteTableRef(), target.GetFederatedRouteTableRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *GetFederatedRouteTableYamlResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetFederatedRouteTableYamlResponse) - if !ok { - that2, ok := that.(GetFederatedRouteTableYamlResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetYamlData()).(equality.Equalizer); ok { - if !h.Equal(target.GetYamlData()) { - return false - } - } else { - if !proto.Equal(m.GetYamlData(), target.GetYamlData()) { - return false - } - } - - return true -} diff --git a/pkg/api/fed.rpc/v1/federated_gateway_resources.pb.go b/pkg/api/fed.rpc/v1/federated_gateway_resources.pb.go deleted file mode 100644 index ae73ac323..000000000 --- a/pkg/api/fed.rpc/v1/federated_gateway_resources.pb.go +++ /dev/null @@ -1,1515 +0,0 @@ -// Code generated by skv2. DO NOT EDIT. - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.6.1 -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/federated_gateway_resources.proto - -package v1 - -import ( - context "context" - reflect "reflect" - sync "sync" - - proto "github.com/golang/protobuf/proto" - _ "github.com/solo-io/protoc-gen-ext/extproto" - v1 "github.com/solo-io/skv2/pkg/api/core.skv2.solo.io/v1" - types "github.com/solo-io/solo-apis/pkg/api/fed.gateway.solo.io/v1/types" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -type FederatedGateway struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *ObjectMeta `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - Spec *types.FederatedGatewaySpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` - Status *types.FederatedGatewayStatus `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` -} - -func (x *FederatedGateway) Reset() { - *x = FederatedGateway{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FederatedGateway) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FederatedGateway) ProtoMessage() {} - -func (x *FederatedGateway) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FederatedGateway.ProtoReflect.Descriptor instead. -func (*FederatedGateway) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDescGZIP(), []int{0} -} - -func (x *FederatedGateway) GetMetadata() *ObjectMeta { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *FederatedGateway) GetSpec() *types.FederatedGatewaySpec { - if x != nil { - return x.Spec - } - return nil -} - -func (x *FederatedGateway) GetStatus() *types.FederatedGatewayStatus { - if x != nil { - return x.Status - } - return nil -} - -type FederatedVirtualService struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *ObjectMeta `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - Spec *types.FederatedVirtualServiceSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` - Status *types.FederatedVirtualServiceStatus `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` -} - -func (x *FederatedVirtualService) Reset() { - *x = FederatedVirtualService{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FederatedVirtualService) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FederatedVirtualService) ProtoMessage() {} - -func (x *FederatedVirtualService) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FederatedVirtualService.ProtoReflect.Descriptor instead. -func (*FederatedVirtualService) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDescGZIP(), []int{1} -} - -func (x *FederatedVirtualService) GetMetadata() *ObjectMeta { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *FederatedVirtualService) GetSpec() *types.FederatedVirtualServiceSpec { - if x != nil { - return x.Spec - } - return nil -} - -func (x *FederatedVirtualService) GetStatus() *types.FederatedVirtualServiceStatus { - if x != nil { - return x.Status - } - return nil -} - -type FederatedRouteTable struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *ObjectMeta `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - Spec *types.FederatedRouteTableSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` - Status *types.FederatedRouteTableStatus `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` -} - -func (x *FederatedRouteTable) Reset() { - *x = FederatedRouteTable{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FederatedRouteTable) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FederatedRouteTable) ProtoMessage() {} - -func (x *FederatedRouteTable) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FederatedRouteTable.ProtoReflect.Descriptor instead. -func (*FederatedRouteTable) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDescGZIP(), []int{2} -} - -func (x *FederatedRouteTable) GetMetadata() *ObjectMeta { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *FederatedRouteTable) GetSpec() *types.FederatedRouteTableSpec { - if x != nil { - return x.Spec - } - return nil -} - -func (x *FederatedRouteTable) GetStatus() *types.FederatedRouteTableStatus { - if x != nil { - return x.Status - } - return nil -} - -type ListFederatedGatewaysRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *ListFederatedGatewaysRequest) Reset() { - *x = ListFederatedGatewaysRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListFederatedGatewaysRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListFederatedGatewaysRequest) ProtoMessage() {} - -func (x *ListFederatedGatewaysRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListFederatedGatewaysRequest.ProtoReflect.Descriptor instead. -func (*ListFederatedGatewaysRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDescGZIP(), []int{3} -} - -type ListFederatedGatewaysResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedGateways []*FederatedGateway `protobuf:"bytes,1,rep,name=federated_gateways,json=federatedGateways,proto3" json:"federated_gateways,omitempty"` -} - -func (x *ListFederatedGatewaysResponse) Reset() { - *x = ListFederatedGatewaysResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListFederatedGatewaysResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListFederatedGatewaysResponse) ProtoMessage() {} - -func (x *ListFederatedGatewaysResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListFederatedGatewaysResponse.ProtoReflect.Descriptor instead. -func (*ListFederatedGatewaysResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDescGZIP(), []int{4} -} - -func (x *ListFederatedGatewaysResponse) GetFederatedGateways() []*FederatedGateway { - if x != nil { - return x.FederatedGateways - } - return nil -} - -type GetFederatedGatewayYamlRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedGatewayRef *v1.ObjectRef `protobuf:"bytes,1,opt,name=federated_gateway_ref,json=federatedGatewayRef,proto3" json:"federated_gateway_ref,omitempty"` -} - -func (x *GetFederatedGatewayYamlRequest) Reset() { - *x = GetFederatedGatewayYamlRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetFederatedGatewayYamlRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetFederatedGatewayYamlRequest) ProtoMessage() {} - -func (x *GetFederatedGatewayYamlRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetFederatedGatewayYamlRequest.ProtoReflect.Descriptor instead. -func (*GetFederatedGatewayYamlRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDescGZIP(), []int{5} -} - -func (x *GetFederatedGatewayYamlRequest) GetFederatedGatewayRef() *v1.ObjectRef { - if x != nil { - return x.FederatedGatewayRef - } - return nil -} - -type GetFederatedGatewayYamlResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - YamlData *ResourceYaml `protobuf:"bytes,1,opt,name=yaml_data,json=yamlData,proto3" json:"yaml_data,omitempty"` -} - -func (x *GetFederatedGatewayYamlResponse) Reset() { - *x = GetFederatedGatewayYamlResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetFederatedGatewayYamlResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetFederatedGatewayYamlResponse) ProtoMessage() {} - -func (x *GetFederatedGatewayYamlResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetFederatedGatewayYamlResponse.ProtoReflect.Descriptor instead. -func (*GetFederatedGatewayYamlResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDescGZIP(), []int{6} -} - -func (x *GetFederatedGatewayYamlResponse) GetYamlData() *ResourceYaml { - if x != nil { - return x.YamlData - } - return nil -} - -type ListFederatedVirtualServicesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *ListFederatedVirtualServicesRequest) Reset() { - *x = ListFederatedVirtualServicesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListFederatedVirtualServicesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListFederatedVirtualServicesRequest) ProtoMessage() {} - -func (x *ListFederatedVirtualServicesRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListFederatedVirtualServicesRequest.ProtoReflect.Descriptor instead. -func (*ListFederatedVirtualServicesRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDescGZIP(), []int{7} -} - -type ListFederatedVirtualServicesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedVirtualServices []*FederatedVirtualService `protobuf:"bytes,1,rep,name=federated_virtual_services,json=federatedVirtualServices,proto3" json:"federated_virtual_services,omitempty"` -} - -func (x *ListFederatedVirtualServicesResponse) Reset() { - *x = ListFederatedVirtualServicesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListFederatedVirtualServicesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListFederatedVirtualServicesResponse) ProtoMessage() {} - -func (x *ListFederatedVirtualServicesResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListFederatedVirtualServicesResponse.ProtoReflect.Descriptor instead. -func (*ListFederatedVirtualServicesResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDescGZIP(), []int{8} -} - -func (x *ListFederatedVirtualServicesResponse) GetFederatedVirtualServices() []*FederatedVirtualService { - if x != nil { - return x.FederatedVirtualServices - } - return nil -} - -type GetFederatedVirtualServiceYamlRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedVirtualServiceRef *v1.ObjectRef `protobuf:"bytes,1,opt,name=federated_virtual_service_ref,json=federatedVirtualServiceRef,proto3" json:"federated_virtual_service_ref,omitempty"` -} - -func (x *GetFederatedVirtualServiceYamlRequest) Reset() { - *x = GetFederatedVirtualServiceYamlRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetFederatedVirtualServiceYamlRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetFederatedVirtualServiceYamlRequest) ProtoMessage() {} - -func (x *GetFederatedVirtualServiceYamlRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetFederatedVirtualServiceYamlRequest.ProtoReflect.Descriptor instead. -func (*GetFederatedVirtualServiceYamlRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDescGZIP(), []int{9} -} - -func (x *GetFederatedVirtualServiceYamlRequest) GetFederatedVirtualServiceRef() *v1.ObjectRef { - if x != nil { - return x.FederatedVirtualServiceRef - } - return nil -} - -type GetFederatedVirtualServiceYamlResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - YamlData *ResourceYaml `protobuf:"bytes,1,opt,name=yaml_data,json=yamlData,proto3" json:"yaml_data,omitempty"` -} - -func (x *GetFederatedVirtualServiceYamlResponse) Reset() { - *x = GetFederatedVirtualServiceYamlResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetFederatedVirtualServiceYamlResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetFederatedVirtualServiceYamlResponse) ProtoMessage() {} - -func (x *GetFederatedVirtualServiceYamlResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetFederatedVirtualServiceYamlResponse.ProtoReflect.Descriptor instead. -func (*GetFederatedVirtualServiceYamlResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDescGZIP(), []int{10} -} - -func (x *GetFederatedVirtualServiceYamlResponse) GetYamlData() *ResourceYaml { - if x != nil { - return x.YamlData - } - return nil -} - -type ListFederatedRouteTablesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *ListFederatedRouteTablesRequest) Reset() { - *x = ListFederatedRouteTablesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListFederatedRouteTablesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListFederatedRouteTablesRequest) ProtoMessage() {} - -func (x *ListFederatedRouteTablesRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListFederatedRouteTablesRequest.ProtoReflect.Descriptor instead. -func (*ListFederatedRouteTablesRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDescGZIP(), []int{11} -} - -type ListFederatedRouteTablesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedRouteTables []*FederatedRouteTable `protobuf:"bytes,1,rep,name=federated_route_tables,json=federatedRouteTables,proto3" json:"federated_route_tables,omitempty"` -} - -func (x *ListFederatedRouteTablesResponse) Reset() { - *x = ListFederatedRouteTablesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListFederatedRouteTablesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListFederatedRouteTablesResponse) ProtoMessage() {} - -func (x *ListFederatedRouteTablesResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListFederatedRouteTablesResponse.ProtoReflect.Descriptor instead. -func (*ListFederatedRouteTablesResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDescGZIP(), []int{12} -} - -func (x *ListFederatedRouteTablesResponse) GetFederatedRouteTables() []*FederatedRouteTable { - if x != nil { - return x.FederatedRouteTables - } - return nil -} - -type GetFederatedRouteTableYamlRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedRouteTableRef *v1.ObjectRef `protobuf:"bytes,1,opt,name=federated_route_table_ref,json=federatedRouteTableRef,proto3" json:"federated_route_table_ref,omitempty"` -} - -func (x *GetFederatedRouteTableYamlRequest) Reset() { - *x = GetFederatedRouteTableYamlRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetFederatedRouteTableYamlRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetFederatedRouteTableYamlRequest) ProtoMessage() {} - -func (x *GetFederatedRouteTableYamlRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetFederatedRouteTableYamlRequest.ProtoReflect.Descriptor instead. -func (*GetFederatedRouteTableYamlRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDescGZIP(), []int{13} -} - -func (x *GetFederatedRouteTableYamlRequest) GetFederatedRouteTableRef() *v1.ObjectRef { - if x != nil { - return x.FederatedRouteTableRef - } - return nil -} - -type GetFederatedRouteTableYamlResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - YamlData *ResourceYaml `protobuf:"bytes,1,opt,name=yaml_data,json=yamlData,proto3" json:"yaml_data,omitempty"` -} - -func (x *GetFederatedRouteTableYamlResponse) Reset() { - *x = GetFederatedRouteTableYamlResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetFederatedRouteTableYamlResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetFederatedRouteTableYamlResponse) ProtoMessage() {} - -func (x *GetFederatedRouteTableYamlResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetFederatedRouteTableYamlResponse.ProtoReflect.Descriptor instead. -func (*GetFederatedRouteTableYamlResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDescGZIP(), []int{14} -} - -func (x *GetFederatedRouteTableYamlResponse) GetYamlData() *ResourceYaml { - if x != nil { - return x.YamlData - } - return nil -} - -var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto protoreflect.FileDescriptor - -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDesc = []byte{ - 0x0a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, - 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x46, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, - 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, - 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, - 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, 0x2f, - 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, - 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, - 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, 0x2f, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6b, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, - 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, - 0x2e, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcf, 0x01, 0x0a, 0x10, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x65, - 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x3d, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x29, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, - 0x63, 0x12, 0x43, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xe4, 0x01, 0x0a, 0x17, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, - 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x44, 0x0a, 0x04, 0x73, - 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x66, 0x65, 0x64, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, - 0x63, 0x12, 0x4a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x32, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xd8, 0x01, - 0x0a, 0x13, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, - 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x66, - 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, - 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, - 0x12, 0x46, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2e, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x1e, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, - 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x71, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, - 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x12, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x11, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x22, 0x72, 0x0a, 0x1e, 0x47, - 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, - 0x15, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x13, 0x66, 0x65, 0x64, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x66, 0x22, - 0x5d, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x79, 0x61, 0x6d, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x08, 0x79, 0x61, 0x6d, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x22, 0x25, - 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x56, - 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x8e, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, - 0x0a, 0x1a, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x69, 0x72, 0x74, - 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x56, 0x69, - 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x18, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x5f, 0x0a, 0x1d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x69, - 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x65, - 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, - 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x1a, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, - 0x66, 0x22, 0x64, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x59, - 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x79, - 0x61, 0x6d, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x08, 0x79, - 0x61, 0x6d, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x22, 0x21, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x7e, 0x0a, 0x20, 0x4c, 0x69, - 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, - 0x0a, 0x16, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, - 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, - 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x52, 0x14, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x7c, 0x0a, 0x21, 0x47, 0x65, - 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x57, 0x0a, 0x19, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, - 0x52, 0x16, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x22, 0x60, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, - 0x0a, 0x09, 0x79, 0x61, 0x6d, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x59, 0x61, 0x6d, 0x6c, - 0x52, 0x08, 0x79, 0x61, 0x6d, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x32, 0xcb, 0x06, 0x0a, 0x1b, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x70, 0x69, 0x12, 0x78, 0x0a, 0x15, 0x4c, 0x69, - 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x73, 0x12, 0x2d, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x59, 0x61, 0x6d, 0x6c, 0x12, - 0x2f, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x30, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x8d, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x66, 0x65, - 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x56, 0x69, 0x72, 0x74, 0x75, - 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x93, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x12, 0x36, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x37, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x56, 0x69, - 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x59, 0x61, 0x6d, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x18, 0x4c, - 0x69, 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, - 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x66, 0x65, 0x64, 0x2e, - 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, - 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x12, 0x32, 0x2e, - 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, - 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x33, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x39, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0xb8, 0xf5, 0x04, 0x01, 0xc0, - 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDesc -) - -func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDescGZIP() []byte { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDescData) - }) - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDescData -} - -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes = make([]protoimpl.MessageInfo, 15) -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_goTypes = []interface{}{ - (*FederatedGateway)(nil), // 0: fed.rpc.solo.io.FederatedGateway - (*FederatedVirtualService)(nil), // 1: fed.rpc.solo.io.FederatedVirtualService - (*FederatedRouteTable)(nil), // 2: fed.rpc.solo.io.FederatedRouteTable - (*ListFederatedGatewaysRequest)(nil), // 3: fed.rpc.solo.io.ListFederatedGatewaysRequest - (*ListFederatedGatewaysResponse)(nil), // 4: fed.rpc.solo.io.ListFederatedGatewaysResponse - (*GetFederatedGatewayYamlRequest)(nil), // 5: fed.rpc.solo.io.GetFederatedGatewayYamlRequest - (*GetFederatedGatewayYamlResponse)(nil), // 6: fed.rpc.solo.io.GetFederatedGatewayYamlResponse - (*ListFederatedVirtualServicesRequest)(nil), // 7: fed.rpc.solo.io.ListFederatedVirtualServicesRequest - (*ListFederatedVirtualServicesResponse)(nil), // 8: fed.rpc.solo.io.ListFederatedVirtualServicesResponse - (*GetFederatedVirtualServiceYamlRequest)(nil), // 9: fed.rpc.solo.io.GetFederatedVirtualServiceYamlRequest - (*GetFederatedVirtualServiceYamlResponse)(nil), // 10: fed.rpc.solo.io.GetFederatedVirtualServiceYamlResponse - (*ListFederatedRouteTablesRequest)(nil), // 11: fed.rpc.solo.io.ListFederatedRouteTablesRequest - (*ListFederatedRouteTablesResponse)(nil), // 12: fed.rpc.solo.io.ListFederatedRouteTablesResponse - (*GetFederatedRouteTableYamlRequest)(nil), // 13: fed.rpc.solo.io.GetFederatedRouteTableYamlRequest - (*GetFederatedRouteTableYamlResponse)(nil), // 14: fed.rpc.solo.io.GetFederatedRouteTableYamlResponse - (*ObjectMeta)(nil), // 15: fed.rpc.solo.io.ObjectMeta - (*types.FederatedGatewaySpec)(nil), // 16: fed.gateway.solo.io.FederatedGatewaySpec - (*types.FederatedGatewayStatus)(nil), // 17: fed.gateway.solo.io.FederatedGatewayStatus - (*types.FederatedVirtualServiceSpec)(nil), // 18: fed.gateway.solo.io.FederatedVirtualServiceSpec - (*types.FederatedVirtualServiceStatus)(nil), // 19: fed.gateway.solo.io.FederatedVirtualServiceStatus - (*types.FederatedRouteTableSpec)(nil), // 20: fed.gateway.solo.io.FederatedRouteTableSpec - (*types.FederatedRouteTableStatus)(nil), // 21: fed.gateway.solo.io.FederatedRouteTableStatus - (*v1.ObjectRef)(nil), // 22: core.skv2.solo.io.ObjectRef - (*ResourceYaml)(nil), // 23: fed.rpc.solo.io.ResourceYaml -} -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_depIdxs = []int32{ - 15, // 0: fed.rpc.solo.io.FederatedGateway.metadata:type_name -> fed.rpc.solo.io.ObjectMeta - 16, // 1: fed.rpc.solo.io.FederatedGateway.spec:type_name -> fed.gateway.solo.io.FederatedGatewaySpec - 17, // 2: fed.rpc.solo.io.FederatedGateway.status:type_name -> fed.gateway.solo.io.FederatedGatewayStatus - 15, // 3: fed.rpc.solo.io.FederatedVirtualService.metadata:type_name -> fed.rpc.solo.io.ObjectMeta - 18, // 4: fed.rpc.solo.io.FederatedVirtualService.spec:type_name -> fed.gateway.solo.io.FederatedVirtualServiceSpec - 19, // 5: fed.rpc.solo.io.FederatedVirtualService.status:type_name -> fed.gateway.solo.io.FederatedVirtualServiceStatus - 15, // 6: fed.rpc.solo.io.FederatedRouteTable.metadata:type_name -> fed.rpc.solo.io.ObjectMeta - 20, // 7: fed.rpc.solo.io.FederatedRouteTable.spec:type_name -> fed.gateway.solo.io.FederatedRouteTableSpec - 21, // 8: fed.rpc.solo.io.FederatedRouteTable.status:type_name -> fed.gateway.solo.io.FederatedRouteTableStatus - 0, // 9: fed.rpc.solo.io.ListFederatedGatewaysResponse.federated_gateways:type_name -> fed.rpc.solo.io.FederatedGateway - 22, // 10: fed.rpc.solo.io.GetFederatedGatewayYamlRequest.federated_gateway_ref:type_name -> core.skv2.solo.io.ObjectRef - 23, // 11: fed.rpc.solo.io.GetFederatedGatewayYamlResponse.yaml_data:type_name -> fed.rpc.solo.io.ResourceYaml - 1, // 12: fed.rpc.solo.io.ListFederatedVirtualServicesResponse.federated_virtual_services:type_name -> fed.rpc.solo.io.FederatedVirtualService - 22, // 13: fed.rpc.solo.io.GetFederatedVirtualServiceYamlRequest.federated_virtual_service_ref:type_name -> core.skv2.solo.io.ObjectRef - 23, // 14: fed.rpc.solo.io.GetFederatedVirtualServiceYamlResponse.yaml_data:type_name -> fed.rpc.solo.io.ResourceYaml - 2, // 15: fed.rpc.solo.io.ListFederatedRouteTablesResponse.federated_route_tables:type_name -> fed.rpc.solo.io.FederatedRouteTable - 22, // 16: fed.rpc.solo.io.GetFederatedRouteTableYamlRequest.federated_route_table_ref:type_name -> core.skv2.solo.io.ObjectRef - 23, // 17: fed.rpc.solo.io.GetFederatedRouteTableYamlResponse.yaml_data:type_name -> fed.rpc.solo.io.ResourceYaml - 3, // 18: fed.rpc.solo.io.FederatedGatewayResourceApi.ListFederatedGateways:input_type -> fed.rpc.solo.io.ListFederatedGatewaysRequest - 5, // 19: fed.rpc.solo.io.FederatedGatewayResourceApi.GetFederatedGatewayYaml:input_type -> fed.rpc.solo.io.GetFederatedGatewayYamlRequest - 7, // 20: fed.rpc.solo.io.FederatedGatewayResourceApi.ListFederatedVirtualServices:input_type -> fed.rpc.solo.io.ListFederatedVirtualServicesRequest - 9, // 21: fed.rpc.solo.io.FederatedGatewayResourceApi.GetFederatedVirtualServiceYaml:input_type -> fed.rpc.solo.io.GetFederatedVirtualServiceYamlRequest - 11, // 22: fed.rpc.solo.io.FederatedGatewayResourceApi.ListFederatedRouteTables:input_type -> fed.rpc.solo.io.ListFederatedRouteTablesRequest - 13, // 23: fed.rpc.solo.io.FederatedGatewayResourceApi.GetFederatedRouteTableYaml:input_type -> fed.rpc.solo.io.GetFederatedRouteTableYamlRequest - 4, // 24: fed.rpc.solo.io.FederatedGatewayResourceApi.ListFederatedGateways:output_type -> fed.rpc.solo.io.ListFederatedGatewaysResponse - 6, // 25: fed.rpc.solo.io.FederatedGatewayResourceApi.GetFederatedGatewayYaml:output_type -> fed.rpc.solo.io.GetFederatedGatewayYamlResponse - 8, // 26: fed.rpc.solo.io.FederatedGatewayResourceApi.ListFederatedVirtualServices:output_type -> fed.rpc.solo.io.ListFederatedVirtualServicesResponse - 10, // 27: fed.rpc.solo.io.FederatedGatewayResourceApi.GetFederatedVirtualServiceYaml:output_type -> fed.rpc.solo.io.GetFederatedVirtualServiceYamlResponse - 12, // 28: fed.rpc.solo.io.FederatedGatewayResourceApi.ListFederatedRouteTables:output_type -> fed.rpc.solo.io.ListFederatedRouteTablesResponse - 14, // 29: fed.rpc.solo.io.FederatedGatewayResourceApi.GetFederatedRouteTableYaml:output_type -> fed.rpc.solo.io.GetFederatedRouteTableYamlResponse - 24, // [24:30] is the sub-list for method output_type - 18, // [18:24] is the sub-list for method input_type - 18, // [18:18] is the sub-list for extension type_name - 18, // [18:18] is the sub-list for extension extendee - 0, // [0:18] is the sub-list for field type_name -} - -func init() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_init() -} -func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_init() { - if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto != nil { - return - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_init() - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedGateway); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedVirtualService); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedRouteTable); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListFederatedGatewaysRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListFederatedGatewaysResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFederatedGatewayYamlRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFederatedGatewayYamlResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListFederatedVirtualServicesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListFederatedVirtualServicesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFederatedVirtualServiceYamlRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFederatedVirtualServiceYamlResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListFederatedRouteTablesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListFederatedRouteTablesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFederatedRouteTableYamlRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFederatedRouteTableYamlResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDesc, - NumEnums: 0, - NumMessages: 15, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_goTypes, - DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_depIdxs, - MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_msgTypes, - }.Build() - File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_rawDesc = nil - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_goTypes = nil - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gateway_resources_proto_depIdxs = nil -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConnInterface - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion6 - -// FederatedGatewayResourceApiClient is the client API for FederatedGatewayResourceApi service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type FederatedGatewayResourceApiClient interface { - ListFederatedGateways(ctx context.Context, in *ListFederatedGatewaysRequest, opts ...grpc.CallOption) (*ListFederatedGatewaysResponse, error) - GetFederatedGatewayYaml(ctx context.Context, in *GetFederatedGatewayYamlRequest, opts ...grpc.CallOption) (*GetFederatedGatewayYamlResponse, error) - ListFederatedVirtualServices(ctx context.Context, in *ListFederatedVirtualServicesRequest, opts ...grpc.CallOption) (*ListFederatedVirtualServicesResponse, error) - GetFederatedVirtualServiceYaml(ctx context.Context, in *GetFederatedVirtualServiceYamlRequest, opts ...grpc.CallOption) (*GetFederatedVirtualServiceYamlResponse, error) - ListFederatedRouteTables(ctx context.Context, in *ListFederatedRouteTablesRequest, opts ...grpc.CallOption) (*ListFederatedRouteTablesResponse, error) - GetFederatedRouteTableYaml(ctx context.Context, in *GetFederatedRouteTableYamlRequest, opts ...grpc.CallOption) (*GetFederatedRouteTableYamlResponse, error) -} - -type federatedGatewayResourceApiClient struct { - cc grpc.ClientConnInterface -} - -func NewFederatedGatewayResourceApiClient(cc grpc.ClientConnInterface) FederatedGatewayResourceApiClient { - return &federatedGatewayResourceApiClient{cc} -} - -func (c *federatedGatewayResourceApiClient) ListFederatedGateways(ctx context.Context, in *ListFederatedGatewaysRequest, opts ...grpc.CallOption) (*ListFederatedGatewaysResponse, error) { - out := new(ListFederatedGatewaysResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.FederatedGatewayResourceApi/ListFederatedGateways", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *federatedGatewayResourceApiClient) GetFederatedGatewayYaml(ctx context.Context, in *GetFederatedGatewayYamlRequest, opts ...grpc.CallOption) (*GetFederatedGatewayYamlResponse, error) { - out := new(GetFederatedGatewayYamlResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.FederatedGatewayResourceApi/GetFederatedGatewayYaml", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *federatedGatewayResourceApiClient) ListFederatedVirtualServices(ctx context.Context, in *ListFederatedVirtualServicesRequest, opts ...grpc.CallOption) (*ListFederatedVirtualServicesResponse, error) { - out := new(ListFederatedVirtualServicesResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.FederatedGatewayResourceApi/ListFederatedVirtualServices", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *federatedGatewayResourceApiClient) GetFederatedVirtualServiceYaml(ctx context.Context, in *GetFederatedVirtualServiceYamlRequest, opts ...grpc.CallOption) (*GetFederatedVirtualServiceYamlResponse, error) { - out := new(GetFederatedVirtualServiceYamlResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.FederatedGatewayResourceApi/GetFederatedVirtualServiceYaml", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *federatedGatewayResourceApiClient) ListFederatedRouteTables(ctx context.Context, in *ListFederatedRouteTablesRequest, opts ...grpc.CallOption) (*ListFederatedRouteTablesResponse, error) { - out := new(ListFederatedRouteTablesResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.FederatedGatewayResourceApi/ListFederatedRouteTables", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *federatedGatewayResourceApiClient) GetFederatedRouteTableYaml(ctx context.Context, in *GetFederatedRouteTableYamlRequest, opts ...grpc.CallOption) (*GetFederatedRouteTableYamlResponse, error) { - out := new(GetFederatedRouteTableYamlResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.FederatedGatewayResourceApi/GetFederatedRouteTableYaml", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// FederatedGatewayResourceApiServer is the server API for FederatedGatewayResourceApi service. -type FederatedGatewayResourceApiServer interface { - ListFederatedGateways(context.Context, *ListFederatedGatewaysRequest) (*ListFederatedGatewaysResponse, error) - GetFederatedGatewayYaml(context.Context, *GetFederatedGatewayYamlRequest) (*GetFederatedGatewayYamlResponse, error) - ListFederatedVirtualServices(context.Context, *ListFederatedVirtualServicesRequest) (*ListFederatedVirtualServicesResponse, error) - GetFederatedVirtualServiceYaml(context.Context, *GetFederatedVirtualServiceYamlRequest) (*GetFederatedVirtualServiceYamlResponse, error) - ListFederatedRouteTables(context.Context, *ListFederatedRouteTablesRequest) (*ListFederatedRouteTablesResponse, error) - GetFederatedRouteTableYaml(context.Context, *GetFederatedRouteTableYamlRequest) (*GetFederatedRouteTableYamlResponse, error) -} - -// UnimplementedFederatedGatewayResourceApiServer can be embedded to have forward compatible implementations. -type UnimplementedFederatedGatewayResourceApiServer struct { -} - -func (*UnimplementedFederatedGatewayResourceApiServer) ListFederatedGateways(context.Context, *ListFederatedGatewaysRequest) (*ListFederatedGatewaysResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListFederatedGateways not implemented") -} -func (*UnimplementedFederatedGatewayResourceApiServer) GetFederatedGatewayYaml(context.Context, *GetFederatedGatewayYamlRequest) (*GetFederatedGatewayYamlResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetFederatedGatewayYaml not implemented") -} -func (*UnimplementedFederatedGatewayResourceApiServer) ListFederatedVirtualServices(context.Context, *ListFederatedVirtualServicesRequest) (*ListFederatedVirtualServicesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListFederatedVirtualServices not implemented") -} -func (*UnimplementedFederatedGatewayResourceApiServer) GetFederatedVirtualServiceYaml(context.Context, *GetFederatedVirtualServiceYamlRequest) (*GetFederatedVirtualServiceYamlResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetFederatedVirtualServiceYaml not implemented") -} -func (*UnimplementedFederatedGatewayResourceApiServer) ListFederatedRouteTables(context.Context, *ListFederatedRouteTablesRequest) (*ListFederatedRouteTablesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListFederatedRouteTables not implemented") -} -func (*UnimplementedFederatedGatewayResourceApiServer) GetFederatedRouteTableYaml(context.Context, *GetFederatedRouteTableYamlRequest) (*GetFederatedRouteTableYamlResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetFederatedRouteTableYaml not implemented") -} - -func RegisterFederatedGatewayResourceApiServer(s *grpc.Server, srv FederatedGatewayResourceApiServer) { - s.RegisterService(&_FederatedGatewayResourceApi_serviceDesc, srv) -} - -func _FederatedGatewayResourceApi_ListFederatedGateways_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListFederatedGatewaysRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FederatedGatewayResourceApiServer).ListFederatedGateways(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.FederatedGatewayResourceApi/ListFederatedGateways", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FederatedGatewayResourceApiServer).ListFederatedGateways(ctx, req.(*ListFederatedGatewaysRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _FederatedGatewayResourceApi_GetFederatedGatewayYaml_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetFederatedGatewayYamlRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FederatedGatewayResourceApiServer).GetFederatedGatewayYaml(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.FederatedGatewayResourceApi/GetFederatedGatewayYaml", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FederatedGatewayResourceApiServer).GetFederatedGatewayYaml(ctx, req.(*GetFederatedGatewayYamlRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _FederatedGatewayResourceApi_ListFederatedVirtualServices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListFederatedVirtualServicesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FederatedGatewayResourceApiServer).ListFederatedVirtualServices(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.FederatedGatewayResourceApi/ListFederatedVirtualServices", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FederatedGatewayResourceApiServer).ListFederatedVirtualServices(ctx, req.(*ListFederatedVirtualServicesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _FederatedGatewayResourceApi_GetFederatedVirtualServiceYaml_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetFederatedVirtualServiceYamlRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FederatedGatewayResourceApiServer).GetFederatedVirtualServiceYaml(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.FederatedGatewayResourceApi/GetFederatedVirtualServiceYaml", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FederatedGatewayResourceApiServer).GetFederatedVirtualServiceYaml(ctx, req.(*GetFederatedVirtualServiceYamlRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _FederatedGatewayResourceApi_ListFederatedRouteTables_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListFederatedRouteTablesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FederatedGatewayResourceApiServer).ListFederatedRouteTables(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.FederatedGatewayResourceApi/ListFederatedRouteTables", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FederatedGatewayResourceApiServer).ListFederatedRouteTables(ctx, req.(*ListFederatedRouteTablesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _FederatedGatewayResourceApi_GetFederatedRouteTableYaml_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetFederatedRouteTableYamlRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FederatedGatewayResourceApiServer).GetFederatedRouteTableYaml(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.FederatedGatewayResourceApi/GetFederatedRouteTableYaml", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FederatedGatewayResourceApiServer).GetFederatedRouteTableYaml(ctx, req.(*GetFederatedRouteTableYamlRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _FederatedGatewayResourceApi_serviceDesc = grpc.ServiceDesc{ - ServiceName: "fed.rpc.solo.io.FederatedGatewayResourceApi", - HandlerType: (*FederatedGatewayResourceApiServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListFederatedGateways", - Handler: _FederatedGatewayResourceApi_ListFederatedGateways_Handler, - }, - { - MethodName: "GetFederatedGatewayYaml", - Handler: _FederatedGatewayResourceApi_GetFederatedGatewayYaml_Handler, - }, - { - MethodName: "ListFederatedVirtualServices", - Handler: _FederatedGatewayResourceApi_ListFederatedVirtualServices_Handler, - }, - { - MethodName: "GetFederatedVirtualServiceYaml", - Handler: _FederatedGatewayResourceApi_GetFederatedVirtualServiceYaml_Handler, - }, - { - MethodName: "ListFederatedRouteTables", - Handler: _FederatedGatewayResourceApi_ListFederatedRouteTables_Handler, - }, - { - MethodName: "GetFederatedRouteTableYaml", - Handler: _FederatedGatewayResourceApi_GetFederatedRouteTableYaml_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/federated_gateway_resources.proto", -} diff --git a/pkg/api/fed.rpc/v1/federated_gateway_resources.pb.hash.go b/pkg/api/fed.rpc/v1/federated_gateway_resources.pb.hash.go deleted file mode 100644 index da6135d39..000000000 --- a/pkg/api/fed.rpc/v1/federated_gateway_resources.pb.hash.go +++ /dev/null @@ -1,530 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/federated_gateway_resources.proto - -package v1 - -import ( - "encoding/binary" - "errors" - "fmt" - "hash" - "hash/fnv" - - "github.com/mitchellh/hashstructure" - safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = new(hash.Hash64) - _ = fnv.New64 - _ = hashstructure.Hash - _ = new(safe_hasher.SafeHasher) -) - -// Hash function -func (m *FederatedGateway) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.FederatedGateway")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetStatus()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetStatus(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *FederatedVirtualService) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.FederatedVirtualService")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetStatus()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetStatus(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *FederatedRouteTable) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.FederatedRouteTable")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetStatus()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetStatus(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListFederatedGatewaysRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListFederatedGatewaysRequest")); err != nil { - return 0, err - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListFederatedGatewaysResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListFederatedGatewaysResponse")); err != nil { - return 0, err - } - - for _, v := range m.GetFederatedGateways() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetFederatedGatewayYamlRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetFederatedGatewayYamlRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetFederatedGatewayRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetFederatedGatewayRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetFederatedGatewayYamlResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetFederatedGatewayYamlResponse")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetYamlData()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetYamlData(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListFederatedVirtualServicesRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListFederatedVirtualServicesRequest")); err != nil { - return 0, err - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListFederatedVirtualServicesResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListFederatedVirtualServicesResponse")); err != nil { - return 0, err - } - - for _, v := range m.GetFederatedVirtualServices() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetFederatedVirtualServiceYamlRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetFederatedVirtualServiceYamlRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetFederatedVirtualServiceRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetFederatedVirtualServiceRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetFederatedVirtualServiceYamlResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetFederatedVirtualServiceYamlResponse")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetYamlData()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetYamlData(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListFederatedRouteTablesRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListFederatedRouteTablesRequest")); err != nil { - return 0, err - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListFederatedRouteTablesResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListFederatedRouteTablesResponse")); err != nil { - return 0, err - } - - for _, v := range m.GetFederatedRouteTables() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetFederatedRouteTableYamlRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetFederatedRouteTableYamlRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetFederatedRouteTableRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetFederatedRouteTableRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetFederatedRouteTableYamlResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetFederatedRouteTableYamlResponse")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetYamlData()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetYamlData(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} diff --git a/pkg/api/fed.rpc/v1/federated_gloo_resources.pb.equal.go b/pkg/api/fed.rpc/v1/federated_gloo_resources.pb.equal.go deleted file mode 100644 index 93b760625..000000000 --- a/pkg/api/fed.rpc/v1/federated_gloo_resources.pb.equal.go +++ /dev/null @@ -1,587 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/federated_gloo_resources.proto - -package v1 - -import ( - "bytes" - "encoding/binary" - "errors" - "fmt" - "strings" - - "github.com/golang/protobuf/proto" - equality "github.com/solo-io/protoc-gen-ext/pkg/equality" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = bytes.Compare - _ = strings.Compare - _ = equality.Equalizer(nil) - _ = proto.Message(nil) -) - -// Equal function -func (m *FederatedUpstream) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*FederatedUpstream) - if !ok { - that2, ok := that.(FederatedUpstream) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadata()) { - return false - } - } else { - if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { - return false - } - } - - if h, ok := interface{}(m.GetSpec()).(equality.Equalizer); ok { - if !h.Equal(target.GetSpec()) { - return false - } - } else { - if !proto.Equal(m.GetSpec(), target.GetSpec()) { - return false - } - } - - if h, ok := interface{}(m.GetStatus()).(equality.Equalizer); ok { - if !h.Equal(target.GetStatus()) { - return false - } - } else { - if !proto.Equal(m.GetStatus(), target.GetStatus()) { - return false - } - } - - return true -} - -// Equal function -func (m *FederatedUpstreamGroup) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*FederatedUpstreamGroup) - if !ok { - that2, ok := that.(FederatedUpstreamGroup) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadata()) { - return false - } - } else { - if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { - return false - } - } - - if h, ok := interface{}(m.GetSpec()).(equality.Equalizer); ok { - if !h.Equal(target.GetSpec()) { - return false - } - } else { - if !proto.Equal(m.GetSpec(), target.GetSpec()) { - return false - } - } - - if h, ok := interface{}(m.GetStatus()).(equality.Equalizer); ok { - if !h.Equal(target.GetStatus()) { - return false - } - } else { - if !proto.Equal(m.GetStatus(), target.GetStatus()) { - return false - } - } - - return true -} - -// Equal function -func (m *FederatedSettings) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*FederatedSettings) - if !ok { - that2, ok := that.(FederatedSettings) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadata()) { - return false - } - } else { - if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { - return false - } - } - - if h, ok := interface{}(m.GetSpec()).(equality.Equalizer); ok { - if !h.Equal(target.GetSpec()) { - return false - } - } else { - if !proto.Equal(m.GetSpec(), target.GetSpec()) { - return false - } - } - - if h, ok := interface{}(m.GetStatus()).(equality.Equalizer); ok { - if !h.Equal(target.GetStatus()) { - return false - } - } else { - if !proto.Equal(m.GetStatus(), target.GetStatus()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListFederatedUpstreamsRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListFederatedUpstreamsRequest) - if !ok { - that2, ok := that.(ListFederatedUpstreamsRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - return true -} - -// Equal function -func (m *ListFederatedUpstreamsResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListFederatedUpstreamsResponse) - if !ok { - that2, ok := that.(ListFederatedUpstreamsResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if len(m.GetFederatedUpstreams()) != len(target.GetFederatedUpstreams()) { - return false - } - for idx, v := range m.GetFederatedUpstreams() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetFederatedUpstreams()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetFederatedUpstreams()[idx]) { - return false - } - } - - } - - return true -} - -// Equal function -func (m *GetFederatedUpstreamYamlRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetFederatedUpstreamYamlRequest) - if !ok { - that2, ok := that.(GetFederatedUpstreamYamlRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetFederatedUpstreamRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetFederatedUpstreamRef()) { - return false - } - } else { - if !proto.Equal(m.GetFederatedUpstreamRef(), target.GetFederatedUpstreamRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *GetFederatedUpstreamYamlResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetFederatedUpstreamYamlResponse) - if !ok { - that2, ok := that.(GetFederatedUpstreamYamlResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetYamlData()).(equality.Equalizer); ok { - if !h.Equal(target.GetYamlData()) { - return false - } - } else { - if !proto.Equal(m.GetYamlData(), target.GetYamlData()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListFederatedUpstreamGroupsRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListFederatedUpstreamGroupsRequest) - if !ok { - that2, ok := that.(ListFederatedUpstreamGroupsRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - return true -} - -// Equal function -func (m *ListFederatedUpstreamGroupsResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListFederatedUpstreamGroupsResponse) - if !ok { - that2, ok := that.(ListFederatedUpstreamGroupsResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if len(m.GetFederatedUpstreamGroups()) != len(target.GetFederatedUpstreamGroups()) { - return false - } - for idx, v := range m.GetFederatedUpstreamGroups() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetFederatedUpstreamGroups()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetFederatedUpstreamGroups()[idx]) { - return false - } - } - - } - - return true -} - -// Equal function -func (m *GetFederatedUpstreamGroupYamlRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetFederatedUpstreamGroupYamlRequest) - if !ok { - that2, ok := that.(GetFederatedUpstreamGroupYamlRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetFederatedUpstreamGroupRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetFederatedUpstreamGroupRef()) { - return false - } - } else { - if !proto.Equal(m.GetFederatedUpstreamGroupRef(), target.GetFederatedUpstreamGroupRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *GetFederatedUpstreamGroupYamlResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetFederatedUpstreamGroupYamlResponse) - if !ok { - that2, ok := that.(GetFederatedUpstreamGroupYamlResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetYamlData()).(equality.Equalizer); ok { - if !h.Equal(target.GetYamlData()) { - return false - } - } else { - if !proto.Equal(m.GetYamlData(), target.GetYamlData()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListFederatedSettingsRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListFederatedSettingsRequest) - if !ok { - that2, ok := that.(ListFederatedSettingsRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - return true -} - -// Equal function -func (m *ListFederatedSettingsResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListFederatedSettingsResponse) - if !ok { - that2, ok := that.(ListFederatedSettingsResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if len(m.GetFederatedSettings()) != len(target.GetFederatedSettings()) { - return false - } - for idx, v := range m.GetFederatedSettings() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetFederatedSettings()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetFederatedSettings()[idx]) { - return false - } - } - - } - - return true -} - -// Equal function -func (m *GetFederatedSettingsYamlRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetFederatedSettingsYamlRequest) - if !ok { - that2, ok := that.(GetFederatedSettingsYamlRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetFederatedSettingsRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetFederatedSettingsRef()) { - return false - } - } else { - if !proto.Equal(m.GetFederatedSettingsRef(), target.GetFederatedSettingsRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *GetFederatedSettingsYamlResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetFederatedSettingsYamlResponse) - if !ok { - that2, ok := that.(GetFederatedSettingsYamlResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetYamlData()).(equality.Equalizer); ok { - if !h.Equal(target.GetYamlData()) { - return false - } - } else { - if !proto.Equal(m.GetYamlData(), target.GetYamlData()) { - return false - } - } - - return true -} diff --git a/pkg/api/fed.rpc/v1/federated_gloo_resources.pb.go b/pkg/api/fed.rpc/v1/federated_gloo_resources.pb.go deleted file mode 100644 index b427dadf2..000000000 --- a/pkg/api/fed.rpc/v1/federated_gloo_resources.pb.go +++ /dev/null @@ -1,1510 +0,0 @@ -// Code generated by skv2. DO NOT EDIT. - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.6.1 -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/federated_gloo_resources.proto - -package v1 - -import ( - context "context" - reflect "reflect" - sync "sync" - - proto "github.com/golang/protobuf/proto" - _ "github.com/solo-io/protoc-gen-ext/extproto" - v1 "github.com/solo-io/skv2/pkg/api/core.skv2.solo.io/v1" - types "github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1/types" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -type FederatedUpstream struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *ObjectMeta `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - Spec *types.FederatedUpstreamSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` - Status *types.FederatedUpstreamStatus `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` -} - -func (x *FederatedUpstream) Reset() { - *x = FederatedUpstream{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FederatedUpstream) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FederatedUpstream) ProtoMessage() {} - -func (x *FederatedUpstream) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FederatedUpstream.ProtoReflect.Descriptor instead. -func (*FederatedUpstream) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDescGZIP(), []int{0} -} - -func (x *FederatedUpstream) GetMetadata() *ObjectMeta { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *FederatedUpstream) GetSpec() *types.FederatedUpstreamSpec { - if x != nil { - return x.Spec - } - return nil -} - -func (x *FederatedUpstream) GetStatus() *types.FederatedUpstreamStatus { - if x != nil { - return x.Status - } - return nil -} - -type FederatedUpstreamGroup struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *ObjectMeta `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - Spec *types.FederatedUpstreamGroupSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` - Status *types.FederatedUpstreamGroupStatus `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` -} - -func (x *FederatedUpstreamGroup) Reset() { - *x = FederatedUpstreamGroup{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FederatedUpstreamGroup) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FederatedUpstreamGroup) ProtoMessage() {} - -func (x *FederatedUpstreamGroup) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FederatedUpstreamGroup.ProtoReflect.Descriptor instead. -func (*FederatedUpstreamGroup) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDescGZIP(), []int{1} -} - -func (x *FederatedUpstreamGroup) GetMetadata() *ObjectMeta { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *FederatedUpstreamGroup) GetSpec() *types.FederatedUpstreamGroupSpec { - if x != nil { - return x.Spec - } - return nil -} - -func (x *FederatedUpstreamGroup) GetStatus() *types.FederatedUpstreamGroupStatus { - if x != nil { - return x.Status - } - return nil -} - -type FederatedSettings struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *ObjectMeta `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - Spec *types.FederatedSettingsSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` - Status *types.FederatedSettingsStatus `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` -} - -func (x *FederatedSettings) Reset() { - *x = FederatedSettings{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FederatedSettings) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FederatedSettings) ProtoMessage() {} - -func (x *FederatedSettings) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FederatedSettings.ProtoReflect.Descriptor instead. -func (*FederatedSettings) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDescGZIP(), []int{2} -} - -func (x *FederatedSettings) GetMetadata() *ObjectMeta { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *FederatedSettings) GetSpec() *types.FederatedSettingsSpec { - if x != nil { - return x.Spec - } - return nil -} - -func (x *FederatedSettings) GetStatus() *types.FederatedSettingsStatus { - if x != nil { - return x.Status - } - return nil -} - -type ListFederatedUpstreamsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *ListFederatedUpstreamsRequest) Reset() { - *x = ListFederatedUpstreamsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListFederatedUpstreamsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListFederatedUpstreamsRequest) ProtoMessage() {} - -func (x *ListFederatedUpstreamsRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListFederatedUpstreamsRequest.ProtoReflect.Descriptor instead. -func (*ListFederatedUpstreamsRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDescGZIP(), []int{3} -} - -type ListFederatedUpstreamsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedUpstreams []*FederatedUpstream `protobuf:"bytes,1,rep,name=federated_upstreams,json=federatedUpstreams,proto3" json:"federated_upstreams,omitempty"` -} - -func (x *ListFederatedUpstreamsResponse) Reset() { - *x = ListFederatedUpstreamsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListFederatedUpstreamsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListFederatedUpstreamsResponse) ProtoMessage() {} - -func (x *ListFederatedUpstreamsResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListFederatedUpstreamsResponse.ProtoReflect.Descriptor instead. -func (*ListFederatedUpstreamsResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDescGZIP(), []int{4} -} - -func (x *ListFederatedUpstreamsResponse) GetFederatedUpstreams() []*FederatedUpstream { - if x != nil { - return x.FederatedUpstreams - } - return nil -} - -type GetFederatedUpstreamYamlRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedUpstreamRef *v1.ObjectRef `protobuf:"bytes,1,opt,name=federated_upstream_ref,json=federatedUpstreamRef,proto3" json:"federated_upstream_ref,omitempty"` -} - -func (x *GetFederatedUpstreamYamlRequest) Reset() { - *x = GetFederatedUpstreamYamlRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetFederatedUpstreamYamlRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetFederatedUpstreamYamlRequest) ProtoMessage() {} - -func (x *GetFederatedUpstreamYamlRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetFederatedUpstreamYamlRequest.ProtoReflect.Descriptor instead. -func (*GetFederatedUpstreamYamlRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDescGZIP(), []int{5} -} - -func (x *GetFederatedUpstreamYamlRequest) GetFederatedUpstreamRef() *v1.ObjectRef { - if x != nil { - return x.FederatedUpstreamRef - } - return nil -} - -type GetFederatedUpstreamYamlResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - YamlData *ResourceYaml `protobuf:"bytes,1,opt,name=yaml_data,json=yamlData,proto3" json:"yaml_data,omitempty"` -} - -func (x *GetFederatedUpstreamYamlResponse) Reset() { - *x = GetFederatedUpstreamYamlResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetFederatedUpstreamYamlResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetFederatedUpstreamYamlResponse) ProtoMessage() {} - -func (x *GetFederatedUpstreamYamlResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetFederatedUpstreamYamlResponse.ProtoReflect.Descriptor instead. -func (*GetFederatedUpstreamYamlResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDescGZIP(), []int{6} -} - -func (x *GetFederatedUpstreamYamlResponse) GetYamlData() *ResourceYaml { - if x != nil { - return x.YamlData - } - return nil -} - -type ListFederatedUpstreamGroupsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *ListFederatedUpstreamGroupsRequest) Reset() { - *x = ListFederatedUpstreamGroupsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListFederatedUpstreamGroupsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListFederatedUpstreamGroupsRequest) ProtoMessage() {} - -func (x *ListFederatedUpstreamGroupsRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListFederatedUpstreamGroupsRequest.ProtoReflect.Descriptor instead. -func (*ListFederatedUpstreamGroupsRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDescGZIP(), []int{7} -} - -type ListFederatedUpstreamGroupsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedUpstreamGroups []*FederatedUpstreamGroup `protobuf:"bytes,1,rep,name=federated_upstream_groups,json=federatedUpstreamGroups,proto3" json:"federated_upstream_groups,omitempty"` -} - -func (x *ListFederatedUpstreamGroupsResponse) Reset() { - *x = ListFederatedUpstreamGroupsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListFederatedUpstreamGroupsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListFederatedUpstreamGroupsResponse) ProtoMessage() {} - -func (x *ListFederatedUpstreamGroupsResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListFederatedUpstreamGroupsResponse.ProtoReflect.Descriptor instead. -func (*ListFederatedUpstreamGroupsResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDescGZIP(), []int{8} -} - -func (x *ListFederatedUpstreamGroupsResponse) GetFederatedUpstreamGroups() []*FederatedUpstreamGroup { - if x != nil { - return x.FederatedUpstreamGroups - } - return nil -} - -type GetFederatedUpstreamGroupYamlRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedUpstreamGroupRef *v1.ObjectRef `protobuf:"bytes,1,opt,name=federated_upstream_group_ref,json=federatedUpstreamGroupRef,proto3" json:"federated_upstream_group_ref,omitempty"` -} - -func (x *GetFederatedUpstreamGroupYamlRequest) Reset() { - *x = GetFederatedUpstreamGroupYamlRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetFederatedUpstreamGroupYamlRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetFederatedUpstreamGroupYamlRequest) ProtoMessage() {} - -func (x *GetFederatedUpstreamGroupYamlRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetFederatedUpstreamGroupYamlRequest.ProtoReflect.Descriptor instead. -func (*GetFederatedUpstreamGroupYamlRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDescGZIP(), []int{9} -} - -func (x *GetFederatedUpstreamGroupYamlRequest) GetFederatedUpstreamGroupRef() *v1.ObjectRef { - if x != nil { - return x.FederatedUpstreamGroupRef - } - return nil -} - -type GetFederatedUpstreamGroupYamlResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - YamlData *ResourceYaml `protobuf:"bytes,1,opt,name=yaml_data,json=yamlData,proto3" json:"yaml_data,omitempty"` -} - -func (x *GetFederatedUpstreamGroupYamlResponse) Reset() { - *x = GetFederatedUpstreamGroupYamlResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetFederatedUpstreamGroupYamlResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetFederatedUpstreamGroupYamlResponse) ProtoMessage() {} - -func (x *GetFederatedUpstreamGroupYamlResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetFederatedUpstreamGroupYamlResponse.ProtoReflect.Descriptor instead. -func (*GetFederatedUpstreamGroupYamlResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDescGZIP(), []int{10} -} - -func (x *GetFederatedUpstreamGroupYamlResponse) GetYamlData() *ResourceYaml { - if x != nil { - return x.YamlData - } - return nil -} - -type ListFederatedSettingsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *ListFederatedSettingsRequest) Reset() { - *x = ListFederatedSettingsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListFederatedSettingsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListFederatedSettingsRequest) ProtoMessage() {} - -func (x *ListFederatedSettingsRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListFederatedSettingsRequest.ProtoReflect.Descriptor instead. -func (*ListFederatedSettingsRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDescGZIP(), []int{11} -} - -type ListFederatedSettingsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedSettings []*FederatedSettings `protobuf:"bytes,1,rep,name=federated_settings,json=federatedSettings,proto3" json:"federated_settings,omitempty"` -} - -func (x *ListFederatedSettingsResponse) Reset() { - *x = ListFederatedSettingsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListFederatedSettingsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListFederatedSettingsResponse) ProtoMessage() {} - -func (x *ListFederatedSettingsResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListFederatedSettingsResponse.ProtoReflect.Descriptor instead. -func (*ListFederatedSettingsResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDescGZIP(), []int{12} -} - -func (x *ListFederatedSettingsResponse) GetFederatedSettings() []*FederatedSettings { - if x != nil { - return x.FederatedSettings - } - return nil -} - -type GetFederatedSettingsYamlRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedSettingsRef *v1.ObjectRef `protobuf:"bytes,1,opt,name=federated_settings_ref,json=federatedSettingsRef,proto3" json:"federated_settings_ref,omitempty"` -} - -func (x *GetFederatedSettingsYamlRequest) Reset() { - *x = GetFederatedSettingsYamlRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetFederatedSettingsYamlRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetFederatedSettingsYamlRequest) ProtoMessage() {} - -func (x *GetFederatedSettingsYamlRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetFederatedSettingsYamlRequest.ProtoReflect.Descriptor instead. -func (*GetFederatedSettingsYamlRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDescGZIP(), []int{13} -} - -func (x *GetFederatedSettingsYamlRequest) GetFederatedSettingsRef() *v1.ObjectRef { - if x != nil { - return x.FederatedSettingsRef - } - return nil -} - -type GetFederatedSettingsYamlResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - YamlData *ResourceYaml `protobuf:"bytes,1,opt,name=yaml_data,json=yamlData,proto3" json:"yaml_data,omitempty"` -} - -func (x *GetFederatedSettingsYamlResponse) Reset() { - *x = GetFederatedSettingsYamlResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetFederatedSettingsYamlResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetFederatedSettingsYamlResponse) ProtoMessage() {} - -func (x *GetFederatedSettingsYamlResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetFederatedSettingsYamlResponse.ProtoReflect.Descriptor instead. -func (*GetFederatedSettingsYamlResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDescGZIP(), []int{14} -} - -func (x *GetFederatedSettingsYamlResponse) GetYamlData() *ResourceYaml { - if x != nil { - return x.YamlData - } - return nil -} - -var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto protoreflect.FileDescriptor - -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDesc = []byte{ - 0x0a, 0x53, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, - 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x67, 0x6c, 0x6f, 0x6f, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, - 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, - 0x31, 0x2f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, - 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, - 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6b, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, - 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcc, 0x01, 0x0a, 0x11, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x37, 0x0a, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, - 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, - 0x63, 0x12, 0x41, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x22, 0xdb, 0x01, 0x0a, 0x16, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, - 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x46, 0x0a, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x66, 0x65, 0x64, - 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x22, 0xcc, 0x01, 0x0a, 0x11, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x65, 0x64, - 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x3b, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x27, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x41, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, - 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x22, 0x1f, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0x75, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x13, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x22, 0x75, 0x0a, 0x1f, 0x47, 0x65, 0x74, - 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x52, 0x0a, 0x16, - 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x14, 0x66, 0x65, 0x64, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, - 0x22, 0x5e, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x79, 0x61, 0x6d, 0x6c, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x08, 0x79, 0x61, 0x6d, 0x6c, 0x44, 0x61, 0x74, 0x61, - 0x22, 0x24, 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x8a, 0x01, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, - 0x0a, 0x19, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x70, 0x73, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x27, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x17, 0x66, 0x65, 0x64, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x22, 0x85, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5d, 0x0a, 0x1c, - 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, - 0x52, 0x19, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x66, 0x22, 0x63, 0x0a, 0x25, 0x47, - 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x79, 0x61, 0x6d, 0x6c, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x08, 0x79, 0x61, 0x6d, 0x6c, 0x44, 0x61, 0x74, 0x61, - 0x22, 0x1e, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x22, 0x72, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x51, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x52, 0x11, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x22, 0x75, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x59, 0x61, 0x6d, 0x6c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x52, 0x0a, 0x16, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x72, 0x65, - 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, - 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x14, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x66, 0x22, 0x5e, 0x0a, 0x20, 0x47, - 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x3a, 0x0a, 0x09, 0x79, 0x61, 0x6d, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x59, 0x61, 0x6d, - 0x6c, 0x52, 0x08, 0x79, 0x61, 0x6d, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x32, 0xb9, 0x06, 0x0a, 0x18, - 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x6c, 0x6f, 0x6f, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x70, 0x69, 0x12, 0x7b, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, - 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x73, 0x12, 0x2e, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x59, 0x61, - 0x6d, 0x6c, 0x12, 0x30, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x59, 0x61, 0x6d, 0x6c, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8a, 0x01, 0x0a, 0x1b, 0x4c, 0x69, - 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x33, 0x2e, 0x66, 0x65, 0x64, 0x2e, - 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, - 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x90, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x59, 0x61, 0x6d, 0x6c, 0x12, 0x35, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, - 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x36, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x70, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x59, 0x61, 0x6d, 0x6c, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x15, 0x4c, 0x69, 0x73, - 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x12, 0x2d, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2e, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x59, 0x61, 0x6d, 0x6c, - 0x12, 0x30, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x39, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, - 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDesc -) - -func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDescGZIP() []byte { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDescData) - }) - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDescData -} - -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes = make([]protoimpl.MessageInfo, 15) -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_goTypes = []interface{}{ - (*FederatedUpstream)(nil), // 0: fed.rpc.solo.io.FederatedUpstream - (*FederatedUpstreamGroup)(nil), // 1: fed.rpc.solo.io.FederatedUpstreamGroup - (*FederatedSettings)(nil), // 2: fed.rpc.solo.io.FederatedSettings - (*ListFederatedUpstreamsRequest)(nil), // 3: fed.rpc.solo.io.ListFederatedUpstreamsRequest - (*ListFederatedUpstreamsResponse)(nil), // 4: fed.rpc.solo.io.ListFederatedUpstreamsResponse - (*GetFederatedUpstreamYamlRequest)(nil), // 5: fed.rpc.solo.io.GetFederatedUpstreamYamlRequest - (*GetFederatedUpstreamYamlResponse)(nil), // 6: fed.rpc.solo.io.GetFederatedUpstreamYamlResponse - (*ListFederatedUpstreamGroupsRequest)(nil), // 7: fed.rpc.solo.io.ListFederatedUpstreamGroupsRequest - (*ListFederatedUpstreamGroupsResponse)(nil), // 8: fed.rpc.solo.io.ListFederatedUpstreamGroupsResponse - (*GetFederatedUpstreamGroupYamlRequest)(nil), // 9: fed.rpc.solo.io.GetFederatedUpstreamGroupYamlRequest - (*GetFederatedUpstreamGroupYamlResponse)(nil), // 10: fed.rpc.solo.io.GetFederatedUpstreamGroupYamlResponse - (*ListFederatedSettingsRequest)(nil), // 11: fed.rpc.solo.io.ListFederatedSettingsRequest - (*ListFederatedSettingsResponse)(nil), // 12: fed.rpc.solo.io.ListFederatedSettingsResponse - (*GetFederatedSettingsYamlRequest)(nil), // 13: fed.rpc.solo.io.GetFederatedSettingsYamlRequest - (*GetFederatedSettingsYamlResponse)(nil), // 14: fed.rpc.solo.io.GetFederatedSettingsYamlResponse - (*ObjectMeta)(nil), // 15: fed.rpc.solo.io.ObjectMeta - (*types.FederatedUpstreamSpec)(nil), // 16: fed.gloo.solo.io.FederatedUpstreamSpec - (*types.FederatedUpstreamStatus)(nil), // 17: fed.gloo.solo.io.FederatedUpstreamStatus - (*types.FederatedUpstreamGroupSpec)(nil), // 18: fed.gloo.solo.io.FederatedUpstreamGroupSpec - (*types.FederatedUpstreamGroupStatus)(nil), // 19: fed.gloo.solo.io.FederatedUpstreamGroupStatus - (*types.FederatedSettingsSpec)(nil), // 20: fed.gloo.solo.io.FederatedSettingsSpec - (*types.FederatedSettingsStatus)(nil), // 21: fed.gloo.solo.io.FederatedSettingsStatus - (*v1.ObjectRef)(nil), // 22: core.skv2.solo.io.ObjectRef - (*ResourceYaml)(nil), // 23: fed.rpc.solo.io.ResourceYaml -} -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_depIdxs = []int32{ - 15, // 0: fed.rpc.solo.io.FederatedUpstream.metadata:type_name -> fed.rpc.solo.io.ObjectMeta - 16, // 1: fed.rpc.solo.io.FederatedUpstream.spec:type_name -> fed.gloo.solo.io.FederatedUpstreamSpec - 17, // 2: fed.rpc.solo.io.FederatedUpstream.status:type_name -> fed.gloo.solo.io.FederatedUpstreamStatus - 15, // 3: fed.rpc.solo.io.FederatedUpstreamGroup.metadata:type_name -> fed.rpc.solo.io.ObjectMeta - 18, // 4: fed.rpc.solo.io.FederatedUpstreamGroup.spec:type_name -> fed.gloo.solo.io.FederatedUpstreamGroupSpec - 19, // 5: fed.rpc.solo.io.FederatedUpstreamGroup.status:type_name -> fed.gloo.solo.io.FederatedUpstreamGroupStatus - 15, // 6: fed.rpc.solo.io.FederatedSettings.metadata:type_name -> fed.rpc.solo.io.ObjectMeta - 20, // 7: fed.rpc.solo.io.FederatedSettings.spec:type_name -> fed.gloo.solo.io.FederatedSettingsSpec - 21, // 8: fed.rpc.solo.io.FederatedSettings.status:type_name -> fed.gloo.solo.io.FederatedSettingsStatus - 0, // 9: fed.rpc.solo.io.ListFederatedUpstreamsResponse.federated_upstreams:type_name -> fed.rpc.solo.io.FederatedUpstream - 22, // 10: fed.rpc.solo.io.GetFederatedUpstreamYamlRequest.federated_upstream_ref:type_name -> core.skv2.solo.io.ObjectRef - 23, // 11: fed.rpc.solo.io.GetFederatedUpstreamYamlResponse.yaml_data:type_name -> fed.rpc.solo.io.ResourceYaml - 1, // 12: fed.rpc.solo.io.ListFederatedUpstreamGroupsResponse.federated_upstream_groups:type_name -> fed.rpc.solo.io.FederatedUpstreamGroup - 22, // 13: fed.rpc.solo.io.GetFederatedUpstreamGroupYamlRequest.federated_upstream_group_ref:type_name -> core.skv2.solo.io.ObjectRef - 23, // 14: fed.rpc.solo.io.GetFederatedUpstreamGroupYamlResponse.yaml_data:type_name -> fed.rpc.solo.io.ResourceYaml - 2, // 15: fed.rpc.solo.io.ListFederatedSettingsResponse.federated_settings:type_name -> fed.rpc.solo.io.FederatedSettings - 22, // 16: fed.rpc.solo.io.GetFederatedSettingsYamlRequest.federated_settings_ref:type_name -> core.skv2.solo.io.ObjectRef - 23, // 17: fed.rpc.solo.io.GetFederatedSettingsYamlResponse.yaml_data:type_name -> fed.rpc.solo.io.ResourceYaml - 3, // 18: fed.rpc.solo.io.FederatedGlooResourceApi.ListFederatedUpstreams:input_type -> fed.rpc.solo.io.ListFederatedUpstreamsRequest - 5, // 19: fed.rpc.solo.io.FederatedGlooResourceApi.GetFederatedUpstreamYaml:input_type -> fed.rpc.solo.io.GetFederatedUpstreamYamlRequest - 7, // 20: fed.rpc.solo.io.FederatedGlooResourceApi.ListFederatedUpstreamGroups:input_type -> fed.rpc.solo.io.ListFederatedUpstreamGroupsRequest - 9, // 21: fed.rpc.solo.io.FederatedGlooResourceApi.GetFederatedUpstreamGroupYaml:input_type -> fed.rpc.solo.io.GetFederatedUpstreamGroupYamlRequest - 11, // 22: fed.rpc.solo.io.FederatedGlooResourceApi.ListFederatedSettings:input_type -> fed.rpc.solo.io.ListFederatedSettingsRequest - 13, // 23: fed.rpc.solo.io.FederatedGlooResourceApi.GetFederatedSettingsYaml:input_type -> fed.rpc.solo.io.GetFederatedSettingsYamlRequest - 4, // 24: fed.rpc.solo.io.FederatedGlooResourceApi.ListFederatedUpstreams:output_type -> fed.rpc.solo.io.ListFederatedUpstreamsResponse - 6, // 25: fed.rpc.solo.io.FederatedGlooResourceApi.GetFederatedUpstreamYaml:output_type -> fed.rpc.solo.io.GetFederatedUpstreamYamlResponse - 8, // 26: fed.rpc.solo.io.FederatedGlooResourceApi.ListFederatedUpstreamGroups:output_type -> fed.rpc.solo.io.ListFederatedUpstreamGroupsResponse - 10, // 27: fed.rpc.solo.io.FederatedGlooResourceApi.GetFederatedUpstreamGroupYaml:output_type -> fed.rpc.solo.io.GetFederatedUpstreamGroupYamlResponse - 12, // 28: fed.rpc.solo.io.FederatedGlooResourceApi.ListFederatedSettings:output_type -> fed.rpc.solo.io.ListFederatedSettingsResponse - 14, // 29: fed.rpc.solo.io.FederatedGlooResourceApi.GetFederatedSettingsYaml:output_type -> fed.rpc.solo.io.GetFederatedSettingsYamlResponse - 24, // [24:30] is the sub-list for method output_type - 18, // [18:24] is the sub-list for method input_type - 18, // [18:18] is the sub-list for extension type_name - 18, // [18:18] is the sub-list for extension extendee - 0, // [0:18] is the sub-list for field type_name -} - -func init() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_init() -} -func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_init() { - if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto != nil { - return - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_init() - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedUpstream); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedUpstreamGroup); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FederatedSettings); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListFederatedUpstreamsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListFederatedUpstreamsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFederatedUpstreamYamlRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFederatedUpstreamYamlResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListFederatedUpstreamGroupsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListFederatedUpstreamGroupsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFederatedUpstreamGroupYamlRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFederatedUpstreamGroupYamlResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListFederatedSettingsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListFederatedSettingsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFederatedSettingsYamlRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFederatedSettingsYamlResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDesc, - NumEnums: 0, - NumMessages: 15, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_goTypes, - DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_depIdxs, - MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_msgTypes, - }.Build() - File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_rawDesc = nil - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_goTypes = nil - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_federated_gloo_resources_proto_depIdxs = nil -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConnInterface - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion6 - -// FederatedGlooResourceApiClient is the client API for FederatedGlooResourceApi service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type FederatedGlooResourceApiClient interface { - ListFederatedUpstreams(ctx context.Context, in *ListFederatedUpstreamsRequest, opts ...grpc.CallOption) (*ListFederatedUpstreamsResponse, error) - GetFederatedUpstreamYaml(ctx context.Context, in *GetFederatedUpstreamYamlRequest, opts ...grpc.CallOption) (*GetFederatedUpstreamYamlResponse, error) - ListFederatedUpstreamGroups(ctx context.Context, in *ListFederatedUpstreamGroupsRequest, opts ...grpc.CallOption) (*ListFederatedUpstreamGroupsResponse, error) - GetFederatedUpstreamGroupYaml(ctx context.Context, in *GetFederatedUpstreamGroupYamlRequest, opts ...grpc.CallOption) (*GetFederatedUpstreamGroupYamlResponse, error) - ListFederatedSettings(ctx context.Context, in *ListFederatedSettingsRequest, opts ...grpc.CallOption) (*ListFederatedSettingsResponse, error) - GetFederatedSettingsYaml(ctx context.Context, in *GetFederatedSettingsYamlRequest, opts ...grpc.CallOption) (*GetFederatedSettingsYamlResponse, error) -} - -type federatedGlooResourceApiClient struct { - cc grpc.ClientConnInterface -} - -func NewFederatedGlooResourceApiClient(cc grpc.ClientConnInterface) FederatedGlooResourceApiClient { - return &federatedGlooResourceApiClient{cc} -} - -func (c *federatedGlooResourceApiClient) ListFederatedUpstreams(ctx context.Context, in *ListFederatedUpstreamsRequest, opts ...grpc.CallOption) (*ListFederatedUpstreamsResponse, error) { - out := new(ListFederatedUpstreamsResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.FederatedGlooResourceApi/ListFederatedUpstreams", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *federatedGlooResourceApiClient) GetFederatedUpstreamYaml(ctx context.Context, in *GetFederatedUpstreamYamlRequest, opts ...grpc.CallOption) (*GetFederatedUpstreamYamlResponse, error) { - out := new(GetFederatedUpstreamYamlResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.FederatedGlooResourceApi/GetFederatedUpstreamYaml", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *federatedGlooResourceApiClient) ListFederatedUpstreamGroups(ctx context.Context, in *ListFederatedUpstreamGroupsRequest, opts ...grpc.CallOption) (*ListFederatedUpstreamGroupsResponse, error) { - out := new(ListFederatedUpstreamGroupsResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.FederatedGlooResourceApi/ListFederatedUpstreamGroups", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *federatedGlooResourceApiClient) GetFederatedUpstreamGroupYaml(ctx context.Context, in *GetFederatedUpstreamGroupYamlRequest, opts ...grpc.CallOption) (*GetFederatedUpstreamGroupYamlResponse, error) { - out := new(GetFederatedUpstreamGroupYamlResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.FederatedGlooResourceApi/GetFederatedUpstreamGroupYaml", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *federatedGlooResourceApiClient) ListFederatedSettings(ctx context.Context, in *ListFederatedSettingsRequest, opts ...grpc.CallOption) (*ListFederatedSettingsResponse, error) { - out := new(ListFederatedSettingsResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.FederatedGlooResourceApi/ListFederatedSettings", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *federatedGlooResourceApiClient) GetFederatedSettingsYaml(ctx context.Context, in *GetFederatedSettingsYamlRequest, opts ...grpc.CallOption) (*GetFederatedSettingsYamlResponse, error) { - out := new(GetFederatedSettingsYamlResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.FederatedGlooResourceApi/GetFederatedSettingsYaml", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// FederatedGlooResourceApiServer is the server API for FederatedGlooResourceApi service. -type FederatedGlooResourceApiServer interface { - ListFederatedUpstreams(context.Context, *ListFederatedUpstreamsRequest) (*ListFederatedUpstreamsResponse, error) - GetFederatedUpstreamYaml(context.Context, *GetFederatedUpstreamYamlRequest) (*GetFederatedUpstreamYamlResponse, error) - ListFederatedUpstreamGroups(context.Context, *ListFederatedUpstreamGroupsRequest) (*ListFederatedUpstreamGroupsResponse, error) - GetFederatedUpstreamGroupYaml(context.Context, *GetFederatedUpstreamGroupYamlRequest) (*GetFederatedUpstreamGroupYamlResponse, error) - ListFederatedSettings(context.Context, *ListFederatedSettingsRequest) (*ListFederatedSettingsResponse, error) - GetFederatedSettingsYaml(context.Context, *GetFederatedSettingsYamlRequest) (*GetFederatedSettingsYamlResponse, error) -} - -// UnimplementedFederatedGlooResourceApiServer can be embedded to have forward compatible implementations. -type UnimplementedFederatedGlooResourceApiServer struct { -} - -func (*UnimplementedFederatedGlooResourceApiServer) ListFederatedUpstreams(context.Context, *ListFederatedUpstreamsRequest) (*ListFederatedUpstreamsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListFederatedUpstreams not implemented") -} -func (*UnimplementedFederatedGlooResourceApiServer) GetFederatedUpstreamYaml(context.Context, *GetFederatedUpstreamYamlRequest) (*GetFederatedUpstreamYamlResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetFederatedUpstreamYaml not implemented") -} -func (*UnimplementedFederatedGlooResourceApiServer) ListFederatedUpstreamGroups(context.Context, *ListFederatedUpstreamGroupsRequest) (*ListFederatedUpstreamGroupsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListFederatedUpstreamGroups not implemented") -} -func (*UnimplementedFederatedGlooResourceApiServer) GetFederatedUpstreamGroupYaml(context.Context, *GetFederatedUpstreamGroupYamlRequest) (*GetFederatedUpstreamGroupYamlResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetFederatedUpstreamGroupYaml not implemented") -} -func (*UnimplementedFederatedGlooResourceApiServer) ListFederatedSettings(context.Context, *ListFederatedSettingsRequest) (*ListFederatedSettingsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListFederatedSettings not implemented") -} -func (*UnimplementedFederatedGlooResourceApiServer) GetFederatedSettingsYaml(context.Context, *GetFederatedSettingsYamlRequest) (*GetFederatedSettingsYamlResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetFederatedSettingsYaml not implemented") -} - -func RegisterFederatedGlooResourceApiServer(s *grpc.Server, srv FederatedGlooResourceApiServer) { - s.RegisterService(&_FederatedGlooResourceApi_serviceDesc, srv) -} - -func _FederatedGlooResourceApi_ListFederatedUpstreams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListFederatedUpstreamsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FederatedGlooResourceApiServer).ListFederatedUpstreams(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.FederatedGlooResourceApi/ListFederatedUpstreams", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FederatedGlooResourceApiServer).ListFederatedUpstreams(ctx, req.(*ListFederatedUpstreamsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _FederatedGlooResourceApi_GetFederatedUpstreamYaml_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetFederatedUpstreamYamlRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FederatedGlooResourceApiServer).GetFederatedUpstreamYaml(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.FederatedGlooResourceApi/GetFederatedUpstreamYaml", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FederatedGlooResourceApiServer).GetFederatedUpstreamYaml(ctx, req.(*GetFederatedUpstreamYamlRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _FederatedGlooResourceApi_ListFederatedUpstreamGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListFederatedUpstreamGroupsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FederatedGlooResourceApiServer).ListFederatedUpstreamGroups(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.FederatedGlooResourceApi/ListFederatedUpstreamGroups", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FederatedGlooResourceApiServer).ListFederatedUpstreamGroups(ctx, req.(*ListFederatedUpstreamGroupsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _FederatedGlooResourceApi_GetFederatedUpstreamGroupYaml_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetFederatedUpstreamGroupYamlRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FederatedGlooResourceApiServer).GetFederatedUpstreamGroupYaml(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.FederatedGlooResourceApi/GetFederatedUpstreamGroupYaml", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FederatedGlooResourceApiServer).GetFederatedUpstreamGroupYaml(ctx, req.(*GetFederatedUpstreamGroupYamlRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _FederatedGlooResourceApi_ListFederatedSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListFederatedSettingsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FederatedGlooResourceApiServer).ListFederatedSettings(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.FederatedGlooResourceApi/ListFederatedSettings", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FederatedGlooResourceApiServer).ListFederatedSettings(ctx, req.(*ListFederatedSettingsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _FederatedGlooResourceApi_GetFederatedSettingsYaml_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetFederatedSettingsYamlRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FederatedGlooResourceApiServer).GetFederatedSettingsYaml(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.FederatedGlooResourceApi/GetFederatedSettingsYaml", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FederatedGlooResourceApiServer).GetFederatedSettingsYaml(ctx, req.(*GetFederatedSettingsYamlRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _FederatedGlooResourceApi_serviceDesc = grpc.ServiceDesc{ - ServiceName: "fed.rpc.solo.io.FederatedGlooResourceApi", - HandlerType: (*FederatedGlooResourceApiServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListFederatedUpstreams", - Handler: _FederatedGlooResourceApi_ListFederatedUpstreams_Handler, - }, - { - MethodName: "GetFederatedUpstreamYaml", - Handler: _FederatedGlooResourceApi_GetFederatedUpstreamYaml_Handler, - }, - { - MethodName: "ListFederatedUpstreamGroups", - Handler: _FederatedGlooResourceApi_ListFederatedUpstreamGroups_Handler, - }, - { - MethodName: "GetFederatedUpstreamGroupYaml", - Handler: _FederatedGlooResourceApi_GetFederatedUpstreamGroupYaml_Handler, - }, - { - MethodName: "ListFederatedSettings", - Handler: _FederatedGlooResourceApi_ListFederatedSettings_Handler, - }, - { - MethodName: "GetFederatedSettingsYaml", - Handler: _FederatedGlooResourceApi_GetFederatedSettingsYaml_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/federated_gloo_resources.proto", -} diff --git a/pkg/api/fed.rpc/v1/federated_gloo_resources.pb.hash.go b/pkg/api/fed.rpc/v1/federated_gloo_resources.pb.hash.go deleted file mode 100644 index 6cdbfa487..000000000 --- a/pkg/api/fed.rpc/v1/federated_gloo_resources.pb.hash.go +++ /dev/null @@ -1,530 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/federated_gloo_resources.proto - -package v1 - -import ( - "encoding/binary" - "errors" - "fmt" - "hash" - "hash/fnv" - - "github.com/mitchellh/hashstructure" - safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = new(hash.Hash64) - _ = fnv.New64 - _ = hashstructure.Hash - _ = new(safe_hasher.SafeHasher) -) - -// Hash function -func (m *FederatedUpstream) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.FederatedUpstream")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetStatus()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetStatus(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *FederatedUpstreamGroup) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.FederatedUpstreamGroup")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetStatus()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetStatus(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *FederatedSettings) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.FederatedSettings")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetStatus()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetStatus(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListFederatedUpstreamsRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListFederatedUpstreamsRequest")); err != nil { - return 0, err - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListFederatedUpstreamsResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListFederatedUpstreamsResponse")); err != nil { - return 0, err - } - - for _, v := range m.GetFederatedUpstreams() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetFederatedUpstreamYamlRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetFederatedUpstreamYamlRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetFederatedUpstreamRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetFederatedUpstreamRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetFederatedUpstreamYamlResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetFederatedUpstreamYamlResponse")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetYamlData()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetYamlData(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListFederatedUpstreamGroupsRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListFederatedUpstreamGroupsRequest")); err != nil { - return 0, err - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListFederatedUpstreamGroupsResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListFederatedUpstreamGroupsResponse")); err != nil { - return 0, err - } - - for _, v := range m.GetFederatedUpstreamGroups() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetFederatedUpstreamGroupYamlRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetFederatedUpstreamGroupYamlRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetFederatedUpstreamGroupRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetFederatedUpstreamGroupRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetFederatedUpstreamGroupYamlResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetFederatedUpstreamGroupYamlResponse")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetYamlData()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetYamlData(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListFederatedSettingsRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListFederatedSettingsRequest")); err != nil { - return 0, err - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListFederatedSettingsResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListFederatedSettingsResponse")); err != nil { - return 0, err - } - - for _, v := range m.GetFederatedSettings() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetFederatedSettingsYamlRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetFederatedSettingsYamlRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetFederatedSettingsRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetFederatedSettingsRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetFederatedSettingsYamlResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetFederatedSettingsYamlResponse")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetYamlData()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetYamlData(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} diff --git a/pkg/api/fed.rpc/v1/gateway_resources.pb.equal.go b/pkg/api/fed.rpc/v1/gateway_resources.pb.equal.go deleted file mode 100644 index 72f4b7068..000000000 --- a/pkg/api/fed.rpc/v1/gateway_resources.pb.equal.go +++ /dev/null @@ -1,647 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/gateway_resources.proto - -package v1 - -import ( - "bytes" - "encoding/binary" - "errors" - "fmt" - "strings" - - "github.com/golang/protobuf/proto" - equality "github.com/solo-io/protoc-gen-ext/pkg/equality" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = bytes.Compare - _ = strings.Compare - _ = equality.Equalizer(nil) - _ = proto.Message(nil) -) - -// Equal function -func (m *Gateway) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*Gateway) - if !ok { - that2, ok := that.(Gateway) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadata()) { - return false - } - } else { - if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { - return false - } - } - - if h, ok := interface{}(m.GetSpec()).(equality.Equalizer); ok { - if !h.Equal(target.GetSpec()) { - return false - } - } else { - if !proto.Equal(m.GetSpec(), target.GetSpec()) { - return false - } - } - - if h, ok := interface{}(m.GetStatus()).(equality.Equalizer); ok { - if !h.Equal(target.GetStatus()) { - return false - } - } else { - if !proto.Equal(m.GetStatus(), target.GetStatus()) { - return false - } - } - - if h, ok := interface{}(m.GetGlooInstance()).(equality.Equalizer); ok { - if !h.Equal(target.GetGlooInstance()) { - return false - } - } else { - if !proto.Equal(m.GetGlooInstance(), target.GetGlooInstance()) { - return false - } - } - - return true -} - -// Equal function -func (m *VirtualService) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*VirtualService) - if !ok { - that2, ok := that.(VirtualService) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadata()) { - return false - } - } else { - if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { - return false - } - } - - if h, ok := interface{}(m.GetSpec()).(equality.Equalizer); ok { - if !h.Equal(target.GetSpec()) { - return false - } - } else { - if !proto.Equal(m.GetSpec(), target.GetSpec()) { - return false - } - } - - if h, ok := interface{}(m.GetStatus()).(equality.Equalizer); ok { - if !h.Equal(target.GetStatus()) { - return false - } - } else { - if !proto.Equal(m.GetStatus(), target.GetStatus()) { - return false - } - } - - if h, ok := interface{}(m.GetGlooInstance()).(equality.Equalizer); ok { - if !h.Equal(target.GetGlooInstance()) { - return false - } - } else { - if !proto.Equal(m.GetGlooInstance(), target.GetGlooInstance()) { - return false - } - } - - return true -} - -// Equal function -func (m *RouteTable) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*RouteTable) - if !ok { - that2, ok := that.(RouteTable) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadata()) { - return false - } - } else { - if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { - return false - } - } - - if h, ok := interface{}(m.GetSpec()).(equality.Equalizer); ok { - if !h.Equal(target.GetSpec()) { - return false - } - } else { - if !proto.Equal(m.GetSpec(), target.GetSpec()) { - return false - } - } - - if h, ok := interface{}(m.GetStatus()).(equality.Equalizer); ok { - if !h.Equal(target.GetStatus()) { - return false - } - } else { - if !proto.Equal(m.GetStatus(), target.GetStatus()) { - return false - } - } - - if h, ok := interface{}(m.GetGlooInstance()).(equality.Equalizer); ok { - if !h.Equal(target.GetGlooInstance()) { - return false - } - } else { - if !proto.Equal(m.GetGlooInstance(), target.GetGlooInstance()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListGatewaysRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListGatewaysRequest) - if !ok { - that2, ok := that.(ListGatewaysRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetGlooInstanceRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetGlooInstanceRef()) { - return false - } - } else { - if !proto.Equal(m.GetGlooInstanceRef(), target.GetGlooInstanceRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListGatewaysResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListGatewaysResponse) - if !ok { - that2, ok := that.(ListGatewaysResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if len(m.GetGateways()) != len(target.GetGateways()) { - return false - } - for idx, v := range m.GetGateways() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetGateways()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetGateways()[idx]) { - return false - } - } - - } - - return true -} - -// Equal function -func (m *GetGatewayYamlRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetGatewayYamlRequest) - if !ok { - that2, ok := that.(GetGatewayYamlRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetGatewayRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetGatewayRef()) { - return false - } - } else { - if !proto.Equal(m.GetGatewayRef(), target.GetGatewayRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *GetGatewayYamlResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetGatewayYamlResponse) - if !ok { - that2, ok := that.(GetGatewayYamlResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetYamlData()).(equality.Equalizer); ok { - if !h.Equal(target.GetYamlData()) { - return false - } - } else { - if !proto.Equal(m.GetYamlData(), target.GetYamlData()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListVirtualServicesRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListVirtualServicesRequest) - if !ok { - that2, ok := that.(ListVirtualServicesRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetGlooInstanceRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetGlooInstanceRef()) { - return false - } - } else { - if !proto.Equal(m.GetGlooInstanceRef(), target.GetGlooInstanceRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListVirtualServicesResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListVirtualServicesResponse) - if !ok { - that2, ok := that.(ListVirtualServicesResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if len(m.GetVirtualServices()) != len(target.GetVirtualServices()) { - return false - } - for idx, v := range m.GetVirtualServices() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetVirtualServices()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetVirtualServices()[idx]) { - return false - } - } - - } - - return true -} - -// Equal function -func (m *GetVirtualServiceYamlRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetVirtualServiceYamlRequest) - if !ok { - that2, ok := that.(GetVirtualServiceYamlRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetVirtualServiceRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetVirtualServiceRef()) { - return false - } - } else { - if !proto.Equal(m.GetVirtualServiceRef(), target.GetVirtualServiceRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *GetVirtualServiceYamlResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetVirtualServiceYamlResponse) - if !ok { - that2, ok := that.(GetVirtualServiceYamlResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetYamlData()).(equality.Equalizer); ok { - if !h.Equal(target.GetYamlData()) { - return false - } - } else { - if !proto.Equal(m.GetYamlData(), target.GetYamlData()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListRouteTablesRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListRouteTablesRequest) - if !ok { - that2, ok := that.(ListRouteTablesRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetGlooInstanceRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetGlooInstanceRef()) { - return false - } - } else { - if !proto.Equal(m.GetGlooInstanceRef(), target.GetGlooInstanceRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListRouteTablesResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListRouteTablesResponse) - if !ok { - that2, ok := that.(ListRouteTablesResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if len(m.GetRouteTables()) != len(target.GetRouteTables()) { - return false - } - for idx, v := range m.GetRouteTables() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetRouteTables()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetRouteTables()[idx]) { - return false - } - } - - } - - return true -} - -// Equal function -func (m *GetRouteTableYamlRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetRouteTableYamlRequest) - if !ok { - that2, ok := that.(GetRouteTableYamlRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetRouteTableRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetRouteTableRef()) { - return false - } - } else { - if !proto.Equal(m.GetRouteTableRef(), target.GetRouteTableRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *GetRouteTableYamlResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetRouteTableYamlResponse) - if !ok { - that2, ok := that.(GetRouteTableYamlResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetYamlData()).(equality.Equalizer); ok { - if !h.Equal(target.GetYamlData()) { - return false - } - } else { - if !proto.Equal(m.GetYamlData(), target.GetYamlData()) { - return false - } - } - - return true -} diff --git a/pkg/api/fed.rpc/v1/gateway_resources.pb.go b/pkg/api/fed.rpc/v1/gateway_resources.pb.go deleted file mode 100644 index ec2a67d5f..000000000 --- a/pkg/api/fed.rpc/v1/gateway_resources.pb.go +++ /dev/null @@ -1,1564 +0,0 @@ -// Code generated by skv2. DO NOT EDIT. - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.6.1 -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/gateway_resources.proto - -package v1 - -import ( - context "context" - reflect "reflect" - sync "sync" - - proto "github.com/golang/protobuf/proto" - _ "github.com/solo-io/protoc-gen-ext/extproto" - v11 "github.com/solo-io/skv2/pkg/api/core.skv2.solo.io/v1" - v1 "github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -type Gateway struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *ObjectMeta `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - Spec *v1.GatewaySpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` - Status *v1.GatewayStatus `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` - GlooInstance *v11.ObjectRef `protobuf:"bytes,4,opt,name=gloo_instance,json=glooInstance,proto3" json:"gloo_instance,omitempty"` -} - -func (x *Gateway) Reset() { - *x = Gateway{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Gateway) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Gateway) ProtoMessage() {} - -func (x *Gateway) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Gateway.ProtoReflect.Descriptor instead. -func (*Gateway) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDescGZIP(), []int{0} -} - -func (x *Gateway) GetMetadata() *ObjectMeta { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *Gateway) GetSpec() *v1.GatewaySpec { - if x != nil { - return x.Spec - } - return nil -} - -func (x *Gateway) GetStatus() *v1.GatewayStatus { - if x != nil { - return x.Status - } - return nil -} - -func (x *Gateway) GetGlooInstance() *v11.ObjectRef { - if x != nil { - return x.GlooInstance - } - return nil -} - -type VirtualService struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *ObjectMeta `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - Spec *v1.VirtualServiceSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` - Status *v1.VirtualServiceStatus `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` - GlooInstance *v11.ObjectRef `protobuf:"bytes,4,opt,name=gloo_instance,json=glooInstance,proto3" json:"gloo_instance,omitempty"` -} - -func (x *VirtualService) Reset() { - *x = VirtualService{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *VirtualService) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VirtualService) ProtoMessage() {} - -func (x *VirtualService) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use VirtualService.ProtoReflect.Descriptor instead. -func (*VirtualService) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDescGZIP(), []int{1} -} - -func (x *VirtualService) GetMetadata() *ObjectMeta { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *VirtualService) GetSpec() *v1.VirtualServiceSpec { - if x != nil { - return x.Spec - } - return nil -} - -func (x *VirtualService) GetStatus() *v1.VirtualServiceStatus { - if x != nil { - return x.Status - } - return nil -} - -func (x *VirtualService) GetGlooInstance() *v11.ObjectRef { - if x != nil { - return x.GlooInstance - } - return nil -} - -type RouteTable struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *ObjectMeta `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - Spec *v1.RouteTableSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` - Status *v1.RouteTableStatus `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` - GlooInstance *v11.ObjectRef `protobuf:"bytes,4,opt,name=gloo_instance,json=glooInstance,proto3" json:"gloo_instance,omitempty"` -} - -func (x *RouteTable) Reset() { - *x = RouteTable{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RouteTable) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RouteTable) ProtoMessage() {} - -func (x *RouteTable) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RouteTable.ProtoReflect.Descriptor instead. -func (*RouteTable) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDescGZIP(), []int{2} -} - -func (x *RouteTable) GetMetadata() *ObjectMeta { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *RouteTable) GetSpec() *v1.RouteTableSpec { - if x != nil { - return x.Spec - } - return nil -} - -func (x *RouteTable) GetStatus() *v1.RouteTableStatus { - if x != nil { - return x.Status - } - return nil -} - -func (x *RouteTable) GetGlooInstance() *v11.ObjectRef { - if x != nil { - return x.GlooInstance - } - return nil -} - -type ListGatewaysRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GlooInstanceRef *v11.ObjectRef `protobuf:"bytes,1,opt,name=gloo_instance_ref,json=glooInstanceRef,proto3" json:"gloo_instance_ref,omitempty"` -} - -func (x *ListGatewaysRequest) Reset() { - *x = ListGatewaysRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListGatewaysRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListGatewaysRequest) ProtoMessage() {} - -func (x *ListGatewaysRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListGatewaysRequest.ProtoReflect.Descriptor instead. -func (*ListGatewaysRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDescGZIP(), []int{3} -} - -func (x *ListGatewaysRequest) GetGlooInstanceRef() *v11.ObjectRef { - if x != nil { - return x.GlooInstanceRef - } - return nil -} - -type ListGatewaysResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Gateways []*Gateway `protobuf:"bytes,1,rep,name=gateways,proto3" json:"gateways,omitempty"` -} - -func (x *ListGatewaysResponse) Reset() { - *x = ListGatewaysResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListGatewaysResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListGatewaysResponse) ProtoMessage() {} - -func (x *ListGatewaysResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListGatewaysResponse.ProtoReflect.Descriptor instead. -func (*ListGatewaysResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDescGZIP(), []int{4} -} - -func (x *ListGatewaysResponse) GetGateways() []*Gateway { - if x != nil { - return x.Gateways - } - return nil -} - -type GetGatewayYamlRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GatewayRef *v11.ClusterObjectRef `protobuf:"bytes,1,opt,name=gateway_ref,json=gatewayRef,proto3" json:"gateway_ref,omitempty"` -} - -func (x *GetGatewayYamlRequest) Reset() { - *x = GetGatewayYamlRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetGatewayYamlRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetGatewayYamlRequest) ProtoMessage() {} - -func (x *GetGatewayYamlRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetGatewayYamlRequest.ProtoReflect.Descriptor instead. -func (*GetGatewayYamlRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDescGZIP(), []int{5} -} - -func (x *GetGatewayYamlRequest) GetGatewayRef() *v11.ClusterObjectRef { - if x != nil { - return x.GatewayRef - } - return nil -} - -type GetGatewayYamlResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - YamlData *ResourceYaml `protobuf:"bytes,1,opt,name=yaml_data,json=yamlData,proto3" json:"yaml_data,omitempty"` -} - -func (x *GetGatewayYamlResponse) Reset() { - *x = GetGatewayYamlResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetGatewayYamlResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetGatewayYamlResponse) ProtoMessage() {} - -func (x *GetGatewayYamlResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetGatewayYamlResponse.ProtoReflect.Descriptor instead. -func (*GetGatewayYamlResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDescGZIP(), []int{6} -} - -func (x *GetGatewayYamlResponse) GetYamlData() *ResourceYaml { - if x != nil { - return x.YamlData - } - return nil -} - -type ListVirtualServicesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GlooInstanceRef *v11.ObjectRef `protobuf:"bytes,1,opt,name=gloo_instance_ref,json=glooInstanceRef,proto3" json:"gloo_instance_ref,omitempty"` -} - -func (x *ListVirtualServicesRequest) Reset() { - *x = ListVirtualServicesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListVirtualServicesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListVirtualServicesRequest) ProtoMessage() {} - -func (x *ListVirtualServicesRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListVirtualServicesRequest.ProtoReflect.Descriptor instead. -func (*ListVirtualServicesRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDescGZIP(), []int{7} -} - -func (x *ListVirtualServicesRequest) GetGlooInstanceRef() *v11.ObjectRef { - if x != nil { - return x.GlooInstanceRef - } - return nil -} - -type ListVirtualServicesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - VirtualServices []*VirtualService `protobuf:"bytes,1,rep,name=virtual_services,json=virtualServices,proto3" json:"virtual_services,omitempty"` -} - -func (x *ListVirtualServicesResponse) Reset() { - *x = ListVirtualServicesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListVirtualServicesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListVirtualServicesResponse) ProtoMessage() {} - -func (x *ListVirtualServicesResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListVirtualServicesResponse.ProtoReflect.Descriptor instead. -func (*ListVirtualServicesResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDescGZIP(), []int{8} -} - -func (x *ListVirtualServicesResponse) GetVirtualServices() []*VirtualService { - if x != nil { - return x.VirtualServices - } - return nil -} - -type GetVirtualServiceYamlRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - VirtualServiceRef *v11.ClusterObjectRef `protobuf:"bytes,1,opt,name=virtual_service_ref,json=virtualServiceRef,proto3" json:"virtual_service_ref,omitempty"` -} - -func (x *GetVirtualServiceYamlRequest) Reset() { - *x = GetVirtualServiceYamlRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetVirtualServiceYamlRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetVirtualServiceYamlRequest) ProtoMessage() {} - -func (x *GetVirtualServiceYamlRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetVirtualServiceYamlRequest.ProtoReflect.Descriptor instead. -func (*GetVirtualServiceYamlRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDescGZIP(), []int{9} -} - -func (x *GetVirtualServiceYamlRequest) GetVirtualServiceRef() *v11.ClusterObjectRef { - if x != nil { - return x.VirtualServiceRef - } - return nil -} - -type GetVirtualServiceYamlResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - YamlData *ResourceYaml `protobuf:"bytes,1,opt,name=yaml_data,json=yamlData,proto3" json:"yaml_data,omitempty"` -} - -func (x *GetVirtualServiceYamlResponse) Reset() { - *x = GetVirtualServiceYamlResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetVirtualServiceYamlResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetVirtualServiceYamlResponse) ProtoMessage() {} - -func (x *GetVirtualServiceYamlResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetVirtualServiceYamlResponse.ProtoReflect.Descriptor instead. -func (*GetVirtualServiceYamlResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDescGZIP(), []int{10} -} - -func (x *GetVirtualServiceYamlResponse) GetYamlData() *ResourceYaml { - if x != nil { - return x.YamlData - } - return nil -} - -type ListRouteTablesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GlooInstanceRef *v11.ObjectRef `protobuf:"bytes,1,opt,name=gloo_instance_ref,json=glooInstanceRef,proto3" json:"gloo_instance_ref,omitempty"` -} - -func (x *ListRouteTablesRequest) Reset() { - *x = ListRouteTablesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListRouteTablesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListRouteTablesRequest) ProtoMessage() {} - -func (x *ListRouteTablesRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListRouteTablesRequest.ProtoReflect.Descriptor instead. -func (*ListRouteTablesRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDescGZIP(), []int{11} -} - -func (x *ListRouteTablesRequest) GetGlooInstanceRef() *v11.ObjectRef { - if x != nil { - return x.GlooInstanceRef - } - return nil -} - -type ListRouteTablesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RouteTables []*RouteTable `protobuf:"bytes,1,rep,name=route_tables,json=routeTables,proto3" json:"route_tables,omitempty"` -} - -func (x *ListRouteTablesResponse) Reset() { - *x = ListRouteTablesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListRouteTablesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListRouteTablesResponse) ProtoMessage() {} - -func (x *ListRouteTablesResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListRouteTablesResponse.ProtoReflect.Descriptor instead. -func (*ListRouteTablesResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDescGZIP(), []int{12} -} - -func (x *ListRouteTablesResponse) GetRouteTables() []*RouteTable { - if x != nil { - return x.RouteTables - } - return nil -} - -type GetRouteTableYamlRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RouteTableRef *v11.ClusterObjectRef `protobuf:"bytes,1,opt,name=route_table_ref,json=routeTableRef,proto3" json:"route_table_ref,omitempty"` -} - -func (x *GetRouteTableYamlRequest) Reset() { - *x = GetRouteTableYamlRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetRouteTableYamlRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetRouteTableYamlRequest) ProtoMessage() {} - -func (x *GetRouteTableYamlRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetRouteTableYamlRequest.ProtoReflect.Descriptor instead. -func (*GetRouteTableYamlRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDescGZIP(), []int{13} -} - -func (x *GetRouteTableYamlRequest) GetRouteTableRef() *v11.ClusterObjectRef { - if x != nil { - return x.RouteTableRef - } - return nil -} - -type GetRouteTableYamlResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - YamlData *ResourceYaml `protobuf:"bytes,1,opt,name=yaml_data,json=yamlData,proto3" json:"yaml_data,omitempty"` -} - -func (x *GetRouteTableYamlResponse) Reset() { - *x = GetRouteTableYamlResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetRouteTableYamlResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetRouteTableYamlResponse) ProtoMessage() {} - -func (x *GetRouteTableYamlResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetRouteTableYamlResponse.ProtoReflect.Descriptor instead. -func (*GetRouteTableYamlResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDescGZIP(), []int{14} -} - -func (x *GetRouteTableYamlResponse) GetYamlData() *ResourceYaml { - if x != nil { - return x.YamlData - } - return nil -} - -var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto protoreflect.FileDescriptor - -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDesc = []byte{ - 0x0a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, - 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, - 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, - 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, - 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, - 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x42, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, - 0x6f, 0x6f, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, - 0x75, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6b, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x72, - 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x72, - 0x70, 0x63, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xef, 0x01, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x37, - 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, - 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x36, 0x0a, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x41, 0x0a, 0x0d, 0x67, 0x6c, 0x6f, 0x6f, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x0c, 0x67, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x22, 0x84, 0x02, 0x0a, 0x0e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x65, 0x64, 0x2e, - 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x37, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, - 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x3d, 0x0a, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, 0x72, 0x74, - 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x41, 0x0a, 0x0d, 0x67, 0x6c, 0x6f, 0x6f, - 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x0c, 0x67, - 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xf8, 0x01, 0x0a, 0x0a, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, - 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x33, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, - 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x41, 0x0a, 0x0d, 0x67, 0x6c, 0x6f, 0x6f, 0x5f, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x0c, 0x67, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x5f, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, - 0x11, 0x67, 0x6c, 0x6f, 0x6f, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, - 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x0f, 0x67, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x66, 0x22, 0x4c, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x47, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x34, 0x0a, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x08, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x73, 0x22, 0x5d, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, - 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x52, 0x65, 0x66, 0x22, 0x54, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, - 0x0a, 0x09, 0x79, 0x61, 0x6d, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x59, 0x61, 0x6d, 0x6c, - 0x52, 0x08, 0x79, 0x61, 0x6d, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x22, 0x66, 0x0a, 0x1a, 0x4c, 0x69, - 0x73, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x11, 0x67, 0x6c, 0x6f, 0x6f, - 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x66, 0x52, 0x0f, 0x67, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, - 0x65, 0x66, 0x22, 0x69, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, - 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x4a, 0x0a, 0x10, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x65, - 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, - 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x0f, 0x76, 0x69, - 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0x73, 0x0a, - 0x1c, 0x47, 0x65, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, - 0x13, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, - 0x11, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, - 0x65, 0x66, 0x22, 0x5b, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x79, 0x61, 0x6d, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x08, 0x79, 0x61, 0x6d, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x22, - 0x62, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x11, 0x67, 0x6c, 0x6f, - 0x6f, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x66, 0x52, 0x0f, 0x67, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x52, 0x65, 0x66, 0x22, 0x59, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, - 0x0a, 0x0c, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x67, - 0x0a, 0x18, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x59, - 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x0f, 0x72, 0x6f, - 0x75, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x0d, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x22, 0x57, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x79, 0x61, 0x6d, 0x6c, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x08, 0x79, 0x61, 0x6d, 0x6c, 0x44, 0x61, 0x74, 0x61, - 0x32, 0x9c, 0x05, 0x0a, 0x12, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x41, 0x70, 0x69, 0x12, 0x5d, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x47, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x24, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, - 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x59, 0x61, 0x6d, 0x6c, 0x12, 0x26, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, - 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x27, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x59, 0x61, 0x6d, - 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x13, 0x4c, - 0x69, 0x73, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2c, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x78, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x12, 0x2d, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, - 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x69, - 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x59, 0x61, 0x6d, 0x6c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x69, 0x72, - 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x0f, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x27, 0x2e, 0x66, - 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, - 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x6c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x12, 0x29, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, - 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2a, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, - 0x39, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, - 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2f, - 0x76, 0x31, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} - -var ( - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDesc -) - -func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDescGZIP() []byte { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDescData) - }) - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDescData -} - -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes = make([]protoimpl.MessageInfo, 15) -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_goTypes = []interface{}{ - (*Gateway)(nil), // 0: fed.rpc.solo.io.Gateway - (*VirtualService)(nil), // 1: fed.rpc.solo.io.VirtualService - (*RouteTable)(nil), // 2: fed.rpc.solo.io.RouteTable - (*ListGatewaysRequest)(nil), // 3: fed.rpc.solo.io.ListGatewaysRequest - (*ListGatewaysResponse)(nil), // 4: fed.rpc.solo.io.ListGatewaysResponse - (*GetGatewayYamlRequest)(nil), // 5: fed.rpc.solo.io.GetGatewayYamlRequest - (*GetGatewayYamlResponse)(nil), // 6: fed.rpc.solo.io.GetGatewayYamlResponse - (*ListVirtualServicesRequest)(nil), // 7: fed.rpc.solo.io.ListVirtualServicesRequest - (*ListVirtualServicesResponse)(nil), // 8: fed.rpc.solo.io.ListVirtualServicesResponse - (*GetVirtualServiceYamlRequest)(nil), // 9: fed.rpc.solo.io.GetVirtualServiceYamlRequest - (*GetVirtualServiceYamlResponse)(nil), // 10: fed.rpc.solo.io.GetVirtualServiceYamlResponse - (*ListRouteTablesRequest)(nil), // 11: fed.rpc.solo.io.ListRouteTablesRequest - (*ListRouteTablesResponse)(nil), // 12: fed.rpc.solo.io.ListRouteTablesResponse - (*GetRouteTableYamlRequest)(nil), // 13: fed.rpc.solo.io.GetRouteTableYamlRequest - (*GetRouteTableYamlResponse)(nil), // 14: fed.rpc.solo.io.GetRouteTableYamlResponse - (*ObjectMeta)(nil), // 15: fed.rpc.solo.io.ObjectMeta - (*v1.GatewaySpec)(nil), // 16: gateway.solo.io.GatewaySpec - (*v1.GatewayStatus)(nil), // 17: gateway.solo.io.GatewayStatus - (*v11.ObjectRef)(nil), // 18: core.skv2.solo.io.ObjectRef - (*v1.VirtualServiceSpec)(nil), // 19: gateway.solo.io.VirtualServiceSpec - (*v1.VirtualServiceStatus)(nil), // 20: gateway.solo.io.VirtualServiceStatus - (*v1.RouteTableSpec)(nil), // 21: gateway.solo.io.RouteTableSpec - (*v1.RouteTableStatus)(nil), // 22: gateway.solo.io.RouteTableStatus - (*v11.ClusterObjectRef)(nil), // 23: core.skv2.solo.io.ClusterObjectRef - (*ResourceYaml)(nil), // 24: fed.rpc.solo.io.ResourceYaml -} -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_depIdxs = []int32{ - 15, // 0: fed.rpc.solo.io.Gateway.metadata:type_name -> fed.rpc.solo.io.ObjectMeta - 16, // 1: fed.rpc.solo.io.Gateway.spec:type_name -> gateway.solo.io.GatewaySpec - 17, // 2: fed.rpc.solo.io.Gateway.status:type_name -> gateway.solo.io.GatewayStatus - 18, // 3: fed.rpc.solo.io.Gateway.gloo_instance:type_name -> core.skv2.solo.io.ObjectRef - 15, // 4: fed.rpc.solo.io.VirtualService.metadata:type_name -> fed.rpc.solo.io.ObjectMeta - 19, // 5: fed.rpc.solo.io.VirtualService.spec:type_name -> gateway.solo.io.VirtualServiceSpec - 20, // 6: fed.rpc.solo.io.VirtualService.status:type_name -> gateway.solo.io.VirtualServiceStatus - 18, // 7: fed.rpc.solo.io.VirtualService.gloo_instance:type_name -> core.skv2.solo.io.ObjectRef - 15, // 8: fed.rpc.solo.io.RouteTable.metadata:type_name -> fed.rpc.solo.io.ObjectMeta - 21, // 9: fed.rpc.solo.io.RouteTable.spec:type_name -> gateway.solo.io.RouteTableSpec - 22, // 10: fed.rpc.solo.io.RouteTable.status:type_name -> gateway.solo.io.RouteTableStatus - 18, // 11: fed.rpc.solo.io.RouteTable.gloo_instance:type_name -> core.skv2.solo.io.ObjectRef - 18, // 12: fed.rpc.solo.io.ListGatewaysRequest.gloo_instance_ref:type_name -> core.skv2.solo.io.ObjectRef - 0, // 13: fed.rpc.solo.io.ListGatewaysResponse.gateways:type_name -> fed.rpc.solo.io.Gateway - 23, // 14: fed.rpc.solo.io.GetGatewayYamlRequest.gateway_ref:type_name -> core.skv2.solo.io.ClusterObjectRef - 24, // 15: fed.rpc.solo.io.GetGatewayYamlResponse.yaml_data:type_name -> fed.rpc.solo.io.ResourceYaml - 18, // 16: fed.rpc.solo.io.ListVirtualServicesRequest.gloo_instance_ref:type_name -> core.skv2.solo.io.ObjectRef - 1, // 17: fed.rpc.solo.io.ListVirtualServicesResponse.virtual_services:type_name -> fed.rpc.solo.io.VirtualService - 23, // 18: fed.rpc.solo.io.GetVirtualServiceYamlRequest.virtual_service_ref:type_name -> core.skv2.solo.io.ClusterObjectRef - 24, // 19: fed.rpc.solo.io.GetVirtualServiceYamlResponse.yaml_data:type_name -> fed.rpc.solo.io.ResourceYaml - 18, // 20: fed.rpc.solo.io.ListRouteTablesRequest.gloo_instance_ref:type_name -> core.skv2.solo.io.ObjectRef - 2, // 21: fed.rpc.solo.io.ListRouteTablesResponse.route_tables:type_name -> fed.rpc.solo.io.RouteTable - 23, // 22: fed.rpc.solo.io.GetRouteTableYamlRequest.route_table_ref:type_name -> core.skv2.solo.io.ClusterObjectRef - 24, // 23: fed.rpc.solo.io.GetRouteTableYamlResponse.yaml_data:type_name -> fed.rpc.solo.io.ResourceYaml - 3, // 24: fed.rpc.solo.io.GatewayResourceApi.ListGateways:input_type -> fed.rpc.solo.io.ListGatewaysRequest - 5, // 25: fed.rpc.solo.io.GatewayResourceApi.GetGatewayYaml:input_type -> fed.rpc.solo.io.GetGatewayYamlRequest - 7, // 26: fed.rpc.solo.io.GatewayResourceApi.ListVirtualServices:input_type -> fed.rpc.solo.io.ListVirtualServicesRequest - 9, // 27: fed.rpc.solo.io.GatewayResourceApi.GetVirtualServiceYaml:input_type -> fed.rpc.solo.io.GetVirtualServiceYamlRequest - 11, // 28: fed.rpc.solo.io.GatewayResourceApi.ListRouteTables:input_type -> fed.rpc.solo.io.ListRouteTablesRequest - 13, // 29: fed.rpc.solo.io.GatewayResourceApi.GetRouteTableYaml:input_type -> fed.rpc.solo.io.GetRouteTableYamlRequest - 4, // 30: fed.rpc.solo.io.GatewayResourceApi.ListGateways:output_type -> fed.rpc.solo.io.ListGatewaysResponse - 6, // 31: fed.rpc.solo.io.GatewayResourceApi.GetGatewayYaml:output_type -> fed.rpc.solo.io.GetGatewayYamlResponse - 8, // 32: fed.rpc.solo.io.GatewayResourceApi.ListVirtualServices:output_type -> fed.rpc.solo.io.ListVirtualServicesResponse - 10, // 33: fed.rpc.solo.io.GatewayResourceApi.GetVirtualServiceYaml:output_type -> fed.rpc.solo.io.GetVirtualServiceYamlResponse - 12, // 34: fed.rpc.solo.io.GatewayResourceApi.ListRouteTables:output_type -> fed.rpc.solo.io.ListRouteTablesResponse - 14, // 35: fed.rpc.solo.io.GatewayResourceApi.GetRouteTableYaml:output_type -> fed.rpc.solo.io.GetRouteTableYamlResponse - 30, // [30:36] is the sub-list for method output_type - 24, // [24:30] is the sub-list for method input_type - 24, // [24:24] is the sub-list for extension type_name - 24, // [24:24] is the sub-list for extension extendee - 0, // [0:24] is the sub-list for field type_name -} - -func init() { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_init() } -func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_init() { - if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto != nil { - return - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_init() - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Gateway); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VirtualService); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteTable); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListGatewaysRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListGatewaysResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetGatewayYamlRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetGatewayYamlResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListVirtualServicesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListVirtualServicesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVirtualServiceYamlRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVirtualServiceYamlResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListRouteTablesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListRouteTablesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetRouteTableYamlRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetRouteTableYamlResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDesc, - NumEnums: 0, - NumMessages: 15, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_goTypes, - DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_depIdxs, - MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_msgTypes, - }.Build() - File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_rawDesc = nil - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_goTypes = nil - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gateway_resources_proto_depIdxs = nil -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConnInterface - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion6 - -// GatewayResourceApiClient is the client API for GatewayResourceApi service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type GatewayResourceApiClient interface { - ListGateways(ctx context.Context, in *ListGatewaysRequest, opts ...grpc.CallOption) (*ListGatewaysResponse, error) - GetGatewayYaml(ctx context.Context, in *GetGatewayYamlRequest, opts ...grpc.CallOption) (*GetGatewayYamlResponse, error) - ListVirtualServices(ctx context.Context, in *ListVirtualServicesRequest, opts ...grpc.CallOption) (*ListVirtualServicesResponse, error) - GetVirtualServiceYaml(ctx context.Context, in *GetVirtualServiceYamlRequest, opts ...grpc.CallOption) (*GetVirtualServiceYamlResponse, error) - ListRouteTables(ctx context.Context, in *ListRouteTablesRequest, opts ...grpc.CallOption) (*ListRouteTablesResponse, error) - GetRouteTableYaml(ctx context.Context, in *GetRouteTableYamlRequest, opts ...grpc.CallOption) (*GetRouteTableYamlResponse, error) -} - -type gatewayResourceApiClient struct { - cc grpc.ClientConnInterface -} - -func NewGatewayResourceApiClient(cc grpc.ClientConnInterface) GatewayResourceApiClient { - return &gatewayResourceApiClient{cc} -} - -func (c *gatewayResourceApiClient) ListGateways(ctx context.Context, in *ListGatewaysRequest, opts ...grpc.CallOption) (*ListGatewaysResponse, error) { - out := new(ListGatewaysResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.GatewayResourceApi/ListGateways", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayResourceApiClient) GetGatewayYaml(ctx context.Context, in *GetGatewayYamlRequest, opts ...grpc.CallOption) (*GetGatewayYamlResponse, error) { - out := new(GetGatewayYamlResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.GatewayResourceApi/GetGatewayYaml", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayResourceApiClient) ListVirtualServices(ctx context.Context, in *ListVirtualServicesRequest, opts ...grpc.CallOption) (*ListVirtualServicesResponse, error) { - out := new(ListVirtualServicesResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.GatewayResourceApi/ListVirtualServices", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayResourceApiClient) GetVirtualServiceYaml(ctx context.Context, in *GetVirtualServiceYamlRequest, opts ...grpc.CallOption) (*GetVirtualServiceYamlResponse, error) { - out := new(GetVirtualServiceYamlResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.GatewayResourceApi/GetVirtualServiceYaml", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayResourceApiClient) ListRouteTables(ctx context.Context, in *ListRouteTablesRequest, opts ...grpc.CallOption) (*ListRouteTablesResponse, error) { - out := new(ListRouteTablesResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.GatewayResourceApi/ListRouteTables", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayResourceApiClient) GetRouteTableYaml(ctx context.Context, in *GetRouteTableYamlRequest, opts ...grpc.CallOption) (*GetRouteTableYamlResponse, error) { - out := new(GetRouteTableYamlResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.GatewayResourceApi/GetRouteTableYaml", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// GatewayResourceApiServer is the server API for GatewayResourceApi service. -type GatewayResourceApiServer interface { - ListGateways(context.Context, *ListGatewaysRequest) (*ListGatewaysResponse, error) - GetGatewayYaml(context.Context, *GetGatewayYamlRequest) (*GetGatewayYamlResponse, error) - ListVirtualServices(context.Context, *ListVirtualServicesRequest) (*ListVirtualServicesResponse, error) - GetVirtualServiceYaml(context.Context, *GetVirtualServiceYamlRequest) (*GetVirtualServiceYamlResponse, error) - ListRouteTables(context.Context, *ListRouteTablesRequest) (*ListRouteTablesResponse, error) - GetRouteTableYaml(context.Context, *GetRouteTableYamlRequest) (*GetRouteTableYamlResponse, error) -} - -// UnimplementedGatewayResourceApiServer can be embedded to have forward compatible implementations. -type UnimplementedGatewayResourceApiServer struct { -} - -func (*UnimplementedGatewayResourceApiServer) ListGateways(context.Context, *ListGatewaysRequest) (*ListGatewaysResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListGateways not implemented") -} -func (*UnimplementedGatewayResourceApiServer) GetGatewayYaml(context.Context, *GetGatewayYamlRequest) (*GetGatewayYamlResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetGatewayYaml not implemented") -} -func (*UnimplementedGatewayResourceApiServer) ListVirtualServices(context.Context, *ListVirtualServicesRequest) (*ListVirtualServicesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListVirtualServices not implemented") -} -func (*UnimplementedGatewayResourceApiServer) GetVirtualServiceYaml(context.Context, *GetVirtualServiceYamlRequest) (*GetVirtualServiceYamlResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetVirtualServiceYaml not implemented") -} -func (*UnimplementedGatewayResourceApiServer) ListRouteTables(context.Context, *ListRouteTablesRequest) (*ListRouteTablesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListRouteTables not implemented") -} -func (*UnimplementedGatewayResourceApiServer) GetRouteTableYaml(context.Context, *GetRouteTableYamlRequest) (*GetRouteTableYamlResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetRouteTableYaml not implemented") -} - -func RegisterGatewayResourceApiServer(s *grpc.Server, srv GatewayResourceApiServer) { - s.RegisterService(&_GatewayResourceApi_serviceDesc, srv) -} - -func _GatewayResourceApi_ListGateways_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListGatewaysRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayResourceApiServer).ListGateways(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.GatewayResourceApi/ListGateways", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayResourceApiServer).ListGateways(ctx, req.(*ListGatewaysRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GatewayResourceApi_GetGatewayYaml_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetGatewayYamlRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayResourceApiServer).GetGatewayYaml(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.GatewayResourceApi/GetGatewayYaml", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayResourceApiServer).GetGatewayYaml(ctx, req.(*GetGatewayYamlRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GatewayResourceApi_ListVirtualServices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListVirtualServicesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayResourceApiServer).ListVirtualServices(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.GatewayResourceApi/ListVirtualServices", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayResourceApiServer).ListVirtualServices(ctx, req.(*ListVirtualServicesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GatewayResourceApi_GetVirtualServiceYaml_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetVirtualServiceYamlRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayResourceApiServer).GetVirtualServiceYaml(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.GatewayResourceApi/GetVirtualServiceYaml", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayResourceApiServer).GetVirtualServiceYaml(ctx, req.(*GetVirtualServiceYamlRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GatewayResourceApi_ListRouteTables_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListRouteTablesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayResourceApiServer).ListRouteTables(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.GatewayResourceApi/ListRouteTables", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayResourceApiServer).ListRouteTables(ctx, req.(*ListRouteTablesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GatewayResourceApi_GetRouteTableYaml_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetRouteTableYamlRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayResourceApiServer).GetRouteTableYaml(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.GatewayResourceApi/GetRouteTableYaml", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayResourceApiServer).GetRouteTableYaml(ctx, req.(*GetRouteTableYamlRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _GatewayResourceApi_serviceDesc = grpc.ServiceDesc{ - ServiceName: "fed.rpc.solo.io.GatewayResourceApi", - HandlerType: (*GatewayResourceApiServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListGateways", - Handler: _GatewayResourceApi_ListGateways_Handler, - }, - { - MethodName: "GetGatewayYaml", - Handler: _GatewayResourceApi_GetGatewayYaml_Handler, - }, - { - MethodName: "ListVirtualServices", - Handler: _GatewayResourceApi_ListVirtualServices_Handler, - }, - { - MethodName: "GetVirtualServiceYaml", - Handler: _GatewayResourceApi_GetVirtualServiceYaml_Handler, - }, - { - MethodName: "ListRouteTables", - Handler: _GatewayResourceApi_ListRouteTables_Handler, - }, - { - MethodName: "GetRouteTableYaml", - Handler: _GatewayResourceApi_GetRouteTableYaml_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/gateway_resources.proto", -} diff --git a/pkg/api/fed.rpc/v1/gateway_resources.pb.hash.go b/pkg/api/fed.rpc/v1/gateway_resources.pb.hash.go deleted file mode 100644 index 4b0257764..000000000 --- a/pkg/api/fed.rpc/v1/gateway_resources.pb.hash.go +++ /dev/null @@ -1,614 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/gateway_resources.proto - -package v1 - -import ( - "encoding/binary" - "errors" - "fmt" - "hash" - "hash/fnv" - - "github.com/mitchellh/hashstructure" - safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = new(hash.Hash64) - _ = fnv.New64 - _ = hashstructure.Hash - _ = new(safe_hasher.SafeHasher) -) - -// Hash function -func (m *Gateway) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.Gateway")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetStatus()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetStatus(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetGlooInstance()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetGlooInstance(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *VirtualService) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.VirtualService")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetStatus()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetStatus(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetGlooInstance()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetGlooInstance(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *RouteTable) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.RouteTable")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetStatus()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetStatus(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetGlooInstance()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetGlooInstance(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListGatewaysRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListGatewaysRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetGlooInstanceRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetGlooInstanceRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListGatewaysResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListGatewaysResponse")); err != nil { - return 0, err - } - - for _, v := range m.GetGateways() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetGatewayYamlRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetGatewayYamlRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetGatewayRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetGatewayRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetGatewayYamlResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetGatewayYamlResponse")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetYamlData()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetYamlData(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListVirtualServicesRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListVirtualServicesRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetGlooInstanceRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetGlooInstanceRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListVirtualServicesResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListVirtualServicesResponse")); err != nil { - return 0, err - } - - for _, v := range m.GetVirtualServices() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetVirtualServiceYamlRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetVirtualServiceYamlRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetVirtualServiceRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetVirtualServiceRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetVirtualServiceYamlResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetVirtualServiceYamlResponse")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetYamlData()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetYamlData(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListRouteTablesRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListRouteTablesRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetGlooInstanceRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetGlooInstanceRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListRouteTablesResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListRouteTablesResponse")); err != nil { - return 0, err - } - - for _, v := range m.GetRouteTables() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetRouteTableYamlRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetRouteTableYamlRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetRouteTableRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetRouteTableRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetRouteTableYamlResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetRouteTableYamlResponse")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetYamlData()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetYamlData(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} diff --git a/pkg/api/fed.rpc/v1/gloo_resources.pb.equal.go b/pkg/api/fed.rpc/v1/gloo_resources.pb.equal.go deleted file mode 100644 index a6dbb70d3..000000000 --- a/pkg/api/fed.rpc/v1/gloo_resources.pb.equal.go +++ /dev/null @@ -1,854 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/gloo_resources.proto - -package v1 - -import ( - "bytes" - "encoding/binary" - "errors" - "fmt" - "strings" - - "github.com/golang/protobuf/proto" - equality "github.com/solo-io/protoc-gen-ext/pkg/equality" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = bytes.Compare - _ = strings.Compare - _ = equality.Equalizer(nil) - _ = proto.Message(nil) -) - -// Equal function -func (m *Upstream) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*Upstream) - if !ok { - that2, ok := that.(Upstream) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadata()) { - return false - } - } else { - if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { - return false - } - } - - if h, ok := interface{}(m.GetSpec()).(equality.Equalizer); ok { - if !h.Equal(target.GetSpec()) { - return false - } - } else { - if !proto.Equal(m.GetSpec(), target.GetSpec()) { - return false - } - } - - if h, ok := interface{}(m.GetStatus()).(equality.Equalizer); ok { - if !h.Equal(target.GetStatus()) { - return false - } - } else { - if !proto.Equal(m.GetStatus(), target.GetStatus()) { - return false - } - } - - if h, ok := interface{}(m.GetGlooInstance()).(equality.Equalizer); ok { - if !h.Equal(target.GetGlooInstance()) { - return false - } - } else { - if !proto.Equal(m.GetGlooInstance(), target.GetGlooInstance()) { - return false - } - } - - return true -} - -// Equal function -func (m *UpstreamGroup) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*UpstreamGroup) - if !ok { - that2, ok := that.(UpstreamGroup) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadata()) { - return false - } - } else { - if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { - return false - } - } - - if h, ok := interface{}(m.GetSpec()).(equality.Equalizer); ok { - if !h.Equal(target.GetSpec()) { - return false - } - } else { - if !proto.Equal(m.GetSpec(), target.GetSpec()) { - return false - } - } - - if h, ok := interface{}(m.GetStatus()).(equality.Equalizer); ok { - if !h.Equal(target.GetStatus()) { - return false - } - } else { - if !proto.Equal(m.GetStatus(), target.GetStatus()) { - return false - } - } - - if h, ok := interface{}(m.GetGlooInstance()).(equality.Equalizer); ok { - if !h.Equal(target.GetGlooInstance()) { - return false - } - } else { - if !proto.Equal(m.GetGlooInstance(), target.GetGlooInstance()) { - return false - } - } - - return true -} - -// Equal function -func (m *Settings) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*Settings) - if !ok { - that2, ok := that.(Settings) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadata()) { - return false - } - } else { - if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { - return false - } - } - - if h, ok := interface{}(m.GetSpec()).(equality.Equalizer); ok { - if !h.Equal(target.GetSpec()) { - return false - } - } else { - if !proto.Equal(m.GetSpec(), target.GetSpec()) { - return false - } - } - - if h, ok := interface{}(m.GetStatus()).(equality.Equalizer); ok { - if !h.Equal(target.GetStatus()) { - return false - } - } else { - if !proto.Equal(m.GetStatus(), target.GetStatus()) { - return false - } - } - - if h, ok := interface{}(m.GetGlooInstance()).(equality.Equalizer); ok { - if !h.Equal(target.GetGlooInstance()) { - return false - } - } else { - if !proto.Equal(m.GetGlooInstance(), target.GetGlooInstance()) { - return false - } - } - - return true -} - -// Equal function -func (m *Proxy) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*Proxy) - if !ok { - that2, ok := that.(Proxy) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadata()) { - return false - } - } else { - if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { - return false - } - } - - if h, ok := interface{}(m.GetSpec()).(equality.Equalizer); ok { - if !h.Equal(target.GetSpec()) { - return false - } - } else { - if !proto.Equal(m.GetSpec(), target.GetSpec()) { - return false - } - } - - if h, ok := interface{}(m.GetStatus()).(equality.Equalizer); ok { - if !h.Equal(target.GetStatus()) { - return false - } - } else { - if !proto.Equal(m.GetStatus(), target.GetStatus()) { - return false - } - } - - if h, ok := interface{}(m.GetGlooInstance()).(equality.Equalizer); ok { - if !h.Equal(target.GetGlooInstance()) { - return false - } - } else { - if !proto.Equal(m.GetGlooInstance(), target.GetGlooInstance()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListUpstreamsRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListUpstreamsRequest) - if !ok { - that2, ok := that.(ListUpstreamsRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetGlooInstanceRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetGlooInstanceRef()) { - return false - } - } else { - if !proto.Equal(m.GetGlooInstanceRef(), target.GetGlooInstanceRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListUpstreamsResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListUpstreamsResponse) - if !ok { - that2, ok := that.(ListUpstreamsResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if len(m.GetUpstreams()) != len(target.GetUpstreams()) { - return false - } - for idx, v := range m.GetUpstreams() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetUpstreams()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetUpstreams()[idx]) { - return false - } - } - - } - - return true -} - -// Equal function -func (m *GetUpstreamYamlRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetUpstreamYamlRequest) - if !ok { - that2, ok := that.(GetUpstreamYamlRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetUpstreamRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetUpstreamRef()) { - return false - } - } else { - if !proto.Equal(m.GetUpstreamRef(), target.GetUpstreamRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *GetUpstreamYamlResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetUpstreamYamlResponse) - if !ok { - that2, ok := that.(GetUpstreamYamlResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetYamlData()).(equality.Equalizer); ok { - if !h.Equal(target.GetYamlData()) { - return false - } - } else { - if !proto.Equal(m.GetYamlData(), target.GetYamlData()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListUpstreamGroupsRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListUpstreamGroupsRequest) - if !ok { - that2, ok := that.(ListUpstreamGroupsRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetGlooInstanceRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetGlooInstanceRef()) { - return false - } - } else { - if !proto.Equal(m.GetGlooInstanceRef(), target.GetGlooInstanceRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListUpstreamGroupsResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListUpstreamGroupsResponse) - if !ok { - that2, ok := that.(ListUpstreamGroupsResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if len(m.GetUpstreamGroups()) != len(target.GetUpstreamGroups()) { - return false - } - for idx, v := range m.GetUpstreamGroups() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetUpstreamGroups()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetUpstreamGroups()[idx]) { - return false - } - } - - } - - return true -} - -// Equal function -func (m *GetUpstreamGroupYamlRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetUpstreamGroupYamlRequest) - if !ok { - that2, ok := that.(GetUpstreamGroupYamlRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetUpstreamGroupRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetUpstreamGroupRef()) { - return false - } - } else { - if !proto.Equal(m.GetUpstreamGroupRef(), target.GetUpstreamGroupRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *GetUpstreamGroupYamlResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetUpstreamGroupYamlResponse) - if !ok { - that2, ok := that.(GetUpstreamGroupYamlResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetYamlData()).(equality.Equalizer); ok { - if !h.Equal(target.GetYamlData()) { - return false - } - } else { - if !proto.Equal(m.GetYamlData(), target.GetYamlData()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListSettingsRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListSettingsRequest) - if !ok { - that2, ok := that.(ListSettingsRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetGlooInstanceRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetGlooInstanceRef()) { - return false - } - } else { - if !proto.Equal(m.GetGlooInstanceRef(), target.GetGlooInstanceRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListSettingsResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListSettingsResponse) - if !ok { - that2, ok := that.(ListSettingsResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if len(m.GetSettings()) != len(target.GetSettings()) { - return false - } - for idx, v := range m.GetSettings() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetSettings()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetSettings()[idx]) { - return false - } - } - - } - - return true -} - -// Equal function -func (m *GetSettingsYamlRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetSettingsYamlRequest) - if !ok { - that2, ok := that.(GetSettingsYamlRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetSettingsRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetSettingsRef()) { - return false - } - } else { - if !proto.Equal(m.GetSettingsRef(), target.GetSettingsRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *GetSettingsYamlResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetSettingsYamlResponse) - if !ok { - that2, ok := that.(GetSettingsYamlResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetYamlData()).(equality.Equalizer); ok { - if !h.Equal(target.GetYamlData()) { - return false - } - } else { - if !proto.Equal(m.GetYamlData(), target.GetYamlData()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListProxiesRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListProxiesRequest) - if !ok { - that2, ok := that.(ListProxiesRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetGlooInstanceRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetGlooInstanceRef()) { - return false - } - } else { - if !proto.Equal(m.GetGlooInstanceRef(), target.GetGlooInstanceRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListProxiesResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListProxiesResponse) - if !ok { - that2, ok := that.(ListProxiesResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if len(m.GetProxies()) != len(target.GetProxies()) { - return false - } - for idx, v := range m.GetProxies() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetProxies()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetProxies()[idx]) { - return false - } - } - - } - - return true -} - -// Equal function -func (m *GetProxyYamlRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetProxyYamlRequest) - if !ok { - that2, ok := that.(GetProxyYamlRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetProxyRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetProxyRef()) { - return false - } - } else { - if !proto.Equal(m.GetProxyRef(), target.GetProxyRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *GetProxyYamlResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetProxyYamlResponse) - if !ok { - that2, ok := that.(GetProxyYamlResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetYamlData()).(equality.Equalizer); ok { - if !h.Equal(target.GetYamlData()) { - return false - } - } else { - if !proto.Equal(m.GetYamlData(), target.GetYamlData()) { - return false - } - } - - return true -} diff --git a/pkg/api/fed.rpc/v1/gloo_resources.pb.go b/pkg/api/fed.rpc/v1/gloo_resources.pb.go deleted file mode 100644 index ecab2c7bd..000000000 --- a/pkg/api/fed.rpc/v1/gloo_resources.pb.go +++ /dev/null @@ -1,2015 +0,0 @@ -// Code generated by skv2. DO NOT EDIT. - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.6.1 -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/gloo_resources.proto - -package v1 - -import ( - context "context" - reflect "reflect" - sync "sync" - - proto "github.com/golang/protobuf/proto" - _ "github.com/solo-io/protoc-gen-ext/extproto" - v11 "github.com/solo-io/skv2/pkg/api/core.skv2.solo.io/v1" - v1 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -type Upstream struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *ObjectMeta `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - Spec *v1.UpstreamSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` - Status *v1.UpstreamStatus `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` - GlooInstance *v11.ObjectRef `protobuf:"bytes,4,opt,name=gloo_instance,json=glooInstance,proto3" json:"gloo_instance,omitempty"` -} - -func (x *Upstream) Reset() { - *x = Upstream{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Upstream) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Upstream) ProtoMessage() {} - -func (x *Upstream) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Upstream.ProtoReflect.Descriptor instead. -func (*Upstream) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescGZIP(), []int{0} -} - -func (x *Upstream) GetMetadata() *ObjectMeta { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *Upstream) GetSpec() *v1.UpstreamSpec { - if x != nil { - return x.Spec - } - return nil -} - -func (x *Upstream) GetStatus() *v1.UpstreamStatus { - if x != nil { - return x.Status - } - return nil -} - -func (x *Upstream) GetGlooInstance() *v11.ObjectRef { - if x != nil { - return x.GlooInstance - } - return nil -} - -type UpstreamGroup struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *ObjectMeta `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - Spec *v1.UpstreamGroupSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` - Status *v1.UpstreamGroupStatus `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` - GlooInstance *v11.ObjectRef `protobuf:"bytes,4,opt,name=gloo_instance,json=glooInstance,proto3" json:"gloo_instance,omitempty"` -} - -func (x *UpstreamGroup) Reset() { - *x = UpstreamGroup{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UpstreamGroup) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpstreamGroup) ProtoMessage() {} - -func (x *UpstreamGroup) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpstreamGroup.ProtoReflect.Descriptor instead. -func (*UpstreamGroup) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescGZIP(), []int{1} -} - -func (x *UpstreamGroup) GetMetadata() *ObjectMeta { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *UpstreamGroup) GetSpec() *v1.UpstreamGroupSpec { - if x != nil { - return x.Spec - } - return nil -} - -func (x *UpstreamGroup) GetStatus() *v1.UpstreamGroupStatus { - if x != nil { - return x.Status - } - return nil -} - -func (x *UpstreamGroup) GetGlooInstance() *v11.ObjectRef { - if x != nil { - return x.GlooInstance - } - return nil -} - -type Settings struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *ObjectMeta `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - Spec *v1.SettingsSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` - Status *v1.SettingsStatus `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` - GlooInstance *v11.ObjectRef `protobuf:"bytes,4,opt,name=gloo_instance,json=glooInstance,proto3" json:"gloo_instance,omitempty"` -} - -func (x *Settings) Reset() { - *x = Settings{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Settings) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Settings) ProtoMessage() {} - -func (x *Settings) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Settings.ProtoReflect.Descriptor instead. -func (*Settings) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescGZIP(), []int{2} -} - -func (x *Settings) GetMetadata() *ObjectMeta { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *Settings) GetSpec() *v1.SettingsSpec { - if x != nil { - return x.Spec - } - return nil -} - -func (x *Settings) GetStatus() *v1.SettingsStatus { - if x != nil { - return x.Status - } - return nil -} - -func (x *Settings) GetGlooInstance() *v11.ObjectRef { - if x != nil { - return x.GlooInstance - } - return nil -} - -type Proxy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *ObjectMeta `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - Spec *v1.ProxySpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` - Status *v1.ProxyStatus `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` - GlooInstance *v11.ObjectRef `protobuf:"bytes,4,opt,name=gloo_instance,json=glooInstance,proto3" json:"gloo_instance,omitempty"` -} - -func (x *Proxy) Reset() { - *x = Proxy{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Proxy) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Proxy) ProtoMessage() {} - -func (x *Proxy) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Proxy.ProtoReflect.Descriptor instead. -func (*Proxy) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescGZIP(), []int{3} -} - -func (x *Proxy) GetMetadata() *ObjectMeta { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *Proxy) GetSpec() *v1.ProxySpec { - if x != nil { - return x.Spec - } - return nil -} - -func (x *Proxy) GetStatus() *v1.ProxyStatus { - if x != nil { - return x.Status - } - return nil -} - -func (x *Proxy) GetGlooInstance() *v11.ObjectRef { - if x != nil { - return x.GlooInstance - } - return nil -} - -type ListUpstreamsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GlooInstanceRef *v11.ObjectRef `protobuf:"bytes,1,opt,name=gloo_instance_ref,json=glooInstanceRef,proto3" json:"gloo_instance_ref,omitempty"` -} - -func (x *ListUpstreamsRequest) Reset() { - *x = ListUpstreamsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListUpstreamsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListUpstreamsRequest) ProtoMessage() {} - -func (x *ListUpstreamsRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListUpstreamsRequest.ProtoReflect.Descriptor instead. -func (*ListUpstreamsRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescGZIP(), []int{4} -} - -func (x *ListUpstreamsRequest) GetGlooInstanceRef() *v11.ObjectRef { - if x != nil { - return x.GlooInstanceRef - } - return nil -} - -type ListUpstreamsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Upstreams []*Upstream `protobuf:"bytes,1,rep,name=upstreams,proto3" json:"upstreams,omitempty"` -} - -func (x *ListUpstreamsResponse) Reset() { - *x = ListUpstreamsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListUpstreamsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListUpstreamsResponse) ProtoMessage() {} - -func (x *ListUpstreamsResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListUpstreamsResponse.ProtoReflect.Descriptor instead. -func (*ListUpstreamsResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescGZIP(), []int{5} -} - -func (x *ListUpstreamsResponse) GetUpstreams() []*Upstream { - if x != nil { - return x.Upstreams - } - return nil -} - -type GetUpstreamYamlRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UpstreamRef *v11.ClusterObjectRef `protobuf:"bytes,1,opt,name=upstream_ref,json=upstreamRef,proto3" json:"upstream_ref,omitempty"` -} - -func (x *GetUpstreamYamlRequest) Reset() { - *x = GetUpstreamYamlRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetUpstreamYamlRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetUpstreamYamlRequest) ProtoMessage() {} - -func (x *GetUpstreamYamlRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetUpstreamYamlRequest.ProtoReflect.Descriptor instead. -func (*GetUpstreamYamlRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescGZIP(), []int{6} -} - -func (x *GetUpstreamYamlRequest) GetUpstreamRef() *v11.ClusterObjectRef { - if x != nil { - return x.UpstreamRef - } - return nil -} - -type GetUpstreamYamlResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - YamlData *ResourceYaml `protobuf:"bytes,1,opt,name=yaml_data,json=yamlData,proto3" json:"yaml_data,omitempty"` -} - -func (x *GetUpstreamYamlResponse) Reset() { - *x = GetUpstreamYamlResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetUpstreamYamlResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetUpstreamYamlResponse) ProtoMessage() {} - -func (x *GetUpstreamYamlResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetUpstreamYamlResponse.ProtoReflect.Descriptor instead. -func (*GetUpstreamYamlResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescGZIP(), []int{7} -} - -func (x *GetUpstreamYamlResponse) GetYamlData() *ResourceYaml { - if x != nil { - return x.YamlData - } - return nil -} - -type ListUpstreamGroupsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GlooInstanceRef *v11.ObjectRef `protobuf:"bytes,1,opt,name=gloo_instance_ref,json=glooInstanceRef,proto3" json:"gloo_instance_ref,omitempty"` -} - -func (x *ListUpstreamGroupsRequest) Reset() { - *x = ListUpstreamGroupsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListUpstreamGroupsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListUpstreamGroupsRequest) ProtoMessage() {} - -func (x *ListUpstreamGroupsRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListUpstreamGroupsRequest.ProtoReflect.Descriptor instead. -func (*ListUpstreamGroupsRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescGZIP(), []int{8} -} - -func (x *ListUpstreamGroupsRequest) GetGlooInstanceRef() *v11.ObjectRef { - if x != nil { - return x.GlooInstanceRef - } - return nil -} - -type ListUpstreamGroupsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UpstreamGroups []*UpstreamGroup `protobuf:"bytes,1,rep,name=upstream_groups,json=upstreamGroups,proto3" json:"upstream_groups,omitempty"` -} - -func (x *ListUpstreamGroupsResponse) Reset() { - *x = ListUpstreamGroupsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListUpstreamGroupsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListUpstreamGroupsResponse) ProtoMessage() {} - -func (x *ListUpstreamGroupsResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListUpstreamGroupsResponse.ProtoReflect.Descriptor instead. -func (*ListUpstreamGroupsResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescGZIP(), []int{9} -} - -func (x *ListUpstreamGroupsResponse) GetUpstreamGroups() []*UpstreamGroup { - if x != nil { - return x.UpstreamGroups - } - return nil -} - -type GetUpstreamGroupYamlRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UpstreamGroupRef *v11.ClusterObjectRef `protobuf:"bytes,1,opt,name=upstream_group_ref,json=upstreamGroupRef,proto3" json:"upstream_group_ref,omitempty"` -} - -func (x *GetUpstreamGroupYamlRequest) Reset() { - *x = GetUpstreamGroupYamlRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetUpstreamGroupYamlRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetUpstreamGroupYamlRequest) ProtoMessage() {} - -func (x *GetUpstreamGroupYamlRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetUpstreamGroupYamlRequest.ProtoReflect.Descriptor instead. -func (*GetUpstreamGroupYamlRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescGZIP(), []int{10} -} - -func (x *GetUpstreamGroupYamlRequest) GetUpstreamGroupRef() *v11.ClusterObjectRef { - if x != nil { - return x.UpstreamGroupRef - } - return nil -} - -type GetUpstreamGroupYamlResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - YamlData *ResourceYaml `protobuf:"bytes,1,opt,name=yaml_data,json=yamlData,proto3" json:"yaml_data,omitempty"` -} - -func (x *GetUpstreamGroupYamlResponse) Reset() { - *x = GetUpstreamGroupYamlResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetUpstreamGroupYamlResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetUpstreamGroupYamlResponse) ProtoMessage() {} - -func (x *GetUpstreamGroupYamlResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetUpstreamGroupYamlResponse.ProtoReflect.Descriptor instead. -func (*GetUpstreamGroupYamlResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescGZIP(), []int{11} -} - -func (x *GetUpstreamGroupYamlResponse) GetYamlData() *ResourceYaml { - if x != nil { - return x.YamlData - } - return nil -} - -type ListSettingsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GlooInstanceRef *v11.ObjectRef `protobuf:"bytes,1,opt,name=gloo_instance_ref,json=glooInstanceRef,proto3" json:"gloo_instance_ref,omitempty"` -} - -func (x *ListSettingsRequest) Reset() { - *x = ListSettingsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListSettingsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListSettingsRequest) ProtoMessage() {} - -func (x *ListSettingsRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListSettingsRequest.ProtoReflect.Descriptor instead. -func (*ListSettingsRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescGZIP(), []int{12} -} - -func (x *ListSettingsRequest) GetGlooInstanceRef() *v11.ObjectRef { - if x != nil { - return x.GlooInstanceRef - } - return nil -} - -type ListSettingsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Settings []*Settings `protobuf:"bytes,1,rep,name=settings,proto3" json:"settings,omitempty"` -} - -func (x *ListSettingsResponse) Reset() { - *x = ListSettingsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListSettingsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListSettingsResponse) ProtoMessage() {} - -func (x *ListSettingsResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListSettingsResponse.ProtoReflect.Descriptor instead. -func (*ListSettingsResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescGZIP(), []int{13} -} - -func (x *ListSettingsResponse) GetSettings() []*Settings { - if x != nil { - return x.Settings - } - return nil -} - -type GetSettingsYamlRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SettingsRef *v11.ClusterObjectRef `protobuf:"bytes,1,opt,name=settings_ref,json=settingsRef,proto3" json:"settings_ref,omitempty"` -} - -func (x *GetSettingsYamlRequest) Reset() { - *x = GetSettingsYamlRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetSettingsYamlRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetSettingsYamlRequest) ProtoMessage() {} - -func (x *GetSettingsYamlRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetSettingsYamlRequest.ProtoReflect.Descriptor instead. -func (*GetSettingsYamlRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescGZIP(), []int{14} -} - -func (x *GetSettingsYamlRequest) GetSettingsRef() *v11.ClusterObjectRef { - if x != nil { - return x.SettingsRef - } - return nil -} - -type GetSettingsYamlResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - YamlData *ResourceYaml `protobuf:"bytes,1,opt,name=yaml_data,json=yamlData,proto3" json:"yaml_data,omitempty"` -} - -func (x *GetSettingsYamlResponse) Reset() { - *x = GetSettingsYamlResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetSettingsYamlResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetSettingsYamlResponse) ProtoMessage() {} - -func (x *GetSettingsYamlResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetSettingsYamlResponse.ProtoReflect.Descriptor instead. -func (*GetSettingsYamlResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescGZIP(), []int{15} -} - -func (x *GetSettingsYamlResponse) GetYamlData() *ResourceYaml { - if x != nil { - return x.YamlData - } - return nil -} - -type ListProxiesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GlooInstanceRef *v11.ObjectRef `protobuf:"bytes,1,opt,name=gloo_instance_ref,json=glooInstanceRef,proto3" json:"gloo_instance_ref,omitempty"` -} - -func (x *ListProxiesRequest) Reset() { - *x = ListProxiesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListProxiesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListProxiesRequest) ProtoMessage() {} - -func (x *ListProxiesRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListProxiesRequest.ProtoReflect.Descriptor instead. -func (*ListProxiesRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescGZIP(), []int{16} -} - -func (x *ListProxiesRequest) GetGlooInstanceRef() *v11.ObjectRef { - if x != nil { - return x.GlooInstanceRef - } - return nil -} - -type ListProxiesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Proxies []*Proxy `protobuf:"bytes,1,rep,name=proxies,proto3" json:"proxies,omitempty"` -} - -func (x *ListProxiesResponse) Reset() { - *x = ListProxiesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListProxiesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListProxiesResponse) ProtoMessage() {} - -func (x *ListProxiesResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListProxiesResponse.ProtoReflect.Descriptor instead. -func (*ListProxiesResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescGZIP(), []int{17} -} - -func (x *ListProxiesResponse) GetProxies() []*Proxy { - if x != nil { - return x.Proxies - } - return nil -} - -type GetProxyYamlRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ProxyRef *v11.ClusterObjectRef `protobuf:"bytes,1,opt,name=proxy_ref,json=proxyRef,proto3" json:"proxy_ref,omitempty"` -} - -func (x *GetProxyYamlRequest) Reset() { - *x = GetProxyYamlRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetProxyYamlRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetProxyYamlRequest) ProtoMessage() {} - -func (x *GetProxyYamlRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetProxyYamlRequest.ProtoReflect.Descriptor instead. -func (*GetProxyYamlRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescGZIP(), []int{18} -} - -func (x *GetProxyYamlRequest) GetProxyRef() *v11.ClusterObjectRef { - if x != nil { - return x.ProxyRef - } - return nil -} - -type GetProxyYamlResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - YamlData *ResourceYaml `protobuf:"bytes,1,opt,name=yaml_data,json=yamlData,proto3" json:"yaml_data,omitempty"` -} - -func (x *GetProxyYamlResponse) Reset() { - *x = GetProxyYamlResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetProxyYamlResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetProxyYamlResponse) ProtoMessage() {} - -func (x *GetProxyYamlResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetProxyYamlResponse.ProtoReflect.Descriptor instead. -func (*GetProxyYamlResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescGZIP(), []int{19} -} - -func (x *GetProxyYamlResponse) GetYamlData() *ResourceYaml { - if x != nil { - return x.YamlData - } - return nil -} - -var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto protoreflect.FileDescriptor - -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDesc = []byte{ - 0x0a, 0x49, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, - 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x5f, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x66, 0x65, 0x64, - 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, - 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, - 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3c, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x39, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, - 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6b, 0x76, 0x32, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, - 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xec, 0x01, 0x0a, 0x08, 0x55, - 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x65, 0x64, 0x2e, - 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x2e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, - 0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x41, 0x0a, 0x0d, 0x67, 0x6c, 0x6f, 0x6f, 0x5f, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x0c, 0x67, 0x6c, 0x6f, - 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xfb, 0x01, 0x0a, 0x0d, 0x55, 0x70, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x37, 0x0a, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x33, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, - 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x41, 0x0a, 0x0d, 0x67, 0x6c, 0x6f, 0x6f, 0x5f, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x0c, 0x67, 0x6c, 0x6f, 0x6f, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xec, 0x01, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, - 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2e, 0x0a, - 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x34, 0x0a, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x41, 0x0a, 0x0d, 0x67, 0x6c, 0x6f, 0x6f, 0x5f, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x0c, 0x67, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xe3, 0x01, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x78, 0x79, - 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x04, 0x73, 0x70, 0x65, - 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x70, 0x65, 0x63, - 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x31, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x41, 0x0a, 0x0d, 0x67, 0x6c, 0x6f, - 0x6f, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x0c, - 0x67, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x60, 0x0a, 0x14, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x11, 0x67, 0x6c, 0x6f, 0x6f, 0x5f, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x0f, 0x67, - 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x66, 0x22, 0x50, - 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x75, 0x70, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x65, 0x64, - 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x09, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, - 0x22, 0x60, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x59, - 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x0c, 0x75, 0x70, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x0b, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, - 0x65, 0x66, 0x22, 0x55, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, - 0x09, 0x79, 0x61, 0x6d, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, - 0x08, 0x79, 0x61, 0x6d, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x22, 0x65, 0x0a, 0x19, 0x4c, 0x69, 0x73, - 0x74, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x11, 0x67, 0x6c, 0x6f, 0x6f, 0x5f, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, - 0x0f, 0x67, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x66, - 0x22, 0x65, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, - 0x0a, 0x0f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0e, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0x70, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x55, 0x70, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x59, 0x61, 0x6d, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x12, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x10, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x66, 0x22, 0x5a, 0x0a, 0x1c, 0x47, 0x65, 0x74, - 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x59, 0x61, 0x6d, - 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x79, 0x61, 0x6d, - 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, - 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x08, 0x79, 0x61, 0x6d, - 0x6c, 0x44, 0x61, 0x74, 0x61, 0x22, 0x5f, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x11, - 0x67, 0x6c, 0x6f, 0x6f, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, - 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, - 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x0f, 0x67, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x52, 0x65, 0x66, 0x22, 0x4d, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, - 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x60, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x46, 0x0a, 0x0c, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x72, 0x65, 0x66, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, - 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x0b, 0x73, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x66, 0x22, 0x55, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x79, 0x61, 0x6d, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x08, 0x79, 0x61, 0x6d, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x22, 0x5e, - 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x11, 0x67, 0x6c, 0x6f, 0x6f, 0x5f, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x0f, 0x67, - 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x66, 0x22, 0x47, - 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x22, 0x57, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x72, - 0x6f, 0x78, 0x79, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, - 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x65, 0x66, - 0x22, 0x52, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x59, 0x61, 0x6d, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x79, 0x61, 0x6d, 0x6c, - 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x65, - 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x08, 0x79, 0x61, 0x6d, 0x6c, - 0x44, 0x61, 0x74, 0x61, 0x32, 0xc5, 0x06, 0x0a, 0x0f, 0x47, 0x6c, 0x6f, 0x6f, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x70, 0x69, 0x12, 0x60, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, - 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x25, 0x2e, 0x66, 0x65, 0x64, 0x2e, - 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x26, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x0f, 0x47, 0x65, - 0x74, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x59, 0x61, 0x6d, 0x6c, 0x12, 0x27, 0x2e, - 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x47, 0x65, 0x74, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x59, 0x61, 0x6d, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x70, 0x73, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x2a, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, - 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, - 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x70, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x59, 0x61, 0x6d, 0x6c, 0x12, 0x2c, 0x2e, 0x66, 0x65, - 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, - 0x74, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x59, 0x61, - 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x66, 0x65, 0x64, 0x2e, - 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x55, - 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x59, 0x61, 0x6d, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x0c, 0x4c, 0x69, - 0x73, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x24, 0x2e, 0x66, 0x65, 0x64, - 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x25, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x0f, 0x47, 0x65, 0x74, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x59, 0x61, 0x6d, 0x6c, 0x12, 0x27, 0x2e, 0x66, - 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, - 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x5a, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, - 0x12, 0x23, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x78, - 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, - 0x0c, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x59, 0x61, 0x6d, 0x6c, 0x12, 0x24, 0x2e, - 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x59, 0x61, - 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x39, 0x5a, 0x2f, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0xb8, - 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDesc -) - -func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescGZIP() []byte { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescData) - }) - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDescData -} - -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes = make([]protoimpl.MessageInfo, 20) -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_goTypes = []interface{}{ - (*Upstream)(nil), // 0: fed.rpc.solo.io.Upstream - (*UpstreamGroup)(nil), // 1: fed.rpc.solo.io.UpstreamGroup - (*Settings)(nil), // 2: fed.rpc.solo.io.Settings - (*Proxy)(nil), // 3: fed.rpc.solo.io.Proxy - (*ListUpstreamsRequest)(nil), // 4: fed.rpc.solo.io.ListUpstreamsRequest - (*ListUpstreamsResponse)(nil), // 5: fed.rpc.solo.io.ListUpstreamsResponse - (*GetUpstreamYamlRequest)(nil), // 6: fed.rpc.solo.io.GetUpstreamYamlRequest - (*GetUpstreamYamlResponse)(nil), // 7: fed.rpc.solo.io.GetUpstreamYamlResponse - (*ListUpstreamGroupsRequest)(nil), // 8: fed.rpc.solo.io.ListUpstreamGroupsRequest - (*ListUpstreamGroupsResponse)(nil), // 9: fed.rpc.solo.io.ListUpstreamGroupsResponse - (*GetUpstreamGroupYamlRequest)(nil), // 10: fed.rpc.solo.io.GetUpstreamGroupYamlRequest - (*GetUpstreamGroupYamlResponse)(nil), // 11: fed.rpc.solo.io.GetUpstreamGroupYamlResponse - (*ListSettingsRequest)(nil), // 12: fed.rpc.solo.io.ListSettingsRequest - (*ListSettingsResponse)(nil), // 13: fed.rpc.solo.io.ListSettingsResponse - (*GetSettingsYamlRequest)(nil), // 14: fed.rpc.solo.io.GetSettingsYamlRequest - (*GetSettingsYamlResponse)(nil), // 15: fed.rpc.solo.io.GetSettingsYamlResponse - (*ListProxiesRequest)(nil), // 16: fed.rpc.solo.io.ListProxiesRequest - (*ListProxiesResponse)(nil), // 17: fed.rpc.solo.io.ListProxiesResponse - (*GetProxyYamlRequest)(nil), // 18: fed.rpc.solo.io.GetProxyYamlRequest - (*GetProxyYamlResponse)(nil), // 19: fed.rpc.solo.io.GetProxyYamlResponse - (*ObjectMeta)(nil), // 20: fed.rpc.solo.io.ObjectMeta - (*v1.UpstreamSpec)(nil), // 21: gloo.solo.io.UpstreamSpec - (*v1.UpstreamStatus)(nil), // 22: gloo.solo.io.UpstreamStatus - (*v11.ObjectRef)(nil), // 23: core.skv2.solo.io.ObjectRef - (*v1.UpstreamGroupSpec)(nil), // 24: gloo.solo.io.UpstreamGroupSpec - (*v1.UpstreamGroupStatus)(nil), // 25: gloo.solo.io.UpstreamGroupStatus - (*v1.SettingsSpec)(nil), // 26: gloo.solo.io.SettingsSpec - (*v1.SettingsStatus)(nil), // 27: gloo.solo.io.SettingsStatus - (*v1.ProxySpec)(nil), // 28: gloo.solo.io.ProxySpec - (*v1.ProxyStatus)(nil), // 29: gloo.solo.io.ProxyStatus - (*v11.ClusterObjectRef)(nil), // 30: core.skv2.solo.io.ClusterObjectRef - (*ResourceYaml)(nil), // 31: fed.rpc.solo.io.ResourceYaml -} -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_depIdxs = []int32{ - 20, // 0: fed.rpc.solo.io.Upstream.metadata:type_name -> fed.rpc.solo.io.ObjectMeta - 21, // 1: fed.rpc.solo.io.Upstream.spec:type_name -> gloo.solo.io.UpstreamSpec - 22, // 2: fed.rpc.solo.io.Upstream.status:type_name -> gloo.solo.io.UpstreamStatus - 23, // 3: fed.rpc.solo.io.Upstream.gloo_instance:type_name -> core.skv2.solo.io.ObjectRef - 20, // 4: fed.rpc.solo.io.UpstreamGroup.metadata:type_name -> fed.rpc.solo.io.ObjectMeta - 24, // 5: fed.rpc.solo.io.UpstreamGroup.spec:type_name -> gloo.solo.io.UpstreamGroupSpec - 25, // 6: fed.rpc.solo.io.UpstreamGroup.status:type_name -> gloo.solo.io.UpstreamGroupStatus - 23, // 7: fed.rpc.solo.io.UpstreamGroup.gloo_instance:type_name -> core.skv2.solo.io.ObjectRef - 20, // 8: fed.rpc.solo.io.Settings.metadata:type_name -> fed.rpc.solo.io.ObjectMeta - 26, // 9: fed.rpc.solo.io.Settings.spec:type_name -> gloo.solo.io.SettingsSpec - 27, // 10: fed.rpc.solo.io.Settings.status:type_name -> gloo.solo.io.SettingsStatus - 23, // 11: fed.rpc.solo.io.Settings.gloo_instance:type_name -> core.skv2.solo.io.ObjectRef - 20, // 12: fed.rpc.solo.io.Proxy.metadata:type_name -> fed.rpc.solo.io.ObjectMeta - 28, // 13: fed.rpc.solo.io.Proxy.spec:type_name -> gloo.solo.io.ProxySpec - 29, // 14: fed.rpc.solo.io.Proxy.status:type_name -> gloo.solo.io.ProxyStatus - 23, // 15: fed.rpc.solo.io.Proxy.gloo_instance:type_name -> core.skv2.solo.io.ObjectRef - 23, // 16: fed.rpc.solo.io.ListUpstreamsRequest.gloo_instance_ref:type_name -> core.skv2.solo.io.ObjectRef - 0, // 17: fed.rpc.solo.io.ListUpstreamsResponse.upstreams:type_name -> fed.rpc.solo.io.Upstream - 30, // 18: fed.rpc.solo.io.GetUpstreamYamlRequest.upstream_ref:type_name -> core.skv2.solo.io.ClusterObjectRef - 31, // 19: fed.rpc.solo.io.GetUpstreamYamlResponse.yaml_data:type_name -> fed.rpc.solo.io.ResourceYaml - 23, // 20: fed.rpc.solo.io.ListUpstreamGroupsRequest.gloo_instance_ref:type_name -> core.skv2.solo.io.ObjectRef - 1, // 21: fed.rpc.solo.io.ListUpstreamGroupsResponse.upstream_groups:type_name -> fed.rpc.solo.io.UpstreamGroup - 30, // 22: fed.rpc.solo.io.GetUpstreamGroupYamlRequest.upstream_group_ref:type_name -> core.skv2.solo.io.ClusterObjectRef - 31, // 23: fed.rpc.solo.io.GetUpstreamGroupYamlResponse.yaml_data:type_name -> fed.rpc.solo.io.ResourceYaml - 23, // 24: fed.rpc.solo.io.ListSettingsRequest.gloo_instance_ref:type_name -> core.skv2.solo.io.ObjectRef - 2, // 25: fed.rpc.solo.io.ListSettingsResponse.settings:type_name -> fed.rpc.solo.io.Settings - 30, // 26: fed.rpc.solo.io.GetSettingsYamlRequest.settings_ref:type_name -> core.skv2.solo.io.ClusterObjectRef - 31, // 27: fed.rpc.solo.io.GetSettingsYamlResponse.yaml_data:type_name -> fed.rpc.solo.io.ResourceYaml - 23, // 28: fed.rpc.solo.io.ListProxiesRequest.gloo_instance_ref:type_name -> core.skv2.solo.io.ObjectRef - 3, // 29: fed.rpc.solo.io.ListProxiesResponse.proxies:type_name -> fed.rpc.solo.io.Proxy - 30, // 30: fed.rpc.solo.io.GetProxyYamlRequest.proxy_ref:type_name -> core.skv2.solo.io.ClusterObjectRef - 31, // 31: fed.rpc.solo.io.GetProxyYamlResponse.yaml_data:type_name -> fed.rpc.solo.io.ResourceYaml - 4, // 32: fed.rpc.solo.io.GlooResourceApi.ListUpstreams:input_type -> fed.rpc.solo.io.ListUpstreamsRequest - 6, // 33: fed.rpc.solo.io.GlooResourceApi.GetUpstreamYaml:input_type -> fed.rpc.solo.io.GetUpstreamYamlRequest - 8, // 34: fed.rpc.solo.io.GlooResourceApi.ListUpstreamGroups:input_type -> fed.rpc.solo.io.ListUpstreamGroupsRequest - 10, // 35: fed.rpc.solo.io.GlooResourceApi.GetUpstreamGroupYaml:input_type -> fed.rpc.solo.io.GetUpstreamGroupYamlRequest - 12, // 36: fed.rpc.solo.io.GlooResourceApi.ListSettings:input_type -> fed.rpc.solo.io.ListSettingsRequest - 14, // 37: fed.rpc.solo.io.GlooResourceApi.GetSettingsYaml:input_type -> fed.rpc.solo.io.GetSettingsYamlRequest - 16, // 38: fed.rpc.solo.io.GlooResourceApi.ListProxies:input_type -> fed.rpc.solo.io.ListProxiesRequest - 18, // 39: fed.rpc.solo.io.GlooResourceApi.GetProxyYaml:input_type -> fed.rpc.solo.io.GetProxyYamlRequest - 5, // 40: fed.rpc.solo.io.GlooResourceApi.ListUpstreams:output_type -> fed.rpc.solo.io.ListUpstreamsResponse - 7, // 41: fed.rpc.solo.io.GlooResourceApi.GetUpstreamYaml:output_type -> fed.rpc.solo.io.GetUpstreamYamlResponse - 9, // 42: fed.rpc.solo.io.GlooResourceApi.ListUpstreamGroups:output_type -> fed.rpc.solo.io.ListUpstreamGroupsResponse - 11, // 43: fed.rpc.solo.io.GlooResourceApi.GetUpstreamGroupYaml:output_type -> fed.rpc.solo.io.GetUpstreamGroupYamlResponse - 13, // 44: fed.rpc.solo.io.GlooResourceApi.ListSettings:output_type -> fed.rpc.solo.io.ListSettingsResponse - 15, // 45: fed.rpc.solo.io.GlooResourceApi.GetSettingsYaml:output_type -> fed.rpc.solo.io.GetSettingsYamlResponse - 17, // 46: fed.rpc.solo.io.GlooResourceApi.ListProxies:output_type -> fed.rpc.solo.io.ListProxiesResponse - 19, // 47: fed.rpc.solo.io.GlooResourceApi.GetProxyYaml:output_type -> fed.rpc.solo.io.GetProxyYamlResponse - 40, // [40:48] is the sub-list for method output_type - 32, // [32:40] is the sub-list for method input_type - 32, // [32:32] is the sub-list for extension type_name - 32, // [32:32] is the sub-list for extension extendee - 0, // [0:32] is the sub-list for field type_name -} - -func init() { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_init() } -func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_init() { - if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto != nil { - return - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_init() - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Upstream); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpstreamGroup); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Settings); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Proxy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUpstreamsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUpstreamsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUpstreamYamlRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUpstreamYamlResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUpstreamGroupsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUpstreamGroupsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUpstreamGroupYamlRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUpstreamGroupYamlResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSettingsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSettingsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSettingsYamlRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSettingsYamlResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListProxiesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListProxiesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetProxyYamlRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetProxyYamlResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDesc, - NumEnums: 0, - NumMessages: 20, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_goTypes, - DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_depIdxs, - MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_msgTypes, - }.Build() - File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_rawDesc = nil - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_goTypes = nil - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_gloo_resources_proto_depIdxs = nil -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConnInterface - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion6 - -// GlooResourceApiClient is the client API for GlooResourceApi service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type GlooResourceApiClient interface { - ListUpstreams(ctx context.Context, in *ListUpstreamsRequest, opts ...grpc.CallOption) (*ListUpstreamsResponse, error) - GetUpstreamYaml(ctx context.Context, in *GetUpstreamYamlRequest, opts ...grpc.CallOption) (*GetUpstreamYamlResponse, error) - ListUpstreamGroups(ctx context.Context, in *ListUpstreamGroupsRequest, opts ...grpc.CallOption) (*ListUpstreamGroupsResponse, error) - GetUpstreamGroupYaml(ctx context.Context, in *GetUpstreamGroupYamlRequest, opts ...grpc.CallOption) (*GetUpstreamGroupYamlResponse, error) - ListSettings(ctx context.Context, in *ListSettingsRequest, opts ...grpc.CallOption) (*ListSettingsResponse, error) - GetSettingsYaml(ctx context.Context, in *GetSettingsYamlRequest, opts ...grpc.CallOption) (*GetSettingsYamlResponse, error) - ListProxies(ctx context.Context, in *ListProxiesRequest, opts ...grpc.CallOption) (*ListProxiesResponse, error) - GetProxyYaml(ctx context.Context, in *GetProxyYamlRequest, opts ...grpc.CallOption) (*GetProxyYamlResponse, error) -} - -type glooResourceApiClient struct { - cc grpc.ClientConnInterface -} - -func NewGlooResourceApiClient(cc grpc.ClientConnInterface) GlooResourceApiClient { - return &glooResourceApiClient{cc} -} - -func (c *glooResourceApiClient) ListUpstreams(ctx context.Context, in *ListUpstreamsRequest, opts ...grpc.CallOption) (*ListUpstreamsResponse, error) { - out := new(ListUpstreamsResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.GlooResourceApi/ListUpstreams", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *glooResourceApiClient) GetUpstreamYaml(ctx context.Context, in *GetUpstreamYamlRequest, opts ...grpc.CallOption) (*GetUpstreamYamlResponse, error) { - out := new(GetUpstreamYamlResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.GlooResourceApi/GetUpstreamYaml", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *glooResourceApiClient) ListUpstreamGroups(ctx context.Context, in *ListUpstreamGroupsRequest, opts ...grpc.CallOption) (*ListUpstreamGroupsResponse, error) { - out := new(ListUpstreamGroupsResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.GlooResourceApi/ListUpstreamGroups", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *glooResourceApiClient) GetUpstreamGroupYaml(ctx context.Context, in *GetUpstreamGroupYamlRequest, opts ...grpc.CallOption) (*GetUpstreamGroupYamlResponse, error) { - out := new(GetUpstreamGroupYamlResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.GlooResourceApi/GetUpstreamGroupYaml", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *glooResourceApiClient) ListSettings(ctx context.Context, in *ListSettingsRequest, opts ...grpc.CallOption) (*ListSettingsResponse, error) { - out := new(ListSettingsResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.GlooResourceApi/ListSettings", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *glooResourceApiClient) GetSettingsYaml(ctx context.Context, in *GetSettingsYamlRequest, opts ...grpc.CallOption) (*GetSettingsYamlResponse, error) { - out := new(GetSettingsYamlResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.GlooResourceApi/GetSettingsYaml", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *glooResourceApiClient) ListProxies(ctx context.Context, in *ListProxiesRequest, opts ...grpc.CallOption) (*ListProxiesResponse, error) { - out := new(ListProxiesResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.GlooResourceApi/ListProxies", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *glooResourceApiClient) GetProxyYaml(ctx context.Context, in *GetProxyYamlRequest, opts ...grpc.CallOption) (*GetProxyYamlResponse, error) { - out := new(GetProxyYamlResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.GlooResourceApi/GetProxyYaml", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// GlooResourceApiServer is the server API for GlooResourceApi service. -type GlooResourceApiServer interface { - ListUpstreams(context.Context, *ListUpstreamsRequest) (*ListUpstreamsResponse, error) - GetUpstreamYaml(context.Context, *GetUpstreamYamlRequest) (*GetUpstreamYamlResponse, error) - ListUpstreamGroups(context.Context, *ListUpstreamGroupsRequest) (*ListUpstreamGroupsResponse, error) - GetUpstreamGroupYaml(context.Context, *GetUpstreamGroupYamlRequest) (*GetUpstreamGroupYamlResponse, error) - ListSettings(context.Context, *ListSettingsRequest) (*ListSettingsResponse, error) - GetSettingsYaml(context.Context, *GetSettingsYamlRequest) (*GetSettingsYamlResponse, error) - ListProxies(context.Context, *ListProxiesRequest) (*ListProxiesResponse, error) - GetProxyYaml(context.Context, *GetProxyYamlRequest) (*GetProxyYamlResponse, error) -} - -// UnimplementedGlooResourceApiServer can be embedded to have forward compatible implementations. -type UnimplementedGlooResourceApiServer struct { -} - -func (*UnimplementedGlooResourceApiServer) ListUpstreams(context.Context, *ListUpstreamsRequest) (*ListUpstreamsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUpstreams not implemented") -} -func (*UnimplementedGlooResourceApiServer) GetUpstreamYaml(context.Context, *GetUpstreamYamlRequest) (*GetUpstreamYamlResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetUpstreamYaml not implemented") -} -func (*UnimplementedGlooResourceApiServer) ListUpstreamGroups(context.Context, *ListUpstreamGroupsRequest) (*ListUpstreamGroupsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUpstreamGroups not implemented") -} -func (*UnimplementedGlooResourceApiServer) GetUpstreamGroupYaml(context.Context, *GetUpstreamGroupYamlRequest) (*GetUpstreamGroupYamlResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetUpstreamGroupYaml not implemented") -} -func (*UnimplementedGlooResourceApiServer) ListSettings(context.Context, *ListSettingsRequest) (*ListSettingsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListSettings not implemented") -} -func (*UnimplementedGlooResourceApiServer) GetSettingsYaml(context.Context, *GetSettingsYamlRequest) (*GetSettingsYamlResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetSettingsYaml not implemented") -} -func (*UnimplementedGlooResourceApiServer) ListProxies(context.Context, *ListProxiesRequest) (*ListProxiesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListProxies not implemented") -} -func (*UnimplementedGlooResourceApiServer) GetProxyYaml(context.Context, *GetProxyYamlRequest) (*GetProxyYamlResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetProxyYaml not implemented") -} - -func RegisterGlooResourceApiServer(s *grpc.Server, srv GlooResourceApiServer) { - s.RegisterService(&_GlooResourceApi_serviceDesc, srv) -} - -func _GlooResourceApi_ListUpstreams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListUpstreamsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GlooResourceApiServer).ListUpstreams(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.GlooResourceApi/ListUpstreams", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GlooResourceApiServer).ListUpstreams(ctx, req.(*ListUpstreamsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GlooResourceApi_GetUpstreamYaml_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetUpstreamYamlRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GlooResourceApiServer).GetUpstreamYaml(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.GlooResourceApi/GetUpstreamYaml", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GlooResourceApiServer).GetUpstreamYaml(ctx, req.(*GetUpstreamYamlRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GlooResourceApi_ListUpstreamGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListUpstreamGroupsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GlooResourceApiServer).ListUpstreamGroups(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.GlooResourceApi/ListUpstreamGroups", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GlooResourceApiServer).ListUpstreamGroups(ctx, req.(*ListUpstreamGroupsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GlooResourceApi_GetUpstreamGroupYaml_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetUpstreamGroupYamlRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GlooResourceApiServer).GetUpstreamGroupYaml(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.GlooResourceApi/GetUpstreamGroupYaml", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GlooResourceApiServer).GetUpstreamGroupYaml(ctx, req.(*GetUpstreamGroupYamlRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GlooResourceApi_ListSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListSettingsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GlooResourceApiServer).ListSettings(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.GlooResourceApi/ListSettings", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GlooResourceApiServer).ListSettings(ctx, req.(*ListSettingsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GlooResourceApi_GetSettingsYaml_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetSettingsYamlRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GlooResourceApiServer).GetSettingsYaml(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.GlooResourceApi/GetSettingsYaml", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GlooResourceApiServer).GetSettingsYaml(ctx, req.(*GetSettingsYamlRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GlooResourceApi_ListProxies_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListProxiesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GlooResourceApiServer).ListProxies(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.GlooResourceApi/ListProxies", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GlooResourceApiServer).ListProxies(ctx, req.(*ListProxiesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GlooResourceApi_GetProxyYaml_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetProxyYamlRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GlooResourceApiServer).GetProxyYaml(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.GlooResourceApi/GetProxyYaml", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GlooResourceApiServer).GetProxyYaml(ctx, req.(*GetProxyYamlRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _GlooResourceApi_serviceDesc = grpc.ServiceDesc{ - ServiceName: "fed.rpc.solo.io.GlooResourceApi", - HandlerType: (*GlooResourceApiServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListUpstreams", - Handler: _GlooResourceApi_ListUpstreams_Handler, - }, - { - MethodName: "GetUpstreamYaml", - Handler: _GlooResourceApi_GetUpstreamYaml_Handler, - }, - { - MethodName: "ListUpstreamGroups", - Handler: _GlooResourceApi_ListUpstreamGroups_Handler, - }, - { - MethodName: "GetUpstreamGroupYaml", - Handler: _GlooResourceApi_GetUpstreamGroupYaml_Handler, - }, - { - MethodName: "ListSettings", - Handler: _GlooResourceApi_ListSettings_Handler, - }, - { - MethodName: "GetSettingsYaml", - Handler: _GlooResourceApi_GetSettingsYaml_Handler, - }, - { - MethodName: "ListProxies", - Handler: _GlooResourceApi_ListProxies_Handler, - }, - { - MethodName: "GetProxyYaml", - Handler: _GlooResourceApi_GetProxyYaml_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/gloo_resources.proto", -} diff --git a/pkg/api/fed.rpc/v1/gloo_resources.pb.hash.go b/pkg/api/fed.rpc/v1/gloo_resources.pb.hash.go deleted file mode 100644 index 595d9662b..000000000 --- a/pkg/api/fed.rpc/v1/gloo_resources.pb.hash.go +++ /dev/null @@ -1,810 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/gloo_resources.proto - -package v1 - -import ( - "encoding/binary" - "errors" - "fmt" - "hash" - "hash/fnv" - - "github.com/mitchellh/hashstructure" - safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = new(hash.Hash64) - _ = fnv.New64 - _ = hashstructure.Hash - _ = new(safe_hasher.SafeHasher) -) - -// Hash function -func (m *Upstream) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.Upstream")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetStatus()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetStatus(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetGlooInstance()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetGlooInstance(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *UpstreamGroup) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.UpstreamGroup")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetStatus()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetStatus(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetGlooInstance()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetGlooInstance(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *Settings) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.Settings")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetStatus()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetStatus(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetGlooInstance()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetGlooInstance(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *Proxy) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.Proxy")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetStatus()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetStatus(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetGlooInstance()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetGlooInstance(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListUpstreamsRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListUpstreamsRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetGlooInstanceRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetGlooInstanceRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListUpstreamsResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListUpstreamsResponse")); err != nil { - return 0, err - } - - for _, v := range m.GetUpstreams() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetUpstreamYamlRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetUpstreamYamlRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetUpstreamRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetUpstreamRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetUpstreamYamlResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetUpstreamYamlResponse")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetYamlData()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetYamlData(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListUpstreamGroupsRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListUpstreamGroupsRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetGlooInstanceRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetGlooInstanceRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListUpstreamGroupsResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListUpstreamGroupsResponse")); err != nil { - return 0, err - } - - for _, v := range m.GetUpstreamGroups() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetUpstreamGroupYamlRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetUpstreamGroupYamlRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetUpstreamGroupRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetUpstreamGroupRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetUpstreamGroupYamlResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetUpstreamGroupYamlResponse")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetYamlData()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetYamlData(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListSettingsRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListSettingsRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetGlooInstanceRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetGlooInstanceRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListSettingsResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListSettingsResponse")); err != nil { - return 0, err - } - - for _, v := range m.GetSettings() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetSettingsYamlRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetSettingsYamlRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetSettingsRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSettingsRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetSettingsYamlResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetSettingsYamlResponse")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetYamlData()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetYamlData(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListProxiesRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListProxiesRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetGlooInstanceRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetGlooInstanceRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListProxiesResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListProxiesResponse")); err != nil { - return 0, err - } - - for _, v := range m.GetProxies() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetProxyYamlRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetProxyYamlRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetProxyRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetProxyRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetProxyYamlResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetProxyYamlResponse")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetYamlData()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetYamlData(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} diff --git a/pkg/api/fed.rpc/v1/glooinstance.pb.equal.go b/pkg/api/fed.rpc/v1/glooinstance.pb.equal.go deleted file mode 100644 index 2d68131c3..000000000 --- a/pkg/api/fed.rpc/v1/glooinstance.pb.equal.go +++ /dev/null @@ -1,255 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/glooinstance.proto - -package v1 - -import ( - "bytes" - "encoding/binary" - "errors" - "fmt" - "strings" - - "github.com/golang/protobuf/proto" - equality "github.com/solo-io/protoc-gen-ext/pkg/equality" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = bytes.Compare - _ = strings.Compare - _ = equality.Equalizer(nil) - _ = proto.Message(nil) -) - -// Equal function -func (m *GlooInstance) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GlooInstance) - if !ok { - that2, ok := that.(GlooInstance) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadata()) { - return false - } - } else { - if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { - return false - } - } - - if h, ok := interface{}(m.GetSpec()).(equality.Equalizer); ok { - if !h.Equal(target.GetSpec()) { - return false - } - } else { - if !proto.Equal(m.GetSpec(), target.GetSpec()) { - return false - } - } - - if h, ok := interface{}(m.GetStatus()).(equality.Equalizer); ok { - if !h.Equal(target.GetStatus()) { - return false - } - } else { - if !proto.Equal(m.GetStatus(), target.GetStatus()) { - return false - } - } - - return true -} - -// Equal function -func (m *ListGlooInstancesRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListGlooInstancesRequest) - if !ok { - that2, ok := that.(ListGlooInstancesRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - return true -} - -// Equal function -func (m *ListGlooInstancesResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListGlooInstancesResponse) - if !ok { - that2, ok := that.(ListGlooInstancesResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if len(m.GetGlooInstances()) != len(target.GetGlooInstances()) { - return false - } - for idx, v := range m.GetGlooInstances() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetGlooInstances()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetGlooInstances()[idx]) { - return false - } - } - - } - - return true -} - -// Equal function -func (m *ClusterDetails) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ClusterDetails) - if !ok { - that2, ok := that.(ClusterDetails) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if strings.Compare(m.GetCluster(), target.GetCluster()) != 0 { - return false - } - - if len(m.GetGlooInstances()) != len(target.GetGlooInstances()) { - return false - } - for idx, v := range m.GetGlooInstances() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetGlooInstances()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetGlooInstances()[idx]) { - return false - } - } - - } - - return true -} - -// Equal function -func (m *ListClusterDetailsRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListClusterDetailsRequest) - if !ok { - that2, ok := that.(ListClusterDetailsRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - return true -} - -// Equal function -func (m *ListClusterDetailsResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListClusterDetailsResponse) - if !ok { - that2, ok := that.(ListClusterDetailsResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if len(m.GetClusterDetails()) != len(target.GetClusterDetails()) { - return false - } - for idx, v := range m.GetClusterDetails() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetClusterDetails()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetClusterDetails()[idx]) { - return false - } - } - - } - - return true -} diff --git a/pkg/api/fed.rpc/v1/glooinstance.pb.go b/pkg/api/fed.rpc/v1/glooinstance.pb.go deleted file mode 100644 index b592bb5a9..000000000 --- a/pkg/api/fed.rpc/v1/glooinstance.pb.go +++ /dev/null @@ -1,654 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.6.1 -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/glooinstance.proto - -package v1 - -import ( - context "context" - reflect "reflect" - sync "sync" - - proto "github.com/golang/protobuf/proto" - _ "github.com/solo-io/protoc-gen-ext/extproto" - types "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -type GlooInstance struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *ObjectMeta `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - Spec *types.GlooInstanceSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` - Status *types.GlooInstanceStatus `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` -} - -func (x *GlooInstance) Reset() { - *x = GlooInstance{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GlooInstance) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GlooInstance) ProtoMessage() {} - -func (x *GlooInstance) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GlooInstance.ProtoReflect.Descriptor instead. -func (*GlooInstance) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_rawDescGZIP(), []int{0} -} - -func (x *GlooInstance) GetMetadata() *ObjectMeta { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *GlooInstance) GetSpec() *types.GlooInstanceSpec { - if x != nil { - return x.Spec - } - return nil -} - -func (x *GlooInstance) GetStatus() *types.GlooInstanceStatus { - if x != nil { - return x.Status - } - return nil -} - -type ListGlooInstancesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *ListGlooInstancesRequest) Reset() { - *x = ListGlooInstancesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListGlooInstancesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListGlooInstancesRequest) ProtoMessage() {} - -func (x *ListGlooInstancesRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListGlooInstancesRequest.ProtoReflect.Descriptor instead. -func (*ListGlooInstancesRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_rawDescGZIP(), []int{1} -} - -type ListGlooInstancesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GlooInstances []*GlooInstance `protobuf:"bytes,1,rep,name=gloo_instances,json=glooInstances,proto3" json:"gloo_instances,omitempty"` -} - -func (x *ListGlooInstancesResponse) Reset() { - *x = ListGlooInstancesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListGlooInstancesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListGlooInstancesResponse) ProtoMessage() {} - -func (x *ListGlooInstancesResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListGlooInstancesResponse.ProtoReflect.Descriptor instead. -func (*ListGlooInstancesResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_rawDescGZIP(), []int{2} -} - -func (x *ListGlooInstancesResponse) GetGlooInstances() []*GlooInstance { - if x != nil { - return x.GlooInstances - } - return nil -} - -type ClusterDetails struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` - GlooInstances []*GlooInstance `protobuf:"bytes,2,rep,name=gloo_instances,json=glooInstances,proto3" json:"gloo_instances,omitempty"` -} - -func (x *ClusterDetails) Reset() { - *x = ClusterDetails{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ClusterDetails) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClusterDetails) ProtoMessage() {} - -func (x *ClusterDetails) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClusterDetails.ProtoReflect.Descriptor instead. -func (*ClusterDetails) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_rawDescGZIP(), []int{3} -} - -func (x *ClusterDetails) GetCluster() string { - if x != nil { - return x.Cluster - } - return "" -} - -func (x *ClusterDetails) GetGlooInstances() []*GlooInstance { - if x != nil { - return x.GlooInstances - } - return nil -} - -type ListClusterDetailsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *ListClusterDetailsRequest) Reset() { - *x = ListClusterDetailsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListClusterDetailsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListClusterDetailsRequest) ProtoMessage() {} - -func (x *ListClusterDetailsRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListClusterDetailsRequest.ProtoReflect.Descriptor instead. -func (*ListClusterDetailsRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_rawDescGZIP(), []int{4} -} - -type ListClusterDetailsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ClusterDetails []*ClusterDetails `protobuf:"bytes,1,rep,name=cluster_details,json=clusterDetails,proto3" json:"cluster_details,omitempty"` -} - -func (x *ListClusterDetailsResponse) Reset() { - *x = ListClusterDetailsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListClusterDetailsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListClusterDetailsResponse) ProtoMessage() {} - -func (x *ListClusterDetailsResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListClusterDetailsResponse.ProtoReflect.Descriptor instead. -func (*ListClusterDetailsResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_rawDescGZIP(), []int{5} -} - -func (x *ListClusterDetailsResponse) GetClusterDetails() []*ClusterDetails { - if x != nil { - return x.ClusterDetails - } - return nil -} - -var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto protoreflect.FileDescriptor - -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_rawDesc = []byte{ - 0x0a, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, - 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x66, 0x65, 0x64, 0x2e, 0x72, - 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3f, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2f, 0x76, 0x31, - 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x72, - 0x70, 0x63, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xb3, 0x01, 0x0a, 0x0c, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, - 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x31, 0x0a, 0x04, - 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x65, 0x64, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, - 0x37, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, - 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x1a, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, - 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x61, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x6c, 0x6f, 0x6f, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x44, 0x0a, 0x0e, 0x67, 0x6c, 0x6f, 0x6f, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x65, 0x64, 0x2e, - 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0d, 0x67, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x70, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x0e, 0x67, 0x6c, 0x6f, 0x6f, 0x5f, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x65, - 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, - 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0d, 0x67, 0x6c, 0x6f, 0x6f, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x1b, 0x0a, 0x19, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x66, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0e, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x32, 0xf0, - 0x01, 0x0a, 0x0f, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x41, - 0x70, 0x69, 0x12, 0x6c, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x6c, - 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x6f, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2a, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x42, 0x39, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, - 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, - 0x63, 0x2f, 0x76, 0x31, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_rawDesc -) - -func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_rawDescGZIP() []byte { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_rawDescData) - }) - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_rawDescData -} - -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_msgTypes = make([]protoimpl.MessageInfo, 6) -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_goTypes = []interface{}{ - (*GlooInstance)(nil), // 0: fed.rpc.solo.io.GlooInstance - (*ListGlooInstancesRequest)(nil), // 1: fed.rpc.solo.io.ListGlooInstancesRequest - (*ListGlooInstancesResponse)(nil), // 2: fed.rpc.solo.io.ListGlooInstancesResponse - (*ClusterDetails)(nil), // 3: fed.rpc.solo.io.ClusterDetails - (*ListClusterDetailsRequest)(nil), // 4: fed.rpc.solo.io.ListClusterDetailsRequest - (*ListClusterDetailsResponse)(nil), // 5: fed.rpc.solo.io.ListClusterDetailsResponse - (*ObjectMeta)(nil), // 6: fed.rpc.solo.io.ObjectMeta - (*types.GlooInstanceSpec)(nil), // 7: fed.solo.io.GlooInstanceSpec - (*types.GlooInstanceStatus)(nil), // 8: fed.solo.io.GlooInstanceStatus -} -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_depIdxs = []int32{ - 6, // 0: fed.rpc.solo.io.GlooInstance.metadata:type_name -> fed.rpc.solo.io.ObjectMeta - 7, // 1: fed.rpc.solo.io.GlooInstance.spec:type_name -> fed.solo.io.GlooInstanceSpec - 8, // 2: fed.rpc.solo.io.GlooInstance.status:type_name -> fed.solo.io.GlooInstanceStatus - 0, // 3: fed.rpc.solo.io.ListGlooInstancesResponse.gloo_instances:type_name -> fed.rpc.solo.io.GlooInstance - 0, // 4: fed.rpc.solo.io.ClusterDetails.gloo_instances:type_name -> fed.rpc.solo.io.GlooInstance - 3, // 5: fed.rpc.solo.io.ListClusterDetailsResponse.cluster_details:type_name -> fed.rpc.solo.io.ClusterDetails - 1, // 6: fed.rpc.solo.io.GlooInstanceApi.ListGlooInstances:input_type -> fed.rpc.solo.io.ListGlooInstancesRequest - 4, // 7: fed.rpc.solo.io.GlooInstanceApi.ListClusterDetails:input_type -> fed.rpc.solo.io.ListClusterDetailsRequest - 2, // 8: fed.rpc.solo.io.GlooInstanceApi.ListGlooInstances:output_type -> fed.rpc.solo.io.ListGlooInstancesResponse - 5, // 9: fed.rpc.solo.io.GlooInstanceApi.ListClusterDetails:output_type -> fed.rpc.solo.io.ListClusterDetailsResponse - 8, // [8:10] is the sub-list for method output_type - 6, // [6:8] is the sub-list for method input_type - 6, // [6:6] is the sub-list for extension type_name - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name -} - -func init() { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_init() } -func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_init() { - if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto != nil { - return - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_common_proto_init() - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GlooInstance); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListGlooInstancesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListGlooInstancesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterDetails); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListClusterDetailsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListClusterDetailsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_rawDesc, - NumEnums: 0, - NumMessages: 6, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_goTypes, - DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_depIdxs, - MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_msgTypes, - }.Build() - File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_rawDesc = nil - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_goTypes = nil - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_glooinstance_proto_depIdxs = nil -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConnInterface - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion6 - -// GlooInstanceApiClient is the client API for GlooInstanceApi service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type GlooInstanceApiClient interface { - ListGlooInstances(ctx context.Context, in *ListGlooInstancesRequest, opts ...grpc.CallOption) (*ListGlooInstancesResponse, error) - ListClusterDetails(ctx context.Context, in *ListClusterDetailsRequest, opts ...grpc.CallOption) (*ListClusterDetailsResponse, error) -} - -type glooInstanceApiClient struct { - cc grpc.ClientConnInterface -} - -func NewGlooInstanceApiClient(cc grpc.ClientConnInterface) GlooInstanceApiClient { - return &glooInstanceApiClient{cc} -} - -func (c *glooInstanceApiClient) ListGlooInstances(ctx context.Context, in *ListGlooInstancesRequest, opts ...grpc.CallOption) (*ListGlooInstancesResponse, error) { - out := new(ListGlooInstancesResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.GlooInstanceApi/ListGlooInstances", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *glooInstanceApiClient) ListClusterDetails(ctx context.Context, in *ListClusterDetailsRequest, opts ...grpc.CallOption) (*ListClusterDetailsResponse, error) { - out := new(ListClusterDetailsResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.GlooInstanceApi/ListClusterDetails", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// GlooInstanceApiServer is the server API for GlooInstanceApi service. -type GlooInstanceApiServer interface { - ListGlooInstances(context.Context, *ListGlooInstancesRequest) (*ListGlooInstancesResponse, error) - ListClusterDetails(context.Context, *ListClusterDetailsRequest) (*ListClusterDetailsResponse, error) -} - -// UnimplementedGlooInstanceApiServer can be embedded to have forward compatible implementations. -type UnimplementedGlooInstanceApiServer struct { -} - -func (*UnimplementedGlooInstanceApiServer) ListGlooInstances(context.Context, *ListGlooInstancesRequest) (*ListGlooInstancesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListGlooInstances not implemented") -} -func (*UnimplementedGlooInstanceApiServer) ListClusterDetails(context.Context, *ListClusterDetailsRequest) (*ListClusterDetailsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListClusterDetails not implemented") -} - -func RegisterGlooInstanceApiServer(s *grpc.Server, srv GlooInstanceApiServer) { - s.RegisterService(&_GlooInstanceApi_serviceDesc, srv) -} - -func _GlooInstanceApi_ListGlooInstances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListGlooInstancesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GlooInstanceApiServer).ListGlooInstances(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.GlooInstanceApi/ListGlooInstances", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GlooInstanceApiServer).ListGlooInstances(ctx, req.(*ListGlooInstancesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GlooInstanceApi_ListClusterDetails_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListClusterDetailsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GlooInstanceApiServer).ListClusterDetails(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.GlooInstanceApi/ListClusterDetails", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GlooInstanceApiServer).ListClusterDetails(ctx, req.(*ListClusterDetailsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _GlooInstanceApi_serviceDesc = grpc.ServiceDesc{ - ServiceName: "fed.rpc.solo.io.GlooInstanceApi", - HandlerType: (*GlooInstanceApiServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListGlooInstances", - Handler: _GlooInstanceApi_ListGlooInstances_Handler, - }, - { - MethodName: "ListClusterDetails", - Handler: _GlooInstanceApi_ListClusterDetails_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/glooinstance.proto", -} diff --git a/pkg/api/fed.rpc/v1/glooinstance.pb.hash.go b/pkg/api/fed.rpc/v1/glooinstance.pb.hash.go deleted file mode 100644 index 319c9769a..000000000 --- a/pkg/api/fed.rpc/v1/glooinstance.pb.hash.go +++ /dev/null @@ -1,222 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/glooinstance.proto - -package v1 - -import ( - "encoding/binary" - "errors" - "fmt" - "hash" - "hash/fnv" - - "github.com/mitchellh/hashstructure" - safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = new(hash.Hash64) - _ = fnv.New64 - _ = hashstructure.Hash - _ = new(safe_hasher.SafeHasher) -) - -// Hash function -func (m *GlooInstance) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GlooInstance")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetSpec()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSpec(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetStatus()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetStatus(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListGlooInstancesRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListGlooInstancesRequest")); err != nil { - return 0, err - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListGlooInstancesResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListGlooInstancesResponse")); err != nil { - return 0, err - } - - for _, v := range m.GetGlooInstances() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ClusterDetails) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ClusterDetails")); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetCluster())); err != nil { - return 0, err - } - - for _, v := range m.GetGlooInstances() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListClusterDetailsRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListClusterDetailsRequest")); err != nil { - return 0, err - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ListClusterDetailsResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.ListClusterDetailsResponse")); err != nil { - return 0, err - } - - for _, v := range m.GetClusterDetails() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} diff --git a/pkg/api/fed.rpc/v1/rt_selector.pb.equal.go b/pkg/api/fed.rpc/v1/rt_selector.pb.equal.go deleted file mode 100644 index 96e4b6f8c..000000000 --- a/pkg/api/fed.rpc/v1/rt_selector.pb.equal.go +++ /dev/null @@ -1,247 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/rt_selector.proto - -package v1 - -import ( - "bytes" - "encoding/binary" - "errors" - "fmt" - "strings" - - "github.com/golang/protobuf/proto" - equality "github.com/solo-io/protoc-gen-ext/pkg/equality" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = bytes.Compare - _ = strings.Compare - _ = equality.Equalizer(nil) - _ = proto.Message(nil) -) - -// Equal function -func (m *SubRouteTableRow) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*SubRouteTableRow) - if !ok { - that2, ok := that.(SubRouteTableRow) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if strings.Compare(m.GetMatcher(), target.GetMatcher()) != 0 { - return false - } - - if strings.Compare(m.GetMatchType(), target.GetMatchType()) != 0 { - return false - } - - if len(m.GetMethods()) != len(target.GetMethods()) { - return false - } - for idx, v := range m.GetMethods() { - - if strings.Compare(v, target.GetMethods()[idx]) != 0 { - return false - } - - } - - if len(m.GetHeaders()) != len(target.GetHeaders()) { - return false - } - for idx, v := range m.GetHeaders() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetHeaders()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetHeaders()[idx]) { - return false - } - } - - } - - if len(m.GetQueryParameters()) != len(target.GetQueryParameters()) { - return false - } - for idx, v := range m.GetQueryParameters() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetQueryParameters()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetQueryParameters()[idx]) { - return false - } - } - - } - - if len(m.GetRtRoutes()) != len(target.GetRtRoutes()) { - return false - } - for idx, v := range m.GetRtRoutes() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetRtRoutes()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetRtRoutes()[idx]) { - return false - } - } - - } - - switch m.Action.(type) { - - case *SubRouteTableRow_RouteAction: - - if h, ok := interface{}(m.GetRouteAction()).(equality.Equalizer); ok { - if !h.Equal(target.GetRouteAction()) { - return false - } - } else { - if !proto.Equal(m.GetRouteAction(), target.GetRouteAction()) { - return false - } - } - - case *SubRouteTableRow_RedirectAction: - - if h, ok := interface{}(m.GetRedirectAction()).(equality.Equalizer); ok { - if !h.Equal(target.GetRedirectAction()) { - return false - } - } else { - if !proto.Equal(m.GetRedirectAction(), target.GetRedirectAction()) { - return false - } - } - - case *SubRouteTableRow_DirectResponseAction: - - if h, ok := interface{}(m.GetDirectResponseAction()).(equality.Equalizer); ok { - if !h.Equal(target.GetDirectResponseAction()) { - return false - } - } else { - if !proto.Equal(m.GetDirectResponseAction(), target.GetDirectResponseAction()) { - return false - } - } - - case *SubRouteTableRow_DelegateAction: - - if h, ok := interface{}(m.GetDelegateAction()).(equality.Equalizer); ok { - if !h.Equal(target.GetDelegateAction()) { - return false - } - } else { - if !proto.Equal(m.GetDelegateAction(), target.GetDelegateAction()) { - return false - } - } - - } - - return true -} - -// Equal function -func (m *GetVirtualServiceRoutesRequest) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetVirtualServiceRoutesRequest) - if !ok { - that2, ok := that.(GetVirtualServiceRoutesRequest) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetVirtualServiceRef()).(equality.Equalizer); ok { - if !h.Equal(target.GetVirtualServiceRef()) { - return false - } - } else { - if !proto.Equal(m.GetVirtualServiceRef(), target.GetVirtualServiceRef()) { - return false - } - } - - return true -} - -// Equal function -func (m *GetVirtualServiceRoutesResponse) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GetVirtualServiceRoutesResponse) - if !ok { - that2, ok := that.(GetVirtualServiceRoutesResponse) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if len(m.GetVsRoutes()) != len(target.GetVsRoutes()) { - return false - } - for idx, v := range m.GetVsRoutes() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetVsRoutes()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetVsRoutes()[idx]) { - return false - } - } - - } - - return true -} diff --git a/pkg/api/fed.rpc/v1/rt_selector.pb.go b/pkg/api/fed.rpc/v1/rt_selector.pb.go deleted file mode 100644 index ac2a66ae7..000000000 --- a/pkg/api/fed.rpc/v1/rt_selector.pb.go +++ /dev/null @@ -1,575 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.6.1 -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/rt_selector.proto - -package v1 - -import ( - context "context" - reflect "reflect" - sync "sync" - - proto "github.com/golang/protobuf/proto" - _ "github.com/solo-io/protoc-gen-ext/extproto" - v12 "github.com/solo-io/skv2/pkg/api/core.skv2.solo.io/v1" - v11 "github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1" - v1 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1" - matchers "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/core/matchers" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -type SubRouteTableRow struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Action: - // *SubRouteTableRow_RouteAction - // *SubRouteTableRow_RedirectAction - // *SubRouteTableRow_DirectResponseAction - // *SubRouteTableRow_DelegateAction - Action isSubRouteTableRow_Action `protobuf_oneof:"action"` - Matcher string `protobuf:"bytes,5,opt,name=matcher,proto3" json:"matcher,omitempty"` - MatchType string `protobuf:"bytes,6,opt,name=match_type,json=matchType,proto3" json:"match_type,omitempty"` - Methods []string `protobuf:"bytes,7,rep,name=methods,proto3" json:"methods,omitempty"` - Headers []*matchers.HeaderMatcher `protobuf:"bytes,8,rep,name=headers,proto3" json:"headers,omitempty"` - QueryParameters []*matchers.QueryParameterMatcher `protobuf:"bytes,9,rep,name=query_parameters,json=queryParameters,proto3" json:"query_parameters,omitempty"` - RtRoutes []*SubRouteTableRow `protobuf:"bytes,10,rep,name=rt_routes,json=rtRoutes,proto3" json:"rt_routes,omitempty"` -} - -func (x *SubRouteTableRow) Reset() { - *x = SubRouteTableRow{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubRouteTableRow) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubRouteTableRow) ProtoMessage() {} - -func (x *SubRouteTableRow) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubRouteTableRow.ProtoReflect.Descriptor instead. -func (*SubRouteTableRow) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_rawDescGZIP(), []int{0} -} - -func (m *SubRouteTableRow) GetAction() isSubRouteTableRow_Action { - if m != nil { - return m.Action - } - return nil -} - -func (x *SubRouteTableRow) GetRouteAction() *v1.RouteAction { - if x, ok := x.GetAction().(*SubRouteTableRow_RouteAction); ok { - return x.RouteAction - } - return nil -} - -func (x *SubRouteTableRow) GetRedirectAction() *v1.RedirectAction { - if x, ok := x.GetAction().(*SubRouteTableRow_RedirectAction); ok { - return x.RedirectAction - } - return nil -} - -func (x *SubRouteTableRow) GetDirectResponseAction() *v1.DirectResponseAction { - if x, ok := x.GetAction().(*SubRouteTableRow_DirectResponseAction); ok { - return x.DirectResponseAction - } - return nil -} - -func (x *SubRouteTableRow) GetDelegateAction() *v11.DelegateAction { - if x, ok := x.GetAction().(*SubRouteTableRow_DelegateAction); ok { - return x.DelegateAction - } - return nil -} - -func (x *SubRouteTableRow) GetMatcher() string { - if x != nil { - return x.Matcher - } - return "" -} - -func (x *SubRouteTableRow) GetMatchType() string { - if x != nil { - return x.MatchType - } - return "" -} - -func (x *SubRouteTableRow) GetMethods() []string { - if x != nil { - return x.Methods - } - return nil -} - -func (x *SubRouteTableRow) GetHeaders() []*matchers.HeaderMatcher { - if x != nil { - return x.Headers - } - return nil -} - -func (x *SubRouteTableRow) GetQueryParameters() []*matchers.QueryParameterMatcher { - if x != nil { - return x.QueryParameters - } - return nil -} - -func (x *SubRouteTableRow) GetRtRoutes() []*SubRouteTableRow { - if x != nil { - return x.RtRoutes - } - return nil -} - -type isSubRouteTableRow_Action interface { - isSubRouteTableRow_Action() -} - -type SubRouteTableRow_RouteAction struct { - RouteAction *v1.RouteAction `protobuf:"bytes,1,opt,name=route_action,json=routeAction,proto3,oneof"` -} - -type SubRouteTableRow_RedirectAction struct { - RedirectAction *v1.RedirectAction `protobuf:"bytes,2,opt,name=redirect_action,json=redirectAction,proto3,oneof"` -} - -type SubRouteTableRow_DirectResponseAction struct { - DirectResponseAction *v1.DirectResponseAction `protobuf:"bytes,3,opt,name=direct_response_action,json=directResponseAction,proto3,oneof"` -} - -type SubRouteTableRow_DelegateAction struct { - DelegateAction *v11.DelegateAction `protobuf:"bytes,4,opt,name=delegate_action,json=delegateAction,proto3,oneof"` -} - -func (*SubRouteTableRow_RouteAction) isSubRouteTableRow_Action() {} - -func (*SubRouteTableRow_RedirectAction) isSubRouteTableRow_Action() {} - -func (*SubRouteTableRow_DirectResponseAction) isSubRouteTableRow_Action() {} - -func (*SubRouteTableRow_DelegateAction) isSubRouteTableRow_Action() {} - -type GetVirtualServiceRoutesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - VirtualServiceRef *v12.ClusterObjectRef `protobuf:"bytes,1,opt,name=virtual_service_ref,json=virtualServiceRef,proto3" json:"virtual_service_ref,omitempty"` -} - -func (x *GetVirtualServiceRoutesRequest) Reset() { - *x = GetVirtualServiceRoutesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetVirtualServiceRoutesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetVirtualServiceRoutesRequest) ProtoMessage() {} - -func (x *GetVirtualServiceRoutesRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetVirtualServiceRoutesRequest.ProtoReflect.Descriptor instead. -func (*GetVirtualServiceRoutesRequest) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_rawDescGZIP(), []int{1} -} - -func (x *GetVirtualServiceRoutesRequest) GetVirtualServiceRef() *v12.ClusterObjectRef { - if x != nil { - return x.VirtualServiceRef - } - return nil -} - -type GetVirtualServiceRoutesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - VsRoutes []*SubRouteTableRow `protobuf:"bytes,1,rep,name=vs_routes,json=vsRoutes,proto3" json:"vs_routes,omitempty"` -} - -func (x *GetVirtualServiceRoutesResponse) Reset() { - *x = GetVirtualServiceRoutesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetVirtualServiceRoutesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetVirtualServiceRoutesResponse) ProtoMessage() {} - -func (x *GetVirtualServiceRoutesResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetVirtualServiceRoutesResponse.ProtoReflect.Descriptor instead. -func (*GetVirtualServiceRoutesResponse) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_rawDescGZIP(), []int{2} -} - -func (x *GetVirtualServiceRoutesResponse) GetVsRoutes() []*SubRouteTableRow { - if x != nil { - return x.VsRoutes - } - return nil -} - -var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto protoreflect.FileDescriptor - -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_rawDesc = []byte{ - 0x0a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2e, - 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4a, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, - 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x72, - 0x65, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, - 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, - 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, - 0x2f, 0x73, 0x6b, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, - 0x31, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x83, 0x05, 0x0a, - 0x10, 0x53, 0x75, 0x62, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, - 0x77, 0x12, 0x3e, 0x0a, 0x0c, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x47, 0x0a, 0x0f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5a, 0x0a, 0x16, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, - 0x52, 0x14, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, - 0x74, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x48, 0x00, 0x52, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, - 0x73, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, - 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x5c, 0x0a, 0x10, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x09, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x0f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x72, 0x74, 0x5f, 0x72, - 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x65, - 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x75, - 0x62, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x77, 0x52, 0x08, - 0x72, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x75, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x13, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x11, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x66, 0x22, 0x61, 0x0a, 0x1f, 0x47, 0x65, 0x74, - 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x09, - 0x76, 0x73, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x53, 0x75, 0x62, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, - 0x6f, 0x77, 0x52, 0x08, 0x76, 0x73, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x32, 0x99, 0x01, 0x0a, - 0x17, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x73, 0x41, 0x70, 0x69, 0x12, 0x7e, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x56, - 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x75, - 0x74, 0x65, 0x73, 0x12, 0x2f, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, - 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x39, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0xb8, 0xf5, 0x04, 0x01, 0xc0, - 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_rawDesc -) - -func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_rawDescGZIP() []byte { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_rawDescData) - }) - return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_rawDescData -} - -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_goTypes = []interface{}{ - (*SubRouteTableRow)(nil), // 0: fed.rpc.solo.io.SubRouteTableRow - (*GetVirtualServiceRoutesRequest)(nil), // 1: fed.rpc.solo.io.GetVirtualServiceRoutesRequest - (*GetVirtualServiceRoutesResponse)(nil), // 2: fed.rpc.solo.io.GetVirtualServiceRoutesResponse - (*v1.RouteAction)(nil), // 3: gloo.solo.io.RouteAction - (*v1.RedirectAction)(nil), // 4: gloo.solo.io.RedirectAction - (*v1.DirectResponseAction)(nil), // 5: gloo.solo.io.DirectResponseAction - (*v11.DelegateAction)(nil), // 6: gateway.solo.io.DelegateAction - (*matchers.HeaderMatcher)(nil), // 7: matchers.core.gloo.solo.io.HeaderMatcher - (*matchers.QueryParameterMatcher)(nil), // 8: matchers.core.gloo.solo.io.QueryParameterMatcher - (*v12.ClusterObjectRef)(nil), // 9: core.skv2.solo.io.ClusterObjectRef -} -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_depIdxs = []int32{ - 3, // 0: fed.rpc.solo.io.SubRouteTableRow.route_action:type_name -> gloo.solo.io.RouteAction - 4, // 1: fed.rpc.solo.io.SubRouteTableRow.redirect_action:type_name -> gloo.solo.io.RedirectAction - 5, // 2: fed.rpc.solo.io.SubRouteTableRow.direct_response_action:type_name -> gloo.solo.io.DirectResponseAction - 6, // 3: fed.rpc.solo.io.SubRouteTableRow.delegate_action:type_name -> gateway.solo.io.DelegateAction - 7, // 4: fed.rpc.solo.io.SubRouteTableRow.headers:type_name -> matchers.core.gloo.solo.io.HeaderMatcher - 8, // 5: fed.rpc.solo.io.SubRouteTableRow.query_parameters:type_name -> matchers.core.gloo.solo.io.QueryParameterMatcher - 0, // 6: fed.rpc.solo.io.SubRouteTableRow.rt_routes:type_name -> fed.rpc.solo.io.SubRouteTableRow - 9, // 7: fed.rpc.solo.io.GetVirtualServiceRoutesRequest.virtual_service_ref:type_name -> core.skv2.solo.io.ClusterObjectRef - 0, // 8: fed.rpc.solo.io.GetVirtualServiceRoutesResponse.vs_routes:type_name -> fed.rpc.solo.io.SubRouteTableRow - 1, // 9: fed.rpc.solo.io.VirtualServiceRoutesApi.GetVirtualServiceRoutes:input_type -> fed.rpc.solo.io.GetVirtualServiceRoutesRequest - 2, // 10: fed.rpc.solo.io.VirtualServiceRoutesApi.GetVirtualServiceRoutes:output_type -> fed.rpc.solo.io.GetVirtualServiceRoutesResponse - 10, // [10:11] is the sub-list for method output_type - 9, // [9:10] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name -} - -func init() { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_init() } -func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_init() { - if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubRouteTableRow); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVirtualServiceRoutesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVirtualServiceRoutesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_msgTypes[0].OneofWrappers = []interface{}{ - (*SubRouteTableRow_RouteAction)(nil), - (*SubRouteTableRow_RedirectAction)(nil), - (*SubRouteTableRow_DirectResponseAction)(nil), - (*SubRouteTableRow_DelegateAction)(nil), - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_rawDesc, - NumEnums: 0, - NumMessages: 3, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_goTypes, - DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_depIdxs, - MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_msgTypes, - }.Build() - File_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_rawDesc = nil - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_goTypes = nil - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_rpc_v1_rt_selector_proto_depIdxs = nil -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConnInterface - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion6 - -// VirtualServiceRoutesApiClient is the client API for VirtualServiceRoutesApi service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type VirtualServiceRoutesApiClient interface { - GetVirtualServiceRoutes(ctx context.Context, in *GetVirtualServiceRoutesRequest, opts ...grpc.CallOption) (*GetVirtualServiceRoutesResponse, error) -} - -type virtualServiceRoutesApiClient struct { - cc grpc.ClientConnInterface -} - -func NewVirtualServiceRoutesApiClient(cc grpc.ClientConnInterface) VirtualServiceRoutesApiClient { - return &virtualServiceRoutesApiClient{cc} -} - -func (c *virtualServiceRoutesApiClient) GetVirtualServiceRoutes(ctx context.Context, in *GetVirtualServiceRoutesRequest, opts ...grpc.CallOption) (*GetVirtualServiceRoutesResponse, error) { - out := new(GetVirtualServiceRoutesResponse) - err := c.cc.Invoke(ctx, "/fed.rpc.solo.io.VirtualServiceRoutesApi/GetVirtualServiceRoutes", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// VirtualServiceRoutesApiServer is the server API for VirtualServiceRoutesApi service. -type VirtualServiceRoutesApiServer interface { - GetVirtualServiceRoutes(context.Context, *GetVirtualServiceRoutesRequest) (*GetVirtualServiceRoutesResponse, error) -} - -// UnimplementedVirtualServiceRoutesApiServer can be embedded to have forward compatible implementations. -type UnimplementedVirtualServiceRoutesApiServer struct { -} - -func (*UnimplementedVirtualServiceRoutesApiServer) GetVirtualServiceRoutes(context.Context, *GetVirtualServiceRoutesRequest) (*GetVirtualServiceRoutesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetVirtualServiceRoutes not implemented") -} - -func RegisterVirtualServiceRoutesApiServer(s *grpc.Server, srv VirtualServiceRoutesApiServer) { - s.RegisterService(&_VirtualServiceRoutesApi_serviceDesc, srv) -} - -func _VirtualServiceRoutesApi_GetVirtualServiceRoutes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetVirtualServiceRoutesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VirtualServiceRoutesApiServer).GetVirtualServiceRoutes(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/fed.rpc.solo.io.VirtualServiceRoutesApi/GetVirtualServiceRoutes", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VirtualServiceRoutesApiServer).GetVirtualServiceRoutes(ctx, req.(*GetVirtualServiceRoutesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _VirtualServiceRoutesApi_serviceDesc = grpc.ServiceDesc{ - ServiceName: "fed.rpc.solo.io.VirtualServiceRoutesApi", - HandlerType: (*VirtualServiceRoutesApiServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetVirtualServiceRoutes", - Handler: _VirtualServiceRoutesApi_GetVirtualServiceRoutes_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/rt_selector.proto", -} diff --git a/pkg/api/fed.rpc/v1/rt_selector.pb.hash.go b/pkg/api/fed.rpc/v1/rt_selector.pb.hash.go deleted file mode 100644 index 8e3496caa..000000000 --- a/pkg/api/fed.rpc/v1/rt_selector.pb.hash.go +++ /dev/null @@ -1,244 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo-fed/fed.rpc/v1/rt_selector.proto - -package v1 - -import ( - "encoding/binary" - "errors" - "fmt" - "hash" - "hash/fnv" - - "github.com/mitchellh/hashstructure" - safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = new(hash.Hash64) - _ = fnv.New64 - _ = hashstructure.Hash - _ = new(safe_hasher.SafeHasher) -) - -// Hash function -func (m *SubRouteTableRow) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.SubRouteTableRow")); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetMatcher())); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetMatchType())); err != nil { - return 0, err - } - - for _, v := range m.GetMethods() { - - if _, err = hasher.Write([]byte(v)); err != nil { - return 0, err - } - - } - - for _, v := range m.GetHeaders() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - for _, v := range m.GetQueryParameters() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - for _, v := range m.GetRtRoutes() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - switch m.Action.(type) { - - case *SubRouteTableRow_RouteAction: - - if h, ok := interface{}(m.GetRouteAction()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetRouteAction(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - case *SubRouteTableRow_RedirectAction: - - if h, ok := interface{}(m.GetRedirectAction()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetRedirectAction(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - case *SubRouteTableRow_DirectResponseAction: - - if h, ok := interface{}(m.GetDirectResponseAction()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetDirectResponseAction(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - case *SubRouteTableRow_DelegateAction: - - if h, ok := interface{}(m.GetDelegateAction()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetDelegateAction(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetVirtualServiceRoutesRequest) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetVirtualServiceRoutesRequest")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetVirtualServiceRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetVirtualServiceRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *GetVirtualServiceRoutesResponse) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("fed.rpc.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.rpc/v1.GetVirtualServiceRoutesResponse")); err != nil { - return 0, err - } - - for _, v := range m.GetVsRoutes() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} diff --git a/pkg/api/fed.solo.io/core/v1/placement.pb.go b/pkg/api/fed.solo.io/core/v1/placement.pb.go index c9b8ee7e5..a666d8580 100644 --- a/pkg/api/fed.solo.io/core/v1/placement.pb.go +++ b/pkg/api/fed.solo.io/core/v1/placement.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo-fed/fed/core/v1/placement.proto @@ -9,12 +9,12 @@ package v1 import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - _ "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -24,10 +24,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type PlacementStatus_State int32 const ( @@ -92,23 +88,21 @@ func (PlacementStatus_State) EnumDescriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_rawDescGZIP(), []int{1, 0} } +// Object Metadata to be written with the resource into the remote cluster type TemplateMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Annotations map[string]string `protobuf:"bytes,1,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Labels map[string]string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Annotations map[string]string `protobuf:"bytes,1,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Labels map[string]string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TemplateMetadata) Reset() { *x = TemplateMetadata{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TemplateMetadata) String() string { @@ -119,7 +113,7 @@ func (*TemplateMetadata) ProtoMessage() {} func (x *TemplateMetadata) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -156,29 +150,26 @@ func (x *TemplateMetadata) GetName() string { } type PlacementStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Clusters map[string]*PlacementStatus_Cluster `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + state protoimpl.MessageState `protogen:"open.v1"` + // map containing the name of the cluster, with the associated Cluster namespaces. + Clusters map[string]*PlacementStatus_Cluster `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` State PlacementStatus_State `protobuf:"varint,2,opt,name=state,proto3,enum=core.fed.solo.io.PlacementStatus_State" json:"state,omitempty"` Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` // metadata.Generation of the resource which has been processed ObservedGeneration int64 `protobuf:"varint,4,opt,name=observed_generation,json=observedGeneration,proto3" json:"observed_generation,omitempty"` - // - //A field indicating the entity responsible for writing this status. - //This is useful for determining if the pod has been restarted since the resource was processed. - //Typically this value will be set to metadata.name of the pod - WrittenBy string `protobuf:"bytes,5,opt,name=written_by,json=writtenBy,proto3" json:"written_by,omitempty"` + // A field indicating the entity responsible for writing this status. + // This is useful for determining if the pod has been restarted since the resource was processed. + // Typically this value will be set to metadata.name of the pod + WrittenBy string `protobuf:"bytes,5,opt,name=written_by,json=writtenBy,proto3" json:"written_by,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PlacementStatus) Reset() { *x = PlacementStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PlacementStatus) String() string { @@ -189,7 +180,7 @@ func (*PlacementStatus) ProtoMessage() {} func (x *PlacementStatus) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -240,21 +231,18 @@ func (x *PlacementStatus) GetWrittenBy() string { } type PlacementStatus_Namespace struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + State PlacementStatus_State `protobuf:"varint,2,opt,name=state,proto3,enum=core.fed.solo.io.PlacementStatus_State" json:"state,omitempty"` + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` unknownFields protoimpl.UnknownFields - - State PlacementStatus_State `protobuf:"varint,2,opt,name=state,proto3,enum=core.fed.solo.io.PlacementStatus_State" json:"state,omitempty"` - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PlacementStatus_Namespace) Reset() { *x = PlacementStatus_Namespace{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PlacementStatus_Namespace) String() string { @@ -265,7 +253,7 @@ func (*PlacementStatus_Namespace) ProtoMessage() {} func (x *PlacementStatus_Namespace) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -295,21 +283,18 @@ func (x *PlacementStatus_Namespace) GetMessage() string { } type PlacementStatus_Cluster struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // map containing the name of the namespace, with the associated status. - Namespaces map[string]*PlacementStatus_Namespace `protobuf:"bytes,1,rep,name=namespaces,proto3" json:"namespaces,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Namespaces map[string]*PlacementStatus_Namespace `protobuf:"bytes,1,rep,name=namespaces,proto3" json:"namespaces,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PlacementStatus_Cluster) Reset() { *x = PlacementStatus_Cluster{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PlacementStatus_Cluster) String() string { @@ -320,7 +305,7 @@ func (*PlacementStatus_Cluster) ProtoMessage() {} func (x *PlacementStatus_Cluster) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -344,7 +329,7 @@ func (x *PlacementStatus_Cluster) GetNamespaces() map[string]*PlacementStatus_Na var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_rawDesc = string([]byte{ 0x0a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2f, @@ -422,28 +407,28 @@ var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_r 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x54, 0x41, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x42, 0x42, - 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, - 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, - 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, + 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, + 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_msgTypes = make([]protoimpl.MessageInfo, 8) -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_goTypes = []any{ (PlacementStatus_State)(0), // 0: core.fed.solo.io.PlacementStatus.State (*TemplateMetadata)(nil), // 1: core.fed.solo.io.TemplateMetadata (*PlacementStatus)(nil), // 2: core.fed.solo.io.PlacementStatus @@ -475,61 +460,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_ if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TemplateMetadata); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlacementStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlacementStatus_Namespace); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlacementStatus_Cluster); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_rawDesc)), NumEnums: 1, NumMessages: 8, NumExtensions: 0, @@ -541,7 +476,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_ MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_fed_fed_core_v1_placement_proto_depIdxs = nil } diff --git a/pkg/api/fed.solo.io/core/v1/placement.pb.hash.go b/pkg/api/fed.solo.io/core/v1/placement.pb.hash.go index edbd1afde..a2cff5c25 100644 --- a/pkg/api/fed.solo.io/core/v1/placement.pb.hash.go +++ b/pkg/api/fed.solo.io/core/v1/placement.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *TemplateMetadata) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -92,6 +96,10 @@ func (m *TemplateMetadata) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *PlacementStatus) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -111,14 +119,20 @@ func (m *PlacementStatus) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -159,6 +173,10 @@ func (m *PlacementStatus) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *PlacementStatus_Namespace) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -184,6 +202,10 @@ func (m *PlacementStatus_Namespace) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *PlacementStatus_Cluster) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -203,14 +225,20 @@ func (m *PlacementStatus_Cluster) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/fed.solo.io/core/v1/placement.pb.uniquehash.go b/pkg/api/fed.solo.io/core/v1/placement.pb.uniquehash.go new file mode 100644 index 000000000..defba07dc --- /dev/null +++ b/pkg/api/fed.solo.io/core/v1/placement.pb.uniquehash.go @@ -0,0 +1,298 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo-fed/fed/core/v1/placement.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TemplateMetadata) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("core.fed.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.solo.io/core/v1.TemplateMetadata")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetAnnotations() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetLabels() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *PlacementStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("core.fed.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.solo.io/core/v1.PlacementStatus")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetClusters() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("State")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Message")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetMessage())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ObservedGeneration")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetObservedGeneration()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("WrittenBy")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetWrittenBy())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *PlacementStatus_Namespace) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("core.fed.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.solo.io/core/v1.PlacementStatus_Namespace")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("State")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Message")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetMessage())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *PlacementStatus_Cluster) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("core.fed.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.solo.io/core/v1.PlacementStatus_Cluster")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespaces() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/fed.solo.io/v1/clients.go b/pkg/api/fed.solo.io/v1/clients.go index 40306cafe..a6e63827b 100644 --- a/pkg/api/fed.solo.io/v1/clients.go +++ b/pkg/api/fed.solo.io/v1/clients.go @@ -1,5 +1,7 @@ // Code generated by skv2. DO NOT EDIT. +//go:generate mockgen -source ./clients.go -destination mocks/clients.go + package v1 import ( @@ -39,6 +41,8 @@ func (m *multiclusterClientset) Cluster(cluster string) (Clientset, error) { type Clientset interface { // clienset for the fed.solo.io/v1/v1 APIs GlooInstances() GlooInstanceClient + // clienset for the fed.solo.io/v1/v1 APIs + FailoverSchemes() FailoverSchemeClient } type clientSet struct { @@ -47,7 +51,7 @@ type clientSet struct { func NewClientsetFromConfig(cfg *rest.Config) (Clientset, error) { scheme := scheme.Scheme - if err := AddToScheme(scheme); err != nil { + if err := SchemeBuilder.AddToScheme(scheme); err != nil { return nil, err } client, err := client.New(cfg, client.Options{ @@ -68,6 +72,11 @@ func (c *clientSet) GlooInstances() GlooInstanceClient { return NewGlooInstanceClient(c.client) } +// clienset for the fed.solo.io/v1/v1 APIs +func (c *clientSet) FailoverSchemes() FailoverSchemeClient { + return NewFailoverSchemeClient(c.client) +} + // Reader knows how to read and list GlooInstances. type GlooInstanceReader interface { // Get retrieves a GlooInstance for the given object key @@ -106,10 +115,10 @@ type GlooInstanceWriter interface { type GlooInstanceStatusWriter interface { // Update updates the fields corresponding to the status subresource for the // given GlooInstance object. - UpdateGlooInstanceStatus(ctx context.Context, obj *GlooInstance, opts ...client.UpdateOption) error + UpdateGlooInstanceStatus(ctx context.Context, obj *GlooInstance, opts ...client.SubResourceUpdateOption) error // Patch patches the given GlooInstance object's subresource. - PatchGlooInstanceStatus(ctx context.Context, obj *GlooInstance, patch client.Patch, opts ...client.PatchOption) error + PatchGlooInstanceStatus(ctx context.Context, obj *GlooInstance, patch client.Patch, opts ...client.SubResourcePatchOption) error } // Client knows how to perform CRUD operations on GlooInstances. @@ -180,11 +189,11 @@ func (c *glooInstanceClient) UpsertGlooInstance(ctx context.Context, obj *GlooIn return err } -func (c *glooInstanceClient) UpdateGlooInstanceStatus(ctx context.Context, obj *GlooInstance, opts ...client.UpdateOption) error { +func (c *glooInstanceClient) UpdateGlooInstanceStatus(ctx context.Context, obj *GlooInstance, opts ...client.SubResourceUpdateOption) error { return c.client.Status().Update(ctx, obj, opts...) } -func (c *glooInstanceClient) PatchGlooInstanceStatus(ctx context.Context, obj *GlooInstance, patch client.Patch, opts ...client.PatchOption) error { +func (c *glooInstanceClient) PatchGlooInstanceStatus(ctx context.Context, obj *GlooInstance, patch client.Patch, opts ...client.SubResourcePatchOption) error { return c.client.Status().Patch(ctx, obj, patch, opts...) } @@ -209,3 +218,145 @@ func (m *multiclusterGlooInstanceClient) Cluster(cluster string) (GlooInstanceCl } return NewGlooInstanceClient(client), nil } + +// Reader knows how to read and list FailoverSchemes. +type FailoverSchemeReader interface { + // Get retrieves a FailoverScheme for the given object key + GetFailoverScheme(ctx context.Context, key client.ObjectKey) (*FailoverScheme, error) + + // List retrieves list of FailoverSchemes for a given namespace and list options. + ListFailoverScheme(ctx context.Context, opts ...client.ListOption) (*FailoverSchemeList, error) +} + +// FailoverSchemeTransitionFunction instructs the FailoverSchemeWriter how to transition between an existing +// FailoverScheme object and a desired on an Upsert +type FailoverSchemeTransitionFunction func(existing, desired *FailoverScheme) error + +// Writer knows how to create, delete, and update FailoverSchemes. +type FailoverSchemeWriter interface { + // Create saves the FailoverScheme object. + CreateFailoverScheme(ctx context.Context, obj *FailoverScheme, opts ...client.CreateOption) error + + // Delete deletes the FailoverScheme object. + DeleteFailoverScheme(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error + + // Update updates the given FailoverScheme object. + UpdateFailoverScheme(ctx context.Context, obj *FailoverScheme, opts ...client.UpdateOption) error + + // Patch patches the given FailoverScheme object. + PatchFailoverScheme(ctx context.Context, obj *FailoverScheme, patch client.Patch, opts ...client.PatchOption) error + + // DeleteAllOf deletes all FailoverScheme objects matching the given options. + DeleteAllOfFailoverScheme(ctx context.Context, opts ...client.DeleteAllOfOption) error + + // Create or Update the FailoverScheme object. + UpsertFailoverScheme(ctx context.Context, obj *FailoverScheme, transitionFuncs ...FailoverSchemeTransitionFunction) error +} + +// StatusWriter knows how to update status subresource of a FailoverScheme object. +type FailoverSchemeStatusWriter interface { + // Update updates the fields corresponding to the status subresource for the + // given FailoverScheme object. + UpdateFailoverSchemeStatus(ctx context.Context, obj *FailoverScheme, opts ...client.SubResourceUpdateOption) error + + // Patch patches the given FailoverScheme object's subresource. + PatchFailoverSchemeStatus(ctx context.Context, obj *FailoverScheme, patch client.Patch, opts ...client.SubResourcePatchOption) error +} + +// Client knows how to perform CRUD operations on FailoverSchemes. +type FailoverSchemeClient interface { + FailoverSchemeReader + FailoverSchemeWriter + FailoverSchemeStatusWriter +} + +type failoverSchemeClient struct { + client client.Client +} + +func NewFailoverSchemeClient(client client.Client) *failoverSchemeClient { + return &failoverSchemeClient{client: client} +} + +func (c *failoverSchemeClient) GetFailoverScheme(ctx context.Context, key client.ObjectKey) (*FailoverScheme, error) { + obj := &FailoverScheme{} + if err := c.client.Get(ctx, key, obj); err != nil { + return nil, err + } + return obj, nil +} + +func (c *failoverSchemeClient) ListFailoverScheme(ctx context.Context, opts ...client.ListOption) (*FailoverSchemeList, error) { + list := &FailoverSchemeList{} + if err := c.client.List(ctx, list, opts...); err != nil { + return nil, err + } + return list, nil +} + +func (c *failoverSchemeClient) CreateFailoverScheme(ctx context.Context, obj *FailoverScheme, opts ...client.CreateOption) error { + return c.client.Create(ctx, obj, opts...) +} + +func (c *failoverSchemeClient) DeleteFailoverScheme(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + obj := &FailoverScheme{} + obj.SetName(key.Name) + obj.SetNamespace(key.Namespace) + return c.client.Delete(ctx, obj, opts...) +} + +func (c *failoverSchemeClient) UpdateFailoverScheme(ctx context.Context, obj *FailoverScheme, opts ...client.UpdateOption) error { + return c.client.Update(ctx, obj, opts...) +} + +func (c *failoverSchemeClient) PatchFailoverScheme(ctx context.Context, obj *FailoverScheme, patch client.Patch, opts ...client.PatchOption) error { + return c.client.Patch(ctx, obj, patch, opts...) +} + +func (c *failoverSchemeClient) DeleteAllOfFailoverScheme(ctx context.Context, opts ...client.DeleteAllOfOption) error { + obj := &FailoverScheme{} + return c.client.DeleteAllOf(ctx, obj, opts...) +} + +func (c *failoverSchemeClient) UpsertFailoverScheme(ctx context.Context, obj *FailoverScheme, transitionFuncs ...FailoverSchemeTransitionFunction) error { + genericTxFunc := func(existing, desired runtime.Object) error { + for _, txFunc := range transitionFuncs { + if err := txFunc(existing.(*FailoverScheme), desired.(*FailoverScheme)); err != nil { + return err + } + } + return nil + } + _, err := controllerutils.Upsert(ctx, c.client, obj, genericTxFunc) + return err +} + +func (c *failoverSchemeClient) UpdateFailoverSchemeStatus(ctx context.Context, obj *FailoverScheme, opts ...client.SubResourceUpdateOption) error { + return c.client.Status().Update(ctx, obj, opts...) +} + +func (c *failoverSchemeClient) PatchFailoverSchemeStatus(ctx context.Context, obj *FailoverScheme, patch client.Patch, opts ...client.SubResourcePatchOption) error { + return c.client.Status().Patch(ctx, obj, patch, opts...) +} + +// Provides FailoverSchemeClients for multiple clusters. +type MulticlusterFailoverSchemeClient interface { + // Cluster returns a FailoverSchemeClient for the given cluster + Cluster(cluster string) (FailoverSchemeClient, error) +} + +type multiclusterFailoverSchemeClient struct { + client multicluster.Client +} + +func NewMulticlusterFailoverSchemeClient(client multicluster.Client) MulticlusterFailoverSchemeClient { + return &multiclusterFailoverSchemeClient{client: client} +} + +func (m *multiclusterFailoverSchemeClient) Cluster(cluster string) (FailoverSchemeClient, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewFailoverSchemeClient(client), nil +} diff --git a/pkg/api/fed.solo.io/v1/controller/event_handlers.go b/pkg/api/fed.solo.io/v1/controller/event_handlers.go new file mode 100644 index 000000000..d59015f6b --- /dev/null +++ b/pkg/api/fed.solo.io/v1/controller/event_handlers.go @@ -0,0 +1,232 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./event_handlers.go -destination mocks/event_handlers.go + +// Definitions for the Kubernetes Controllers +package controller + +import ( + "context" + + fed_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1" + + "github.com/pkg/errors" + "github.com/solo-io/skv2/pkg/events" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/manager" + "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// Handle events for the GlooInstance Resource +// DEPRECATED: Prefer reconciler pattern. +type GlooInstanceEventHandler interface { + CreateGlooInstance(obj *fed_solo_io_v1.GlooInstance) error + UpdateGlooInstance(old, new *fed_solo_io_v1.GlooInstance) error + DeleteGlooInstance(obj *fed_solo_io_v1.GlooInstance) error + GenericGlooInstance(obj *fed_solo_io_v1.GlooInstance) error +} + +type GlooInstanceEventHandlerFuncs struct { + OnCreate func(obj *fed_solo_io_v1.GlooInstance) error + OnUpdate func(old, new *fed_solo_io_v1.GlooInstance) error + OnDelete func(obj *fed_solo_io_v1.GlooInstance) error + OnGeneric func(obj *fed_solo_io_v1.GlooInstance) error +} + +func (f *GlooInstanceEventHandlerFuncs) CreateGlooInstance(obj *fed_solo_io_v1.GlooInstance) error { + if f.OnCreate == nil { + return nil + } + return f.OnCreate(obj) +} + +func (f *GlooInstanceEventHandlerFuncs) DeleteGlooInstance(obj *fed_solo_io_v1.GlooInstance) error { + if f.OnDelete == nil { + return nil + } + return f.OnDelete(obj) +} + +func (f *GlooInstanceEventHandlerFuncs) UpdateGlooInstance(objOld, objNew *fed_solo_io_v1.GlooInstance) error { + if f.OnUpdate == nil { + return nil + } + return f.OnUpdate(objOld, objNew) +} + +func (f *GlooInstanceEventHandlerFuncs) GenericGlooInstance(obj *fed_solo_io_v1.GlooInstance) error { + if f.OnGeneric == nil { + return nil + } + return f.OnGeneric(obj) +} + +type GlooInstanceEventWatcher interface { + AddEventHandler(ctx context.Context, h GlooInstanceEventHandler, predicates ...predicate.Predicate) error +} + +type glooInstanceEventWatcher struct { + watcher events.EventWatcher +} + +func NewGlooInstanceEventWatcher(name string, mgr manager.Manager) GlooInstanceEventWatcher { + return &glooInstanceEventWatcher{ + watcher: events.NewWatcher(name, mgr, &fed_solo_io_v1.GlooInstance{}), + } +} + +func (c *glooInstanceEventWatcher) AddEventHandler(ctx context.Context, h GlooInstanceEventHandler, predicates ...predicate.Predicate) error { + handler := genericGlooInstanceHandler{handler: h} + if err := c.watcher.Watch(ctx, handler, predicates...); err != nil { + return err + } + return nil +} + +// genericGlooInstanceHandler implements a generic events.EventHandler +type genericGlooInstanceHandler struct { + handler GlooInstanceEventHandler +} + +func (h genericGlooInstanceHandler) Create(object client.Object) error { + obj, ok := object.(*fed_solo_io_v1.GlooInstance) + if !ok { + return errors.Errorf("internal error: GlooInstance handler received event for %T", object) + } + return h.handler.CreateGlooInstance(obj) +} + +func (h genericGlooInstanceHandler) Delete(object client.Object) error { + obj, ok := object.(*fed_solo_io_v1.GlooInstance) + if !ok { + return errors.Errorf("internal error: GlooInstance handler received event for %T", object) + } + return h.handler.DeleteGlooInstance(obj) +} + +func (h genericGlooInstanceHandler) Update(old, new client.Object) error { + objOld, ok := old.(*fed_solo_io_v1.GlooInstance) + if !ok { + return errors.Errorf("internal error: GlooInstance handler received event for %T", old) + } + objNew, ok := new.(*fed_solo_io_v1.GlooInstance) + if !ok { + return errors.Errorf("internal error: GlooInstance handler received event for %T", new) + } + return h.handler.UpdateGlooInstance(objOld, objNew) +} + +func (h genericGlooInstanceHandler) Generic(object client.Object) error { + obj, ok := object.(*fed_solo_io_v1.GlooInstance) + if !ok { + return errors.Errorf("internal error: GlooInstance handler received event for %T", object) + } + return h.handler.GenericGlooInstance(obj) +} + +// Handle events for the FailoverScheme Resource +// DEPRECATED: Prefer reconciler pattern. +type FailoverSchemeEventHandler interface { + CreateFailoverScheme(obj *fed_solo_io_v1.FailoverScheme) error + UpdateFailoverScheme(old, new *fed_solo_io_v1.FailoverScheme) error + DeleteFailoverScheme(obj *fed_solo_io_v1.FailoverScheme) error + GenericFailoverScheme(obj *fed_solo_io_v1.FailoverScheme) error +} + +type FailoverSchemeEventHandlerFuncs struct { + OnCreate func(obj *fed_solo_io_v1.FailoverScheme) error + OnUpdate func(old, new *fed_solo_io_v1.FailoverScheme) error + OnDelete func(obj *fed_solo_io_v1.FailoverScheme) error + OnGeneric func(obj *fed_solo_io_v1.FailoverScheme) error +} + +func (f *FailoverSchemeEventHandlerFuncs) CreateFailoverScheme(obj *fed_solo_io_v1.FailoverScheme) error { + if f.OnCreate == nil { + return nil + } + return f.OnCreate(obj) +} + +func (f *FailoverSchemeEventHandlerFuncs) DeleteFailoverScheme(obj *fed_solo_io_v1.FailoverScheme) error { + if f.OnDelete == nil { + return nil + } + return f.OnDelete(obj) +} + +func (f *FailoverSchemeEventHandlerFuncs) UpdateFailoverScheme(objOld, objNew *fed_solo_io_v1.FailoverScheme) error { + if f.OnUpdate == nil { + return nil + } + return f.OnUpdate(objOld, objNew) +} + +func (f *FailoverSchemeEventHandlerFuncs) GenericFailoverScheme(obj *fed_solo_io_v1.FailoverScheme) error { + if f.OnGeneric == nil { + return nil + } + return f.OnGeneric(obj) +} + +type FailoverSchemeEventWatcher interface { + AddEventHandler(ctx context.Context, h FailoverSchemeEventHandler, predicates ...predicate.Predicate) error +} + +type failoverSchemeEventWatcher struct { + watcher events.EventWatcher +} + +func NewFailoverSchemeEventWatcher(name string, mgr manager.Manager) FailoverSchemeEventWatcher { + return &failoverSchemeEventWatcher{ + watcher: events.NewWatcher(name, mgr, &fed_solo_io_v1.FailoverScheme{}), + } +} + +func (c *failoverSchemeEventWatcher) AddEventHandler(ctx context.Context, h FailoverSchemeEventHandler, predicates ...predicate.Predicate) error { + handler := genericFailoverSchemeHandler{handler: h} + if err := c.watcher.Watch(ctx, handler, predicates...); err != nil { + return err + } + return nil +} + +// genericFailoverSchemeHandler implements a generic events.EventHandler +type genericFailoverSchemeHandler struct { + handler FailoverSchemeEventHandler +} + +func (h genericFailoverSchemeHandler) Create(object client.Object) error { + obj, ok := object.(*fed_solo_io_v1.FailoverScheme) + if !ok { + return errors.Errorf("internal error: FailoverScheme handler received event for %T", object) + } + return h.handler.CreateFailoverScheme(obj) +} + +func (h genericFailoverSchemeHandler) Delete(object client.Object) error { + obj, ok := object.(*fed_solo_io_v1.FailoverScheme) + if !ok { + return errors.Errorf("internal error: FailoverScheme handler received event for %T", object) + } + return h.handler.DeleteFailoverScheme(obj) +} + +func (h genericFailoverSchemeHandler) Update(old, new client.Object) error { + objOld, ok := old.(*fed_solo_io_v1.FailoverScheme) + if !ok { + return errors.Errorf("internal error: FailoverScheme handler received event for %T", old) + } + objNew, ok := new.(*fed_solo_io_v1.FailoverScheme) + if !ok { + return errors.Errorf("internal error: FailoverScheme handler received event for %T", new) + } + return h.handler.UpdateFailoverScheme(objOld, objNew) +} + +func (h genericFailoverSchemeHandler) Generic(object client.Object) error { + obj, ok := object.(*fed_solo_io_v1.FailoverScheme) + if !ok { + return errors.Errorf("internal error: FailoverScheme handler received event for %T", object) + } + return h.handler.GenericFailoverScheme(obj) +} diff --git a/pkg/api/fed.solo.io/v1/controller/mocks/event_handlers.go b/pkg/api/fed.solo.io/v1/controller/mocks/event_handlers.go new file mode 100644 index 000000000..e874d74e9 --- /dev/null +++ b/pkg/api/fed.solo.io/v1/controller/mocks/event_handlers.go @@ -0,0 +1,257 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./event_handlers.go + +// Package mock_controller is a generated GoMock package. +package mock_controller + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1" + controller "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/controller" + predicate "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// MockGlooInstanceEventHandler is a mock of GlooInstanceEventHandler interface. +type MockGlooInstanceEventHandler struct { + ctrl *gomock.Controller + recorder *MockGlooInstanceEventHandlerMockRecorder +} + +// MockGlooInstanceEventHandlerMockRecorder is the mock recorder for MockGlooInstanceEventHandler. +type MockGlooInstanceEventHandlerMockRecorder struct { + mock *MockGlooInstanceEventHandler +} + +// NewMockGlooInstanceEventHandler creates a new mock instance. +func NewMockGlooInstanceEventHandler(ctrl *gomock.Controller) *MockGlooInstanceEventHandler { + mock := &MockGlooInstanceEventHandler{ctrl: ctrl} + mock.recorder = &MockGlooInstanceEventHandlerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGlooInstanceEventHandler) EXPECT() *MockGlooInstanceEventHandlerMockRecorder { + return m.recorder +} + +// CreateGlooInstance mocks base method. +func (m *MockGlooInstanceEventHandler) CreateGlooInstance(obj *v1.GlooInstance) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateGlooInstance", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateGlooInstance indicates an expected call of CreateGlooInstance. +func (mr *MockGlooInstanceEventHandlerMockRecorder) CreateGlooInstance(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateGlooInstance", reflect.TypeOf((*MockGlooInstanceEventHandler)(nil).CreateGlooInstance), obj) +} + +// DeleteGlooInstance mocks base method. +func (m *MockGlooInstanceEventHandler) DeleteGlooInstance(obj *v1.GlooInstance) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteGlooInstance", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteGlooInstance indicates an expected call of DeleteGlooInstance. +func (mr *MockGlooInstanceEventHandlerMockRecorder) DeleteGlooInstance(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteGlooInstance", reflect.TypeOf((*MockGlooInstanceEventHandler)(nil).DeleteGlooInstance), obj) +} + +// GenericGlooInstance mocks base method. +func (m *MockGlooInstanceEventHandler) GenericGlooInstance(obj *v1.GlooInstance) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GenericGlooInstance", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// GenericGlooInstance indicates an expected call of GenericGlooInstance. +func (mr *MockGlooInstanceEventHandlerMockRecorder) GenericGlooInstance(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericGlooInstance", reflect.TypeOf((*MockGlooInstanceEventHandler)(nil).GenericGlooInstance), obj) +} + +// UpdateGlooInstance mocks base method. +func (m *MockGlooInstanceEventHandler) UpdateGlooInstance(old, new *v1.GlooInstance) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateGlooInstance", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateGlooInstance indicates an expected call of UpdateGlooInstance. +func (mr *MockGlooInstanceEventHandlerMockRecorder) UpdateGlooInstance(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateGlooInstance", reflect.TypeOf((*MockGlooInstanceEventHandler)(nil).UpdateGlooInstance), old, new) +} + +// MockGlooInstanceEventWatcher is a mock of GlooInstanceEventWatcher interface. +type MockGlooInstanceEventWatcher struct { + ctrl *gomock.Controller + recorder *MockGlooInstanceEventWatcherMockRecorder +} + +// MockGlooInstanceEventWatcherMockRecorder is the mock recorder for MockGlooInstanceEventWatcher. +type MockGlooInstanceEventWatcherMockRecorder struct { + mock *MockGlooInstanceEventWatcher +} + +// NewMockGlooInstanceEventWatcher creates a new mock instance. +func NewMockGlooInstanceEventWatcher(ctrl *gomock.Controller) *MockGlooInstanceEventWatcher { + mock := &MockGlooInstanceEventWatcher{ctrl: ctrl} + mock.recorder = &MockGlooInstanceEventWatcherMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGlooInstanceEventWatcher) EXPECT() *MockGlooInstanceEventWatcherMockRecorder { + return m.recorder +} + +// AddEventHandler mocks base method. +func (m *MockGlooInstanceEventWatcher) AddEventHandler(ctx context.Context, h controller.GlooInstanceEventHandler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, h} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "AddEventHandler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddEventHandler indicates an expected call of AddEventHandler. +func (mr *MockGlooInstanceEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, h}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockGlooInstanceEventWatcher)(nil).AddEventHandler), varargs...) +} + +// MockFailoverSchemeEventHandler is a mock of FailoverSchemeEventHandler interface. +type MockFailoverSchemeEventHandler struct { + ctrl *gomock.Controller + recorder *MockFailoverSchemeEventHandlerMockRecorder +} + +// MockFailoverSchemeEventHandlerMockRecorder is the mock recorder for MockFailoverSchemeEventHandler. +type MockFailoverSchemeEventHandlerMockRecorder struct { + mock *MockFailoverSchemeEventHandler +} + +// NewMockFailoverSchemeEventHandler creates a new mock instance. +func NewMockFailoverSchemeEventHandler(ctrl *gomock.Controller) *MockFailoverSchemeEventHandler { + mock := &MockFailoverSchemeEventHandler{ctrl: ctrl} + mock.recorder = &MockFailoverSchemeEventHandlerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFailoverSchemeEventHandler) EXPECT() *MockFailoverSchemeEventHandlerMockRecorder { + return m.recorder +} + +// CreateFailoverScheme mocks base method. +func (m *MockFailoverSchemeEventHandler) CreateFailoverScheme(obj *v1.FailoverScheme) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateFailoverScheme", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFailoverScheme indicates an expected call of CreateFailoverScheme. +func (mr *MockFailoverSchemeEventHandlerMockRecorder) CreateFailoverScheme(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFailoverScheme", reflect.TypeOf((*MockFailoverSchemeEventHandler)(nil).CreateFailoverScheme), obj) +} + +// DeleteFailoverScheme mocks base method. +func (m *MockFailoverSchemeEventHandler) DeleteFailoverScheme(obj *v1.FailoverScheme) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteFailoverScheme", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFailoverScheme indicates an expected call of DeleteFailoverScheme. +func (mr *MockFailoverSchemeEventHandlerMockRecorder) DeleteFailoverScheme(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFailoverScheme", reflect.TypeOf((*MockFailoverSchemeEventHandler)(nil).DeleteFailoverScheme), obj) +} + +// GenericFailoverScheme mocks base method. +func (m *MockFailoverSchemeEventHandler) GenericFailoverScheme(obj *v1.FailoverScheme) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GenericFailoverScheme", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// GenericFailoverScheme indicates an expected call of GenericFailoverScheme. +func (mr *MockFailoverSchemeEventHandlerMockRecorder) GenericFailoverScheme(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericFailoverScheme", reflect.TypeOf((*MockFailoverSchemeEventHandler)(nil).GenericFailoverScheme), obj) +} + +// UpdateFailoverScheme mocks base method. +func (m *MockFailoverSchemeEventHandler) UpdateFailoverScheme(old, new *v1.FailoverScheme) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateFailoverScheme", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFailoverScheme indicates an expected call of UpdateFailoverScheme. +func (mr *MockFailoverSchemeEventHandlerMockRecorder) UpdateFailoverScheme(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFailoverScheme", reflect.TypeOf((*MockFailoverSchemeEventHandler)(nil).UpdateFailoverScheme), old, new) +} + +// MockFailoverSchemeEventWatcher is a mock of FailoverSchemeEventWatcher interface. +type MockFailoverSchemeEventWatcher struct { + ctrl *gomock.Controller + recorder *MockFailoverSchemeEventWatcherMockRecorder +} + +// MockFailoverSchemeEventWatcherMockRecorder is the mock recorder for MockFailoverSchemeEventWatcher. +type MockFailoverSchemeEventWatcherMockRecorder struct { + mock *MockFailoverSchemeEventWatcher +} + +// NewMockFailoverSchemeEventWatcher creates a new mock instance. +func NewMockFailoverSchemeEventWatcher(ctrl *gomock.Controller) *MockFailoverSchemeEventWatcher { + mock := &MockFailoverSchemeEventWatcher{ctrl: ctrl} + mock.recorder = &MockFailoverSchemeEventWatcherMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFailoverSchemeEventWatcher) EXPECT() *MockFailoverSchemeEventWatcherMockRecorder { + return m.recorder +} + +// AddEventHandler mocks base method. +func (m *MockFailoverSchemeEventWatcher) AddEventHandler(ctx context.Context, h controller.FailoverSchemeEventHandler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, h} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "AddEventHandler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddEventHandler indicates an expected call of AddEventHandler. +func (mr *MockFailoverSchemeEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, h}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockFailoverSchemeEventWatcher)(nil).AddEventHandler), varargs...) +} diff --git a/pkg/api/fed.solo.io/v1/controller/mocks/multicluster_reconcilers.go b/pkg/api/fed.solo.io/v1/controller/mocks/multicluster_reconcilers.go new file mode 100644 index 000000000..ceee3d474 --- /dev/null +++ b/pkg/api/fed.solo.io/v1/controller/mocks/multicluster_reconcilers.go @@ -0,0 +1,246 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./multicluster_reconcilers.go + +// Package mock_controller is a generated GoMock package. +package mock_controller + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + reconcile "github.com/solo-io/skv2/pkg/reconcile" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1" + controller "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/controller" + predicate "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// MockMulticlusterGlooInstanceReconciler is a mock of MulticlusterGlooInstanceReconciler interface. +type MockMulticlusterGlooInstanceReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterGlooInstanceReconcilerMockRecorder +} + +// MockMulticlusterGlooInstanceReconcilerMockRecorder is the mock recorder for MockMulticlusterGlooInstanceReconciler. +type MockMulticlusterGlooInstanceReconcilerMockRecorder struct { + mock *MockMulticlusterGlooInstanceReconciler +} + +// NewMockMulticlusterGlooInstanceReconciler creates a new mock instance. +func NewMockMulticlusterGlooInstanceReconciler(ctrl *gomock.Controller) *MockMulticlusterGlooInstanceReconciler { + mock := &MockMulticlusterGlooInstanceReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterGlooInstanceReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterGlooInstanceReconciler) EXPECT() *MockMulticlusterGlooInstanceReconcilerMockRecorder { + return m.recorder +} + +// ReconcileGlooInstance mocks base method. +func (m *MockMulticlusterGlooInstanceReconciler) ReconcileGlooInstance(clusterName string, obj *v1.GlooInstance) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileGlooInstance", clusterName, obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileGlooInstance indicates an expected call of ReconcileGlooInstance. +func (mr *MockMulticlusterGlooInstanceReconcilerMockRecorder) ReconcileGlooInstance(clusterName, obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileGlooInstance", reflect.TypeOf((*MockMulticlusterGlooInstanceReconciler)(nil).ReconcileGlooInstance), clusterName, obj) +} + +// MockMulticlusterGlooInstanceDeletionReconciler is a mock of MulticlusterGlooInstanceDeletionReconciler interface. +type MockMulticlusterGlooInstanceDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterGlooInstanceDeletionReconcilerMockRecorder +} + +// MockMulticlusterGlooInstanceDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterGlooInstanceDeletionReconciler. +type MockMulticlusterGlooInstanceDeletionReconcilerMockRecorder struct { + mock *MockMulticlusterGlooInstanceDeletionReconciler +} + +// NewMockMulticlusterGlooInstanceDeletionReconciler creates a new mock instance. +func NewMockMulticlusterGlooInstanceDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterGlooInstanceDeletionReconciler { + mock := &MockMulticlusterGlooInstanceDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterGlooInstanceDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterGlooInstanceDeletionReconciler) EXPECT() *MockMulticlusterGlooInstanceDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileGlooInstanceDeletion mocks base method. +func (m *MockMulticlusterGlooInstanceDeletionReconciler) ReconcileGlooInstanceDeletion(clusterName string, req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileGlooInstanceDeletion", clusterName, req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileGlooInstanceDeletion indicates an expected call of ReconcileGlooInstanceDeletion. +func (mr *MockMulticlusterGlooInstanceDeletionReconcilerMockRecorder) ReconcileGlooInstanceDeletion(clusterName, req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileGlooInstanceDeletion", reflect.TypeOf((*MockMulticlusterGlooInstanceDeletionReconciler)(nil).ReconcileGlooInstanceDeletion), clusterName, req) +} + +// MockMulticlusterGlooInstanceReconcileLoop is a mock of MulticlusterGlooInstanceReconcileLoop interface. +type MockMulticlusterGlooInstanceReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockMulticlusterGlooInstanceReconcileLoopMockRecorder +} + +// MockMulticlusterGlooInstanceReconcileLoopMockRecorder is the mock recorder for MockMulticlusterGlooInstanceReconcileLoop. +type MockMulticlusterGlooInstanceReconcileLoopMockRecorder struct { + mock *MockMulticlusterGlooInstanceReconcileLoop +} + +// NewMockMulticlusterGlooInstanceReconcileLoop creates a new mock instance. +func NewMockMulticlusterGlooInstanceReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterGlooInstanceReconcileLoop { + mock := &MockMulticlusterGlooInstanceReconcileLoop{ctrl: ctrl} + mock.recorder = &MockMulticlusterGlooInstanceReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterGlooInstanceReconcileLoop) EXPECT() *MockMulticlusterGlooInstanceReconcileLoopMockRecorder { + return m.recorder +} + +// AddMulticlusterGlooInstanceReconciler mocks base method. +func (m *MockMulticlusterGlooInstanceReconcileLoop) AddMulticlusterGlooInstanceReconciler(ctx context.Context, rec controller.MulticlusterGlooInstanceReconciler, predicates ...predicate.Predicate) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "AddMulticlusterGlooInstanceReconciler", varargs...) +} + +// AddMulticlusterGlooInstanceReconciler indicates an expected call of AddMulticlusterGlooInstanceReconciler. +func (mr *MockMulticlusterGlooInstanceReconcileLoopMockRecorder) AddMulticlusterGlooInstanceReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterGlooInstanceReconciler", reflect.TypeOf((*MockMulticlusterGlooInstanceReconcileLoop)(nil).AddMulticlusterGlooInstanceReconciler), varargs...) +} + +// MockMulticlusterFailoverSchemeReconciler is a mock of MulticlusterFailoverSchemeReconciler interface. +type MockMulticlusterFailoverSchemeReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFailoverSchemeReconcilerMockRecorder +} + +// MockMulticlusterFailoverSchemeReconcilerMockRecorder is the mock recorder for MockMulticlusterFailoverSchemeReconciler. +type MockMulticlusterFailoverSchemeReconcilerMockRecorder struct { + mock *MockMulticlusterFailoverSchemeReconciler +} + +// NewMockMulticlusterFailoverSchemeReconciler creates a new mock instance. +func NewMockMulticlusterFailoverSchemeReconciler(ctrl *gomock.Controller) *MockMulticlusterFailoverSchemeReconciler { + mock := &MockMulticlusterFailoverSchemeReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterFailoverSchemeReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFailoverSchemeReconciler) EXPECT() *MockMulticlusterFailoverSchemeReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFailoverScheme mocks base method. +func (m *MockMulticlusterFailoverSchemeReconciler) ReconcileFailoverScheme(clusterName string, obj *v1.FailoverScheme) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFailoverScheme", clusterName, obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFailoverScheme indicates an expected call of ReconcileFailoverScheme. +func (mr *MockMulticlusterFailoverSchemeReconcilerMockRecorder) ReconcileFailoverScheme(clusterName, obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFailoverScheme", reflect.TypeOf((*MockMulticlusterFailoverSchemeReconciler)(nil).ReconcileFailoverScheme), clusterName, obj) +} + +// MockMulticlusterFailoverSchemeDeletionReconciler is a mock of MulticlusterFailoverSchemeDeletionReconciler interface. +type MockMulticlusterFailoverSchemeDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFailoverSchemeDeletionReconcilerMockRecorder +} + +// MockMulticlusterFailoverSchemeDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterFailoverSchemeDeletionReconciler. +type MockMulticlusterFailoverSchemeDeletionReconcilerMockRecorder struct { + mock *MockMulticlusterFailoverSchemeDeletionReconciler +} + +// NewMockMulticlusterFailoverSchemeDeletionReconciler creates a new mock instance. +func NewMockMulticlusterFailoverSchemeDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterFailoverSchemeDeletionReconciler { + mock := &MockMulticlusterFailoverSchemeDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterFailoverSchemeDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFailoverSchemeDeletionReconciler) EXPECT() *MockMulticlusterFailoverSchemeDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFailoverSchemeDeletion mocks base method. +func (m *MockMulticlusterFailoverSchemeDeletionReconciler) ReconcileFailoverSchemeDeletion(clusterName string, req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFailoverSchemeDeletion", clusterName, req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileFailoverSchemeDeletion indicates an expected call of ReconcileFailoverSchemeDeletion. +func (mr *MockMulticlusterFailoverSchemeDeletionReconcilerMockRecorder) ReconcileFailoverSchemeDeletion(clusterName, req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFailoverSchemeDeletion", reflect.TypeOf((*MockMulticlusterFailoverSchemeDeletionReconciler)(nil).ReconcileFailoverSchemeDeletion), clusterName, req) +} + +// MockMulticlusterFailoverSchemeReconcileLoop is a mock of MulticlusterFailoverSchemeReconcileLoop interface. +type MockMulticlusterFailoverSchemeReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFailoverSchemeReconcileLoopMockRecorder +} + +// MockMulticlusterFailoverSchemeReconcileLoopMockRecorder is the mock recorder for MockMulticlusterFailoverSchemeReconcileLoop. +type MockMulticlusterFailoverSchemeReconcileLoopMockRecorder struct { + mock *MockMulticlusterFailoverSchemeReconcileLoop +} + +// NewMockMulticlusterFailoverSchemeReconcileLoop creates a new mock instance. +func NewMockMulticlusterFailoverSchemeReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterFailoverSchemeReconcileLoop { + mock := &MockMulticlusterFailoverSchemeReconcileLoop{ctrl: ctrl} + mock.recorder = &MockMulticlusterFailoverSchemeReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFailoverSchemeReconcileLoop) EXPECT() *MockMulticlusterFailoverSchemeReconcileLoopMockRecorder { + return m.recorder +} + +// AddMulticlusterFailoverSchemeReconciler mocks base method. +func (m *MockMulticlusterFailoverSchemeReconcileLoop) AddMulticlusterFailoverSchemeReconciler(ctx context.Context, rec controller.MulticlusterFailoverSchemeReconciler, predicates ...predicate.Predicate) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "AddMulticlusterFailoverSchemeReconciler", varargs...) +} + +// AddMulticlusterFailoverSchemeReconciler indicates an expected call of AddMulticlusterFailoverSchemeReconciler. +func (mr *MockMulticlusterFailoverSchemeReconcileLoopMockRecorder) AddMulticlusterFailoverSchemeReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterFailoverSchemeReconciler", reflect.TypeOf((*MockMulticlusterFailoverSchemeReconcileLoop)(nil).AddMulticlusterFailoverSchemeReconciler), varargs...) +} diff --git a/pkg/api/fed.solo.io/v1/controller/mocks/reconcilers.go b/pkg/api/fed.solo.io/v1/controller/mocks/reconcilers.go new file mode 100644 index 000000000..a1b043f71 --- /dev/null +++ b/pkg/api/fed.solo.io/v1/controller/mocks/reconcilers.go @@ -0,0 +1,382 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./reconcilers.go + +// Package mock_controller is a generated GoMock package. +package mock_controller + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + reconcile "github.com/solo-io/skv2/pkg/reconcile" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1" + controller "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/controller" + predicate "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// MockGlooInstanceReconciler is a mock of GlooInstanceReconciler interface. +type MockGlooInstanceReconciler struct { + ctrl *gomock.Controller + recorder *MockGlooInstanceReconcilerMockRecorder +} + +// MockGlooInstanceReconcilerMockRecorder is the mock recorder for MockGlooInstanceReconciler. +type MockGlooInstanceReconcilerMockRecorder struct { + mock *MockGlooInstanceReconciler +} + +// NewMockGlooInstanceReconciler creates a new mock instance. +func NewMockGlooInstanceReconciler(ctrl *gomock.Controller) *MockGlooInstanceReconciler { + mock := &MockGlooInstanceReconciler{ctrl: ctrl} + mock.recorder = &MockGlooInstanceReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGlooInstanceReconciler) EXPECT() *MockGlooInstanceReconcilerMockRecorder { + return m.recorder +} + +// ReconcileGlooInstance mocks base method. +func (m *MockGlooInstanceReconciler) ReconcileGlooInstance(obj *v1.GlooInstance) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileGlooInstance", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileGlooInstance indicates an expected call of ReconcileGlooInstance. +func (mr *MockGlooInstanceReconcilerMockRecorder) ReconcileGlooInstance(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileGlooInstance", reflect.TypeOf((*MockGlooInstanceReconciler)(nil).ReconcileGlooInstance), obj) +} + +// MockGlooInstanceDeletionReconciler is a mock of GlooInstanceDeletionReconciler interface. +type MockGlooInstanceDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockGlooInstanceDeletionReconcilerMockRecorder +} + +// MockGlooInstanceDeletionReconcilerMockRecorder is the mock recorder for MockGlooInstanceDeletionReconciler. +type MockGlooInstanceDeletionReconcilerMockRecorder struct { + mock *MockGlooInstanceDeletionReconciler +} + +// NewMockGlooInstanceDeletionReconciler creates a new mock instance. +func NewMockGlooInstanceDeletionReconciler(ctrl *gomock.Controller) *MockGlooInstanceDeletionReconciler { + mock := &MockGlooInstanceDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockGlooInstanceDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGlooInstanceDeletionReconciler) EXPECT() *MockGlooInstanceDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileGlooInstanceDeletion mocks base method. +func (m *MockGlooInstanceDeletionReconciler) ReconcileGlooInstanceDeletion(req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileGlooInstanceDeletion", req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileGlooInstanceDeletion indicates an expected call of ReconcileGlooInstanceDeletion. +func (mr *MockGlooInstanceDeletionReconcilerMockRecorder) ReconcileGlooInstanceDeletion(req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileGlooInstanceDeletion", reflect.TypeOf((*MockGlooInstanceDeletionReconciler)(nil).ReconcileGlooInstanceDeletion), req) +} + +// MockGlooInstanceFinalizer is a mock of GlooInstanceFinalizer interface. +type MockGlooInstanceFinalizer struct { + ctrl *gomock.Controller + recorder *MockGlooInstanceFinalizerMockRecorder +} + +// MockGlooInstanceFinalizerMockRecorder is the mock recorder for MockGlooInstanceFinalizer. +type MockGlooInstanceFinalizerMockRecorder struct { + mock *MockGlooInstanceFinalizer +} + +// NewMockGlooInstanceFinalizer creates a new mock instance. +func NewMockGlooInstanceFinalizer(ctrl *gomock.Controller) *MockGlooInstanceFinalizer { + mock := &MockGlooInstanceFinalizer{ctrl: ctrl} + mock.recorder = &MockGlooInstanceFinalizerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGlooInstanceFinalizer) EXPECT() *MockGlooInstanceFinalizerMockRecorder { + return m.recorder +} + +// FinalizeGlooInstance mocks base method. +func (m *MockGlooInstanceFinalizer) FinalizeGlooInstance(obj *v1.GlooInstance) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeGlooInstance", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeGlooInstance indicates an expected call of FinalizeGlooInstance. +func (mr *MockGlooInstanceFinalizerMockRecorder) FinalizeGlooInstance(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeGlooInstance", reflect.TypeOf((*MockGlooInstanceFinalizer)(nil).FinalizeGlooInstance), obj) +} + +// GlooInstanceFinalizerName mocks base method. +func (m *MockGlooInstanceFinalizer) GlooInstanceFinalizerName() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GlooInstanceFinalizerName") + ret0, _ := ret[0].(string) + return ret0 +} + +// GlooInstanceFinalizerName indicates an expected call of GlooInstanceFinalizerName. +func (mr *MockGlooInstanceFinalizerMockRecorder) GlooInstanceFinalizerName() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GlooInstanceFinalizerName", reflect.TypeOf((*MockGlooInstanceFinalizer)(nil).GlooInstanceFinalizerName)) +} + +// ReconcileGlooInstance mocks base method. +func (m *MockGlooInstanceFinalizer) ReconcileGlooInstance(obj *v1.GlooInstance) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileGlooInstance", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileGlooInstance indicates an expected call of ReconcileGlooInstance. +func (mr *MockGlooInstanceFinalizerMockRecorder) ReconcileGlooInstance(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileGlooInstance", reflect.TypeOf((*MockGlooInstanceFinalizer)(nil).ReconcileGlooInstance), obj) +} + +// MockGlooInstanceReconcileLoop is a mock of GlooInstanceReconcileLoop interface. +type MockGlooInstanceReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockGlooInstanceReconcileLoopMockRecorder +} + +// MockGlooInstanceReconcileLoopMockRecorder is the mock recorder for MockGlooInstanceReconcileLoop. +type MockGlooInstanceReconcileLoopMockRecorder struct { + mock *MockGlooInstanceReconcileLoop +} + +// NewMockGlooInstanceReconcileLoop creates a new mock instance. +func NewMockGlooInstanceReconcileLoop(ctrl *gomock.Controller) *MockGlooInstanceReconcileLoop { + mock := &MockGlooInstanceReconcileLoop{ctrl: ctrl} + mock.recorder = &MockGlooInstanceReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGlooInstanceReconcileLoop) EXPECT() *MockGlooInstanceReconcileLoopMockRecorder { + return m.recorder +} + +// RunGlooInstanceReconciler mocks base method. +func (m *MockGlooInstanceReconcileLoop) RunGlooInstanceReconciler(ctx context.Context, rec controller.GlooInstanceReconciler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RunGlooInstanceReconciler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// RunGlooInstanceReconciler indicates an expected call of RunGlooInstanceReconciler. +func (mr *MockGlooInstanceReconcileLoopMockRecorder) RunGlooInstanceReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunGlooInstanceReconciler", reflect.TypeOf((*MockGlooInstanceReconcileLoop)(nil).RunGlooInstanceReconciler), varargs...) +} + +// MockFailoverSchemeReconciler is a mock of FailoverSchemeReconciler interface. +type MockFailoverSchemeReconciler struct { + ctrl *gomock.Controller + recorder *MockFailoverSchemeReconcilerMockRecorder +} + +// MockFailoverSchemeReconcilerMockRecorder is the mock recorder for MockFailoverSchemeReconciler. +type MockFailoverSchemeReconcilerMockRecorder struct { + mock *MockFailoverSchemeReconciler +} + +// NewMockFailoverSchemeReconciler creates a new mock instance. +func NewMockFailoverSchemeReconciler(ctrl *gomock.Controller) *MockFailoverSchemeReconciler { + mock := &MockFailoverSchemeReconciler{ctrl: ctrl} + mock.recorder = &MockFailoverSchemeReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFailoverSchemeReconciler) EXPECT() *MockFailoverSchemeReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFailoverScheme mocks base method. +func (m *MockFailoverSchemeReconciler) ReconcileFailoverScheme(obj *v1.FailoverScheme) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFailoverScheme", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFailoverScheme indicates an expected call of ReconcileFailoverScheme. +func (mr *MockFailoverSchemeReconcilerMockRecorder) ReconcileFailoverScheme(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFailoverScheme", reflect.TypeOf((*MockFailoverSchemeReconciler)(nil).ReconcileFailoverScheme), obj) +} + +// MockFailoverSchemeDeletionReconciler is a mock of FailoverSchemeDeletionReconciler interface. +type MockFailoverSchemeDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockFailoverSchemeDeletionReconcilerMockRecorder +} + +// MockFailoverSchemeDeletionReconcilerMockRecorder is the mock recorder for MockFailoverSchemeDeletionReconciler. +type MockFailoverSchemeDeletionReconcilerMockRecorder struct { + mock *MockFailoverSchemeDeletionReconciler +} + +// NewMockFailoverSchemeDeletionReconciler creates a new mock instance. +func NewMockFailoverSchemeDeletionReconciler(ctrl *gomock.Controller) *MockFailoverSchemeDeletionReconciler { + mock := &MockFailoverSchemeDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockFailoverSchemeDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFailoverSchemeDeletionReconciler) EXPECT() *MockFailoverSchemeDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileFailoverSchemeDeletion mocks base method. +func (m *MockFailoverSchemeDeletionReconciler) ReconcileFailoverSchemeDeletion(req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFailoverSchemeDeletion", req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileFailoverSchemeDeletion indicates an expected call of ReconcileFailoverSchemeDeletion. +func (mr *MockFailoverSchemeDeletionReconcilerMockRecorder) ReconcileFailoverSchemeDeletion(req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFailoverSchemeDeletion", reflect.TypeOf((*MockFailoverSchemeDeletionReconciler)(nil).ReconcileFailoverSchemeDeletion), req) +} + +// MockFailoverSchemeFinalizer is a mock of FailoverSchemeFinalizer interface. +type MockFailoverSchemeFinalizer struct { + ctrl *gomock.Controller + recorder *MockFailoverSchemeFinalizerMockRecorder +} + +// MockFailoverSchemeFinalizerMockRecorder is the mock recorder for MockFailoverSchemeFinalizer. +type MockFailoverSchemeFinalizerMockRecorder struct { + mock *MockFailoverSchemeFinalizer +} + +// NewMockFailoverSchemeFinalizer creates a new mock instance. +func NewMockFailoverSchemeFinalizer(ctrl *gomock.Controller) *MockFailoverSchemeFinalizer { + mock := &MockFailoverSchemeFinalizer{ctrl: ctrl} + mock.recorder = &MockFailoverSchemeFinalizerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFailoverSchemeFinalizer) EXPECT() *MockFailoverSchemeFinalizerMockRecorder { + return m.recorder +} + +// FailoverSchemeFinalizerName mocks base method. +func (m *MockFailoverSchemeFinalizer) FailoverSchemeFinalizerName() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FailoverSchemeFinalizerName") + ret0, _ := ret[0].(string) + return ret0 +} + +// FailoverSchemeFinalizerName indicates an expected call of FailoverSchemeFinalizerName. +func (mr *MockFailoverSchemeFinalizerMockRecorder) FailoverSchemeFinalizerName() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FailoverSchemeFinalizerName", reflect.TypeOf((*MockFailoverSchemeFinalizer)(nil).FailoverSchemeFinalizerName)) +} + +// FinalizeFailoverScheme mocks base method. +func (m *MockFailoverSchemeFinalizer) FinalizeFailoverScheme(obj *v1.FailoverScheme) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeFailoverScheme", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeFailoverScheme indicates an expected call of FinalizeFailoverScheme. +func (mr *MockFailoverSchemeFinalizerMockRecorder) FinalizeFailoverScheme(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeFailoverScheme", reflect.TypeOf((*MockFailoverSchemeFinalizer)(nil).FinalizeFailoverScheme), obj) +} + +// ReconcileFailoverScheme mocks base method. +func (m *MockFailoverSchemeFinalizer) ReconcileFailoverScheme(obj *v1.FailoverScheme) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileFailoverScheme", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileFailoverScheme indicates an expected call of ReconcileFailoverScheme. +func (mr *MockFailoverSchemeFinalizerMockRecorder) ReconcileFailoverScheme(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileFailoverScheme", reflect.TypeOf((*MockFailoverSchemeFinalizer)(nil).ReconcileFailoverScheme), obj) +} + +// MockFailoverSchemeReconcileLoop is a mock of FailoverSchemeReconcileLoop interface. +type MockFailoverSchemeReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockFailoverSchemeReconcileLoopMockRecorder +} + +// MockFailoverSchemeReconcileLoopMockRecorder is the mock recorder for MockFailoverSchemeReconcileLoop. +type MockFailoverSchemeReconcileLoopMockRecorder struct { + mock *MockFailoverSchemeReconcileLoop +} + +// NewMockFailoverSchemeReconcileLoop creates a new mock instance. +func NewMockFailoverSchemeReconcileLoop(ctrl *gomock.Controller) *MockFailoverSchemeReconcileLoop { + mock := &MockFailoverSchemeReconcileLoop{ctrl: ctrl} + mock.recorder = &MockFailoverSchemeReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFailoverSchemeReconcileLoop) EXPECT() *MockFailoverSchemeReconcileLoopMockRecorder { + return m.recorder +} + +// RunFailoverSchemeReconciler mocks base method. +func (m *MockFailoverSchemeReconcileLoop) RunFailoverSchemeReconciler(ctx context.Context, rec controller.FailoverSchemeReconciler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RunFailoverSchemeReconciler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// RunFailoverSchemeReconciler indicates an expected call of RunFailoverSchemeReconciler. +func (mr *MockFailoverSchemeReconcileLoopMockRecorder) RunFailoverSchemeReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunFailoverSchemeReconciler", reflect.TypeOf((*MockFailoverSchemeReconcileLoop)(nil).RunFailoverSchemeReconciler), varargs...) +} diff --git a/pkg/api/fed.solo.io/v1/controller/multicluster_reconcilers.go b/pkg/api/fed.solo.io/v1/controller/multicluster_reconcilers.go new file mode 100644 index 000000000..908564212 --- /dev/null +++ b/pkg/api/fed.solo.io/v1/controller/multicluster_reconcilers.go @@ -0,0 +1,161 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./multicluster_reconcilers.go -destination mocks/multicluster_reconcilers.go + +// Definitions for the multicluster Kubernetes Controllers +package controller + +import ( + "context" + + fed_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1" + + "github.com/pkg/errors" + "github.com/solo-io/skv2/pkg/ezkube" + "github.com/solo-io/skv2/pkg/multicluster" + mc_reconcile "github.com/solo-io/skv2/pkg/multicluster/reconcile" + "github.com/solo-io/skv2/pkg/reconcile" + "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// Reconcile Upsert events for the GlooInstance Resource across clusters. +// implemented by the user +type MulticlusterGlooInstanceReconciler interface { + ReconcileGlooInstance(clusterName string, obj *fed_solo_io_v1.GlooInstance) (reconcile.Result, error) +} + +// Reconcile deletion events for the GlooInstance Resource across clusters. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type MulticlusterGlooInstanceDeletionReconciler interface { + ReconcileGlooInstanceDeletion(clusterName string, req reconcile.Request) error +} + +type MulticlusterGlooInstanceReconcilerFuncs struct { + OnReconcileGlooInstance func(clusterName string, obj *fed_solo_io_v1.GlooInstance) (reconcile.Result, error) + OnReconcileGlooInstanceDeletion func(clusterName string, req reconcile.Request) error +} + +func (f *MulticlusterGlooInstanceReconcilerFuncs) ReconcileGlooInstance(clusterName string, obj *fed_solo_io_v1.GlooInstance) (reconcile.Result, error) { + if f.OnReconcileGlooInstance == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileGlooInstance(clusterName, obj) +} + +func (f *MulticlusterGlooInstanceReconcilerFuncs) ReconcileGlooInstanceDeletion(clusterName string, req reconcile.Request) error { + if f.OnReconcileGlooInstanceDeletion == nil { + return nil + } + return f.OnReconcileGlooInstanceDeletion(clusterName, req) +} + +type MulticlusterGlooInstanceReconcileLoop interface { + // AddMulticlusterGlooInstanceReconciler adds a MulticlusterGlooInstanceReconciler to the MulticlusterGlooInstanceReconcileLoop. + AddMulticlusterGlooInstanceReconciler(ctx context.Context, rec MulticlusterGlooInstanceReconciler, predicates ...predicate.Predicate) +} + +type multiclusterGlooInstanceReconcileLoop struct { + loop multicluster.Loop +} + +func (m *multiclusterGlooInstanceReconcileLoop) AddMulticlusterGlooInstanceReconciler(ctx context.Context, rec MulticlusterGlooInstanceReconciler, predicates ...predicate.Predicate) { + genericReconciler := genericGlooInstanceMulticlusterReconciler{reconciler: rec} + + m.loop.AddReconciler(ctx, genericReconciler, predicates...) +} + +func NewMulticlusterGlooInstanceReconcileLoop(name string, cw multicluster.ClusterWatcher, options reconcile.Options) MulticlusterGlooInstanceReconcileLoop { + return &multiclusterGlooInstanceReconcileLoop{loop: mc_reconcile.NewLoop(name, cw, &fed_solo_io_v1.GlooInstance{}, options)} +} + +type genericGlooInstanceMulticlusterReconciler struct { + reconciler MulticlusterGlooInstanceReconciler +} + +func (g genericGlooInstanceMulticlusterReconciler) ReconcileDeletion(cluster string, req reconcile.Request) error { + if deletionReconciler, ok := g.reconciler.(MulticlusterGlooInstanceDeletionReconciler); ok { + return deletionReconciler.ReconcileGlooInstanceDeletion(cluster, req) + } + return nil +} + +func (g genericGlooInstanceMulticlusterReconciler) Reconcile(cluster string, object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_solo_io_v1.GlooInstance) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: GlooInstance handler received event for %T", object) + } + return g.reconciler.ReconcileGlooInstance(cluster, obj) +} + +// Reconcile Upsert events for the FailoverScheme Resource across clusters. +// implemented by the user +type MulticlusterFailoverSchemeReconciler interface { + ReconcileFailoverScheme(clusterName string, obj *fed_solo_io_v1.FailoverScheme) (reconcile.Result, error) +} + +// Reconcile deletion events for the FailoverScheme Resource across clusters. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type MulticlusterFailoverSchemeDeletionReconciler interface { + ReconcileFailoverSchemeDeletion(clusterName string, req reconcile.Request) error +} + +type MulticlusterFailoverSchemeReconcilerFuncs struct { + OnReconcileFailoverScheme func(clusterName string, obj *fed_solo_io_v1.FailoverScheme) (reconcile.Result, error) + OnReconcileFailoverSchemeDeletion func(clusterName string, req reconcile.Request) error +} + +func (f *MulticlusterFailoverSchemeReconcilerFuncs) ReconcileFailoverScheme(clusterName string, obj *fed_solo_io_v1.FailoverScheme) (reconcile.Result, error) { + if f.OnReconcileFailoverScheme == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileFailoverScheme(clusterName, obj) +} + +func (f *MulticlusterFailoverSchemeReconcilerFuncs) ReconcileFailoverSchemeDeletion(clusterName string, req reconcile.Request) error { + if f.OnReconcileFailoverSchemeDeletion == nil { + return nil + } + return f.OnReconcileFailoverSchemeDeletion(clusterName, req) +} + +type MulticlusterFailoverSchemeReconcileLoop interface { + // AddMulticlusterFailoverSchemeReconciler adds a MulticlusterFailoverSchemeReconciler to the MulticlusterFailoverSchemeReconcileLoop. + AddMulticlusterFailoverSchemeReconciler(ctx context.Context, rec MulticlusterFailoverSchemeReconciler, predicates ...predicate.Predicate) +} + +type multiclusterFailoverSchemeReconcileLoop struct { + loop multicluster.Loop +} + +func (m *multiclusterFailoverSchemeReconcileLoop) AddMulticlusterFailoverSchemeReconciler(ctx context.Context, rec MulticlusterFailoverSchemeReconciler, predicates ...predicate.Predicate) { + genericReconciler := genericFailoverSchemeMulticlusterReconciler{reconciler: rec} + + m.loop.AddReconciler(ctx, genericReconciler, predicates...) +} + +func NewMulticlusterFailoverSchemeReconcileLoop(name string, cw multicluster.ClusterWatcher, options reconcile.Options) MulticlusterFailoverSchemeReconcileLoop { + return &multiclusterFailoverSchemeReconcileLoop{loop: mc_reconcile.NewLoop(name, cw, &fed_solo_io_v1.FailoverScheme{}, options)} +} + +type genericFailoverSchemeMulticlusterReconciler struct { + reconciler MulticlusterFailoverSchemeReconciler +} + +func (g genericFailoverSchemeMulticlusterReconciler) ReconcileDeletion(cluster string, req reconcile.Request) error { + if deletionReconciler, ok := g.reconciler.(MulticlusterFailoverSchemeDeletionReconciler); ok { + return deletionReconciler.ReconcileFailoverSchemeDeletion(cluster, req) + } + return nil +} + +func (g genericFailoverSchemeMulticlusterReconciler) Reconcile(cluster string, object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_solo_io_v1.FailoverScheme) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: FailoverScheme handler received event for %T", object) + } + return g.reconciler.ReconcileFailoverScheme(cluster, obj) +} diff --git a/pkg/api/fed.solo.io/v1/controller/reconcilers.go b/pkg/api/fed.solo.io/v1/controller/reconcilers.go new file mode 100644 index 000000000..8ad5decbf --- /dev/null +++ b/pkg/api/fed.solo.io/v1/controller/reconcilers.go @@ -0,0 +1,252 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./reconcilers.go -destination mocks/reconcilers.go + +// Definitions for the Kubernetes Controllers +package controller + +import ( + "context" + + fed_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1" + + "github.com/pkg/errors" + "github.com/solo-io/skv2/pkg/ezkube" + "github.com/solo-io/skv2/pkg/reconcile" + "sigs.k8s.io/controller-runtime/pkg/manager" + "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// Reconcile Upsert events for the GlooInstance Resource. +// implemented by the user +type GlooInstanceReconciler interface { + ReconcileGlooInstance(obj *fed_solo_io_v1.GlooInstance) (reconcile.Result, error) +} + +// Reconcile deletion events for the GlooInstance Resource. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type GlooInstanceDeletionReconciler interface { + ReconcileGlooInstanceDeletion(req reconcile.Request) error +} + +type GlooInstanceReconcilerFuncs struct { + OnReconcileGlooInstance func(obj *fed_solo_io_v1.GlooInstance) (reconcile.Result, error) + OnReconcileGlooInstanceDeletion func(req reconcile.Request) error +} + +func (f *GlooInstanceReconcilerFuncs) ReconcileGlooInstance(obj *fed_solo_io_v1.GlooInstance) (reconcile.Result, error) { + if f.OnReconcileGlooInstance == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileGlooInstance(obj) +} + +func (f *GlooInstanceReconcilerFuncs) ReconcileGlooInstanceDeletion(req reconcile.Request) error { + if f.OnReconcileGlooInstanceDeletion == nil { + return nil + } + return f.OnReconcileGlooInstanceDeletion(req) +} + +// Reconcile and finalize the GlooInstance Resource +// implemented by the user +type GlooInstanceFinalizer interface { + GlooInstanceReconciler + + // name of the finalizer used by this handler. + // finalizer names should be unique for a single task + GlooInstanceFinalizerName() string + + // finalize the object before it is deleted. + // Watchers created with a finalizing handler will a + FinalizeGlooInstance(obj *fed_solo_io_v1.GlooInstance) error +} + +type GlooInstanceReconcileLoop interface { + RunGlooInstanceReconciler(ctx context.Context, rec GlooInstanceReconciler, predicates ...predicate.Predicate) error +} + +type glooInstanceReconcileLoop struct { + loop reconcile.Loop +} + +func NewGlooInstanceReconcileLoop(name string, mgr manager.Manager, options reconcile.Options) GlooInstanceReconcileLoop { + return &glooInstanceReconcileLoop{ + // empty cluster indicates this reconciler is built for the local cluster + loop: reconcile.NewLoop(name, "", mgr, &fed_solo_io_v1.GlooInstance{}, options), + } +} + +func (c *glooInstanceReconcileLoop) RunGlooInstanceReconciler(ctx context.Context, reconciler GlooInstanceReconciler, predicates ...predicate.Predicate) error { + genericReconciler := genericGlooInstanceReconciler{ + reconciler: reconciler, + } + + var reconcilerWrapper reconcile.Reconciler + if finalizingReconciler, ok := reconciler.(GlooInstanceFinalizer); ok { + reconcilerWrapper = genericGlooInstanceFinalizer{ + genericGlooInstanceReconciler: genericReconciler, + finalizingReconciler: finalizingReconciler, + } + } else { + reconcilerWrapper = genericReconciler + } + return c.loop.RunReconciler(ctx, reconcilerWrapper, predicates...) +} + +// genericGlooInstanceHandler implements a generic reconcile.Reconciler +type genericGlooInstanceReconciler struct { + reconciler GlooInstanceReconciler +} + +func (r genericGlooInstanceReconciler) Reconcile(object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_solo_io_v1.GlooInstance) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: GlooInstance handler received event for %T", object) + } + return r.reconciler.ReconcileGlooInstance(obj) +} + +func (r genericGlooInstanceReconciler) ReconcileDeletion(request reconcile.Request) error { + if deletionReconciler, ok := r.reconciler.(GlooInstanceDeletionReconciler); ok { + return deletionReconciler.ReconcileGlooInstanceDeletion(request) + } + return nil +} + +// genericGlooInstanceFinalizer implements a generic reconcile.FinalizingReconciler +type genericGlooInstanceFinalizer struct { + genericGlooInstanceReconciler + finalizingReconciler GlooInstanceFinalizer +} + +func (r genericGlooInstanceFinalizer) FinalizerName() string { + return r.finalizingReconciler.GlooInstanceFinalizerName() +} + +func (r genericGlooInstanceFinalizer) Finalize(object ezkube.Object) error { + obj, ok := object.(*fed_solo_io_v1.GlooInstance) + if !ok { + return errors.Errorf("internal error: GlooInstance handler received event for %T", object) + } + return r.finalizingReconciler.FinalizeGlooInstance(obj) +} + +// Reconcile Upsert events for the FailoverScheme Resource. +// implemented by the user +type FailoverSchemeReconciler interface { + ReconcileFailoverScheme(obj *fed_solo_io_v1.FailoverScheme) (reconcile.Result, error) +} + +// Reconcile deletion events for the FailoverScheme Resource. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type FailoverSchemeDeletionReconciler interface { + ReconcileFailoverSchemeDeletion(req reconcile.Request) error +} + +type FailoverSchemeReconcilerFuncs struct { + OnReconcileFailoverScheme func(obj *fed_solo_io_v1.FailoverScheme) (reconcile.Result, error) + OnReconcileFailoverSchemeDeletion func(req reconcile.Request) error +} + +func (f *FailoverSchemeReconcilerFuncs) ReconcileFailoverScheme(obj *fed_solo_io_v1.FailoverScheme) (reconcile.Result, error) { + if f.OnReconcileFailoverScheme == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileFailoverScheme(obj) +} + +func (f *FailoverSchemeReconcilerFuncs) ReconcileFailoverSchemeDeletion(req reconcile.Request) error { + if f.OnReconcileFailoverSchemeDeletion == nil { + return nil + } + return f.OnReconcileFailoverSchemeDeletion(req) +} + +// Reconcile and finalize the FailoverScheme Resource +// implemented by the user +type FailoverSchemeFinalizer interface { + FailoverSchemeReconciler + + // name of the finalizer used by this handler. + // finalizer names should be unique for a single task + FailoverSchemeFinalizerName() string + + // finalize the object before it is deleted. + // Watchers created with a finalizing handler will a + FinalizeFailoverScheme(obj *fed_solo_io_v1.FailoverScheme) error +} + +type FailoverSchemeReconcileLoop interface { + RunFailoverSchemeReconciler(ctx context.Context, rec FailoverSchemeReconciler, predicates ...predicate.Predicate) error +} + +type failoverSchemeReconcileLoop struct { + loop reconcile.Loop +} + +func NewFailoverSchemeReconcileLoop(name string, mgr manager.Manager, options reconcile.Options) FailoverSchemeReconcileLoop { + return &failoverSchemeReconcileLoop{ + // empty cluster indicates this reconciler is built for the local cluster + loop: reconcile.NewLoop(name, "", mgr, &fed_solo_io_v1.FailoverScheme{}, options), + } +} + +func (c *failoverSchemeReconcileLoop) RunFailoverSchemeReconciler(ctx context.Context, reconciler FailoverSchemeReconciler, predicates ...predicate.Predicate) error { + genericReconciler := genericFailoverSchemeReconciler{ + reconciler: reconciler, + } + + var reconcilerWrapper reconcile.Reconciler + if finalizingReconciler, ok := reconciler.(FailoverSchemeFinalizer); ok { + reconcilerWrapper = genericFailoverSchemeFinalizer{ + genericFailoverSchemeReconciler: genericReconciler, + finalizingReconciler: finalizingReconciler, + } + } else { + reconcilerWrapper = genericReconciler + } + return c.loop.RunReconciler(ctx, reconcilerWrapper, predicates...) +} + +// genericFailoverSchemeHandler implements a generic reconcile.Reconciler +type genericFailoverSchemeReconciler struct { + reconciler FailoverSchemeReconciler +} + +func (r genericFailoverSchemeReconciler) Reconcile(object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*fed_solo_io_v1.FailoverScheme) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: FailoverScheme handler received event for %T", object) + } + return r.reconciler.ReconcileFailoverScheme(obj) +} + +func (r genericFailoverSchemeReconciler) ReconcileDeletion(request reconcile.Request) error { + if deletionReconciler, ok := r.reconciler.(FailoverSchemeDeletionReconciler); ok { + return deletionReconciler.ReconcileFailoverSchemeDeletion(request) + } + return nil +} + +// genericFailoverSchemeFinalizer implements a generic reconcile.FinalizingReconciler +type genericFailoverSchemeFinalizer struct { + genericFailoverSchemeReconciler + finalizingReconciler FailoverSchemeFinalizer +} + +func (r genericFailoverSchemeFinalizer) FinalizerName() string { + return r.finalizingReconciler.FailoverSchemeFinalizerName() +} + +func (r genericFailoverSchemeFinalizer) Finalize(object ezkube.Object) error { + obj, ok := object.(*fed_solo_io_v1.FailoverScheme) + if !ok { + return errors.Errorf("internal error: FailoverScheme handler received event for %T", object) + } + return r.finalizingReconciler.FinalizeFailoverScheme(obj) +} diff --git a/pkg/api/fed.solo.io/v1/mocks/clients.go b/pkg/api/fed.solo.io/v1/mocks/clients.go new file mode 100644 index 000000000..fd8d11c77 --- /dev/null +++ b/pkg/api/fed.solo.io/v1/mocks/clients.go @@ -0,0 +1,1111 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./clients.go + +// Package mock_v1 is a generated GoMock package. +package mock_v1 + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1" + client "sigs.k8s.io/controller-runtime/pkg/client" +) + +// MockMulticlusterClientset is a mock of MulticlusterClientset interface. +type MockMulticlusterClientset struct { + ctrl *gomock.Controller + recorder *MockMulticlusterClientsetMockRecorder +} + +// MockMulticlusterClientsetMockRecorder is the mock recorder for MockMulticlusterClientset. +type MockMulticlusterClientsetMockRecorder struct { + mock *MockMulticlusterClientset +} + +// NewMockMulticlusterClientset creates a new mock instance. +func NewMockMulticlusterClientset(ctrl *gomock.Controller) *MockMulticlusterClientset { + mock := &MockMulticlusterClientset{ctrl: ctrl} + mock.recorder = &MockMulticlusterClientsetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterClientset) EXPECT() *MockMulticlusterClientsetMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterClientset) Cluster(cluster string) (v1.Clientset, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1.Clientset) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterClientsetMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterClientset)(nil).Cluster), cluster) +} + +// MockClientset is a mock of Clientset interface. +type MockClientset struct { + ctrl *gomock.Controller + recorder *MockClientsetMockRecorder +} + +// MockClientsetMockRecorder is the mock recorder for MockClientset. +type MockClientsetMockRecorder struct { + mock *MockClientset +} + +// NewMockClientset creates a new mock instance. +func NewMockClientset(ctrl *gomock.Controller) *MockClientset { + mock := &MockClientset{ctrl: ctrl} + mock.recorder = &MockClientsetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockClientset) EXPECT() *MockClientsetMockRecorder { + return m.recorder +} + +// FailoverSchemes mocks base method. +func (m *MockClientset) FailoverSchemes() v1.FailoverSchemeClient { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FailoverSchemes") + ret0, _ := ret[0].(v1.FailoverSchemeClient) + return ret0 +} + +// FailoverSchemes indicates an expected call of FailoverSchemes. +func (mr *MockClientsetMockRecorder) FailoverSchemes() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FailoverSchemes", reflect.TypeOf((*MockClientset)(nil).FailoverSchemes)) +} + +// GlooInstances mocks base method. +func (m *MockClientset) GlooInstances() v1.GlooInstanceClient { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GlooInstances") + ret0, _ := ret[0].(v1.GlooInstanceClient) + return ret0 +} + +// GlooInstances indicates an expected call of GlooInstances. +func (mr *MockClientsetMockRecorder) GlooInstances() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GlooInstances", reflect.TypeOf((*MockClientset)(nil).GlooInstances)) +} + +// MockGlooInstanceReader is a mock of GlooInstanceReader interface. +type MockGlooInstanceReader struct { + ctrl *gomock.Controller + recorder *MockGlooInstanceReaderMockRecorder +} + +// MockGlooInstanceReaderMockRecorder is the mock recorder for MockGlooInstanceReader. +type MockGlooInstanceReaderMockRecorder struct { + mock *MockGlooInstanceReader +} + +// NewMockGlooInstanceReader creates a new mock instance. +func NewMockGlooInstanceReader(ctrl *gomock.Controller) *MockGlooInstanceReader { + mock := &MockGlooInstanceReader{ctrl: ctrl} + mock.recorder = &MockGlooInstanceReaderMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGlooInstanceReader) EXPECT() *MockGlooInstanceReaderMockRecorder { + return m.recorder +} + +// GetGlooInstance mocks base method. +func (m *MockGlooInstanceReader) GetGlooInstance(ctx context.Context, key client.ObjectKey) (*v1.GlooInstance, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetGlooInstance", ctx, key) + ret0, _ := ret[0].(*v1.GlooInstance) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetGlooInstance indicates an expected call of GetGlooInstance. +func (mr *MockGlooInstanceReaderMockRecorder) GetGlooInstance(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGlooInstance", reflect.TypeOf((*MockGlooInstanceReader)(nil).GetGlooInstance), ctx, key) +} + +// ListGlooInstance mocks base method. +func (m *MockGlooInstanceReader) ListGlooInstance(ctx context.Context, opts ...client.ListOption) (*v1.GlooInstanceList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListGlooInstance", varargs...) + ret0, _ := ret[0].(*v1.GlooInstanceList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListGlooInstance indicates an expected call of ListGlooInstance. +func (mr *MockGlooInstanceReaderMockRecorder) ListGlooInstance(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListGlooInstance", reflect.TypeOf((*MockGlooInstanceReader)(nil).ListGlooInstance), varargs...) +} + +// MockGlooInstanceWriter is a mock of GlooInstanceWriter interface. +type MockGlooInstanceWriter struct { + ctrl *gomock.Controller + recorder *MockGlooInstanceWriterMockRecorder +} + +// MockGlooInstanceWriterMockRecorder is the mock recorder for MockGlooInstanceWriter. +type MockGlooInstanceWriterMockRecorder struct { + mock *MockGlooInstanceWriter +} + +// NewMockGlooInstanceWriter creates a new mock instance. +func NewMockGlooInstanceWriter(ctrl *gomock.Controller) *MockGlooInstanceWriter { + mock := &MockGlooInstanceWriter{ctrl: ctrl} + mock.recorder = &MockGlooInstanceWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGlooInstanceWriter) EXPECT() *MockGlooInstanceWriterMockRecorder { + return m.recorder +} + +// CreateGlooInstance mocks base method. +func (m *MockGlooInstanceWriter) CreateGlooInstance(ctx context.Context, obj *v1.GlooInstance, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateGlooInstance", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateGlooInstance indicates an expected call of CreateGlooInstance. +func (mr *MockGlooInstanceWriterMockRecorder) CreateGlooInstance(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateGlooInstance", reflect.TypeOf((*MockGlooInstanceWriter)(nil).CreateGlooInstance), varargs...) +} + +// DeleteAllOfGlooInstance mocks base method. +func (m *MockGlooInstanceWriter) DeleteAllOfGlooInstance(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfGlooInstance", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfGlooInstance indicates an expected call of DeleteAllOfGlooInstance. +func (mr *MockGlooInstanceWriterMockRecorder) DeleteAllOfGlooInstance(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfGlooInstance", reflect.TypeOf((*MockGlooInstanceWriter)(nil).DeleteAllOfGlooInstance), varargs...) +} + +// DeleteGlooInstance mocks base method. +func (m *MockGlooInstanceWriter) DeleteGlooInstance(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteGlooInstance", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteGlooInstance indicates an expected call of DeleteGlooInstance. +func (mr *MockGlooInstanceWriterMockRecorder) DeleteGlooInstance(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteGlooInstance", reflect.TypeOf((*MockGlooInstanceWriter)(nil).DeleteGlooInstance), varargs...) +} + +// PatchGlooInstance mocks base method. +func (m *MockGlooInstanceWriter) PatchGlooInstance(ctx context.Context, obj *v1.GlooInstance, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchGlooInstance", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchGlooInstance indicates an expected call of PatchGlooInstance. +func (mr *MockGlooInstanceWriterMockRecorder) PatchGlooInstance(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchGlooInstance", reflect.TypeOf((*MockGlooInstanceWriter)(nil).PatchGlooInstance), varargs...) +} + +// UpdateGlooInstance mocks base method. +func (m *MockGlooInstanceWriter) UpdateGlooInstance(ctx context.Context, obj *v1.GlooInstance, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateGlooInstance", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateGlooInstance indicates an expected call of UpdateGlooInstance. +func (mr *MockGlooInstanceWriterMockRecorder) UpdateGlooInstance(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateGlooInstance", reflect.TypeOf((*MockGlooInstanceWriter)(nil).UpdateGlooInstance), varargs...) +} + +// UpsertGlooInstance mocks base method. +func (m *MockGlooInstanceWriter) UpsertGlooInstance(ctx context.Context, obj *v1.GlooInstance, transitionFuncs ...v1.GlooInstanceTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertGlooInstance", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertGlooInstance indicates an expected call of UpsertGlooInstance. +func (mr *MockGlooInstanceWriterMockRecorder) UpsertGlooInstance(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertGlooInstance", reflect.TypeOf((*MockGlooInstanceWriter)(nil).UpsertGlooInstance), varargs...) +} + +// MockGlooInstanceStatusWriter is a mock of GlooInstanceStatusWriter interface. +type MockGlooInstanceStatusWriter struct { + ctrl *gomock.Controller + recorder *MockGlooInstanceStatusWriterMockRecorder +} + +// MockGlooInstanceStatusWriterMockRecorder is the mock recorder for MockGlooInstanceStatusWriter. +type MockGlooInstanceStatusWriterMockRecorder struct { + mock *MockGlooInstanceStatusWriter +} + +// NewMockGlooInstanceStatusWriter creates a new mock instance. +func NewMockGlooInstanceStatusWriter(ctrl *gomock.Controller) *MockGlooInstanceStatusWriter { + mock := &MockGlooInstanceStatusWriter{ctrl: ctrl} + mock.recorder = &MockGlooInstanceStatusWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGlooInstanceStatusWriter) EXPECT() *MockGlooInstanceStatusWriterMockRecorder { + return m.recorder +} + +// PatchGlooInstanceStatus mocks base method. +func (m *MockGlooInstanceStatusWriter) PatchGlooInstanceStatus(ctx context.Context, obj *v1.GlooInstance, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchGlooInstanceStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchGlooInstanceStatus indicates an expected call of PatchGlooInstanceStatus. +func (mr *MockGlooInstanceStatusWriterMockRecorder) PatchGlooInstanceStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchGlooInstanceStatus", reflect.TypeOf((*MockGlooInstanceStatusWriter)(nil).PatchGlooInstanceStatus), varargs...) +} + +// UpdateGlooInstanceStatus mocks base method. +func (m *MockGlooInstanceStatusWriter) UpdateGlooInstanceStatus(ctx context.Context, obj *v1.GlooInstance, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateGlooInstanceStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateGlooInstanceStatus indicates an expected call of UpdateGlooInstanceStatus. +func (mr *MockGlooInstanceStatusWriterMockRecorder) UpdateGlooInstanceStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateGlooInstanceStatus", reflect.TypeOf((*MockGlooInstanceStatusWriter)(nil).UpdateGlooInstanceStatus), varargs...) +} + +// MockGlooInstanceClient is a mock of GlooInstanceClient interface. +type MockGlooInstanceClient struct { + ctrl *gomock.Controller + recorder *MockGlooInstanceClientMockRecorder +} + +// MockGlooInstanceClientMockRecorder is the mock recorder for MockGlooInstanceClient. +type MockGlooInstanceClientMockRecorder struct { + mock *MockGlooInstanceClient +} + +// NewMockGlooInstanceClient creates a new mock instance. +func NewMockGlooInstanceClient(ctrl *gomock.Controller) *MockGlooInstanceClient { + mock := &MockGlooInstanceClient{ctrl: ctrl} + mock.recorder = &MockGlooInstanceClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGlooInstanceClient) EXPECT() *MockGlooInstanceClientMockRecorder { + return m.recorder +} + +// CreateGlooInstance mocks base method. +func (m *MockGlooInstanceClient) CreateGlooInstance(ctx context.Context, obj *v1.GlooInstance, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateGlooInstance", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateGlooInstance indicates an expected call of CreateGlooInstance. +func (mr *MockGlooInstanceClientMockRecorder) CreateGlooInstance(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateGlooInstance", reflect.TypeOf((*MockGlooInstanceClient)(nil).CreateGlooInstance), varargs...) +} + +// DeleteAllOfGlooInstance mocks base method. +func (m *MockGlooInstanceClient) DeleteAllOfGlooInstance(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfGlooInstance", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfGlooInstance indicates an expected call of DeleteAllOfGlooInstance. +func (mr *MockGlooInstanceClientMockRecorder) DeleteAllOfGlooInstance(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfGlooInstance", reflect.TypeOf((*MockGlooInstanceClient)(nil).DeleteAllOfGlooInstance), varargs...) +} + +// DeleteGlooInstance mocks base method. +func (m *MockGlooInstanceClient) DeleteGlooInstance(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteGlooInstance", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteGlooInstance indicates an expected call of DeleteGlooInstance. +func (mr *MockGlooInstanceClientMockRecorder) DeleteGlooInstance(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteGlooInstance", reflect.TypeOf((*MockGlooInstanceClient)(nil).DeleteGlooInstance), varargs...) +} + +// GetGlooInstance mocks base method. +func (m *MockGlooInstanceClient) GetGlooInstance(ctx context.Context, key client.ObjectKey) (*v1.GlooInstance, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetGlooInstance", ctx, key) + ret0, _ := ret[0].(*v1.GlooInstance) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetGlooInstance indicates an expected call of GetGlooInstance. +func (mr *MockGlooInstanceClientMockRecorder) GetGlooInstance(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGlooInstance", reflect.TypeOf((*MockGlooInstanceClient)(nil).GetGlooInstance), ctx, key) +} + +// ListGlooInstance mocks base method. +func (m *MockGlooInstanceClient) ListGlooInstance(ctx context.Context, opts ...client.ListOption) (*v1.GlooInstanceList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListGlooInstance", varargs...) + ret0, _ := ret[0].(*v1.GlooInstanceList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListGlooInstance indicates an expected call of ListGlooInstance. +func (mr *MockGlooInstanceClientMockRecorder) ListGlooInstance(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListGlooInstance", reflect.TypeOf((*MockGlooInstanceClient)(nil).ListGlooInstance), varargs...) +} + +// PatchGlooInstance mocks base method. +func (m *MockGlooInstanceClient) PatchGlooInstance(ctx context.Context, obj *v1.GlooInstance, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchGlooInstance", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchGlooInstance indicates an expected call of PatchGlooInstance. +func (mr *MockGlooInstanceClientMockRecorder) PatchGlooInstance(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchGlooInstance", reflect.TypeOf((*MockGlooInstanceClient)(nil).PatchGlooInstance), varargs...) +} + +// PatchGlooInstanceStatus mocks base method. +func (m *MockGlooInstanceClient) PatchGlooInstanceStatus(ctx context.Context, obj *v1.GlooInstance, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchGlooInstanceStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchGlooInstanceStatus indicates an expected call of PatchGlooInstanceStatus. +func (mr *MockGlooInstanceClientMockRecorder) PatchGlooInstanceStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchGlooInstanceStatus", reflect.TypeOf((*MockGlooInstanceClient)(nil).PatchGlooInstanceStatus), varargs...) +} + +// UpdateGlooInstance mocks base method. +func (m *MockGlooInstanceClient) UpdateGlooInstance(ctx context.Context, obj *v1.GlooInstance, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateGlooInstance", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateGlooInstance indicates an expected call of UpdateGlooInstance. +func (mr *MockGlooInstanceClientMockRecorder) UpdateGlooInstance(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateGlooInstance", reflect.TypeOf((*MockGlooInstanceClient)(nil).UpdateGlooInstance), varargs...) +} + +// UpdateGlooInstanceStatus mocks base method. +func (m *MockGlooInstanceClient) UpdateGlooInstanceStatus(ctx context.Context, obj *v1.GlooInstance, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateGlooInstanceStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateGlooInstanceStatus indicates an expected call of UpdateGlooInstanceStatus. +func (mr *MockGlooInstanceClientMockRecorder) UpdateGlooInstanceStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateGlooInstanceStatus", reflect.TypeOf((*MockGlooInstanceClient)(nil).UpdateGlooInstanceStatus), varargs...) +} + +// UpsertGlooInstance mocks base method. +func (m *MockGlooInstanceClient) UpsertGlooInstance(ctx context.Context, obj *v1.GlooInstance, transitionFuncs ...v1.GlooInstanceTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertGlooInstance", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertGlooInstance indicates an expected call of UpsertGlooInstance. +func (mr *MockGlooInstanceClientMockRecorder) UpsertGlooInstance(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertGlooInstance", reflect.TypeOf((*MockGlooInstanceClient)(nil).UpsertGlooInstance), varargs...) +} + +// MockMulticlusterGlooInstanceClient is a mock of MulticlusterGlooInstanceClient interface. +type MockMulticlusterGlooInstanceClient struct { + ctrl *gomock.Controller + recorder *MockMulticlusterGlooInstanceClientMockRecorder +} + +// MockMulticlusterGlooInstanceClientMockRecorder is the mock recorder for MockMulticlusterGlooInstanceClient. +type MockMulticlusterGlooInstanceClientMockRecorder struct { + mock *MockMulticlusterGlooInstanceClient +} + +// NewMockMulticlusterGlooInstanceClient creates a new mock instance. +func NewMockMulticlusterGlooInstanceClient(ctrl *gomock.Controller) *MockMulticlusterGlooInstanceClient { + mock := &MockMulticlusterGlooInstanceClient{ctrl: ctrl} + mock.recorder = &MockMulticlusterGlooInstanceClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterGlooInstanceClient) EXPECT() *MockMulticlusterGlooInstanceClientMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterGlooInstanceClient) Cluster(cluster string) (v1.GlooInstanceClient, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1.GlooInstanceClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterGlooInstanceClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterGlooInstanceClient)(nil).Cluster), cluster) +} + +// MockFailoverSchemeReader is a mock of FailoverSchemeReader interface. +type MockFailoverSchemeReader struct { + ctrl *gomock.Controller + recorder *MockFailoverSchemeReaderMockRecorder +} + +// MockFailoverSchemeReaderMockRecorder is the mock recorder for MockFailoverSchemeReader. +type MockFailoverSchemeReaderMockRecorder struct { + mock *MockFailoverSchemeReader +} + +// NewMockFailoverSchemeReader creates a new mock instance. +func NewMockFailoverSchemeReader(ctrl *gomock.Controller) *MockFailoverSchemeReader { + mock := &MockFailoverSchemeReader{ctrl: ctrl} + mock.recorder = &MockFailoverSchemeReaderMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFailoverSchemeReader) EXPECT() *MockFailoverSchemeReaderMockRecorder { + return m.recorder +} + +// GetFailoverScheme mocks base method. +func (m *MockFailoverSchemeReader) GetFailoverScheme(ctx context.Context, key client.ObjectKey) (*v1.FailoverScheme, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFailoverScheme", ctx, key) + ret0, _ := ret[0].(*v1.FailoverScheme) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFailoverScheme indicates an expected call of GetFailoverScheme. +func (mr *MockFailoverSchemeReaderMockRecorder) GetFailoverScheme(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFailoverScheme", reflect.TypeOf((*MockFailoverSchemeReader)(nil).GetFailoverScheme), ctx, key) +} + +// ListFailoverScheme mocks base method. +func (m *MockFailoverSchemeReader) ListFailoverScheme(ctx context.Context, opts ...client.ListOption) (*v1.FailoverSchemeList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFailoverScheme", varargs...) + ret0, _ := ret[0].(*v1.FailoverSchemeList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFailoverScheme indicates an expected call of ListFailoverScheme. +func (mr *MockFailoverSchemeReaderMockRecorder) ListFailoverScheme(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFailoverScheme", reflect.TypeOf((*MockFailoverSchemeReader)(nil).ListFailoverScheme), varargs...) +} + +// MockFailoverSchemeWriter is a mock of FailoverSchemeWriter interface. +type MockFailoverSchemeWriter struct { + ctrl *gomock.Controller + recorder *MockFailoverSchemeWriterMockRecorder +} + +// MockFailoverSchemeWriterMockRecorder is the mock recorder for MockFailoverSchemeWriter. +type MockFailoverSchemeWriterMockRecorder struct { + mock *MockFailoverSchemeWriter +} + +// NewMockFailoverSchemeWriter creates a new mock instance. +func NewMockFailoverSchemeWriter(ctrl *gomock.Controller) *MockFailoverSchemeWriter { + mock := &MockFailoverSchemeWriter{ctrl: ctrl} + mock.recorder = &MockFailoverSchemeWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFailoverSchemeWriter) EXPECT() *MockFailoverSchemeWriterMockRecorder { + return m.recorder +} + +// CreateFailoverScheme mocks base method. +func (m *MockFailoverSchemeWriter) CreateFailoverScheme(ctx context.Context, obj *v1.FailoverScheme, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateFailoverScheme", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFailoverScheme indicates an expected call of CreateFailoverScheme. +func (mr *MockFailoverSchemeWriterMockRecorder) CreateFailoverScheme(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFailoverScheme", reflect.TypeOf((*MockFailoverSchemeWriter)(nil).CreateFailoverScheme), varargs...) +} + +// DeleteAllOfFailoverScheme mocks base method. +func (m *MockFailoverSchemeWriter) DeleteAllOfFailoverScheme(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfFailoverScheme", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfFailoverScheme indicates an expected call of DeleteAllOfFailoverScheme. +func (mr *MockFailoverSchemeWriterMockRecorder) DeleteAllOfFailoverScheme(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfFailoverScheme", reflect.TypeOf((*MockFailoverSchemeWriter)(nil).DeleteAllOfFailoverScheme), varargs...) +} + +// DeleteFailoverScheme mocks base method. +func (m *MockFailoverSchemeWriter) DeleteFailoverScheme(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteFailoverScheme", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFailoverScheme indicates an expected call of DeleteFailoverScheme. +func (mr *MockFailoverSchemeWriterMockRecorder) DeleteFailoverScheme(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFailoverScheme", reflect.TypeOf((*MockFailoverSchemeWriter)(nil).DeleteFailoverScheme), varargs...) +} + +// PatchFailoverScheme mocks base method. +func (m *MockFailoverSchemeWriter) PatchFailoverScheme(ctx context.Context, obj *v1.FailoverScheme, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFailoverScheme", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFailoverScheme indicates an expected call of PatchFailoverScheme. +func (mr *MockFailoverSchemeWriterMockRecorder) PatchFailoverScheme(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFailoverScheme", reflect.TypeOf((*MockFailoverSchemeWriter)(nil).PatchFailoverScheme), varargs...) +} + +// UpdateFailoverScheme mocks base method. +func (m *MockFailoverSchemeWriter) UpdateFailoverScheme(ctx context.Context, obj *v1.FailoverScheme, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFailoverScheme", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFailoverScheme indicates an expected call of UpdateFailoverScheme. +func (mr *MockFailoverSchemeWriterMockRecorder) UpdateFailoverScheme(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFailoverScheme", reflect.TypeOf((*MockFailoverSchemeWriter)(nil).UpdateFailoverScheme), varargs...) +} + +// UpsertFailoverScheme mocks base method. +func (m *MockFailoverSchemeWriter) UpsertFailoverScheme(ctx context.Context, obj *v1.FailoverScheme, transitionFuncs ...v1.FailoverSchemeTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertFailoverScheme", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertFailoverScheme indicates an expected call of UpsertFailoverScheme. +func (mr *MockFailoverSchemeWriterMockRecorder) UpsertFailoverScheme(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertFailoverScheme", reflect.TypeOf((*MockFailoverSchemeWriter)(nil).UpsertFailoverScheme), varargs...) +} + +// MockFailoverSchemeStatusWriter is a mock of FailoverSchemeStatusWriter interface. +type MockFailoverSchemeStatusWriter struct { + ctrl *gomock.Controller + recorder *MockFailoverSchemeStatusWriterMockRecorder +} + +// MockFailoverSchemeStatusWriterMockRecorder is the mock recorder for MockFailoverSchemeStatusWriter. +type MockFailoverSchemeStatusWriterMockRecorder struct { + mock *MockFailoverSchemeStatusWriter +} + +// NewMockFailoverSchemeStatusWriter creates a new mock instance. +func NewMockFailoverSchemeStatusWriter(ctrl *gomock.Controller) *MockFailoverSchemeStatusWriter { + mock := &MockFailoverSchemeStatusWriter{ctrl: ctrl} + mock.recorder = &MockFailoverSchemeStatusWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFailoverSchemeStatusWriter) EXPECT() *MockFailoverSchemeStatusWriterMockRecorder { + return m.recorder +} + +// PatchFailoverSchemeStatus mocks base method. +func (m *MockFailoverSchemeStatusWriter) PatchFailoverSchemeStatus(ctx context.Context, obj *v1.FailoverScheme, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFailoverSchemeStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFailoverSchemeStatus indicates an expected call of PatchFailoverSchemeStatus. +func (mr *MockFailoverSchemeStatusWriterMockRecorder) PatchFailoverSchemeStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFailoverSchemeStatus", reflect.TypeOf((*MockFailoverSchemeStatusWriter)(nil).PatchFailoverSchemeStatus), varargs...) +} + +// UpdateFailoverSchemeStatus mocks base method. +func (m *MockFailoverSchemeStatusWriter) UpdateFailoverSchemeStatus(ctx context.Context, obj *v1.FailoverScheme, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFailoverSchemeStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFailoverSchemeStatus indicates an expected call of UpdateFailoverSchemeStatus. +func (mr *MockFailoverSchemeStatusWriterMockRecorder) UpdateFailoverSchemeStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFailoverSchemeStatus", reflect.TypeOf((*MockFailoverSchemeStatusWriter)(nil).UpdateFailoverSchemeStatus), varargs...) +} + +// MockFailoverSchemeClient is a mock of FailoverSchemeClient interface. +type MockFailoverSchemeClient struct { + ctrl *gomock.Controller + recorder *MockFailoverSchemeClientMockRecorder +} + +// MockFailoverSchemeClientMockRecorder is the mock recorder for MockFailoverSchemeClient. +type MockFailoverSchemeClientMockRecorder struct { + mock *MockFailoverSchemeClient +} + +// NewMockFailoverSchemeClient creates a new mock instance. +func NewMockFailoverSchemeClient(ctrl *gomock.Controller) *MockFailoverSchemeClient { + mock := &MockFailoverSchemeClient{ctrl: ctrl} + mock.recorder = &MockFailoverSchemeClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFailoverSchemeClient) EXPECT() *MockFailoverSchemeClientMockRecorder { + return m.recorder +} + +// CreateFailoverScheme mocks base method. +func (m *MockFailoverSchemeClient) CreateFailoverScheme(ctx context.Context, obj *v1.FailoverScheme, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateFailoverScheme", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateFailoverScheme indicates an expected call of CreateFailoverScheme. +func (mr *MockFailoverSchemeClientMockRecorder) CreateFailoverScheme(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFailoverScheme", reflect.TypeOf((*MockFailoverSchemeClient)(nil).CreateFailoverScheme), varargs...) +} + +// DeleteAllOfFailoverScheme mocks base method. +func (m *MockFailoverSchemeClient) DeleteAllOfFailoverScheme(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfFailoverScheme", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfFailoverScheme indicates an expected call of DeleteAllOfFailoverScheme. +func (mr *MockFailoverSchemeClientMockRecorder) DeleteAllOfFailoverScheme(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfFailoverScheme", reflect.TypeOf((*MockFailoverSchemeClient)(nil).DeleteAllOfFailoverScheme), varargs...) +} + +// DeleteFailoverScheme mocks base method. +func (m *MockFailoverSchemeClient) DeleteFailoverScheme(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteFailoverScheme", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteFailoverScheme indicates an expected call of DeleteFailoverScheme. +func (mr *MockFailoverSchemeClientMockRecorder) DeleteFailoverScheme(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFailoverScheme", reflect.TypeOf((*MockFailoverSchemeClient)(nil).DeleteFailoverScheme), varargs...) +} + +// GetFailoverScheme mocks base method. +func (m *MockFailoverSchemeClient) GetFailoverScheme(ctx context.Context, key client.ObjectKey) (*v1.FailoverScheme, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFailoverScheme", ctx, key) + ret0, _ := ret[0].(*v1.FailoverScheme) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFailoverScheme indicates an expected call of GetFailoverScheme. +func (mr *MockFailoverSchemeClientMockRecorder) GetFailoverScheme(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFailoverScheme", reflect.TypeOf((*MockFailoverSchemeClient)(nil).GetFailoverScheme), ctx, key) +} + +// ListFailoverScheme mocks base method. +func (m *MockFailoverSchemeClient) ListFailoverScheme(ctx context.Context, opts ...client.ListOption) (*v1.FailoverSchemeList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFailoverScheme", varargs...) + ret0, _ := ret[0].(*v1.FailoverSchemeList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFailoverScheme indicates an expected call of ListFailoverScheme. +func (mr *MockFailoverSchemeClientMockRecorder) ListFailoverScheme(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFailoverScheme", reflect.TypeOf((*MockFailoverSchemeClient)(nil).ListFailoverScheme), varargs...) +} + +// PatchFailoverScheme mocks base method. +func (m *MockFailoverSchemeClient) PatchFailoverScheme(ctx context.Context, obj *v1.FailoverScheme, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFailoverScheme", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFailoverScheme indicates an expected call of PatchFailoverScheme. +func (mr *MockFailoverSchemeClientMockRecorder) PatchFailoverScheme(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFailoverScheme", reflect.TypeOf((*MockFailoverSchemeClient)(nil).PatchFailoverScheme), varargs...) +} + +// PatchFailoverSchemeStatus mocks base method. +func (m *MockFailoverSchemeClient) PatchFailoverSchemeStatus(ctx context.Context, obj *v1.FailoverScheme, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchFailoverSchemeStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchFailoverSchemeStatus indicates an expected call of PatchFailoverSchemeStatus. +func (mr *MockFailoverSchemeClientMockRecorder) PatchFailoverSchemeStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchFailoverSchemeStatus", reflect.TypeOf((*MockFailoverSchemeClient)(nil).PatchFailoverSchemeStatus), varargs...) +} + +// UpdateFailoverScheme mocks base method. +func (m *MockFailoverSchemeClient) UpdateFailoverScheme(ctx context.Context, obj *v1.FailoverScheme, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFailoverScheme", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFailoverScheme indicates an expected call of UpdateFailoverScheme. +func (mr *MockFailoverSchemeClientMockRecorder) UpdateFailoverScheme(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFailoverScheme", reflect.TypeOf((*MockFailoverSchemeClient)(nil).UpdateFailoverScheme), varargs...) +} + +// UpdateFailoverSchemeStatus mocks base method. +func (m *MockFailoverSchemeClient) UpdateFailoverSchemeStatus(ctx context.Context, obj *v1.FailoverScheme, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateFailoverSchemeStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateFailoverSchemeStatus indicates an expected call of UpdateFailoverSchemeStatus. +func (mr *MockFailoverSchemeClientMockRecorder) UpdateFailoverSchemeStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFailoverSchemeStatus", reflect.TypeOf((*MockFailoverSchemeClient)(nil).UpdateFailoverSchemeStatus), varargs...) +} + +// UpsertFailoverScheme mocks base method. +func (m *MockFailoverSchemeClient) UpsertFailoverScheme(ctx context.Context, obj *v1.FailoverScheme, transitionFuncs ...v1.FailoverSchemeTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertFailoverScheme", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertFailoverScheme indicates an expected call of UpsertFailoverScheme. +func (mr *MockFailoverSchemeClientMockRecorder) UpsertFailoverScheme(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertFailoverScheme", reflect.TypeOf((*MockFailoverSchemeClient)(nil).UpsertFailoverScheme), varargs...) +} + +// MockMulticlusterFailoverSchemeClient is a mock of MulticlusterFailoverSchemeClient interface. +type MockMulticlusterFailoverSchemeClient struct { + ctrl *gomock.Controller + recorder *MockMulticlusterFailoverSchemeClientMockRecorder +} + +// MockMulticlusterFailoverSchemeClientMockRecorder is the mock recorder for MockMulticlusterFailoverSchemeClient. +type MockMulticlusterFailoverSchemeClientMockRecorder struct { + mock *MockMulticlusterFailoverSchemeClient +} + +// NewMockMulticlusterFailoverSchemeClient creates a new mock instance. +func NewMockMulticlusterFailoverSchemeClient(ctrl *gomock.Controller) *MockMulticlusterFailoverSchemeClient { + mock := &MockMulticlusterFailoverSchemeClient{ctrl: ctrl} + mock.recorder = &MockMulticlusterFailoverSchemeClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterFailoverSchemeClient) EXPECT() *MockMulticlusterFailoverSchemeClientMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterFailoverSchemeClient) Cluster(cluster string) (v1.FailoverSchemeClient, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1.FailoverSchemeClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterFailoverSchemeClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterFailoverSchemeClient)(nil).Cluster), cluster) +} diff --git a/pkg/api/fed.solo.io/v1/providers/client_providers.go b/pkg/api/fed.solo.io/v1/providers/client_providers.go new file mode 100644 index 000000000..f5da8d5b8 --- /dev/null +++ b/pkg/api/fed.solo.io/v1/providers/client_providers.go @@ -0,0 +1,74 @@ +// Code generated by skv2. DO NOT EDIT. + +package v1 + +import ( + fed_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1" + + "k8s.io/client-go/rest" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +/* + The intention of these providers are to be used for Mocking. + They expose the Clients as interfaces, as well as factories to provide mocked versions + of the clients when they require building within a component. + + See package `github.com/solo-io/skv2/pkg/multicluster/register` for example +*/ + +// Provider for GlooInstanceClient from Clientset +func GlooInstanceClientFromClientsetProvider(clients fed_solo_io_v1.Clientset) fed_solo_io_v1.GlooInstanceClient { + return clients.GlooInstances() +} + +// Provider for GlooInstance Client from Client +func GlooInstanceClientProvider(client client.Client) fed_solo_io_v1.GlooInstanceClient { + return fed_solo_io_v1.NewGlooInstanceClient(client) +} + +type GlooInstanceClientFactory func(client client.Client) fed_solo_io_v1.GlooInstanceClient + +func GlooInstanceClientFactoryProvider() GlooInstanceClientFactory { + return GlooInstanceClientProvider +} + +type GlooInstanceClientFromConfigFactory func(cfg *rest.Config) (fed_solo_io_v1.GlooInstanceClient, error) + +func GlooInstanceClientFromConfigFactoryProvider() GlooInstanceClientFromConfigFactory { + return func(cfg *rest.Config) (fed_solo_io_v1.GlooInstanceClient, error) { + clients, err := fed_solo_io_v1.NewClientsetFromConfig(cfg) + if err != nil { + return nil, err + } + return clients.GlooInstances(), nil + } +} + +// Provider for FailoverSchemeClient from Clientset +func FailoverSchemeClientFromClientsetProvider(clients fed_solo_io_v1.Clientset) fed_solo_io_v1.FailoverSchemeClient { + return clients.FailoverSchemes() +} + +// Provider for FailoverScheme Client from Client +func FailoverSchemeClientProvider(client client.Client) fed_solo_io_v1.FailoverSchemeClient { + return fed_solo_io_v1.NewFailoverSchemeClient(client) +} + +type FailoverSchemeClientFactory func(client client.Client) fed_solo_io_v1.FailoverSchemeClient + +func FailoverSchemeClientFactoryProvider() FailoverSchemeClientFactory { + return FailoverSchemeClientProvider +} + +type FailoverSchemeClientFromConfigFactory func(cfg *rest.Config) (fed_solo_io_v1.FailoverSchemeClient, error) + +func FailoverSchemeClientFromConfigFactoryProvider() FailoverSchemeClientFromConfigFactory { + return func(cfg *rest.Config) (fed_solo_io_v1.FailoverSchemeClient, error) { + clients, err := fed_solo_io_v1.NewClientsetFromConfig(cfg) + if err != nil { + return nil, err + } + return clients.FailoverSchemes(), nil + } +} diff --git a/pkg/api/fed.solo.io/v1/sets/mocks/sets.go b/pkg/api/fed.solo.io/v1/sets/mocks/sets.go new file mode 100644 index 000000000..1c03fed6c --- /dev/null +++ b/pkg/api/fed.solo.io/v1/sets/mocks/sets.go @@ -0,0 +1,528 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./sets.go + +// Package mock_v1sets is a generated GoMock package. +package mock_v1sets + +import ( + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + sets "github.com/solo-io/skv2/contrib/pkg/sets" + ezkube "github.com/solo-io/skv2/pkg/ezkube" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1" + v1sets "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/sets" + sets0 "k8s.io/apimachinery/pkg/util/sets" +) + +// MockGlooInstanceSet is a mock of GlooInstanceSet interface. +type MockGlooInstanceSet struct { + ctrl *gomock.Controller + recorder *MockGlooInstanceSetMockRecorder +} + +// MockGlooInstanceSetMockRecorder is the mock recorder for MockGlooInstanceSet. +type MockGlooInstanceSetMockRecorder struct { + mock *MockGlooInstanceSet +} + +// NewMockGlooInstanceSet creates a new mock instance. +func NewMockGlooInstanceSet(ctrl *gomock.Controller) *MockGlooInstanceSet { + mock := &MockGlooInstanceSet{ctrl: ctrl} + mock.recorder = &MockGlooInstanceSetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGlooInstanceSet) EXPECT() *MockGlooInstanceSetMockRecorder { + return m.recorder +} + +// Clone mocks base method. +func (m *MockGlooInstanceSet) Clone() v1sets.GlooInstanceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.GlooInstanceSet) + return ret0 +} + +// Clone indicates an expected call of Clone. +func (mr *MockGlooInstanceSetMockRecorder) Clone() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockGlooInstanceSet)(nil).Clone)) +} + +// Delete mocks base method. +func (m *MockGlooInstanceSet) Delete(glooInstance ezkube.ResourceId) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Delete", glooInstance) +} + +// Delete indicates an expected call of Delete. +func (mr *MockGlooInstanceSetMockRecorder) Delete(glooInstance interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockGlooInstanceSet)(nil).Delete), glooInstance) +} + +// Delta mocks base method. +func (m *MockGlooInstanceSet) Delta(newSet v1sets.GlooInstanceSet) sets.ResourceDelta { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) + return ret0 +} + +// Delta indicates an expected call of Delta. +func (mr *MockGlooInstanceSetMockRecorder) Delta(newSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockGlooInstanceSet)(nil).Delta), newSet) +} + +// Difference mocks base method. +func (m *MockGlooInstanceSet) Difference(set v1sets.GlooInstanceSet) v1sets.GlooInstanceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.GlooInstanceSet) + return ret0 +} + +// Difference indicates an expected call of Difference. +func (mr *MockGlooInstanceSetMockRecorder) Difference(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockGlooInstanceSet)(nil).Difference), set) +} + +// Equal mocks base method. +func (m *MockGlooInstanceSet) Equal(glooInstanceSet v1sets.GlooInstanceSet) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Equal", glooInstanceSet) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Equal indicates an expected call of Equal. +func (mr *MockGlooInstanceSetMockRecorder) Equal(glooInstanceSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockGlooInstanceSet)(nil).Equal), glooInstanceSet) +} + +// Find mocks base method. +func (m *MockGlooInstanceSet) Find(id ezkube.ResourceId) (*v1.GlooInstance, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.GlooInstance) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Find indicates an expected call of Find. +func (mr *MockGlooInstanceSetMockRecorder) Find(id interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockGlooInstanceSet)(nil).Find), id) +} + +// Generic mocks base method. +func (m *MockGlooInstanceSet) Generic() sets.ResourceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 +} + +// Generic indicates an expected call of Generic. +func (mr *MockGlooInstanceSetMockRecorder) Generic() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockGlooInstanceSet)(nil).Generic)) +} + +// Has mocks base method. +func (m *MockGlooInstanceSet) Has(glooInstance ezkube.ResourceId) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Has", glooInstance) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Has indicates an expected call of Has. +func (mr *MockGlooInstanceSetMockRecorder) Has(glooInstance interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockGlooInstanceSet)(nil).Has), glooInstance) +} + +// Insert mocks base method. +func (m *MockGlooInstanceSet) Insert(glooInstance ...*v1.GlooInstance) { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range glooInstance { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) +} + +// Insert indicates an expected call of Insert. +func (mr *MockGlooInstanceSetMockRecorder) Insert(glooInstance ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockGlooInstanceSet)(nil).Insert), glooInstance...) +} + +// Intersection mocks base method. +func (m *MockGlooInstanceSet) Intersection(set v1sets.GlooInstanceSet) v1sets.GlooInstanceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Intersection", set) + ret0, _ := ret[0].(v1sets.GlooInstanceSet) + return ret0 +} + +// Intersection indicates an expected call of Intersection. +func (mr *MockGlooInstanceSetMockRecorder) Intersection(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockGlooInstanceSet)(nil).Intersection), set) +} + +// Keys mocks base method. +func (m *MockGlooInstanceSet) Keys() sets0.String { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 +} + +// Keys indicates an expected call of Keys. +func (mr *MockGlooInstanceSetMockRecorder) Keys() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockGlooInstanceSet)(nil).Keys)) +} + +// Length mocks base method. +func (m *MockGlooInstanceSet) Length() int { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Length") + ret0, _ := ret[0].(int) + return ret0 +} + +// Length indicates an expected call of Length. +func (mr *MockGlooInstanceSetMockRecorder) Length() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockGlooInstanceSet)(nil).Length)) +} + +// List mocks base method. +func (m *MockGlooInstanceSet) List(filterResource ...func(*v1.GlooInstance) bool) []*v1.GlooInstance { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.GlooInstance) + return ret0 +} + +// List indicates an expected call of List. +func (mr *MockGlooInstanceSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockGlooInstanceSet)(nil).List), filterResource...) +} + +// Map mocks base method. +func (m *MockGlooInstanceSet) Map() map[string]*v1.GlooInstance { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.GlooInstance) + return ret0 +} + +// Map indicates an expected call of Map. +func (mr *MockGlooInstanceSetMockRecorder) Map() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockGlooInstanceSet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockGlooInstanceSet) Union(set v1sets.GlooInstanceSet) v1sets.GlooInstanceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.GlooInstanceSet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockGlooInstanceSetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockGlooInstanceSet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockGlooInstanceSet) UnsortedList(filterResource ...func(*v1.GlooInstance) bool) []*v1.GlooInstance { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.GlooInstance) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockGlooInstanceSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockGlooInstanceSet)(nil).UnsortedList), filterResource...) +} + +// MockFailoverSchemeSet is a mock of FailoverSchemeSet interface. +type MockFailoverSchemeSet struct { + ctrl *gomock.Controller + recorder *MockFailoverSchemeSetMockRecorder +} + +// MockFailoverSchemeSetMockRecorder is the mock recorder for MockFailoverSchemeSet. +type MockFailoverSchemeSetMockRecorder struct { + mock *MockFailoverSchemeSet +} + +// NewMockFailoverSchemeSet creates a new mock instance. +func NewMockFailoverSchemeSet(ctrl *gomock.Controller) *MockFailoverSchemeSet { + mock := &MockFailoverSchemeSet{ctrl: ctrl} + mock.recorder = &MockFailoverSchemeSetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFailoverSchemeSet) EXPECT() *MockFailoverSchemeSetMockRecorder { + return m.recorder +} + +// Clone mocks base method. +func (m *MockFailoverSchemeSet) Clone() v1sets.FailoverSchemeSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.FailoverSchemeSet) + return ret0 +} + +// Clone indicates an expected call of Clone. +func (mr *MockFailoverSchemeSetMockRecorder) Clone() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockFailoverSchemeSet)(nil).Clone)) +} + +// Delete mocks base method. +func (m *MockFailoverSchemeSet) Delete(failoverScheme ezkube.ResourceId) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Delete", failoverScheme) +} + +// Delete indicates an expected call of Delete. +func (mr *MockFailoverSchemeSetMockRecorder) Delete(failoverScheme interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockFailoverSchemeSet)(nil).Delete), failoverScheme) +} + +// Delta mocks base method. +func (m *MockFailoverSchemeSet) Delta(newSet v1sets.FailoverSchemeSet) sets.ResourceDelta { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) + return ret0 +} + +// Delta indicates an expected call of Delta. +func (mr *MockFailoverSchemeSetMockRecorder) Delta(newSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockFailoverSchemeSet)(nil).Delta), newSet) +} + +// Difference mocks base method. +func (m *MockFailoverSchemeSet) Difference(set v1sets.FailoverSchemeSet) v1sets.FailoverSchemeSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.FailoverSchemeSet) + return ret0 +} + +// Difference indicates an expected call of Difference. +func (mr *MockFailoverSchemeSetMockRecorder) Difference(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockFailoverSchemeSet)(nil).Difference), set) +} + +// Equal mocks base method. +func (m *MockFailoverSchemeSet) Equal(failoverSchemeSet v1sets.FailoverSchemeSet) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Equal", failoverSchemeSet) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Equal indicates an expected call of Equal. +func (mr *MockFailoverSchemeSetMockRecorder) Equal(failoverSchemeSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockFailoverSchemeSet)(nil).Equal), failoverSchemeSet) +} + +// Find mocks base method. +func (m *MockFailoverSchemeSet) Find(id ezkube.ResourceId) (*v1.FailoverScheme, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.FailoverScheme) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Find indicates an expected call of Find. +func (mr *MockFailoverSchemeSetMockRecorder) Find(id interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockFailoverSchemeSet)(nil).Find), id) +} + +// Generic mocks base method. +func (m *MockFailoverSchemeSet) Generic() sets.ResourceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 +} + +// Generic indicates an expected call of Generic. +func (mr *MockFailoverSchemeSetMockRecorder) Generic() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockFailoverSchemeSet)(nil).Generic)) +} + +// Has mocks base method. +func (m *MockFailoverSchemeSet) Has(failoverScheme ezkube.ResourceId) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Has", failoverScheme) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Has indicates an expected call of Has. +func (mr *MockFailoverSchemeSetMockRecorder) Has(failoverScheme interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockFailoverSchemeSet)(nil).Has), failoverScheme) +} + +// Insert mocks base method. +func (m *MockFailoverSchemeSet) Insert(failoverScheme ...*v1.FailoverScheme) { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range failoverScheme { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) +} + +// Insert indicates an expected call of Insert. +func (mr *MockFailoverSchemeSetMockRecorder) Insert(failoverScheme ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockFailoverSchemeSet)(nil).Insert), failoverScheme...) +} + +// Intersection mocks base method. +func (m *MockFailoverSchemeSet) Intersection(set v1sets.FailoverSchemeSet) v1sets.FailoverSchemeSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Intersection", set) + ret0, _ := ret[0].(v1sets.FailoverSchemeSet) + return ret0 +} + +// Intersection indicates an expected call of Intersection. +func (mr *MockFailoverSchemeSetMockRecorder) Intersection(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockFailoverSchemeSet)(nil).Intersection), set) +} + +// Keys mocks base method. +func (m *MockFailoverSchemeSet) Keys() sets0.String { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 +} + +// Keys indicates an expected call of Keys. +func (mr *MockFailoverSchemeSetMockRecorder) Keys() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockFailoverSchemeSet)(nil).Keys)) +} + +// Length mocks base method. +func (m *MockFailoverSchemeSet) Length() int { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Length") + ret0, _ := ret[0].(int) + return ret0 +} + +// Length indicates an expected call of Length. +func (mr *MockFailoverSchemeSetMockRecorder) Length() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockFailoverSchemeSet)(nil).Length)) +} + +// List mocks base method. +func (m *MockFailoverSchemeSet) List(filterResource ...func(*v1.FailoverScheme) bool) []*v1.FailoverScheme { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.FailoverScheme) + return ret0 +} + +// List indicates an expected call of List. +func (mr *MockFailoverSchemeSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockFailoverSchemeSet)(nil).List), filterResource...) +} + +// Map mocks base method. +func (m *MockFailoverSchemeSet) Map() map[string]*v1.FailoverScheme { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.FailoverScheme) + return ret0 +} + +// Map indicates an expected call of Map. +func (mr *MockFailoverSchemeSetMockRecorder) Map() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockFailoverSchemeSet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockFailoverSchemeSet) Union(set v1sets.FailoverSchemeSet) v1sets.FailoverSchemeSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.FailoverSchemeSet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockFailoverSchemeSetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockFailoverSchemeSet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockFailoverSchemeSet) UnsortedList(filterResource ...func(*v1.FailoverScheme) bool) []*v1.FailoverScheme { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.FailoverScheme) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockFailoverSchemeSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockFailoverSchemeSet)(nil).UnsortedList), filterResource...) +} diff --git a/pkg/api/fed.solo.io/v1/sets/sets.go b/pkg/api/fed.solo.io/v1/sets/sets.go new file mode 100644 index 000000000..268818614 --- /dev/null +++ b/pkg/api/fed.solo.io/v1/sets/sets.go @@ -0,0 +1,460 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./sets.go -destination mocks/sets.go + +package v1sets + +import ( + fed_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1" + + "github.com/rotisserie/eris" + sksets "github.com/solo-io/skv2/contrib/pkg/sets" + "github.com/solo-io/skv2/pkg/ezkube" + "k8s.io/apimachinery/pkg/util/sets" +) + +type GlooInstanceSet interface { + // Get the set stored keys + Keys() sets.String + // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + List(filterResource ...func(*fed_solo_io_v1.GlooInstance) bool) []*fed_solo_io_v1.GlooInstance + // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + UnsortedList(filterResource ...func(*fed_solo_io_v1.GlooInstance) bool) []*fed_solo_io_v1.GlooInstance + // Return the Set as a map of key to resource. + Map() map[string]*fed_solo_io_v1.GlooInstance + // Insert a resource into the set. + Insert(glooInstance ...*fed_solo_io_v1.GlooInstance) + // Compare the equality of the keys in two sets (not the resources themselves) + Equal(glooInstanceSet GlooInstanceSet) bool + // Check if the set contains a key matching the resource (not the resource itself) + Has(glooInstance ezkube.ResourceId) bool + // Delete the key matching the resource + Delete(glooInstance ezkube.ResourceId) + // Return the union with the provided set + Union(set GlooInstanceSet) GlooInstanceSet + // Return the difference with the provided set + Difference(set GlooInstanceSet) GlooInstanceSet + // Return the intersection with the provided set + Intersection(set GlooInstanceSet) GlooInstanceSet + // Find the resource with the given ID + Find(id ezkube.ResourceId) (*fed_solo_io_v1.GlooInstance, error) + // Get the length of the set + Length() int + // returns the generic implementation of the set + Generic() sksets.ResourceSet + // returns the delta between this and and another GlooInstanceSet + Delta(newSet GlooInstanceSet) sksets.ResourceDelta + // Create a deep copy of the current GlooInstanceSet + Clone() GlooInstanceSet +} + +func makeGenericGlooInstanceSet(glooInstanceList []*fed_solo_io_v1.GlooInstance) sksets.ResourceSet { + var genericResources []ezkube.ResourceId + for _, obj := range glooInstanceList { + genericResources = append(genericResources, obj) + } + return sksets.NewResourceSet(genericResources...) +} + +type glooInstanceSet struct { + set sksets.ResourceSet +} + +func NewGlooInstanceSet(glooInstanceList ...*fed_solo_io_v1.GlooInstance) GlooInstanceSet { + return &glooInstanceSet{set: makeGenericGlooInstanceSet(glooInstanceList)} +} + +func NewGlooInstanceSetFromList(glooInstanceList *fed_solo_io_v1.GlooInstanceList) GlooInstanceSet { + list := make([]*fed_solo_io_v1.GlooInstance, 0, len(glooInstanceList.Items)) + for idx := range glooInstanceList.Items { + list = append(list, &glooInstanceList.Items[idx]) + } + return &glooInstanceSet{set: makeGenericGlooInstanceSet(list)} +} + +func (s *glooInstanceSet) Keys() sets.String { + if s == nil { + return sets.String{} + } + return s.Generic().Keys() +} + +func (s *glooInstanceSet) List(filterResource ...func(*fed_solo_io_v1.GlooInstance) bool) []*fed_solo_io_v1.GlooInstance { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_solo_io_v1.GlooInstance)) + }) + } + + objs := s.Generic().List(genericFilters...) + glooInstanceList := make([]*fed_solo_io_v1.GlooInstance, 0, len(objs)) + for _, obj := range objs { + glooInstanceList = append(glooInstanceList, obj.(*fed_solo_io_v1.GlooInstance)) + } + return glooInstanceList +} + +func (s *glooInstanceSet) UnsortedList(filterResource ...func(*fed_solo_io_v1.GlooInstance) bool) []*fed_solo_io_v1.GlooInstance { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_solo_io_v1.GlooInstance)) + }) + } + + var glooInstanceList []*fed_solo_io_v1.GlooInstance + for _, obj := range s.Generic().UnsortedList(genericFilters...) { + glooInstanceList = append(glooInstanceList, obj.(*fed_solo_io_v1.GlooInstance)) + } + return glooInstanceList +} + +func (s *glooInstanceSet) Map() map[string]*fed_solo_io_v1.GlooInstance { + if s == nil { + return nil + } + + newMap := map[string]*fed_solo_io_v1.GlooInstance{} + for k, v := range s.Generic().Map() { + newMap[k] = v.(*fed_solo_io_v1.GlooInstance) + } + return newMap +} + +func (s *glooInstanceSet) Insert( + glooInstanceList ...*fed_solo_io_v1.GlooInstance, +) { + if s == nil { + panic("cannot insert into nil set") + } + + for _, obj := range glooInstanceList { + s.Generic().Insert(obj) + } +} + +func (s *glooInstanceSet) Has(glooInstance ezkube.ResourceId) bool { + if s == nil { + return false + } + return s.Generic().Has(glooInstance) +} + +func (s *glooInstanceSet) Equal( + glooInstanceSet GlooInstanceSet, +) bool { + if s == nil { + return glooInstanceSet == nil + } + return s.Generic().Equal(glooInstanceSet.Generic()) +} + +func (s *glooInstanceSet) Delete(GlooInstance ezkube.ResourceId) { + if s == nil { + return + } + s.Generic().Delete(GlooInstance) +} + +func (s *glooInstanceSet) Union(set GlooInstanceSet) GlooInstanceSet { + if s == nil { + return set + } + return NewGlooInstanceSet(append(s.List(), set.List()...)...) +} + +func (s *glooInstanceSet) Difference(set GlooInstanceSet) GlooInstanceSet { + if s == nil { + return set + } + newSet := s.Generic().Difference(set.Generic()) + return &glooInstanceSet{set: newSet} +} + +func (s *glooInstanceSet) Intersection(set GlooInstanceSet) GlooInstanceSet { + if s == nil { + return nil + } + newSet := s.Generic().Intersection(set.Generic()) + var glooInstanceList []*fed_solo_io_v1.GlooInstance + for _, obj := range newSet.List() { + glooInstanceList = append(glooInstanceList, obj.(*fed_solo_io_v1.GlooInstance)) + } + return NewGlooInstanceSet(glooInstanceList...) +} + +func (s *glooInstanceSet) Find(id ezkube.ResourceId) (*fed_solo_io_v1.GlooInstance, error) { + if s == nil { + return nil, eris.Errorf("empty set, cannot find GlooInstance %v", sksets.Key(id)) + } + obj, err := s.Generic().Find(&fed_solo_io_v1.GlooInstance{}, id) + if err != nil { + return nil, err + } + + return obj.(*fed_solo_io_v1.GlooInstance), nil +} + +func (s *glooInstanceSet) Length() int { + if s == nil { + return 0 + } + return s.Generic().Length() +} + +func (s *glooInstanceSet) Generic() sksets.ResourceSet { + if s == nil { + return nil + } + return s.set +} + +func (s *glooInstanceSet) Delta(newSet GlooInstanceSet) sksets.ResourceDelta { + if s == nil { + return sksets.ResourceDelta{ + Inserted: newSet.Generic(), + } + } + return s.Generic().Delta(newSet.Generic()) +} + +func (s *glooInstanceSet) Clone() GlooInstanceSet { + if s == nil { + return nil + } + return &glooInstanceSet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} + +type FailoverSchemeSet interface { + // Get the set stored keys + Keys() sets.String + // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + List(filterResource ...func(*fed_solo_io_v1.FailoverScheme) bool) []*fed_solo_io_v1.FailoverScheme + // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + UnsortedList(filterResource ...func(*fed_solo_io_v1.FailoverScheme) bool) []*fed_solo_io_v1.FailoverScheme + // Return the Set as a map of key to resource. + Map() map[string]*fed_solo_io_v1.FailoverScheme + // Insert a resource into the set. + Insert(failoverScheme ...*fed_solo_io_v1.FailoverScheme) + // Compare the equality of the keys in two sets (not the resources themselves) + Equal(failoverSchemeSet FailoverSchemeSet) bool + // Check if the set contains a key matching the resource (not the resource itself) + Has(failoverScheme ezkube.ResourceId) bool + // Delete the key matching the resource + Delete(failoverScheme ezkube.ResourceId) + // Return the union with the provided set + Union(set FailoverSchemeSet) FailoverSchemeSet + // Return the difference with the provided set + Difference(set FailoverSchemeSet) FailoverSchemeSet + // Return the intersection with the provided set + Intersection(set FailoverSchemeSet) FailoverSchemeSet + // Find the resource with the given ID + Find(id ezkube.ResourceId) (*fed_solo_io_v1.FailoverScheme, error) + // Get the length of the set + Length() int + // returns the generic implementation of the set + Generic() sksets.ResourceSet + // returns the delta between this and and another FailoverSchemeSet + Delta(newSet FailoverSchemeSet) sksets.ResourceDelta + // Create a deep copy of the current FailoverSchemeSet + Clone() FailoverSchemeSet +} + +func makeGenericFailoverSchemeSet(failoverSchemeList []*fed_solo_io_v1.FailoverScheme) sksets.ResourceSet { + var genericResources []ezkube.ResourceId + for _, obj := range failoverSchemeList { + genericResources = append(genericResources, obj) + } + return sksets.NewResourceSet(genericResources...) +} + +type failoverSchemeSet struct { + set sksets.ResourceSet +} + +func NewFailoverSchemeSet(failoverSchemeList ...*fed_solo_io_v1.FailoverScheme) FailoverSchemeSet { + return &failoverSchemeSet{set: makeGenericFailoverSchemeSet(failoverSchemeList)} +} + +func NewFailoverSchemeSetFromList(failoverSchemeList *fed_solo_io_v1.FailoverSchemeList) FailoverSchemeSet { + list := make([]*fed_solo_io_v1.FailoverScheme, 0, len(failoverSchemeList.Items)) + for idx := range failoverSchemeList.Items { + list = append(list, &failoverSchemeList.Items[idx]) + } + return &failoverSchemeSet{set: makeGenericFailoverSchemeSet(list)} +} + +func (s *failoverSchemeSet) Keys() sets.String { + if s == nil { + return sets.String{} + } + return s.Generic().Keys() +} + +func (s *failoverSchemeSet) List(filterResource ...func(*fed_solo_io_v1.FailoverScheme) bool) []*fed_solo_io_v1.FailoverScheme { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_solo_io_v1.FailoverScheme)) + }) + } + + objs := s.Generic().List(genericFilters...) + failoverSchemeList := make([]*fed_solo_io_v1.FailoverScheme, 0, len(objs)) + for _, obj := range objs { + failoverSchemeList = append(failoverSchemeList, obj.(*fed_solo_io_v1.FailoverScheme)) + } + return failoverSchemeList +} + +func (s *failoverSchemeSet) UnsortedList(filterResource ...func(*fed_solo_io_v1.FailoverScheme) bool) []*fed_solo_io_v1.FailoverScheme { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*fed_solo_io_v1.FailoverScheme)) + }) + } + + var failoverSchemeList []*fed_solo_io_v1.FailoverScheme + for _, obj := range s.Generic().UnsortedList(genericFilters...) { + failoverSchemeList = append(failoverSchemeList, obj.(*fed_solo_io_v1.FailoverScheme)) + } + return failoverSchemeList +} + +func (s *failoverSchemeSet) Map() map[string]*fed_solo_io_v1.FailoverScheme { + if s == nil { + return nil + } + + newMap := map[string]*fed_solo_io_v1.FailoverScheme{} + for k, v := range s.Generic().Map() { + newMap[k] = v.(*fed_solo_io_v1.FailoverScheme) + } + return newMap +} + +func (s *failoverSchemeSet) Insert( + failoverSchemeList ...*fed_solo_io_v1.FailoverScheme, +) { + if s == nil { + panic("cannot insert into nil set") + } + + for _, obj := range failoverSchemeList { + s.Generic().Insert(obj) + } +} + +func (s *failoverSchemeSet) Has(failoverScheme ezkube.ResourceId) bool { + if s == nil { + return false + } + return s.Generic().Has(failoverScheme) +} + +func (s *failoverSchemeSet) Equal( + failoverSchemeSet FailoverSchemeSet, +) bool { + if s == nil { + return failoverSchemeSet == nil + } + return s.Generic().Equal(failoverSchemeSet.Generic()) +} + +func (s *failoverSchemeSet) Delete(FailoverScheme ezkube.ResourceId) { + if s == nil { + return + } + s.Generic().Delete(FailoverScheme) +} + +func (s *failoverSchemeSet) Union(set FailoverSchemeSet) FailoverSchemeSet { + if s == nil { + return set + } + return NewFailoverSchemeSet(append(s.List(), set.List()...)...) +} + +func (s *failoverSchemeSet) Difference(set FailoverSchemeSet) FailoverSchemeSet { + if s == nil { + return set + } + newSet := s.Generic().Difference(set.Generic()) + return &failoverSchemeSet{set: newSet} +} + +func (s *failoverSchemeSet) Intersection(set FailoverSchemeSet) FailoverSchemeSet { + if s == nil { + return nil + } + newSet := s.Generic().Intersection(set.Generic()) + var failoverSchemeList []*fed_solo_io_v1.FailoverScheme + for _, obj := range newSet.List() { + failoverSchemeList = append(failoverSchemeList, obj.(*fed_solo_io_v1.FailoverScheme)) + } + return NewFailoverSchemeSet(failoverSchemeList...) +} + +func (s *failoverSchemeSet) Find(id ezkube.ResourceId) (*fed_solo_io_v1.FailoverScheme, error) { + if s == nil { + return nil, eris.Errorf("empty set, cannot find FailoverScheme %v", sksets.Key(id)) + } + obj, err := s.Generic().Find(&fed_solo_io_v1.FailoverScheme{}, id) + if err != nil { + return nil, err + } + + return obj.(*fed_solo_io_v1.FailoverScheme), nil +} + +func (s *failoverSchemeSet) Length() int { + if s == nil { + return 0 + } + return s.Generic().Length() +} + +func (s *failoverSchemeSet) Generic() sksets.ResourceSet { + if s == nil { + return nil + } + return s.set +} + +func (s *failoverSchemeSet) Delta(newSet FailoverSchemeSet) sksets.ResourceDelta { + if s == nil { + return sksets.ResourceDelta{ + Inserted: newSet.Generic(), + } + } + return s.Generic().Delta(newSet.Generic()) +} + +func (s *failoverSchemeSet) Clone() FailoverSchemeSet { + if s == nil { + return nil + } + return &failoverSchemeSet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} diff --git a/pkg/api/fed.solo.io/v1/type_helpers.go b/pkg/api/fed.solo.io/v1/type_helpers.go index e3ec714e4..ba601a6f8 100644 --- a/pkg/api/fed.solo.io/v1/type_helpers.go +++ b/pkg/api/fed.solo.io/v1/type_helpers.go @@ -5,3 +5,6 @@ package v1 // GlooInstanceSlice represents a slice of *GlooInstance type GlooInstanceSlice []*GlooInstance + +// FailoverSchemeSlice represents a slice of *FailoverScheme +type FailoverSchemeSlice []*FailoverScheme diff --git a/pkg/api/fed.solo.io/v1/types.go b/pkg/api/fed.solo.io/v1/types.go index 81cce5c13..7ed191cf4 100644 --- a/pkg/api/fed.solo.io/v1/types.go +++ b/pkg/api/fed.solo.io/v1/types.go @@ -4,7 +4,7 @@ package v1 import ( - . "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types" + ib9c5c757c84e62a6bd22e526df9722e3 "github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime/schema" ) @@ -26,8 +26,8 @@ type GlooInstance struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - Spec GlooInstanceSpec `json:"spec,omitempty"` - Status GlooInstanceStatus `json:"status,omitempty"` + Spec ib9c5c757c84e62a6bd22e526df9722e3.GlooInstanceSpec `json:"spec,omitempty"` + Status ib9c5c757c84e62a6bd22e526df9722e3.GlooInstanceStatus `json:"status,omitempty"` } // GVK returns the GroupVersionKind associated with the resource type. @@ -44,6 +44,42 @@ type GlooInstanceList struct { Items []GlooInstance `json:"items"` } +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:openapi-gen=true +// +kubebuilder:subresource:status + +// GroupVersionKind for FailoverScheme +var FailoverSchemeGVK = schema.GroupVersionKind{ + Group: "fed.solo.io", + Version: "v1", + Kind: "FailoverScheme", +} + +// FailoverScheme is the Schema for the failoverScheme API +type FailoverScheme struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec ib9c5c757c84e62a6bd22e526df9722e3.FailoverSchemeSpec `json:"spec,omitempty"` + Status ib9c5c757c84e62a6bd22e526df9722e3.FailoverSchemeStatus `json:"status,omitempty"` +} + +// GVK returns the GroupVersionKind associated with the resource type. +func (FailoverScheme) GVK() schema.GroupVersionKind { + return FailoverSchemeGVK +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// FailoverSchemeList contains a list of FailoverScheme +type FailoverSchemeList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FailoverScheme `json:"items"` +} + func init() { SchemeBuilder.Register(&GlooInstance{}, &GlooInstanceList{}) + SchemeBuilder.Register(&FailoverScheme{}, &FailoverSchemeList{}) } diff --git a/pkg/api/fed.solo.io/v1/types/failover.pb.equal.go b/pkg/api/fed.solo.io/v1/types/failover.pb.equal.go index 38ba9f095..9960465c0 100644 --- a/pkg/api/fed.solo.io/v1/types/failover.pb.equal.go +++ b/pkg/api/fed.solo.io/v1/types/failover.pb.equal.go @@ -119,6 +119,23 @@ func (m *FailoverSchemeStatus) Equal(that interface{}) bool { } } + if len(m.GetNamespacedStatuses()) != len(target.GetNamespacedStatuses()) { + return false + } + for k, v := range m.GetNamespacedStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetNamespacedStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetNamespacedStatuses()[k]) { + return false + } + } + + } + return true } @@ -217,3 +234,49 @@ func (m *FailoverSchemeSpec_FailoverEndpoints_LocalityLbTargets) Equal(that inte return true } + +// Equal function +func (m *FailoverSchemeStatus_Status) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*FailoverSchemeStatus_Status) + if !ok { + that2, ok := that.(FailoverSchemeStatus_Status) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetState() != target.GetState() { + return false + } + + if strings.Compare(m.GetMessage(), target.GetMessage()) != 0 { + return false + } + + if m.GetObservedGeneration() != target.GetObservedGeneration() { + return false + } + + if h, ok := interface{}(m.GetProcessingTime()).(equality.Equalizer); ok { + if !h.Equal(target.GetProcessingTime()) { + return false + } + } else { + if !proto.Equal(m.GetProcessingTime(), target.GetProcessingTime()) { + return false + } + } + + return true +} diff --git a/pkg/api/fed.solo.io/v1/types/failover.pb.go b/pkg/api/fed.solo.io/v1/types/failover.pb.go index 1787db57e..fea07474b 100644 --- a/pkg/api/fed.solo.io/v1/types/failover.pb.go +++ b/pkg/api/fed.solo.io/v1/types/failover.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo-fed/fed/v1/failover.proto @@ -9,14 +9,14 @@ package types import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - timestamp "github.com/golang/protobuf/ptypes/timestamp" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" v1 "github.com/solo-io/skv2/pkg/api/core.skv2.solo.io/v1" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -26,10 +26,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // The State of a reconciled object type FailoverSchemeStatus_State int32 @@ -91,58 +87,54 @@ func (FailoverSchemeStatus_State) EnumDescriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_rawDescGZIP(), []int{1, 0} } +// FailoverSpec is the core portion of the API for enabling failover between Gloo Upstreams in gloo-fed. +// This API is heavily inspired by the Failover API present in the Gloo Upstream which can be found in +// `api/gloo/v1/upstream`. // -//FailoverSpec is the core portion of the API for enabling failover between Gloo Upstreams in gloo-fed. -//This API is heavily inspired by the Failover API present in the Gloo Upstream which can be found in -//`api/gloo/v1/upstream`. -// -//The source Upstream below is the initial primary target of traffic. The type of endpoints vary by the type -//of Upstream specified. Each target specified is then configured as a failover endpoint in the case that -//the prmiary Upstream becomes unhealthy. The priority of the failover endpoints is inferred from the -//order in which the Upstreams are specified. source = [0], targets = [1-n]. +// The source Upstream below is the initial primary target of traffic. The type of endpoints vary by the type +// of Upstream specified. Each target specified is then configured as a failover endpoint in the case that +// the prmiary Upstream becomes unhealthy. The priority of the failover endpoints is inferred from the +// order in which the Upstreams are specified. source = [0], targets = [1-n]. // -//Example: +// Example: // -//primary: -//cluster: primary -//name: primary -//namespace: primary -//failover_groups: -//- priority_group: -//- cluster: A -//upstreams: -//- name: one -//namespace: one -//- cluster: B -//upstreams: -//- name: two -//namespace: two -//- priority_group: -//- cluster: C -//upstreams: -//- name: one -//namespace: one -//- cluster: D -//upstreams: -//- name: two -//namespace: two +// primary: +// cluster: primary +// name: primary +// namespace: primary +// failover_groups: +// - priority_group: +// - cluster: A +// upstreams: +// - name: one +// namespace: one +// - cluster: B +// upstreams: +// - name: two +// namespace: two +// - priority_group: +// - cluster: C +// upstreams: +// - name: one +// namespace: one +// - cluster: D +// upstreams: +// - name: two +// namespace: two type FailoverSchemeSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The upstream which will be configured for failover. Primary *v1.ClusterObjectRef `protobuf:"bytes,1,opt,name=primary,proto3" json:"primary,omitempty"` FailoverGroups []*FailoverSchemeSpec_FailoverEndpoints `protobuf:"bytes,2,rep,name=failover_groups,json=failoverGroups,proto3" json:"failover_groups,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FailoverSchemeSpec) Reset() { *x = FailoverSchemeSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FailoverSchemeSpec) String() string { @@ -153,7 +145,7 @@ func (*FailoverSchemeSpec) ProtoMessage() {} func (x *FailoverSchemeSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -183,28 +175,31 @@ func (x *FailoverSchemeSpec) GetFailoverGroups() []*FailoverSchemeSpec_FailoverE } type FailoverSchemeStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The current state of the resource + state protoimpl.MessageState `protogen:"open.v1"` + // The current state of the resource. + // Deprecated: use namespacedStatuses instead. State FailoverSchemeStatus_State `protobuf:"varint,1,opt,name=state,proto3,enum=fed.solo.io.FailoverSchemeStatus_State" json:"state,omitempty"` - // A human readable message about the current state of the object + // A human readable message about the current state of the object. + // Deprecated: use namespacedStatuses instead. Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` // The most recently observed generation of the resource. This value corresponds to the `metadata.generation` of - // a kubernetes resource + // a kubernetes resource. + // Deprecated: use namespacedStatuses instead. ObservedGeneration int64 `protobuf:"varint,3,opt,name=observed_generation,json=observedGeneration,proto3" json:"observed_generation,omitempty"` - // The time at which this status was recorded - ProcessingTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=processing_time,json=processingTime,proto3" json:"processing_time,omitempty"` + // The time at which this status was recorded. + // Deprecated: use namespacedStatuses instead. + ProcessingTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=processing_time,json=processingTime,proto3" json:"processing_time,omitempty"` + // Map of gloo fed controller namespace to FailoverScheme status. + NamespacedStatuses map[string]*FailoverSchemeStatus_Status `protobuf:"bytes,5,rep,name=namespaced_statuses,json=namespacedStatuses,proto3" json:"namespaced_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FailoverSchemeStatus) Reset() { *x = FailoverSchemeStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FailoverSchemeStatus) String() string { @@ -215,7 +210,7 @@ func (*FailoverSchemeStatus) ProtoMessage() {} func (x *FailoverSchemeStatus) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -251,28 +246,32 @@ func (x *FailoverSchemeStatus) GetObservedGeneration() int64 { return 0 } -func (x *FailoverSchemeStatus) GetProcessingTime() *timestamp.Timestamp { +func (x *FailoverSchemeStatus) GetProcessingTime() *timestamppb.Timestamp { if x != nil { return x.ProcessingTime } return nil } -type FailoverSchemeSpec_FailoverEndpoints struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *FailoverSchemeStatus) GetNamespacedStatuses() map[string]*FailoverSchemeStatus_Status { + if x != nil { + return x.NamespacedStatuses + } + return nil +} +type FailoverSchemeSpec_FailoverEndpoints struct { + state protoimpl.MessageState `protogen:"open.v1"` PriorityGroup []*FailoverSchemeSpec_FailoverEndpoints_LocalityLbTargets `protobuf:"bytes,2,rep,name=priority_group,json=priorityGroup,proto3" json:"priority_group,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FailoverSchemeSpec_FailoverEndpoints) Reset() { *x = FailoverSchemeSpec_FailoverEndpoints{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FailoverSchemeSpec_FailoverEndpoints) String() string { @@ -283,7 +282,7 @@ func (*FailoverSchemeSpec_FailoverEndpoints) ProtoMessage() {} func (x *FailoverSchemeSpec_FailoverEndpoints) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -306,10 +305,7 @@ func (x *FailoverSchemeSpec_FailoverEndpoints) GetPriorityGroup() []*FailoverSch } type FailoverSchemeSpec_FailoverEndpoints_LocalityLbTargets struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // (REQUIRED) Cluster on which the endpoints for this Group can be found Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` // A list of Upstream targets, each of these targets must exist on the cluster specified in this message @@ -319,16 +315,16 @@ type FailoverSchemeSpec_FailoverEndpoints_LocalityLbTargets struct { // targets within a given priority, who are located in the zame zone. // See envoy Locality Weighted Load Balancing for more information: // https://www.envoyproxy.io/docs/envoy/v1.14.1/intro/arch_overview/upstream/load_balancing/locality_weight#arch-overview-load-balancing-locality-weighted-lb - LocalityWeight *wrappers.UInt32Value `protobuf:"bytes,3,opt,name=locality_weight,json=localityWeight,proto3" json:"locality_weight,omitempty"` + LocalityWeight *wrapperspb.UInt32Value `protobuf:"bytes,3,opt,name=locality_weight,json=localityWeight,proto3" json:"locality_weight,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FailoverSchemeSpec_FailoverEndpoints_LocalityLbTargets) Reset() { *x = FailoverSchemeSpec_FailoverEndpoints_LocalityLbTargets{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FailoverSchemeSpec_FailoverEndpoints_LocalityLbTargets) String() string { @@ -339,7 +335,7 @@ func (*FailoverSchemeSpec_FailoverEndpoints_LocalityLbTargets) ProtoMessage() {} func (x *FailoverSchemeSpec_FailoverEndpoints_LocalityLbTargets) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -368,16 +364,89 @@ func (x *FailoverSchemeSpec_FailoverEndpoints_LocalityLbTargets) GetUpstreams() return nil } -func (x *FailoverSchemeSpec_FailoverEndpoints_LocalityLbTargets) GetLocalityWeight() *wrappers.UInt32Value { +func (x *FailoverSchemeSpec_FailoverEndpoints_LocalityLbTargets) GetLocalityWeight() *wrapperspb.UInt32Value { if x != nil { return x.LocalityWeight } return nil } +type FailoverSchemeStatus_Status struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The current state of the resource. + State FailoverSchemeStatus_State `protobuf:"varint,1,opt,name=state,proto3,enum=fed.solo.io.FailoverSchemeStatus_State" json:"state,omitempty"` + // A human readable message about the current state of the object. + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + // The most recently observed generation of the resource. This value corresponds to the `metadata.generation` of + // a kubernetes resource. + ObservedGeneration int64 `protobuf:"varint,3,opt,name=observed_generation,json=observedGeneration,proto3" json:"observed_generation,omitempty"` + // The time at which this status was recorded. + ProcessingTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=processing_time,json=processingTime,proto3" json:"processing_time,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FailoverSchemeStatus_Status) Reset() { + *x = FailoverSchemeStatus_Status{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FailoverSchemeStatus_Status) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FailoverSchemeStatus_Status) ProtoMessage() {} + +func (x *FailoverSchemeStatus_Status) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FailoverSchemeStatus_Status.ProtoReflect.Descriptor instead. +func (*FailoverSchemeStatus_Status) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_rawDescGZIP(), []int{1, 1} +} + +func (x *FailoverSchemeStatus_Status) GetState() FailoverSchemeStatus_State { + if x != nil { + return x.State + } + return FailoverSchemeStatus_PENDING +} + +func (x *FailoverSchemeStatus_Status) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *FailoverSchemeStatus_Status) GetObservedGeneration() int64 { + if x != nil { + return x.ObservedGeneration + } + return 0 +} + +func (x *FailoverSchemeStatus_Status) GetProcessingTime() *timestamppb.Timestamp { + if x != nil { + return x.ProcessingTime + } + return nil +} + var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_rawDesc = string([]byte{ 0x0a, 0x3f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2f, @@ -421,7 +490,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_rawDesc 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x6c, 0x6f, 0x63, 0x61, - 0x6c, 0x69, 0x74, 0x79, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xb2, 0x02, 0x0a, 0x14, 0x46, + 0x6c, 0x69, 0x74, 0x79, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xe9, 0x05, 0x0a, 0x14, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, @@ -436,56 +505,90 @@ var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_rawDesc 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x54, 0x69, - 0x6d, 0x65, 0x22, 0x4b, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, - 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x52, 0x4f, 0x43, - 0x45, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x56, 0x41, - 0x4c, 0x49, 0x44, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, - 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44, 0x10, 0x04, 0x42, - 0x43, 0x5a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, - 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0xb8, 0xf5, 0x04, 0x01, - 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x6d, 0x65, 0x12, 0x6a, 0x0a, 0x13, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x39, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x61, + 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x12, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, 0x6f, + 0x0a, 0x17, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3e, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x66, 0x65, 0x64, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, + 0x72, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0xd7, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3d, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x66, 0x65, 0x64, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x12, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, + 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x63, 0x65, + 0x73, 0x73, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x4b, 0x0a, 0x05, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, + 0x0e, 0x0a, 0x0a, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, + 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, + 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x43, 0x43, 0x45, + 0x50, 0x54, 0x45, 0x44, 0x10, 0x04, 0x42, 0x43, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, + 0x5a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_goTypes = []any{ (FailoverSchemeStatus_State)(0), // 0: fed.solo.io.FailoverSchemeStatus.State (*FailoverSchemeSpec)(nil), // 1: fed.solo.io.FailoverSchemeSpec (*FailoverSchemeStatus)(nil), // 2: fed.solo.io.FailoverSchemeStatus (*FailoverSchemeSpec_FailoverEndpoints)(nil), // 3: fed.solo.io.FailoverSchemeSpec.FailoverEndpoints (*FailoverSchemeSpec_FailoverEndpoints_LocalityLbTargets)(nil), // 4: fed.solo.io.FailoverSchemeSpec.FailoverEndpoints.LocalityLbTargets - (*v1.ClusterObjectRef)(nil), // 5: core.skv2.solo.io.ClusterObjectRef - (*timestamp.Timestamp)(nil), // 6: google.protobuf.Timestamp - (*v1.ObjectRef)(nil), // 7: core.skv2.solo.io.ObjectRef - (*wrappers.UInt32Value)(nil), // 8: google.protobuf.UInt32Value + nil, // 5: fed.solo.io.FailoverSchemeStatus.NamespacedStatusesEntry + (*FailoverSchemeStatus_Status)(nil), // 6: fed.solo.io.FailoverSchemeStatus.Status + (*v1.ClusterObjectRef)(nil), // 7: core.skv2.solo.io.ClusterObjectRef + (*timestamppb.Timestamp)(nil), // 8: google.protobuf.Timestamp + (*v1.ObjectRef)(nil), // 9: core.skv2.solo.io.ObjectRef + (*wrapperspb.UInt32Value)(nil), // 10: google.protobuf.UInt32Value } var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_depIdxs = []int32{ - 5, // 0: fed.solo.io.FailoverSchemeSpec.primary:type_name -> core.skv2.solo.io.ClusterObjectRef - 3, // 1: fed.solo.io.FailoverSchemeSpec.failover_groups:type_name -> fed.solo.io.FailoverSchemeSpec.FailoverEndpoints - 0, // 2: fed.solo.io.FailoverSchemeStatus.state:type_name -> fed.solo.io.FailoverSchemeStatus.State - 6, // 3: fed.solo.io.FailoverSchemeStatus.processing_time:type_name -> google.protobuf.Timestamp - 4, // 4: fed.solo.io.FailoverSchemeSpec.FailoverEndpoints.priority_group:type_name -> fed.solo.io.FailoverSchemeSpec.FailoverEndpoints.LocalityLbTargets - 7, // 5: fed.solo.io.FailoverSchemeSpec.FailoverEndpoints.LocalityLbTargets.upstreams:type_name -> core.skv2.solo.io.ObjectRef - 8, // 6: fed.solo.io.FailoverSchemeSpec.FailoverEndpoints.LocalityLbTargets.locality_weight:type_name -> google.protobuf.UInt32Value - 7, // [7:7] is the sub-list for method output_type - 7, // [7:7] is the sub-list for method input_type - 7, // [7:7] is the sub-list for extension type_name - 7, // [7:7] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name + 7, // 0: fed.solo.io.FailoverSchemeSpec.primary:type_name -> core.skv2.solo.io.ClusterObjectRef + 3, // 1: fed.solo.io.FailoverSchemeSpec.failover_groups:type_name -> fed.solo.io.FailoverSchemeSpec.FailoverEndpoints + 0, // 2: fed.solo.io.FailoverSchemeStatus.state:type_name -> fed.solo.io.FailoverSchemeStatus.State + 8, // 3: fed.solo.io.FailoverSchemeStatus.processing_time:type_name -> google.protobuf.Timestamp + 5, // 4: fed.solo.io.FailoverSchemeStatus.namespaced_statuses:type_name -> fed.solo.io.FailoverSchemeStatus.NamespacedStatusesEntry + 4, // 5: fed.solo.io.FailoverSchemeSpec.FailoverEndpoints.priority_group:type_name -> fed.solo.io.FailoverSchemeSpec.FailoverEndpoints.LocalityLbTargets + 9, // 6: fed.solo.io.FailoverSchemeSpec.FailoverEndpoints.LocalityLbTargets.upstreams:type_name -> core.skv2.solo.io.ObjectRef + 10, // 7: fed.solo.io.FailoverSchemeSpec.FailoverEndpoints.LocalityLbTargets.locality_weight:type_name -> google.protobuf.UInt32Value + 6, // 8: fed.solo.io.FailoverSchemeStatus.NamespacedStatusesEntry.value:type_name -> fed.solo.io.FailoverSchemeStatus.Status + 0, // 9: fed.solo.io.FailoverSchemeStatus.Status.state:type_name -> fed.solo.io.FailoverSchemeStatus.State + 8, // 10: fed.solo.io.FailoverSchemeStatus.Status.processing_time:type_name -> google.protobuf.Timestamp + 11, // [11:11] is the sub-list for method output_type + 11, // [11:11] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_init() } @@ -493,63 +596,13 @@ func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_init() if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FailoverSchemeSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FailoverSchemeStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FailoverSchemeSpec_FailoverEndpoints); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FailoverSchemeSpec_FailoverEndpoints_LocalityLbTargets); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_rawDesc)), NumEnums: 1, - NumMessages: 4, + NumMessages: 6, NumExtensions: 0, NumServices: 0, }, @@ -559,7 +612,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_init() MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_failover_proto_depIdxs = nil } diff --git a/pkg/api/fed.solo.io/v1/types/failover.pb.hash.go b/pkg/api/fed.solo.io/v1/types/failover.pb.hash.go index a526d4c45..3a0442757 100644 --- a/pkg/api/fed.solo.io/v1/types/failover.pb.hash.go +++ b/pkg/api/fed.solo.io/v1/types/failover.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FailoverSchemeSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,14 +43,20 @@ func (m *FailoverSchemeSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetPrimary()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Primary")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPrimary(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPrimary(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Primary")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -55,14 +65,20 @@ func (m *FailoverSchemeSpec) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetFailoverGroups() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -74,6 +90,10 @@ func (m *FailoverSchemeSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FailoverSchemeStatus) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -101,23 +121,72 @@ func (m *FailoverSchemeStatus) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetProcessingTime()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProcessingTime")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetProcessingTime(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetProcessingTime(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ProcessingTime")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespacedStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { return 0, err } + + result = result ^ innerHash.Sum64() } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + } return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FailoverSchemeSpec_FailoverEndpoints) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -133,14 +202,20 @@ func (m *FailoverSchemeSpec_FailoverEndpoints) Hash(hasher hash.Hash64) (uint64, for _, v := range m.GetPriorityGroup() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -152,6 +227,10 @@ func (m *FailoverSchemeSpec_FailoverEndpoints) Hash(hasher hash.Hash64) (uint64, } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FailoverSchemeSpec_FailoverEndpoints_LocalityLbTargets) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -171,14 +250,20 @@ func (m *FailoverSchemeSpec_FailoverEndpoints_LocalityLbTargets) Hash(hasher has for _, v := range m.GetUpstreams() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -187,14 +272,74 @@ func (m *FailoverSchemeSpec_FailoverEndpoints_LocalityLbTargets) Hash(hasher has } if h, ok := interface{}(m.GetLocalityWeight()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LocalityWeight")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetLocalityWeight(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetLocalityWeight(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("LocalityWeight")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *FailoverSchemeStatus_Status) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types.FailoverSchemeStatus_Status")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetMessage())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetObservedGeneration()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetProcessingTime()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProcessingTime")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProcessingTime(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ProcessingTime")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/fed.solo.io/v1/types/failover.pb.uniquehash.go b/pkg/api/fed.solo.io/v1/types/failover.pb.uniquehash.go new file mode 100644 index 000000000..eddc89d68 --- /dev/null +++ b/pkg/api/fed.solo.io/v1/types/failover.pb.uniquehash.go @@ -0,0 +1,388 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo-fed/fed/v1/failover.proto + +package types + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FailoverSchemeSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types.FailoverSchemeSpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPrimary()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Primary")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPrimary(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Primary")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("FailoverGroups")); err != nil { + return 0, err + } + for i, v := range m.GetFailoverGroups() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FailoverSchemeStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types.FailoverSchemeStatus")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("State")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Message")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetMessage())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ObservedGeneration")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetObservedGeneration()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetProcessingTime()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProcessingTime")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProcessingTime(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ProcessingTime")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamespacedStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FailoverSchemeSpec_FailoverEndpoints) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types.FailoverSchemeSpec_FailoverEndpoints")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("PriorityGroup")); err != nil { + return 0, err + } + for i, v := range m.GetPriorityGroup() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FailoverSchemeSpec_FailoverEndpoints_LocalityLbTargets) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types.FailoverSchemeSpec_FailoverEndpoints_LocalityLbTargets")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Cluster")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCluster())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Upstreams")); err != nil { + return 0, err + } + for i, v := range m.GetUpstreams() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetLocalityWeight()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LocalityWeight")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLocalityWeight(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LocalityWeight")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FailoverSchemeStatus_Status) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types.FailoverSchemeStatus_Status")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("State")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Message")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetMessage())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ObservedGeneration")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetObservedGeneration()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetProcessingTime()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProcessingTime")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProcessingTime(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ProcessingTime")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/fed.solo.io/v1/types/instance.pb.equal.go b/pkg/api/fed.solo.io/v1/types/instance.pb.equal.go index d38167691..97f0e631c 100644 --- a/pkg/api/fed.solo.io/v1/types/instance.pb.equal.go +++ b/pkg/api/fed.solo.io/v1/types/instance.pb.equal.go @@ -212,6 +212,10 @@ func (m *GlooInstanceSpec_Proxy) Equal(that interface{}) bool { return false } + if m.GetReadConfigMulticlusterEnabled() != target.GetReadConfigMulticlusterEnabled() { + return false + } + if strings.Compare(m.GetVersion(), target.GetVersion()) != 0 { return false } @@ -398,6 +402,36 @@ func (m *GlooInstanceSpec_Check) Equal(that interface{}) bool { } } + if h, ok := interface{}(m.GetRateLimitConfigs()).(equality.Equalizer); ok { + if !h.Equal(target.GetRateLimitConfigs()) { + return false + } + } else { + if !proto.Equal(m.GetRateLimitConfigs(), target.GetRateLimitConfigs()) { + return false + } + } + + if h, ok := interface{}(m.GetMatchableHttpGateways()).(equality.Equalizer); ok { + if !h.Equal(target.GetMatchableHttpGateways()) { + return false + } + } else { + if !proto.Equal(m.GetMatchableHttpGateways(), target.GetMatchableHttpGateways()) { + return false + } + } + + if h, ok := interface{}(m.GetMatchableTcpGateways()).(equality.Equalizer); ok { + if !h.Equal(target.GetMatchableTcpGateways()) { + return false + } + } else { + if !proto.Equal(m.GetMatchableTcpGateways(), target.GetMatchableTcpGateways()) { + return false + } + } + if h, ok := interface{}(m.GetDeployments()).(equality.Equalizer); ok { if !h.Equal(target.GetDeployments()) { return false diff --git a/pkg/api/fed.solo.io/v1/types/instance.pb.go b/pkg/api/fed.solo.io/v1/types/instance.pb.go index be38c7381..ec1d43d95 100644 --- a/pkg/api/fed.solo.io/v1/types/instance.pb.go +++ b/pkg/api/fed.solo.io/v1/types/instance.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo-fed/fed/v1/instance.proto @@ -9,8 +9,8 @@ package types import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" v1 "github.com/solo-io/skv2/pkg/api/core.skv2.solo.io/v1" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -24,10 +24,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type GlooInstanceSpec_Proxy_WorkloadController int32 const ( @@ -78,10 +74,7 @@ func (GlooInstanceSpec_Proxy_WorkloadController) EnumDescriptor() ([]byte, []int } type GlooInstanceSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The cluster on which this Gloo instance is located Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` IsEnterprise bool `protobuf:"varint,2,opt,name=is_enterprise,json=isEnterprise,proto3" json:"is_enterprise,omitempty"` @@ -89,18 +82,18 @@ type GlooInstanceSpec struct { Proxies []*GlooInstanceSpec_Proxy `protobuf:"bytes,4,rep,name=proxies,proto3" json:"proxies,omitempty"` // Geographical region in which this gloo instance is located. // Each proxy may potentially live in 1 or more zones, so zonal information is stored on the proxy - Region string `protobuf:"bytes,5,opt,name=region,proto3" json:"region,omitempty"` - Admin *GlooInstanceSpec_Admin `protobuf:"bytes,6,opt,name=admin,proto3" json:"admin,omitempty"` - Check *GlooInstanceSpec_Check `protobuf:"bytes,7,opt,name=check,proto3" json:"check,omitempty"` + Region string `protobuf:"bytes,5,opt,name=region,proto3" json:"region,omitempty"` + Admin *GlooInstanceSpec_Admin `protobuf:"bytes,6,opt,name=admin,proto3" json:"admin,omitempty"` + Check *GlooInstanceSpec_Check `protobuf:"bytes,7,opt,name=check,proto3" json:"check,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GlooInstanceSpec) Reset() { *x = GlooInstanceSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GlooInstanceSpec) String() string { @@ -111,7 +104,7 @@ func (*GlooInstanceSpec) ProtoMessage() {} func (x *GlooInstanceSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -176,18 +169,16 @@ func (x *GlooInstanceSpec) GetCheck() *GlooInstanceSpec_Check { } type GlooInstanceStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GlooInstanceStatus) Reset() { *x = GlooInstanceStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GlooInstanceStatus) String() string { @@ -198,7 +189,7 @@ func (*GlooInstanceStatus) ProtoMessage() {} func (x *GlooInstanceStatus) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -214,10 +205,7 @@ func (*GlooInstanceStatus) Descriptor() ([]byte, []int) { } type GlooInstanceSpec_ControlPlane struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The version Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` // Namespace in which the control-plane (Gloo) is located @@ -225,15 +213,15 @@ type GlooInstanceSpec_ControlPlane struct { // An optional list of watched namespaces for Gloo resources. // By default, if this list is empty, we look in all namespaces. WatchedNamespaces []string `protobuf:"bytes,3,rep,name=watched_namespaces,json=watchedNamespaces,proto3" json:"watched_namespaces,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GlooInstanceSpec_ControlPlane) Reset() { *x = GlooInstanceSpec_ControlPlane{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GlooInstanceSpec_ControlPlane) String() string { @@ -244,7 +232,7 @@ func (*GlooInstanceSpec_ControlPlane) ProtoMessage() {} func (x *GlooInstanceSpec_ControlPlane) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -281,10 +269,7 @@ func (x *GlooInstanceSpec_ControlPlane) GetWatchedNamespaces() []string { } type GlooInstanceSpec_Proxy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The number of requested proxy replicas. Replicas int32 `protobuf:"varint,1,opt,name=replicas,proto3" json:"replicas,omitempty"` // The number of available proxy replicas. @@ -293,6 +278,8 @@ type GlooInstanceSpec_Proxy struct { ReadyReplicas int32 `protobuf:"varint,3,opt,name=ready_replicas,json=readyReplicas,proto3" json:"ready_replicas,omitempty"` // Whether or not this proxy supports wasm plugins WasmEnabled bool `protobuf:"varint,4,opt,name=wasm_enabled,json=wasmEnabled,proto3" json:"wasm_enabled,omitempty"` + // Whether or not this proxy allows its config dumps to be read + ReadConfigMulticlusterEnabled bool `protobuf:"varint,11,opt,name=read_config_multicluster_enabled,json=readConfigMulticlusterEnabled,proto3" json:"read_config_multicluster_enabled,omitempty"` // The version Version string `protobuf:"bytes,5,opt,name=version,proto3" json:"version,omitempty"` // Name of the proxy instance, this is important to distinguish it from other proxy instances, @@ -306,15 +293,15 @@ type GlooInstanceSpec_Proxy struct { // Kubernetes supports multi zone deployments, so 1 proxy may potentially live in multiple zones Zones []string `protobuf:"bytes,8,rep,name=zones,proto3" json:"zones,omitempty"` IngressEndpoints []*GlooInstanceSpec_Proxy_IngressEndpoint `protobuf:"bytes,9,rep,name=ingress_endpoints,json=ingressEndpoints,proto3" json:"ingress_endpoints,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GlooInstanceSpec_Proxy) Reset() { *x = GlooInstanceSpec_Proxy{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GlooInstanceSpec_Proxy) String() string { @@ -325,7 +312,7 @@ func (*GlooInstanceSpec_Proxy) ProtoMessage() {} func (x *GlooInstanceSpec_Proxy) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -368,6 +355,13 @@ func (x *GlooInstanceSpec_Proxy) GetWasmEnabled() bool { return false } +func (x *GlooInstanceSpec_Proxy) GetReadConfigMulticlusterEnabled() bool { + if x != nil { + return x.ReadConfigMulticlusterEnabled + } + return false +} + func (x *GlooInstanceSpec_Proxy) GetVersion() string { if x != nil { return x.Version @@ -411,23 +405,20 @@ func (x *GlooInstanceSpec_Proxy) GetIngressEndpoints() []*GlooInstanceSpec_Proxy } type GlooInstanceSpec_Admin struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Namespace which gloo-fed will write all of its admin resources to. WriteNamespace string `protobuf:"bytes,1,opt,name=write_namespace,json=writeNamespace,proto3" json:"write_namespace,omitempty"` // name of proxy which will be used for gloo-fed by default for this instance, unless specified via: TODO - ProxyId *v1.ObjectRef `protobuf:"bytes,2,opt,name=proxy_id,json=proxyId,proto3" json:"proxy_id,omitempty"` + ProxyId *v1.ObjectRef `protobuf:"bytes,2,opt,name=proxy_id,json=proxyId,proto3" json:"proxy_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GlooInstanceSpec_Admin) Reset() { *x = GlooInstanceSpec_Admin{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GlooInstanceSpec_Admin) String() string { @@ -438,7 +429,7 @@ func (*GlooInstanceSpec_Admin) ProtoMessage() {} func (x *GlooInstanceSpec_Admin) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -469,10 +460,7 @@ func (x *GlooInstanceSpec_Admin) GetProxyId() *v1.ObjectRef { // Check describes the status of the objects powering the GlooInstance. type GlooInstanceSpec_Check struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Gateways describes the Gateways configuring the GlooInstance. Gateways *GlooInstanceSpec_Check_Summary `protobuf:"bytes,1,opt,name=gateways,proto3" json:"gateways,omitempty"` // VirtualServices describes the VirtualServices configuring the GlooInstance. @@ -489,19 +477,25 @@ type GlooInstanceSpec_Check struct { UpstreamGroups *GlooInstanceSpec_Check_Summary `protobuf:"bytes,7,opt,name=upstream_groups,json=upstreamGroups,proto3" json:"upstream_groups,omitempty"` // Proxies describes the Proxies configuring the GlooInstance. Proxies *GlooInstanceSpec_Check_Summary `protobuf:"bytes,8,opt,name=proxies,proto3" json:"proxies,omitempty"` + // RateLimitConfigs describes the RateLimitConfigs available to the GlooInstance. + RateLimitConfigs *GlooInstanceSpec_Check_Summary `protobuf:"bytes,9,opt,name=rate_limit_configs,json=rateLimitConfigs,proto3" json:"rate_limit_configs,omitempty"` + // MatchableHttpGateways describes the MatchableHttpGateways available to the GlooInstance. + MatchableHttpGateways *GlooInstanceSpec_Check_Summary `protobuf:"bytes,10,opt,name=matchable_http_gateways,json=matchableHttpGateways,proto3" json:"matchable_http_gateways,omitempty"` + // MatchableTcpGateways describes the MatchableTcpGateways available to the GlooInstance. + MatchableTcpGateways *GlooInstanceSpec_Check_Summary `protobuf:"bytes,11,opt,name=matchable_tcp_gateways,json=matchableTcpGateways,proto3" json:"matchable_tcp_gateways,omitempty"` // Deployments describes the Deployments in the GlooInstance's install namespace. Deployments *GlooInstanceSpec_Check_Summary `protobuf:"bytes,20,opt,name=deployments,proto3" json:"deployments,omitempty"` // Pods describes the pods in the GlooInstance's install namespace. - Pods *GlooInstanceSpec_Check_Summary `protobuf:"bytes,22,opt,name=pods,proto3" json:"pods,omitempty"` + Pods *GlooInstanceSpec_Check_Summary `protobuf:"bytes,22,opt,name=pods,proto3" json:"pods,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GlooInstanceSpec_Check) Reset() { *x = GlooInstanceSpec_Check{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GlooInstanceSpec_Check) String() string { @@ -512,7 +506,7 @@ func (*GlooInstanceSpec_Check) ProtoMessage() {} func (x *GlooInstanceSpec_Check) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -583,6 +577,27 @@ func (x *GlooInstanceSpec_Check) GetProxies() *GlooInstanceSpec_Check_Summary { return nil } +func (x *GlooInstanceSpec_Check) GetRateLimitConfigs() *GlooInstanceSpec_Check_Summary { + if x != nil { + return x.RateLimitConfigs + } + return nil +} + +func (x *GlooInstanceSpec_Check) GetMatchableHttpGateways() *GlooInstanceSpec_Check_Summary { + if x != nil { + return x.MatchableHttpGateways + } + return nil +} + +func (x *GlooInstanceSpec_Check) GetMatchableTcpGateways() *GlooInstanceSpec_Check_Summary { + if x != nil { + return x.MatchableTcpGateways + } + return nil +} + func (x *GlooInstanceSpec_Check) GetDeployments() *GlooInstanceSpec_Check_Summary { if x != nil { return x.Deployments @@ -598,23 +613,20 @@ func (x *GlooInstanceSpec_Check) GetPods() *GlooInstanceSpec_Check_Summary { } type GlooInstanceSpec_Proxy_IngressEndpoint struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` Ports []*GlooInstanceSpec_Proxy_IngressEndpoint_Port `protobuf:"bytes,2,rep,name=ports,proto3" json:"ports,omitempty"` // Kubernetes service name, will be populated only if applicable - ServiceName string `protobuf:"bytes,3,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` + ServiceName string `protobuf:"bytes,3,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GlooInstanceSpec_Proxy_IngressEndpoint) Reset() { *x = GlooInstanceSpec_Proxy_IngressEndpoint{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GlooInstanceSpec_Proxy_IngressEndpoint) String() string { @@ -625,7 +637,7 @@ func (*GlooInstanceSpec_Proxy_IngressEndpoint) ProtoMessage() {} func (x *GlooInstanceSpec_Proxy_IngressEndpoint) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -662,21 +674,18 @@ func (x *GlooInstanceSpec_Proxy_IngressEndpoint) GetServiceName() string { } type GlooInstanceSpec_Proxy_IngressEndpoint_Port struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Port uint32 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Port uint32 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GlooInstanceSpec_Proxy_IngressEndpoint_Port) Reset() { *x = GlooInstanceSpec_Proxy_IngressEndpoint_Port{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GlooInstanceSpec_Proxy_IngressEndpoint_Port) String() string { @@ -687,7 +696,7 @@ func (*GlooInstanceSpec_Proxy_IngressEndpoint_Port) ProtoMessage() {} func (x *GlooInstanceSpec_Proxy_IngressEndpoint_Port) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -718,25 +727,22 @@ func (x *GlooInstanceSpec_Proxy_IngressEndpoint_Port) GetName() string { // Summary provides aggregate information for a given resource type. type GlooInstanceSpec_Check_Summary struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The total number of resources in any state. Total int32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` // Errors is a list of resource refs and their associated error messages. Errors []*GlooInstanceSpec_Check_Summary_ResourceReport `protobuf:"bytes,2,rep,name=errors,proto3" json:"errors,omitempty"` // Warnings is a list of resource refs and their associated warning messages. - Warnings []*GlooInstanceSpec_Check_Summary_ResourceReport `protobuf:"bytes,3,rep,name=warnings,proto3" json:"warnings,omitempty"` + Warnings []*GlooInstanceSpec_Check_Summary_ResourceReport `protobuf:"bytes,3,rep,name=warnings,proto3" json:"warnings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GlooInstanceSpec_Check_Summary) Reset() { *x = GlooInstanceSpec_Check_Summary{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GlooInstanceSpec_Check_Summary) String() string { @@ -747,7 +753,7 @@ func (*GlooInstanceSpec_Check_Summary) ProtoMessage() {} func (x *GlooInstanceSpec_Check_Summary) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -785,21 +791,18 @@ func (x *GlooInstanceSpec_Check_Summary) GetWarnings() []*GlooInstanceSpec_Check // A ResourceReport references an object and provides a status message. type GlooInstanceSpec_Check_Summary_ResourceReport struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ref *v1.ObjectRef `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` unknownFields protoimpl.UnknownFields - - Ref *v1.ObjectRef `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"` - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GlooInstanceSpec_Check_Summary_ResourceReport) Reset() { *x = GlooInstanceSpec_Check_Summary_ResourceReport{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GlooInstanceSpec_Check_Summary_ResourceReport) String() string { @@ -810,7 +813,7 @@ func (*GlooInstanceSpec_Check_Summary_ResourceReport) ProtoMessage() {} func (x *GlooInstanceSpec_Check_Summary_ResourceReport) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -841,7 +844,7 @@ func (x *GlooInstanceSpec_Check_Summary_ResourceReport) GetMessage() string { var File_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_rawDesc = string([]byte{ 0x0a, 0x3f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x66, 0x65, 0x64, 0x2f, @@ -851,7 +854,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_rawDesc 0x69, 0x6f, 0x2f, 0x73, 0x6b, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xf2, 0x12, 0x0a, 0x10, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x74, 0x6f, 0x22, 0xde, 0x15, 0x0a, 0x10, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, @@ -881,7 +884,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_rawDesc 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, - 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x1a, 0xe8, 0x05, 0x0a, 0x05, + 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x1a, 0xb1, 0x06, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, @@ -891,141 +894,164 @@ var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_rawDesc 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x65, 0x61, 0x64, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x61, 0x73, 0x6d, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x77, - 0x61, 0x73, 0x6d, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x70, 0x0a, 0x18, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, - 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x57, 0x6f, + 0x61, 0x73, 0x6d, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x20, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, + 0x70, 0x0a, 0x18, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x36, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, + 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x16, 0x77, 0x6f, 0x72, 0x6b, 0x6c, + 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x05, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x12, 0x60, 0x0a, 0x11, 0x69, 0x6e, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x09, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, + 0x63, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x45, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x10, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x1a, 0xce, 0x01, 0x0a, 0x0f, 0x49, 0x6e, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x49, 0x6e, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x72, 0x74, + 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x2e, 0x0a, 0x04, 0x50, 0x6f, + 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x43, 0x0a, 0x12, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, - 0x52, 0x16, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x6c, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x7a, 0x6f, 0x6e, 0x65, - 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x12, 0x60, - 0x0a, 0x11, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x66, 0x65, 0x64, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x49, - 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x10, - 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, - 0x1a, 0xce, 0x01, 0x0a, 0x0f, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x45, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, - 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, - 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x72, 0x6f, - 0x78, 0x79, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x21, - 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x1a, 0x2e, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0x43, 0x0a, 0x12, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x4e, 0x44, 0x45, 0x46, - 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, - 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x41, 0x45, 0x4d, 0x4f, 0x4e, - 0x5f, 0x53, 0x45, 0x54, 0x10, 0x02, 0x1a, 0x69, 0x0a, 0x05, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, - 0x27, 0x0a, 0x0f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x49, - 0x64, 0x1a, 0xb3, 0x08, 0x0a, 0x05, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x47, 0x0a, 0x08, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, - 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x73, 0x12, 0x56, 0x0a, 0x10, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, - 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, - 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0f, 0x76, 0x69, 0x72, - 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x0c, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x0e, 0x0a, 0x0a, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, + 0x0e, 0x0a, 0x0a, 0x44, 0x41, 0x45, 0x4d, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x02, 0x1a, + 0x69, 0x0a, 0x05, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x72, 0x69, 0x74, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x37, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, + 0x66, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x49, 0x64, 0x1a, 0xd6, 0x0a, 0x0a, 0x05, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x12, 0x47, 0x0a, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x56, 0x0a, + 0x10, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x0c, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x65, + 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x65, + 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x47, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x79, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x49, + 0x0a, 0x09, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, + 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x09, + 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x54, 0x0a, 0x0f, 0x75, 0x70, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, - 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x0c, - 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x0e, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, + 0x45, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, + 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x07, 0x70, + 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x12, 0x59, 0x0a, 0x12, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, - 0x0b, 0x61, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x47, 0x0a, 0x08, - 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, - 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, - 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x08, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x49, 0x0a, 0x09, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x53, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x09, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, - 0x12, 0x54, 0x0a, 0x0f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x65, 0x64, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0e, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x45, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, - 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x53, 0x75, 0x6d, - 0x6d, 0x61, 0x72, 0x79, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x12, 0x4d, 0x0a, - 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x14, 0x20, 0x01, + 0x10, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x73, 0x12, 0x63, 0x0a, 0x17, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x68, + 0x74, 0x74, 0x70, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, - 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3f, 0x0a, 0x04, - 0x70, 0x6f, 0x64, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x65, 0x64, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x1a, 0xa7, 0x02, - 0x0a, 0x07, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, - 0x52, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x3a, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, - 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x06, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x73, 0x12, 0x56, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x5a, 0x0a, 0x0e, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2e, 0x0a, - 0x03, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x03, 0x72, 0x65, 0x66, 0x12, 0x18, 0x0a, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x6c, 0x6f, 0x6f, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x43, 0x5a, - 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, - 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, - 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x15, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x74, 0x74, 0x70, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x61, 0x0a, 0x16, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x63, 0x70, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x52, 0x14, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x63, + 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x4d, 0x0a, 0x0b, 0x64, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, + 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, + 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0b, 0x64, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3f, 0x0a, 0x04, 0x70, 0x6f, 0x64, 0x73, + 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x52, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x1a, 0xa7, 0x02, 0x0a, 0x07, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x52, 0x0a, 0x06, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x66, 0x65, + 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, + 0x56, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x3a, 0x2e, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, + 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x08, 0x77, + 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x5a, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2e, 0x0a, 0x03, 0x72, 0x65, 0x66, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, + 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x52, 0x65, 0x66, 0x52, 0x03, 0x72, 0x65, 0x66, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x6c, 0x6f, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x43, 0xb8, 0xf5, 0x04, 0x01, 0xc0, + 0xf5, 0x04, 0x01, 0x5a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x65, 0x64, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes = make([]protoimpl.MessageInfo, 10) -var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_goTypes = []any{ (GlooInstanceSpec_Proxy_WorkloadController)(0), // 0: fed.solo.io.GlooInstanceSpec.Proxy.WorkloadController (*GlooInstanceSpec)(nil), // 1: fed.solo.io.GlooInstanceSpec (*GlooInstanceStatus)(nil), // 2: fed.solo.io.GlooInstanceStatus @@ -1055,17 +1081,20 @@ var file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_depIdxs 9, // 12: fed.solo.io.GlooInstanceSpec.Check.upstreams:type_name -> fed.solo.io.GlooInstanceSpec.Check.Summary 9, // 13: fed.solo.io.GlooInstanceSpec.Check.upstream_groups:type_name -> fed.solo.io.GlooInstanceSpec.Check.Summary 9, // 14: fed.solo.io.GlooInstanceSpec.Check.proxies:type_name -> fed.solo.io.GlooInstanceSpec.Check.Summary - 9, // 15: fed.solo.io.GlooInstanceSpec.Check.deployments:type_name -> fed.solo.io.GlooInstanceSpec.Check.Summary - 9, // 16: fed.solo.io.GlooInstanceSpec.Check.pods:type_name -> fed.solo.io.GlooInstanceSpec.Check.Summary - 8, // 17: fed.solo.io.GlooInstanceSpec.Proxy.IngressEndpoint.ports:type_name -> fed.solo.io.GlooInstanceSpec.Proxy.IngressEndpoint.Port - 10, // 18: fed.solo.io.GlooInstanceSpec.Check.Summary.errors:type_name -> fed.solo.io.GlooInstanceSpec.Check.Summary.ResourceReport - 10, // 19: fed.solo.io.GlooInstanceSpec.Check.Summary.warnings:type_name -> fed.solo.io.GlooInstanceSpec.Check.Summary.ResourceReport - 11, // 20: fed.solo.io.GlooInstanceSpec.Check.Summary.ResourceReport.ref:type_name -> core.skv2.solo.io.ObjectRef - 21, // [21:21] is the sub-list for method output_type - 21, // [21:21] is the sub-list for method input_type - 21, // [21:21] is the sub-list for extension type_name - 21, // [21:21] is the sub-list for extension extendee - 0, // [0:21] is the sub-list for field type_name + 9, // 15: fed.solo.io.GlooInstanceSpec.Check.rate_limit_configs:type_name -> fed.solo.io.GlooInstanceSpec.Check.Summary + 9, // 16: fed.solo.io.GlooInstanceSpec.Check.matchable_http_gateways:type_name -> fed.solo.io.GlooInstanceSpec.Check.Summary + 9, // 17: fed.solo.io.GlooInstanceSpec.Check.matchable_tcp_gateways:type_name -> fed.solo.io.GlooInstanceSpec.Check.Summary + 9, // 18: fed.solo.io.GlooInstanceSpec.Check.deployments:type_name -> fed.solo.io.GlooInstanceSpec.Check.Summary + 9, // 19: fed.solo.io.GlooInstanceSpec.Check.pods:type_name -> fed.solo.io.GlooInstanceSpec.Check.Summary + 8, // 20: fed.solo.io.GlooInstanceSpec.Proxy.IngressEndpoint.ports:type_name -> fed.solo.io.GlooInstanceSpec.Proxy.IngressEndpoint.Port + 10, // 21: fed.solo.io.GlooInstanceSpec.Check.Summary.errors:type_name -> fed.solo.io.GlooInstanceSpec.Check.Summary.ResourceReport + 10, // 22: fed.solo.io.GlooInstanceSpec.Check.Summary.warnings:type_name -> fed.solo.io.GlooInstanceSpec.Check.Summary.ResourceReport + 11, // 23: fed.solo.io.GlooInstanceSpec.Check.Summary.ResourceReport.ref:type_name -> core.skv2.solo.io.ObjectRef + 24, // [24:24] is the sub-list for method output_type + 24, // [24:24] is the sub-list for method input_type + 24, // [24:24] is the sub-list for extension type_name + 24, // [24:24] is the sub-list for extension extendee + 0, // [0:24] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_init() } @@ -1073,133 +1102,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_init() if File_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GlooInstanceSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GlooInstanceStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GlooInstanceSpec_ControlPlane); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GlooInstanceSpec_Proxy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GlooInstanceSpec_Admin); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GlooInstanceSpec_Check); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GlooInstanceSpec_Proxy_IngressEndpoint); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GlooInstanceSpec_Proxy_IngressEndpoint_Port); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GlooInstanceSpec_Check_Summary); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GlooInstanceSpec_Check_Summary_ResourceReport); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_rawDesc)), NumEnums: 1, NumMessages: 10, NumExtensions: 0, @@ -1211,7 +1118,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_init() MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_fed_fed_v1_instance_proto_depIdxs = nil } diff --git a/pkg/api/fed.solo.io/v1/types/instance.pb.hash.go b/pkg/api/fed.solo.io/v1/types/instance.pb.hash.go index 7594df3cc..7b6eaec33 100644 --- a/pkg/api/fed.solo.io/v1/types/instance.pb.hash.go +++ b/pkg/api/fed.solo.io/v1/types/instance.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GlooInstanceSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -48,14 +52,20 @@ func (m *GlooInstanceSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetControlPlane()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ControlPlane")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetControlPlane(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetControlPlane(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ControlPlane")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -64,14 +74,20 @@ func (m *GlooInstanceSpec) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetProxies() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -84,28 +100,40 @@ func (m *GlooInstanceSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetAdmin()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Admin")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAdmin(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAdmin(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Admin")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Check")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCheck(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCheck(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Check")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -115,6 +143,10 @@ func (m *GlooInstanceSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GlooInstanceStatus) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -131,6 +163,10 @@ func (m *GlooInstanceStatus) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GlooInstanceSpec_ControlPlane) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -163,6 +199,10 @@ func (m *GlooInstanceSpec_ControlPlane) Hash(hasher hash.Hash64) (uint64, error) } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GlooInstanceSpec_Proxy) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -195,6 +235,11 @@ func (m *GlooInstanceSpec_Proxy) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + err = binary.Write(hasher, binary.LittleEndian, m.GetReadConfigMulticlusterEnabled()) + if err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetVersion())); err != nil { return 0, err } @@ -223,14 +268,20 @@ func (m *GlooInstanceSpec_Proxy) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetIngressEndpoints() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -242,6 +293,10 @@ func (m *GlooInstanceSpec_Proxy) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GlooInstanceSpec_Admin) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -259,14 +314,20 @@ func (m *GlooInstanceSpec_Admin) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetProxyId()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProxyId")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetProxyId(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetProxyId(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ProxyId")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -276,6 +337,10 @@ func (m *GlooInstanceSpec_Admin) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GlooInstanceSpec_Check) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -289,140 +354,260 @@ func (m *GlooInstanceSpec_Check) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetGateways()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Gateways")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetGateways(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetGateways(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Gateways")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetVirtualServices()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("VirtualServices")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetVirtualServices(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetVirtualServices(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("VirtualServices")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetRouteTables()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RouteTables")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRouteTables(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRouteTables(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RouteTables")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetAuthConfigs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuthConfigs")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAuthConfigs(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAuthConfigs(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AuthConfigs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetSettings()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Settings")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSettings(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSettings(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Settings")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetUpstreams()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Upstreams")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetUpstreams(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetUpstreams(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Upstreams")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetUpstreamGroups()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UpstreamGroups")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetUpstreamGroups(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetUpstreamGroups(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("UpstreamGroups")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetProxies()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Proxies")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetProxies(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetProxies(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Proxies")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRateLimitConfigs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimitConfigs")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRateLimitConfigs(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RateLimitConfigs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMatchableHttpGateways()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MatchableHttpGateways")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMatchableHttpGateways(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MatchableHttpGateways")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMatchableTcpGateways()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MatchableTcpGateways")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMatchableTcpGateways(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MatchableTcpGateways")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetDeployments()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Deployments")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDeployments(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDeployments(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Deployments")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetPods()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Pods")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPods(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPods(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Pods")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -432,6 +617,10 @@ func (m *GlooInstanceSpec_Check) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GlooInstanceSpec_Proxy_IngressEndpoint) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -451,14 +640,20 @@ func (m *GlooInstanceSpec_Proxy_IngressEndpoint) Hash(hasher hash.Hash64) (uint6 for _, v := range m.GetPorts() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -474,6 +669,10 @@ func (m *GlooInstanceSpec_Proxy_IngressEndpoint) Hash(hasher hash.Hash64) (uint6 } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GlooInstanceSpec_Proxy_IngressEndpoint_Port) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -499,6 +698,10 @@ func (m *GlooInstanceSpec_Proxy_IngressEndpoint_Port) Hash(hasher hash.Hash64) ( } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GlooInstanceSpec_Check_Summary) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -519,14 +722,20 @@ func (m *GlooInstanceSpec_Check_Summary) Hash(hasher hash.Hash64) (uint64, error for _, v := range m.GetErrors() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -537,14 +746,20 @@ func (m *GlooInstanceSpec_Check_Summary) Hash(hasher hash.Hash64) (uint64, error for _, v := range m.GetWarnings() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -556,6 +771,10 @@ func (m *GlooInstanceSpec_Check_Summary) Hash(hasher hash.Hash64) (uint64, error } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GlooInstanceSpec_Check_Summary_ResourceReport) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -569,14 +788,20 @@ func (m *GlooInstanceSpec_Check_Summary_ResourceReport) Hash(hasher hash.Hash64) } if h, ok := interface{}(m.GetRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ref")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRef(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRef(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Ref")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/fed.solo.io/v1/types/instance.pb.uniquehash.go b/pkg/api/fed.solo.io/v1/types/instance.pb.uniquehash.go new file mode 100644 index 000000000..5e6897b61 --- /dev/null +++ b/pkg/api/fed.solo.io/v1/types/instance.pb.uniquehash.go @@ -0,0 +1,918 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo-fed/fed/v1/instance.proto + +package types + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GlooInstanceSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types.GlooInstanceSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Cluster")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCluster())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("IsEnterprise")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetIsEnterprise()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetControlPlane()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ControlPlane")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetControlPlane(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ControlPlane")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Proxies")); err != nil { + return 0, err + } + for i, v := range m.GetProxies() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("Region")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRegion())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAdmin()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Admin")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAdmin(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Admin")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Check")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCheck(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Check")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GlooInstanceStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types.GlooInstanceStatus")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GlooInstanceSpec_ControlPlane) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types.GlooInstanceSpec_ControlPlane")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Version")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetVersion())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Namespace")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetNamespace())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("WatchedNamespaces")); err != nil { + return 0, err + } + for i, v := range m.GetWatchedNamespaces() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GlooInstanceSpec_Proxy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types.GlooInstanceSpec_Proxy")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Replicas")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetReplicas()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AvailableReplicas")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAvailableReplicas()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ReadyReplicas")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetReadyReplicas()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("WasmEnabled")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetWasmEnabled()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ReadConfigMulticlusterEnabled")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetReadConfigMulticlusterEnabled()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Version")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetVersion())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Namespace")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetNamespace())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("WorkloadControllerType")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetWorkloadControllerType()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Zones")); err != nil { + return 0, err + } + for i, v := range m.GetZones() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("IngressEndpoints")); err != nil { + return 0, err + } + for i, v := range m.GetIngressEndpoints() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GlooInstanceSpec_Admin) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types.GlooInstanceSpec_Admin")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("WriteNamespace")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetWriteNamespace())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetProxyId()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProxyId")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProxyId(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ProxyId")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GlooInstanceSpec_Check) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types.GlooInstanceSpec_Check")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetGateways()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Gateways")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGateways(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Gateways")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetVirtualServices()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("VirtualServices")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetVirtualServices(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("VirtualServices")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRouteTables()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RouteTables")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRouteTables(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RouteTables")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAuthConfigs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuthConfigs")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuthConfigs(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuthConfigs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetSettings()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Settings")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSettings(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Settings")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetUpstreams()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Upstreams")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUpstreams(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Upstreams")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetUpstreamGroups()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UpstreamGroups")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUpstreamGroups(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UpstreamGroups")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetProxies()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Proxies")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProxies(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Proxies")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRateLimitConfigs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimitConfigs")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRateLimitConfigs(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RateLimitConfigs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMatchableHttpGateways()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MatchableHttpGateways")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMatchableHttpGateways(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MatchableHttpGateways")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMatchableTcpGateways()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MatchableTcpGateways")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMatchableTcpGateways(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MatchableTcpGateways")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDeployments()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Deployments")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDeployments(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Deployments")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPods()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Pods")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPods(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Pods")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GlooInstanceSpec_Proxy_IngressEndpoint) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types.GlooInstanceSpec_Proxy_IngressEndpoint")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Address")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAddress())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Ports")); err != nil { + return 0, err + } + for i, v := range m.GetPorts() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("ServiceName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetServiceName())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GlooInstanceSpec_Proxy_IngressEndpoint_Port) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types.GlooInstanceSpec_Proxy_IngressEndpoint_Port")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Port")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPort()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GlooInstanceSpec_Check_Summary) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types.GlooInstanceSpec_Check_Summary")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Total")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetTotal()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Errors")); err != nil { + return 0, err + } + for i, v := range m.GetErrors() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("Warnings")); err != nil { + return 0, err + } + for i, v := range m.GetWarnings() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GlooInstanceSpec_Check_Summary_ResourceReport) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fed.solo.io.github.com/solo-io/solo-apis/pkg/api/fed.solo.io/v1/types.GlooInstanceSpec_Check_Summary_ResourceReport")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ref")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Ref")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Message")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetMessage())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/fed.solo.io/v1/types/json.gen.go b/pkg/api/fed.solo.io/v1/types/json.gen.go index bcf2c02e9..ac8d6fc0b 100644 --- a/pkg/api/fed.solo.io/v1/types/json.gen.go +++ b/pkg/api/fed.solo.io/v1/types/json.gen.go @@ -21,7 +21,10 @@ var _ = math.Inf var ( marshaller = &skv2jsonpb.Marshaler{} - unmarshaller = &jsonpb.Unmarshaler{} + unmarshaller = &jsonpb.Unmarshaler{ + AllowUnknownFields: true, + } + strictUnmarshaller = &jsonpb.Unmarshaler{} ) // MarshalJSON is a custom marshaler for GlooInstanceSpec @@ -45,3 +48,25 @@ func (this *GlooInstanceStatus) MarshalJSON() ([]byte, error) { func (this *GlooInstanceStatus) UnmarshalJSON(b []byte) error { return unmarshaller.Unmarshal(bytes.NewReader(b), this) } + +// MarshalJSON is a custom marshaler for FailoverSchemeSpec +func (this *FailoverSchemeSpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for FailoverSchemeSpec +func (this *FailoverSchemeSpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for FailoverSchemeStatus +func (this *FailoverSchemeStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for FailoverSchemeStatus +func (this *FailoverSchemeStatus) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} diff --git a/pkg/api/fed.solo.io/v1/types/proto_deepcopy.go b/pkg/api/fed.solo.io/v1/types/proto_deepcopy.go index e5432719d..0bfaa358a 100644 --- a/pkg/api/fed.solo.io/v1/types/proto_deepcopy.go +++ b/pkg/api/fed.solo.io/v1/types/proto_deepcopy.go @@ -6,16 +6,49 @@ package types import ( proto "github.com/golang/protobuf/proto" + "github.com/solo-io/protoc-gen-ext/pkg/clone" ) // DeepCopyInto for the GlooInstance.Spec func (in *GlooInstanceSpec) DeepCopyInto(out *GlooInstanceSpec) { - p := proto.Clone(in).(*GlooInstanceSpec) + var p *GlooInstanceSpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*GlooInstanceSpec) + } else { + p = proto.Clone(in).(*GlooInstanceSpec) + } *out = *p } // DeepCopyInto for the GlooInstance.Status func (in *GlooInstanceStatus) DeepCopyInto(out *GlooInstanceStatus) { - p := proto.Clone(in).(*GlooInstanceStatus) + var p *GlooInstanceStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*GlooInstanceStatus) + } else { + p = proto.Clone(in).(*GlooInstanceStatus) + } + *out = *p +} + +// DeepCopyInto for the FailoverScheme.Spec +func (in *FailoverSchemeSpec) DeepCopyInto(out *FailoverSchemeSpec) { + var p *FailoverSchemeSpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*FailoverSchemeSpec) + } else { + p = proto.Clone(in).(*FailoverSchemeSpec) + } + *out = *p +} + +// DeepCopyInto for the FailoverScheme.Status +func (in *FailoverSchemeStatus) DeepCopyInto(out *FailoverSchemeStatus) { + var p *FailoverSchemeStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*FailoverSchemeStatus) + } else { + p = proto.Clone(in).(*FailoverSchemeStatus) + } *out = *p } diff --git a/pkg/api/fed.solo.io/v1/zz_generated.deepcopy.go b/pkg/api/fed.solo.io/v1/zz_generated.deepcopy.go index aac35abd5..983fd1139 100644 --- a/pkg/api/fed.solo.io/v1/zz_generated.deepcopy.go +++ b/pkg/api/fed.solo.io/v1/zz_generated.deepcopy.go @@ -67,3 +67,63 @@ func (in *GlooInstanceList) DeepCopyObject() runtime.Object { } return nil } + +// Generated Deepcopy methods for FailoverScheme + +func (in *FailoverScheme) DeepCopyInto(out *FailoverScheme) { + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + + // deepcopy spec + in.Spec.DeepCopyInto(&out.Spec) + // deepcopy status + in.Status.DeepCopyInto(&out.Status) + + return +} + +func (in *FailoverScheme) DeepCopy() *FailoverScheme { + if in == nil { + return nil + } + out := new(FailoverScheme) + in.DeepCopyInto(out) + return out +} + +func (in *FailoverScheme) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +func (in *FailoverSchemeList) DeepCopyInto(out *FailoverSchemeList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FailoverScheme, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +func (in *FailoverSchemeList) DeepCopy() *FailoverSchemeList { + if in == nil { + return nil + } + out := new(FailoverSchemeList) + in.DeepCopyInto(out) + return out +} + +func (in *FailoverSchemeList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} diff --git a/pkg/api/gateway.gloo.solo.io/README.md b/pkg/api/gateway.gloo.solo.io/README.md new file mode 100644 index 000000000..ef888a597 --- /dev/null +++ b/pkg/api/gateway.gloo.solo.io/README.md @@ -0,0 +1,33 @@ +# APIs for Gloo Gateway - Kubernetes Gateway API Integration + +This directory contains Go types for custom resources that Gloo Gateway uses with its Kubernetes Gateway API integration. + +## Adding a new API / CRD + +These are the steps required to add a new CRD to be used in the Kubernetes Gateway integration: + +1. If creating a new API version (e.g. `v1`, `v2alpha1`), create a new directory for the version and create a `doc.go` file with the `// +kubebuilder:object:generate=true` annotation, so that Go types in that directory will be converted into CRDs when codegen is run. + - The `groupName` marker specifies the API group name for the generated CRD. +2. Create a `_types.go` file in the API version directory. Following [gateway_parameters_types.go](/projects/gateway2/api/v1alpha1/gateway_parameters_types.go) as an example: + - Define a struct for the resource (containing the metadata fields, `Spec`, and `Status`) + - Tip: For spec fields, try to use pointer values when appropriate, as it makes inheritance easier (allows us to differentiate between zero values and nil). + - Define getters for each field, as these are not generated automatically. + - Include all the appropriate json and kubebuilder annotations on fields and structs. + - Make sure to include a unique `shortName` in the kubebuilder annotation for the resource. + - Define a struct for the resource list (containing the metadata fields and `Items`) +3. Run codegen via `make generated-code -B`. This will invoke the `controller-gen` command specified in [generate.go](/projects/gateway2/generate.go), which should result in the following: + - A `zz_generated.deepcopy.go` file is created in the same directory as the Go types. + - A CRD file is generated in [install/helm/gloo/crds](/install/helm/gloo/crds) + +Note: You may need to manually add the new API to the install/helm/gloo/templates/44-rbac.yaml file. + +## Background + +Historically, we have defined Gloo Gateway custom resources using protobuf files, which are then converted to Go types via solo-kit or skv2 codegen. This was also the initial implementation for the kube gateway resources, however we pivoted to using Go types for a few reasons. + +Some of our Gloo Gateway APIs depend on Kubernetes [Core](https://github.com/kubernetes/api) and [Apimachinery](https://github.com/kubernetes/apimachinery) APIs, because our user-facing APIs (e.g GatewayParameters) allow users to configure some parts of Kubernetes resources (e.g. pod/container security context, affinity, tolerations) directly. + +The source of truth for the Kubernetes APIs are the Go types defined in the Kubernetes repos, and protobuf files get generated from the Go types. Initially, the Gloo Gateway protobuf files imported a copy of the generated Kubernetes protobuf files, but: + +- There turned out to be inconsistencies between the structure of the generated protobuf files and the source APIs (e.g. extra embedded fields). +- Maintaining a copy of the generated files meant that we would need to remember to update them whenever we upgraded Kubernetes library versions in Gloo Gateway. diff --git a/pkg/api/gateway.gloo.solo.io/v1alpha1/clients.go b/pkg/api/gateway.gloo.solo.io/v1alpha1/clients.go new file mode 100644 index 000000000..ccffce048 --- /dev/null +++ b/pkg/api/gateway.gloo.solo.io/v1alpha1/clients.go @@ -0,0 +1,360 @@ +// Code generated by skv2. DO NOT EDIT. + +package v1alpha1 + +import ( + "context" + + "github.com/solo-io/skv2/pkg/controllerutils" + "github.com/solo-io/skv2/pkg/multicluster" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/rest" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +// MulticlusterClientset for the gateway.gloo.solo.io/v1alpha1 APIs +type MulticlusterClientset interface { + // Cluster returns a Clientset for the given cluster + Cluster(cluster string) (Clientset, error) +} + +type multiclusterClientset struct { + client multicluster.Client +} + +func NewMulticlusterClientset(client multicluster.Client) MulticlusterClientset { + return &multiclusterClientset{client: client} +} + +func (m *multiclusterClientset) Cluster(cluster string) (Clientset, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewClientset(client), nil +} + +// clienset for the gateway.gloo.solo.io/v1alpha1 APIs +type Clientset interface { + // clienset for the gateway.gloo.solo.io/v1alpha1/v1alpha1 APIs + GatewayParameters() GatewayParametersClient + // clienset for the gateway.gloo.solo.io/v1alpha1/v1alpha1 APIs + DirectResponses() DirectResponseClient +} + +type clientSet struct { + client client.Client +} + +func NewClientsetFromConfig(cfg *rest.Config) (Clientset, error) { + scheme := scheme.Scheme + if err := SchemeBuilder.AddToScheme(scheme); err != nil { + return nil, err + } + client, err := client.New(cfg, client.Options{ + Scheme: scheme, + }) + if err != nil { + return nil, err + } + return NewClientset(client), nil +} + +func NewClientset(client client.Client) Clientset { + return &clientSet{client: client} +} + +// clienset for the gateway.gloo.solo.io/v1alpha1/v1alpha1 APIs +func (c *clientSet) GatewayParameters() GatewayParametersClient { + return NewGatewayParametersClient(c.client) +} + +// clienset for the gateway.gloo.solo.io/v1alpha1/v1alpha1 APIs +func (c *clientSet) DirectResponses() DirectResponseClient { + return NewDirectResponseClient(c.client) +} + +// Reader knows how to read and list GatewayParameterss. +type GatewayParametersReader interface { + // Get retrieves a GatewayParameters for the given object key + GetGatewayParameters(ctx context.Context, key client.ObjectKey) (*GatewayParameters, error) + + // List retrieves list of GatewayParameterss for a given namespace and list options. + ListGatewayParameters(ctx context.Context, opts ...client.ListOption) (*GatewayParametersList, error) +} + +// GatewayParametersTransitionFunction instructs the GatewayParametersWriter how to transition between an existing +// GatewayParameters object and a desired on an Upsert +type GatewayParametersTransitionFunction func(existing, desired *GatewayParameters) error + +// Writer knows how to create, delete, and update GatewayParameterss. +type GatewayParametersWriter interface { + // Create saves the GatewayParameters object. + CreateGatewayParameters(ctx context.Context, obj *GatewayParameters, opts ...client.CreateOption) error + + // Delete deletes the GatewayParameters object. + DeleteGatewayParameters(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error + + // Update updates the given GatewayParameters object. + UpdateGatewayParameters(ctx context.Context, obj *GatewayParameters, opts ...client.UpdateOption) error + + // Patch patches the given GatewayParameters object. + PatchGatewayParameters(ctx context.Context, obj *GatewayParameters, patch client.Patch, opts ...client.PatchOption) error + + // DeleteAllOf deletes all GatewayParameters objects matching the given options. + DeleteAllOfGatewayParameters(ctx context.Context, opts ...client.DeleteAllOfOption) error + + // Create or Update the GatewayParameters object. + UpsertGatewayParameters(ctx context.Context, obj *GatewayParameters, transitionFuncs ...GatewayParametersTransitionFunction) error +} + +// StatusWriter knows how to update status subresource of a GatewayParameters object. +type GatewayParametersStatusWriter interface { + // Update updates the fields corresponding to the status subresource for the + // given GatewayParameters object. + UpdateGatewayParametersStatus(ctx context.Context, obj *GatewayParameters, opts ...client.SubResourceUpdateOption) error + + // Patch patches the given GatewayParameters object's subresource. + PatchGatewayParametersStatus(ctx context.Context, obj *GatewayParameters, patch client.Patch, opts ...client.SubResourcePatchOption) error +} + +// Client knows how to perform CRUD operations on GatewayParameterss. +type GatewayParametersClient interface { + GatewayParametersReader + GatewayParametersWriter + GatewayParametersStatusWriter +} + +type gatewayParametersClient struct { + client client.Client +} + +func NewGatewayParametersClient(client client.Client) *gatewayParametersClient { + return &gatewayParametersClient{client: client} +} + +func (c *gatewayParametersClient) GetGatewayParameters(ctx context.Context, key client.ObjectKey) (*GatewayParameters, error) { + obj := &GatewayParameters{} + if err := c.client.Get(ctx, key, obj); err != nil { + return nil, err + } + return obj, nil +} + +func (c *gatewayParametersClient) ListGatewayParameters(ctx context.Context, opts ...client.ListOption) (*GatewayParametersList, error) { + list := &GatewayParametersList{} + if err := c.client.List(ctx, list, opts...); err != nil { + return nil, err + } + return list, nil +} + +func (c *gatewayParametersClient) CreateGatewayParameters(ctx context.Context, obj *GatewayParameters, opts ...client.CreateOption) error { + return c.client.Create(ctx, obj, opts...) +} + +func (c *gatewayParametersClient) DeleteGatewayParameters(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + obj := &GatewayParameters{} + obj.SetName(key.Name) + obj.SetNamespace(key.Namespace) + return c.client.Delete(ctx, obj, opts...) +} + +func (c *gatewayParametersClient) UpdateGatewayParameters(ctx context.Context, obj *GatewayParameters, opts ...client.UpdateOption) error { + return c.client.Update(ctx, obj, opts...) +} + +func (c *gatewayParametersClient) PatchGatewayParameters(ctx context.Context, obj *GatewayParameters, patch client.Patch, opts ...client.PatchOption) error { + return c.client.Patch(ctx, obj, patch, opts...) +} + +func (c *gatewayParametersClient) DeleteAllOfGatewayParameters(ctx context.Context, opts ...client.DeleteAllOfOption) error { + obj := &GatewayParameters{} + return c.client.DeleteAllOf(ctx, obj, opts...) +} + +func (c *gatewayParametersClient) UpsertGatewayParameters(ctx context.Context, obj *GatewayParameters, transitionFuncs ...GatewayParametersTransitionFunction) error { + genericTxFunc := func(existing, desired runtime.Object) error { + for _, txFunc := range transitionFuncs { + if err := txFunc(existing.(*GatewayParameters), desired.(*GatewayParameters)); err != nil { + return err + } + } + return nil + } + _, err := controllerutils.Upsert(ctx, c.client, obj, genericTxFunc) + return err +} + +func (c *gatewayParametersClient) UpdateGatewayParametersStatus(ctx context.Context, obj *GatewayParameters, opts ...client.SubResourceUpdateOption) error { + return c.client.Status().Update(ctx, obj, opts...) +} + +func (c *gatewayParametersClient) PatchGatewayParametersStatus(ctx context.Context, obj *GatewayParameters, patch client.Patch, opts ...client.SubResourcePatchOption) error { + return c.client.Status().Patch(ctx, obj, patch, opts...) +} + +// Provides GatewayParametersClients for multiple clusters. +type MulticlusterGatewayParametersClient interface { + // Cluster returns a GatewayParametersClient for the given cluster + Cluster(cluster string) (GatewayParametersClient, error) +} + +type multiclusterGatewayParametersClient struct { + client multicluster.Client +} + +func NewMulticlusterGatewayParametersClient(client multicluster.Client) MulticlusterGatewayParametersClient { + return &multiclusterGatewayParametersClient{client: client} +} + +func (m *multiclusterGatewayParametersClient) Cluster(cluster string) (GatewayParametersClient, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewGatewayParametersClient(client), nil +} + +// Reader knows how to read and list DirectResponses. +type DirectResponseReader interface { + // Get retrieves a DirectResponse for the given object key + GetDirectResponse(ctx context.Context, key client.ObjectKey) (*DirectResponse, error) + + // List retrieves list of DirectResponses for a given namespace and list options. + ListDirectResponse(ctx context.Context, opts ...client.ListOption) (*DirectResponseList, error) +} + +// DirectResponseTransitionFunction instructs the DirectResponseWriter how to transition between an existing +// DirectResponse object and a desired on an Upsert +type DirectResponseTransitionFunction func(existing, desired *DirectResponse) error + +// Writer knows how to create, delete, and update DirectResponses. +type DirectResponseWriter interface { + // Create saves the DirectResponse object. + CreateDirectResponse(ctx context.Context, obj *DirectResponse, opts ...client.CreateOption) error + + // Delete deletes the DirectResponse object. + DeleteDirectResponse(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error + + // Update updates the given DirectResponse object. + UpdateDirectResponse(ctx context.Context, obj *DirectResponse, opts ...client.UpdateOption) error + + // Patch patches the given DirectResponse object. + PatchDirectResponse(ctx context.Context, obj *DirectResponse, patch client.Patch, opts ...client.PatchOption) error + + // DeleteAllOf deletes all DirectResponse objects matching the given options. + DeleteAllOfDirectResponse(ctx context.Context, opts ...client.DeleteAllOfOption) error + + // Create or Update the DirectResponse object. + UpsertDirectResponse(ctx context.Context, obj *DirectResponse, transitionFuncs ...DirectResponseTransitionFunction) error +} + +// StatusWriter knows how to update status subresource of a DirectResponse object. +type DirectResponseStatusWriter interface { + // Update updates the fields corresponding to the status subresource for the + // given DirectResponse object. + UpdateDirectResponseStatus(ctx context.Context, obj *DirectResponse, opts ...client.SubResourceUpdateOption) error + + // Patch patches the given DirectResponse object's subresource. + PatchDirectResponseStatus(ctx context.Context, obj *DirectResponse, patch client.Patch, opts ...client.SubResourcePatchOption) error +} + +// Client knows how to perform CRUD operations on DirectResponses. +type DirectResponseClient interface { + DirectResponseReader + DirectResponseWriter + DirectResponseStatusWriter +} + +type directResponseClient struct { + client client.Client +} + +func NewDirectResponseClient(client client.Client) *directResponseClient { + return &directResponseClient{client: client} +} + +func (c *directResponseClient) GetDirectResponse(ctx context.Context, key client.ObjectKey) (*DirectResponse, error) { + obj := &DirectResponse{} + if err := c.client.Get(ctx, key, obj); err != nil { + return nil, err + } + return obj, nil +} + +func (c *directResponseClient) ListDirectResponse(ctx context.Context, opts ...client.ListOption) (*DirectResponseList, error) { + list := &DirectResponseList{} + if err := c.client.List(ctx, list, opts...); err != nil { + return nil, err + } + return list, nil +} + +func (c *directResponseClient) CreateDirectResponse(ctx context.Context, obj *DirectResponse, opts ...client.CreateOption) error { + return c.client.Create(ctx, obj, opts...) +} + +func (c *directResponseClient) DeleteDirectResponse(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + obj := &DirectResponse{} + obj.SetName(key.Name) + obj.SetNamespace(key.Namespace) + return c.client.Delete(ctx, obj, opts...) +} + +func (c *directResponseClient) UpdateDirectResponse(ctx context.Context, obj *DirectResponse, opts ...client.UpdateOption) error { + return c.client.Update(ctx, obj, opts...) +} + +func (c *directResponseClient) PatchDirectResponse(ctx context.Context, obj *DirectResponse, patch client.Patch, opts ...client.PatchOption) error { + return c.client.Patch(ctx, obj, patch, opts...) +} + +func (c *directResponseClient) DeleteAllOfDirectResponse(ctx context.Context, opts ...client.DeleteAllOfOption) error { + obj := &DirectResponse{} + return c.client.DeleteAllOf(ctx, obj, opts...) +} + +func (c *directResponseClient) UpsertDirectResponse(ctx context.Context, obj *DirectResponse, transitionFuncs ...DirectResponseTransitionFunction) error { + genericTxFunc := func(existing, desired runtime.Object) error { + for _, txFunc := range transitionFuncs { + if err := txFunc(existing.(*DirectResponse), desired.(*DirectResponse)); err != nil { + return err + } + } + return nil + } + _, err := controllerutils.Upsert(ctx, c.client, obj, genericTxFunc) + return err +} + +func (c *directResponseClient) UpdateDirectResponseStatus(ctx context.Context, obj *DirectResponse, opts ...client.SubResourceUpdateOption) error { + return c.client.Status().Update(ctx, obj, opts...) +} + +func (c *directResponseClient) PatchDirectResponseStatus(ctx context.Context, obj *DirectResponse, patch client.Patch, opts ...client.SubResourcePatchOption) error { + return c.client.Status().Patch(ctx, obj, patch, opts...) +} + +// Provides DirectResponseClients for multiple clusters. +type MulticlusterDirectResponseClient interface { + // Cluster returns a DirectResponseClient for the given cluster + Cluster(cluster string) (DirectResponseClient, error) +} + +type multiclusterDirectResponseClient struct { + client multicluster.Client +} + +func NewMulticlusterDirectResponseClient(client multicluster.Client) MulticlusterDirectResponseClient { + return &multiclusterDirectResponseClient{client: client} +} + +func (m *multiclusterDirectResponseClient) Cluster(cluster string) (DirectResponseClient, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewDirectResponseClient(client), nil +} diff --git a/pkg/api/gateway.gloo.solo.io/v1alpha1/direct_response_types.go b/pkg/api/gateway.gloo.solo.io/v1alpha1/direct_response_types.go new file mode 100644 index 000000000..f7723d8a1 --- /dev/null +++ b/pkg/api/gateway.gloo.solo.io/v1alpha1/direct_response_types.go @@ -0,0 +1,65 @@ +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// DirectResponse contains configuration for defining direct response routes. +// +// +kubebuilder:object:root=true +// +kubebuilder:metadata:labels={app=gloo-gateway,app.kubernetes.io/name=gloo-gateway} +// +kubebuilder:resource:categories=gloo-gateway,shortName=dr +// +kubebuilder:subresource:status +type DirectResponse struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec DirectResponseSpec `json:"spec,omitempty"` + Status DirectResponseStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true +type DirectResponseList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []DirectResponse `json:"items"` +} + +// DirectResponseSpec describes the desired state of a DirectResponse. +type DirectResponseSpec struct { + // StatusCode defines the HTTP status code to return for this route. + // + // +kubebuilder:validation:Required + // +kubebuilder:validation:Minimum=200 + // +kubebuilder:validation:Maximum=599 + StatusCode uint32 `json:"status"` + // Body defines the content to be returned in the HTTP response body. + // The maximum length of the body is restricted to prevent excessively large responses. + // + // +kubebuilder:validation:MaxLength=4096 + // +kubebuilder:validation:Optional + Body string `json:"body,omitempty"` +} + +// DirectResponseStatus defines the observed state of a DirectResponse. +type DirectResponseStatus struct{} + +// GetStatus returns the HTTP status code to return for this route. +func (in *DirectResponse) GetStatusCode() uint32 { + if in == nil { + return 0 + } + return in.Spec.StatusCode +} + +// GetBody returns the content to be returned in the HTTP response body. +func (in *DirectResponse) GetBody() string { + if in == nil { + return "" + } + return in.Spec.Body +} + +func init() { + SchemeBuilder.Register(&DirectResponse{}, &DirectResponseList{}) +} diff --git a/pkg/api/gateway.gloo.solo.io/v1alpha1/doc.go b/pkg/api/gateway.gloo.solo.io/v1alpha1/doc.go new file mode 100644 index 000000000..0298177b3 --- /dev/null +++ b/pkg/api/gateway.gloo.solo.io/v1alpha1/doc.go @@ -0,0 +1,3 @@ +// +kubebuilder:object:generate=true +// +groupName=gateway.gloo.solo.io +package v1alpha1 diff --git a/pkg/api/gateway.gloo.solo.io/v1alpha1/gateway_parameters_types.go b/pkg/api/gateway.gloo.solo.io/v1alpha1/gateway_parameters_types.go new file mode 100644 index 000000000..98b65b99f --- /dev/null +++ b/pkg/api/gateway.gloo.solo.io/v1alpha1/gateway_parameters_types.go @@ -0,0 +1,814 @@ +package v1alpha1 + +import ( + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// A GatewayParameters contains configuration that is used to dynamically +// provision Gloo Gateway's data plane (Envoy proxy instance), based on a +// Kubernetes Gateway. +// +// +kubebuilder:object:root=true +// +kubebuilder:metadata:labels={app=gloo-gateway,app.kubernetes.io/name=gloo-gateway} +// +kubebuilder:resource:categories=gloo-gateway,shortName=gwp +// +kubebuilder:subresource:status +type GatewayParameters struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec GatewayParametersSpec `json:"spec,omitempty"` + Status GatewayParametersStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true +type GatewayParametersList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []GatewayParameters `json:"items"` +} + +// A GatewayParametersSpec describes the type of environment/platform in which +// the proxy will be provisioned. +// +// +kubebuilder:validation:XValidation:message="only one of 'kube' or 'selfManaged' may be set",rule="(has(self.kube) && !has(self.selfManaged)) || (!has(self.kube) && has(self.selfManaged))" +type GatewayParametersSpec struct { + // The proxy will be deployed on Kubernetes. + // + // +kubebuilder:validation:Optional + Kube *KubernetesProxyConfig `json:"kube,omitempty"` + + // The proxy will be self-managed and not auto-provisioned. + // + // +kubebuilder:validation:Optional + // +kubebuilder:pruning:PreserveUnknownFields + SelfManaged *SelfManagedGateway `json:"selfManaged,omitempty"` +} + +func (in *GatewayParametersSpec) GetKube() *KubernetesProxyConfig { + if in == nil { + return nil + } + return in.Kube +} + +func (in *GatewayParametersSpec) GetSelfManaged() *SelfManagedGateway { + if in == nil { + return nil + } + return in.SelfManaged +} + +// The current conditions of the GatewayParameters. This is not currently implemented. +type GatewayParametersStatus struct { +} + +type SelfManagedGateway struct { +} + +// Configuration for the set of Kubernetes resources that will be provisioned +// for a given Gateway. +type KubernetesProxyConfig struct { + // Use a Kubernetes deployment as the proxy workload type. Currently, this is the only + // supported workload type. + // + // +kubebuilder:validation:Optional + Deployment *ProxyDeployment `json:"deployment,omitempty"` + + // Configuration for the container running Envoy. + // + // +kubebuilder:validation:Optional + EnvoyContainer *EnvoyContainer `json:"envoyContainer,omitempty"` + + // Configuration for the container running the Secret Discovery Service (SDS). + // + // +kubebuilder:validation:Optional + SdsContainer *SdsContainer `json:"sdsContainer,omitempty"` + + // Configuration for the pods that will be created. + // + // +kubebuilder:validation:Optional + PodTemplate *Pod `json:"podTemplate,omitempty"` + + // Configuration for the Kubernetes Service that exposes the Envoy proxy over + // the network. + // + // +kubebuilder:validation:Optional + Service *Service `json:"service,omitempty"` + + // Configuration for the Kubernetes ServiceAccount used by the Envoy pod. + // + // +kubebuilder:validation:Optional + ServiceAccount *ServiceAccount `json:"serviceAccount,omitempty"` + + // Configuration for the Istio integration. + // + // +kubebuilder:validation:Optional + Istio *IstioIntegration `json:"istio,omitempty"` + + // Configuration for the stats server. + // + // +kubebuilder:validation:Optional + Stats *StatsConfig `json:"stats,omitempty"` + + // Configuration for the AI extension. + // + // +kubebuilder:validation:Optional + AiExtension *AiExtension `json:"aiExtension,omitempty"` + + // Used to unset the `runAsUser` values in security contexts. + FloatingUserId *bool `json:"floatingUserId,omitempty"` +} + +func (in *KubernetesProxyConfig) GetDeployment() *ProxyDeployment { + if in == nil { + return nil + } + return in.Deployment +} + +func (in *KubernetesProxyConfig) GetEnvoyContainer() *EnvoyContainer { + if in == nil { + return nil + } + return in.EnvoyContainer +} + +func (in *KubernetesProxyConfig) GetSdsContainer() *SdsContainer { + if in == nil { + return nil + } + return in.SdsContainer +} + +func (in *KubernetesProxyConfig) GetPodTemplate() *Pod { + if in == nil { + return nil + } + return in.PodTemplate +} + +func (in *KubernetesProxyConfig) GetService() *Service { + if in == nil { + return nil + } + return in.Service +} + +func (in *KubernetesProxyConfig) GetServiceAccount() *ServiceAccount { + if in == nil { + return nil + } + return in.ServiceAccount +} + +func (in *KubernetesProxyConfig) GetIstio() *IstioIntegration { + if in == nil { + return nil + } + return in.Istio +} + +func (in *KubernetesProxyConfig) GetStats() *StatsConfig { + if in == nil { + return nil + } + return in.Stats +} + +func (in *KubernetesProxyConfig) GetAiExtension() *AiExtension { + if in == nil { + return nil + } + return in.AiExtension +} + +func (in *KubernetesProxyConfig) GetFloatingUserId() *bool { + if in == nil { + return nil + } + return in.FloatingUserId +} + +// Configuration for the Proxy deployment in Kubernetes. +type ProxyDeployment struct { + // The number of desired pods. Defaults to 1. + // + // +kubebuilder:validation:Optional + Replicas *uint32 `json:"replicas,omitempty"` +} + +func (in *ProxyDeployment) GetReplicas() *uint32 { + if in == nil { + return nil + } + return in.Replicas +} + +// Configuration for the container running Envoy. +type EnvoyContainer struct { + + // Initial envoy configuration. + // + // +kubebuilder:validation:Optional + Bootstrap *EnvoyBootstrap `json:"bootstrap,omitempty"` + + // The envoy container image. See + // https://kubernetes.io/docs/concepts/containers/images + // for details. + // + // Default values, which may be overridden individually: + // + // registry: quay.io/solo-io + // repository: gloo-envoy-wrapper (OSS) / gloo-ee-envoy-wrapper (EE) + // tag: (OSS) / (EE) + // pullPolicy: IfNotPresent + // + // +kubebuilder:validation:Optional + Image *Image `json:"image,omitempty"` + + // The security context for this container. See + // https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.26/#securitycontext-v1-core + // for details. + // + // +kubebuilder:validation:Optional + SecurityContext *corev1.SecurityContext `json:"securityContext,omitempty"` + + // The compute resources required by this container. See + // https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + // for details. + // + // +kubebuilder:validation:Optional + Resources *corev1.ResourceRequirements `json:"resources,omitempty"` +} + +func (in *EnvoyContainer) GetBootstrap() *EnvoyBootstrap { + if in == nil { + return nil + } + return in.Bootstrap +} + +func (in *EnvoyContainer) GetImage() *Image { + if in == nil { + return nil + } + return in.Image +} + +func (in *EnvoyContainer) GetSecurityContext() *corev1.SecurityContext { + if in == nil { + return nil + } + return in.SecurityContext +} + +func (in *EnvoyContainer) GetResources() *corev1.ResourceRequirements { + if in == nil { + return nil + } + return in.Resources +} + +// Configuration for the Envoy proxy instance that is provisioned from a +// Kubernetes Gateway. +type EnvoyBootstrap struct { + // Envoy log level. Options include "trace", "debug", "info", "warn", "error", + // "critical" and "off". Defaults to "info". See + // https://www.envoyproxy.io/docs/envoy/latest/start/quick-start/run-envoy#debugging-envoy + // for more information. + // + // +kubebuilder:validation:Optional + LogLevel *string `json:"logLevel,omitempty"` + + // Envoy log levels for specific components. The keys are component names and + // the values are one of "trace", "debug", "info", "warn", "error", + // "critical", or "off", e.g. + // + // ```yaml + // componentLogLevels: + // upstream: debug + // connection: trace + // ``` + // + // These will be converted to the `--component-log-level` Envoy argument + // value. See + // https://www.envoyproxy.io/docs/envoy/latest/start/quick-start/run-envoy#debugging-envoy + // for more information. + // + // Note: the keys and values cannot be empty, but they are not otherwise validated. + // + // +kubebuilder:validation:Optional + ComponentLogLevels map[string]string `json:"componentLogLevels,omitempty"` +} + +func (in *EnvoyBootstrap) GetLogLevel() *string { + if in == nil { + return nil + } + return in.LogLevel +} + +func (in *EnvoyBootstrap) GetComponentLogLevels() map[string]string { + if in == nil { + return nil + } + return in.ComponentLogLevels +} + +// Configuration for the container running Gloo SDS. +type SdsContainer struct { + // The SDS container image. See + // https://kubernetes.io/docs/concepts/containers/images + // for details. + // + // +kubebuilder:validation:Optional + Image *Image `json:"image,omitempty"` + + // The security context for this container. See + // https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.26/#securitycontext-v1-core + // for details. + // + // +kubebuilder:validation:Optional + SecurityContext *corev1.SecurityContext `json:"securityContext,omitempty"` + + // The compute resources required by this container. See + // https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + // for details. + // + // +kubebuilder:validation:Optional + Resources *corev1.ResourceRequirements `json:"resources,omitempty"` + + // Initial SDS container configuration. + // + // +kubebuilder:validation:Optional + Bootstrap *SdsBootstrap `json:"bootstrap,omitempty"` +} + +func (in *SdsContainer) GetImage() *Image { + if in == nil { + return nil + } + return in.Image +} + +func (in *SdsContainer) GetSecurityContext() *corev1.SecurityContext { + if in == nil { + return nil + } + return in.SecurityContext +} + +func (in *SdsContainer) GetResources() *corev1.ResourceRequirements { + if in == nil { + return nil + } + return in.Resources +} + +func (in *SdsContainer) GetBootstrap() *SdsBootstrap { + if in == nil { + return nil + } + return in.Bootstrap +} + +// Configuration for the SDS instance that is provisioned from a Kubernetes Gateway. +type SdsBootstrap struct { + // Log level for SDS. Options include "info", "debug", "warn", "error", "panic" and "fatal". + // Default level is "info". + // + // +kubebuilder:validation:Optional + LogLevel *string `json:"logLevel,omitempty"` +} + +func (in *SdsBootstrap) GetLogLevel() *string { + if in == nil { + return nil + } + return in.LogLevel +} + +// Configuration for the Istio integration settings used by a Gloo Gateway's data plane (Envoy proxy instance) +type IstioIntegration struct { + // Configuration for the container running istio-proxy. + // Note that if Istio integration is not enabled, the istio container will not be injected + // into the gateway proxy deployment. + // + // +kubebuilder:validation:Optional + IstioProxyContainer *IstioContainer `json:"istioProxyContainer,omitempty"` + + // Override the default Istio sidecar in gateway-proxy with a custom container. + // + // +kubebuilder:validation:Optional + CustomSidecars []*corev1.Container `json:"customSidecars,omitempty"` +} + +func (in *IstioIntegration) GetIstioProxyContainer() *IstioContainer { + if in == nil { + return nil + } + return in.IstioProxyContainer +} + +func (in *IstioIntegration) GetCustomSidecars() []*corev1.Container { + if in == nil { + return nil + } + return in.CustomSidecars +} + +// Configuration for the container running the istio-proxy. +type IstioContainer struct { + // The envoy container image. See + // https://kubernetes.io/docs/concepts/containers/images + // for details. + // + // +kubebuilder:validation:Optional + Image *Image `json:"image,omitempty"` + + // The security context for this container. See + // https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.26/#securitycontext-v1-core + // for details. + // + // +kubebuilder:validation:Optional + SecurityContext *corev1.SecurityContext `json:"securityContext,omitempty"` + + // The compute resources required by this container. See + // https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + // for details. + // + // +kubebuilder:validation:Optional + Resources *corev1.ResourceRequirements `json:"resources,omitempty"` + + // Log level for istio-proxy. Options include "info", "debug", "warning", and "error". + // Default level is info Default is "warning". + // + // +kubebuilder:validation:Optional + LogLevel *string `json:"logLevel,omitempty"` + + // The address of the istio discovery service. Defaults to "istiod.istio-system.svc:15012". + // + // +kubebuilder:validation:Optional + IstioDiscoveryAddress *string `json:"istioDiscoveryAddress,omitempty"` + + // The mesh id of the istio mesh. Defaults to "cluster.local". + // + // +kubebuilder:validation:Optional + IstioMetaMeshId *string `json:"istioMetaMeshId,omitempty"` + + // The cluster id of the istio cluster. Defaults to "Kubernetes". + // + // +kubebuilder:validation:Optional + IstioMetaClusterId *string `json:"istioMetaClusterId,omitempty"` +} + +func (in *IstioContainer) GetImage() *Image { + if in == nil { + return nil + } + return in.Image +} + +func (in *IstioContainer) GetSecurityContext() *corev1.SecurityContext { + if in == nil { + return nil + } + return in.SecurityContext +} + +func (in *IstioContainer) GetResources() *corev1.ResourceRequirements { + if in == nil { + return nil + } + return in.Resources +} + +func (in *IstioContainer) GetLogLevel() *string { + if in == nil { + return nil + } + return in.LogLevel +} + +func (in *IstioContainer) GetIstioDiscoveryAddress() *string { + if in == nil { + return nil + } + return in.IstioDiscoveryAddress +} + +func (in *IstioContainer) GetIstioMetaMeshId() *string { + if in == nil { + return nil + } + return in.IstioMetaMeshId +} + +func (in *IstioContainer) GetIstioMetaClusterId() *string { + if in == nil { + return nil + } + return in.IstioMetaClusterId +} + +// Configuration for the stats server. +type StatsConfig struct { + // Whether to expose metrics annotations and ports for scraping metrics. + // + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled,omitempty"` + + // The Envoy stats endpoint to which the metrics are written + // + // +kubebuilder:validation:Optional + RoutePrefixRewrite *string `json:"routePrefixRewrite,omitempty"` + + // Enables an additional route to the stats cluster defaulting to /stats + // + // +kubebuilder:validation:Optional + EnableStatsRoute *bool `json:"enableStatsRoute,omitempty"` + + // The Envoy stats endpoint with general metrics for the additional stats route + // + // +kubebuilder:validation:Optional + StatsRoutePrefixRewrite *string `json:"statsRoutePrefixRewrite,omitempty"` +} + +func (in *StatsConfig) GetEnabled() *bool { + if in == nil { + return nil + } + return in.Enabled +} + +func (in *StatsConfig) GetRoutePrefixRewrite() *string { + if in == nil { + return nil + } + return in.RoutePrefixRewrite +} + +func (in *StatsConfig) GetEnableStatsRoute() *bool { + if in == nil { + return nil + } + return in.EnableStatsRoute +} + +func (in *StatsConfig) GetStatsRoutePrefixRewrite() *string { + if in == nil { + return nil + } + return in.StatsRoutePrefixRewrite +} + +// Configuration for the AI extension. +type AiExtension struct { + // Whether to enable the extension. + // + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled,omitempty"` + + // The extension's container image. See + // https://kubernetes.io/docs/concepts/containers/images + // for details. + // + // +kubebuilder:validation:Optional + Image *Image `json:"image,omitempty"` + + // The security context for this container. See + // https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.26/#securitycontext-v1-core + // for details. + // + // +kubebuilder:validation:Optional + SecurityContext *corev1.SecurityContext `json:"securityContext,omitempty"` + + // The compute resources required by this container. See + // https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + // for details. + // + // +kubebuilder:validation:Optional + Resources *corev1.ResourceRequirements `json:"resources,omitempty"` + + // The extension's container environment variables. + // + // +kubebuilder:validation:Optional + Env []*corev1.EnvVar `json:"env,omitempty"` + + // The extensions's container ports. + // + // +kubebuilder:validation:Optional + Ports []*corev1.ContainerPort `json:"ports,omitempty"` + + // Additional stats config for AI Extension. + // This config can be useful for adding custom labels to the request metrics. + // +optional + // + // Example: + // ```yaml + // stats: + // customLabels: + // - name: "subject" + // metadataNamespace: "envoy.filters.http.jwt_authn" + // metadataKey: "principal:sub" + // - name: "issuer" + // metadataNamespace: "envoy.filters.http.jwt_authn" + // metadataKey: "principal:iss" + // ``` + Stats *AiExtensionStats `json:"stats,omitempty"` + + // Tracing configuration for the AI Extension. + // +optional + // Example: + // ```yaml + // tracing: + // grpc: + // host: "otel-collector.otel-system.svc" + // port: 4317 + // insecure: true + // ``` + Tracing *AIExtensionTracing `json:"tracing,omitempty"` +} + +func (in *AiExtension) GetEnabled() *bool { + if in == nil { + return nil + } + return in.Enabled +} + +func (in *AiExtension) GetImage() *Image { + if in == nil { + return nil + } + return in.Image +} + +func (in *AiExtension) GetSecurityContext() *corev1.SecurityContext { + if in == nil { + return nil + } + return in.SecurityContext +} + +func (in *AiExtension) GetResources() *corev1.ResourceRequirements { + if in == nil { + return nil + } + return in.Resources +} + +func (in *AiExtension) GetEnv() []*corev1.EnvVar { + if in == nil { + return nil + } + return in.Env +} + +func (in *AiExtension) GetPorts() []*corev1.ContainerPort { + if in == nil { + return nil + } + return in.Ports +} + +func (in *AiExtension) GetStats() *AiExtensionStats { + if in == nil { + return nil + } + return in.Stats +} + +type AiExtensionStats struct { + // Set of custom labels to be added to the request metrics. + // These will be added on each request which goes through the AI Extension. + // +optional + CustomLabels []*CustomLabel `json:"customLabels,omitempty"` +} + +func (in *AiExtensionStats) GetCustomLabels() []*CustomLabel { + if in == nil { + return nil + } + return in.CustomLabels +} + +type CustomLabel struct { + // Name of the label to use in the prometheus metrics + // + // +kubebuilder:validation:MinLength=1 + Name string `json:"name"` + + // The dynamic metadata namespace to get the data from. If not specified, the default namespace will be + // the envoy JWT filter namespace. + // This can also be used in combination with early_transformations to insert custom data. + // +optional + // + // +kubebuilder:validation:Enum=envoy.filters.http.jwt_authn;io.solo.transformation + MetadataNamespace *string `json:"metadataNamespace,omitempty"` + + // The key to use to get the data from the metadata namespace. + // If using a JWT data please see the following envoy docs: https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/jwt_authn/v3/config.proto#envoy-v3-api-field-extensions-filters-http-jwt-authn-v3-jwtprovider-payload-in-metadata + // This key follows the same format as the envoy access logging for dynamic metadata. + // Examples can be found here: https://www.envoyproxy.io/docs/envoy/latest/configuration/observability/access_log/usage + // + // +kubebuilder:validation:MinLength=1 + MetdataKey string `json:"metadataKey"` + + // The key delimiter to use, by default this is set to `:`. + // This allows for keys with `.` in them to be used. + // For example, if you have keys in your path with `:` in them, (e.g. `key1:key2:value`) + // you can instead set this to `~` to be able to split those keys properly. + // +optional + KeyDelimiter *string `json:"keyDelimiter,omitempty"` +} + +func (in *CustomLabel) GetName() string { + if in == nil { + return "" + } + return in.Name +} + +func (in *CustomLabel) GetMetadataNamespace() *string { + if in == nil { + return nil + } + return in.MetadataNamespace +} + +func (in *CustomLabel) GetMetdataKey() string { + if in == nil { + return "" + } + return in.MetdataKey +} + +func (in *CustomLabel) GetKeyDelimiter() *string { + if in == nil { + return nil + } + return in.KeyDelimiter +} + +func (in *AiExtension) GetTracing() *AIExtensionTracing { + if in == nil { + return nil + } + return in.Tracing +} + +type AIExtensionTracing struct { + // gRPC Config for the OTLP collector. + // Set this to use gRPC streaming of traces to the OTLP collector. + // +optional + Grpc *AIExtensionTracingGrpc `json:"grpc,omitempty"` + + // Whether to use insecure connection to the OTLP endpoint. + // This will be false by defautl as HTTPS is recommended. + // +optional + Insecure bool `json:"insecure,omitempty"` +} + +func (in *AIExtensionTracing) GetGrpc() *AIExtensionTracingGrpc { + if in == nil { + return nil + } + return in.Grpc +} + +func (in *AIExtensionTracing) GetInsecure() bool { + if in == nil { + return false + } + return in.Insecure +} + +type AIExtensionTracingGrpc struct { + // The gRPC endpoint for the OTLP collector. + // +kubebuilder:validation:MinLength=1 + Host string `json:"host"` + + // The port for the OTLP collector. + // +kubebuilder:validation:Minimum=1 + Port uint32 `json:"port"` +} + +func (in *AIExtensionTracingGrpc) GetHost() string { + if in == nil { + return "" + } + return in.Host +} + +func (in *AIExtensionTracingGrpc) GetPort() uint32 { + if in == nil { + return 0 + } + return in.Port +} + +func init() { + SchemeBuilder.Register(&GatewayParameters{}, &GatewayParametersList{}) +} diff --git a/pkg/api/gateway.gloo.solo.io/v1alpha1/groupversion_info.go b/pkg/api/gateway.gloo.solo.io/v1alpha1/groupversion_info.go new file mode 100644 index 000000000..4f0b26033 --- /dev/null +++ b/pkg/api/gateway.gloo.solo.io/v1alpha1/groupversion_info.go @@ -0,0 +1,39 @@ +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +const ( + Group = "gateway.gloo.solo.io" + Version = "v1alpha1" + + // GatewayParametersKind is the kind for the GatewayParameters CRD. + GatewayParametersKind = "GatewayParameters" + // DirectResponseKind is the kind for the DirectResponse CRD. + DirectResponseKind = "DirectResponse" +) + +var ( + // GroupVersion is group version used to register these objects + GroupVersion = schema.GroupVersion{Group: Group, Version: Version} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} + + // AddToScheme adds the types in this group-version to the given scheme. + AddToScheme = SchemeBuilder.AddToScheme + + GatewayParametersGVK = schema.GroupVersionKind{ + Group: Group, + Version: Version, + Kind: GatewayParametersKind, + } + + DirectResponseGVK = schema.GroupVersionKind{ + Group: Group, + Version: Version, + Kind: DirectResponseKind, + } +) diff --git a/pkg/api/gateway.gloo.solo.io/v1alpha1/kube_types.go b/pkg/api/gateway.gloo.solo.io/v1alpha1/kube_types.go new file mode 100644 index 000000000..16e0d1719 --- /dev/null +++ b/pkg/api/gateway.gloo.solo.io/v1alpha1/kube_types.go @@ -0,0 +1,400 @@ +package v1alpha1 + +import ( + corev1 "k8s.io/api/core/v1" +) + +// A container image. See https://kubernetes.io/docs/concepts/containers/images +// for details. +type Image struct { + // The image registry. + // + // +kubebuilder:validation:Optional + Registry *string `json:"registry,omitempty"` + + // The image repository (name). + // + // +kubebuilder:validation:Optional + Repository *string `json:"repository,omitempty"` + + // The image tag. + // + // +kubebuilder:validation:Optional + Tag *string `json:"tag,omitempty"` + + // The hash digest of the image, e.g. `sha256:12345...` + // + // +kubebuilder:validation:Optional + Digest *string `json:"digest,omitempty"` + + // The image pull policy for the container. See + // https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy + // for details. + // + // +kubebuilder:validation:Optional + PullPolicy *corev1.PullPolicy `json:"pullPolicy,omitempty"` +} + +func (in *Image) GetRegistry() *string { + if in == nil { + return nil + } + return in.Registry +} + +func (in *Image) GetRepository() *string { + if in == nil { + return nil + } + return in.Repository +} + +func (in *Image) GetTag() *string { + if in == nil { + return nil + } + return in.Tag +} + +func (in *Image) GetDigest() *string { + if in == nil { + return nil + } + return in.Digest +} + +func (in *Image) GetPullPolicy() *corev1.PullPolicy { + if in == nil { + return nil + } + return in.PullPolicy +} + +// Configuration for a Kubernetes Service. +type Service struct { + // The Kubernetes Service type. + // + // +kubebuilder:validation:Optional + Type *corev1.ServiceType `json:"type,omitempty"` + + // The manually specified IP address of the service, if a randomly assigned + // IP is not desired. See + // https://kubernetes.io/docs/concepts/services-networking/service/#choosing-your-own-ip-address + // and + // https://kubernetes.io/docs/concepts/services-networking/service/#headless-services + // on the implications of setting `clusterIP`. + // + // +kubebuilder:validation:Optional + ClusterIP *string `json:"clusterIP,omitempty"` + + // Additional labels to add to the Service object metadata. + // + // +kubebuilder:validation:Optional + ExtraLabels map[string]string `json:"extraLabels,omitempty"` + + // Additional annotations to add to the Service object metadata. + // + // +kubebuilder:validation:Optional + ExtraAnnotations map[string]string `json:"extraAnnotations,omitempty"` + + // Additional configuration for the service ports. + // The actual port numbers are specified in the Gateway resource. + // + // +optional + // +kubebuilder:validation:MaxItems=8 + Ports []*Port `json:"ports"` + // External Traffic Policy on the Service object. + // + // +kubebuilder:validation:Optional + ExternalTrafficPolicy *corev1.ServiceExternalTrafficPolicy `json:"externalTrafficPolicy,omitempty"` +} + +func (in *Service) GetType() *corev1.ServiceType { + if in == nil { + return nil + } + return in.Type +} + +func (in *Service) GetClusterIP() *string { + if in == nil { + return nil + } + return in.ClusterIP +} + +func (in *Service) GetExtraLabels() map[string]string { + if in == nil { + return nil + } + return in.ExtraLabels +} + +func (in *Service) GetExtraAnnotations() map[string]string { + if in == nil { + return nil + } + return in.ExtraAnnotations +} + +func (in *Service) GetPorts() []*Port { + if in == nil { + return nil + } + return in.Ports +} + +func (in *Service) GetExternalTrafficPolicy() *corev1.ServiceExternalTrafficPolicy { + if in == nil { + return nil + } + return in.ExternalTrafficPolicy +} + +type Port struct { + // The port number to match on the Gateway + // + // +kubebuilder:validation:Required + Port uint16 `json:"port"` + + // The NodePort to be used for the service. If not specified, a random port + // will be assigned by the Kubernetes API server. + // + // +kubebuilder:validation:Optional + NodePort *uint16 `json:"nodePort,omitempty"` +} + +func (in *Port) GetPort() uint16 { + if in == nil { + return 0 + } + return in.Port +} + +func (in *Port) GetNodePort() *uint16 { + if in == nil { + return nil + } + return in.NodePort +} + +type ServiceAccount struct { + // Additional labels to add to the ServiceAccount object metadata. + // + // +kubebuilder:validation:Optional + ExtraLabels map[string]string `json:"extraLabels,omitempty"` + + // Additional annotations to add to the ServiceAccount object metadata. + // + // +kubebuilder:validation:Optional + ExtraAnnotations map[string]string `json:"extraAnnotations,omitempty"` +} + +func (in *ServiceAccount) GetExtraLabels() map[string]string { + if in == nil { + return nil + } + return in.ExtraLabels +} + +func (in *ServiceAccount) GetExtraAnnotations() map[string]string { + if in == nil { + return nil + } + return in.ExtraAnnotations +} + +// Configuration for a Kubernetes Pod template. +type Pod struct { + // Additional labels to add to the Pod object metadata. + // + // +kubebuilder:validation:Optional + ExtraLabels map[string]string `json:"extraLabels,omitempty"` + + // Additional annotations to add to the Pod object metadata. + // + // +kubebuilder:validation:Optional + ExtraAnnotations map[string]string `json:"extraAnnotations,omitempty"` + + // The pod security context. See + // https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.26/#podsecuritycontext-v1-core + // for details. + // + // +kubebuilder:validation:Optional + SecurityContext *corev1.PodSecurityContext `json:"securityContext,omitempty"` + + // An optional list of references to secrets in the same namespace to use for + // pulling any of the images used by this Pod spec. See + // https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod + // for details. + // + // +kubebuilder:validation:Optional + ImagePullSecrets []corev1.LocalObjectReference `json:"imagePullSecrets,omitempty"` + + // A selector which must be true for the pod to fit on a node. See + // https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ for + // details. + // + // +kubebuilder:validation:Optional + NodeSelector map[string]string `json:"nodeSelector,omitempty"` + + // If specified, the pod's scheduling constraints. See + // https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.26/#affinity-v1-core + // for details. + // + // +kubebuilder:validation:Optional + Affinity *corev1.Affinity `json:"affinity,omitempty"` + + // If specified, the pod's tolerations. See + // https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.26/#toleration-v1-core + // for details. + // + // +kubebuilder:validation:Optional + Tolerations []*corev1.Toleration `json:"tolerations,omitempty"` + + // If specified, the pod's graceful shutdown spec. + // + // +kubebuilder:validation:Optional + GracefulShutdown *GracefulShutdownSpec `json:"gracefulShutdown,omitempty"` + + // If specified, the pod's termination grace period in seconds. See + // https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.26/#pod-v1-core + // for details + // + // +kubebuilder:validation:Optional + TerminationGracePeriodSeconds *int `json:"terminationGracePeriodSeconds,omitempty"` + + // If specified, the pod's readiness probe. Periodic probe of container service readiness. + // Container will be removed from service endpoints if the probe fails. See + // https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.26/#probe-v1-core + // for details. + // + // +kubebuilder:validation:Optional + ReadinessProbe *corev1.Probe `json:"readinessProbe,omitempty"` + + // If specified, the pod's liveness probe. Periodic probe of container service readiness. + // Container will be restarted if the probe fails. See + // https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.26/#probe-v1-core + // for details. + // + // +kubebuilder:validation:Optional + LivenessProbe *corev1.Probe `json:"livenessProbe,omitempty"` + + // If specified, this sets pod's topology spread constrains. Controls how Pods are spread + // across your cluster among failure-domains such as regions, zones, nodes, and other user-defined topology domains. + // See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.26/#topologyspreadconstraint-v1-core + // for further details. + // + // +kubebuilder:validation:Optional + TopologySpreadConstraints []corev1.TopologySpreadConstraint `json:"topologySpreadConstraints,omitempty"` +} + +func (in *Pod) GetExtraLabels() map[string]string { + if in == nil { + return nil + } + return in.ExtraLabels +} + +func (in *Pod) GetExtraAnnotations() map[string]string { + if in == nil { + return nil + } + return in.ExtraAnnotations +} + +func (in *Pod) GetSecurityContext() *corev1.PodSecurityContext { + if in == nil { + return nil + } + return in.SecurityContext +} + +func (in *Pod) GetImagePullSecrets() []corev1.LocalObjectReference { + if in == nil { + return nil + } + return in.ImagePullSecrets +} + +func (in *Pod) GetNodeSelector() map[string]string { + if in == nil { + return nil + } + return in.NodeSelector +} + +func (in *Pod) GetAffinity() *corev1.Affinity { + if in == nil { + return nil + } + return in.Affinity +} + +func (in *Pod) GetTolerations() []*corev1.Toleration { + if in == nil { + return nil + } + return in.Tolerations +} + +func (in *Pod) GetReadinessProbe() *corev1.Probe { + if in == nil { + return nil + } + return in.ReadinessProbe +} + +func (in *Pod) GetGracefulShutdown() *GracefulShutdownSpec { + if in == nil { + return nil + } + return in.GracefulShutdown +} + +func (in *Pod) GetTerminationGracePeriodSeconds() *int { + if in == nil { + return nil + } + return in.TerminationGracePeriodSeconds +} + +func (in *Pod) GetLivenessProbe() *corev1.Probe { + if in == nil { + return nil + } + return in.LivenessProbe +} + +func (in *Pod) GetTopologySpreadConstraints() []corev1.TopologySpreadConstraint { + if in == nil { + return nil + } + return in.TopologySpreadConstraints +} + +type GracefulShutdownSpec struct { + // Enable grace period before shutdown to finish current requests while Envoy health checks fail to e.g. notify external load balancers. *NOTE:* This will not have any effect if you have not defined health checks via the health check filter + // + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled,omitempty"` + + // Time (in seconds) for the preStop hook to wait before allowing Envoy to terminate + // + // +kubebuilder:validation:Optional + SleepTimeSeconds *int `json:"sleepTimeSeconds,omitempty"` +} + +func (in *GracefulShutdownSpec) GetEnabled() *bool { + if in == nil { + return nil + } + return in.Enabled +} + +func (in *GracefulShutdownSpec) GetSleepTimeSeconds() *int { + if in == nil { + return nil + } + return in.SleepTimeSeconds +} diff --git a/pkg/api/gateway.gloo.solo.io/v1alpha1/type_helpers.go b/pkg/api/gateway.gloo.solo.io/v1alpha1/type_helpers.go new file mode 100644 index 000000000..e128f932b --- /dev/null +++ b/pkg/api/gateway.gloo.solo.io/v1alpha1/type_helpers.go @@ -0,0 +1,10 @@ +// Code generated by skv2. DO NOT EDIT. + +// Definitions for the Kubernetes types +package v1alpha1 + +// GatewayParametersSlice represents a slice of *GatewayParameters +type GatewayParametersSlice []*GatewayParameters + +// DirectResponseSlice represents a slice of *DirectResponse +type DirectResponseSlice []*DirectResponse diff --git a/pkg/api/gateway.gloo.solo.io/v1alpha1/zz_generated.deepcopy.go b/pkg/api/gateway.gloo.solo.io/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 000000000..ad3ea0813 --- /dev/null +++ b/pkg/api/gateway.gloo.solo.io/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,942 @@ +//go:build !ignore_autogenerated + +// Code generated by controller-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + v1 "k8s.io/api/core/v1" + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AIExtensionTracing) DeepCopyInto(out *AIExtensionTracing) { + *out = *in + if in.Grpc != nil { + in, out := &in.Grpc, &out.Grpc + *out = new(AIExtensionTracingGrpc) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AIExtensionTracing. +func (in *AIExtensionTracing) DeepCopy() *AIExtensionTracing { + if in == nil { + return nil + } + out := new(AIExtensionTracing) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AIExtensionTracingGrpc) DeepCopyInto(out *AIExtensionTracingGrpc) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AIExtensionTracingGrpc. +func (in *AIExtensionTracingGrpc) DeepCopy() *AIExtensionTracingGrpc { + if in == nil { + return nil + } + out := new(AIExtensionTracingGrpc) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AiExtension) DeepCopyInto(out *AiExtension) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Image != nil { + in, out := &in.Image, &out.Image + *out = new(Image) + (*in).DeepCopyInto(*out) + } + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + *out = new(v1.SecurityContext) + (*in).DeepCopyInto(*out) + } + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *out = new(v1.ResourceRequirements) + (*in).DeepCopyInto(*out) + } + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]*v1.EnvVar, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(v1.EnvVar) + (*in).DeepCopyInto(*out) + } + } + } + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]*v1.ContainerPort, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(v1.ContainerPort) + **out = **in + } + } + } + if in.Stats != nil { + in, out := &in.Stats, &out.Stats + *out = new(AiExtensionStats) + (*in).DeepCopyInto(*out) + } + if in.Tracing != nil { + in, out := &in.Tracing, &out.Tracing + *out = new(AIExtensionTracing) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AiExtension. +func (in *AiExtension) DeepCopy() *AiExtension { + if in == nil { + return nil + } + out := new(AiExtension) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AiExtensionStats) DeepCopyInto(out *AiExtensionStats) { + *out = *in + if in.CustomLabels != nil { + in, out := &in.CustomLabels, &out.CustomLabels + *out = make([]*CustomLabel, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(CustomLabel) + (*in).DeepCopyInto(*out) + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AiExtensionStats. +func (in *AiExtensionStats) DeepCopy() *AiExtensionStats { + if in == nil { + return nil + } + out := new(AiExtensionStats) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomLabel) DeepCopyInto(out *CustomLabel) { + *out = *in + if in.MetadataNamespace != nil { + in, out := &in.MetadataNamespace, &out.MetadataNamespace + *out = new(string) + **out = **in + } + if in.KeyDelimiter != nil { + in, out := &in.KeyDelimiter, &out.KeyDelimiter + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomLabel. +func (in *CustomLabel) DeepCopy() *CustomLabel { + if in == nil { + return nil + } + out := new(CustomLabel) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DirectResponse) DeepCopyInto(out *DirectResponse) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + out.Spec = in.Spec + out.Status = in.Status +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DirectResponse. +func (in *DirectResponse) DeepCopy() *DirectResponse { + if in == nil { + return nil + } + out := new(DirectResponse) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DirectResponse) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DirectResponseList) DeepCopyInto(out *DirectResponseList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DirectResponse, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DirectResponseList. +func (in *DirectResponseList) DeepCopy() *DirectResponseList { + if in == nil { + return nil + } + out := new(DirectResponseList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DirectResponseList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DirectResponseSpec) DeepCopyInto(out *DirectResponseSpec) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DirectResponseSpec. +func (in *DirectResponseSpec) DeepCopy() *DirectResponseSpec { + if in == nil { + return nil + } + out := new(DirectResponseSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DirectResponseStatus) DeepCopyInto(out *DirectResponseStatus) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DirectResponseStatus. +func (in *DirectResponseStatus) DeepCopy() *DirectResponseStatus { + if in == nil { + return nil + } + out := new(DirectResponseStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EnvoyBootstrap) DeepCopyInto(out *EnvoyBootstrap) { + *out = *in + if in.LogLevel != nil { + in, out := &in.LogLevel, &out.LogLevel + *out = new(string) + **out = **in + } + if in.ComponentLogLevels != nil { + in, out := &in.ComponentLogLevels, &out.ComponentLogLevels + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvoyBootstrap. +func (in *EnvoyBootstrap) DeepCopy() *EnvoyBootstrap { + if in == nil { + return nil + } + out := new(EnvoyBootstrap) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EnvoyContainer) DeepCopyInto(out *EnvoyContainer) { + *out = *in + if in.Bootstrap != nil { + in, out := &in.Bootstrap, &out.Bootstrap + *out = new(EnvoyBootstrap) + (*in).DeepCopyInto(*out) + } + if in.Image != nil { + in, out := &in.Image, &out.Image + *out = new(Image) + (*in).DeepCopyInto(*out) + } + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + *out = new(v1.SecurityContext) + (*in).DeepCopyInto(*out) + } + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *out = new(v1.ResourceRequirements) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvoyContainer. +func (in *EnvoyContainer) DeepCopy() *EnvoyContainer { + if in == nil { + return nil + } + out := new(EnvoyContainer) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GatewayParameters) DeepCopyInto(out *GatewayParameters) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + out.Status = in.Status +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayParameters. +func (in *GatewayParameters) DeepCopy() *GatewayParameters { + if in == nil { + return nil + } + out := new(GatewayParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *GatewayParameters) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GatewayParametersList) DeepCopyInto(out *GatewayParametersList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]GatewayParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayParametersList. +func (in *GatewayParametersList) DeepCopy() *GatewayParametersList { + if in == nil { + return nil + } + out := new(GatewayParametersList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *GatewayParametersList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GatewayParametersSpec) DeepCopyInto(out *GatewayParametersSpec) { + *out = *in + if in.Kube != nil { + in, out := &in.Kube, &out.Kube + *out = new(KubernetesProxyConfig) + (*in).DeepCopyInto(*out) + } + if in.SelfManaged != nil { + in, out := &in.SelfManaged, &out.SelfManaged + *out = new(SelfManagedGateway) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayParametersSpec. +func (in *GatewayParametersSpec) DeepCopy() *GatewayParametersSpec { + if in == nil { + return nil + } + out := new(GatewayParametersSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GatewayParametersStatus) DeepCopyInto(out *GatewayParametersStatus) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayParametersStatus. +func (in *GatewayParametersStatus) DeepCopy() *GatewayParametersStatus { + if in == nil { + return nil + } + out := new(GatewayParametersStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GracefulShutdownSpec) DeepCopyInto(out *GracefulShutdownSpec) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.SleepTimeSeconds != nil { + in, out := &in.SleepTimeSeconds, &out.SleepTimeSeconds + *out = new(int) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GracefulShutdownSpec. +func (in *GracefulShutdownSpec) DeepCopy() *GracefulShutdownSpec { + if in == nil { + return nil + } + out := new(GracefulShutdownSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Image) DeepCopyInto(out *Image) { + *out = *in + if in.Registry != nil { + in, out := &in.Registry, &out.Registry + *out = new(string) + **out = **in + } + if in.Repository != nil { + in, out := &in.Repository, &out.Repository + *out = new(string) + **out = **in + } + if in.Tag != nil { + in, out := &in.Tag, &out.Tag + *out = new(string) + **out = **in + } + if in.Digest != nil { + in, out := &in.Digest, &out.Digest + *out = new(string) + **out = **in + } + if in.PullPolicy != nil { + in, out := &in.PullPolicy, &out.PullPolicy + *out = new(v1.PullPolicy) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Image. +func (in *Image) DeepCopy() *Image { + if in == nil { + return nil + } + out := new(Image) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IstioContainer) DeepCopyInto(out *IstioContainer) { + *out = *in + if in.Image != nil { + in, out := &in.Image, &out.Image + *out = new(Image) + (*in).DeepCopyInto(*out) + } + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + *out = new(v1.SecurityContext) + (*in).DeepCopyInto(*out) + } + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *out = new(v1.ResourceRequirements) + (*in).DeepCopyInto(*out) + } + if in.LogLevel != nil { + in, out := &in.LogLevel, &out.LogLevel + *out = new(string) + **out = **in + } + if in.IstioDiscoveryAddress != nil { + in, out := &in.IstioDiscoveryAddress, &out.IstioDiscoveryAddress + *out = new(string) + **out = **in + } + if in.IstioMetaMeshId != nil { + in, out := &in.IstioMetaMeshId, &out.IstioMetaMeshId + *out = new(string) + **out = **in + } + if in.IstioMetaClusterId != nil { + in, out := &in.IstioMetaClusterId, &out.IstioMetaClusterId + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IstioContainer. +func (in *IstioContainer) DeepCopy() *IstioContainer { + if in == nil { + return nil + } + out := new(IstioContainer) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IstioIntegration) DeepCopyInto(out *IstioIntegration) { + *out = *in + if in.IstioProxyContainer != nil { + in, out := &in.IstioProxyContainer, &out.IstioProxyContainer + *out = new(IstioContainer) + (*in).DeepCopyInto(*out) + } + if in.CustomSidecars != nil { + in, out := &in.CustomSidecars, &out.CustomSidecars + *out = make([]*v1.Container, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(v1.Container) + (*in).DeepCopyInto(*out) + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IstioIntegration. +func (in *IstioIntegration) DeepCopy() *IstioIntegration { + if in == nil { + return nil + } + out := new(IstioIntegration) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KubernetesProxyConfig) DeepCopyInto(out *KubernetesProxyConfig) { + *out = *in + if in.Deployment != nil { + in, out := &in.Deployment, &out.Deployment + *out = new(ProxyDeployment) + (*in).DeepCopyInto(*out) + } + if in.EnvoyContainer != nil { + in, out := &in.EnvoyContainer, &out.EnvoyContainer + *out = new(EnvoyContainer) + (*in).DeepCopyInto(*out) + } + if in.SdsContainer != nil { + in, out := &in.SdsContainer, &out.SdsContainer + *out = new(SdsContainer) + (*in).DeepCopyInto(*out) + } + if in.PodTemplate != nil { + in, out := &in.PodTemplate, &out.PodTemplate + *out = new(Pod) + (*in).DeepCopyInto(*out) + } + if in.Service != nil { + in, out := &in.Service, &out.Service + *out = new(Service) + (*in).DeepCopyInto(*out) + } + if in.ServiceAccount != nil { + in, out := &in.ServiceAccount, &out.ServiceAccount + *out = new(ServiceAccount) + (*in).DeepCopyInto(*out) + } + if in.Istio != nil { + in, out := &in.Istio, &out.Istio + *out = new(IstioIntegration) + (*in).DeepCopyInto(*out) + } + if in.Stats != nil { + in, out := &in.Stats, &out.Stats + *out = new(StatsConfig) + (*in).DeepCopyInto(*out) + } + if in.AiExtension != nil { + in, out := &in.AiExtension, &out.AiExtension + *out = new(AiExtension) + (*in).DeepCopyInto(*out) + } + if in.FloatingUserId != nil { + in, out := &in.FloatingUserId, &out.FloatingUserId + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubernetesProxyConfig. +func (in *KubernetesProxyConfig) DeepCopy() *KubernetesProxyConfig { + if in == nil { + return nil + } + out := new(KubernetesProxyConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Pod) DeepCopyInto(out *Pod) { + *out = *in + if in.ExtraLabels != nil { + in, out := &in.ExtraLabels, &out.ExtraLabels + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ExtraAnnotations != nil { + in, out := &in.ExtraAnnotations, &out.ExtraAnnotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + *out = new(v1.PodSecurityContext) + (*in).DeepCopyInto(*out) + } + if in.ImagePullSecrets != nil { + in, out := &in.ImagePullSecrets, &out.ImagePullSecrets + *out = make([]v1.LocalObjectReference, len(*in)) + copy(*out, *in) + } + if in.NodeSelector != nil { + in, out := &in.NodeSelector, &out.NodeSelector + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Affinity != nil { + in, out := &in.Affinity, &out.Affinity + *out = new(v1.Affinity) + (*in).DeepCopyInto(*out) + } + if in.Tolerations != nil { + in, out := &in.Tolerations, &out.Tolerations + *out = make([]*v1.Toleration, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(v1.Toleration) + (*in).DeepCopyInto(*out) + } + } + } + if in.GracefulShutdown != nil { + in, out := &in.GracefulShutdown, &out.GracefulShutdown + *out = new(GracefulShutdownSpec) + (*in).DeepCopyInto(*out) + } + if in.TerminationGracePeriodSeconds != nil { + in, out := &in.TerminationGracePeriodSeconds, &out.TerminationGracePeriodSeconds + *out = new(int) + **out = **in + } + if in.ReadinessProbe != nil { + in, out := &in.ReadinessProbe, &out.ReadinessProbe + *out = new(v1.Probe) + (*in).DeepCopyInto(*out) + } + if in.LivenessProbe != nil { + in, out := &in.LivenessProbe, &out.LivenessProbe + *out = new(v1.Probe) + (*in).DeepCopyInto(*out) + } + if in.TopologySpreadConstraints != nil { + in, out := &in.TopologySpreadConstraints, &out.TopologySpreadConstraints + *out = make([]v1.TopologySpreadConstraint, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Pod. +func (in *Pod) DeepCopy() *Pod { + if in == nil { + return nil + } + out := new(Pod) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Port) DeepCopyInto(out *Port) { + *out = *in + if in.NodePort != nil { + in, out := &in.NodePort, &out.NodePort + *out = new(uint16) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Port. +func (in *Port) DeepCopy() *Port { + if in == nil { + return nil + } + out := new(Port) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProxyDeployment) DeepCopyInto(out *ProxyDeployment) { + *out = *in + if in.Replicas != nil { + in, out := &in.Replicas, &out.Replicas + *out = new(uint32) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProxyDeployment. +func (in *ProxyDeployment) DeepCopy() *ProxyDeployment { + if in == nil { + return nil + } + out := new(ProxyDeployment) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SdsBootstrap) DeepCopyInto(out *SdsBootstrap) { + *out = *in + if in.LogLevel != nil { + in, out := &in.LogLevel, &out.LogLevel + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SdsBootstrap. +func (in *SdsBootstrap) DeepCopy() *SdsBootstrap { + if in == nil { + return nil + } + out := new(SdsBootstrap) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SdsContainer) DeepCopyInto(out *SdsContainer) { + *out = *in + if in.Image != nil { + in, out := &in.Image, &out.Image + *out = new(Image) + (*in).DeepCopyInto(*out) + } + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + *out = new(v1.SecurityContext) + (*in).DeepCopyInto(*out) + } + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *out = new(v1.ResourceRequirements) + (*in).DeepCopyInto(*out) + } + if in.Bootstrap != nil { + in, out := &in.Bootstrap, &out.Bootstrap + *out = new(SdsBootstrap) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SdsContainer. +func (in *SdsContainer) DeepCopy() *SdsContainer { + if in == nil { + return nil + } + out := new(SdsContainer) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SelfManagedGateway) DeepCopyInto(out *SelfManagedGateway) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SelfManagedGateway. +func (in *SelfManagedGateway) DeepCopy() *SelfManagedGateway { + if in == nil { + return nil + } + out := new(SelfManagedGateway) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Service) DeepCopyInto(out *Service) { + *out = *in + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(v1.ServiceType) + **out = **in + } + if in.ClusterIP != nil { + in, out := &in.ClusterIP, &out.ClusterIP + *out = new(string) + **out = **in + } + if in.ExtraLabels != nil { + in, out := &in.ExtraLabels, &out.ExtraLabels + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ExtraAnnotations != nil { + in, out := &in.ExtraAnnotations, &out.ExtraAnnotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]*Port, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(Port) + (*in).DeepCopyInto(*out) + } + } + } + if in.ExternalTrafficPolicy != nil { + in, out := &in.ExternalTrafficPolicy, &out.ExternalTrafficPolicy + *out = new(v1.ServiceExternalTrafficPolicy) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Service. +func (in *Service) DeepCopy() *Service { + if in == nil { + return nil + } + out := new(Service) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccount) DeepCopyInto(out *ServiceAccount) { + *out = *in + if in.ExtraLabels != nil { + in, out := &in.ExtraLabels, &out.ExtraLabels + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ExtraAnnotations != nil { + in, out := &in.ExtraAnnotations, &out.ExtraAnnotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccount. +func (in *ServiceAccount) DeepCopy() *ServiceAccount { + if in == nil { + return nil + } + out := new(ServiceAccount) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StatsConfig) DeepCopyInto(out *StatsConfig) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.RoutePrefixRewrite != nil { + in, out := &in.RoutePrefixRewrite, &out.RoutePrefixRewrite + *out = new(string) + **out = **in + } + if in.EnableStatsRoute != nil { + in, out := &in.EnableStatsRoute, &out.EnableStatsRoute + *out = new(bool) + **out = **in + } + if in.StatsRoutePrefixRewrite != nil { + in, out := &in.StatsRoutePrefixRewrite, &out.StatsRoutePrefixRewrite + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatsConfig. +func (in *StatsConfig) DeepCopy() *StatsConfig { + if in == nil { + return nil + } + out := new(StatsConfig) + in.DeepCopyInto(out) + return out +} diff --git a/pkg/api/gateway.solo.io/v1/clients.go b/pkg/api/gateway.solo.io/v1/clients.go index 033bac9eb..cd93f9160 100644 --- a/pkg/api/gateway.solo.io/v1/clients.go +++ b/pkg/api/gateway.solo.io/v1/clients.go @@ -42,9 +42,21 @@ type Clientset interface { // clienset for the gateway.solo.io/v1/v1 APIs Gateways() GatewayClient // clienset for the gateway.solo.io/v1/v1 APIs + HttpListenerOptions() HttpListenerOptionClient + // clienset for the gateway.solo.io/v1/v1 APIs + ListenerOptions() ListenerOptionClient + // clienset for the gateway.solo.io/v1/v1 APIs + MatchableHttpGateways() MatchableHttpGatewayClient + // clienset for the gateway.solo.io/v1/v1 APIs + MatchableTcpGateways() MatchableTcpGatewayClient + // clienset for the gateway.solo.io/v1/v1 APIs + RouteOptions() RouteOptionClient + // clienset for the gateway.solo.io/v1/v1 APIs RouteTables() RouteTableClient // clienset for the gateway.solo.io/v1/v1 APIs VirtualServices() VirtualServiceClient + // clienset for the gateway.solo.io/v1/v1 APIs + VirtualHostOptions() VirtualHostOptionClient } type clientSet struct { @@ -53,7 +65,7 @@ type clientSet struct { func NewClientsetFromConfig(cfg *rest.Config) (Clientset, error) { scheme := scheme.Scheme - if err := AddToScheme(scheme); err != nil { + if err := SchemeBuilder.AddToScheme(scheme); err != nil { return nil, err } client, err := client.New(cfg, client.Options{ @@ -74,6 +86,31 @@ func (c *clientSet) Gateways() GatewayClient { return NewGatewayClient(c.client) } +// clienset for the gateway.solo.io/v1/v1 APIs +func (c *clientSet) HttpListenerOptions() HttpListenerOptionClient { + return NewHttpListenerOptionClient(c.client) +} + +// clienset for the gateway.solo.io/v1/v1 APIs +func (c *clientSet) ListenerOptions() ListenerOptionClient { + return NewListenerOptionClient(c.client) +} + +// clienset for the gateway.solo.io/v1/v1 APIs +func (c *clientSet) MatchableHttpGateways() MatchableHttpGatewayClient { + return NewMatchableHttpGatewayClient(c.client) +} + +// clienset for the gateway.solo.io/v1/v1 APIs +func (c *clientSet) MatchableTcpGateways() MatchableTcpGatewayClient { + return NewMatchableTcpGatewayClient(c.client) +} + +// clienset for the gateway.solo.io/v1/v1 APIs +func (c *clientSet) RouteOptions() RouteOptionClient { + return NewRouteOptionClient(c.client) +} + // clienset for the gateway.solo.io/v1/v1 APIs func (c *clientSet) RouteTables() RouteTableClient { return NewRouteTableClient(c.client) @@ -84,6 +121,11 @@ func (c *clientSet) VirtualServices() VirtualServiceClient { return NewVirtualServiceClient(c.client) } +// clienset for the gateway.solo.io/v1/v1 APIs +func (c *clientSet) VirtualHostOptions() VirtualHostOptionClient { + return NewVirtualHostOptionClient(c.client) +} + // Reader knows how to read and list Gateways. type GatewayReader interface { // Get retrieves a Gateway for the given object key @@ -122,10 +164,10 @@ type GatewayWriter interface { type GatewayStatusWriter interface { // Update updates the fields corresponding to the status subresource for the // given Gateway object. - UpdateGatewayStatus(ctx context.Context, obj *Gateway, opts ...client.UpdateOption) error + UpdateGatewayStatus(ctx context.Context, obj *Gateway, opts ...client.SubResourceUpdateOption) error // Patch patches the given Gateway object's subresource. - PatchGatewayStatus(ctx context.Context, obj *Gateway, patch client.Patch, opts ...client.PatchOption) error + PatchGatewayStatus(ctx context.Context, obj *Gateway, patch client.Patch, opts ...client.SubResourcePatchOption) error } // Client knows how to perform CRUD operations on Gateways. @@ -196,11 +238,11 @@ func (c *gatewayClient) UpsertGateway(ctx context.Context, obj *Gateway, transit return err } -func (c *gatewayClient) UpdateGatewayStatus(ctx context.Context, obj *Gateway, opts ...client.UpdateOption) error { +func (c *gatewayClient) UpdateGatewayStatus(ctx context.Context, obj *Gateway, opts ...client.SubResourceUpdateOption) error { return c.client.Status().Update(ctx, obj, opts...) } -func (c *gatewayClient) PatchGatewayStatus(ctx context.Context, obj *Gateway, patch client.Patch, opts ...client.PatchOption) error { +func (c *gatewayClient) PatchGatewayStatus(ctx context.Context, obj *Gateway, patch client.Patch, opts ...client.SubResourcePatchOption) error { return c.client.Status().Patch(ctx, obj, patch, opts...) } @@ -226,6 +268,716 @@ func (m *multiclusterGatewayClient) Cluster(cluster string) (GatewayClient, erro return NewGatewayClient(client), nil } +// Reader knows how to read and list HttpListenerOptions. +type HttpListenerOptionReader interface { + // Get retrieves a HttpListenerOption for the given object key + GetHttpListenerOption(ctx context.Context, key client.ObjectKey) (*HttpListenerOption, error) + + // List retrieves list of HttpListenerOptions for a given namespace and list options. + ListHttpListenerOption(ctx context.Context, opts ...client.ListOption) (*HttpListenerOptionList, error) +} + +// HttpListenerOptionTransitionFunction instructs the HttpListenerOptionWriter how to transition between an existing +// HttpListenerOption object and a desired on an Upsert +type HttpListenerOptionTransitionFunction func(existing, desired *HttpListenerOption) error + +// Writer knows how to create, delete, and update HttpListenerOptions. +type HttpListenerOptionWriter interface { + // Create saves the HttpListenerOption object. + CreateHttpListenerOption(ctx context.Context, obj *HttpListenerOption, opts ...client.CreateOption) error + + // Delete deletes the HttpListenerOption object. + DeleteHttpListenerOption(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error + + // Update updates the given HttpListenerOption object. + UpdateHttpListenerOption(ctx context.Context, obj *HttpListenerOption, opts ...client.UpdateOption) error + + // Patch patches the given HttpListenerOption object. + PatchHttpListenerOption(ctx context.Context, obj *HttpListenerOption, patch client.Patch, opts ...client.PatchOption) error + + // DeleteAllOf deletes all HttpListenerOption objects matching the given options. + DeleteAllOfHttpListenerOption(ctx context.Context, opts ...client.DeleteAllOfOption) error + + // Create or Update the HttpListenerOption object. + UpsertHttpListenerOption(ctx context.Context, obj *HttpListenerOption, transitionFuncs ...HttpListenerOptionTransitionFunction) error +} + +// StatusWriter knows how to update status subresource of a HttpListenerOption object. +type HttpListenerOptionStatusWriter interface { + // Update updates the fields corresponding to the status subresource for the + // given HttpListenerOption object. + UpdateHttpListenerOptionStatus(ctx context.Context, obj *HttpListenerOption, opts ...client.SubResourceUpdateOption) error + + // Patch patches the given HttpListenerOption object's subresource. + PatchHttpListenerOptionStatus(ctx context.Context, obj *HttpListenerOption, patch client.Patch, opts ...client.SubResourcePatchOption) error +} + +// Client knows how to perform CRUD operations on HttpListenerOptions. +type HttpListenerOptionClient interface { + HttpListenerOptionReader + HttpListenerOptionWriter + HttpListenerOptionStatusWriter +} + +type httpListenerOptionClient struct { + client client.Client +} + +func NewHttpListenerOptionClient(client client.Client) *httpListenerOptionClient { + return &httpListenerOptionClient{client: client} +} + +func (c *httpListenerOptionClient) GetHttpListenerOption(ctx context.Context, key client.ObjectKey) (*HttpListenerOption, error) { + obj := &HttpListenerOption{} + if err := c.client.Get(ctx, key, obj); err != nil { + return nil, err + } + return obj, nil +} + +func (c *httpListenerOptionClient) ListHttpListenerOption(ctx context.Context, opts ...client.ListOption) (*HttpListenerOptionList, error) { + list := &HttpListenerOptionList{} + if err := c.client.List(ctx, list, opts...); err != nil { + return nil, err + } + return list, nil +} + +func (c *httpListenerOptionClient) CreateHttpListenerOption(ctx context.Context, obj *HttpListenerOption, opts ...client.CreateOption) error { + return c.client.Create(ctx, obj, opts...) +} + +func (c *httpListenerOptionClient) DeleteHttpListenerOption(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + obj := &HttpListenerOption{} + obj.SetName(key.Name) + obj.SetNamespace(key.Namespace) + return c.client.Delete(ctx, obj, opts...) +} + +func (c *httpListenerOptionClient) UpdateHttpListenerOption(ctx context.Context, obj *HttpListenerOption, opts ...client.UpdateOption) error { + return c.client.Update(ctx, obj, opts...) +} + +func (c *httpListenerOptionClient) PatchHttpListenerOption(ctx context.Context, obj *HttpListenerOption, patch client.Patch, opts ...client.PatchOption) error { + return c.client.Patch(ctx, obj, patch, opts...) +} + +func (c *httpListenerOptionClient) DeleteAllOfHttpListenerOption(ctx context.Context, opts ...client.DeleteAllOfOption) error { + obj := &HttpListenerOption{} + return c.client.DeleteAllOf(ctx, obj, opts...) +} + +func (c *httpListenerOptionClient) UpsertHttpListenerOption(ctx context.Context, obj *HttpListenerOption, transitionFuncs ...HttpListenerOptionTransitionFunction) error { + genericTxFunc := func(existing, desired runtime.Object) error { + for _, txFunc := range transitionFuncs { + if err := txFunc(existing.(*HttpListenerOption), desired.(*HttpListenerOption)); err != nil { + return err + } + } + return nil + } + _, err := controllerutils.Upsert(ctx, c.client, obj, genericTxFunc) + return err +} + +func (c *httpListenerOptionClient) UpdateHttpListenerOptionStatus(ctx context.Context, obj *HttpListenerOption, opts ...client.SubResourceUpdateOption) error { + return c.client.Status().Update(ctx, obj, opts...) +} + +func (c *httpListenerOptionClient) PatchHttpListenerOptionStatus(ctx context.Context, obj *HttpListenerOption, patch client.Patch, opts ...client.SubResourcePatchOption) error { + return c.client.Status().Patch(ctx, obj, patch, opts...) +} + +// Provides HttpListenerOptionClients for multiple clusters. +type MulticlusterHttpListenerOptionClient interface { + // Cluster returns a HttpListenerOptionClient for the given cluster + Cluster(cluster string) (HttpListenerOptionClient, error) +} + +type multiclusterHttpListenerOptionClient struct { + client multicluster.Client +} + +func NewMulticlusterHttpListenerOptionClient(client multicluster.Client) MulticlusterHttpListenerOptionClient { + return &multiclusterHttpListenerOptionClient{client: client} +} + +func (m *multiclusterHttpListenerOptionClient) Cluster(cluster string) (HttpListenerOptionClient, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewHttpListenerOptionClient(client), nil +} + +// Reader knows how to read and list ListenerOptions. +type ListenerOptionReader interface { + // Get retrieves a ListenerOption for the given object key + GetListenerOption(ctx context.Context, key client.ObjectKey) (*ListenerOption, error) + + // List retrieves list of ListenerOptions for a given namespace and list options. + ListListenerOption(ctx context.Context, opts ...client.ListOption) (*ListenerOptionList, error) +} + +// ListenerOptionTransitionFunction instructs the ListenerOptionWriter how to transition between an existing +// ListenerOption object and a desired on an Upsert +type ListenerOptionTransitionFunction func(existing, desired *ListenerOption) error + +// Writer knows how to create, delete, and update ListenerOptions. +type ListenerOptionWriter interface { + // Create saves the ListenerOption object. + CreateListenerOption(ctx context.Context, obj *ListenerOption, opts ...client.CreateOption) error + + // Delete deletes the ListenerOption object. + DeleteListenerOption(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error + + // Update updates the given ListenerOption object. + UpdateListenerOption(ctx context.Context, obj *ListenerOption, opts ...client.UpdateOption) error + + // Patch patches the given ListenerOption object. + PatchListenerOption(ctx context.Context, obj *ListenerOption, patch client.Patch, opts ...client.PatchOption) error + + // DeleteAllOf deletes all ListenerOption objects matching the given options. + DeleteAllOfListenerOption(ctx context.Context, opts ...client.DeleteAllOfOption) error + + // Create or Update the ListenerOption object. + UpsertListenerOption(ctx context.Context, obj *ListenerOption, transitionFuncs ...ListenerOptionTransitionFunction) error +} + +// StatusWriter knows how to update status subresource of a ListenerOption object. +type ListenerOptionStatusWriter interface { + // Update updates the fields corresponding to the status subresource for the + // given ListenerOption object. + UpdateListenerOptionStatus(ctx context.Context, obj *ListenerOption, opts ...client.SubResourceUpdateOption) error + + // Patch patches the given ListenerOption object's subresource. + PatchListenerOptionStatus(ctx context.Context, obj *ListenerOption, patch client.Patch, opts ...client.SubResourcePatchOption) error +} + +// Client knows how to perform CRUD operations on ListenerOptions. +type ListenerOptionClient interface { + ListenerOptionReader + ListenerOptionWriter + ListenerOptionStatusWriter +} + +type listenerOptionClient struct { + client client.Client +} + +func NewListenerOptionClient(client client.Client) *listenerOptionClient { + return &listenerOptionClient{client: client} +} + +func (c *listenerOptionClient) GetListenerOption(ctx context.Context, key client.ObjectKey) (*ListenerOption, error) { + obj := &ListenerOption{} + if err := c.client.Get(ctx, key, obj); err != nil { + return nil, err + } + return obj, nil +} + +func (c *listenerOptionClient) ListListenerOption(ctx context.Context, opts ...client.ListOption) (*ListenerOptionList, error) { + list := &ListenerOptionList{} + if err := c.client.List(ctx, list, opts...); err != nil { + return nil, err + } + return list, nil +} + +func (c *listenerOptionClient) CreateListenerOption(ctx context.Context, obj *ListenerOption, opts ...client.CreateOption) error { + return c.client.Create(ctx, obj, opts...) +} + +func (c *listenerOptionClient) DeleteListenerOption(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + obj := &ListenerOption{} + obj.SetName(key.Name) + obj.SetNamespace(key.Namespace) + return c.client.Delete(ctx, obj, opts...) +} + +func (c *listenerOptionClient) UpdateListenerOption(ctx context.Context, obj *ListenerOption, opts ...client.UpdateOption) error { + return c.client.Update(ctx, obj, opts...) +} + +func (c *listenerOptionClient) PatchListenerOption(ctx context.Context, obj *ListenerOption, patch client.Patch, opts ...client.PatchOption) error { + return c.client.Patch(ctx, obj, patch, opts...) +} + +func (c *listenerOptionClient) DeleteAllOfListenerOption(ctx context.Context, opts ...client.DeleteAllOfOption) error { + obj := &ListenerOption{} + return c.client.DeleteAllOf(ctx, obj, opts...) +} + +func (c *listenerOptionClient) UpsertListenerOption(ctx context.Context, obj *ListenerOption, transitionFuncs ...ListenerOptionTransitionFunction) error { + genericTxFunc := func(existing, desired runtime.Object) error { + for _, txFunc := range transitionFuncs { + if err := txFunc(existing.(*ListenerOption), desired.(*ListenerOption)); err != nil { + return err + } + } + return nil + } + _, err := controllerutils.Upsert(ctx, c.client, obj, genericTxFunc) + return err +} + +func (c *listenerOptionClient) UpdateListenerOptionStatus(ctx context.Context, obj *ListenerOption, opts ...client.SubResourceUpdateOption) error { + return c.client.Status().Update(ctx, obj, opts...) +} + +func (c *listenerOptionClient) PatchListenerOptionStatus(ctx context.Context, obj *ListenerOption, patch client.Patch, opts ...client.SubResourcePatchOption) error { + return c.client.Status().Patch(ctx, obj, patch, opts...) +} + +// Provides ListenerOptionClients for multiple clusters. +type MulticlusterListenerOptionClient interface { + // Cluster returns a ListenerOptionClient for the given cluster + Cluster(cluster string) (ListenerOptionClient, error) +} + +type multiclusterListenerOptionClient struct { + client multicluster.Client +} + +func NewMulticlusterListenerOptionClient(client multicluster.Client) MulticlusterListenerOptionClient { + return &multiclusterListenerOptionClient{client: client} +} + +func (m *multiclusterListenerOptionClient) Cluster(cluster string) (ListenerOptionClient, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewListenerOptionClient(client), nil +} + +// Reader knows how to read and list MatchableHttpGateways. +type MatchableHttpGatewayReader interface { + // Get retrieves a MatchableHttpGateway for the given object key + GetMatchableHttpGateway(ctx context.Context, key client.ObjectKey) (*MatchableHttpGateway, error) + + // List retrieves list of MatchableHttpGateways for a given namespace and list options. + ListMatchableHttpGateway(ctx context.Context, opts ...client.ListOption) (*MatchableHttpGatewayList, error) +} + +// MatchableHttpGatewayTransitionFunction instructs the MatchableHttpGatewayWriter how to transition between an existing +// MatchableHttpGateway object and a desired on an Upsert +type MatchableHttpGatewayTransitionFunction func(existing, desired *MatchableHttpGateway) error + +// Writer knows how to create, delete, and update MatchableHttpGateways. +type MatchableHttpGatewayWriter interface { + // Create saves the MatchableHttpGateway object. + CreateMatchableHttpGateway(ctx context.Context, obj *MatchableHttpGateway, opts ...client.CreateOption) error + + // Delete deletes the MatchableHttpGateway object. + DeleteMatchableHttpGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error + + // Update updates the given MatchableHttpGateway object. + UpdateMatchableHttpGateway(ctx context.Context, obj *MatchableHttpGateway, opts ...client.UpdateOption) error + + // Patch patches the given MatchableHttpGateway object. + PatchMatchableHttpGateway(ctx context.Context, obj *MatchableHttpGateway, patch client.Patch, opts ...client.PatchOption) error + + // DeleteAllOf deletes all MatchableHttpGateway objects matching the given options. + DeleteAllOfMatchableHttpGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error + + // Create or Update the MatchableHttpGateway object. + UpsertMatchableHttpGateway(ctx context.Context, obj *MatchableHttpGateway, transitionFuncs ...MatchableHttpGatewayTransitionFunction) error +} + +// StatusWriter knows how to update status subresource of a MatchableHttpGateway object. +type MatchableHttpGatewayStatusWriter interface { + // Update updates the fields corresponding to the status subresource for the + // given MatchableHttpGateway object. + UpdateMatchableHttpGatewayStatus(ctx context.Context, obj *MatchableHttpGateway, opts ...client.SubResourceUpdateOption) error + + // Patch patches the given MatchableHttpGateway object's subresource. + PatchMatchableHttpGatewayStatus(ctx context.Context, obj *MatchableHttpGateway, patch client.Patch, opts ...client.SubResourcePatchOption) error +} + +// Client knows how to perform CRUD operations on MatchableHttpGateways. +type MatchableHttpGatewayClient interface { + MatchableHttpGatewayReader + MatchableHttpGatewayWriter + MatchableHttpGatewayStatusWriter +} + +type matchableHttpGatewayClient struct { + client client.Client +} + +func NewMatchableHttpGatewayClient(client client.Client) *matchableHttpGatewayClient { + return &matchableHttpGatewayClient{client: client} +} + +func (c *matchableHttpGatewayClient) GetMatchableHttpGateway(ctx context.Context, key client.ObjectKey) (*MatchableHttpGateway, error) { + obj := &MatchableHttpGateway{} + if err := c.client.Get(ctx, key, obj); err != nil { + return nil, err + } + return obj, nil +} + +func (c *matchableHttpGatewayClient) ListMatchableHttpGateway(ctx context.Context, opts ...client.ListOption) (*MatchableHttpGatewayList, error) { + list := &MatchableHttpGatewayList{} + if err := c.client.List(ctx, list, opts...); err != nil { + return nil, err + } + return list, nil +} + +func (c *matchableHttpGatewayClient) CreateMatchableHttpGateway(ctx context.Context, obj *MatchableHttpGateway, opts ...client.CreateOption) error { + return c.client.Create(ctx, obj, opts...) +} + +func (c *matchableHttpGatewayClient) DeleteMatchableHttpGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + obj := &MatchableHttpGateway{} + obj.SetName(key.Name) + obj.SetNamespace(key.Namespace) + return c.client.Delete(ctx, obj, opts...) +} + +func (c *matchableHttpGatewayClient) UpdateMatchableHttpGateway(ctx context.Context, obj *MatchableHttpGateway, opts ...client.UpdateOption) error { + return c.client.Update(ctx, obj, opts...) +} + +func (c *matchableHttpGatewayClient) PatchMatchableHttpGateway(ctx context.Context, obj *MatchableHttpGateway, patch client.Patch, opts ...client.PatchOption) error { + return c.client.Patch(ctx, obj, patch, opts...) +} + +func (c *matchableHttpGatewayClient) DeleteAllOfMatchableHttpGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error { + obj := &MatchableHttpGateway{} + return c.client.DeleteAllOf(ctx, obj, opts...) +} + +func (c *matchableHttpGatewayClient) UpsertMatchableHttpGateway(ctx context.Context, obj *MatchableHttpGateway, transitionFuncs ...MatchableHttpGatewayTransitionFunction) error { + genericTxFunc := func(existing, desired runtime.Object) error { + for _, txFunc := range transitionFuncs { + if err := txFunc(existing.(*MatchableHttpGateway), desired.(*MatchableHttpGateway)); err != nil { + return err + } + } + return nil + } + _, err := controllerutils.Upsert(ctx, c.client, obj, genericTxFunc) + return err +} + +func (c *matchableHttpGatewayClient) UpdateMatchableHttpGatewayStatus(ctx context.Context, obj *MatchableHttpGateway, opts ...client.SubResourceUpdateOption) error { + return c.client.Status().Update(ctx, obj, opts...) +} + +func (c *matchableHttpGatewayClient) PatchMatchableHttpGatewayStatus(ctx context.Context, obj *MatchableHttpGateway, patch client.Patch, opts ...client.SubResourcePatchOption) error { + return c.client.Status().Patch(ctx, obj, patch, opts...) +} + +// Provides MatchableHttpGatewayClients for multiple clusters. +type MulticlusterMatchableHttpGatewayClient interface { + // Cluster returns a MatchableHttpGatewayClient for the given cluster + Cluster(cluster string) (MatchableHttpGatewayClient, error) +} + +type multiclusterMatchableHttpGatewayClient struct { + client multicluster.Client +} + +func NewMulticlusterMatchableHttpGatewayClient(client multicluster.Client) MulticlusterMatchableHttpGatewayClient { + return &multiclusterMatchableHttpGatewayClient{client: client} +} + +func (m *multiclusterMatchableHttpGatewayClient) Cluster(cluster string) (MatchableHttpGatewayClient, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewMatchableHttpGatewayClient(client), nil +} + +// Reader knows how to read and list MatchableTcpGateways. +type MatchableTcpGatewayReader interface { + // Get retrieves a MatchableTcpGateway for the given object key + GetMatchableTcpGateway(ctx context.Context, key client.ObjectKey) (*MatchableTcpGateway, error) + + // List retrieves list of MatchableTcpGateways for a given namespace and list options. + ListMatchableTcpGateway(ctx context.Context, opts ...client.ListOption) (*MatchableTcpGatewayList, error) +} + +// MatchableTcpGatewayTransitionFunction instructs the MatchableTcpGatewayWriter how to transition between an existing +// MatchableTcpGateway object and a desired on an Upsert +type MatchableTcpGatewayTransitionFunction func(existing, desired *MatchableTcpGateway) error + +// Writer knows how to create, delete, and update MatchableTcpGateways. +type MatchableTcpGatewayWriter interface { + // Create saves the MatchableTcpGateway object. + CreateMatchableTcpGateway(ctx context.Context, obj *MatchableTcpGateway, opts ...client.CreateOption) error + + // Delete deletes the MatchableTcpGateway object. + DeleteMatchableTcpGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error + + // Update updates the given MatchableTcpGateway object. + UpdateMatchableTcpGateway(ctx context.Context, obj *MatchableTcpGateway, opts ...client.UpdateOption) error + + // Patch patches the given MatchableTcpGateway object. + PatchMatchableTcpGateway(ctx context.Context, obj *MatchableTcpGateway, patch client.Patch, opts ...client.PatchOption) error + + // DeleteAllOf deletes all MatchableTcpGateway objects matching the given options. + DeleteAllOfMatchableTcpGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error + + // Create or Update the MatchableTcpGateway object. + UpsertMatchableTcpGateway(ctx context.Context, obj *MatchableTcpGateway, transitionFuncs ...MatchableTcpGatewayTransitionFunction) error +} + +// StatusWriter knows how to update status subresource of a MatchableTcpGateway object. +type MatchableTcpGatewayStatusWriter interface { + // Update updates the fields corresponding to the status subresource for the + // given MatchableTcpGateway object. + UpdateMatchableTcpGatewayStatus(ctx context.Context, obj *MatchableTcpGateway, opts ...client.SubResourceUpdateOption) error + + // Patch patches the given MatchableTcpGateway object's subresource. + PatchMatchableTcpGatewayStatus(ctx context.Context, obj *MatchableTcpGateway, patch client.Patch, opts ...client.SubResourcePatchOption) error +} + +// Client knows how to perform CRUD operations on MatchableTcpGateways. +type MatchableTcpGatewayClient interface { + MatchableTcpGatewayReader + MatchableTcpGatewayWriter + MatchableTcpGatewayStatusWriter +} + +type matchableTcpGatewayClient struct { + client client.Client +} + +func NewMatchableTcpGatewayClient(client client.Client) *matchableTcpGatewayClient { + return &matchableTcpGatewayClient{client: client} +} + +func (c *matchableTcpGatewayClient) GetMatchableTcpGateway(ctx context.Context, key client.ObjectKey) (*MatchableTcpGateway, error) { + obj := &MatchableTcpGateway{} + if err := c.client.Get(ctx, key, obj); err != nil { + return nil, err + } + return obj, nil +} + +func (c *matchableTcpGatewayClient) ListMatchableTcpGateway(ctx context.Context, opts ...client.ListOption) (*MatchableTcpGatewayList, error) { + list := &MatchableTcpGatewayList{} + if err := c.client.List(ctx, list, opts...); err != nil { + return nil, err + } + return list, nil +} + +func (c *matchableTcpGatewayClient) CreateMatchableTcpGateway(ctx context.Context, obj *MatchableTcpGateway, opts ...client.CreateOption) error { + return c.client.Create(ctx, obj, opts...) +} + +func (c *matchableTcpGatewayClient) DeleteMatchableTcpGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + obj := &MatchableTcpGateway{} + obj.SetName(key.Name) + obj.SetNamespace(key.Namespace) + return c.client.Delete(ctx, obj, opts...) +} + +func (c *matchableTcpGatewayClient) UpdateMatchableTcpGateway(ctx context.Context, obj *MatchableTcpGateway, opts ...client.UpdateOption) error { + return c.client.Update(ctx, obj, opts...) +} + +func (c *matchableTcpGatewayClient) PatchMatchableTcpGateway(ctx context.Context, obj *MatchableTcpGateway, patch client.Patch, opts ...client.PatchOption) error { + return c.client.Patch(ctx, obj, patch, opts...) +} + +func (c *matchableTcpGatewayClient) DeleteAllOfMatchableTcpGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error { + obj := &MatchableTcpGateway{} + return c.client.DeleteAllOf(ctx, obj, opts...) +} + +func (c *matchableTcpGatewayClient) UpsertMatchableTcpGateway(ctx context.Context, obj *MatchableTcpGateway, transitionFuncs ...MatchableTcpGatewayTransitionFunction) error { + genericTxFunc := func(existing, desired runtime.Object) error { + for _, txFunc := range transitionFuncs { + if err := txFunc(existing.(*MatchableTcpGateway), desired.(*MatchableTcpGateway)); err != nil { + return err + } + } + return nil + } + _, err := controllerutils.Upsert(ctx, c.client, obj, genericTxFunc) + return err +} + +func (c *matchableTcpGatewayClient) UpdateMatchableTcpGatewayStatus(ctx context.Context, obj *MatchableTcpGateway, opts ...client.SubResourceUpdateOption) error { + return c.client.Status().Update(ctx, obj, opts...) +} + +func (c *matchableTcpGatewayClient) PatchMatchableTcpGatewayStatus(ctx context.Context, obj *MatchableTcpGateway, patch client.Patch, opts ...client.SubResourcePatchOption) error { + return c.client.Status().Patch(ctx, obj, patch, opts...) +} + +// Provides MatchableTcpGatewayClients for multiple clusters. +type MulticlusterMatchableTcpGatewayClient interface { + // Cluster returns a MatchableTcpGatewayClient for the given cluster + Cluster(cluster string) (MatchableTcpGatewayClient, error) +} + +type multiclusterMatchableTcpGatewayClient struct { + client multicluster.Client +} + +func NewMulticlusterMatchableTcpGatewayClient(client multicluster.Client) MulticlusterMatchableTcpGatewayClient { + return &multiclusterMatchableTcpGatewayClient{client: client} +} + +func (m *multiclusterMatchableTcpGatewayClient) Cluster(cluster string) (MatchableTcpGatewayClient, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewMatchableTcpGatewayClient(client), nil +} + +// Reader knows how to read and list RouteOptions. +type RouteOptionReader interface { + // Get retrieves a RouteOption for the given object key + GetRouteOption(ctx context.Context, key client.ObjectKey) (*RouteOption, error) + + // List retrieves list of RouteOptions for a given namespace and list options. + ListRouteOption(ctx context.Context, opts ...client.ListOption) (*RouteOptionList, error) +} + +// RouteOptionTransitionFunction instructs the RouteOptionWriter how to transition between an existing +// RouteOption object and a desired on an Upsert +type RouteOptionTransitionFunction func(existing, desired *RouteOption) error + +// Writer knows how to create, delete, and update RouteOptions. +type RouteOptionWriter interface { + // Create saves the RouteOption object. + CreateRouteOption(ctx context.Context, obj *RouteOption, opts ...client.CreateOption) error + + // Delete deletes the RouteOption object. + DeleteRouteOption(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error + + // Update updates the given RouteOption object. + UpdateRouteOption(ctx context.Context, obj *RouteOption, opts ...client.UpdateOption) error + + // Patch patches the given RouteOption object. + PatchRouteOption(ctx context.Context, obj *RouteOption, patch client.Patch, opts ...client.PatchOption) error + + // DeleteAllOf deletes all RouteOption objects matching the given options. + DeleteAllOfRouteOption(ctx context.Context, opts ...client.DeleteAllOfOption) error + + // Create or Update the RouteOption object. + UpsertRouteOption(ctx context.Context, obj *RouteOption, transitionFuncs ...RouteOptionTransitionFunction) error +} + +// StatusWriter knows how to update status subresource of a RouteOption object. +type RouteOptionStatusWriter interface { + // Update updates the fields corresponding to the status subresource for the + // given RouteOption object. + UpdateRouteOptionStatus(ctx context.Context, obj *RouteOption, opts ...client.SubResourceUpdateOption) error + + // Patch patches the given RouteOption object's subresource. + PatchRouteOptionStatus(ctx context.Context, obj *RouteOption, patch client.Patch, opts ...client.SubResourcePatchOption) error +} + +// Client knows how to perform CRUD operations on RouteOptions. +type RouteOptionClient interface { + RouteOptionReader + RouteOptionWriter + RouteOptionStatusWriter +} + +type routeOptionClient struct { + client client.Client +} + +func NewRouteOptionClient(client client.Client) *routeOptionClient { + return &routeOptionClient{client: client} +} + +func (c *routeOptionClient) GetRouteOption(ctx context.Context, key client.ObjectKey) (*RouteOption, error) { + obj := &RouteOption{} + if err := c.client.Get(ctx, key, obj); err != nil { + return nil, err + } + return obj, nil +} + +func (c *routeOptionClient) ListRouteOption(ctx context.Context, opts ...client.ListOption) (*RouteOptionList, error) { + list := &RouteOptionList{} + if err := c.client.List(ctx, list, opts...); err != nil { + return nil, err + } + return list, nil +} + +func (c *routeOptionClient) CreateRouteOption(ctx context.Context, obj *RouteOption, opts ...client.CreateOption) error { + return c.client.Create(ctx, obj, opts...) +} + +func (c *routeOptionClient) DeleteRouteOption(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + obj := &RouteOption{} + obj.SetName(key.Name) + obj.SetNamespace(key.Namespace) + return c.client.Delete(ctx, obj, opts...) +} + +func (c *routeOptionClient) UpdateRouteOption(ctx context.Context, obj *RouteOption, opts ...client.UpdateOption) error { + return c.client.Update(ctx, obj, opts...) +} + +func (c *routeOptionClient) PatchRouteOption(ctx context.Context, obj *RouteOption, patch client.Patch, opts ...client.PatchOption) error { + return c.client.Patch(ctx, obj, patch, opts...) +} + +func (c *routeOptionClient) DeleteAllOfRouteOption(ctx context.Context, opts ...client.DeleteAllOfOption) error { + obj := &RouteOption{} + return c.client.DeleteAllOf(ctx, obj, opts...) +} + +func (c *routeOptionClient) UpsertRouteOption(ctx context.Context, obj *RouteOption, transitionFuncs ...RouteOptionTransitionFunction) error { + genericTxFunc := func(existing, desired runtime.Object) error { + for _, txFunc := range transitionFuncs { + if err := txFunc(existing.(*RouteOption), desired.(*RouteOption)); err != nil { + return err + } + } + return nil + } + _, err := controllerutils.Upsert(ctx, c.client, obj, genericTxFunc) + return err +} + +func (c *routeOptionClient) UpdateRouteOptionStatus(ctx context.Context, obj *RouteOption, opts ...client.SubResourceUpdateOption) error { + return c.client.Status().Update(ctx, obj, opts...) +} + +func (c *routeOptionClient) PatchRouteOptionStatus(ctx context.Context, obj *RouteOption, patch client.Patch, opts ...client.SubResourcePatchOption) error { + return c.client.Status().Patch(ctx, obj, patch, opts...) +} + +// Provides RouteOptionClients for multiple clusters. +type MulticlusterRouteOptionClient interface { + // Cluster returns a RouteOptionClient for the given cluster + Cluster(cluster string) (RouteOptionClient, error) +} + +type multiclusterRouteOptionClient struct { + client multicluster.Client +} + +func NewMulticlusterRouteOptionClient(client multicluster.Client) MulticlusterRouteOptionClient { + return &multiclusterRouteOptionClient{client: client} +} + +func (m *multiclusterRouteOptionClient) Cluster(cluster string) (RouteOptionClient, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewRouteOptionClient(client), nil +} + // Reader knows how to read and list RouteTables. type RouteTableReader interface { // Get retrieves a RouteTable for the given object key @@ -264,10 +1016,10 @@ type RouteTableWriter interface { type RouteTableStatusWriter interface { // Update updates the fields corresponding to the status subresource for the // given RouteTable object. - UpdateRouteTableStatus(ctx context.Context, obj *RouteTable, opts ...client.UpdateOption) error + UpdateRouteTableStatus(ctx context.Context, obj *RouteTable, opts ...client.SubResourceUpdateOption) error // Patch patches the given RouteTable object's subresource. - PatchRouteTableStatus(ctx context.Context, obj *RouteTable, patch client.Patch, opts ...client.PatchOption) error + PatchRouteTableStatus(ctx context.Context, obj *RouteTable, patch client.Patch, opts ...client.SubResourcePatchOption) error } // Client knows how to perform CRUD operations on RouteTables. @@ -338,11 +1090,11 @@ func (c *routeTableClient) UpsertRouteTable(ctx context.Context, obj *RouteTable return err } -func (c *routeTableClient) UpdateRouteTableStatus(ctx context.Context, obj *RouteTable, opts ...client.UpdateOption) error { +func (c *routeTableClient) UpdateRouteTableStatus(ctx context.Context, obj *RouteTable, opts ...client.SubResourceUpdateOption) error { return c.client.Status().Update(ctx, obj, opts...) } -func (c *routeTableClient) PatchRouteTableStatus(ctx context.Context, obj *RouteTable, patch client.Patch, opts ...client.PatchOption) error { +func (c *routeTableClient) PatchRouteTableStatus(ctx context.Context, obj *RouteTable, patch client.Patch, opts ...client.SubResourcePatchOption) error { return c.client.Status().Patch(ctx, obj, patch, opts...) } @@ -406,10 +1158,10 @@ type VirtualServiceWriter interface { type VirtualServiceStatusWriter interface { // Update updates the fields corresponding to the status subresource for the // given VirtualService object. - UpdateVirtualServiceStatus(ctx context.Context, obj *VirtualService, opts ...client.UpdateOption) error + UpdateVirtualServiceStatus(ctx context.Context, obj *VirtualService, opts ...client.SubResourceUpdateOption) error // Patch patches the given VirtualService object's subresource. - PatchVirtualServiceStatus(ctx context.Context, obj *VirtualService, patch client.Patch, opts ...client.PatchOption) error + PatchVirtualServiceStatus(ctx context.Context, obj *VirtualService, patch client.Patch, opts ...client.SubResourcePatchOption) error } // Client knows how to perform CRUD operations on VirtualServices. @@ -480,11 +1232,11 @@ func (c *virtualServiceClient) UpsertVirtualService(ctx context.Context, obj *Vi return err } -func (c *virtualServiceClient) UpdateVirtualServiceStatus(ctx context.Context, obj *VirtualService, opts ...client.UpdateOption) error { +func (c *virtualServiceClient) UpdateVirtualServiceStatus(ctx context.Context, obj *VirtualService, opts ...client.SubResourceUpdateOption) error { return c.client.Status().Update(ctx, obj, opts...) } -func (c *virtualServiceClient) PatchVirtualServiceStatus(ctx context.Context, obj *VirtualService, patch client.Patch, opts ...client.PatchOption) error { +func (c *virtualServiceClient) PatchVirtualServiceStatus(ctx context.Context, obj *VirtualService, patch client.Patch, opts ...client.SubResourcePatchOption) error { return c.client.Status().Patch(ctx, obj, patch, opts...) } @@ -509,3 +1261,145 @@ func (m *multiclusterVirtualServiceClient) Cluster(cluster string) (VirtualServi } return NewVirtualServiceClient(client), nil } + +// Reader knows how to read and list VirtualHostOptions. +type VirtualHostOptionReader interface { + // Get retrieves a VirtualHostOption for the given object key + GetVirtualHostOption(ctx context.Context, key client.ObjectKey) (*VirtualHostOption, error) + + // List retrieves list of VirtualHostOptions for a given namespace and list options. + ListVirtualHostOption(ctx context.Context, opts ...client.ListOption) (*VirtualHostOptionList, error) +} + +// VirtualHostOptionTransitionFunction instructs the VirtualHostOptionWriter how to transition between an existing +// VirtualHostOption object and a desired on an Upsert +type VirtualHostOptionTransitionFunction func(existing, desired *VirtualHostOption) error + +// Writer knows how to create, delete, and update VirtualHostOptions. +type VirtualHostOptionWriter interface { + // Create saves the VirtualHostOption object. + CreateVirtualHostOption(ctx context.Context, obj *VirtualHostOption, opts ...client.CreateOption) error + + // Delete deletes the VirtualHostOption object. + DeleteVirtualHostOption(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error + + // Update updates the given VirtualHostOption object. + UpdateVirtualHostOption(ctx context.Context, obj *VirtualHostOption, opts ...client.UpdateOption) error + + // Patch patches the given VirtualHostOption object. + PatchVirtualHostOption(ctx context.Context, obj *VirtualHostOption, patch client.Patch, opts ...client.PatchOption) error + + // DeleteAllOf deletes all VirtualHostOption objects matching the given options. + DeleteAllOfVirtualHostOption(ctx context.Context, opts ...client.DeleteAllOfOption) error + + // Create or Update the VirtualHostOption object. + UpsertVirtualHostOption(ctx context.Context, obj *VirtualHostOption, transitionFuncs ...VirtualHostOptionTransitionFunction) error +} + +// StatusWriter knows how to update status subresource of a VirtualHostOption object. +type VirtualHostOptionStatusWriter interface { + // Update updates the fields corresponding to the status subresource for the + // given VirtualHostOption object. + UpdateVirtualHostOptionStatus(ctx context.Context, obj *VirtualHostOption, opts ...client.SubResourceUpdateOption) error + + // Patch patches the given VirtualHostOption object's subresource. + PatchVirtualHostOptionStatus(ctx context.Context, obj *VirtualHostOption, patch client.Patch, opts ...client.SubResourcePatchOption) error +} + +// Client knows how to perform CRUD operations on VirtualHostOptions. +type VirtualHostOptionClient interface { + VirtualHostOptionReader + VirtualHostOptionWriter + VirtualHostOptionStatusWriter +} + +type virtualHostOptionClient struct { + client client.Client +} + +func NewVirtualHostOptionClient(client client.Client) *virtualHostOptionClient { + return &virtualHostOptionClient{client: client} +} + +func (c *virtualHostOptionClient) GetVirtualHostOption(ctx context.Context, key client.ObjectKey) (*VirtualHostOption, error) { + obj := &VirtualHostOption{} + if err := c.client.Get(ctx, key, obj); err != nil { + return nil, err + } + return obj, nil +} + +func (c *virtualHostOptionClient) ListVirtualHostOption(ctx context.Context, opts ...client.ListOption) (*VirtualHostOptionList, error) { + list := &VirtualHostOptionList{} + if err := c.client.List(ctx, list, opts...); err != nil { + return nil, err + } + return list, nil +} + +func (c *virtualHostOptionClient) CreateVirtualHostOption(ctx context.Context, obj *VirtualHostOption, opts ...client.CreateOption) error { + return c.client.Create(ctx, obj, opts...) +} + +func (c *virtualHostOptionClient) DeleteVirtualHostOption(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + obj := &VirtualHostOption{} + obj.SetName(key.Name) + obj.SetNamespace(key.Namespace) + return c.client.Delete(ctx, obj, opts...) +} + +func (c *virtualHostOptionClient) UpdateVirtualHostOption(ctx context.Context, obj *VirtualHostOption, opts ...client.UpdateOption) error { + return c.client.Update(ctx, obj, opts...) +} + +func (c *virtualHostOptionClient) PatchVirtualHostOption(ctx context.Context, obj *VirtualHostOption, patch client.Patch, opts ...client.PatchOption) error { + return c.client.Patch(ctx, obj, patch, opts...) +} + +func (c *virtualHostOptionClient) DeleteAllOfVirtualHostOption(ctx context.Context, opts ...client.DeleteAllOfOption) error { + obj := &VirtualHostOption{} + return c.client.DeleteAllOf(ctx, obj, opts...) +} + +func (c *virtualHostOptionClient) UpsertVirtualHostOption(ctx context.Context, obj *VirtualHostOption, transitionFuncs ...VirtualHostOptionTransitionFunction) error { + genericTxFunc := func(existing, desired runtime.Object) error { + for _, txFunc := range transitionFuncs { + if err := txFunc(existing.(*VirtualHostOption), desired.(*VirtualHostOption)); err != nil { + return err + } + } + return nil + } + _, err := controllerutils.Upsert(ctx, c.client, obj, genericTxFunc) + return err +} + +func (c *virtualHostOptionClient) UpdateVirtualHostOptionStatus(ctx context.Context, obj *VirtualHostOption, opts ...client.SubResourceUpdateOption) error { + return c.client.Status().Update(ctx, obj, opts...) +} + +func (c *virtualHostOptionClient) PatchVirtualHostOptionStatus(ctx context.Context, obj *VirtualHostOption, patch client.Patch, opts ...client.SubResourcePatchOption) error { + return c.client.Status().Patch(ctx, obj, patch, opts...) +} + +// Provides VirtualHostOptionClients for multiple clusters. +type MulticlusterVirtualHostOptionClient interface { + // Cluster returns a VirtualHostOptionClient for the given cluster + Cluster(cluster string) (VirtualHostOptionClient, error) +} + +type multiclusterVirtualHostOptionClient struct { + client multicluster.Client +} + +func NewMulticlusterVirtualHostOptionClient(client multicluster.Client) MulticlusterVirtualHostOptionClient { + return &multiclusterVirtualHostOptionClient{client: client} +} + +func (m *multiclusterVirtualHostOptionClient) Cluster(cluster string) (VirtualHostOptionClient, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewVirtualHostOptionClient(client), nil +} diff --git a/pkg/api/gateway.solo.io/v1/controller/event_handlers.go b/pkg/api/gateway.solo.io/v1/controller/event_handlers.go index dd58e1628..73bedeb32 100644 --- a/pkg/api/gateway.solo.io/v1/controller/event_handlers.go +++ b/pkg/api/gateway.solo.io/v1/controller/event_handlers.go @@ -124,6 +124,541 @@ func (h genericGatewayHandler) Generic(object client.Object) error { return h.handler.GenericGateway(obj) } +// Handle events for the HttpListenerOption Resource +// DEPRECATED: Prefer reconciler pattern. +type HttpListenerOptionEventHandler interface { + CreateHttpListenerOption(obj *gateway_solo_io_v1.HttpListenerOption) error + UpdateHttpListenerOption(old, new *gateway_solo_io_v1.HttpListenerOption) error + DeleteHttpListenerOption(obj *gateway_solo_io_v1.HttpListenerOption) error + GenericHttpListenerOption(obj *gateway_solo_io_v1.HttpListenerOption) error +} + +type HttpListenerOptionEventHandlerFuncs struct { + OnCreate func(obj *gateway_solo_io_v1.HttpListenerOption) error + OnUpdate func(old, new *gateway_solo_io_v1.HttpListenerOption) error + OnDelete func(obj *gateway_solo_io_v1.HttpListenerOption) error + OnGeneric func(obj *gateway_solo_io_v1.HttpListenerOption) error +} + +func (f *HttpListenerOptionEventHandlerFuncs) CreateHttpListenerOption(obj *gateway_solo_io_v1.HttpListenerOption) error { + if f.OnCreate == nil { + return nil + } + return f.OnCreate(obj) +} + +func (f *HttpListenerOptionEventHandlerFuncs) DeleteHttpListenerOption(obj *gateway_solo_io_v1.HttpListenerOption) error { + if f.OnDelete == nil { + return nil + } + return f.OnDelete(obj) +} + +func (f *HttpListenerOptionEventHandlerFuncs) UpdateHttpListenerOption(objOld, objNew *gateway_solo_io_v1.HttpListenerOption) error { + if f.OnUpdate == nil { + return nil + } + return f.OnUpdate(objOld, objNew) +} + +func (f *HttpListenerOptionEventHandlerFuncs) GenericHttpListenerOption(obj *gateway_solo_io_v1.HttpListenerOption) error { + if f.OnGeneric == nil { + return nil + } + return f.OnGeneric(obj) +} + +type HttpListenerOptionEventWatcher interface { + AddEventHandler(ctx context.Context, h HttpListenerOptionEventHandler, predicates ...predicate.Predicate) error +} + +type httpListenerOptionEventWatcher struct { + watcher events.EventWatcher +} + +func NewHttpListenerOptionEventWatcher(name string, mgr manager.Manager) HttpListenerOptionEventWatcher { + return &httpListenerOptionEventWatcher{ + watcher: events.NewWatcher(name, mgr, &gateway_solo_io_v1.HttpListenerOption{}), + } +} + +func (c *httpListenerOptionEventWatcher) AddEventHandler(ctx context.Context, h HttpListenerOptionEventHandler, predicates ...predicate.Predicate) error { + handler := genericHttpListenerOptionHandler{handler: h} + if err := c.watcher.Watch(ctx, handler, predicates...); err != nil { + return err + } + return nil +} + +// genericHttpListenerOptionHandler implements a generic events.EventHandler +type genericHttpListenerOptionHandler struct { + handler HttpListenerOptionEventHandler +} + +func (h genericHttpListenerOptionHandler) Create(object client.Object) error { + obj, ok := object.(*gateway_solo_io_v1.HttpListenerOption) + if !ok { + return errors.Errorf("internal error: HttpListenerOption handler received event for %T", object) + } + return h.handler.CreateHttpListenerOption(obj) +} + +func (h genericHttpListenerOptionHandler) Delete(object client.Object) error { + obj, ok := object.(*gateway_solo_io_v1.HttpListenerOption) + if !ok { + return errors.Errorf("internal error: HttpListenerOption handler received event for %T", object) + } + return h.handler.DeleteHttpListenerOption(obj) +} + +func (h genericHttpListenerOptionHandler) Update(old, new client.Object) error { + objOld, ok := old.(*gateway_solo_io_v1.HttpListenerOption) + if !ok { + return errors.Errorf("internal error: HttpListenerOption handler received event for %T", old) + } + objNew, ok := new.(*gateway_solo_io_v1.HttpListenerOption) + if !ok { + return errors.Errorf("internal error: HttpListenerOption handler received event for %T", new) + } + return h.handler.UpdateHttpListenerOption(objOld, objNew) +} + +func (h genericHttpListenerOptionHandler) Generic(object client.Object) error { + obj, ok := object.(*gateway_solo_io_v1.HttpListenerOption) + if !ok { + return errors.Errorf("internal error: HttpListenerOption handler received event for %T", object) + } + return h.handler.GenericHttpListenerOption(obj) +} + +// Handle events for the ListenerOption Resource +// DEPRECATED: Prefer reconciler pattern. +type ListenerOptionEventHandler interface { + CreateListenerOption(obj *gateway_solo_io_v1.ListenerOption) error + UpdateListenerOption(old, new *gateway_solo_io_v1.ListenerOption) error + DeleteListenerOption(obj *gateway_solo_io_v1.ListenerOption) error + GenericListenerOption(obj *gateway_solo_io_v1.ListenerOption) error +} + +type ListenerOptionEventHandlerFuncs struct { + OnCreate func(obj *gateway_solo_io_v1.ListenerOption) error + OnUpdate func(old, new *gateway_solo_io_v1.ListenerOption) error + OnDelete func(obj *gateway_solo_io_v1.ListenerOption) error + OnGeneric func(obj *gateway_solo_io_v1.ListenerOption) error +} + +func (f *ListenerOptionEventHandlerFuncs) CreateListenerOption(obj *gateway_solo_io_v1.ListenerOption) error { + if f.OnCreate == nil { + return nil + } + return f.OnCreate(obj) +} + +func (f *ListenerOptionEventHandlerFuncs) DeleteListenerOption(obj *gateway_solo_io_v1.ListenerOption) error { + if f.OnDelete == nil { + return nil + } + return f.OnDelete(obj) +} + +func (f *ListenerOptionEventHandlerFuncs) UpdateListenerOption(objOld, objNew *gateway_solo_io_v1.ListenerOption) error { + if f.OnUpdate == nil { + return nil + } + return f.OnUpdate(objOld, objNew) +} + +func (f *ListenerOptionEventHandlerFuncs) GenericListenerOption(obj *gateway_solo_io_v1.ListenerOption) error { + if f.OnGeneric == nil { + return nil + } + return f.OnGeneric(obj) +} + +type ListenerOptionEventWatcher interface { + AddEventHandler(ctx context.Context, h ListenerOptionEventHandler, predicates ...predicate.Predicate) error +} + +type listenerOptionEventWatcher struct { + watcher events.EventWatcher +} + +func NewListenerOptionEventWatcher(name string, mgr manager.Manager) ListenerOptionEventWatcher { + return &listenerOptionEventWatcher{ + watcher: events.NewWatcher(name, mgr, &gateway_solo_io_v1.ListenerOption{}), + } +} + +func (c *listenerOptionEventWatcher) AddEventHandler(ctx context.Context, h ListenerOptionEventHandler, predicates ...predicate.Predicate) error { + handler := genericListenerOptionHandler{handler: h} + if err := c.watcher.Watch(ctx, handler, predicates...); err != nil { + return err + } + return nil +} + +// genericListenerOptionHandler implements a generic events.EventHandler +type genericListenerOptionHandler struct { + handler ListenerOptionEventHandler +} + +func (h genericListenerOptionHandler) Create(object client.Object) error { + obj, ok := object.(*gateway_solo_io_v1.ListenerOption) + if !ok { + return errors.Errorf("internal error: ListenerOption handler received event for %T", object) + } + return h.handler.CreateListenerOption(obj) +} + +func (h genericListenerOptionHandler) Delete(object client.Object) error { + obj, ok := object.(*gateway_solo_io_v1.ListenerOption) + if !ok { + return errors.Errorf("internal error: ListenerOption handler received event for %T", object) + } + return h.handler.DeleteListenerOption(obj) +} + +func (h genericListenerOptionHandler) Update(old, new client.Object) error { + objOld, ok := old.(*gateway_solo_io_v1.ListenerOption) + if !ok { + return errors.Errorf("internal error: ListenerOption handler received event for %T", old) + } + objNew, ok := new.(*gateway_solo_io_v1.ListenerOption) + if !ok { + return errors.Errorf("internal error: ListenerOption handler received event for %T", new) + } + return h.handler.UpdateListenerOption(objOld, objNew) +} + +func (h genericListenerOptionHandler) Generic(object client.Object) error { + obj, ok := object.(*gateway_solo_io_v1.ListenerOption) + if !ok { + return errors.Errorf("internal error: ListenerOption handler received event for %T", object) + } + return h.handler.GenericListenerOption(obj) +} + +// Handle events for the MatchableHttpGateway Resource +// DEPRECATED: Prefer reconciler pattern. +type MatchableHttpGatewayEventHandler interface { + CreateMatchableHttpGateway(obj *gateway_solo_io_v1.MatchableHttpGateway) error + UpdateMatchableHttpGateway(old, new *gateway_solo_io_v1.MatchableHttpGateway) error + DeleteMatchableHttpGateway(obj *gateway_solo_io_v1.MatchableHttpGateway) error + GenericMatchableHttpGateway(obj *gateway_solo_io_v1.MatchableHttpGateway) error +} + +type MatchableHttpGatewayEventHandlerFuncs struct { + OnCreate func(obj *gateway_solo_io_v1.MatchableHttpGateway) error + OnUpdate func(old, new *gateway_solo_io_v1.MatchableHttpGateway) error + OnDelete func(obj *gateway_solo_io_v1.MatchableHttpGateway) error + OnGeneric func(obj *gateway_solo_io_v1.MatchableHttpGateway) error +} + +func (f *MatchableHttpGatewayEventHandlerFuncs) CreateMatchableHttpGateway(obj *gateway_solo_io_v1.MatchableHttpGateway) error { + if f.OnCreate == nil { + return nil + } + return f.OnCreate(obj) +} + +func (f *MatchableHttpGatewayEventHandlerFuncs) DeleteMatchableHttpGateway(obj *gateway_solo_io_v1.MatchableHttpGateway) error { + if f.OnDelete == nil { + return nil + } + return f.OnDelete(obj) +} + +func (f *MatchableHttpGatewayEventHandlerFuncs) UpdateMatchableHttpGateway(objOld, objNew *gateway_solo_io_v1.MatchableHttpGateway) error { + if f.OnUpdate == nil { + return nil + } + return f.OnUpdate(objOld, objNew) +} + +func (f *MatchableHttpGatewayEventHandlerFuncs) GenericMatchableHttpGateway(obj *gateway_solo_io_v1.MatchableHttpGateway) error { + if f.OnGeneric == nil { + return nil + } + return f.OnGeneric(obj) +} + +type MatchableHttpGatewayEventWatcher interface { + AddEventHandler(ctx context.Context, h MatchableHttpGatewayEventHandler, predicates ...predicate.Predicate) error +} + +type matchableHttpGatewayEventWatcher struct { + watcher events.EventWatcher +} + +func NewMatchableHttpGatewayEventWatcher(name string, mgr manager.Manager) MatchableHttpGatewayEventWatcher { + return &matchableHttpGatewayEventWatcher{ + watcher: events.NewWatcher(name, mgr, &gateway_solo_io_v1.MatchableHttpGateway{}), + } +} + +func (c *matchableHttpGatewayEventWatcher) AddEventHandler(ctx context.Context, h MatchableHttpGatewayEventHandler, predicates ...predicate.Predicate) error { + handler := genericMatchableHttpGatewayHandler{handler: h} + if err := c.watcher.Watch(ctx, handler, predicates...); err != nil { + return err + } + return nil +} + +// genericMatchableHttpGatewayHandler implements a generic events.EventHandler +type genericMatchableHttpGatewayHandler struct { + handler MatchableHttpGatewayEventHandler +} + +func (h genericMatchableHttpGatewayHandler) Create(object client.Object) error { + obj, ok := object.(*gateway_solo_io_v1.MatchableHttpGateway) + if !ok { + return errors.Errorf("internal error: MatchableHttpGateway handler received event for %T", object) + } + return h.handler.CreateMatchableHttpGateway(obj) +} + +func (h genericMatchableHttpGatewayHandler) Delete(object client.Object) error { + obj, ok := object.(*gateway_solo_io_v1.MatchableHttpGateway) + if !ok { + return errors.Errorf("internal error: MatchableHttpGateway handler received event for %T", object) + } + return h.handler.DeleteMatchableHttpGateway(obj) +} + +func (h genericMatchableHttpGatewayHandler) Update(old, new client.Object) error { + objOld, ok := old.(*gateway_solo_io_v1.MatchableHttpGateway) + if !ok { + return errors.Errorf("internal error: MatchableHttpGateway handler received event for %T", old) + } + objNew, ok := new.(*gateway_solo_io_v1.MatchableHttpGateway) + if !ok { + return errors.Errorf("internal error: MatchableHttpGateway handler received event for %T", new) + } + return h.handler.UpdateMatchableHttpGateway(objOld, objNew) +} + +func (h genericMatchableHttpGatewayHandler) Generic(object client.Object) error { + obj, ok := object.(*gateway_solo_io_v1.MatchableHttpGateway) + if !ok { + return errors.Errorf("internal error: MatchableHttpGateway handler received event for %T", object) + } + return h.handler.GenericMatchableHttpGateway(obj) +} + +// Handle events for the MatchableTcpGateway Resource +// DEPRECATED: Prefer reconciler pattern. +type MatchableTcpGatewayEventHandler interface { + CreateMatchableTcpGateway(obj *gateway_solo_io_v1.MatchableTcpGateway) error + UpdateMatchableTcpGateway(old, new *gateway_solo_io_v1.MatchableTcpGateway) error + DeleteMatchableTcpGateway(obj *gateway_solo_io_v1.MatchableTcpGateway) error + GenericMatchableTcpGateway(obj *gateway_solo_io_v1.MatchableTcpGateway) error +} + +type MatchableTcpGatewayEventHandlerFuncs struct { + OnCreate func(obj *gateway_solo_io_v1.MatchableTcpGateway) error + OnUpdate func(old, new *gateway_solo_io_v1.MatchableTcpGateway) error + OnDelete func(obj *gateway_solo_io_v1.MatchableTcpGateway) error + OnGeneric func(obj *gateway_solo_io_v1.MatchableTcpGateway) error +} + +func (f *MatchableTcpGatewayEventHandlerFuncs) CreateMatchableTcpGateway(obj *gateway_solo_io_v1.MatchableTcpGateway) error { + if f.OnCreate == nil { + return nil + } + return f.OnCreate(obj) +} + +func (f *MatchableTcpGatewayEventHandlerFuncs) DeleteMatchableTcpGateway(obj *gateway_solo_io_v1.MatchableTcpGateway) error { + if f.OnDelete == nil { + return nil + } + return f.OnDelete(obj) +} + +func (f *MatchableTcpGatewayEventHandlerFuncs) UpdateMatchableTcpGateway(objOld, objNew *gateway_solo_io_v1.MatchableTcpGateway) error { + if f.OnUpdate == nil { + return nil + } + return f.OnUpdate(objOld, objNew) +} + +func (f *MatchableTcpGatewayEventHandlerFuncs) GenericMatchableTcpGateway(obj *gateway_solo_io_v1.MatchableTcpGateway) error { + if f.OnGeneric == nil { + return nil + } + return f.OnGeneric(obj) +} + +type MatchableTcpGatewayEventWatcher interface { + AddEventHandler(ctx context.Context, h MatchableTcpGatewayEventHandler, predicates ...predicate.Predicate) error +} + +type matchableTcpGatewayEventWatcher struct { + watcher events.EventWatcher +} + +func NewMatchableTcpGatewayEventWatcher(name string, mgr manager.Manager) MatchableTcpGatewayEventWatcher { + return &matchableTcpGatewayEventWatcher{ + watcher: events.NewWatcher(name, mgr, &gateway_solo_io_v1.MatchableTcpGateway{}), + } +} + +func (c *matchableTcpGatewayEventWatcher) AddEventHandler(ctx context.Context, h MatchableTcpGatewayEventHandler, predicates ...predicate.Predicate) error { + handler := genericMatchableTcpGatewayHandler{handler: h} + if err := c.watcher.Watch(ctx, handler, predicates...); err != nil { + return err + } + return nil +} + +// genericMatchableTcpGatewayHandler implements a generic events.EventHandler +type genericMatchableTcpGatewayHandler struct { + handler MatchableTcpGatewayEventHandler +} + +func (h genericMatchableTcpGatewayHandler) Create(object client.Object) error { + obj, ok := object.(*gateway_solo_io_v1.MatchableTcpGateway) + if !ok { + return errors.Errorf("internal error: MatchableTcpGateway handler received event for %T", object) + } + return h.handler.CreateMatchableTcpGateway(obj) +} + +func (h genericMatchableTcpGatewayHandler) Delete(object client.Object) error { + obj, ok := object.(*gateway_solo_io_v1.MatchableTcpGateway) + if !ok { + return errors.Errorf("internal error: MatchableTcpGateway handler received event for %T", object) + } + return h.handler.DeleteMatchableTcpGateway(obj) +} + +func (h genericMatchableTcpGatewayHandler) Update(old, new client.Object) error { + objOld, ok := old.(*gateway_solo_io_v1.MatchableTcpGateway) + if !ok { + return errors.Errorf("internal error: MatchableTcpGateway handler received event for %T", old) + } + objNew, ok := new.(*gateway_solo_io_v1.MatchableTcpGateway) + if !ok { + return errors.Errorf("internal error: MatchableTcpGateway handler received event for %T", new) + } + return h.handler.UpdateMatchableTcpGateway(objOld, objNew) +} + +func (h genericMatchableTcpGatewayHandler) Generic(object client.Object) error { + obj, ok := object.(*gateway_solo_io_v1.MatchableTcpGateway) + if !ok { + return errors.Errorf("internal error: MatchableTcpGateway handler received event for %T", object) + } + return h.handler.GenericMatchableTcpGateway(obj) +} + +// Handle events for the RouteOption Resource +// DEPRECATED: Prefer reconciler pattern. +type RouteOptionEventHandler interface { + CreateRouteOption(obj *gateway_solo_io_v1.RouteOption) error + UpdateRouteOption(old, new *gateway_solo_io_v1.RouteOption) error + DeleteRouteOption(obj *gateway_solo_io_v1.RouteOption) error + GenericRouteOption(obj *gateway_solo_io_v1.RouteOption) error +} + +type RouteOptionEventHandlerFuncs struct { + OnCreate func(obj *gateway_solo_io_v1.RouteOption) error + OnUpdate func(old, new *gateway_solo_io_v1.RouteOption) error + OnDelete func(obj *gateway_solo_io_v1.RouteOption) error + OnGeneric func(obj *gateway_solo_io_v1.RouteOption) error +} + +func (f *RouteOptionEventHandlerFuncs) CreateRouteOption(obj *gateway_solo_io_v1.RouteOption) error { + if f.OnCreate == nil { + return nil + } + return f.OnCreate(obj) +} + +func (f *RouteOptionEventHandlerFuncs) DeleteRouteOption(obj *gateway_solo_io_v1.RouteOption) error { + if f.OnDelete == nil { + return nil + } + return f.OnDelete(obj) +} + +func (f *RouteOptionEventHandlerFuncs) UpdateRouteOption(objOld, objNew *gateway_solo_io_v1.RouteOption) error { + if f.OnUpdate == nil { + return nil + } + return f.OnUpdate(objOld, objNew) +} + +func (f *RouteOptionEventHandlerFuncs) GenericRouteOption(obj *gateway_solo_io_v1.RouteOption) error { + if f.OnGeneric == nil { + return nil + } + return f.OnGeneric(obj) +} + +type RouteOptionEventWatcher interface { + AddEventHandler(ctx context.Context, h RouteOptionEventHandler, predicates ...predicate.Predicate) error +} + +type routeOptionEventWatcher struct { + watcher events.EventWatcher +} + +func NewRouteOptionEventWatcher(name string, mgr manager.Manager) RouteOptionEventWatcher { + return &routeOptionEventWatcher{ + watcher: events.NewWatcher(name, mgr, &gateway_solo_io_v1.RouteOption{}), + } +} + +func (c *routeOptionEventWatcher) AddEventHandler(ctx context.Context, h RouteOptionEventHandler, predicates ...predicate.Predicate) error { + handler := genericRouteOptionHandler{handler: h} + if err := c.watcher.Watch(ctx, handler, predicates...); err != nil { + return err + } + return nil +} + +// genericRouteOptionHandler implements a generic events.EventHandler +type genericRouteOptionHandler struct { + handler RouteOptionEventHandler +} + +func (h genericRouteOptionHandler) Create(object client.Object) error { + obj, ok := object.(*gateway_solo_io_v1.RouteOption) + if !ok { + return errors.Errorf("internal error: RouteOption handler received event for %T", object) + } + return h.handler.CreateRouteOption(obj) +} + +func (h genericRouteOptionHandler) Delete(object client.Object) error { + obj, ok := object.(*gateway_solo_io_v1.RouteOption) + if !ok { + return errors.Errorf("internal error: RouteOption handler received event for %T", object) + } + return h.handler.DeleteRouteOption(obj) +} + +func (h genericRouteOptionHandler) Update(old, new client.Object) error { + objOld, ok := old.(*gateway_solo_io_v1.RouteOption) + if !ok { + return errors.Errorf("internal error: RouteOption handler received event for %T", old) + } + objNew, ok := new.(*gateway_solo_io_v1.RouteOption) + if !ok { + return errors.Errorf("internal error: RouteOption handler received event for %T", new) + } + return h.handler.UpdateRouteOption(objOld, objNew) +} + +func (h genericRouteOptionHandler) Generic(object client.Object) error { + obj, ok := object.(*gateway_solo_io_v1.RouteOption) + if !ok { + return errors.Errorf("internal error: RouteOption handler received event for %T", object) + } + return h.handler.GenericRouteOption(obj) +} + // Handle events for the RouteTable Resource // DEPRECATED: Prefer reconciler pattern. type RouteTableEventHandler interface { @@ -337,3 +872,110 @@ func (h genericVirtualServiceHandler) Generic(object client.Object) error { } return h.handler.GenericVirtualService(obj) } + +// Handle events for the VirtualHostOption Resource +// DEPRECATED: Prefer reconciler pattern. +type VirtualHostOptionEventHandler interface { + CreateVirtualHostOption(obj *gateway_solo_io_v1.VirtualHostOption) error + UpdateVirtualHostOption(old, new *gateway_solo_io_v1.VirtualHostOption) error + DeleteVirtualHostOption(obj *gateway_solo_io_v1.VirtualHostOption) error + GenericVirtualHostOption(obj *gateway_solo_io_v1.VirtualHostOption) error +} + +type VirtualHostOptionEventHandlerFuncs struct { + OnCreate func(obj *gateway_solo_io_v1.VirtualHostOption) error + OnUpdate func(old, new *gateway_solo_io_v1.VirtualHostOption) error + OnDelete func(obj *gateway_solo_io_v1.VirtualHostOption) error + OnGeneric func(obj *gateway_solo_io_v1.VirtualHostOption) error +} + +func (f *VirtualHostOptionEventHandlerFuncs) CreateVirtualHostOption(obj *gateway_solo_io_v1.VirtualHostOption) error { + if f.OnCreate == nil { + return nil + } + return f.OnCreate(obj) +} + +func (f *VirtualHostOptionEventHandlerFuncs) DeleteVirtualHostOption(obj *gateway_solo_io_v1.VirtualHostOption) error { + if f.OnDelete == nil { + return nil + } + return f.OnDelete(obj) +} + +func (f *VirtualHostOptionEventHandlerFuncs) UpdateVirtualHostOption(objOld, objNew *gateway_solo_io_v1.VirtualHostOption) error { + if f.OnUpdate == nil { + return nil + } + return f.OnUpdate(objOld, objNew) +} + +func (f *VirtualHostOptionEventHandlerFuncs) GenericVirtualHostOption(obj *gateway_solo_io_v1.VirtualHostOption) error { + if f.OnGeneric == nil { + return nil + } + return f.OnGeneric(obj) +} + +type VirtualHostOptionEventWatcher interface { + AddEventHandler(ctx context.Context, h VirtualHostOptionEventHandler, predicates ...predicate.Predicate) error +} + +type virtualHostOptionEventWatcher struct { + watcher events.EventWatcher +} + +func NewVirtualHostOptionEventWatcher(name string, mgr manager.Manager) VirtualHostOptionEventWatcher { + return &virtualHostOptionEventWatcher{ + watcher: events.NewWatcher(name, mgr, &gateway_solo_io_v1.VirtualHostOption{}), + } +} + +func (c *virtualHostOptionEventWatcher) AddEventHandler(ctx context.Context, h VirtualHostOptionEventHandler, predicates ...predicate.Predicate) error { + handler := genericVirtualHostOptionHandler{handler: h} + if err := c.watcher.Watch(ctx, handler, predicates...); err != nil { + return err + } + return nil +} + +// genericVirtualHostOptionHandler implements a generic events.EventHandler +type genericVirtualHostOptionHandler struct { + handler VirtualHostOptionEventHandler +} + +func (h genericVirtualHostOptionHandler) Create(object client.Object) error { + obj, ok := object.(*gateway_solo_io_v1.VirtualHostOption) + if !ok { + return errors.Errorf("internal error: VirtualHostOption handler received event for %T", object) + } + return h.handler.CreateVirtualHostOption(obj) +} + +func (h genericVirtualHostOptionHandler) Delete(object client.Object) error { + obj, ok := object.(*gateway_solo_io_v1.VirtualHostOption) + if !ok { + return errors.Errorf("internal error: VirtualHostOption handler received event for %T", object) + } + return h.handler.DeleteVirtualHostOption(obj) +} + +func (h genericVirtualHostOptionHandler) Update(old, new client.Object) error { + objOld, ok := old.(*gateway_solo_io_v1.VirtualHostOption) + if !ok { + return errors.Errorf("internal error: VirtualHostOption handler received event for %T", old) + } + objNew, ok := new.(*gateway_solo_io_v1.VirtualHostOption) + if !ok { + return errors.Errorf("internal error: VirtualHostOption handler received event for %T", new) + } + return h.handler.UpdateVirtualHostOption(objOld, objNew) +} + +func (h genericVirtualHostOptionHandler) Generic(object client.Object) error { + obj, ok := object.(*gateway_solo_io_v1.VirtualHostOption) + if !ok { + return errors.Errorf("internal error: VirtualHostOption handler received event for %T", object) + } + return h.handler.GenericVirtualHostOption(obj) +} diff --git a/pkg/api/gateway.solo.io/v1/controller/mocks/event_handlers.go b/pkg/api/gateway.solo.io/v1/controller/mocks/event_handlers.go index 421375ed6..04bcf5965 100644 --- a/pkg/api/gateway.solo.io/v1/controller/mocks/event_handlers.go +++ b/pkg/api/gateway.solo.io/v1/controller/mocks/event_handlers.go @@ -14,30 +14,30 @@ import ( predicate "sigs.k8s.io/controller-runtime/pkg/predicate" ) -// MockGatewayEventHandler is a mock of GatewayEventHandler interface +// MockGatewayEventHandler is a mock of GatewayEventHandler interface. type MockGatewayEventHandler struct { ctrl *gomock.Controller recorder *MockGatewayEventHandlerMockRecorder } -// MockGatewayEventHandlerMockRecorder is the mock recorder for MockGatewayEventHandler +// MockGatewayEventHandlerMockRecorder is the mock recorder for MockGatewayEventHandler. type MockGatewayEventHandlerMockRecorder struct { mock *MockGatewayEventHandler } -// NewMockGatewayEventHandler creates a new mock instance +// NewMockGatewayEventHandler creates a new mock instance. func NewMockGatewayEventHandler(ctrl *gomock.Controller) *MockGatewayEventHandler { mock := &MockGatewayEventHandler{ctrl: ctrl} mock.recorder = &MockGatewayEventHandlerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockGatewayEventHandler) EXPECT() *MockGatewayEventHandlerMockRecorder { return m.recorder } -// CreateGateway mocks base method +// CreateGateway mocks base method. func (m *MockGatewayEventHandler) CreateGateway(obj *v1.Gateway) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "CreateGateway", obj) @@ -45,27 +45,13 @@ func (m *MockGatewayEventHandler) CreateGateway(obj *v1.Gateway) error { return ret0 } -// CreateGateway indicates an expected call of CreateGateway +// CreateGateway indicates an expected call of CreateGateway. func (mr *MockGatewayEventHandlerMockRecorder) CreateGateway(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateGateway", reflect.TypeOf((*MockGatewayEventHandler)(nil).CreateGateway), obj) } -// UpdateGateway mocks base method -func (m *MockGatewayEventHandler) UpdateGateway(old, new *v1.Gateway) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateGateway", old, new) - ret0, _ := ret[0].(error) - return ret0 -} - -// UpdateGateway indicates an expected call of UpdateGateway -func (mr *MockGatewayEventHandlerMockRecorder) UpdateGateway(old, new interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateGateway", reflect.TypeOf((*MockGatewayEventHandler)(nil).UpdateGateway), old, new) -} - -// DeleteGateway mocks base method +// DeleteGateway mocks base method. func (m *MockGatewayEventHandler) DeleteGateway(obj *v1.Gateway) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "DeleteGateway", obj) @@ -73,13 +59,13 @@ func (m *MockGatewayEventHandler) DeleteGateway(obj *v1.Gateway) error { return ret0 } -// DeleteGateway indicates an expected call of DeleteGateway +// DeleteGateway indicates an expected call of DeleteGateway. func (mr *MockGatewayEventHandlerMockRecorder) DeleteGateway(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteGateway", reflect.TypeOf((*MockGatewayEventHandler)(nil).DeleteGateway), obj) } -// GenericGateway mocks base method +// GenericGateway mocks base method. func (m *MockGatewayEventHandler) GenericGateway(obj *v1.Gateway) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GenericGateway", obj) @@ -87,36 +73,50 @@ func (m *MockGatewayEventHandler) GenericGateway(obj *v1.Gateway) error { return ret0 } -// GenericGateway indicates an expected call of GenericGateway +// GenericGateway indicates an expected call of GenericGateway. func (mr *MockGatewayEventHandlerMockRecorder) GenericGateway(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericGateway", reflect.TypeOf((*MockGatewayEventHandler)(nil).GenericGateway), obj) } -// MockGatewayEventWatcher is a mock of GatewayEventWatcher interface +// UpdateGateway mocks base method. +func (m *MockGatewayEventHandler) UpdateGateway(old, new *v1.Gateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateGateway", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateGateway indicates an expected call of UpdateGateway. +func (mr *MockGatewayEventHandlerMockRecorder) UpdateGateway(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateGateway", reflect.TypeOf((*MockGatewayEventHandler)(nil).UpdateGateway), old, new) +} + +// MockGatewayEventWatcher is a mock of GatewayEventWatcher interface. type MockGatewayEventWatcher struct { ctrl *gomock.Controller recorder *MockGatewayEventWatcherMockRecorder } -// MockGatewayEventWatcherMockRecorder is the mock recorder for MockGatewayEventWatcher +// MockGatewayEventWatcherMockRecorder is the mock recorder for MockGatewayEventWatcher. type MockGatewayEventWatcherMockRecorder struct { mock *MockGatewayEventWatcher } -// NewMockGatewayEventWatcher creates a new mock instance +// NewMockGatewayEventWatcher creates a new mock instance. func NewMockGatewayEventWatcher(ctrl *gomock.Controller) *MockGatewayEventWatcher { mock := &MockGatewayEventWatcher{ctrl: ctrl} mock.recorder = &MockGatewayEventWatcherMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockGatewayEventWatcher) EXPECT() *MockGatewayEventWatcherMockRecorder { return m.recorder } -// AddEventHandler mocks base method +// AddEventHandler mocks base method. func (m *MockGatewayEventWatcher) AddEventHandler(ctx context.Context, h controller.GatewayEventHandler, predicates ...predicate.Predicate) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, h} @@ -128,37 +128,642 @@ func (m *MockGatewayEventWatcher) AddEventHandler(ctx context.Context, h control return ret0 } -// AddEventHandler indicates an expected call of AddEventHandler +// AddEventHandler indicates an expected call of AddEventHandler. func (mr *MockGatewayEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, h}, predicates...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockGatewayEventWatcher)(nil).AddEventHandler), varargs...) } -// MockRouteTableEventHandler is a mock of RouteTableEventHandler interface +// MockHttpListenerOptionEventHandler is a mock of HttpListenerOptionEventHandler interface. +type MockHttpListenerOptionEventHandler struct { + ctrl *gomock.Controller + recorder *MockHttpListenerOptionEventHandlerMockRecorder +} + +// MockHttpListenerOptionEventHandlerMockRecorder is the mock recorder for MockHttpListenerOptionEventHandler. +type MockHttpListenerOptionEventHandlerMockRecorder struct { + mock *MockHttpListenerOptionEventHandler +} + +// NewMockHttpListenerOptionEventHandler creates a new mock instance. +func NewMockHttpListenerOptionEventHandler(ctrl *gomock.Controller) *MockHttpListenerOptionEventHandler { + mock := &MockHttpListenerOptionEventHandler{ctrl: ctrl} + mock.recorder = &MockHttpListenerOptionEventHandlerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockHttpListenerOptionEventHandler) EXPECT() *MockHttpListenerOptionEventHandlerMockRecorder { + return m.recorder +} + +// CreateHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionEventHandler) CreateHttpListenerOption(obj *v1.HttpListenerOption) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateHttpListenerOption", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateHttpListenerOption indicates an expected call of CreateHttpListenerOption. +func (mr *MockHttpListenerOptionEventHandlerMockRecorder) CreateHttpListenerOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionEventHandler)(nil).CreateHttpListenerOption), obj) +} + +// DeleteHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionEventHandler) DeleteHttpListenerOption(obj *v1.HttpListenerOption) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteHttpListenerOption", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteHttpListenerOption indicates an expected call of DeleteHttpListenerOption. +func (mr *MockHttpListenerOptionEventHandlerMockRecorder) DeleteHttpListenerOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionEventHandler)(nil).DeleteHttpListenerOption), obj) +} + +// GenericHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionEventHandler) GenericHttpListenerOption(obj *v1.HttpListenerOption) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GenericHttpListenerOption", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// GenericHttpListenerOption indicates an expected call of GenericHttpListenerOption. +func (mr *MockHttpListenerOptionEventHandlerMockRecorder) GenericHttpListenerOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionEventHandler)(nil).GenericHttpListenerOption), obj) +} + +// UpdateHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionEventHandler) UpdateHttpListenerOption(old, new *v1.HttpListenerOption) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateHttpListenerOption", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateHttpListenerOption indicates an expected call of UpdateHttpListenerOption. +func (mr *MockHttpListenerOptionEventHandlerMockRecorder) UpdateHttpListenerOption(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionEventHandler)(nil).UpdateHttpListenerOption), old, new) +} + +// MockHttpListenerOptionEventWatcher is a mock of HttpListenerOptionEventWatcher interface. +type MockHttpListenerOptionEventWatcher struct { + ctrl *gomock.Controller + recorder *MockHttpListenerOptionEventWatcherMockRecorder +} + +// MockHttpListenerOptionEventWatcherMockRecorder is the mock recorder for MockHttpListenerOptionEventWatcher. +type MockHttpListenerOptionEventWatcherMockRecorder struct { + mock *MockHttpListenerOptionEventWatcher +} + +// NewMockHttpListenerOptionEventWatcher creates a new mock instance. +func NewMockHttpListenerOptionEventWatcher(ctrl *gomock.Controller) *MockHttpListenerOptionEventWatcher { + mock := &MockHttpListenerOptionEventWatcher{ctrl: ctrl} + mock.recorder = &MockHttpListenerOptionEventWatcherMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockHttpListenerOptionEventWatcher) EXPECT() *MockHttpListenerOptionEventWatcherMockRecorder { + return m.recorder +} + +// AddEventHandler mocks base method. +func (m *MockHttpListenerOptionEventWatcher) AddEventHandler(ctx context.Context, h controller.HttpListenerOptionEventHandler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, h} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "AddEventHandler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddEventHandler indicates an expected call of AddEventHandler. +func (mr *MockHttpListenerOptionEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, h}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockHttpListenerOptionEventWatcher)(nil).AddEventHandler), varargs...) +} + +// MockListenerOptionEventHandler is a mock of ListenerOptionEventHandler interface. +type MockListenerOptionEventHandler struct { + ctrl *gomock.Controller + recorder *MockListenerOptionEventHandlerMockRecorder +} + +// MockListenerOptionEventHandlerMockRecorder is the mock recorder for MockListenerOptionEventHandler. +type MockListenerOptionEventHandlerMockRecorder struct { + mock *MockListenerOptionEventHandler +} + +// NewMockListenerOptionEventHandler creates a new mock instance. +func NewMockListenerOptionEventHandler(ctrl *gomock.Controller) *MockListenerOptionEventHandler { + mock := &MockListenerOptionEventHandler{ctrl: ctrl} + mock.recorder = &MockListenerOptionEventHandlerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockListenerOptionEventHandler) EXPECT() *MockListenerOptionEventHandlerMockRecorder { + return m.recorder +} + +// CreateListenerOption mocks base method. +func (m *MockListenerOptionEventHandler) CreateListenerOption(obj *v1.ListenerOption) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateListenerOption", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateListenerOption indicates an expected call of CreateListenerOption. +func (mr *MockListenerOptionEventHandlerMockRecorder) CreateListenerOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateListenerOption", reflect.TypeOf((*MockListenerOptionEventHandler)(nil).CreateListenerOption), obj) +} + +// DeleteListenerOption mocks base method. +func (m *MockListenerOptionEventHandler) DeleteListenerOption(obj *v1.ListenerOption) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteListenerOption", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteListenerOption indicates an expected call of DeleteListenerOption. +func (mr *MockListenerOptionEventHandlerMockRecorder) DeleteListenerOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteListenerOption", reflect.TypeOf((*MockListenerOptionEventHandler)(nil).DeleteListenerOption), obj) +} + +// GenericListenerOption mocks base method. +func (m *MockListenerOptionEventHandler) GenericListenerOption(obj *v1.ListenerOption) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GenericListenerOption", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// GenericListenerOption indicates an expected call of GenericListenerOption. +func (mr *MockListenerOptionEventHandlerMockRecorder) GenericListenerOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericListenerOption", reflect.TypeOf((*MockListenerOptionEventHandler)(nil).GenericListenerOption), obj) +} + +// UpdateListenerOption mocks base method. +func (m *MockListenerOptionEventHandler) UpdateListenerOption(old, new *v1.ListenerOption) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateListenerOption", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateListenerOption indicates an expected call of UpdateListenerOption. +func (mr *MockListenerOptionEventHandlerMockRecorder) UpdateListenerOption(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateListenerOption", reflect.TypeOf((*MockListenerOptionEventHandler)(nil).UpdateListenerOption), old, new) +} + +// MockListenerOptionEventWatcher is a mock of ListenerOptionEventWatcher interface. +type MockListenerOptionEventWatcher struct { + ctrl *gomock.Controller + recorder *MockListenerOptionEventWatcherMockRecorder +} + +// MockListenerOptionEventWatcherMockRecorder is the mock recorder for MockListenerOptionEventWatcher. +type MockListenerOptionEventWatcherMockRecorder struct { + mock *MockListenerOptionEventWatcher +} + +// NewMockListenerOptionEventWatcher creates a new mock instance. +func NewMockListenerOptionEventWatcher(ctrl *gomock.Controller) *MockListenerOptionEventWatcher { + mock := &MockListenerOptionEventWatcher{ctrl: ctrl} + mock.recorder = &MockListenerOptionEventWatcherMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockListenerOptionEventWatcher) EXPECT() *MockListenerOptionEventWatcherMockRecorder { + return m.recorder +} + +// AddEventHandler mocks base method. +func (m *MockListenerOptionEventWatcher) AddEventHandler(ctx context.Context, h controller.ListenerOptionEventHandler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, h} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "AddEventHandler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddEventHandler indicates an expected call of AddEventHandler. +func (mr *MockListenerOptionEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, h}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockListenerOptionEventWatcher)(nil).AddEventHandler), varargs...) +} + +// MockMatchableHttpGatewayEventHandler is a mock of MatchableHttpGatewayEventHandler interface. +type MockMatchableHttpGatewayEventHandler struct { + ctrl *gomock.Controller + recorder *MockMatchableHttpGatewayEventHandlerMockRecorder +} + +// MockMatchableHttpGatewayEventHandlerMockRecorder is the mock recorder for MockMatchableHttpGatewayEventHandler. +type MockMatchableHttpGatewayEventHandlerMockRecorder struct { + mock *MockMatchableHttpGatewayEventHandler +} + +// NewMockMatchableHttpGatewayEventHandler creates a new mock instance. +func NewMockMatchableHttpGatewayEventHandler(ctrl *gomock.Controller) *MockMatchableHttpGatewayEventHandler { + mock := &MockMatchableHttpGatewayEventHandler{ctrl: ctrl} + mock.recorder = &MockMatchableHttpGatewayEventHandlerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMatchableHttpGatewayEventHandler) EXPECT() *MockMatchableHttpGatewayEventHandlerMockRecorder { + return m.recorder +} + +// CreateMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayEventHandler) CreateMatchableHttpGateway(obj *v1.MatchableHttpGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateMatchableHttpGateway", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateMatchableHttpGateway indicates an expected call of CreateMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayEventHandlerMockRecorder) CreateMatchableHttpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayEventHandler)(nil).CreateMatchableHttpGateway), obj) +} + +// DeleteMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayEventHandler) DeleteMatchableHttpGateway(obj *v1.MatchableHttpGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteMatchableHttpGateway", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteMatchableHttpGateway indicates an expected call of DeleteMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayEventHandlerMockRecorder) DeleteMatchableHttpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayEventHandler)(nil).DeleteMatchableHttpGateway), obj) +} + +// GenericMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayEventHandler) GenericMatchableHttpGateway(obj *v1.MatchableHttpGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GenericMatchableHttpGateway", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// GenericMatchableHttpGateway indicates an expected call of GenericMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayEventHandlerMockRecorder) GenericMatchableHttpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayEventHandler)(nil).GenericMatchableHttpGateway), obj) +} + +// UpdateMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayEventHandler) UpdateMatchableHttpGateway(old, new *v1.MatchableHttpGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateMatchableHttpGateway", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateMatchableHttpGateway indicates an expected call of UpdateMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayEventHandlerMockRecorder) UpdateMatchableHttpGateway(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayEventHandler)(nil).UpdateMatchableHttpGateway), old, new) +} + +// MockMatchableHttpGatewayEventWatcher is a mock of MatchableHttpGatewayEventWatcher interface. +type MockMatchableHttpGatewayEventWatcher struct { + ctrl *gomock.Controller + recorder *MockMatchableHttpGatewayEventWatcherMockRecorder +} + +// MockMatchableHttpGatewayEventWatcherMockRecorder is the mock recorder for MockMatchableHttpGatewayEventWatcher. +type MockMatchableHttpGatewayEventWatcherMockRecorder struct { + mock *MockMatchableHttpGatewayEventWatcher +} + +// NewMockMatchableHttpGatewayEventWatcher creates a new mock instance. +func NewMockMatchableHttpGatewayEventWatcher(ctrl *gomock.Controller) *MockMatchableHttpGatewayEventWatcher { + mock := &MockMatchableHttpGatewayEventWatcher{ctrl: ctrl} + mock.recorder = &MockMatchableHttpGatewayEventWatcherMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMatchableHttpGatewayEventWatcher) EXPECT() *MockMatchableHttpGatewayEventWatcherMockRecorder { + return m.recorder +} + +// AddEventHandler mocks base method. +func (m *MockMatchableHttpGatewayEventWatcher) AddEventHandler(ctx context.Context, h controller.MatchableHttpGatewayEventHandler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, h} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "AddEventHandler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddEventHandler indicates an expected call of AddEventHandler. +func (mr *MockMatchableHttpGatewayEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, h}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockMatchableHttpGatewayEventWatcher)(nil).AddEventHandler), varargs...) +} + +// MockMatchableTcpGatewayEventHandler is a mock of MatchableTcpGatewayEventHandler interface. +type MockMatchableTcpGatewayEventHandler struct { + ctrl *gomock.Controller + recorder *MockMatchableTcpGatewayEventHandlerMockRecorder +} + +// MockMatchableTcpGatewayEventHandlerMockRecorder is the mock recorder for MockMatchableTcpGatewayEventHandler. +type MockMatchableTcpGatewayEventHandlerMockRecorder struct { + mock *MockMatchableTcpGatewayEventHandler +} + +// NewMockMatchableTcpGatewayEventHandler creates a new mock instance. +func NewMockMatchableTcpGatewayEventHandler(ctrl *gomock.Controller) *MockMatchableTcpGatewayEventHandler { + mock := &MockMatchableTcpGatewayEventHandler{ctrl: ctrl} + mock.recorder = &MockMatchableTcpGatewayEventHandlerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMatchableTcpGatewayEventHandler) EXPECT() *MockMatchableTcpGatewayEventHandlerMockRecorder { + return m.recorder +} + +// CreateMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayEventHandler) CreateMatchableTcpGateway(obj *v1.MatchableTcpGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateMatchableTcpGateway", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateMatchableTcpGateway indicates an expected call of CreateMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayEventHandlerMockRecorder) CreateMatchableTcpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayEventHandler)(nil).CreateMatchableTcpGateway), obj) +} + +// DeleteMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayEventHandler) DeleteMatchableTcpGateway(obj *v1.MatchableTcpGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteMatchableTcpGateway", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteMatchableTcpGateway indicates an expected call of DeleteMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayEventHandlerMockRecorder) DeleteMatchableTcpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayEventHandler)(nil).DeleteMatchableTcpGateway), obj) +} + +// GenericMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayEventHandler) GenericMatchableTcpGateway(obj *v1.MatchableTcpGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GenericMatchableTcpGateway", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// GenericMatchableTcpGateway indicates an expected call of GenericMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayEventHandlerMockRecorder) GenericMatchableTcpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayEventHandler)(nil).GenericMatchableTcpGateway), obj) +} + +// UpdateMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayEventHandler) UpdateMatchableTcpGateway(old, new *v1.MatchableTcpGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateMatchableTcpGateway", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateMatchableTcpGateway indicates an expected call of UpdateMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayEventHandlerMockRecorder) UpdateMatchableTcpGateway(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayEventHandler)(nil).UpdateMatchableTcpGateway), old, new) +} + +// MockMatchableTcpGatewayEventWatcher is a mock of MatchableTcpGatewayEventWatcher interface. +type MockMatchableTcpGatewayEventWatcher struct { + ctrl *gomock.Controller + recorder *MockMatchableTcpGatewayEventWatcherMockRecorder +} + +// MockMatchableTcpGatewayEventWatcherMockRecorder is the mock recorder for MockMatchableTcpGatewayEventWatcher. +type MockMatchableTcpGatewayEventWatcherMockRecorder struct { + mock *MockMatchableTcpGatewayEventWatcher +} + +// NewMockMatchableTcpGatewayEventWatcher creates a new mock instance. +func NewMockMatchableTcpGatewayEventWatcher(ctrl *gomock.Controller) *MockMatchableTcpGatewayEventWatcher { + mock := &MockMatchableTcpGatewayEventWatcher{ctrl: ctrl} + mock.recorder = &MockMatchableTcpGatewayEventWatcherMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMatchableTcpGatewayEventWatcher) EXPECT() *MockMatchableTcpGatewayEventWatcherMockRecorder { + return m.recorder +} + +// AddEventHandler mocks base method. +func (m *MockMatchableTcpGatewayEventWatcher) AddEventHandler(ctx context.Context, h controller.MatchableTcpGatewayEventHandler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, h} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "AddEventHandler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddEventHandler indicates an expected call of AddEventHandler. +func (mr *MockMatchableTcpGatewayEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, h}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockMatchableTcpGatewayEventWatcher)(nil).AddEventHandler), varargs...) +} + +// MockRouteOptionEventHandler is a mock of RouteOptionEventHandler interface. +type MockRouteOptionEventHandler struct { + ctrl *gomock.Controller + recorder *MockRouteOptionEventHandlerMockRecorder +} + +// MockRouteOptionEventHandlerMockRecorder is the mock recorder for MockRouteOptionEventHandler. +type MockRouteOptionEventHandlerMockRecorder struct { + mock *MockRouteOptionEventHandler +} + +// NewMockRouteOptionEventHandler creates a new mock instance. +func NewMockRouteOptionEventHandler(ctrl *gomock.Controller) *MockRouteOptionEventHandler { + mock := &MockRouteOptionEventHandler{ctrl: ctrl} + mock.recorder = &MockRouteOptionEventHandlerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockRouteOptionEventHandler) EXPECT() *MockRouteOptionEventHandlerMockRecorder { + return m.recorder +} + +// CreateRouteOption mocks base method. +func (m *MockRouteOptionEventHandler) CreateRouteOption(obj *v1.RouteOption) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateRouteOption", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateRouteOption indicates an expected call of CreateRouteOption. +func (mr *MockRouteOptionEventHandlerMockRecorder) CreateRouteOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateRouteOption", reflect.TypeOf((*MockRouteOptionEventHandler)(nil).CreateRouteOption), obj) +} + +// DeleteRouteOption mocks base method. +func (m *MockRouteOptionEventHandler) DeleteRouteOption(obj *v1.RouteOption) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteRouteOption", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteRouteOption indicates an expected call of DeleteRouteOption. +func (mr *MockRouteOptionEventHandlerMockRecorder) DeleteRouteOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteRouteOption", reflect.TypeOf((*MockRouteOptionEventHandler)(nil).DeleteRouteOption), obj) +} + +// GenericRouteOption mocks base method. +func (m *MockRouteOptionEventHandler) GenericRouteOption(obj *v1.RouteOption) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GenericRouteOption", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// GenericRouteOption indicates an expected call of GenericRouteOption. +func (mr *MockRouteOptionEventHandlerMockRecorder) GenericRouteOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericRouteOption", reflect.TypeOf((*MockRouteOptionEventHandler)(nil).GenericRouteOption), obj) +} + +// UpdateRouteOption mocks base method. +func (m *MockRouteOptionEventHandler) UpdateRouteOption(old, new *v1.RouteOption) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateRouteOption", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateRouteOption indicates an expected call of UpdateRouteOption. +func (mr *MockRouteOptionEventHandlerMockRecorder) UpdateRouteOption(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRouteOption", reflect.TypeOf((*MockRouteOptionEventHandler)(nil).UpdateRouteOption), old, new) +} + +// MockRouteOptionEventWatcher is a mock of RouteOptionEventWatcher interface. +type MockRouteOptionEventWatcher struct { + ctrl *gomock.Controller + recorder *MockRouteOptionEventWatcherMockRecorder +} + +// MockRouteOptionEventWatcherMockRecorder is the mock recorder for MockRouteOptionEventWatcher. +type MockRouteOptionEventWatcherMockRecorder struct { + mock *MockRouteOptionEventWatcher +} + +// NewMockRouteOptionEventWatcher creates a new mock instance. +func NewMockRouteOptionEventWatcher(ctrl *gomock.Controller) *MockRouteOptionEventWatcher { + mock := &MockRouteOptionEventWatcher{ctrl: ctrl} + mock.recorder = &MockRouteOptionEventWatcherMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockRouteOptionEventWatcher) EXPECT() *MockRouteOptionEventWatcherMockRecorder { + return m.recorder +} + +// AddEventHandler mocks base method. +func (m *MockRouteOptionEventWatcher) AddEventHandler(ctx context.Context, h controller.RouteOptionEventHandler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, h} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "AddEventHandler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddEventHandler indicates an expected call of AddEventHandler. +func (mr *MockRouteOptionEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, h}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockRouteOptionEventWatcher)(nil).AddEventHandler), varargs...) +} + +// MockRouteTableEventHandler is a mock of RouteTableEventHandler interface. type MockRouteTableEventHandler struct { ctrl *gomock.Controller recorder *MockRouteTableEventHandlerMockRecorder } -// MockRouteTableEventHandlerMockRecorder is the mock recorder for MockRouteTableEventHandler +// MockRouteTableEventHandlerMockRecorder is the mock recorder for MockRouteTableEventHandler. type MockRouteTableEventHandlerMockRecorder struct { mock *MockRouteTableEventHandler } -// NewMockRouteTableEventHandler creates a new mock instance +// NewMockRouteTableEventHandler creates a new mock instance. func NewMockRouteTableEventHandler(ctrl *gomock.Controller) *MockRouteTableEventHandler { mock := &MockRouteTableEventHandler{ctrl: ctrl} mock.recorder = &MockRouteTableEventHandlerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockRouteTableEventHandler) EXPECT() *MockRouteTableEventHandlerMockRecorder { return m.recorder } -// CreateRouteTable mocks base method +// CreateRouteTable mocks base method. func (m *MockRouteTableEventHandler) CreateRouteTable(obj *v1.RouteTable) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "CreateRouteTable", obj) @@ -166,27 +771,13 @@ func (m *MockRouteTableEventHandler) CreateRouteTable(obj *v1.RouteTable) error return ret0 } -// CreateRouteTable indicates an expected call of CreateRouteTable +// CreateRouteTable indicates an expected call of CreateRouteTable. func (mr *MockRouteTableEventHandlerMockRecorder) CreateRouteTable(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateRouteTable", reflect.TypeOf((*MockRouteTableEventHandler)(nil).CreateRouteTable), obj) } -// UpdateRouteTable mocks base method -func (m *MockRouteTableEventHandler) UpdateRouteTable(old, new *v1.RouteTable) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateRouteTable", old, new) - ret0, _ := ret[0].(error) - return ret0 -} - -// UpdateRouteTable indicates an expected call of UpdateRouteTable -func (mr *MockRouteTableEventHandlerMockRecorder) UpdateRouteTable(old, new interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRouteTable", reflect.TypeOf((*MockRouteTableEventHandler)(nil).UpdateRouteTable), old, new) -} - -// DeleteRouteTable mocks base method +// DeleteRouteTable mocks base method. func (m *MockRouteTableEventHandler) DeleteRouteTable(obj *v1.RouteTable) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "DeleteRouteTable", obj) @@ -194,13 +785,13 @@ func (m *MockRouteTableEventHandler) DeleteRouteTable(obj *v1.RouteTable) error return ret0 } -// DeleteRouteTable indicates an expected call of DeleteRouteTable +// DeleteRouteTable indicates an expected call of DeleteRouteTable. func (mr *MockRouteTableEventHandlerMockRecorder) DeleteRouteTable(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteRouteTable", reflect.TypeOf((*MockRouteTableEventHandler)(nil).DeleteRouteTable), obj) } -// GenericRouteTable mocks base method +// GenericRouteTable mocks base method. func (m *MockRouteTableEventHandler) GenericRouteTable(obj *v1.RouteTable) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GenericRouteTable", obj) @@ -208,36 +799,50 @@ func (m *MockRouteTableEventHandler) GenericRouteTable(obj *v1.RouteTable) error return ret0 } -// GenericRouteTable indicates an expected call of GenericRouteTable +// GenericRouteTable indicates an expected call of GenericRouteTable. func (mr *MockRouteTableEventHandlerMockRecorder) GenericRouteTable(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericRouteTable", reflect.TypeOf((*MockRouteTableEventHandler)(nil).GenericRouteTable), obj) } -// MockRouteTableEventWatcher is a mock of RouteTableEventWatcher interface +// UpdateRouteTable mocks base method. +func (m *MockRouteTableEventHandler) UpdateRouteTable(old, new *v1.RouteTable) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateRouteTable", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateRouteTable indicates an expected call of UpdateRouteTable. +func (mr *MockRouteTableEventHandlerMockRecorder) UpdateRouteTable(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRouteTable", reflect.TypeOf((*MockRouteTableEventHandler)(nil).UpdateRouteTable), old, new) +} + +// MockRouteTableEventWatcher is a mock of RouteTableEventWatcher interface. type MockRouteTableEventWatcher struct { ctrl *gomock.Controller recorder *MockRouteTableEventWatcherMockRecorder } -// MockRouteTableEventWatcherMockRecorder is the mock recorder for MockRouteTableEventWatcher +// MockRouteTableEventWatcherMockRecorder is the mock recorder for MockRouteTableEventWatcher. type MockRouteTableEventWatcherMockRecorder struct { mock *MockRouteTableEventWatcher } -// NewMockRouteTableEventWatcher creates a new mock instance +// NewMockRouteTableEventWatcher creates a new mock instance. func NewMockRouteTableEventWatcher(ctrl *gomock.Controller) *MockRouteTableEventWatcher { mock := &MockRouteTableEventWatcher{ctrl: ctrl} mock.recorder = &MockRouteTableEventWatcherMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockRouteTableEventWatcher) EXPECT() *MockRouteTableEventWatcherMockRecorder { return m.recorder } -// AddEventHandler mocks base method +// AddEventHandler mocks base method. func (m *MockRouteTableEventWatcher) AddEventHandler(ctx context.Context, h controller.RouteTableEventHandler, predicates ...predicate.Predicate) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, h} @@ -249,37 +854,37 @@ func (m *MockRouteTableEventWatcher) AddEventHandler(ctx context.Context, h cont return ret0 } -// AddEventHandler indicates an expected call of AddEventHandler +// AddEventHandler indicates an expected call of AddEventHandler. func (mr *MockRouteTableEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, h}, predicates...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockRouteTableEventWatcher)(nil).AddEventHandler), varargs...) } -// MockVirtualServiceEventHandler is a mock of VirtualServiceEventHandler interface +// MockVirtualServiceEventHandler is a mock of VirtualServiceEventHandler interface. type MockVirtualServiceEventHandler struct { ctrl *gomock.Controller recorder *MockVirtualServiceEventHandlerMockRecorder } -// MockVirtualServiceEventHandlerMockRecorder is the mock recorder for MockVirtualServiceEventHandler +// MockVirtualServiceEventHandlerMockRecorder is the mock recorder for MockVirtualServiceEventHandler. type MockVirtualServiceEventHandlerMockRecorder struct { mock *MockVirtualServiceEventHandler } -// NewMockVirtualServiceEventHandler creates a new mock instance +// NewMockVirtualServiceEventHandler creates a new mock instance. func NewMockVirtualServiceEventHandler(ctrl *gomock.Controller) *MockVirtualServiceEventHandler { mock := &MockVirtualServiceEventHandler{ctrl: ctrl} mock.recorder = &MockVirtualServiceEventHandlerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockVirtualServiceEventHandler) EXPECT() *MockVirtualServiceEventHandlerMockRecorder { return m.recorder } -// CreateVirtualService mocks base method +// CreateVirtualService mocks base method. func (m *MockVirtualServiceEventHandler) CreateVirtualService(obj *v1.VirtualService) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "CreateVirtualService", obj) @@ -287,27 +892,13 @@ func (m *MockVirtualServiceEventHandler) CreateVirtualService(obj *v1.VirtualSer return ret0 } -// CreateVirtualService indicates an expected call of CreateVirtualService +// CreateVirtualService indicates an expected call of CreateVirtualService. func (mr *MockVirtualServiceEventHandlerMockRecorder) CreateVirtualService(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateVirtualService", reflect.TypeOf((*MockVirtualServiceEventHandler)(nil).CreateVirtualService), obj) } -// UpdateVirtualService mocks base method -func (m *MockVirtualServiceEventHandler) UpdateVirtualService(old, new *v1.VirtualService) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateVirtualService", old, new) - ret0, _ := ret[0].(error) - return ret0 -} - -// UpdateVirtualService indicates an expected call of UpdateVirtualService -func (mr *MockVirtualServiceEventHandlerMockRecorder) UpdateVirtualService(old, new interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateVirtualService", reflect.TypeOf((*MockVirtualServiceEventHandler)(nil).UpdateVirtualService), old, new) -} - -// DeleteVirtualService mocks base method +// DeleteVirtualService mocks base method. func (m *MockVirtualServiceEventHandler) DeleteVirtualService(obj *v1.VirtualService) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "DeleteVirtualService", obj) @@ -315,13 +906,13 @@ func (m *MockVirtualServiceEventHandler) DeleteVirtualService(obj *v1.VirtualSer return ret0 } -// DeleteVirtualService indicates an expected call of DeleteVirtualService +// DeleteVirtualService indicates an expected call of DeleteVirtualService. func (mr *MockVirtualServiceEventHandlerMockRecorder) DeleteVirtualService(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteVirtualService", reflect.TypeOf((*MockVirtualServiceEventHandler)(nil).DeleteVirtualService), obj) } -// GenericVirtualService mocks base method +// GenericVirtualService mocks base method. func (m *MockVirtualServiceEventHandler) GenericVirtualService(obj *v1.VirtualService) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GenericVirtualService", obj) @@ -329,36 +920,50 @@ func (m *MockVirtualServiceEventHandler) GenericVirtualService(obj *v1.VirtualSe return ret0 } -// GenericVirtualService indicates an expected call of GenericVirtualService +// GenericVirtualService indicates an expected call of GenericVirtualService. func (mr *MockVirtualServiceEventHandlerMockRecorder) GenericVirtualService(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericVirtualService", reflect.TypeOf((*MockVirtualServiceEventHandler)(nil).GenericVirtualService), obj) } -// MockVirtualServiceEventWatcher is a mock of VirtualServiceEventWatcher interface +// UpdateVirtualService mocks base method. +func (m *MockVirtualServiceEventHandler) UpdateVirtualService(old, new *v1.VirtualService) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateVirtualService", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateVirtualService indicates an expected call of UpdateVirtualService. +func (mr *MockVirtualServiceEventHandlerMockRecorder) UpdateVirtualService(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateVirtualService", reflect.TypeOf((*MockVirtualServiceEventHandler)(nil).UpdateVirtualService), old, new) +} + +// MockVirtualServiceEventWatcher is a mock of VirtualServiceEventWatcher interface. type MockVirtualServiceEventWatcher struct { ctrl *gomock.Controller recorder *MockVirtualServiceEventWatcherMockRecorder } -// MockVirtualServiceEventWatcherMockRecorder is the mock recorder for MockVirtualServiceEventWatcher +// MockVirtualServiceEventWatcherMockRecorder is the mock recorder for MockVirtualServiceEventWatcher. type MockVirtualServiceEventWatcherMockRecorder struct { mock *MockVirtualServiceEventWatcher } -// NewMockVirtualServiceEventWatcher creates a new mock instance +// NewMockVirtualServiceEventWatcher creates a new mock instance. func NewMockVirtualServiceEventWatcher(ctrl *gomock.Controller) *MockVirtualServiceEventWatcher { mock := &MockVirtualServiceEventWatcher{ctrl: ctrl} mock.recorder = &MockVirtualServiceEventWatcherMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockVirtualServiceEventWatcher) EXPECT() *MockVirtualServiceEventWatcherMockRecorder { return m.recorder } -// AddEventHandler mocks base method +// AddEventHandler mocks base method. func (m *MockVirtualServiceEventWatcher) AddEventHandler(ctx context.Context, h controller.VirtualServiceEventHandler, predicates ...predicate.Predicate) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, h} @@ -370,9 +975,130 @@ func (m *MockVirtualServiceEventWatcher) AddEventHandler(ctx context.Context, h return ret0 } -// AddEventHandler indicates an expected call of AddEventHandler +// AddEventHandler indicates an expected call of AddEventHandler. func (mr *MockVirtualServiceEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, h}, predicates...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockVirtualServiceEventWatcher)(nil).AddEventHandler), varargs...) } + +// MockVirtualHostOptionEventHandler is a mock of VirtualHostOptionEventHandler interface. +type MockVirtualHostOptionEventHandler struct { + ctrl *gomock.Controller + recorder *MockVirtualHostOptionEventHandlerMockRecorder +} + +// MockVirtualHostOptionEventHandlerMockRecorder is the mock recorder for MockVirtualHostOptionEventHandler. +type MockVirtualHostOptionEventHandlerMockRecorder struct { + mock *MockVirtualHostOptionEventHandler +} + +// NewMockVirtualHostOptionEventHandler creates a new mock instance. +func NewMockVirtualHostOptionEventHandler(ctrl *gomock.Controller) *MockVirtualHostOptionEventHandler { + mock := &MockVirtualHostOptionEventHandler{ctrl: ctrl} + mock.recorder = &MockVirtualHostOptionEventHandlerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockVirtualHostOptionEventHandler) EXPECT() *MockVirtualHostOptionEventHandlerMockRecorder { + return m.recorder +} + +// CreateVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionEventHandler) CreateVirtualHostOption(obj *v1.VirtualHostOption) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateVirtualHostOption", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateVirtualHostOption indicates an expected call of CreateVirtualHostOption. +func (mr *MockVirtualHostOptionEventHandlerMockRecorder) CreateVirtualHostOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionEventHandler)(nil).CreateVirtualHostOption), obj) +} + +// DeleteVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionEventHandler) DeleteVirtualHostOption(obj *v1.VirtualHostOption) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteVirtualHostOption", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteVirtualHostOption indicates an expected call of DeleteVirtualHostOption. +func (mr *MockVirtualHostOptionEventHandlerMockRecorder) DeleteVirtualHostOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionEventHandler)(nil).DeleteVirtualHostOption), obj) +} + +// GenericVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionEventHandler) GenericVirtualHostOption(obj *v1.VirtualHostOption) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GenericVirtualHostOption", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// GenericVirtualHostOption indicates an expected call of GenericVirtualHostOption. +func (mr *MockVirtualHostOptionEventHandlerMockRecorder) GenericVirtualHostOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionEventHandler)(nil).GenericVirtualHostOption), obj) +} + +// UpdateVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionEventHandler) UpdateVirtualHostOption(old, new *v1.VirtualHostOption) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateVirtualHostOption", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateVirtualHostOption indicates an expected call of UpdateVirtualHostOption. +func (mr *MockVirtualHostOptionEventHandlerMockRecorder) UpdateVirtualHostOption(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionEventHandler)(nil).UpdateVirtualHostOption), old, new) +} + +// MockVirtualHostOptionEventWatcher is a mock of VirtualHostOptionEventWatcher interface. +type MockVirtualHostOptionEventWatcher struct { + ctrl *gomock.Controller + recorder *MockVirtualHostOptionEventWatcherMockRecorder +} + +// MockVirtualHostOptionEventWatcherMockRecorder is the mock recorder for MockVirtualHostOptionEventWatcher. +type MockVirtualHostOptionEventWatcherMockRecorder struct { + mock *MockVirtualHostOptionEventWatcher +} + +// NewMockVirtualHostOptionEventWatcher creates a new mock instance. +func NewMockVirtualHostOptionEventWatcher(ctrl *gomock.Controller) *MockVirtualHostOptionEventWatcher { + mock := &MockVirtualHostOptionEventWatcher{ctrl: ctrl} + mock.recorder = &MockVirtualHostOptionEventWatcherMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockVirtualHostOptionEventWatcher) EXPECT() *MockVirtualHostOptionEventWatcherMockRecorder { + return m.recorder +} + +// AddEventHandler mocks base method. +func (m *MockVirtualHostOptionEventWatcher) AddEventHandler(ctx context.Context, h controller.VirtualHostOptionEventHandler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, h} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "AddEventHandler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddEventHandler indicates an expected call of AddEventHandler. +func (mr *MockVirtualHostOptionEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, h}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockVirtualHostOptionEventWatcher)(nil).AddEventHandler), varargs...) +} diff --git a/pkg/api/gateway.solo.io/v1/controller/mocks/multicluster_reconcilers.go b/pkg/api/gateway.solo.io/v1/controller/mocks/multicluster_reconcilers.go index 6735cce94..7f37e5287 100644 --- a/pkg/api/gateway.solo.io/v1/controller/mocks/multicluster_reconcilers.go +++ b/pkg/api/gateway.solo.io/v1/controller/mocks/multicluster_reconcilers.go @@ -15,30 +15,30 @@ import ( predicate "sigs.k8s.io/controller-runtime/pkg/predicate" ) -// MockMulticlusterGatewayReconciler is a mock of MulticlusterGatewayReconciler interface +// MockMulticlusterGatewayReconciler is a mock of MulticlusterGatewayReconciler interface. type MockMulticlusterGatewayReconciler struct { ctrl *gomock.Controller recorder *MockMulticlusterGatewayReconcilerMockRecorder } -// MockMulticlusterGatewayReconcilerMockRecorder is the mock recorder for MockMulticlusterGatewayReconciler +// MockMulticlusterGatewayReconcilerMockRecorder is the mock recorder for MockMulticlusterGatewayReconciler. type MockMulticlusterGatewayReconcilerMockRecorder struct { mock *MockMulticlusterGatewayReconciler } -// NewMockMulticlusterGatewayReconciler creates a new mock instance +// NewMockMulticlusterGatewayReconciler creates a new mock instance. func NewMockMulticlusterGatewayReconciler(ctrl *gomock.Controller) *MockMulticlusterGatewayReconciler { mock := &MockMulticlusterGatewayReconciler{ctrl: ctrl} mock.recorder = &MockMulticlusterGatewayReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterGatewayReconciler) EXPECT() *MockMulticlusterGatewayReconcilerMockRecorder { return m.recorder } -// ReconcileGateway mocks base method +// ReconcileGateway mocks base method. func (m *MockMulticlusterGatewayReconciler) ReconcileGateway(clusterName string, obj *v1.Gateway) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileGateway", clusterName, obj) @@ -47,36 +47,36 @@ func (m *MockMulticlusterGatewayReconciler) ReconcileGateway(clusterName string, return ret0, ret1 } -// ReconcileGateway indicates an expected call of ReconcileGateway +// ReconcileGateway indicates an expected call of ReconcileGateway. func (mr *MockMulticlusterGatewayReconcilerMockRecorder) ReconcileGateway(clusterName, obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileGateway", reflect.TypeOf((*MockMulticlusterGatewayReconciler)(nil).ReconcileGateway), clusterName, obj) } -// MockMulticlusterGatewayDeletionReconciler is a mock of MulticlusterGatewayDeletionReconciler interface +// MockMulticlusterGatewayDeletionReconciler is a mock of MulticlusterGatewayDeletionReconciler interface. type MockMulticlusterGatewayDeletionReconciler struct { ctrl *gomock.Controller recorder *MockMulticlusterGatewayDeletionReconcilerMockRecorder } -// MockMulticlusterGatewayDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterGatewayDeletionReconciler +// MockMulticlusterGatewayDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterGatewayDeletionReconciler. type MockMulticlusterGatewayDeletionReconcilerMockRecorder struct { mock *MockMulticlusterGatewayDeletionReconciler } -// NewMockMulticlusterGatewayDeletionReconciler creates a new mock instance +// NewMockMulticlusterGatewayDeletionReconciler creates a new mock instance. func NewMockMulticlusterGatewayDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterGatewayDeletionReconciler { mock := &MockMulticlusterGatewayDeletionReconciler{ctrl: ctrl} mock.recorder = &MockMulticlusterGatewayDeletionReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterGatewayDeletionReconciler) EXPECT() *MockMulticlusterGatewayDeletionReconcilerMockRecorder { return m.recorder } -// ReconcileGatewayDeletion mocks base method +// ReconcileGatewayDeletion mocks base method. func (m *MockMulticlusterGatewayDeletionReconciler) ReconcileGatewayDeletion(clusterName string, req reconcile.Request) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileGatewayDeletion", clusterName, req) @@ -84,36 +84,36 @@ func (m *MockMulticlusterGatewayDeletionReconciler) ReconcileGatewayDeletion(clu return ret0 } -// ReconcileGatewayDeletion indicates an expected call of ReconcileGatewayDeletion +// ReconcileGatewayDeletion indicates an expected call of ReconcileGatewayDeletion. func (mr *MockMulticlusterGatewayDeletionReconcilerMockRecorder) ReconcileGatewayDeletion(clusterName, req interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileGatewayDeletion", reflect.TypeOf((*MockMulticlusterGatewayDeletionReconciler)(nil).ReconcileGatewayDeletion), clusterName, req) } -// MockMulticlusterGatewayReconcileLoop is a mock of MulticlusterGatewayReconcileLoop interface +// MockMulticlusterGatewayReconcileLoop is a mock of MulticlusterGatewayReconcileLoop interface. type MockMulticlusterGatewayReconcileLoop struct { ctrl *gomock.Controller recorder *MockMulticlusterGatewayReconcileLoopMockRecorder } -// MockMulticlusterGatewayReconcileLoopMockRecorder is the mock recorder for MockMulticlusterGatewayReconcileLoop +// MockMulticlusterGatewayReconcileLoopMockRecorder is the mock recorder for MockMulticlusterGatewayReconcileLoop. type MockMulticlusterGatewayReconcileLoopMockRecorder struct { mock *MockMulticlusterGatewayReconcileLoop } -// NewMockMulticlusterGatewayReconcileLoop creates a new mock instance +// NewMockMulticlusterGatewayReconcileLoop creates a new mock instance. func NewMockMulticlusterGatewayReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterGatewayReconcileLoop { mock := &MockMulticlusterGatewayReconcileLoop{ctrl: ctrl} mock.recorder = &MockMulticlusterGatewayReconcileLoopMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterGatewayReconcileLoop) EXPECT() *MockMulticlusterGatewayReconcileLoopMockRecorder { return m.recorder } -// AddMulticlusterGatewayReconciler mocks base method +// AddMulticlusterGatewayReconciler mocks base method. func (m *MockMulticlusterGatewayReconcileLoop) AddMulticlusterGatewayReconciler(ctx context.Context, rec controller.MulticlusterGatewayReconciler, predicates ...predicate.Predicate) { m.ctrl.T.Helper() varargs := []interface{}{ctx, rec} @@ -123,37 +123,612 @@ func (m *MockMulticlusterGatewayReconcileLoop) AddMulticlusterGatewayReconciler( m.ctrl.Call(m, "AddMulticlusterGatewayReconciler", varargs...) } -// AddMulticlusterGatewayReconciler indicates an expected call of AddMulticlusterGatewayReconciler +// AddMulticlusterGatewayReconciler indicates an expected call of AddMulticlusterGatewayReconciler. func (mr *MockMulticlusterGatewayReconcileLoopMockRecorder) AddMulticlusterGatewayReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, rec}, predicates...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterGatewayReconciler", reflect.TypeOf((*MockMulticlusterGatewayReconcileLoop)(nil).AddMulticlusterGatewayReconciler), varargs...) } -// MockMulticlusterRouteTableReconciler is a mock of MulticlusterRouteTableReconciler interface +// MockMulticlusterHttpListenerOptionReconciler is a mock of MulticlusterHttpListenerOptionReconciler interface. +type MockMulticlusterHttpListenerOptionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterHttpListenerOptionReconcilerMockRecorder +} + +// MockMulticlusterHttpListenerOptionReconcilerMockRecorder is the mock recorder for MockMulticlusterHttpListenerOptionReconciler. +type MockMulticlusterHttpListenerOptionReconcilerMockRecorder struct { + mock *MockMulticlusterHttpListenerOptionReconciler +} + +// NewMockMulticlusterHttpListenerOptionReconciler creates a new mock instance. +func NewMockMulticlusterHttpListenerOptionReconciler(ctrl *gomock.Controller) *MockMulticlusterHttpListenerOptionReconciler { + mock := &MockMulticlusterHttpListenerOptionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterHttpListenerOptionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterHttpListenerOptionReconciler) EXPECT() *MockMulticlusterHttpListenerOptionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileHttpListenerOption mocks base method. +func (m *MockMulticlusterHttpListenerOptionReconciler) ReconcileHttpListenerOption(clusterName string, obj *v1.HttpListenerOption) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileHttpListenerOption", clusterName, obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileHttpListenerOption indicates an expected call of ReconcileHttpListenerOption. +func (mr *MockMulticlusterHttpListenerOptionReconcilerMockRecorder) ReconcileHttpListenerOption(clusterName, obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileHttpListenerOption", reflect.TypeOf((*MockMulticlusterHttpListenerOptionReconciler)(nil).ReconcileHttpListenerOption), clusterName, obj) +} + +// MockMulticlusterHttpListenerOptionDeletionReconciler is a mock of MulticlusterHttpListenerOptionDeletionReconciler interface. +type MockMulticlusterHttpListenerOptionDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterHttpListenerOptionDeletionReconcilerMockRecorder +} + +// MockMulticlusterHttpListenerOptionDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterHttpListenerOptionDeletionReconciler. +type MockMulticlusterHttpListenerOptionDeletionReconcilerMockRecorder struct { + mock *MockMulticlusterHttpListenerOptionDeletionReconciler +} + +// NewMockMulticlusterHttpListenerOptionDeletionReconciler creates a new mock instance. +func NewMockMulticlusterHttpListenerOptionDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterHttpListenerOptionDeletionReconciler { + mock := &MockMulticlusterHttpListenerOptionDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterHttpListenerOptionDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterHttpListenerOptionDeletionReconciler) EXPECT() *MockMulticlusterHttpListenerOptionDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileHttpListenerOptionDeletion mocks base method. +func (m *MockMulticlusterHttpListenerOptionDeletionReconciler) ReconcileHttpListenerOptionDeletion(clusterName string, req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileHttpListenerOptionDeletion", clusterName, req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileHttpListenerOptionDeletion indicates an expected call of ReconcileHttpListenerOptionDeletion. +func (mr *MockMulticlusterHttpListenerOptionDeletionReconcilerMockRecorder) ReconcileHttpListenerOptionDeletion(clusterName, req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileHttpListenerOptionDeletion", reflect.TypeOf((*MockMulticlusterHttpListenerOptionDeletionReconciler)(nil).ReconcileHttpListenerOptionDeletion), clusterName, req) +} + +// MockMulticlusterHttpListenerOptionReconcileLoop is a mock of MulticlusterHttpListenerOptionReconcileLoop interface. +type MockMulticlusterHttpListenerOptionReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockMulticlusterHttpListenerOptionReconcileLoopMockRecorder +} + +// MockMulticlusterHttpListenerOptionReconcileLoopMockRecorder is the mock recorder for MockMulticlusterHttpListenerOptionReconcileLoop. +type MockMulticlusterHttpListenerOptionReconcileLoopMockRecorder struct { + mock *MockMulticlusterHttpListenerOptionReconcileLoop +} + +// NewMockMulticlusterHttpListenerOptionReconcileLoop creates a new mock instance. +func NewMockMulticlusterHttpListenerOptionReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterHttpListenerOptionReconcileLoop { + mock := &MockMulticlusterHttpListenerOptionReconcileLoop{ctrl: ctrl} + mock.recorder = &MockMulticlusterHttpListenerOptionReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterHttpListenerOptionReconcileLoop) EXPECT() *MockMulticlusterHttpListenerOptionReconcileLoopMockRecorder { + return m.recorder +} + +// AddMulticlusterHttpListenerOptionReconciler mocks base method. +func (m *MockMulticlusterHttpListenerOptionReconcileLoop) AddMulticlusterHttpListenerOptionReconciler(ctx context.Context, rec controller.MulticlusterHttpListenerOptionReconciler, predicates ...predicate.Predicate) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "AddMulticlusterHttpListenerOptionReconciler", varargs...) +} + +// AddMulticlusterHttpListenerOptionReconciler indicates an expected call of AddMulticlusterHttpListenerOptionReconciler. +func (mr *MockMulticlusterHttpListenerOptionReconcileLoopMockRecorder) AddMulticlusterHttpListenerOptionReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterHttpListenerOptionReconciler", reflect.TypeOf((*MockMulticlusterHttpListenerOptionReconcileLoop)(nil).AddMulticlusterHttpListenerOptionReconciler), varargs...) +} + +// MockMulticlusterListenerOptionReconciler is a mock of MulticlusterListenerOptionReconciler interface. +type MockMulticlusterListenerOptionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterListenerOptionReconcilerMockRecorder +} + +// MockMulticlusterListenerOptionReconcilerMockRecorder is the mock recorder for MockMulticlusterListenerOptionReconciler. +type MockMulticlusterListenerOptionReconcilerMockRecorder struct { + mock *MockMulticlusterListenerOptionReconciler +} + +// NewMockMulticlusterListenerOptionReconciler creates a new mock instance. +func NewMockMulticlusterListenerOptionReconciler(ctrl *gomock.Controller) *MockMulticlusterListenerOptionReconciler { + mock := &MockMulticlusterListenerOptionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterListenerOptionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterListenerOptionReconciler) EXPECT() *MockMulticlusterListenerOptionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileListenerOption mocks base method. +func (m *MockMulticlusterListenerOptionReconciler) ReconcileListenerOption(clusterName string, obj *v1.ListenerOption) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileListenerOption", clusterName, obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileListenerOption indicates an expected call of ReconcileListenerOption. +func (mr *MockMulticlusterListenerOptionReconcilerMockRecorder) ReconcileListenerOption(clusterName, obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileListenerOption", reflect.TypeOf((*MockMulticlusterListenerOptionReconciler)(nil).ReconcileListenerOption), clusterName, obj) +} + +// MockMulticlusterListenerOptionDeletionReconciler is a mock of MulticlusterListenerOptionDeletionReconciler interface. +type MockMulticlusterListenerOptionDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterListenerOptionDeletionReconcilerMockRecorder +} + +// MockMulticlusterListenerOptionDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterListenerOptionDeletionReconciler. +type MockMulticlusterListenerOptionDeletionReconcilerMockRecorder struct { + mock *MockMulticlusterListenerOptionDeletionReconciler +} + +// NewMockMulticlusterListenerOptionDeletionReconciler creates a new mock instance. +func NewMockMulticlusterListenerOptionDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterListenerOptionDeletionReconciler { + mock := &MockMulticlusterListenerOptionDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterListenerOptionDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterListenerOptionDeletionReconciler) EXPECT() *MockMulticlusterListenerOptionDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileListenerOptionDeletion mocks base method. +func (m *MockMulticlusterListenerOptionDeletionReconciler) ReconcileListenerOptionDeletion(clusterName string, req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileListenerOptionDeletion", clusterName, req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileListenerOptionDeletion indicates an expected call of ReconcileListenerOptionDeletion. +func (mr *MockMulticlusterListenerOptionDeletionReconcilerMockRecorder) ReconcileListenerOptionDeletion(clusterName, req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileListenerOptionDeletion", reflect.TypeOf((*MockMulticlusterListenerOptionDeletionReconciler)(nil).ReconcileListenerOptionDeletion), clusterName, req) +} + +// MockMulticlusterListenerOptionReconcileLoop is a mock of MulticlusterListenerOptionReconcileLoop interface. +type MockMulticlusterListenerOptionReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockMulticlusterListenerOptionReconcileLoopMockRecorder +} + +// MockMulticlusterListenerOptionReconcileLoopMockRecorder is the mock recorder for MockMulticlusterListenerOptionReconcileLoop. +type MockMulticlusterListenerOptionReconcileLoopMockRecorder struct { + mock *MockMulticlusterListenerOptionReconcileLoop +} + +// NewMockMulticlusterListenerOptionReconcileLoop creates a new mock instance. +func NewMockMulticlusterListenerOptionReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterListenerOptionReconcileLoop { + mock := &MockMulticlusterListenerOptionReconcileLoop{ctrl: ctrl} + mock.recorder = &MockMulticlusterListenerOptionReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterListenerOptionReconcileLoop) EXPECT() *MockMulticlusterListenerOptionReconcileLoopMockRecorder { + return m.recorder +} + +// AddMulticlusterListenerOptionReconciler mocks base method. +func (m *MockMulticlusterListenerOptionReconcileLoop) AddMulticlusterListenerOptionReconciler(ctx context.Context, rec controller.MulticlusterListenerOptionReconciler, predicates ...predicate.Predicate) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "AddMulticlusterListenerOptionReconciler", varargs...) +} + +// AddMulticlusterListenerOptionReconciler indicates an expected call of AddMulticlusterListenerOptionReconciler. +func (mr *MockMulticlusterListenerOptionReconcileLoopMockRecorder) AddMulticlusterListenerOptionReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterListenerOptionReconciler", reflect.TypeOf((*MockMulticlusterListenerOptionReconcileLoop)(nil).AddMulticlusterListenerOptionReconciler), varargs...) +} + +// MockMulticlusterMatchableHttpGatewayReconciler is a mock of MulticlusterMatchableHttpGatewayReconciler interface. +type MockMulticlusterMatchableHttpGatewayReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterMatchableHttpGatewayReconcilerMockRecorder +} + +// MockMulticlusterMatchableHttpGatewayReconcilerMockRecorder is the mock recorder for MockMulticlusterMatchableHttpGatewayReconciler. +type MockMulticlusterMatchableHttpGatewayReconcilerMockRecorder struct { + mock *MockMulticlusterMatchableHttpGatewayReconciler +} + +// NewMockMulticlusterMatchableHttpGatewayReconciler creates a new mock instance. +func NewMockMulticlusterMatchableHttpGatewayReconciler(ctrl *gomock.Controller) *MockMulticlusterMatchableHttpGatewayReconciler { + mock := &MockMulticlusterMatchableHttpGatewayReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterMatchableHttpGatewayReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterMatchableHttpGatewayReconciler) EXPECT() *MockMulticlusterMatchableHttpGatewayReconcilerMockRecorder { + return m.recorder +} + +// ReconcileMatchableHttpGateway mocks base method. +func (m *MockMulticlusterMatchableHttpGatewayReconciler) ReconcileMatchableHttpGateway(clusterName string, obj *v1.MatchableHttpGateway) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileMatchableHttpGateway", clusterName, obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileMatchableHttpGateway indicates an expected call of ReconcileMatchableHttpGateway. +func (mr *MockMulticlusterMatchableHttpGatewayReconcilerMockRecorder) ReconcileMatchableHttpGateway(clusterName, obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileMatchableHttpGateway", reflect.TypeOf((*MockMulticlusterMatchableHttpGatewayReconciler)(nil).ReconcileMatchableHttpGateway), clusterName, obj) +} + +// MockMulticlusterMatchableHttpGatewayDeletionReconciler is a mock of MulticlusterMatchableHttpGatewayDeletionReconciler interface. +type MockMulticlusterMatchableHttpGatewayDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterMatchableHttpGatewayDeletionReconcilerMockRecorder +} + +// MockMulticlusterMatchableHttpGatewayDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterMatchableHttpGatewayDeletionReconciler. +type MockMulticlusterMatchableHttpGatewayDeletionReconcilerMockRecorder struct { + mock *MockMulticlusterMatchableHttpGatewayDeletionReconciler +} + +// NewMockMulticlusterMatchableHttpGatewayDeletionReconciler creates a new mock instance. +func NewMockMulticlusterMatchableHttpGatewayDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterMatchableHttpGatewayDeletionReconciler { + mock := &MockMulticlusterMatchableHttpGatewayDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterMatchableHttpGatewayDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterMatchableHttpGatewayDeletionReconciler) EXPECT() *MockMulticlusterMatchableHttpGatewayDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileMatchableHttpGatewayDeletion mocks base method. +func (m *MockMulticlusterMatchableHttpGatewayDeletionReconciler) ReconcileMatchableHttpGatewayDeletion(clusterName string, req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileMatchableHttpGatewayDeletion", clusterName, req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileMatchableHttpGatewayDeletion indicates an expected call of ReconcileMatchableHttpGatewayDeletion. +func (mr *MockMulticlusterMatchableHttpGatewayDeletionReconcilerMockRecorder) ReconcileMatchableHttpGatewayDeletion(clusterName, req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileMatchableHttpGatewayDeletion", reflect.TypeOf((*MockMulticlusterMatchableHttpGatewayDeletionReconciler)(nil).ReconcileMatchableHttpGatewayDeletion), clusterName, req) +} + +// MockMulticlusterMatchableHttpGatewayReconcileLoop is a mock of MulticlusterMatchableHttpGatewayReconcileLoop interface. +type MockMulticlusterMatchableHttpGatewayReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockMulticlusterMatchableHttpGatewayReconcileLoopMockRecorder +} + +// MockMulticlusterMatchableHttpGatewayReconcileLoopMockRecorder is the mock recorder for MockMulticlusterMatchableHttpGatewayReconcileLoop. +type MockMulticlusterMatchableHttpGatewayReconcileLoopMockRecorder struct { + mock *MockMulticlusterMatchableHttpGatewayReconcileLoop +} + +// NewMockMulticlusterMatchableHttpGatewayReconcileLoop creates a new mock instance. +func NewMockMulticlusterMatchableHttpGatewayReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterMatchableHttpGatewayReconcileLoop { + mock := &MockMulticlusterMatchableHttpGatewayReconcileLoop{ctrl: ctrl} + mock.recorder = &MockMulticlusterMatchableHttpGatewayReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterMatchableHttpGatewayReconcileLoop) EXPECT() *MockMulticlusterMatchableHttpGatewayReconcileLoopMockRecorder { + return m.recorder +} + +// AddMulticlusterMatchableHttpGatewayReconciler mocks base method. +func (m *MockMulticlusterMatchableHttpGatewayReconcileLoop) AddMulticlusterMatchableHttpGatewayReconciler(ctx context.Context, rec controller.MulticlusterMatchableHttpGatewayReconciler, predicates ...predicate.Predicate) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "AddMulticlusterMatchableHttpGatewayReconciler", varargs...) +} + +// AddMulticlusterMatchableHttpGatewayReconciler indicates an expected call of AddMulticlusterMatchableHttpGatewayReconciler. +func (mr *MockMulticlusterMatchableHttpGatewayReconcileLoopMockRecorder) AddMulticlusterMatchableHttpGatewayReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterMatchableHttpGatewayReconciler", reflect.TypeOf((*MockMulticlusterMatchableHttpGatewayReconcileLoop)(nil).AddMulticlusterMatchableHttpGatewayReconciler), varargs...) +} + +// MockMulticlusterMatchableTcpGatewayReconciler is a mock of MulticlusterMatchableTcpGatewayReconciler interface. +type MockMulticlusterMatchableTcpGatewayReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterMatchableTcpGatewayReconcilerMockRecorder +} + +// MockMulticlusterMatchableTcpGatewayReconcilerMockRecorder is the mock recorder for MockMulticlusterMatchableTcpGatewayReconciler. +type MockMulticlusterMatchableTcpGatewayReconcilerMockRecorder struct { + mock *MockMulticlusterMatchableTcpGatewayReconciler +} + +// NewMockMulticlusterMatchableTcpGatewayReconciler creates a new mock instance. +func NewMockMulticlusterMatchableTcpGatewayReconciler(ctrl *gomock.Controller) *MockMulticlusterMatchableTcpGatewayReconciler { + mock := &MockMulticlusterMatchableTcpGatewayReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterMatchableTcpGatewayReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterMatchableTcpGatewayReconciler) EXPECT() *MockMulticlusterMatchableTcpGatewayReconcilerMockRecorder { + return m.recorder +} + +// ReconcileMatchableTcpGateway mocks base method. +func (m *MockMulticlusterMatchableTcpGatewayReconciler) ReconcileMatchableTcpGateway(clusterName string, obj *v1.MatchableTcpGateway) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileMatchableTcpGateway", clusterName, obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileMatchableTcpGateway indicates an expected call of ReconcileMatchableTcpGateway. +func (mr *MockMulticlusterMatchableTcpGatewayReconcilerMockRecorder) ReconcileMatchableTcpGateway(clusterName, obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileMatchableTcpGateway", reflect.TypeOf((*MockMulticlusterMatchableTcpGatewayReconciler)(nil).ReconcileMatchableTcpGateway), clusterName, obj) +} + +// MockMulticlusterMatchableTcpGatewayDeletionReconciler is a mock of MulticlusterMatchableTcpGatewayDeletionReconciler interface. +type MockMulticlusterMatchableTcpGatewayDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterMatchableTcpGatewayDeletionReconcilerMockRecorder +} + +// MockMulticlusterMatchableTcpGatewayDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterMatchableTcpGatewayDeletionReconciler. +type MockMulticlusterMatchableTcpGatewayDeletionReconcilerMockRecorder struct { + mock *MockMulticlusterMatchableTcpGatewayDeletionReconciler +} + +// NewMockMulticlusterMatchableTcpGatewayDeletionReconciler creates a new mock instance. +func NewMockMulticlusterMatchableTcpGatewayDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterMatchableTcpGatewayDeletionReconciler { + mock := &MockMulticlusterMatchableTcpGatewayDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterMatchableTcpGatewayDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterMatchableTcpGatewayDeletionReconciler) EXPECT() *MockMulticlusterMatchableTcpGatewayDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileMatchableTcpGatewayDeletion mocks base method. +func (m *MockMulticlusterMatchableTcpGatewayDeletionReconciler) ReconcileMatchableTcpGatewayDeletion(clusterName string, req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileMatchableTcpGatewayDeletion", clusterName, req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileMatchableTcpGatewayDeletion indicates an expected call of ReconcileMatchableTcpGatewayDeletion. +func (mr *MockMulticlusterMatchableTcpGatewayDeletionReconcilerMockRecorder) ReconcileMatchableTcpGatewayDeletion(clusterName, req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileMatchableTcpGatewayDeletion", reflect.TypeOf((*MockMulticlusterMatchableTcpGatewayDeletionReconciler)(nil).ReconcileMatchableTcpGatewayDeletion), clusterName, req) +} + +// MockMulticlusterMatchableTcpGatewayReconcileLoop is a mock of MulticlusterMatchableTcpGatewayReconcileLoop interface. +type MockMulticlusterMatchableTcpGatewayReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockMulticlusterMatchableTcpGatewayReconcileLoopMockRecorder +} + +// MockMulticlusterMatchableTcpGatewayReconcileLoopMockRecorder is the mock recorder for MockMulticlusterMatchableTcpGatewayReconcileLoop. +type MockMulticlusterMatchableTcpGatewayReconcileLoopMockRecorder struct { + mock *MockMulticlusterMatchableTcpGatewayReconcileLoop +} + +// NewMockMulticlusterMatchableTcpGatewayReconcileLoop creates a new mock instance. +func NewMockMulticlusterMatchableTcpGatewayReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterMatchableTcpGatewayReconcileLoop { + mock := &MockMulticlusterMatchableTcpGatewayReconcileLoop{ctrl: ctrl} + mock.recorder = &MockMulticlusterMatchableTcpGatewayReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterMatchableTcpGatewayReconcileLoop) EXPECT() *MockMulticlusterMatchableTcpGatewayReconcileLoopMockRecorder { + return m.recorder +} + +// AddMulticlusterMatchableTcpGatewayReconciler mocks base method. +func (m *MockMulticlusterMatchableTcpGatewayReconcileLoop) AddMulticlusterMatchableTcpGatewayReconciler(ctx context.Context, rec controller.MulticlusterMatchableTcpGatewayReconciler, predicates ...predicate.Predicate) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "AddMulticlusterMatchableTcpGatewayReconciler", varargs...) +} + +// AddMulticlusterMatchableTcpGatewayReconciler indicates an expected call of AddMulticlusterMatchableTcpGatewayReconciler. +func (mr *MockMulticlusterMatchableTcpGatewayReconcileLoopMockRecorder) AddMulticlusterMatchableTcpGatewayReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterMatchableTcpGatewayReconciler", reflect.TypeOf((*MockMulticlusterMatchableTcpGatewayReconcileLoop)(nil).AddMulticlusterMatchableTcpGatewayReconciler), varargs...) +} + +// MockMulticlusterRouteOptionReconciler is a mock of MulticlusterRouteOptionReconciler interface. +type MockMulticlusterRouteOptionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterRouteOptionReconcilerMockRecorder +} + +// MockMulticlusterRouteOptionReconcilerMockRecorder is the mock recorder for MockMulticlusterRouteOptionReconciler. +type MockMulticlusterRouteOptionReconcilerMockRecorder struct { + mock *MockMulticlusterRouteOptionReconciler +} + +// NewMockMulticlusterRouteOptionReconciler creates a new mock instance. +func NewMockMulticlusterRouteOptionReconciler(ctrl *gomock.Controller) *MockMulticlusterRouteOptionReconciler { + mock := &MockMulticlusterRouteOptionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterRouteOptionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterRouteOptionReconciler) EXPECT() *MockMulticlusterRouteOptionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileRouteOption mocks base method. +func (m *MockMulticlusterRouteOptionReconciler) ReconcileRouteOption(clusterName string, obj *v1.RouteOption) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileRouteOption", clusterName, obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileRouteOption indicates an expected call of ReconcileRouteOption. +func (mr *MockMulticlusterRouteOptionReconcilerMockRecorder) ReconcileRouteOption(clusterName, obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileRouteOption", reflect.TypeOf((*MockMulticlusterRouteOptionReconciler)(nil).ReconcileRouteOption), clusterName, obj) +} + +// MockMulticlusterRouteOptionDeletionReconciler is a mock of MulticlusterRouteOptionDeletionReconciler interface. +type MockMulticlusterRouteOptionDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterRouteOptionDeletionReconcilerMockRecorder +} + +// MockMulticlusterRouteOptionDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterRouteOptionDeletionReconciler. +type MockMulticlusterRouteOptionDeletionReconcilerMockRecorder struct { + mock *MockMulticlusterRouteOptionDeletionReconciler +} + +// NewMockMulticlusterRouteOptionDeletionReconciler creates a new mock instance. +func NewMockMulticlusterRouteOptionDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterRouteOptionDeletionReconciler { + mock := &MockMulticlusterRouteOptionDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterRouteOptionDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterRouteOptionDeletionReconciler) EXPECT() *MockMulticlusterRouteOptionDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileRouteOptionDeletion mocks base method. +func (m *MockMulticlusterRouteOptionDeletionReconciler) ReconcileRouteOptionDeletion(clusterName string, req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileRouteOptionDeletion", clusterName, req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileRouteOptionDeletion indicates an expected call of ReconcileRouteOptionDeletion. +func (mr *MockMulticlusterRouteOptionDeletionReconcilerMockRecorder) ReconcileRouteOptionDeletion(clusterName, req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileRouteOptionDeletion", reflect.TypeOf((*MockMulticlusterRouteOptionDeletionReconciler)(nil).ReconcileRouteOptionDeletion), clusterName, req) +} + +// MockMulticlusterRouteOptionReconcileLoop is a mock of MulticlusterRouteOptionReconcileLoop interface. +type MockMulticlusterRouteOptionReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockMulticlusterRouteOptionReconcileLoopMockRecorder +} + +// MockMulticlusterRouteOptionReconcileLoopMockRecorder is the mock recorder for MockMulticlusterRouteOptionReconcileLoop. +type MockMulticlusterRouteOptionReconcileLoopMockRecorder struct { + mock *MockMulticlusterRouteOptionReconcileLoop +} + +// NewMockMulticlusterRouteOptionReconcileLoop creates a new mock instance. +func NewMockMulticlusterRouteOptionReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterRouteOptionReconcileLoop { + mock := &MockMulticlusterRouteOptionReconcileLoop{ctrl: ctrl} + mock.recorder = &MockMulticlusterRouteOptionReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterRouteOptionReconcileLoop) EXPECT() *MockMulticlusterRouteOptionReconcileLoopMockRecorder { + return m.recorder +} + +// AddMulticlusterRouteOptionReconciler mocks base method. +func (m *MockMulticlusterRouteOptionReconcileLoop) AddMulticlusterRouteOptionReconciler(ctx context.Context, rec controller.MulticlusterRouteOptionReconciler, predicates ...predicate.Predicate) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "AddMulticlusterRouteOptionReconciler", varargs...) +} + +// AddMulticlusterRouteOptionReconciler indicates an expected call of AddMulticlusterRouteOptionReconciler. +func (mr *MockMulticlusterRouteOptionReconcileLoopMockRecorder) AddMulticlusterRouteOptionReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterRouteOptionReconciler", reflect.TypeOf((*MockMulticlusterRouteOptionReconcileLoop)(nil).AddMulticlusterRouteOptionReconciler), varargs...) +} + +// MockMulticlusterRouteTableReconciler is a mock of MulticlusterRouteTableReconciler interface. type MockMulticlusterRouteTableReconciler struct { ctrl *gomock.Controller recorder *MockMulticlusterRouteTableReconcilerMockRecorder } -// MockMulticlusterRouteTableReconcilerMockRecorder is the mock recorder for MockMulticlusterRouteTableReconciler +// MockMulticlusterRouteTableReconcilerMockRecorder is the mock recorder for MockMulticlusterRouteTableReconciler. type MockMulticlusterRouteTableReconcilerMockRecorder struct { mock *MockMulticlusterRouteTableReconciler } -// NewMockMulticlusterRouteTableReconciler creates a new mock instance +// NewMockMulticlusterRouteTableReconciler creates a new mock instance. func NewMockMulticlusterRouteTableReconciler(ctrl *gomock.Controller) *MockMulticlusterRouteTableReconciler { mock := &MockMulticlusterRouteTableReconciler{ctrl: ctrl} mock.recorder = &MockMulticlusterRouteTableReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterRouteTableReconciler) EXPECT() *MockMulticlusterRouteTableReconcilerMockRecorder { return m.recorder } -// ReconcileRouteTable mocks base method +// ReconcileRouteTable mocks base method. func (m *MockMulticlusterRouteTableReconciler) ReconcileRouteTable(clusterName string, obj *v1.RouteTable) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileRouteTable", clusterName, obj) @@ -162,36 +737,36 @@ func (m *MockMulticlusterRouteTableReconciler) ReconcileRouteTable(clusterName s return ret0, ret1 } -// ReconcileRouteTable indicates an expected call of ReconcileRouteTable +// ReconcileRouteTable indicates an expected call of ReconcileRouteTable. func (mr *MockMulticlusterRouteTableReconcilerMockRecorder) ReconcileRouteTable(clusterName, obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileRouteTable", reflect.TypeOf((*MockMulticlusterRouteTableReconciler)(nil).ReconcileRouteTable), clusterName, obj) } -// MockMulticlusterRouteTableDeletionReconciler is a mock of MulticlusterRouteTableDeletionReconciler interface +// MockMulticlusterRouteTableDeletionReconciler is a mock of MulticlusterRouteTableDeletionReconciler interface. type MockMulticlusterRouteTableDeletionReconciler struct { ctrl *gomock.Controller recorder *MockMulticlusterRouteTableDeletionReconcilerMockRecorder } -// MockMulticlusterRouteTableDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterRouteTableDeletionReconciler +// MockMulticlusterRouteTableDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterRouteTableDeletionReconciler. type MockMulticlusterRouteTableDeletionReconcilerMockRecorder struct { mock *MockMulticlusterRouteTableDeletionReconciler } -// NewMockMulticlusterRouteTableDeletionReconciler creates a new mock instance +// NewMockMulticlusterRouteTableDeletionReconciler creates a new mock instance. func NewMockMulticlusterRouteTableDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterRouteTableDeletionReconciler { mock := &MockMulticlusterRouteTableDeletionReconciler{ctrl: ctrl} mock.recorder = &MockMulticlusterRouteTableDeletionReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterRouteTableDeletionReconciler) EXPECT() *MockMulticlusterRouteTableDeletionReconcilerMockRecorder { return m.recorder } -// ReconcileRouteTableDeletion mocks base method +// ReconcileRouteTableDeletion mocks base method. func (m *MockMulticlusterRouteTableDeletionReconciler) ReconcileRouteTableDeletion(clusterName string, req reconcile.Request) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileRouteTableDeletion", clusterName, req) @@ -199,36 +774,36 @@ func (m *MockMulticlusterRouteTableDeletionReconciler) ReconcileRouteTableDeleti return ret0 } -// ReconcileRouteTableDeletion indicates an expected call of ReconcileRouteTableDeletion +// ReconcileRouteTableDeletion indicates an expected call of ReconcileRouteTableDeletion. func (mr *MockMulticlusterRouteTableDeletionReconcilerMockRecorder) ReconcileRouteTableDeletion(clusterName, req interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileRouteTableDeletion", reflect.TypeOf((*MockMulticlusterRouteTableDeletionReconciler)(nil).ReconcileRouteTableDeletion), clusterName, req) } -// MockMulticlusterRouteTableReconcileLoop is a mock of MulticlusterRouteTableReconcileLoop interface +// MockMulticlusterRouteTableReconcileLoop is a mock of MulticlusterRouteTableReconcileLoop interface. type MockMulticlusterRouteTableReconcileLoop struct { ctrl *gomock.Controller recorder *MockMulticlusterRouteTableReconcileLoopMockRecorder } -// MockMulticlusterRouteTableReconcileLoopMockRecorder is the mock recorder for MockMulticlusterRouteTableReconcileLoop +// MockMulticlusterRouteTableReconcileLoopMockRecorder is the mock recorder for MockMulticlusterRouteTableReconcileLoop. type MockMulticlusterRouteTableReconcileLoopMockRecorder struct { mock *MockMulticlusterRouteTableReconcileLoop } -// NewMockMulticlusterRouteTableReconcileLoop creates a new mock instance +// NewMockMulticlusterRouteTableReconcileLoop creates a new mock instance. func NewMockMulticlusterRouteTableReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterRouteTableReconcileLoop { mock := &MockMulticlusterRouteTableReconcileLoop{ctrl: ctrl} mock.recorder = &MockMulticlusterRouteTableReconcileLoopMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterRouteTableReconcileLoop) EXPECT() *MockMulticlusterRouteTableReconcileLoopMockRecorder { return m.recorder } -// AddMulticlusterRouteTableReconciler mocks base method +// AddMulticlusterRouteTableReconciler mocks base method. func (m *MockMulticlusterRouteTableReconcileLoop) AddMulticlusterRouteTableReconciler(ctx context.Context, rec controller.MulticlusterRouteTableReconciler, predicates ...predicate.Predicate) { m.ctrl.T.Helper() varargs := []interface{}{ctx, rec} @@ -238,37 +813,37 @@ func (m *MockMulticlusterRouteTableReconcileLoop) AddMulticlusterRouteTableRecon m.ctrl.Call(m, "AddMulticlusterRouteTableReconciler", varargs...) } -// AddMulticlusterRouteTableReconciler indicates an expected call of AddMulticlusterRouteTableReconciler +// AddMulticlusterRouteTableReconciler indicates an expected call of AddMulticlusterRouteTableReconciler. func (mr *MockMulticlusterRouteTableReconcileLoopMockRecorder) AddMulticlusterRouteTableReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, rec}, predicates...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterRouteTableReconciler", reflect.TypeOf((*MockMulticlusterRouteTableReconcileLoop)(nil).AddMulticlusterRouteTableReconciler), varargs...) } -// MockMulticlusterVirtualServiceReconciler is a mock of MulticlusterVirtualServiceReconciler interface +// MockMulticlusterVirtualServiceReconciler is a mock of MulticlusterVirtualServiceReconciler interface. type MockMulticlusterVirtualServiceReconciler struct { ctrl *gomock.Controller recorder *MockMulticlusterVirtualServiceReconcilerMockRecorder } -// MockMulticlusterVirtualServiceReconcilerMockRecorder is the mock recorder for MockMulticlusterVirtualServiceReconciler +// MockMulticlusterVirtualServiceReconcilerMockRecorder is the mock recorder for MockMulticlusterVirtualServiceReconciler. type MockMulticlusterVirtualServiceReconcilerMockRecorder struct { mock *MockMulticlusterVirtualServiceReconciler } -// NewMockMulticlusterVirtualServiceReconciler creates a new mock instance +// NewMockMulticlusterVirtualServiceReconciler creates a new mock instance. func NewMockMulticlusterVirtualServiceReconciler(ctrl *gomock.Controller) *MockMulticlusterVirtualServiceReconciler { mock := &MockMulticlusterVirtualServiceReconciler{ctrl: ctrl} mock.recorder = &MockMulticlusterVirtualServiceReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterVirtualServiceReconciler) EXPECT() *MockMulticlusterVirtualServiceReconcilerMockRecorder { return m.recorder } -// ReconcileVirtualService mocks base method +// ReconcileVirtualService mocks base method. func (m *MockMulticlusterVirtualServiceReconciler) ReconcileVirtualService(clusterName string, obj *v1.VirtualService) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileVirtualService", clusterName, obj) @@ -277,36 +852,36 @@ func (m *MockMulticlusterVirtualServiceReconciler) ReconcileVirtualService(clust return ret0, ret1 } -// ReconcileVirtualService indicates an expected call of ReconcileVirtualService +// ReconcileVirtualService indicates an expected call of ReconcileVirtualService. func (mr *MockMulticlusterVirtualServiceReconcilerMockRecorder) ReconcileVirtualService(clusterName, obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileVirtualService", reflect.TypeOf((*MockMulticlusterVirtualServiceReconciler)(nil).ReconcileVirtualService), clusterName, obj) } -// MockMulticlusterVirtualServiceDeletionReconciler is a mock of MulticlusterVirtualServiceDeletionReconciler interface +// MockMulticlusterVirtualServiceDeletionReconciler is a mock of MulticlusterVirtualServiceDeletionReconciler interface. type MockMulticlusterVirtualServiceDeletionReconciler struct { ctrl *gomock.Controller recorder *MockMulticlusterVirtualServiceDeletionReconcilerMockRecorder } -// MockMulticlusterVirtualServiceDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterVirtualServiceDeletionReconciler +// MockMulticlusterVirtualServiceDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterVirtualServiceDeletionReconciler. type MockMulticlusterVirtualServiceDeletionReconcilerMockRecorder struct { mock *MockMulticlusterVirtualServiceDeletionReconciler } -// NewMockMulticlusterVirtualServiceDeletionReconciler creates a new mock instance +// NewMockMulticlusterVirtualServiceDeletionReconciler creates a new mock instance. func NewMockMulticlusterVirtualServiceDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterVirtualServiceDeletionReconciler { mock := &MockMulticlusterVirtualServiceDeletionReconciler{ctrl: ctrl} mock.recorder = &MockMulticlusterVirtualServiceDeletionReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterVirtualServiceDeletionReconciler) EXPECT() *MockMulticlusterVirtualServiceDeletionReconcilerMockRecorder { return m.recorder } -// ReconcileVirtualServiceDeletion mocks base method +// ReconcileVirtualServiceDeletion mocks base method. func (m *MockMulticlusterVirtualServiceDeletionReconciler) ReconcileVirtualServiceDeletion(clusterName string, req reconcile.Request) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileVirtualServiceDeletion", clusterName, req) @@ -314,36 +889,36 @@ func (m *MockMulticlusterVirtualServiceDeletionReconciler) ReconcileVirtualServi return ret0 } -// ReconcileVirtualServiceDeletion indicates an expected call of ReconcileVirtualServiceDeletion +// ReconcileVirtualServiceDeletion indicates an expected call of ReconcileVirtualServiceDeletion. func (mr *MockMulticlusterVirtualServiceDeletionReconcilerMockRecorder) ReconcileVirtualServiceDeletion(clusterName, req interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileVirtualServiceDeletion", reflect.TypeOf((*MockMulticlusterVirtualServiceDeletionReconciler)(nil).ReconcileVirtualServiceDeletion), clusterName, req) } -// MockMulticlusterVirtualServiceReconcileLoop is a mock of MulticlusterVirtualServiceReconcileLoop interface +// MockMulticlusterVirtualServiceReconcileLoop is a mock of MulticlusterVirtualServiceReconcileLoop interface. type MockMulticlusterVirtualServiceReconcileLoop struct { ctrl *gomock.Controller recorder *MockMulticlusterVirtualServiceReconcileLoopMockRecorder } -// MockMulticlusterVirtualServiceReconcileLoopMockRecorder is the mock recorder for MockMulticlusterVirtualServiceReconcileLoop +// MockMulticlusterVirtualServiceReconcileLoopMockRecorder is the mock recorder for MockMulticlusterVirtualServiceReconcileLoop. type MockMulticlusterVirtualServiceReconcileLoopMockRecorder struct { mock *MockMulticlusterVirtualServiceReconcileLoop } -// NewMockMulticlusterVirtualServiceReconcileLoop creates a new mock instance +// NewMockMulticlusterVirtualServiceReconcileLoop creates a new mock instance. func NewMockMulticlusterVirtualServiceReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterVirtualServiceReconcileLoop { mock := &MockMulticlusterVirtualServiceReconcileLoop{ctrl: ctrl} mock.recorder = &MockMulticlusterVirtualServiceReconcileLoopMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterVirtualServiceReconcileLoop) EXPECT() *MockMulticlusterVirtualServiceReconcileLoopMockRecorder { return m.recorder } -// AddMulticlusterVirtualServiceReconciler mocks base method +// AddMulticlusterVirtualServiceReconciler mocks base method. func (m *MockMulticlusterVirtualServiceReconcileLoop) AddMulticlusterVirtualServiceReconciler(ctx context.Context, rec controller.MulticlusterVirtualServiceReconciler, predicates ...predicate.Predicate) { m.ctrl.T.Helper() varargs := []interface{}{ctx, rec} @@ -353,9 +928,124 @@ func (m *MockMulticlusterVirtualServiceReconcileLoop) AddMulticlusterVirtualServ m.ctrl.Call(m, "AddMulticlusterVirtualServiceReconciler", varargs...) } -// AddMulticlusterVirtualServiceReconciler indicates an expected call of AddMulticlusterVirtualServiceReconciler +// AddMulticlusterVirtualServiceReconciler indicates an expected call of AddMulticlusterVirtualServiceReconciler. func (mr *MockMulticlusterVirtualServiceReconcileLoopMockRecorder) AddMulticlusterVirtualServiceReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, rec}, predicates...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterVirtualServiceReconciler", reflect.TypeOf((*MockMulticlusterVirtualServiceReconcileLoop)(nil).AddMulticlusterVirtualServiceReconciler), varargs...) } + +// MockMulticlusterVirtualHostOptionReconciler is a mock of MulticlusterVirtualHostOptionReconciler interface. +type MockMulticlusterVirtualHostOptionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterVirtualHostOptionReconcilerMockRecorder +} + +// MockMulticlusterVirtualHostOptionReconcilerMockRecorder is the mock recorder for MockMulticlusterVirtualHostOptionReconciler. +type MockMulticlusterVirtualHostOptionReconcilerMockRecorder struct { + mock *MockMulticlusterVirtualHostOptionReconciler +} + +// NewMockMulticlusterVirtualHostOptionReconciler creates a new mock instance. +func NewMockMulticlusterVirtualHostOptionReconciler(ctrl *gomock.Controller) *MockMulticlusterVirtualHostOptionReconciler { + mock := &MockMulticlusterVirtualHostOptionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterVirtualHostOptionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterVirtualHostOptionReconciler) EXPECT() *MockMulticlusterVirtualHostOptionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileVirtualHostOption mocks base method. +func (m *MockMulticlusterVirtualHostOptionReconciler) ReconcileVirtualHostOption(clusterName string, obj *v1.VirtualHostOption) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileVirtualHostOption", clusterName, obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileVirtualHostOption indicates an expected call of ReconcileVirtualHostOption. +func (mr *MockMulticlusterVirtualHostOptionReconcilerMockRecorder) ReconcileVirtualHostOption(clusterName, obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileVirtualHostOption", reflect.TypeOf((*MockMulticlusterVirtualHostOptionReconciler)(nil).ReconcileVirtualHostOption), clusterName, obj) +} + +// MockMulticlusterVirtualHostOptionDeletionReconciler is a mock of MulticlusterVirtualHostOptionDeletionReconciler interface. +type MockMulticlusterVirtualHostOptionDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterVirtualHostOptionDeletionReconcilerMockRecorder +} + +// MockMulticlusterVirtualHostOptionDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterVirtualHostOptionDeletionReconciler. +type MockMulticlusterVirtualHostOptionDeletionReconcilerMockRecorder struct { + mock *MockMulticlusterVirtualHostOptionDeletionReconciler +} + +// NewMockMulticlusterVirtualHostOptionDeletionReconciler creates a new mock instance. +func NewMockMulticlusterVirtualHostOptionDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterVirtualHostOptionDeletionReconciler { + mock := &MockMulticlusterVirtualHostOptionDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterVirtualHostOptionDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterVirtualHostOptionDeletionReconciler) EXPECT() *MockMulticlusterVirtualHostOptionDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileVirtualHostOptionDeletion mocks base method. +func (m *MockMulticlusterVirtualHostOptionDeletionReconciler) ReconcileVirtualHostOptionDeletion(clusterName string, req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileVirtualHostOptionDeletion", clusterName, req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileVirtualHostOptionDeletion indicates an expected call of ReconcileVirtualHostOptionDeletion. +func (mr *MockMulticlusterVirtualHostOptionDeletionReconcilerMockRecorder) ReconcileVirtualHostOptionDeletion(clusterName, req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileVirtualHostOptionDeletion", reflect.TypeOf((*MockMulticlusterVirtualHostOptionDeletionReconciler)(nil).ReconcileVirtualHostOptionDeletion), clusterName, req) +} + +// MockMulticlusterVirtualHostOptionReconcileLoop is a mock of MulticlusterVirtualHostOptionReconcileLoop interface. +type MockMulticlusterVirtualHostOptionReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockMulticlusterVirtualHostOptionReconcileLoopMockRecorder +} + +// MockMulticlusterVirtualHostOptionReconcileLoopMockRecorder is the mock recorder for MockMulticlusterVirtualHostOptionReconcileLoop. +type MockMulticlusterVirtualHostOptionReconcileLoopMockRecorder struct { + mock *MockMulticlusterVirtualHostOptionReconcileLoop +} + +// NewMockMulticlusterVirtualHostOptionReconcileLoop creates a new mock instance. +func NewMockMulticlusterVirtualHostOptionReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterVirtualHostOptionReconcileLoop { + mock := &MockMulticlusterVirtualHostOptionReconcileLoop{ctrl: ctrl} + mock.recorder = &MockMulticlusterVirtualHostOptionReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterVirtualHostOptionReconcileLoop) EXPECT() *MockMulticlusterVirtualHostOptionReconcileLoopMockRecorder { + return m.recorder +} + +// AddMulticlusterVirtualHostOptionReconciler mocks base method. +func (m *MockMulticlusterVirtualHostOptionReconcileLoop) AddMulticlusterVirtualHostOptionReconciler(ctx context.Context, rec controller.MulticlusterVirtualHostOptionReconciler, predicates ...predicate.Predicate) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "AddMulticlusterVirtualHostOptionReconciler", varargs...) +} + +// AddMulticlusterVirtualHostOptionReconciler indicates an expected call of AddMulticlusterVirtualHostOptionReconciler. +func (mr *MockMulticlusterVirtualHostOptionReconcileLoopMockRecorder) AddMulticlusterVirtualHostOptionReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterVirtualHostOptionReconciler", reflect.TypeOf((*MockMulticlusterVirtualHostOptionReconcileLoop)(nil).AddMulticlusterVirtualHostOptionReconciler), varargs...) +} diff --git a/pkg/api/gateway.solo.io/v1/controller/mocks/reconcilers.go b/pkg/api/gateway.solo.io/v1/controller/mocks/reconcilers.go index 9652b0263..4b9a5d6cd 100644 --- a/pkg/api/gateway.solo.io/v1/controller/mocks/reconcilers.go +++ b/pkg/api/gateway.solo.io/v1/controller/mocks/reconcilers.go @@ -15,30 +15,30 @@ import ( predicate "sigs.k8s.io/controller-runtime/pkg/predicate" ) -// MockGatewayReconciler is a mock of GatewayReconciler interface +// MockGatewayReconciler is a mock of GatewayReconciler interface. type MockGatewayReconciler struct { ctrl *gomock.Controller recorder *MockGatewayReconcilerMockRecorder } -// MockGatewayReconcilerMockRecorder is the mock recorder for MockGatewayReconciler +// MockGatewayReconcilerMockRecorder is the mock recorder for MockGatewayReconciler. type MockGatewayReconcilerMockRecorder struct { mock *MockGatewayReconciler } -// NewMockGatewayReconciler creates a new mock instance +// NewMockGatewayReconciler creates a new mock instance. func NewMockGatewayReconciler(ctrl *gomock.Controller) *MockGatewayReconciler { mock := &MockGatewayReconciler{ctrl: ctrl} mock.recorder = &MockGatewayReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockGatewayReconciler) EXPECT() *MockGatewayReconcilerMockRecorder { return m.recorder } -// ReconcileGateway mocks base method +// ReconcileGateway mocks base method. func (m *MockGatewayReconciler) ReconcileGateway(obj *v1.Gateway) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileGateway", obj) @@ -47,36 +47,36 @@ func (m *MockGatewayReconciler) ReconcileGateway(obj *v1.Gateway) (reconcile.Res return ret0, ret1 } -// ReconcileGateway indicates an expected call of ReconcileGateway +// ReconcileGateway indicates an expected call of ReconcileGateway. func (mr *MockGatewayReconcilerMockRecorder) ReconcileGateway(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileGateway", reflect.TypeOf((*MockGatewayReconciler)(nil).ReconcileGateway), obj) } -// MockGatewayDeletionReconciler is a mock of GatewayDeletionReconciler interface +// MockGatewayDeletionReconciler is a mock of GatewayDeletionReconciler interface. type MockGatewayDeletionReconciler struct { ctrl *gomock.Controller recorder *MockGatewayDeletionReconcilerMockRecorder } -// MockGatewayDeletionReconcilerMockRecorder is the mock recorder for MockGatewayDeletionReconciler +// MockGatewayDeletionReconcilerMockRecorder is the mock recorder for MockGatewayDeletionReconciler. type MockGatewayDeletionReconcilerMockRecorder struct { mock *MockGatewayDeletionReconciler } -// NewMockGatewayDeletionReconciler creates a new mock instance +// NewMockGatewayDeletionReconciler creates a new mock instance. func NewMockGatewayDeletionReconciler(ctrl *gomock.Controller) *MockGatewayDeletionReconciler { mock := &MockGatewayDeletionReconciler{ctrl: ctrl} mock.recorder = &MockGatewayDeletionReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockGatewayDeletionReconciler) EXPECT() *MockGatewayDeletionReconcilerMockRecorder { return m.recorder } -// ReconcileGatewayDeletion mocks base method +// ReconcileGatewayDeletion mocks base method. func (m *MockGatewayDeletionReconciler) ReconcileGatewayDeletion(req reconcile.Request) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileGatewayDeletion", req) @@ -84,144 +84,1059 @@ func (m *MockGatewayDeletionReconciler) ReconcileGatewayDeletion(req reconcile.R return ret0 } -// ReconcileGatewayDeletion indicates an expected call of ReconcileGatewayDeletion +// ReconcileGatewayDeletion indicates an expected call of ReconcileGatewayDeletion. func (mr *MockGatewayDeletionReconcilerMockRecorder) ReconcileGatewayDeletion(req interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileGatewayDeletion", reflect.TypeOf((*MockGatewayDeletionReconciler)(nil).ReconcileGatewayDeletion), req) } -// MockGatewayFinalizer is a mock of GatewayFinalizer interface +// MockGatewayFinalizer is a mock of GatewayFinalizer interface. type MockGatewayFinalizer struct { ctrl *gomock.Controller recorder *MockGatewayFinalizerMockRecorder } -// MockGatewayFinalizerMockRecorder is the mock recorder for MockGatewayFinalizer +// MockGatewayFinalizerMockRecorder is the mock recorder for MockGatewayFinalizer. type MockGatewayFinalizerMockRecorder struct { mock *MockGatewayFinalizer } -// NewMockGatewayFinalizer creates a new mock instance +// NewMockGatewayFinalizer creates a new mock instance. func NewMockGatewayFinalizer(ctrl *gomock.Controller) *MockGatewayFinalizer { mock := &MockGatewayFinalizer{ctrl: ctrl} mock.recorder = &MockGatewayFinalizerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockGatewayFinalizer) EXPECT() *MockGatewayFinalizerMockRecorder { return m.recorder } -// ReconcileGateway mocks base method +// FinalizeGateway mocks base method. +func (m *MockGatewayFinalizer) FinalizeGateway(obj *v1.Gateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeGateway", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeGateway indicates an expected call of FinalizeGateway. +func (mr *MockGatewayFinalizerMockRecorder) FinalizeGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeGateway", reflect.TypeOf((*MockGatewayFinalizer)(nil).FinalizeGateway), obj) +} + +// GatewayFinalizerName mocks base method. +func (m *MockGatewayFinalizer) GatewayFinalizerName() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GatewayFinalizerName") + ret0, _ := ret[0].(string) + return ret0 +} + +// GatewayFinalizerName indicates an expected call of GatewayFinalizerName. +func (mr *MockGatewayFinalizerMockRecorder) GatewayFinalizerName() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GatewayFinalizerName", reflect.TypeOf((*MockGatewayFinalizer)(nil).GatewayFinalizerName)) +} + +// ReconcileGateway mocks base method. func (m *MockGatewayFinalizer) ReconcileGateway(obj *v1.Gateway) (reconcile.Result, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ReconcileGateway", obj) + ret := m.ctrl.Call(m, "ReconcileGateway", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileGateway indicates an expected call of ReconcileGateway. +func (mr *MockGatewayFinalizerMockRecorder) ReconcileGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileGateway", reflect.TypeOf((*MockGatewayFinalizer)(nil).ReconcileGateway), obj) +} + +// MockGatewayReconcileLoop is a mock of GatewayReconcileLoop interface. +type MockGatewayReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockGatewayReconcileLoopMockRecorder +} + +// MockGatewayReconcileLoopMockRecorder is the mock recorder for MockGatewayReconcileLoop. +type MockGatewayReconcileLoopMockRecorder struct { + mock *MockGatewayReconcileLoop +} + +// NewMockGatewayReconcileLoop creates a new mock instance. +func NewMockGatewayReconcileLoop(ctrl *gomock.Controller) *MockGatewayReconcileLoop { + mock := &MockGatewayReconcileLoop{ctrl: ctrl} + mock.recorder = &MockGatewayReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGatewayReconcileLoop) EXPECT() *MockGatewayReconcileLoopMockRecorder { + return m.recorder +} + +// RunGatewayReconciler mocks base method. +func (m *MockGatewayReconcileLoop) RunGatewayReconciler(ctx context.Context, rec controller.GatewayReconciler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RunGatewayReconciler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// RunGatewayReconciler indicates an expected call of RunGatewayReconciler. +func (mr *MockGatewayReconcileLoopMockRecorder) RunGatewayReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunGatewayReconciler", reflect.TypeOf((*MockGatewayReconcileLoop)(nil).RunGatewayReconciler), varargs...) +} + +// MockHttpListenerOptionReconciler is a mock of HttpListenerOptionReconciler interface. +type MockHttpListenerOptionReconciler struct { + ctrl *gomock.Controller + recorder *MockHttpListenerOptionReconcilerMockRecorder +} + +// MockHttpListenerOptionReconcilerMockRecorder is the mock recorder for MockHttpListenerOptionReconciler. +type MockHttpListenerOptionReconcilerMockRecorder struct { + mock *MockHttpListenerOptionReconciler +} + +// NewMockHttpListenerOptionReconciler creates a new mock instance. +func NewMockHttpListenerOptionReconciler(ctrl *gomock.Controller) *MockHttpListenerOptionReconciler { + mock := &MockHttpListenerOptionReconciler{ctrl: ctrl} + mock.recorder = &MockHttpListenerOptionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockHttpListenerOptionReconciler) EXPECT() *MockHttpListenerOptionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionReconciler) ReconcileHttpListenerOption(obj *v1.HttpListenerOption) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileHttpListenerOption", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileHttpListenerOption indicates an expected call of ReconcileHttpListenerOption. +func (mr *MockHttpListenerOptionReconcilerMockRecorder) ReconcileHttpListenerOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionReconciler)(nil).ReconcileHttpListenerOption), obj) +} + +// MockHttpListenerOptionDeletionReconciler is a mock of HttpListenerOptionDeletionReconciler interface. +type MockHttpListenerOptionDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockHttpListenerOptionDeletionReconcilerMockRecorder +} + +// MockHttpListenerOptionDeletionReconcilerMockRecorder is the mock recorder for MockHttpListenerOptionDeletionReconciler. +type MockHttpListenerOptionDeletionReconcilerMockRecorder struct { + mock *MockHttpListenerOptionDeletionReconciler +} + +// NewMockHttpListenerOptionDeletionReconciler creates a new mock instance. +func NewMockHttpListenerOptionDeletionReconciler(ctrl *gomock.Controller) *MockHttpListenerOptionDeletionReconciler { + mock := &MockHttpListenerOptionDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockHttpListenerOptionDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockHttpListenerOptionDeletionReconciler) EXPECT() *MockHttpListenerOptionDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileHttpListenerOptionDeletion mocks base method. +func (m *MockHttpListenerOptionDeletionReconciler) ReconcileHttpListenerOptionDeletion(req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileHttpListenerOptionDeletion", req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileHttpListenerOptionDeletion indicates an expected call of ReconcileHttpListenerOptionDeletion. +func (mr *MockHttpListenerOptionDeletionReconcilerMockRecorder) ReconcileHttpListenerOptionDeletion(req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileHttpListenerOptionDeletion", reflect.TypeOf((*MockHttpListenerOptionDeletionReconciler)(nil).ReconcileHttpListenerOptionDeletion), req) +} + +// MockHttpListenerOptionFinalizer is a mock of HttpListenerOptionFinalizer interface. +type MockHttpListenerOptionFinalizer struct { + ctrl *gomock.Controller + recorder *MockHttpListenerOptionFinalizerMockRecorder +} + +// MockHttpListenerOptionFinalizerMockRecorder is the mock recorder for MockHttpListenerOptionFinalizer. +type MockHttpListenerOptionFinalizerMockRecorder struct { + mock *MockHttpListenerOptionFinalizer +} + +// NewMockHttpListenerOptionFinalizer creates a new mock instance. +func NewMockHttpListenerOptionFinalizer(ctrl *gomock.Controller) *MockHttpListenerOptionFinalizer { + mock := &MockHttpListenerOptionFinalizer{ctrl: ctrl} + mock.recorder = &MockHttpListenerOptionFinalizerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockHttpListenerOptionFinalizer) EXPECT() *MockHttpListenerOptionFinalizerMockRecorder { + return m.recorder +} + +// FinalizeHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionFinalizer) FinalizeHttpListenerOption(obj *v1.HttpListenerOption) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeHttpListenerOption", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeHttpListenerOption indicates an expected call of FinalizeHttpListenerOption. +func (mr *MockHttpListenerOptionFinalizerMockRecorder) FinalizeHttpListenerOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionFinalizer)(nil).FinalizeHttpListenerOption), obj) +} + +// HttpListenerOptionFinalizerName mocks base method. +func (m *MockHttpListenerOptionFinalizer) HttpListenerOptionFinalizerName() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "HttpListenerOptionFinalizerName") + ret0, _ := ret[0].(string) + return ret0 +} + +// HttpListenerOptionFinalizerName indicates an expected call of HttpListenerOptionFinalizerName. +func (mr *MockHttpListenerOptionFinalizerMockRecorder) HttpListenerOptionFinalizerName() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "HttpListenerOptionFinalizerName", reflect.TypeOf((*MockHttpListenerOptionFinalizer)(nil).HttpListenerOptionFinalizerName)) +} + +// ReconcileHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionFinalizer) ReconcileHttpListenerOption(obj *v1.HttpListenerOption) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileHttpListenerOption", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileHttpListenerOption indicates an expected call of ReconcileHttpListenerOption. +func (mr *MockHttpListenerOptionFinalizerMockRecorder) ReconcileHttpListenerOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionFinalizer)(nil).ReconcileHttpListenerOption), obj) +} + +// MockHttpListenerOptionReconcileLoop is a mock of HttpListenerOptionReconcileLoop interface. +type MockHttpListenerOptionReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockHttpListenerOptionReconcileLoopMockRecorder +} + +// MockHttpListenerOptionReconcileLoopMockRecorder is the mock recorder for MockHttpListenerOptionReconcileLoop. +type MockHttpListenerOptionReconcileLoopMockRecorder struct { + mock *MockHttpListenerOptionReconcileLoop +} + +// NewMockHttpListenerOptionReconcileLoop creates a new mock instance. +func NewMockHttpListenerOptionReconcileLoop(ctrl *gomock.Controller) *MockHttpListenerOptionReconcileLoop { + mock := &MockHttpListenerOptionReconcileLoop{ctrl: ctrl} + mock.recorder = &MockHttpListenerOptionReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockHttpListenerOptionReconcileLoop) EXPECT() *MockHttpListenerOptionReconcileLoopMockRecorder { + return m.recorder +} + +// RunHttpListenerOptionReconciler mocks base method. +func (m *MockHttpListenerOptionReconcileLoop) RunHttpListenerOptionReconciler(ctx context.Context, rec controller.HttpListenerOptionReconciler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RunHttpListenerOptionReconciler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// RunHttpListenerOptionReconciler indicates an expected call of RunHttpListenerOptionReconciler. +func (mr *MockHttpListenerOptionReconcileLoopMockRecorder) RunHttpListenerOptionReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunHttpListenerOptionReconciler", reflect.TypeOf((*MockHttpListenerOptionReconcileLoop)(nil).RunHttpListenerOptionReconciler), varargs...) +} + +// MockListenerOptionReconciler is a mock of ListenerOptionReconciler interface. +type MockListenerOptionReconciler struct { + ctrl *gomock.Controller + recorder *MockListenerOptionReconcilerMockRecorder +} + +// MockListenerOptionReconcilerMockRecorder is the mock recorder for MockListenerOptionReconciler. +type MockListenerOptionReconcilerMockRecorder struct { + mock *MockListenerOptionReconciler +} + +// NewMockListenerOptionReconciler creates a new mock instance. +func NewMockListenerOptionReconciler(ctrl *gomock.Controller) *MockListenerOptionReconciler { + mock := &MockListenerOptionReconciler{ctrl: ctrl} + mock.recorder = &MockListenerOptionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockListenerOptionReconciler) EXPECT() *MockListenerOptionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileListenerOption mocks base method. +func (m *MockListenerOptionReconciler) ReconcileListenerOption(obj *v1.ListenerOption) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileListenerOption", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileListenerOption indicates an expected call of ReconcileListenerOption. +func (mr *MockListenerOptionReconcilerMockRecorder) ReconcileListenerOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileListenerOption", reflect.TypeOf((*MockListenerOptionReconciler)(nil).ReconcileListenerOption), obj) +} + +// MockListenerOptionDeletionReconciler is a mock of ListenerOptionDeletionReconciler interface. +type MockListenerOptionDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockListenerOptionDeletionReconcilerMockRecorder +} + +// MockListenerOptionDeletionReconcilerMockRecorder is the mock recorder for MockListenerOptionDeletionReconciler. +type MockListenerOptionDeletionReconcilerMockRecorder struct { + mock *MockListenerOptionDeletionReconciler +} + +// NewMockListenerOptionDeletionReconciler creates a new mock instance. +func NewMockListenerOptionDeletionReconciler(ctrl *gomock.Controller) *MockListenerOptionDeletionReconciler { + mock := &MockListenerOptionDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockListenerOptionDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockListenerOptionDeletionReconciler) EXPECT() *MockListenerOptionDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileListenerOptionDeletion mocks base method. +func (m *MockListenerOptionDeletionReconciler) ReconcileListenerOptionDeletion(req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileListenerOptionDeletion", req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileListenerOptionDeletion indicates an expected call of ReconcileListenerOptionDeletion. +func (mr *MockListenerOptionDeletionReconcilerMockRecorder) ReconcileListenerOptionDeletion(req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileListenerOptionDeletion", reflect.TypeOf((*MockListenerOptionDeletionReconciler)(nil).ReconcileListenerOptionDeletion), req) +} + +// MockListenerOptionFinalizer is a mock of ListenerOptionFinalizer interface. +type MockListenerOptionFinalizer struct { + ctrl *gomock.Controller + recorder *MockListenerOptionFinalizerMockRecorder +} + +// MockListenerOptionFinalizerMockRecorder is the mock recorder for MockListenerOptionFinalizer. +type MockListenerOptionFinalizerMockRecorder struct { + mock *MockListenerOptionFinalizer +} + +// NewMockListenerOptionFinalizer creates a new mock instance. +func NewMockListenerOptionFinalizer(ctrl *gomock.Controller) *MockListenerOptionFinalizer { + mock := &MockListenerOptionFinalizer{ctrl: ctrl} + mock.recorder = &MockListenerOptionFinalizerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockListenerOptionFinalizer) EXPECT() *MockListenerOptionFinalizerMockRecorder { + return m.recorder +} + +// FinalizeListenerOption mocks base method. +func (m *MockListenerOptionFinalizer) FinalizeListenerOption(obj *v1.ListenerOption) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeListenerOption", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeListenerOption indicates an expected call of FinalizeListenerOption. +func (mr *MockListenerOptionFinalizerMockRecorder) FinalizeListenerOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeListenerOption", reflect.TypeOf((*MockListenerOptionFinalizer)(nil).FinalizeListenerOption), obj) +} + +// ListenerOptionFinalizerName mocks base method. +func (m *MockListenerOptionFinalizer) ListenerOptionFinalizerName() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ListenerOptionFinalizerName") + ret0, _ := ret[0].(string) + return ret0 +} + +// ListenerOptionFinalizerName indicates an expected call of ListenerOptionFinalizerName. +func (mr *MockListenerOptionFinalizerMockRecorder) ListenerOptionFinalizerName() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListenerOptionFinalizerName", reflect.TypeOf((*MockListenerOptionFinalizer)(nil).ListenerOptionFinalizerName)) +} + +// ReconcileListenerOption mocks base method. +func (m *MockListenerOptionFinalizer) ReconcileListenerOption(obj *v1.ListenerOption) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileListenerOption", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileListenerOption indicates an expected call of ReconcileListenerOption. +func (mr *MockListenerOptionFinalizerMockRecorder) ReconcileListenerOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileListenerOption", reflect.TypeOf((*MockListenerOptionFinalizer)(nil).ReconcileListenerOption), obj) +} + +// MockListenerOptionReconcileLoop is a mock of ListenerOptionReconcileLoop interface. +type MockListenerOptionReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockListenerOptionReconcileLoopMockRecorder +} + +// MockListenerOptionReconcileLoopMockRecorder is the mock recorder for MockListenerOptionReconcileLoop. +type MockListenerOptionReconcileLoopMockRecorder struct { + mock *MockListenerOptionReconcileLoop +} + +// NewMockListenerOptionReconcileLoop creates a new mock instance. +func NewMockListenerOptionReconcileLoop(ctrl *gomock.Controller) *MockListenerOptionReconcileLoop { + mock := &MockListenerOptionReconcileLoop{ctrl: ctrl} + mock.recorder = &MockListenerOptionReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockListenerOptionReconcileLoop) EXPECT() *MockListenerOptionReconcileLoopMockRecorder { + return m.recorder +} + +// RunListenerOptionReconciler mocks base method. +func (m *MockListenerOptionReconcileLoop) RunListenerOptionReconciler(ctx context.Context, rec controller.ListenerOptionReconciler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RunListenerOptionReconciler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// RunListenerOptionReconciler indicates an expected call of RunListenerOptionReconciler. +func (mr *MockListenerOptionReconcileLoopMockRecorder) RunListenerOptionReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunListenerOptionReconciler", reflect.TypeOf((*MockListenerOptionReconcileLoop)(nil).RunListenerOptionReconciler), varargs...) +} + +// MockMatchableHttpGatewayReconciler is a mock of MatchableHttpGatewayReconciler interface. +type MockMatchableHttpGatewayReconciler struct { + ctrl *gomock.Controller + recorder *MockMatchableHttpGatewayReconcilerMockRecorder +} + +// MockMatchableHttpGatewayReconcilerMockRecorder is the mock recorder for MockMatchableHttpGatewayReconciler. +type MockMatchableHttpGatewayReconcilerMockRecorder struct { + mock *MockMatchableHttpGatewayReconciler +} + +// NewMockMatchableHttpGatewayReconciler creates a new mock instance. +func NewMockMatchableHttpGatewayReconciler(ctrl *gomock.Controller) *MockMatchableHttpGatewayReconciler { + mock := &MockMatchableHttpGatewayReconciler{ctrl: ctrl} + mock.recorder = &MockMatchableHttpGatewayReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMatchableHttpGatewayReconciler) EXPECT() *MockMatchableHttpGatewayReconcilerMockRecorder { + return m.recorder +} + +// ReconcileMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayReconciler) ReconcileMatchableHttpGateway(obj *v1.MatchableHttpGateway) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileMatchableHttpGateway", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileMatchableHttpGateway indicates an expected call of ReconcileMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayReconcilerMockRecorder) ReconcileMatchableHttpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayReconciler)(nil).ReconcileMatchableHttpGateway), obj) +} + +// MockMatchableHttpGatewayDeletionReconciler is a mock of MatchableHttpGatewayDeletionReconciler interface. +type MockMatchableHttpGatewayDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockMatchableHttpGatewayDeletionReconcilerMockRecorder +} + +// MockMatchableHttpGatewayDeletionReconcilerMockRecorder is the mock recorder for MockMatchableHttpGatewayDeletionReconciler. +type MockMatchableHttpGatewayDeletionReconcilerMockRecorder struct { + mock *MockMatchableHttpGatewayDeletionReconciler +} + +// NewMockMatchableHttpGatewayDeletionReconciler creates a new mock instance. +func NewMockMatchableHttpGatewayDeletionReconciler(ctrl *gomock.Controller) *MockMatchableHttpGatewayDeletionReconciler { + mock := &MockMatchableHttpGatewayDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockMatchableHttpGatewayDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMatchableHttpGatewayDeletionReconciler) EXPECT() *MockMatchableHttpGatewayDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileMatchableHttpGatewayDeletion mocks base method. +func (m *MockMatchableHttpGatewayDeletionReconciler) ReconcileMatchableHttpGatewayDeletion(req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileMatchableHttpGatewayDeletion", req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileMatchableHttpGatewayDeletion indicates an expected call of ReconcileMatchableHttpGatewayDeletion. +func (mr *MockMatchableHttpGatewayDeletionReconcilerMockRecorder) ReconcileMatchableHttpGatewayDeletion(req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileMatchableHttpGatewayDeletion", reflect.TypeOf((*MockMatchableHttpGatewayDeletionReconciler)(nil).ReconcileMatchableHttpGatewayDeletion), req) +} + +// MockMatchableHttpGatewayFinalizer is a mock of MatchableHttpGatewayFinalizer interface. +type MockMatchableHttpGatewayFinalizer struct { + ctrl *gomock.Controller + recorder *MockMatchableHttpGatewayFinalizerMockRecorder +} + +// MockMatchableHttpGatewayFinalizerMockRecorder is the mock recorder for MockMatchableHttpGatewayFinalizer. +type MockMatchableHttpGatewayFinalizerMockRecorder struct { + mock *MockMatchableHttpGatewayFinalizer +} + +// NewMockMatchableHttpGatewayFinalizer creates a new mock instance. +func NewMockMatchableHttpGatewayFinalizer(ctrl *gomock.Controller) *MockMatchableHttpGatewayFinalizer { + mock := &MockMatchableHttpGatewayFinalizer{ctrl: ctrl} + mock.recorder = &MockMatchableHttpGatewayFinalizerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMatchableHttpGatewayFinalizer) EXPECT() *MockMatchableHttpGatewayFinalizerMockRecorder { + return m.recorder +} + +// FinalizeMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayFinalizer) FinalizeMatchableHttpGateway(obj *v1.MatchableHttpGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeMatchableHttpGateway", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeMatchableHttpGateway indicates an expected call of FinalizeMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayFinalizerMockRecorder) FinalizeMatchableHttpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayFinalizer)(nil).FinalizeMatchableHttpGateway), obj) +} + +// MatchableHttpGatewayFinalizerName mocks base method. +func (m *MockMatchableHttpGatewayFinalizer) MatchableHttpGatewayFinalizerName() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "MatchableHttpGatewayFinalizerName") + ret0, _ := ret[0].(string) + return ret0 +} + +// MatchableHttpGatewayFinalizerName indicates an expected call of MatchableHttpGatewayFinalizerName. +func (mr *MockMatchableHttpGatewayFinalizerMockRecorder) MatchableHttpGatewayFinalizerName() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MatchableHttpGatewayFinalizerName", reflect.TypeOf((*MockMatchableHttpGatewayFinalizer)(nil).MatchableHttpGatewayFinalizerName)) +} + +// ReconcileMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayFinalizer) ReconcileMatchableHttpGateway(obj *v1.MatchableHttpGateway) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileMatchableHttpGateway", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileMatchableHttpGateway indicates an expected call of ReconcileMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayFinalizerMockRecorder) ReconcileMatchableHttpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayFinalizer)(nil).ReconcileMatchableHttpGateway), obj) +} + +// MockMatchableHttpGatewayReconcileLoop is a mock of MatchableHttpGatewayReconcileLoop interface. +type MockMatchableHttpGatewayReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockMatchableHttpGatewayReconcileLoopMockRecorder +} + +// MockMatchableHttpGatewayReconcileLoopMockRecorder is the mock recorder for MockMatchableHttpGatewayReconcileLoop. +type MockMatchableHttpGatewayReconcileLoopMockRecorder struct { + mock *MockMatchableHttpGatewayReconcileLoop +} + +// NewMockMatchableHttpGatewayReconcileLoop creates a new mock instance. +func NewMockMatchableHttpGatewayReconcileLoop(ctrl *gomock.Controller) *MockMatchableHttpGatewayReconcileLoop { + mock := &MockMatchableHttpGatewayReconcileLoop{ctrl: ctrl} + mock.recorder = &MockMatchableHttpGatewayReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMatchableHttpGatewayReconcileLoop) EXPECT() *MockMatchableHttpGatewayReconcileLoopMockRecorder { + return m.recorder +} + +// RunMatchableHttpGatewayReconciler mocks base method. +func (m *MockMatchableHttpGatewayReconcileLoop) RunMatchableHttpGatewayReconciler(ctx context.Context, rec controller.MatchableHttpGatewayReconciler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RunMatchableHttpGatewayReconciler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// RunMatchableHttpGatewayReconciler indicates an expected call of RunMatchableHttpGatewayReconciler. +func (mr *MockMatchableHttpGatewayReconcileLoopMockRecorder) RunMatchableHttpGatewayReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunMatchableHttpGatewayReconciler", reflect.TypeOf((*MockMatchableHttpGatewayReconcileLoop)(nil).RunMatchableHttpGatewayReconciler), varargs...) +} + +// MockMatchableTcpGatewayReconciler is a mock of MatchableTcpGatewayReconciler interface. +type MockMatchableTcpGatewayReconciler struct { + ctrl *gomock.Controller + recorder *MockMatchableTcpGatewayReconcilerMockRecorder +} + +// MockMatchableTcpGatewayReconcilerMockRecorder is the mock recorder for MockMatchableTcpGatewayReconciler. +type MockMatchableTcpGatewayReconcilerMockRecorder struct { + mock *MockMatchableTcpGatewayReconciler +} + +// NewMockMatchableTcpGatewayReconciler creates a new mock instance. +func NewMockMatchableTcpGatewayReconciler(ctrl *gomock.Controller) *MockMatchableTcpGatewayReconciler { + mock := &MockMatchableTcpGatewayReconciler{ctrl: ctrl} + mock.recorder = &MockMatchableTcpGatewayReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMatchableTcpGatewayReconciler) EXPECT() *MockMatchableTcpGatewayReconcilerMockRecorder { + return m.recorder +} + +// ReconcileMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayReconciler) ReconcileMatchableTcpGateway(obj *v1.MatchableTcpGateway) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileMatchableTcpGateway", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileMatchableTcpGateway indicates an expected call of ReconcileMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayReconcilerMockRecorder) ReconcileMatchableTcpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayReconciler)(nil).ReconcileMatchableTcpGateway), obj) +} + +// MockMatchableTcpGatewayDeletionReconciler is a mock of MatchableTcpGatewayDeletionReconciler interface. +type MockMatchableTcpGatewayDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockMatchableTcpGatewayDeletionReconcilerMockRecorder +} + +// MockMatchableTcpGatewayDeletionReconcilerMockRecorder is the mock recorder for MockMatchableTcpGatewayDeletionReconciler. +type MockMatchableTcpGatewayDeletionReconcilerMockRecorder struct { + mock *MockMatchableTcpGatewayDeletionReconciler +} + +// NewMockMatchableTcpGatewayDeletionReconciler creates a new mock instance. +func NewMockMatchableTcpGatewayDeletionReconciler(ctrl *gomock.Controller) *MockMatchableTcpGatewayDeletionReconciler { + mock := &MockMatchableTcpGatewayDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockMatchableTcpGatewayDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMatchableTcpGatewayDeletionReconciler) EXPECT() *MockMatchableTcpGatewayDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileMatchableTcpGatewayDeletion mocks base method. +func (m *MockMatchableTcpGatewayDeletionReconciler) ReconcileMatchableTcpGatewayDeletion(req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileMatchableTcpGatewayDeletion", req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileMatchableTcpGatewayDeletion indicates an expected call of ReconcileMatchableTcpGatewayDeletion. +func (mr *MockMatchableTcpGatewayDeletionReconcilerMockRecorder) ReconcileMatchableTcpGatewayDeletion(req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileMatchableTcpGatewayDeletion", reflect.TypeOf((*MockMatchableTcpGatewayDeletionReconciler)(nil).ReconcileMatchableTcpGatewayDeletion), req) +} + +// MockMatchableTcpGatewayFinalizer is a mock of MatchableTcpGatewayFinalizer interface. +type MockMatchableTcpGatewayFinalizer struct { + ctrl *gomock.Controller + recorder *MockMatchableTcpGatewayFinalizerMockRecorder +} + +// MockMatchableTcpGatewayFinalizerMockRecorder is the mock recorder for MockMatchableTcpGatewayFinalizer. +type MockMatchableTcpGatewayFinalizerMockRecorder struct { + mock *MockMatchableTcpGatewayFinalizer +} + +// NewMockMatchableTcpGatewayFinalizer creates a new mock instance. +func NewMockMatchableTcpGatewayFinalizer(ctrl *gomock.Controller) *MockMatchableTcpGatewayFinalizer { + mock := &MockMatchableTcpGatewayFinalizer{ctrl: ctrl} + mock.recorder = &MockMatchableTcpGatewayFinalizerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMatchableTcpGatewayFinalizer) EXPECT() *MockMatchableTcpGatewayFinalizerMockRecorder { + return m.recorder +} + +// FinalizeMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayFinalizer) FinalizeMatchableTcpGateway(obj *v1.MatchableTcpGateway) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeMatchableTcpGateway", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeMatchableTcpGateway indicates an expected call of FinalizeMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayFinalizerMockRecorder) FinalizeMatchableTcpGateway(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayFinalizer)(nil).FinalizeMatchableTcpGateway), obj) +} + +// MatchableTcpGatewayFinalizerName mocks base method. +func (m *MockMatchableTcpGatewayFinalizer) MatchableTcpGatewayFinalizerName() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "MatchableTcpGatewayFinalizerName") + ret0, _ := ret[0].(string) + return ret0 +} + +// MatchableTcpGatewayFinalizerName indicates an expected call of MatchableTcpGatewayFinalizerName. +func (mr *MockMatchableTcpGatewayFinalizerMockRecorder) MatchableTcpGatewayFinalizerName() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MatchableTcpGatewayFinalizerName", reflect.TypeOf((*MockMatchableTcpGatewayFinalizer)(nil).MatchableTcpGatewayFinalizerName)) +} + +// ReconcileMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayFinalizer) ReconcileMatchableTcpGateway(obj *v1.MatchableTcpGateway) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileMatchableTcpGateway", obj) ret0, _ := ret[0].(reconcile.Result) ret1, _ := ret[1].(error) return ret0, ret1 } -// ReconcileGateway indicates an expected call of ReconcileGateway -func (mr *MockGatewayFinalizerMockRecorder) ReconcileGateway(obj interface{}) *gomock.Call { +// ReconcileMatchableTcpGateway indicates an expected call of ReconcileMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayFinalizerMockRecorder) ReconcileMatchableTcpGateway(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileGateway", reflect.TypeOf((*MockGatewayFinalizer)(nil).ReconcileGateway), obj) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayFinalizer)(nil).ReconcileMatchableTcpGateway), obj) } -// GatewayFinalizerName mocks base method -func (m *MockGatewayFinalizer) GatewayFinalizerName() string { +// MockMatchableTcpGatewayReconcileLoop is a mock of MatchableTcpGatewayReconcileLoop interface. +type MockMatchableTcpGatewayReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockMatchableTcpGatewayReconcileLoopMockRecorder +} + +// MockMatchableTcpGatewayReconcileLoopMockRecorder is the mock recorder for MockMatchableTcpGatewayReconcileLoop. +type MockMatchableTcpGatewayReconcileLoopMockRecorder struct { + mock *MockMatchableTcpGatewayReconcileLoop +} + +// NewMockMatchableTcpGatewayReconcileLoop creates a new mock instance. +func NewMockMatchableTcpGatewayReconcileLoop(ctrl *gomock.Controller) *MockMatchableTcpGatewayReconcileLoop { + mock := &MockMatchableTcpGatewayReconcileLoop{ctrl: ctrl} + mock.recorder = &MockMatchableTcpGatewayReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMatchableTcpGatewayReconcileLoop) EXPECT() *MockMatchableTcpGatewayReconcileLoopMockRecorder { + return m.recorder +} + +// RunMatchableTcpGatewayReconciler mocks base method. +func (m *MockMatchableTcpGatewayReconcileLoop) RunMatchableTcpGatewayReconciler(ctx context.Context, rec controller.MatchableTcpGatewayReconciler, predicates ...predicate.Predicate) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GatewayFinalizerName") - ret0, _ := ret[0].(string) + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RunMatchableTcpGatewayReconciler", varargs...) + ret0, _ := ret[0].(error) return ret0 } -// GatewayFinalizerName indicates an expected call of GatewayFinalizerName -func (mr *MockGatewayFinalizerMockRecorder) GatewayFinalizerName() *gomock.Call { +// RunMatchableTcpGatewayReconciler indicates an expected call of RunMatchableTcpGatewayReconciler. +func (mr *MockMatchableTcpGatewayReconcileLoopMockRecorder) RunMatchableTcpGatewayReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GatewayFinalizerName", reflect.TypeOf((*MockGatewayFinalizer)(nil).GatewayFinalizerName)) + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunMatchableTcpGatewayReconciler", reflect.TypeOf((*MockMatchableTcpGatewayReconcileLoop)(nil).RunMatchableTcpGatewayReconciler), varargs...) } -// FinalizeGateway mocks base method -func (m *MockGatewayFinalizer) FinalizeGateway(obj *v1.Gateway) error { +// MockRouteOptionReconciler is a mock of RouteOptionReconciler interface. +type MockRouteOptionReconciler struct { + ctrl *gomock.Controller + recorder *MockRouteOptionReconcilerMockRecorder +} + +// MockRouteOptionReconcilerMockRecorder is the mock recorder for MockRouteOptionReconciler. +type MockRouteOptionReconcilerMockRecorder struct { + mock *MockRouteOptionReconciler +} + +// NewMockRouteOptionReconciler creates a new mock instance. +func NewMockRouteOptionReconciler(ctrl *gomock.Controller) *MockRouteOptionReconciler { + mock := &MockRouteOptionReconciler{ctrl: ctrl} + mock.recorder = &MockRouteOptionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockRouteOptionReconciler) EXPECT() *MockRouteOptionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileRouteOption mocks base method. +func (m *MockRouteOptionReconciler) ReconcileRouteOption(obj *v1.RouteOption) (reconcile.Result, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "FinalizeGateway", obj) + ret := m.ctrl.Call(m, "ReconcileRouteOption", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileRouteOption indicates an expected call of ReconcileRouteOption. +func (mr *MockRouteOptionReconcilerMockRecorder) ReconcileRouteOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileRouteOption", reflect.TypeOf((*MockRouteOptionReconciler)(nil).ReconcileRouteOption), obj) +} + +// MockRouteOptionDeletionReconciler is a mock of RouteOptionDeletionReconciler interface. +type MockRouteOptionDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockRouteOptionDeletionReconcilerMockRecorder +} + +// MockRouteOptionDeletionReconcilerMockRecorder is the mock recorder for MockRouteOptionDeletionReconciler. +type MockRouteOptionDeletionReconcilerMockRecorder struct { + mock *MockRouteOptionDeletionReconciler +} + +// NewMockRouteOptionDeletionReconciler creates a new mock instance. +func NewMockRouteOptionDeletionReconciler(ctrl *gomock.Controller) *MockRouteOptionDeletionReconciler { + mock := &MockRouteOptionDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockRouteOptionDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockRouteOptionDeletionReconciler) EXPECT() *MockRouteOptionDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileRouteOptionDeletion mocks base method. +func (m *MockRouteOptionDeletionReconciler) ReconcileRouteOptionDeletion(req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileRouteOptionDeletion", req) ret0, _ := ret[0].(error) return ret0 } -// FinalizeGateway indicates an expected call of FinalizeGateway -func (mr *MockGatewayFinalizerMockRecorder) FinalizeGateway(obj interface{}) *gomock.Call { +// ReconcileRouteOptionDeletion indicates an expected call of ReconcileRouteOptionDeletion. +func (mr *MockRouteOptionDeletionReconcilerMockRecorder) ReconcileRouteOptionDeletion(req interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeGateway", reflect.TypeOf((*MockGatewayFinalizer)(nil).FinalizeGateway), obj) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileRouteOptionDeletion", reflect.TypeOf((*MockRouteOptionDeletionReconciler)(nil).ReconcileRouteOptionDeletion), req) } -// MockGatewayReconcileLoop is a mock of GatewayReconcileLoop interface -type MockGatewayReconcileLoop struct { +// MockRouteOptionFinalizer is a mock of RouteOptionFinalizer interface. +type MockRouteOptionFinalizer struct { ctrl *gomock.Controller - recorder *MockGatewayReconcileLoopMockRecorder + recorder *MockRouteOptionFinalizerMockRecorder } -// MockGatewayReconcileLoopMockRecorder is the mock recorder for MockGatewayReconcileLoop -type MockGatewayReconcileLoopMockRecorder struct { - mock *MockGatewayReconcileLoop +// MockRouteOptionFinalizerMockRecorder is the mock recorder for MockRouteOptionFinalizer. +type MockRouteOptionFinalizerMockRecorder struct { + mock *MockRouteOptionFinalizer } -// NewMockGatewayReconcileLoop creates a new mock instance -func NewMockGatewayReconcileLoop(ctrl *gomock.Controller) *MockGatewayReconcileLoop { - mock := &MockGatewayReconcileLoop{ctrl: ctrl} - mock.recorder = &MockGatewayReconcileLoopMockRecorder{mock} +// NewMockRouteOptionFinalizer creates a new mock instance. +func NewMockRouteOptionFinalizer(ctrl *gomock.Controller) *MockRouteOptionFinalizer { + mock := &MockRouteOptionFinalizer{ctrl: ctrl} + mock.recorder = &MockRouteOptionFinalizerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use -func (m *MockGatewayReconcileLoop) EXPECT() *MockGatewayReconcileLoopMockRecorder { +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockRouteOptionFinalizer) EXPECT() *MockRouteOptionFinalizerMockRecorder { return m.recorder } -// RunGatewayReconciler mocks base method -func (m *MockGatewayReconcileLoop) RunGatewayReconciler(ctx context.Context, rec controller.GatewayReconciler, predicates ...predicate.Predicate) error { +// FinalizeRouteOption mocks base method. +func (m *MockRouteOptionFinalizer) FinalizeRouteOption(obj *v1.RouteOption) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeRouteOption", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeRouteOption indicates an expected call of FinalizeRouteOption. +func (mr *MockRouteOptionFinalizerMockRecorder) FinalizeRouteOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeRouteOption", reflect.TypeOf((*MockRouteOptionFinalizer)(nil).FinalizeRouteOption), obj) +} + +// ReconcileRouteOption mocks base method. +func (m *MockRouteOptionFinalizer) ReconcileRouteOption(obj *v1.RouteOption) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileRouteOption", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileRouteOption indicates an expected call of ReconcileRouteOption. +func (mr *MockRouteOptionFinalizerMockRecorder) ReconcileRouteOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileRouteOption", reflect.TypeOf((*MockRouteOptionFinalizer)(nil).ReconcileRouteOption), obj) +} + +// RouteOptionFinalizerName mocks base method. +func (m *MockRouteOptionFinalizer) RouteOptionFinalizerName() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "RouteOptionFinalizerName") + ret0, _ := ret[0].(string) + return ret0 +} + +// RouteOptionFinalizerName indicates an expected call of RouteOptionFinalizerName. +func (mr *MockRouteOptionFinalizerMockRecorder) RouteOptionFinalizerName() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RouteOptionFinalizerName", reflect.TypeOf((*MockRouteOptionFinalizer)(nil).RouteOptionFinalizerName)) +} + +// MockRouteOptionReconcileLoop is a mock of RouteOptionReconcileLoop interface. +type MockRouteOptionReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockRouteOptionReconcileLoopMockRecorder +} + +// MockRouteOptionReconcileLoopMockRecorder is the mock recorder for MockRouteOptionReconcileLoop. +type MockRouteOptionReconcileLoopMockRecorder struct { + mock *MockRouteOptionReconcileLoop +} + +// NewMockRouteOptionReconcileLoop creates a new mock instance. +func NewMockRouteOptionReconcileLoop(ctrl *gomock.Controller) *MockRouteOptionReconcileLoop { + mock := &MockRouteOptionReconcileLoop{ctrl: ctrl} + mock.recorder = &MockRouteOptionReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockRouteOptionReconcileLoop) EXPECT() *MockRouteOptionReconcileLoopMockRecorder { + return m.recorder +} + +// RunRouteOptionReconciler mocks base method. +func (m *MockRouteOptionReconcileLoop) RunRouteOptionReconciler(ctx context.Context, rec controller.RouteOptionReconciler, predicates ...predicate.Predicate) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, rec} for _, a := range predicates { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "RunGatewayReconciler", varargs...) + ret := m.ctrl.Call(m, "RunRouteOptionReconciler", varargs...) ret0, _ := ret[0].(error) return ret0 } -// RunGatewayReconciler indicates an expected call of RunGatewayReconciler -func (mr *MockGatewayReconcileLoopMockRecorder) RunGatewayReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { +// RunRouteOptionReconciler indicates an expected call of RunRouteOptionReconciler. +func (mr *MockRouteOptionReconcileLoopMockRecorder) RunRouteOptionReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, rec}, predicates...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunGatewayReconciler", reflect.TypeOf((*MockGatewayReconcileLoop)(nil).RunGatewayReconciler), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunRouteOptionReconciler", reflect.TypeOf((*MockRouteOptionReconcileLoop)(nil).RunRouteOptionReconciler), varargs...) } -// MockRouteTableReconciler is a mock of RouteTableReconciler interface +// MockRouteTableReconciler is a mock of RouteTableReconciler interface. type MockRouteTableReconciler struct { ctrl *gomock.Controller recorder *MockRouteTableReconcilerMockRecorder } -// MockRouteTableReconcilerMockRecorder is the mock recorder for MockRouteTableReconciler +// MockRouteTableReconcilerMockRecorder is the mock recorder for MockRouteTableReconciler. type MockRouteTableReconcilerMockRecorder struct { mock *MockRouteTableReconciler } -// NewMockRouteTableReconciler creates a new mock instance +// NewMockRouteTableReconciler creates a new mock instance. func NewMockRouteTableReconciler(ctrl *gomock.Controller) *MockRouteTableReconciler { mock := &MockRouteTableReconciler{ctrl: ctrl} mock.recorder = &MockRouteTableReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockRouteTableReconciler) EXPECT() *MockRouteTableReconcilerMockRecorder { return m.recorder } -// ReconcileRouteTable mocks base method +// ReconcileRouteTable mocks base method. func (m *MockRouteTableReconciler) ReconcileRouteTable(obj *v1.RouteTable) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileRouteTable", obj) @@ -230,36 +1145,36 @@ func (m *MockRouteTableReconciler) ReconcileRouteTable(obj *v1.RouteTable) (reco return ret0, ret1 } -// ReconcileRouteTable indicates an expected call of ReconcileRouteTable +// ReconcileRouteTable indicates an expected call of ReconcileRouteTable. func (mr *MockRouteTableReconcilerMockRecorder) ReconcileRouteTable(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileRouteTable", reflect.TypeOf((*MockRouteTableReconciler)(nil).ReconcileRouteTable), obj) } -// MockRouteTableDeletionReconciler is a mock of RouteTableDeletionReconciler interface +// MockRouteTableDeletionReconciler is a mock of RouteTableDeletionReconciler interface. type MockRouteTableDeletionReconciler struct { ctrl *gomock.Controller recorder *MockRouteTableDeletionReconcilerMockRecorder } -// MockRouteTableDeletionReconcilerMockRecorder is the mock recorder for MockRouteTableDeletionReconciler +// MockRouteTableDeletionReconcilerMockRecorder is the mock recorder for MockRouteTableDeletionReconciler. type MockRouteTableDeletionReconcilerMockRecorder struct { mock *MockRouteTableDeletionReconciler } -// NewMockRouteTableDeletionReconciler creates a new mock instance +// NewMockRouteTableDeletionReconciler creates a new mock instance. func NewMockRouteTableDeletionReconciler(ctrl *gomock.Controller) *MockRouteTableDeletionReconciler { mock := &MockRouteTableDeletionReconciler{ctrl: ctrl} mock.recorder = &MockRouteTableDeletionReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockRouteTableDeletionReconciler) EXPECT() *MockRouteTableDeletionReconcilerMockRecorder { return m.recorder } -// ReconcileRouteTableDeletion mocks base method +// ReconcileRouteTableDeletion mocks base method. func (m *MockRouteTableDeletionReconciler) ReconcileRouteTableDeletion(req reconcile.Request) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileRouteTableDeletion", req) @@ -267,36 +1182,50 @@ func (m *MockRouteTableDeletionReconciler) ReconcileRouteTableDeletion(req recon return ret0 } -// ReconcileRouteTableDeletion indicates an expected call of ReconcileRouteTableDeletion +// ReconcileRouteTableDeletion indicates an expected call of ReconcileRouteTableDeletion. func (mr *MockRouteTableDeletionReconcilerMockRecorder) ReconcileRouteTableDeletion(req interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileRouteTableDeletion", reflect.TypeOf((*MockRouteTableDeletionReconciler)(nil).ReconcileRouteTableDeletion), req) } -// MockRouteTableFinalizer is a mock of RouteTableFinalizer interface +// MockRouteTableFinalizer is a mock of RouteTableFinalizer interface. type MockRouteTableFinalizer struct { ctrl *gomock.Controller recorder *MockRouteTableFinalizerMockRecorder } -// MockRouteTableFinalizerMockRecorder is the mock recorder for MockRouteTableFinalizer +// MockRouteTableFinalizerMockRecorder is the mock recorder for MockRouteTableFinalizer. type MockRouteTableFinalizerMockRecorder struct { mock *MockRouteTableFinalizer } -// NewMockRouteTableFinalizer creates a new mock instance +// NewMockRouteTableFinalizer creates a new mock instance. func NewMockRouteTableFinalizer(ctrl *gomock.Controller) *MockRouteTableFinalizer { mock := &MockRouteTableFinalizer{ctrl: ctrl} mock.recorder = &MockRouteTableFinalizerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockRouteTableFinalizer) EXPECT() *MockRouteTableFinalizerMockRecorder { return m.recorder } -// ReconcileRouteTable mocks base method +// FinalizeRouteTable mocks base method. +func (m *MockRouteTableFinalizer) FinalizeRouteTable(obj *v1.RouteTable) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeRouteTable", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeRouteTable indicates an expected call of FinalizeRouteTable. +func (mr *MockRouteTableFinalizerMockRecorder) FinalizeRouteTable(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeRouteTable", reflect.TypeOf((*MockRouteTableFinalizer)(nil).FinalizeRouteTable), obj) +} + +// ReconcileRouteTable mocks base method. func (m *MockRouteTableFinalizer) ReconcileRouteTable(obj *v1.RouteTable) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileRouteTable", obj) @@ -305,13 +1234,13 @@ func (m *MockRouteTableFinalizer) ReconcileRouteTable(obj *v1.RouteTable) (recon return ret0, ret1 } -// ReconcileRouteTable indicates an expected call of ReconcileRouteTable +// ReconcileRouteTable indicates an expected call of ReconcileRouteTable. func (mr *MockRouteTableFinalizerMockRecorder) ReconcileRouteTable(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileRouteTable", reflect.TypeOf((*MockRouteTableFinalizer)(nil).ReconcileRouteTable), obj) } -// RouteTableFinalizerName mocks base method +// RouteTableFinalizerName mocks base method. func (m *MockRouteTableFinalizer) RouteTableFinalizerName() string { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "RouteTableFinalizerName") @@ -319,50 +1248,36 @@ func (m *MockRouteTableFinalizer) RouteTableFinalizerName() string { return ret0 } -// RouteTableFinalizerName indicates an expected call of RouteTableFinalizerName +// RouteTableFinalizerName indicates an expected call of RouteTableFinalizerName. func (mr *MockRouteTableFinalizerMockRecorder) RouteTableFinalizerName() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RouteTableFinalizerName", reflect.TypeOf((*MockRouteTableFinalizer)(nil).RouteTableFinalizerName)) } -// FinalizeRouteTable mocks base method -func (m *MockRouteTableFinalizer) FinalizeRouteTable(obj *v1.RouteTable) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "FinalizeRouteTable", obj) - ret0, _ := ret[0].(error) - return ret0 -} - -// FinalizeRouteTable indicates an expected call of FinalizeRouteTable -func (mr *MockRouteTableFinalizerMockRecorder) FinalizeRouteTable(obj interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeRouteTable", reflect.TypeOf((*MockRouteTableFinalizer)(nil).FinalizeRouteTable), obj) -} - -// MockRouteTableReconcileLoop is a mock of RouteTableReconcileLoop interface +// MockRouteTableReconcileLoop is a mock of RouteTableReconcileLoop interface. type MockRouteTableReconcileLoop struct { ctrl *gomock.Controller recorder *MockRouteTableReconcileLoopMockRecorder } -// MockRouteTableReconcileLoopMockRecorder is the mock recorder for MockRouteTableReconcileLoop +// MockRouteTableReconcileLoopMockRecorder is the mock recorder for MockRouteTableReconcileLoop. type MockRouteTableReconcileLoopMockRecorder struct { mock *MockRouteTableReconcileLoop } -// NewMockRouteTableReconcileLoop creates a new mock instance +// NewMockRouteTableReconcileLoop creates a new mock instance. func NewMockRouteTableReconcileLoop(ctrl *gomock.Controller) *MockRouteTableReconcileLoop { mock := &MockRouteTableReconcileLoop{ctrl: ctrl} mock.recorder = &MockRouteTableReconcileLoopMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockRouteTableReconcileLoop) EXPECT() *MockRouteTableReconcileLoopMockRecorder { return m.recorder } -// RunRouteTableReconciler mocks base method +// RunRouteTableReconciler mocks base method. func (m *MockRouteTableReconcileLoop) RunRouteTableReconciler(ctx context.Context, rec controller.RouteTableReconciler, predicates ...predicate.Predicate) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, rec} @@ -374,37 +1289,37 @@ func (m *MockRouteTableReconcileLoop) RunRouteTableReconciler(ctx context.Contex return ret0 } -// RunRouteTableReconciler indicates an expected call of RunRouteTableReconciler +// RunRouteTableReconciler indicates an expected call of RunRouteTableReconciler. func (mr *MockRouteTableReconcileLoopMockRecorder) RunRouteTableReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, rec}, predicates...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunRouteTableReconciler", reflect.TypeOf((*MockRouteTableReconcileLoop)(nil).RunRouteTableReconciler), varargs...) } -// MockVirtualServiceReconciler is a mock of VirtualServiceReconciler interface +// MockVirtualServiceReconciler is a mock of VirtualServiceReconciler interface. type MockVirtualServiceReconciler struct { ctrl *gomock.Controller recorder *MockVirtualServiceReconcilerMockRecorder } -// MockVirtualServiceReconcilerMockRecorder is the mock recorder for MockVirtualServiceReconciler +// MockVirtualServiceReconcilerMockRecorder is the mock recorder for MockVirtualServiceReconciler. type MockVirtualServiceReconcilerMockRecorder struct { mock *MockVirtualServiceReconciler } -// NewMockVirtualServiceReconciler creates a new mock instance +// NewMockVirtualServiceReconciler creates a new mock instance. func NewMockVirtualServiceReconciler(ctrl *gomock.Controller) *MockVirtualServiceReconciler { mock := &MockVirtualServiceReconciler{ctrl: ctrl} mock.recorder = &MockVirtualServiceReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockVirtualServiceReconciler) EXPECT() *MockVirtualServiceReconcilerMockRecorder { return m.recorder } -// ReconcileVirtualService mocks base method +// ReconcileVirtualService mocks base method. func (m *MockVirtualServiceReconciler) ReconcileVirtualService(obj *v1.VirtualService) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileVirtualService", obj) @@ -413,36 +1328,36 @@ func (m *MockVirtualServiceReconciler) ReconcileVirtualService(obj *v1.VirtualSe return ret0, ret1 } -// ReconcileVirtualService indicates an expected call of ReconcileVirtualService +// ReconcileVirtualService indicates an expected call of ReconcileVirtualService. func (mr *MockVirtualServiceReconcilerMockRecorder) ReconcileVirtualService(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileVirtualService", reflect.TypeOf((*MockVirtualServiceReconciler)(nil).ReconcileVirtualService), obj) } -// MockVirtualServiceDeletionReconciler is a mock of VirtualServiceDeletionReconciler interface +// MockVirtualServiceDeletionReconciler is a mock of VirtualServiceDeletionReconciler interface. type MockVirtualServiceDeletionReconciler struct { ctrl *gomock.Controller recorder *MockVirtualServiceDeletionReconcilerMockRecorder } -// MockVirtualServiceDeletionReconcilerMockRecorder is the mock recorder for MockVirtualServiceDeletionReconciler +// MockVirtualServiceDeletionReconcilerMockRecorder is the mock recorder for MockVirtualServiceDeletionReconciler. type MockVirtualServiceDeletionReconcilerMockRecorder struct { mock *MockVirtualServiceDeletionReconciler } -// NewMockVirtualServiceDeletionReconciler creates a new mock instance +// NewMockVirtualServiceDeletionReconciler creates a new mock instance. func NewMockVirtualServiceDeletionReconciler(ctrl *gomock.Controller) *MockVirtualServiceDeletionReconciler { mock := &MockVirtualServiceDeletionReconciler{ctrl: ctrl} mock.recorder = &MockVirtualServiceDeletionReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockVirtualServiceDeletionReconciler) EXPECT() *MockVirtualServiceDeletionReconcilerMockRecorder { return m.recorder } -// ReconcileVirtualServiceDeletion mocks base method +// ReconcileVirtualServiceDeletion mocks base method. func (m *MockVirtualServiceDeletionReconciler) ReconcileVirtualServiceDeletion(req reconcile.Request) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileVirtualServiceDeletion", req) @@ -450,36 +1365,50 @@ func (m *MockVirtualServiceDeletionReconciler) ReconcileVirtualServiceDeletion(r return ret0 } -// ReconcileVirtualServiceDeletion indicates an expected call of ReconcileVirtualServiceDeletion +// ReconcileVirtualServiceDeletion indicates an expected call of ReconcileVirtualServiceDeletion. func (mr *MockVirtualServiceDeletionReconcilerMockRecorder) ReconcileVirtualServiceDeletion(req interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileVirtualServiceDeletion", reflect.TypeOf((*MockVirtualServiceDeletionReconciler)(nil).ReconcileVirtualServiceDeletion), req) } -// MockVirtualServiceFinalizer is a mock of VirtualServiceFinalizer interface +// MockVirtualServiceFinalizer is a mock of VirtualServiceFinalizer interface. type MockVirtualServiceFinalizer struct { ctrl *gomock.Controller recorder *MockVirtualServiceFinalizerMockRecorder } -// MockVirtualServiceFinalizerMockRecorder is the mock recorder for MockVirtualServiceFinalizer +// MockVirtualServiceFinalizerMockRecorder is the mock recorder for MockVirtualServiceFinalizer. type MockVirtualServiceFinalizerMockRecorder struct { mock *MockVirtualServiceFinalizer } -// NewMockVirtualServiceFinalizer creates a new mock instance +// NewMockVirtualServiceFinalizer creates a new mock instance. func NewMockVirtualServiceFinalizer(ctrl *gomock.Controller) *MockVirtualServiceFinalizer { mock := &MockVirtualServiceFinalizer{ctrl: ctrl} mock.recorder = &MockVirtualServiceFinalizerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockVirtualServiceFinalizer) EXPECT() *MockVirtualServiceFinalizerMockRecorder { return m.recorder } -// ReconcileVirtualService mocks base method +// FinalizeVirtualService mocks base method. +func (m *MockVirtualServiceFinalizer) FinalizeVirtualService(obj *v1.VirtualService) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeVirtualService", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeVirtualService indicates an expected call of FinalizeVirtualService. +func (mr *MockVirtualServiceFinalizerMockRecorder) FinalizeVirtualService(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeVirtualService", reflect.TypeOf((*MockVirtualServiceFinalizer)(nil).FinalizeVirtualService), obj) +} + +// ReconcileVirtualService mocks base method. func (m *MockVirtualServiceFinalizer) ReconcileVirtualService(obj *v1.VirtualService) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileVirtualService", obj) @@ -488,13 +1417,13 @@ func (m *MockVirtualServiceFinalizer) ReconcileVirtualService(obj *v1.VirtualSer return ret0, ret1 } -// ReconcileVirtualService indicates an expected call of ReconcileVirtualService +// ReconcileVirtualService indicates an expected call of ReconcileVirtualService. func (mr *MockVirtualServiceFinalizerMockRecorder) ReconcileVirtualService(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileVirtualService", reflect.TypeOf((*MockVirtualServiceFinalizer)(nil).ReconcileVirtualService), obj) } -// VirtualServiceFinalizerName mocks base method +// VirtualServiceFinalizerName mocks base method. func (m *MockVirtualServiceFinalizer) VirtualServiceFinalizerName() string { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "VirtualServiceFinalizerName") @@ -502,50 +1431,36 @@ func (m *MockVirtualServiceFinalizer) VirtualServiceFinalizerName() string { return ret0 } -// VirtualServiceFinalizerName indicates an expected call of VirtualServiceFinalizerName +// VirtualServiceFinalizerName indicates an expected call of VirtualServiceFinalizerName. func (mr *MockVirtualServiceFinalizerMockRecorder) VirtualServiceFinalizerName() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "VirtualServiceFinalizerName", reflect.TypeOf((*MockVirtualServiceFinalizer)(nil).VirtualServiceFinalizerName)) } -// FinalizeVirtualService mocks base method -func (m *MockVirtualServiceFinalizer) FinalizeVirtualService(obj *v1.VirtualService) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "FinalizeVirtualService", obj) - ret0, _ := ret[0].(error) - return ret0 -} - -// FinalizeVirtualService indicates an expected call of FinalizeVirtualService -func (mr *MockVirtualServiceFinalizerMockRecorder) FinalizeVirtualService(obj interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeVirtualService", reflect.TypeOf((*MockVirtualServiceFinalizer)(nil).FinalizeVirtualService), obj) -} - -// MockVirtualServiceReconcileLoop is a mock of VirtualServiceReconcileLoop interface +// MockVirtualServiceReconcileLoop is a mock of VirtualServiceReconcileLoop interface. type MockVirtualServiceReconcileLoop struct { ctrl *gomock.Controller recorder *MockVirtualServiceReconcileLoopMockRecorder } -// MockVirtualServiceReconcileLoopMockRecorder is the mock recorder for MockVirtualServiceReconcileLoop +// MockVirtualServiceReconcileLoopMockRecorder is the mock recorder for MockVirtualServiceReconcileLoop. type MockVirtualServiceReconcileLoopMockRecorder struct { mock *MockVirtualServiceReconcileLoop } -// NewMockVirtualServiceReconcileLoop creates a new mock instance +// NewMockVirtualServiceReconcileLoop creates a new mock instance. func NewMockVirtualServiceReconcileLoop(ctrl *gomock.Controller) *MockVirtualServiceReconcileLoop { mock := &MockVirtualServiceReconcileLoop{ctrl: ctrl} mock.recorder = &MockVirtualServiceReconcileLoopMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockVirtualServiceReconcileLoop) EXPECT() *MockVirtualServiceReconcileLoopMockRecorder { return m.recorder } -// RunVirtualServiceReconciler mocks base method +// RunVirtualServiceReconciler mocks base method. func (m *MockVirtualServiceReconcileLoop) RunVirtualServiceReconciler(ctx context.Context, rec controller.VirtualServiceReconciler, predicates ...predicate.Predicate) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, rec} @@ -557,9 +1472,192 @@ func (m *MockVirtualServiceReconcileLoop) RunVirtualServiceReconciler(ctx contex return ret0 } -// RunVirtualServiceReconciler indicates an expected call of RunVirtualServiceReconciler +// RunVirtualServiceReconciler indicates an expected call of RunVirtualServiceReconciler. func (mr *MockVirtualServiceReconcileLoopMockRecorder) RunVirtualServiceReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, rec}, predicates...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunVirtualServiceReconciler", reflect.TypeOf((*MockVirtualServiceReconcileLoop)(nil).RunVirtualServiceReconciler), varargs...) } + +// MockVirtualHostOptionReconciler is a mock of VirtualHostOptionReconciler interface. +type MockVirtualHostOptionReconciler struct { + ctrl *gomock.Controller + recorder *MockVirtualHostOptionReconcilerMockRecorder +} + +// MockVirtualHostOptionReconcilerMockRecorder is the mock recorder for MockVirtualHostOptionReconciler. +type MockVirtualHostOptionReconcilerMockRecorder struct { + mock *MockVirtualHostOptionReconciler +} + +// NewMockVirtualHostOptionReconciler creates a new mock instance. +func NewMockVirtualHostOptionReconciler(ctrl *gomock.Controller) *MockVirtualHostOptionReconciler { + mock := &MockVirtualHostOptionReconciler{ctrl: ctrl} + mock.recorder = &MockVirtualHostOptionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockVirtualHostOptionReconciler) EXPECT() *MockVirtualHostOptionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionReconciler) ReconcileVirtualHostOption(obj *v1.VirtualHostOption) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileVirtualHostOption", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileVirtualHostOption indicates an expected call of ReconcileVirtualHostOption. +func (mr *MockVirtualHostOptionReconcilerMockRecorder) ReconcileVirtualHostOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionReconciler)(nil).ReconcileVirtualHostOption), obj) +} + +// MockVirtualHostOptionDeletionReconciler is a mock of VirtualHostOptionDeletionReconciler interface. +type MockVirtualHostOptionDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockVirtualHostOptionDeletionReconcilerMockRecorder +} + +// MockVirtualHostOptionDeletionReconcilerMockRecorder is the mock recorder for MockVirtualHostOptionDeletionReconciler. +type MockVirtualHostOptionDeletionReconcilerMockRecorder struct { + mock *MockVirtualHostOptionDeletionReconciler +} + +// NewMockVirtualHostOptionDeletionReconciler creates a new mock instance. +func NewMockVirtualHostOptionDeletionReconciler(ctrl *gomock.Controller) *MockVirtualHostOptionDeletionReconciler { + mock := &MockVirtualHostOptionDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockVirtualHostOptionDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockVirtualHostOptionDeletionReconciler) EXPECT() *MockVirtualHostOptionDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileVirtualHostOptionDeletion mocks base method. +func (m *MockVirtualHostOptionDeletionReconciler) ReconcileVirtualHostOptionDeletion(req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileVirtualHostOptionDeletion", req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileVirtualHostOptionDeletion indicates an expected call of ReconcileVirtualHostOptionDeletion. +func (mr *MockVirtualHostOptionDeletionReconcilerMockRecorder) ReconcileVirtualHostOptionDeletion(req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileVirtualHostOptionDeletion", reflect.TypeOf((*MockVirtualHostOptionDeletionReconciler)(nil).ReconcileVirtualHostOptionDeletion), req) +} + +// MockVirtualHostOptionFinalizer is a mock of VirtualHostOptionFinalizer interface. +type MockVirtualHostOptionFinalizer struct { + ctrl *gomock.Controller + recorder *MockVirtualHostOptionFinalizerMockRecorder +} + +// MockVirtualHostOptionFinalizerMockRecorder is the mock recorder for MockVirtualHostOptionFinalizer. +type MockVirtualHostOptionFinalizerMockRecorder struct { + mock *MockVirtualHostOptionFinalizer +} + +// NewMockVirtualHostOptionFinalizer creates a new mock instance. +func NewMockVirtualHostOptionFinalizer(ctrl *gomock.Controller) *MockVirtualHostOptionFinalizer { + mock := &MockVirtualHostOptionFinalizer{ctrl: ctrl} + mock.recorder = &MockVirtualHostOptionFinalizerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockVirtualHostOptionFinalizer) EXPECT() *MockVirtualHostOptionFinalizerMockRecorder { + return m.recorder +} + +// FinalizeVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionFinalizer) FinalizeVirtualHostOption(obj *v1.VirtualHostOption) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeVirtualHostOption", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeVirtualHostOption indicates an expected call of FinalizeVirtualHostOption. +func (mr *MockVirtualHostOptionFinalizerMockRecorder) FinalizeVirtualHostOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionFinalizer)(nil).FinalizeVirtualHostOption), obj) +} + +// ReconcileVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionFinalizer) ReconcileVirtualHostOption(obj *v1.VirtualHostOption) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileVirtualHostOption", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileVirtualHostOption indicates an expected call of ReconcileVirtualHostOption. +func (mr *MockVirtualHostOptionFinalizerMockRecorder) ReconcileVirtualHostOption(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionFinalizer)(nil).ReconcileVirtualHostOption), obj) +} + +// VirtualHostOptionFinalizerName mocks base method. +func (m *MockVirtualHostOptionFinalizer) VirtualHostOptionFinalizerName() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "VirtualHostOptionFinalizerName") + ret0, _ := ret[0].(string) + return ret0 +} + +// VirtualHostOptionFinalizerName indicates an expected call of VirtualHostOptionFinalizerName. +func (mr *MockVirtualHostOptionFinalizerMockRecorder) VirtualHostOptionFinalizerName() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "VirtualHostOptionFinalizerName", reflect.TypeOf((*MockVirtualHostOptionFinalizer)(nil).VirtualHostOptionFinalizerName)) +} + +// MockVirtualHostOptionReconcileLoop is a mock of VirtualHostOptionReconcileLoop interface. +type MockVirtualHostOptionReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockVirtualHostOptionReconcileLoopMockRecorder +} + +// MockVirtualHostOptionReconcileLoopMockRecorder is the mock recorder for MockVirtualHostOptionReconcileLoop. +type MockVirtualHostOptionReconcileLoopMockRecorder struct { + mock *MockVirtualHostOptionReconcileLoop +} + +// NewMockVirtualHostOptionReconcileLoop creates a new mock instance. +func NewMockVirtualHostOptionReconcileLoop(ctrl *gomock.Controller) *MockVirtualHostOptionReconcileLoop { + mock := &MockVirtualHostOptionReconcileLoop{ctrl: ctrl} + mock.recorder = &MockVirtualHostOptionReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockVirtualHostOptionReconcileLoop) EXPECT() *MockVirtualHostOptionReconcileLoopMockRecorder { + return m.recorder +} + +// RunVirtualHostOptionReconciler mocks base method. +func (m *MockVirtualHostOptionReconcileLoop) RunVirtualHostOptionReconciler(ctx context.Context, rec controller.VirtualHostOptionReconciler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RunVirtualHostOptionReconciler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// RunVirtualHostOptionReconciler indicates an expected call of RunVirtualHostOptionReconciler. +func (mr *MockVirtualHostOptionReconcileLoopMockRecorder) RunVirtualHostOptionReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunVirtualHostOptionReconciler", reflect.TypeOf((*MockVirtualHostOptionReconcileLoop)(nil).RunVirtualHostOptionReconciler), varargs...) +} diff --git a/pkg/api/gateway.solo.io/v1/controller/multicluster_reconcilers.go b/pkg/api/gateway.solo.io/v1/controller/multicluster_reconcilers.go index b49323df2..60862e9cc 100644 --- a/pkg/api/gateway.solo.io/v1/controller/multicluster_reconcilers.go +++ b/pkg/api/gateway.solo.io/v1/controller/multicluster_reconcilers.go @@ -89,6 +89,361 @@ func (g genericGatewayMulticlusterReconciler) Reconcile(cluster string, object e return g.reconciler.ReconcileGateway(cluster, obj) } +// Reconcile Upsert events for the HttpListenerOption Resource across clusters. +// implemented by the user +type MulticlusterHttpListenerOptionReconciler interface { + ReconcileHttpListenerOption(clusterName string, obj *gateway_solo_io_v1.HttpListenerOption) (reconcile.Result, error) +} + +// Reconcile deletion events for the HttpListenerOption Resource across clusters. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type MulticlusterHttpListenerOptionDeletionReconciler interface { + ReconcileHttpListenerOptionDeletion(clusterName string, req reconcile.Request) error +} + +type MulticlusterHttpListenerOptionReconcilerFuncs struct { + OnReconcileHttpListenerOption func(clusterName string, obj *gateway_solo_io_v1.HttpListenerOption) (reconcile.Result, error) + OnReconcileHttpListenerOptionDeletion func(clusterName string, req reconcile.Request) error +} + +func (f *MulticlusterHttpListenerOptionReconcilerFuncs) ReconcileHttpListenerOption(clusterName string, obj *gateway_solo_io_v1.HttpListenerOption) (reconcile.Result, error) { + if f.OnReconcileHttpListenerOption == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileHttpListenerOption(clusterName, obj) +} + +func (f *MulticlusterHttpListenerOptionReconcilerFuncs) ReconcileHttpListenerOptionDeletion(clusterName string, req reconcile.Request) error { + if f.OnReconcileHttpListenerOptionDeletion == nil { + return nil + } + return f.OnReconcileHttpListenerOptionDeletion(clusterName, req) +} + +type MulticlusterHttpListenerOptionReconcileLoop interface { + // AddMulticlusterHttpListenerOptionReconciler adds a MulticlusterHttpListenerOptionReconciler to the MulticlusterHttpListenerOptionReconcileLoop. + AddMulticlusterHttpListenerOptionReconciler(ctx context.Context, rec MulticlusterHttpListenerOptionReconciler, predicates ...predicate.Predicate) +} + +type multiclusterHttpListenerOptionReconcileLoop struct { + loop multicluster.Loop +} + +func (m *multiclusterHttpListenerOptionReconcileLoop) AddMulticlusterHttpListenerOptionReconciler(ctx context.Context, rec MulticlusterHttpListenerOptionReconciler, predicates ...predicate.Predicate) { + genericReconciler := genericHttpListenerOptionMulticlusterReconciler{reconciler: rec} + + m.loop.AddReconciler(ctx, genericReconciler, predicates...) +} + +func NewMulticlusterHttpListenerOptionReconcileLoop(name string, cw multicluster.ClusterWatcher, options reconcile.Options) MulticlusterHttpListenerOptionReconcileLoop { + return &multiclusterHttpListenerOptionReconcileLoop{loop: mc_reconcile.NewLoop(name, cw, &gateway_solo_io_v1.HttpListenerOption{}, options)} +} + +type genericHttpListenerOptionMulticlusterReconciler struct { + reconciler MulticlusterHttpListenerOptionReconciler +} + +func (g genericHttpListenerOptionMulticlusterReconciler) ReconcileDeletion(cluster string, req reconcile.Request) error { + if deletionReconciler, ok := g.reconciler.(MulticlusterHttpListenerOptionDeletionReconciler); ok { + return deletionReconciler.ReconcileHttpListenerOptionDeletion(cluster, req) + } + return nil +} + +func (g genericHttpListenerOptionMulticlusterReconciler) Reconcile(cluster string, object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*gateway_solo_io_v1.HttpListenerOption) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: HttpListenerOption handler received event for %T", object) + } + return g.reconciler.ReconcileHttpListenerOption(cluster, obj) +} + +// Reconcile Upsert events for the ListenerOption Resource across clusters. +// implemented by the user +type MulticlusterListenerOptionReconciler interface { + ReconcileListenerOption(clusterName string, obj *gateway_solo_io_v1.ListenerOption) (reconcile.Result, error) +} + +// Reconcile deletion events for the ListenerOption Resource across clusters. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type MulticlusterListenerOptionDeletionReconciler interface { + ReconcileListenerOptionDeletion(clusterName string, req reconcile.Request) error +} + +type MulticlusterListenerOptionReconcilerFuncs struct { + OnReconcileListenerOption func(clusterName string, obj *gateway_solo_io_v1.ListenerOption) (reconcile.Result, error) + OnReconcileListenerOptionDeletion func(clusterName string, req reconcile.Request) error +} + +func (f *MulticlusterListenerOptionReconcilerFuncs) ReconcileListenerOption(clusterName string, obj *gateway_solo_io_v1.ListenerOption) (reconcile.Result, error) { + if f.OnReconcileListenerOption == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileListenerOption(clusterName, obj) +} + +func (f *MulticlusterListenerOptionReconcilerFuncs) ReconcileListenerOptionDeletion(clusterName string, req reconcile.Request) error { + if f.OnReconcileListenerOptionDeletion == nil { + return nil + } + return f.OnReconcileListenerOptionDeletion(clusterName, req) +} + +type MulticlusterListenerOptionReconcileLoop interface { + // AddMulticlusterListenerOptionReconciler adds a MulticlusterListenerOptionReconciler to the MulticlusterListenerOptionReconcileLoop. + AddMulticlusterListenerOptionReconciler(ctx context.Context, rec MulticlusterListenerOptionReconciler, predicates ...predicate.Predicate) +} + +type multiclusterListenerOptionReconcileLoop struct { + loop multicluster.Loop +} + +func (m *multiclusterListenerOptionReconcileLoop) AddMulticlusterListenerOptionReconciler(ctx context.Context, rec MulticlusterListenerOptionReconciler, predicates ...predicate.Predicate) { + genericReconciler := genericListenerOptionMulticlusterReconciler{reconciler: rec} + + m.loop.AddReconciler(ctx, genericReconciler, predicates...) +} + +func NewMulticlusterListenerOptionReconcileLoop(name string, cw multicluster.ClusterWatcher, options reconcile.Options) MulticlusterListenerOptionReconcileLoop { + return &multiclusterListenerOptionReconcileLoop{loop: mc_reconcile.NewLoop(name, cw, &gateway_solo_io_v1.ListenerOption{}, options)} +} + +type genericListenerOptionMulticlusterReconciler struct { + reconciler MulticlusterListenerOptionReconciler +} + +func (g genericListenerOptionMulticlusterReconciler) ReconcileDeletion(cluster string, req reconcile.Request) error { + if deletionReconciler, ok := g.reconciler.(MulticlusterListenerOptionDeletionReconciler); ok { + return deletionReconciler.ReconcileListenerOptionDeletion(cluster, req) + } + return nil +} + +func (g genericListenerOptionMulticlusterReconciler) Reconcile(cluster string, object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*gateway_solo_io_v1.ListenerOption) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: ListenerOption handler received event for %T", object) + } + return g.reconciler.ReconcileListenerOption(cluster, obj) +} + +// Reconcile Upsert events for the MatchableHttpGateway Resource across clusters. +// implemented by the user +type MulticlusterMatchableHttpGatewayReconciler interface { + ReconcileMatchableHttpGateway(clusterName string, obj *gateway_solo_io_v1.MatchableHttpGateway) (reconcile.Result, error) +} + +// Reconcile deletion events for the MatchableHttpGateway Resource across clusters. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type MulticlusterMatchableHttpGatewayDeletionReconciler interface { + ReconcileMatchableHttpGatewayDeletion(clusterName string, req reconcile.Request) error +} + +type MulticlusterMatchableHttpGatewayReconcilerFuncs struct { + OnReconcileMatchableHttpGateway func(clusterName string, obj *gateway_solo_io_v1.MatchableHttpGateway) (reconcile.Result, error) + OnReconcileMatchableHttpGatewayDeletion func(clusterName string, req reconcile.Request) error +} + +func (f *MulticlusterMatchableHttpGatewayReconcilerFuncs) ReconcileMatchableHttpGateway(clusterName string, obj *gateway_solo_io_v1.MatchableHttpGateway) (reconcile.Result, error) { + if f.OnReconcileMatchableHttpGateway == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileMatchableHttpGateway(clusterName, obj) +} + +func (f *MulticlusterMatchableHttpGatewayReconcilerFuncs) ReconcileMatchableHttpGatewayDeletion(clusterName string, req reconcile.Request) error { + if f.OnReconcileMatchableHttpGatewayDeletion == nil { + return nil + } + return f.OnReconcileMatchableHttpGatewayDeletion(clusterName, req) +} + +type MulticlusterMatchableHttpGatewayReconcileLoop interface { + // AddMulticlusterMatchableHttpGatewayReconciler adds a MulticlusterMatchableHttpGatewayReconciler to the MulticlusterMatchableHttpGatewayReconcileLoop. + AddMulticlusterMatchableHttpGatewayReconciler(ctx context.Context, rec MulticlusterMatchableHttpGatewayReconciler, predicates ...predicate.Predicate) +} + +type multiclusterMatchableHttpGatewayReconcileLoop struct { + loop multicluster.Loop +} + +func (m *multiclusterMatchableHttpGatewayReconcileLoop) AddMulticlusterMatchableHttpGatewayReconciler(ctx context.Context, rec MulticlusterMatchableHttpGatewayReconciler, predicates ...predicate.Predicate) { + genericReconciler := genericMatchableHttpGatewayMulticlusterReconciler{reconciler: rec} + + m.loop.AddReconciler(ctx, genericReconciler, predicates...) +} + +func NewMulticlusterMatchableHttpGatewayReconcileLoop(name string, cw multicluster.ClusterWatcher, options reconcile.Options) MulticlusterMatchableHttpGatewayReconcileLoop { + return &multiclusterMatchableHttpGatewayReconcileLoop{loop: mc_reconcile.NewLoop(name, cw, &gateway_solo_io_v1.MatchableHttpGateway{}, options)} +} + +type genericMatchableHttpGatewayMulticlusterReconciler struct { + reconciler MulticlusterMatchableHttpGatewayReconciler +} + +func (g genericMatchableHttpGatewayMulticlusterReconciler) ReconcileDeletion(cluster string, req reconcile.Request) error { + if deletionReconciler, ok := g.reconciler.(MulticlusterMatchableHttpGatewayDeletionReconciler); ok { + return deletionReconciler.ReconcileMatchableHttpGatewayDeletion(cluster, req) + } + return nil +} + +func (g genericMatchableHttpGatewayMulticlusterReconciler) Reconcile(cluster string, object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*gateway_solo_io_v1.MatchableHttpGateway) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: MatchableHttpGateway handler received event for %T", object) + } + return g.reconciler.ReconcileMatchableHttpGateway(cluster, obj) +} + +// Reconcile Upsert events for the MatchableTcpGateway Resource across clusters. +// implemented by the user +type MulticlusterMatchableTcpGatewayReconciler interface { + ReconcileMatchableTcpGateway(clusterName string, obj *gateway_solo_io_v1.MatchableTcpGateway) (reconcile.Result, error) +} + +// Reconcile deletion events for the MatchableTcpGateway Resource across clusters. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type MulticlusterMatchableTcpGatewayDeletionReconciler interface { + ReconcileMatchableTcpGatewayDeletion(clusterName string, req reconcile.Request) error +} + +type MulticlusterMatchableTcpGatewayReconcilerFuncs struct { + OnReconcileMatchableTcpGateway func(clusterName string, obj *gateway_solo_io_v1.MatchableTcpGateway) (reconcile.Result, error) + OnReconcileMatchableTcpGatewayDeletion func(clusterName string, req reconcile.Request) error +} + +func (f *MulticlusterMatchableTcpGatewayReconcilerFuncs) ReconcileMatchableTcpGateway(clusterName string, obj *gateway_solo_io_v1.MatchableTcpGateway) (reconcile.Result, error) { + if f.OnReconcileMatchableTcpGateway == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileMatchableTcpGateway(clusterName, obj) +} + +func (f *MulticlusterMatchableTcpGatewayReconcilerFuncs) ReconcileMatchableTcpGatewayDeletion(clusterName string, req reconcile.Request) error { + if f.OnReconcileMatchableTcpGatewayDeletion == nil { + return nil + } + return f.OnReconcileMatchableTcpGatewayDeletion(clusterName, req) +} + +type MulticlusterMatchableTcpGatewayReconcileLoop interface { + // AddMulticlusterMatchableTcpGatewayReconciler adds a MulticlusterMatchableTcpGatewayReconciler to the MulticlusterMatchableTcpGatewayReconcileLoop. + AddMulticlusterMatchableTcpGatewayReconciler(ctx context.Context, rec MulticlusterMatchableTcpGatewayReconciler, predicates ...predicate.Predicate) +} + +type multiclusterMatchableTcpGatewayReconcileLoop struct { + loop multicluster.Loop +} + +func (m *multiclusterMatchableTcpGatewayReconcileLoop) AddMulticlusterMatchableTcpGatewayReconciler(ctx context.Context, rec MulticlusterMatchableTcpGatewayReconciler, predicates ...predicate.Predicate) { + genericReconciler := genericMatchableTcpGatewayMulticlusterReconciler{reconciler: rec} + + m.loop.AddReconciler(ctx, genericReconciler, predicates...) +} + +func NewMulticlusterMatchableTcpGatewayReconcileLoop(name string, cw multicluster.ClusterWatcher, options reconcile.Options) MulticlusterMatchableTcpGatewayReconcileLoop { + return &multiclusterMatchableTcpGatewayReconcileLoop{loop: mc_reconcile.NewLoop(name, cw, &gateway_solo_io_v1.MatchableTcpGateway{}, options)} +} + +type genericMatchableTcpGatewayMulticlusterReconciler struct { + reconciler MulticlusterMatchableTcpGatewayReconciler +} + +func (g genericMatchableTcpGatewayMulticlusterReconciler) ReconcileDeletion(cluster string, req reconcile.Request) error { + if deletionReconciler, ok := g.reconciler.(MulticlusterMatchableTcpGatewayDeletionReconciler); ok { + return deletionReconciler.ReconcileMatchableTcpGatewayDeletion(cluster, req) + } + return nil +} + +func (g genericMatchableTcpGatewayMulticlusterReconciler) Reconcile(cluster string, object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*gateway_solo_io_v1.MatchableTcpGateway) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: MatchableTcpGateway handler received event for %T", object) + } + return g.reconciler.ReconcileMatchableTcpGateway(cluster, obj) +} + +// Reconcile Upsert events for the RouteOption Resource across clusters. +// implemented by the user +type MulticlusterRouteOptionReconciler interface { + ReconcileRouteOption(clusterName string, obj *gateway_solo_io_v1.RouteOption) (reconcile.Result, error) +} + +// Reconcile deletion events for the RouteOption Resource across clusters. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type MulticlusterRouteOptionDeletionReconciler interface { + ReconcileRouteOptionDeletion(clusterName string, req reconcile.Request) error +} + +type MulticlusterRouteOptionReconcilerFuncs struct { + OnReconcileRouteOption func(clusterName string, obj *gateway_solo_io_v1.RouteOption) (reconcile.Result, error) + OnReconcileRouteOptionDeletion func(clusterName string, req reconcile.Request) error +} + +func (f *MulticlusterRouteOptionReconcilerFuncs) ReconcileRouteOption(clusterName string, obj *gateway_solo_io_v1.RouteOption) (reconcile.Result, error) { + if f.OnReconcileRouteOption == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileRouteOption(clusterName, obj) +} + +func (f *MulticlusterRouteOptionReconcilerFuncs) ReconcileRouteOptionDeletion(clusterName string, req reconcile.Request) error { + if f.OnReconcileRouteOptionDeletion == nil { + return nil + } + return f.OnReconcileRouteOptionDeletion(clusterName, req) +} + +type MulticlusterRouteOptionReconcileLoop interface { + // AddMulticlusterRouteOptionReconciler adds a MulticlusterRouteOptionReconciler to the MulticlusterRouteOptionReconcileLoop. + AddMulticlusterRouteOptionReconciler(ctx context.Context, rec MulticlusterRouteOptionReconciler, predicates ...predicate.Predicate) +} + +type multiclusterRouteOptionReconcileLoop struct { + loop multicluster.Loop +} + +func (m *multiclusterRouteOptionReconcileLoop) AddMulticlusterRouteOptionReconciler(ctx context.Context, rec MulticlusterRouteOptionReconciler, predicates ...predicate.Predicate) { + genericReconciler := genericRouteOptionMulticlusterReconciler{reconciler: rec} + + m.loop.AddReconciler(ctx, genericReconciler, predicates...) +} + +func NewMulticlusterRouteOptionReconcileLoop(name string, cw multicluster.ClusterWatcher, options reconcile.Options) MulticlusterRouteOptionReconcileLoop { + return &multiclusterRouteOptionReconcileLoop{loop: mc_reconcile.NewLoop(name, cw, &gateway_solo_io_v1.RouteOption{}, options)} +} + +type genericRouteOptionMulticlusterReconciler struct { + reconciler MulticlusterRouteOptionReconciler +} + +func (g genericRouteOptionMulticlusterReconciler) ReconcileDeletion(cluster string, req reconcile.Request) error { + if deletionReconciler, ok := g.reconciler.(MulticlusterRouteOptionDeletionReconciler); ok { + return deletionReconciler.ReconcileRouteOptionDeletion(cluster, req) + } + return nil +} + +func (g genericRouteOptionMulticlusterReconciler) Reconcile(cluster string, object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*gateway_solo_io_v1.RouteOption) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: RouteOption handler received event for %T", object) + } + return g.reconciler.ReconcileRouteOption(cluster, obj) +} + // Reconcile Upsert events for the RouteTable Resource across clusters. // implemented by the user type MulticlusterRouteTableReconciler interface { @@ -230,3 +585,74 @@ func (g genericVirtualServiceMulticlusterReconciler) Reconcile(cluster string, o } return g.reconciler.ReconcileVirtualService(cluster, obj) } + +// Reconcile Upsert events for the VirtualHostOption Resource across clusters. +// implemented by the user +type MulticlusterVirtualHostOptionReconciler interface { + ReconcileVirtualHostOption(clusterName string, obj *gateway_solo_io_v1.VirtualHostOption) (reconcile.Result, error) +} + +// Reconcile deletion events for the VirtualHostOption Resource across clusters. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type MulticlusterVirtualHostOptionDeletionReconciler interface { + ReconcileVirtualHostOptionDeletion(clusterName string, req reconcile.Request) error +} + +type MulticlusterVirtualHostOptionReconcilerFuncs struct { + OnReconcileVirtualHostOption func(clusterName string, obj *gateway_solo_io_v1.VirtualHostOption) (reconcile.Result, error) + OnReconcileVirtualHostOptionDeletion func(clusterName string, req reconcile.Request) error +} + +func (f *MulticlusterVirtualHostOptionReconcilerFuncs) ReconcileVirtualHostOption(clusterName string, obj *gateway_solo_io_v1.VirtualHostOption) (reconcile.Result, error) { + if f.OnReconcileVirtualHostOption == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileVirtualHostOption(clusterName, obj) +} + +func (f *MulticlusterVirtualHostOptionReconcilerFuncs) ReconcileVirtualHostOptionDeletion(clusterName string, req reconcile.Request) error { + if f.OnReconcileVirtualHostOptionDeletion == nil { + return nil + } + return f.OnReconcileVirtualHostOptionDeletion(clusterName, req) +} + +type MulticlusterVirtualHostOptionReconcileLoop interface { + // AddMulticlusterVirtualHostOptionReconciler adds a MulticlusterVirtualHostOptionReconciler to the MulticlusterVirtualHostOptionReconcileLoop. + AddMulticlusterVirtualHostOptionReconciler(ctx context.Context, rec MulticlusterVirtualHostOptionReconciler, predicates ...predicate.Predicate) +} + +type multiclusterVirtualHostOptionReconcileLoop struct { + loop multicluster.Loop +} + +func (m *multiclusterVirtualHostOptionReconcileLoop) AddMulticlusterVirtualHostOptionReconciler(ctx context.Context, rec MulticlusterVirtualHostOptionReconciler, predicates ...predicate.Predicate) { + genericReconciler := genericVirtualHostOptionMulticlusterReconciler{reconciler: rec} + + m.loop.AddReconciler(ctx, genericReconciler, predicates...) +} + +func NewMulticlusterVirtualHostOptionReconcileLoop(name string, cw multicluster.ClusterWatcher, options reconcile.Options) MulticlusterVirtualHostOptionReconcileLoop { + return &multiclusterVirtualHostOptionReconcileLoop{loop: mc_reconcile.NewLoop(name, cw, &gateway_solo_io_v1.VirtualHostOption{}, options)} +} + +type genericVirtualHostOptionMulticlusterReconciler struct { + reconciler MulticlusterVirtualHostOptionReconciler +} + +func (g genericVirtualHostOptionMulticlusterReconciler) ReconcileDeletion(cluster string, req reconcile.Request) error { + if deletionReconciler, ok := g.reconciler.(MulticlusterVirtualHostOptionDeletionReconciler); ok { + return deletionReconciler.ReconcileVirtualHostOptionDeletion(cluster, req) + } + return nil +} + +func (g genericVirtualHostOptionMulticlusterReconciler) Reconcile(cluster string, object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*gateway_solo_io_v1.VirtualHostOption) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: VirtualHostOption handler received event for %T", object) + } + return g.reconciler.ReconcileVirtualHostOption(cluster, obj) +} diff --git a/pkg/api/gateway.solo.io/v1/controller/reconcilers.go b/pkg/api/gateway.solo.io/v1/controller/reconcilers.go index daad12652..16db8eabb 100644 --- a/pkg/api/gateway.solo.io/v1/controller/reconcilers.go +++ b/pkg/api/gateway.solo.io/v1/controller/reconcilers.go @@ -134,6 +134,591 @@ func (r genericGatewayFinalizer) Finalize(object ezkube.Object) error { return r.finalizingReconciler.FinalizeGateway(obj) } +// Reconcile Upsert events for the HttpListenerOption Resource. +// implemented by the user +type HttpListenerOptionReconciler interface { + ReconcileHttpListenerOption(obj *gateway_solo_io_v1.HttpListenerOption) (reconcile.Result, error) +} + +// Reconcile deletion events for the HttpListenerOption Resource. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type HttpListenerOptionDeletionReconciler interface { + ReconcileHttpListenerOptionDeletion(req reconcile.Request) error +} + +type HttpListenerOptionReconcilerFuncs struct { + OnReconcileHttpListenerOption func(obj *gateway_solo_io_v1.HttpListenerOption) (reconcile.Result, error) + OnReconcileHttpListenerOptionDeletion func(req reconcile.Request) error +} + +func (f *HttpListenerOptionReconcilerFuncs) ReconcileHttpListenerOption(obj *gateway_solo_io_v1.HttpListenerOption) (reconcile.Result, error) { + if f.OnReconcileHttpListenerOption == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileHttpListenerOption(obj) +} + +func (f *HttpListenerOptionReconcilerFuncs) ReconcileHttpListenerOptionDeletion(req reconcile.Request) error { + if f.OnReconcileHttpListenerOptionDeletion == nil { + return nil + } + return f.OnReconcileHttpListenerOptionDeletion(req) +} + +// Reconcile and finalize the HttpListenerOption Resource +// implemented by the user +type HttpListenerOptionFinalizer interface { + HttpListenerOptionReconciler + + // name of the finalizer used by this handler. + // finalizer names should be unique for a single task + HttpListenerOptionFinalizerName() string + + // finalize the object before it is deleted. + // Watchers created with a finalizing handler will a + FinalizeHttpListenerOption(obj *gateway_solo_io_v1.HttpListenerOption) error +} + +type HttpListenerOptionReconcileLoop interface { + RunHttpListenerOptionReconciler(ctx context.Context, rec HttpListenerOptionReconciler, predicates ...predicate.Predicate) error +} + +type httpListenerOptionReconcileLoop struct { + loop reconcile.Loop +} + +func NewHttpListenerOptionReconcileLoop(name string, mgr manager.Manager, options reconcile.Options) HttpListenerOptionReconcileLoop { + return &httpListenerOptionReconcileLoop{ + // empty cluster indicates this reconciler is built for the local cluster + loop: reconcile.NewLoop(name, "", mgr, &gateway_solo_io_v1.HttpListenerOption{}, options), + } +} + +func (c *httpListenerOptionReconcileLoop) RunHttpListenerOptionReconciler(ctx context.Context, reconciler HttpListenerOptionReconciler, predicates ...predicate.Predicate) error { + genericReconciler := genericHttpListenerOptionReconciler{ + reconciler: reconciler, + } + + var reconcilerWrapper reconcile.Reconciler + if finalizingReconciler, ok := reconciler.(HttpListenerOptionFinalizer); ok { + reconcilerWrapper = genericHttpListenerOptionFinalizer{ + genericHttpListenerOptionReconciler: genericReconciler, + finalizingReconciler: finalizingReconciler, + } + } else { + reconcilerWrapper = genericReconciler + } + return c.loop.RunReconciler(ctx, reconcilerWrapper, predicates...) +} + +// genericHttpListenerOptionHandler implements a generic reconcile.Reconciler +type genericHttpListenerOptionReconciler struct { + reconciler HttpListenerOptionReconciler +} + +func (r genericHttpListenerOptionReconciler) Reconcile(object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*gateway_solo_io_v1.HttpListenerOption) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: HttpListenerOption handler received event for %T", object) + } + return r.reconciler.ReconcileHttpListenerOption(obj) +} + +func (r genericHttpListenerOptionReconciler) ReconcileDeletion(request reconcile.Request) error { + if deletionReconciler, ok := r.reconciler.(HttpListenerOptionDeletionReconciler); ok { + return deletionReconciler.ReconcileHttpListenerOptionDeletion(request) + } + return nil +} + +// genericHttpListenerOptionFinalizer implements a generic reconcile.FinalizingReconciler +type genericHttpListenerOptionFinalizer struct { + genericHttpListenerOptionReconciler + finalizingReconciler HttpListenerOptionFinalizer +} + +func (r genericHttpListenerOptionFinalizer) FinalizerName() string { + return r.finalizingReconciler.HttpListenerOptionFinalizerName() +} + +func (r genericHttpListenerOptionFinalizer) Finalize(object ezkube.Object) error { + obj, ok := object.(*gateway_solo_io_v1.HttpListenerOption) + if !ok { + return errors.Errorf("internal error: HttpListenerOption handler received event for %T", object) + } + return r.finalizingReconciler.FinalizeHttpListenerOption(obj) +} + +// Reconcile Upsert events for the ListenerOption Resource. +// implemented by the user +type ListenerOptionReconciler interface { + ReconcileListenerOption(obj *gateway_solo_io_v1.ListenerOption) (reconcile.Result, error) +} + +// Reconcile deletion events for the ListenerOption Resource. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type ListenerOptionDeletionReconciler interface { + ReconcileListenerOptionDeletion(req reconcile.Request) error +} + +type ListenerOptionReconcilerFuncs struct { + OnReconcileListenerOption func(obj *gateway_solo_io_v1.ListenerOption) (reconcile.Result, error) + OnReconcileListenerOptionDeletion func(req reconcile.Request) error +} + +func (f *ListenerOptionReconcilerFuncs) ReconcileListenerOption(obj *gateway_solo_io_v1.ListenerOption) (reconcile.Result, error) { + if f.OnReconcileListenerOption == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileListenerOption(obj) +} + +func (f *ListenerOptionReconcilerFuncs) ReconcileListenerOptionDeletion(req reconcile.Request) error { + if f.OnReconcileListenerOptionDeletion == nil { + return nil + } + return f.OnReconcileListenerOptionDeletion(req) +} + +// Reconcile and finalize the ListenerOption Resource +// implemented by the user +type ListenerOptionFinalizer interface { + ListenerOptionReconciler + + // name of the finalizer used by this handler. + // finalizer names should be unique for a single task + ListenerOptionFinalizerName() string + + // finalize the object before it is deleted. + // Watchers created with a finalizing handler will a + FinalizeListenerOption(obj *gateway_solo_io_v1.ListenerOption) error +} + +type ListenerOptionReconcileLoop interface { + RunListenerOptionReconciler(ctx context.Context, rec ListenerOptionReconciler, predicates ...predicate.Predicate) error +} + +type listenerOptionReconcileLoop struct { + loop reconcile.Loop +} + +func NewListenerOptionReconcileLoop(name string, mgr manager.Manager, options reconcile.Options) ListenerOptionReconcileLoop { + return &listenerOptionReconcileLoop{ + // empty cluster indicates this reconciler is built for the local cluster + loop: reconcile.NewLoop(name, "", mgr, &gateway_solo_io_v1.ListenerOption{}, options), + } +} + +func (c *listenerOptionReconcileLoop) RunListenerOptionReconciler(ctx context.Context, reconciler ListenerOptionReconciler, predicates ...predicate.Predicate) error { + genericReconciler := genericListenerOptionReconciler{ + reconciler: reconciler, + } + + var reconcilerWrapper reconcile.Reconciler + if finalizingReconciler, ok := reconciler.(ListenerOptionFinalizer); ok { + reconcilerWrapper = genericListenerOptionFinalizer{ + genericListenerOptionReconciler: genericReconciler, + finalizingReconciler: finalizingReconciler, + } + } else { + reconcilerWrapper = genericReconciler + } + return c.loop.RunReconciler(ctx, reconcilerWrapper, predicates...) +} + +// genericListenerOptionHandler implements a generic reconcile.Reconciler +type genericListenerOptionReconciler struct { + reconciler ListenerOptionReconciler +} + +func (r genericListenerOptionReconciler) Reconcile(object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*gateway_solo_io_v1.ListenerOption) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: ListenerOption handler received event for %T", object) + } + return r.reconciler.ReconcileListenerOption(obj) +} + +func (r genericListenerOptionReconciler) ReconcileDeletion(request reconcile.Request) error { + if deletionReconciler, ok := r.reconciler.(ListenerOptionDeletionReconciler); ok { + return deletionReconciler.ReconcileListenerOptionDeletion(request) + } + return nil +} + +// genericListenerOptionFinalizer implements a generic reconcile.FinalizingReconciler +type genericListenerOptionFinalizer struct { + genericListenerOptionReconciler + finalizingReconciler ListenerOptionFinalizer +} + +func (r genericListenerOptionFinalizer) FinalizerName() string { + return r.finalizingReconciler.ListenerOptionFinalizerName() +} + +func (r genericListenerOptionFinalizer) Finalize(object ezkube.Object) error { + obj, ok := object.(*gateway_solo_io_v1.ListenerOption) + if !ok { + return errors.Errorf("internal error: ListenerOption handler received event for %T", object) + } + return r.finalizingReconciler.FinalizeListenerOption(obj) +} + +// Reconcile Upsert events for the MatchableHttpGateway Resource. +// implemented by the user +type MatchableHttpGatewayReconciler interface { + ReconcileMatchableHttpGateway(obj *gateway_solo_io_v1.MatchableHttpGateway) (reconcile.Result, error) +} + +// Reconcile deletion events for the MatchableHttpGateway Resource. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type MatchableHttpGatewayDeletionReconciler interface { + ReconcileMatchableHttpGatewayDeletion(req reconcile.Request) error +} + +type MatchableHttpGatewayReconcilerFuncs struct { + OnReconcileMatchableHttpGateway func(obj *gateway_solo_io_v1.MatchableHttpGateway) (reconcile.Result, error) + OnReconcileMatchableHttpGatewayDeletion func(req reconcile.Request) error +} + +func (f *MatchableHttpGatewayReconcilerFuncs) ReconcileMatchableHttpGateway(obj *gateway_solo_io_v1.MatchableHttpGateway) (reconcile.Result, error) { + if f.OnReconcileMatchableHttpGateway == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileMatchableHttpGateway(obj) +} + +func (f *MatchableHttpGatewayReconcilerFuncs) ReconcileMatchableHttpGatewayDeletion(req reconcile.Request) error { + if f.OnReconcileMatchableHttpGatewayDeletion == nil { + return nil + } + return f.OnReconcileMatchableHttpGatewayDeletion(req) +} + +// Reconcile and finalize the MatchableHttpGateway Resource +// implemented by the user +type MatchableHttpGatewayFinalizer interface { + MatchableHttpGatewayReconciler + + // name of the finalizer used by this handler. + // finalizer names should be unique for a single task + MatchableHttpGatewayFinalizerName() string + + // finalize the object before it is deleted. + // Watchers created with a finalizing handler will a + FinalizeMatchableHttpGateway(obj *gateway_solo_io_v1.MatchableHttpGateway) error +} + +type MatchableHttpGatewayReconcileLoop interface { + RunMatchableHttpGatewayReconciler(ctx context.Context, rec MatchableHttpGatewayReconciler, predicates ...predicate.Predicate) error +} + +type matchableHttpGatewayReconcileLoop struct { + loop reconcile.Loop +} + +func NewMatchableHttpGatewayReconcileLoop(name string, mgr manager.Manager, options reconcile.Options) MatchableHttpGatewayReconcileLoop { + return &matchableHttpGatewayReconcileLoop{ + // empty cluster indicates this reconciler is built for the local cluster + loop: reconcile.NewLoop(name, "", mgr, &gateway_solo_io_v1.MatchableHttpGateway{}, options), + } +} + +func (c *matchableHttpGatewayReconcileLoop) RunMatchableHttpGatewayReconciler(ctx context.Context, reconciler MatchableHttpGatewayReconciler, predicates ...predicate.Predicate) error { + genericReconciler := genericMatchableHttpGatewayReconciler{ + reconciler: reconciler, + } + + var reconcilerWrapper reconcile.Reconciler + if finalizingReconciler, ok := reconciler.(MatchableHttpGatewayFinalizer); ok { + reconcilerWrapper = genericMatchableHttpGatewayFinalizer{ + genericMatchableHttpGatewayReconciler: genericReconciler, + finalizingReconciler: finalizingReconciler, + } + } else { + reconcilerWrapper = genericReconciler + } + return c.loop.RunReconciler(ctx, reconcilerWrapper, predicates...) +} + +// genericMatchableHttpGatewayHandler implements a generic reconcile.Reconciler +type genericMatchableHttpGatewayReconciler struct { + reconciler MatchableHttpGatewayReconciler +} + +func (r genericMatchableHttpGatewayReconciler) Reconcile(object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*gateway_solo_io_v1.MatchableHttpGateway) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: MatchableHttpGateway handler received event for %T", object) + } + return r.reconciler.ReconcileMatchableHttpGateway(obj) +} + +func (r genericMatchableHttpGatewayReconciler) ReconcileDeletion(request reconcile.Request) error { + if deletionReconciler, ok := r.reconciler.(MatchableHttpGatewayDeletionReconciler); ok { + return deletionReconciler.ReconcileMatchableHttpGatewayDeletion(request) + } + return nil +} + +// genericMatchableHttpGatewayFinalizer implements a generic reconcile.FinalizingReconciler +type genericMatchableHttpGatewayFinalizer struct { + genericMatchableHttpGatewayReconciler + finalizingReconciler MatchableHttpGatewayFinalizer +} + +func (r genericMatchableHttpGatewayFinalizer) FinalizerName() string { + return r.finalizingReconciler.MatchableHttpGatewayFinalizerName() +} + +func (r genericMatchableHttpGatewayFinalizer) Finalize(object ezkube.Object) error { + obj, ok := object.(*gateway_solo_io_v1.MatchableHttpGateway) + if !ok { + return errors.Errorf("internal error: MatchableHttpGateway handler received event for %T", object) + } + return r.finalizingReconciler.FinalizeMatchableHttpGateway(obj) +} + +// Reconcile Upsert events for the MatchableTcpGateway Resource. +// implemented by the user +type MatchableTcpGatewayReconciler interface { + ReconcileMatchableTcpGateway(obj *gateway_solo_io_v1.MatchableTcpGateway) (reconcile.Result, error) +} + +// Reconcile deletion events for the MatchableTcpGateway Resource. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type MatchableTcpGatewayDeletionReconciler interface { + ReconcileMatchableTcpGatewayDeletion(req reconcile.Request) error +} + +type MatchableTcpGatewayReconcilerFuncs struct { + OnReconcileMatchableTcpGateway func(obj *gateway_solo_io_v1.MatchableTcpGateway) (reconcile.Result, error) + OnReconcileMatchableTcpGatewayDeletion func(req reconcile.Request) error +} + +func (f *MatchableTcpGatewayReconcilerFuncs) ReconcileMatchableTcpGateway(obj *gateway_solo_io_v1.MatchableTcpGateway) (reconcile.Result, error) { + if f.OnReconcileMatchableTcpGateway == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileMatchableTcpGateway(obj) +} + +func (f *MatchableTcpGatewayReconcilerFuncs) ReconcileMatchableTcpGatewayDeletion(req reconcile.Request) error { + if f.OnReconcileMatchableTcpGatewayDeletion == nil { + return nil + } + return f.OnReconcileMatchableTcpGatewayDeletion(req) +} + +// Reconcile and finalize the MatchableTcpGateway Resource +// implemented by the user +type MatchableTcpGatewayFinalizer interface { + MatchableTcpGatewayReconciler + + // name of the finalizer used by this handler. + // finalizer names should be unique for a single task + MatchableTcpGatewayFinalizerName() string + + // finalize the object before it is deleted. + // Watchers created with a finalizing handler will a + FinalizeMatchableTcpGateway(obj *gateway_solo_io_v1.MatchableTcpGateway) error +} + +type MatchableTcpGatewayReconcileLoop interface { + RunMatchableTcpGatewayReconciler(ctx context.Context, rec MatchableTcpGatewayReconciler, predicates ...predicate.Predicate) error +} + +type matchableTcpGatewayReconcileLoop struct { + loop reconcile.Loop +} + +func NewMatchableTcpGatewayReconcileLoop(name string, mgr manager.Manager, options reconcile.Options) MatchableTcpGatewayReconcileLoop { + return &matchableTcpGatewayReconcileLoop{ + // empty cluster indicates this reconciler is built for the local cluster + loop: reconcile.NewLoop(name, "", mgr, &gateway_solo_io_v1.MatchableTcpGateway{}, options), + } +} + +func (c *matchableTcpGatewayReconcileLoop) RunMatchableTcpGatewayReconciler(ctx context.Context, reconciler MatchableTcpGatewayReconciler, predicates ...predicate.Predicate) error { + genericReconciler := genericMatchableTcpGatewayReconciler{ + reconciler: reconciler, + } + + var reconcilerWrapper reconcile.Reconciler + if finalizingReconciler, ok := reconciler.(MatchableTcpGatewayFinalizer); ok { + reconcilerWrapper = genericMatchableTcpGatewayFinalizer{ + genericMatchableTcpGatewayReconciler: genericReconciler, + finalizingReconciler: finalizingReconciler, + } + } else { + reconcilerWrapper = genericReconciler + } + return c.loop.RunReconciler(ctx, reconcilerWrapper, predicates...) +} + +// genericMatchableTcpGatewayHandler implements a generic reconcile.Reconciler +type genericMatchableTcpGatewayReconciler struct { + reconciler MatchableTcpGatewayReconciler +} + +func (r genericMatchableTcpGatewayReconciler) Reconcile(object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*gateway_solo_io_v1.MatchableTcpGateway) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: MatchableTcpGateway handler received event for %T", object) + } + return r.reconciler.ReconcileMatchableTcpGateway(obj) +} + +func (r genericMatchableTcpGatewayReconciler) ReconcileDeletion(request reconcile.Request) error { + if deletionReconciler, ok := r.reconciler.(MatchableTcpGatewayDeletionReconciler); ok { + return deletionReconciler.ReconcileMatchableTcpGatewayDeletion(request) + } + return nil +} + +// genericMatchableTcpGatewayFinalizer implements a generic reconcile.FinalizingReconciler +type genericMatchableTcpGatewayFinalizer struct { + genericMatchableTcpGatewayReconciler + finalizingReconciler MatchableTcpGatewayFinalizer +} + +func (r genericMatchableTcpGatewayFinalizer) FinalizerName() string { + return r.finalizingReconciler.MatchableTcpGatewayFinalizerName() +} + +func (r genericMatchableTcpGatewayFinalizer) Finalize(object ezkube.Object) error { + obj, ok := object.(*gateway_solo_io_v1.MatchableTcpGateway) + if !ok { + return errors.Errorf("internal error: MatchableTcpGateway handler received event for %T", object) + } + return r.finalizingReconciler.FinalizeMatchableTcpGateway(obj) +} + +// Reconcile Upsert events for the RouteOption Resource. +// implemented by the user +type RouteOptionReconciler interface { + ReconcileRouteOption(obj *gateway_solo_io_v1.RouteOption) (reconcile.Result, error) +} + +// Reconcile deletion events for the RouteOption Resource. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type RouteOptionDeletionReconciler interface { + ReconcileRouteOptionDeletion(req reconcile.Request) error +} + +type RouteOptionReconcilerFuncs struct { + OnReconcileRouteOption func(obj *gateway_solo_io_v1.RouteOption) (reconcile.Result, error) + OnReconcileRouteOptionDeletion func(req reconcile.Request) error +} + +func (f *RouteOptionReconcilerFuncs) ReconcileRouteOption(obj *gateway_solo_io_v1.RouteOption) (reconcile.Result, error) { + if f.OnReconcileRouteOption == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileRouteOption(obj) +} + +func (f *RouteOptionReconcilerFuncs) ReconcileRouteOptionDeletion(req reconcile.Request) error { + if f.OnReconcileRouteOptionDeletion == nil { + return nil + } + return f.OnReconcileRouteOptionDeletion(req) +} + +// Reconcile and finalize the RouteOption Resource +// implemented by the user +type RouteOptionFinalizer interface { + RouteOptionReconciler + + // name of the finalizer used by this handler. + // finalizer names should be unique for a single task + RouteOptionFinalizerName() string + + // finalize the object before it is deleted. + // Watchers created with a finalizing handler will a + FinalizeRouteOption(obj *gateway_solo_io_v1.RouteOption) error +} + +type RouteOptionReconcileLoop interface { + RunRouteOptionReconciler(ctx context.Context, rec RouteOptionReconciler, predicates ...predicate.Predicate) error +} + +type routeOptionReconcileLoop struct { + loop reconcile.Loop +} + +func NewRouteOptionReconcileLoop(name string, mgr manager.Manager, options reconcile.Options) RouteOptionReconcileLoop { + return &routeOptionReconcileLoop{ + // empty cluster indicates this reconciler is built for the local cluster + loop: reconcile.NewLoop(name, "", mgr, &gateway_solo_io_v1.RouteOption{}, options), + } +} + +func (c *routeOptionReconcileLoop) RunRouteOptionReconciler(ctx context.Context, reconciler RouteOptionReconciler, predicates ...predicate.Predicate) error { + genericReconciler := genericRouteOptionReconciler{ + reconciler: reconciler, + } + + var reconcilerWrapper reconcile.Reconciler + if finalizingReconciler, ok := reconciler.(RouteOptionFinalizer); ok { + reconcilerWrapper = genericRouteOptionFinalizer{ + genericRouteOptionReconciler: genericReconciler, + finalizingReconciler: finalizingReconciler, + } + } else { + reconcilerWrapper = genericReconciler + } + return c.loop.RunReconciler(ctx, reconcilerWrapper, predicates...) +} + +// genericRouteOptionHandler implements a generic reconcile.Reconciler +type genericRouteOptionReconciler struct { + reconciler RouteOptionReconciler +} + +func (r genericRouteOptionReconciler) Reconcile(object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*gateway_solo_io_v1.RouteOption) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: RouteOption handler received event for %T", object) + } + return r.reconciler.ReconcileRouteOption(obj) +} + +func (r genericRouteOptionReconciler) ReconcileDeletion(request reconcile.Request) error { + if deletionReconciler, ok := r.reconciler.(RouteOptionDeletionReconciler); ok { + return deletionReconciler.ReconcileRouteOptionDeletion(request) + } + return nil +} + +// genericRouteOptionFinalizer implements a generic reconcile.FinalizingReconciler +type genericRouteOptionFinalizer struct { + genericRouteOptionReconciler + finalizingReconciler RouteOptionFinalizer +} + +func (r genericRouteOptionFinalizer) FinalizerName() string { + return r.finalizingReconciler.RouteOptionFinalizerName() +} + +func (r genericRouteOptionFinalizer) Finalize(object ezkube.Object) error { + obj, ok := object.(*gateway_solo_io_v1.RouteOption) + if !ok { + return errors.Errorf("internal error: RouteOption handler received event for %T", object) + } + return r.finalizingReconciler.FinalizeRouteOption(obj) +} + // Reconcile Upsert events for the RouteTable Resource. // implemented by the user type RouteTableReconciler interface { @@ -367,3 +952,120 @@ func (r genericVirtualServiceFinalizer) Finalize(object ezkube.Object) error { } return r.finalizingReconciler.FinalizeVirtualService(obj) } + +// Reconcile Upsert events for the VirtualHostOption Resource. +// implemented by the user +type VirtualHostOptionReconciler interface { + ReconcileVirtualHostOption(obj *gateway_solo_io_v1.VirtualHostOption) (reconcile.Result, error) +} + +// Reconcile deletion events for the VirtualHostOption Resource. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type VirtualHostOptionDeletionReconciler interface { + ReconcileVirtualHostOptionDeletion(req reconcile.Request) error +} + +type VirtualHostOptionReconcilerFuncs struct { + OnReconcileVirtualHostOption func(obj *gateway_solo_io_v1.VirtualHostOption) (reconcile.Result, error) + OnReconcileVirtualHostOptionDeletion func(req reconcile.Request) error +} + +func (f *VirtualHostOptionReconcilerFuncs) ReconcileVirtualHostOption(obj *gateway_solo_io_v1.VirtualHostOption) (reconcile.Result, error) { + if f.OnReconcileVirtualHostOption == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileVirtualHostOption(obj) +} + +func (f *VirtualHostOptionReconcilerFuncs) ReconcileVirtualHostOptionDeletion(req reconcile.Request) error { + if f.OnReconcileVirtualHostOptionDeletion == nil { + return nil + } + return f.OnReconcileVirtualHostOptionDeletion(req) +} + +// Reconcile and finalize the VirtualHostOption Resource +// implemented by the user +type VirtualHostOptionFinalizer interface { + VirtualHostOptionReconciler + + // name of the finalizer used by this handler. + // finalizer names should be unique for a single task + VirtualHostOptionFinalizerName() string + + // finalize the object before it is deleted. + // Watchers created with a finalizing handler will a + FinalizeVirtualHostOption(obj *gateway_solo_io_v1.VirtualHostOption) error +} + +type VirtualHostOptionReconcileLoop interface { + RunVirtualHostOptionReconciler(ctx context.Context, rec VirtualHostOptionReconciler, predicates ...predicate.Predicate) error +} + +type virtualHostOptionReconcileLoop struct { + loop reconcile.Loop +} + +func NewVirtualHostOptionReconcileLoop(name string, mgr manager.Manager, options reconcile.Options) VirtualHostOptionReconcileLoop { + return &virtualHostOptionReconcileLoop{ + // empty cluster indicates this reconciler is built for the local cluster + loop: reconcile.NewLoop(name, "", mgr, &gateway_solo_io_v1.VirtualHostOption{}, options), + } +} + +func (c *virtualHostOptionReconcileLoop) RunVirtualHostOptionReconciler(ctx context.Context, reconciler VirtualHostOptionReconciler, predicates ...predicate.Predicate) error { + genericReconciler := genericVirtualHostOptionReconciler{ + reconciler: reconciler, + } + + var reconcilerWrapper reconcile.Reconciler + if finalizingReconciler, ok := reconciler.(VirtualHostOptionFinalizer); ok { + reconcilerWrapper = genericVirtualHostOptionFinalizer{ + genericVirtualHostOptionReconciler: genericReconciler, + finalizingReconciler: finalizingReconciler, + } + } else { + reconcilerWrapper = genericReconciler + } + return c.loop.RunReconciler(ctx, reconcilerWrapper, predicates...) +} + +// genericVirtualHostOptionHandler implements a generic reconcile.Reconciler +type genericVirtualHostOptionReconciler struct { + reconciler VirtualHostOptionReconciler +} + +func (r genericVirtualHostOptionReconciler) Reconcile(object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*gateway_solo_io_v1.VirtualHostOption) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: VirtualHostOption handler received event for %T", object) + } + return r.reconciler.ReconcileVirtualHostOption(obj) +} + +func (r genericVirtualHostOptionReconciler) ReconcileDeletion(request reconcile.Request) error { + if deletionReconciler, ok := r.reconciler.(VirtualHostOptionDeletionReconciler); ok { + return deletionReconciler.ReconcileVirtualHostOptionDeletion(request) + } + return nil +} + +// genericVirtualHostOptionFinalizer implements a generic reconcile.FinalizingReconciler +type genericVirtualHostOptionFinalizer struct { + genericVirtualHostOptionReconciler + finalizingReconciler VirtualHostOptionFinalizer +} + +func (r genericVirtualHostOptionFinalizer) FinalizerName() string { + return r.finalizingReconciler.VirtualHostOptionFinalizerName() +} + +func (r genericVirtualHostOptionFinalizer) Finalize(object ezkube.Object) error { + obj, ok := object.(*gateway_solo_io_v1.VirtualHostOption) + if !ok { + return errors.Errorf("internal error: VirtualHostOption handler received event for %T", object) + } + return r.finalizingReconciler.FinalizeVirtualHostOption(obj) +} diff --git a/pkg/api/gateway.solo.io/v1/external_options.pb.clone.go b/pkg/api/gateway.solo.io/v1/external_options.pb.clone.go new file mode 100644 index 000000000..362b3abdf --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/external_options.pb.clone.go @@ -0,0 +1,392 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/external_options.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_skv2_pkg_api_core_skv2_solo_io_v1 "github.com/solo-io/skv2/pkg/api/core.skv2.solo.io/v1" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *VirtualHostOptionSpec) Clone() proto.Message { + var target *VirtualHostOptionSpec + if m == nil { + return target + } + target = &VirtualHostOptionSpec{} + + if h, ok := interface{}(m.GetOptions()).(clone.Cloner); ok { + target.Options = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.VirtualHostOptions) + } else { + target.Options = proto.Clone(m.GetOptions()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.VirtualHostOptions) + } + + if m.GetTargetRefs() != nil { + target.TargetRefs = make([]*github_com_solo_io_skv2_pkg_api_core_skv2_solo_io_v1.PolicyTargetReferenceWithSectionName, len(m.GetTargetRefs())) + for idx, v := range m.GetTargetRefs() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.TargetRefs[idx] = h.Clone().(*github_com_solo_io_skv2_pkg_api_core_skv2_solo_io_v1.PolicyTargetReferenceWithSectionName) + } else { + target.TargetRefs[idx] = proto.Clone(v).(*github_com_solo_io_skv2_pkg_api_core_skv2_solo_io_v1.PolicyTargetReferenceWithSectionName) + } + + } + } + + return target +} + +// Clone function +func (m *RouteOptionSpec) Clone() proto.Message { + var target *RouteOptionSpec + if m == nil { + return target + } + target = &RouteOptionSpec{} + + if h, ok := interface{}(m.GetOptions()).(clone.Cloner); ok { + target.Options = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.RouteOptions) + } else { + target.Options = proto.Clone(m.GetOptions()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.RouteOptions) + } + + if m.GetTargetRefs() != nil { + target.TargetRefs = make([]*github_com_solo_io_skv2_pkg_api_core_skv2_solo_io_v1.PolicyTargetReference, len(m.GetTargetRefs())) + for idx, v := range m.GetTargetRefs() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.TargetRefs[idx] = h.Clone().(*github_com_solo_io_skv2_pkg_api_core_skv2_solo_io_v1.PolicyTargetReference) + } else { + target.TargetRefs[idx] = proto.Clone(v).(*github_com_solo_io_skv2_pkg_api_core_skv2_solo_io_v1.PolicyTargetReference) + } + + } + } + + return target +} + +// Clone function +func (m *ListenerOptionSpec) Clone() proto.Message { + var target *ListenerOptionSpec + if m == nil { + return target + } + target = &ListenerOptionSpec{} + + if h, ok := interface{}(m.GetOptions()).(clone.Cloner); ok { + target.Options = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.ListenerOptions) + } else { + target.Options = proto.Clone(m.GetOptions()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.ListenerOptions) + } + + if m.GetTargetRefs() != nil { + target.TargetRefs = make([]*github_com_solo_io_skv2_pkg_api_core_skv2_solo_io_v1.PolicyTargetReferenceWithSectionName, len(m.GetTargetRefs())) + for idx, v := range m.GetTargetRefs() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.TargetRefs[idx] = h.Clone().(*github_com_solo_io_skv2_pkg_api_core_skv2_solo_io_v1.PolicyTargetReferenceWithSectionName) + } else { + target.TargetRefs[idx] = proto.Clone(v).(*github_com_solo_io_skv2_pkg_api_core_skv2_solo_io_v1.PolicyTargetReferenceWithSectionName) + } + + } + } + + return target +} + +// Clone function +func (m *HttpListenerOptionSpec) Clone() proto.Message { + var target *HttpListenerOptionSpec + if m == nil { + return target + } + target = &HttpListenerOptionSpec{} + + if h, ok := interface{}(m.GetOptions()).(clone.Cloner); ok { + target.Options = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.HttpListenerOptions) + } else { + target.Options = proto.Clone(m.GetOptions()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.HttpListenerOptions) + } + + if m.GetTargetRefs() != nil { + target.TargetRefs = make([]*github_com_solo_io_skv2_pkg_api_core_skv2_solo_io_v1.PolicyTargetReferenceWithSectionName, len(m.GetTargetRefs())) + for idx, v := range m.GetTargetRefs() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.TargetRefs[idx] = h.Clone().(*github_com_solo_io_skv2_pkg_api_core_skv2_solo_io_v1.PolicyTargetReferenceWithSectionName) + } else { + target.TargetRefs[idx] = proto.Clone(v).(*github_com_solo_io_skv2_pkg_api_core_skv2_solo_io_v1.PolicyTargetReferenceWithSectionName) + } + + } + } + + return target +} + +// Clone function +func (m *HttpListenerOptionStatus) Clone() proto.Message { + var target *HttpListenerOptionStatus + if m == nil { + return target + } + target = &HttpListenerOptionStatus{} + + target.State = m.GetState() + + target.Reason = m.GetReason() + + target.ReportedBy = m.GetReportedBy() + + if m.GetSubresourceStatuses() != nil { + target.SubresourceStatuses = make(map[string]*HttpListenerOptionStatus, len(m.GetSubresourceStatuses())) + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SubresourceStatuses[k] = h.Clone().(*HttpListenerOptionStatus) + } else { + target.SubresourceStatuses[k] = proto.Clone(v).(*HttpListenerOptionStatus) + } + + } + } + + if h, ok := interface{}(m.GetDetails()).(clone.Cloner); ok { + target.Details = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Details = proto.Clone(m.GetDetails()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + return target +} + +// Clone function +func (m *HttpListenerOptionNamespacedStatuses) Clone() proto.Message { + var target *HttpListenerOptionNamespacedStatuses + if m == nil { + return target + } + target = &HttpListenerOptionNamespacedStatuses{} + + if m.GetStatuses() != nil { + target.Statuses = make(map[string]*HttpListenerOptionStatus, len(m.GetStatuses())) + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Statuses[k] = h.Clone().(*HttpListenerOptionStatus) + } else { + target.Statuses[k] = proto.Clone(v).(*HttpListenerOptionStatus) + } + + } + } + + return target +} + +// Clone function +func (m *ListenerOptionStatus) Clone() proto.Message { + var target *ListenerOptionStatus + if m == nil { + return target + } + target = &ListenerOptionStatus{} + + target.State = m.GetState() + + target.Reason = m.GetReason() + + target.ReportedBy = m.GetReportedBy() + + if m.GetSubresourceStatuses() != nil { + target.SubresourceStatuses = make(map[string]*ListenerOptionStatus, len(m.GetSubresourceStatuses())) + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SubresourceStatuses[k] = h.Clone().(*ListenerOptionStatus) + } else { + target.SubresourceStatuses[k] = proto.Clone(v).(*ListenerOptionStatus) + } + + } + } + + if h, ok := interface{}(m.GetDetails()).(clone.Cloner); ok { + target.Details = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Details = proto.Clone(m.GetDetails()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + return target +} + +// Clone function +func (m *ListenerOptionNamespacedStatuses) Clone() proto.Message { + var target *ListenerOptionNamespacedStatuses + if m == nil { + return target + } + target = &ListenerOptionNamespacedStatuses{} + + if m.GetStatuses() != nil { + target.Statuses = make(map[string]*ListenerOptionStatus, len(m.GetStatuses())) + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Statuses[k] = h.Clone().(*ListenerOptionStatus) + } else { + target.Statuses[k] = proto.Clone(v).(*ListenerOptionStatus) + } + + } + } + + return target +} + +// Clone function +func (m *RouteOptionStatus) Clone() proto.Message { + var target *RouteOptionStatus + if m == nil { + return target + } + target = &RouteOptionStatus{} + + target.State = m.GetState() + + target.Reason = m.GetReason() + + target.ReportedBy = m.GetReportedBy() + + if m.GetSubresourceStatuses() != nil { + target.SubresourceStatuses = make(map[string]*RouteOptionStatus, len(m.GetSubresourceStatuses())) + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SubresourceStatuses[k] = h.Clone().(*RouteOptionStatus) + } else { + target.SubresourceStatuses[k] = proto.Clone(v).(*RouteOptionStatus) + } + + } + } + + if h, ok := interface{}(m.GetDetails()).(clone.Cloner); ok { + target.Details = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Details = proto.Clone(m.GetDetails()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + return target +} + +// Clone function +func (m *RouteOptionNamespacedStatuses) Clone() proto.Message { + var target *RouteOptionNamespacedStatuses + if m == nil { + return target + } + target = &RouteOptionNamespacedStatuses{} + + if m.GetStatuses() != nil { + target.Statuses = make(map[string]*RouteOptionStatus, len(m.GetStatuses())) + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Statuses[k] = h.Clone().(*RouteOptionStatus) + } else { + target.Statuses[k] = proto.Clone(v).(*RouteOptionStatus) + } + + } + } + + return target +} + +// Clone function +func (m *VirtualHostOptionStatus) Clone() proto.Message { + var target *VirtualHostOptionStatus + if m == nil { + return target + } + target = &VirtualHostOptionStatus{} + + target.State = m.GetState() + + target.Reason = m.GetReason() + + target.ReportedBy = m.GetReportedBy() + + if m.GetSubresourceStatuses() != nil { + target.SubresourceStatuses = make(map[string]*VirtualHostOptionStatus, len(m.GetSubresourceStatuses())) + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SubresourceStatuses[k] = h.Clone().(*VirtualHostOptionStatus) + } else { + target.SubresourceStatuses[k] = proto.Clone(v).(*VirtualHostOptionStatus) + } + + } + } + + if h, ok := interface{}(m.GetDetails()).(clone.Cloner); ok { + target.Details = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Details = proto.Clone(m.GetDetails()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + return target +} + +// Clone function +func (m *VirtualHostOptionNamespacedStatuses) Clone() proto.Message { + var target *VirtualHostOptionNamespacedStatuses + if m == nil { + return target + } + target = &VirtualHostOptionNamespacedStatuses{} + + if m.GetStatuses() != nil { + target.Statuses = make(map[string]*VirtualHostOptionStatus, len(m.GetStatuses())) + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Statuses[k] = h.Clone().(*VirtualHostOptionStatus) + } else { + target.Statuses[k] = proto.Clone(v).(*VirtualHostOptionStatus) + } + + } + } + + return target +} diff --git a/pkg/api/gateway.solo.io/v1/external_options.pb.equal.go b/pkg/api/gateway.solo.io/v1/external_options.pb.equal.go index 3dce78776..6940061ee 100644 --- a/pkg/api/gateway.solo.io/v1/external_options.pb.equal.go +++ b/pkg/api/gateway.solo.io/v1/external_options.pb.equal.go @@ -26,14 +26,14 @@ var ( ) // Equal function -func (m *VirtualHostOption) Equal(that interface{}) bool { +func (m *VirtualHostOptionSpec) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*VirtualHostOption) + target, ok := that.(*VirtualHostOptionSpec) if !ok { - that2, ok := that.(VirtualHostOption) + that2, ok := that.(VirtualHostOptionSpec) if ok { target = &that2 } else { @@ -46,25 +46,107 @@ func (m *VirtualHostOption) Equal(that interface{}) bool { return false } - if h, ok := interface{}(m.GetStatus()).(equality.Equalizer); ok { - if !h.Equal(target.GetStatus()) { + if h, ok := interface{}(m.GetOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetOptions()) { return false } } else { - if !proto.Equal(m.GetStatus(), target.GetStatus()) { + if !proto.Equal(m.GetOptions(), target.GetOptions()) { + return false + } + } + + if len(m.GetTargetRefs()) != len(target.GetTargetRefs()) { + return false + } + for idx, v := range m.GetTargetRefs() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetTargetRefs()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetTargetRefs()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *RouteOptionSpec) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RouteOptionSpec) + if !ok { + that2, ok := that.(RouteOptionSpec) + if ok { + target = &that2 + } else { return false } } + if target == nil { + return m == nil + } else if m == nil { + return false + } - if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadata()) { + if h, ok := interface{}(m.GetOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetOptions()) { return false } } else { - if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { + if !proto.Equal(m.GetOptions(), target.GetOptions()) { + return false + } + } + + if len(m.GetTargetRefs()) != len(target.GetTargetRefs()) { + return false + } + for idx, v := range m.GetTargetRefs() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetTargetRefs()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetTargetRefs()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *ListenerOptionSpec) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ListenerOptionSpec) + if !ok { + that2, ok := that.(ListenerOptionSpec) + if ok { + target = &that2 + } else { return false } } + if target == nil { + return m == nil + } else if m == nil { + return false + } if h, ok := interface{}(m.GetOptions()).(equality.Equalizer); ok { if !h.Equal(target.GetOptions()) { @@ -76,18 +158,35 @@ func (m *VirtualHostOption) Equal(that interface{}) bool { } } + if len(m.GetTargetRefs()) != len(target.GetTargetRefs()) { + return false + } + for idx, v := range m.GetTargetRefs() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetTargetRefs()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetTargetRefs()[idx]) { + return false + } + } + + } + return true } // Equal function -func (m *RouteOption) Equal(that interface{}) bool { +func (m *HttpListenerOptionSpec) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*RouteOption) + target, ok := that.(*HttpListenerOptionSpec) if !ok { - that2, ok := that.(RouteOption) + that2, ok := that.(HttpListenerOptionSpec) if ok { target = &that2 } else { @@ -100,35 +199,448 @@ func (m *RouteOption) Equal(that interface{}) bool { return false } - if h, ok := interface{}(m.GetStatus()).(equality.Equalizer); ok { - if !h.Equal(target.GetStatus()) { + if h, ok := interface{}(m.GetOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetOptions()) { return false } } else { - if !proto.Equal(m.GetStatus(), target.GetStatus()) { + if !proto.Equal(m.GetOptions(), target.GetOptions()) { + return false + } + } + + if len(m.GetTargetRefs()) != len(target.GetTargetRefs()) { + return false + } + for idx, v := range m.GetTargetRefs() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetTargetRefs()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetTargetRefs()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *HttpListenerOptionStatus) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HttpListenerOptionStatus) + if !ok { + that2, ok := that.(HttpListenerOptionStatus) + if ok { + target = &that2 + } else { return false } } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetState() != target.GetState() { + return false + } + + if strings.Compare(m.GetReason(), target.GetReason()) != 0 { + return false + } + + if strings.Compare(m.GetReportedBy(), target.GetReportedBy()) != 0 { + return false + } + + if len(m.GetSubresourceStatuses()) != len(target.GetSubresourceStatuses()) { + return false + } + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetSubresourceStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetSubresourceStatuses()[k]) { + return false + } + } + + } - if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadata()) { + if h, ok := interface{}(m.GetDetails()).(equality.Equalizer); ok { + if !h.Equal(target.GetDetails()) { return false } } else { - if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { + if !proto.Equal(m.GetDetails(), target.GetDetails()) { return false } } - if h, ok := interface{}(m.GetOptions()).(equality.Equalizer); ok { - if !h.Equal(target.GetOptions()) { + return true +} + +// Equal function +func (m *HttpListenerOptionNamespacedStatuses) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HttpListenerOptionNamespacedStatuses) + if !ok { + that2, ok := that.(HttpListenerOptionNamespacedStatuses) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetStatuses()) != len(target.GetStatuses()) { + return false + } + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetStatuses()[k]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *ListenerOptionStatus) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ListenerOptionStatus) + if !ok { + that2, ok := that.(ListenerOptionStatus) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetState() != target.GetState() { + return false + } + + if strings.Compare(m.GetReason(), target.GetReason()) != 0 { + return false + } + + if strings.Compare(m.GetReportedBy(), target.GetReportedBy()) != 0 { + return false + } + + if len(m.GetSubresourceStatuses()) != len(target.GetSubresourceStatuses()) { + return false + } + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetSubresourceStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetSubresourceStatuses()[k]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetDetails()).(equality.Equalizer); ok { + if !h.Equal(target.GetDetails()) { return false } } else { - if !proto.Equal(m.GetOptions(), target.GetOptions()) { + if !proto.Equal(m.GetDetails(), target.GetDetails()) { + return false + } + } + + return true +} + +// Equal function +func (m *ListenerOptionNamespacedStatuses) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ListenerOptionNamespacedStatuses) + if !ok { + that2, ok := that.(ListenerOptionNamespacedStatuses) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetStatuses()) != len(target.GetStatuses()) { + return false + } + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetStatuses()[k]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *RouteOptionStatus) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RouteOptionStatus) + if !ok { + that2, ok := that.(RouteOptionStatus) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetState() != target.GetState() { + return false + } + + if strings.Compare(m.GetReason(), target.GetReason()) != 0 { + return false + } + + if strings.Compare(m.GetReportedBy(), target.GetReportedBy()) != 0 { + return false + } + + if len(m.GetSubresourceStatuses()) != len(target.GetSubresourceStatuses()) { + return false + } + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetSubresourceStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetSubresourceStatuses()[k]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetDetails()).(equality.Equalizer); ok { + if !h.Equal(target.GetDetails()) { + return false + } + } else { + if !proto.Equal(m.GetDetails(), target.GetDetails()) { + return false + } + } + + return true +} + +// Equal function +func (m *RouteOptionNamespacedStatuses) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RouteOptionNamespacedStatuses) + if !ok { + that2, ok := that.(RouteOptionNamespacedStatuses) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetStatuses()) != len(target.GetStatuses()) { + return false + } + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetStatuses()[k]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *VirtualHostOptionStatus) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*VirtualHostOptionStatus) + if !ok { + that2, ok := that.(VirtualHostOptionStatus) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetState() != target.GetState() { + return false + } + + if strings.Compare(m.GetReason(), target.GetReason()) != 0 { + return false + } + + if strings.Compare(m.GetReportedBy(), target.GetReportedBy()) != 0 { + return false + } + + if len(m.GetSubresourceStatuses()) != len(target.GetSubresourceStatuses()) { + return false + } + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetSubresourceStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetSubresourceStatuses()[k]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetDetails()).(equality.Equalizer); ok { + if !h.Equal(target.GetDetails()) { + return false + } + } else { + if !proto.Equal(m.GetDetails(), target.GetDetails()) { + return false + } + } + + return true +} + +// Equal function +func (m *VirtualHostOptionNamespacedStatuses) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*VirtualHostOptionNamespacedStatuses) + if !ok { + that2, ok := that.(VirtualHostOptionNamespacedStatuses) + if ok { + target = &that2 + } else { return false } } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetStatuses()) != len(target.GetStatuses()) { + return false + } + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetStatuses()[k]) { + return false + } + } + + } return true } diff --git a/pkg/api/gateway.solo.io/v1/external_options.pb.go b/pkg/api/gateway.solo.io/v1/external_options.pb.go index e0a055066..7a36a627c 100644 --- a/pkg/api/gateway.solo.io/v1/external_options.pb.go +++ b/pkg/api/gateway.solo.io/v1/external_options.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/external_options.proto @@ -9,14 +9,16 @@ package v1 import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - _ "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" + v11 "github.com/solo-io/skv2/pkg/api/core.skv2.solo.io/v1" v1 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1" - core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + _ "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" + _ "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -26,11 +28,238 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 +type HttpListenerOptionStatus_State int32 + +const ( + // Pending status indicates the resource has not yet been validated + HttpListenerOptionStatus_Pending HttpListenerOptionStatus_State = 0 + // Accepted indicates the resource has been validated + HttpListenerOptionStatus_Accepted HttpListenerOptionStatus_State = 1 + // Rejected indicates an invalid configuration by the user + // Rejected resources may be propagated to the xDS server depending on their severity + HttpListenerOptionStatus_Rejected HttpListenerOptionStatus_State = 2 + // Warning indicates a partially invalid configuration by the user + // Resources with Warnings may be partially accepted by a controller, depending on the implementation + HttpListenerOptionStatus_Warning HttpListenerOptionStatus_State = 3 +) + +// Enum value maps for HttpListenerOptionStatus_State. +var ( + HttpListenerOptionStatus_State_name = map[int32]string{ + 0: "Pending", + 1: "Accepted", + 2: "Rejected", + 3: "Warning", + } + HttpListenerOptionStatus_State_value = map[string]int32{ + "Pending": 0, + "Accepted": 1, + "Rejected": 2, + "Warning": 3, + } +) + +func (x HttpListenerOptionStatus_State) Enum() *HttpListenerOptionStatus_State { + p := new(HttpListenerOptionStatus_State) + *p = x + return p +} + +func (x HttpListenerOptionStatus_State) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (HttpListenerOptionStatus_State) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_enumTypes[0].Descriptor() +} + +func (HttpListenerOptionStatus_State) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_enumTypes[0] +} + +func (x HttpListenerOptionStatus_State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use HttpListenerOptionStatus_State.Descriptor instead. +func (HttpListenerOptionStatus_State) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescGZIP(), []int{4, 0} +} + +type ListenerOptionStatus_State int32 + +const ( + // Pending status indicates the resource has not yet been validated + ListenerOptionStatus_Pending ListenerOptionStatus_State = 0 + // Accepted indicates the resource has been validated + ListenerOptionStatus_Accepted ListenerOptionStatus_State = 1 + // Rejected indicates an invalid configuration by the user + // Rejected resources may be propagated to the xDS server depending on their severity + ListenerOptionStatus_Rejected ListenerOptionStatus_State = 2 + // Warning indicates a partially invalid configuration by the user + // Resources with Warnings may be partially accepted by a controller, depending on the implementation + ListenerOptionStatus_Warning ListenerOptionStatus_State = 3 +) + +// Enum value maps for ListenerOptionStatus_State. +var ( + ListenerOptionStatus_State_name = map[int32]string{ + 0: "Pending", + 1: "Accepted", + 2: "Rejected", + 3: "Warning", + } + ListenerOptionStatus_State_value = map[string]int32{ + "Pending": 0, + "Accepted": 1, + "Rejected": 2, + "Warning": 3, + } +) + +func (x ListenerOptionStatus_State) Enum() *ListenerOptionStatus_State { + p := new(ListenerOptionStatus_State) + *p = x + return p +} + +func (x ListenerOptionStatus_State) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ListenerOptionStatus_State) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_enumTypes[1].Descriptor() +} + +func (ListenerOptionStatus_State) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_enumTypes[1] +} + +func (x ListenerOptionStatus_State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ListenerOptionStatus_State.Descriptor instead. +func (ListenerOptionStatus_State) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescGZIP(), []int{6, 0} +} + +type RouteOptionStatus_State int32 + +const ( + // Pending status indicates the resource has not yet been validated + RouteOptionStatus_Pending RouteOptionStatus_State = 0 + // Accepted indicates the resource has been validated + RouteOptionStatus_Accepted RouteOptionStatus_State = 1 + // Rejected indicates an invalid configuration by the user + // Rejected resources may be propagated to the xDS server depending on their severity + RouteOptionStatus_Rejected RouteOptionStatus_State = 2 + // Warning indicates a partially invalid configuration by the user + // Resources with Warnings may be partially accepted by a controller, depending on the implementation + RouteOptionStatus_Warning RouteOptionStatus_State = 3 +) + +// Enum value maps for RouteOptionStatus_State. +var ( + RouteOptionStatus_State_name = map[int32]string{ + 0: "Pending", + 1: "Accepted", + 2: "Rejected", + 3: "Warning", + } + RouteOptionStatus_State_value = map[string]int32{ + "Pending": 0, + "Accepted": 1, + "Rejected": 2, + "Warning": 3, + } +) + +func (x RouteOptionStatus_State) Enum() *RouteOptionStatus_State { + p := new(RouteOptionStatus_State) + *p = x + return p +} + +func (x RouteOptionStatus_State) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RouteOptionStatus_State) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_enumTypes[2].Descriptor() +} + +func (RouteOptionStatus_State) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_enumTypes[2] +} + +func (x RouteOptionStatus_State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use RouteOptionStatus_State.Descriptor instead. +func (RouteOptionStatus_State) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescGZIP(), []int{8, 0} +} + +type VirtualHostOptionStatus_State int32 + +const ( + // Pending status indicates the resource has not yet been validated + VirtualHostOptionStatus_Pending VirtualHostOptionStatus_State = 0 + // Accepted indicates the resource has been validated + VirtualHostOptionStatus_Accepted VirtualHostOptionStatus_State = 1 + // Rejected indicates an invalid configuration by the user + // Rejected resources may be propagated to the xDS server depending on their severity + VirtualHostOptionStatus_Rejected VirtualHostOptionStatus_State = 2 + // Warning indicates a partially invalid configuration by the user + // Resources with Warnings may be partially accepted by a controller, depending on the implementation + VirtualHostOptionStatus_Warning VirtualHostOptionStatus_State = 3 +) + +// Enum value maps for VirtualHostOptionStatus_State. +var ( + VirtualHostOptionStatus_State_name = map[int32]string{ + 0: "Pending", + 1: "Accepted", + 2: "Rejected", + 3: "Warning", + } + VirtualHostOptionStatus_State_value = map[string]int32{ + "Pending": 0, + "Accepted": 1, + "Rejected": 2, + "Warning": 3, + } +) + +func (x VirtualHostOptionStatus_State) Enum() *VirtualHostOptionStatus_State { + p := new(VirtualHostOptionStatus_State) + *p = x + return p +} + +func (x VirtualHostOptionStatus_State) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (VirtualHostOptionStatus_State) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_enumTypes[3].Descriptor() +} + +func (VirtualHostOptionStatus_State) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_enumTypes[3] +} + +func (x VirtualHostOptionStatus_State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use VirtualHostOptionStatus_State.Descriptor instead. +func (VirtualHostOptionStatus_State) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescGZIP(), []int{10, 0} +} -// // The **VirtualHostOption** holds `options` configuration for a VirtualHost. // VirtualHosts can inherit `options` config from `VirtualHostOption` objects by delegating to them. // @@ -44,115 +273,132 @@ const _ = proto.ProtoPackageIsVersion4 // apiVersion: gateway.solo.io/v1 // kind: VirtualService // metadata: -// name: http -// namespace: gloo-system +// +// name: http +// namespace: gloo-system +// // spec: -// virtualHost: -// domains: -// - '*' -// options: -// headerManipulation: -// requestHeadersToRemove: "header-from-vhost" -// delegateOptions: -// - name: virtualhost-external-options-1 -// namespace: opt-namespace -// - name: virtualhost-external-options-2 -// namespace: opt-namespace +// +// virtualHost: +// domains: +// - '*' +// options: +// headerManipulation: +// requestHeadersToRemove: ["header-from-vhost"] +// optionsConfigRefs: +// delegateOptions: +// - name: virtualhost-external-options-1 +// namespace: opt-namespace +// - name: virtualhost-external-options-2 +// namespace: opt-namespace +// // ``` // // ```yaml // apiVersion: gateway.solo.io/v1 // kind: VirtualHostOption // metadata: -// name: virtualhost-external-options-1 -// namespace: opt-namespace +// +// name: virtualhost-external-options-1 +// namespace: opt-namespace +// // spec: -// options: -// headerManipulation: -// requestHeadersToRemove: "header-from-external-options1" -// corsPolicy: -// exposeHeaders: -// - header-from-extopt1 +// +// options: +// headerManipulation: +// requestHeadersToRemove: ["header-from-external-options1"] +// cors: +// exposeHeaders: +// - header-from-extopt1 +// allowOrigin: +// - 'https://solo.io' +// // ``` // // ```yaml // apiVersion: gateway.solo.io/v1 // kind: VirtualHostOption // metadata: -// name: virtualhost-external-options-2 -// namespace: opt-namespace +// +// name: virtualhost-external-options-2 +// namespace: opt-namespace +// // spec: -// options: -// headerManipulation: -// requestHeadersToRemove: "header-from-external-options2" -// corsPolicy: -// exposeHeaders: -// - header-from-extopt2 -// maxAge: 2s -// transformations: -// requestTransformation: -// transformationTemplate: -// headers: -// x-header-added-in-opt2: -// value: this header was added in the VirtualHostOption object - #2 +// +// options: +// headerManipulation: +// requestHeadersToRemove: ["header-from-external-options2"] +// cors: +// exposeHeaders: +// - header-from-extopt2 +// maxAge: 2s +// allowOrigin: +// - 'https://solo.io' +// transformations: +// requestTransformation: +// transformationTemplate: +// headers: +// x-header-added-in-opt2: +// text: this header was added in the VirtualHostOption object - #2 +// // ``` // // The final virtual host options (visible in the Proxy CR) would be: // ```yaml // spec: -// virtualHost: -// domains: -// - '*' -// options: -// # from Virtual host options -// headerManipulation: -// requestHeadersToRemove: "header-from-vhost" -// # from delegated virtualhost-external-options-1 -// corsPolicy: -// exposeHeaders: -// - header-from-extopt1 -// # from delegated virtualhost-external-options-2 -// transformations: -// requestTransformation: -// transformationTemplate: -// headers: -// x-header-added-in-opt2: -// value: this header was added in the VirtualHostOption object - #2 +// +// virtualHost: +// domains: +// - '*' +// options: +// # from Virtual host options +// headerManipulation: +// requestHeadersToRemove: ["header-from-vhost"] +// # from delegated virtualhost-external-options-1 +// cors: +// exposeHeaders: +// - header-from-extopt1 +// allowOrigin: +// - 'https://solo.io' +// # from delegated virtualhost-external-options-2 +// transformations: +// requestTransformation: +// transformationTemplate: +// headers: +// x-header-added-in-opt2: +// text: this header was added in the VirtualHostOption object - #2 +// // ``` // // Notice how the order of VirtualHostOption delegations matters, and that the VirtualHost-level config overrides all delegated configs. -type VirtualHostOption struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Status indicates the validation status of this resource. - // Status is read-only by clients, and set by gateway during validation - Status *core.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` - // Metadata contains the object metadata for this resource - Metadata *core.Metadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` +type VirtualHostOptionSpec struct { + state protoimpl.MessageState `protogen:"open.v1"` // VirtualHost options. See VirtualHost for delegation behavior. Options *v1.VirtualHostOptions `protobuf:"bytes,3,opt,name=options,proto3" json:"options,omitempty"` + // When using Kubernetes Gateway API mode, targetRefs can be used to attach this VirtualHostOption + // to a gateway.networking.k8s.io/Gateway object. The `options` specified will then be used + // for all `Listeners` in the `Gateway` unless `targetRef.sectionName` is specified. + TargetRefs []*v11.PolicyTargetReferenceWithSectionName `protobuf:"bytes,5,rep,name=target_refs,json=targetRefs,proto3" json:"target_refs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *VirtualHostOption) Reset() { - *x = VirtualHostOption{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *VirtualHostOptionSpec) Reset() { + *x = VirtualHostOptionSpec{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *VirtualHostOption) String() string { +func (x *VirtualHostOptionSpec) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VirtualHostOption) ProtoMessage() {} +func (*VirtualHostOptionSpec) ProtoMessage() {} -func (x *VirtualHostOption) ProtoReflect() protoreflect.Message { +func (x *VirtualHostOptionSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -162,33 +408,25 @@ func (x *VirtualHostOption) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VirtualHostOption.ProtoReflect.Descriptor instead. -func (*VirtualHostOption) Descriptor() ([]byte, []int) { +// Deprecated: Use VirtualHostOptionSpec.ProtoReflect.Descriptor instead. +func (*VirtualHostOptionSpec) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescGZIP(), []int{0} } -func (x *VirtualHostOption) GetStatus() *core.Status { +func (x *VirtualHostOptionSpec) GetOptions() *v1.VirtualHostOptions { if x != nil { - return x.Status + return x.Options } return nil } -func (x *VirtualHostOption) GetMetadata() *core.Metadata { +func (x *VirtualHostOptionSpec) GetTargetRefs() []*v11.PolicyTargetReferenceWithSectionName { if x != nil { - return x.Metadata + return x.TargetRefs } return nil } -func (x *VirtualHostOption) GetOptions() *v1.VirtualHostOptions { - if x != nil { - return x.Options - } - return nil -} - -// // The **RouteOption** holds `options` configuration for a Route. // Routes can inherit `options` config from `RouteOption` objects by delegating to them. // @@ -202,117 +440,133 @@ func (x *VirtualHostOption) GetOptions() *v1.VirtualHostOptions { // apiVersion: gateway.solo.io/v1 // kind: VirtualService // metadata: -// name: http -// namespace: gloo-system +// +// name: http +// namespace: gloo-system +// // spec: -// virtualHost: -// domains: -// - '*' -// routes: -// - matchers: -// - prefix: / -// options: -// headerManipulation: -// requestHeadersToRemove: "header-from-route" -// delegateOptions: -// - name: route-external-options-1 -// namespace: opt-namespace -// - name: route-external-options-2 -// namespace: opt-namespace +// +// virtualHost: +// domains: +// - '*' +// routes: +// - matchers: +// - prefix: / +// options: +// headerManipulation: +// requestHeadersToRemove: ["header-from-route"] +// optionsConfigRefs: +// delegateOptions: +// - name: route-external-options-1 +// namespace: opt-namespace +// - name: route-external-options-2 +// namespace: opt-namespace +// // ``` // // ```yaml // apiVersion: gateway.solo.io/v1 // kind: RouteOption // metadata: -// name: route-external-options-1 -// namespace: opt-namespace +// +// name: route-external-options-1 +// namespace: opt-namespace +// // spec: -// options: -// headerManipulation: -// requestHeadersToRemove: "header-from-external-options1" -// corsPolicy: -// exposeHeaders: -// - header-from-extopt1 +// +// options: +// headerManipulation: +// requestHeadersToRemove: ["header-from-external-options1"] +// cors: +// exposeHeaders: +// - header-from-extopt1 +// allowOrigin: +// - 'https://solo.io' +// // ``` // // ```yaml // apiVersion: gateway.solo.io/v1 // kind: RouteOption // metadata: -// name: route-external-options-2 -// namespace: opt-namespace +// +// name: route-external-options-2 +// namespace: opt-namespace +// // spec: -// options: -// headerManipulation: -// requestHeadersToRemove: "header-from-external-options2" -// corsPolicy: -// exposeHeaders: -// - header-from-extopt2 -// maxAge: 2s -// transformations: -// requestTransformation: -// transformationTemplate: -// headers: -// x-header-added-in-opt2: -// value: this header was added in the RouteOption object - #2 +// +// options: +// headerManipulation: +// requestHeadersToRemove: ["header-from-external-options2"] +// cors: +// exposeHeaders: +// - header-from-extopt2 +// maxAge: 2s +// allowOrigin: +// - 'https://solo.io' +// transformations: +// requestTransformation: +// transformationTemplate: +// headers: +// x-header-added-in-opt2: +// text: this header was added in the RouteOption object - #2 +// // ``` // // The final route options would bewould be: // ```yaml // routes: // - matchers: -// - prefix: / +// - prefix: / // options: -// # from Route options -// headerManipulation: -// requestHeadersToRemove: "header-from-route" -// # from delegated route-external-options-1 -// corsPolicy: -// exposeHeaders: -// - header-from-extopt1 -// # from delegated route-external-options-2 -// transformations: -// requestTransformation: -// transformationTemplate: -// headers: -// x-header-added-in-opt2: -// value: this header was added in the Route object - #2 +// # from Route options +// headerManipulation: +// requestHeadersToRemove: ["header-from-route"] +// # from delegated route-external-options-1 +// cors: +// exposeHeaders: +// - header-from-extopt1 +// allowOrigin: +// - 'https://solo.io' +// # from delegated route-external-options-2 +// transformations: +// requestTransformation: +// transformationTemplate: +// headers: +// x-header-added-in-opt2: +// text: this header was added in the Route object - #2 +// // ``` // // Notice how the order of RouteOption delegations matters, and that the Route-level option config overrides all delegated option configs. -type RouteOption struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Status indicates the validation status of this resource. - // Status is read-only by clients, and set by gloo during validation - Status *core.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` - // Metadata contains the object metadata for this resource - Metadata *core.Metadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` +type RouteOptionSpec struct { + state protoimpl.MessageState `protogen:"open.v1"` // Route options. See Route for delegation behavior. Options *v1.RouteOptions `protobuf:"bytes,3,opt,name=options,proto3" json:"options,omitempty"` + // When using Kubernetes Gateway API mode, targetRefs can be used to attach this RouteOption + // to a gateway.networking.k8s.io/HTTPRoute object. The `options` specified will then be used + // for all `Rules` in the `HTTPRoute`. + TargetRefs []*v11.PolicyTargetReference `protobuf:"bytes,5,rep,name=target_refs,json=targetRefs,proto3" json:"target_refs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *RouteOption) Reset() { - *x = RouteOption{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *RouteOptionSpec) Reset() { + *x = RouteOptionSpec{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *RouteOption) String() string { +func (x *RouteOptionSpec) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RouteOption) ProtoMessage() {} +func (*RouteOptionSpec) ProtoMessage() {} -func (x *RouteOption) ProtoReflect() protoreflect.Message { +func (x *RouteOptionSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -322,127 +576,994 @@ func (x *RouteOption) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RouteOption.ProtoReflect.Descriptor instead. -func (*RouteOption) Descriptor() ([]byte, []int) { +// Deprecated: Use RouteOptionSpec.ProtoReflect.Descriptor instead. +func (*RouteOptionSpec) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescGZIP(), []int{1} } -func (x *RouteOption) GetStatus() *core.Status { +func (x *RouteOptionSpec) GetOptions() *v1.RouteOptions { if x != nil { - return x.Status + return x.Options } return nil } -func (x *RouteOption) GetMetadata() *core.Metadata { +func (x *RouteOptionSpec) GetTargetRefs() []*v11.PolicyTargetReference { if x != nil { - return x.Metadata + return x.TargetRefs } return nil } -func (x *RouteOption) GetOptions() *v1.RouteOptions { +type ListenerOptionSpec struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Listener options + Options *v1.ListenerOptions `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` + // When using Kubernetes Gateway API mode, targetRefs can be used to attach this ListenerOption + // to a gateway.networking.k8s.io/Gateway object. The `options` specified will then be used + // for all `Listeners` in the `Gateway` unless `targetRef.sectionName` is specified. + TargetRefs []*v11.PolicyTargetReferenceWithSectionName `protobuf:"bytes,3,rep,name=target_refs,json=targetRefs,proto3" json:"target_refs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListenerOptionSpec) Reset() { + *x = ListenerOptionSpec{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListenerOptionSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListenerOptionSpec) ProtoMessage() {} + +func (x *ListenerOptionSpec) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListenerOptionSpec.ProtoReflect.Descriptor instead. +func (*ListenerOptionSpec) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescGZIP(), []int{2} +} + +func (x *ListenerOptionSpec) GetOptions() *v1.ListenerOptions { if x != nil { return x.Options } return nil } +func (x *ListenerOptionSpec) GetTargetRefs() []*v11.PolicyTargetReferenceWithSectionName { + if x != nil { + return x.TargetRefs + } + return nil +} + +type HttpListenerOptionSpec struct { + state protoimpl.MessageState `protogen:"open.v1"` + // HttpListener options + Options *v1.HttpListenerOptions `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` + // When using Kubernetes Gateway API mode, targetRef can be used to attach this VirtualHostOption + // to a gateway.networking.k8s.io/Gateway object. The `options` specified will then be used + // for all `Listeners` in the `Gateway` unless `targetRef.sectionName` is specified. + TargetRefs []*v11.PolicyTargetReferenceWithSectionName `protobuf:"bytes,3,rep,name=target_refs,json=targetRefs,proto3" json:"target_refs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HttpListenerOptionSpec) Reset() { + *x = HttpListenerOptionSpec{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HttpListenerOptionSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HttpListenerOptionSpec) ProtoMessage() {} + +func (x *HttpListenerOptionSpec) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HttpListenerOptionSpec.ProtoReflect.Descriptor instead. +func (*HttpListenerOptionSpec) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescGZIP(), []int{3} +} + +func (x *HttpListenerOptionSpec) GetOptions() *v1.HttpListenerOptions { + if x != nil { + return x.Options + } + return nil +} + +func (x *HttpListenerOptionSpec) GetTargetRefs() []*v11.PolicyTargetReferenceWithSectionName { + if x != nil { + return x.TargetRefs + } + return nil +} + +type HttpListenerOptionStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + // State is the enum indicating the state of the resource + State HttpListenerOptionStatus_State `protobuf:"varint,1,opt,name=state,proto3,enum=gateway.solo.io.HttpListenerOptionStatus_State" json:"state,omitempty"` + // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty + Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` + // Reference to the reporter who wrote this status + ReportedBy string `protobuf:"bytes,3,opt,name=reported_by,json=reportedBy,proto3" json:"reported_by,omitempty"` + // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource + SubresourceStatuses map[string]*HttpListenerOptionStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Opaque details about status results + Details *structpb.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HttpListenerOptionStatus) Reset() { + *x = HttpListenerOptionStatus{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HttpListenerOptionStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HttpListenerOptionStatus) ProtoMessage() {} + +func (x *HttpListenerOptionStatus) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HttpListenerOptionStatus.ProtoReflect.Descriptor instead. +func (*HttpListenerOptionStatus) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescGZIP(), []int{4} +} + +func (x *HttpListenerOptionStatus) GetState() HttpListenerOptionStatus_State { + if x != nil { + return x.State + } + return HttpListenerOptionStatus_Pending +} + +func (x *HttpListenerOptionStatus) GetReason() string { + if x != nil { + return x.Reason + } + return "" +} + +func (x *HttpListenerOptionStatus) GetReportedBy() string { + if x != nil { + return x.ReportedBy + } + return "" +} + +func (x *HttpListenerOptionStatus) GetSubresourceStatuses() map[string]*HttpListenerOptionStatus { + if x != nil { + return x.SubresourceStatuses + } + return nil +} + +func (x *HttpListenerOptionStatus) GetDetails() *structpb.Struct { + if x != nil { + return x.Details + } + return nil +} + +type HttpListenerOptionNamespacedStatuses struct { + state protoimpl.MessageState `protogen:"open.v1"` + Statuses map[string]*HttpListenerOptionStatus `protobuf:"bytes,1,rep,name=statuses,proto3" json:"statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HttpListenerOptionNamespacedStatuses) Reset() { + *x = HttpListenerOptionNamespacedStatuses{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HttpListenerOptionNamespacedStatuses) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HttpListenerOptionNamespacedStatuses) ProtoMessage() {} + +func (x *HttpListenerOptionNamespacedStatuses) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HttpListenerOptionNamespacedStatuses.ProtoReflect.Descriptor instead. +func (*HttpListenerOptionNamespacedStatuses) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescGZIP(), []int{5} +} + +func (x *HttpListenerOptionNamespacedStatuses) GetStatuses() map[string]*HttpListenerOptionStatus { + if x != nil { + return x.Statuses + } + return nil +} + +type ListenerOptionStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + // State is the enum indicating the state of the resource + State ListenerOptionStatus_State `protobuf:"varint,1,opt,name=state,proto3,enum=gateway.solo.io.ListenerOptionStatus_State" json:"state,omitempty"` + // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty + Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` + // Reference to the reporter who wrote this status + ReportedBy string `protobuf:"bytes,3,opt,name=reported_by,json=reportedBy,proto3" json:"reported_by,omitempty"` + // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource + SubresourceStatuses map[string]*ListenerOptionStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Opaque details about status results + Details *structpb.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListenerOptionStatus) Reset() { + *x = ListenerOptionStatus{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListenerOptionStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListenerOptionStatus) ProtoMessage() {} + +func (x *ListenerOptionStatus) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListenerOptionStatus.ProtoReflect.Descriptor instead. +func (*ListenerOptionStatus) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescGZIP(), []int{6} +} + +func (x *ListenerOptionStatus) GetState() ListenerOptionStatus_State { + if x != nil { + return x.State + } + return ListenerOptionStatus_Pending +} + +func (x *ListenerOptionStatus) GetReason() string { + if x != nil { + return x.Reason + } + return "" +} + +func (x *ListenerOptionStatus) GetReportedBy() string { + if x != nil { + return x.ReportedBy + } + return "" +} + +func (x *ListenerOptionStatus) GetSubresourceStatuses() map[string]*ListenerOptionStatus { + if x != nil { + return x.SubresourceStatuses + } + return nil +} + +func (x *ListenerOptionStatus) GetDetails() *structpb.Struct { + if x != nil { + return x.Details + } + return nil +} + +type ListenerOptionNamespacedStatuses struct { + state protoimpl.MessageState `protogen:"open.v1"` + Statuses map[string]*ListenerOptionStatus `protobuf:"bytes,1,rep,name=statuses,proto3" json:"statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListenerOptionNamespacedStatuses) Reset() { + *x = ListenerOptionNamespacedStatuses{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListenerOptionNamespacedStatuses) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListenerOptionNamespacedStatuses) ProtoMessage() {} + +func (x *ListenerOptionNamespacedStatuses) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListenerOptionNamespacedStatuses.ProtoReflect.Descriptor instead. +func (*ListenerOptionNamespacedStatuses) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescGZIP(), []int{7} +} + +func (x *ListenerOptionNamespacedStatuses) GetStatuses() map[string]*ListenerOptionStatus { + if x != nil { + return x.Statuses + } + return nil +} + +type RouteOptionStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + // State is the enum indicating the state of the resource + State RouteOptionStatus_State `protobuf:"varint,1,opt,name=state,proto3,enum=gateway.solo.io.RouteOptionStatus_State" json:"state,omitempty"` + // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty + Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` + // Reference to the reporter who wrote this status + ReportedBy string `protobuf:"bytes,3,opt,name=reported_by,json=reportedBy,proto3" json:"reported_by,omitempty"` + // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource + SubresourceStatuses map[string]*RouteOptionStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Opaque details about status results + Details *structpb.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RouteOptionStatus) Reset() { + *x = RouteOptionStatus{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RouteOptionStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RouteOptionStatus) ProtoMessage() {} + +func (x *RouteOptionStatus) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RouteOptionStatus.ProtoReflect.Descriptor instead. +func (*RouteOptionStatus) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescGZIP(), []int{8} +} + +func (x *RouteOptionStatus) GetState() RouteOptionStatus_State { + if x != nil { + return x.State + } + return RouteOptionStatus_Pending +} + +func (x *RouteOptionStatus) GetReason() string { + if x != nil { + return x.Reason + } + return "" +} + +func (x *RouteOptionStatus) GetReportedBy() string { + if x != nil { + return x.ReportedBy + } + return "" +} + +func (x *RouteOptionStatus) GetSubresourceStatuses() map[string]*RouteOptionStatus { + if x != nil { + return x.SubresourceStatuses + } + return nil +} + +func (x *RouteOptionStatus) GetDetails() *structpb.Struct { + if x != nil { + return x.Details + } + return nil +} + +type RouteOptionNamespacedStatuses struct { + state protoimpl.MessageState `protogen:"open.v1"` + Statuses map[string]*RouteOptionStatus `protobuf:"bytes,1,rep,name=statuses,proto3" json:"statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RouteOptionNamespacedStatuses) Reset() { + *x = RouteOptionNamespacedStatuses{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RouteOptionNamespacedStatuses) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RouteOptionNamespacedStatuses) ProtoMessage() {} + +func (x *RouteOptionNamespacedStatuses) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RouteOptionNamespacedStatuses.ProtoReflect.Descriptor instead. +func (*RouteOptionNamespacedStatuses) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescGZIP(), []int{9} +} + +func (x *RouteOptionNamespacedStatuses) GetStatuses() map[string]*RouteOptionStatus { + if x != nil { + return x.Statuses + } + return nil +} + +type VirtualHostOptionStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + // State is the enum indicating the state of the resource + State VirtualHostOptionStatus_State `protobuf:"varint,1,opt,name=state,proto3,enum=gateway.solo.io.VirtualHostOptionStatus_State" json:"state,omitempty"` + // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty + Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` + // Reference to the reporter who wrote this status + ReportedBy string `protobuf:"bytes,3,opt,name=reported_by,json=reportedBy,proto3" json:"reported_by,omitempty"` + // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource + SubresourceStatuses map[string]*VirtualHostOptionStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Opaque details about status results + Details *structpb.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VirtualHostOptionStatus) Reset() { + *x = VirtualHostOptionStatus{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VirtualHostOptionStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VirtualHostOptionStatus) ProtoMessage() {} + +func (x *VirtualHostOptionStatus) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VirtualHostOptionStatus.ProtoReflect.Descriptor instead. +func (*VirtualHostOptionStatus) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescGZIP(), []int{10} +} + +func (x *VirtualHostOptionStatus) GetState() VirtualHostOptionStatus_State { + if x != nil { + return x.State + } + return VirtualHostOptionStatus_Pending +} + +func (x *VirtualHostOptionStatus) GetReason() string { + if x != nil { + return x.Reason + } + return "" +} + +func (x *VirtualHostOptionStatus) GetReportedBy() string { + if x != nil { + return x.ReportedBy + } + return "" +} + +func (x *VirtualHostOptionStatus) GetSubresourceStatuses() map[string]*VirtualHostOptionStatus { + if x != nil { + return x.SubresourceStatuses + } + return nil +} + +func (x *VirtualHostOptionStatus) GetDetails() *structpb.Struct { + if x != nil { + return x.Details + } + return nil +} + +type VirtualHostOptionNamespacedStatuses struct { + state protoimpl.MessageState `protogen:"open.v1"` + Statuses map[string]*VirtualHostOptionStatus `protobuf:"bytes,1,rep,name=statuses,proto3" json:"statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VirtualHostOptionNamespacedStatuses) Reset() { + *x = VirtualHostOptionNamespacedStatuses{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VirtualHostOptionNamespacedStatuses) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VirtualHostOptionNamespacedStatuses) ProtoMessage() {} + +func (x *VirtualHostOptionNamespacedStatuses) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VirtualHostOptionNamespacedStatuses.ProtoReflect.Descriptor instead. +func (*VirtualHostOptionNamespacedStatuses) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescGZIP(), []int{11} +} + +func (x *VirtualHostOptionNamespacedStatuses) GetStatuses() map[string]*VirtualHostOptionStatus { + if x != nil { + return x.Statuses + } + return nil +} + var File_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDesc = string([]byte{ 0x0a, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x31, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, + 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2f, 0x72, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x31, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x49, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, - 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0xdf, 0x01, 0x0a, 0x11, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x04, 0xb8, 0xf5, - 0x04, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x32, 0x0a, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3a, - 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, - 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x26, 0x82, 0xf1, 0x04, 0x08, - 0x0a, 0x06, 0x76, 0x68, 0x6f, 0x70, 0x74, 0x73, 0x82, 0xf1, 0x04, 0x16, 0x12, 0x14, 0x76, 0x69, + 0x76, 0x31, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, + 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x48, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0xcc, 0x01, 0x0a, 0x0b, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x04, 0xb8, 0xf5, 0x04, 0x01, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x32, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x0a, 0x07, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x3a, 0x1f, 0x82, 0xf1, 0x04, 0x08, 0x0a, 0x06, 0x72, 0x74, 0x6f, 0x70, 0x74, 0x73, 0x82, 0xf1, - 0x04, 0x0f, 0x12, 0x0d, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x42, 0x41, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, - 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0xc0, 0xf5, 0x04, 0x01, - 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, + 0x73, 0x6b, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, + 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb3, 0x01, 0x0a, 0x15, + 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3a, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, + 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x58, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, + 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x57, 0x69, 0x74, 0x68, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x52, + 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, + 0x02, 0x22, 0x98, 0x01, 0x0a, 0x0f, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x34, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x49, 0x0a, 0x0b, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x52, 0x65, 0x66, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0xa7, 0x01, 0x0a, + 0x12, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x70, 0x65, 0x63, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x0b, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x57, 0x69, 0x74, 0x68, 0x53, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x52, 0x65, 0x66, 0x73, 0x22, 0xaf, 0x01, 0x0a, 0x16, 0x48, 0x74, 0x74, 0x70, 0x4c, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, + 0x63, 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, + 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x57, 0x69, 0x74, + 0x68, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x73, 0x22, 0xf6, 0x03, 0x0a, 0x18, 0x48, 0x74, 0x74, + 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x45, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x75, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, + 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x07, + 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, + 0x71, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3f, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, + 0x74, 0x74, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, + 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, + 0x03, 0x22, 0xef, 0x01, 0x0a, 0x24, 0x48, 0x74, 0x74, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x5f, 0x0a, 0x08, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, + 0x74, 0x74, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, 0x66, 0x0a, 0x0d, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3f, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x48, 0x74, 0x74, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0xe6, 0x03, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x41, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x71, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, + 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x75, + 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x6d, + 0x0a, 0x18, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, + 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, + 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x10, 0x02, 0x12, + 0x0b, 0x0a, 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x22, 0xe3, 0x01, 0x0a, + 0x20, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, + 0x73, 0x12, 0x5b, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, 0x62, + 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0xda, 0x03, 0x0a, 0x11, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3e, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, + 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, + 0x79, 0x12, 0x6e, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x3b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x73, 0x75, + 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, + 0x73, 0x12, 0x31, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x6a, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x38, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x3d, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x65, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, + 0x65, 0x64, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x22, + 0xda, 0x01, 0x0a, 0x1d, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, + 0x73, 0x12, 0x58, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, 0x5f, 0x0a, 0x0d, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x38, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf2, 0x03, 0x0a, + 0x17, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x44, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, + 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x74, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, + 0x6f, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, + 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x31, 0x0a, + 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x1a, 0x70, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3e, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, + 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, + 0x03, 0x22, 0xec, 0x01, 0x0a, 0x23, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, + 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x5e, 0x0a, 0x08, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, + 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, + 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, 0x65, 0x0a, 0x0d, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3e, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, + 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x42, 0x45, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x37, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_goTypes = []interface{}{ - (*VirtualHostOption)(nil), // 0: gateway.solo.io.VirtualHostOption - (*RouteOption)(nil), // 1: gateway.solo.io.RouteOption - (*core.Status)(nil), // 2: core.solo.io.Status - (*core.Metadata)(nil), // 3: core.solo.io.Metadata - (*v1.VirtualHostOptions)(nil), // 4: gloo.solo.io.VirtualHostOptions - (*v1.RouteOptions)(nil), // 5: gloo.solo.io.RouteOptions +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes = make([]protoimpl.MessageInfo, 20) +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_goTypes = []any{ + (HttpListenerOptionStatus_State)(0), // 0: gateway.solo.io.HttpListenerOptionStatus.State + (ListenerOptionStatus_State)(0), // 1: gateway.solo.io.ListenerOptionStatus.State + (RouteOptionStatus_State)(0), // 2: gateway.solo.io.RouteOptionStatus.State + (VirtualHostOptionStatus_State)(0), // 3: gateway.solo.io.VirtualHostOptionStatus.State + (*VirtualHostOptionSpec)(nil), // 4: gateway.solo.io.VirtualHostOptionSpec + (*RouteOptionSpec)(nil), // 5: gateway.solo.io.RouteOptionSpec + (*ListenerOptionSpec)(nil), // 6: gateway.solo.io.ListenerOptionSpec + (*HttpListenerOptionSpec)(nil), // 7: gateway.solo.io.HttpListenerOptionSpec + (*HttpListenerOptionStatus)(nil), // 8: gateway.solo.io.HttpListenerOptionStatus + (*HttpListenerOptionNamespacedStatuses)(nil), // 9: gateway.solo.io.HttpListenerOptionNamespacedStatuses + (*ListenerOptionStatus)(nil), // 10: gateway.solo.io.ListenerOptionStatus + (*ListenerOptionNamespacedStatuses)(nil), // 11: gateway.solo.io.ListenerOptionNamespacedStatuses + (*RouteOptionStatus)(nil), // 12: gateway.solo.io.RouteOptionStatus + (*RouteOptionNamespacedStatuses)(nil), // 13: gateway.solo.io.RouteOptionNamespacedStatuses + (*VirtualHostOptionStatus)(nil), // 14: gateway.solo.io.VirtualHostOptionStatus + (*VirtualHostOptionNamespacedStatuses)(nil), // 15: gateway.solo.io.VirtualHostOptionNamespacedStatuses + nil, // 16: gateway.solo.io.HttpListenerOptionStatus.SubresourceStatusesEntry + nil, // 17: gateway.solo.io.HttpListenerOptionNamespacedStatuses.StatusesEntry + nil, // 18: gateway.solo.io.ListenerOptionStatus.SubresourceStatusesEntry + nil, // 19: gateway.solo.io.ListenerOptionNamespacedStatuses.StatusesEntry + nil, // 20: gateway.solo.io.RouteOptionStatus.SubresourceStatusesEntry + nil, // 21: gateway.solo.io.RouteOptionNamespacedStatuses.StatusesEntry + nil, // 22: gateway.solo.io.VirtualHostOptionStatus.SubresourceStatusesEntry + nil, // 23: gateway.solo.io.VirtualHostOptionNamespacedStatuses.StatusesEntry + (*v1.VirtualHostOptions)(nil), // 24: gloo.solo.io.VirtualHostOptions + (*v11.PolicyTargetReferenceWithSectionName)(nil), // 25: core.skv2.solo.io.PolicyTargetReferenceWithSectionName + (*v1.RouteOptions)(nil), // 26: gloo.solo.io.RouteOptions + (*v11.PolicyTargetReference)(nil), // 27: core.skv2.solo.io.PolicyTargetReference + (*v1.ListenerOptions)(nil), // 28: gloo.solo.io.ListenerOptions + (*v1.HttpListenerOptions)(nil), // 29: gloo.solo.io.HttpListenerOptions + (*structpb.Struct)(nil), // 30: google.protobuf.Struct } var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_depIdxs = []int32{ - 2, // 0: gateway.solo.io.VirtualHostOption.status:type_name -> core.solo.io.Status - 3, // 1: gateway.solo.io.VirtualHostOption.metadata:type_name -> core.solo.io.Metadata - 4, // 2: gateway.solo.io.VirtualHostOption.options:type_name -> gloo.solo.io.VirtualHostOptions - 2, // 3: gateway.solo.io.RouteOption.status:type_name -> core.solo.io.Status - 3, // 4: gateway.solo.io.RouteOption.metadata:type_name -> core.solo.io.Metadata - 5, // 5: gateway.solo.io.RouteOption.options:type_name -> gloo.solo.io.RouteOptions - 6, // [6:6] is the sub-list for method output_type - 6, // [6:6] is the sub-list for method input_type - 6, // [6:6] is the sub-list for extension type_name - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name + 24, // 0: gateway.solo.io.VirtualHostOptionSpec.options:type_name -> gloo.solo.io.VirtualHostOptions + 25, // 1: gateway.solo.io.VirtualHostOptionSpec.target_refs:type_name -> core.skv2.solo.io.PolicyTargetReferenceWithSectionName + 26, // 2: gateway.solo.io.RouteOptionSpec.options:type_name -> gloo.solo.io.RouteOptions + 27, // 3: gateway.solo.io.RouteOptionSpec.target_refs:type_name -> core.skv2.solo.io.PolicyTargetReference + 28, // 4: gateway.solo.io.ListenerOptionSpec.options:type_name -> gloo.solo.io.ListenerOptions + 25, // 5: gateway.solo.io.ListenerOptionSpec.target_refs:type_name -> core.skv2.solo.io.PolicyTargetReferenceWithSectionName + 29, // 6: gateway.solo.io.HttpListenerOptionSpec.options:type_name -> gloo.solo.io.HttpListenerOptions + 25, // 7: gateway.solo.io.HttpListenerOptionSpec.target_refs:type_name -> core.skv2.solo.io.PolicyTargetReferenceWithSectionName + 0, // 8: gateway.solo.io.HttpListenerOptionStatus.state:type_name -> gateway.solo.io.HttpListenerOptionStatus.State + 16, // 9: gateway.solo.io.HttpListenerOptionStatus.subresource_statuses:type_name -> gateway.solo.io.HttpListenerOptionStatus.SubresourceStatusesEntry + 30, // 10: gateway.solo.io.HttpListenerOptionStatus.details:type_name -> google.protobuf.Struct + 17, // 11: gateway.solo.io.HttpListenerOptionNamespacedStatuses.statuses:type_name -> gateway.solo.io.HttpListenerOptionNamespacedStatuses.StatusesEntry + 1, // 12: gateway.solo.io.ListenerOptionStatus.state:type_name -> gateway.solo.io.ListenerOptionStatus.State + 18, // 13: gateway.solo.io.ListenerOptionStatus.subresource_statuses:type_name -> gateway.solo.io.ListenerOptionStatus.SubresourceStatusesEntry + 30, // 14: gateway.solo.io.ListenerOptionStatus.details:type_name -> google.protobuf.Struct + 19, // 15: gateway.solo.io.ListenerOptionNamespacedStatuses.statuses:type_name -> gateway.solo.io.ListenerOptionNamespacedStatuses.StatusesEntry + 2, // 16: gateway.solo.io.RouteOptionStatus.state:type_name -> gateway.solo.io.RouteOptionStatus.State + 20, // 17: gateway.solo.io.RouteOptionStatus.subresource_statuses:type_name -> gateway.solo.io.RouteOptionStatus.SubresourceStatusesEntry + 30, // 18: gateway.solo.io.RouteOptionStatus.details:type_name -> google.protobuf.Struct + 21, // 19: gateway.solo.io.RouteOptionNamespacedStatuses.statuses:type_name -> gateway.solo.io.RouteOptionNamespacedStatuses.StatusesEntry + 3, // 20: gateway.solo.io.VirtualHostOptionStatus.state:type_name -> gateway.solo.io.VirtualHostOptionStatus.State + 22, // 21: gateway.solo.io.VirtualHostOptionStatus.subresource_statuses:type_name -> gateway.solo.io.VirtualHostOptionStatus.SubresourceStatusesEntry + 30, // 22: gateway.solo.io.VirtualHostOptionStatus.details:type_name -> google.protobuf.Struct + 23, // 23: gateway.solo.io.VirtualHostOptionNamespacedStatuses.statuses:type_name -> gateway.solo.io.VirtualHostOptionNamespacedStatuses.StatusesEntry + 8, // 24: gateway.solo.io.HttpListenerOptionStatus.SubresourceStatusesEntry.value:type_name -> gateway.solo.io.HttpListenerOptionStatus + 8, // 25: gateway.solo.io.HttpListenerOptionNamespacedStatuses.StatusesEntry.value:type_name -> gateway.solo.io.HttpListenerOptionStatus + 10, // 26: gateway.solo.io.ListenerOptionStatus.SubresourceStatusesEntry.value:type_name -> gateway.solo.io.ListenerOptionStatus + 10, // 27: gateway.solo.io.ListenerOptionNamespacedStatuses.StatusesEntry.value:type_name -> gateway.solo.io.ListenerOptionStatus + 12, // 28: gateway.solo.io.RouteOptionStatus.SubresourceStatusesEntry.value:type_name -> gateway.solo.io.RouteOptionStatus + 12, // 29: gateway.solo.io.RouteOptionNamespacedStatuses.StatusesEntry.value:type_name -> gateway.solo.io.RouteOptionStatus + 14, // 30: gateway.solo.io.VirtualHostOptionStatus.SubresourceStatusesEntry.value:type_name -> gateway.solo.io.VirtualHostOptionStatus + 14, // 31: gateway.solo.io.VirtualHostOptionNamespacedStatuses.StatusesEntry.value:type_name -> gateway.solo.io.VirtualHostOptionStatus + 32, // [32:32] is the sub-list for method output_type + 32, // [32:32] is the sub-list for method input_type + 32, // [32:32] is the sub-list for extension type_name + 32, // [32:32] is the sub-list for extension extendee + 0, // [0:32] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_init() } @@ -450,48 +1571,22 @@ func file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_prot if File_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VirtualHostOption); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteOption); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDesc, - NumEnums: 0, - NumMessages: 2, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDesc)), + NumEnums: 4, + NumMessages: 20, NumExtensions: 0, NumServices: 0, }, GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_goTypes, DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_enumTypes, MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_external_options_proto_depIdxs = nil } diff --git a/pkg/api/gateway.solo.io/v1/external_options.pb.hash.go b/pkg/api/gateway.solo.io/v1/external_options.pb.hash.go index b2f5d7ffc..5f1c57003 100644 --- a/pkg/api/gateway.solo.io/v1/external_options.pb.hash.go +++ b/pkg/api/gateway.solo.io/v1/external_options.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,7 +26,11 @@ var ( ) // Hash function -func (m *VirtualHostOption) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *VirtualHostOptionSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -34,43 +38,127 @@ func (m *VirtualHostOption) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.VirtualHostOption")); err != nil { + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.VirtualHostOptionSpec")); err != nil { return 0, err } - if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } + for _, v := range m.GetTargetRefs() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RouteOptionSpec) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.RouteOptionSpec")); err != nil { + return 0, err + } + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } + for _, v := range m.GetTargetRefs() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + return hasher.Sum64(), nil } // Hash function -func (m *RouteOption) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ListenerOptionSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -78,33 +166,507 @@ func (m *RouteOption) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.RouteOption")); err != nil { + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.ListenerOptionSpec")); err != nil { return 0, err } - if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Options")); err != nil { return 0, err } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetTargetRefs() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HttpListenerOptionSpec) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.HttpListenerOptionSpec")); err != nil { + return 0, err } if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetTargetRefs() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HttpListenerOptionStatus) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.HttpListenerOptionStatus")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HttpListenerOptionNamespacedStatuses) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.HttpListenerOptionNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ListenerOptionStatus) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.ListenerOptionStatus")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ListenerOptionNamespacedStatuses) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.ListenerOptionNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RouteOptionStatus) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.RouteOptionStatus")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -112,3 +674,213 @@ func (m *RouteOption) Hash(hasher hash.Hash64) (uint64, error) { return hasher.Sum64(), nil } + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RouteOptionNamespacedStatuses) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.RouteOptionNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *VirtualHostOptionStatus) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.VirtualHostOptionStatus")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *VirtualHostOptionNamespacedStatuses) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.VirtualHostOptionNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gateway.solo.io/v1/external_options.pb.uniquehash.go b/pkg/api/gateway.solo.io/v1/external_options.pb.uniquehash.go new file mode 100644 index 000000000..76ed45d50 --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/external_options.pb.uniquehash.go @@ -0,0 +1,960 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/external_options.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *VirtualHostOptionSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.VirtualHostOptionSpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("TargetRefs")); err != nil { + return 0, err + } + for i, v := range m.GetTargetRefs() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteOptionSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.RouteOptionSpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("TargetRefs")); err != nil { + return 0, err + } + for i, v := range m.GetTargetRefs() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ListenerOptionSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.ListenerOptionSpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("TargetRefs")); err != nil { + return 0, err + } + for i, v := range m.GetTargetRefs() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HttpListenerOptionSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.HttpListenerOptionSpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("TargetRefs")); err != nil { + return 0, err + } + for i, v := range m.GetTargetRefs() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HttpListenerOptionStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.HttpListenerOptionStatus")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("State")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Reason")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ReportedBy")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HttpListenerOptionNamespacedStatuses) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.HttpListenerOptionNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ListenerOptionStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.ListenerOptionStatus")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("State")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Reason")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ReportedBy")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ListenerOptionNamespacedStatuses) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.ListenerOptionNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteOptionStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.RouteOptionStatus")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("State")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Reason")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ReportedBy")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteOptionNamespacedStatuses) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.RouteOptionNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *VirtualHostOptionStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.VirtualHostOptionStatus")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("State")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Reason")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ReportedBy")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *VirtualHostOptionNamespacedStatuses) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.VirtualHostOptionNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gateway.solo.io/v1/gateway.pb.clone.go b/pkg/api/gateway.solo.io/v1/gateway.pb.clone.go new file mode 100644 index 000000000..ddf18ddd1 --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/gateway.pb.clone.go @@ -0,0 +1,428 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/gateway.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_core_selectors "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/core/selectors" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_hcm "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/hcm" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *GatewaySpec) Clone() proto.Message { + var target *GatewaySpec + if m == nil { + return target + } + target = &GatewaySpec{} + + target.Ssl = m.GetSsl() + + target.BindAddress = m.GetBindAddress() + + target.BindPort = m.GetBindPort() + + if h, ok := interface{}(m.GetOptions()).(clone.Cloner); ok { + target.Options = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.ListenerOptions) + } else { + target.Options = proto.Clone(m.GetOptions()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.ListenerOptions) + } + + if h, ok := interface{}(m.GetUseProxyProto()).(clone.Cloner); ok { + target.UseProxyProto = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.UseProxyProto = proto.Clone(m.GetUseProxyProto()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if m.GetProxyNames() != nil { + target.ProxyNames = make([]string, len(m.GetProxyNames())) + for idx, v := range m.GetProxyNames() { + + target.ProxyNames[idx] = v + + } + } + + if h, ok := interface{}(m.GetRouteOptions()).(clone.Cloner); ok { + target.RouteOptions = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.RouteConfigurationOptions) + } else { + target.RouteOptions = proto.Clone(m.GetRouteOptions()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.RouteConfigurationOptions) + } + + switch m.GatewayType.(type) { + + case *GatewaySpec_HttpGateway: + + if h, ok := interface{}(m.GetHttpGateway()).(clone.Cloner); ok { + target.GatewayType = &GatewaySpec_HttpGateway{ + HttpGateway: h.Clone().(*HttpGateway), + } + } else { + target.GatewayType = &GatewaySpec_HttpGateway{ + HttpGateway: proto.Clone(m.GetHttpGateway()).(*HttpGateway), + } + } + + case *GatewaySpec_TcpGateway: + + if h, ok := interface{}(m.GetTcpGateway()).(clone.Cloner); ok { + target.GatewayType = &GatewaySpec_TcpGateway{ + TcpGateway: h.Clone().(*TcpGateway), + } + } else { + target.GatewayType = &GatewaySpec_TcpGateway{ + TcpGateway: proto.Clone(m.GetTcpGateway()).(*TcpGateway), + } + } + + case *GatewaySpec_HybridGateway: + + if h, ok := interface{}(m.GetHybridGateway()).(clone.Cloner); ok { + target.GatewayType = &GatewaySpec_HybridGateway{ + HybridGateway: h.Clone().(*HybridGateway), + } + } else { + target.GatewayType = &GatewaySpec_HybridGateway{ + HybridGateway: proto.Clone(m.GetHybridGateway()).(*HybridGateway), + } + } + + } + + return target +} + +// Clone function +func (m *TcpGateway) Clone() proto.Message { + var target *TcpGateway + if m == nil { + return target + } + target = &TcpGateway{} + + if m.GetTcpHosts() != nil { + target.TcpHosts = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.TcpHost, len(m.GetTcpHosts())) + for idx, v := range m.GetTcpHosts() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.TcpHosts[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.TcpHost) + } else { + target.TcpHosts[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.TcpHost) + } + + } + } + + if h, ok := interface{}(m.GetOptions()).(clone.Cloner); ok { + target.Options = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.TcpListenerOptions) + } else { + target.Options = proto.Clone(m.GetOptions()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.TcpListenerOptions) + } + + return target +} + +// Clone function +func (m *HybridGateway) Clone() proto.Message { + var target *HybridGateway + if m == nil { + return target + } + target = &HybridGateway{} + + if m.GetMatchedGateways() != nil { + target.MatchedGateways = make([]*MatchedGateway, len(m.GetMatchedGateways())) + for idx, v := range m.GetMatchedGateways() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.MatchedGateways[idx] = h.Clone().(*MatchedGateway) + } else { + target.MatchedGateways[idx] = proto.Clone(v).(*MatchedGateway) + } + + } + } + + if h, ok := interface{}(m.GetDelegatedHttpGateways()).(clone.Cloner); ok { + target.DelegatedHttpGateways = h.Clone().(*DelegatedHttpGateway) + } else { + target.DelegatedHttpGateways = proto.Clone(m.GetDelegatedHttpGateways()).(*DelegatedHttpGateway) + } + + if h, ok := interface{}(m.GetDelegatedTcpGateways()).(clone.Cloner); ok { + target.DelegatedTcpGateways = h.Clone().(*DelegatedTcpGateway) + } else { + target.DelegatedTcpGateways = proto.Clone(m.GetDelegatedTcpGateways()).(*DelegatedTcpGateway) + } + + return target +} + +// Clone function +func (m *DelegatedHttpGateway) Clone() proto.Message { + var target *DelegatedHttpGateway + if m == nil { + return target + } + target = &DelegatedHttpGateway{} + + target.PreventChildOverrides = m.GetPreventChildOverrides() + + if h, ok := interface{}(m.GetHttpConnectionManagerSettings()).(clone.Cloner); ok { + target.HttpConnectionManagerSettings = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_hcm.HttpConnectionManagerSettings) + } else { + target.HttpConnectionManagerSettings = proto.Clone(m.GetHttpConnectionManagerSettings()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_hcm.HttpConnectionManagerSettings) + } + + if h, ok := interface{}(m.GetSslConfig()).(clone.Cloner); ok { + target.SslConfig = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.SslConfig) + } else { + target.SslConfig = proto.Clone(m.GetSslConfig()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.SslConfig) + } + + switch m.SelectionType.(type) { + + case *DelegatedHttpGateway_Ref: + + if h, ok := interface{}(m.GetRef()).(clone.Cloner); ok { + target.SelectionType = &DelegatedHttpGateway_Ref{ + Ref: h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } else { + target.SelectionType = &DelegatedHttpGateway_Ref{ + Ref: proto.Clone(m.GetRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } + + case *DelegatedHttpGateway_Selector: + + if h, ok := interface{}(m.GetSelector()).(clone.Cloner); ok { + target.SelectionType = &DelegatedHttpGateway_Selector{ + Selector: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_core_selectors.Selector), + } + } else { + target.SelectionType = &DelegatedHttpGateway_Selector{ + Selector: proto.Clone(m.GetSelector()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_core_selectors.Selector), + } + } + + } + + return target +} + +// Clone function +func (m *DelegatedTcpGateway) Clone() proto.Message { + var target *DelegatedTcpGateway + if m == nil { + return target + } + target = &DelegatedTcpGateway{} + + switch m.SelectionType.(type) { + + case *DelegatedTcpGateway_Ref: + + if h, ok := interface{}(m.GetRef()).(clone.Cloner); ok { + target.SelectionType = &DelegatedTcpGateway_Ref{ + Ref: h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } else { + target.SelectionType = &DelegatedTcpGateway_Ref{ + Ref: proto.Clone(m.GetRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } + + case *DelegatedTcpGateway_Selector: + + if h, ok := interface{}(m.GetSelector()).(clone.Cloner); ok { + target.SelectionType = &DelegatedTcpGateway_Selector{ + Selector: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_core_selectors.Selector), + } + } else { + target.SelectionType = &DelegatedTcpGateway_Selector{ + Selector: proto.Clone(m.GetSelector()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_core_selectors.Selector), + } + } + + } + + return target +} + +// Clone function +func (m *MatchedGateway) Clone() proto.Message { + var target *MatchedGateway + if m == nil { + return target + } + target = &MatchedGateway{} + + if h, ok := interface{}(m.GetMatcher()).(clone.Cloner); ok { + target.Matcher = h.Clone().(*Matcher) + } else { + target.Matcher = proto.Clone(m.GetMatcher()).(*Matcher) + } + + switch m.GatewayType.(type) { + + case *MatchedGateway_HttpGateway: + + if h, ok := interface{}(m.GetHttpGateway()).(clone.Cloner); ok { + target.GatewayType = &MatchedGateway_HttpGateway{ + HttpGateway: h.Clone().(*HttpGateway), + } + } else { + target.GatewayType = &MatchedGateway_HttpGateway{ + HttpGateway: proto.Clone(m.GetHttpGateway()).(*HttpGateway), + } + } + + case *MatchedGateway_TcpGateway: + + if h, ok := interface{}(m.GetTcpGateway()).(clone.Cloner); ok { + target.GatewayType = &MatchedGateway_TcpGateway{ + TcpGateway: h.Clone().(*TcpGateway), + } + } else { + target.GatewayType = &MatchedGateway_TcpGateway{ + TcpGateway: proto.Clone(m.GetTcpGateway()).(*TcpGateway), + } + } + + } + + return target +} + +// Clone function +func (m *Matcher) Clone() proto.Message { + var target *Matcher + if m == nil { + return target + } + target = &Matcher{} + + if h, ok := interface{}(m.GetSslConfig()).(clone.Cloner); ok { + target.SslConfig = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.SslConfig) + } else { + target.SslConfig = proto.Clone(m.GetSslConfig()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.SslConfig) + } + + if m.GetSourcePrefixRanges() != nil { + target.SourcePrefixRanges = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.CidrRange, len(m.GetSourcePrefixRanges())) + for idx, v := range m.GetSourcePrefixRanges() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SourcePrefixRanges[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.CidrRange) + } else { + target.SourcePrefixRanges[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.CidrRange) + } + + } + } + + if m.GetPassthroughCipherSuites() != nil { + target.PassthroughCipherSuites = make([]string, len(m.GetPassthroughCipherSuites())) + for idx, v := range m.GetPassthroughCipherSuites() { + + target.PassthroughCipherSuites[idx] = v + + } + } + + return target +} + +// Clone function +func (m *GatewayStatus) Clone() proto.Message { + var target *GatewayStatus + if m == nil { + return target + } + target = &GatewayStatus{} + + target.State = m.GetState() + + target.Reason = m.GetReason() + + target.ReportedBy = m.GetReportedBy() + + if m.GetSubresourceStatuses() != nil { + target.SubresourceStatuses = make(map[string]*GatewayStatus, len(m.GetSubresourceStatuses())) + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SubresourceStatuses[k] = h.Clone().(*GatewayStatus) + } else { + target.SubresourceStatuses[k] = proto.Clone(v).(*GatewayStatus) + } + + } + } + + if h, ok := interface{}(m.GetDetails()).(clone.Cloner); ok { + target.Details = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Details = proto.Clone(m.GetDetails()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + return target +} + +// Clone function +func (m *GatewayNamespacedStatuses) Clone() proto.Message { + var target *GatewayNamespacedStatuses + if m == nil { + return target + } + target = &GatewayNamespacedStatuses{} + + if m.GetStatuses() != nil { + target.Statuses = make(map[string]*GatewayStatus, len(m.GetStatuses())) + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Statuses[k] = h.Clone().(*GatewayStatus) + } else { + target.Statuses[k] = proto.Clone(v).(*GatewayStatus) + } + + } + } + + return target +} diff --git a/pkg/api/gateway.solo.io/v1/gateway.pb.equal.go b/pkg/api/gateway.solo.io/v1/gateway.pb.equal.go index 9e6bfaa59..db82dfe98 100644 --- a/pkg/api/gateway.solo.io/v1/gateway.pb.equal.go +++ b/pkg/api/gateway.solo.io/v1/gateway.pb.equal.go @@ -102,6 +102,9 @@ func (m *GatewaySpec) Equal(that interface{}) bool { switch m.GatewayType.(type) { case *GatewaySpec_HttpGateway: + if _, ok := target.GatewayType.(*GatewaySpec_HttpGateway); !ok { + return false + } if h, ok := interface{}(m.GetHttpGateway()).(equality.Equalizer); ok { if !h.Equal(target.GetHttpGateway()) { @@ -114,6 +117,9 @@ func (m *GatewaySpec) Equal(that interface{}) bool { } case *GatewaySpec_TcpGateway: + if _, ok := target.GatewayType.(*GatewaySpec_TcpGateway); !ok { + return false + } if h, ok := interface{}(m.GetTcpGateway()).(equality.Equalizer); ok { if !h.Equal(target.GetTcpGateway()) { @@ -125,20 +131,40 @@ func (m *GatewaySpec) Equal(that interface{}) bool { } } + case *GatewaySpec_HybridGateway: + if _, ok := target.GatewayType.(*GatewaySpec_HybridGateway); !ok { + return false + } + + if h, ok := interface{}(m.GetHybridGateway()).(equality.Equalizer); ok { + if !h.Equal(target.GetHybridGateway()) { + return false + } + } else { + if !proto.Equal(m.GetHybridGateway(), target.GetHybridGateway()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.GatewayType != target.GatewayType { + return false + } } return true } // Equal function -func (m *HttpGateway) Equal(that interface{}) bool { +func (m *TcpGateway) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*HttpGateway) + target, ok := that.(*TcpGateway) if !ok { - that2, ok := that.(HttpGateway) + that2, ok := that.(TcpGateway) if ok { target = &that2 } else { @@ -151,61 +177,177 @@ func (m *HttpGateway) Equal(that interface{}) bool { return false } - if len(m.GetVirtualServices()) != len(target.GetVirtualServices()) { + if len(m.GetTcpHosts()) != len(target.GetTcpHosts()) { return false } - for idx, v := range m.GetVirtualServices() { + for idx, v := range m.GetTcpHosts() { if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetVirtualServices()[idx]) { + if !h.Equal(target.GetTcpHosts()[idx]) { return false } } else { - if !proto.Equal(v, target.GetVirtualServices()[idx]) { + if !proto.Equal(v, target.GetTcpHosts()[idx]) { return false } } } - if len(m.GetVirtualServiceSelector()) != len(target.GetVirtualServiceSelector()) { - return false + if h, ok := interface{}(m.GetOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetOptions()) { + return false + } + } else { + if !proto.Equal(m.GetOptions(), target.GetOptions()) { + return false + } } - for k, v := range m.GetVirtualServiceSelector() { - if strings.Compare(v, target.GetVirtualServiceSelector()[k]) != 0 { + return true +} + +// Equal function +func (m *HybridGateway) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HybridGateway) + if !ok { + that2, ok := that.(HybridGateway) + if ok { + target = &that2 + } else { return false } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + if len(m.GetMatchedGateways()) != len(target.GetMatchedGateways()) { + return false } + for idx, v := range m.GetMatchedGateways() { - if h, ok := interface{}(m.GetVirtualServiceExpressions()).(equality.Equalizer); ok { - if !h.Equal(target.GetVirtualServiceExpressions()) { + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetMatchedGateways()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetMatchedGateways()[idx]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetDelegatedHttpGateways()).(equality.Equalizer); ok { + if !h.Equal(target.GetDelegatedHttpGateways()) { return false } } else { - if !proto.Equal(m.GetVirtualServiceExpressions(), target.GetVirtualServiceExpressions()) { + if !proto.Equal(m.GetDelegatedHttpGateways(), target.GetDelegatedHttpGateways()) { return false } } - if len(m.GetVirtualServiceNamespaces()) != len(target.GetVirtualServiceNamespaces()) { - return false + if h, ok := interface{}(m.GetDelegatedTcpGateways()).(equality.Equalizer); ok { + if !h.Equal(target.GetDelegatedTcpGateways()) { + return false + } + } else { + if !proto.Equal(m.GetDelegatedTcpGateways(), target.GetDelegatedTcpGateways()) { + return false + } } - for idx, v := range m.GetVirtualServiceNamespaces() { - if strings.Compare(v, target.GetVirtualServiceNamespaces()[idx]) != 0 { + return true +} + +// Equal function +func (m *DelegatedHttpGateway) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*DelegatedHttpGateway) + if !ok { + that2, ok := that.(DelegatedHttpGateway) + if ok { + target = &that2 + } else { return false } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + if m.GetPreventChildOverrides() != target.GetPreventChildOverrides() { + return false } - if h, ok := interface{}(m.GetOptions()).(equality.Equalizer); ok { - if !h.Equal(target.GetOptions()) { + if h, ok := interface{}(m.GetHttpConnectionManagerSettings()).(equality.Equalizer); ok { + if !h.Equal(target.GetHttpConnectionManagerSettings()) { return false } } else { - if !proto.Equal(m.GetOptions(), target.GetOptions()) { + if !proto.Equal(m.GetHttpConnectionManagerSettings(), target.GetHttpConnectionManagerSettings()) { + return false + } + } + + if h, ok := interface{}(m.GetSslConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetSslConfig()) { + return false + } + } else { + if !proto.Equal(m.GetSslConfig(), target.GetSslConfig()) { + return false + } + } + + switch m.SelectionType.(type) { + + case *DelegatedHttpGateway_Ref: + if _, ok := target.SelectionType.(*DelegatedHttpGateway_Ref); !ok { + return false + } + + if h, ok := interface{}(m.GetRef()).(equality.Equalizer); ok { + if !h.Equal(target.GetRef()) { + return false + } + } else { + if !proto.Equal(m.GetRef(), target.GetRef()) { + return false + } + } + + case *DelegatedHttpGateway_Selector: + if _, ok := target.SelectionType.(*DelegatedHttpGateway_Selector); !ok { + return false + } + + if h, ok := interface{}(m.GetSelector()).(equality.Equalizer); ok { + if !h.Equal(target.GetSelector()) { + return false + } + } else { + if !proto.Equal(m.GetSelector(), target.GetSelector()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.SelectionType != target.SelectionType { return false } } @@ -214,14 +356,14 @@ func (m *HttpGateway) Equal(that interface{}) bool { } // Equal function -func (m *TcpGateway) Equal(that interface{}) bool { +func (m *DelegatedTcpGateway) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*TcpGateway) + target, ok := that.(*DelegatedTcpGateway) if !ok { - that2, ok := that.(TcpGateway) + that2, ok := that.(DelegatedTcpGateway) if ok { target = &that2 } else { @@ -234,29 +376,114 @@ func (m *TcpGateway) Equal(that interface{}) bool { return false } - if len(m.GetTcpHosts()) != len(target.GetTcpHosts()) { - return false - } - for idx, v := range m.GetTcpHosts() { + switch m.SelectionType.(type) { - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetTcpHosts()[idx]) { + case *DelegatedTcpGateway_Ref: + if _, ok := target.SelectionType.(*DelegatedTcpGateway_Ref); !ok { + return false + } + + if h, ok := interface{}(m.GetRef()).(equality.Equalizer); ok { + if !h.Equal(target.GetRef()) { return false } } else { - if !proto.Equal(v, target.GetTcpHosts()[idx]) { + if !proto.Equal(m.GetRef(), target.GetRef()) { + return false + } + } + + case *DelegatedTcpGateway_Selector: + if _, ok := target.SelectionType.(*DelegatedTcpGateway_Selector); !ok { + return false + } + + if h, ok := interface{}(m.GetSelector()).(equality.Equalizer); ok { + if !h.Equal(target.GetSelector()) { + return false + } + } else { + if !proto.Equal(m.GetSelector(), target.GetSelector()) { return false } } + default: + // m is nil but target is not nil + if m.SelectionType != target.SelectionType { + return false + } } - if h, ok := interface{}(m.GetOptions()).(equality.Equalizer); ok { - if !h.Equal(target.GetOptions()) { + return true +} + +// Equal function +func (m *MatchedGateway) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*MatchedGateway) + if !ok { + that2, ok := that.(MatchedGateway) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetMatcher()).(equality.Equalizer); ok { + if !h.Equal(target.GetMatcher()) { return false } } else { - if !proto.Equal(m.GetOptions(), target.GetOptions()) { + if !proto.Equal(m.GetMatcher(), target.GetMatcher()) { + return false + } + } + + switch m.GatewayType.(type) { + + case *MatchedGateway_HttpGateway: + if _, ok := target.GatewayType.(*MatchedGateway_HttpGateway); !ok { + return false + } + + if h, ok := interface{}(m.GetHttpGateway()).(equality.Equalizer); ok { + if !h.Equal(target.GetHttpGateway()) { + return false + } + } else { + if !proto.Equal(m.GetHttpGateway(), target.GetHttpGateway()) { + return false + } + } + + case *MatchedGateway_TcpGateway: + if _, ok := target.GatewayType.(*MatchedGateway_TcpGateway); !ok { + return false + } + + if h, ok := interface{}(m.GetTcpGateway()).(equality.Equalizer); ok { + if !h.Equal(target.GetTcpGateway()) { + return false + } + } else { + if !proto.Equal(m.GetTcpGateway(), target.GetTcpGateway()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.GatewayType != target.GatewayType { return false } } @@ -265,14 +492,14 @@ func (m *TcpGateway) Equal(that interface{}) bool { } // Equal function -func (m *VirtualServiceSelectorExpressions) Equal(that interface{}) bool { +func (m *Matcher) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*VirtualServiceSelectorExpressions) + target, ok := that.(*Matcher) if !ok { - that2, ok := that.(VirtualServiceSelectorExpressions) + that2, ok := that.(Matcher) if ok { target = &that2 } else { @@ -285,23 +512,44 @@ func (m *VirtualServiceSelectorExpressions) Equal(that interface{}) bool { return false } - if len(m.GetExpressions()) != len(target.GetExpressions()) { + if h, ok := interface{}(m.GetSslConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetSslConfig()) { + return false + } + } else { + if !proto.Equal(m.GetSslConfig(), target.GetSslConfig()) { + return false + } + } + + if len(m.GetSourcePrefixRanges()) != len(target.GetSourcePrefixRanges()) { return false } - for idx, v := range m.GetExpressions() { + for idx, v := range m.GetSourcePrefixRanges() { if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetExpressions()[idx]) { + if !h.Equal(target.GetSourcePrefixRanges()[idx]) { return false } } else { - if !proto.Equal(v, target.GetExpressions()[idx]) { + if !proto.Equal(v, target.GetSourcePrefixRanges()[idx]) { return false } } } + if len(m.GetPassthroughCipherSuites()) != len(target.GetPassthroughCipherSuites()) { + return false + } + for idx, v := range m.GetPassthroughCipherSuites() { + + if strings.Compare(v, target.GetPassthroughCipherSuites()[idx]) != 0 { + return false + } + + } + return true } @@ -369,14 +617,14 @@ func (m *GatewayStatus) Equal(that interface{}) bool { } // Equal function -func (m *VirtualServiceSelectorExpressions_Expression) Equal(that interface{}) bool { +func (m *GatewayNamespacedStatuses) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*VirtualServiceSelectorExpressions_Expression) + target, ok := that.(*GatewayNamespacedStatuses) if !ok { - that2, ok := that.(VirtualServiceSelectorExpressions_Expression) + that2, ok := that.(GatewayNamespacedStatuses) if ok { target = &that2 } else { @@ -389,21 +637,19 @@ func (m *VirtualServiceSelectorExpressions_Expression) Equal(that interface{}) b return false } - if strings.Compare(m.GetKey(), target.GetKey()) != 0 { - return false - } - - if m.GetOperator() != target.GetOperator() { - return false - } - - if len(m.GetValues()) != len(target.GetValues()) { + if len(m.GetStatuses()) != len(target.GetStatuses()) { return false } - for idx, v := range m.GetValues() { + for k, v := range m.GetStatuses() { - if strings.Compare(v, target.GetValues()[idx]) != 0 { - return false + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetStatuses()[k]) { + return false + } } } diff --git a/pkg/api/gateway.solo.io/v1/gateway.pb.go b/pkg/api/gateway.solo.io/v1/gateway.pb.go index 30262a8c9..079a3b83b 100644 --- a/pkg/api/gateway.solo.io/v1/gateway.pb.go +++ b/pkg/api/gateway.solo.io/v1/gateway.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/gateway.proto @@ -9,15 +9,19 @@ package v1 import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - _struct "github.com/golang/protobuf/ptypes/struct" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" v1 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1" + selectors "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/core/selectors" + hcm "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/hcm" + ssl "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl" core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -27,87 +31,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -// Virtual Service Selector expression operator, while the set-based syntax differs from Kubernetes (kubernetes: `key: !mylabel`, gloo: `key: mylabel, operator: "!"` | kubernetes: `key: mylabel`, gloo: `key: mylabel, operator: exists`), the functionality remains the same. -type VirtualServiceSelectorExpressions_Expression_Operator int32 - -const ( - // = - VirtualServiceSelectorExpressions_Expression_Equals VirtualServiceSelectorExpressions_Expression_Operator = 0 - // == - VirtualServiceSelectorExpressions_Expression_DoubleEquals VirtualServiceSelectorExpressions_Expression_Operator = 1 - // != - VirtualServiceSelectorExpressions_Expression_NotEquals VirtualServiceSelectorExpressions_Expression_Operator = 2 - // in - VirtualServiceSelectorExpressions_Expression_In VirtualServiceSelectorExpressions_Expression_Operator = 3 - // notin - VirtualServiceSelectorExpressions_Expression_NotIn VirtualServiceSelectorExpressions_Expression_Operator = 4 - // exists - VirtualServiceSelectorExpressions_Expression_Exists VirtualServiceSelectorExpressions_Expression_Operator = 5 - // ! - VirtualServiceSelectorExpressions_Expression_DoesNotExist VirtualServiceSelectorExpressions_Expression_Operator = 6 - // gt - VirtualServiceSelectorExpressions_Expression_GreaterThan VirtualServiceSelectorExpressions_Expression_Operator = 7 - // lt - VirtualServiceSelectorExpressions_Expression_LessThan VirtualServiceSelectorExpressions_Expression_Operator = 8 -) - -// Enum value maps for VirtualServiceSelectorExpressions_Expression_Operator. -var ( - VirtualServiceSelectorExpressions_Expression_Operator_name = map[int32]string{ - 0: "Equals", - 1: "DoubleEquals", - 2: "NotEquals", - 3: "In", - 4: "NotIn", - 5: "Exists", - 6: "DoesNotExist", - 7: "GreaterThan", - 8: "LessThan", - } - VirtualServiceSelectorExpressions_Expression_Operator_value = map[string]int32{ - "Equals": 0, - "DoubleEquals": 1, - "NotEquals": 2, - "In": 3, - "NotIn": 4, - "Exists": 5, - "DoesNotExist": 6, - "GreaterThan": 7, - "LessThan": 8, - } -) - -func (x VirtualServiceSelectorExpressions_Expression_Operator) Enum() *VirtualServiceSelectorExpressions_Expression_Operator { - p := new(VirtualServiceSelectorExpressions_Expression_Operator) - *p = x - return p -} - -func (x VirtualServiceSelectorExpressions_Expression_Operator) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (VirtualServiceSelectorExpressions_Expression_Operator) Descriptor() protoreflect.EnumDescriptor { - return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_enumTypes[0].Descriptor() -} - -func (VirtualServiceSelectorExpressions_Expression_Operator) Type() protoreflect.EnumType { - return &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_enumTypes[0] -} - -func (x VirtualServiceSelectorExpressions_Expression_Operator) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use VirtualServiceSelectorExpressions_Expression_Operator.Descriptor instead. -func (VirtualServiceSelectorExpressions_Expression_Operator) EnumDescriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescGZIP(), []int{3, 0, 0} -} - type GatewayStatus_State int32 const ( @@ -150,11 +73,11 @@ func (x GatewayStatus_State) String() string { } func (GatewayStatus_State) Descriptor() protoreflect.EnumDescriptor { - return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_enumTypes[1].Descriptor() + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_enumTypes[0].Descriptor() } func (GatewayStatus_State) Type() protoreflect.EnumType { - return &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_enumTypes[1] + return &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_enumTypes[0] } func (x GatewayStatus_State) Number() protoreflect.EnumNumber { @@ -163,19 +86,16 @@ func (x GatewayStatus_State) Number() protoreflect.EnumNumber { // Deprecated: Use GatewayStatus_State.Descriptor instead. func (GatewayStatus_State) EnumDescriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescGZIP(), []int{4, 0} + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescGZIP(), []int{7, 0} } -// -//A Gateway describes a single Listener (bind address:port) -//and the routing configuration to upstreams that are reachable via a specific port on the Gateway Proxy itself. +// A Gateway describes a single Listener (bind address:port) +// and the routing configuration to upstreams that are reachable via a specific port on the Gateway Proxy itself. type GatewaySpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // if set to false, only use virtual services without ssl configured. // if set to true, only use virtual services with ssl configured. + // this field is ignored if GatewayType is HybridGateway. Ssl bool `protobuf:"varint,1,opt,name=ssl,proto3" json:"ssl,omitempty"` // the bind address the gateway should serve traffic on BindAddress string `protobuf:"bytes,3,opt,name=bind_address,json=bindAddress,proto3" json:"bind_address,omitempty"` @@ -183,47 +103,52 @@ type GatewaySpec struct { BindPort uint32 `protobuf:"varint,4,opt,name=bind_port,json=bindPort,proto3" json:"bind_port,omitempty"` // top level optional configuration for all routes on the gateway Options *v1.ListenerOptions `protobuf:"bytes,5,opt,name=options,proto3" json:"options,omitempty"` - // Enable ProxyProtocol support for this listener - UseProxyProto *wrappers.BoolValue `protobuf:"bytes,8,opt,name=use_proxy_proto,json=useProxyProto,proto3" json:"use_proxy_proto,omitempty"` + // Enable ProxyProtocol support for this listener. + // Deprecated: prefer setting the listener option. + // If configured, the listener option (filter config) overrides any setting here. + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gateway/v1/gateway.proto. + UseProxyProto *wrapperspb.BoolValue `protobuf:"bytes,8,opt,name=use_proxy_proto,json=useProxyProto,proto3" json:"use_proxy_proto,omitempty"` // The type of gateway being created // HttpGateway creates a listener with an http_connection_manager // TcpGateway creates a listener with a tcp proxy filter + // HybridGateway creates a listener with any number of filter chains that each may have either an http_connection_manager or a tcp proxy filter + // + // Types that are valid to be assigned to GatewayType: // - // Types that are assignable to GatewayType: // *GatewaySpec_HttpGateway // *GatewaySpec_TcpGateway + // *GatewaySpec_HybridGateway GatewayType isGatewaySpec_GatewayType `protobuf_oneof:"GatewayType"` - // - // Names of the [`Proxy`](https://gloo.solo.io/api/github.com/solo-io/solo-apis/api/gloo/gloo/v1/proxy.proto.sk/) + // Names of the [`Proxy`](https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-apis/api/gloo/gloo/v1/proxy.proto.sk/) // resources to generate from this gateway. If other gateways exist which point to the same proxy, // Gloo will join them together. // // Proxies have a one-to-many relationship with Envoy bootstrap configuration. // In order to connect to Gloo, the Envoy bootstrap configuration sets a `role` in - // the [node metadata](https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/core/base.proto#envoy-api-msg-core-node) + // the [node metadata](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/base.proto#envoy-api-msg-core-node) // Envoy instances announce their `role` to Gloo, which maps to the `{{ .Namespace }}~{{ .Name }}` // of the Proxy resource. // - // The template for this value can be seen in the [Gloo Helm chart](https://github.com/solo-io/gloo/blob/master/install/helm/gloo/templates/9-gateway-proxy-configmap.yaml#L22) + // The template for this value can be seen in the [Gloo Helm chart](https://github.com/solo-io/gloo/blob/main/install/helm/gloo/templates/9-gateway-proxy-configmap.yaml#L22) // // Note: this field also accepts fields written in camel-case. They will be converted - // to kebab-case in the Proxy name. This allows use of the [Gateway Name Helm value](https://github.com/solo-io/gloo/blob/master/install/helm/gloo/values-gateway-template.yaml#L47) + // to kebab-case in the Proxy name. This allows use of the [Gateway Name Helm value](https://github.com/solo-io/gloo/blob/main/install/helm/gloo/values-gateway-template.yaml#L47) // for this field // // Defaults to `["gateway-proxy"]` ProxyNames []string `protobuf:"bytes,12,rep,name=proxy_names,json=proxyNames,proto3" json:"proxy_names,omitempty"` - // // Route configuration options that live under Envoy's [RouteConfigurationOptions](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto#config-route-v3-routeconfiguration) - RouteOptions *v1.RouteConfigurationOptions `protobuf:"bytes,13,opt,name=route_options,json=routeOptions,proto3" json:"route_options,omitempty"` + RouteOptions *v1.RouteConfigurationOptions `protobuf:"bytes,13,opt,name=route_options,json=routeOptions,proto3" json:"route_options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GatewaySpec) Reset() { *x = GatewaySpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GatewaySpec) String() string { @@ -234,7 +159,7 @@ func (*GatewaySpec) ProtoMessage() {} func (x *GatewaySpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -277,30 +202,44 @@ func (x *GatewaySpec) GetOptions() *v1.ListenerOptions { return nil } -func (x *GatewaySpec) GetUseProxyProto() *wrappers.BoolValue { +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gateway/v1/gateway.proto. +func (x *GatewaySpec) GetUseProxyProto() *wrapperspb.BoolValue { if x != nil { return x.UseProxyProto } return nil } -func (m *GatewaySpec) GetGatewayType() isGatewaySpec_GatewayType { - if m != nil { - return m.GatewayType +func (x *GatewaySpec) GetGatewayType() isGatewaySpec_GatewayType { + if x != nil { + return x.GatewayType } return nil } func (x *GatewaySpec) GetHttpGateway() *HttpGateway { - if x, ok := x.GetGatewayType().(*GatewaySpec_HttpGateway); ok { - return x.HttpGateway + if x != nil { + if x, ok := x.GatewayType.(*GatewaySpec_HttpGateway); ok { + return x.HttpGateway + } } return nil } func (x *GatewaySpec) GetTcpGateway() *TcpGateway { - if x, ok := x.GetGatewayType().(*GatewaySpec_TcpGateway); ok { - return x.TcpGateway + if x != nil { + if x, ok := x.GatewayType.(*GatewaySpec_TcpGateway); ok { + return x.TcpGateway + } + } + return nil +} + +func (x *GatewaySpec) GetHybridGateway() *HybridGateway { + if x != nil { + if x, ok := x.GatewayType.(*GatewaySpec_HybridGateway); ok { + return x.HybridGateway + } } return nil } @@ -331,57 +270,42 @@ type GatewaySpec_TcpGateway struct { TcpGateway *TcpGateway `protobuf:"bytes,10,opt,name=tcp_gateway,json=tcpGateway,proto3,oneof"` } +type GatewaySpec_HybridGateway struct { + HybridGateway *HybridGateway `protobuf:"bytes,11,opt,name=hybrid_gateway,json=hybridGateway,proto3,oneof"` +} + func (*GatewaySpec_HttpGateway) isGatewaySpec_GatewayType() {} func (*GatewaySpec_TcpGateway) isGatewaySpec_GatewayType() {} -type HttpGateway struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +func (*GatewaySpec_HybridGateway) isGatewaySpec_GatewayType() {} + +type TcpGateway struct { + state protoimpl.MessageState `protogen:"open.v1"` + // TCP hosts that the gateway can route to + TcpHosts []*v1.TcpHost `protobuf:"bytes,1,rep,name=tcp_hosts,json=tcpHosts,proto3" json:"tcp_hosts,omitempty"` + // TCP Gateway configuration + Options *v1.TcpListenerOptions `protobuf:"bytes,8,opt,name=options,proto3" json:"options,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} - // Names & namespace refs of the virtual services which contain the actual routes for the gateway. - // If the list is empty, all virtual services in all namespaces that Gloo watches will apply, - // with accordance to `ssl` flag on `Gateway` above. - // The default namespace matching behavior can be overridden via `virtual_service_namespaces` flag below. - // Only one of `virtualServices`, `virtualServiceExpressions` or `virtualServiceSelector` should be provided. - // If more than one is provided only one will be checked with priority virtualServiceExpressions, virtualServiceSelector, virtualServices - VirtualServices []*core.ResourceRef `protobuf:"bytes,1,rep,name=virtual_services,json=virtualServices,proto3" json:"virtual_services,omitempty"` - // Select virtual services by their label. If `virtual_service_namespaces` is provided below, this will apply only - // to virtual services in the namespaces specified. - // Only one of `virtualServices`, `virtualServiceExpressions` or `virtualServiceSelector` should be provided. - // If more than one is provided only one will be checked with priority virtualServiceExpressions, virtualServiceSelector, virtualServices - VirtualServiceSelector map[string]string `protobuf:"bytes,2,rep,name=virtual_service_selector,json=virtualServiceSelector,proto3" json:"virtual_service_selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // Select virtual services using expressions. If `virtual_service_namespaces` is provided below, this will apply only - // to virtual services in the namespaces specified. - // Only one of `virtualServices`, `virtualServiceExpressions` or `virtualServiceSelector` should be provided. - // If more than one is provided only one will be checked with priority virtualServiceExpressions, virtualServiceSelector, virtualServices - VirtualServiceExpressions *VirtualServiceSelectorExpressions `protobuf:"bytes,9,opt,name=virtual_service_expressions,json=virtualServiceExpressions,proto3" json:"virtual_service_expressions,omitempty"` - // Restrict the search by providing a list of valid search namespaces here. - // Setting '*' will search all namespaces, equivalent to omitting this value. - VirtualServiceNamespaces []string `protobuf:"bytes,3,rep,name=virtual_service_namespaces,json=virtualServiceNamespaces,proto3" json:"virtual_service_namespaces,omitempty"` - // HTTP Gateway configuration - Options *v1.HttpListenerOptions `protobuf:"bytes,8,opt,name=options,proto3" json:"options,omitempty"` -} - -func (x *HttpGateway) Reset() { - *x = HttpGateway{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *TcpGateway) Reset() { + *x = TcpGateway{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *HttpGateway) String() string { +func (x *TcpGateway) String() string { return protoimpl.X.MessageStringOf(x) } -func (*HttpGateway) ProtoMessage() {} +func (*TcpGateway) ProtoMessage() {} -func (x *HttpGateway) ProtoReflect() protoreflect.Message { +func (x *TcpGateway) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -391,75 +315,243 @@ func (x *HttpGateway) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use HttpGateway.ProtoReflect.Descriptor instead. -func (*HttpGateway) Descriptor() ([]byte, []int) { +// Deprecated: Use TcpGateway.ProtoReflect.Descriptor instead. +func (*TcpGateway) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescGZIP(), []int{1} } -func (x *HttpGateway) GetVirtualServices() []*core.ResourceRef { +func (x *TcpGateway) GetTcpHosts() []*v1.TcpHost { if x != nil { - return x.VirtualServices + return x.TcpHosts } return nil } -func (x *HttpGateway) GetVirtualServiceSelector() map[string]string { +func (x *TcpGateway) GetOptions() *v1.TcpListenerOptions { if x != nil { - return x.VirtualServiceSelector + return x.Options } return nil } -func (x *HttpGateway) GetVirtualServiceExpressions() *VirtualServiceSelectorExpressions { +type HybridGateway struct { + state protoimpl.MessageState `protogen:"open.v1"` + // MatchedGateways can be used to define both HttpGateways and TcpGateways directly on the Gateway resource. + // If `MatchedGateways` is provided, then `DelegatedHttpGateways` and `DelegatedTcpGateways` are ignored. + MatchedGateways []*MatchedGateway `protobuf:"bytes,1,rep,name=matched_gateways,json=matchedGateways,proto3" json:"matched_gateways,omitempty"` + // DelegatedHttpGateways can be used to configure multiple HttpGateways + // using the MatchableHttpGateway CR and select them on this Gateway + // using a resourceRef or label selection. + // If `MatchedGateways` is provided, then `DelegatedHttpGateways` is ignored. + DelegatedHttpGateways *DelegatedHttpGateway `protobuf:"bytes,2,opt,name=delegated_http_gateways,json=delegatedHttpGateways,proto3" json:"delegated_http_gateways,omitempty"` + // DelegatedTcpGateways can be used to configure multiple TcpGateways + // using the MatchableTcpGateway CR and select them on this Gateway + // using a resourceRef or label selection. + // If `MatchedGateways` is provided, then `DelegatedTcpGateways` is ignored. + DelegatedTcpGateways *DelegatedTcpGateway `protobuf:"bytes,3,opt,name=delegated_tcp_gateways,json=delegatedTcpGateways,proto3" json:"delegated_tcp_gateways,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HybridGateway) Reset() { + *x = HybridGateway{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HybridGateway) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HybridGateway) ProtoMessage() {} + +func (x *HybridGateway) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[2] if x != nil { - return x.VirtualServiceExpressions + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HybridGateway.ProtoReflect.Descriptor instead. +func (*HybridGateway) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescGZIP(), []int{2} +} + +func (x *HybridGateway) GetMatchedGateways() []*MatchedGateway { + if x != nil { + return x.MatchedGateways } return nil } -func (x *HttpGateway) GetVirtualServiceNamespaces() []string { +func (x *HybridGateway) GetDelegatedHttpGateways() *DelegatedHttpGateway { if x != nil { - return x.VirtualServiceNamespaces + return x.DelegatedHttpGateways } return nil } -func (x *HttpGateway) GetOptions() *v1.HttpListenerOptions { +func (x *HybridGateway) GetDelegatedTcpGateways() *DelegatedTcpGateway { if x != nil { - return x.Options + return x.DelegatedTcpGateways } return nil } -type TcpGateway struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type DelegatedHttpGateway struct { + state protoimpl.MessageState `protogen:"open.v1"` + // How to select MatchableHttpGateways + // + // Types that are valid to be assigned to SelectionType: + // + // *DelegatedHttpGateway_Ref + // *DelegatedHttpGateway_Selector + SelectionType isDelegatedHttpGateway_SelectionType `protobuf_oneof:"selection_type"` + // Used as a meta modifier to the `http_connection_manager_settings` and `ssl_config` fields in a DelegatedHttpGateway. When set, provided ancestor config cannot be overriden by matched HttpGateways. + // Useful in a multi-team context, where a controlling team managing a primary Gateway file may want to lock down specific functionality + // from other teams. + // + // For example: (DelegatedHttpGateway, MatchableHttpGateway) = {"a": "a1", "b": "b1"}, {"b": "b2", "c": "c2"} + // When true: get_config(MatchableHttpGateway) --> {"a": "a1", "b": "b1", "c": "c2"} + // When false: get_config(MatchableHttpGateway) --> {"a": "a1", "b": "b2", "c": "c2"} + PreventChildOverrides bool `protobuf:"varint,5,opt,name=prevent_child_overrides,json=preventChildOverrides,proto3" json:"prevent_child_overrides,omitempty"` + // Anscestry-level HTTP Gateway configuration. Options specified here will be passed down to each `MatchableHttpGateway` that is matched via `selector` or `ref`. Ultimately, said options will be consumed by instances of `MatchableHttpGateway.http_gateway` + HttpConnectionManagerSettings *hcm.HttpConnectionManagerSettings `protobuf:"bytes,6,opt,name=http_connection_manager_settings,json=httpConnectionManagerSettings,proto3" json:"http_connection_manager_settings,omitempty"` + // Anscestry-level TLS/SSL traffic configuration. Options specified here will be passed down to each `MatchableHttpGateway` that is matched via `selector` or `ref`. From there, they are passed to all VirtualServices associated with said `MatchableHttpGateway`s. + SslConfig *ssl.SslConfig `protobuf:"bytes,2,opt,name=ssl_config,json=sslConfig,proto3" json:"ssl_config,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} - // TCP hosts that the gateway can route to - TcpHosts []*v1.TcpHost `protobuf:"bytes,1,rep,name=tcp_hosts,json=tcpHosts,proto3" json:"tcp_hosts,omitempty"` - // TCP Gateway configuration - Options *v1.TcpListenerOptions `protobuf:"bytes,8,opt,name=options,proto3" json:"options,omitempty"` +func (x *DelegatedHttpGateway) Reset() { + *x = DelegatedHttpGateway{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *TcpGateway) Reset() { - *x = TcpGateway{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[2] +func (x *DelegatedHttpGateway) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DelegatedHttpGateway) ProtoMessage() {} + +func (x *DelegatedHttpGateway) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[3] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } + return mi.MessageOf(x) } -func (x *TcpGateway) String() string { +// Deprecated: Use DelegatedHttpGateway.ProtoReflect.Descriptor instead. +func (*DelegatedHttpGateway) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescGZIP(), []int{3} +} + +func (x *DelegatedHttpGateway) GetSelectionType() isDelegatedHttpGateway_SelectionType { + if x != nil { + return x.SelectionType + } + return nil +} + +func (x *DelegatedHttpGateway) GetRef() *core.ResourceRef { + if x != nil { + if x, ok := x.SelectionType.(*DelegatedHttpGateway_Ref); ok { + return x.Ref + } + } + return nil +} + +func (x *DelegatedHttpGateway) GetSelector() *selectors.Selector { + if x != nil { + if x, ok := x.SelectionType.(*DelegatedHttpGateway_Selector); ok { + return x.Selector + } + } + return nil +} + +func (x *DelegatedHttpGateway) GetPreventChildOverrides() bool { + if x != nil { + return x.PreventChildOverrides + } + return false +} + +func (x *DelegatedHttpGateway) GetHttpConnectionManagerSettings() *hcm.HttpConnectionManagerSettings { + if x != nil { + return x.HttpConnectionManagerSettings + } + return nil +} + +func (x *DelegatedHttpGateway) GetSslConfig() *ssl.SslConfig { + if x != nil { + return x.SslConfig + } + return nil +} + +type isDelegatedHttpGateway_SelectionType interface { + isDelegatedHttpGateway_SelectionType() +} + +type DelegatedHttpGateway_Ref struct { + // Delegate to the resource with the given `name` and `namespace. + Ref *core.ResourceRef `protobuf:"bytes,3,opt,name=ref,proto3,oneof"` +} + +type DelegatedHttpGateway_Selector struct { + // Delegate to the MatchableHttpGateways that match the given selector. + Selector *selectors.Selector `protobuf:"bytes,4,opt,name=selector,proto3,oneof"` +} + +func (*DelegatedHttpGateway_Ref) isDelegatedHttpGateway_SelectionType() {} + +func (*DelegatedHttpGateway_Selector) isDelegatedHttpGateway_SelectionType() {} + +type DelegatedTcpGateway struct { + state protoimpl.MessageState `protogen:"open.v1"` + // How to select MatchableTcpGateways + // + // Types that are valid to be assigned to SelectionType: + // + // *DelegatedTcpGateway_Ref + // *DelegatedTcpGateway_Selector + SelectionType isDelegatedTcpGateway_SelectionType `protobuf_oneof:"selection_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DelegatedTcpGateway) Reset() { + *x = DelegatedTcpGateway{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DelegatedTcpGateway) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TcpGateway) ProtoMessage() {} +func (*DelegatedTcpGateway) ProtoMessage() {} -func (x *TcpGateway) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { +func (x *DelegatedTcpGateway) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[4] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -469,59 +561,182 @@ func (x *TcpGateway) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TcpGateway.ProtoReflect.Descriptor instead. -func (*TcpGateway) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescGZIP(), []int{2} +// Deprecated: Use DelegatedTcpGateway.ProtoReflect.Descriptor instead. +func (*DelegatedTcpGateway) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescGZIP(), []int{4} } -func (x *TcpGateway) GetTcpHosts() []*v1.TcpHost { +func (x *DelegatedTcpGateway) GetSelectionType() isDelegatedTcpGateway_SelectionType { if x != nil { - return x.TcpHosts + return x.SelectionType } return nil } -func (x *TcpGateway) GetOptions() *v1.TcpListenerOptions { +func (x *DelegatedTcpGateway) GetRef() *core.ResourceRef { if x != nil { - return x.Options + if x, ok := x.SelectionType.(*DelegatedTcpGateway_Ref); ok { + return x.Ref + } } return nil } -// Expressions to define which virtual services to select -// Example: -// expressions: -// - key: domain -// operator: in -// values: example.com -type VirtualServiceSelectorExpressions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +func (x *DelegatedTcpGateway) GetSelector() *selectors.Selector { + if x != nil { + if x, ok := x.SelectionType.(*DelegatedTcpGateway_Selector); ok { + return x.Selector + } + } + return nil +} + +type isDelegatedTcpGateway_SelectionType interface { + isDelegatedTcpGateway_SelectionType() +} + +type DelegatedTcpGateway_Ref struct { + // Delegate to the resource with the given `name` and `namespace. + Ref *core.ResourceRef `protobuf:"bytes,1,opt,name=ref,proto3,oneof"` +} + +type DelegatedTcpGateway_Selector struct { + // Delegate to the MatchableTcpGateways that match the given selector. + Selector *selectors.Selector `protobuf:"bytes,2,opt,name=selector,proto3,oneof"` +} + +func (*DelegatedTcpGateway_Ref) isDelegatedTcpGateway_SelectionType() {} + +func (*DelegatedTcpGateway_Selector) isDelegatedTcpGateway_SelectionType() {} + +type MatchedGateway struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Matchers are used to define unique matching criteria for each MatchedGateway + // Each MatchedGateway within a HybridGateway must have a unique Matcher + // If multiple matchers in a HybridGateway are identical, the HybridGateway will not be accepted + // Empty Matchers are effectively catch-alls, and there can be no more than one empty Matcher per HybridGateway + Matcher *Matcher `protobuf:"bytes,1,opt,name=matcher,proto3" json:"matcher,omitempty"` + // Types that are valid to be assigned to GatewayType: + // + // *MatchedGateway_HttpGateway + // *MatchedGateway_TcpGateway + GatewayType isMatchedGateway_GatewayType `protobuf_oneof:"GatewayType"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MatchedGateway) Reset() { + *x = MatchedGateway{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} - // Expressions allow for more flexible virtual service label matching, such as equality-based requirements, set-based requirements, or a combination of both. - // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#equality-based-requirement - Expressions []*VirtualServiceSelectorExpressions_Expression `protobuf:"bytes,3,rep,name=expressions,proto3" json:"expressions,omitempty"` +func (x *MatchedGateway) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *VirtualServiceSelectorExpressions) Reset() { - *x = VirtualServiceSelectorExpressions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[3] +func (*MatchedGateway) ProtoMessage() {} + +func (x *MatchedGateway) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[5] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MatchedGateway.ProtoReflect.Descriptor instead. +func (*MatchedGateway) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescGZIP(), []int{5} +} + +func (x *MatchedGateway) GetMatcher() *Matcher { + if x != nil { + return x.Matcher + } + return nil +} + +func (x *MatchedGateway) GetGatewayType() isMatchedGateway_GatewayType { + if x != nil { + return x.GatewayType + } + return nil +} + +func (x *MatchedGateway) GetHttpGateway() *HttpGateway { + if x != nil { + if x, ok := x.GatewayType.(*MatchedGateway_HttpGateway); ok { + return x.HttpGateway + } + } + return nil +} + +func (x *MatchedGateway) GetTcpGateway() *TcpGateway { + if x != nil { + if x, ok := x.GatewayType.(*MatchedGateway_TcpGateway); ok { + return x.TcpGateway + } } + return nil +} + +type isMatchedGateway_GatewayType interface { + isMatchedGateway_GatewayType() +} + +type MatchedGateway_HttpGateway struct { + HttpGateway *HttpGateway `protobuf:"bytes,2,opt,name=http_gateway,json=httpGateway,proto3,oneof"` +} + +type MatchedGateway_TcpGateway struct { + TcpGateway *TcpGateway `protobuf:"bytes,3,opt,name=tcp_gateway,json=tcpGateway,proto3,oneof"` } -func (x *VirtualServiceSelectorExpressions) String() string { +func (*MatchedGateway_HttpGateway) isMatchedGateway_GatewayType() {} + +func (*MatchedGateway_TcpGateway) isMatchedGateway_GatewayType() {} + +type Matcher struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Gloo use SNI domains as matching criteria for Gateway selection + // The other ssl_config properties will be applied to the outputFilterChain's transport socket + // SslConfig from VirtualServices will be ignored in a MatchedGateway + SslConfig *ssl.SslConfig `protobuf:"bytes,1,opt,name=ssl_config,json=sslConfig,proto3" json:"ssl_config,omitempty"` + // CidrRange specifies an IP Address and a prefix length to construct the subnet mask for a CIDR range. + // See https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/address.proto#envoy-v3-api-msg-config-core-v3-cidrrange + SourcePrefixRanges []*v3.CidrRange `protobuf:"bytes,2,rep,name=source_prefix_ranges,json=sourcePrefixRanges,proto3" json:"source_prefix_ranges,omitempty"` + // Enterprise-only: Passthrough cipher suites is an allow-list of OpenSSL cipher suite names for which TLS passthrough will be enabled. + // If a client does not support any ciphers that are natively supported by Envoy, but does support one of the ciphers in the passthrough list, + // then traffic will be routed via TCP Proxy to a destination specified by the TcpGateway, where TLS can then be terminated. + // This field is only applicable to TcpGateways. + PassthroughCipherSuites []string `protobuf:"bytes,3,rep,name=passthrough_cipher_suites,json=passthroughCipherSuites,proto3" json:"passthrough_cipher_suites,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Matcher) Reset() { + *x = Matcher{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Matcher) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VirtualServiceSelectorExpressions) ProtoMessage() {} +func (*Matcher) ProtoMessage() {} -func (x *VirtualServiceSelectorExpressions) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { +func (x *Matcher) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[6] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -531,23 +746,34 @@ func (x *VirtualServiceSelectorExpressions) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use VirtualServiceSelectorExpressions.ProtoReflect.Descriptor instead. -func (*VirtualServiceSelectorExpressions) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescGZIP(), []int{3} +// Deprecated: Use Matcher.ProtoReflect.Descriptor instead. +func (*Matcher) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescGZIP(), []int{6} } -func (x *VirtualServiceSelectorExpressions) GetExpressions() []*VirtualServiceSelectorExpressions_Expression { +func (x *Matcher) GetSslConfig() *ssl.SslConfig { if x != nil { - return x.Expressions + return x.SslConfig } return nil } -type GatewayStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *Matcher) GetSourcePrefixRanges() []*v3.CidrRange { + if x != nil { + return x.SourcePrefixRanges + } + return nil +} +func (x *Matcher) GetPassthroughCipherSuites() []string { + if x != nil { + return x.PassthroughCipherSuites + } + return nil +} + +type GatewayStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` // State is the enum indicating the state of the resource State GatewayStatus_State `protobuf:"varint,1,opt,name=state,proto3,enum=gateway.solo.io.GatewayStatus_State" json:"state,omitempty"` // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty @@ -555,18 +781,18 @@ type GatewayStatus struct { // Reference to the reporter who wrote this status ReportedBy string `protobuf:"bytes,3,opt,name=reported_by,json=reportedBy,proto3" json:"reported_by,omitempty"` // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource - SubresourceStatuses map[string]*GatewayStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + SubresourceStatuses map[string]*GatewayStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Opaque details about status results - Details *_struct.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + Details *structpb.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GatewayStatus) Reset() { *x = GatewayStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GatewayStatus) String() string { @@ -576,8 +802,8 @@ func (x *GatewayStatus) String() string { func (*GatewayStatus) ProtoMessage() {} func (x *GatewayStatus) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[7] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -589,7 +815,7 @@ func (x *GatewayStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use GatewayStatus.ProtoReflect.Descriptor instead. func (*GatewayStatus) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescGZIP(), []int{4} + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescGZIP(), []int{7} } func (x *GatewayStatus) GetState() GatewayStatus_State { @@ -620,44 +846,36 @@ func (x *GatewayStatus) GetSubresourceStatuses() map[string]*GatewayStatus { return nil } -func (x *GatewayStatus) GetDetails() *_struct.Struct { +func (x *GatewayStatus) GetDetails() *structpb.Struct { if x != nil { return x.Details } return nil } -type VirtualServiceSelectorExpressions_Expression struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type GatewayNamespacedStatuses struct { + state protoimpl.MessageState `protogen:"open.v1"` + Statuses map[string]*GatewayStatus `protobuf:"bytes,1,rep,name=statuses,proto3" json:"statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - // Kubernetes label key, must conform to Kubernetes syntax requirements - // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - // The operator can only be in, notin, =, ==, !=, exists, ! (DoesNotExist), gt (GreaterThan), lt (LessThan). - Operator VirtualServiceSelectorExpressions_Expression_Operator `protobuf:"varint,2,opt,name=operator,proto3,enum=gateway.solo.io.VirtualServiceSelectorExpressions_Expression_Operator" json:"operator,omitempty"` - Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *VirtualServiceSelectorExpressions_Expression) Reset() { - *x = VirtualServiceSelectorExpressions_Expression{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *GatewayNamespacedStatuses) Reset() { + *x = GatewayNamespacedStatuses{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *VirtualServiceSelectorExpressions_Expression) String() string { +func (x *GatewayNamespacedStatuses) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VirtualServiceSelectorExpressions_Expression) ProtoMessage() {} +func (*GatewayNamespacedStatuses) ProtoMessage() {} -func (x *VirtualServiceSelectorExpressions_Expression) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { +func (x *GatewayNamespacedStatuses) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[8] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -667,35 +885,21 @@ func (x *VirtualServiceSelectorExpressions_Expression) ProtoReflect() protorefle return mi.MessageOf(x) } -// Deprecated: Use VirtualServiceSelectorExpressions_Expression.ProtoReflect.Descriptor instead. -func (*VirtualServiceSelectorExpressions_Expression) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescGZIP(), []int{3, 0} -} - -func (x *VirtualServiceSelectorExpressions_Expression) GetKey() string { - if x != nil { - return x.Key - } - return "" +// Deprecated: Use GatewayNamespacedStatuses.ProtoReflect.Descriptor instead. +func (*GatewayNamespacedStatuses) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescGZIP(), []int{8} } -func (x *VirtualServiceSelectorExpressions_Expression) GetOperator() VirtualServiceSelectorExpressions_Expression_Operator { +func (x *GatewayNamespacedStatuses) GetStatuses() map[string]*GatewayStatus { if x != nil { - return x.Operator - } - return VirtualServiceSelectorExpressions_Expression_Equals -} - -func (x *VirtualServiceSelectorExpressions_Expression) GetValues() []string { - if x != nil { - return x.Values + return x.Statuses } return nil } var File_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDesc = string([]byte{ 0x0a, 0x3e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, @@ -712,76 +916,82 @@ var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDesc 0x6f, 0x1a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdd, 0x03, 0x0a, - 0x0b, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x10, 0x0a, 0x03, - 0x73, 0x73, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x73, 0x73, 0x6c, 0x12, 0x21, - 0x0a, 0x0c, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x69, 0x6e, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x37, - 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x5f, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x75, 0x73, - 0x65, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x41, 0x0a, 0x0c, 0x68, - 0x74, 0x74, 0x70, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x48, - 0x00, 0x52, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x3e, - 0x0a, 0x0b, 0x74, 0x63, 0x70, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x63, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x48, 0x00, 0x52, 0x0a, 0x74, 0x63, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x1f, - 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0c, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, - 0x4c, 0x0a, 0x0d, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x0c, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0d, 0x0a, - 0x0b, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x81, 0x04, 0x0a, - 0x0b, 0x48, 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x44, 0x0a, 0x10, - 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, - 0x66, 0x52, 0x0f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x12, 0x72, 0x0a, 0x18, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, - 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x72, 0x0a, 0x1b, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, - 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, - 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x19, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, - 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x76, 0x69, - 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x18, - 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4c, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x49, 0x0a, 0x1b, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x48, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x63, 0x70, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x63, 0x6d, + 0x2f, 0x68, 0x63, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3b, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x73, 0x6c, 0x2f, 0x73, 0x73, + 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x2f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb0, 0x04, + 0x0a, 0x0b, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x10, 0x0a, + 0x03, 0x73, 0x73, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x73, 0x73, 0x6c, 0x12, + 0x21, 0x0a, 0x0c, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x69, 0x6e, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x12, + 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x5f, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x18, + 0x01, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x41, 0x0a, 0x0c, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x12, 0x3e, 0x0a, 0x0b, 0x74, 0x63, 0x70, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x63, 0x70, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x63, 0x70, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x12, 0x47, 0x0a, 0x0e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x5f, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x79, + 0x62, 0x72, 0x69, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x48, 0x00, 0x52, 0x0d, 0x68, + 0x79, 0x62, 0x72, 0x69, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x1f, 0x0a, 0x0b, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x4c, 0x0a, + 0x0d, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x7c, 0x0a, 0x0a, 0x54, 0x63, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x32, 0x0a, 0x09, 0x74, 0x63, 0x70, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, @@ -789,127 +999,210 @@ var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDesc 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x63, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xab, - 0x03, 0x0a, 0x21, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, 0x72, 0x74, - 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xa4, 0x02, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x62, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x46, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, - 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, - 0x0a, 0x0a, 0x06, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x44, - 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x10, 0x01, 0x12, 0x0d, 0x0a, - 0x09, 0x4e, 0x6f, 0x74, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x10, 0x02, 0x12, 0x06, 0x0a, 0x02, - 0x49, 0x6e, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x10, 0x04, 0x12, - 0x0a, 0x0a, 0x06, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x44, - 0x6f, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0x06, 0x12, 0x0f, 0x0a, - 0x0b, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x10, 0x07, 0x12, 0x0c, - 0x0a, 0x08, 0x4c, 0x65, 0x73, 0x73, 0x54, 0x68, 0x61, 0x6e, 0x10, 0x08, 0x22, 0xca, 0x03, 0x0a, - 0x0d, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3a, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x96, + 0x02, 0x0a, 0x0d, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x12, 0x4a, 0x0a, 0x10, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x5d, 0x0a, 0x17, + 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x62, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x42, 0x79, 0x12, 0x6a, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x2e, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x73, 0x75, 0x62, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, - 0x31, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x1a, 0x66, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x34, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x05, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, - 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0c, - 0x0a, 0x08, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, - 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x42, 0x41, 0x5a, 0x37, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2f, 0x76, 0x31, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} + 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x48, 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x52, 0x15, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x48, + 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x5a, 0x0a, 0x16, 0x64, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x63, 0x70, 0x5f, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x54, 0x63, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x52, 0x14, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x54, 0x63, 0x70, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x22, 0x8f, 0x03, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, + 0x67, 0x61, 0x74, 0x65, 0x64, 0x48, 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x12, 0x2d, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x48, 0x00, 0x52, 0x03, 0x72, 0x65, 0x66, 0x12, + 0x43, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x12, 0x36, 0x0a, 0x17, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, + 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x68, + 0x69, 0x6c, 0x64, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, 0x80, 0x01, 0x0a, + 0x20, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x52, 0x1d, 0x68, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, + 0x36, 0x0a, 0x0a, 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x73, 0x73, + 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x10, 0x0a, 0x0e, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x13, 0x44, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x54, 0x63, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x12, 0x2d, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x48, 0x00, 0x52, 0x03, 0x72, 0x65, 0x66, + 0x12, 0x43, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x08, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x10, 0x0a, 0x0e, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xd6, 0x01, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x32, 0x0a, 0x07, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x41, + 0x0a, 0x0c, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x12, 0x3e, 0x0a, 0x0b, 0x74, 0x63, 0x70, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x63, 0x70, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x63, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, + 0x22, 0xd8, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x0a, + 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x59, 0x0a, 0x14, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x69, 0x64, 0x72, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x12, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, + 0x3a, 0x0a, 0x19, 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x63, + 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x17, 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x43, + 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x22, 0xca, 0x03, 0x0a, 0x0d, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3a, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, + 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, + 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x42, 0x79, 0x12, 0x6a, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x37, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x2e, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x73, 0x75, 0x62, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x31, + 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x1a, 0x66, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x34, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x05, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, + 0x0c, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0c, 0x0a, + 0x08, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x57, + 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x22, 0xce, 0x01, 0x0a, 0x19, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, 0x5b, 0x0a, 0x0d, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x34, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x45, 0xb8, 0xf5, 0x04, 0x01, 0xc0, + 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 8) -var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_goTypes = []interface{}{ - (VirtualServiceSelectorExpressions_Expression_Operator)(0), // 0: gateway.solo.io.VirtualServiceSelectorExpressions.Expression.Operator - (GatewayStatus_State)(0), // 1: gateway.solo.io.GatewayStatus.State - (*GatewaySpec)(nil), // 2: gateway.solo.io.GatewaySpec - (*HttpGateway)(nil), // 3: gateway.solo.io.HttpGateway - (*TcpGateway)(nil), // 4: gateway.solo.io.TcpGateway - (*VirtualServiceSelectorExpressions)(nil), // 5: gateway.solo.io.VirtualServiceSelectorExpressions - (*GatewayStatus)(nil), // 6: gateway.solo.io.GatewayStatus - nil, // 7: gateway.solo.io.HttpGateway.VirtualServiceSelectorEntry - (*VirtualServiceSelectorExpressions_Expression)(nil), // 8: gateway.solo.io.VirtualServiceSelectorExpressions.Expression - nil, // 9: gateway.solo.io.GatewayStatus.SubresourceStatusesEntry - (*v1.ListenerOptions)(nil), // 10: gloo.solo.io.ListenerOptions - (*wrappers.BoolValue)(nil), // 11: google.protobuf.BoolValue - (*v1.RouteConfigurationOptions)(nil), // 12: gloo.solo.io.RouteConfigurationOptions - (*core.ResourceRef)(nil), // 13: core.solo.io.ResourceRef - (*v1.HttpListenerOptions)(nil), // 14: gloo.solo.io.HttpListenerOptions - (*v1.TcpHost)(nil), // 15: gloo.solo.io.TcpHost - (*v1.TcpListenerOptions)(nil), // 16: gloo.solo.io.TcpListenerOptions - (*_struct.Struct)(nil), // 17: google.protobuf.Struct +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_goTypes = []any{ + (GatewayStatus_State)(0), // 0: gateway.solo.io.GatewayStatus.State + (*GatewaySpec)(nil), // 1: gateway.solo.io.GatewaySpec + (*TcpGateway)(nil), // 2: gateway.solo.io.TcpGateway + (*HybridGateway)(nil), // 3: gateway.solo.io.HybridGateway + (*DelegatedHttpGateway)(nil), // 4: gateway.solo.io.DelegatedHttpGateway + (*DelegatedTcpGateway)(nil), // 5: gateway.solo.io.DelegatedTcpGateway + (*MatchedGateway)(nil), // 6: gateway.solo.io.MatchedGateway + (*Matcher)(nil), // 7: gateway.solo.io.Matcher + (*GatewayStatus)(nil), // 8: gateway.solo.io.GatewayStatus + (*GatewayNamespacedStatuses)(nil), // 9: gateway.solo.io.GatewayNamespacedStatuses + nil, // 10: gateway.solo.io.GatewayStatus.SubresourceStatusesEntry + nil, // 11: gateway.solo.io.GatewayNamespacedStatuses.StatusesEntry + (*v1.ListenerOptions)(nil), // 12: gloo.solo.io.ListenerOptions + (*wrapperspb.BoolValue)(nil), // 13: google.protobuf.BoolValue + (*HttpGateway)(nil), // 14: gateway.solo.io.HttpGateway + (*v1.RouteConfigurationOptions)(nil), // 15: gloo.solo.io.RouteConfigurationOptions + (*v1.TcpHost)(nil), // 16: gloo.solo.io.TcpHost + (*v1.TcpListenerOptions)(nil), // 17: gloo.solo.io.TcpListenerOptions + (*core.ResourceRef)(nil), // 18: core.solo.io.ResourceRef + (*selectors.Selector)(nil), // 19: selectors.core.gloo.solo.io.Selector + (*hcm.HttpConnectionManagerSettings)(nil), // 20: hcm.options.gloo.solo.io.HttpConnectionManagerSettings + (*ssl.SslConfig)(nil), // 21: gloo.solo.io.SslConfig + (*v3.CidrRange)(nil), // 22: solo.io.envoy.config.core.v3.CidrRange + (*structpb.Struct)(nil), // 23: google.protobuf.Struct } var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_depIdxs = []int32{ - 10, // 0: gateway.solo.io.GatewaySpec.options:type_name -> gloo.solo.io.ListenerOptions - 11, // 1: gateway.solo.io.GatewaySpec.use_proxy_proto:type_name -> google.protobuf.BoolValue - 3, // 2: gateway.solo.io.GatewaySpec.http_gateway:type_name -> gateway.solo.io.HttpGateway - 4, // 3: gateway.solo.io.GatewaySpec.tcp_gateway:type_name -> gateway.solo.io.TcpGateway - 12, // 4: gateway.solo.io.GatewaySpec.route_options:type_name -> gloo.solo.io.RouteConfigurationOptions - 13, // 5: gateway.solo.io.HttpGateway.virtual_services:type_name -> core.solo.io.ResourceRef - 7, // 6: gateway.solo.io.HttpGateway.virtual_service_selector:type_name -> gateway.solo.io.HttpGateway.VirtualServiceSelectorEntry - 5, // 7: gateway.solo.io.HttpGateway.virtual_service_expressions:type_name -> gateway.solo.io.VirtualServiceSelectorExpressions - 14, // 8: gateway.solo.io.HttpGateway.options:type_name -> gloo.solo.io.HttpListenerOptions - 15, // 9: gateway.solo.io.TcpGateway.tcp_hosts:type_name -> gloo.solo.io.TcpHost - 16, // 10: gateway.solo.io.TcpGateway.options:type_name -> gloo.solo.io.TcpListenerOptions - 8, // 11: gateway.solo.io.VirtualServiceSelectorExpressions.expressions:type_name -> gateway.solo.io.VirtualServiceSelectorExpressions.Expression - 1, // 12: gateway.solo.io.GatewayStatus.state:type_name -> gateway.solo.io.GatewayStatus.State - 9, // 13: gateway.solo.io.GatewayStatus.subresource_statuses:type_name -> gateway.solo.io.GatewayStatus.SubresourceStatusesEntry - 17, // 14: gateway.solo.io.GatewayStatus.details:type_name -> google.protobuf.Struct - 0, // 15: gateway.solo.io.VirtualServiceSelectorExpressions.Expression.operator:type_name -> gateway.solo.io.VirtualServiceSelectorExpressions.Expression.Operator - 6, // 16: gateway.solo.io.GatewayStatus.SubresourceStatusesEntry.value:type_name -> gateway.solo.io.GatewayStatus - 17, // [17:17] is the sub-list for method output_type - 17, // [17:17] is the sub-list for method input_type - 17, // [17:17] is the sub-list for extension type_name - 17, // [17:17] is the sub-list for extension extendee - 0, // [0:17] is the sub-list for field type_name + 12, // 0: gateway.solo.io.GatewaySpec.options:type_name -> gloo.solo.io.ListenerOptions + 13, // 1: gateway.solo.io.GatewaySpec.use_proxy_proto:type_name -> google.protobuf.BoolValue + 14, // 2: gateway.solo.io.GatewaySpec.http_gateway:type_name -> gateway.solo.io.HttpGateway + 2, // 3: gateway.solo.io.GatewaySpec.tcp_gateway:type_name -> gateway.solo.io.TcpGateway + 3, // 4: gateway.solo.io.GatewaySpec.hybrid_gateway:type_name -> gateway.solo.io.HybridGateway + 15, // 5: gateway.solo.io.GatewaySpec.route_options:type_name -> gloo.solo.io.RouteConfigurationOptions + 16, // 6: gateway.solo.io.TcpGateway.tcp_hosts:type_name -> gloo.solo.io.TcpHost + 17, // 7: gateway.solo.io.TcpGateway.options:type_name -> gloo.solo.io.TcpListenerOptions + 6, // 8: gateway.solo.io.HybridGateway.matched_gateways:type_name -> gateway.solo.io.MatchedGateway + 4, // 9: gateway.solo.io.HybridGateway.delegated_http_gateways:type_name -> gateway.solo.io.DelegatedHttpGateway + 5, // 10: gateway.solo.io.HybridGateway.delegated_tcp_gateways:type_name -> gateway.solo.io.DelegatedTcpGateway + 18, // 11: gateway.solo.io.DelegatedHttpGateway.ref:type_name -> core.solo.io.ResourceRef + 19, // 12: gateway.solo.io.DelegatedHttpGateway.selector:type_name -> selectors.core.gloo.solo.io.Selector + 20, // 13: gateway.solo.io.DelegatedHttpGateway.http_connection_manager_settings:type_name -> hcm.options.gloo.solo.io.HttpConnectionManagerSettings + 21, // 14: gateway.solo.io.DelegatedHttpGateway.ssl_config:type_name -> gloo.solo.io.SslConfig + 18, // 15: gateway.solo.io.DelegatedTcpGateway.ref:type_name -> core.solo.io.ResourceRef + 19, // 16: gateway.solo.io.DelegatedTcpGateway.selector:type_name -> selectors.core.gloo.solo.io.Selector + 7, // 17: gateway.solo.io.MatchedGateway.matcher:type_name -> gateway.solo.io.Matcher + 14, // 18: gateway.solo.io.MatchedGateway.http_gateway:type_name -> gateway.solo.io.HttpGateway + 2, // 19: gateway.solo.io.MatchedGateway.tcp_gateway:type_name -> gateway.solo.io.TcpGateway + 21, // 20: gateway.solo.io.Matcher.ssl_config:type_name -> gloo.solo.io.SslConfig + 22, // 21: gateway.solo.io.Matcher.source_prefix_ranges:type_name -> solo.io.envoy.config.core.v3.CidrRange + 0, // 22: gateway.solo.io.GatewayStatus.state:type_name -> gateway.solo.io.GatewayStatus.State + 10, // 23: gateway.solo.io.GatewayStatus.subresource_statuses:type_name -> gateway.solo.io.GatewayStatus.SubresourceStatusesEntry + 23, // 24: gateway.solo.io.GatewayStatus.details:type_name -> google.protobuf.Struct + 11, // 25: gateway.solo.io.GatewayNamespacedStatuses.statuses:type_name -> gateway.solo.io.GatewayNamespacedStatuses.StatusesEntry + 8, // 26: gateway.solo.io.GatewayStatus.SubresourceStatusesEntry.value:type_name -> gateway.solo.io.GatewayStatus + 8, // 27: gateway.solo.io.GatewayNamespacedStatuses.StatusesEntry.value:type_name -> gateway.solo.io.GatewayStatus + 28, // [28:28] is the sub-list for method output_type + 28, // [28:28] is the sub-list for method input_type + 28, // [28:28] is the sub-list for extension type_name + 28, // [28:28] is the sub-list for extension extendee + 0, // [0:28] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_init() } @@ -917,91 +1210,31 @@ func file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_init() if File_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GatewaySpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HttpGateway); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TcpGateway); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VirtualServiceSelectorExpressions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GatewayStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VirtualServiceSelectorExpressions_Expression); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_init() + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[0].OneofWrappers = []any{ (*GatewaySpec_HttpGateway)(nil), (*GatewaySpec_TcpGateway)(nil), + (*GatewaySpec_HybridGateway)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[3].OneofWrappers = []any{ + (*DelegatedHttpGateway_Ref)(nil), + (*DelegatedHttpGateway_Selector)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[4].OneofWrappers = []any{ + (*DelegatedTcpGateway_Ref)(nil), + (*DelegatedTcpGateway_Selector)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes[5].OneofWrappers = []any{ + (*MatchedGateway_HttpGateway)(nil), + (*MatchedGateway_TcpGateway)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDesc, - NumEnums: 2, - NumMessages: 8, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDesc)), + NumEnums: 1, + NumMessages: 11, NumExtensions: 0, NumServices: 0, }, @@ -1011,7 +1244,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_init() MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_depIdxs = nil } diff --git a/pkg/api/gateway.solo.io/v1/gateway.pb.hash.go b/pkg/api/gateway.solo.io/v1/gateway.pb.hash.go index 84550616b..9439e9c3d 100644 --- a/pkg/api/gateway.solo.io/v1/gateway.pb.hash.go +++ b/pkg/api/gateway.solo.io/v1/gateway.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GatewaySpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -53,28 +57,40 @@ func (m *GatewaySpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetUseProxyProto()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UseProxyProto")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetUseProxyProto(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetUseProxyProto(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("UseProxyProto")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -89,14 +105,20 @@ func (m *GatewaySpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetRouteOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RouteOptions")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRouteOptions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRouteOptions(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RouteOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -107,14 +129,20 @@ func (m *GatewaySpec) Hash(hasher hash.Hash64) (uint64, error) { case *GatewaySpec_HttpGateway: if h, ok := interface{}(m.GetHttpGateway()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpGateway")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHttpGateway(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHttpGateway(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HttpGateway")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -123,14 +151,42 @@ func (m *GatewaySpec) Hash(hasher hash.Hash64) (uint64, error) { case *GatewaySpec_TcpGateway: if h, ok := interface{}(m.GetTcpGateway()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpGateway")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTcpGateway(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTcpGateway(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TcpGateway")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *GatewaySpec_HybridGateway: + + if h, ok := interface{}(m.GetHybridGateway()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HybridGateway")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHybridGateway(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HybridGateway")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -142,7 +198,11 @@ func (m *GatewaySpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function -func (m *HttpGateway) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *TcpGateway) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -150,21 +210,27 @@ func (m *HttpGateway) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.HttpGateway")); err != nil { + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.TcpGateway")); err != nil { return 0, err } - for _, v := range m.GetVirtualServices() { + for _, v := range m.GetTcpHosts() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -172,70 +238,232 @@ func (m *HttpGateway) Hash(hasher hash.Hash64) (uint64, error) { } - { - var result uint64 - innerHash := fnv.New64() - for k, v := range m.GetVirtualServiceSelector() { - innerHash.Reset() - - if _, err = innerHash.Write([]byte(v)); err != nil { + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { return 0, err } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } - if _, err = innerHash.Write([]byte(k)); err != nil { + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HybridGateway) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.HybridGateway")); err != nil { + return 0, err + } + + for _, v := range m.GetMatchedGateways() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } } + } - result = result ^ innerHash.Sum64() + } + + if h, ok := interface{}(m.GetDelegatedHttpGateways()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DelegatedHttpGateways")); err != nil { + return 0, err } - err = binary.Write(hasher, binary.LittleEndian, result) - if err != nil { + if _, err = h.Hash(hasher); err != nil { return 0, err } - + } else { + if fieldValue, err := hashstructure.Hash(m.GetDelegatedHttpGateways(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DelegatedHttpGateways")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } - if h, ok := interface{}(m.GetVirtualServiceExpressions()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetDelegatedTcpGateways()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DelegatedTcpGateways")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetVirtualServiceExpressions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDelegatedTcpGateways(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DelegatedTcpGateways")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - for _, v := range m.GetVirtualServiceNamespaces() { + return hasher.Sum64(), nil +} - if _, err = hasher.Write([]byte(v)); err != nil { +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *DelegatedHttpGateway) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.DelegatedHttpGateway")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetPreventChildOverrides()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHttpConnectionManagerSettings()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpConnectionManagerSettings")); err != nil { return 0, err } - + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpConnectionManagerSettings(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpConnectionManagerSettings")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } - if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.SelectionType.(type) { + + case *DelegatedHttpGateway_Ref: + + if h, ok := interface{}(m.GetRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ref")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Ref")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *DelegatedHttpGateway_Selector: + + if h, ok := interface{}(m.GetSelector()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Selector")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSelector(), nil); err != nil { return 0, err + } else { + if _, err = hasher.Write([]byte("Selector")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } } } + } return hasher.Sum64(), nil } // Hash function -func (m *TcpGateway) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *DelegatedTcpGateway) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -243,21 +471,51 @@ func (m *TcpGateway) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.TcpGateway")); err != nil { + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.DelegatedTcpGateway")); err != nil { return 0, err } - for _, v := range m.GetTcpHosts() { + switch m.SelectionType.(type) { - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + case *DelegatedTcpGateway_Ref: + + if h, ok := interface{}(m.GetRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ref")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Ref")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *DelegatedTcpGateway_Selector: + + if h, ok := interface{}(m.GetSelector()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Selector")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSelector(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Selector")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -265,25 +523,103 @@ func (m *TcpGateway) Hash(hasher hash.Hash64) (uint64, error) { } - if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *MatchedGateway) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.MatchedGateway")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMatcher(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.GatewayType.(type) { + + case *MatchedGateway_HttpGateway: + + if h, ok := interface{}(m.GetHttpGateway()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpGateway")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpGateway(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpGateway")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *MatchedGateway_TcpGateway: + + if h, ok := interface{}(m.GetTcpGateway()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpGateway")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTcpGateway(), nil); err != nil { return 0, err + } else { + if _, err = hasher.Write([]byte("TcpGateway")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } } } + } return hasher.Sum64(), nil } // Hash function -func (m *VirtualServiceSelectorExpressions) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Matcher) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -291,21 +627,47 @@ func (m *VirtualServiceSelectorExpressions) Hash(hasher hash.Hash64) (uint64, er hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.VirtualServiceSelectorExpressions")); err != nil { + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.Matcher")); err != nil { return 0, err } - for _, v := range m.GetExpressions() { + if h, ok := interface{}(m.GetSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetSourcePrefixRanges() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -313,10 +675,22 @@ func (m *VirtualServiceSelectorExpressions) Hash(hasher hash.Hash64) (uint64, er } + for _, v := range m.GetPassthroughCipherSuites() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GatewayStatus) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -349,14 +723,20 @@ func (m *GatewayStatus) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -376,14 +756,20 @@ func (m *GatewayStatus) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -393,7 +779,11 @@ func (m *GatewayStatus) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function -func (m *VirtualServiceSelectorExpressions_Expression) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *GatewayNamespacedStatuses) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -401,22 +791,44 @@ func (m *VirtualServiceSelectorExpressions_Expression) Hash(hasher hash.Hash64) hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.VirtualServiceSelectorExpressions_Expression")); err != nil { + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.GatewayNamespacedStatuses")); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetKey())); err != nil { - return 0, err - } + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() - err = binary.Write(hasher, binary.LittleEndian, m.GetOperator()) - if err != nil { - return 0, err - } + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } - for _, v := range m.GetValues() { + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } - if _, err = hasher.Write([]byte(v)); err != nil { + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { return 0, err } diff --git a/pkg/api/gateway.solo.io/v1/gateway.pb.uniquehash.go b/pkg/api/gateway.solo.io/v1/gateway.pb.uniquehash.go new file mode 100644 index 000000000..f7ec4d608 --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/gateway.pb.uniquehash.go @@ -0,0 +1,894 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/gateway.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GatewaySpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.GatewaySpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Ssl")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetSsl()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("BindAddress")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetBindAddress())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("BindPort")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetBindPort()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetUseProxyProto()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UseProxyProto")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUseProxyProto(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UseProxyProto")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("ProxyNames")); err != nil { + return 0, err + } + for i, v := range m.GetProxyNames() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetRouteOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RouteOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRouteOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RouteOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.GatewayType.(type) { + + case *GatewaySpec_HttpGateway: + + if h, ok := interface{}(m.GetHttpGateway()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpGateway")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpGateway(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpGateway")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *GatewaySpec_TcpGateway: + + if h, ok := interface{}(m.GetTcpGateway()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpGateway")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTcpGateway(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TcpGateway")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *GatewaySpec_HybridGateway: + + if h, ok := interface{}(m.GetHybridGateway()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HybridGateway")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHybridGateway(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HybridGateway")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TcpGateway) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.TcpGateway")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TcpHosts")); err != nil { + return 0, err + } + for i, v := range m.GetTcpHosts() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HybridGateway) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.HybridGateway")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MatchedGateways")); err != nil { + return 0, err + } + for i, v := range m.GetMatchedGateways() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetDelegatedHttpGateways()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DelegatedHttpGateways")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDelegatedHttpGateways(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DelegatedHttpGateways")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDelegatedTcpGateways()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DelegatedTcpGateways")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDelegatedTcpGateways(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DelegatedTcpGateways")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DelegatedHttpGateway) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.DelegatedHttpGateway")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("PreventChildOverrides")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPreventChildOverrides()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHttpConnectionManagerSettings()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpConnectionManagerSettings")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpConnectionManagerSettings(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpConnectionManagerSettings")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.SelectionType.(type) { + + case *DelegatedHttpGateway_Ref: + + if h, ok := interface{}(m.GetRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ref")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Ref")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *DelegatedHttpGateway_Selector: + + if h, ok := interface{}(m.GetSelector()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Selector")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSelector(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Selector")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DelegatedTcpGateway) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.DelegatedTcpGateway")); err != nil { + return 0, err + } + + switch m.SelectionType.(type) { + + case *DelegatedTcpGateway_Ref: + + if h, ok := interface{}(m.GetRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ref")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Ref")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *DelegatedTcpGateway_Selector: + + if h, ok := interface{}(m.GetSelector()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Selector")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSelector(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Selector")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MatchedGateway) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.MatchedGateway")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMatcher(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.GatewayType.(type) { + + case *MatchedGateway_HttpGateway: + + if h, ok := interface{}(m.GetHttpGateway()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpGateway")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpGateway(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpGateway")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *MatchedGateway_TcpGateway: + + if h, ok := interface{}(m.GetTcpGateway()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpGateway")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTcpGateway(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TcpGateway")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Matcher) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.Matcher")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("SourcePrefixRanges")); err != nil { + return 0, err + } + for i, v := range m.GetSourcePrefixRanges() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("PassthroughCipherSuites")); err != nil { + return 0, err + } + for i, v := range m.GetPassthroughCipherSuites() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GatewayStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.GatewayStatus")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("State")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Reason")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ReportedBy")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GatewayNamespacedStatuses) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.GatewayNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gateway.solo.io/v1/gloo_json.gen.go b/pkg/api/gateway.solo.io/v1/gloo_json.gen.go new file mode 100644 index 000000000..59236cdfb --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/gloo_json.gen.go @@ -0,0 +1,441 @@ +// Code generated by skv2. DO NOT EDIT. + +// Generated json marshal and unmarshal functions + +package v1 + +import ( + bytes "bytes" + fmt "fmt" + math "math" + + jsonpb "github.com/golang/protobuf/jsonpb" + proto "github.com/golang/protobuf/proto" + skv2jsonpb "github.com/solo-io/skv2/pkg/kube_jsonpb" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +var ( + marshaller = &skv2jsonpb.Marshaler{EnumsAsInts: true} + unmarshaller = &jsonpb.Unmarshaler{ + AllowUnknownFields: true, + } +) + +// MarshalJSON is a custom marshaler for GatewaySpec +func (this *GatewaySpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for GatewaySpec +func (this *GatewaySpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for GatewayStatus +func (this *GatewayStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for GatewayStatus +func (this *GatewayStatus) UnmarshalJSON(b []byte) error { + // First try to unmarshal directly into GatewayStatus + temp := &GatewayStatus{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), temp); err == nil { + // Check if the unmarshaled result has meaningful content + // If it has non-empty fields, use it; otherwise fall back to NamespacedStatuses + if temp.GetReason() != "" || temp.GetReportedBy() != "" { + *this = *temp + return nil + } + } + + // Fall back to unmarshaling into GatewayNamespacedStatuses + namespacedStatuses := GatewayNamespacedStatuses{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), &namespacedStatuses); err != nil { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) + } + + for _, status := range namespacedStatuses.GetStatuses() { + // take the first status + if status != nil { + status.DeepCopyInto(this) + return nil + } + } + return nil +} + +// MarshalJSON is a custom marshaler for HttpListenerOptionSpec +func (this *HttpListenerOptionSpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for HttpListenerOptionSpec +func (this *HttpListenerOptionSpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for HttpListenerOptionStatus +func (this *HttpListenerOptionStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for HttpListenerOptionStatus +func (this *HttpListenerOptionStatus) UnmarshalJSON(b []byte) error { + // First try to unmarshal directly into HttpListenerOptionStatus + temp := &HttpListenerOptionStatus{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), temp); err == nil { + // Check if the unmarshaled result has meaningful content + // If it has non-empty fields, use it; otherwise fall back to NamespacedStatuses + if temp.GetReason() != "" || temp.GetReportedBy() != "" { + *this = *temp + return nil + } + } + + // Fall back to unmarshaling into HttpListenerOptionNamespacedStatuses + namespacedStatuses := HttpListenerOptionNamespacedStatuses{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), &namespacedStatuses); err != nil { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) + } + + for _, status := range namespacedStatuses.GetStatuses() { + // take the first status + if status != nil { + status.DeepCopyInto(this) + return nil + } + } + return nil +} + +// MarshalJSON is a custom marshaler for ListenerOptionSpec +func (this *ListenerOptionSpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for ListenerOptionSpec +func (this *ListenerOptionSpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for ListenerOptionStatus +func (this *ListenerOptionStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for ListenerOptionStatus +func (this *ListenerOptionStatus) UnmarshalJSON(b []byte) error { + // First try to unmarshal directly into ListenerOptionStatus + temp := &ListenerOptionStatus{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), temp); err == nil { + // Check if the unmarshaled result has meaningful content + // If it has non-empty fields, use it; otherwise fall back to NamespacedStatuses + if temp.GetReason() != "" || temp.GetReportedBy() != "" { + *this = *temp + return nil + } + } + + // Fall back to unmarshaling into ListenerOptionNamespacedStatuses + namespacedStatuses := ListenerOptionNamespacedStatuses{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), &namespacedStatuses); err != nil { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) + } + + for _, status := range namespacedStatuses.GetStatuses() { + // take the first status + if status != nil { + status.DeepCopyInto(this) + return nil + } + } + return nil +} + +// MarshalJSON is a custom marshaler for MatchableHttpGatewaySpec +func (this *MatchableHttpGatewaySpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for MatchableHttpGatewaySpec +func (this *MatchableHttpGatewaySpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for MatchableHttpGatewayStatus +func (this *MatchableHttpGatewayStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for MatchableHttpGatewayStatus +func (this *MatchableHttpGatewayStatus) UnmarshalJSON(b []byte) error { + // First try to unmarshal directly into MatchableHttpGatewayStatus + temp := &MatchableHttpGatewayStatus{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), temp); err == nil { + // Check if the unmarshaled result has meaningful content + // If it has non-empty fields, use it; otherwise fall back to NamespacedStatuses + if temp.GetReason() != "" || temp.GetReportedBy() != "" { + *this = *temp + return nil + } + } + + // Fall back to unmarshaling into MatchableHttpGatewayNamespacedStatuses + namespacedStatuses := MatchableHttpGatewayNamespacedStatuses{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), &namespacedStatuses); err != nil { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) + } + + for _, status := range namespacedStatuses.GetStatuses() { + // take the first status + if status != nil { + status.DeepCopyInto(this) + return nil + } + } + return nil +} + +// MarshalJSON is a custom marshaler for MatchableTcpGatewaySpec +func (this *MatchableTcpGatewaySpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for MatchableTcpGatewaySpec +func (this *MatchableTcpGatewaySpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for MatchableTcpGatewayStatus +func (this *MatchableTcpGatewayStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for MatchableTcpGatewayStatus +func (this *MatchableTcpGatewayStatus) UnmarshalJSON(b []byte) error { + // First try to unmarshal directly into MatchableTcpGatewayStatus + temp := &MatchableTcpGatewayStatus{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), temp); err == nil { + // Check if the unmarshaled result has meaningful content + // If it has non-empty fields, use it; otherwise fall back to NamespacedStatuses + if temp.GetReason() != "" || temp.GetReportedBy() != "" { + *this = *temp + return nil + } + } + + // Fall back to unmarshaling into MatchableTcpGatewayNamespacedStatuses + namespacedStatuses := MatchableTcpGatewayNamespacedStatuses{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), &namespacedStatuses); err != nil { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) + } + + for _, status := range namespacedStatuses.GetStatuses() { + // take the first status + if status != nil { + status.DeepCopyInto(this) + return nil + } + } + return nil +} + +// MarshalJSON is a custom marshaler for RouteOptionSpec +func (this *RouteOptionSpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for RouteOptionSpec +func (this *RouteOptionSpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for RouteOptionStatus +func (this *RouteOptionStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for RouteOptionStatus +func (this *RouteOptionStatus) UnmarshalJSON(b []byte) error { + // First try to unmarshal directly into RouteOptionStatus + temp := &RouteOptionStatus{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), temp); err == nil { + // Check if the unmarshaled result has meaningful content + // If it has non-empty fields, use it; otherwise fall back to NamespacedStatuses + if temp.GetReason() != "" || temp.GetReportedBy() != "" { + *this = *temp + return nil + } + } + + // Fall back to unmarshaling into RouteOptionNamespacedStatuses + namespacedStatuses := RouteOptionNamespacedStatuses{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), &namespacedStatuses); err != nil { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) + } + + for _, status := range namespacedStatuses.GetStatuses() { + // take the first status + if status != nil { + status.DeepCopyInto(this) + return nil + } + } + return nil +} + +// MarshalJSON is a custom marshaler for RouteTableSpec +func (this *RouteTableSpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for RouteTableSpec +func (this *RouteTableSpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for RouteTableStatus +func (this *RouteTableStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for RouteTableStatus +func (this *RouteTableStatus) UnmarshalJSON(b []byte) error { + // First try to unmarshal directly into RouteTableStatus + temp := &RouteTableStatus{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), temp); err == nil { + // Check if the unmarshaled result has meaningful content + // If it has non-empty fields, use it; otherwise fall back to NamespacedStatuses + if temp.GetReason() != "" || temp.GetReportedBy() != "" { + *this = *temp + return nil + } + } + + // Fall back to unmarshaling into RouteTableNamespacedStatuses + namespacedStatuses := RouteTableNamespacedStatuses{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), &namespacedStatuses); err != nil { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) + } + + for _, status := range namespacedStatuses.GetStatuses() { + // take the first status + if status != nil { + status.DeepCopyInto(this) + return nil + } + } + return nil +} + +// MarshalJSON is a custom marshaler for VirtualServiceSpec +func (this *VirtualServiceSpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for VirtualServiceSpec +func (this *VirtualServiceSpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for VirtualServiceStatus +func (this *VirtualServiceStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for VirtualServiceStatus +func (this *VirtualServiceStatus) UnmarshalJSON(b []byte) error { + // First try to unmarshal directly into VirtualServiceStatus + temp := &VirtualServiceStatus{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), temp); err == nil { + // Check if the unmarshaled result has meaningful content + // If it has non-empty fields, use it; otherwise fall back to NamespacedStatuses + if temp.GetReason() != "" || temp.GetReportedBy() != "" { + *this = *temp + return nil + } + } + + // Fall back to unmarshaling into VirtualServiceNamespacedStatuses + namespacedStatuses := VirtualServiceNamespacedStatuses{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), &namespacedStatuses); err != nil { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) + } + + for _, status := range namespacedStatuses.GetStatuses() { + // take the first status + if status != nil { + status.DeepCopyInto(this) + return nil + } + } + return nil +} + +// MarshalJSON is a custom marshaler for VirtualHostOptionSpec +func (this *VirtualHostOptionSpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for VirtualHostOptionSpec +func (this *VirtualHostOptionSpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for VirtualHostOptionStatus +func (this *VirtualHostOptionStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for VirtualHostOptionStatus +func (this *VirtualHostOptionStatus) UnmarshalJSON(b []byte) error { + // First try to unmarshal directly into VirtualHostOptionStatus + temp := &VirtualHostOptionStatus{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), temp); err == nil { + // Check if the unmarshaled result has meaningful content + // If it has non-empty fields, use it; otherwise fall back to NamespacedStatuses + if temp.GetReason() != "" || temp.GetReportedBy() != "" { + *this = *temp + return nil + } + } + + // Fall back to unmarshaling into VirtualHostOptionNamespacedStatuses + namespacedStatuses := VirtualHostOptionNamespacedStatuses{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), &namespacedStatuses); err != nil { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) + } + + for _, status := range namespacedStatuses.GetStatuses() { + // take the first status + if status != nil { + status.DeepCopyInto(this) + return nil + } + } + return nil +} diff --git a/pkg/api/gateway.solo.io/v1/http_gateway.pb.clone.go b/pkg/api/gateway.solo.io/v1/http_gateway.pb.clone.go new file mode 100644 index 000000000..83a5c80e8 --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/http_gateway.pb.clone.go @@ -0,0 +1,132 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/http_gateway.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *HttpGateway) Clone() proto.Message { + var target *HttpGateway + if m == nil { + return target + } + target = &HttpGateway{} + + if m.GetVirtualServices() != nil { + target.VirtualServices = make([]*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef, len(m.GetVirtualServices())) + for idx, v := range m.GetVirtualServices() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.VirtualServices[idx] = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.VirtualServices[idx] = proto.Clone(v).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + } + } + + if m.GetVirtualServiceSelector() != nil { + target.VirtualServiceSelector = make(map[string]string, len(m.GetVirtualServiceSelector())) + for k, v := range m.GetVirtualServiceSelector() { + + target.VirtualServiceSelector[k] = v + + } + } + + if h, ok := interface{}(m.GetVirtualServiceExpressions()).(clone.Cloner); ok { + target.VirtualServiceExpressions = h.Clone().(*VirtualServiceSelectorExpressions) + } else { + target.VirtualServiceExpressions = proto.Clone(m.GetVirtualServiceExpressions()).(*VirtualServiceSelectorExpressions) + } + + if m.GetVirtualServiceNamespaces() != nil { + target.VirtualServiceNamespaces = make([]string, len(m.GetVirtualServiceNamespaces())) + for idx, v := range m.GetVirtualServiceNamespaces() { + + target.VirtualServiceNamespaces[idx] = v + + } + } + + if h, ok := interface{}(m.GetOptions()).(clone.Cloner); ok { + target.Options = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.HttpListenerOptions) + } else { + target.Options = proto.Clone(m.GetOptions()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.HttpListenerOptions) + } + + return target +} + +// Clone function +func (m *VirtualServiceSelectorExpressions) Clone() proto.Message { + var target *VirtualServiceSelectorExpressions + if m == nil { + return target + } + target = &VirtualServiceSelectorExpressions{} + + if m.GetExpressions() != nil { + target.Expressions = make([]*VirtualServiceSelectorExpressions_Expression, len(m.GetExpressions())) + for idx, v := range m.GetExpressions() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Expressions[idx] = h.Clone().(*VirtualServiceSelectorExpressions_Expression) + } else { + target.Expressions[idx] = proto.Clone(v).(*VirtualServiceSelectorExpressions_Expression) + } + + } + } + + return target +} + +// Clone function +func (m *VirtualServiceSelectorExpressions_Expression) Clone() proto.Message { + var target *VirtualServiceSelectorExpressions_Expression + if m == nil { + return target + } + target = &VirtualServiceSelectorExpressions_Expression{} + + target.Key = m.GetKey() + + target.Operator = m.GetOperator() + + if m.GetValues() != nil { + target.Values = make([]string, len(m.GetValues())) + for idx, v := range m.GetValues() { + + target.Values[idx] = v + + } + } + + return target +} diff --git a/pkg/api/gateway.solo.io/v1/http_gateway.pb.equal.go b/pkg/api/gateway.solo.io/v1/http_gateway.pb.equal.go new file mode 100644 index 000000000..c6cd3e57a --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/http_gateway.pb.equal.go @@ -0,0 +1,193 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/http_gateway.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *HttpGateway) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HttpGateway) + if !ok { + that2, ok := that.(HttpGateway) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetVirtualServices()) != len(target.GetVirtualServices()) { + return false + } + for idx, v := range m.GetVirtualServices() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetVirtualServices()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetVirtualServices()[idx]) { + return false + } + } + + } + + if len(m.GetVirtualServiceSelector()) != len(target.GetVirtualServiceSelector()) { + return false + } + for k, v := range m.GetVirtualServiceSelector() { + + if strings.Compare(v, target.GetVirtualServiceSelector()[k]) != 0 { + return false + } + + } + + if h, ok := interface{}(m.GetVirtualServiceExpressions()).(equality.Equalizer); ok { + if !h.Equal(target.GetVirtualServiceExpressions()) { + return false + } + } else { + if !proto.Equal(m.GetVirtualServiceExpressions(), target.GetVirtualServiceExpressions()) { + return false + } + } + + if len(m.GetVirtualServiceNamespaces()) != len(target.GetVirtualServiceNamespaces()) { + return false + } + for idx, v := range m.GetVirtualServiceNamespaces() { + + if strings.Compare(v, target.GetVirtualServiceNamespaces()[idx]) != 0 { + return false + } + + } + + if h, ok := interface{}(m.GetOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetOptions()) { + return false + } + } else { + if !proto.Equal(m.GetOptions(), target.GetOptions()) { + return false + } + } + + return true +} + +// Equal function +func (m *VirtualServiceSelectorExpressions) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*VirtualServiceSelectorExpressions) + if !ok { + that2, ok := that.(VirtualServiceSelectorExpressions) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetExpressions()) != len(target.GetExpressions()) { + return false + } + for idx, v := range m.GetExpressions() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetExpressions()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetExpressions()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *VirtualServiceSelectorExpressions_Expression) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*VirtualServiceSelectorExpressions_Expression) + if !ok { + that2, ok := that.(VirtualServiceSelectorExpressions_Expression) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetKey(), target.GetKey()) != 0 { + return false + } + + if m.GetOperator() != target.GetOperator() { + return false + } + + if len(m.GetValues()) != len(target.GetValues()) { + return false + } + for idx, v := range m.GetValues() { + + if strings.Compare(v, target.GetValues()[idx]) != 0 { + return false + } + + } + + return true +} diff --git a/pkg/api/gateway.solo.io/v1/http_gateway.pb.go b/pkg/api/gateway.solo.io/v1/http_gateway.pb.go new file mode 100644 index 000000000..035b0e849 --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/http_gateway.pb.go @@ -0,0 +1,460 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/http_gateway.proto + +package v1 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + v1 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1" + core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Virtual Service Selector expression operator, while the set-based syntax differs from Kubernetes (kubernetes: `key: !mylabel`, gloo: `key: mylabel, operator: "!"` | kubernetes: `key: mylabel`, gloo: `key: mylabel, operator: exists`), the functionality remains the same. +type VirtualServiceSelectorExpressions_Expression_Operator int32 + +const ( + // = + VirtualServiceSelectorExpressions_Expression_Equals VirtualServiceSelectorExpressions_Expression_Operator = 0 + // == + VirtualServiceSelectorExpressions_Expression_DoubleEquals VirtualServiceSelectorExpressions_Expression_Operator = 1 + // != + VirtualServiceSelectorExpressions_Expression_NotEquals VirtualServiceSelectorExpressions_Expression_Operator = 2 + // in + VirtualServiceSelectorExpressions_Expression_In VirtualServiceSelectorExpressions_Expression_Operator = 3 + // notin + VirtualServiceSelectorExpressions_Expression_NotIn VirtualServiceSelectorExpressions_Expression_Operator = 4 + // exists + VirtualServiceSelectorExpressions_Expression_Exists VirtualServiceSelectorExpressions_Expression_Operator = 5 + // ! + VirtualServiceSelectorExpressions_Expression_DoesNotExist VirtualServiceSelectorExpressions_Expression_Operator = 6 + // gt + VirtualServiceSelectorExpressions_Expression_GreaterThan VirtualServiceSelectorExpressions_Expression_Operator = 7 + // lt + VirtualServiceSelectorExpressions_Expression_LessThan VirtualServiceSelectorExpressions_Expression_Operator = 8 +) + +// Enum value maps for VirtualServiceSelectorExpressions_Expression_Operator. +var ( + VirtualServiceSelectorExpressions_Expression_Operator_name = map[int32]string{ + 0: "Equals", + 1: "DoubleEquals", + 2: "NotEquals", + 3: "In", + 4: "NotIn", + 5: "Exists", + 6: "DoesNotExist", + 7: "GreaterThan", + 8: "LessThan", + } + VirtualServiceSelectorExpressions_Expression_Operator_value = map[string]int32{ + "Equals": 0, + "DoubleEquals": 1, + "NotEquals": 2, + "In": 3, + "NotIn": 4, + "Exists": 5, + "DoesNotExist": 6, + "GreaterThan": 7, + "LessThan": 8, + } +) + +func (x VirtualServiceSelectorExpressions_Expression_Operator) Enum() *VirtualServiceSelectorExpressions_Expression_Operator { + p := new(VirtualServiceSelectorExpressions_Expression_Operator) + *p = x + return p +} + +func (x VirtualServiceSelectorExpressions_Expression_Operator) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (VirtualServiceSelectorExpressions_Expression_Operator) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_enumTypes[0].Descriptor() +} + +func (VirtualServiceSelectorExpressions_Expression_Operator) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_enumTypes[0] +} + +func (x VirtualServiceSelectorExpressions_Expression_Operator) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use VirtualServiceSelectorExpressions_Expression_Operator.Descriptor instead. +func (VirtualServiceSelectorExpressions_Expression_Operator) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_rawDescGZIP(), []int{1, 0, 0} +} + +type HttpGateway struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Names & namespace refs of the virtual services which contain the actual routes for the gateway. + // If the list is empty, all virtual services in all namespaces that Gloo watches will apply, + // with accordance to `ssl` flag on `Gateway` above. + // The default namespace matching behavior can be overridden via `virtual_service_namespaces` flag below. + // Only one of `virtualServices`, `virtualServiceExpressions` or `virtualServiceSelector` should be provided. + // If more than one is provided only one will be checked with priority virtualServiceExpressions, virtualServiceSelector, virtualServices + VirtualServices []*core.ResourceRef `protobuf:"bytes,1,rep,name=virtual_services,json=virtualServices,proto3" json:"virtual_services,omitempty"` + // Select virtual services by their label. If `virtual_service_namespaces` is provided below, this will apply only + // to virtual services in the namespaces specified. + // Only one of `virtualServices`, `virtualServiceExpressions` or `virtualServiceSelector` should be provided. + // If more than one is provided only one will be checked with priority virtualServiceExpressions, virtualServiceSelector, virtualServices + VirtualServiceSelector map[string]string `protobuf:"bytes,2,rep,name=virtual_service_selector,json=virtualServiceSelector,proto3" json:"virtual_service_selector,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Select virtual services using expressions. If `virtual_service_namespaces` is provided below, this will apply only + // to virtual services in the namespaces specified. + // Only one of `virtualServices`, `virtualServiceExpressions` or `virtualServiceSelector` should be provided. + // If more than one is provided only one will be checked with priority virtualServiceExpressions, virtualServiceSelector, virtualServices + VirtualServiceExpressions *VirtualServiceSelectorExpressions `protobuf:"bytes,9,opt,name=virtual_service_expressions,json=virtualServiceExpressions,proto3" json:"virtual_service_expressions,omitempty"` + // Restrict the search by providing a list of valid search namespaces here. + // Setting '*' will search all namespaces, equivalent to omitting this value. + VirtualServiceNamespaces []string `protobuf:"bytes,3,rep,name=virtual_service_namespaces,json=virtualServiceNamespaces,proto3" json:"virtual_service_namespaces,omitempty"` + // HTTP Gateway configuration + Options *v1.HttpListenerOptions `protobuf:"bytes,8,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HttpGateway) Reset() { + *x = HttpGateway{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HttpGateway) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HttpGateway) ProtoMessage() {} + +func (x *HttpGateway) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HttpGateway.ProtoReflect.Descriptor instead. +func (*HttpGateway) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_rawDescGZIP(), []int{0} +} + +func (x *HttpGateway) GetVirtualServices() []*core.ResourceRef { + if x != nil { + return x.VirtualServices + } + return nil +} + +func (x *HttpGateway) GetVirtualServiceSelector() map[string]string { + if x != nil { + return x.VirtualServiceSelector + } + return nil +} + +func (x *HttpGateway) GetVirtualServiceExpressions() *VirtualServiceSelectorExpressions { + if x != nil { + return x.VirtualServiceExpressions + } + return nil +} + +func (x *HttpGateway) GetVirtualServiceNamespaces() []string { + if x != nil { + return x.VirtualServiceNamespaces + } + return nil +} + +func (x *HttpGateway) GetOptions() *v1.HttpListenerOptions { + if x != nil { + return x.Options + } + return nil +} + +// Expressions to define which virtual services to select +// Example: +// expressions: +// - key: domain +// operator: in +// values: example.com +type VirtualServiceSelectorExpressions struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Expressions allow for more flexible virtual service label matching, such as equality-based requirements, set-based requirements, or a combination of both. + // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#equality-based-requirement + Expressions []*VirtualServiceSelectorExpressions_Expression `protobuf:"bytes,3,rep,name=expressions,proto3" json:"expressions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VirtualServiceSelectorExpressions) Reset() { + *x = VirtualServiceSelectorExpressions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VirtualServiceSelectorExpressions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VirtualServiceSelectorExpressions) ProtoMessage() {} + +func (x *VirtualServiceSelectorExpressions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VirtualServiceSelectorExpressions.ProtoReflect.Descriptor instead. +func (*VirtualServiceSelectorExpressions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_rawDescGZIP(), []int{1} +} + +func (x *VirtualServiceSelectorExpressions) GetExpressions() []*VirtualServiceSelectorExpressions_Expression { + if x != nil { + return x.Expressions + } + return nil +} + +type VirtualServiceSelectorExpressions_Expression struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Kubernetes label key, must conform to Kubernetes syntax requirements + // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + // The operator can only be in, notin, =, ==, !=, exists, ! (DoesNotExist), gt (GreaterThan), lt (LessThan). + Operator VirtualServiceSelectorExpressions_Expression_Operator `protobuf:"varint,2,opt,name=operator,proto3,enum=gateway.solo.io.VirtualServiceSelectorExpressions_Expression_Operator" json:"operator,omitempty"` + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VirtualServiceSelectorExpressions_Expression) Reset() { + *x = VirtualServiceSelectorExpressions_Expression{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VirtualServiceSelectorExpressions_Expression) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VirtualServiceSelectorExpressions_Expression) ProtoMessage() {} + +func (x *VirtualServiceSelectorExpressions_Expression) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VirtualServiceSelectorExpressions_Expression.ProtoReflect.Descriptor instead. +func (*VirtualServiceSelectorExpressions_Expression) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *VirtualServiceSelectorExpressions_Expression) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *VirtualServiceSelectorExpressions_Expression) GetOperator() VirtualServiceSelectorExpressions_Expression_Operator { + if x != nil { + return x.Operator + } + return VirtualServiceSelectorExpressions_Expression_Equals +} + +func (x *VirtualServiceSelectorExpressions_Expression) GetValues() []string { + if x != nil { + return x.Values + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_rawDesc = string([]byte{ + 0x0a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, + 0x76, 0x31, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, + 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x49, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, + 0x76, 0x31, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, + 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x81, + 0x04, 0x0a, 0x0b, 0x48, 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x44, + 0x0a, 0x10, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x52, 0x65, 0x66, 0x52, 0x0f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x12, 0x72, 0x0a, 0x18, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x16, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x72, 0x0a, 0x1b, 0x76, 0x69, 0x72, 0x74, + 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x19, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x1a, + 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x18, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4c, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x49, 0x0a, 0x1b, 0x56, 0x69, 0x72, 0x74, 0x75, + 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0xab, 0x03, 0x0a, 0x21, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x65, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xa4, 0x02, 0x0a, 0x0a, 0x45, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x62, 0x0a, 0x08, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x46, 0x2e, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, + 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x10, 0x00, 0x12, + 0x10, 0x0a, 0x0c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x10, + 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x6f, 0x74, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x10, 0x02, + 0x12, 0x06, 0x0a, 0x02, 0x49, 0x6e, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x4e, 0x6f, 0x74, 0x49, + 0x6e, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x10, 0x05, 0x12, + 0x10, 0x0a, 0x0c, 0x44, 0x6f, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, + 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, + 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x65, 0x73, 0x73, 0x54, 0x68, 0x61, 0x6e, 0x10, 0x08, + 0x42, 0x45, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x37, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_goTypes = []any{ + (VirtualServiceSelectorExpressions_Expression_Operator)(0), // 0: gateway.solo.io.VirtualServiceSelectorExpressions.Expression.Operator + (*HttpGateway)(nil), // 1: gateway.solo.io.HttpGateway + (*VirtualServiceSelectorExpressions)(nil), // 2: gateway.solo.io.VirtualServiceSelectorExpressions + nil, // 3: gateway.solo.io.HttpGateway.VirtualServiceSelectorEntry + (*VirtualServiceSelectorExpressions_Expression)(nil), // 4: gateway.solo.io.VirtualServiceSelectorExpressions.Expression + (*core.ResourceRef)(nil), // 5: core.solo.io.ResourceRef + (*v1.HttpListenerOptions)(nil), // 6: gloo.solo.io.HttpListenerOptions +} +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_depIdxs = []int32{ + 5, // 0: gateway.solo.io.HttpGateway.virtual_services:type_name -> core.solo.io.ResourceRef + 3, // 1: gateway.solo.io.HttpGateway.virtual_service_selector:type_name -> gateway.solo.io.HttpGateway.VirtualServiceSelectorEntry + 2, // 2: gateway.solo.io.HttpGateway.virtual_service_expressions:type_name -> gateway.solo.io.VirtualServiceSelectorExpressions + 6, // 3: gateway.solo.io.HttpGateway.options:type_name -> gloo.solo.io.HttpListenerOptions + 4, // 4: gateway.solo.io.VirtualServiceSelectorExpressions.expressions:type_name -> gateway.solo.io.VirtualServiceSelectorExpressions.Expression + 0, // 5: gateway.solo.io.VirtualServiceSelectorExpressions.Expression.operator:type_name -> gateway.solo.io.VirtualServiceSelectorExpressions.Expression.Operator + 6, // [6:6] is the sub-list for method output_type + 6, // [6:6] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name +} + +func init() { file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_init() } +func file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_rawDesc)), + NumEnums: 1, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_enumTypes, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_depIdxs = nil +} diff --git a/pkg/api/gateway.solo.io/v1/http_gateway.pb.hash.go b/pkg/api/gateway.solo.io/v1/http_gateway.pb.hash.go new file mode 100644 index 000000000..0d6a02b8d --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/http_gateway.pb.hash.go @@ -0,0 +1,222 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/http_gateway.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HttpGateway) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.HttpGateway")); err != nil { + return 0, err + } + + for _, v := range m.GetVirtualServices() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetVirtualServiceSelector() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetVirtualServiceExpressions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("VirtualServiceExpressions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetVirtualServiceExpressions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("VirtualServiceExpressions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetVirtualServiceNamespaces() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *VirtualServiceSelectorExpressions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.VirtualServiceSelectorExpressions")); err != nil { + return 0, err + } + + for _, v := range m.GetExpressions() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *VirtualServiceSelectorExpressions_Expression) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.VirtualServiceSelectorExpressions_Expression")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetOperator()) + if err != nil { + return 0, err + } + + for _, v := range m.GetValues() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gateway.solo.io/v1/http_gateway.pb.uniquehash.go b/pkg/api/gateway.solo.io/v1/http_gateway.pb.uniquehash.go new file mode 100644 index 000000000..338d5e92b --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/http_gateway.pb.uniquehash.go @@ -0,0 +1,263 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/http_gateway.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HttpGateway) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.HttpGateway")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("VirtualServices")); err != nil { + return 0, err + } + for i, v := range m.GetVirtualServices() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetVirtualServiceSelector() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetVirtualServiceExpressions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("VirtualServiceExpressions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetVirtualServiceExpressions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("VirtualServiceExpressions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("VirtualServiceNamespaces")); err != nil { + return 0, err + } + for i, v := range m.GetVirtualServiceNamespaces() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *VirtualServiceSelectorExpressions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.VirtualServiceSelectorExpressions")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Expressions")); err != nil { + return 0, err + } + for i, v := range m.GetExpressions() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *VirtualServiceSelectorExpressions_Expression) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.VirtualServiceSelectorExpressions_Expression")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Operator")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetOperator()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Values")); err != nil { + return 0, err + } + for i, v := range m.GetValues() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gateway.solo.io/v1/json.gen.go b/pkg/api/gateway.solo.io/v1/json.gen.go deleted file mode 100644 index 042776060..000000000 --- a/pkg/api/gateway.solo.io/v1/json.gen.go +++ /dev/null @@ -1,91 +0,0 @@ -// Code generated by skv2. DO NOT EDIT. - -// Generated json marshal and unmarshal functions - -package v1 - -import ( - bytes "bytes" - fmt "fmt" - math "math" - - jsonpb "github.com/golang/protobuf/jsonpb" - proto "github.com/golang/protobuf/proto" - skv2jsonpb "github.com/solo-io/skv2/pkg/kube_jsonpb" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -var ( - marshaller = &skv2jsonpb.Marshaler{EnumsAsInts: true} - unmarshaller = &jsonpb.Unmarshaler{} -) - -// MarshalJSON is a custom marshaler for GatewaySpec -func (this *GatewaySpec) MarshalJSON() ([]byte, error) { - str, err := marshaller.MarshalToString(this) - return []byte(str), err -} - -// UnmarshalJSON is a custom unmarshaler for GatewaySpec -func (this *GatewaySpec) UnmarshalJSON(b []byte) error { - return unmarshaller.Unmarshal(bytes.NewReader(b), this) -} - -// MarshalJSON is a custom marshaler for GatewayStatus -func (this *GatewayStatus) MarshalJSON() ([]byte, error) { - str, err := marshaller.MarshalToString(this) - return []byte(str), err -} - -// UnmarshalJSON is a custom unmarshaler for GatewayStatus -func (this *GatewayStatus) UnmarshalJSON(b []byte) error { - return unmarshaller.Unmarshal(bytes.NewReader(b), this) -} - -// MarshalJSON is a custom marshaler for RouteTableSpec -func (this *RouteTableSpec) MarshalJSON() ([]byte, error) { - str, err := marshaller.MarshalToString(this) - return []byte(str), err -} - -// UnmarshalJSON is a custom unmarshaler for RouteTableSpec -func (this *RouteTableSpec) UnmarshalJSON(b []byte) error { - return unmarshaller.Unmarshal(bytes.NewReader(b), this) -} - -// MarshalJSON is a custom marshaler for RouteTableStatus -func (this *RouteTableStatus) MarshalJSON() ([]byte, error) { - str, err := marshaller.MarshalToString(this) - return []byte(str), err -} - -// UnmarshalJSON is a custom unmarshaler for RouteTableStatus -func (this *RouteTableStatus) UnmarshalJSON(b []byte) error { - return unmarshaller.Unmarshal(bytes.NewReader(b), this) -} - -// MarshalJSON is a custom marshaler for VirtualServiceSpec -func (this *VirtualServiceSpec) MarshalJSON() ([]byte, error) { - str, err := marshaller.MarshalToString(this) - return []byte(str), err -} - -// UnmarshalJSON is a custom unmarshaler for VirtualServiceSpec -func (this *VirtualServiceSpec) UnmarshalJSON(b []byte) error { - return unmarshaller.Unmarshal(bytes.NewReader(b), this) -} - -// MarshalJSON is a custom marshaler for VirtualServiceStatus -func (this *VirtualServiceStatus) MarshalJSON() ([]byte, error) { - str, err := marshaller.MarshalToString(this) - return []byte(str), err -} - -// UnmarshalJSON is a custom unmarshaler for VirtualServiceStatus -func (this *VirtualServiceStatus) UnmarshalJSON(b []byte) error { - return unmarshaller.Unmarshal(bytes.NewReader(b), this) -} diff --git a/pkg/api/gateway.solo.io/v1/matchable_http_gateway.pb.clone.go b/pkg/api/gateway.solo.io/v1/matchable_http_gateway.pb.clone.go new file mode 100644 index 000000000..89fd0b961 --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/matchable_http_gateway.pb.clone.go @@ -0,0 +1,145 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/matchable_http_gateway.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *MatchableHttpGatewaySpec) Clone() proto.Message { + var target *MatchableHttpGatewaySpec + if m == nil { + return target + } + target = &MatchableHttpGatewaySpec{} + + if h, ok := interface{}(m.GetMatcher()).(clone.Cloner); ok { + target.Matcher = h.Clone().(*MatchableHttpGatewaySpec_Matcher) + } else { + target.Matcher = proto.Clone(m.GetMatcher()).(*MatchableHttpGatewaySpec_Matcher) + } + + if h, ok := interface{}(m.GetHttpGateway()).(clone.Cloner); ok { + target.HttpGateway = h.Clone().(*HttpGateway) + } else { + target.HttpGateway = proto.Clone(m.GetHttpGateway()).(*HttpGateway) + } + + return target +} + +// Clone function +func (m *MatchableHttpGatewayStatus) Clone() proto.Message { + var target *MatchableHttpGatewayStatus + if m == nil { + return target + } + target = &MatchableHttpGatewayStatus{} + + target.State = m.GetState() + + target.Reason = m.GetReason() + + target.ReportedBy = m.GetReportedBy() + + if m.GetSubresourceStatuses() != nil { + target.SubresourceStatuses = make(map[string]*MatchableHttpGatewayStatus, len(m.GetSubresourceStatuses())) + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SubresourceStatuses[k] = h.Clone().(*MatchableHttpGatewayStatus) + } else { + target.SubresourceStatuses[k] = proto.Clone(v).(*MatchableHttpGatewayStatus) + } + + } + } + + if h, ok := interface{}(m.GetDetails()).(clone.Cloner); ok { + target.Details = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Details = proto.Clone(m.GetDetails()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + return target +} + +// Clone function +func (m *MatchableHttpGatewayNamespacedStatuses) Clone() proto.Message { + var target *MatchableHttpGatewayNamespacedStatuses + if m == nil { + return target + } + target = &MatchableHttpGatewayNamespacedStatuses{} + + if m.GetStatuses() != nil { + target.Statuses = make(map[string]*MatchableHttpGatewayStatus, len(m.GetStatuses())) + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Statuses[k] = h.Clone().(*MatchableHttpGatewayStatus) + } else { + target.Statuses[k] = proto.Clone(v).(*MatchableHttpGatewayStatus) + } + + } + } + + return target +} + +// Clone function +func (m *MatchableHttpGatewaySpec_Matcher) Clone() proto.Message { + var target *MatchableHttpGatewaySpec_Matcher + if m == nil { + return target + } + target = &MatchableHttpGatewaySpec_Matcher{} + + if m.GetSourcePrefixRanges() != nil { + target.SourcePrefixRanges = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.CidrRange, len(m.GetSourcePrefixRanges())) + for idx, v := range m.GetSourcePrefixRanges() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SourcePrefixRanges[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.CidrRange) + } else { + target.SourcePrefixRanges[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.CidrRange) + } + + } + } + + if h, ok := interface{}(m.GetSslConfig()).(clone.Cloner); ok { + target.SslConfig = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.SslConfig) + } else { + target.SslConfig = proto.Clone(m.GetSslConfig()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.SslConfig) + } + + return target +} diff --git a/pkg/api/gateway.solo.io/v1/matchable_http_gateway.pb.equal.go b/pkg/api/gateway.solo.io/v1/matchable_http_gateway.pb.equal.go new file mode 100644 index 000000000..6160e55c4 --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/matchable_http_gateway.pb.equal.go @@ -0,0 +1,225 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/matchable_http_gateway.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *MatchableHttpGatewaySpec) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*MatchableHttpGatewaySpec) + if !ok { + that2, ok := that.(MatchableHttpGatewaySpec) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetMatcher()).(equality.Equalizer); ok { + if !h.Equal(target.GetMatcher()) { + return false + } + } else { + if !proto.Equal(m.GetMatcher(), target.GetMatcher()) { + return false + } + } + + if h, ok := interface{}(m.GetHttpGateway()).(equality.Equalizer); ok { + if !h.Equal(target.GetHttpGateway()) { + return false + } + } else { + if !proto.Equal(m.GetHttpGateway(), target.GetHttpGateway()) { + return false + } + } + + return true +} + +// Equal function +func (m *MatchableHttpGatewayStatus) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*MatchableHttpGatewayStatus) + if !ok { + that2, ok := that.(MatchableHttpGatewayStatus) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetState() != target.GetState() { + return false + } + + if strings.Compare(m.GetReason(), target.GetReason()) != 0 { + return false + } + + if strings.Compare(m.GetReportedBy(), target.GetReportedBy()) != 0 { + return false + } + + if len(m.GetSubresourceStatuses()) != len(target.GetSubresourceStatuses()) { + return false + } + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetSubresourceStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetSubresourceStatuses()[k]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetDetails()).(equality.Equalizer); ok { + if !h.Equal(target.GetDetails()) { + return false + } + } else { + if !proto.Equal(m.GetDetails(), target.GetDetails()) { + return false + } + } + + return true +} + +// Equal function +func (m *MatchableHttpGatewayNamespacedStatuses) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*MatchableHttpGatewayNamespacedStatuses) + if !ok { + that2, ok := that.(MatchableHttpGatewayNamespacedStatuses) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetStatuses()) != len(target.GetStatuses()) { + return false + } + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetStatuses()[k]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *MatchableHttpGatewaySpec_Matcher) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*MatchableHttpGatewaySpec_Matcher) + if !ok { + that2, ok := that.(MatchableHttpGatewaySpec_Matcher) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetSourcePrefixRanges()) != len(target.GetSourcePrefixRanges()) { + return false + } + for idx, v := range m.GetSourcePrefixRanges() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetSourcePrefixRanges()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetSourcePrefixRanges()[idx]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetSslConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetSslConfig()) { + return false + } + } else { + if !proto.Equal(m.GetSslConfig(), target.GetSslConfig()) { + return false + } + } + + return true +} diff --git a/pkg/api/gateway.solo.io/v1/matchable_http_gateway.pb.go b/pkg/api/gateway.solo.io/v1/matchable_http_gateway.pb.go new file mode 100644 index 000000000..4ff937214 --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/matchable_http_gateway.pb.go @@ -0,0 +1,513 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/matchable_http_gateway.proto + +package v1 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + ssl "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl" + _ "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type MatchableHttpGatewayStatus_State int32 + +const ( + // Pending status indicates the resource has not yet been validated + MatchableHttpGatewayStatus_Pending MatchableHttpGatewayStatus_State = 0 + // Accepted indicates the resource has been validated + MatchableHttpGatewayStatus_Accepted MatchableHttpGatewayStatus_State = 1 + // Rejected indicates an invalid configuration by the user + // Rejected resources may be propagated to the xDS server depending on their severity + MatchableHttpGatewayStatus_Rejected MatchableHttpGatewayStatus_State = 2 + // Warning indicates a partially invalid configuration by the user + // Resources with Warnings may be partially accepted by a controller, depending on the implementation + MatchableHttpGatewayStatus_Warning MatchableHttpGatewayStatus_State = 3 +) + +// Enum value maps for MatchableHttpGatewayStatus_State. +var ( + MatchableHttpGatewayStatus_State_name = map[int32]string{ + 0: "Pending", + 1: "Accepted", + 2: "Rejected", + 3: "Warning", + } + MatchableHttpGatewayStatus_State_value = map[string]int32{ + "Pending": 0, + "Accepted": 1, + "Rejected": 2, + "Warning": 3, + } +) + +func (x MatchableHttpGatewayStatus_State) Enum() *MatchableHttpGatewayStatus_State { + p := new(MatchableHttpGatewayStatus_State) + *p = x + return p +} + +func (x MatchableHttpGatewayStatus_State) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MatchableHttpGatewayStatus_State) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_enumTypes[0].Descriptor() +} + +func (MatchableHttpGatewayStatus_State) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_enumTypes[0] +} + +func (x MatchableHttpGatewayStatus_State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MatchableHttpGatewayStatus_State.Descriptor instead. +func (MatchableHttpGatewayStatus_State) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_rawDescGZIP(), []int{1, 0} +} + +// A MatchableHttpGateway describes a single FilterChain configured with: +// - The HttpConnectionManager NetworkFilter +// - A FilterChainMatch and TransportSocket that support TLS configuration and Source IP matching +// +// A Gateway CR may select one or more MatchableHttpGateways on a single listener. +// This enables separate teams to own Listener configuration (Gateway CR) +// and FilterChain configuration (MatchableHttpGateway CR) +type MatchableHttpGatewaySpec struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Matcher creates a FilterChainMatch and TransportSocket for a FilterChain + // For each MatchableHttpGateway on a Gateway CR, the matcher must be unique. + // If there are any identical matchers, the Gateway will be rejected. + // An empty matcher will produce an empty FilterChainMatch (https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/listener/v3/listener_components.proto#envoy-v3-api-msg-config-listener-v3-filterchainmatch) + // effectively matching all incoming connections + Matcher *MatchableHttpGatewaySpec_Matcher `protobuf:"bytes,3,opt,name=matcher,proto3" json:"matcher,omitempty"` + // HttpGateway creates a FilterChain with an HttpConnectionManager + HttpGateway *HttpGateway `protobuf:"bytes,4,opt,name=http_gateway,json=httpGateway,proto3" json:"http_gateway,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MatchableHttpGatewaySpec) Reset() { + *x = MatchableHttpGatewaySpec{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MatchableHttpGatewaySpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MatchableHttpGatewaySpec) ProtoMessage() {} + +func (x *MatchableHttpGatewaySpec) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MatchableHttpGatewaySpec.ProtoReflect.Descriptor instead. +func (*MatchableHttpGatewaySpec) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_rawDescGZIP(), []int{0} +} + +func (x *MatchableHttpGatewaySpec) GetMatcher() *MatchableHttpGatewaySpec_Matcher { + if x != nil { + return x.Matcher + } + return nil +} + +func (x *MatchableHttpGatewaySpec) GetHttpGateway() *HttpGateway { + if x != nil { + return x.HttpGateway + } + return nil +} + +type MatchableHttpGatewayStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + // State is the enum indicating the state of the resource + State MatchableHttpGatewayStatus_State `protobuf:"varint,1,opt,name=state,proto3,enum=gateway.solo.io.MatchableHttpGatewayStatus_State" json:"state,omitempty"` + // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty + Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` + // Reference to the reporter who wrote this status + ReportedBy string `protobuf:"bytes,3,opt,name=reported_by,json=reportedBy,proto3" json:"reported_by,omitempty"` + // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource + SubresourceStatuses map[string]*MatchableHttpGatewayStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Opaque details about status results + Details *structpb.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MatchableHttpGatewayStatus) Reset() { + *x = MatchableHttpGatewayStatus{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MatchableHttpGatewayStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MatchableHttpGatewayStatus) ProtoMessage() {} + +func (x *MatchableHttpGatewayStatus) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MatchableHttpGatewayStatus.ProtoReflect.Descriptor instead. +func (*MatchableHttpGatewayStatus) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_rawDescGZIP(), []int{1} +} + +func (x *MatchableHttpGatewayStatus) GetState() MatchableHttpGatewayStatus_State { + if x != nil { + return x.State + } + return MatchableHttpGatewayStatus_Pending +} + +func (x *MatchableHttpGatewayStatus) GetReason() string { + if x != nil { + return x.Reason + } + return "" +} + +func (x *MatchableHttpGatewayStatus) GetReportedBy() string { + if x != nil { + return x.ReportedBy + } + return "" +} + +func (x *MatchableHttpGatewayStatus) GetSubresourceStatuses() map[string]*MatchableHttpGatewayStatus { + if x != nil { + return x.SubresourceStatuses + } + return nil +} + +func (x *MatchableHttpGatewayStatus) GetDetails() *structpb.Struct { + if x != nil { + return x.Details + } + return nil +} + +type MatchableHttpGatewayNamespacedStatuses struct { + state protoimpl.MessageState `protogen:"open.v1"` + Statuses map[string]*MatchableHttpGatewayStatus `protobuf:"bytes,1,rep,name=statuses,proto3" json:"statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MatchableHttpGatewayNamespacedStatuses) Reset() { + *x = MatchableHttpGatewayNamespacedStatuses{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MatchableHttpGatewayNamespacedStatuses) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MatchableHttpGatewayNamespacedStatuses) ProtoMessage() {} + +func (x *MatchableHttpGatewayNamespacedStatuses) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MatchableHttpGatewayNamespacedStatuses.ProtoReflect.Descriptor instead. +func (*MatchableHttpGatewayNamespacedStatuses) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_rawDescGZIP(), []int{2} +} + +func (x *MatchableHttpGatewayNamespacedStatuses) GetStatuses() map[string]*MatchableHttpGatewayStatus { + if x != nil { + return x.Statuses + } + return nil +} + +type MatchableHttpGatewaySpec_Matcher struct { + state protoimpl.MessageState `protogen:"open.v1"` + // CidrRange specifies an IP Address and a prefix length to construct the subnet mask for a CIDR range. + // See https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/address.proto#envoy-v3-api-msg-config-core-v3-cidrrange + SourcePrefixRanges []*v3.CidrRange `protobuf:"bytes,1,rep,name=source_prefix_ranges,json=sourcePrefixRanges,proto3" json:"source_prefix_ranges,omitempty"` + // Ssl configuration applied to the FilterChain: + // - FilterChainMatch: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/listener/v3/listener_components.proto#config-listener-v3-filterchainmatch) + // - TransportSocket: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/base.proto#envoy-v3-api-msg-config-core-v3-transportsocket + SslConfig *ssl.SslConfig `protobuf:"bytes,2,opt,name=ssl_config,json=sslConfig,proto3" json:"ssl_config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MatchableHttpGatewaySpec_Matcher) Reset() { + *x = MatchableHttpGatewaySpec_Matcher{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MatchableHttpGatewaySpec_Matcher) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MatchableHttpGatewaySpec_Matcher) ProtoMessage() {} + +func (x *MatchableHttpGatewaySpec_Matcher) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MatchableHttpGatewaySpec_Matcher.ProtoReflect.Descriptor instead. +func (*MatchableHttpGatewaySpec_Matcher) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *MatchableHttpGatewaySpec_Matcher) GetSourcePrefixRanges() []*v3.CidrRange { + if x != nil { + return x.SourcePrefixRanges + } + return nil +} + +func (x *MatchableHttpGatewaySpec_Matcher) GetSslConfig() *ssl.SslConfig { + if x != nil { + return x.SslConfig + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_rawDesc = string([]byte{ + 0x0a, 0x4d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, + 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x68, 0x74, 0x74, + 0x70, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x0f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, + 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x73, 0x6c, 0x2f, 0x73, 0x73, 0x6c, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x2f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc7, 0x02, + 0x0a, 0x18, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x74, 0x74, 0x70, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4b, 0x0a, 0x07, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x0c, 0x68, 0x74, 0x74, 0x70, 0x5f, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x48, 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x0b, 0x68, 0x74, 0x74, + 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x1a, 0x9c, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x14, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x69, 0x64, 0x72, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x12, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, + 0x36, 0x0a, 0x0a, 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x73, 0x73, + 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xfe, 0x03, 0x0a, 0x1a, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x47, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, + 0x65, 0x48, 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x77, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, + 0x6c, 0x65, 0x48, 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x73, 0x75, + 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, + 0x73, 0x12, 0x31, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x73, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x41, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x74, 0x74, + 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x05, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, + 0x0c, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0c, 0x0a, + 0x08, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x57, + 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x22, 0xf5, 0x01, 0x0a, 0x26, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x65, 0x73, 0x12, 0x61, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, + 0x65, 0x48, 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, 0x68, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x41, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x61, 0x62, 0x6c, 0x65, 0x48, 0x74, 0x74, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x42, 0x45, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x37, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_goTypes = []any{ + (MatchableHttpGatewayStatus_State)(0), // 0: gateway.solo.io.MatchableHttpGatewayStatus.State + (*MatchableHttpGatewaySpec)(nil), // 1: gateway.solo.io.MatchableHttpGatewaySpec + (*MatchableHttpGatewayStatus)(nil), // 2: gateway.solo.io.MatchableHttpGatewayStatus + (*MatchableHttpGatewayNamespacedStatuses)(nil), // 3: gateway.solo.io.MatchableHttpGatewayNamespacedStatuses + (*MatchableHttpGatewaySpec_Matcher)(nil), // 4: gateway.solo.io.MatchableHttpGatewaySpec.Matcher + nil, // 5: gateway.solo.io.MatchableHttpGatewayStatus.SubresourceStatusesEntry + nil, // 6: gateway.solo.io.MatchableHttpGatewayNamespacedStatuses.StatusesEntry + (*HttpGateway)(nil), // 7: gateway.solo.io.HttpGateway + (*structpb.Struct)(nil), // 8: google.protobuf.Struct + (*v3.CidrRange)(nil), // 9: solo.io.envoy.config.core.v3.CidrRange + (*ssl.SslConfig)(nil), // 10: gloo.solo.io.SslConfig +} +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_depIdxs = []int32{ + 4, // 0: gateway.solo.io.MatchableHttpGatewaySpec.matcher:type_name -> gateway.solo.io.MatchableHttpGatewaySpec.Matcher + 7, // 1: gateway.solo.io.MatchableHttpGatewaySpec.http_gateway:type_name -> gateway.solo.io.HttpGateway + 0, // 2: gateway.solo.io.MatchableHttpGatewayStatus.state:type_name -> gateway.solo.io.MatchableHttpGatewayStatus.State + 5, // 3: gateway.solo.io.MatchableHttpGatewayStatus.subresource_statuses:type_name -> gateway.solo.io.MatchableHttpGatewayStatus.SubresourceStatusesEntry + 8, // 4: gateway.solo.io.MatchableHttpGatewayStatus.details:type_name -> google.protobuf.Struct + 6, // 5: gateway.solo.io.MatchableHttpGatewayNamespacedStatuses.statuses:type_name -> gateway.solo.io.MatchableHttpGatewayNamespacedStatuses.StatusesEntry + 9, // 6: gateway.solo.io.MatchableHttpGatewaySpec.Matcher.source_prefix_ranges:type_name -> solo.io.envoy.config.core.v3.CidrRange + 10, // 7: gateway.solo.io.MatchableHttpGatewaySpec.Matcher.ssl_config:type_name -> gloo.solo.io.SslConfig + 2, // 8: gateway.solo.io.MatchableHttpGatewayStatus.SubresourceStatusesEntry.value:type_name -> gateway.solo.io.MatchableHttpGatewayStatus + 2, // 9: gateway.solo.io.MatchableHttpGatewayNamespacedStatuses.StatusesEntry.value:type_name -> gateway.solo.io.MatchableHttpGatewayStatus + 10, // [10:10] is the sub-list for method output_type + 10, // [10:10] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_http_gateway_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_rawDesc)), + NumEnums: 1, + NumMessages: 6, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_enumTypes, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_http_gateway_proto_depIdxs = nil +} diff --git a/pkg/api/gateway.solo.io/v1/matchable_http_gateway.pb.hash.go b/pkg/api/gateway.solo.io/v1/matchable_http_gateway.pb.hash.go new file mode 100644 index 000000000..6f16ef7af --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/matchable_http_gateway.pb.hash.go @@ -0,0 +1,301 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/matchable_http_gateway.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *MatchableHttpGatewaySpec) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.MatchableHttpGatewaySpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMatcher(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHttpGateway()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpGateway")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpGateway(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpGateway")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *MatchableHttpGatewayStatus) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.MatchableHttpGatewayStatus")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *MatchableHttpGatewayNamespacedStatuses) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.MatchableHttpGatewayNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *MatchableHttpGatewaySpec_Matcher) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.MatchableHttpGatewaySpec_Matcher")); err != nil { + return 0, err + } + + for _, v := range m.GetSourcePrefixRanges() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gateway.solo.io/v1/matchable_http_gateway.pb.uniquehash.go b/pkg/api/gateway.solo.io/v1/matchable_http_gateway.pb.uniquehash.go new file mode 100644 index 000000000..0df80402b --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/matchable_http_gateway.pb.uniquehash.go @@ -0,0 +1,320 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/matchable_http_gateway.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MatchableHttpGatewaySpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.MatchableHttpGatewaySpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMatcher(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHttpGateway()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpGateway")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpGateway(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpGateway")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MatchableHttpGatewayStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.MatchableHttpGatewayStatus")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("State")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Reason")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ReportedBy")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MatchableHttpGatewayNamespacedStatuses) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.MatchableHttpGatewayNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MatchableHttpGatewaySpec_Matcher) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.MatchableHttpGatewaySpec_Matcher")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SourcePrefixRanges")); err != nil { + return 0, err + } + for i, v := range m.GetSourcePrefixRanges() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gateway.solo.io/v1/matchable_tcp_gateway.pb.clone.go b/pkg/api/gateway.solo.io/v1/matchable_tcp_gateway.pb.clone.go new file mode 100644 index 000000000..eb4741754 --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/matchable_tcp_gateway.pb.clone.go @@ -0,0 +1,154 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/matchable_tcp_gateway.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *MatchableTcpGatewaySpec) Clone() proto.Message { + var target *MatchableTcpGatewaySpec + if m == nil { + return target + } + target = &MatchableTcpGatewaySpec{} + + if h, ok := interface{}(m.GetMatcher()).(clone.Cloner); ok { + target.Matcher = h.Clone().(*MatchableTcpGatewaySpec_Matcher) + } else { + target.Matcher = proto.Clone(m.GetMatcher()).(*MatchableTcpGatewaySpec_Matcher) + } + + if h, ok := interface{}(m.GetTcpGateway()).(clone.Cloner); ok { + target.TcpGateway = h.Clone().(*TcpGateway) + } else { + target.TcpGateway = proto.Clone(m.GetTcpGateway()).(*TcpGateway) + } + + return target +} + +// Clone function +func (m *MatchableTcpGatewayStatus) Clone() proto.Message { + var target *MatchableTcpGatewayStatus + if m == nil { + return target + } + target = &MatchableTcpGatewayStatus{} + + target.State = m.GetState() + + target.Reason = m.GetReason() + + target.ReportedBy = m.GetReportedBy() + + if m.GetSubresourceStatuses() != nil { + target.SubresourceStatuses = make(map[string]*MatchableTcpGatewayStatus, len(m.GetSubresourceStatuses())) + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SubresourceStatuses[k] = h.Clone().(*MatchableTcpGatewayStatus) + } else { + target.SubresourceStatuses[k] = proto.Clone(v).(*MatchableTcpGatewayStatus) + } + + } + } + + if h, ok := interface{}(m.GetDetails()).(clone.Cloner); ok { + target.Details = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Details = proto.Clone(m.GetDetails()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + return target +} + +// Clone function +func (m *MatchableTcpGatewayNamespacedStatuses) Clone() proto.Message { + var target *MatchableTcpGatewayNamespacedStatuses + if m == nil { + return target + } + target = &MatchableTcpGatewayNamespacedStatuses{} + + if m.GetStatuses() != nil { + target.Statuses = make(map[string]*MatchableTcpGatewayStatus, len(m.GetStatuses())) + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Statuses[k] = h.Clone().(*MatchableTcpGatewayStatus) + } else { + target.Statuses[k] = proto.Clone(v).(*MatchableTcpGatewayStatus) + } + + } + } + + return target +} + +// Clone function +func (m *MatchableTcpGatewaySpec_Matcher) Clone() proto.Message { + var target *MatchableTcpGatewaySpec_Matcher + if m == nil { + return target + } + target = &MatchableTcpGatewaySpec_Matcher{} + + if m.GetSourcePrefixRanges() != nil { + target.SourcePrefixRanges = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.CidrRange, len(m.GetSourcePrefixRanges())) + for idx, v := range m.GetSourcePrefixRanges() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SourcePrefixRanges[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.CidrRange) + } else { + target.SourcePrefixRanges[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.CidrRange) + } + + } + } + + if h, ok := interface{}(m.GetSslConfig()).(clone.Cloner); ok { + target.SslConfig = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.SslConfig) + } else { + target.SslConfig = proto.Clone(m.GetSslConfig()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.SslConfig) + } + + if m.GetPassthroughCipherSuites() != nil { + target.PassthroughCipherSuites = make([]string, len(m.GetPassthroughCipherSuites())) + for idx, v := range m.GetPassthroughCipherSuites() { + + target.PassthroughCipherSuites[idx] = v + + } + } + + return target +} diff --git a/pkg/api/gateway.solo.io/v1/matchable_tcp_gateway.pb.equal.go b/pkg/api/gateway.solo.io/v1/matchable_tcp_gateway.pb.equal.go new file mode 100644 index 000000000..5f30e24e1 --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/matchable_tcp_gateway.pb.equal.go @@ -0,0 +1,236 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/matchable_tcp_gateway.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *MatchableTcpGatewaySpec) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*MatchableTcpGatewaySpec) + if !ok { + that2, ok := that.(MatchableTcpGatewaySpec) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetMatcher()).(equality.Equalizer); ok { + if !h.Equal(target.GetMatcher()) { + return false + } + } else { + if !proto.Equal(m.GetMatcher(), target.GetMatcher()) { + return false + } + } + + if h, ok := interface{}(m.GetTcpGateway()).(equality.Equalizer); ok { + if !h.Equal(target.GetTcpGateway()) { + return false + } + } else { + if !proto.Equal(m.GetTcpGateway(), target.GetTcpGateway()) { + return false + } + } + + return true +} + +// Equal function +func (m *MatchableTcpGatewayStatus) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*MatchableTcpGatewayStatus) + if !ok { + that2, ok := that.(MatchableTcpGatewayStatus) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetState() != target.GetState() { + return false + } + + if strings.Compare(m.GetReason(), target.GetReason()) != 0 { + return false + } + + if strings.Compare(m.GetReportedBy(), target.GetReportedBy()) != 0 { + return false + } + + if len(m.GetSubresourceStatuses()) != len(target.GetSubresourceStatuses()) { + return false + } + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetSubresourceStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetSubresourceStatuses()[k]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetDetails()).(equality.Equalizer); ok { + if !h.Equal(target.GetDetails()) { + return false + } + } else { + if !proto.Equal(m.GetDetails(), target.GetDetails()) { + return false + } + } + + return true +} + +// Equal function +func (m *MatchableTcpGatewayNamespacedStatuses) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*MatchableTcpGatewayNamespacedStatuses) + if !ok { + that2, ok := that.(MatchableTcpGatewayNamespacedStatuses) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetStatuses()) != len(target.GetStatuses()) { + return false + } + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetStatuses()[k]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *MatchableTcpGatewaySpec_Matcher) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*MatchableTcpGatewaySpec_Matcher) + if !ok { + that2, ok := that.(MatchableTcpGatewaySpec_Matcher) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetSourcePrefixRanges()) != len(target.GetSourcePrefixRanges()) { + return false + } + for idx, v := range m.GetSourcePrefixRanges() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetSourcePrefixRanges()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetSourcePrefixRanges()[idx]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetSslConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetSslConfig()) { + return false + } + } else { + if !proto.Equal(m.GetSslConfig(), target.GetSslConfig()) { + return false + } + } + + if len(m.GetPassthroughCipherSuites()) != len(target.GetPassthroughCipherSuites()) { + return false + } + for idx, v := range m.GetPassthroughCipherSuites() { + + if strings.Compare(v, target.GetPassthroughCipherSuites()[idx]) != 0 { + return false + } + + } + + return true +} diff --git a/pkg/api/gateway.solo.io/v1/matchable_tcp_gateway.pb.go b/pkg/api/gateway.solo.io/v1/matchable_tcp_gateway.pb.go new file mode 100644 index 000000000..dcd3654dd --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/matchable_tcp_gateway.pb.go @@ -0,0 +1,523 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/matchable_tcp_gateway.proto + +package v1 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + ssl "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl" + _ "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type MatchableTcpGatewayStatus_State int32 + +const ( + // Pending status indicates the resource has not yet been validated + MatchableTcpGatewayStatus_Pending MatchableTcpGatewayStatus_State = 0 + // Accepted indicates the resource has been validated + MatchableTcpGatewayStatus_Accepted MatchableTcpGatewayStatus_State = 1 + // Rejected indicates an invalid configuration by the user + // Rejected resources may be propagated to the xDS server depending on their severity + MatchableTcpGatewayStatus_Rejected MatchableTcpGatewayStatus_State = 2 + // Warning indicates a partially invalid configuration by the user + // Resources with Warnings may be partially accepted by a controller, depending on the implementation + MatchableTcpGatewayStatus_Warning MatchableTcpGatewayStatus_State = 3 +) + +// Enum value maps for MatchableTcpGatewayStatus_State. +var ( + MatchableTcpGatewayStatus_State_name = map[int32]string{ + 0: "Pending", + 1: "Accepted", + 2: "Rejected", + 3: "Warning", + } + MatchableTcpGatewayStatus_State_value = map[string]int32{ + "Pending": 0, + "Accepted": 1, + "Rejected": 2, + "Warning": 3, + } +) + +func (x MatchableTcpGatewayStatus_State) Enum() *MatchableTcpGatewayStatus_State { + p := new(MatchableTcpGatewayStatus_State) + *p = x + return p +} + +func (x MatchableTcpGatewayStatus_State) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MatchableTcpGatewayStatus_State) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_enumTypes[0].Descriptor() +} + +func (MatchableTcpGatewayStatus_State) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_enumTypes[0] +} + +func (x MatchableTcpGatewayStatus_State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MatchableTcpGatewayStatus_State.Descriptor instead. +func (MatchableTcpGatewayStatus_State) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_rawDescGZIP(), []int{1, 0} +} + +// A MatchableTcpGateway describes a single FilterChain configured with the TcpProxy network filter and a matcher. +// +// A Gateway CR may select one or more MatchableTcpGateways on a single listener. +// This enables separate teams to own Listener configuration (Gateway CR) +// and FilterChain configuration (MatchableTcpGateway CR). +type MatchableTcpGatewaySpec struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Matcher creates a FilterChainMatch and TransportSocket for a FilterChain + // For each MatchableTcpGateway on a Gateway CR, the matcher must be unique. + // If there are any identical matchers, the Gateway will be rejected. + // An empty matcher will produce an empty FilterChainMatch (https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/listener/v3/listener_components.proto#envoy-v3-api-msg-config-listener-v3-filterchainmatch) + // effectively matching all incoming connections + Matcher *MatchableTcpGatewaySpec_Matcher `protobuf:"bytes,3,opt,name=matcher,proto3" json:"matcher,omitempty"` + // TcpGateway creates a FilterChain with a TcpProxy. + TcpGateway *TcpGateway `protobuf:"bytes,4,opt,name=tcp_gateway,json=tcpGateway,proto3" json:"tcp_gateway,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MatchableTcpGatewaySpec) Reset() { + *x = MatchableTcpGatewaySpec{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MatchableTcpGatewaySpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MatchableTcpGatewaySpec) ProtoMessage() {} + +func (x *MatchableTcpGatewaySpec) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MatchableTcpGatewaySpec.ProtoReflect.Descriptor instead. +func (*MatchableTcpGatewaySpec) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_rawDescGZIP(), []int{0} +} + +func (x *MatchableTcpGatewaySpec) GetMatcher() *MatchableTcpGatewaySpec_Matcher { + if x != nil { + return x.Matcher + } + return nil +} + +func (x *MatchableTcpGatewaySpec) GetTcpGateway() *TcpGateway { + if x != nil { + return x.TcpGateway + } + return nil +} + +type MatchableTcpGatewayStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + // State is the enum indicating the state of the resource + State MatchableTcpGatewayStatus_State `protobuf:"varint,1,opt,name=state,proto3,enum=gateway.solo.io.MatchableTcpGatewayStatus_State" json:"state,omitempty"` + // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty + Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` + // Reference to the reporter who wrote this status + ReportedBy string `protobuf:"bytes,3,opt,name=reported_by,json=reportedBy,proto3" json:"reported_by,omitempty"` + // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource + SubresourceStatuses map[string]*MatchableTcpGatewayStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Opaque details about status results + Details *structpb.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MatchableTcpGatewayStatus) Reset() { + *x = MatchableTcpGatewayStatus{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MatchableTcpGatewayStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MatchableTcpGatewayStatus) ProtoMessage() {} + +func (x *MatchableTcpGatewayStatus) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MatchableTcpGatewayStatus.ProtoReflect.Descriptor instead. +func (*MatchableTcpGatewayStatus) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_rawDescGZIP(), []int{1} +} + +func (x *MatchableTcpGatewayStatus) GetState() MatchableTcpGatewayStatus_State { + if x != nil { + return x.State + } + return MatchableTcpGatewayStatus_Pending +} + +func (x *MatchableTcpGatewayStatus) GetReason() string { + if x != nil { + return x.Reason + } + return "" +} + +func (x *MatchableTcpGatewayStatus) GetReportedBy() string { + if x != nil { + return x.ReportedBy + } + return "" +} + +func (x *MatchableTcpGatewayStatus) GetSubresourceStatuses() map[string]*MatchableTcpGatewayStatus { + if x != nil { + return x.SubresourceStatuses + } + return nil +} + +func (x *MatchableTcpGatewayStatus) GetDetails() *structpb.Struct { + if x != nil { + return x.Details + } + return nil +} + +type MatchableTcpGatewayNamespacedStatuses struct { + state protoimpl.MessageState `protogen:"open.v1"` + Statuses map[string]*MatchableTcpGatewayStatus `protobuf:"bytes,1,rep,name=statuses,proto3" json:"statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MatchableTcpGatewayNamespacedStatuses) Reset() { + *x = MatchableTcpGatewayNamespacedStatuses{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MatchableTcpGatewayNamespacedStatuses) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MatchableTcpGatewayNamespacedStatuses) ProtoMessage() {} + +func (x *MatchableTcpGatewayNamespacedStatuses) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MatchableTcpGatewayNamespacedStatuses.ProtoReflect.Descriptor instead. +func (*MatchableTcpGatewayNamespacedStatuses) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_rawDescGZIP(), []int{2} +} + +func (x *MatchableTcpGatewayNamespacedStatuses) GetStatuses() map[string]*MatchableTcpGatewayStatus { + if x != nil { + return x.Statuses + } + return nil +} + +type MatchableTcpGatewaySpec_Matcher struct { + state protoimpl.MessageState `protogen:"open.v1"` + // CidrRange specifies an IP Address and a prefix length to construct the subnet mask for a CIDR range. + // See https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/address.proto#envoy-v3-api-msg-config-core-v3-cidrrange + SourcePrefixRanges []*v3.CidrRange `protobuf:"bytes,1,rep,name=source_prefix_ranges,json=sourcePrefixRanges,proto3" json:"source_prefix_ranges,omitempty"` + // Ssl configuration applied to the FilterChain, if using passthrough should not include secrets : + // - FilterChainMatch: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/listener/v3/listener_components.proto#config-listener-v3-filterchainmatch) + // - TransportSocket: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/base.proto#envoy-v3-api-msg-config-core-v3-transportsocket + SslConfig *ssl.SslConfig `protobuf:"bytes,2,opt,name=ssl_config,json=sslConfig,proto3" json:"ssl_config,omitempty"` + // Enterprise-only: Passthrough cipher suites is an allow-list of OpenSSL cipher suite names for which TLS passthrough will be enabled. + // If a client does not support any ciphers that are natively supported by Envoy, but does support one of the ciphers in the passthrough list, + // then traffic will be routed via TCP Proxy to a destination specified by the TcpGateway, where TLS can then be terminated. + PassthroughCipherSuites []string `protobuf:"bytes,3,rep,name=passthrough_cipher_suites,json=passthroughCipherSuites,proto3" json:"passthrough_cipher_suites,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MatchableTcpGatewaySpec_Matcher) Reset() { + *x = MatchableTcpGatewaySpec_Matcher{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MatchableTcpGatewaySpec_Matcher) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MatchableTcpGatewaySpec_Matcher) ProtoMessage() {} + +func (x *MatchableTcpGatewaySpec_Matcher) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MatchableTcpGatewaySpec_Matcher.ProtoReflect.Descriptor instead. +func (*MatchableTcpGatewaySpec_Matcher) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *MatchableTcpGatewaySpec_Matcher) GetSourcePrefixRanges() []*v3.CidrRange { + if x != nil { + return x.SourcePrefixRanges + } + return nil +} + +func (x *MatchableTcpGatewaySpec_Matcher) GetSslConfig() *ssl.SslConfig { + if x != nil { + return x.SslConfig + } + return nil +} + +func (x *MatchableTcpGatewaySpec_Matcher) GetPassthroughCipherSuites() []string { + if x != nil { + return x.PassthroughCipherSuites + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_rawDesc = string([]byte{ + 0x0a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, + 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x63, 0x70, + 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, + 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, + 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x3e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, + 0x31, 0x2f, 0x73, 0x73, 0x6c, 0x2f, 0x73, 0x73, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfe, 0x02, 0x0a, 0x17, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x63, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, + 0x70, 0x65, 0x63, 0x12, 0x4a, 0x0a, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, + 0x54, 0x63, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, + 0x3c, 0x0a, 0x0b, 0x74, 0x63, 0x70, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x63, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x52, 0x0a, 0x74, 0x63, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x1a, 0xd8, 0x01, + 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x14, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x69, 0x64, 0x72, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x52, 0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x0a, 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3a, 0x0a, 0x19, + 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x63, 0x69, 0x70, 0x68, + 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x17, 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x43, 0x69, 0x70, 0x68, + 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x22, 0xfa, 0x03, 0x0a, 0x19, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x63, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x46, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, + 0x65, 0x54, 0x63, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x76, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, + 0x65, 0x54, 0x63, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x2e, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x73, 0x75, 0x62, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, + 0x31, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x1a, 0x72, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x40, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x63, 0x70, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x0b, 0x0a, 0x07, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, + 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, + 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x61, 0x72, 0x6e, + 0x69, 0x6e, 0x67, 0x10, 0x03, 0x22, 0xf2, 0x01, 0x0a, 0x25, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, + 0x62, 0x6c, 0x65, 0x54, 0x63, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, + 0x60, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x63, 0x70, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, + 0x73, 0x1a, 0x67, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x40, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x54, + 0x63, 0x70, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x45, 0xb8, 0xf5, 0x04, 0x01, + 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_goTypes = []any{ + (MatchableTcpGatewayStatus_State)(0), // 0: gateway.solo.io.MatchableTcpGatewayStatus.State + (*MatchableTcpGatewaySpec)(nil), // 1: gateway.solo.io.MatchableTcpGatewaySpec + (*MatchableTcpGatewayStatus)(nil), // 2: gateway.solo.io.MatchableTcpGatewayStatus + (*MatchableTcpGatewayNamespacedStatuses)(nil), // 3: gateway.solo.io.MatchableTcpGatewayNamespacedStatuses + (*MatchableTcpGatewaySpec_Matcher)(nil), // 4: gateway.solo.io.MatchableTcpGatewaySpec.Matcher + nil, // 5: gateway.solo.io.MatchableTcpGatewayStatus.SubresourceStatusesEntry + nil, // 6: gateway.solo.io.MatchableTcpGatewayNamespacedStatuses.StatusesEntry + (*TcpGateway)(nil), // 7: gateway.solo.io.TcpGateway + (*structpb.Struct)(nil), // 8: google.protobuf.Struct + (*v3.CidrRange)(nil), // 9: solo.io.envoy.config.core.v3.CidrRange + (*ssl.SslConfig)(nil), // 10: gloo.solo.io.SslConfig +} +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_depIdxs = []int32{ + 4, // 0: gateway.solo.io.MatchableTcpGatewaySpec.matcher:type_name -> gateway.solo.io.MatchableTcpGatewaySpec.Matcher + 7, // 1: gateway.solo.io.MatchableTcpGatewaySpec.tcp_gateway:type_name -> gateway.solo.io.TcpGateway + 0, // 2: gateway.solo.io.MatchableTcpGatewayStatus.state:type_name -> gateway.solo.io.MatchableTcpGatewayStatus.State + 5, // 3: gateway.solo.io.MatchableTcpGatewayStatus.subresource_statuses:type_name -> gateway.solo.io.MatchableTcpGatewayStatus.SubresourceStatusesEntry + 8, // 4: gateway.solo.io.MatchableTcpGatewayStatus.details:type_name -> google.protobuf.Struct + 6, // 5: gateway.solo.io.MatchableTcpGatewayNamespacedStatuses.statuses:type_name -> gateway.solo.io.MatchableTcpGatewayNamespacedStatuses.StatusesEntry + 9, // 6: gateway.solo.io.MatchableTcpGatewaySpec.Matcher.source_prefix_ranges:type_name -> solo.io.envoy.config.core.v3.CidrRange + 10, // 7: gateway.solo.io.MatchableTcpGatewaySpec.Matcher.ssl_config:type_name -> gloo.solo.io.SslConfig + 2, // 8: gateway.solo.io.MatchableTcpGatewayStatus.SubresourceStatusesEntry.value:type_name -> gateway.solo.io.MatchableTcpGatewayStatus + 2, // 9: gateway.solo.io.MatchableTcpGatewayNamespacedStatuses.StatusesEntry.value:type_name -> gateway.solo.io.MatchableTcpGatewayStatus + 10, // [10:10] is the sub-list for method output_type + 10, // [10:10] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name +} + +func init() { file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_init() } +func file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_gateway_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_rawDesc)), + NumEnums: 1, + NumMessages: 6, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_enumTypes, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_matchable_tcp_gateway_proto_depIdxs = nil +} diff --git a/pkg/api/gateway.solo.io/v1/matchable_tcp_gateway.pb.hash.go b/pkg/api/gateway.solo.io/v1/matchable_tcp_gateway.pb.hash.go new file mode 100644 index 000000000..b5858de39 --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/matchable_tcp_gateway.pb.hash.go @@ -0,0 +1,309 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/matchable_tcp_gateway.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *MatchableTcpGatewaySpec) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.MatchableTcpGatewaySpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMatcher(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTcpGateway()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpGateway")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTcpGateway(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TcpGateway")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *MatchableTcpGatewayStatus) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.MatchableTcpGatewayStatus")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *MatchableTcpGatewayNamespacedStatuses) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.MatchableTcpGatewayNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *MatchableTcpGatewaySpec_Matcher) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.MatchableTcpGatewaySpec_Matcher")); err != nil { + return 0, err + } + + for _, v := range m.GetSourcePrefixRanges() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetPassthroughCipherSuites() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gateway.solo.io/v1/matchable_tcp_gateway.pb.uniquehash.go b/pkg/api/gateway.solo.io/v1/matchable_tcp_gateway.pb.uniquehash.go new file mode 100644 index 000000000..38b8713b6 --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/matchable_tcp_gateway.pb.uniquehash.go @@ -0,0 +1,337 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/matchable_tcp_gateway.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MatchableTcpGatewaySpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.MatchableTcpGatewaySpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMatcher(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTcpGateway()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpGateway")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTcpGateway(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TcpGateway")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MatchableTcpGatewayStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.MatchableTcpGatewayStatus")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("State")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Reason")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ReportedBy")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MatchableTcpGatewayNamespacedStatuses) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.MatchableTcpGatewayNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MatchableTcpGatewaySpec_Matcher) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.MatchableTcpGatewaySpec_Matcher")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SourcePrefixRanges")); err != nil { + return 0, err + } + for i, v := range m.GetSourcePrefixRanges() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("PassthroughCipherSuites")); err != nil { + return 0, err + } + for i, v := range m.GetPassthroughCipherSuites() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gateway.solo.io/v1/mocks/clients.go b/pkg/api/gateway.solo.io/v1/mocks/clients.go index 63ccac883..333e2f83f 100644 --- a/pkg/api/gateway.solo.io/v1/mocks/clients.go +++ b/pkg/api/gateway.solo.io/v1/mocks/clients.go @@ -13,30 +13,30 @@ import ( client "sigs.k8s.io/controller-runtime/pkg/client" ) -// MockMulticlusterClientset is a mock of MulticlusterClientset interface +// MockMulticlusterClientset is a mock of MulticlusterClientset interface. type MockMulticlusterClientset struct { ctrl *gomock.Controller recorder *MockMulticlusterClientsetMockRecorder } -// MockMulticlusterClientsetMockRecorder is the mock recorder for MockMulticlusterClientset +// MockMulticlusterClientsetMockRecorder is the mock recorder for MockMulticlusterClientset. type MockMulticlusterClientsetMockRecorder struct { mock *MockMulticlusterClientset } -// NewMockMulticlusterClientset creates a new mock instance +// NewMockMulticlusterClientset creates a new mock instance. func NewMockMulticlusterClientset(ctrl *gomock.Controller) *MockMulticlusterClientset { mock := &MockMulticlusterClientset{ctrl: ctrl} mock.recorder = &MockMulticlusterClientsetMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterClientset) EXPECT() *MockMulticlusterClientsetMockRecorder { return m.recorder } -// Cluster mocks base method +// Cluster mocks base method. func (m *MockMulticlusterClientset) Cluster(cluster string) (v1.Clientset, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Cluster", cluster) @@ -45,36 +45,36 @@ func (m *MockMulticlusterClientset) Cluster(cluster string) (v1.Clientset, error return ret0, ret1 } -// Cluster indicates an expected call of Cluster +// Cluster indicates an expected call of Cluster. func (mr *MockMulticlusterClientsetMockRecorder) Cluster(cluster interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterClientset)(nil).Cluster), cluster) } -// MockClientset is a mock of Clientset interface +// MockClientset is a mock of Clientset interface. type MockClientset struct { ctrl *gomock.Controller recorder *MockClientsetMockRecorder } -// MockClientsetMockRecorder is the mock recorder for MockClientset +// MockClientsetMockRecorder is the mock recorder for MockClientset. type MockClientsetMockRecorder struct { mock *MockClientset } -// NewMockClientset creates a new mock instance +// NewMockClientset creates a new mock instance. func NewMockClientset(ctrl *gomock.Controller) *MockClientset { mock := &MockClientset{ctrl: ctrl} mock.recorder = &MockClientsetMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockClientset) EXPECT() *MockClientsetMockRecorder { return m.recorder } -// Gateways mocks base method +// Gateways mocks base method. func (m *MockClientset) Gateways() v1.GatewayClient { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Gateways") @@ -82,13 +82,83 @@ func (m *MockClientset) Gateways() v1.GatewayClient { return ret0 } -// Gateways indicates an expected call of Gateways +// Gateways indicates an expected call of Gateways. func (mr *MockClientsetMockRecorder) Gateways() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Gateways", reflect.TypeOf((*MockClientset)(nil).Gateways)) } -// RouteTables mocks base method +// HttpListenerOptions mocks base method. +func (m *MockClientset) HttpListenerOptions() v1.HttpListenerOptionClient { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "HttpListenerOptions") + ret0, _ := ret[0].(v1.HttpListenerOptionClient) + return ret0 +} + +// HttpListenerOptions indicates an expected call of HttpListenerOptions. +func (mr *MockClientsetMockRecorder) HttpListenerOptions() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "HttpListenerOptions", reflect.TypeOf((*MockClientset)(nil).HttpListenerOptions)) +} + +// ListenerOptions mocks base method. +func (m *MockClientset) ListenerOptions() v1.ListenerOptionClient { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ListenerOptions") + ret0, _ := ret[0].(v1.ListenerOptionClient) + return ret0 +} + +// ListenerOptions indicates an expected call of ListenerOptions. +func (mr *MockClientsetMockRecorder) ListenerOptions() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListenerOptions", reflect.TypeOf((*MockClientset)(nil).ListenerOptions)) +} + +// MatchableHttpGateways mocks base method. +func (m *MockClientset) MatchableHttpGateways() v1.MatchableHttpGatewayClient { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "MatchableHttpGateways") + ret0, _ := ret[0].(v1.MatchableHttpGatewayClient) + return ret0 +} + +// MatchableHttpGateways indicates an expected call of MatchableHttpGateways. +func (mr *MockClientsetMockRecorder) MatchableHttpGateways() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MatchableHttpGateways", reflect.TypeOf((*MockClientset)(nil).MatchableHttpGateways)) +} + +// MatchableTcpGateways mocks base method. +func (m *MockClientset) MatchableTcpGateways() v1.MatchableTcpGatewayClient { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "MatchableTcpGateways") + ret0, _ := ret[0].(v1.MatchableTcpGatewayClient) + return ret0 +} + +// MatchableTcpGateways indicates an expected call of MatchableTcpGateways. +func (mr *MockClientsetMockRecorder) MatchableTcpGateways() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MatchableTcpGateways", reflect.TypeOf((*MockClientset)(nil).MatchableTcpGateways)) +} + +// RouteOptions mocks base method. +func (m *MockClientset) RouteOptions() v1.RouteOptionClient { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "RouteOptions") + ret0, _ := ret[0].(v1.RouteOptionClient) + return ret0 +} + +// RouteOptions indicates an expected call of RouteOptions. +func (mr *MockClientsetMockRecorder) RouteOptions() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RouteOptions", reflect.TypeOf((*MockClientset)(nil).RouteOptions)) +} + +// RouteTables mocks base method. func (m *MockClientset) RouteTables() v1.RouteTableClient { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "RouteTables") @@ -96,13 +166,27 @@ func (m *MockClientset) RouteTables() v1.RouteTableClient { return ret0 } -// RouteTables indicates an expected call of RouteTables +// RouteTables indicates an expected call of RouteTables. func (mr *MockClientsetMockRecorder) RouteTables() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RouteTables", reflect.TypeOf((*MockClientset)(nil).RouteTables)) } -// VirtualServices mocks base method +// VirtualHostOptions mocks base method. +func (m *MockClientset) VirtualHostOptions() v1.VirtualHostOptionClient { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "VirtualHostOptions") + ret0, _ := ret[0].(v1.VirtualHostOptionClient) + return ret0 +} + +// VirtualHostOptions indicates an expected call of VirtualHostOptions. +func (mr *MockClientsetMockRecorder) VirtualHostOptions() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "VirtualHostOptions", reflect.TypeOf((*MockClientset)(nil).VirtualHostOptions)) +} + +// VirtualServices mocks base method. func (m *MockClientset) VirtualServices() v1.VirtualServiceClient { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "VirtualServices") @@ -110,36 +194,36 @@ func (m *MockClientset) VirtualServices() v1.VirtualServiceClient { return ret0 } -// VirtualServices indicates an expected call of VirtualServices +// VirtualServices indicates an expected call of VirtualServices. func (mr *MockClientsetMockRecorder) VirtualServices() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "VirtualServices", reflect.TypeOf((*MockClientset)(nil).VirtualServices)) } -// MockGatewayReader is a mock of GatewayReader interface +// MockGatewayReader is a mock of GatewayReader interface. type MockGatewayReader struct { ctrl *gomock.Controller recorder *MockGatewayReaderMockRecorder } -// MockGatewayReaderMockRecorder is the mock recorder for MockGatewayReader +// MockGatewayReaderMockRecorder is the mock recorder for MockGatewayReader. type MockGatewayReaderMockRecorder struct { mock *MockGatewayReader } -// NewMockGatewayReader creates a new mock instance +// NewMockGatewayReader creates a new mock instance. func NewMockGatewayReader(ctrl *gomock.Controller) *MockGatewayReader { mock := &MockGatewayReader{ctrl: ctrl} mock.recorder = &MockGatewayReaderMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockGatewayReader) EXPECT() *MockGatewayReaderMockRecorder { return m.recorder } -// GetGateway mocks base method +// GetGateway mocks base method. func (m *MockGatewayReader) GetGateway(ctx context.Context, key client.ObjectKey) (*v1.Gateway, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetGateway", ctx, key) @@ -148,13 +232,13 @@ func (m *MockGatewayReader) GetGateway(ctx context.Context, key client.ObjectKey return ret0, ret1 } -// GetGateway indicates an expected call of GetGateway +// GetGateway indicates an expected call of GetGateway. func (mr *MockGatewayReaderMockRecorder) GetGateway(ctx, key interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGateway", reflect.TypeOf((*MockGatewayReader)(nil).GetGateway), ctx, key) } -// ListGateway mocks base method +// ListGateway mocks base method. func (m *MockGatewayReader) ListGateway(ctx context.Context, opts ...client.ListOption) (*v1.GatewayList, error) { m.ctrl.T.Helper() varargs := []interface{}{ctx} @@ -167,37 +251,37 @@ func (m *MockGatewayReader) ListGateway(ctx context.Context, opts ...client.List return ret0, ret1 } -// ListGateway indicates an expected call of ListGateway +// ListGateway indicates an expected call of ListGateway. func (mr *MockGatewayReaderMockRecorder) ListGateway(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListGateway", reflect.TypeOf((*MockGatewayReader)(nil).ListGateway), varargs...) } -// MockGatewayWriter is a mock of GatewayWriter interface +// MockGatewayWriter is a mock of GatewayWriter interface. type MockGatewayWriter struct { ctrl *gomock.Controller recorder *MockGatewayWriterMockRecorder } -// MockGatewayWriterMockRecorder is the mock recorder for MockGatewayWriter +// MockGatewayWriterMockRecorder is the mock recorder for MockGatewayWriter. type MockGatewayWriterMockRecorder struct { mock *MockGatewayWriter } -// NewMockGatewayWriter creates a new mock instance +// NewMockGatewayWriter creates a new mock instance. func NewMockGatewayWriter(ctrl *gomock.Controller) *MockGatewayWriter { mock := &MockGatewayWriter{ctrl: ctrl} mock.recorder = &MockGatewayWriterMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockGatewayWriter) EXPECT() *MockGatewayWriterMockRecorder { return m.recorder } -// CreateGateway mocks base method +// CreateGateway mocks base method. func (m *MockGatewayWriter) CreateGateway(ctx context.Context, obj *v1.Gateway, opts ...client.CreateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} @@ -209,52 +293,52 @@ func (m *MockGatewayWriter) CreateGateway(ctx context.Context, obj *v1.Gateway, return ret0 } -// CreateGateway indicates an expected call of CreateGateway +// CreateGateway indicates an expected call of CreateGateway. func (mr *MockGatewayWriterMockRecorder) CreateGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateGateway", reflect.TypeOf((*MockGatewayWriter)(nil).CreateGateway), varargs...) } -// DeleteGateway mocks base method -func (m *MockGatewayWriter) DeleteGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { +// DeleteAllOfGateway mocks base method. +func (m *MockGatewayWriter) DeleteAllOfGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, key} + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteGateway", varargs...) + ret := m.ctrl.Call(m, "DeleteAllOfGateway", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteGateway indicates an expected call of DeleteGateway -func (mr *MockGatewayWriterMockRecorder) DeleteGateway(ctx, key interface{}, opts ...interface{}) *gomock.Call { +// DeleteAllOfGateway indicates an expected call of DeleteAllOfGateway. +func (mr *MockGatewayWriterMockRecorder) DeleteAllOfGateway(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, key}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteGateway", reflect.TypeOf((*MockGatewayWriter)(nil).DeleteGateway), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfGateway", reflect.TypeOf((*MockGatewayWriter)(nil).DeleteAllOfGateway), varargs...) } -// UpdateGateway mocks base method -func (m *MockGatewayWriter) UpdateGateway(ctx context.Context, obj *v1.Gateway, opts ...client.UpdateOption) error { +// DeleteGateway mocks base method. +func (m *MockGatewayWriter) DeleteGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx, key} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateGateway", varargs...) + ret := m.ctrl.Call(m, "DeleteGateway", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateGateway indicates an expected call of UpdateGateway -func (mr *MockGatewayWriterMockRecorder) UpdateGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// DeleteGateway indicates an expected call of DeleteGateway. +func (mr *MockGatewayWriterMockRecorder) DeleteGateway(ctx, key interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateGateway", reflect.TypeOf((*MockGatewayWriter)(nil).UpdateGateway), varargs...) + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteGateway", reflect.TypeOf((*MockGatewayWriter)(nil).DeleteGateway), varargs...) } -// PatchGateway mocks base method +// PatchGateway mocks base method. func (m *MockGatewayWriter) PatchGateway(ctx context.Context, obj *v1.Gateway, patch client.Patch, opts ...client.PatchOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj, patch} @@ -266,33 +350,33 @@ func (m *MockGatewayWriter) PatchGateway(ctx context.Context, obj *v1.Gateway, p return ret0 } -// PatchGateway indicates an expected call of PatchGateway +// PatchGateway indicates an expected call of PatchGateway. func (mr *MockGatewayWriterMockRecorder) PatchGateway(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj, patch}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchGateway", reflect.TypeOf((*MockGatewayWriter)(nil).PatchGateway), varargs...) } -// DeleteAllOfGateway mocks base method -func (m *MockGatewayWriter) DeleteAllOfGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error { +// UpdateGateway mocks base method. +func (m *MockGatewayWriter) UpdateGateway(ctx context.Context, obj *v1.Gateway, opts ...client.UpdateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteAllOfGateway", varargs...) + ret := m.ctrl.Call(m, "UpdateGateway", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteAllOfGateway indicates an expected call of DeleteAllOfGateway -func (mr *MockGatewayWriterMockRecorder) DeleteAllOfGateway(ctx interface{}, opts ...interface{}) *gomock.Call { +// UpdateGateway indicates an expected call of UpdateGateway. +func (mr *MockGatewayWriterMockRecorder) UpdateGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfGateway", reflect.TypeOf((*MockGatewayWriter)(nil).DeleteAllOfGateway), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateGateway", reflect.TypeOf((*MockGatewayWriter)(nil).UpdateGateway), varargs...) } -// UpsertGateway mocks base method +// UpsertGateway mocks base method. func (m *MockGatewayWriter) UpsertGateway(ctx context.Context, obj *v1.Gateway, transitionFuncs ...v1.GatewayTransitionFunction) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} @@ -304,152 +388,136 @@ func (m *MockGatewayWriter) UpsertGateway(ctx context.Context, obj *v1.Gateway, return ret0 } -// UpsertGateway indicates an expected call of UpsertGateway +// UpsertGateway indicates an expected call of UpsertGateway. func (mr *MockGatewayWriterMockRecorder) UpsertGateway(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, transitionFuncs...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertGateway", reflect.TypeOf((*MockGatewayWriter)(nil).UpsertGateway), varargs...) } -// MockGatewayStatusWriter is a mock of GatewayStatusWriter interface +// MockGatewayStatusWriter is a mock of GatewayStatusWriter interface. type MockGatewayStatusWriter struct { ctrl *gomock.Controller recorder *MockGatewayStatusWriterMockRecorder } -// MockGatewayStatusWriterMockRecorder is the mock recorder for MockGatewayStatusWriter +// MockGatewayStatusWriterMockRecorder is the mock recorder for MockGatewayStatusWriter. type MockGatewayStatusWriterMockRecorder struct { mock *MockGatewayStatusWriter } -// NewMockGatewayStatusWriter creates a new mock instance +// NewMockGatewayStatusWriter creates a new mock instance. func NewMockGatewayStatusWriter(ctrl *gomock.Controller) *MockGatewayStatusWriter { mock := &MockGatewayStatusWriter{ctrl: ctrl} mock.recorder = &MockGatewayStatusWriterMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockGatewayStatusWriter) EXPECT() *MockGatewayStatusWriterMockRecorder { return m.recorder } -// UpdateGatewayStatus mocks base method -func (m *MockGatewayStatusWriter) UpdateGatewayStatus(ctx context.Context, obj *v1.Gateway, opts ...client.UpdateOption) error { +// PatchGatewayStatus mocks base method. +func (m *MockGatewayStatusWriter) PatchGatewayStatus(ctx context.Context, obj *v1.Gateway, patch client.Patch, opts ...client.SubResourcePatchOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateGatewayStatus", varargs...) + ret := m.ctrl.Call(m, "PatchGatewayStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateGatewayStatus indicates an expected call of UpdateGatewayStatus -func (mr *MockGatewayStatusWriterMockRecorder) UpdateGatewayStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// PatchGatewayStatus indicates an expected call of PatchGatewayStatus. +func (mr *MockGatewayStatusWriterMockRecorder) PatchGatewayStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateGatewayStatus", reflect.TypeOf((*MockGatewayStatusWriter)(nil).UpdateGatewayStatus), varargs...) + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchGatewayStatus", reflect.TypeOf((*MockGatewayStatusWriter)(nil).PatchGatewayStatus), varargs...) } -// PatchGatewayStatus mocks base method -func (m *MockGatewayStatusWriter) PatchGatewayStatus(ctx context.Context, obj *v1.Gateway, patch client.Patch, opts ...client.PatchOption) error { +// UpdateGatewayStatus mocks base method. +func (m *MockGatewayStatusWriter) UpdateGatewayStatus(ctx context.Context, obj *v1.Gateway, opts ...client.SubResourceUpdateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj, patch} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchGatewayStatus", varargs...) + ret := m.ctrl.Call(m, "UpdateGatewayStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchGatewayStatus indicates an expected call of PatchGatewayStatus -func (mr *MockGatewayStatusWriterMockRecorder) PatchGatewayStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// UpdateGatewayStatus indicates an expected call of UpdateGatewayStatus. +func (mr *MockGatewayStatusWriterMockRecorder) UpdateGatewayStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchGatewayStatus", reflect.TypeOf((*MockGatewayStatusWriter)(nil).PatchGatewayStatus), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateGatewayStatus", reflect.TypeOf((*MockGatewayStatusWriter)(nil).UpdateGatewayStatus), varargs...) } -// MockGatewayClient is a mock of GatewayClient interface +// MockGatewayClient is a mock of GatewayClient interface. type MockGatewayClient struct { ctrl *gomock.Controller recorder *MockGatewayClientMockRecorder } -// MockGatewayClientMockRecorder is the mock recorder for MockGatewayClient +// MockGatewayClientMockRecorder is the mock recorder for MockGatewayClient. type MockGatewayClientMockRecorder struct { mock *MockGatewayClient } -// NewMockGatewayClient creates a new mock instance +// NewMockGatewayClient creates a new mock instance. func NewMockGatewayClient(ctrl *gomock.Controller) *MockGatewayClient { mock := &MockGatewayClient{ctrl: ctrl} mock.recorder = &MockGatewayClientMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockGatewayClient) EXPECT() *MockGatewayClientMockRecorder { return m.recorder } -// GetGateway mocks base method -func (m *MockGatewayClient) GetGateway(ctx context.Context, key client.ObjectKey) (*v1.Gateway, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetGateway", ctx, key) - ret0, _ := ret[0].(*v1.Gateway) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetGateway indicates an expected call of GetGateway -func (mr *MockGatewayClientMockRecorder) GetGateway(ctx, key interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGateway", reflect.TypeOf((*MockGatewayClient)(nil).GetGateway), ctx, key) -} - -// ListGateway mocks base method -func (m *MockGatewayClient) ListGateway(ctx context.Context, opts ...client.ListOption) (*v1.GatewayList, error) { +// CreateGateway mocks base method. +func (m *MockGatewayClient) CreateGateway(ctx context.Context, obj *v1.Gateway, opts ...client.CreateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "ListGateway", varargs...) - ret0, _ := ret[0].(*v1.GatewayList) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "CreateGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 } -// ListGateway indicates an expected call of ListGateway -func (mr *MockGatewayClientMockRecorder) ListGateway(ctx interface{}, opts ...interface{}) *gomock.Call { +// CreateGateway indicates an expected call of CreateGateway. +func (mr *MockGatewayClientMockRecorder) CreateGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListGateway", reflect.TypeOf((*MockGatewayClient)(nil).ListGateway), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateGateway", reflect.TypeOf((*MockGatewayClient)(nil).CreateGateway), varargs...) } -// CreateGateway mocks base method -func (m *MockGatewayClient) CreateGateway(ctx context.Context, obj *v1.Gateway, opts ...client.CreateOption) error { +// DeleteAllOfGateway mocks base method. +func (m *MockGatewayClient) DeleteAllOfGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "CreateGateway", varargs...) + ret := m.ctrl.Call(m, "DeleteAllOfGateway", varargs...) ret0, _ := ret[0].(error) return ret0 } -// CreateGateway indicates an expected call of CreateGateway -func (mr *MockGatewayClientMockRecorder) CreateGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// DeleteAllOfGateway indicates an expected call of DeleteAllOfGateway. +func (mr *MockGatewayClientMockRecorder) DeleteAllOfGateway(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateGateway", reflect.TypeOf((*MockGatewayClient)(nil).CreateGateway), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfGateway", reflect.TypeOf((*MockGatewayClient)(nil).DeleteAllOfGateway), varargs...) } -// DeleteGateway mocks base method +// DeleteGateway mocks base method. func (m *MockGatewayClient) DeleteGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, key} @@ -461,33 +529,49 @@ func (m *MockGatewayClient) DeleteGateway(ctx context.Context, key client.Object return ret0 } -// DeleteGateway indicates an expected call of DeleteGateway +// DeleteGateway indicates an expected call of DeleteGateway. func (mr *MockGatewayClientMockRecorder) DeleteGateway(ctx, key interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, key}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteGateway", reflect.TypeOf((*MockGatewayClient)(nil).DeleteGateway), varargs...) } -// UpdateGateway mocks base method -func (m *MockGatewayClient) UpdateGateway(ctx context.Context, obj *v1.Gateway, opts ...client.UpdateOption) error { +// GetGateway mocks base method. +func (m *MockGatewayClient) GetGateway(ctx context.Context, key client.ObjectKey) (*v1.Gateway, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + ret := m.ctrl.Call(m, "GetGateway", ctx, key) + ret0, _ := ret[0].(*v1.Gateway) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetGateway indicates an expected call of GetGateway. +func (mr *MockGatewayClientMockRecorder) GetGateway(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGateway", reflect.TypeOf((*MockGatewayClient)(nil).GetGateway), ctx, key) +} + +// ListGateway mocks base method. +func (m *MockGatewayClient) ListGateway(ctx context.Context, opts ...client.ListOption) (*v1.GatewayList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateGateway", varargs...) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "ListGateway", varargs...) + ret0, _ := ret[0].(*v1.GatewayList) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// UpdateGateway indicates an expected call of UpdateGateway -func (mr *MockGatewayClientMockRecorder) UpdateGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// ListGateway indicates an expected call of ListGateway. +func (mr *MockGatewayClientMockRecorder) ListGateway(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateGateway", reflect.TypeOf((*MockGatewayClient)(nil).UpdateGateway), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListGateway", reflect.TypeOf((*MockGatewayClient)(nil).ListGateway), varargs...) } -// PatchGateway mocks base method +// PatchGateway mocks base method. func (m *MockGatewayClient) PatchGateway(ctx context.Context, obj *v1.Gateway, patch client.Patch, opts ...client.PatchOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj, patch} @@ -499,53 +583,53 @@ func (m *MockGatewayClient) PatchGateway(ctx context.Context, obj *v1.Gateway, p return ret0 } -// PatchGateway indicates an expected call of PatchGateway +// PatchGateway indicates an expected call of PatchGateway. func (mr *MockGatewayClientMockRecorder) PatchGateway(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj, patch}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchGateway", reflect.TypeOf((*MockGatewayClient)(nil).PatchGateway), varargs...) } -// DeleteAllOfGateway mocks base method -func (m *MockGatewayClient) DeleteAllOfGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error { +// PatchGatewayStatus mocks base method. +func (m *MockGatewayClient) PatchGatewayStatus(ctx context.Context, obj *v1.Gateway, patch client.Patch, opts ...client.SubResourcePatchOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteAllOfGateway", varargs...) + ret := m.ctrl.Call(m, "PatchGatewayStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteAllOfGateway indicates an expected call of DeleteAllOfGateway -func (mr *MockGatewayClientMockRecorder) DeleteAllOfGateway(ctx interface{}, opts ...interface{}) *gomock.Call { +// PatchGatewayStatus indicates an expected call of PatchGatewayStatus. +func (mr *MockGatewayClientMockRecorder) PatchGatewayStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfGateway", reflect.TypeOf((*MockGatewayClient)(nil).DeleteAllOfGateway), varargs...) + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchGatewayStatus", reflect.TypeOf((*MockGatewayClient)(nil).PatchGatewayStatus), varargs...) } -// UpsertGateway mocks base method -func (m *MockGatewayClient) UpsertGateway(ctx context.Context, obj *v1.Gateway, transitionFuncs ...v1.GatewayTransitionFunction) error { +// UpdateGateway mocks base method. +func (m *MockGatewayClient) UpdateGateway(ctx context.Context, obj *v1.Gateway, opts ...client.UpdateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} - for _, a := range transitionFuncs { + for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpsertGateway", varargs...) + ret := m.ctrl.Call(m, "UpdateGateway", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpsertGateway indicates an expected call of UpsertGateway -func (mr *MockGatewayClientMockRecorder) UpsertGateway(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { +// UpdateGateway indicates an expected call of UpdateGateway. +func (mr *MockGatewayClientMockRecorder) UpdateGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, transitionFuncs...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertGateway", reflect.TypeOf((*MockGatewayClient)(nil).UpsertGateway), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateGateway", reflect.TypeOf((*MockGatewayClient)(nil).UpdateGateway), varargs...) } -// UpdateGatewayStatus mocks base method -func (m *MockGatewayClient) UpdateGatewayStatus(ctx context.Context, obj *v1.Gateway, opts ...client.UpdateOption) error { +// UpdateGatewayStatus mocks base method. +func (m *MockGatewayClient) UpdateGatewayStatus(ctx context.Context, obj *v1.Gateway, opts ...client.SubResourceUpdateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} for _, a := range opts { @@ -556,56 +640,56 @@ func (m *MockGatewayClient) UpdateGatewayStatus(ctx context.Context, obj *v1.Gat return ret0 } -// UpdateGatewayStatus indicates an expected call of UpdateGatewayStatus +// UpdateGatewayStatus indicates an expected call of UpdateGatewayStatus. func (mr *MockGatewayClientMockRecorder) UpdateGatewayStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateGatewayStatus", reflect.TypeOf((*MockGatewayClient)(nil).UpdateGatewayStatus), varargs...) } -// PatchGatewayStatus mocks base method -func (m *MockGatewayClient) PatchGatewayStatus(ctx context.Context, obj *v1.Gateway, patch client.Patch, opts ...client.PatchOption) error { +// UpsertGateway mocks base method. +func (m *MockGatewayClient) UpsertGateway(ctx context.Context, obj *v1.Gateway, transitionFuncs ...v1.GatewayTransitionFunction) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj, patch} - for _, a := range opts { + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchGatewayStatus", varargs...) + ret := m.ctrl.Call(m, "UpsertGateway", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchGatewayStatus indicates an expected call of PatchGatewayStatus -func (mr *MockGatewayClientMockRecorder) PatchGatewayStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// UpsertGateway indicates an expected call of UpsertGateway. +func (mr *MockGatewayClientMockRecorder) UpsertGateway(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchGatewayStatus", reflect.TypeOf((*MockGatewayClient)(nil).PatchGatewayStatus), varargs...) + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertGateway", reflect.TypeOf((*MockGatewayClient)(nil).UpsertGateway), varargs...) } -// MockMulticlusterGatewayClient is a mock of MulticlusterGatewayClient interface +// MockMulticlusterGatewayClient is a mock of MulticlusterGatewayClient interface. type MockMulticlusterGatewayClient struct { ctrl *gomock.Controller recorder *MockMulticlusterGatewayClientMockRecorder } -// MockMulticlusterGatewayClientMockRecorder is the mock recorder for MockMulticlusterGatewayClient +// MockMulticlusterGatewayClientMockRecorder is the mock recorder for MockMulticlusterGatewayClient. type MockMulticlusterGatewayClientMockRecorder struct { mock *MockMulticlusterGatewayClient } -// NewMockMulticlusterGatewayClient creates a new mock instance +// NewMockMulticlusterGatewayClient creates a new mock instance. func NewMockMulticlusterGatewayClient(ctrl *gomock.Controller) *MockMulticlusterGatewayClient { mock := &MockMulticlusterGatewayClient{ctrl: ctrl} mock.recorder = &MockMulticlusterGatewayClientMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterGatewayClient) EXPECT() *MockMulticlusterGatewayClientMockRecorder { return m.recorder } -// Cluster mocks base method +// Cluster mocks base method. func (m *MockMulticlusterGatewayClient) Cluster(cluster string) (v1.GatewayClient, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Cluster", cluster) @@ -614,1016 +698,4040 @@ func (m *MockMulticlusterGatewayClient) Cluster(cluster string) (v1.GatewayClien return ret0, ret1 } -// Cluster indicates an expected call of Cluster +// Cluster indicates an expected call of Cluster. func (mr *MockMulticlusterGatewayClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterGatewayClient)(nil).Cluster), cluster) } -// MockRouteTableReader is a mock of RouteTableReader interface -type MockRouteTableReader struct { +// MockHttpListenerOptionReader is a mock of HttpListenerOptionReader interface. +type MockHttpListenerOptionReader struct { ctrl *gomock.Controller - recorder *MockRouteTableReaderMockRecorder + recorder *MockHttpListenerOptionReaderMockRecorder } -// MockRouteTableReaderMockRecorder is the mock recorder for MockRouteTableReader -type MockRouteTableReaderMockRecorder struct { - mock *MockRouteTableReader +// MockHttpListenerOptionReaderMockRecorder is the mock recorder for MockHttpListenerOptionReader. +type MockHttpListenerOptionReaderMockRecorder struct { + mock *MockHttpListenerOptionReader } -// NewMockRouteTableReader creates a new mock instance -func NewMockRouteTableReader(ctrl *gomock.Controller) *MockRouteTableReader { - mock := &MockRouteTableReader{ctrl: ctrl} - mock.recorder = &MockRouteTableReaderMockRecorder{mock} +// NewMockHttpListenerOptionReader creates a new mock instance. +func NewMockHttpListenerOptionReader(ctrl *gomock.Controller) *MockHttpListenerOptionReader { + mock := &MockHttpListenerOptionReader{ctrl: ctrl} + mock.recorder = &MockHttpListenerOptionReaderMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use -func (m *MockRouteTableReader) EXPECT() *MockRouteTableReaderMockRecorder { +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockHttpListenerOptionReader) EXPECT() *MockHttpListenerOptionReaderMockRecorder { return m.recorder } -// GetRouteTable mocks base method -func (m *MockRouteTableReader) GetRouteTable(ctx context.Context, key client.ObjectKey) (*v1.RouteTable, error) { +// GetHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionReader) GetHttpListenerOption(ctx context.Context, key client.ObjectKey) (*v1.HttpListenerOption, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetRouteTable", ctx, key) - ret0, _ := ret[0].(*v1.RouteTable) + ret := m.ctrl.Call(m, "GetHttpListenerOption", ctx, key) + ret0, _ := ret[0].(*v1.HttpListenerOption) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetRouteTable indicates an expected call of GetRouteTable -func (mr *MockRouteTableReaderMockRecorder) GetRouteTable(ctx, key interface{}) *gomock.Call { +// GetHttpListenerOption indicates an expected call of GetHttpListenerOption. +func (mr *MockHttpListenerOptionReaderMockRecorder) GetHttpListenerOption(ctx, key interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRouteTable", reflect.TypeOf((*MockRouteTableReader)(nil).GetRouteTable), ctx, key) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionReader)(nil).GetHttpListenerOption), ctx, key) } -// ListRouteTable mocks base method -func (m *MockRouteTableReader) ListRouteTable(ctx context.Context, opts ...client.ListOption) (*v1.RouteTableList, error) { +// ListHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionReader) ListHttpListenerOption(ctx context.Context, opts ...client.ListOption) (*v1.HttpListenerOptionList, error) { m.ctrl.T.Helper() varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "ListRouteTable", varargs...) - ret0, _ := ret[0].(*v1.RouteTableList) + ret := m.ctrl.Call(m, "ListHttpListenerOption", varargs...) + ret0, _ := ret[0].(*v1.HttpListenerOptionList) ret1, _ := ret[1].(error) return ret0, ret1 } -// ListRouteTable indicates an expected call of ListRouteTable -func (mr *MockRouteTableReaderMockRecorder) ListRouteTable(ctx interface{}, opts ...interface{}) *gomock.Call { +// ListHttpListenerOption indicates an expected call of ListHttpListenerOption. +func (mr *MockHttpListenerOptionReaderMockRecorder) ListHttpListenerOption(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListRouteTable", reflect.TypeOf((*MockRouteTableReader)(nil).ListRouteTable), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionReader)(nil).ListHttpListenerOption), varargs...) } -// MockRouteTableWriter is a mock of RouteTableWriter interface -type MockRouteTableWriter struct { +// MockHttpListenerOptionWriter is a mock of HttpListenerOptionWriter interface. +type MockHttpListenerOptionWriter struct { ctrl *gomock.Controller - recorder *MockRouteTableWriterMockRecorder + recorder *MockHttpListenerOptionWriterMockRecorder } -// MockRouteTableWriterMockRecorder is the mock recorder for MockRouteTableWriter -type MockRouteTableWriterMockRecorder struct { - mock *MockRouteTableWriter +// MockHttpListenerOptionWriterMockRecorder is the mock recorder for MockHttpListenerOptionWriter. +type MockHttpListenerOptionWriterMockRecorder struct { + mock *MockHttpListenerOptionWriter } -// NewMockRouteTableWriter creates a new mock instance -func NewMockRouteTableWriter(ctrl *gomock.Controller) *MockRouteTableWriter { - mock := &MockRouteTableWriter{ctrl: ctrl} - mock.recorder = &MockRouteTableWriterMockRecorder{mock} +// NewMockHttpListenerOptionWriter creates a new mock instance. +func NewMockHttpListenerOptionWriter(ctrl *gomock.Controller) *MockHttpListenerOptionWriter { + mock := &MockHttpListenerOptionWriter{ctrl: ctrl} + mock.recorder = &MockHttpListenerOptionWriterMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use -func (m *MockRouteTableWriter) EXPECT() *MockRouteTableWriterMockRecorder { +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockHttpListenerOptionWriter) EXPECT() *MockHttpListenerOptionWriterMockRecorder { return m.recorder } -// CreateRouteTable mocks base method -func (m *MockRouteTableWriter) CreateRouteTable(ctx context.Context, obj *v1.RouteTable, opts ...client.CreateOption) error { +// CreateHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionWriter) CreateHttpListenerOption(ctx context.Context, obj *v1.HttpListenerOption, opts ...client.CreateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "CreateRouteTable", varargs...) + ret := m.ctrl.Call(m, "CreateHttpListenerOption", varargs...) ret0, _ := ret[0].(error) return ret0 } -// CreateRouteTable indicates an expected call of CreateRouteTable -func (mr *MockRouteTableWriterMockRecorder) CreateRouteTable(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// CreateHttpListenerOption indicates an expected call of CreateHttpListenerOption. +func (mr *MockHttpListenerOptionWriterMockRecorder) CreateHttpListenerOption(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateRouteTable", reflect.TypeOf((*MockRouteTableWriter)(nil).CreateRouteTable), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionWriter)(nil).CreateHttpListenerOption), varargs...) } -// DeleteRouteTable mocks base method -func (m *MockRouteTableWriter) DeleteRouteTable(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { +// DeleteAllOfHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionWriter) DeleteAllOfHttpListenerOption(ctx context.Context, opts ...client.DeleteAllOfOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, key} + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteRouteTable", varargs...) + ret := m.ctrl.Call(m, "DeleteAllOfHttpListenerOption", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteRouteTable indicates an expected call of DeleteRouteTable -func (mr *MockRouteTableWriterMockRecorder) DeleteRouteTable(ctx, key interface{}, opts ...interface{}) *gomock.Call { +// DeleteAllOfHttpListenerOption indicates an expected call of DeleteAllOfHttpListenerOption. +func (mr *MockHttpListenerOptionWriterMockRecorder) DeleteAllOfHttpListenerOption(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, key}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteRouteTable", reflect.TypeOf((*MockRouteTableWriter)(nil).DeleteRouteTable), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionWriter)(nil).DeleteAllOfHttpListenerOption), varargs...) } -// UpdateRouteTable mocks base method -func (m *MockRouteTableWriter) UpdateRouteTable(ctx context.Context, obj *v1.RouteTable, opts ...client.UpdateOption) error { +// DeleteHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionWriter) DeleteHttpListenerOption(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx, key} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateRouteTable", varargs...) + ret := m.ctrl.Call(m, "DeleteHttpListenerOption", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateRouteTable indicates an expected call of UpdateRouteTable -func (mr *MockRouteTableWriterMockRecorder) UpdateRouteTable(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// DeleteHttpListenerOption indicates an expected call of DeleteHttpListenerOption. +func (mr *MockHttpListenerOptionWriterMockRecorder) DeleteHttpListenerOption(ctx, key interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRouteTable", reflect.TypeOf((*MockRouteTableWriter)(nil).UpdateRouteTable), varargs...) + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionWriter)(nil).DeleteHttpListenerOption), varargs...) } -// PatchRouteTable mocks base method -func (m *MockRouteTableWriter) PatchRouteTable(ctx context.Context, obj *v1.RouteTable, patch client.Patch, opts ...client.PatchOption) error { +// PatchHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionWriter) PatchHttpListenerOption(ctx context.Context, obj *v1.HttpListenerOption, patch client.Patch, opts ...client.PatchOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchRouteTable", varargs...) + ret := m.ctrl.Call(m, "PatchHttpListenerOption", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchRouteTable indicates an expected call of PatchRouteTable -func (mr *MockRouteTableWriterMockRecorder) PatchRouteTable(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// PatchHttpListenerOption indicates an expected call of PatchHttpListenerOption. +func (mr *MockHttpListenerOptionWriterMockRecorder) PatchHttpListenerOption(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchRouteTable", reflect.TypeOf((*MockRouteTableWriter)(nil).PatchRouteTable), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionWriter)(nil).PatchHttpListenerOption), varargs...) } -// DeleteAllOfRouteTable mocks base method -func (m *MockRouteTableWriter) DeleteAllOfRouteTable(ctx context.Context, opts ...client.DeleteAllOfOption) error { +// UpdateHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionWriter) UpdateHttpListenerOption(ctx context.Context, obj *v1.HttpListenerOption, opts ...client.UpdateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteAllOfRouteTable", varargs...) + ret := m.ctrl.Call(m, "UpdateHttpListenerOption", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteAllOfRouteTable indicates an expected call of DeleteAllOfRouteTable -func (mr *MockRouteTableWriterMockRecorder) DeleteAllOfRouteTable(ctx interface{}, opts ...interface{}) *gomock.Call { +// UpdateHttpListenerOption indicates an expected call of UpdateHttpListenerOption. +func (mr *MockHttpListenerOptionWriterMockRecorder) UpdateHttpListenerOption(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfRouteTable", reflect.TypeOf((*MockRouteTableWriter)(nil).DeleteAllOfRouteTable), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionWriter)(nil).UpdateHttpListenerOption), varargs...) } -// UpsertRouteTable mocks base method -func (m *MockRouteTableWriter) UpsertRouteTable(ctx context.Context, obj *v1.RouteTable, transitionFuncs ...v1.RouteTableTransitionFunction) error { +// UpsertHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionWriter) UpsertHttpListenerOption(ctx context.Context, obj *v1.HttpListenerOption, transitionFuncs ...v1.HttpListenerOptionTransitionFunction) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} for _, a := range transitionFuncs { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpsertRouteTable", varargs...) + ret := m.ctrl.Call(m, "UpsertHttpListenerOption", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpsertRouteTable indicates an expected call of UpsertRouteTable -func (mr *MockRouteTableWriterMockRecorder) UpsertRouteTable(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { +// UpsertHttpListenerOption indicates an expected call of UpsertHttpListenerOption. +func (mr *MockHttpListenerOptionWriterMockRecorder) UpsertHttpListenerOption(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, transitionFuncs...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertRouteTable", reflect.TypeOf((*MockRouteTableWriter)(nil).UpsertRouteTable), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionWriter)(nil).UpsertHttpListenerOption), varargs...) } -// MockRouteTableStatusWriter is a mock of RouteTableStatusWriter interface -type MockRouteTableStatusWriter struct { +// MockHttpListenerOptionStatusWriter is a mock of HttpListenerOptionStatusWriter interface. +type MockHttpListenerOptionStatusWriter struct { ctrl *gomock.Controller - recorder *MockRouteTableStatusWriterMockRecorder + recorder *MockHttpListenerOptionStatusWriterMockRecorder } -// MockRouteTableStatusWriterMockRecorder is the mock recorder for MockRouteTableStatusWriter -type MockRouteTableStatusWriterMockRecorder struct { - mock *MockRouteTableStatusWriter +// MockHttpListenerOptionStatusWriterMockRecorder is the mock recorder for MockHttpListenerOptionStatusWriter. +type MockHttpListenerOptionStatusWriterMockRecorder struct { + mock *MockHttpListenerOptionStatusWriter } -// NewMockRouteTableStatusWriter creates a new mock instance -func NewMockRouteTableStatusWriter(ctrl *gomock.Controller) *MockRouteTableStatusWriter { - mock := &MockRouteTableStatusWriter{ctrl: ctrl} - mock.recorder = &MockRouteTableStatusWriterMockRecorder{mock} +// NewMockHttpListenerOptionStatusWriter creates a new mock instance. +func NewMockHttpListenerOptionStatusWriter(ctrl *gomock.Controller) *MockHttpListenerOptionStatusWriter { + mock := &MockHttpListenerOptionStatusWriter{ctrl: ctrl} + mock.recorder = &MockHttpListenerOptionStatusWriterMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use -func (m *MockRouteTableStatusWriter) EXPECT() *MockRouteTableStatusWriterMockRecorder { +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockHttpListenerOptionStatusWriter) EXPECT() *MockHttpListenerOptionStatusWriterMockRecorder { return m.recorder } -// UpdateRouteTableStatus mocks base method -func (m *MockRouteTableStatusWriter) UpdateRouteTableStatus(ctx context.Context, obj *v1.RouteTable, opts ...client.UpdateOption) error { +// PatchHttpListenerOptionStatus mocks base method. +func (m *MockHttpListenerOptionStatusWriter) PatchHttpListenerOptionStatus(ctx context.Context, obj *v1.HttpListenerOption, patch client.Patch, opts ...client.SubResourcePatchOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateRouteTableStatus", varargs...) + ret := m.ctrl.Call(m, "PatchHttpListenerOptionStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateRouteTableStatus indicates an expected call of UpdateRouteTableStatus -func (mr *MockRouteTableStatusWriterMockRecorder) UpdateRouteTableStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// PatchHttpListenerOptionStatus indicates an expected call of PatchHttpListenerOptionStatus. +func (mr *MockHttpListenerOptionStatusWriterMockRecorder) PatchHttpListenerOptionStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRouteTableStatus", reflect.TypeOf((*MockRouteTableStatusWriter)(nil).UpdateRouteTableStatus), varargs...) + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchHttpListenerOptionStatus", reflect.TypeOf((*MockHttpListenerOptionStatusWriter)(nil).PatchHttpListenerOptionStatus), varargs...) } -// PatchRouteTableStatus mocks base method -func (m *MockRouteTableStatusWriter) PatchRouteTableStatus(ctx context.Context, obj *v1.RouteTable, patch client.Patch, opts ...client.PatchOption) error { +// UpdateHttpListenerOptionStatus mocks base method. +func (m *MockHttpListenerOptionStatusWriter) UpdateHttpListenerOptionStatus(ctx context.Context, obj *v1.HttpListenerOption, opts ...client.SubResourceUpdateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj, patch} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchRouteTableStatus", varargs...) + ret := m.ctrl.Call(m, "UpdateHttpListenerOptionStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchRouteTableStatus indicates an expected call of PatchRouteTableStatus -func (mr *MockRouteTableStatusWriterMockRecorder) PatchRouteTableStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// UpdateHttpListenerOptionStatus indicates an expected call of UpdateHttpListenerOptionStatus. +func (mr *MockHttpListenerOptionStatusWriterMockRecorder) UpdateHttpListenerOptionStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchRouteTableStatus", reflect.TypeOf((*MockRouteTableStatusWriter)(nil).PatchRouteTableStatus), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateHttpListenerOptionStatus", reflect.TypeOf((*MockHttpListenerOptionStatusWriter)(nil).UpdateHttpListenerOptionStatus), varargs...) } -// MockRouteTableClient is a mock of RouteTableClient interface -type MockRouteTableClient struct { +// MockHttpListenerOptionClient is a mock of HttpListenerOptionClient interface. +type MockHttpListenerOptionClient struct { ctrl *gomock.Controller - recorder *MockRouteTableClientMockRecorder + recorder *MockHttpListenerOptionClientMockRecorder } -// MockRouteTableClientMockRecorder is the mock recorder for MockRouteTableClient -type MockRouteTableClientMockRecorder struct { - mock *MockRouteTableClient +// MockHttpListenerOptionClientMockRecorder is the mock recorder for MockHttpListenerOptionClient. +type MockHttpListenerOptionClientMockRecorder struct { + mock *MockHttpListenerOptionClient } -// NewMockRouteTableClient creates a new mock instance -func NewMockRouteTableClient(ctrl *gomock.Controller) *MockRouteTableClient { - mock := &MockRouteTableClient{ctrl: ctrl} - mock.recorder = &MockRouteTableClientMockRecorder{mock} +// NewMockHttpListenerOptionClient creates a new mock instance. +func NewMockHttpListenerOptionClient(ctrl *gomock.Controller) *MockHttpListenerOptionClient { + mock := &MockHttpListenerOptionClient{ctrl: ctrl} + mock.recorder = &MockHttpListenerOptionClientMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use -func (m *MockRouteTableClient) EXPECT() *MockRouteTableClientMockRecorder { +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockHttpListenerOptionClient) EXPECT() *MockHttpListenerOptionClientMockRecorder { return m.recorder } -// GetRouteTable mocks base method -func (m *MockRouteTableClient) GetRouteTable(ctx context.Context, key client.ObjectKey) (*v1.RouteTable, error) { +// CreateHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionClient) CreateHttpListenerOption(ctx context.Context, obj *v1.HttpListenerOption, opts ...client.CreateOption) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetRouteTable", ctx, key) - ret0, _ := ret[0].(*v1.RouteTable) - ret1, _ := ret[1].(error) - return ret0, ret1 + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateHttpListenerOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 } -// GetRouteTable indicates an expected call of GetRouteTable -func (mr *MockRouteTableClientMockRecorder) GetRouteTable(ctx, key interface{}) *gomock.Call { +// CreateHttpListenerOption indicates an expected call of CreateHttpListenerOption. +func (mr *MockHttpListenerOptionClientMockRecorder) CreateHttpListenerOption(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRouteTable", reflect.TypeOf((*MockRouteTableClient)(nil).GetRouteTable), ctx, key) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionClient)(nil).CreateHttpListenerOption), varargs...) } -// ListRouteTable mocks base method -func (m *MockRouteTableClient) ListRouteTable(ctx context.Context, opts ...client.ListOption) (*v1.RouteTableList, error) { +// DeleteAllOfHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionClient) DeleteAllOfHttpListenerOption(ctx context.Context, opts ...client.DeleteAllOfOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "ListRouteTable", varargs...) - ret0, _ := ret[0].(*v1.RouteTableList) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "DeleteAllOfHttpListenerOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 } -// ListRouteTable indicates an expected call of ListRouteTable -func (mr *MockRouteTableClientMockRecorder) ListRouteTable(ctx interface{}, opts ...interface{}) *gomock.Call { +// DeleteAllOfHttpListenerOption indicates an expected call of DeleteAllOfHttpListenerOption. +func (mr *MockHttpListenerOptionClientMockRecorder) DeleteAllOfHttpListenerOption(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListRouteTable", reflect.TypeOf((*MockRouteTableClient)(nil).ListRouteTable), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionClient)(nil).DeleteAllOfHttpListenerOption), varargs...) } -// CreateRouteTable mocks base method -func (m *MockRouteTableClient) CreateRouteTable(ctx context.Context, obj *v1.RouteTable, opts ...client.CreateOption) error { +// DeleteHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionClient) DeleteHttpListenerOption(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx, key} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "CreateRouteTable", varargs...) + ret := m.ctrl.Call(m, "DeleteHttpListenerOption", varargs...) ret0, _ := ret[0].(error) return ret0 } -// CreateRouteTable indicates an expected call of CreateRouteTable -func (mr *MockRouteTableClientMockRecorder) CreateRouteTable(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// DeleteHttpListenerOption indicates an expected call of DeleteHttpListenerOption. +func (mr *MockHttpListenerOptionClientMockRecorder) DeleteHttpListenerOption(ctx, key interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateRouteTable", reflect.TypeOf((*MockRouteTableClient)(nil).CreateRouteTable), varargs...) + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionClient)(nil).DeleteHttpListenerOption), varargs...) } -// DeleteRouteTable mocks base method -func (m *MockRouteTableClient) DeleteRouteTable(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { +// GetHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionClient) GetHttpListenerOption(ctx context.Context, key client.ObjectKey) (*v1.HttpListenerOption, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, key} - for _, a := range opts { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "DeleteRouteTable", varargs...) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "GetHttpListenerOption", ctx, key) + ret0, _ := ret[0].(*v1.HttpListenerOption) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// DeleteRouteTable indicates an expected call of DeleteRouteTable -func (mr *MockRouteTableClientMockRecorder) DeleteRouteTable(ctx, key interface{}, opts ...interface{}) *gomock.Call { +// GetHttpListenerOption indicates an expected call of GetHttpListenerOption. +func (mr *MockHttpListenerOptionClientMockRecorder) GetHttpListenerOption(ctx, key interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, key}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteRouteTable", reflect.TypeOf((*MockRouteTableClient)(nil).DeleteRouteTable), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionClient)(nil).GetHttpListenerOption), ctx, key) } -// UpdateRouteTable mocks base method -func (m *MockRouteTableClient) UpdateRouteTable(ctx context.Context, obj *v1.RouteTable, opts ...client.UpdateOption) error { +// ListHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionClient) ListHttpListenerOption(ctx context.Context, opts ...client.ListOption) (*v1.HttpListenerOptionList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateRouteTable", varargs...) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "ListHttpListenerOption", varargs...) + ret0, _ := ret[0].(*v1.HttpListenerOptionList) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// UpdateRouteTable indicates an expected call of UpdateRouteTable -func (mr *MockRouteTableClientMockRecorder) UpdateRouteTable(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// ListHttpListenerOption indicates an expected call of ListHttpListenerOption. +func (mr *MockHttpListenerOptionClientMockRecorder) ListHttpListenerOption(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRouteTable", reflect.TypeOf((*MockRouteTableClient)(nil).UpdateRouteTable), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionClient)(nil).ListHttpListenerOption), varargs...) } -// PatchRouteTable mocks base method -func (m *MockRouteTableClient) PatchRouteTable(ctx context.Context, obj *v1.RouteTable, patch client.Patch, opts ...client.PatchOption) error { +// PatchHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionClient) PatchHttpListenerOption(ctx context.Context, obj *v1.HttpListenerOption, patch client.Patch, opts ...client.PatchOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchRouteTable", varargs...) + ret := m.ctrl.Call(m, "PatchHttpListenerOption", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchRouteTable indicates an expected call of PatchRouteTable -func (mr *MockRouteTableClientMockRecorder) PatchRouteTable(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// PatchHttpListenerOption indicates an expected call of PatchHttpListenerOption. +func (mr *MockHttpListenerOptionClientMockRecorder) PatchHttpListenerOption(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchRouteTable", reflect.TypeOf((*MockRouteTableClient)(nil).PatchRouteTable), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionClient)(nil).PatchHttpListenerOption), varargs...) } -// DeleteAllOfRouteTable mocks base method -func (m *MockRouteTableClient) DeleteAllOfRouteTable(ctx context.Context, opts ...client.DeleteAllOfOption) error { +// PatchHttpListenerOptionStatus mocks base method. +func (m *MockHttpListenerOptionClient) PatchHttpListenerOptionStatus(ctx context.Context, obj *v1.HttpListenerOption, patch client.Patch, opts ...client.SubResourcePatchOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteAllOfRouteTable", varargs...) + ret := m.ctrl.Call(m, "PatchHttpListenerOptionStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteAllOfRouteTable indicates an expected call of DeleteAllOfRouteTable -func (mr *MockRouteTableClientMockRecorder) DeleteAllOfRouteTable(ctx interface{}, opts ...interface{}) *gomock.Call { +// PatchHttpListenerOptionStatus indicates an expected call of PatchHttpListenerOptionStatus. +func (mr *MockHttpListenerOptionClientMockRecorder) PatchHttpListenerOptionStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfRouteTable", reflect.TypeOf((*MockRouteTableClient)(nil).DeleteAllOfRouteTable), varargs...) + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchHttpListenerOptionStatus", reflect.TypeOf((*MockHttpListenerOptionClient)(nil).PatchHttpListenerOptionStatus), varargs...) } -// UpsertRouteTable mocks base method -func (m *MockRouteTableClient) UpsertRouteTable(ctx context.Context, obj *v1.RouteTable, transitionFuncs ...v1.RouteTableTransitionFunction) error { +// UpdateHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionClient) UpdateHttpListenerOption(ctx context.Context, obj *v1.HttpListenerOption, opts ...client.UpdateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} - for _, a := range transitionFuncs { + for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpsertRouteTable", varargs...) + ret := m.ctrl.Call(m, "UpdateHttpListenerOption", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpsertRouteTable indicates an expected call of UpsertRouteTable -func (mr *MockRouteTableClientMockRecorder) UpsertRouteTable(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { +// UpdateHttpListenerOption indicates an expected call of UpdateHttpListenerOption. +func (mr *MockHttpListenerOptionClientMockRecorder) UpdateHttpListenerOption(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, transitionFuncs...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertRouteTable", reflect.TypeOf((*MockRouteTableClient)(nil).UpsertRouteTable), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionClient)(nil).UpdateHttpListenerOption), varargs...) } -// UpdateRouteTableStatus mocks base method -func (m *MockRouteTableClient) UpdateRouteTableStatus(ctx context.Context, obj *v1.RouteTable, opts ...client.UpdateOption) error { +// UpdateHttpListenerOptionStatus mocks base method. +func (m *MockHttpListenerOptionClient) UpdateHttpListenerOptionStatus(ctx context.Context, obj *v1.HttpListenerOption, opts ...client.SubResourceUpdateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateRouteTableStatus", varargs...) + ret := m.ctrl.Call(m, "UpdateHttpListenerOptionStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateRouteTableStatus indicates an expected call of UpdateRouteTableStatus -func (mr *MockRouteTableClientMockRecorder) UpdateRouteTableStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// UpdateHttpListenerOptionStatus indicates an expected call of UpdateHttpListenerOptionStatus. +func (mr *MockHttpListenerOptionClientMockRecorder) UpdateHttpListenerOptionStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRouteTableStatus", reflect.TypeOf((*MockRouteTableClient)(nil).UpdateRouteTableStatus), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateHttpListenerOptionStatus", reflect.TypeOf((*MockHttpListenerOptionClient)(nil).UpdateHttpListenerOptionStatus), varargs...) } -// PatchRouteTableStatus mocks base method -func (m *MockRouteTableClient) PatchRouteTableStatus(ctx context.Context, obj *v1.RouteTable, patch client.Patch, opts ...client.PatchOption) error { +// UpsertHttpListenerOption mocks base method. +func (m *MockHttpListenerOptionClient) UpsertHttpListenerOption(ctx context.Context, obj *v1.HttpListenerOption, transitionFuncs ...v1.HttpListenerOptionTransitionFunction) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj, patch} - for _, a := range opts { + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchRouteTableStatus", varargs...) + ret := m.ctrl.Call(m, "UpsertHttpListenerOption", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchRouteTableStatus indicates an expected call of PatchRouteTableStatus -func (mr *MockRouteTableClientMockRecorder) PatchRouteTableStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// UpsertHttpListenerOption indicates an expected call of UpsertHttpListenerOption. +func (mr *MockHttpListenerOptionClientMockRecorder) UpsertHttpListenerOption(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchRouteTableStatus", reflect.TypeOf((*MockRouteTableClient)(nil).PatchRouteTableStatus), varargs...) + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertHttpListenerOption", reflect.TypeOf((*MockHttpListenerOptionClient)(nil).UpsertHttpListenerOption), varargs...) } -// MockMulticlusterRouteTableClient is a mock of MulticlusterRouteTableClient interface -type MockMulticlusterRouteTableClient struct { +// MockMulticlusterHttpListenerOptionClient is a mock of MulticlusterHttpListenerOptionClient interface. +type MockMulticlusterHttpListenerOptionClient struct { ctrl *gomock.Controller - recorder *MockMulticlusterRouteTableClientMockRecorder + recorder *MockMulticlusterHttpListenerOptionClientMockRecorder } -// MockMulticlusterRouteTableClientMockRecorder is the mock recorder for MockMulticlusterRouteTableClient -type MockMulticlusterRouteTableClientMockRecorder struct { - mock *MockMulticlusterRouteTableClient +// MockMulticlusterHttpListenerOptionClientMockRecorder is the mock recorder for MockMulticlusterHttpListenerOptionClient. +type MockMulticlusterHttpListenerOptionClientMockRecorder struct { + mock *MockMulticlusterHttpListenerOptionClient } -// NewMockMulticlusterRouteTableClient creates a new mock instance -func NewMockMulticlusterRouteTableClient(ctrl *gomock.Controller) *MockMulticlusterRouteTableClient { - mock := &MockMulticlusterRouteTableClient{ctrl: ctrl} - mock.recorder = &MockMulticlusterRouteTableClientMockRecorder{mock} +// NewMockMulticlusterHttpListenerOptionClient creates a new mock instance. +func NewMockMulticlusterHttpListenerOptionClient(ctrl *gomock.Controller) *MockMulticlusterHttpListenerOptionClient { + mock := &MockMulticlusterHttpListenerOptionClient{ctrl: ctrl} + mock.recorder = &MockMulticlusterHttpListenerOptionClientMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use -func (m *MockMulticlusterRouteTableClient) EXPECT() *MockMulticlusterRouteTableClientMockRecorder { +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterHttpListenerOptionClient) EXPECT() *MockMulticlusterHttpListenerOptionClientMockRecorder { return m.recorder } -// Cluster mocks base method -func (m *MockMulticlusterRouteTableClient) Cluster(cluster string) (v1.RouteTableClient, error) { +// Cluster mocks base method. +func (m *MockMulticlusterHttpListenerOptionClient) Cluster(cluster string) (v1.HttpListenerOptionClient, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Cluster", cluster) - ret0, _ := ret[0].(v1.RouteTableClient) + ret0, _ := ret[0].(v1.HttpListenerOptionClient) ret1, _ := ret[1].(error) return ret0, ret1 } -// Cluster indicates an expected call of Cluster -func (mr *MockMulticlusterRouteTableClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterHttpListenerOptionClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterRouteTableClient)(nil).Cluster), cluster) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterHttpListenerOptionClient)(nil).Cluster), cluster) } -// MockVirtualServiceReader is a mock of VirtualServiceReader interface -type MockVirtualServiceReader struct { +// MockListenerOptionReader is a mock of ListenerOptionReader interface. +type MockListenerOptionReader struct { ctrl *gomock.Controller - recorder *MockVirtualServiceReaderMockRecorder + recorder *MockListenerOptionReaderMockRecorder } -// MockVirtualServiceReaderMockRecorder is the mock recorder for MockVirtualServiceReader -type MockVirtualServiceReaderMockRecorder struct { - mock *MockVirtualServiceReader +// MockListenerOptionReaderMockRecorder is the mock recorder for MockListenerOptionReader. +type MockListenerOptionReaderMockRecorder struct { + mock *MockListenerOptionReader } -// NewMockVirtualServiceReader creates a new mock instance -func NewMockVirtualServiceReader(ctrl *gomock.Controller) *MockVirtualServiceReader { - mock := &MockVirtualServiceReader{ctrl: ctrl} - mock.recorder = &MockVirtualServiceReaderMockRecorder{mock} +// NewMockListenerOptionReader creates a new mock instance. +func NewMockListenerOptionReader(ctrl *gomock.Controller) *MockListenerOptionReader { + mock := &MockListenerOptionReader{ctrl: ctrl} + mock.recorder = &MockListenerOptionReaderMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use -func (m *MockVirtualServiceReader) EXPECT() *MockVirtualServiceReaderMockRecorder { +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockListenerOptionReader) EXPECT() *MockListenerOptionReaderMockRecorder { return m.recorder } -// GetVirtualService mocks base method -func (m *MockVirtualServiceReader) GetVirtualService(ctx context.Context, key client.ObjectKey) (*v1.VirtualService, error) { +// GetListenerOption mocks base method. +func (m *MockListenerOptionReader) GetListenerOption(ctx context.Context, key client.ObjectKey) (*v1.ListenerOption, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetVirtualService", ctx, key) - ret0, _ := ret[0].(*v1.VirtualService) + ret := m.ctrl.Call(m, "GetListenerOption", ctx, key) + ret0, _ := ret[0].(*v1.ListenerOption) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetVirtualService indicates an expected call of GetVirtualService -func (mr *MockVirtualServiceReaderMockRecorder) GetVirtualService(ctx, key interface{}) *gomock.Call { +// GetListenerOption indicates an expected call of GetListenerOption. +func (mr *MockListenerOptionReaderMockRecorder) GetListenerOption(ctx, key interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVirtualService", reflect.TypeOf((*MockVirtualServiceReader)(nil).GetVirtualService), ctx, key) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetListenerOption", reflect.TypeOf((*MockListenerOptionReader)(nil).GetListenerOption), ctx, key) } -// ListVirtualService mocks base method -func (m *MockVirtualServiceReader) ListVirtualService(ctx context.Context, opts ...client.ListOption) (*v1.VirtualServiceList, error) { +// ListListenerOption mocks base method. +func (m *MockListenerOptionReader) ListListenerOption(ctx context.Context, opts ...client.ListOption) (*v1.ListenerOptionList, error) { m.ctrl.T.Helper() varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "ListVirtualService", varargs...) - ret0, _ := ret[0].(*v1.VirtualServiceList) + ret := m.ctrl.Call(m, "ListListenerOption", varargs...) + ret0, _ := ret[0].(*v1.ListenerOptionList) ret1, _ := ret[1].(error) return ret0, ret1 } -// ListVirtualService indicates an expected call of ListVirtualService -func (mr *MockVirtualServiceReaderMockRecorder) ListVirtualService(ctx interface{}, opts ...interface{}) *gomock.Call { +// ListListenerOption indicates an expected call of ListListenerOption. +func (mr *MockListenerOptionReaderMockRecorder) ListListenerOption(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListVirtualService", reflect.TypeOf((*MockVirtualServiceReader)(nil).ListVirtualService), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListListenerOption", reflect.TypeOf((*MockListenerOptionReader)(nil).ListListenerOption), varargs...) } -// MockVirtualServiceWriter is a mock of VirtualServiceWriter interface -type MockVirtualServiceWriter struct { +// MockListenerOptionWriter is a mock of ListenerOptionWriter interface. +type MockListenerOptionWriter struct { ctrl *gomock.Controller - recorder *MockVirtualServiceWriterMockRecorder + recorder *MockListenerOptionWriterMockRecorder } -// MockVirtualServiceWriterMockRecorder is the mock recorder for MockVirtualServiceWriter -type MockVirtualServiceWriterMockRecorder struct { - mock *MockVirtualServiceWriter +// MockListenerOptionWriterMockRecorder is the mock recorder for MockListenerOptionWriter. +type MockListenerOptionWriterMockRecorder struct { + mock *MockListenerOptionWriter } -// NewMockVirtualServiceWriter creates a new mock instance -func NewMockVirtualServiceWriter(ctrl *gomock.Controller) *MockVirtualServiceWriter { - mock := &MockVirtualServiceWriter{ctrl: ctrl} - mock.recorder = &MockVirtualServiceWriterMockRecorder{mock} +// NewMockListenerOptionWriter creates a new mock instance. +func NewMockListenerOptionWriter(ctrl *gomock.Controller) *MockListenerOptionWriter { + mock := &MockListenerOptionWriter{ctrl: ctrl} + mock.recorder = &MockListenerOptionWriterMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use -func (m *MockVirtualServiceWriter) EXPECT() *MockVirtualServiceWriterMockRecorder { +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockListenerOptionWriter) EXPECT() *MockListenerOptionWriterMockRecorder { return m.recorder } -// CreateVirtualService mocks base method -func (m *MockVirtualServiceWriter) CreateVirtualService(ctx context.Context, obj *v1.VirtualService, opts ...client.CreateOption) error { +// CreateListenerOption mocks base method. +func (m *MockListenerOptionWriter) CreateListenerOption(ctx context.Context, obj *v1.ListenerOption, opts ...client.CreateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "CreateVirtualService", varargs...) + ret := m.ctrl.Call(m, "CreateListenerOption", varargs...) ret0, _ := ret[0].(error) return ret0 } -// CreateVirtualService indicates an expected call of CreateVirtualService -func (mr *MockVirtualServiceWriterMockRecorder) CreateVirtualService(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// CreateListenerOption indicates an expected call of CreateListenerOption. +func (mr *MockListenerOptionWriterMockRecorder) CreateListenerOption(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateVirtualService", reflect.TypeOf((*MockVirtualServiceWriter)(nil).CreateVirtualService), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateListenerOption", reflect.TypeOf((*MockListenerOptionWriter)(nil).CreateListenerOption), varargs...) } -// DeleteVirtualService mocks base method -func (m *MockVirtualServiceWriter) DeleteVirtualService(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { +// DeleteAllOfListenerOption mocks base method. +func (m *MockListenerOptionWriter) DeleteAllOfListenerOption(ctx context.Context, opts ...client.DeleteAllOfOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, key} + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteVirtualService", varargs...) + ret := m.ctrl.Call(m, "DeleteAllOfListenerOption", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteVirtualService indicates an expected call of DeleteVirtualService -func (mr *MockVirtualServiceWriterMockRecorder) DeleteVirtualService(ctx, key interface{}, opts ...interface{}) *gomock.Call { +// DeleteAllOfListenerOption indicates an expected call of DeleteAllOfListenerOption. +func (mr *MockListenerOptionWriterMockRecorder) DeleteAllOfListenerOption(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, key}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteVirtualService", reflect.TypeOf((*MockVirtualServiceWriter)(nil).DeleteVirtualService), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfListenerOption", reflect.TypeOf((*MockListenerOptionWriter)(nil).DeleteAllOfListenerOption), varargs...) } -// UpdateVirtualService mocks base method -func (m *MockVirtualServiceWriter) UpdateVirtualService(ctx context.Context, obj *v1.VirtualService, opts ...client.UpdateOption) error { +// DeleteListenerOption mocks base method. +func (m *MockListenerOptionWriter) DeleteListenerOption(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx, key} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateVirtualService", varargs...) + ret := m.ctrl.Call(m, "DeleteListenerOption", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateVirtualService indicates an expected call of UpdateVirtualService -func (mr *MockVirtualServiceWriterMockRecorder) UpdateVirtualService(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// DeleteListenerOption indicates an expected call of DeleteListenerOption. +func (mr *MockListenerOptionWriterMockRecorder) DeleteListenerOption(ctx, key interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateVirtualService", reflect.TypeOf((*MockVirtualServiceWriter)(nil).UpdateVirtualService), varargs...) + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteListenerOption", reflect.TypeOf((*MockListenerOptionWriter)(nil).DeleteListenerOption), varargs...) } -// PatchVirtualService mocks base method -func (m *MockVirtualServiceWriter) PatchVirtualService(ctx context.Context, obj *v1.VirtualService, patch client.Patch, opts ...client.PatchOption) error { +// PatchListenerOption mocks base method. +func (m *MockListenerOptionWriter) PatchListenerOption(ctx context.Context, obj *v1.ListenerOption, patch client.Patch, opts ...client.PatchOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchVirtualService", varargs...) + ret := m.ctrl.Call(m, "PatchListenerOption", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchVirtualService indicates an expected call of PatchVirtualService -func (mr *MockVirtualServiceWriterMockRecorder) PatchVirtualService(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// PatchListenerOption indicates an expected call of PatchListenerOption. +func (mr *MockListenerOptionWriterMockRecorder) PatchListenerOption(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchVirtualService", reflect.TypeOf((*MockVirtualServiceWriter)(nil).PatchVirtualService), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchListenerOption", reflect.TypeOf((*MockListenerOptionWriter)(nil).PatchListenerOption), varargs...) } -// DeleteAllOfVirtualService mocks base method -func (m *MockVirtualServiceWriter) DeleteAllOfVirtualService(ctx context.Context, opts ...client.DeleteAllOfOption) error { +// UpdateListenerOption mocks base method. +func (m *MockListenerOptionWriter) UpdateListenerOption(ctx context.Context, obj *v1.ListenerOption, opts ...client.UpdateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteAllOfVirtualService", varargs...) + ret := m.ctrl.Call(m, "UpdateListenerOption", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteAllOfVirtualService indicates an expected call of DeleteAllOfVirtualService -func (mr *MockVirtualServiceWriterMockRecorder) DeleteAllOfVirtualService(ctx interface{}, opts ...interface{}) *gomock.Call { +// UpdateListenerOption indicates an expected call of UpdateListenerOption. +func (mr *MockListenerOptionWriterMockRecorder) UpdateListenerOption(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfVirtualService", reflect.TypeOf((*MockVirtualServiceWriter)(nil).DeleteAllOfVirtualService), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateListenerOption", reflect.TypeOf((*MockListenerOptionWriter)(nil).UpdateListenerOption), varargs...) } -// UpsertVirtualService mocks base method -func (m *MockVirtualServiceWriter) UpsertVirtualService(ctx context.Context, obj *v1.VirtualService, transitionFuncs ...v1.VirtualServiceTransitionFunction) error { +// UpsertListenerOption mocks base method. +func (m *MockListenerOptionWriter) UpsertListenerOption(ctx context.Context, obj *v1.ListenerOption, transitionFuncs ...v1.ListenerOptionTransitionFunction) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} for _, a := range transitionFuncs { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpsertVirtualService", varargs...) + ret := m.ctrl.Call(m, "UpsertListenerOption", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpsertVirtualService indicates an expected call of UpsertVirtualService -func (mr *MockVirtualServiceWriterMockRecorder) UpsertVirtualService(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { +// UpsertListenerOption indicates an expected call of UpsertListenerOption. +func (mr *MockListenerOptionWriterMockRecorder) UpsertListenerOption(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, transitionFuncs...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertVirtualService", reflect.TypeOf((*MockVirtualServiceWriter)(nil).UpsertVirtualService), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertListenerOption", reflect.TypeOf((*MockListenerOptionWriter)(nil).UpsertListenerOption), varargs...) } -// MockVirtualServiceStatusWriter is a mock of VirtualServiceStatusWriter interface -type MockVirtualServiceStatusWriter struct { +// MockListenerOptionStatusWriter is a mock of ListenerOptionStatusWriter interface. +type MockListenerOptionStatusWriter struct { ctrl *gomock.Controller - recorder *MockVirtualServiceStatusWriterMockRecorder + recorder *MockListenerOptionStatusWriterMockRecorder } -// MockVirtualServiceStatusWriterMockRecorder is the mock recorder for MockVirtualServiceStatusWriter -type MockVirtualServiceStatusWriterMockRecorder struct { - mock *MockVirtualServiceStatusWriter +// MockListenerOptionStatusWriterMockRecorder is the mock recorder for MockListenerOptionStatusWriter. +type MockListenerOptionStatusWriterMockRecorder struct { + mock *MockListenerOptionStatusWriter } -// NewMockVirtualServiceStatusWriter creates a new mock instance -func NewMockVirtualServiceStatusWriter(ctrl *gomock.Controller) *MockVirtualServiceStatusWriter { - mock := &MockVirtualServiceStatusWriter{ctrl: ctrl} - mock.recorder = &MockVirtualServiceStatusWriterMockRecorder{mock} +// NewMockListenerOptionStatusWriter creates a new mock instance. +func NewMockListenerOptionStatusWriter(ctrl *gomock.Controller) *MockListenerOptionStatusWriter { + mock := &MockListenerOptionStatusWriter{ctrl: ctrl} + mock.recorder = &MockListenerOptionStatusWriterMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use -func (m *MockVirtualServiceStatusWriter) EXPECT() *MockVirtualServiceStatusWriterMockRecorder { +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockListenerOptionStatusWriter) EXPECT() *MockListenerOptionStatusWriterMockRecorder { return m.recorder } -// UpdateVirtualServiceStatus mocks base method -func (m *MockVirtualServiceStatusWriter) UpdateVirtualServiceStatus(ctx context.Context, obj *v1.VirtualService, opts ...client.UpdateOption) error { +// PatchListenerOptionStatus mocks base method. +func (m *MockListenerOptionStatusWriter) PatchListenerOptionStatus(ctx context.Context, obj *v1.ListenerOption, patch client.Patch, opts ...client.SubResourcePatchOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateVirtualServiceStatus", varargs...) + ret := m.ctrl.Call(m, "PatchListenerOptionStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateVirtualServiceStatus indicates an expected call of UpdateVirtualServiceStatus -func (mr *MockVirtualServiceStatusWriterMockRecorder) UpdateVirtualServiceStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// PatchListenerOptionStatus indicates an expected call of PatchListenerOptionStatus. +func (mr *MockListenerOptionStatusWriterMockRecorder) PatchListenerOptionStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateVirtualServiceStatus", reflect.TypeOf((*MockVirtualServiceStatusWriter)(nil).UpdateVirtualServiceStatus), varargs...) + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchListenerOptionStatus", reflect.TypeOf((*MockListenerOptionStatusWriter)(nil).PatchListenerOptionStatus), varargs...) } -// PatchVirtualServiceStatus mocks base method -func (m *MockVirtualServiceStatusWriter) PatchVirtualServiceStatus(ctx context.Context, obj *v1.VirtualService, patch client.Patch, opts ...client.PatchOption) error { +// UpdateListenerOptionStatus mocks base method. +func (m *MockListenerOptionStatusWriter) UpdateListenerOptionStatus(ctx context.Context, obj *v1.ListenerOption, opts ...client.SubResourceUpdateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj, patch} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchVirtualServiceStatus", varargs...) + ret := m.ctrl.Call(m, "UpdateListenerOptionStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchVirtualServiceStatus indicates an expected call of PatchVirtualServiceStatus -func (mr *MockVirtualServiceStatusWriterMockRecorder) PatchVirtualServiceStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// UpdateListenerOptionStatus indicates an expected call of UpdateListenerOptionStatus. +func (mr *MockListenerOptionStatusWriterMockRecorder) UpdateListenerOptionStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchVirtualServiceStatus", reflect.TypeOf((*MockVirtualServiceStatusWriter)(nil).PatchVirtualServiceStatus), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateListenerOptionStatus", reflect.TypeOf((*MockListenerOptionStatusWriter)(nil).UpdateListenerOptionStatus), varargs...) } -// MockVirtualServiceClient is a mock of VirtualServiceClient interface -type MockVirtualServiceClient struct { +// MockListenerOptionClient is a mock of ListenerOptionClient interface. +type MockListenerOptionClient struct { ctrl *gomock.Controller - recorder *MockVirtualServiceClientMockRecorder + recorder *MockListenerOptionClientMockRecorder } -// MockVirtualServiceClientMockRecorder is the mock recorder for MockVirtualServiceClient -type MockVirtualServiceClientMockRecorder struct { - mock *MockVirtualServiceClient +// MockListenerOptionClientMockRecorder is the mock recorder for MockListenerOptionClient. +type MockListenerOptionClientMockRecorder struct { + mock *MockListenerOptionClient } -// NewMockVirtualServiceClient creates a new mock instance -func NewMockVirtualServiceClient(ctrl *gomock.Controller) *MockVirtualServiceClient { - mock := &MockVirtualServiceClient{ctrl: ctrl} - mock.recorder = &MockVirtualServiceClientMockRecorder{mock} +// NewMockListenerOptionClient creates a new mock instance. +func NewMockListenerOptionClient(ctrl *gomock.Controller) *MockListenerOptionClient { + mock := &MockListenerOptionClient{ctrl: ctrl} + mock.recorder = &MockListenerOptionClientMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use -func (m *MockVirtualServiceClient) EXPECT() *MockVirtualServiceClientMockRecorder { +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockListenerOptionClient) EXPECT() *MockListenerOptionClientMockRecorder { return m.recorder } -// GetVirtualService mocks base method -func (m *MockVirtualServiceClient) GetVirtualService(ctx context.Context, key client.ObjectKey) (*v1.VirtualService, error) { +// CreateListenerOption mocks base method. +func (m *MockListenerOptionClient) CreateListenerOption(ctx context.Context, obj *v1.ListenerOption, opts ...client.CreateOption) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetVirtualService", ctx, key) - ret0, _ := ret[0].(*v1.VirtualService) - ret1, _ := ret[1].(error) - return ret0, ret1 + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateListenerOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 } -// GetVirtualService indicates an expected call of GetVirtualService -func (mr *MockVirtualServiceClientMockRecorder) GetVirtualService(ctx, key interface{}) *gomock.Call { +// CreateListenerOption indicates an expected call of CreateListenerOption. +func (mr *MockListenerOptionClientMockRecorder) CreateListenerOption(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVirtualService", reflect.TypeOf((*MockVirtualServiceClient)(nil).GetVirtualService), ctx, key) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateListenerOption", reflect.TypeOf((*MockListenerOptionClient)(nil).CreateListenerOption), varargs...) } -// ListVirtualService mocks base method -func (m *MockVirtualServiceClient) ListVirtualService(ctx context.Context, opts ...client.ListOption) (*v1.VirtualServiceList, error) { +// DeleteAllOfListenerOption mocks base method. +func (m *MockListenerOptionClient) DeleteAllOfListenerOption(ctx context.Context, opts ...client.DeleteAllOfOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "ListVirtualService", varargs...) - ret0, _ := ret[0].(*v1.VirtualServiceList) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "DeleteAllOfListenerOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 } -// ListVirtualService indicates an expected call of ListVirtualService -func (mr *MockVirtualServiceClientMockRecorder) ListVirtualService(ctx interface{}, opts ...interface{}) *gomock.Call { +// DeleteAllOfListenerOption indicates an expected call of DeleteAllOfListenerOption. +func (mr *MockListenerOptionClientMockRecorder) DeleteAllOfListenerOption(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfListenerOption", reflect.TypeOf((*MockListenerOptionClient)(nil).DeleteAllOfListenerOption), varargs...) +} + +// DeleteListenerOption mocks base method. +func (m *MockListenerOptionClient) DeleteListenerOption(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteListenerOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteListenerOption indicates an expected call of DeleteListenerOption. +func (mr *MockListenerOptionClientMockRecorder) DeleteListenerOption(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteListenerOption", reflect.TypeOf((*MockListenerOptionClient)(nil).DeleteListenerOption), varargs...) +} + +// GetListenerOption mocks base method. +func (m *MockListenerOptionClient) GetListenerOption(ctx context.Context, key client.ObjectKey) (*v1.ListenerOption, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetListenerOption", ctx, key) + ret0, _ := ret[0].(*v1.ListenerOption) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetListenerOption indicates an expected call of GetListenerOption. +func (mr *MockListenerOptionClientMockRecorder) GetListenerOption(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetListenerOption", reflect.TypeOf((*MockListenerOptionClient)(nil).GetListenerOption), ctx, key) +} + +// ListListenerOption mocks base method. +func (m *MockListenerOptionClient) ListListenerOption(ctx context.Context, opts ...client.ListOption) (*v1.ListenerOptionList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListListenerOption", varargs...) + ret0, _ := ret[0].(*v1.ListenerOptionList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListListenerOption indicates an expected call of ListListenerOption. +func (mr *MockListenerOptionClientMockRecorder) ListListenerOption(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListListenerOption", reflect.TypeOf((*MockListenerOptionClient)(nil).ListListenerOption), varargs...) +} + +// PatchListenerOption mocks base method. +func (m *MockListenerOptionClient) PatchListenerOption(ctx context.Context, obj *v1.ListenerOption, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchListenerOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchListenerOption indicates an expected call of PatchListenerOption. +func (mr *MockListenerOptionClientMockRecorder) PatchListenerOption(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchListenerOption", reflect.TypeOf((*MockListenerOptionClient)(nil).PatchListenerOption), varargs...) +} + +// PatchListenerOptionStatus mocks base method. +func (m *MockListenerOptionClient) PatchListenerOptionStatus(ctx context.Context, obj *v1.ListenerOption, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchListenerOptionStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchListenerOptionStatus indicates an expected call of PatchListenerOptionStatus. +func (mr *MockListenerOptionClientMockRecorder) PatchListenerOptionStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchListenerOptionStatus", reflect.TypeOf((*MockListenerOptionClient)(nil).PatchListenerOptionStatus), varargs...) +} + +// UpdateListenerOption mocks base method. +func (m *MockListenerOptionClient) UpdateListenerOption(ctx context.Context, obj *v1.ListenerOption, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateListenerOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateListenerOption indicates an expected call of UpdateListenerOption. +func (mr *MockListenerOptionClientMockRecorder) UpdateListenerOption(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateListenerOption", reflect.TypeOf((*MockListenerOptionClient)(nil).UpdateListenerOption), varargs...) +} + +// UpdateListenerOptionStatus mocks base method. +func (m *MockListenerOptionClient) UpdateListenerOptionStatus(ctx context.Context, obj *v1.ListenerOption, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateListenerOptionStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateListenerOptionStatus indicates an expected call of UpdateListenerOptionStatus. +func (mr *MockListenerOptionClientMockRecorder) UpdateListenerOptionStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateListenerOptionStatus", reflect.TypeOf((*MockListenerOptionClient)(nil).UpdateListenerOptionStatus), varargs...) +} + +// UpsertListenerOption mocks base method. +func (m *MockListenerOptionClient) UpsertListenerOption(ctx context.Context, obj *v1.ListenerOption, transitionFuncs ...v1.ListenerOptionTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertListenerOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertListenerOption indicates an expected call of UpsertListenerOption. +func (mr *MockListenerOptionClientMockRecorder) UpsertListenerOption(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertListenerOption", reflect.TypeOf((*MockListenerOptionClient)(nil).UpsertListenerOption), varargs...) +} + +// MockMulticlusterListenerOptionClient is a mock of MulticlusterListenerOptionClient interface. +type MockMulticlusterListenerOptionClient struct { + ctrl *gomock.Controller + recorder *MockMulticlusterListenerOptionClientMockRecorder +} + +// MockMulticlusterListenerOptionClientMockRecorder is the mock recorder for MockMulticlusterListenerOptionClient. +type MockMulticlusterListenerOptionClientMockRecorder struct { + mock *MockMulticlusterListenerOptionClient +} + +// NewMockMulticlusterListenerOptionClient creates a new mock instance. +func NewMockMulticlusterListenerOptionClient(ctrl *gomock.Controller) *MockMulticlusterListenerOptionClient { + mock := &MockMulticlusterListenerOptionClient{ctrl: ctrl} + mock.recorder = &MockMulticlusterListenerOptionClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterListenerOptionClient) EXPECT() *MockMulticlusterListenerOptionClientMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterListenerOptionClient) Cluster(cluster string) (v1.ListenerOptionClient, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1.ListenerOptionClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterListenerOptionClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterListenerOptionClient)(nil).Cluster), cluster) +} + +// MockMatchableHttpGatewayReader is a mock of MatchableHttpGatewayReader interface. +type MockMatchableHttpGatewayReader struct { + ctrl *gomock.Controller + recorder *MockMatchableHttpGatewayReaderMockRecorder +} + +// MockMatchableHttpGatewayReaderMockRecorder is the mock recorder for MockMatchableHttpGatewayReader. +type MockMatchableHttpGatewayReaderMockRecorder struct { + mock *MockMatchableHttpGatewayReader +} + +// NewMockMatchableHttpGatewayReader creates a new mock instance. +func NewMockMatchableHttpGatewayReader(ctrl *gomock.Controller) *MockMatchableHttpGatewayReader { + mock := &MockMatchableHttpGatewayReader{ctrl: ctrl} + mock.recorder = &MockMatchableHttpGatewayReaderMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMatchableHttpGatewayReader) EXPECT() *MockMatchableHttpGatewayReaderMockRecorder { + return m.recorder +} + +// GetMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayReader) GetMatchableHttpGateway(ctx context.Context, key client.ObjectKey) (*v1.MatchableHttpGateway, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetMatchableHttpGateway", ctx, key) + ret0, _ := ret[0].(*v1.MatchableHttpGateway) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetMatchableHttpGateway indicates an expected call of GetMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayReaderMockRecorder) GetMatchableHttpGateway(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayReader)(nil).GetMatchableHttpGateway), ctx, key) +} + +// ListMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayReader) ListMatchableHttpGateway(ctx context.Context, opts ...client.ListOption) (*v1.MatchableHttpGatewayList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(*v1.MatchableHttpGatewayList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListMatchableHttpGateway indicates an expected call of ListMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayReaderMockRecorder) ListMatchableHttpGateway(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayReader)(nil).ListMatchableHttpGateway), varargs...) +} + +// MockMatchableHttpGatewayWriter is a mock of MatchableHttpGatewayWriter interface. +type MockMatchableHttpGatewayWriter struct { + ctrl *gomock.Controller + recorder *MockMatchableHttpGatewayWriterMockRecorder +} + +// MockMatchableHttpGatewayWriterMockRecorder is the mock recorder for MockMatchableHttpGatewayWriter. +type MockMatchableHttpGatewayWriterMockRecorder struct { + mock *MockMatchableHttpGatewayWriter +} + +// NewMockMatchableHttpGatewayWriter creates a new mock instance. +func NewMockMatchableHttpGatewayWriter(ctrl *gomock.Controller) *MockMatchableHttpGatewayWriter { + mock := &MockMatchableHttpGatewayWriter{ctrl: ctrl} + mock.recorder = &MockMatchableHttpGatewayWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMatchableHttpGatewayWriter) EXPECT() *MockMatchableHttpGatewayWriterMockRecorder { + return m.recorder +} + +// CreateMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayWriter) CreateMatchableHttpGateway(ctx context.Context, obj *v1.MatchableHttpGateway, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateMatchableHttpGateway indicates an expected call of CreateMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayWriterMockRecorder) CreateMatchableHttpGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayWriter)(nil).CreateMatchableHttpGateway), varargs...) +} + +// DeleteAllOfMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayWriter) DeleteAllOfMatchableHttpGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfMatchableHttpGateway indicates an expected call of DeleteAllOfMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayWriterMockRecorder) DeleteAllOfMatchableHttpGateway(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayWriter)(nil).DeleteAllOfMatchableHttpGateway), varargs...) +} + +// DeleteMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayWriter) DeleteMatchableHttpGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteMatchableHttpGateway indicates an expected call of DeleteMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayWriterMockRecorder) DeleteMatchableHttpGateway(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayWriter)(nil).DeleteMatchableHttpGateway), varargs...) +} + +// PatchMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayWriter) PatchMatchableHttpGateway(ctx context.Context, obj *v1.MatchableHttpGateway, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchMatchableHttpGateway indicates an expected call of PatchMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayWriterMockRecorder) PatchMatchableHttpGateway(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayWriter)(nil).PatchMatchableHttpGateway), varargs...) +} + +// UpdateMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayWriter) UpdateMatchableHttpGateway(ctx context.Context, obj *v1.MatchableHttpGateway, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateMatchableHttpGateway indicates an expected call of UpdateMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayWriterMockRecorder) UpdateMatchableHttpGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayWriter)(nil).UpdateMatchableHttpGateway), varargs...) +} + +// UpsertMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayWriter) UpsertMatchableHttpGateway(ctx context.Context, obj *v1.MatchableHttpGateway, transitionFuncs ...v1.MatchableHttpGatewayTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertMatchableHttpGateway indicates an expected call of UpsertMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayWriterMockRecorder) UpsertMatchableHttpGateway(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayWriter)(nil).UpsertMatchableHttpGateway), varargs...) +} + +// MockMatchableHttpGatewayStatusWriter is a mock of MatchableHttpGatewayStatusWriter interface. +type MockMatchableHttpGatewayStatusWriter struct { + ctrl *gomock.Controller + recorder *MockMatchableHttpGatewayStatusWriterMockRecorder +} + +// MockMatchableHttpGatewayStatusWriterMockRecorder is the mock recorder for MockMatchableHttpGatewayStatusWriter. +type MockMatchableHttpGatewayStatusWriterMockRecorder struct { + mock *MockMatchableHttpGatewayStatusWriter +} + +// NewMockMatchableHttpGatewayStatusWriter creates a new mock instance. +func NewMockMatchableHttpGatewayStatusWriter(ctrl *gomock.Controller) *MockMatchableHttpGatewayStatusWriter { + mock := &MockMatchableHttpGatewayStatusWriter{ctrl: ctrl} + mock.recorder = &MockMatchableHttpGatewayStatusWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMatchableHttpGatewayStatusWriter) EXPECT() *MockMatchableHttpGatewayStatusWriterMockRecorder { + return m.recorder +} + +// PatchMatchableHttpGatewayStatus mocks base method. +func (m *MockMatchableHttpGatewayStatusWriter) PatchMatchableHttpGatewayStatus(ctx context.Context, obj *v1.MatchableHttpGateway, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchMatchableHttpGatewayStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchMatchableHttpGatewayStatus indicates an expected call of PatchMatchableHttpGatewayStatus. +func (mr *MockMatchableHttpGatewayStatusWriterMockRecorder) PatchMatchableHttpGatewayStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchMatchableHttpGatewayStatus", reflect.TypeOf((*MockMatchableHttpGatewayStatusWriter)(nil).PatchMatchableHttpGatewayStatus), varargs...) +} + +// UpdateMatchableHttpGatewayStatus mocks base method. +func (m *MockMatchableHttpGatewayStatusWriter) UpdateMatchableHttpGatewayStatus(ctx context.Context, obj *v1.MatchableHttpGateway, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateMatchableHttpGatewayStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateMatchableHttpGatewayStatus indicates an expected call of UpdateMatchableHttpGatewayStatus. +func (mr *MockMatchableHttpGatewayStatusWriterMockRecorder) UpdateMatchableHttpGatewayStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateMatchableHttpGatewayStatus", reflect.TypeOf((*MockMatchableHttpGatewayStatusWriter)(nil).UpdateMatchableHttpGatewayStatus), varargs...) +} + +// MockMatchableHttpGatewayClient is a mock of MatchableHttpGatewayClient interface. +type MockMatchableHttpGatewayClient struct { + ctrl *gomock.Controller + recorder *MockMatchableHttpGatewayClientMockRecorder +} + +// MockMatchableHttpGatewayClientMockRecorder is the mock recorder for MockMatchableHttpGatewayClient. +type MockMatchableHttpGatewayClientMockRecorder struct { + mock *MockMatchableHttpGatewayClient +} + +// NewMockMatchableHttpGatewayClient creates a new mock instance. +func NewMockMatchableHttpGatewayClient(ctrl *gomock.Controller) *MockMatchableHttpGatewayClient { + mock := &MockMatchableHttpGatewayClient{ctrl: ctrl} + mock.recorder = &MockMatchableHttpGatewayClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMatchableHttpGatewayClient) EXPECT() *MockMatchableHttpGatewayClientMockRecorder { + return m.recorder +} + +// CreateMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayClient) CreateMatchableHttpGateway(ctx context.Context, obj *v1.MatchableHttpGateway, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateMatchableHttpGateway indicates an expected call of CreateMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayClientMockRecorder) CreateMatchableHttpGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayClient)(nil).CreateMatchableHttpGateway), varargs...) +} + +// DeleteAllOfMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayClient) DeleteAllOfMatchableHttpGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfMatchableHttpGateway indicates an expected call of DeleteAllOfMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayClientMockRecorder) DeleteAllOfMatchableHttpGateway(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayClient)(nil).DeleteAllOfMatchableHttpGateway), varargs...) +} + +// DeleteMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayClient) DeleteMatchableHttpGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteMatchableHttpGateway indicates an expected call of DeleteMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayClientMockRecorder) DeleteMatchableHttpGateway(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayClient)(nil).DeleteMatchableHttpGateway), varargs...) +} + +// GetMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayClient) GetMatchableHttpGateway(ctx context.Context, key client.ObjectKey) (*v1.MatchableHttpGateway, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetMatchableHttpGateway", ctx, key) + ret0, _ := ret[0].(*v1.MatchableHttpGateway) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetMatchableHttpGateway indicates an expected call of GetMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayClientMockRecorder) GetMatchableHttpGateway(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayClient)(nil).GetMatchableHttpGateway), ctx, key) +} + +// ListMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayClient) ListMatchableHttpGateway(ctx context.Context, opts ...client.ListOption) (*v1.MatchableHttpGatewayList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(*v1.MatchableHttpGatewayList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListMatchableHttpGateway indicates an expected call of ListMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayClientMockRecorder) ListMatchableHttpGateway(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayClient)(nil).ListMatchableHttpGateway), varargs...) +} + +// PatchMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayClient) PatchMatchableHttpGateway(ctx context.Context, obj *v1.MatchableHttpGateway, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchMatchableHttpGateway indicates an expected call of PatchMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayClientMockRecorder) PatchMatchableHttpGateway(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayClient)(nil).PatchMatchableHttpGateway), varargs...) +} + +// PatchMatchableHttpGatewayStatus mocks base method. +func (m *MockMatchableHttpGatewayClient) PatchMatchableHttpGatewayStatus(ctx context.Context, obj *v1.MatchableHttpGateway, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchMatchableHttpGatewayStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchMatchableHttpGatewayStatus indicates an expected call of PatchMatchableHttpGatewayStatus. +func (mr *MockMatchableHttpGatewayClientMockRecorder) PatchMatchableHttpGatewayStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchMatchableHttpGatewayStatus", reflect.TypeOf((*MockMatchableHttpGatewayClient)(nil).PatchMatchableHttpGatewayStatus), varargs...) +} + +// UpdateMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayClient) UpdateMatchableHttpGateway(ctx context.Context, obj *v1.MatchableHttpGateway, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateMatchableHttpGateway indicates an expected call of UpdateMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayClientMockRecorder) UpdateMatchableHttpGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayClient)(nil).UpdateMatchableHttpGateway), varargs...) +} + +// UpdateMatchableHttpGatewayStatus mocks base method. +func (m *MockMatchableHttpGatewayClient) UpdateMatchableHttpGatewayStatus(ctx context.Context, obj *v1.MatchableHttpGateway, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateMatchableHttpGatewayStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateMatchableHttpGatewayStatus indicates an expected call of UpdateMatchableHttpGatewayStatus. +func (mr *MockMatchableHttpGatewayClientMockRecorder) UpdateMatchableHttpGatewayStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateMatchableHttpGatewayStatus", reflect.TypeOf((*MockMatchableHttpGatewayClient)(nil).UpdateMatchableHttpGatewayStatus), varargs...) +} + +// UpsertMatchableHttpGateway mocks base method. +func (m *MockMatchableHttpGatewayClient) UpsertMatchableHttpGateway(ctx context.Context, obj *v1.MatchableHttpGateway, transitionFuncs ...v1.MatchableHttpGatewayTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertMatchableHttpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertMatchableHttpGateway indicates an expected call of UpsertMatchableHttpGateway. +func (mr *MockMatchableHttpGatewayClientMockRecorder) UpsertMatchableHttpGateway(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertMatchableHttpGateway", reflect.TypeOf((*MockMatchableHttpGatewayClient)(nil).UpsertMatchableHttpGateway), varargs...) +} + +// MockMulticlusterMatchableHttpGatewayClient is a mock of MulticlusterMatchableHttpGatewayClient interface. +type MockMulticlusterMatchableHttpGatewayClient struct { + ctrl *gomock.Controller + recorder *MockMulticlusterMatchableHttpGatewayClientMockRecorder +} + +// MockMulticlusterMatchableHttpGatewayClientMockRecorder is the mock recorder for MockMulticlusterMatchableHttpGatewayClient. +type MockMulticlusterMatchableHttpGatewayClientMockRecorder struct { + mock *MockMulticlusterMatchableHttpGatewayClient +} + +// NewMockMulticlusterMatchableHttpGatewayClient creates a new mock instance. +func NewMockMulticlusterMatchableHttpGatewayClient(ctrl *gomock.Controller) *MockMulticlusterMatchableHttpGatewayClient { + mock := &MockMulticlusterMatchableHttpGatewayClient{ctrl: ctrl} + mock.recorder = &MockMulticlusterMatchableHttpGatewayClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterMatchableHttpGatewayClient) EXPECT() *MockMulticlusterMatchableHttpGatewayClientMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterMatchableHttpGatewayClient) Cluster(cluster string) (v1.MatchableHttpGatewayClient, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1.MatchableHttpGatewayClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterMatchableHttpGatewayClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterMatchableHttpGatewayClient)(nil).Cluster), cluster) +} + +// MockMatchableTcpGatewayReader is a mock of MatchableTcpGatewayReader interface. +type MockMatchableTcpGatewayReader struct { + ctrl *gomock.Controller + recorder *MockMatchableTcpGatewayReaderMockRecorder +} + +// MockMatchableTcpGatewayReaderMockRecorder is the mock recorder for MockMatchableTcpGatewayReader. +type MockMatchableTcpGatewayReaderMockRecorder struct { + mock *MockMatchableTcpGatewayReader +} + +// NewMockMatchableTcpGatewayReader creates a new mock instance. +func NewMockMatchableTcpGatewayReader(ctrl *gomock.Controller) *MockMatchableTcpGatewayReader { + mock := &MockMatchableTcpGatewayReader{ctrl: ctrl} + mock.recorder = &MockMatchableTcpGatewayReaderMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMatchableTcpGatewayReader) EXPECT() *MockMatchableTcpGatewayReaderMockRecorder { + return m.recorder +} + +// GetMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayReader) GetMatchableTcpGateway(ctx context.Context, key client.ObjectKey) (*v1.MatchableTcpGateway, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetMatchableTcpGateway", ctx, key) + ret0, _ := ret[0].(*v1.MatchableTcpGateway) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetMatchableTcpGateway indicates an expected call of GetMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayReaderMockRecorder) GetMatchableTcpGateway(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayReader)(nil).GetMatchableTcpGateway), ctx, key) +} + +// ListMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayReader) ListMatchableTcpGateway(ctx context.Context, opts ...client.ListOption) (*v1.MatchableTcpGatewayList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(*v1.MatchableTcpGatewayList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListMatchableTcpGateway indicates an expected call of ListMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayReaderMockRecorder) ListMatchableTcpGateway(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayReader)(nil).ListMatchableTcpGateway), varargs...) +} + +// MockMatchableTcpGatewayWriter is a mock of MatchableTcpGatewayWriter interface. +type MockMatchableTcpGatewayWriter struct { + ctrl *gomock.Controller + recorder *MockMatchableTcpGatewayWriterMockRecorder +} + +// MockMatchableTcpGatewayWriterMockRecorder is the mock recorder for MockMatchableTcpGatewayWriter. +type MockMatchableTcpGatewayWriterMockRecorder struct { + mock *MockMatchableTcpGatewayWriter +} + +// NewMockMatchableTcpGatewayWriter creates a new mock instance. +func NewMockMatchableTcpGatewayWriter(ctrl *gomock.Controller) *MockMatchableTcpGatewayWriter { + mock := &MockMatchableTcpGatewayWriter{ctrl: ctrl} + mock.recorder = &MockMatchableTcpGatewayWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMatchableTcpGatewayWriter) EXPECT() *MockMatchableTcpGatewayWriterMockRecorder { + return m.recorder +} + +// CreateMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayWriter) CreateMatchableTcpGateway(ctx context.Context, obj *v1.MatchableTcpGateway, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateMatchableTcpGateway indicates an expected call of CreateMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayWriterMockRecorder) CreateMatchableTcpGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayWriter)(nil).CreateMatchableTcpGateway), varargs...) +} + +// DeleteAllOfMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayWriter) DeleteAllOfMatchableTcpGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfMatchableTcpGateway indicates an expected call of DeleteAllOfMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayWriterMockRecorder) DeleteAllOfMatchableTcpGateway(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayWriter)(nil).DeleteAllOfMatchableTcpGateway), varargs...) +} + +// DeleteMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayWriter) DeleteMatchableTcpGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteMatchableTcpGateway indicates an expected call of DeleteMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayWriterMockRecorder) DeleteMatchableTcpGateway(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayWriter)(nil).DeleteMatchableTcpGateway), varargs...) +} + +// PatchMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayWriter) PatchMatchableTcpGateway(ctx context.Context, obj *v1.MatchableTcpGateway, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchMatchableTcpGateway indicates an expected call of PatchMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayWriterMockRecorder) PatchMatchableTcpGateway(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayWriter)(nil).PatchMatchableTcpGateway), varargs...) +} + +// UpdateMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayWriter) UpdateMatchableTcpGateway(ctx context.Context, obj *v1.MatchableTcpGateway, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateMatchableTcpGateway indicates an expected call of UpdateMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayWriterMockRecorder) UpdateMatchableTcpGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayWriter)(nil).UpdateMatchableTcpGateway), varargs...) +} + +// UpsertMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayWriter) UpsertMatchableTcpGateway(ctx context.Context, obj *v1.MatchableTcpGateway, transitionFuncs ...v1.MatchableTcpGatewayTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertMatchableTcpGateway indicates an expected call of UpsertMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayWriterMockRecorder) UpsertMatchableTcpGateway(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayWriter)(nil).UpsertMatchableTcpGateway), varargs...) +} + +// MockMatchableTcpGatewayStatusWriter is a mock of MatchableTcpGatewayStatusWriter interface. +type MockMatchableTcpGatewayStatusWriter struct { + ctrl *gomock.Controller + recorder *MockMatchableTcpGatewayStatusWriterMockRecorder +} + +// MockMatchableTcpGatewayStatusWriterMockRecorder is the mock recorder for MockMatchableTcpGatewayStatusWriter. +type MockMatchableTcpGatewayStatusWriterMockRecorder struct { + mock *MockMatchableTcpGatewayStatusWriter +} + +// NewMockMatchableTcpGatewayStatusWriter creates a new mock instance. +func NewMockMatchableTcpGatewayStatusWriter(ctrl *gomock.Controller) *MockMatchableTcpGatewayStatusWriter { + mock := &MockMatchableTcpGatewayStatusWriter{ctrl: ctrl} + mock.recorder = &MockMatchableTcpGatewayStatusWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMatchableTcpGatewayStatusWriter) EXPECT() *MockMatchableTcpGatewayStatusWriterMockRecorder { + return m.recorder +} + +// PatchMatchableTcpGatewayStatus mocks base method. +func (m *MockMatchableTcpGatewayStatusWriter) PatchMatchableTcpGatewayStatus(ctx context.Context, obj *v1.MatchableTcpGateway, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchMatchableTcpGatewayStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchMatchableTcpGatewayStatus indicates an expected call of PatchMatchableTcpGatewayStatus. +func (mr *MockMatchableTcpGatewayStatusWriterMockRecorder) PatchMatchableTcpGatewayStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchMatchableTcpGatewayStatus", reflect.TypeOf((*MockMatchableTcpGatewayStatusWriter)(nil).PatchMatchableTcpGatewayStatus), varargs...) +} + +// UpdateMatchableTcpGatewayStatus mocks base method. +func (m *MockMatchableTcpGatewayStatusWriter) UpdateMatchableTcpGatewayStatus(ctx context.Context, obj *v1.MatchableTcpGateway, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateMatchableTcpGatewayStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateMatchableTcpGatewayStatus indicates an expected call of UpdateMatchableTcpGatewayStatus. +func (mr *MockMatchableTcpGatewayStatusWriterMockRecorder) UpdateMatchableTcpGatewayStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateMatchableTcpGatewayStatus", reflect.TypeOf((*MockMatchableTcpGatewayStatusWriter)(nil).UpdateMatchableTcpGatewayStatus), varargs...) +} + +// MockMatchableTcpGatewayClient is a mock of MatchableTcpGatewayClient interface. +type MockMatchableTcpGatewayClient struct { + ctrl *gomock.Controller + recorder *MockMatchableTcpGatewayClientMockRecorder +} + +// MockMatchableTcpGatewayClientMockRecorder is the mock recorder for MockMatchableTcpGatewayClient. +type MockMatchableTcpGatewayClientMockRecorder struct { + mock *MockMatchableTcpGatewayClient +} + +// NewMockMatchableTcpGatewayClient creates a new mock instance. +func NewMockMatchableTcpGatewayClient(ctrl *gomock.Controller) *MockMatchableTcpGatewayClient { + mock := &MockMatchableTcpGatewayClient{ctrl: ctrl} + mock.recorder = &MockMatchableTcpGatewayClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMatchableTcpGatewayClient) EXPECT() *MockMatchableTcpGatewayClientMockRecorder { + return m.recorder +} + +// CreateMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayClient) CreateMatchableTcpGateway(ctx context.Context, obj *v1.MatchableTcpGateway, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateMatchableTcpGateway indicates an expected call of CreateMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayClientMockRecorder) CreateMatchableTcpGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayClient)(nil).CreateMatchableTcpGateway), varargs...) +} + +// DeleteAllOfMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayClient) DeleteAllOfMatchableTcpGateway(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfMatchableTcpGateway indicates an expected call of DeleteAllOfMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayClientMockRecorder) DeleteAllOfMatchableTcpGateway(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayClient)(nil).DeleteAllOfMatchableTcpGateway), varargs...) +} + +// DeleteMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayClient) DeleteMatchableTcpGateway(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteMatchableTcpGateway indicates an expected call of DeleteMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayClientMockRecorder) DeleteMatchableTcpGateway(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayClient)(nil).DeleteMatchableTcpGateway), varargs...) +} + +// GetMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayClient) GetMatchableTcpGateway(ctx context.Context, key client.ObjectKey) (*v1.MatchableTcpGateway, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetMatchableTcpGateway", ctx, key) + ret0, _ := ret[0].(*v1.MatchableTcpGateway) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetMatchableTcpGateway indicates an expected call of GetMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayClientMockRecorder) GetMatchableTcpGateway(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayClient)(nil).GetMatchableTcpGateway), ctx, key) +} + +// ListMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayClient) ListMatchableTcpGateway(ctx context.Context, opts ...client.ListOption) (*v1.MatchableTcpGatewayList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(*v1.MatchableTcpGatewayList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListMatchableTcpGateway indicates an expected call of ListMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayClientMockRecorder) ListMatchableTcpGateway(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayClient)(nil).ListMatchableTcpGateway), varargs...) +} + +// PatchMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayClient) PatchMatchableTcpGateway(ctx context.Context, obj *v1.MatchableTcpGateway, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchMatchableTcpGateway indicates an expected call of PatchMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayClientMockRecorder) PatchMatchableTcpGateway(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayClient)(nil).PatchMatchableTcpGateway), varargs...) +} + +// PatchMatchableTcpGatewayStatus mocks base method. +func (m *MockMatchableTcpGatewayClient) PatchMatchableTcpGatewayStatus(ctx context.Context, obj *v1.MatchableTcpGateway, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchMatchableTcpGatewayStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchMatchableTcpGatewayStatus indicates an expected call of PatchMatchableTcpGatewayStatus. +func (mr *MockMatchableTcpGatewayClientMockRecorder) PatchMatchableTcpGatewayStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchMatchableTcpGatewayStatus", reflect.TypeOf((*MockMatchableTcpGatewayClient)(nil).PatchMatchableTcpGatewayStatus), varargs...) +} + +// UpdateMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayClient) UpdateMatchableTcpGateway(ctx context.Context, obj *v1.MatchableTcpGateway, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateMatchableTcpGateway indicates an expected call of UpdateMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayClientMockRecorder) UpdateMatchableTcpGateway(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayClient)(nil).UpdateMatchableTcpGateway), varargs...) +} + +// UpdateMatchableTcpGatewayStatus mocks base method. +func (m *MockMatchableTcpGatewayClient) UpdateMatchableTcpGatewayStatus(ctx context.Context, obj *v1.MatchableTcpGateway, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateMatchableTcpGatewayStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateMatchableTcpGatewayStatus indicates an expected call of UpdateMatchableTcpGatewayStatus. +func (mr *MockMatchableTcpGatewayClientMockRecorder) UpdateMatchableTcpGatewayStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateMatchableTcpGatewayStatus", reflect.TypeOf((*MockMatchableTcpGatewayClient)(nil).UpdateMatchableTcpGatewayStatus), varargs...) +} + +// UpsertMatchableTcpGateway mocks base method. +func (m *MockMatchableTcpGatewayClient) UpsertMatchableTcpGateway(ctx context.Context, obj *v1.MatchableTcpGateway, transitionFuncs ...v1.MatchableTcpGatewayTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertMatchableTcpGateway", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertMatchableTcpGateway indicates an expected call of UpsertMatchableTcpGateway. +func (mr *MockMatchableTcpGatewayClientMockRecorder) UpsertMatchableTcpGateway(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertMatchableTcpGateway", reflect.TypeOf((*MockMatchableTcpGatewayClient)(nil).UpsertMatchableTcpGateway), varargs...) +} + +// MockMulticlusterMatchableTcpGatewayClient is a mock of MulticlusterMatchableTcpGatewayClient interface. +type MockMulticlusterMatchableTcpGatewayClient struct { + ctrl *gomock.Controller + recorder *MockMulticlusterMatchableTcpGatewayClientMockRecorder +} + +// MockMulticlusterMatchableTcpGatewayClientMockRecorder is the mock recorder for MockMulticlusterMatchableTcpGatewayClient. +type MockMulticlusterMatchableTcpGatewayClientMockRecorder struct { + mock *MockMulticlusterMatchableTcpGatewayClient +} + +// NewMockMulticlusterMatchableTcpGatewayClient creates a new mock instance. +func NewMockMulticlusterMatchableTcpGatewayClient(ctrl *gomock.Controller) *MockMulticlusterMatchableTcpGatewayClient { + mock := &MockMulticlusterMatchableTcpGatewayClient{ctrl: ctrl} + mock.recorder = &MockMulticlusterMatchableTcpGatewayClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterMatchableTcpGatewayClient) EXPECT() *MockMulticlusterMatchableTcpGatewayClientMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterMatchableTcpGatewayClient) Cluster(cluster string) (v1.MatchableTcpGatewayClient, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1.MatchableTcpGatewayClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterMatchableTcpGatewayClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterMatchableTcpGatewayClient)(nil).Cluster), cluster) +} + +// MockRouteOptionReader is a mock of RouteOptionReader interface. +type MockRouteOptionReader struct { + ctrl *gomock.Controller + recorder *MockRouteOptionReaderMockRecorder +} + +// MockRouteOptionReaderMockRecorder is the mock recorder for MockRouteOptionReader. +type MockRouteOptionReaderMockRecorder struct { + mock *MockRouteOptionReader +} + +// NewMockRouteOptionReader creates a new mock instance. +func NewMockRouteOptionReader(ctrl *gomock.Controller) *MockRouteOptionReader { + mock := &MockRouteOptionReader{ctrl: ctrl} + mock.recorder = &MockRouteOptionReaderMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockRouteOptionReader) EXPECT() *MockRouteOptionReaderMockRecorder { + return m.recorder +} + +// GetRouteOption mocks base method. +func (m *MockRouteOptionReader) GetRouteOption(ctx context.Context, key client.ObjectKey) (*v1.RouteOption, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetRouteOption", ctx, key) + ret0, _ := ret[0].(*v1.RouteOption) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetRouteOption indicates an expected call of GetRouteOption. +func (mr *MockRouteOptionReaderMockRecorder) GetRouteOption(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRouteOption", reflect.TypeOf((*MockRouteOptionReader)(nil).GetRouteOption), ctx, key) +} + +// ListRouteOption mocks base method. +func (m *MockRouteOptionReader) ListRouteOption(ctx context.Context, opts ...client.ListOption) (*v1.RouteOptionList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListRouteOption", varargs...) + ret0, _ := ret[0].(*v1.RouteOptionList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListRouteOption indicates an expected call of ListRouteOption. +func (mr *MockRouteOptionReaderMockRecorder) ListRouteOption(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListRouteOption", reflect.TypeOf((*MockRouteOptionReader)(nil).ListRouteOption), varargs...) +} + +// MockRouteOptionWriter is a mock of RouteOptionWriter interface. +type MockRouteOptionWriter struct { + ctrl *gomock.Controller + recorder *MockRouteOptionWriterMockRecorder +} + +// MockRouteOptionWriterMockRecorder is the mock recorder for MockRouteOptionWriter. +type MockRouteOptionWriterMockRecorder struct { + mock *MockRouteOptionWriter +} + +// NewMockRouteOptionWriter creates a new mock instance. +func NewMockRouteOptionWriter(ctrl *gomock.Controller) *MockRouteOptionWriter { + mock := &MockRouteOptionWriter{ctrl: ctrl} + mock.recorder = &MockRouteOptionWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockRouteOptionWriter) EXPECT() *MockRouteOptionWriterMockRecorder { + return m.recorder +} + +// CreateRouteOption mocks base method. +func (m *MockRouteOptionWriter) CreateRouteOption(ctx context.Context, obj *v1.RouteOption, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateRouteOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateRouteOption indicates an expected call of CreateRouteOption. +func (mr *MockRouteOptionWriterMockRecorder) CreateRouteOption(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateRouteOption", reflect.TypeOf((*MockRouteOptionWriter)(nil).CreateRouteOption), varargs...) +} + +// DeleteAllOfRouteOption mocks base method. +func (m *MockRouteOptionWriter) DeleteAllOfRouteOption(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfRouteOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfRouteOption indicates an expected call of DeleteAllOfRouteOption. +func (mr *MockRouteOptionWriterMockRecorder) DeleteAllOfRouteOption(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfRouteOption", reflect.TypeOf((*MockRouteOptionWriter)(nil).DeleteAllOfRouteOption), varargs...) +} + +// DeleteRouteOption mocks base method. +func (m *MockRouteOptionWriter) DeleteRouteOption(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteRouteOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteRouteOption indicates an expected call of DeleteRouteOption. +func (mr *MockRouteOptionWriterMockRecorder) DeleteRouteOption(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteRouteOption", reflect.TypeOf((*MockRouteOptionWriter)(nil).DeleteRouteOption), varargs...) +} + +// PatchRouteOption mocks base method. +func (m *MockRouteOptionWriter) PatchRouteOption(ctx context.Context, obj *v1.RouteOption, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchRouteOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchRouteOption indicates an expected call of PatchRouteOption. +func (mr *MockRouteOptionWriterMockRecorder) PatchRouteOption(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchRouteOption", reflect.TypeOf((*MockRouteOptionWriter)(nil).PatchRouteOption), varargs...) +} + +// UpdateRouteOption mocks base method. +func (m *MockRouteOptionWriter) UpdateRouteOption(ctx context.Context, obj *v1.RouteOption, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateRouteOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateRouteOption indicates an expected call of UpdateRouteOption. +func (mr *MockRouteOptionWriterMockRecorder) UpdateRouteOption(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRouteOption", reflect.TypeOf((*MockRouteOptionWriter)(nil).UpdateRouteOption), varargs...) +} + +// UpsertRouteOption mocks base method. +func (m *MockRouteOptionWriter) UpsertRouteOption(ctx context.Context, obj *v1.RouteOption, transitionFuncs ...v1.RouteOptionTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertRouteOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertRouteOption indicates an expected call of UpsertRouteOption. +func (mr *MockRouteOptionWriterMockRecorder) UpsertRouteOption(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertRouteOption", reflect.TypeOf((*MockRouteOptionWriter)(nil).UpsertRouteOption), varargs...) +} + +// MockRouteOptionStatusWriter is a mock of RouteOptionStatusWriter interface. +type MockRouteOptionStatusWriter struct { + ctrl *gomock.Controller + recorder *MockRouteOptionStatusWriterMockRecorder +} + +// MockRouteOptionStatusWriterMockRecorder is the mock recorder for MockRouteOptionStatusWriter. +type MockRouteOptionStatusWriterMockRecorder struct { + mock *MockRouteOptionStatusWriter +} + +// NewMockRouteOptionStatusWriter creates a new mock instance. +func NewMockRouteOptionStatusWriter(ctrl *gomock.Controller) *MockRouteOptionStatusWriter { + mock := &MockRouteOptionStatusWriter{ctrl: ctrl} + mock.recorder = &MockRouteOptionStatusWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockRouteOptionStatusWriter) EXPECT() *MockRouteOptionStatusWriterMockRecorder { + return m.recorder +} + +// PatchRouteOptionStatus mocks base method. +func (m *MockRouteOptionStatusWriter) PatchRouteOptionStatus(ctx context.Context, obj *v1.RouteOption, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchRouteOptionStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchRouteOptionStatus indicates an expected call of PatchRouteOptionStatus. +func (mr *MockRouteOptionStatusWriterMockRecorder) PatchRouteOptionStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchRouteOptionStatus", reflect.TypeOf((*MockRouteOptionStatusWriter)(nil).PatchRouteOptionStatus), varargs...) +} + +// UpdateRouteOptionStatus mocks base method. +func (m *MockRouteOptionStatusWriter) UpdateRouteOptionStatus(ctx context.Context, obj *v1.RouteOption, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateRouteOptionStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateRouteOptionStatus indicates an expected call of UpdateRouteOptionStatus. +func (mr *MockRouteOptionStatusWriterMockRecorder) UpdateRouteOptionStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRouteOptionStatus", reflect.TypeOf((*MockRouteOptionStatusWriter)(nil).UpdateRouteOptionStatus), varargs...) +} + +// MockRouteOptionClient is a mock of RouteOptionClient interface. +type MockRouteOptionClient struct { + ctrl *gomock.Controller + recorder *MockRouteOptionClientMockRecorder +} + +// MockRouteOptionClientMockRecorder is the mock recorder for MockRouteOptionClient. +type MockRouteOptionClientMockRecorder struct { + mock *MockRouteOptionClient +} + +// NewMockRouteOptionClient creates a new mock instance. +func NewMockRouteOptionClient(ctrl *gomock.Controller) *MockRouteOptionClient { + mock := &MockRouteOptionClient{ctrl: ctrl} + mock.recorder = &MockRouteOptionClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockRouteOptionClient) EXPECT() *MockRouteOptionClientMockRecorder { + return m.recorder +} + +// CreateRouteOption mocks base method. +func (m *MockRouteOptionClient) CreateRouteOption(ctx context.Context, obj *v1.RouteOption, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateRouteOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateRouteOption indicates an expected call of CreateRouteOption. +func (mr *MockRouteOptionClientMockRecorder) CreateRouteOption(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateRouteOption", reflect.TypeOf((*MockRouteOptionClient)(nil).CreateRouteOption), varargs...) +} + +// DeleteAllOfRouteOption mocks base method. +func (m *MockRouteOptionClient) DeleteAllOfRouteOption(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfRouteOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfRouteOption indicates an expected call of DeleteAllOfRouteOption. +func (mr *MockRouteOptionClientMockRecorder) DeleteAllOfRouteOption(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfRouteOption", reflect.TypeOf((*MockRouteOptionClient)(nil).DeleteAllOfRouteOption), varargs...) +} + +// DeleteRouteOption mocks base method. +func (m *MockRouteOptionClient) DeleteRouteOption(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteRouteOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteRouteOption indicates an expected call of DeleteRouteOption. +func (mr *MockRouteOptionClientMockRecorder) DeleteRouteOption(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteRouteOption", reflect.TypeOf((*MockRouteOptionClient)(nil).DeleteRouteOption), varargs...) +} + +// GetRouteOption mocks base method. +func (m *MockRouteOptionClient) GetRouteOption(ctx context.Context, key client.ObjectKey) (*v1.RouteOption, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetRouteOption", ctx, key) + ret0, _ := ret[0].(*v1.RouteOption) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetRouteOption indicates an expected call of GetRouteOption. +func (mr *MockRouteOptionClientMockRecorder) GetRouteOption(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRouteOption", reflect.TypeOf((*MockRouteOptionClient)(nil).GetRouteOption), ctx, key) +} + +// ListRouteOption mocks base method. +func (m *MockRouteOptionClient) ListRouteOption(ctx context.Context, opts ...client.ListOption) (*v1.RouteOptionList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListRouteOption", varargs...) + ret0, _ := ret[0].(*v1.RouteOptionList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListRouteOption indicates an expected call of ListRouteOption. +func (mr *MockRouteOptionClientMockRecorder) ListRouteOption(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListRouteOption", reflect.TypeOf((*MockRouteOptionClient)(nil).ListRouteOption), varargs...) +} + +// PatchRouteOption mocks base method. +func (m *MockRouteOptionClient) PatchRouteOption(ctx context.Context, obj *v1.RouteOption, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchRouteOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchRouteOption indicates an expected call of PatchRouteOption. +func (mr *MockRouteOptionClientMockRecorder) PatchRouteOption(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchRouteOption", reflect.TypeOf((*MockRouteOptionClient)(nil).PatchRouteOption), varargs...) +} + +// PatchRouteOptionStatus mocks base method. +func (m *MockRouteOptionClient) PatchRouteOptionStatus(ctx context.Context, obj *v1.RouteOption, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchRouteOptionStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchRouteOptionStatus indicates an expected call of PatchRouteOptionStatus. +func (mr *MockRouteOptionClientMockRecorder) PatchRouteOptionStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchRouteOptionStatus", reflect.TypeOf((*MockRouteOptionClient)(nil).PatchRouteOptionStatus), varargs...) +} + +// UpdateRouteOption mocks base method. +func (m *MockRouteOptionClient) UpdateRouteOption(ctx context.Context, obj *v1.RouteOption, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateRouteOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateRouteOption indicates an expected call of UpdateRouteOption. +func (mr *MockRouteOptionClientMockRecorder) UpdateRouteOption(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRouteOption", reflect.TypeOf((*MockRouteOptionClient)(nil).UpdateRouteOption), varargs...) +} + +// UpdateRouteOptionStatus mocks base method. +func (m *MockRouteOptionClient) UpdateRouteOptionStatus(ctx context.Context, obj *v1.RouteOption, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateRouteOptionStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateRouteOptionStatus indicates an expected call of UpdateRouteOptionStatus. +func (mr *MockRouteOptionClientMockRecorder) UpdateRouteOptionStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRouteOptionStatus", reflect.TypeOf((*MockRouteOptionClient)(nil).UpdateRouteOptionStatus), varargs...) +} + +// UpsertRouteOption mocks base method. +func (m *MockRouteOptionClient) UpsertRouteOption(ctx context.Context, obj *v1.RouteOption, transitionFuncs ...v1.RouteOptionTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertRouteOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertRouteOption indicates an expected call of UpsertRouteOption. +func (mr *MockRouteOptionClientMockRecorder) UpsertRouteOption(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertRouteOption", reflect.TypeOf((*MockRouteOptionClient)(nil).UpsertRouteOption), varargs...) +} + +// MockMulticlusterRouteOptionClient is a mock of MulticlusterRouteOptionClient interface. +type MockMulticlusterRouteOptionClient struct { + ctrl *gomock.Controller + recorder *MockMulticlusterRouteOptionClientMockRecorder +} + +// MockMulticlusterRouteOptionClientMockRecorder is the mock recorder for MockMulticlusterRouteOptionClient. +type MockMulticlusterRouteOptionClientMockRecorder struct { + mock *MockMulticlusterRouteOptionClient +} + +// NewMockMulticlusterRouteOptionClient creates a new mock instance. +func NewMockMulticlusterRouteOptionClient(ctrl *gomock.Controller) *MockMulticlusterRouteOptionClient { + mock := &MockMulticlusterRouteOptionClient{ctrl: ctrl} + mock.recorder = &MockMulticlusterRouteOptionClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterRouteOptionClient) EXPECT() *MockMulticlusterRouteOptionClientMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterRouteOptionClient) Cluster(cluster string) (v1.RouteOptionClient, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1.RouteOptionClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterRouteOptionClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterRouteOptionClient)(nil).Cluster), cluster) +} + +// MockRouteTableReader is a mock of RouteTableReader interface. +type MockRouteTableReader struct { + ctrl *gomock.Controller + recorder *MockRouteTableReaderMockRecorder +} + +// MockRouteTableReaderMockRecorder is the mock recorder for MockRouteTableReader. +type MockRouteTableReaderMockRecorder struct { + mock *MockRouteTableReader +} + +// NewMockRouteTableReader creates a new mock instance. +func NewMockRouteTableReader(ctrl *gomock.Controller) *MockRouteTableReader { + mock := &MockRouteTableReader{ctrl: ctrl} + mock.recorder = &MockRouteTableReaderMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockRouteTableReader) EXPECT() *MockRouteTableReaderMockRecorder { + return m.recorder +} + +// GetRouteTable mocks base method. +func (m *MockRouteTableReader) GetRouteTable(ctx context.Context, key client.ObjectKey) (*v1.RouteTable, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetRouteTable", ctx, key) + ret0, _ := ret[0].(*v1.RouteTable) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetRouteTable indicates an expected call of GetRouteTable. +func (mr *MockRouteTableReaderMockRecorder) GetRouteTable(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRouteTable", reflect.TypeOf((*MockRouteTableReader)(nil).GetRouteTable), ctx, key) +} + +// ListRouteTable mocks base method. +func (m *MockRouteTableReader) ListRouteTable(ctx context.Context, opts ...client.ListOption) (*v1.RouteTableList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListRouteTable", varargs...) + ret0, _ := ret[0].(*v1.RouteTableList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListRouteTable indicates an expected call of ListRouteTable. +func (mr *MockRouteTableReaderMockRecorder) ListRouteTable(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListRouteTable", reflect.TypeOf((*MockRouteTableReader)(nil).ListRouteTable), varargs...) +} + +// MockRouteTableWriter is a mock of RouteTableWriter interface. +type MockRouteTableWriter struct { + ctrl *gomock.Controller + recorder *MockRouteTableWriterMockRecorder +} + +// MockRouteTableWriterMockRecorder is the mock recorder for MockRouteTableWriter. +type MockRouteTableWriterMockRecorder struct { + mock *MockRouteTableWriter +} + +// NewMockRouteTableWriter creates a new mock instance. +func NewMockRouteTableWriter(ctrl *gomock.Controller) *MockRouteTableWriter { + mock := &MockRouteTableWriter{ctrl: ctrl} + mock.recorder = &MockRouteTableWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockRouteTableWriter) EXPECT() *MockRouteTableWriterMockRecorder { + return m.recorder +} + +// CreateRouteTable mocks base method. +func (m *MockRouteTableWriter) CreateRouteTable(ctx context.Context, obj *v1.RouteTable, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateRouteTable indicates an expected call of CreateRouteTable. +func (mr *MockRouteTableWriterMockRecorder) CreateRouteTable(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateRouteTable", reflect.TypeOf((*MockRouteTableWriter)(nil).CreateRouteTable), varargs...) +} + +// DeleteAllOfRouteTable mocks base method. +func (m *MockRouteTableWriter) DeleteAllOfRouteTable(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfRouteTable indicates an expected call of DeleteAllOfRouteTable. +func (mr *MockRouteTableWriterMockRecorder) DeleteAllOfRouteTable(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfRouteTable", reflect.TypeOf((*MockRouteTableWriter)(nil).DeleteAllOfRouteTable), varargs...) +} + +// DeleteRouteTable mocks base method. +func (m *MockRouteTableWriter) DeleteRouteTable(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteRouteTable indicates an expected call of DeleteRouteTable. +func (mr *MockRouteTableWriterMockRecorder) DeleteRouteTable(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteRouteTable", reflect.TypeOf((*MockRouteTableWriter)(nil).DeleteRouteTable), varargs...) +} + +// PatchRouteTable mocks base method. +func (m *MockRouteTableWriter) PatchRouteTable(ctx context.Context, obj *v1.RouteTable, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchRouteTable indicates an expected call of PatchRouteTable. +func (mr *MockRouteTableWriterMockRecorder) PatchRouteTable(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchRouteTable", reflect.TypeOf((*MockRouteTableWriter)(nil).PatchRouteTable), varargs...) +} + +// UpdateRouteTable mocks base method. +func (m *MockRouteTableWriter) UpdateRouteTable(ctx context.Context, obj *v1.RouteTable, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateRouteTable indicates an expected call of UpdateRouteTable. +func (mr *MockRouteTableWriterMockRecorder) UpdateRouteTable(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRouteTable", reflect.TypeOf((*MockRouteTableWriter)(nil).UpdateRouteTable), varargs...) +} + +// UpsertRouteTable mocks base method. +func (m *MockRouteTableWriter) UpsertRouteTable(ctx context.Context, obj *v1.RouteTable, transitionFuncs ...v1.RouteTableTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertRouteTable indicates an expected call of UpsertRouteTable. +func (mr *MockRouteTableWriterMockRecorder) UpsertRouteTable(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertRouteTable", reflect.TypeOf((*MockRouteTableWriter)(nil).UpsertRouteTable), varargs...) +} + +// MockRouteTableStatusWriter is a mock of RouteTableStatusWriter interface. +type MockRouteTableStatusWriter struct { + ctrl *gomock.Controller + recorder *MockRouteTableStatusWriterMockRecorder +} + +// MockRouteTableStatusWriterMockRecorder is the mock recorder for MockRouteTableStatusWriter. +type MockRouteTableStatusWriterMockRecorder struct { + mock *MockRouteTableStatusWriter +} + +// NewMockRouteTableStatusWriter creates a new mock instance. +func NewMockRouteTableStatusWriter(ctrl *gomock.Controller) *MockRouteTableStatusWriter { + mock := &MockRouteTableStatusWriter{ctrl: ctrl} + mock.recorder = &MockRouteTableStatusWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockRouteTableStatusWriter) EXPECT() *MockRouteTableStatusWriterMockRecorder { + return m.recorder +} + +// PatchRouteTableStatus mocks base method. +func (m *MockRouteTableStatusWriter) PatchRouteTableStatus(ctx context.Context, obj *v1.RouteTable, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchRouteTableStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchRouteTableStatus indicates an expected call of PatchRouteTableStatus. +func (mr *MockRouteTableStatusWriterMockRecorder) PatchRouteTableStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchRouteTableStatus", reflect.TypeOf((*MockRouteTableStatusWriter)(nil).PatchRouteTableStatus), varargs...) +} + +// UpdateRouteTableStatus mocks base method. +func (m *MockRouteTableStatusWriter) UpdateRouteTableStatus(ctx context.Context, obj *v1.RouteTable, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateRouteTableStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateRouteTableStatus indicates an expected call of UpdateRouteTableStatus. +func (mr *MockRouteTableStatusWriterMockRecorder) UpdateRouteTableStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRouteTableStatus", reflect.TypeOf((*MockRouteTableStatusWriter)(nil).UpdateRouteTableStatus), varargs...) +} + +// MockRouteTableClient is a mock of RouteTableClient interface. +type MockRouteTableClient struct { + ctrl *gomock.Controller + recorder *MockRouteTableClientMockRecorder +} + +// MockRouteTableClientMockRecorder is the mock recorder for MockRouteTableClient. +type MockRouteTableClientMockRecorder struct { + mock *MockRouteTableClient +} + +// NewMockRouteTableClient creates a new mock instance. +func NewMockRouteTableClient(ctrl *gomock.Controller) *MockRouteTableClient { + mock := &MockRouteTableClient{ctrl: ctrl} + mock.recorder = &MockRouteTableClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockRouteTableClient) EXPECT() *MockRouteTableClientMockRecorder { + return m.recorder +} + +// CreateRouteTable mocks base method. +func (m *MockRouteTableClient) CreateRouteTable(ctx context.Context, obj *v1.RouteTable, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateRouteTable indicates an expected call of CreateRouteTable. +func (mr *MockRouteTableClientMockRecorder) CreateRouteTable(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateRouteTable", reflect.TypeOf((*MockRouteTableClient)(nil).CreateRouteTable), varargs...) +} + +// DeleteAllOfRouteTable mocks base method. +func (m *MockRouteTableClient) DeleteAllOfRouteTable(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfRouteTable indicates an expected call of DeleteAllOfRouteTable. +func (mr *MockRouteTableClientMockRecorder) DeleteAllOfRouteTable(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfRouteTable", reflect.TypeOf((*MockRouteTableClient)(nil).DeleteAllOfRouteTable), varargs...) +} + +// DeleteRouteTable mocks base method. +func (m *MockRouteTableClient) DeleteRouteTable(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteRouteTable indicates an expected call of DeleteRouteTable. +func (mr *MockRouteTableClientMockRecorder) DeleteRouteTable(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteRouteTable", reflect.TypeOf((*MockRouteTableClient)(nil).DeleteRouteTable), varargs...) +} + +// GetRouteTable mocks base method. +func (m *MockRouteTableClient) GetRouteTable(ctx context.Context, key client.ObjectKey) (*v1.RouteTable, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetRouteTable", ctx, key) + ret0, _ := ret[0].(*v1.RouteTable) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetRouteTable indicates an expected call of GetRouteTable. +func (mr *MockRouteTableClientMockRecorder) GetRouteTable(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRouteTable", reflect.TypeOf((*MockRouteTableClient)(nil).GetRouteTable), ctx, key) +} + +// ListRouteTable mocks base method. +func (m *MockRouteTableClient) ListRouteTable(ctx context.Context, opts ...client.ListOption) (*v1.RouteTableList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListRouteTable", varargs...) + ret0, _ := ret[0].(*v1.RouteTableList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListRouteTable indicates an expected call of ListRouteTable. +func (mr *MockRouteTableClientMockRecorder) ListRouteTable(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListRouteTable", reflect.TypeOf((*MockRouteTableClient)(nil).ListRouteTable), varargs...) +} + +// PatchRouteTable mocks base method. +func (m *MockRouteTableClient) PatchRouteTable(ctx context.Context, obj *v1.RouteTable, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchRouteTable indicates an expected call of PatchRouteTable. +func (mr *MockRouteTableClientMockRecorder) PatchRouteTable(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchRouteTable", reflect.TypeOf((*MockRouteTableClient)(nil).PatchRouteTable), varargs...) +} + +// PatchRouteTableStatus mocks base method. +func (m *MockRouteTableClient) PatchRouteTableStatus(ctx context.Context, obj *v1.RouteTable, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchRouteTableStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchRouteTableStatus indicates an expected call of PatchRouteTableStatus. +func (mr *MockRouteTableClientMockRecorder) PatchRouteTableStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchRouteTableStatus", reflect.TypeOf((*MockRouteTableClient)(nil).PatchRouteTableStatus), varargs...) +} + +// UpdateRouteTable mocks base method. +func (m *MockRouteTableClient) UpdateRouteTable(ctx context.Context, obj *v1.RouteTable, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateRouteTable indicates an expected call of UpdateRouteTable. +func (mr *MockRouteTableClientMockRecorder) UpdateRouteTable(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRouteTable", reflect.TypeOf((*MockRouteTableClient)(nil).UpdateRouteTable), varargs...) +} + +// UpdateRouteTableStatus mocks base method. +func (m *MockRouteTableClient) UpdateRouteTableStatus(ctx context.Context, obj *v1.RouteTable, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateRouteTableStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateRouteTableStatus indicates an expected call of UpdateRouteTableStatus. +func (mr *MockRouteTableClientMockRecorder) UpdateRouteTableStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRouteTableStatus", reflect.TypeOf((*MockRouteTableClient)(nil).UpdateRouteTableStatus), varargs...) +} + +// UpsertRouteTable mocks base method. +func (m *MockRouteTableClient) UpsertRouteTable(ctx context.Context, obj *v1.RouteTable, transitionFuncs ...v1.RouteTableTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertRouteTable", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertRouteTable indicates an expected call of UpsertRouteTable. +func (mr *MockRouteTableClientMockRecorder) UpsertRouteTable(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertRouteTable", reflect.TypeOf((*MockRouteTableClient)(nil).UpsertRouteTable), varargs...) +} + +// MockMulticlusterRouteTableClient is a mock of MulticlusterRouteTableClient interface. +type MockMulticlusterRouteTableClient struct { + ctrl *gomock.Controller + recorder *MockMulticlusterRouteTableClientMockRecorder +} + +// MockMulticlusterRouteTableClientMockRecorder is the mock recorder for MockMulticlusterRouteTableClient. +type MockMulticlusterRouteTableClientMockRecorder struct { + mock *MockMulticlusterRouteTableClient +} + +// NewMockMulticlusterRouteTableClient creates a new mock instance. +func NewMockMulticlusterRouteTableClient(ctrl *gomock.Controller) *MockMulticlusterRouteTableClient { + mock := &MockMulticlusterRouteTableClient{ctrl: ctrl} + mock.recorder = &MockMulticlusterRouteTableClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterRouteTableClient) EXPECT() *MockMulticlusterRouteTableClientMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterRouteTableClient) Cluster(cluster string) (v1.RouteTableClient, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1.RouteTableClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterRouteTableClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterRouteTableClient)(nil).Cluster), cluster) +} + +// MockVirtualServiceReader is a mock of VirtualServiceReader interface. +type MockVirtualServiceReader struct { + ctrl *gomock.Controller + recorder *MockVirtualServiceReaderMockRecorder +} + +// MockVirtualServiceReaderMockRecorder is the mock recorder for MockVirtualServiceReader. +type MockVirtualServiceReaderMockRecorder struct { + mock *MockVirtualServiceReader +} + +// NewMockVirtualServiceReader creates a new mock instance. +func NewMockVirtualServiceReader(ctrl *gomock.Controller) *MockVirtualServiceReader { + mock := &MockVirtualServiceReader{ctrl: ctrl} + mock.recorder = &MockVirtualServiceReaderMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockVirtualServiceReader) EXPECT() *MockVirtualServiceReaderMockRecorder { + return m.recorder +} + +// GetVirtualService mocks base method. +func (m *MockVirtualServiceReader) GetVirtualService(ctx context.Context, key client.ObjectKey) (*v1.VirtualService, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetVirtualService", ctx, key) + ret0, _ := ret[0].(*v1.VirtualService) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetVirtualService indicates an expected call of GetVirtualService. +func (mr *MockVirtualServiceReaderMockRecorder) GetVirtualService(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVirtualService", reflect.TypeOf((*MockVirtualServiceReader)(nil).GetVirtualService), ctx, key) +} + +// ListVirtualService mocks base method. +func (m *MockVirtualServiceReader) ListVirtualService(ctx context.Context, opts ...client.ListOption) (*v1.VirtualServiceList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListVirtualService", varargs...) + ret0, _ := ret[0].(*v1.VirtualServiceList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListVirtualService indicates an expected call of ListVirtualService. +func (mr *MockVirtualServiceReaderMockRecorder) ListVirtualService(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListVirtualService", reflect.TypeOf((*MockVirtualServiceReader)(nil).ListVirtualService), varargs...) +} + +// MockVirtualServiceWriter is a mock of VirtualServiceWriter interface. +type MockVirtualServiceWriter struct { + ctrl *gomock.Controller + recorder *MockVirtualServiceWriterMockRecorder +} + +// MockVirtualServiceWriterMockRecorder is the mock recorder for MockVirtualServiceWriter. +type MockVirtualServiceWriterMockRecorder struct { + mock *MockVirtualServiceWriter +} + +// NewMockVirtualServiceWriter creates a new mock instance. +func NewMockVirtualServiceWriter(ctrl *gomock.Controller) *MockVirtualServiceWriter { + mock := &MockVirtualServiceWriter{ctrl: ctrl} + mock.recorder = &MockVirtualServiceWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockVirtualServiceWriter) EXPECT() *MockVirtualServiceWriterMockRecorder { + return m.recorder +} + +// CreateVirtualService mocks base method. +func (m *MockVirtualServiceWriter) CreateVirtualService(ctx context.Context, obj *v1.VirtualService, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateVirtualService indicates an expected call of CreateVirtualService. +func (mr *MockVirtualServiceWriterMockRecorder) CreateVirtualService(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateVirtualService", reflect.TypeOf((*MockVirtualServiceWriter)(nil).CreateVirtualService), varargs...) +} + +// DeleteAllOfVirtualService mocks base method. +func (m *MockVirtualServiceWriter) DeleteAllOfVirtualService(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfVirtualService indicates an expected call of DeleteAllOfVirtualService. +func (mr *MockVirtualServiceWriterMockRecorder) DeleteAllOfVirtualService(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfVirtualService", reflect.TypeOf((*MockVirtualServiceWriter)(nil).DeleteAllOfVirtualService), varargs...) +} + +// DeleteVirtualService mocks base method. +func (m *MockVirtualServiceWriter) DeleteVirtualService(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteVirtualService indicates an expected call of DeleteVirtualService. +func (mr *MockVirtualServiceWriterMockRecorder) DeleteVirtualService(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteVirtualService", reflect.TypeOf((*MockVirtualServiceWriter)(nil).DeleteVirtualService), varargs...) +} + +// PatchVirtualService mocks base method. +func (m *MockVirtualServiceWriter) PatchVirtualService(ctx context.Context, obj *v1.VirtualService, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchVirtualService indicates an expected call of PatchVirtualService. +func (mr *MockVirtualServiceWriterMockRecorder) PatchVirtualService(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchVirtualService", reflect.TypeOf((*MockVirtualServiceWriter)(nil).PatchVirtualService), varargs...) +} + +// UpdateVirtualService mocks base method. +func (m *MockVirtualServiceWriter) UpdateVirtualService(ctx context.Context, obj *v1.VirtualService, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateVirtualService indicates an expected call of UpdateVirtualService. +func (mr *MockVirtualServiceWriterMockRecorder) UpdateVirtualService(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateVirtualService", reflect.TypeOf((*MockVirtualServiceWriter)(nil).UpdateVirtualService), varargs...) +} + +// UpsertVirtualService mocks base method. +func (m *MockVirtualServiceWriter) UpsertVirtualService(ctx context.Context, obj *v1.VirtualService, transitionFuncs ...v1.VirtualServiceTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertVirtualService indicates an expected call of UpsertVirtualService. +func (mr *MockVirtualServiceWriterMockRecorder) UpsertVirtualService(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertVirtualService", reflect.TypeOf((*MockVirtualServiceWriter)(nil).UpsertVirtualService), varargs...) +} + +// MockVirtualServiceStatusWriter is a mock of VirtualServiceStatusWriter interface. +type MockVirtualServiceStatusWriter struct { + ctrl *gomock.Controller + recorder *MockVirtualServiceStatusWriterMockRecorder +} + +// MockVirtualServiceStatusWriterMockRecorder is the mock recorder for MockVirtualServiceStatusWriter. +type MockVirtualServiceStatusWriterMockRecorder struct { + mock *MockVirtualServiceStatusWriter +} + +// NewMockVirtualServiceStatusWriter creates a new mock instance. +func NewMockVirtualServiceStatusWriter(ctrl *gomock.Controller) *MockVirtualServiceStatusWriter { + mock := &MockVirtualServiceStatusWriter{ctrl: ctrl} + mock.recorder = &MockVirtualServiceStatusWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockVirtualServiceStatusWriter) EXPECT() *MockVirtualServiceStatusWriterMockRecorder { + return m.recorder +} + +// PatchVirtualServiceStatus mocks base method. +func (m *MockVirtualServiceStatusWriter) PatchVirtualServiceStatus(ctx context.Context, obj *v1.VirtualService, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchVirtualServiceStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchVirtualServiceStatus indicates an expected call of PatchVirtualServiceStatus. +func (mr *MockVirtualServiceStatusWriterMockRecorder) PatchVirtualServiceStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchVirtualServiceStatus", reflect.TypeOf((*MockVirtualServiceStatusWriter)(nil).PatchVirtualServiceStatus), varargs...) +} + +// UpdateVirtualServiceStatus mocks base method. +func (m *MockVirtualServiceStatusWriter) UpdateVirtualServiceStatus(ctx context.Context, obj *v1.VirtualService, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateVirtualServiceStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateVirtualServiceStatus indicates an expected call of UpdateVirtualServiceStatus. +func (mr *MockVirtualServiceStatusWriterMockRecorder) UpdateVirtualServiceStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateVirtualServiceStatus", reflect.TypeOf((*MockVirtualServiceStatusWriter)(nil).UpdateVirtualServiceStatus), varargs...) +} + +// MockVirtualServiceClient is a mock of VirtualServiceClient interface. +type MockVirtualServiceClient struct { + ctrl *gomock.Controller + recorder *MockVirtualServiceClientMockRecorder +} + +// MockVirtualServiceClientMockRecorder is the mock recorder for MockVirtualServiceClient. +type MockVirtualServiceClientMockRecorder struct { + mock *MockVirtualServiceClient +} + +// NewMockVirtualServiceClient creates a new mock instance. +func NewMockVirtualServiceClient(ctrl *gomock.Controller) *MockVirtualServiceClient { + mock := &MockVirtualServiceClient{ctrl: ctrl} + mock.recorder = &MockVirtualServiceClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockVirtualServiceClient) EXPECT() *MockVirtualServiceClientMockRecorder { + return m.recorder +} + +// CreateVirtualService mocks base method. +func (m *MockVirtualServiceClient) CreateVirtualService(ctx context.Context, obj *v1.VirtualService, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateVirtualService indicates an expected call of CreateVirtualService. +func (mr *MockVirtualServiceClientMockRecorder) CreateVirtualService(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateVirtualService", reflect.TypeOf((*MockVirtualServiceClient)(nil).CreateVirtualService), varargs...) +} + +// DeleteAllOfVirtualService mocks base method. +func (m *MockVirtualServiceClient) DeleteAllOfVirtualService(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfVirtualService indicates an expected call of DeleteAllOfVirtualService. +func (mr *MockVirtualServiceClientMockRecorder) DeleteAllOfVirtualService(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfVirtualService", reflect.TypeOf((*MockVirtualServiceClient)(nil).DeleteAllOfVirtualService), varargs...) +} + +// DeleteVirtualService mocks base method. +func (m *MockVirtualServiceClient) DeleteVirtualService(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteVirtualService indicates an expected call of DeleteVirtualService. +func (mr *MockVirtualServiceClientMockRecorder) DeleteVirtualService(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteVirtualService", reflect.TypeOf((*MockVirtualServiceClient)(nil).DeleteVirtualService), varargs...) +} + +// GetVirtualService mocks base method. +func (m *MockVirtualServiceClient) GetVirtualService(ctx context.Context, key client.ObjectKey) (*v1.VirtualService, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetVirtualService", ctx, key) + ret0, _ := ret[0].(*v1.VirtualService) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetVirtualService indicates an expected call of GetVirtualService. +func (mr *MockVirtualServiceClientMockRecorder) GetVirtualService(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVirtualService", reflect.TypeOf((*MockVirtualServiceClient)(nil).GetVirtualService), ctx, key) +} + +// ListVirtualService mocks base method. +func (m *MockVirtualServiceClient) ListVirtualService(ctx context.Context, opts ...client.ListOption) (*v1.VirtualServiceList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListVirtualService", varargs...) + ret0, _ := ret[0].(*v1.VirtualServiceList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListVirtualService indicates an expected call of ListVirtualService. +func (mr *MockVirtualServiceClientMockRecorder) ListVirtualService(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListVirtualService", reflect.TypeOf((*MockVirtualServiceClient)(nil).ListVirtualService), varargs...) } -// CreateVirtualService mocks base method -func (m *MockVirtualServiceClient) CreateVirtualService(ctx context.Context, obj *v1.VirtualService, opts ...client.CreateOption) error { +// PatchVirtualService mocks base method. +func (m *MockVirtualServiceClient) PatchVirtualService(ctx context.Context, obj *v1.VirtualService, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchVirtualService indicates an expected call of PatchVirtualService. +func (mr *MockVirtualServiceClientMockRecorder) PatchVirtualService(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchVirtualService", reflect.TypeOf((*MockVirtualServiceClient)(nil).PatchVirtualService), varargs...) +} + +// PatchVirtualServiceStatus mocks base method. +func (m *MockVirtualServiceClient) PatchVirtualServiceStatus(ctx context.Context, obj *v1.VirtualService, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchVirtualServiceStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchVirtualServiceStatus indicates an expected call of PatchVirtualServiceStatus. +func (mr *MockVirtualServiceClientMockRecorder) PatchVirtualServiceStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchVirtualServiceStatus", reflect.TypeOf((*MockVirtualServiceClient)(nil).PatchVirtualServiceStatus), varargs...) +} + +// UpdateVirtualService mocks base method. +func (m *MockVirtualServiceClient) UpdateVirtualService(ctx context.Context, obj *v1.VirtualService, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateVirtualService indicates an expected call of UpdateVirtualService. +func (mr *MockVirtualServiceClientMockRecorder) UpdateVirtualService(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateVirtualService", reflect.TypeOf((*MockVirtualServiceClient)(nil).UpdateVirtualService), varargs...) +} + +// UpdateVirtualServiceStatus mocks base method. +func (m *MockVirtualServiceClient) UpdateVirtualServiceStatus(ctx context.Context, obj *v1.VirtualService, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateVirtualServiceStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateVirtualServiceStatus indicates an expected call of UpdateVirtualServiceStatus. +func (mr *MockVirtualServiceClientMockRecorder) UpdateVirtualServiceStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateVirtualServiceStatus", reflect.TypeOf((*MockVirtualServiceClient)(nil).UpdateVirtualServiceStatus), varargs...) +} + +// UpsertVirtualService mocks base method. +func (m *MockVirtualServiceClient) UpsertVirtualService(ctx context.Context, obj *v1.VirtualService, transitionFuncs ...v1.VirtualServiceTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertVirtualService", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertVirtualService indicates an expected call of UpsertVirtualService. +func (mr *MockVirtualServiceClientMockRecorder) UpsertVirtualService(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertVirtualService", reflect.TypeOf((*MockVirtualServiceClient)(nil).UpsertVirtualService), varargs...) +} + +// MockMulticlusterVirtualServiceClient is a mock of MulticlusterVirtualServiceClient interface. +type MockMulticlusterVirtualServiceClient struct { + ctrl *gomock.Controller + recorder *MockMulticlusterVirtualServiceClientMockRecorder +} + +// MockMulticlusterVirtualServiceClientMockRecorder is the mock recorder for MockMulticlusterVirtualServiceClient. +type MockMulticlusterVirtualServiceClientMockRecorder struct { + mock *MockMulticlusterVirtualServiceClient +} + +// NewMockMulticlusterVirtualServiceClient creates a new mock instance. +func NewMockMulticlusterVirtualServiceClient(ctrl *gomock.Controller) *MockMulticlusterVirtualServiceClient { + mock := &MockMulticlusterVirtualServiceClient{ctrl: ctrl} + mock.recorder = &MockMulticlusterVirtualServiceClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterVirtualServiceClient) EXPECT() *MockMulticlusterVirtualServiceClientMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterVirtualServiceClient) Cluster(cluster string) (v1.VirtualServiceClient, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1.VirtualServiceClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterVirtualServiceClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterVirtualServiceClient)(nil).Cluster), cluster) +} + +// MockVirtualHostOptionReader is a mock of VirtualHostOptionReader interface. +type MockVirtualHostOptionReader struct { + ctrl *gomock.Controller + recorder *MockVirtualHostOptionReaderMockRecorder +} + +// MockVirtualHostOptionReaderMockRecorder is the mock recorder for MockVirtualHostOptionReader. +type MockVirtualHostOptionReaderMockRecorder struct { + mock *MockVirtualHostOptionReader +} + +// NewMockVirtualHostOptionReader creates a new mock instance. +func NewMockVirtualHostOptionReader(ctrl *gomock.Controller) *MockVirtualHostOptionReader { + mock := &MockVirtualHostOptionReader{ctrl: ctrl} + mock.recorder = &MockVirtualHostOptionReaderMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockVirtualHostOptionReader) EXPECT() *MockVirtualHostOptionReaderMockRecorder { + return m.recorder +} + +// GetVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionReader) GetVirtualHostOption(ctx context.Context, key client.ObjectKey) (*v1.VirtualHostOption, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetVirtualHostOption", ctx, key) + ret0, _ := ret[0].(*v1.VirtualHostOption) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetVirtualHostOption indicates an expected call of GetVirtualHostOption. +func (mr *MockVirtualHostOptionReaderMockRecorder) GetVirtualHostOption(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionReader)(nil).GetVirtualHostOption), ctx, key) +} + +// ListVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionReader) ListVirtualHostOption(ctx context.Context, opts ...client.ListOption) (*v1.VirtualHostOptionList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListVirtualHostOption", varargs...) + ret0, _ := ret[0].(*v1.VirtualHostOptionList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListVirtualHostOption indicates an expected call of ListVirtualHostOption. +func (mr *MockVirtualHostOptionReaderMockRecorder) ListVirtualHostOption(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionReader)(nil).ListVirtualHostOption), varargs...) +} + +// MockVirtualHostOptionWriter is a mock of VirtualHostOptionWriter interface. +type MockVirtualHostOptionWriter struct { + ctrl *gomock.Controller + recorder *MockVirtualHostOptionWriterMockRecorder +} + +// MockVirtualHostOptionWriterMockRecorder is the mock recorder for MockVirtualHostOptionWriter. +type MockVirtualHostOptionWriterMockRecorder struct { + mock *MockVirtualHostOptionWriter +} + +// NewMockVirtualHostOptionWriter creates a new mock instance. +func NewMockVirtualHostOptionWriter(ctrl *gomock.Controller) *MockVirtualHostOptionWriter { + mock := &MockVirtualHostOptionWriter{ctrl: ctrl} + mock.recorder = &MockVirtualHostOptionWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockVirtualHostOptionWriter) EXPECT() *MockVirtualHostOptionWriterMockRecorder { + return m.recorder +} + +// CreateVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionWriter) CreateVirtualHostOption(ctx context.Context, obj *v1.VirtualHostOption, opts ...client.CreateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "CreateVirtualService", varargs...) + ret := m.ctrl.Call(m, "CreateVirtualHostOption", varargs...) ret0, _ := ret[0].(error) return ret0 } -// CreateVirtualService indicates an expected call of CreateVirtualService -func (mr *MockVirtualServiceClientMockRecorder) CreateVirtualService(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// CreateVirtualHostOption indicates an expected call of CreateVirtualHostOption. +func (mr *MockVirtualHostOptionWriterMockRecorder) CreateVirtualHostOption(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateVirtualService", reflect.TypeOf((*MockVirtualServiceClient)(nil).CreateVirtualService), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionWriter)(nil).CreateVirtualHostOption), varargs...) } -// DeleteVirtualService mocks base method -func (m *MockVirtualServiceClient) DeleteVirtualService(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { +// DeleteAllOfVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionWriter) DeleteAllOfVirtualHostOption(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfVirtualHostOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfVirtualHostOption indicates an expected call of DeleteAllOfVirtualHostOption. +func (mr *MockVirtualHostOptionWriterMockRecorder) DeleteAllOfVirtualHostOption(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionWriter)(nil).DeleteAllOfVirtualHostOption), varargs...) +} + +// DeleteVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionWriter) DeleteVirtualHostOption(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, key} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteVirtualService", varargs...) + ret := m.ctrl.Call(m, "DeleteVirtualHostOption", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteVirtualService indicates an expected call of DeleteVirtualService -func (mr *MockVirtualServiceClientMockRecorder) DeleteVirtualService(ctx, key interface{}, opts ...interface{}) *gomock.Call { +// DeleteVirtualHostOption indicates an expected call of DeleteVirtualHostOption. +func (mr *MockVirtualHostOptionWriterMockRecorder) DeleteVirtualHostOption(ctx, key interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, key}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteVirtualService", reflect.TypeOf((*MockVirtualServiceClient)(nil).DeleteVirtualService), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionWriter)(nil).DeleteVirtualHostOption), varargs...) } -// UpdateVirtualService mocks base method -func (m *MockVirtualServiceClient) UpdateVirtualService(ctx context.Context, obj *v1.VirtualService, opts ...client.UpdateOption) error { +// PatchVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionWriter) PatchVirtualHostOption(ctx context.Context, obj *v1.VirtualHostOption, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchVirtualHostOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchVirtualHostOption indicates an expected call of PatchVirtualHostOption. +func (mr *MockVirtualHostOptionWriterMockRecorder) PatchVirtualHostOption(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionWriter)(nil).PatchVirtualHostOption), varargs...) +} + +// UpdateVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionWriter) UpdateVirtualHostOption(ctx context.Context, obj *v1.VirtualHostOption, opts ...client.UpdateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateVirtualService", varargs...) + ret := m.ctrl.Call(m, "UpdateVirtualHostOption", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateVirtualService indicates an expected call of UpdateVirtualService -func (mr *MockVirtualServiceClientMockRecorder) UpdateVirtualService(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// UpdateVirtualHostOption indicates an expected call of UpdateVirtualHostOption. +func (mr *MockVirtualHostOptionWriterMockRecorder) UpdateVirtualHostOption(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateVirtualService", reflect.TypeOf((*MockVirtualServiceClient)(nil).UpdateVirtualService), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionWriter)(nil).UpdateVirtualHostOption), varargs...) } -// PatchVirtualService mocks base method -func (m *MockVirtualServiceClient) PatchVirtualService(ctx context.Context, obj *v1.VirtualService, patch client.Patch, opts ...client.PatchOption) error { +// UpsertVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionWriter) UpsertVirtualHostOption(ctx context.Context, obj *v1.VirtualHostOption, transitionFuncs ...v1.VirtualHostOptionTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertVirtualHostOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertVirtualHostOption indicates an expected call of UpsertVirtualHostOption. +func (mr *MockVirtualHostOptionWriterMockRecorder) UpsertVirtualHostOption(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionWriter)(nil).UpsertVirtualHostOption), varargs...) +} + +// MockVirtualHostOptionStatusWriter is a mock of VirtualHostOptionStatusWriter interface. +type MockVirtualHostOptionStatusWriter struct { + ctrl *gomock.Controller + recorder *MockVirtualHostOptionStatusWriterMockRecorder +} + +// MockVirtualHostOptionStatusWriterMockRecorder is the mock recorder for MockVirtualHostOptionStatusWriter. +type MockVirtualHostOptionStatusWriterMockRecorder struct { + mock *MockVirtualHostOptionStatusWriter +} + +// NewMockVirtualHostOptionStatusWriter creates a new mock instance. +func NewMockVirtualHostOptionStatusWriter(ctrl *gomock.Controller) *MockVirtualHostOptionStatusWriter { + mock := &MockVirtualHostOptionStatusWriter{ctrl: ctrl} + mock.recorder = &MockVirtualHostOptionStatusWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockVirtualHostOptionStatusWriter) EXPECT() *MockVirtualHostOptionStatusWriterMockRecorder { + return m.recorder +} + +// PatchVirtualHostOptionStatus mocks base method. +func (m *MockVirtualHostOptionStatusWriter) PatchVirtualHostOptionStatus(ctx context.Context, obj *v1.VirtualHostOption, patch client.Patch, opts ...client.SubResourcePatchOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchVirtualService", varargs...) + ret := m.ctrl.Call(m, "PatchVirtualHostOptionStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchVirtualService indicates an expected call of PatchVirtualService -func (mr *MockVirtualServiceClientMockRecorder) PatchVirtualService(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// PatchVirtualHostOptionStatus indicates an expected call of PatchVirtualHostOptionStatus. +func (mr *MockVirtualHostOptionStatusWriterMockRecorder) PatchVirtualHostOptionStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchVirtualService", reflect.TypeOf((*MockVirtualServiceClient)(nil).PatchVirtualService), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchVirtualHostOptionStatus", reflect.TypeOf((*MockVirtualHostOptionStatusWriter)(nil).PatchVirtualHostOptionStatus), varargs...) } -// DeleteAllOfVirtualService mocks base method -func (m *MockVirtualServiceClient) DeleteAllOfVirtualService(ctx context.Context, opts ...client.DeleteAllOfOption) error { +// UpdateVirtualHostOptionStatus mocks base method. +func (m *MockVirtualHostOptionStatusWriter) UpdateVirtualHostOptionStatus(ctx context.Context, obj *v1.VirtualHostOption, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateVirtualHostOptionStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateVirtualHostOptionStatus indicates an expected call of UpdateVirtualHostOptionStatus. +func (mr *MockVirtualHostOptionStatusWriterMockRecorder) UpdateVirtualHostOptionStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateVirtualHostOptionStatus", reflect.TypeOf((*MockVirtualHostOptionStatusWriter)(nil).UpdateVirtualHostOptionStatus), varargs...) +} + +// MockVirtualHostOptionClient is a mock of VirtualHostOptionClient interface. +type MockVirtualHostOptionClient struct { + ctrl *gomock.Controller + recorder *MockVirtualHostOptionClientMockRecorder +} + +// MockVirtualHostOptionClientMockRecorder is the mock recorder for MockVirtualHostOptionClient. +type MockVirtualHostOptionClientMockRecorder struct { + mock *MockVirtualHostOptionClient +} + +// NewMockVirtualHostOptionClient creates a new mock instance. +func NewMockVirtualHostOptionClient(ctrl *gomock.Controller) *MockVirtualHostOptionClient { + mock := &MockVirtualHostOptionClient{ctrl: ctrl} + mock.recorder = &MockVirtualHostOptionClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockVirtualHostOptionClient) EXPECT() *MockVirtualHostOptionClientMockRecorder { + return m.recorder +} + +// CreateVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionClient) CreateVirtualHostOption(ctx context.Context, obj *v1.VirtualHostOption, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateVirtualHostOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateVirtualHostOption indicates an expected call of CreateVirtualHostOption. +func (mr *MockVirtualHostOptionClientMockRecorder) CreateVirtualHostOption(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionClient)(nil).CreateVirtualHostOption), varargs...) +} + +// DeleteAllOfVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionClient) DeleteAllOfVirtualHostOption(ctx context.Context, opts ...client.DeleteAllOfOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteAllOfVirtualService", varargs...) + ret := m.ctrl.Call(m, "DeleteAllOfVirtualHostOption", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteAllOfVirtualService indicates an expected call of DeleteAllOfVirtualService -func (mr *MockVirtualServiceClientMockRecorder) DeleteAllOfVirtualService(ctx interface{}, opts ...interface{}) *gomock.Call { +// DeleteAllOfVirtualHostOption indicates an expected call of DeleteAllOfVirtualHostOption. +func (mr *MockVirtualHostOptionClientMockRecorder) DeleteAllOfVirtualHostOption(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfVirtualService", reflect.TypeOf((*MockVirtualServiceClient)(nil).DeleteAllOfVirtualService), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionClient)(nil).DeleteAllOfVirtualHostOption), varargs...) } -// UpsertVirtualService mocks base method -func (m *MockVirtualServiceClient) UpsertVirtualService(ctx context.Context, obj *v1.VirtualService, transitionFuncs ...v1.VirtualServiceTransitionFunction) error { +// DeleteVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionClient) DeleteVirtualHostOption(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} - for _, a := range transitionFuncs { + varargs := []interface{}{ctx, key} + for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpsertVirtualService", varargs...) + ret := m.ctrl.Call(m, "DeleteVirtualHostOption", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpsertVirtualService indicates an expected call of UpsertVirtualService -func (mr *MockVirtualServiceClientMockRecorder) UpsertVirtualService(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { +// DeleteVirtualHostOption indicates an expected call of DeleteVirtualHostOption. +func (mr *MockVirtualHostOptionClientMockRecorder) DeleteVirtualHostOption(ctx, key interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, transitionFuncs...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertVirtualService", reflect.TypeOf((*MockVirtualServiceClient)(nil).UpsertVirtualService), varargs...) + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionClient)(nil).DeleteVirtualHostOption), varargs...) } -// UpdateVirtualServiceStatus mocks base method -func (m *MockVirtualServiceClient) UpdateVirtualServiceStatus(ctx context.Context, obj *v1.VirtualService, opts ...client.UpdateOption) error { +// GetVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionClient) GetVirtualHostOption(ctx context.Context, key client.ObjectKey) (*v1.VirtualHostOption, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + ret := m.ctrl.Call(m, "GetVirtualHostOption", ctx, key) + ret0, _ := ret[0].(*v1.VirtualHostOption) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetVirtualHostOption indicates an expected call of GetVirtualHostOption. +func (mr *MockVirtualHostOptionClientMockRecorder) GetVirtualHostOption(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionClient)(nil).GetVirtualHostOption), ctx, key) +} + +// ListVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionClient) ListVirtualHostOption(ctx context.Context, opts ...client.ListOption) (*v1.VirtualHostOptionList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateVirtualServiceStatus", varargs...) + ret := m.ctrl.Call(m, "ListVirtualHostOption", varargs...) + ret0, _ := ret[0].(*v1.VirtualHostOptionList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListVirtualHostOption indicates an expected call of ListVirtualHostOption. +func (mr *MockVirtualHostOptionClientMockRecorder) ListVirtualHostOption(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionClient)(nil).ListVirtualHostOption), varargs...) +} + +// PatchVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionClient) PatchVirtualHostOption(ctx context.Context, obj *v1.VirtualHostOption, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchVirtualHostOption", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateVirtualServiceStatus indicates an expected call of UpdateVirtualServiceStatus -func (mr *MockVirtualServiceClientMockRecorder) UpdateVirtualServiceStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// PatchVirtualHostOption indicates an expected call of PatchVirtualHostOption. +func (mr *MockVirtualHostOptionClientMockRecorder) PatchVirtualHostOption(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateVirtualServiceStatus", reflect.TypeOf((*MockVirtualServiceClient)(nil).UpdateVirtualServiceStatus), varargs...) + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionClient)(nil).PatchVirtualHostOption), varargs...) } -// PatchVirtualServiceStatus mocks base method -func (m *MockVirtualServiceClient) PatchVirtualServiceStatus(ctx context.Context, obj *v1.VirtualService, patch client.Patch, opts ...client.PatchOption) error { +// PatchVirtualHostOptionStatus mocks base method. +func (m *MockVirtualHostOptionClient) PatchVirtualHostOptionStatus(ctx context.Context, obj *v1.VirtualHostOption, patch client.Patch, opts ...client.SubResourcePatchOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchVirtualServiceStatus", varargs...) + ret := m.ctrl.Call(m, "PatchVirtualHostOptionStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchVirtualServiceStatus indicates an expected call of PatchVirtualServiceStatus -func (mr *MockVirtualServiceClientMockRecorder) PatchVirtualServiceStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// PatchVirtualHostOptionStatus indicates an expected call of PatchVirtualHostOptionStatus. +func (mr *MockVirtualHostOptionClientMockRecorder) PatchVirtualHostOptionStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchVirtualServiceStatus", reflect.TypeOf((*MockVirtualServiceClient)(nil).PatchVirtualServiceStatus), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchVirtualHostOptionStatus", reflect.TypeOf((*MockVirtualHostOptionClient)(nil).PatchVirtualHostOptionStatus), varargs...) } -// MockMulticlusterVirtualServiceClient is a mock of MulticlusterVirtualServiceClient interface -type MockMulticlusterVirtualServiceClient struct { +// UpdateVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionClient) UpdateVirtualHostOption(ctx context.Context, obj *v1.VirtualHostOption, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateVirtualHostOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateVirtualHostOption indicates an expected call of UpdateVirtualHostOption. +func (mr *MockVirtualHostOptionClientMockRecorder) UpdateVirtualHostOption(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionClient)(nil).UpdateVirtualHostOption), varargs...) +} + +// UpdateVirtualHostOptionStatus mocks base method. +func (m *MockVirtualHostOptionClient) UpdateVirtualHostOptionStatus(ctx context.Context, obj *v1.VirtualHostOption, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateVirtualHostOptionStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateVirtualHostOptionStatus indicates an expected call of UpdateVirtualHostOptionStatus. +func (mr *MockVirtualHostOptionClientMockRecorder) UpdateVirtualHostOptionStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateVirtualHostOptionStatus", reflect.TypeOf((*MockVirtualHostOptionClient)(nil).UpdateVirtualHostOptionStatus), varargs...) +} + +// UpsertVirtualHostOption mocks base method. +func (m *MockVirtualHostOptionClient) UpsertVirtualHostOption(ctx context.Context, obj *v1.VirtualHostOption, transitionFuncs ...v1.VirtualHostOptionTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertVirtualHostOption", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertVirtualHostOption indicates an expected call of UpsertVirtualHostOption. +func (mr *MockVirtualHostOptionClientMockRecorder) UpsertVirtualHostOption(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertVirtualHostOption", reflect.TypeOf((*MockVirtualHostOptionClient)(nil).UpsertVirtualHostOption), varargs...) +} + +// MockMulticlusterVirtualHostOptionClient is a mock of MulticlusterVirtualHostOptionClient interface. +type MockMulticlusterVirtualHostOptionClient struct { ctrl *gomock.Controller - recorder *MockMulticlusterVirtualServiceClientMockRecorder + recorder *MockMulticlusterVirtualHostOptionClientMockRecorder } -// MockMulticlusterVirtualServiceClientMockRecorder is the mock recorder for MockMulticlusterVirtualServiceClient -type MockMulticlusterVirtualServiceClientMockRecorder struct { - mock *MockMulticlusterVirtualServiceClient +// MockMulticlusterVirtualHostOptionClientMockRecorder is the mock recorder for MockMulticlusterVirtualHostOptionClient. +type MockMulticlusterVirtualHostOptionClientMockRecorder struct { + mock *MockMulticlusterVirtualHostOptionClient } -// NewMockMulticlusterVirtualServiceClient creates a new mock instance -func NewMockMulticlusterVirtualServiceClient(ctrl *gomock.Controller) *MockMulticlusterVirtualServiceClient { - mock := &MockMulticlusterVirtualServiceClient{ctrl: ctrl} - mock.recorder = &MockMulticlusterVirtualServiceClientMockRecorder{mock} +// NewMockMulticlusterVirtualHostOptionClient creates a new mock instance. +func NewMockMulticlusterVirtualHostOptionClient(ctrl *gomock.Controller) *MockMulticlusterVirtualHostOptionClient { + mock := &MockMulticlusterVirtualHostOptionClient{ctrl: ctrl} + mock.recorder = &MockMulticlusterVirtualHostOptionClientMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use -func (m *MockMulticlusterVirtualServiceClient) EXPECT() *MockMulticlusterVirtualServiceClientMockRecorder { +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterVirtualHostOptionClient) EXPECT() *MockMulticlusterVirtualHostOptionClientMockRecorder { return m.recorder } -// Cluster mocks base method -func (m *MockMulticlusterVirtualServiceClient) Cluster(cluster string) (v1.VirtualServiceClient, error) { +// Cluster mocks base method. +func (m *MockMulticlusterVirtualHostOptionClient) Cluster(cluster string) (v1.VirtualHostOptionClient, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Cluster", cluster) - ret0, _ := ret[0].(v1.VirtualServiceClient) + ret0, _ := ret[0].(v1.VirtualHostOptionClient) ret1, _ := ret[1].(error) return ret0, ret1 } -// Cluster indicates an expected call of Cluster -func (mr *MockMulticlusterVirtualServiceClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterVirtualHostOptionClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterVirtualServiceClient)(nil).Cluster), cluster) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterVirtualHostOptionClient)(nil).Cluster), cluster) } diff --git a/pkg/api/gateway.solo.io/v1/proto_deepcopy.go b/pkg/api/gateway.solo.io/v1/proto_deepcopy.go index 76348dbb4..928dd4023 100644 --- a/pkg/api/gateway.solo.io/v1/proto_deepcopy.go +++ b/pkg/api/gateway.solo.io/v1/proto_deepcopy.go @@ -6,40 +6,203 @@ package v1 import ( proto "github.com/golang/protobuf/proto" + "github.com/solo-io/protoc-gen-ext/pkg/clone" ) // DeepCopyInto for the Gateway.Spec func (in *GatewaySpec) DeepCopyInto(out *GatewaySpec) { - p := proto.Clone(in).(*GatewaySpec) + var p *GatewaySpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*GatewaySpec) + } else { + p = proto.Clone(in).(*GatewaySpec) + } *out = *p } // DeepCopyInto for the Gateway.Status func (in *GatewayStatus) DeepCopyInto(out *GatewayStatus) { - p := proto.Clone(in).(*GatewayStatus) + var p *GatewayStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*GatewayStatus) + } else { + p = proto.Clone(in).(*GatewayStatus) + } + *out = *p +} + +// DeepCopyInto for the HttpListenerOption.Spec +func (in *HttpListenerOptionSpec) DeepCopyInto(out *HttpListenerOptionSpec) { + var p *HttpListenerOptionSpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*HttpListenerOptionSpec) + } else { + p = proto.Clone(in).(*HttpListenerOptionSpec) + } + *out = *p +} + +// DeepCopyInto for the HttpListenerOption.Status +func (in *HttpListenerOptionStatus) DeepCopyInto(out *HttpListenerOptionStatus) { + var p *HttpListenerOptionStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*HttpListenerOptionStatus) + } else { + p = proto.Clone(in).(*HttpListenerOptionStatus) + } + *out = *p +} + +// DeepCopyInto for the ListenerOption.Spec +func (in *ListenerOptionSpec) DeepCopyInto(out *ListenerOptionSpec) { + var p *ListenerOptionSpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*ListenerOptionSpec) + } else { + p = proto.Clone(in).(*ListenerOptionSpec) + } + *out = *p +} + +// DeepCopyInto for the ListenerOption.Status +func (in *ListenerOptionStatus) DeepCopyInto(out *ListenerOptionStatus) { + var p *ListenerOptionStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*ListenerOptionStatus) + } else { + p = proto.Clone(in).(*ListenerOptionStatus) + } + *out = *p +} + +// DeepCopyInto for the MatchableHttpGateway.Spec +func (in *MatchableHttpGatewaySpec) DeepCopyInto(out *MatchableHttpGatewaySpec) { + var p *MatchableHttpGatewaySpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*MatchableHttpGatewaySpec) + } else { + p = proto.Clone(in).(*MatchableHttpGatewaySpec) + } + *out = *p +} + +// DeepCopyInto for the MatchableHttpGateway.Status +func (in *MatchableHttpGatewayStatus) DeepCopyInto(out *MatchableHttpGatewayStatus) { + var p *MatchableHttpGatewayStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*MatchableHttpGatewayStatus) + } else { + p = proto.Clone(in).(*MatchableHttpGatewayStatus) + } + *out = *p +} + +// DeepCopyInto for the MatchableTcpGateway.Spec +func (in *MatchableTcpGatewaySpec) DeepCopyInto(out *MatchableTcpGatewaySpec) { + var p *MatchableTcpGatewaySpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*MatchableTcpGatewaySpec) + } else { + p = proto.Clone(in).(*MatchableTcpGatewaySpec) + } + *out = *p +} + +// DeepCopyInto for the MatchableTcpGateway.Status +func (in *MatchableTcpGatewayStatus) DeepCopyInto(out *MatchableTcpGatewayStatus) { + var p *MatchableTcpGatewayStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*MatchableTcpGatewayStatus) + } else { + p = proto.Clone(in).(*MatchableTcpGatewayStatus) + } + *out = *p +} + +// DeepCopyInto for the RouteOption.Spec +func (in *RouteOptionSpec) DeepCopyInto(out *RouteOptionSpec) { + var p *RouteOptionSpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*RouteOptionSpec) + } else { + p = proto.Clone(in).(*RouteOptionSpec) + } + *out = *p +} + +// DeepCopyInto for the RouteOption.Status +func (in *RouteOptionStatus) DeepCopyInto(out *RouteOptionStatus) { + var p *RouteOptionStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*RouteOptionStatus) + } else { + p = proto.Clone(in).(*RouteOptionStatus) + } *out = *p } // DeepCopyInto for the RouteTable.Spec func (in *RouteTableSpec) DeepCopyInto(out *RouteTableSpec) { - p := proto.Clone(in).(*RouteTableSpec) + var p *RouteTableSpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*RouteTableSpec) + } else { + p = proto.Clone(in).(*RouteTableSpec) + } *out = *p } // DeepCopyInto for the RouteTable.Status func (in *RouteTableStatus) DeepCopyInto(out *RouteTableStatus) { - p := proto.Clone(in).(*RouteTableStatus) + var p *RouteTableStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*RouteTableStatus) + } else { + p = proto.Clone(in).(*RouteTableStatus) + } *out = *p } // DeepCopyInto for the VirtualService.Spec func (in *VirtualServiceSpec) DeepCopyInto(out *VirtualServiceSpec) { - p := proto.Clone(in).(*VirtualServiceSpec) + var p *VirtualServiceSpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*VirtualServiceSpec) + } else { + p = proto.Clone(in).(*VirtualServiceSpec) + } *out = *p } // DeepCopyInto for the VirtualService.Status func (in *VirtualServiceStatus) DeepCopyInto(out *VirtualServiceStatus) { - p := proto.Clone(in).(*VirtualServiceStatus) + var p *VirtualServiceStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*VirtualServiceStatus) + } else { + p = proto.Clone(in).(*VirtualServiceStatus) + } + *out = *p +} + +// DeepCopyInto for the VirtualHostOption.Spec +func (in *VirtualHostOptionSpec) DeepCopyInto(out *VirtualHostOptionSpec) { + var p *VirtualHostOptionSpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*VirtualHostOptionSpec) + } else { + p = proto.Clone(in).(*VirtualHostOptionSpec) + } + *out = *p +} + +// DeepCopyInto for the VirtualHostOption.Status +func (in *VirtualHostOptionStatus) DeepCopyInto(out *VirtualHostOptionStatus) { + var p *VirtualHostOptionStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*VirtualHostOptionStatus) + } else { + p = proto.Clone(in).(*VirtualHostOptionStatus) + } *out = *p } diff --git a/pkg/api/gateway.solo.io/v1/providers/client_providers.go b/pkg/api/gateway.solo.io/v1/providers/client_providers.go index 92de71d61..98c0d9b32 100644 --- a/pkg/api/gateway.solo.io/v1/providers/client_providers.go +++ b/pkg/api/gateway.solo.io/v1/providers/client_providers.go @@ -45,6 +45,146 @@ func GatewayClientFromConfigFactoryProvider() GatewayClientFromConfigFactory { } } +// Provider for HttpListenerOptionClient from Clientset +func HttpListenerOptionClientFromClientsetProvider(clients gateway_solo_io_v1.Clientset) gateway_solo_io_v1.HttpListenerOptionClient { + return clients.HttpListenerOptions() +} + +// Provider for HttpListenerOption Client from Client +func HttpListenerOptionClientProvider(client client.Client) gateway_solo_io_v1.HttpListenerOptionClient { + return gateway_solo_io_v1.NewHttpListenerOptionClient(client) +} + +type HttpListenerOptionClientFactory func(client client.Client) gateway_solo_io_v1.HttpListenerOptionClient + +func HttpListenerOptionClientFactoryProvider() HttpListenerOptionClientFactory { + return HttpListenerOptionClientProvider +} + +type HttpListenerOptionClientFromConfigFactory func(cfg *rest.Config) (gateway_solo_io_v1.HttpListenerOptionClient, error) + +func HttpListenerOptionClientFromConfigFactoryProvider() HttpListenerOptionClientFromConfigFactory { + return func(cfg *rest.Config) (gateway_solo_io_v1.HttpListenerOptionClient, error) { + clients, err := gateway_solo_io_v1.NewClientsetFromConfig(cfg) + if err != nil { + return nil, err + } + return clients.HttpListenerOptions(), nil + } +} + +// Provider for ListenerOptionClient from Clientset +func ListenerOptionClientFromClientsetProvider(clients gateway_solo_io_v1.Clientset) gateway_solo_io_v1.ListenerOptionClient { + return clients.ListenerOptions() +} + +// Provider for ListenerOption Client from Client +func ListenerOptionClientProvider(client client.Client) gateway_solo_io_v1.ListenerOptionClient { + return gateway_solo_io_v1.NewListenerOptionClient(client) +} + +type ListenerOptionClientFactory func(client client.Client) gateway_solo_io_v1.ListenerOptionClient + +func ListenerOptionClientFactoryProvider() ListenerOptionClientFactory { + return ListenerOptionClientProvider +} + +type ListenerOptionClientFromConfigFactory func(cfg *rest.Config) (gateway_solo_io_v1.ListenerOptionClient, error) + +func ListenerOptionClientFromConfigFactoryProvider() ListenerOptionClientFromConfigFactory { + return func(cfg *rest.Config) (gateway_solo_io_v1.ListenerOptionClient, error) { + clients, err := gateway_solo_io_v1.NewClientsetFromConfig(cfg) + if err != nil { + return nil, err + } + return clients.ListenerOptions(), nil + } +} + +// Provider for MatchableHttpGatewayClient from Clientset +func MatchableHttpGatewayClientFromClientsetProvider(clients gateway_solo_io_v1.Clientset) gateway_solo_io_v1.MatchableHttpGatewayClient { + return clients.MatchableHttpGateways() +} + +// Provider for MatchableHttpGateway Client from Client +func MatchableHttpGatewayClientProvider(client client.Client) gateway_solo_io_v1.MatchableHttpGatewayClient { + return gateway_solo_io_v1.NewMatchableHttpGatewayClient(client) +} + +type MatchableHttpGatewayClientFactory func(client client.Client) gateway_solo_io_v1.MatchableHttpGatewayClient + +func MatchableHttpGatewayClientFactoryProvider() MatchableHttpGatewayClientFactory { + return MatchableHttpGatewayClientProvider +} + +type MatchableHttpGatewayClientFromConfigFactory func(cfg *rest.Config) (gateway_solo_io_v1.MatchableHttpGatewayClient, error) + +func MatchableHttpGatewayClientFromConfigFactoryProvider() MatchableHttpGatewayClientFromConfigFactory { + return func(cfg *rest.Config) (gateway_solo_io_v1.MatchableHttpGatewayClient, error) { + clients, err := gateway_solo_io_v1.NewClientsetFromConfig(cfg) + if err != nil { + return nil, err + } + return clients.MatchableHttpGateways(), nil + } +} + +// Provider for MatchableTcpGatewayClient from Clientset +func MatchableTcpGatewayClientFromClientsetProvider(clients gateway_solo_io_v1.Clientset) gateway_solo_io_v1.MatchableTcpGatewayClient { + return clients.MatchableTcpGateways() +} + +// Provider for MatchableTcpGateway Client from Client +func MatchableTcpGatewayClientProvider(client client.Client) gateway_solo_io_v1.MatchableTcpGatewayClient { + return gateway_solo_io_v1.NewMatchableTcpGatewayClient(client) +} + +type MatchableTcpGatewayClientFactory func(client client.Client) gateway_solo_io_v1.MatchableTcpGatewayClient + +func MatchableTcpGatewayClientFactoryProvider() MatchableTcpGatewayClientFactory { + return MatchableTcpGatewayClientProvider +} + +type MatchableTcpGatewayClientFromConfigFactory func(cfg *rest.Config) (gateway_solo_io_v1.MatchableTcpGatewayClient, error) + +func MatchableTcpGatewayClientFromConfigFactoryProvider() MatchableTcpGatewayClientFromConfigFactory { + return func(cfg *rest.Config) (gateway_solo_io_v1.MatchableTcpGatewayClient, error) { + clients, err := gateway_solo_io_v1.NewClientsetFromConfig(cfg) + if err != nil { + return nil, err + } + return clients.MatchableTcpGateways(), nil + } +} + +// Provider for RouteOptionClient from Clientset +func RouteOptionClientFromClientsetProvider(clients gateway_solo_io_v1.Clientset) gateway_solo_io_v1.RouteOptionClient { + return clients.RouteOptions() +} + +// Provider for RouteOption Client from Client +func RouteOptionClientProvider(client client.Client) gateway_solo_io_v1.RouteOptionClient { + return gateway_solo_io_v1.NewRouteOptionClient(client) +} + +type RouteOptionClientFactory func(client client.Client) gateway_solo_io_v1.RouteOptionClient + +func RouteOptionClientFactoryProvider() RouteOptionClientFactory { + return RouteOptionClientProvider +} + +type RouteOptionClientFromConfigFactory func(cfg *rest.Config) (gateway_solo_io_v1.RouteOptionClient, error) + +func RouteOptionClientFromConfigFactoryProvider() RouteOptionClientFromConfigFactory { + return func(cfg *rest.Config) (gateway_solo_io_v1.RouteOptionClient, error) { + clients, err := gateway_solo_io_v1.NewClientsetFromConfig(cfg) + if err != nil { + return nil, err + } + return clients.RouteOptions(), nil + } +} + // Provider for RouteTableClient from Clientset func RouteTableClientFromClientsetProvider(clients gateway_solo_io_v1.Clientset) gateway_solo_io_v1.RouteTableClient { return clients.RouteTables() @@ -100,3 +240,31 @@ func VirtualServiceClientFromConfigFactoryProvider() VirtualServiceClientFromCon return clients.VirtualServices(), nil } } + +// Provider for VirtualHostOptionClient from Clientset +func VirtualHostOptionClientFromClientsetProvider(clients gateway_solo_io_v1.Clientset) gateway_solo_io_v1.VirtualHostOptionClient { + return clients.VirtualHostOptions() +} + +// Provider for VirtualHostOption Client from Client +func VirtualHostOptionClientProvider(client client.Client) gateway_solo_io_v1.VirtualHostOptionClient { + return gateway_solo_io_v1.NewVirtualHostOptionClient(client) +} + +type VirtualHostOptionClientFactory func(client client.Client) gateway_solo_io_v1.VirtualHostOptionClient + +func VirtualHostOptionClientFactoryProvider() VirtualHostOptionClientFactory { + return VirtualHostOptionClientProvider +} + +type VirtualHostOptionClientFromConfigFactory func(cfg *rest.Config) (gateway_solo_io_v1.VirtualHostOptionClient, error) + +func VirtualHostOptionClientFromConfigFactoryProvider() VirtualHostOptionClientFromConfigFactory { + return func(cfg *rest.Config) (gateway_solo_io_v1.VirtualHostOptionClient, error) { + clients, err := gateway_solo_io_v1.NewClientsetFromConfig(cfg) + if err != nil { + return nil, err + } + return clients.VirtualHostOptions(), nil + } +} diff --git a/pkg/api/gateway.solo.io/v1/route_table.pb.clone.go b/pkg/api/gateway.solo.io/v1/route_table.pb.clone.go new file mode 100644 index 000000000..45a286ce6 --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/route_table.pb.clone.go @@ -0,0 +1,120 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/route_table.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *RouteTableSpec) Clone() proto.Message { + var target *RouteTableSpec + if m == nil { + return target + } + target = &RouteTableSpec{} + + if m.GetRoutes() != nil { + target.Routes = make([]*Route, len(m.GetRoutes())) + for idx, v := range m.GetRoutes() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Routes[idx] = h.Clone().(*Route) + } else { + target.Routes[idx] = proto.Clone(v).(*Route) + } + + } + } + + if h, ok := interface{}(m.GetWeight()).(clone.Cloner); ok { + target.Weight = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.Int32Value) + } else { + target.Weight = proto.Clone(m.GetWeight()).(*google_golang_org_protobuf_types_known_wrapperspb.Int32Value) + } + + return target +} + +// Clone function +func (m *RouteTableStatus) Clone() proto.Message { + var target *RouteTableStatus + if m == nil { + return target + } + target = &RouteTableStatus{} + + target.State = m.GetState() + + target.Reason = m.GetReason() + + target.ReportedBy = m.GetReportedBy() + + if m.GetSubresourceStatuses() != nil { + target.SubresourceStatuses = make(map[string]*RouteTableStatus, len(m.GetSubresourceStatuses())) + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SubresourceStatuses[k] = h.Clone().(*RouteTableStatus) + } else { + target.SubresourceStatuses[k] = proto.Clone(v).(*RouteTableStatus) + } + + } + } + + if h, ok := interface{}(m.GetDetails()).(clone.Cloner); ok { + target.Details = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Details = proto.Clone(m.GetDetails()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + return target +} + +// Clone function +func (m *RouteTableNamespacedStatuses) Clone() proto.Message { + var target *RouteTableNamespacedStatuses + if m == nil { + return target + } + target = &RouteTableNamespacedStatuses{} + + if m.GetStatuses() != nil { + target.Statuses = make(map[string]*RouteTableStatus, len(m.GetStatuses())) + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Statuses[k] = h.Clone().(*RouteTableStatus) + } else { + target.Statuses[k] = proto.Clone(v).(*RouteTableStatus) + } + + } + } + + return target +} diff --git a/pkg/api/gateway.solo.io/v1/route_table.pb.equal.go b/pkg/api/gateway.solo.io/v1/route_table.pb.equal.go index ace404dc1..e48ccc3ed 100644 --- a/pkg/api/gateway.solo.io/v1/route_table.pb.equal.go +++ b/pkg/api/gateway.solo.io/v1/route_table.pb.equal.go @@ -138,3 +138,44 @@ func (m *RouteTableStatus) Equal(that interface{}) bool { return true } + +// Equal function +func (m *RouteTableNamespacedStatuses) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RouteTableNamespacedStatuses) + if !ok { + that2, ok := that.(RouteTableNamespacedStatuses) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetStatuses()) != len(target.GetStatuses()) { + return false + } + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetStatuses()[k]) { + return false + } + } + + } + + return true +} diff --git a/pkg/api/gateway.solo.io/v1/route_table.pb.go b/pkg/api/gateway.solo.io/v1/route_table.pb.go index 614cc50e5..90cbd6731 100644 --- a/pkg/api/gateway.solo.io/v1/route_table.pb.go +++ b/pkg/api/gateway.solo.io/v1/route_table.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/route_table.proto @@ -9,14 +9,14 @@ package v1 import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - _struct "github.com/golang/protobuf/ptypes/struct" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" _ "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -26,10 +26,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type RouteTableStatus_State int32 const ( @@ -88,8 +84,6 @@ func (RouteTableStatus_State) EnumDescriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_rawDescGZIP(), []int{1, 0} } -// -// // The **RouteTable** is a child routing object for the Gloo Gateway. // // A **RouteTable** gets built into the complete routing configuration when it is referenced by a `delegateAction`, @@ -123,32 +117,35 @@ func (RouteTableStatus_State) EnumDescriptor() ([]byte, []int) { // // *would* be valid. // -// // A complete configuration might look as follows: // // ```yaml // apiVersion: gateway.solo.io/v1 // kind: VirtualService // metadata: -// name: 'any' -// namespace: 'any' +// +// name: 'any' +// namespace: 'any' +// // spec: -// virtualHost: -// domains: -// - 'any.com' -// routes: -// - matchers: -// - prefix: '/a' # delegate ownership of routes for `any.com/a` -// delegateAction: -// ref: -// name: 'a-routes' -// namespace: 'a' -// - matchers: -// - prefix: '/b' # delegate ownership of routes for `any.com/b` -// delegateAction: -// ref: -// name: 'b-routes' -// namespace: 'b' +// +// virtualHost: +// domains: +// - 'any.com' +// routes: +// - matchers: +// - prefix: '/a' # delegate ownership of routes for `any.com/a` +// delegateAction: +// ref: +// name: 'a-routes' +// namespace: 'a' +// - matchers: +// - prefix: '/b' # delegate ownership of routes for `any.com/b` +// delegateAction: +// ref: +// name: 'b-routes' +// namespace: 'b' +// // ``` // // * A root-level **VirtualService** which delegates routing to to the `a-routes` and `b-routes` **RouteTables**. @@ -158,24 +155,28 @@ func (RouteTableStatus_State) EnumDescriptor() ([]byte, []int) { // apiVersion: gateway.solo.io/v1 // kind: RouteTable // metadata: -// name: 'a-routes' -// namespace: 'a' +// +// name: 'a-routes' +// namespace: 'a' +// // spec: -// routes: -// - matchers: -// # the path matchers in this RouteTable must begin with the prefix `/a/` -// - prefix: '/a/1' -// routeAction: -// single: -// upstream: -// name: 'foo-upstream' -// -// - matchers: -// - prefix: '/a/2' -// routeAction: -// single: -// upstream: -// name: 'bar-upstream' +// +// routes: +// - matchers: +// # the path matchers in this RouteTable must begin with the prefix `/a/` +// - prefix: '/a/1' +// routeAction: +// single: +// upstream: +// name: 'foo-upstream' +// +// - matchers: +// - prefix: '/a/2' +// routeAction: +// single: +// upstream: +// name: 'bar-upstream' +// // ``` // // * A **RouteTable** which defines two routes. @@ -184,49 +185,54 @@ func (RouteTableStatus_State) EnumDescriptor() ([]byte, []int) { // apiVersion: gateway.solo.io/v1 // kind: RouteTable // metadata: -// name: 'b-routes' -// namespace: 'b' +// +// name: 'b-routes' +// namespace: 'b' +// // spec: -// routes: -// - matchers: -// # the path matchers in this RouteTable must begin with the prefix `/b/` -// - regex: '/b/3' -// routeAction: -// single: -// upstream: -// name: 'bar-upstream' -// - matchers: -// - prefix: '/b/c/' -// # routes in the RouteTable can perform any action, including a delegateAction -// delegateAction: -// ref: -// name: 'c-routes' -// namespace: 'c' +// +// routes: +// - matchers: +// # the path matchers in this RouteTable must begin with the prefix `/b/` +// - regex: '/b/3' +// routeAction: +// single: +// upstream: +// name: 'bar-upstream' +// - matchers: +// - prefix: '/b/c/' +// # routes in the RouteTable can perform any action, including a delegateAction +// delegateAction: +// ref: +// name: 'c-routes' +// namespace: 'c' // // ``` // // * A **RouteTable** which both *defines a route* and *delegates to* another **RouteTable**. // -// // ```yaml // apiVersion: gateway.solo.io/v1 // kind: RouteTable // metadata: -// name: 'c-routes' -// namespace: 'c' +// +// name: 'c-routes' +// namespace: 'c' +// // spec: -// routes: -// - matchers: -// - exact: '/b/c/4' -// routeAction: -// single: -// upstream: -// name: 'qux-upstream' +// +// routes: +// - matchers: +// - exact: '/b/c/4' +// routeAction: +// single: +// upstream: +// name: 'qux-upstream' +// // ``` // // * A RouteTable which is a child of another route table. // -// // Would produce the following route config for `mydomain.com`: // // ``` @@ -235,34 +241,31 @@ func (RouteTableStatus_State) EnumDescriptor() ([]byte, []int) { // /b/3 -> baz-upstream // /b/c/4 -> qux-upstream // ``` -// type RouteTableSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The list of routes for the route table Routes []*Route `protobuf:"bytes,1,rep,name=routes,proto3" json:"routes,omitempty"` - // When a delegated route defines a `RouteTableSelector` that matches multiple route tables, Gloo will inspect this - // field to determine the order in which the route tables are to be evaluated. This determines the order in which + // When a delegated route in a VirtualService or RouteTable defines a `RouteTableSelector` that matches + // multiple route tables, Gloo will inspect this field to determine the order in which + // the route tables are to be evaluated. This determines the order in which // the routes will appear on the final `Proxy` resource. The field is optional; if no value is specified, the weight - // defaults to 0 (zero). + // defaults to 0 (zero). Note that this field is ignored if it is not used in a route delegation scenario. // // Gloo will process the route tables matched by a selector in ascending order by weight and collect the routes of // each route table in the order they are defined. If multiple route tables define the same weight, Gloo will sort the // routes which belong to those tables to avoid short-circuiting (e.g. making sure `/foo/bar` comes before `/foo`). // In this scenario, Gloo will also alert the user by adding a warning to the status of the parent resource // (the one that specifies the `RouteTableSelector`). - Weight *wrappers.Int32Value `protobuf:"bytes,2,opt,name=weight,proto3" json:"weight,omitempty"` + Weight *wrapperspb.Int32Value `protobuf:"bytes,2,opt,name=weight,proto3" json:"weight,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteTableSpec) Reset() { *x = RouteTableSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteTableSpec) String() string { @@ -273,7 +276,7 @@ func (*RouteTableSpec) ProtoMessage() {} func (x *RouteTableSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -295,7 +298,7 @@ func (x *RouteTableSpec) GetRoutes() []*Route { return nil } -func (x *RouteTableSpec) GetWeight() *wrappers.Int32Value { +func (x *RouteTableSpec) GetWeight() *wrapperspb.Int32Value { if x != nil { return x.Weight } @@ -303,10 +306,7 @@ func (x *RouteTableSpec) GetWeight() *wrappers.Int32Value { } type RouteTableStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // State is the enum indicating the state of the resource State RouteTableStatus_State `protobuf:"varint,1,opt,name=state,proto3,enum=gateway.solo.io.RouteTableStatus_State" json:"state,omitempty"` // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty @@ -314,18 +314,18 @@ type RouteTableStatus struct { // Reference to the reporter who wrote this status ReportedBy string `protobuf:"bytes,3,opt,name=reported_by,json=reportedBy,proto3" json:"reported_by,omitempty"` // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource - SubresourceStatuses map[string]*RouteTableStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + SubresourceStatuses map[string]*RouteTableStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Opaque details about status results - Details *_struct.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + Details *structpb.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteTableStatus) Reset() { *x = RouteTableStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteTableStatus) String() string { @@ -336,7 +336,7 @@ func (*RouteTableStatus) ProtoMessage() {} func (x *RouteTableStatus) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -379,16 +379,60 @@ func (x *RouteTableStatus) GetSubresourceStatuses() map[string]*RouteTableStatus return nil } -func (x *RouteTableStatus) GetDetails() *_struct.Struct { +func (x *RouteTableStatus) GetDetails() *structpb.Struct { if x != nil { return x.Details } return nil } +type RouteTableNamespacedStatuses struct { + state protoimpl.MessageState `protogen:"open.v1"` + Statuses map[string]*RouteTableStatus `protobuf:"bytes,1,rep,name=statuses,proto3" json:"statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RouteTableNamespacedStatuses) Reset() { + *x = RouteTableNamespacedStatuses{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RouteTableNamespacedStatuses) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RouteTableNamespacedStatuses) ProtoMessage() {} + +func (x *RouteTableNamespacedStatuses) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RouteTableNamespacedStatuses.ProtoReflect.Descriptor instead. +func (*RouteTableNamespacedStatuses) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_rawDescGZIP(), []int{2} +} + +func (x *RouteTableNamespacedStatuses) GetStatuses() map[string]*RouteTableStatus { + if x != nil { + return x.Statuses + } + return nil +} + var File_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_rawDesc = string([]byte{ 0x0a, 0x42, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, @@ -407,85 +451,104 @@ var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_rawD 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0x75, 0x0a, 0x0e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x6f, 0x22, 0x7b, 0x0a, 0x0e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2e, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xd6, 0x03, 0x0a, 0x10, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3d, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x6d, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, + 0x65, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, + 0xd6, 0x03, 0x0a, 0x10, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x3d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x6d, 0x0a, 0x14, + 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x75, + 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x69, + 0x0a, 0x18, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x05, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, + 0x0c, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0c, 0x0a, + 0x08, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x57, + 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x22, 0xd7, 0x01, 0x0a, 0x1c, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x57, 0x0a, 0x08, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x65, 0x73, 0x1a, 0x5e, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x13, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, - 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x69, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, - 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x63, 0x63, - 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x6a, 0x65, 0x63, - 0x74, 0x65, 0x64, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, - 0x10, 0x03, 0x42, 0x41, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, - 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0xc0, 0xf5, 0x04, - 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x42, 0x45, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, + 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_goTypes = []interface{}{ - (RouteTableStatus_State)(0), // 0: gateway.solo.io.RouteTableStatus.State - (*RouteTableSpec)(nil), // 1: gateway.solo.io.RouteTableSpec - (*RouteTableStatus)(nil), // 2: gateway.solo.io.RouteTableStatus - nil, // 3: gateway.solo.io.RouteTableStatus.SubresourceStatusesEntry - (*Route)(nil), // 4: gateway.solo.io.Route - (*wrappers.Int32Value)(nil), // 5: google.protobuf.Int32Value - (*_struct.Struct)(nil), // 6: google.protobuf.Struct +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_goTypes = []any{ + (RouteTableStatus_State)(0), // 0: gateway.solo.io.RouteTableStatus.State + (*RouteTableSpec)(nil), // 1: gateway.solo.io.RouteTableSpec + (*RouteTableStatus)(nil), // 2: gateway.solo.io.RouteTableStatus + (*RouteTableNamespacedStatuses)(nil), // 3: gateway.solo.io.RouteTableNamespacedStatuses + nil, // 4: gateway.solo.io.RouteTableStatus.SubresourceStatusesEntry + nil, // 5: gateway.solo.io.RouteTableNamespacedStatuses.StatusesEntry + (*Route)(nil), // 6: gateway.solo.io.Route + (*wrapperspb.Int32Value)(nil), // 7: google.protobuf.Int32Value + (*structpb.Struct)(nil), // 8: google.protobuf.Struct } var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_depIdxs = []int32{ - 4, // 0: gateway.solo.io.RouteTableSpec.routes:type_name -> gateway.solo.io.Route - 5, // 1: gateway.solo.io.RouteTableSpec.weight:type_name -> google.protobuf.Int32Value + 6, // 0: gateway.solo.io.RouteTableSpec.routes:type_name -> gateway.solo.io.Route + 7, // 1: gateway.solo.io.RouteTableSpec.weight:type_name -> google.protobuf.Int32Value 0, // 2: gateway.solo.io.RouteTableStatus.state:type_name -> gateway.solo.io.RouteTableStatus.State - 3, // 3: gateway.solo.io.RouteTableStatus.subresource_statuses:type_name -> gateway.solo.io.RouteTableStatus.SubresourceStatusesEntry - 6, // 4: gateway.solo.io.RouteTableStatus.details:type_name -> google.protobuf.Struct - 2, // 5: gateway.solo.io.RouteTableStatus.SubresourceStatusesEntry.value:type_name -> gateway.solo.io.RouteTableStatus - 6, // [6:6] is the sub-list for method output_type - 6, // [6:6] is the sub-list for method input_type - 6, // [6:6] is the sub-list for extension type_name - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name + 4, // 3: gateway.solo.io.RouteTableStatus.subresource_statuses:type_name -> gateway.solo.io.RouteTableStatus.SubresourceStatusesEntry + 8, // 4: gateway.solo.io.RouteTableStatus.details:type_name -> google.protobuf.Struct + 5, // 5: gateway.solo.io.RouteTableNamespacedStatuses.statuses:type_name -> gateway.solo.io.RouteTableNamespacedStatuses.StatusesEntry + 2, // 6: gateway.solo.io.RouteTableStatus.SubresourceStatusesEntry.value:type_name -> gateway.solo.io.RouteTableStatus + 2, // 7: gateway.solo.io.RouteTableNamespacedStatuses.StatusesEntry.value:type_name -> gateway.solo.io.RouteTableStatus + 8, // [8:8] is the sub-list for method output_type + 8, // [8:8] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_init() } @@ -494,39 +557,13 @@ func file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_ini return } file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_init() - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteTableSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteTableStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_rawDesc)), NumEnums: 1, - NumMessages: 3, + NumMessages: 5, NumExtensions: 0, NumServices: 0, }, @@ -536,7 +573,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_ini MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_route_table_proto_depIdxs = nil } diff --git a/pkg/api/gateway.solo.io/v1/route_table.pb.hash.go b/pkg/api/gateway.solo.io/v1/route_table.pb.hash.go index 879e90bac..bbcb8582c 100644 --- a/pkg/api/gateway.solo.io/v1/route_table.pb.hash.go +++ b/pkg/api/gateway.solo.io/v1/route_table.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteTableSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -41,14 +45,20 @@ func (m *RouteTableSpec) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRoutes() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -57,14 +67,20 @@ func (m *RouteTableSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetWeight()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Weight")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetWeight(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetWeight(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Weight")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -74,6 +90,10 @@ func (m *RouteTableSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteTableStatus) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -106,14 +126,20 @@ func (m *RouteTableStatus) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -133,17 +159,82 @@ func (m *RouteTableStatus) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RouteTableNamespacedStatuses) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.RouteTableNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { return 0, err } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err } + } return hasher.Sum64(), nil diff --git a/pkg/api/gateway.solo.io/v1/route_table.pb.uniquehash.go b/pkg/api/gateway.solo.io/v1/route_table.pb.uniquehash.go new file mode 100644 index 000000000..02c8b15e4 --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/route_table.pb.uniquehash.go @@ -0,0 +1,261 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/route_table.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteTableSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.RouteTableSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Routes")); err != nil { + return 0, err + } + for i, v := range m.GetRoutes() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetWeight()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Weight")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWeight(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Weight")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteTableStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.RouteTableStatus")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("State")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Reason")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ReportedBy")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteTableNamespacedStatuses) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.RouteTableNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gateway.solo.io/v1/sets/mocks/sets.go b/pkg/api/gateway.solo.io/v1/sets/mocks/sets.go index 95ac6fc81..c25a65379 100644 --- a/pkg/api/gateway.solo.io/v1/sets/mocks/sets.go +++ b/pkg/api/gateway.solo.io/v1/sets/mocks/sets.go @@ -15,94 +15,141 @@ import ( sets0 "k8s.io/apimachinery/pkg/util/sets" ) -// MockGatewaySet is a mock of GatewaySet interface +// MockGatewaySet is a mock of GatewaySet interface. type MockGatewaySet struct { ctrl *gomock.Controller recorder *MockGatewaySetMockRecorder } -// MockGatewaySetMockRecorder is the mock recorder for MockGatewaySet +// MockGatewaySetMockRecorder is the mock recorder for MockGatewaySet. type MockGatewaySetMockRecorder struct { mock *MockGatewaySet } -// NewMockGatewaySet creates a new mock instance +// NewMockGatewaySet creates a new mock instance. func NewMockGatewaySet(ctrl *gomock.Controller) *MockGatewaySet { mock := &MockGatewaySet{ctrl: ctrl} mock.recorder = &MockGatewaySetMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockGatewaySet) EXPECT() *MockGatewaySetMockRecorder { return m.recorder } -// Keys mocks base method -func (m *MockGatewaySet) Keys() sets0.String { +// Clone mocks base method. +func (m *MockGatewaySet) Clone() v1sets.GatewaySet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Keys") - ret0, _ := ret[0].(sets0.String) + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.GatewaySet) return ret0 } -// Keys indicates an expected call of Keys -func (mr *MockGatewaySetMockRecorder) Keys() *gomock.Call { +// Clone indicates an expected call of Clone. +func (mr *MockGatewaySetMockRecorder) Clone() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockGatewaySet)(nil).Keys)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockGatewaySet)(nil).Clone)) } -// List mocks base method -func (m *MockGatewaySet) List(filterResource ...func(*v1.Gateway) bool) []*v1.Gateway { +// Delete mocks base method. +func (m *MockGatewaySet) Delete(gateway ezkube.ResourceId) { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range filterResource { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "List", varargs...) - ret0, _ := ret[0].([]*v1.Gateway) + m.ctrl.Call(m, "Delete", gateway) +} + +// Delete indicates an expected call of Delete. +func (mr *MockGatewaySetMockRecorder) Delete(gateway interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockGatewaySet)(nil).Delete), gateway) +} + +// Delta mocks base method. +func (m *MockGatewaySet) Delta(newSet v1sets.GatewaySet) sets.ResourceDelta { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) return ret0 } -// List indicates an expected call of List -func (mr *MockGatewaySetMockRecorder) List(filterResource ...interface{}) *gomock.Call { +// Delta indicates an expected call of Delta. +func (mr *MockGatewaySetMockRecorder) Delta(newSet interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockGatewaySet)(nil).List), filterResource...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockGatewaySet)(nil).Delta), newSet) } -// UnsortedList mocks base method -func (m *MockGatewaySet) UnsortedList(filterResource ...func(*v1.Gateway) bool) []*v1.Gateway { +// Difference mocks base method. +func (m *MockGatewaySet) Difference(set v1sets.GatewaySet) v1sets.GatewaySet { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range filterResource { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "UnsortedList", varargs...) - ret0, _ := ret[0].([]*v1.Gateway) + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.GatewaySet) return ret0 } -// UnsortedList indicates an expected call of UnsortedList -func (mr *MockGatewaySetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { +// Difference indicates an expected call of Difference. +func (mr *MockGatewaySetMockRecorder) Difference(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockGatewaySet)(nil).UnsortedList), filterResource...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockGatewaySet)(nil).Difference), set) } -// Map mocks base method -func (m *MockGatewaySet) Map() map[string]*v1.Gateway { +// Equal mocks base method. +func (m *MockGatewaySet) Equal(gatewaySet v1sets.GatewaySet) bool { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Map") - ret0, _ := ret[0].(map[string]*v1.Gateway) + ret := m.ctrl.Call(m, "Equal", gatewaySet) + ret0, _ := ret[0].(bool) return ret0 } -// Map indicates an expected call of Map -func (mr *MockGatewaySetMockRecorder) Map() *gomock.Call { +// Equal indicates an expected call of Equal. +func (mr *MockGatewaySetMockRecorder) Equal(gatewaySet interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockGatewaySet)(nil).Map)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockGatewaySet)(nil).Equal), gatewaySet) +} + +// Find mocks base method. +func (m *MockGatewaySet) Find(id ezkube.ResourceId) (*v1.Gateway, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.Gateway) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Find indicates an expected call of Find. +func (mr *MockGatewaySetMockRecorder) Find(id interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockGatewaySet)(nil).Find), id) +} + +// Generic mocks base method. +func (m *MockGatewaySet) Generic() sets.ResourceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 +} + +// Generic indicates an expected call of Generic. +func (mr *MockGatewaySetMockRecorder) Generic() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockGatewaySet)(nil).Generic)) +} + +// Has mocks base method. +func (m *MockGatewaySet) Has(gateway ezkube.ResourceId) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Has", gateway) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Has indicates an expected call of Has. +func (mr *MockGatewaySetMockRecorder) Has(gateway interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockGatewaySet)(nil).Has), gateway) } -// Insert mocks base method +// Insert mocks base method. func (m *MockGatewaySet) Insert(gateway ...*v1.Gateway) { m.ctrl.T.Helper() varargs := []interface{}{} @@ -112,53 +159,87 @@ func (m *MockGatewaySet) Insert(gateway ...*v1.Gateway) { m.ctrl.Call(m, "Insert", varargs...) } -// Insert indicates an expected call of Insert +// Insert indicates an expected call of Insert. func (mr *MockGatewaySetMockRecorder) Insert(gateway ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockGatewaySet)(nil).Insert), gateway...) } -// Equal mocks base method -func (m *MockGatewaySet) Equal(gatewaySet v1sets.GatewaySet) bool { +// Intersection mocks base method. +func (m *MockGatewaySet) Intersection(set v1sets.GatewaySet) v1sets.GatewaySet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Equal", gatewaySet) - ret0, _ := ret[0].(bool) + ret := m.ctrl.Call(m, "Intersection", set) + ret0, _ := ret[0].(v1sets.GatewaySet) return ret0 } -// Equal indicates an expected call of Equal -func (mr *MockGatewaySetMockRecorder) Equal(gatewaySet interface{}) *gomock.Call { +// Intersection indicates an expected call of Intersection. +func (mr *MockGatewaySetMockRecorder) Intersection(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockGatewaySet)(nil).Equal), gatewaySet) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockGatewaySet)(nil).Intersection), set) } -// Has mocks base method -func (m *MockGatewaySet) Has(gateway ezkube.ResourceId) bool { +// Keys mocks base method. +func (m *MockGatewaySet) Keys() sets0.String { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Has", gateway) - ret0, _ := ret[0].(bool) + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) return ret0 } -// Has indicates an expected call of Has -func (mr *MockGatewaySetMockRecorder) Has(gateway interface{}) *gomock.Call { +// Keys indicates an expected call of Keys. +func (mr *MockGatewaySetMockRecorder) Keys() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockGatewaySet)(nil).Has), gateway) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockGatewaySet)(nil).Keys)) } -// Delete mocks base method -func (m *MockGatewaySet) Delete(gateway ezkube.ResourceId) { +// Length mocks base method. +func (m *MockGatewaySet) Length() int { m.ctrl.T.Helper() - m.ctrl.Call(m, "Delete", gateway) + ret := m.ctrl.Call(m, "Length") + ret0, _ := ret[0].(int) + return ret0 } -// Delete indicates an expected call of Delete -func (mr *MockGatewaySetMockRecorder) Delete(gateway interface{}) *gomock.Call { +// Length indicates an expected call of Length. +func (mr *MockGatewaySetMockRecorder) Length() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockGatewaySet)(nil).Delete), gateway) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockGatewaySet)(nil).Length)) +} + +// List mocks base method. +func (m *MockGatewaySet) List(filterResource ...func(*v1.Gateway) bool) []*v1.Gateway { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.Gateway) + return ret0 +} + +// List indicates an expected call of List. +func (mr *MockGatewaySetMockRecorder) List(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockGatewaySet)(nil).List), filterResource...) +} + +// Map mocks base method. +func (m *MockGatewaySet) Map() map[string]*v1.Gateway { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.Gateway) + return ret0 } -// Union mocks base method +// Map indicates an expected call of Map. +func (mr *MockGatewaySetMockRecorder) Map() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockGatewaySet)(nil).Map)) +} + +// Union mocks base method. func (m *MockGatewaySet) Union(set v1sets.GatewaySet) v1sets.GatewaySet { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Union", set) @@ -166,577 +247,2074 @@ func (m *MockGatewaySet) Union(set v1sets.GatewaySet) v1sets.GatewaySet { return ret0 } -// Union indicates an expected call of Union +// Union indicates an expected call of Union. func (mr *MockGatewaySetMockRecorder) Union(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockGatewaySet)(nil).Union), set) } -// Difference mocks base method -func (m *MockGatewaySet) Difference(set v1sets.GatewaySet) v1sets.GatewaySet { +// UnsortedList mocks base method. +func (m *MockGatewaySet) UnsortedList(filterResource ...func(*v1.Gateway) bool) []*v1.Gateway { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Difference", set) - ret0, _ := ret[0].(v1sets.GatewaySet) + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.Gateway) return ret0 } -// Difference indicates an expected call of Difference -func (mr *MockGatewaySetMockRecorder) Difference(set interface{}) *gomock.Call { +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockGatewaySetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockGatewaySet)(nil).Difference), set) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockGatewaySet)(nil).UnsortedList), filterResource...) } -// Intersection mocks base method -func (m *MockGatewaySet) Intersection(set v1sets.GatewaySet) v1sets.GatewaySet { +// MockHttpListenerOptionSet is a mock of HttpListenerOptionSet interface. +type MockHttpListenerOptionSet struct { + ctrl *gomock.Controller + recorder *MockHttpListenerOptionSetMockRecorder +} + +// MockHttpListenerOptionSetMockRecorder is the mock recorder for MockHttpListenerOptionSet. +type MockHttpListenerOptionSetMockRecorder struct { + mock *MockHttpListenerOptionSet +} + +// NewMockHttpListenerOptionSet creates a new mock instance. +func NewMockHttpListenerOptionSet(ctrl *gomock.Controller) *MockHttpListenerOptionSet { + mock := &MockHttpListenerOptionSet{ctrl: ctrl} + mock.recorder = &MockHttpListenerOptionSetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockHttpListenerOptionSet) EXPECT() *MockHttpListenerOptionSetMockRecorder { + return m.recorder +} + +// Clone mocks base method. +func (m *MockHttpListenerOptionSet) Clone() v1sets.HttpListenerOptionSet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Intersection", set) - ret0, _ := ret[0].(v1sets.GatewaySet) + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.HttpListenerOptionSet) return ret0 } -// Intersection indicates an expected call of Intersection -func (mr *MockGatewaySetMockRecorder) Intersection(set interface{}) *gomock.Call { +// Clone indicates an expected call of Clone. +func (mr *MockHttpListenerOptionSetMockRecorder) Clone() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockGatewaySet)(nil).Intersection), set) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockHttpListenerOptionSet)(nil).Clone)) } -// Find mocks base method -func (m *MockGatewaySet) Find(id ezkube.ResourceId) (*v1.Gateway, error) { +// Delete mocks base method. +func (m *MockHttpListenerOptionSet) Delete(httpListenerOption ezkube.ResourceId) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Find", id) - ret0, _ := ret[0].(*v1.Gateway) - ret1, _ := ret[1].(error) - return ret0, ret1 + m.ctrl.Call(m, "Delete", httpListenerOption) } -// Find indicates an expected call of Find -func (mr *MockGatewaySetMockRecorder) Find(id interface{}) *gomock.Call { +// Delete indicates an expected call of Delete. +func (mr *MockHttpListenerOptionSetMockRecorder) Delete(httpListenerOption interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockGatewaySet)(nil).Find), id) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockHttpListenerOptionSet)(nil).Delete), httpListenerOption) } -// Length mocks base method -func (m *MockGatewaySet) Length() int { +// Delta mocks base method. +func (m *MockHttpListenerOptionSet) Delta(newSet v1sets.HttpListenerOptionSet) sets.ResourceDelta { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Length") - ret0, _ := ret[0].(int) + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) return ret0 } -// Length indicates an expected call of Length -func (mr *MockGatewaySetMockRecorder) Length() *gomock.Call { +// Delta indicates an expected call of Delta. +func (mr *MockHttpListenerOptionSetMockRecorder) Delta(newSet interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockGatewaySet)(nil).Length)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockHttpListenerOptionSet)(nil).Delta), newSet) } -// Generic mocks base method -func (m *MockGatewaySet) Generic() sets.ResourceSet { +// Difference mocks base method. +func (m *MockHttpListenerOptionSet) Difference(set v1sets.HttpListenerOptionSet) v1sets.HttpListenerOptionSet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Generic") - ret0, _ := ret[0].(sets.ResourceSet) + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.HttpListenerOptionSet) return ret0 } -// Generic indicates an expected call of Generic -func (mr *MockGatewaySetMockRecorder) Generic() *gomock.Call { +// Difference indicates an expected call of Difference. +func (mr *MockHttpListenerOptionSetMockRecorder) Difference(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockGatewaySet)(nil).Generic)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockHttpListenerOptionSet)(nil).Difference), set) } -// Delta mocks base method -func (m *MockGatewaySet) Delta(newSet v1sets.GatewaySet) sets.ResourceDelta { +// Equal mocks base method. +func (m *MockHttpListenerOptionSet) Equal(httpListenerOptionSet v1sets.HttpListenerOptionSet) bool { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Delta", newSet) - ret0, _ := ret[0].(sets.ResourceDelta) + ret := m.ctrl.Call(m, "Equal", httpListenerOptionSet) + ret0, _ := ret[0].(bool) return ret0 } -// Delta indicates an expected call of Delta -func (mr *MockGatewaySetMockRecorder) Delta(newSet interface{}) *gomock.Call { +// Equal indicates an expected call of Equal. +func (mr *MockHttpListenerOptionSetMockRecorder) Equal(httpListenerOptionSet interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockGatewaySet)(nil).Delta), newSet) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockHttpListenerOptionSet)(nil).Equal), httpListenerOptionSet) } -// MockRouteTableSet is a mock of RouteTableSet interface -type MockRouteTableSet struct { - ctrl *gomock.Controller - recorder *MockRouteTableSetMockRecorder +// Find mocks base method. +func (m *MockHttpListenerOptionSet) Find(id ezkube.ResourceId) (*v1.HttpListenerOption, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.HttpListenerOption) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// MockRouteTableSetMockRecorder is the mock recorder for MockRouteTableSet -type MockRouteTableSetMockRecorder struct { - mock *MockRouteTableSet +// Find indicates an expected call of Find. +func (mr *MockHttpListenerOptionSetMockRecorder) Find(id interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockHttpListenerOptionSet)(nil).Find), id) } -// NewMockRouteTableSet creates a new mock instance -func NewMockRouteTableSet(ctrl *gomock.Controller) *MockRouteTableSet { - mock := &MockRouteTableSet{ctrl: ctrl} - mock.recorder = &MockRouteTableSetMockRecorder{mock} - return mock +// Generic mocks base method. +func (m *MockHttpListenerOptionSet) Generic() sets.ResourceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 } -// EXPECT returns an object that allows the caller to indicate expected use -func (m *MockRouteTableSet) EXPECT() *MockRouteTableSetMockRecorder { - return m.recorder +// Generic indicates an expected call of Generic. +func (mr *MockHttpListenerOptionSetMockRecorder) Generic() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockHttpListenerOptionSet)(nil).Generic)) } -// Keys mocks base method -func (m *MockRouteTableSet) Keys() sets0.String { +// Has mocks base method. +func (m *MockHttpListenerOptionSet) Has(httpListenerOption ezkube.ResourceId) bool { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Keys") - ret0, _ := ret[0].(sets0.String) + ret := m.ctrl.Call(m, "Has", httpListenerOption) + ret0, _ := ret[0].(bool) return ret0 } -// Keys indicates an expected call of Keys -func (mr *MockRouteTableSetMockRecorder) Keys() *gomock.Call { +// Has indicates an expected call of Has. +func (mr *MockHttpListenerOptionSetMockRecorder) Has(httpListenerOption interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockRouteTableSet)(nil).Keys)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockHttpListenerOptionSet)(nil).Has), httpListenerOption) } -// List mocks base method -func (m *MockRouteTableSet) List(filterResource ...func(*v1.RouteTable) bool) []*v1.RouteTable { +// Insert mocks base method. +func (m *MockHttpListenerOptionSet) Insert(httpListenerOption ...*v1.HttpListenerOption) { m.ctrl.T.Helper() varargs := []interface{}{} - for _, a := range filterResource { + for _, a := range httpListenerOption { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "List", varargs...) - ret0, _ := ret[0].([]*v1.RouteTable) - return ret0 + m.ctrl.Call(m, "Insert", varargs...) } -// List indicates an expected call of List -func (mr *MockRouteTableSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { +// Insert indicates an expected call of Insert. +func (mr *MockHttpListenerOptionSetMockRecorder) Insert(httpListenerOption ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockRouteTableSet)(nil).List), filterResource...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockHttpListenerOptionSet)(nil).Insert), httpListenerOption...) } -// UnsortedList mocks base method -func (m *MockRouteTableSet) UnsortedList(filterResource ...func(*v1.RouteTable) bool) []*v1.RouteTable { +// Intersection mocks base method. +func (m *MockHttpListenerOptionSet) Intersection(set v1sets.HttpListenerOptionSet) v1sets.HttpListenerOptionSet { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range filterResource { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "UnsortedList", varargs...) - ret0, _ := ret[0].([]*v1.RouteTable) + ret := m.ctrl.Call(m, "Intersection", set) + ret0, _ := ret[0].(v1sets.HttpListenerOptionSet) return ret0 } -// UnsortedList indicates an expected call of UnsortedList -func (mr *MockRouteTableSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { +// Intersection indicates an expected call of Intersection. +func (mr *MockHttpListenerOptionSetMockRecorder) Intersection(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockRouteTableSet)(nil).UnsortedList), filterResource...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockHttpListenerOptionSet)(nil).Intersection), set) } -// Map mocks base method -func (m *MockRouteTableSet) Map() map[string]*v1.RouteTable { +// Keys mocks base method. +func (m *MockHttpListenerOptionSet) Keys() sets0.String { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Map") - ret0, _ := ret[0].(map[string]*v1.RouteTable) + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) return ret0 } -// Map indicates an expected call of Map -func (mr *MockRouteTableSetMockRecorder) Map() *gomock.Call { +// Keys indicates an expected call of Keys. +func (mr *MockHttpListenerOptionSetMockRecorder) Keys() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockRouteTableSet)(nil).Map)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockHttpListenerOptionSet)(nil).Keys)) +} + +// Length mocks base method. +func (m *MockHttpListenerOptionSet) Length() int { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Length") + ret0, _ := ret[0].(int) + return ret0 +} + +// Length indicates an expected call of Length. +func (mr *MockHttpListenerOptionSetMockRecorder) Length() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockHttpListenerOptionSet)(nil).Length)) +} + +// List mocks base method. +func (m *MockHttpListenerOptionSet) List(filterResource ...func(*v1.HttpListenerOption) bool) []*v1.HttpListenerOption { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.HttpListenerOption) + return ret0 +} + +// List indicates an expected call of List. +func (mr *MockHttpListenerOptionSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockHttpListenerOptionSet)(nil).List), filterResource...) +} + +// Map mocks base method. +func (m *MockHttpListenerOptionSet) Map() map[string]*v1.HttpListenerOption { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.HttpListenerOption) + return ret0 +} + +// Map indicates an expected call of Map. +func (mr *MockHttpListenerOptionSetMockRecorder) Map() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockHttpListenerOptionSet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockHttpListenerOptionSet) Union(set v1sets.HttpListenerOptionSet) v1sets.HttpListenerOptionSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.HttpListenerOptionSet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockHttpListenerOptionSetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockHttpListenerOptionSet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockHttpListenerOptionSet) UnsortedList(filterResource ...func(*v1.HttpListenerOption) bool) []*v1.HttpListenerOption { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.HttpListenerOption) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockHttpListenerOptionSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockHttpListenerOptionSet)(nil).UnsortedList), filterResource...) +} + +// MockListenerOptionSet is a mock of ListenerOptionSet interface. +type MockListenerOptionSet struct { + ctrl *gomock.Controller + recorder *MockListenerOptionSetMockRecorder +} + +// MockListenerOptionSetMockRecorder is the mock recorder for MockListenerOptionSet. +type MockListenerOptionSetMockRecorder struct { + mock *MockListenerOptionSet +} + +// NewMockListenerOptionSet creates a new mock instance. +func NewMockListenerOptionSet(ctrl *gomock.Controller) *MockListenerOptionSet { + mock := &MockListenerOptionSet{ctrl: ctrl} + mock.recorder = &MockListenerOptionSetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockListenerOptionSet) EXPECT() *MockListenerOptionSetMockRecorder { + return m.recorder +} + +// Clone mocks base method. +func (m *MockListenerOptionSet) Clone() v1sets.ListenerOptionSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.ListenerOptionSet) + return ret0 +} + +// Clone indicates an expected call of Clone. +func (mr *MockListenerOptionSetMockRecorder) Clone() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockListenerOptionSet)(nil).Clone)) +} + +// Delete mocks base method. +func (m *MockListenerOptionSet) Delete(listenerOption ezkube.ResourceId) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Delete", listenerOption) +} + +// Delete indicates an expected call of Delete. +func (mr *MockListenerOptionSetMockRecorder) Delete(listenerOption interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockListenerOptionSet)(nil).Delete), listenerOption) +} + +// Delta mocks base method. +func (m *MockListenerOptionSet) Delta(newSet v1sets.ListenerOptionSet) sets.ResourceDelta { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) + return ret0 +} + +// Delta indicates an expected call of Delta. +func (mr *MockListenerOptionSetMockRecorder) Delta(newSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockListenerOptionSet)(nil).Delta), newSet) +} + +// Difference mocks base method. +func (m *MockListenerOptionSet) Difference(set v1sets.ListenerOptionSet) v1sets.ListenerOptionSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.ListenerOptionSet) + return ret0 +} + +// Difference indicates an expected call of Difference. +func (mr *MockListenerOptionSetMockRecorder) Difference(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockListenerOptionSet)(nil).Difference), set) +} + +// Equal mocks base method. +func (m *MockListenerOptionSet) Equal(listenerOptionSet v1sets.ListenerOptionSet) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Equal", listenerOptionSet) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Equal indicates an expected call of Equal. +func (mr *MockListenerOptionSetMockRecorder) Equal(listenerOptionSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockListenerOptionSet)(nil).Equal), listenerOptionSet) +} + +// Find mocks base method. +func (m *MockListenerOptionSet) Find(id ezkube.ResourceId) (*v1.ListenerOption, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.ListenerOption) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Find indicates an expected call of Find. +func (mr *MockListenerOptionSetMockRecorder) Find(id interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockListenerOptionSet)(nil).Find), id) +} + +// Generic mocks base method. +func (m *MockListenerOptionSet) Generic() sets.ResourceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 +} + +// Generic indicates an expected call of Generic. +func (mr *MockListenerOptionSetMockRecorder) Generic() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockListenerOptionSet)(nil).Generic)) +} + +// Has mocks base method. +func (m *MockListenerOptionSet) Has(listenerOption ezkube.ResourceId) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Has", listenerOption) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Has indicates an expected call of Has. +func (mr *MockListenerOptionSetMockRecorder) Has(listenerOption interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockListenerOptionSet)(nil).Has), listenerOption) +} + +// Insert mocks base method. +func (m *MockListenerOptionSet) Insert(listenerOption ...*v1.ListenerOption) { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range listenerOption { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) +} + +// Insert indicates an expected call of Insert. +func (mr *MockListenerOptionSetMockRecorder) Insert(listenerOption ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockListenerOptionSet)(nil).Insert), listenerOption...) +} + +// Intersection mocks base method. +func (m *MockListenerOptionSet) Intersection(set v1sets.ListenerOptionSet) v1sets.ListenerOptionSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Intersection", set) + ret0, _ := ret[0].(v1sets.ListenerOptionSet) + return ret0 +} + +// Intersection indicates an expected call of Intersection. +func (mr *MockListenerOptionSetMockRecorder) Intersection(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockListenerOptionSet)(nil).Intersection), set) +} + +// Keys mocks base method. +func (m *MockListenerOptionSet) Keys() sets0.String { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 +} + +// Keys indicates an expected call of Keys. +func (mr *MockListenerOptionSetMockRecorder) Keys() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockListenerOptionSet)(nil).Keys)) +} + +// Length mocks base method. +func (m *MockListenerOptionSet) Length() int { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Length") + ret0, _ := ret[0].(int) + return ret0 +} + +// Length indicates an expected call of Length. +func (mr *MockListenerOptionSetMockRecorder) Length() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockListenerOptionSet)(nil).Length)) +} + +// List mocks base method. +func (m *MockListenerOptionSet) List(filterResource ...func(*v1.ListenerOption) bool) []*v1.ListenerOption { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.ListenerOption) + return ret0 +} + +// List indicates an expected call of List. +func (mr *MockListenerOptionSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockListenerOptionSet)(nil).List), filterResource...) +} + +// Map mocks base method. +func (m *MockListenerOptionSet) Map() map[string]*v1.ListenerOption { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.ListenerOption) + return ret0 +} + +// Map indicates an expected call of Map. +func (mr *MockListenerOptionSetMockRecorder) Map() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockListenerOptionSet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockListenerOptionSet) Union(set v1sets.ListenerOptionSet) v1sets.ListenerOptionSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.ListenerOptionSet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockListenerOptionSetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockListenerOptionSet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockListenerOptionSet) UnsortedList(filterResource ...func(*v1.ListenerOption) bool) []*v1.ListenerOption { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.ListenerOption) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockListenerOptionSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockListenerOptionSet)(nil).UnsortedList), filterResource...) +} + +// MockMatchableHttpGatewaySet is a mock of MatchableHttpGatewaySet interface. +type MockMatchableHttpGatewaySet struct { + ctrl *gomock.Controller + recorder *MockMatchableHttpGatewaySetMockRecorder +} + +// MockMatchableHttpGatewaySetMockRecorder is the mock recorder for MockMatchableHttpGatewaySet. +type MockMatchableHttpGatewaySetMockRecorder struct { + mock *MockMatchableHttpGatewaySet +} + +// NewMockMatchableHttpGatewaySet creates a new mock instance. +func NewMockMatchableHttpGatewaySet(ctrl *gomock.Controller) *MockMatchableHttpGatewaySet { + mock := &MockMatchableHttpGatewaySet{ctrl: ctrl} + mock.recorder = &MockMatchableHttpGatewaySetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMatchableHttpGatewaySet) EXPECT() *MockMatchableHttpGatewaySetMockRecorder { + return m.recorder +} + +// Clone mocks base method. +func (m *MockMatchableHttpGatewaySet) Clone() v1sets.MatchableHttpGatewaySet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.MatchableHttpGatewaySet) + return ret0 +} + +// Clone indicates an expected call of Clone. +func (mr *MockMatchableHttpGatewaySetMockRecorder) Clone() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockMatchableHttpGatewaySet)(nil).Clone)) +} + +// Delete mocks base method. +func (m *MockMatchableHttpGatewaySet) Delete(matchableHttpGateway ezkube.ResourceId) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Delete", matchableHttpGateway) +} + +// Delete indicates an expected call of Delete. +func (mr *MockMatchableHttpGatewaySetMockRecorder) Delete(matchableHttpGateway interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockMatchableHttpGatewaySet)(nil).Delete), matchableHttpGateway) +} + +// Delta mocks base method. +func (m *MockMatchableHttpGatewaySet) Delta(newSet v1sets.MatchableHttpGatewaySet) sets.ResourceDelta { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) + return ret0 +} + +// Delta indicates an expected call of Delta. +func (mr *MockMatchableHttpGatewaySetMockRecorder) Delta(newSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockMatchableHttpGatewaySet)(nil).Delta), newSet) +} + +// Difference mocks base method. +func (m *MockMatchableHttpGatewaySet) Difference(set v1sets.MatchableHttpGatewaySet) v1sets.MatchableHttpGatewaySet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.MatchableHttpGatewaySet) + return ret0 +} + +// Difference indicates an expected call of Difference. +func (mr *MockMatchableHttpGatewaySetMockRecorder) Difference(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockMatchableHttpGatewaySet)(nil).Difference), set) +} + +// Equal mocks base method. +func (m *MockMatchableHttpGatewaySet) Equal(matchableHttpGatewaySet v1sets.MatchableHttpGatewaySet) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Equal", matchableHttpGatewaySet) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Equal indicates an expected call of Equal. +func (mr *MockMatchableHttpGatewaySetMockRecorder) Equal(matchableHttpGatewaySet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockMatchableHttpGatewaySet)(nil).Equal), matchableHttpGatewaySet) +} + +// Find mocks base method. +func (m *MockMatchableHttpGatewaySet) Find(id ezkube.ResourceId) (*v1.MatchableHttpGateway, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.MatchableHttpGateway) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Find indicates an expected call of Find. +func (mr *MockMatchableHttpGatewaySetMockRecorder) Find(id interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockMatchableHttpGatewaySet)(nil).Find), id) +} + +// Generic mocks base method. +func (m *MockMatchableHttpGatewaySet) Generic() sets.ResourceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 +} + +// Generic indicates an expected call of Generic. +func (mr *MockMatchableHttpGatewaySetMockRecorder) Generic() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockMatchableHttpGatewaySet)(nil).Generic)) +} + +// Has mocks base method. +func (m *MockMatchableHttpGatewaySet) Has(matchableHttpGateway ezkube.ResourceId) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Has", matchableHttpGateway) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Has indicates an expected call of Has. +func (mr *MockMatchableHttpGatewaySetMockRecorder) Has(matchableHttpGateway interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockMatchableHttpGatewaySet)(nil).Has), matchableHttpGateway) +} + +// Insert mocks base method. +func (m *MockMatchableHttpGatewaySet) Insert(matchableHttpGateway ...*v1.MatchableHttpGateway) { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range matchableHttpGateway { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) +} + +// Insert indicates an expected call of Insert. +func (mr *MockMatchableHttpGatewaySetMockRecorder) Insert(matchableHttpGateway ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockMatchableHttpGatewaySet)(nil).Insert), matchableHttpGateway...) +} + +// Intersection mocks base method. +func (m *MockMatchableHttpGatewaySet) Intersection(set v1sets.MatchableHttpGatewaySet) v1sets.MatchableHttpGatewaySet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Intersection", set) + ret0, _ := ret[0].(v1sets.MatchableHttpGatewaySet) + return ret0 +} + +// Intersection indicates an expected call of Intersection. +func (mr *MockMatchableHttpGatewaySetMockRecorder) Intersection(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockMatchableHttpGatewaySet)(nil).Intersection), set) +} + +// Keys mocks base method. +func (m *MockMatchableHttpGatewaySet) Keys() sets0.String { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 +} + +// Keys indicates an expected call of Keys. +func (mr *MockMatchableHttpGatewaySetMockRecorder) Keys() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockMatchableHttpGatewaySet)(nil).Keys)) +} + +// Length mocks base method. +func (m *MockMatchableHttpGatewaySet) Length() int { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Length") + ret0, _ := ret[0].(int) + return ret0 +} + +// Length indicates an expected call of Length. +func (mr *MockMatchableHttpGatewaySetMockRecorder) Length() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockMatchableHttpGatewaySet)(nil).Length)) +} + +// List mocks base method. +func (m *MockMatchableHttpGatewaySet) List(filterResource ...func(*v1.MatchableHttpGateway) bool) []*v1.MatchableHttpGateway { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.MatchableHttpGateway) + return ret0 +} + +// List indicates an expected call of List. +func (mr *MockMatchableHttpGatewaySetMockRecorder) List(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockMatchableHttpGatewaySet)(nil).List), filterResource...) +} + +// Map mocks base method. +func (m *MockMatchableHttpGatewaySet) Map() map[string]*v1.MatchableHttpGateway { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.MatchableHttpGateway) + return ret0 +} + +// Map indicates an expected call of Map. +func (mr *MockMatchableHttpGatewaySetMockRecorder) Map() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockMatchableHttpGatewaySet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockMatchableHttpGatewaySet) Union(set v1sets.MatchableHttpGatewaySet) v1sets.MatchableHttpGatewaySet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.MatchableHttpGatewaySet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockMatchableHttpGatewaySetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockMatchableHttpGatewaySet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockMatchableHttpGatewaySet) UnsortedList(filterResource ...func(*v1.MatchableHttpGateway) bool) []*v1.MatchableHttpGateway { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.MatchableHttpGateway) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockMatchableHttpGatewaySetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockMatchableHttpGatewaySet)(nil).UnsortedList), filterResource...) +} + +// MockMatchableTcpGatewaySet is a mock of MatchableTcpGatewaySet interface. +type MockMatchableTcpGatewaySet struct { + ctrl *gomock.Controller + recorder *MockMatchableTcpGatewaySetMockRecorder +} + +// MockMatchableTcpGatewaySetMockRecorder is the mock recorder for MockMatchableTcpGatewaySet. +type MockMatchableTcpGatewaySetMockRecorder struct { + mock *MockMatchableTcpGatewaySet +} + +// NewMockMatchableTcpGatewaySet creates a new mock instance. +func NewMockMatchableTcpGatewaySet(ctrl *gomock.Controller) *MockMatchableTcpGatewaySet { + mock := &MockMatchableTcpGatewaySet{ctrl: ctrl} + mock.recorder = &MockMatchableTcpGatewaySetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMatchableTcpGatewaySet) EXPECT() *MockMatchableTcpGatewaySetMockRecorder { + return m.recorder +} + +// Clone mocks base method. +func (m *MockMatchableTcpGatewaySet) Clone() v1sets.MatchableTcpGatewaySet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.MatchableTcpGatewaySet) + return ret0 +} + +// Clone indicates an expected call of Clone. +func (mr *MockMatchableTcpGatewaySetMockRecorder) Clone() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockMatchableTcpGatewaySet)(nil).Clone)) +} + +// Delete mocks base method. +func (m *MockMatchableTcpGatewaySet) Delete(matchableTcpGateway ezkube.ResourceId) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Delete", matchableTcpGateway) +} + +// Delete indicates an expected call of Delete. +func (mr *MockMatchableTcpGatewaySetMockRecorder) Delete(matchableTcpGateway interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockMatchableTcpGatewaySet)(nil).Delete), matchableTcpGateway) +} + +// Delta mocks base method. +func (m *MockMatchableTcpGatewaySet) Delta(newSet v1sets.MatchableTcpGatewaySet) sets.ResourceDelta { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) + return ret0 +} + +// Delta indicates an expected call of Delta. +func (mr *MockMatchableTcpGatewaySetMockRecorder) Delta(newSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockMatchableTcpGatewaySet)(nil).Delta), newSet) +} + +// Difference mocks base method. +func (m *MockMatchableTcpGatewaySet) Difference(set v1sets.MatchableTcpGatewaySet) v1sets.MatchableTcpGatewaySet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.MatchableTcpGatewaySet) + return ret0 +} + +// Difference indicates an expected call of Difference. +func (mr *MockMatchableTcpGatewaySetMockRecorder) Difference(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockMatchableTcpGatewaySet)(nil).Difference), set) +} + +// Equal mocks base method. +func (m *MockMatchableTcpGatewaySet) Equal(matchableTcpGatewaySet v1sets.MatchableTcpGatewaySet) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Equal", matchableTcpGatewaySet) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Equal indicates an expected call of Equal. +func (mr *MockMatchableTcpGatewaySetMockRecorder) Equal(matchableTcpGatewaySet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockMatchableTcpGatewaySet)(nil).Equal), matchableTcpGatewaySet) +} + +// Find mocks base method. +func (m *MockMatchableTcpGatewaySet) Find(id ezkube.ResourceId) (*v1.MatchableTcpGateway, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.MatchableTcpGateway) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Find indicates an expected call of Find. +func (mr *MockMatchableTcpGatewaySetMockRecorder) Find(id interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockMatchableTcpGatewaySet)(nil).Find), id) +} + +// Generic mocks base method. +func (m *MockMatchableTcpGatewaySet) Generic() sets.ResourceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 +} + +// Generic indicates an expected call of Generic. +func (mr *MockMatchableTcpGatewaySetMockRecorder) Generic() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockMatchableTcpGatewaySet)(nil).Generic)) +} + +// Has mocks base method. +func (m *MockMatchableTcpGatewaySet) Has(matchableTcpGateway ezkube.ResourceId) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Has", matchableTcpGateway) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Has indicates an expected call of Has. +func (mr *MockMatchableTcpGatewaySetMockRecorder) Has(matchableTcpGateway interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockMatchableTcpGatewaySet)(nil).Has), matchableTcpGateway) +} + +// Insert mocks base method. +func (m *MockMatchableTcpGatewaySet) Insert(matchableTcpGateway ...*v1.MatchableTcpGateway) { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range matchableTcpGateway { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) +} + +// Insert indicates an expected call of Insert. +func (mr *MockMatchableTcpGatewaySetMockRecorder) Insert(matchableTcpGateway ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockMatchableTcpGatewaySet)(nil).Insert), matchableTcpGateway...) +} + +// Intersection mocks base method. +func (m *MockMatchableTcpGatewaySet) Intersection(set v1sets.MatchableTcpGatewaySet) v1sets.MatchableTcpGatewaySet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Intersection", set) + ret0, _ := ret[0].(v1sets.MatchableTcpGatewaySet) + return ret0 +} + +// Intersection indicates an expected call of Intersection. +func (mr *MockMatchableTcpGatewaySetMockRecorder) Intersection(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockMatchableTcpGatewaySet)(nil).Intersection), set) +} + +// Keys mocks base method. +func (m *MockMatchableTcpGatewaySet) Keys() sets0.String { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 +} + +// Keys indicates an expected call of Keys. +func (mr *MockMatchableTcpGatewaySetMockRecorder) Keys() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockMatchableTcpGatewaySet)(nil).Keys)) +} + +// Length mocks base method. +func (m *MockMatchableTcpGatewaySet) Length() int { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Length") + ret0, _ := ret[0].(int) + return ret0 +} + +// Length indicates an expected call of Length. +func (mr *MockMatchableTcpGatewaySetMockRecorder) Length() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockMatchableTcpGatewaySet)(nil).Length)) +} + +// List mocks base method. +func (m *MockMatchableTcpGatewaySet) List(filterResource ...func(*v1.MatchableTcpGateway) bool) []*v1.MatchableTcpGateway { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.MatchableTcpGateway) + return ret0 +} + +// List indicates an expected call of List. +func (mr *MockMatchableTcpGatewaySetMockRecorder) List(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockMatchableTcpGatewaySet)(nil).List), filterResource...) +} + +// Map mocks base method. +func (m *MockMatchableTcpGatewaySet) Map() map[string]*v1.MatchableTcpGateway { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.MatchableTcpGateway) + return ret0 +} + +// Map indicates an expected call of Map. +func (mr *MockMatchableTcpGatewaySetMockRecorder) Map() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockMatchableTcpGatewaySet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockMatchableTcpGatewaySet) Union(set v1sets.MatchableTcpGatewaySet) v1sets.MatchableTcpGatewaySet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.MatchableTcpGatewaySet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockMatchableTcpGatewaySetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockMatchableTcpGatewaySet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockMatchableTcpGatewaySet) UnsortedList(filterResource ...func(*v1.MatchableTcpGateway) bool) []*v1.MatchableTcpGateway { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.MatchableTcpGateway) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockMatchableTcpGatewaySetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockMatchableTcpGatewaySet)(nil).UnsortedList), filterResource...) +} + +// MockRouteOptionSet is a mock of RouteOptionSet interface. +type MockRouteOptionSet struct { + ctrl *gomock.Controller + recorder *MockRouteOptionSetMockRecorder +} + +// MockRouteOptionSetMockRecorder is the mock recorder for MockRouteOptionSet. +type MockRouteOptionSetMockRecorder struct { + mock *MockRouteOptionSet +} + +// NewMockRouteOptionSet creates a new mock instance. +func NewMockRouteOptionSet(ctrl *gomock.Controller) *MockRouteOptionSet { + mock := &MockRouteOptionSet{ctrl: ctrl} + mock.recorder = &MockRouteOptionSetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockRouteOptionSet) EXPECT() *MockRouteOptionSetMockRecorder { + return m.recorder +} + +// Clone mocks base method. +func (m *MockRouteOptionSet) Clone() v1sets.RouteOptionSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.RouteOptionSet) + return ret0 +} + +// Clone indicates an expected call of Clone. +func (mr *MockRouteOptionSetMockRecorder) Clone() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockRouteOptionSet)(nil).Clone)) +} + +// Delete mocks base method. +func (m *MockRouteOptionSet) Delete(routeOption ezkube.ResourceId) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Delete", routeOption) +} + +// Delete indicates an expected call of Delete. +func (mr *MockRouteOptionSetMockRecorder) Delete(routeOption interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockRouteOptionSet)(nil).Delete), routeOption) +} + +// Delta mocks base method. +func (m *MockRouteOptionSet) Delta(newSet v1sets.RouteOptionSet) sets.ResourceDelta { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) + return ret0 +} + +// Delta indicates an expected call of Delta. +func (mr *MockRouteOptionSetMockRecorder) Delta(newSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockRouteOptionSet)(nil).Delta), newSet) +} + +// Difference mocks base method. +func (m *MockRouteOptionSet) Difference(set v1sets.RouteOptionSet) v1sets.RouteOptionSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.RouteOptionSet) + return ret0 +} + +// Difference indicates an expected call of Difference. +func (mr *MockRouteOptionSetMockRecorder) Difference(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockRouteOptionSet)(nil).Difference), set) +} + +// Equal mocks base method. +func (m *MockRouteOptionSet) Equal(routeOptionSet v1sets.RouteOptionSet) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Equal", routeOptionSet) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Equal indicates an expected call of Equal. +func (mr *MockRouteOptionSetMockRecorder) Equal(routeOptionSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockRouteOptionSet)(nil).Equal), routeOptionSet) +} + +// Find mocks base method. +func (m *MockRouteOptionSet) Find(id ezkube.ResourceId) (*v1.RouteOption, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.RouteOption) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Find indicates an expected call of Find. +func (mr *MockRouteOptionSetMockRecorder) Find(id interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockRouteOptionSet)(nil).Find), id) +} + +// Generic mocks base method. +func (m *MockRouteOptionSet) Generic() sets.ResourceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 +} + +// Generic indicates an expected call of Generic. +func (mr *MockRouteOptionSetMockRecorder) Generic() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockRouteOptionSet)(nil).Generic)) +} + +// Has mocks base method. +func (m *MockRouteOptionSet) Has(routeOption ezkube.ResourceId) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Has", routeOption) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Has indicates an expected call of Has. +func (mr *MockRouteOptionSetMockRecorder) Has(routeOption interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockRouteOptionSet)(nil).Has), routeOption) +} + +// Insert mocks base method. +func (m *MockRouteOptionSet) Insert(routeOption ...*v1.RouteOption) { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range routeOption { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) +} + +// Insert indicates an expected call of Insert. +func (mr *MockRouteOptionSetMockRecorder) Insert(routeOption ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockRouteOptionSet)(nil).Insert), routeOption...) +} + +// Intersection mocks base method. +func (m *MockRouteOptionSet) Intersection(set v1sets.RouteOptionSet) v1sets.RouteOptionSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Intersection", set) + ret0, _ := ret[0].(v1sets.RouteOptionSet) + return ret0 +} + +// Intersection indicates an expected call of Intersection. +func (mr *MockRouteOptionSetMockRecorder) Intersection(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockRouteOptionSet)(nil).Intersection), set) +} + +// Keys mocks base method. +func (m *MockRouteOptionSet) Keys() sets0.String { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 +} + +// Keys indicates an expected call of Keys. +func (mr *MockRouteOptionSetMockRecorder) Keys() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockRouteOptionSet)(nil).Keys)) +} + +// Length mocks base method. +func (m *MockRouteOptionSet) Length() int { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Length") + ret0, _ := ret[0].(int) + return ret0 +} + +// Length indicates an expected call of Length. +func (mr *MockRouteOptionSetMockRecorder) Length() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockRouteOptionSet)(nil).Length)) +} + +// List mocks base method. +func (m *MockRouteOptionSet) List(filterResource ...func(*v1.RouteOption) bool) []*v1.RouteOption { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.RouteOption) + return ret0 +} + +// List indicates an expected call of List. +func (mr *MockRouteOptionSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockRouteOptionSet)(nil).List), filterResource...) +} + +// Map mocks base method. +func (m *MockRouteOptionSet) Map() map[string]*v1.RouteOption { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.RouteOption) + return ret0 +} + +// Map indicates an expected call of Map. +func (mr *MockRouteOptionSetMockRecorder) Map() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockRouteOptionSet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockRouteOptionSet) Union(set v1sets.RouteOptionSet) v1sets.RouteOptionSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.RouteOptionSet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockRouteOptionSetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockRouteOptionSet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockRouteOptionSet) UnsortedList(filterResource ...func(*v1.RouteOption) bool) []*v1.RouteOption { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.RouteOption) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockRouteOptionSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockRouteOptionSet)(nil).UnsortedList), filterResource...) +} + +// MockRouteTableSet is a mock of RouteTableSet interface. +type MockRouteTableSet struct { + ctrl *gomock.Controller + recorder *MockRouteTableSetMockRecorder +} + +// MockRouteTableSetMockRecorder is the mock recorder for MockRouteTableSet. +type MockRouteTableSetMockRecorder struct { + mock *MockRouteTableSet +} + +// NewMockRouteTableSet creates a new mock instance. +func NewMockRouteTableSet(ctrl *gomock.Controller) *MockRouteTableSet { + mock := &MockRouteTableSet{ctrl: ctrl} + mock.recorder = &MockRouteTableSetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockRouteTableSet) EXPECT() *MockRouteTableSetMockRecorder { + return m.recorder +} + +// Clone mocks base method. +func (m *MockRouteTableSet) Clone() v1sets.RouteTableSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.RouteTableSet) + return ret0 +} + +// Clone indicates an expected call of Clone. +func (mr *MockRouteTableSetMockRecorder) Clone() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockRouteTableSet)(nil).Clone)) +} + +// Delete mocks base method. +func (m *MockRouteTableSet) Delete(routeTable ezkube.ResourceId) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Delete", routeTable) } -// Insert mocks base method +// Delete indicates an expected call of Delete. +func (mr *MockRouteTableSetMockRecorder) Delete(routeTable interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockRouteTableSet)(nil).Delete), routeTable) +} + +// Delta mocks base method. +func (m *MockRouteTableSet) Delta(newSet v1sets.RouteTableSet) sets.ResourceDelta { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) + return ret0 +} + +// Delta indicates an expected call of Delta. +func (mr *MockRouteTableSetMockRecorder) Delta(newSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockRouteTableSet)(nil).Delta), newSet) +} + +// Difference mocks base method. +func (m *MockRouteTableSet) Difference(set v1sets.RouteTableSet) v1sets.RouteTableSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.RouteTableSet) + return ret0 +} + +// Difference indicates an expected call of Difference. +func (mr *MockRouteTableSetMockRecorder) Difference(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockRouteTableSet)(nil).Difference), set) +} + +// Equal mocks base method. +func (m *MockRouteTableSet) Equal(routeTableSet v1sets.RouteTableSet) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Equal", routeTableSet) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Equal indicates an expected call of Equal. +func (mr *MockRouteTableSetMockRecorder) Equal(routeTableSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockRouteTableSet)(nil).Equal), routeTableSet) +} + +// Find mocks base method. +func (m *MockRouteTableSet) Find(id ezkube.ResourceId) (*v1.RouteTable, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.RouteTable) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Find indicates an expected call of Find. +func (mr *MockRouteTableSetMockRecorder) Find(id interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockRouteTableSet)(nil).Find), id) +} + +// Generic mocks base method. +func (m *MockRouteTableSet) Generic() sets.ResourceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 +} + +// Generic indicates an expected call of Generic. +func (mr *MockRouteTableSetMockRecorder) Generic() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockRouteTableSet)(nil).Generic)) +} + +// Has mocks base method. +func (m *MockRouteTableSet) Has(routeTable ezkube.ResourceId) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Has", routeTable) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Has indicates an expected call of Has. +func (mr *MockRouteTableSetMockRecorder) Has(routeTable interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockRouteTableSet)(nil).Has), routeTable) +} + +// Insert mocks base method. func (m *MockRouteTableSet) Insert(routeTable ...*v1.RouteTable) { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range routeTable { - varargs = append(varargs, a) - } - m.ctrl.Call(m, "Insert", varargs...) + varargs := []interface{}{} + for _, a := range routeTable { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) +} + +// Insert indicates an expected call of Insert. +func (mr *MockRouteTableSetMockRecorder) Insert(routeTable ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockRouteTableSet)(nil).Insert), routeTable...) +} + +// Intersection mocks base method. +func (m *MockRouteTableSet) Intersection(set v1sets.RouteTableSet) v1sets.RouteTableSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Intersection", set) + ret0, _ := ret[0].(v1sets.RouteTableSet) + return ret0 +} + +// Intersection indicates an expected call of Intersection. +func (mr *MockRouteTableSetMockRecorder) Intersection(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockRouteTableSet)(nil).Intersection), set) +} + +// Keys mocks base method. +func (m *MockRouteTableSet) Keys() sets0.String { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 +} + +// Keys indicates an expected call of Keys. +func (mr *MockRouteTableSetMockRecorder) Keys() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockRouteTableSet)(nil).Keys)) +} + +// Length mocks base method. +func (m *MockRouteTableSet) Length() int { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Length") + ret0, _ := ret[0].(int) + return ret0 +} + +// Length indicates an expected call of Length. +func (mr *MockRouteTableSetMockRecorder) Length() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockRouteTableSet)(nil).Length)) +} + +// List mocks base method. +func (m *MockRouteTableSet) List(filterResource ...func(*v1.RouteTable) bool) []*v1.RouteTable { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.RouteTable) + return ret0 +} + +// List indicates an expected call of List. +func (mr *MockRouteTableSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockRouteTableSet)(nil).List), filterResource...) +} + +// Map mocks base method. +func (m *MockRouteTableSet) Map() map[string]*v1.RouteTable { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.RouteTable) + return ret0 +} + +// Map indicates an expected call of Map. +func (mr *MockRouteTableSetMockRecorder) Map() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockRouteTableSet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockRouteTableSet) Union(set v1sets.RouteTableSet) v1sets.RouteTableSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.RouteTableSet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockRouteTableSetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockRouteTableSet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockRouteTableSet) UnsortedList(filterResource ...func(*v1.RouteTable) bool) []*v1.RouteTable { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.RouteTable) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockRouteTableSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockRouteTableSet)(nil).UnsortedList), filterResource...) +} + +// MockVirtualServiceSet is a mock of VirtualServiceSet interface. +type MockVirtualServiceSet struct { + ctrl *gomock.Controller + recorder *MockVirtualServiceSetMockRecorder +} + +// MockVirtualServiceSetMockRecorder is the mock recorder for MockVirtualServiceSet. +type MockVirtualServiceSetMockRecorder struct { + mock *MockVirtualServiceSet +} + +// NewMockVirtualServiceSet creates a new mock instance. +func NewMockVirtualServiceSet(ctrl *gomock.Controller) *MockVirtualServiceSet { + mock := &MockVirtualServiceSet{ctrl: ctrl} + mock.recorder = &MockVirtualServiceSetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockVirtualServiceSet) EXPECT() *MockVirtualServiceSetMockRecorder { + return m.recorder +} + +// Clone mocks base method. +func (m *MockVirtualServiceSet) Clone() v1sets.VirtualServiceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.VirtualServiceSet) + return ret0 +} + +// Clone indicates an expected call of Clone. +func (mr *MockVirtualServiceSetMockRecorder) Clone() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockVirtualServiceSet)(nil).Clone)) +} + +// Delete mocks base method. +func (m *MockVirtualServiceSet) Delete(virtualService ezkube.ResourceId) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Delete", virtualService) +} + +// Delete indicates an expected call of Delete. +func (mr *MockVirtualServiceSetMockRecorder) Delete(virtualService interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockVirtualServiceSet)(nil).Delete), virtualService) +} + +// Delta mocks base method. +func (m *MockVirtualServiceSet) Delta(newSet v1sets.VirtualServiceSet) sets.ResourceDelta { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) + return ret0 +} + +// Delta indicates an expected call of Delta. +func (mr *MockVirtualServiceSetMockRecorder) Delta(newSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockVirtualServiceSet)(nil).Delta), newSet) +} + +// Difference mocks base method. +func (m *MockVirtualServiceSet) Difference(set v1sets.VirtualServiceSet) v1sets.VirtualServiceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.VirtualServiceSet) + return ret0 +} + +// Difference indicates an expected call of Difference. +func (mr *MockVirtualServiceSetMockRecorder) Difference(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockVirtualServiceSet)(nil).Difference), set) +} + +// Equal mocks base method. +func (m *MockVirtualServiceSet) Equal(virtualServiceSet v1sets.VirtualServiceSet) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Equal", virtualServiceSet) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Equal indicates an expected call of Equal. +func (mr *MockVirtualServiceSetMockRecorder) Equal(virtualServiceSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockVirtualServiceSet)(nil).Equal), virtualServiceSet) +} + +// Find mocks base method. +func (m *MockVirtualServiceSet) Find(id ezkube.ResourceId) (*v1.VirtualService, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.VirtualService) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// Insert indicates an expected call of Insert -func (mr *MockRouteTableSetMockRecorder) Insert(routeTable ...interface{}) *gomock.Call { +// Find indicates an expected call of Find. +func (mr *MockVirtualServiceSetMockRecorder) Find(id interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockRouteTableSet)(nil).Insert), routeTable...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockVirtualServiceSet)(nil).Find), id) } -// Equal mocks base method -func (m *MockRouteTableSet) Equal(routeTableSet v1sets.RouteTableSet) bool { +// Generic mocks base method. +func (m *MockVirtualServiceSet) Generic() sets.ResourceSet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Equal", routeTableSet) - ret0, _ := ret[0].(bool) + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) return ret0 } -// Equal indicates an expected call of Equal -func (mr *MockRouteTableSetMockRecorder) Equal(routeTableSet interface{}) *gomock.Call { +// Generic indicates an expected call of Generic. +func (mr *MockVirtualServiceSetMockRecorder) Generic() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockRouteTableSet)(nil).Equal), routeTableSet) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockVirtualServiceSet)(nil).Generic)) } -// Has mocks base method -func (m *MockRouteTableSet) Has(routeTable ezkube.ResourceId) bool { +// Has mocks base method. +func (m *MockVirtualServiceSet) Has(virtualService ezkube.ResourceId) bool { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Has", routeTable) + ret := m.ctrl.Call(m, "Has", virtualService) ret0, _ := ret[0].(bool) return ret0 } -// Has indicates an expected call of Has -func (mr *MockRouteTableSetMockRecorder) Has(routeTable interface{}) *gomock.Call { +// Has indicates an expected call of Has. +func (mr *MockVirtualServiceSetMockRecorder) Has(virtualService interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockRouteTableSet)(nil).Has), routeTable) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockVirtualServiceSet)(nil).Has), virtualService) } -// Delete mocks base method -func (m *MockRouteTableSet) Delete(routeTable ezkube.ResourceId) { +// Insert mocks base method. +func (m *MockVirtualServiceSet) Insert(virtualService ...*v1.VirtualService) { m.ctrl.T.Helper() - m.ctrl.Call(m, "Delete", routeTable) + varargs := []interface{}{} + for _, a := range virtualService { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) } -// Delete indicates an expected call of Delete -func (mr *MockRouteTableSetMockRecorder) Delete(routeTable interface{}) *gomock.Call { +// Insert indicates an expected call of Insert. +func (mr *MockVirtualServiceSetMockRecorder) Insert(virtualService ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockRouteTableSet)(nil).Delete), routeTable) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockVirtualServiceSet)(nil).Insert), virtualService...) } -// Union mocks base method -func (m *MockRouteTableSet) Union(set v1sets.RouteTableSet) v1sets.RouteTableSet { +// Intersection mocks base method. +func (m *MockVirtualServiceSet) Intersection(set v1sets.VirtualServiceSet) v1sets.VirtualServiceSet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Union", set) - ret0, _ := ret[0].(v1sets.RouteTableSet) + ret := m.ctrl.Call(m, "Intersection", set) + ret0, _ := ret[0].(v1sets.VirtualServiceSet) return ret0 } -// Union indicates an expected call of Union -func (mr *MockRouteTableSetMockRecorder) Union(set interface{}) *gomock.Call { +// Intersection indicates an expected call of Intersection. +func (mr *MockVirtualServiceSetMockRecorder) Intersection(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockRouteTableSet)(nil).Union), set) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockVirtualServiceSet)(nil).Intersection), set) } -// Difference mocks base method -func (m *MockRouteTableSet) Difference(set v1sets.RouteTableSet) v1sets.RouteTableSet { +// Keys mocks base method. +func (m *MockVirtualServiceSet) Keys() sets0.String { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Difference", set) - ret0, _ := ret[0].(v1sets.RouteTableSet) + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) return ret0 } -// Difference indicates an expected call of Difference -func (mr *MockRouteTableSetMockRecorder) Difference(set interface{}) *gomock.Call { +// Keys indicates an expected call of Keys. +func (mr *MockVirtualServiceSetMockRecorder) Keys() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockRouteTableSet)(nil).Difference), set) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockVirtualServiceSet)(nil).Keys)) } -// Intersection mocks base method -func (m *MockRouteTableSet) Intersection(set v1sets.RouteTableSet) v1sets.RouteTableSet { +// Length mocks base method. +func (m *MockVirtualServiceSet) Length() int { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Intersection", set) - ret0, _ := ret[0].(v1sets.RouteTableSet) + ret := m.ctrl.Call(m, "Length") + ret0, _ := ret[0].(int) return ret0 } -// Intersection indicates an expected call of Intersection -func (mr *MockRouteTableSetMockRecorder) Intersection(set interface{}) *gomock.Call { +// Length indicates an expected call of Length. +func (mr *MockVirtualServiceSetMockRecorder) Length() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockRouteTableSet)(nil).Intersection), set) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockVirtualServiceSet)(nil).Length)) } -// Find mocks base method -func (m *MockRouteTableSet) Find(id ezkube.ResourceId) (*v1.RouteTable, error) { +// List mocks base method. +func (m *MockVirtualServiceSet) List(filterResource ...func(*v1.VirtualService) bool) []*v1.VirtualService { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Find", id) - ret0, _ := ret[0].(*v1.RouteTable) - ret1, _ := ret[1].(error) - return ret0, ret1 + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.VirtualService) + return ret0 } -// Find indicates an expected call of Find -func (mr *MockRouteTableSetMockRecorder) Find(id interface{}) *gomock.Call { +// List indicates an expected call of List. +func (mr *MockVirtualServiceSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockRouteTableSet)(nil).Find), id) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockVirtualServiceSet)(nil).List), filterResource...) } -// Length mocks base method -func (m *MockRouteTableSet) Length() int { +// Map mocks base method. +func (m *MockVirtualServiceSet) Map() map[string]*v1.VirtualService { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Length") - ret0, _ := ret[0].(int) + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.VirtualService) return ret0 } -// Length indicates an expected call of Length -func (mr *MockRouteTableSetMockRecorder) Length() *gomock.Call { +// Map indicates an expected call of Map. +func (mr *MockVirtualServiceSetMockRecorder) Map() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockRouteTableSet)(nil).Length)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockVirtualServiceSet)(nil).Map)) } -// Generic mocks base method -func (m *MockRouteTableSet) Generic() sets.ResourceSet { +// Union mocks base method. +func (m *MockVirtualServiceSet) Union(set v1sets.VirtualServiceSet) v1sets.VirtualServiceSet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Generic") - ret0, _ := ret[0].(sets.ResourceSet) + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.VirtualServiceSet) return ret0 } -// Generic indicates an expected call of Generic -func (mr *MockRouteTableSetMockRecorder) Generic() *gomock.Call { +// Union indicates an expected call of Union. +func (mr *MockVirtualServiceSetMockRecorder) Union(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockRouteTableSet)(nil).Generic)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockVirtualServiceSet)(nil).Union), set) } -// Delta mocks base method -func (m *MockRouteTableSet) Delta(newSet v1sets.RouteTableSet) sets.ResourceDelta { +// UnsortedList mocks base method. +func (m *MockVirtualServiceSet) UnsortedList(filterResource ...func(*v1.VirtualService) bool) []*v1.VirtualService { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Delta", newSet) - ret0, _ := ret[0].(sets.ResourceDelta) + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.VirtualService) return ret0 } -// Delta indicates an expected call of Delta -func (mr *MockRouteTableSetMockRecorder) Delta(newSet interface{}) *gomock.Call { +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockVirtualServiceSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockRouteTableSet)(nil).Delta), newSet) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockVirtualServiceSet)(nil).UnsortedList), filterResource...) } -// MockVirtualServiceSet is a mock of VirtualServiceSet interface -type MockVirtualServiceSet struct { +// MockVirtualHostOptionSet is a mock of VirtualHostOptionSet interface. +type MockVirtualHostOptionSet struct { ctrl *gomock.Controller - recorder *MockVirtualServiceSetMockRecorder + recorder *MockVirtualHostOptionSetMockRecorder } -// MockVirtualServiceSetMockRecorder is the mock recorder for MockVirtualServiceSet -type MockVirtualServiceSetMockRecorder struct { - mock *MockVirtualServiceSet +// MockVirtualHostOptionSetMockRecorder is the mock recorder for MockVirtualHostOptionSet. +type MockVirtualHostOptionSetMockRecorder struct { + mock *MockVirtualHostOptionSet } -// NewMockVirtualServiceSet creates a new mock instance -func NewMockVirtualServiceSet(ctrl *gomock.Controller) *MockVirtualServiceSet { - mock := &MockVirtualServiceSet{ctrl: ctrl} - mock.recorder = &MockVirtualServiceSetMockRecorder{mock} +// NewMockVirtualHostOptionSet creates a new mock instance. +func NewMockVirtualHostOptionSet(ctrl *gomock.Controller) *MockVirtualHostOptionSet { + mock := &MockVirtualHostOptionSet{ctrl: ctrl} + mock.recorder = &MockVirtualHostOptionSetMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use -func (m *MockVirtualServiceSet) EXPECT() *MockVirtualServiceSetMockRecorder { +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockVirtualHostOptionSet) EXPECT() *MockVirtualHostOptionSetMockRecorder { return m.recorder } -// Keys mocks base method -func (m *MockVirtualServiceSet) Keys() sets0.String { +// Clone mocks base method. +func (m *MockVirtualHostOptionSet) Clone() v1sets.VirtualHostOptionSet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Keys") - ret0, _ := ret[0].(sets0.String) + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.VirtualHostOptionSet) return ret0 } -// Keys indicates an expected call of Keys -func (mr *MockVirtualServiceSetMockRecorder) Keys() *gomock.Call { +// Clone indicates an expected call of Clone. +func (mr *MockVirtualHostOptionSetMockRecorder) Clone() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockVirtualServiceSet)(nil).Keys)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockVirtualHostOptionSet)(nil).Clone)) } -// List mocks base method -func (m *MockVirtualServiceSet) List(filterResource ...func(*v1.VirtualService) bool) []*v1.VirtualService { +// Delete mocks base method. +func (m *MockVirtualHostOptionSet) Delete(virtualHostOption ezkube.ResourceId) { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range filterResource { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "List", varargs...) - ret0, _ := ret[0].([]*v1.VirtualService) + m.ctrl.Call(m, "Delete", virtualHostOption) +} + +// Delete indicates an expected call of Delete. +func (mr *MockVirtualHostOptionSetMockRecorder) Delete(virtualHostOption interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockVirtualHostOptionSet)(nil).Delete), virtualHostOption) +} + +// Delta mocks base method. +func (m *MockVirtualHostOptionSet) Delta(newSet v1sets.VirtualHostOptionSet) sets.ResourceDelta { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) return ret0 } -// List indicates an expected call of List -func (mr *MockVirtualServiceSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { +// Delta indicates an expected call of Delta. +func (mr *MockVirtualHostOptionSetMockRecorder) Delta(newSet interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockVirtualServiceSet)(nil).List), filterResource...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockVirtualHostOptionSet)(nil).Delta), newSet) } -// UnsortedList mocks base method -func (m *MockVirtualServiceSet) UnsortedList(filterResource ...func(*v1.VirtualService) bool) []*v1.VirtualService { +// Difference mocks base method. +func (m *MockVirtualHostOptionSet) Difference(set v1sets.VirtualHostOptionSet) v1sets.VirtualHostOptionSet { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range filterResource { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "UnsortedList", varargs...) - ret0, _ := ret[0].([]*v1.VirtualService) + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.VirtualHostOptionSet) return ret0 } -// UnsortedList indicates an expected call of UnsortedList -func (mr *MockVirtualServiceSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { +// Difference indicates an expected call of Difference. +func (mr *MockVirtualHostOptionSetMockRecorder) Difference(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockVirtualServiceSet)(nil).UnsortedList), filterResource...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockVirtualHostOptionSet)(nil).Difference), set) } -// Map mocks base method -func (m *MockVirtualServiceSet) Map() map[string]*v1.VirtualService { +// Equal mocks base method. +func (m *MockVirtualHostOptionSet) Equal(virtualHostOptionSet v1sets.VirtualHostOptionSet) bool { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Map") - ret0, _ := ret[0].(map[string]*v1.VirtualService) + ret := m.ctrl.Call(m, "Equal", virtualHostOptionSet) + ret0, _ := ret[0].(bool) return ret0 } -// Map indicates an expected call of Map -func (mr *MockVirtualServiceSetMockRecorder) Map() *gomock.Call { +// Equal indicates an expected call of Equal. +func (mr *MockVirtualHostOptionSetMockRecorder) Equal(virtualHostOptionSet interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockVirtualServiceSet)(nil).Map)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockVirtualHostOptionSet)(nil).Equal), virtualHostOptionSet) } -// Insert mocks base method -func (m *MockVirtualServiceSet) Insert(virtualService ...*v1.VirtualService) { +// Find mocks base method. +func (m *MockVirtualHostOptionSet) Find(id ezkube.ResourceId) (*v1.VirtualHostOption, error) { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range virtualService { - varargs = append(varargs, a) - } - m.ctrl.Call(m, "Insert", varargs...) + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.VirtualHostOption) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// Insert indicates an expected call of Insert -func (mr *MockVirtualServiceSetMockRecorder) Insert(virtualService ...interface{}) *gomock.Call { +// Find indicates an expected call of Find. +func (mr *MockVirtualHostOptionSetMockRecorder) Find(id interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockVirtualServiceSet)(nil).Insert), virtualService...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockVirtualHostOptionSet)(nil).Find), id) } -// Equal mocks base method -func (m *MockVirtualServiceSet) Equal(virtualServiceSet v1sets.VirtualServiceSet) bool { +// Generic mocks base method. +func (m *MockVirtualHostOptionSet) Generic() sets.ResourceSet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Equal", virtualServiceSet) - ret0, _ := ret[0].(bool) + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) return ret0 } -// Equal indicates an expected call of Equal -func (mr *MockVirtualServiceSetMockRecorder) Equal(virtualServiceSet interface{}) *gomock.Call { +// Generic indicates an expected call of Generic. +func (mr *MockVirtualHostOptionSetMockRecorder) Generic() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockVirtualServiceSet)(nil).Equal), virtualServiceSet) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockVirtualHostOptionSet)(nil).Generic)) } -// Has mocks base method -func (m *MockVirtualServiceSet) Has(virtualService ezkube.ResourceId) bool { +// Has mocks base method. +func (m *MockVirtualHostOptionSet) Has(virtualHostOption ezkube.ResourceId) bool { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Has", virtualService) + ret := m.ctrl.Call(m, "Has", virtualHostOption) ret0, _ := ret[0].(bool) return ret0 } -// Has indicates an expected call of Has -func (mr *MockVirtualServiceSetMockRecorder) Has(virtualService interface{}) *gomock.Call { +// Has indicates an expected call of Has. +func (mr *MockVirtualHostOptionSetMockRecorder) Has(virtualHostOption interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockVirtualServiceSet)(nil).Has), virtualService) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockVirtualHostOptionSet)(nil).Has), virtualHostOption) } -// Delete mocks base method -func (m *MockVirtualServiceSet) Delete(virtualService ezkube.ResourceId) { +// Insert mocks base method. +func (m *MockVirtualHostOptionSet) Insert(virtualHostOption ...*v1.VirtualHostOption) { m.ctrl.T.Helper() - m.ctrl.Call(m, "Delete", virtualService) + varargs := []interface{}{} + for _, a := range virtualHostOption { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) } -// Delete indicates an expected call of Delete -func (mr *MockVirtualServiceSetMockRecorder) Delete(virtualService interface{}) *gomock.Call { +// Insert indicates an expected call of Insert. +func (mr *MockVirtualHostOptionSetMockRecorder) Insert(virtualHostOption ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockVirtualServiceSet)(nil).Delete), virtualService) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockVirtualHostOptionSet)(nil).Insert), virtualHostOption...) } -// Union mocks base method -func (m *MockVirtualServiceSet) Union(set v1sets.VirtualServiceSet) v1sets.VirtualServiceSet { +// Intersection mocks base method. +func (m *MockVirtualHostOptionSet) Intersection(set v1sets.VirtualHostOptionSet) v1sets.VirtualHostOptionSet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Union", set) - ret0, _ := ret[0].(v1sets.VirtualServiceSet) + ret := m.ctrl.Call(m, "Intersection", set) + ret0, _ := ret[0].(v1sets.VirtualHostOptionSet) return ret0 } -// Union indicates an expected call of Union -func (mr *MockVirtualServiceSetMockRecorder) Union(set interface{}) *gomock.Call { +// Intersection indicates an expected call of Intersection. +func (mr *MockVirtualHostOptionSetMockRecorder) Intersection(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockVirtualServiceSet)(nil).Union), set) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockVirtualHostOptionSet)(nil).Intersection), set) } -// Difference mocks base method -func (m *MockVirtualServiceSet) Difference(set v1sets.VirtualServiceSet) v1sets.VirtualServiceSet { +// Keys mocks base method. +func (m *MockVirtualHostOptionSet) Keys() sets0.String { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Difference", set) - ret0, _ := ret[0].(v1sets.VirtualServiceSet) + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) return ret0 } -// Difference indicates an expected call of Difference -func (mr *MockVirtualServiceSetMockRecorder) Difference(set interface{}) *gomock.Call { +// Keys indicates an expected call of Keys. +func (mr *MockVirtualHostOptionSetMockRecorder) Keys() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockVirtualServiceSet)(nil).Difference), set) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockVirtualHostOptionSet)(nil).Keys)) } -// Intersection mocks base method -func (m *MockVirtualServiceSet) Intersection(set v1sets.VirtualServiceSet) v1sets.VirtualServiceSet { +// Length mocks base method. +func (m *MockVirtualHostOptionSet) Length() int { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Intersection", set) - ret0, _ := ret[0].(v1sets.VirtualServiceSet) + ret := m.ctrl.Call(m, "Length") + ret0, _ := ret[0].(int) return ret0 } -// Intersection indicates an expected call of Intersection -func (mr *MockVirtualServiceSetMockRecorder) Intersection(set interface{}) *gomock.Call { +// Length indicates an expected call of Length. +func (mr *MockVirtualHostOptionSetMockRecorder) Length() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockVirtualServiceSet)(nil).Intersection), set) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockVirtualHostOptionSet)(nil).Length)) } -// Find mocks base method -func (m *MockVirtualServiceSet) Find(id ezkube.ResourceId) (*v1.VirtualService, error) { +// List mocks base method. +func (m *MockVirtualHostOptionSet) List(filterResource ...func(*v1.VirtualHostOption) bool) []*v1.VirtualHostOption { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Find", id) - ret0, _ := ret[0].(*v1.VirtualService) - ret1, _ := ret[1].(error) - return ret0, ret1 + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.VirtualHostOption) + return ret0 } -// Find indicates an expected call of Find -func (mr *MockVirtualServiceSetMockRecorder) Find(id interface{}) *gomock.Call { +// List indicates an expected call of List. +func (mr *MockVirtualHostOptionSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockVirtualServiceSet)(nil).Find), id) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockVirtualHostOptionSet)(nil).List), filterResource...) } -// Length mocks base method -func (m *MockVirtualServiceSet) Length() int { +// Map mocks base method. +func (m *MockVirtualHostOptionSet) Map() map[string]*v1.VirtualHostOption { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Length") - ret0, _ := ret[0].(int) + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.VirtualHostOption) return ret0 } -// Length indicates an expected call of Length -func (mr *MockVirtualServiceSetMockRecorder) Length() *gomock.Call { +// Map indicates an expected call of Map. +func (mr *MockVirtualHostOptionSetMockRecorder) Map() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockVirtualServiceSet)(nil).Length)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockVirtualHostOptionSet)(nil).Map)) } -// Generic mocks base method -func (m *MockVirtualServiceSet) Generic() sets.ResourceSet { +// Union mocks base method. +func (m *MockVirtualHostOptionSet) Union(set v1sets.VirtualHostOptionSet) v1sets.VirtualHostOptionSet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Generic") - ret0, _ := ret[0].(sets.ResourceSet) + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.VirtualHostOptionSet) return ret0 } -// Generic indicates an expected call of Generic -func (mr *MockVirtualServiceSetMockRecorder) Generic() *gomock.Call { +// Union indicates an expected call of Union. +func (mr *MockVirtualHostOptionSetMockRecorder) Union(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockVirtualServiceSet)(nil).Generic)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockVirtualHostOptionSet)(nil).Union), set) } -// Delta mocks base method -func (m *MockVirtualServiceSet) Delta(newSet v1sets.VirtualServiceSet) sets.ResourceDelta { +// UnsortedList mocks base method. +func (m *MockVirtualHostOptionSet) UnsortedList(filterResource ...func(*v1.VirtualHostOption) bool) []*v1.VirtualHostOption { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Delta", newSet) - ret0, _ := ret[0].(sets.ResourceDelta) + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.VirtualHostOption) return ret0 } -// Delta indicates an expected call of Delta -func (mr *MockVirtualServiceSetMockRecorder) Delta(newSet interface{}) *gomock.Call { +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockVirtualHostOptionSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockVirtualServiceSet)(nil).Delta), newSet) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockVirtualHostOptionSet)(nil).UnsortedList), filterResource...) } diff --git a/pkg/api/gateway.solo.io/v1/sets/sets.go b/pkg/api/gateway.solo.io/v1/sets/sets.go index f4373db29..6980646a0 100644 --- a/pkg/api/gateway.solo.io/v1/sets/sets.go +++ b/pkg/api/gateway.solo.io/v1/sets/sets.go @@ -17,8 +17,10 @@ type GatewaySet interface { // Get the set stored keys Keys() sets.String // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. List(filterResource ...func(*gateway_solo_io_v1.Gateway) bool) []*gateway_solo_io_v1.Gateway // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. UnsortedList(filterResource ...func(*gateway_solo_io_v1.Gateway) bool) []*gateway_solo_io_v1.Gateway // Return the Set as a map of key to resource. Map() map[string]*gateway_solo_io_v1.Gateway @@ -44,6 +46,8 @@ type GatewaySet interface { Generic() sksets.ResourceSet // returns the delta between this and and another GatewaySet Delta(newSet GatewaySet) sksets.ResourceDelta + // Create a deep copy of the current GatewaySet + Clone() GatewaySet } func makeGenericGatewaySet(gatewayList []*gateway_solo_io_v1.Gateway) sksets.ResourceSet { @@ -83,6 +87,7 @@ func (s *gatewaySet) List(filterResource ...func(*gateway_solo_io_v1.Gateway) bo } var genericFilters []func(ezkube.ResourceId) bool for _, filter := range filterResource { + filter := filter genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { return filter(obj.(*gateway_solo_io_v1.Gateway)) }) @@ -102,6 +107,7 @@ func (s *gatewaySet) UnsortedList(filterResource ...func(*gateway_solo_io_v1.Gat } var genericFilters []func(ezkube.ResourceId) bool for _, filter := range filterResource { + filter := filter genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { return filter(obj.(*gateway_solo_io_v1.Gateway)) }) @@ -223,12 +229,1136 @@ func (s *gatewaySet) Delta(newSet GatewaySet) sksets.ResourceDelta { return s.Generic().Delta(newSet.Generic()) } +func (s *gatewaySet) Clone() GatewaySet { + if s == nil { + return nil + } + return &gatewaySet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} + +type HttpListenerOptionSet interface { + // Get the set stored keys + Keys() sets.String + // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + List(filterResource ...func(*gateway_solo_io_v1.HttpListenerOption) bool) []*gateway_solo_io_v1.HttpListenerOption + // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + UnsortedList(filterResource ...func(*gateway_solo_io_v1.HttpListenerOption) bool) []*gateway_solo_io_v1.HttpListenerOption + // Return the Set as a map of key to resource. + Map() map[string]*gateway_solo_io_v1.HttpListenerOption + // Insert a resource into the set. + Insert(httpListenerOption ...*gateway_solo_io_v1.HttpListenerOption) + // Compare the equality of the keys in two sets (not the resources themselves) + Equal(httpListenerOptionSet HttpListenerOptionSet) bool + // Check if the set contains a key matching the resource (not the resource itself) + Has(httpListenerOption ezkube.ResourceId) bool + // Delete the key matching the resource + Delete(httpListenerOption ezkube.ResourceId) + // Return the union with the provided set + Union(set HttpListenerOptionSet) HttpListenerOptionSet + // Return the difference with the provided set + Difference(set HttpListenerOptionSet) HttpListenerOptionSet + // Return the intersection with the provided set + Intersection(set HttpListenerOptionSet) HttpListenerOptionSet + // Find the resource with the given ID + Find(id ezkube.ResourceId) (*gateway_solo_io_v1.HttpListenerOption, error) + // Get the length of the set + Length() int + // returns the generic implementation of the set + Generic() sksets.ResourceSet + // returns the delta between this and and another HttpListenerOptionSet + Delta(newSet HttpListenerOptionSet) sksets.ResourceDelta + // Create a deep copy of the current HttpListenerOptionSet + Clone() HttpListenerOptionSet +} + +func makeGenericHttpListenerOptionSet(httpListenerOptionList []*gateway_solo_io_v1.HttpListenerOption) sksets.ResourceSet { + var genericResources []ezkube.ResourceId + for _, obj := range httpListenerOptionList { + genericResources = append(genericResources, obj) + } + return sksets.NewResourceSet(genericResources...) +} + +type httpListenerOptionSet struct { + set sksets.ResourceSet +} + +func NewHttpListenerOptionSet(httpListenerOptionList ...*gateway_solo_io_v1.HttpListenerOption) HttpListenerOptionSet { + return &httpListenerOptionSet{set: makeGenericHttpListenerOptionSet(httpListenerOptionList)} +} + +func NewHttpListenerOptionSetFromList(httpListenerOptionList *gateway_solo_io_v1.HttpListenerOptionList) HttpListenerOptionSet { + list := make([]*gateway_solo_io_v1.HttpListenerOption, 0, len(httpListenerOptionList.Items)) + for idx := range httpListenerOptionList.Items { + list = append(list, &httpListenerOptionList.Items[idx]) + } + return &httpListenerOptionSet{set: makeGenericHttpListenerOptionSet(list)} +} + +func (s *httpListenerOptionSet) Keys() sets.String { + if s == nil { + return sets.String{} + } + return s.Generic().Keys() +} + +func (s *httpListenerOptionSet) List(filterResource ...func(*gateway_solo_io_v1.HttpListenerOption) bool) []*gateway_solo_io_v1.HttpListenerOption { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*gateway_solo_io_v1.HttpListenerOption)) + }) + } + + objs := s.Generic().List(genericFilters...) + httpListenerOptionList := make([]*gateway_solo_io_v1.HttpListenerOption, 0, len(objs)) + for _, obj := range objs { + httpListenerOptionList = append(httpListenerOptionList, obj.(*gateway_solo_io_v1.HttpListenerOption)) + } + return httpListenerOptionList +} + +func (s *httpListenerOptionSet) UnsortedList(filterResource ...func(*gateway_solo_io_v1.HttpListenerOption) bool) []*gateway_solo_io_v1.HttpListenerOption { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*gateway_solo_io_v1.HttpListenerOption)) + }) + } + + var httpListenerOptionList []*gateway_solo_io_v1.HttpListenerOption + for _, obj := range s.Generic().UnsortedList(genericFilters...) { + httpListenerOptionList = append(httpListenerOptionList, obj.(*gateway_solo_io_v1.HttpListenerOption)) + } + return httpListenerOptionList +} + +func (s *httpListenerOptionSet) Map() map[string]*gateway_solo_io_v1.HttpListenerOption { + if s == nil { + return nil + } + + newMap := map[string]*gateway_solo_io_v1.HttpListenerOption{} + for k, v := range s.Generic().Map() { + newMap[k] = v.(*gateway_solo_io_v1.HttpListenerOption) + } + return newMap +} + +func (s *httpListenerOptionSet) Insert( + httpListenerOptionList ...*gateway_solo_io_v1.HttpListenerOption, +) { + if s == nil { + panic("cannot insert into nil set") + } + + for _, obj := range httpListenerOptionList { + s.Generic().Insert(obj) + } +} + +func (s *httpListenerOptionSet) Has(httpListenerOption ezkube.ResourceId) bool { + if s == nil { + return false + } + return s.Generic().Has(httpListenerOption) +} + +func (s *httpListenerOptionSet) Equal( + httpListenerOptionSet HttpListenerOptionSet, +) bool { + if s == nil { + return httpListenerOptionSet == nil + } + return s.Generic().Equal(httpListenerOptionSet.Generic()) +} + +func (s *httpListenerOptionSet) Delete(HttpListenerOption ezkube.ResourceId) { + if s == nil { + return + } + s.Generic().Delete(HttpListenerOption) +} + +func (s *httpListenerOptionSet) Union(set HttpListenerOptionSet) HttpListenerOptionSet { + if s == nil { + return set + } + return NewHttpListenerOptionSet(append(s.List(), set.List()...)...) +} + +func (s *httpListenerOptionSet) Difference(set HttpListenerOptionSet) HttpListenerOptionSet { + if s == nil { + return set + } + newSet := s.Generic().Difference(set.Generic()) + return &httpListenerOptionSet{set: newSet} +} + +func (s *httpListenerOptionSet) Intersection(set HttpListenerOptionSet) HttpListenerOptionSet { + if s == nil { + return nil + } + newSet := s.Generic().Intersection(set.Generic()) + var httpListenerOptionList []*gateway_solo_io_v1.HttpListenerOption + for _, obj := range newSet.List() { + httpListenerOptionList = append(httpListenerOptionList, obj.(*gateway_solo_io_v1.HttpListenerOption)) + } + return NewHttpListenerOptionSet(httpListenerOptionList...) +} + +func (s *httpListenerOptionSet) Find(id ezkube.ResourceId) (*gateway_solo_io_v1.HttpListenerOption, error) { + if s == nil { + return nil, eris.Errorf("empty set, cannot find HttpListenerOption %v", sksets.Key(id)) + } + obj, err := s.Generic().Find(&gateway_solo_io_v1.HttpListenerOption{}, id) + if err != nil { + return nil, err + } + + return obj.(*gateway_solo_io_v1.HttpListenerOption), nil +} + +func (s *httpListenerOptionSet) Length() int { + if s == nil { + return 0 + } + return s.Generic().Length() +} + +func (s *httpListenerOptionSet) Generic() sksets.ResourceSet { + if s == nil { + return nil + } + return s.set +} + +func (s *httpListenerOptionSet) Delta(newSet HttpListenerOptionSet) sksets.ResourceDelta { + if s == nil { + return sksets.ResourceDelta{ + Inserted: newSet.Generic(), + } + } + return s.Generic().Delta(newSet.Generic()) +} + +func (s *httpListenerOptionSet) Clone() HttpListenerOptionSet { + if s == nil { + return nil + } + return &httpListenerOptionSet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} + +type ListenerOptionSet interface { + // Get the set stored keys + Keys() sets.String + // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + List(filterResource ...func(*gateway_solo_io_v1.ListenerOption) bool) []*gateway_solo_io_v1.ListenerOption + // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + UnsortedList(filterResource ...func(*gateway_solo_io_v1.ListenerOption) bool) []*gateway_solo_io_v1.ListenerOption + // Return the Set as a map of key to resource. + Map() map[string]*gateway_solo_io_v1.ListenerOption + // Insert a resource into the set. + Insert(listenerOption ...*gateway_solo_io_v1.ListenerOption) + // Compare the equality of the keys in two sets (not the resources themselves) + Equal(listenerOptionSet ListenerOptionSet) bool + // Check if the set contains a key matching the resource (not the resource itself) + Has(listenerOption ezkube.ResourceId) bool + // Delete the key matching the resource + Delete(listenerOption ezkube.ResourceId) + // Return the union with the provided set + Union(set ListenerOptionSet) ListenerOptionSet + // Return the difference with the provided set + Difference(set ListenerOptionSet) ListenerOptionSet + // Return the intersection with the provided set + Intersection(set ListenerOptionSet) ListenerOptionSet + // Find the resource with the given ID + Find(id ezkube.ResourceId) (*gateway_solo_io_v1.ListenerOption, error) + // Get the length of the set + Length() int + // returns the generic implementation of the set + Generic() sksets.ResourceSet + // returns the delta between this and and another ListenerOptionSet + Delta(newSet ListenerOptionSet) sksets.ResourceDelta + // Create a deep copy of the current ListenerOptionSet + Clone() ListenerOptionSet +} + +func makeGenericListenerOptionSet(listenerOptionList []*gateway_solo_io_v1.ListenerOption) sksets.ResourceSet { + var genericResources []ezkube.ResourceId + for _, obj := range listenerOptionList { + genericResources = append(genericResources, obj) + } + return sksets.NewResourceSet(genericResources...) +} + +type listenerOptionSet struct { + set sksets.ResourceSet +} + +func NewListenerOptionSet(listenerOptionList ...*gateway_solo_io_v1.ListenerOption) ListenerOptionSet { + return &listenerOptionSet{set: makeGenericListenerOptionSet(listenerOptionList)} +} + +func NewListenerOptionSetFromList(listenerOptionList *gateway_solo_io_v1.ListenerOptionList) ListenerOptionSet { + list := make([]*gateway_solo_io_v1.ListenerOption, 0, len(listenerOptionList.Items)) + for idx := range listenerOptionList.Items { + list = append(list, &listenerOptionList.Items[idx]) + } + return &listenerOptionSet{set: makeGenericListenerOptionSet(list)} +} + +func (s *listenerOptionSet) Keys() sets.String { + if s == nil { + return sets.String{} + } + return s.Generic().Keys() +} + +func (s *listenerOptionSet) List(filterResource ...func(*gateway_solo_io_v1.ListenerOption) bool) []*gateway_solo_io_v1.ListenerOption { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*gateway_solo_io_v1.ListenerOption)) + }) + } + + objs := s.Generic().List(genericFilters...) + listenerOptionList := make([]*gateway_solo_io_v1.ListenerOption, 0, len(objs)) + for _, obj := range objs { + listenerOptionList = append(listenerOptionList, obj.(*gateway_solo_io_v1.ListenerOption)) + } + return listenerOptionList +} + +func (s *listenerOptionSet) UnsortedList(filterResource ...func(*gateway_solo_io_v1.ListenerOption) bool) []*gateway_solo_io_v1.ListenerOption { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*gateway_solo_io_v1.ListenerOption)) + }) + } + + var listenerOptionList []*gateway_solo_io_v1.ListenerOption + for _, obj := range s.Generic().UnsortedList(genericFilters...) { + listenerOptionList = append(listenerOptionList, obj.(*gateway_solo_io_v1.ListenerOption)) + } + return listenerOptionList +} + +func (s *listenerOptionSet) Map() map[string]*gateway_solo_io_v1.ListenerOption { + if s == nil { + return nil + } + + newMap := map[string]*gateway_solo_io_v1.ListenerOption{} + for k, v := range s.Generic().Map() { + newMap[k] = v.(*gateway_solo_io_v1.ListenerOption) + } + return newMap +} + +func (s *listenerOptionSet) Insert( + listenerOptionList ...*gateway_solo_io_v1.ListenerOption, +) { + if s == nil { + panic("cannot insert into nil set") + } + + for _, obj := range listenerOptionList { + s.Generic().Insert(obj) + } +} + +func (s *listenerOptionSet) Has(listenerOption ezkube.ResourceId) bool { + if s == nil { + return false + } + return s.Generic().Has(listenerOption) +} + +func (s *listenerOptionSet) Equal( + listenerOptionSet ListenerOptionSet, +) bool { + if s == nil { + return listenerOptionSet == nil + } + return s.Generic().Equal(listenerOptionSet.Generic()) +} + +func (s *listenerOptionSet) Delete(ListenerOption ezkube.ResourceId) { + if s == nil { + return + } + s.Generic().Delete(ListenerOption) +} + +func (s *listenerOptionSet) Union(set ListenerOptionSet) ListenerOptionSet { + if s == nil { + return set + } + return NewListenerOptionSet(append(s.List(), set.List()...)...) +} + +func (s *listenerOptionSet) Difference(set ListenerOptionSet) ListenerOptionSet { + if s == nil { + return set + } + newSet := s.Generic().Difference(set.Generic()) + return &listenerOptionSet{set: newSet} +} + +func (s *listenerOptionSet) Intersection(set ListenerOptionSet) ListenerOptionSet { + if s == nil { + return nil + } + newSet := s.Generic().Intersection(set.Generic()) + var listenerOptionList []*gateway_solo_io_v1.ListenerOption + for _, obj := range newSet.List() { + listenerOptionList = append(listenerOptionList, obj.(*gateway_solo_io_v1.ListenerOption)) + } + return NewListenerOptionSet(listenerOptionList...) +} + +func (s *listenerOptionSet) Find(id ezkube.ResourceId) (*gateway_solo_io_v1.ListenerOption, error) { + if s == nil { + return nil, eris.Errorf("empty set, cannot find ListenerOption %v", sksets.Key(id)) + } + obj, err := s.Generic().Find(&gateway_solo_io_v1.ListenerOption{}, id) + if err != nil { + return nil, err + } + + return obj.(*gateway_solo_io_v1.ListenerOption), nil +} + +func (s *listenerOptionSet) Length() int { + if s == nil { + return 0 + } + return s.Generic().Length() +} + +func (s *listenerOptionSet) Generic() sksets.ResourceSet { + if s == nil { + return nil + } + return s.set +} + +func (s *listenerOptionSet) Delta(newSet ListenerOptionSet) sksets.ResourceDelta { + if s == nil { + return sksets.ResourceDelta{ + Inserted: newSet.Generic(), + } + } + return s.Generic().Delta(newSet.Generic()) +} + +func (s *listenerOptionSet) Clone() ListenerOptionSet { + if s == nil { + return nil + } + return &listenerOptionSet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} + +type MatchableHttpGatewaySet interface { + // Get the set stored keys + Keys() sets.String + // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + List(filterResource ...func(*gateway_solo_io_v1.MatchableHttpGateway) bool) []*gateway_solo_io_v1.MatchableHttpGateway + // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + UnsortedList(filterResource ...func(*gateway_solo_io_v1.MatchableHttpGateway) bool) []*gateway_solo_io_v1.MatchableHttpGateway + // Return the Set as a map of key to resource. + Map() map[string]*gateway_solo_io_v1.MatchableHttpGateway + // Insert a resource into the set. + Insert(matchableHttpGateway ...*gateway_solo_io_v1.MatchableHttpGateway) + // Compare the equality of the keys in two sets (not the resources themselves) + Equal(matchableHttpGatewaySet MatchableHttpGatewaySet) bool + // Check if the set contains a key matching the resource (not the resource itself) + Has(matchableHttpGateway ezkube.ResourceId) bool + // Delete the key matching the resource + Delete(matchableHttpGateway ezkube.ResourceId) + // Return the union with the provided set + Union(set MatchableHttpGatewaySet) MatchableHttpGatewaySet + // Return the difference with the provided set + Difference(set MatchableHttpGatewaySet) MatchableHttpGatewaySet + // Return the intersection with the provided set + Intersection(set MatchableHttpGatewaySet) MatchableHttpGatewaySet + // Find the resource with the given ID + Find(id ezkube.ResourceId) (*gateway_solo_io_v1.MatchableHttpGateway, error) + // Get the length of the set + Length() int + // returns the generic implementation of the set + Generic() sksets.ResourceSet + // returns the delta between this and and another MatchableHttpGatewaySet + Delta(newSet MatchableHttpGatewaySet) sksets.ResourceDelta + // Create a deep copy of the current MatchableHttpGatewaySet + Clone() MatchableHttpGatewaySet +} + +func makeGenericMatchableHttpGatewaySet(matchableHttpGatewayList []*gateway_solo_io_v1.MatchableHttpGateway) sksets.ResourceSet { + var genericResources []ezkube.ResourceId + for _, obj := range matchableHttpGatewayList { + genericResources = append(genericResources, obj) + } + return sksets.NewResourceSet(genericResources...) +} + +type matchableHttpGatewaySet struct { + set sksets.ResourceSet +} + +func NewMatchableHttpGatewaySet(matchableHttpGatewayList ...*gateway_solo_io_v1.MatchableHttpGateway) MatchableHttpGatewaySet { + return &matchableHttpGatewaySet{set: makeGenericMatchableHttpGatewaySet(matchableHttpGatewayList)} +} + +func NewMatchableHttpGatewaySetFromList(matchableHttpGatewayList *gateway_solo_io_v1.MatchableHttpGatewayList) MatchableHttpGatewaySet { + list := make([]*gateway_solo_io_v1.MatchableHttpGateway, 0, len(matchableHttpGatewayList.Items)) + for idx := range matchableHttpGatewayList.Items { + list = append(list, &matchableHttpGatewayList.Items[idx]) + } + return &matchableHttpGatewaySet{set: makeGenericMatchableHttpGatewaySet(list)} +} + +func (s *matchableHttpGatewaySet) Keys() sets.String { + if s == nil { + return sets.String{} + } + return s.Generic().Keys() +} + +func (s *matchableHttpGatewaySet) List(filterResource ...func(*gateway_solo_io_v1.MatchableHttpGateway) bool) []*gateway_solo_io_v1.MatchableHttpGateway { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*gateway_solo_io_v1.MatchableHttpGateway)) + }) + } + + objs := s.Generic().List(genericFilters...) + matchableHttpGatewayList := make([]*gateway_solo_io_v1.MatchableHttpGateway, 0, len(objs)) + for _, obj := range objs { + matchableHttpGatewayList = append(matchableHttpGatewayList, obj.(*gateway_solo_io_v1.MatchableHttpGateway)) + } + return matchableHttpGatewayList +} + +func (s *matchableHttpGatewaySet) UnsortedList(filterResource ...func(*gateway_solo_io_v1.MatchableHttpGateway) bool) []*gateway_solo_io_v1.MatchableHttpGateway { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*gateway_solo_io_v1.MatchableHttpGateway)) + }) + } + + var matchableHttpGatewayList []*gateway_solo_io_v1.MatchableHttpGateway + for _, obj := range s.Generic().UnsortedList(genericFilters...) { + matchableHttpGatewayList = append(matchableHttpGatewayList, obj.(*gateway_solo_io_v1.MatchableHttpGateway)) + } + return matchableHttpGatewayList +} + +func (s *matchableHttpGatewaySet) Map() map[string]*gateway_solo_io_v1.MatchableHttpGateway { + if s == nil { + return nil + } + + newMap := map[string]*gateway_solo_io_v1.MatchableHttpGateway{} + for k, v := range s.Generic().Map() { + newMap[k] = v.(*gateway_solo_io_v1.MatchableHttpGateway) + } + return newMap +} + +func (s *matchableHttpGatewaySet) Insert( + matchableHttpGatewayList ...*gateway_solo_io_v1.MatchableHttpGateway, +) { + if s == nil { + panic("cannot insert into nil set") + } + + for _, obj := range matchableHttpGatewayList { + s.Generic().Insert(obj) + } +} + +func (s *matchableHttpGatewaySet) Has(matchableHttpGateway ezkube.ResourceId) bool { + if s == nil { + return false + } + return s.Generic().Has(matchableHttpGateway) +} + +func (s *matchableHttpGatewaySet) Equal( + matchableHttpGatewaySet MatchableHttpGatewaySet, +) bool { + if s == nil { + return matchableHttpGatewaySet == nil + } + return s.Generic().Equal(matchableHttpGatewaySet.Generic()) +} + +func (s *matchableHttpGatewaySet) Delete(MatchableHttpGateway ezkube.ResourceId) { + if s == nil { + return + } + s.Generic().Delete(MatchableHttpGateway) +} + +func (s *matchableHttpGatewaySet) Union(set MatchableHttpGatewaySet) MatchableHttpGatewaySet { + if s == nil { + return set + } + return NewMatchableHttpGatewaySet(append(s.List(), set.List()...)...) +} + +func (s *matchableHttpGatewaySet) Difference(set MatchableHttpGatewaySet) MatchableHttpGatewaySet { + if s == nil { + return set + } + newSet := s.Generic().Difference(set.Generic()) + return &matchableHttpGatewaySet{set: newSet} +} + +func (s *matchableHttpGatewaySet) Intersection(set MatchableHttpGatewaySet) MatchableHttpGatewaySet { + if s == nil { + return nil + } + newSet := s.Generic().Intersection(set.Generic()) + var matchableHttpGatewayList []*gateway_solo_io_v1.MatchableHttpGateway + for _, obj := range newSet.List() { + matchableHttpGatewayList = append(matchableHttpGatewayList, obj.(*gateway_solo_io_v1.MatchableHttpGateway)) + } + return NewMatchableHttpGatewaySet(matchableHttpGatewayList...) +} + +func (s *matchableHttpGatewaySet) Find(id ezkube.ResourceId) (*gateway_solo_io_v1.MatchableHttpGateway, error) { + if s == nil { + return nil, eris.Errorf("empty set, cannot find MatchableHttpGateway %v", sksets.Key(id)) + } + obj, err := s.Generic().Find(&gateway_solo_io_v1.MatchableHttpGateway{}, id) + if err != nil { + return nil, err + } + + return obj.(*gateway_solo_io_v1.MatchableHttpGateway), nil +} + +func (s *matchableHttpGatewaySet) Length() int { + if s == nil { + return 0 + } + return s.Generic().Length() +} + +func (s *matchableHttpGatewaySet) Generic() sksets.ResourceSet { + if s == nil { + return nil + } + return s.set +} + +func (s *matchableHttpGatewaySet) Delta(newSet MatchableHttpGatewaySet) sksets.ResourceDelta { + if s == nil { + return sksets.ResourceDelta{ + Inserted: newSet.Generic(), + } + } + return s.Generic().Delta(newSet.Generic()) +} + +func (s *matchableHttpGatewaySet) Clone() MatchableHttpGatewaySet { + if s == nil { + return nil + } + return &matchableHttpGatewaySet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} + +type MatchableTcpGatewaySet interface { + // Get the set stored keys + Keys() sets.String + // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + List(filterResource ...func(*gateway_solo_io_v1.MatchableTcpGateway) bool) []*gateway_solo_io_v1.MatchableTcpGateway + // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + UnsortedList(filterResource ...func(*gateway_solo_io_v1.MatchableTcpGateway) bool) []*gateway_solo_io_v1.MatchableTcpGateway + // Return the Set as a map of key to resource. + Map() map[string]*gateway_solo_io_v1.MatchableTcpGateway + // Insert a resource into the set. + Insert(matchableTcpGateway ...*gateway_solo_io_v1.MatchableTcpGateway) + // Compare the equality of the keys in two sets (not the resources themselves) + Equal(matchableTcpGatewaySet MatchableTcpGatewaySet) bool + // Check if the set contains a key matching the resource (not the resource itself) + Has(matchableTcpGateway ezkube.ResourceId) bool + // Delete the key matching the resource + Delete(matchableTcpGateway ezkube.ResourceId) + // Return the union with the provided set + Union(set MatchableTcpGatewaySet) MatchableTcpGatewaySet + // Return the difference with the provided set + Difference(set MatchableTcpGatewaySet) MatchableTcpGatewaySet + // Return the intersection with the provided set + Intersection(set MatchableTcpGatewaySet) MatchableTcpGatewaySet + // Find the resource with the given ID + Find(id ezkube.ResourceId) (*gateway_solo_io_v1.MatchableTcpGateway, error) + // Get the length of the set + Length() int + // returns the generic implementation of the set + Generic() sksets.ResourceSet + // returns the delta between this and and another MatchableTcpGatewaySet + Delta(newSet MatchableTcpGatewaySet) sksets.ResourceDelta + // Create a deep copy of the current MatchableTcpGatewaySet + Clone() MatchableTcpGatewaySet +} + +func makeGenericMatchableTcpGatewaySet(matchableTcpGatewayList []*gateway_solo_io_v1.MatchableTcpGateway) sksets.ResourceSet { + var genericResources []ezkube.ResourceId + for _, obj := range matchableTcpGatewayList { + genericResources = append(genericResources, obj) + } + return sksets.NewResourceSet(genericResources...) +} + +type matchableTcpGatewaySet struct { + set sksets.ResourceSet +} + +func NewMatchableTcpGatewaySet(matchableTcpGatewayList ...*gateway_solo_io_v1.MatchableTcpGateway) MatchableTcpGatewaySet { + return &matchableTcpGatewaySet{set: makeGenericMatchableTcpGatewaySet(matchableTcpGatewayList)} +} + +func NewMatchableTcpGatewaySetFromList(matchableTcpGatewayList *gateway_solo_io_v1.MatchableTcpGatewayList) MatchableTcpGatewaySet { + list := make([]*gateway_solo_io_v1.MatchableTcpGateway, 0, len(matchableTcpGatewayList.Items)) + for idx := range matchableTcpGatewayList.Items { + list = append(list, &matchableTcpGatewayList.Items[idx]) + } + return &matchableTcpGatewaySet{set: makeGenericMatchableTcpGatewaySet(list)} +} + +func (s *matchableTcpGatewaySet) Keys() sets.String { + if s == nil { + return sets.String{} + } + return s.Generic().Keys() +} + +func (s *matchableTcpGatewaySet) List(filterResource ...func(*gateway_solo_io_v1.MatchableTcpGateway) bool) []*gateway_solo_io_v1.MatchableTcpGateway { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*gateway_solo_io_v1.MatchableTcpGateway)) + }) + } + + objs := s.Generic().List(genericFilters...) + matchableTcpGatewayList := make([]*gateway_solo_io_v1.MatchableTcpGateway, 0, len(objs)) + for _, obj := range objs { + matchableTcpGatewayList = append(matchableTcpGatewayList, obj.(*gateway_solo_io_v1.MatchableTcpGateway)) + } + return matchableTcpGatewayList +} + +func (s *matchableTcpGatewaySet) UnsortedList(filterResource ...func(*gateway_solo_io_v1.MatchableTcpGateway) bool) []*gateway_solo_io_v1.MatchableTcpGateway { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*gateway_solo_io_v1.MatchableTcpGateway)) + }) + } + + var matchableTcpGatewayList []*gateway_solo_io_v1.MatchableTcpGateway + for _, obj := range s.Generic().UnsortedList(genericFilters...) { + matchableTcpGatewayList = append(matchableTcpGatewayList, obj.(*gateway_solo_io_v1.MatchableTcpGateway)) + } + return matchableTcpGatewayList +} + +func (s *matchableTcpGatewaySet) Map() map[string]*gateway_solo_io_v1.MatchableTcpGateway { + if s == nil { + return nil + } + + newMap := map[string]*gateway_solo_io_v1.MatchableTcpGateway{} + for k, v := range s.Generic().Map() { + newMap[k] = v.(*gateway_solo_io_v1.MatchableTcpGateway) + } + return newMap +} + +func (s *matchableTcpGatewaySet) Insert( + matchableTcpGatewayList ...*gateway_solo_io_v1.MatchableTcpGateway, +) { + if s == nil { + panic("cannot insert into nil set") + } + + for _, obj := range matchableTcpGatewayList { + s.Generic().Insert(obj) + } +} + +func (s *matchableTcpGatewaySet) Has(matchableTcpGateway ezkube.ResourceId) bool { + if s == nil { + return false + } + return s.Generic().Has(matchableTcpGateway) +} + +func (s *matchableTcpGatewaySet) Equal( + matchableTcpGatewaySet MatchableTcpGatewaySet, +) bool { + if s == nil { + return matchableTcpGatewaySet == nil + } + return s.Generic().Equal(matchableTcpGatewaySet.Generic()) +} + +func (s *matchableTcpGatewaySet) Delete(MatchableTcpGateway ezkube.ResourceId) { + if s == nil { + return + } + s.Generic().Delete(MatchableTcpGateway) +} + +func (s *matchableTcpGatewaySet) Union(set MatchableTcpGatewaySet) MatchableTcpGatewaySet { + if s == nil { + return set + } + return NewMatchableTcpGatewaySet(append(s.List(), set.List()...)...) +} + +func (s *matchableTcpGatewaySet) Difference(set MatchableTcpGatewaySet) MatchableTcpGatewaySet { + if s == nil { + return set + } + newSet := s.Generic().Difference(set.Generic()) + return &matchableTcpGatewaySet{set: newSet} +} + +func (s *matchableTcpGatewaySet) Intersection(set MatchableTcpGatewaySet) MatchableTcpGatewaySet { + if s == nil { + return nil + } + newSet := s.Generic().Intersection(set.Generic()) + var matchableTcpGatewayList []*gateway_solo_io_v1.MatchableTcpGateway + for _, obj := range newSet.List() { + matchableTcpGatewayList = append(matchableTcpGatewayList, obj.(*gateway_solo_io_v1.MatchableTcpGateway)) + } + return NewMatchableTcpGatewaySet(matchableTcpGatewayList...) +} + +func (s *matchableTcpGatewaySet) Find(id ezkube.ResourceId) (*gateway_solo_io_v1.MatchableTcpGateway, error) { + if s == nil { + return nil, eris.Errorf("empty set, cannot find MatchableTcpGateway %v", sksets.Key(id)) + } + obj, err := s.Generic().Find(&gateway_solo_io_v1.MatchableTcpGateway{}, id) + if err != nil { + return nil, err + } + + return obj.(*gateway_solo_io_v1.MatchableTcpGateway), nil +} + +func (s *matchableTcpGatewaySet) Length() int { + if s == nil { + return 0 + } + return s.Generic().Length() +} + +func (s *matchableTcpGatewaySet) Generic() sksets.ResourceSet { + if s == nil { + return nil + } + return s.set +} + +func (s *matchableTcpGatewaySet) Delta(newSet MatchableTcpGatewaySet) sksets.ResourceDelta { + if s == nil { + return sksets.ResourceDelta{ + Inserted: newSet.Generic(), + } + } + return s.Generic().Delta(newSet.Generic()) +} + +func (s *matchableTcpGatewaySet) Clone() MatchableTcpGatewaySet { + if s == nil { + return nil + } + return &matchableTcpGatewaySet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} + +type RouteOptionSet interface { + // Get the set stored keys + Keys() sets.String + // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + List(filterResource ...func(*gateway_solo_io_v1.RouteOption) bool) []*gateway_solo_io_v1.RouteOption + // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + UnsortedList(filterResource ...func(*gateway_solo_io_v1.RouteOption) bool) []*gateway_solo_io_v1.RouteOption + // Return the Set as a map of key to resource. + Map() map[string]*gateway_solo_io_v1.RouteOption + // Insert a resource into the set. + Insert(routeOption ...*gateway_solo_io_v1.RouteOption) + // Compare the equality of the keys in two sets (not the resources themselves) + Equal(routeOptionSet RouteOptionSet) bool + // Check if the set contains a key matching the resource (not the resource itself) + Has(routeOption ezkube.ResourceId) bool + // Delete the key matching the resource + Delete(routeOption ezkube.ResourceId) + // Return the union with the provided set + Union(set RouteOptionSet) RouteOptionSet + // Return the difference with the provided set + Difference(set RouteOptionSet) RouteOptionSet + // Return the intersection with the provided set + Intersection(set RouteOptionSet) RouteOptionSet + // Find the resource with the given ID + Find(id ezkube.ResourceId) (*gateway_solo_io_v1.RouteOption, error) + // Get the length of the set + Length() int + // returns the generic implementation of the set + Generic() sksets.ResourceSet + // returns the delta between this and and another RouteOptionSet + Delta(newSet RouteOptionSet) sksets.ResourceDelta + // Create a deep copy of the current RouteOptionSet + Clone() RouteOptionSet +} + +func makeGenericRouteOptionSet(routeOptionList []*gateway_solo_io_v1.RouteOption) sksets.ResourceSet { + var genericResources []ezkube.ResourceId + for _, obj := range routeOptionList { + genericResources = append(genericResources, obj) + } + return sksets.NewResourceSet(genericResources...) +} + +type routeOptionSet struct { + set sksets.ResourceSet +} + +func NewRouteOptionSet(routeOptionList ...*gateway_solo_io_v1.RouteOption) RouteOptionSet { + return &routeOptionSet{set: makeGenericRouteOptionSet(routeOptionList)} +} + +func NewRouteOptionSetFromList(routeOptionList *gateway_solo_io_v1.RouteOptionList) RouteOptionSet { + list := make([]*gateway_solo_io_v1.RouteOption, 0, len(routeOptionList.Items)) + for idx := range routeOptionList.Items { + list = append(list, &routeOptionList.Items[idx]) + } + return &routeOptionSet{set: makeGenericRouteOptionSet(list)} +} + +func (s *routeOptionSet) Keys() sets.String { + if s == nil { + return sets.String{} + } + return s.Generic().Keys() +} + +func (s *routeOptionSet) List(filterResource ...func(*gateway_solo_io_v1.RouteOption) bool) []*gateway_solo_io_v1.RouteOption { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*gateway_solo_io_v1.RouteOption)) + }) + } + + objs := s.Generic().List(genericFilters...) + routeOptionList := make([]*gateway_solo_io_v1.RouteOption, 0, len(objs)) + for _, obj := range objs { + routeOptionList = append(routeOptionList, obj.(*gateway_solo_io_v1.RouteOption)) + } + return routeOptionList +} + +func (s *routeOptionSet) UnsortedList(filterResource ...func(*gateway_solo_io_v1.RouteOption) bool) []*gateway_solo_io_v1.RouteOption { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*gateway_solo_io_v1.RouteOption)) + }) + } + + var routeOptionList []*gateway_solo_io_v1.RouteOption + for _, obj := range s.Generic().UnsortedList(genericFilters...) { + routeOptionList = append(routeOptionList, obj.(*gateway_solo_io_v1.RouteOption)) + } + return routeOptionList +} + +func (s *routeOptionSet) Map() map[string]*gateway_solo_io_v1.RouteOption { + if s == nil { + return nil + } + + newMap := map[string]*gateway_solo_io_v1.RouteOption{} + for k, v := range s.Generic().Map() { + newMap[k] = v.(*gateway_solo_io_v1.RouteOption) + } + return newMap +} + +func (s *routeOptionSet) Insert( + routeOptionList ...*gateway_solo_io_v1.RouteOption, +) { + if s == nil { + panic("cannot insert into nil set") + } + + for _, obj := range routeOptionList { + s.Generic().Insert(obj) + } +} + +func (s *routeOptionSet) Has(routeOption ezkube.ResourceId) bool { + if s == nil { + return false + } + return s.Generic().Has(routeOption) +} + +func (s *routeOptionSet) Equal( + routeOptionSet RouteOptionSet, +) bool { + if s == nil { + return routeOptionSet == nil + } + return s.Generic().Equal(routeOptionSet.Generic()) +} + +func (s *routeOptionSet) Delete(RouteOption ezkube.ResourceId) { + if s == nil { + return + } + s.Generic().Delete(RouteOption) +} + +func (s *routeOptionSet) Union(set RouteOptionSet) RouteOptionSet { + if s == nil { + return set + } + return NewRouteOptionSet(append(s.List(), set.List()...)...) +} + +func (s *routeOptionSet) Difference(set RouteOptionSet) RouteOptionSet { + if s == nil { + return set + } + newSet := s.Generic().Difference(set.Generic()) + return &routeOptionSet{set: newSet} +} + +func (s *routeOptionSet) Intersection(set RouteOptionSet) RouteOptionSet { + if s == nil { + return nil + } + newSet := s.Generic().Intersection(set.Generic()) + var routeOptionList []*gateway_solo_io_v1.RouteOption + for _, obj := range newSet.List() { + routeOptionList = append(routeOptionList, obj.(*gateway_solo_io_v1.RouteOption)) + } + return NewRouteOptionSet(routeOptionList...) +} + +func (s *routeOptionSet) Find(id ezkube.ResourceId) (*gateway_solo_io_v1.RouteOption, error) { + if s == nil { + return nil, eris.Errorf("empty set, cannot find RouteOption %v", sksets.Key(id)) + } + obj, err := s.Generic().Find(&gateway_solo_io_v1.RouteOption{}, id) + if err != nil { + return nil, err + } + + return obj.(*gateway_solo_io_v1.RouteOption), nil +} + +func (s *routeOptionSet) Length() int { + if s == nil { + return 0 + } + return s.Generic().Length() +} + +func (s *routeOptionSet) Generic() sksets.ResourceSet { + if s == nil { + return nil + } + return s.set +} + +func (s *routeOptionSet) Delta(newSet RouteOptionSet) sksets.ResourceDelta { + if s == nil { + return sksets.ResourceDelta{ + Inserted: newSet.Generic(), + } + } + return s.Generic().Delta(newSet.Generic()) +} + +func (s *routeOptionSet) Clone() RouteOptionSet { + if s == nil { + return nil + } + return &routeOptionSet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} + type RouteTableSet interface { // Get the set stored keys Keys() sets.String // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. List(filterResource ...func(*gateway_solo_io_v1.RouteTable) bool) []*gateway_solo_io_v1.RouteTable // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. UnsortedList(filterResource ...func(*gateway_solo_io_v1.RouteTable) bool) []*gateway_solo_io_v1.RouteTable // Return the Set as a map of key to resource. Map() map[string]*gateway_solo_io_v1.RouteTable @@ -254,6 +1384,8 @@ type RouteTableSet interface { Generic() sksets.ResourceSet // returns the delta between this and and another RouteTableSet Delta(newSet RouteTableSet) sksets.ResourceDelta + // Create a deep copy of the current RouteTableSet + Clone() RouteTableSet } func makeGenericRouteTableSet(routeTableList []*gateway_solo_io_v1.RouteTable) sksets.ResourceSet { @@ -293,6 +1425,7 @@ func (s *routeTableSet) List(filterResource ...func(*gateway_solo_io_v1.RouteTab } var genericFilters []func(ezkube.ResourceId) bool for _, filter := range filterResource { + filter := filter genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { return filter(obj.(*gateway_solo_io_v1.RouteTable)) }) @@ -312,6 +1445,7 @@ func (s *routeTableSet) UnsortedList(filterResource ...func(*gateway_solo_io_v1. } var genericFilters []func(ezkube.ResourceId) bool for _, filter := range filterResource { + filter := filter genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { return filter(obj.(*gateway_solo_io_v1.RouteTable)) }) @@ -433,12 +1567,21 @@ func (s *routeTableSet) Delta(newSet RouteTableSet) sksets.ResourceDelta { return s.Generic().Delta(newSet.Generic()) } +func (s *routeTableSet) Clone() RouteTableSet { + if s == nil { + return nil + } + return &routeTableSet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} + type VirtualServiceSet interface { // Get the set stored keys Keys() sets.String // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. List(filterResource ...func(*gateway_solo_io_v1.VirtualService) bool) []*gateway_solo_io_v1.VirtualService // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. UnsortedList(filterResource ...func(*gateway_solo_io_v1.VirtualService) bool) []*gateway_solo_io_v1.VirtualService // Return the Set as a map of key to resource. Map() map[string]*gateway_solo_io_v1.VirtualService @@ -464,6 +1607,8 @@ type VirtualServiceSet interface { Generic() sksets.ResourceSet // returns the delta between this and and another VirtualServiceSet Delta(newSet VirtualServiceSet) sksets.ResourceDelta + // Create a deep copy of the current VirtualServiceSet + Clone() VirtualServiceSet } func makeGenericVirtualServiceSet(virtualServiceList []*gateway_solo_io_v1.VirtualService) sksets.ResourceSet { @@ -503,6 +1648,7 @@ func (s *virtualServiceSet) List(filterResource ...func(*gateway_solo_io_v1.Virt } var genericFilters []func(ezkube.ResourceId) bool for _, filter := range filterResource { + filter := filter genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { return filter(obj.(*gateway_solo_io_v1.VirtualService)) }) @@ -522,6 +1668,7 @@ func (s *virtualServiceSet) UnsortedList(filterResource ...func(*gateway_solo_io } var genericFilters []func(ezkube.ResourceId) bool for _, filter := range filterResource { + filter := filter genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { return filter(obj.(*gateway_solo_io_v1.VirtualService)) }) @@ -642,3 +1789,233 @@ func (s *virtualServiceSet) Delta(newSet VirtualServiceSet) sksets.ResourceDelta } return s.Generic().Delta(newSet.Generic()) } + +func (s *virtualServiceSet) Clone() VirtualServiceSet { + if s == nil { + return nil + } + return &virtualServiceSet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} + +type VirtualHostOptionSet interface { + // Get the set stored keys + Keys() sets.String + // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + List(filterResource ...func(*gateway_solo_io_v1.VirtualHostOption) bool) []*gateway_solo_io_v1.VirtualHostOption + // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + UnsortedList(filterResource ...func(*gateway_solo_io_v1.VirtualHostOption) bool) []*gateway_solo_io_v1.VirtualHostOption + // Return the Set as a map of key to resource. + Map() map[string]*gateway_solo_io_v1.VirtualHostOption + // Insert a resource into the set. + Insert(virtualHostOption ...*gateway_solo_io_v1.VirtualHostOption) + // Compare the equality of the keys in two sets (not the resources themselves) + Equal(virtualHostOptionSet VirtualHostOptionSet) bool + // Check if the set contains a key matching the resource (not the resource itself) + Has(virtualHostOption ezkube.ResourceId) bool + // Delete the key matching the resource + Delete(virtualHostOption ezkube.ResourceId) + // Return the union with the provided set + Union(set VirtualHostOptionSet) VirtualHostOptionSet + // Return the difference with the provided set + Difference(set VirtualHostOptionSet) VirtualHostOptionSet + // Return the intersection with the provided set + Intersection(set VirtualHostOptionSet) VirtualHostOptionSet + // Find the resource with the given ID + Find(id ezkube.ResourceId) (*gateway_solo_io_v1.VirtualHostOption, error) + // Get the length of the set + Length() int + // returns the generic implementation of the set + Generic() sksets.ResourceSet + // returns the delta between this and and another VirtualHostOptionSet + Delta(newSet VirtualHostOptionSet) sksets.ResourceDelta + // Create a deep copy of the current VirtualHostOptionSet + Clone() VirtualHostOptionSet +} + +func makeGenericVirtualHostOptionSet(virtualHostOptionList []*gateway_solo_io_v1.VirtualHostOption) sksets.ResourceSet { + var genericResources []ezkube.ResourceId + for _, obj := range virtualHostOptionList { + genericResources = append(genericResources, obj) + } + return sksets.NewResourceSet(genericResources...) +} + +type virtualHostOptionSet struct { + set sksets.ResourceSet +} + +func NewVirtualHostOptionSet(virtualHostOptionList ...*gateway_solo_io_v1.VirtualHostOption) VirtualHostOptionSet { + return &virtualHostOptionSet{set: makeGenericVirtualHostOptionSet(virtualHostOptionList)} +} + +func NewVirtualHostOptionSetFromList(virtualHostOptionList *gateway_solo_io_v1.VirtualHostOptionList) VirtualHostOptionSet { + list := make([]*gateway_solo_io_v1.VirtualHostOption, 0, len(virtualHostOptionList.Items)) + for idx := range virtualHostOptionList.Items { + list = append(list, &virtualHostOptionList.Items[idx]) + } + return &virtualHostOptionSet{set: makeGenericVirtualHostOptionSet(list)} +} + +func (s *virtualHostOptionSet) Keys() sets.String { + if s == nil { + return sets.String{} + } + return s.Generic().Keys() +} + +func (s *virtualHostOptionSet) List(filterResource ...func(*gateway_solo_io_v1.VirtualHostOption) bool) []*gateway_solo_io_v1.VirtualHostOption { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*gateway_solo_io_v1.VirtualHostOption)) + }) + } + + objs := s.Generic().List(genericFilters...) + virtualHostOptionList := make([]*gateway_solo_io_v1.VirtualHostOption, 0, len(objs)) + for _, obj := range objs { + virtualHostOptionList = append(virtualHostOptionList, obj.(*gateway_solo_io_v1.VirtualHostOption)) + } + return virtualHostOptionList +} + +func (s *virtualHostOptionSet) UnsortedList(filterResource ...func(*gateway_solo_io_v1.VirtualHostOption) bool) []*gateway_solo_io_v1.VirtualHostOption { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*gateway_solo_io_v1.VirtualHostOption)) + }) + } + + var virtualHostOptionList []*gateway_solo_io_v1.VirtualHostOption + for _, obj := range s.Generic().UnsortedList(genericFilters...) { + virtualHostOptionList = append(virtualHostOptionList, obj.(*gateway_solo_io_v1.VirtualHostOption)) + } + return virtualHostOptionList +} + +func (s *virtualHostOptionSet) Map() map[string]*gateway_solo_io_v1.VirtualHostOption { + if s == nil { + return nil + } + + newMap := map[string]*gateway_solo_io_v1.VirtualHostOption{} + for k, v := range s.Generic().Map() { + newMap[k] = v.(*gateway_solo_io_v1.VirtualHostOption) + } + return newMap +} + +func (s *virtualHostOptionSet) Insert( + virtualHostOptionList ...*gateway_solo_io_v1.VirtualHostOption, +) { + if s == nil { + panic("cannot insert into nil set") + } + + for _, obj := range virtualHostOptionList { + s.Generic().Insert(obj) + } +} + +func (s *virtualHostOptionSet) Has(virtualHostOption ezkube.ResourceId) bool { + if s == nil { + return false + } + return s.Generic().Has(virtualHostOption) +} + +func (s *virtualHostOptionSet) Equal( + virtualHostOptionSet VirtualHostOptionSet, +) bool { + if s == nil { + return virtualHostOptionSet == nil + } + return s.Generic().Equal(virtualHostOptionSet.Generic()) +} + +func (s *virtualHostOptionSet) Delete(VirtualHostOption ezkube.ResourceId) { + if s == nil { + return + } + s.Generic().Delete(VirtualHostOption) +} + +func (s *virtualHostOptionSet) Union(set VirtualHostOptionSet) VirtualHostOptionSet { + if s == nil { + return set + } + return NewVirtualHostOptionSet(append(s.List(), set.List()...)...) +} + +func (s *virtualHostOptionSet) Difference(set VirtualHostOptionSet) VirtualHostOptionSet { + if s == nil { + return set + } + newSet := s.Generic().Difference(set.Generic()) + return &virtualHostOptionSet{set: newSet} +} + +func (s *virtualHostOptionSet) Intersection(set VirtualHostOptionSet) VirtualHostOptionSet { + if s == nil { + return nil + } + newSet := s.Generic().Intersection(set.Generic()) + var virtualHostOptionList []*gateway_solo_io_v1.VirtualHostOption + for _, obj := range newSet.List() { + virtualHostOptionList = append(virtualHostOptionList, obj.(*gateway_solo_io_v1.VirtualHostOption)) + } + return NewVirtualHostOptionSet(virtualHostOptionList...) +} + +func (s *virtualHostOptionSet) Find(id ezkube.ResourceId) (*gateway_solo_io_v1.VirtualHostOption, error) { + if s == nil { + return nil, eris.Errorf("empty set, cannot find VirtualHostOption %v", sksets.Key(id)) + } + obj, err := s.Generic().Find(&gateway_solo_io_v1.VirtualHostOption{}, id) + if err != nil { + return nil, err + } + + return obj.(*gateway_solo_io_v1.VirtualHostOption), nil +} + +func (s *virtualHostOptionSet) Length() int { + if s == nil { + return 0 + } + return s.Generic().Length() +} + +func (s *virtualHostOptionSet) Generic() sksets.ResourceSet { + if s == nil { + return nil + } + return s.set +} + +func (s *virtualHostOptionSet) Delta(newSet VirtualHostOptionSet) sksets.ResourceDelta { + if s == nil { + return sksets.ResourceDelta{ + Inserted: newSet.Generic(), + } + } + return s.Generic().Delta(newSet.Generic()) +} + +func (s *virtualHostOptionSet) Clone() VirtualHostOptionSet { + if s == nil { + return nil + } + return &virtualHostOptionSet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} diff --git a/pkg/api/gateway.solo.io/v1/type_helpers.go b/pkg/api/gateway.solo.io/v1/type_helpers.go index b6dcb656e..3ad4e64de 100644 --- a/pkg/api/gateway.solo.io/v1/type_helpers.go +++ b/pkg/api/gateway.solo.io/v1/type_helpers.go @@ -6,8 +6,26 @@ package v1 // GatewaySlice represents a slice of *Gateway type GatewaySlice []*Gateway +// HttpListenerOptionSlice represents a slice of *HttpListenerOption +type HttpListenerOptionSlice []*HttpListenerOption + +// ListenerOptionSlice represents a slice of *ListenerOption +type ListenerOptionSlice []*ListenerOption + +// MatchableHttpGatewaySlice represents a slice of *MatchableHttpGateway +type MatchableHttpGatewaySlice []*MatchableHttpGateway + +// MatchableTcpGatewaySlice represents a slice of *MatchableTcpGateway +type MatchableTcpGatewaySlice []*MatchableTcpGateway + +// RouteOptionSlice represents a slice of *RouteOption +type RouteOptionSlice []*RouteOption + // RouteTableSlice represents a slice of *RouteTable type RouteTableSlice []*RouteTable // VirtualServiceSlice represents a slice of *VirtualService type VirtualServiceSlice []*VirtualService + +// VirtualHostOptionSlice represents a slice of *VirtualHostOption +type VirtualHostOptionSlice []*VirtualHostOption diff --git a/pkg/api/gateway.solo.io/v1/types.go b/pkg/api/gateway.solo.io/v1/types.go index a500cdd35..6cb8f087d 100644 --- a/pkg/api/gateway.solo.io/v1/types.go +++ b/pkg/api/gateway.solo.io/v1/types.go @@ -48,6 +48,181 @@ type GatewayList struct { // +k8s:openapi-gen=true // +kubebuilder:subresource:status +// GroupVersionKind for HttpListenerOption +var HttpListenerOptionGVK = schema.GroupVersionKind{ + Group: "gateway.solo.io", + Version: "v1", + Kind: "HttpListenerOption", +} + +// HttpListenerOption is the Schema for the httpListenerOption API +type HttpListenerOption struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec HttpListenerOptionSpec `json:"spec,omitempty"` + Status HttpListenerOptionStatus `json:"status,omitempty"` +} + +// GVK returns the GroupVersionKind associated with the resource type. +func (HttpListenerOption) GVK() schema.GroupVersionKind { + return HttpListenerOptionGVK +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// HttpListenerOptionList contains a list of HttpListenerOption +type HttpListenerOptionList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []HttpListenerOption `json:"items"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:openapi-gen=true +// +kubebuilder:subresource:status + +// GroupVersionKind for ListenerOption +var ListenerOptionGVK = schema.GroupVersionKind{ + Group: "gateway.solo.io", + Version: "v1", + Kind: "ListenerOption", +} + +// ListenerOption is the Schema for the listenerOption API +type ListenerOption struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec ListenerOptionSpec `json:"spec,omitempty"` + Status ListenerOptionStatus `json:"status,omitempty"` +} + +// GVK returns the GroupVersionKind associated with the resource type. +func (ListenerOption) GVK() schema.GroupVersionKind { + return ListenerOptionGVK +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ListenerOptionList contains a list of ListenerOption +type ListenerOptionList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ListenerOption `json:"items"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:openapi-gen=true +// +kubebuilder:subresource:status + +// GroupVersionKind for MatchableHttpGateway +var MatchableHttpGatewayGVK = schema.GroupVersionKind{ + Group: "gateway.solo.io", + Version: "v1", + Kind: "MatchableHttpGateway", +} + +// MatchableHttpGateway is the Schema for the matchableHttpGateway API +type MatchableHttpGateway struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec MatchableHttpGatewaySpec `json:"spec,omitempty"` + Status MatchableHttpGatewayStatus `json:"status,omitempty"` +} + +// GVK returns the GroupVersionKind associated with the resource type. +func (MatchableHttpGateway) GVK() schema.GroupVersionKind { + return MatchableHttpGatewayGVK +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// MatchableHttpGatewayList contains a list of MatchableHttpGateway +type MatchableHttpGatewayList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []MatchableHttpGateway `json:"items"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:openapi-gen=true +// +kubebuilder:subresource:status + +// GroupVersionKind for MatchableTcpGateway +var MatchableTcpGatewayGVK = schema.GroupVersionKind{ + Group: "gateway.solo.io", + Version: "v1", + Kind: "MatchableTcpGateway", +} + +// MatchableTcpGateway is the Schema for the matchableTcpGateway API +type MatchableTcpGateway struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec MatchableTcpGatewaySpec `json:"spec,omitempty"` + Status MatchableTcpGatewayStatus `json:"status,omitempty"` +} + +// GVK returns the GroupVersionKind associated with the resource type. +func (MatchableTcpGateway) GVK() schema.GroupVersionKind { + return MatchableTcpGatewayGVK +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// MatchableTcpGatewayList contains a list of MatchableTcpGateway +type MatchableTcpGatewayList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []MatchableTcpGateway `json:"items"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:openapi-gen=true +// +kubebuilder:subresource:status + +// GroupVersionKind for RouteOption +var RouteOptionGVK = schema.GroupVersionKind{ + Group: "gateway.solo.io", + Version: "v1", + Kind: "RouteOption", +} + +// RouteOption is the Schema for the routeOption API +type RouteOption struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec RouteOptionSpec `json:"spec,omitempty"` + Status RouteOptionStatus `json:"status,omitempty"` +} + +// GVK returns the GroupVersionKind associated with the resource type. +func (RouteOption) GVK() schema.GroupVersionKind { + return RouteOptionGVK +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// RouteOptionList contains a list of RouteOption +type RouteOptionList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []RouteOption `json:"items"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:openapi-gen=true +// +kubebuilder:subresource:status + // GroupVersionKind for RouteTable var RouteTableGVK = schema.GroupVersionKind{ Group: "gateway.solo.io", @@ -113,8 +288,49 @@ type VirtualServiceList struct { Items []VirtualService `json:"items"` } +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:openapi-gen=true +// +kubebuilder:subresource:status + +// GroupVersionKind for VirtualHostOption +var VirtualHostOptionGVK = schema.GroupVersionKind{ + Group: "gateway.solo.io", + Version: "v1", + Kind: "VirtualHostOption", +} + +// VirtualHostOption is the Schema for the virtualHostOption API +type VirtualHostOption struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec VirtualHostOptionSpec `json:"spec,omitempty"` + Status VirtualHostOptionStatus `json:"status,omitempty"` +} + +// GVK returns the GroupVersionKind associated with the resource type. +func (VirtualHostOption) GVK() schema.GroupVersionKind { + return VirtualHostOptionGVK +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// VirtualHostOptionList contains a list of VirtualHostOption +type VirtualHostOptionList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []VirtualHostOption `json:"items"` +} + func init() { SchemeBuilder.Register(&Gateway{}, &GatewayList{}) + SchemeBuilder.Register(&HttpListenerOption{}, &HttpListenerOptionList{}) + SchemeBuilder.Register(&ListenerOption{}, &ListenerOptionList{}) + SchemeBuilder.Register(&MatchableHttpGateway{}, &MatchableHttpGatewayList{}) + SchemeBuilder.Register(&MatchableTcpGateway{}, &MatchableTcpGatewayList{}) + SchemeBuilder.Register(&RouteOption{}, &RouteOptionList{}) SchemeBuilder.Register(&RouteTable{}, &RouteTableList{}) SchemeBuilder.Register(&VirtualService{}, &VirtualServiceList{}) + SchemeBuilder.Register(&VirtualHostOption{}, &VirtualHostOptionList{}) } diff --git a/pkg/api/gateway.solo.io/v1/virtual_service.pb.clone.go b/pkg/api/gateway.solo.io/v1/virtual_service.pb.clone.go new file mode 100644 index 000000000..bf6685a22 --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/virtual_service.pb.clone.go @@ -0,0 +1,423 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/virtual_service.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_core_matchers "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/core/matchers" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *VirtualServiceSpec) Clone() proto.Message { + var target *VirtualServiceSpec + if m == nil { + return target + } + target = &VirtualServiceSpec{} + + if h, ok := interface{}(m.GetVirtualHost()).(clone.Cloner); ok { + target.VirtualHost = h.Clone().(*VirtualHost) + } else { + target.VirtualHost = proto.Clone(m.GetVirtualHost()).(*VirtualHost) + } + + if h, ok := interface{}(m.GetSslConfig()).(clone.Cloner); ok { + target.SslConfig = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.SslConfig) + } else { + target.SslConfig = proto.Clone(m.GetSslConfig()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.SslConfig) + } + + target.DisplayName = m.GetDisplayName() + + return target +} + +// Clone function +func (m *VirtualHost) Clone() proto.Message { + var target *VirtualHost + if m == nil { + return target + } + target = &VirtualHost{} + + if m.GetDomains() != nil { + target.Domains = make([]string, len(m.GetDomains())) + for idx, v := range m.GetDomains() { + + target.Domains[idx] = v + + } + } + + if m.GetRoutes() != nil { + target.Routes = make([]*Route, len(m.GetRoutes())) + for idx, v := range m.GetRoutes() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Routes[idx] = h.Clone().(*Route) + } else { + target.Routes[idx] = proto.Clone(v).(*Route) + } + + } + } + + if h, ok := interface{}(m.GetOptions()).(clone.Cloner); ok { + target.Options = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.VirtualHostOptions) + } else { + target.Options = proto.Clone(m.GetOptions()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.VirtualHostOptions) + } + + switch m.ExternalOptionsConfig.(type) { + + case *VirtualHost_OptionsConfigRefs: + + if h, ok := interface{}(m.GetOptionsConfigRefs()).(clone.Cloner); ok { + target.ExternalOptionsConfig = &VirtualHost_OptionsConfigRefs{ + OptionsConfigRefs: h.Clone().(*DelegateOptionsRefs), + } + } else { + target.ExternalOptionsConfig = &VirtualHost_OptionsConfigRefs{ + OptionsConfigRefs: proto.Clone(m.GetOptionsConfigRefs()).(*DelegateOptionsRefs), + } + } + + } + + return target +} + +// Clone function +func (m *Route) Clone() proto.Message { + var target *Route + if m == nil { + return target + } + target = &Route{} + + if m.GetMatchers() != nil { + target.Matchers = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_core_matchers.Matcher, len(m.GetMatchers())) + for idx, v := range m.GetMatchers() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Matchers[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_core_matchers.Matcher) + } else { + target.Matchers[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_core_matchers.Matcher) + } + + } + } + + if h, ok := interface{}(m.GetInheritableMatchers()).(clone.Cloner); ok { + target.InheritableMatchers = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.InheritableMatchers = proto.Clone(m.GetInheritableMatchers()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetInheritablePathMatchers()).(clone.Cloner); ok { + target.InheritablePathMatchers = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.InheritablePathMatchers = proto.Clone(m.GetInheritablePathMatchers()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetOptions()).(clone.Cloner); ok { + target.Options = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.RouteOptions) + } else { + target.Options = proto.Clone(m.GetOptions()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.RouteOptions) + } + + target.Name = m.GetName() + + switch m.Action.(type) { + + case *Route_RouteAction: + + if h, ok := interface{}(m.GetRouteAction()).(clone.Cloner); ok { + target.Action = &Route_RouteAction{ + RouteAction: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.RouteAction), + } + } else { + target.Action = &Route_RouteAction{ + RouteAction: proto.Clone(m.GetRouteAction()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.RouteAction), + } + } + + case *Route_RedirectAction: + + if h, ok := interface{}(m.GetRedirectAction()).(clone.Cloner); ok { + target.Action = &Route_RedirectAction{ + RedirectAction: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.RedirectAction), + } + } else { + target.Action = &Route_RedirectAction{ + RedirectAction: proto.Clone(m.GetRedirectAction()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.RedirectAction), + } + } + + case *Route_DirectResponseAction: + + if h, ok := interface{}(m.GetDirectResponseAction()).(clone.Cloner); ok { + target.Action = &Route_DirectResponseAction{ + DirectResponseAction: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.DirectResponseAction), + } + } else { + target.Action = &Route_DirectResponseAction{ + DirectResponseAction: proto.Clone(m.GetDirectResponseAction()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1.DirectResponseAction), + } + } + + case *Route_DelegateAction: + + if h, ok := interface{}(m.GetDelegateAction()).(clone.Cloner); ok { + target.Action = &Route_DelegateAction{ + DelegateAction: h.Clone().(*DelegateAction), + } + } else { + target.Action = &Route_DelegateAction{ + DelegateAction: proto.Clone(m.GetDelegateAction()).(*DelegateAction), + } + } + + } + + switch m.ExternalOptionsConfig.(type) { + + case *Route_OptionsConfigRefs: + + if h, ok := interface{}(m.GetOptionsConfigRefs()).(clone.Cloner); ok { + target.ExternalOptionsConfig = &Route_OptionsConfigRefs{ + OptionsConfigRefs: h.Clone().(*DelegateOptionsRefs), + } + } else { + target.ExternalOptionsConfig = &Route_OptionsConfigRefs{ + OptionsConfigRefs: proto.Clone(m.GetOptionsConfigRefs()).(*DelegateOptionsRefs), + } + } + + } + + return target +} + +// Clone function +func (m *DelegateOptionsRefs) Clone() proto.Message { + var target *DelegateOptionsRefs + if m == nil { + return target + } + target = &DelegateOptionsRefs{} + + if m.GetDelegateOptions() != nil { + target.DelegateOptions = make([]*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef, len(m.GetDelegateOptions())) + for idx, v := range m.GetDelegateOptions() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.DelegateOptions[idx] = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.DelegateOptions[idx] = proto.Clone(v).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + } + } + + return target +} + +// Clone function +func (m *DelegateAction) Clone() proto.Message { + var target *DelegateAction + if m == nil { + return target + } + target = &DelegateAction{} + + target.Name = m.GetName() + + target.Namespace = m.GetNamespace() + + switch m.DelegationType.(type) { + + case *DelegateAction_Ref: + + if h, ok := interface{}(m.GetRef()).(clone.Cloner); ok { + target.DelegationType = &DelegateAction_Ref{ + Ref: h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } else { + target.DelegationType = &DelegateAction_Ref{ + Ref: proto.Clone(m.GetRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } + + case *DelegateAction_Selector: + + if h, ok := interface{}(m.GetSelector()).(clone.Cloner); ok { + target.DelegationType = &DelegateAction_Selector{ + Selector: h.Clone().(*RouteTableSelector), + } + } else { + target.DelegationType = &DelegateAction_Selector{ + Selector: proto.Clone(m.GetSelector()).(*RouteTableSelector), + } + } + + } + + return target +} + +// Clone function +func (m *RouteTableSelector) Clone() proto.Message { + var target *RouteTableSelector + if m == nil { + return target + } + target = &RouteTableSelector{} + + if m.GetNamespaces() != nil { + target.Namespaces = make([]string, len(m.GetNamespaces())) + for idx, v := range m.GetNamespaces() { + + target.Namespaces[idx] = v + + } + } + + if m.GetLabels() != nil { + target.Labels = make(map[string]string, len(m.GetLabels())) + for k, v := range m.GetLabels() { + + target.Labels[k] = v + + } + } + + if m.GetExpressions() != nil { + target.Expressions = make([]*RouteTableSelector_Expression, len(m.GetExpressions())) + for idx, v := range m.GetExpressions() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Expressions[idx] = h.Clone().(*RouteTableSelector_Expression) + } else { + target.Expressions[idx] = proto.Clone(v).(*RouteTableSelector_Expression) + } + + } + } + + return target +} + +// Clone function +func (m *VirtualServiceStatus) Clone() proto.Message { + var target *VirtualServiceStatus + if m == nil { + return target + } + target = &VirtualServiceStatus{} + + target.State = m.GetState() + + target.Reason = m.GetReason() + + target.ReportedBy = m.GetReportedBy() + + if m.GetSubresourceStatuses() != nil { + target.SubresourceStatuses = make(map[string]*VirtualServiceStatus, len(m.GetSubresourceStatuses())) + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SubresourceStatuses[k] = h.Clone().(*VirtualServiceStatus) + } else { + target.SubresourceStatuses[k] = proto.Clone(v).(*VirtualServiceStatus) + } + + } + } + + if h, ok := interface{}(m.GetDetails()).(clone.Cloner); ok { + target.Details = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Details = proto.Clone(m.GetDetails()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + return target +} + +// Clone function +func (m *VirtualServiceNamespacedStatuses) Clone() proto.Message { + var target *VirtualServiceNamespacedStatuses + if m == nil { + return target + } + target = &VirtualServiceNamespacedStatuses{} + + if m.GetStatuses() != nil { + target.Statuses = make(map[string]*VirtualServiceStatus, len(m.GetStatuses())) + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Statuses[k] = h.Clone().(*VirtualServiceStatus) + } else { + target.Statuses[k] = proto.Clone(v).(*VirtualServiceStatus) + } + + } + } + + return target +} + +// Clone function +func (m *RouteTableSelector_Expression) Clone() proto.Message { + var target *RouteTableSelector_Expression + if m == nil { + return target + } + target = &RouteTableSelector_Expression{} + + target.Key = m.GetKey() + + target.Operator = m.GetOperator() + + if m.GetValues() != nil { + target.Values = make([]string, len(m.GetValues())) + for idx, v := range m.GetValues() { + + target.Values[idx] = v + + } + } + + return target +} diff --git a/pkg/api/gateway.solo.io/v1/virtual_service.pb.equal.go b/pkg/api/gateway.solo.io/v1/virtual_service.pb.equal.go index 8171f9290..d2d9d370d 100644 --- a/pkg/api/gateway.solo.io/v1/virtual_service.pb.equal.go +++ b/pkg/api/gateway.solo.io/v1/virtual_service.pb.equal.go @@ -135,6 +135,9 @@ func (m *VirtualHost) Equal(that interface{}) bool { switch m.ExternalOptionsConfig.(type) { case *VirtualHost_OptionsConfigRefs: + if _, ok := target.ExternalOptionsConfig.(*VirtualHost_OptionsConfigRefs); !ok { + return false + } if h, ok := interface{}(m.GetOptionsConfigRefs()).(equality.Equalizer); ok { if !h.Equal(target.GetOptionsConfigRefs()) { @@ -146,6 +149,11 @@ func (m *VirtualHost) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.ExternalOptionsConfig != target.ExternalOptionsConfig { + return false + } } return true @@ -226,6 +234,9 @@ func (m *Route) Equal(that interface{}) bool { switch m.Action.(type) { case *Route_RouteAction: + if _, ok := target.Action.(*Route_RouteAction); !ok { + return false + } if h, ok := interface{}(m.GetRouteAction()).(equality.Equalizer); ok { if !h.Equal(target.GetRouteAction()) { @@ -238,6 +249,9 @@ func (m *Route) Equal(that interface{}) bool { } case *Route_RedirectAction: + if _, ok := target.Action.(*Route_RedirectAction); !ok { + return false + } if h, ok := interface{}(m.GetRedirectAction()).(equality.Equalizer); ok { if !h.Equal(target.GetRedirectAction()) { @@ -250,6 +264,9 @@ func (m *Route) Equal(that interface{}) bool { } case *Route_DirectResponseAction: + if _, ok := target.Action.(*Route_DirectResponseAction); !ok { + return false + } if h, ok := interface{}(m.GetDirectResponseAction()).(equality.Equalizer); ok { if !h.Equal(target.GetDirectResponseAction()) { @@ -262,6 +279,9 @@ func (m *Route) Equal(that interface{}) bool { } case *Route_DelegateAction: + if _, ok := target.Action.(*Route_DelegateAction); !ok { + return false + } if h, ok := interface{}(m.GetDelegateAction()).(equality.Equalizer); ok { if !h.Equal(target.GetDelegateAction()) { @@ -273,11 +293,19 @@ func (m *Route) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.Action != target.Action { + return false + } } switch m.ExternalOptionsConfig.(type) { case *Route_OptionsConfigRefs: + if _, ok := target.ExternalOptionsConfig.(*Route_OptionsConfigRefs); !ok { + return false + } if h, ok := interface{}(m.GetOptionsConfigRefs()).(equality.Equalizer); ok { if !h.Equal(target.GetOptionsConfigRefs()) { @@ -289,6 +317,11 @@ func (m *Route) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.ExternalOptionsConfig != target.ExternalOptionsConfig { + return false + } } return true @@ -367,6 +400,9 @@ func (m *DelegateAction) Equal(that interface{}) bool { switch m.DelegationType.(type) { case *DelegateAction_Ref: + if _, ok := target.DelegationType.(*DelegateAction_Ref); !ok { + return false + } if h, ok := interface{}(m.GetRef()).(equality.Equalizer); ok { if !h.Equal(target.GetRef()) { @@ -379,6 +415,9 @@ func (m *DelegateAction) Equal(that interface{}) bool { } case *DelegateAction_Selector: + if _, ok := target.DelegationType.(*DelegateAction_Selector); !ok { + return false + } if h, ok := interface{}(m.GetSelector()).(equality.Equalizer); ok { if !h.Equal(target.GetSelector()) { @@ -390,6 +429,11 @@ func (m *DelegateAction) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.DelegationType != target.DelegationType { + return false + } } return true @@ -521,6 +565,47 @@ func (m *VirtualServiceStatus) Equal(that interface{}) bool { return true } +// Equal function +func (m *VirtualServiceNamespacedStatuses) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*VirtualServiceNamespacedStatuses) + if !ok { + that2, ok := that.(VirtualServiceNamespacedStatuses) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetStatuses()) != len(target.GetStatuses()) { + return false + } + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetStatuses()[k]) { + return false + } + } + + } + + return true +} + // Equal function func (m *RouteTableSelector_Expression) Equal(that interface{}) bool { if that == nil { diff --git a/pkg/api/gateway.solo.io/v1/virtual_service.pb.go b/pkg/api/gateway.solo.io/v1/virtual_service.pb.go index 8681d734f..4b4b37ea0 100644 --- a/pkg/api/gateway.solo.io/v1/virtual_service.pb.go +++ b/pkg/api/gateway.solo.io/v1/virtual_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/virtual_service.proto @@ -9,16 +9,17 @@ package v1 import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - _struct "github.com/golang/protobuf/ptypes/struct" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" v1 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1" matchers "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/core/matchers" + ssl "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl" core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -28,10 +29,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Route Table Selector expression operator, while the set-based syntax differs from Kubernetes (kubernetes: `key: !mylabel`, gloo: `key: mylabel, operator: "!"` | kubernetes: `key: mylabel`, gloo: `key: mylabel, operator: exists`), the functionality remains the same. type RouteTableSelector_Expression_Operator int32 @@ -167,8 +164,6 @@ func (VirtualServiceStatus_State) EnumDescriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_rawDescGZIP(), []int{6, 0} } -// -// // The **VirtualService** is the root routing object for the Gloo Gateway. // A virtual service describes the set of routes to match for a set of domains. // @@ -190,21 +185,24 @@ func (VirtualServiceStatus_State) EnumDescriptor() ([]byte, []int) { // apiVersion: gateway.solo.io/v1 // kind: VirtualService // metadata: -// name: 'http' -// namespace: 'usernamespace' +// +// name: 'http' +// namespace: 'usernamespace' +// // spec: -// virtualHost: -// domains: -// - '*.mydomain.com' -// - 'mydomain.com' -// routes: -// - matchers: -// - prefix: '/' -// # delegate all traffic to the `shared-routes` RouteTable -// delegateAction: -// ref: -// name: 'shared-routes' -// namespace: 'usernamespace' +// +// virtualHost: +// domains: +// - '*.mydomain.com' +// - 'mydomain.com' +// routes: +// - matchers: +// - prefix: '/' +// # delegate all traffic to the `shared-routes` RouteTable +// delegateAction: +// ref: +// name: 'shared-routes' +// namespace: 'usernamespace' // // ``` // @@ -213,25 +211,28 @@ func (VirtualServiceStatus_State) EnumDescriptor() ([]byte, []int) { // apiVersion: gateway.solo.io/v1 // kind: VirtualService // metadata: -// name: 'https' -// namespace: 'usernamespace' +// +// name: 'https' +// namespace: 'usernamespace' +// // spec: -// virtualHost: -// domains: -// - '*.mydomain.com' -// - 'mydomain.com' -// routes: -// - matchers: -// - prefix: '/' -// # delegate all traffic to the `shared-routes` RouteTable -// delegateAction: -// ref: -// name: 'shared-routes' -// namespace: 'usernamespace' -// sslConfig: -// secretRef: -// name: gateway-tls -// namespace: gloo-system +// +// virtualHost: +// domains: +// - '*.mydomain.com' +// - 'mydomain.com' +// routes: +// - matchers: +// - prefix: '/' +// # delegate all traffic to the `shared-routes` RouteTable +// delegateAction: +// ref: +// name: 'shared-routes' +// namespace: 'usernamespace' +// sslConfig: +// secretRef: +// name: gateway-tls +// namespace: gloo-system // // ``` // @@ -240,17 +241,21 @@ func (VirtualServiceStatus_State) EnumDescriptor() ([]byte, []int) { // apiVersion: gateway.solo.io/v1 // kind: RouteTable // metadata: -// name: 'shared-routes' -// namespace: 'usernamespace' +// +// name: 'shared-routes' +// namespace: 'usernamespace' +// // spec: -// routes: -// - matchers: -// - prefix: '/some-route' -// routeAction: -// single: -// upstream: -// name: 'some-upstream' -// ... +// +// routes: +// - matchers: +// - prefix: '/some-route' +// routeAction: +// single: +// upstream: +// name: 'some-upstream' +// ... +// // ``` // // **Delegated Routes** are routes that use the `delegateAction` routing action. Delegated Routes obey the following @@ -259,33 +264,26 @@ func (VirtualServiceStatus_State) EnumDescriptor() ([]byte, []int) { // - delegate routes must use `prefix` path matchers // - delegated routes cannot specify header, query, or methods portion of the normal route matcher. // - `routeOptions` configuration will be inherited from parent routes, but can be overridden by the child -// type VirtualServiceSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The VirtualHost contains the - // The list of HTTP routes define routing actions to be taken - // for incoming HTTP requests whose host header matches - // this virtual host. If the request matches more than one route in the list, the first route matched will be selected. - // If the list of routes is empty, the virtual host will be ignored by Gloo. + state protoimpl.MessageState `protogen:"open.v1"` + // The VirtualHost contains configuration for serving a list of routes for a set of domains along with options for + // configuring traffic VirtualHost *VirtualHost `protobuf:"bytes,1,opt,name=virtual_host,json=virtualHost,proto3" json:"virtual_host,omitempty"` // If provided, the Gateway will serve TLS/SSL traffic for this set of routes - SslConfig *v1.SslConfig `protobuf:"bytes,2,opt,name=ssl_config,json=sslConfig,proto3" json:"ssl_config,omitempty"` + SslConfig *ssl.SslConfig `protobuf:"bytes,2,opt,name=ssl_config,json=sslConfig,proto3" json:"ssl_config,omitempty"` // Display only, optional descriptive name. // Unlike metadata.name, DisplayName can be any string // and can be changed after creating the resource. - DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VirtualServiceSpec) Reset() { *x = VirtualServiceSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VirtualServiceSpec) String() string { @@ -296,7 +294,7 @@ func (*VirtualServiceSpec) ProtoMessage() {} func (x *VirtualServiceSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -318,7 +316,7 @@ func (x *VirtualServiceSpec) GetVirtualHost() *VirtualHost { return nil } -func (x *VirtualServiceSpec) GetSslConfig() *v1.SslConfig { +func (x *VirtualServiceSpec) GetSslConfig() *ssl.SslConfig { if x != nil { return x.SslConfig } @@ -332,27 +330,22 @@ func (x *VirtualServiceSpec) GetDisplayName() string { return "" } +// Virtual Hosts serve an ordered list of routes for a set of domains. // -//Virtual Hosts serve an ordered list of routes for a set of domains. -// -//An HTTP request is first matched to a virtual host based on its host header, then to a route within the virtual host. -// -//If a request is not matched to any virtual host or a route therein, the target proxy will reply with a 404. +// An HTTP request is first matched to a virtual host based on its host header, then to a route within the virtual host. // -//Unlike the [Gloo Virtual Host]({{< ref "/reference/api/github.com/solo-io/solo-apis/api/gloo/gloo/v1/proxy.proto.sk.md" >}}/#virtualhost), -//Gateway* Virtual Hosts can **delegate** their routes to `RouteTables`. +// If a request is not matched to any virtual host or a route therein, the target proxy will reply with a 404. // +// Unlike the [Gloo Virtual Host]({{< versioned_link_path fromRoot="/reference/api/github.com/solo-io/solo-apis/api/gloo/gloo/v1/proxy.proto.sk/#virtualhost" >}}), +// _Gateway_ Virtual Hosts can delegate their routes to `RouteTables`. type VirtualHost struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The list of domains (i.e.: matching the `Host` header of a request) that belong to this virtual host. // Note that the wildcard will not match the empty string. e.g. “\*-bar.foo.com” will match “baz-bar.foo.com” // but not “-bar.foo.com”. Additionally, a special entry “*” is allowed which will match any host/authority header. // Only a single virtual host on a gateway can match on “*”. A domain must be unique across all // virtual hosts on a gateway or the config will be invalidated by Gloo - // Domains on virtual hosts obey the same rules as [Envoy Virtual Hosts](https://github.com/envoyproxy/envoy/blob/master/api/envoy/api/v2/route/route.proto) + // Domains on virtual hosts obey the same rules as [Envoy Virtual Hosts](https://github.com/envoyproxy/envoy/blob/main/api/envoy/api/v2/route/route.proto) Domains []string `protobuf:"bytes,2,rep,name=domains,proto3" json:"domains,omitempty"` // The list of HTTP routes define routing actions to be taken for incoming HTTP requests whose host header matches // this virtual host. If the request matches more than one route in the list, the first route matched will be selected. @@ -361,18 +354,19 @@ type VirtualHost struct { // Virtual host options contain additional configuration to be applied to all traffic served by the Virtual Host. // Some configuration here can be overridden by Route Options. Options *v1.VirtualHostOptions `protobuf:"bytes,4,opt,name=options,proto3" json:"options,omitempty"` - // Types that are assignable to ExternalOptionsConfig: + // Types that are valid to be assigned to ExternalOptionsConfig: + // // *VirtualHost_OptionsConfigRefs ExternalOptionsConfig isVirtualHost_ExternalOptionsConfig `protobuf_oneof:"external_options_config"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VirtualHost) Reset() { *x = VirtualHost{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VirtualHost) String() string { @@ -383,7 +377,7 @@ func (*VirtualHost) ProtoMessage() {} func (x *VirtualHost) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -419,16 +413,18 @@ func (x *VirtualHost) GetOptions() *v1.VirtualHostOptions { return nil } -func (m *VirtualHost) GetExternalOptionsConfig() isVirtualHost_ExternalOptionsConfig { - if m != nil { - return m.ExternalOptionsConfig +func (x *VirtualHost) GetExternalOptionsConfig() isVirtualHost_ExternalOptionsConfig { + if x != nil { + return x.ExternalOptionsConfig } return nil } func (x *VirtualHost) GetOptionsConfigRefs() *DelegateOptionsRefs { - if x, ok := x.GetExternalOptionsConfig().(*VirtualHost_OptionsConfigRefs); ok { - return x.OptionsConfigRefs + if x != nil { + if x, ok := x.ExternalOptionsConfig.(*VirtualHost_OptionsConfigRefs); ok { + return x.OptionsConfigRefs + } } return nil } @@ -439,46 +435,43 @@ type isVirtualHost_ExternalOptionsConfig interface { type VirtualHost_OptionsConfigRefs struct { // Delegate the VirtualHost options to an external VirtualHostOption Resource. - //Any options configured in the VirtualHost's `options` field will override all - //delegated options. If multiple VirtualHostOption CRs are delegated to, configuration will - //be taken from prior VirtualHostOption CRs over later ones. - //For example if `headerManipulation` is specified on the VirtualHost options, a delegated - //`VirtualHostOption` vhost-opt-1, and a second delegated `VirtualHostOption` vhost-opt-2, the `headerManipulation` - //config from only the VirtualHost-level `options` will be applied. If the config is removed from the VirtualHost-level `options` field, - //then the config from the first delegated `VirtualHostOption`, vhost-opt-1, is applied. + // Any options configured in the VirtualHost's `options` field will override all + // delegated options. If multiple VirtualHostOption CRs are delegated to, configuration will + // be taken from prior VirtualHostOption CRs over later ones. + // For example if `headerManipulation` is specified on the VirtualHost options, a delegated + // `VirtualHostOption` vhost-opt-1, and a second delegated `VirtualHostOption` vhost-opt-2, the `headerManipulation` + // config from only the VirtualHost-level `options` will be applied. If the config is removed from the VirtualHost-level `options` field, + // then the config from the first delegated `VirtualHostOption`, vhost-opt-1, is applied. OptionsConfigRefs *DelegateOptionsRefs `protobuf:"bytes,5,opt,name=options_config_refs,json=optionsConfigRefs,proto3,oneof"` } func (*VirtualHost_OptionsConfigRefs) isVirtualHost_ExternalOptionsConfig() {} -// // A route specifies how to match a request and what action to take when the request is matched. // // When a request matches on a route, the route can perform one of the following actions: // - *Route* the request to a destination // - Reply with a *Direct Response* // - Send a *Redirect* response to the client -// - *Delegate* the action for the request to one or more top-level [`RouteTable`]({{< ref "/reference/api/github.com/solo-io/solo-apis/api/gloo/gateway/v1/route_table.proto.sk.md" >}}) resources +// - *Delegate* the action for the request to one or more top-level [`RouteTable`]({{< versioned_link_path fromRoot="/reference/api/github.com/solo-io/solo-apis/api/gloo/gateway/v1/route_table.proto.sk.md" >}}) resources // DelegateActions can be used to delegate the behavior for a set out routes with a given *prefix* to // top-level `RouteTable` resources. type Route struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Matchers contain parameters for matching requests (i.e., based on HTTP path, headers, etc.). // If empty, the route will match all requests (i.e, a single "/" path prefix matcher). // For delegated routes, any parent matcher must have a `prefix` path matcher. Matchers []*matchers.Matcher `protobuf:"bytes,1,rep,name=matchers,proto3" json:"matchers,omitempty"` // Whether this route as a child should inherit headers, methods, and query parameter matchers from the parent. // Defaults to value of parent; for virtual services (no parent) defaults to false. - InheritableMatchers *wrappers.BoolValue `protobuf:"bytes,8,opt,name=inheritable_matchers,json=inheritableMatchers,proto3" json:"inheritable_matchers,omitempty"` + InheritableMatchers *wrapperspb.BoolValue `protobuf:"bytes,8,opt,name=inheritable_matchers,json=inheritableMatchers,proto3" json:"inheritable_matchers,omitempty"` // Whether this route as a child should inherit path matchers (i.e., path itself, case-sensitive setting) from // the parent. Defaults to value of parent; for virtual services (no parent) defaults to false. - InheritablePathMatchers *wrappers.BoolValue `protobuf:"bytes,9,opt,name=inheritable_path_matchers,json=inheritablePathMatchers,proto3" json:"inheritable_path_matchers,omitempty"` + InheritablePathMatchers *wrapperspb.BoolValue `protobuf:"bytes,9,opt,name=inheritable_path_matchers,json=inheritablePathMatchers,proto3" json:"inheritable_path_matchers,omitempty"` // The Route Action Defines what action the proxy should take when a request matches the route. // - // Types that are assignable to Action: + // Types that are valid to be assigned to Action: + // // *Route_RouteAction // *Route_RedirectAction // *Route_DirectResponseAction @@ -490,18 +483,19 @@ type Route struct { Options *v1.RouteOptions `protobuf:"bytes,6,opt,name=options,proto3" json:"options,omitempty"` // The name provides a convenience for users to be able to refer to a route by name. Name string `protobuf:"bytes,7,opt,name=name,proto3" json:"name,omitempty"` - // Types that are assignable to ExternalOptionsConfig: + // Types that are valid to be assigned to ExternalOptionsConfig: + // // *Route_OptionsConfigRefs ExternalOptionsConfig isRoute_ExternalOptionsConfig `protobuf_oneof:"external_options_config"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Route) Reset() { *x = Route{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Route) String() string { @@ -512,7 +506,7 @@ func (*Route) ProtoMessage() {} func (x *Route) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -534,51 +528,59 @@ func (x *Route) GetMatchers() []*matchers.Matcher { return nil } -func (x *Route) GetInheritableMatchers() *wrappers.BoolValue { +func (x *Route) GetInheritableMatchers() *wrapperspb.BoolValue { if x != nil { return x.InheritableMatchers } return nil } -func (x *Route) GetInheritablePathMatchers() *wrappers.BoolValue { +func (x *Route) GetInheritablePathMatchers() *wrapperspb.BoolValue { if x != nil { return x.InheritablePathMatchers } return nil } -func (m *Route) GetAction() isRoute_Action { - if m != nil { - return m.Action +func (x *Route) GetAction() isRoute_Action { + if x != nil { + return x.Action } return nil } func (x *Route) GetRouteAction() *v1.RouteAction { - if x, ok := x.GetAction().(*Route_RouteAction); ok { - return x.RouteAction + if x != nil { + if x, ok := x.Action.(*Route_RouteAction); ok { + return x.RouteAction + } } return nil } func (x *Route) GetRedirectAction() *v1.RedirectAction { - if x, ok := x.GetAction().(*Route_RedirectAction); ok { - return x.RedirectAction + if x != nil { + if x, ok := x.Action.(*Route_RedirectAction); ok { + return x.RedirectAction + } } return nil } func (x *Route) GetDirectResponseAction() *v1.DirectResponseAction { - if x, ok := x.GetAction().(*Route_DirectResponseAction); ok { - return x.DirectResponseAction + if x != nil { + if x, ok := x.Action.(*Route_DirectResponseAction); ok { + return x.DirectResponseAction + } } return nil } func (x *Route) GetDelegateAction() *DelegateAction { - if x, ok := x.GetAction().(*Route_DelegateAction); ok { - return x.DelegateAction + if x != nil { + if x, ok := x.Action.(*Route_DelegateAction); ok { + return x.DelegateAction + } } return nil } @@ -597,16 +599,18 @@ func (x *Route) GetName() string { return "" } -func (m *Route) GetExternalOptionsConfig() isRoute_ExternalOptionsConfig { - if m != nil { - return m.ExternalOptionsConfig +func (x *Route) GetExternalOptionsConfig() isRoute_ExternalOptionsConfig { + if x != nil { + return x.ExternalOptionsConfig } return nil } func (x *Route) GetOptionsConfigRefs() *DelegateOptionsRefs { - if x, ok := x.GetExternalOptionsConfig().(*Route_OptionsConfigRefs); ok { - return x.OptionsConfigRefs + if x != nil { + if x, ok := x.ExternalOptionsConfig.(*Route_OptionsConfigRefs); ok { + return x.OptionsConfigRefs + } } return nil } @@ -650,35 +654,31 @@ type isRoute_ExternalOptionsConfig interface { type Route_OptionsConfigRefs struct { // Delegate the Route options to an external RouteOption Resource. - //Any options configured in the Route's `options` field will override all - //delegated options. If multiple RouteOption CRs are delegated to, configuration will - //be taken from prior RouteOption CRs over later ones. - //For example if `headerManipulation` is specified on the route options, a delegated - //`RouteOption` route-opt-1, and a second delegated `RouteOption` route-opt-2, the `headerManipulation` - //config from only the Route-level `options` will be applied. If the config is removed from the Route-level `options` field, - //then the config from the first delegated `RouteOption`, route-opt-1, is applied. + // Any options configured in the Route's `options` field will override all + // delegated options. If multiple RouteOption CRs are delegated to, configuration will + // be taken from prior RouteOption CRs over later ones. + // For example if `headerManipulation` is specified on the route options, a delegated + // `RouteOption` route-opt-1, and a second delegated `RouteOption` route-opt-2, the `headerManipulation` + // config from only the Route-level `options` will be applied. If the config is removed from the Route-level `options` field, + // then the config from the first delegated `RouteOption`, route-opt-1, is applied. OptionsConfigRefs *DelegateOptionsRefs `protobuf:"bytes,10,opt,name=options_config_refs,json=optionsConfigRefs,proto3,oneof"` } func (*Route_OptionsConfigRefs) isRoute_ExternalOptionsConfig() {} type DelegateOptionsRefs struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // - //List of resource refs to Option CRs + state protoimpl.MessageState `protogen:"open.v1"` + // List of resource refs to Option CRs DelegateOptions []*core.ResourceRef `protobuf:"bytes,1,rep,name=delegate_options,json=delegateOptions,proto3" json:"delegate_options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DelegateOptionsRefs) Reset() { *x = DelegateOptionsRefs{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DelegateOptionsRefs) String() string { @@ -689,7 +689,7 @@ func (*DelegateOptionsRefs) ProtoMessage() {} func (x *DelegateOptionsRefs) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -713,35 +713,33 @@ func (x *DelegateOptionsRefs) GetDelegateOptions() []*core.ResourceRef { // DelegateActions are used to delegate routing decisions to Route Tables. type DelegateAction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the Route Table to delegate to. // Deprecated: these fields have been added for backwards-compatibility. Please use the `ref` field. If `name` // and/or `namespace` have been specified, Gloo will ignore `ref` and `selector`. // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gateway/v1/virtual_service.proto. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // The namespace of the Route Table to delegate to. // Deprecated: these fields have been added for backwards-compatibility. Please use the `ref` field. If `name` // and/or `namespace` have been specified, Gloo will ignore `ref` and `selector`. // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gateway/v1/virtual_service.proto. Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - // Types that are assignable to DelegationType: + // Types that are valid to be assigned to DelegationType: + // // *DelegateAction_Ref // *DelegateAction_Selector DelegationType isDelegateAction_DelegationType `protobuf_oneof:"delegation_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DelegateAction) Reset() { *x = DelegateAction{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DelegateAction) String() string { @@ -752,7 +750,7 @@ func (*DelegateAction) ProtoMessage() {} func (x *DelegateAction) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -767,7 +765,7 @@ func (*DelegateAction) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_rawDescGZIP(), []int{4} } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gateway/v1/virtual_service.proto. func (x *DelegateAction) GetName() string { if x != nil { return x.Name @@ -775,7 +773,7 @@ func (x *DelegateAction) GetName() string { return "" } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gateway/v1/virtual_service.proto. func (x *DelegateAction) GetNamespace() string { if x != nil { return x.Namespace @@ -783,23 +781,27 @@ func (x *DelegateAction) GetNamespace() string { return "" } -func (m *DelegateAction) GetDelegationType() isDelegateAction_DelegationType { - if m != nil { - return m.DelegationType +func (x *DelegateAction) GetDelegationType() isDelegateAction_DelegationType { + if x != nil { + return x.DelegationType } return nil } func (x *DelegateAction) GetRef() *core.ResourceRef { - if x, ok := x.GetDelegationType().(*DelegateAction_Ref); ok { - return x.Ref + if x != nil { + if x, ok := x.DelegationType.(*DelegateAction_Ref); ok { + return x.Ref + } } return nil } func (x *DelegateAction) GetSelector() *RouteTableSelector { - if x, ok := x.GetDelegationType().(*DelegateAction_Selector); ok { - return x.Selector + if x != nil { + if x, ok := x.DelegationType.(*DelegateAction_Selector); ok { + return x.Selector + } } return nil } @@ -824,28 +826,25 @@ func (*DelegateAction_Selector) isDelegateAction_DelegationType() {} // Select route tables for delegation by namespace, labels, or both. type RouteTableSelector struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Delegate to Route Tables in these namespaces. If omitted, Gloo will only select Route Tables in the same namespace // as the resource (Virtual Service or Route Table) that owns this selector. The reserved value "*" can be used to // select Route Tables in all namespaces watched by Gloo. Namespaces []string `protobuf:"bytes,1,rep,name=namespaces,proto3" json:"namespaces,omitempty"` // Delegate to Route Tables whose labels match the ones specified here. - Labels map[string]string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Labels map[string]string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Expressions allow for more flexible Route Tables label matching, such as equality-based requirements, set-based requirements, or a combination of both. // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#equality-based-requirement - Expressions []*RouteTableSelector_Expression `protobuf:"bytes,3,rep,name=expressions,proto3" json:"expressions,omitempty"` + Expressions []*RouteTableSelector_Expression `protobuf:"bytes,3,rep,name=expressions,proto3" json:"expressions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteTableSelector) Reset() { *x = RouteTableSelector{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteTableSelector) String() string { @@ -856,7 +855,7 @@ func (*RouteTableSelector) ProtoMessage() {} func (x *RouteTableSelector) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -893,10 +892,7 @@ func (x *RouteTableSelector) GetExpressions() []*RouteTableSelector_Expression { } type VirtualServiceStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // State is the enum indicating the state of the resource State VirtualServiceStatus_State `protobuf:"varint,1,opt,name=state,proto3,enum=gateway.solo.io.VirtualServiceStatus_State" json:"state,omitempty"` // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty @@ -904,18 +900,18 @@ type VirtualServiceStatus struct { // Reference to the reporter who wrote this status ReportedBy string `protobuf:"bytes,3,opt,name=reported_by,json=reportedBy,proto3" json:"reported_by,omitempty"` // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource - SubresourceStatuses map[string]*VirtualServiceStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + SubresourceStatuses map[string]*VirtualServiceStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Opaque details about status results - Details *_struct.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + Details *structpb.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VirtualServiceStatus) Reset() { *x = VirtualServiceStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VirtualServiceStatus) String() string { @@ -926,7 +922,7 @@ func (*VirtualServiceStatus) ProtoMessage() {} func (x *VirtualServiceStatus) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -969,33 +965,74 @@ func (x *VirtualServiceStatus) GetSubresourceStatuses() map[string]*VirtualServi return nil } -func (x *VirtualServiceStatus) GetDetails() *_struct.Struct { +func (x *VirtualServiceStatus) GetDetails() *structpb.Struct { if x != nil { return x.Details } return nil } -type RouteTableSelector_Expression struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type VirtualServiceNamespacedStatuses struct { + state protoimpl.MessageState `protogen:"open.v1"` + Statuses map[string]*VirtualServiceStatus `protobuf:"bytes,1,rep,name=statuses,proto3" json:"statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VirtualServiceNamespacedStatuses) Reset() { + *x = VirtualServiceNamespacedStatuses{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} +func (x *VirtualServiceNamespacedStatuses) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VirtualServiceNamespacedStatuses) ProtoMessage() {} + +func (x *VirtualServiceNamespacedStatuses) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VirtualServiceNamespacedStatuses.ProtoReflect.Descriptor instead. +func (*VirtualServiceNamespacedStatuses) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_rawDescGZIP(), []int{7} +} + +func (x *VirtualServiceNamespacedStatuses) GetStatuses() map[string]*VirtualServiceStatus { + if x != nil { + return x.Statuses + } + return nil +} + +type RouteTableSelector_Expression struct { + state protoimpl.MessageState `protogen:"open.v1"` // Kubernetes label key, must conform to Kubernetes syntax requirements // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // The operator can only be in, notin, =, ==, !=, exists, ! (DoesNotExist), gt (GreaterThan), lt (LessThan). - Operator RouteTableSelector_Expression_Operator `protobuf:"varint,2,opt,name=operator,proto3,enum=gateway.solo.io.RouteTableSelector_Expression_Operator" json:"operator,omitempty"` - Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + Operator RouteTableSelector_Expression_Operator `protobuf:"varint,2,opt,name=operator,proto3,enum=gateway.solo.io.RouteTableSelector_Expression_Operator" json:"operator,omitempty"` + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteTableSelector_Expression) Reset() { *x = RouteTableSelector_Expression{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteTableSelector_Expression) String() string { @@ -1005,8 +1042,8 @@ func (x *RouteTableSelector_Expression) String() string { func (*RouteTableSelector_Expression) ProtoMessage() {} func (x *RouteTableSelector_Expression) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[9] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1044,7 +1081,7 @@ func (x *RouteTableSelector_Expression) GetValues() []string { var File_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_rawDesc = string([]byte{ 0x0a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, @@ -1061,203 +1098,225 @@ var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_ 0x72, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x37, 0x67, 0x69, + 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, - 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x73, 0x6c, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, - 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, - 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4a, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, - 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x72, - 0x65, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb6, 0x01, 0x0a, 0x12, 0x56, 0x69, - 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, - 0x12, 0x3f, 0x0a, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x68, 0x6f, 0x73, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, - 0x48, 0x6f, 0x73, 0x74, 0x52, 0x0b, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, - 0x74, 0x12, 0x36, 0x0a, 0x0a, 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, - 0x73, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x27, 0x0a, 0x0c, 0x64, 0x69, 0x73, - 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x04, 0xb8, 0xf5, 0x04, 0x01, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, - 0x6d, 0x65, 0x22, 0x86, 0x02, 0x0a, 0x0b, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, - 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2e, 0x0a, 0x06, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x07, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, 0x72, - 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x56, 0x0a, 0x13, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x72, 0x65, 0x66, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x66, 0x73, 0x48, 0x00, 0x52, 0x11, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x66, 0x73, - 0x42, 0x19, 0x0a, 0x17, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xe7, 0x05, 0x0a, 0x05, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, - 0x72, 0x73, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x08, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, 0x4d, 0x0a, 0x14, 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x13, 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, 0x56, 0x0a, 0x19, 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, - 0x72, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x17, 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, 0x3e, 0x0a, - 0x0c, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, - 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, - 0x0f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5a, 0x0a, 0x16, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x14, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, - 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, - 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x56, 0x0a, 0x13, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x72, 0x65, 0x66, 0x73, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x66, 0x73, 0x48, 0x01, 0x52, 0x11, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x66, 0x73, - 0x42, 0x08, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x19, 0x0a, 0x17, 0x65, 0x78, + 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x73, 0x6c, 0x2f, + 0x73, 0x73, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x48, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x68, 0x6f, 0x73, 0x74, + 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, + 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbc, 0x01, + 0x0a, 0x12, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x53, 0x70, 0x65, 0x63, 0x12, 0x3f, 0x0a, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, + 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, 0x72, + 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x0b, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, + 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x0a, 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x27, 0x0a, + 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x04, 0xb8, 0xf5, 0x04, 0x01, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x86, 0x02, 0x0a, + 0x0b, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x64, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x06, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, + 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x56, 0x0a, 0x13, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x72, 0x65, 0x66, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x66, 0x73, 0x48, 0x00, 0x52, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x66, 0x73, 0x42, 0x19, 0x0a, 0x17, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x5b, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, - 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x66, 0x73, 0x12, 0x44, 0x0a, 0x10, - 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, - 0x66, 0x52, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0xcf, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x2d, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x48, 0x00, 0x52, 0x03, 0x72, 0x65, 0x66, 0x12, 0x41, - 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x42, 0x11, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x22, 0xa2, 0x04, 0x0a, 0x12, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x06, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x12, 0x50, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, - 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x45, - 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x95, 0x02, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x53, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, - 0x87, 0x01, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x0a, 0x0a, 0x06, - 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x6f, 0x75, 0x62, - 0x6c, 0x65, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x6f, - 0x74, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x10, 0x02, 0x12, 0x06, 0x0a, 0x02, 0x49, 0x6e, 0x10, - 0x03, 0x12, 0x09, 0x0a, 0x05, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, - 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x6f, 0x65, 0x73, - 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x47, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x4c, - 0x65, 0x73, 0x73, 0x54, 0x68, 0x61, 0x6e, 0x10, 0x08, 0x22, 0xe6, 0x03, 0x0a, 0x14, 0x56, 0x69, - 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, - 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x71, - 0x0a, 0x14, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xfe, 0x05, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, + 0x3f, 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, + 0x12, 0x4d, 0x0a, 0x14, 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x69, 0x6e, 0x68, 0x65, + 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, + 0x56, 0x0a, 0x19, 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, + 0x61, 0x74, 0x68, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x17, + 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, 0x3e, 0x0a, 0x0c, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x74, + 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x0f, 0x72, 0x65, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, + 0x52, 0x0e, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x5a, 0x0a, 0x16, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x14, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x0f, + 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, + 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x56, 0x0a, 0x13, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x72, 0x65, 0x66, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x66, 0x73, 0x48, 0x01, 0x52, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x66, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x19, 0x0a, 0x17, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, + 0x04, 0x08, 0x0b, 0x10, 0x0c, 0x52, 0x0f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x5f, 0x61, + 0x70, 0x69, 0x5f, 0x72, 0x65, 0x66, 0x22, 0x5b, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, + 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x66, 0x73, 0x12, 0x44, 0x0a, + 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, + 0x65, 0x66, 0x52, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x22, 0xcf, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, + 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x2d, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x48, 0x00, 0x52, 0x03, 0x72, 0x65, 0x66, 0x12, + 0x41, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x42, 0x11, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xa2, 0x04, 0x0a, 0x12, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x06, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x50, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, + 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x95, 0x02, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x53, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x22, 0x87, 0x01, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x0a, 0x0a, + 0x06, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x6f, 0x75, + 0x62, 0x6c, 0x65, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4e, + 0x6f, 0x74, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x10, 0x02, 0x12, 0x06, 0x0a, 0x02, 0x49, 0x6e, + 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x10, 0x04, 0x12, 0x0a, 0x0a, + 0x06, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x6f, 0x65, + 0x73, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x47, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, + 0x4c, 0x65, 0x73, 0x73, 0x54, 0x68, 0x61, 0x6e, 0x10, 0x08, 0x22, 0xe6, 0x03, 0x0a, 0x14, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x73, 0x75, - 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, - 0x73, 0x12, 0x31, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x6d, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, - 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x63, 0x63, - 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x6a, 0x65, 0x63, - 0x74, 0x65, 0x64, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, - 0x10, 0x03, 0x42, 0x41, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, - 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0xc0, 0xf5, 0x04, - 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x74, 0x75, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1f, + 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, + 0x71, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x73, + 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x65, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x6d, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, + 0x07, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x63, + 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x6a, 0x65, + 0x63, 0x74, 0x65, 0x64, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, + 0x67, 0x10, 0x03, 0x22, 0xe3, 0x01, 0x0a, 0x20, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x5b, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, 0x72, + 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, 0x62, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, + 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x45, 0xb8, 0xf5, 0x04, 0x01, 0xc0, + 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes = make([]protoimpl.MessageInfo, 10) -var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_goTypes = []any{ (RouteTableSelector_Expression_Operator)(0), // 0: gateway.solo.io.RouteTableSelector.Expression.Operator (VirtualServiceStatus_State)(0), // 1: gateway.solo.io.VirtualServiceStatus.State (*VirtualServiceSpec)(nil), // 2: gateway.solo.io.VirtualServiceSpec @@ -1267,50 +1326,54 @@ var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_ (*DelegateAction)(nil), // 6: gateway.solo.io.DelegateAction (*RouteTableSelector)(nil), // 7: gateway.solo.io.RouteTableSelector (*VirtualServiceStatus)(nil), // 8: gateway.solo.io.VirtualServiceStatus - nil, // 9: gateway.solo.io.RouteTableSelector.LabelsEntry - (*RouteTableSelector_Expression)(nil), // 10: gateway.solo.io.RouteTableSelector.Expression - nil, // 11: gateway.solo.io.VirtualServiceStatus.SubresourceStatusesEntry - (*v1.SslConfig)(nil), // 12: gloo.solo.io.SslConfig - (*v1.VirtualHostOptions)(nil), // 13: gloo.solo.io.VirtualHostOptions - (*matchers.Matcher)(nil), // 14: matchers.core.gloo.solo.io.Matcher - (*wrappers.BoolValue)(nil), // 15: google.protobuf.BoolValue - (*v1.RouteAction)(nil), // 16: gloo.solo.io.RouteAction - (*v1.RedirectAction)(nil), // 17: gloo.solo.io.RedirectAction - (*v1.DirectResponseAction)(nil), // 18: gloo.solo.io.DirectResponseAction - (*v1.RouteOptions)(nil), // 19: gloo.solo.io.RouteOptions - (*core.ResourceRef)(nil), // 20: core.solo.io.ResourceRef - (*_struct.Struct)(nil), // 21: google.protobuf.Struct + (*VirtualServiceNamespacedStatuses)(nil), // 9: gateway.solo.io.VirtualServiceNamespacedStatuses + nil, // 10: gateway.solo.io.RouteTableSelector.LabelsEntry + (*RouteTableSelector_Expression)(nil), // 11: gateway.solo.io.RouteTableSelector.Expression + nil, // 12: gateway.solo.io.VirtualServiceStatus.SubresourceStatusesEntry + nil, // 13: gateway.solo.io.VirtualServiceNamespacedStatuses.StatusesEntry + (*ssl.SslConfig)(nil), // 14: gloo.solo.io.SslConfig + (*v1.VirtualHostOptions)(nil), // 15: gloo.solo.io.VirtualHostOptions + (*matchers.Matcher)(nil), // 16: matchers.core.gloo.solo.io.Matcher + (*wrapperspb.BoolValue)(nil), // 17: google.protobuf.BoolValue + (*v1.RouteAction)(nil), // 18: gloo.solo.io.RouteAction + (*v1.RedirectAction)(nil), // 19: gloo.solo.io.RedirectAction + (*v1.DirectResponseAction)(nil), // 20: gloo.solo.io.DirectResponseAction + (*v1.RouteOptions)(nil), // 21: gloo.solo.io.RouteOptions + (*core.ResourceRef)(nil), // 22: core.solo.io.ResourceRef + (*structpb.Struct)(nil), // 23: google.protobuf.Struct } var file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_depIdxs = []int32{ 3, // 0: gateway.solo.io.VirtualServiceSpec.virtual_host:type_name -> gateway.solo.io.VirtualHost - 12, // 1: gateway.solo.io.VirtualServiceSpec.ssl_config:type_name -> gloo.solo.io.SslConfig + 14, // 1: gateway.solo.io.VirtualServiceSpec.ssl_config:type_name -> gloo.solo.io.SslConfig 4, // 2: gateway.solo.io.VirtualHost.routes:type_name -> gateway.solo.io.Route - 13, // 3: gateway.solo.io.VirtualHost.options:type_name -> gloo.solo.io.VirtualHostOptions + 15, // 3: gateway.solo.io.VirtualHost.options:type_name -> gloo.solo.io.VirtualHostOptions 5, // 4: gateway.solo.io.VirtualHost.options_config_refs:type_name -> gateway.solo.io.DelegateOptionsRefs - 14, // 5: gateway.solo.io.Route.matchers:type_name -> matchers.core.gloo.solo.io.Matcher - 15, // 6: gateway.solo.io.Route.inheritable_matchers:type_name -> google.protobuf.BoolValue - 15, // 7: gateway.solo.io.Route.inheritable_path_matchers:type_name -> google.protobuf.BoolValue - 16, // 8: gateway.solo.io.Route.route_action:type_name -> gloo.solo.io.RouteAction - 17, // 9: gateway.solo.io.Route.redirect_action:type_name -> gloo.solo.io.RedirectAction - 18, // 10: gateway.solo.io.Route.direct_response_action:type_name -> gloo.solo.io.DirectResponseAction + 16, // 5: gateway.solo.io.Route.matchers:type_name -> matchers.core.gloo.solo.io.Matcher + 17, // 6: gateway.solo.io.Route.inheritable_matchers:type_name -> google.protobuf.BoolValue + 17, // 7: gateway.solo.io.Route.inheritable_path_matchers:type_name -> google.protobuf.BoolValue + 18, // 8: gateway.solo.io.Route.route_action:type_name -> gloo.solo.io.RouteAction + 19, // 9: gateway.solo.io.Route.redirect_action:type_name -> gloo.solo.io.RedirectAction + 20, // 10: gateway.solo.io.Route.direct_response_action:type_name -> gloo.solo.io.DirectResponseAction 6, // 11: gateway.solo.io.Route.delegate_action:type_name -> gateway.solo.io.DelegateAction - 19, // 12: gateway.solo.io.Route.options:type_name -> gloo.solo.io.RouteOptions + 21, // 12: gateway.solo.io.Route.options:type_name -> gloo.solo.io.RouteOptions 5, // 13: gateway.solo.io.Route.options_config_refs:type_name -> gateway.solo.io.DelegateOptionsRefs - 20, // 14: gateway.solo.io.DelegateOptionsRefs.delegate_options:type_name -> core.solo.io.ResourceRef - 20, // 15: gateway.solo.io.DelegateAction.ref:type_name -> core.solo.io.ResourceRef + 22, // 14: gateway.solo.io.DelegateOptionsRefs.delegate_options:type_name -> core.solo.io.ResourceRef + 22, // 15: gateway.solo.io.DelegateAction.ref:type_name -> core.solo.io.ResourceRef 7, // 16: gateway.solo.io.DelegateAction.selector:type_name -> gateway.solo.io.RouteTableSelector - 9, // 17: gateway.solo.io.RouteTableSelector.labels:type_name -> gateway.solo.io.RouteTableSelector.LabelsEntry - 10, // 18: gateway.solo.io.RouteTableSelector.expressions:type_name -> gateway.solo.io.RouteTableSelector.Expression + 10, // 17: gateway.solo.io.RouteTableSelector.labels:type_name -> gateway.solo.io.RouteTableSelector.LabelsEntry + 11, // 18: gateway.solo.io.RouteTableSelector.expressions:type_name -> gateway.solo.io.RouteTableSelector.Expression 1, // 19: gateway.solo.io.VirtualServiceStatus.state:type_name -> gateway.solo.io.VirtualServiceStatus.State - 11, // 20: gateway.solo.io.VirtualServiceStatus.subresource_statuses:type_name -> gateway.solo.io.VirtualServiceStatus.SubresourceStatusesEntry - 21, // 21: gateway.solo.io.VirtualServiceStatus.details:type_name -> google.protobuf.Struct - 0, // 22: gateway.solo.io.RouteTableSelector.Expression.operator:type_name -> gateway.solo.io.RouteTableSelector.Expression.Operator - 8, // 23: gateway.solo.io.VirtualServiceStatus.SubresourceStatusesEntry.value:type_name -> gateway.solo.io.VirtualServiceStatus - 24, // [24:24] is the sub-list for method output_type - 24, // [24:24] is the sub-list for method input_type - 24, // [24:24] is the sub-list for extension type_name - 24, // [24:24] is the sub-list for extension extendee - 0, // [0:24] is the sub-list for field type_name + 12, // 20: gateway.solo.io.VirtualServiceStatus.subresource_statuses:type_name -> gateway.solo.io.VirtualServiceStatus.SubresourceStatusesEntry + 23, // 21: gateway.solo.io.VirtualServiceStatus.details:type_name -> google.protobuf.Struct + 13, // 22: gateway.solo.io.VirtualServiceNamespacedStatuses.statuses:type_name -> gateway.solo.io.VirtualServiceNamespacedStatuses.StatusesEntry + 0, // 23: gateway.solo.io.RouteTableSelector.Expression.operator:type_name -> gateway.solo.io.RouteTableSelector.Expression.Operator + 8, // 24: gateway.solo.io.VirtualServiceStatus.SubresourceStatusesEntry.value:type_name -> gateway.solo.io.VirtualServiceStatus + 8, // 25: gateway.solo.io.VirtualServiceNamespacedStatuses.StatusesEntry.value:type_name -> gateway.solo.io.VirtualServiceStatus + 26, // [26:26] is the sub-list for method output_type + 26, // [26:26] is the sub-list for method input_type + 26, // [26:26] is the sub-list for extension type_name + 26, // [26:26] is the sub-list for extension extendee + 0, // [0:26] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_init() } @@ -1318,115 +1381,17 @@ func file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto if File_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VirtualServiceSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VirtualHost); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Route); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DelegateOptionsRefs); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DelegateAction); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteTableSelector); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VirtualServiceStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteTableSelector_Expression); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[1].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[1].OneofWrappers = []any{ (*VirtualHost_OptionsConfigRefs)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[2].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[2].OneofWrappers = []any{ (*Route_RouteAction)(nil), (*Route_RedirectAction)(nil), (*Route_DirectResponseAction)(nil), (*Route_DelegateAction)(nil), (*Route_OptionsConfigRefs)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[4].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes[4].OneofWrappers = []any{ (*DelegateAction_Ref)(nil), (*DelegateAction_Selector)(nil), } @@ -1434,9 +1399,9 @@ func file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_rawDesc)), NumEnums: 2, - NumMessages: 10, + NumMessages: 12, NumExtensions: 0, NumServices: 0, }, @@ -1446,7 +1411,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gateway_v1_virtual_service_proto_depIdxs = nil } diff --git a/pkg/api/gateway.solo.io/v1/virtual_service.pb.hash.go b/pkg/api/gateway.solo.io/v1/virtual_service.pb.hash.go index 359e7d240..da38f85b2 100644 --- a/pkg/api/gateway.solo.io/v1/virtual_service.pb.hash.go +++ b/pkg/api/gateway.solo.io/v1/virtual_service.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *VirtualServiceSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,28 +43,40 @@ func (m *VirtualServiceSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetVirtualHost()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("VirtualHost")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetVirtualHost(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetVirtualHost(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("VirtualHost")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -70,6 +86,10 @@ func (m *VirtualServiceSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -93,14 +113,20 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRoutes() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -109,14 +135,20 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -127,14 +159,20 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { case *VirtualHost_OptionsConfigRefs: if h, ok := interface{}(m.GetOptionsConfigRefs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OptionsConfigRefs")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOptionsConfigRefs(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOptionsConfigRefs(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("OptionsConfigRefs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -146,6 +184,10 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -161,14 +203,20 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetMatchers() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -177,42 +225,60 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetInheritableMatchers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InheritableMatchers")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetInheritableMatchers(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetInheritableMatchers(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("InheritableMatchers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetInheritablePathMatchers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InheritablePathMatchers")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetInheritablePathMatchers(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetInheritablePathMatchers(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("InheritablePathMatchers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -227,14 +293,20 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { case *Route_RouteAction: if h, ok := interface{}(m.GetRouteAction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RouteAction")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRouteAction(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRouteAction(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RouteAction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -243,14 +315,20 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { case *Route_RedirectAction: if h, ok := interface{}(m.GetRedirectAction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RedirectAction")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRedirectAction(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRedirectAction(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RedirectAction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -259,14 +337,20 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { case *Route_DirectResponseAction: if h, ok := interface{}(m.GetDirectResponseAction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DirectResponseAction")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDirectResponseAction(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDirectResponseAction(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DirectResponseAction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -275,14 +359,20 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { case *Route_DelegateAction: if h, ok := interface{}(m.GetDelegateAction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DelegateAction")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDelegateAction(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDelegateAction(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DelegateAction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -295,14 +385,20 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { case *Route_OptionsConfigRefs: if h, ok := interface{}(m.GetOptionsConfigRefs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OptionsConfigRefs")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOptionsConfigRefs(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOptionsConfigRefs(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("OptionsConfigRefs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -314,6 +410,10 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *DelegateOptionsRefs) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -329,14 +429,20 @@ func (m *DelegateOptionsRefs) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetDelegateOptions() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -348,6 +454,10 @@ func (m *DelegateOptionsRefs) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *DelegateAction) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -373,14 +483,20 @@ func (m *DelegateAction) Hash(hasher hash.Hash64) (uint64, error) { case *DelegateAction_Ref: if h, ok := interface{}(m.GetRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ref")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRef(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRef(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Ref")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -389,14 +505,20 @@ func (m *DelegateAction) Hash(hasher hash.Hash64) (uint64, error) { case *DelegateAction_Selector: if h, ok := interface{}(m.GetSelector()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Selector")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSelector(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSelector(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Selector")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -408,6 +530,10 @@ func (m *DelegateAction) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteTableSelector) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -454,14 +580,20 @@ func (m *RouteTableSelector) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetExpressions() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -473,6 +605,10 @@ func (m *RouteTableSelector) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *VirtualServiceStatus) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -505,14 +641,20 @@ func (m *VirtualServiceStatus) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -532,23 +674,92 @@ func (m *VirtualServiceStatus) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *VirtualServiceNamespacedStatuses) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.VirtualServiceNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { return 0, err } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err } + } return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteTableSelector_Expression) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gateway.solo.io/v1/virtual_service.pb.uniquehash.go b/pkg/api/gateway.solo.io/v1/virtual_service.pb.uniquehash.go new file mode 100644 index 000000000..8b40deafb --- /dev/null +++ b/pkg/api/gateway.solo.io/v1/virtual_service.pb.uniquehash.go @@ -0,0 +1,873 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gateway/v1/virtual_service.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *VirtualServiceSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.VirtualServiceSpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetVirtualHost()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("VirtualHost")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetVirtualHost(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("VirtualHost")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *VirtualHost) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.VirtualHost")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Domains")); err != nil { + return 0, err + } + for i, v := range m.GetDomains() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("Routes")); err != nil { + return 0, err + } + for i, v := range m.GetRoutes() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.ExternalOptionsConfig.(type) { + + case *VirtualHost_OptionsConfigRefs: + + if h, ok := interface{}(m.GetOptionsConfigRefs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OptionsConfigRefs")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptionsConfigRefs(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OptionsConfigRefs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Route) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.Route")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Matchers")); err != nil { + return 0, err + } + for i, v := range m.GetMatchers() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetInheritableMatchers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InheritableMatchers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInheritableMatchers(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("InheritableMatchers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetInheritablePathMatchers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InheritablePathMatchers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInheritablePathMatchers(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("InheritablePathMatchers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + switch m.Action.(type) { + + case *Route_RouteAction: + + if h, ok := interface{}(m.GetRouteAction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RouteAction")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRouteAction(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RouteAction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Route_RedirectAction: + + if h, ok := interface{}(m.GetRedirectAction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RedirectAction")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRedirectAction(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RedirectAction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Route_DirectResponseAction: + + if h, ok := interface{}(m.GetDirectResponseAction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DirectResponseAction")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDirectResponseAction(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DirectResponseAction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Route_DelegateAction: + + if h, ok := interface{}(m.GetDelegateAction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DelegateAction")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDelegateAction(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DelegateAction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.ExternalOptionsConfig.(type) { + + case *Route_OptionsConfigRefs: + + if h, ok := interface{}(m.GetOptionsConfigRefs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OptionsConfigRefs")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptionsConfigRefs(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OptionsConfigRefs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DelegateOptionsRefs) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.DelegateOptionsRefs")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DelegateOptions")); err != nil { + return 0, err + } + for i, v := range m.GetDelegateOptions() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DelegateAction) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.DelegateAction")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Namespace")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetNamespace())); err != nil { + return 0, err + } + + switch m.DelegationType.(type) { + + case *DelegateAction_Ref: + + if h, ok := interface{}(m.GetRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ref")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Ref")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *DelegateAction_Selector: + + if h, ok := interface{}(m.GetSelector()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Selector")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSelector(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Selector")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteTableSelector) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.RouteTableSelector")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Namespaces")); err != nil { + return 0, err + } + for i, v := range m.GetNamespaces() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetLabels() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("Expressions")); err != nil { + return 0, err + } + for i, v := range m.GetExpressions() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *VirtualServiceStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.VirtualServiceStatus")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("State")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Reason")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ReportedBy")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *VirtualServiceNamespacedStatuses) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.VirtualServiceNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteTableSelector_Expression) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gateway.solo.io.github.com/solo-io/solo-apis/pkg/api/gateway.solo.io/v1.RouteTableSelector_Expression")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Operator")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetOperator()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Values")); err != nil { + return 0, err + } + for i, v := range m.GetValues() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gateway.solo.io/v1/zz_generated.deepcopy.go b/pkg/api/gateway.solo.io/v1/zz_generated.deepcopy.go index 357069120..7678ef60c 100644 --- a/pkg/api/gateway.solo.io/v1/zz_generated.deepcopy.go +++ b/pkg/api/gateway.solo.io/v1/zz_generated.deepcopy.go @@ -68,6 +68,306 @@ func (in *GatewayList) DeepCopyObject() runtime.Object { return nil } +// Generated Deepcopy methods for HttpListenerOption + +func (in *HttpListenerOption) DeepCopyInto(out *HttpListenerOption) { + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + + // deepcopy spec + in.Spec.DeepCopyInto(&out.Spec) + // deepcopy status + in.Status.DeepCopyInto(&out.Status) + + return +} + +func (in *HttpListenerOption) DeepCopy() *HttpListenerOption { + if in == nil { + return nil + } + out := new(HttpListenerOption) + in.DeepCopyInto(out) + return out +} + +func (in *HttpListenerOption) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +func (in *HttpListenerOptionList) DeepCopyInto(out *HttpListenerOptionList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]HttpListenerOption, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +func (in *HttpListenerOptionList) DeepCopy() *HttpListenerOptionList { + if in == nil { + return nil + } + out := new(HttpListenerOptionList) + in.DeepCopyInto(out) + return out +} + +func (in *HttpListenerOptionList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// Generated Deepcopy methods for ListenerOption + +func (in *ListenerOption) DeepCopyInto(out *ListenerOption) { + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + + // deepcopy spec + in.Spec.DeepCopyInto(&out.Spec) + // deepcopy status + in.Status.DeepCopyInto(&out.Status) + + return +} + +func (in *ListenerOption) DeepCopy() *ListenerOption { + if in == nil { + return nil + } + out := new(ListenerOption) + in.DeepCopyInto(out) + return out +} + +func (in *ListenerOption) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +func (in *ListenerOptionList) DeepCopyInto(out *ListenerOptionList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ListenerOption, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +func (in *ListenerOptionList) DeepCopy() *ListenerOptionList { + if in == nil { + return nil + } + out := new(ListenerOptionList) + in.DeepCopyInto(out) + return out +} + +func (in *ListenerOptionList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// Generated Deepcopy methods for MatchableHttpGateway + +func (in *MatchableHttpGateway) DeepCopyInto(out *MatchableHttpGateway) { + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + + // deepcopy spec + in.Spec.DeepCopyInto(&out.Spec) + // deepcopy status + in.Status.DeepCopyInto(&out.Status) + + return +} + +func (in *MatchableHttpGateway) DeepCopy() *MatchableHttpGateway { + if in == nil { + return nil + } + out := new(MatchableHttpGateway) + in.DeepCopyInto(out) + return out +} + +func (in *MatchableHttpGateway) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +func (in *MatchableHttpGatewayList) DeepCopyInto(out *MatchableHttpGatewayList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]MatchableHttpGateway, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +func (in *MatchableHttpGatewayList) DeepCopy() *MatchableHttpGatewayList { + if in == nil { + return nil + } + out := new(MatchableHttpGatewayList) + in.DeepCopyInto(out) + return out +} + +func (in *MatchableHttpGatewayList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// Generated Deepcopy methods for MatchableTcpGateway + +func (in *MatchableTcpGateway) DeepCopyInto(out *MatchableTcpGateway) { + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + + // deepcopy spec + in.Spec.DeepCopyInto(&out.Spec) + // deepcopy status + in.Status.DeepCopyInto(&out.Status) + + return +} + +func (in *MatchableTcpGateway) DeepCopy() *MatchableTcpGateway { + if in == nil { + return nil + } + out := new(MatchableTcpGateway) + in.DeepCopyInto(out) + return out +} + +func (in *MatchableTcpGateway) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +func (in *MatchableTcpGatewayList) DeepCopyInto(out *MatchableTcpGatewayList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]MatchableTcpGateway, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +func (in *MatchableTcpGatewayList) DeepCopy() *MatchableTcpGatewayList { + if in == nil { + return nil + } + out := new(MatchableTcpGatewayList) + in.DeepCopyInto(out) + return out +} + +func (in *MatchableTcpGatewayList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// Generated Deepcopy methods for RouteOption + +func (in *RouteOption) DeepCopyInto(out *RouteOption) { + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + + // deepcopy spec + in.Spec.DeepCopyInto(&out.Spec) + // deepcopy status + in.Status.DeepCopyInto(&out.Status) + + return +} + +func (in *RouteOption) DeepCopy() *RouteOption { + if in == nil { + return nil + } + out := new(RouteOption) + in.DeepCopyInto(out) + return out +} + +func (in *RouteOption) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +func (in *RouteOptionList) DeepCopyInto(out *RouteOptionList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]RouteOption, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +func (in *RouteOptionList) DeepCopy() *RouteOptionList { + if in == nil { + return nil + } + out := new(RouteOptionList) + in.DeepCopyInto(out) + return out +} + +func (in *RouteOptionList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + // Generated Deepcopy methods for RouteTable func (in *RouteTable) DeepCopyInto(out *RouteTable) { @@ -187,3 +487,63 @@ func (in *VirtualServiceList) DeepCopyObject() runtime.Object { } return nil } + +// Generated Deepcopy methods for VirtualHostOption + +func (in *VirtualHostOption) DeepCopyInto(out *VirtualHostOption) { + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + + // deepcopy spec + in.Spec.DeepCopyInto(&out.Spec) + // deepcopy status + in.Status.DeepCopyInto(&out.Status) + + return +} + +func (in *VirtualHostOption) DeepCopy() *VirtualHostOption { + if in == nil { + return nil + } + out := new(VirtualHostOption) + in.DeepCopyInto(out) + return out +} + +func (in *VirtualHostOption) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +func (in *VirtualHostOptionList) DeepCopyInto(out *VirtualHostOptionList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]VirtualHostOption, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +func (in *VirtualHostOptionList) DeepCopy() *VirtualHostOptionList { + if in == nil { + return nil + } + out := new(VirtualHostOptionList) + in.DeepCopyInto(out) + return out +} + +func (in *VirtualHostOptionList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} diff --git a/pkg/api/gloo.solo.io/config/tap/output_sink/v3/grpc_output_sink.pb.go b/pkg/api/gloo.solo.io/config/tap/output_sink/v3/grpc_output_sink.pb.go new file mode 100644 index 000000000..63d36ec68 --- /dev/null +++ b/pkg/api/gloo.solo.io/config/tap/output_sink/v3/grpc_output_sink.pb.go @@ -0,0 +1,161 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/tap/output_sink/v3/grpc_output_sink.proto + +package v3 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/envoyproxy/protoc-gen-validate/validate" + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// GRPC output sink definition +type GrpcOutputSink struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Location of the GRPC service to which output traces should be submitted + GrpcService *v3.GrpcService `protobuf:"bytes,1,opt,name=grpc_service,json=grpcService,proto3" json:"grpc_service,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GrpcOutputSink) Reset() { + *x = GrpcOutputSink{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GrpcOutputSink) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GrpcOutputSink) ProtoMessage() {} + +func (x *GrpcOutputSink) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GrpcOutputSink.ProtoReflect.Descriptor instead. +func (*GrpcOutputSink) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_rawDescGZIP(), []int{0} +} + +func (x *GrpcOutputSink) GetGrpcService() *v3.GrpcService { + if x != nil { + return x.GrpcService + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_rawDesc = string([]byte{ + 0x0a, 0x6a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2f, 0x74, 0x61, 0x70, 0x2f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x69, + 0x6e, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x61, 0x70, 0x2e, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x76, 0x33, 0x1a, 0x17, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x5b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, + 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0x68, 0x0a, 0x0e, 0x47, 0x72, 0x70, 0x63, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x53, 0x69, 0x6e, 0x6b, 0x12, 0x56, 0x0a, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x0b, 0x67, 0x72, 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x93, 0x01, + 0x0a, 0x2d, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x74, 0x61, 0x70, 0x2e, 0x76, 0x33, 0x42, + 0x13, 0x47, 0x72, 0x70, 0x63, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x69, 0x6e, 0x6b, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2f, 0x74, 0x61, 0x70, 0x2f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x6b, + 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_goTypes = []any{ + (*GrpcOutputSink)(nil), // 0: envoy.config.tap.output_sink.v3.GrpcOutputSink + (*v3.GrpcService)(nil), // 1: solo.io.envoy.config.core.v3.GrpcService +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_depIdxs = []int32{ + 1, // 0: envoy.config.tap.output_sink.v3.GrpcOutputSink.grpc_service:type_name -> solo.io.envoy.config.core.v3.GrpcService + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_grpc_output_sink_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/config/tap/output_sink/v3/http_output_sink.pb.go b/pkg/api/gloo.solo.io/config/tap/output_sink/v3/http_output_sink.pb.go new file mode 100644 index 000000000..5a3a92e8d --- /dev/null +++ b/pkg/api/gloo.solo.io/config/tap/output_sink/v3/http_output_sink.pb.go @@ -0,0 +1,160 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/tap/output_sink/v3/http_output_sink.proto + +package v3 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/envoyproxy/protoc-gen-validate/validate" + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// HTTP output sink definition +type HttpOutputSink struct { + state protoimpl.MessageState `protogen:"open.v1"` + // URI of the HTTP server to which output traces should be submitted + ServerUri *v3.HttpUri `protobuf:"bytes,1,opt,name=server_uri,json=serverUri,proto3" json:"server_uri,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HttpOutputSink) Reset() { + *x = HttpOutputSink{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HttpOutputSink) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HttpOutputSink) ProtoMessage() {} + +func (x *HttpOutputSink) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HttpOutputSink.ProtoReflect.Descriptor instead. +func (*HttpOutputSink) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_rawDescGZIP(), []int{0} +} + +func (x *HttpOutputSink) GetServerUri() *v3.HttpUri { + if x != nil { + return x.ServerUri + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_rawDesc = string([]byte{ + 0x0a, 0x6a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2f, 0x74, 0x61, 0x70, 0x2f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x69, + 0x6e, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x61, 0x70, 0x2e, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x76, 0x33, 0x1a, 0x17, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x57, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, + 0x2f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x75, 0x72, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0x60, 0x0a, 0x0e, 0x48, 0x74, 0x74, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x69, 0x6e, + 0x6b, 0x12, 0x4e, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x69, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x55, 0x72, 0x69, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x55, 0x72, + 0x69, 0x42, 0x93, 0x01, 0x0a, 0x2d, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, + 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x74, 0x61, 0x70, + 0x2e, 0x76, 0x33, 0x42, 0x13, 0x48, 0x74, 0x74, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, + 0x69, 0x6e, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4b, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x74, 0x61, 0x70, 0x2f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, + 0x73, 0x69, 0x6e, 0x6b, 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_goTypes = []any{ + (*HttpOutputSink)(nil), // 0: envoy.config.tap.output_sink.v3.HttpOutputSink + (*v3.HttpUri)(nil), // 1: solo.io.envoy.config.core.v3.HttpUri +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_depIdxs = []int32{ + 1, // 0: envoy.config.tap.output_sink.v3.HttpOutputSink.server_uri:type_name -> solo.io.envoy.config.core.v3.HttpUri + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_tap_output_sink_v3_http_output_sink_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/annotations/deprecation.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/annotations/deprecation.pb.clone.go new file mode 100644 index 000000000..3e8019d1a --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/annotations/deprecation.pb.clone.go @@ -0,0 +1,26 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/annotations/deprecation.proto + +package annotations + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) diff --git a/pkg/api/gloo.solo.io/external/envoy/annotations/deprecation.pb.go b/pkg/api/gloo.solo.io/external/envoy/annotations/deprecation.pb.go index d43d16561..0e158f9ff 100644 --- a/pkg/api/gloo.solo.io/external/envoy/annotations/deprecation.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/annotations/deprecation.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/annotations/deprecation.proto @@ -8,12 +8,12 @@ package annotations import ( reflect "reflect" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - descriptor "github.com/golang/protobuf/protoc-gen-go/descriptor" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + descriptorpb "google.golang.org/protobuf/types/descriptorpb" ) const ( @@ -23,13 +23,9 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_deprecation_proto_extTypes = []protoimpl.ExtensionInfo{ { - ExtendedType: (*descriptor.FieldOptions)(nil), + ExtendedType: (*descriptorpb.FieldOptions)(nil), ExtensionType: (*bool)(nil), Field: 246172783, Name: "solo.io.envoy.annotations.disallowed_by_default", @@ -37,7 +33,15 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_d Filename: "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/annotations/deprecation.proto", }, { - ExtendedType: (*descriptor.EnumValueOptions)(nil), + ExtendedType: (*descriptorpb.FieldOptions)(nil), + ExtensionType: (*string)(nil), + Field: 246172784, + Name: "solo.io.envoy.annotations.deprecated_at_minor_version", + Tag: "bytes,246172784,opt,name=deprecated_at_minor_version", + Filename: "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/annotations/deprecation.proto", + }, + { + ExtendedType: (*descriptorpb.EnumValueOptions)(nil), ExtensionType: (*bool)(nil), Field: 178329844, Name: "solo.io.envoy.annotations.disallowed_by_default_enum", @@ -46,21 +50,26 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_d }, } -// Extension fields to descriptor.FieldOptions. +// Extension fields to descriptorpb.FieldOptions. var ( // optional bool disallowed_by_default = 246172783; E_DisallowedByDefault = &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_deprecation_proto_extTypes[0] + // The API major and minor version on which the field was deprecated + // (e.g., "3.5" for major version 3 and minor version 5). + // + // optional string deprecated_at_minor_version = 246172784; + E_DeprecatedAtMinorVersion = &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_deprecation_proto_extTypes[1] ) -// Extension fields to descriptor.EnumValueOptions. +// Extension fields to descriptorpb.EnumValueOptions. var ( // optional bool disallowed_by_default_enum = 178329844; - E_DisallowedByDefaultEnum = &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_deprecation_proto_extTypes[1] + E_DisallowedByDefaultEnum = &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_deprecation_proto_extTypes[2] ) var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_deprecation_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_deprecation_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_deprecation_proto_rawDesc = string([]byte{ 0x0a, 0x57, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -77,32 +86,39 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_d 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xef, 0x98, 0xb1, 0x75, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x79, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x3a, 0x61, 0x0a, 0x1a, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x62, - 0x79, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x21, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0xf4, 0xb1, 0x84, 0x55, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x64, 0x69, 0x73, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x79, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x45, - 0x6e, 0x75, 0x6d, 0x42, 0x56, 0x5a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, - 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, -} + 0x3a, 0x5f, 0x0a, 0x1b, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x5f, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf0, + 0x98, 0xb1, 0x75, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x69, 0x6e, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x3a, 0x61, 0x0a, 0x1a, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, + 0x62, 0x79, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, + 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0xf4, 0xb1, 0x84, 0x55, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x64, 0x69, 0x73, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x79, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x5a, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, + 0x04, 0x01, 0x5a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_deprecation_proto_goTypes = []interface{}{ - (*descriptor.FieldOptions)(nil), // 0: google.protobuf.FieldOptions - (*descriptor.EnumValueOptions)(nil), // 1: google.protobuf.EnumValueOptions +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_deprecation_proto_goTypes = []any{ + (*descriptorpb.FieldOptions)(nil), // 0: google.protobuf.FieldOptions + (*descriptorpb.EnumValueOptions)(nil), // 1: google.protobuf.EnumValueOptions } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_deprecation_proto_depIdxs = []int32{ 0, // 0: solo.io.envoy.annotations.disallowed_by_default:extendee -> google.protobuf.FieldOptions - 1, // 1: solo.io.envoy.annotations.disallowed_by_default_enum:extendee -> google.protobuf.EnumValueOptions - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 0, // [0:2] is the sub-list for extension extendee + 0, // 1: solo.io.envoy.annotations.deprecated_at_minor_version:extendee -> google.protobuf.FieldOptions + 1, // 2: solo.io.envoy.annotations.disallowed_by_default_enum:extendee -> google.protobuf.EnumValueOptions + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 0, // [0:3] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name } @@ -117,10 +133,10 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_ out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_deprecation_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_deprecation_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_deprecation_proto_rawDesc)), NumEnums: 0, NumMessages: 0, - NumExtensions: 2, + NumExtensions: 3, NumServices: 0, }, GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_deprecation_proto_goTypes, @@ -128,7 +144,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_ ExtensionInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_deprecation_proto_extTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_deprecation_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_deprecation_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_deprecation_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_annotations_deprecation_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/annotations/deprecation.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/annotations/deprecation.pb.hash.go index ca0961ddc..d8932fb71 100644 --- a/pkg/api/gloo.solo.io/external/envoy/annotations/deprecation.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/annotations/deprecation.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used diff --git a/pkg/api/gloo.solo.io/external/envoy/annotations/deprecation.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/annotations/deprecation.pb.uniquehash.go new file mode 100644 index 000000000..66e9b114f --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/annotations/deprecation.pb.uniquehash.go @@ -0,0 +1,28 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/annotations/deprecation.proto + +package annotations + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) diff --git a/pkg/api/gloo.solo.io/external/envoy/api/v2/cluster/outlier_detection.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/api/v2/cluster/outlier_detection.pb.clone.go new file mode 100644 index 000000000..00e39d3ab --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/api/v2/cluster/outlier_detection.pb.clone.go @@ -0,0 +1,127 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/api/v2/cluster/outlier_detection.proto + +package cluster + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *OutlierDetection) Clone() proto.Message { + var target *OutlierDetection + if m == nil { + return target + } + target = &OutlierDetection{} + + if h, ok := interface{}(m.GetConsecutive_5Xx()).(clone.Cloner); ok { + target.Consecutive_5Xx = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.Consecutive_5Xx = proto.Clone(m.GetConsecutive_5Xx()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetInterval()).(clone.Cloner); ok { + target.Interval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.Interval = proto.Clone(m.GetInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetBaseEjectionTime()).(clone.Cloner); ok { + target.BaseEjectionTime = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.BaseEjectionTime = proto.Clone(m.GetBaseEjectionTime()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetMaxEjectionPercent()).(clone.Cloner); ok { + target.MaxEjectionPercent = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxEjectionPercent = proto.Clone(m.GetMaxEjectionPercent()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetEnforcingConsecutive_5Xx()).(clone.Cloner); ok { + target.EnforcingConsecutive_5Xx = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.EnforcingConsecutive_5Xx = proto.Clone(m.GetEnforcingConsecutive_5Xx()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetEnforcingSuccessRate()).(clone.Cloner); ok { + target.EnforcingSuccessRate = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.EnforcingSuccessRate = proto.Clone(m.GetEnforcingSuccessRate()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetSuccessRateMinimumHosts()).(clone.Cloner); ok { + target.SuccessRateMinimumHosts = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.SuccessRateMinimumHosts = proto.Clone(m.GetSuccessRateMinimumHosts()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetSuccessRateRequestVolume()).(clone.Cloner); ok { + target.SuccessRateRequestVolume = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.SuccessRateRequestVolume = proto.Clone(m.GetSuccessRateRequestVolume()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetSuccessRateStdevFactor()).(clone.Cloner); ok { + target.SuccessRateStdevFactor = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.SuccessRateStdevFactor = proto.Clone(m.GetSuccessRateStdevFactor()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetConsecutiveGatewayFailure()).(clone.Cloner); ok { + target.ConsecutiveGatewayFailure = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.ConsecutiveGatewayFailure = proto.Clone(m.GetConsecutiveGatewayFailure()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetEnforcingConsecutiveGatewayFailure()).(clone.Cloner); ok { + target.EnforcingConsecutiveGatewayFailure = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.EnforcingConsecutiveGatewayFailure = proto.Clone(m.GetEnforcingConsecutiveGatewayFailure()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + target.SplitExternalLocalOriginErrors = m.GetSplitExternalLocalOriginErrors() + + if h, ok := interface{}(m.GetConsecutiveLocalOriginFailure()).(clone.Cloner); ok { + target.ConsecutiveLocalOriginFailure = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.ConsecutiveLocalOriginFailure = proto.Clone(m.GetConsecutiveLocalOriginFailure()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetEnforcingConsecutiveLocalOriginFailure()).(clone.Cloner); ok { + target.EnforcingConsecutiveLocalOriginFailure = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.EnforcingConsecutiveLocalOriginFailure = proto.Clone(m.GetEnforcingConsecutiveLocalOriginFailure()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetEnforcingLocalOriginSuccessRate()).(clone.Cloner); ok { + target.EnforcingLocalOriginSuccessRate = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.EnforcingLocalOriginSuccessRate = proto.Clone(m.GetEnforcingLocalOriginSuccessRate()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/api/v2/cluster/outlier_detection.pb.go b/pkg/api/gloo.solo.io/external/envoy/api/v2/cluster/outlier_detection.pb.go index 9ab2b7573..2881bc016 100644 --- a/pkg/api/gloo.solo.io/external/envoy/api/v2/cluster/outlier_detection.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/api/v2/cluster/outlier_detection.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/api/v2/cluster/outlier_detection.proto @@ -9,14 +9,14 @@ package cluster import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - duration "github.com/golang/protobuf/ptypes/duration" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -26,51 +26,44 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // See the `architecture overview (arch_overview_outlier_detection)` for // more information on outlier detection. type OutlierDetection struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The number of consecutive 5xx responses or local origin errors that are mapped // to 5xx error codes before a consecutive 5xx ejection // occurs. Defaults to 5. - Consecutive_5Xx *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=consecutive_5xx,json=consecutive5xx,proto3" json:"consecutive_5xx,omitempty"` + Consecutive_5Xx *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=consecutive_5xx,json=consecutive5xx,proto3" json:"consecutive_5xx,omitempty"` // The time interval between ejection analysis sweeps. This can result in // both new ejections as well as hosts being returned to service. Defaults // to 10000ms or 10s. - Interval *duration.Duration `protobuf:"bytes,2,opt,name=interval,proto3" json:"interval,omitempty"` + Interval *durationpb.Duration `protobuf:"bytes,2,opt,name=interval,proto3" json:"interval,omitempty"` // The base time that a host is ejected for. The real time is equal to the // base time multiplied by the number of times the host has been ejected. // Defaults to 30000ms or 30s. - BaseEjectionTime *duration.Duration `protobuf:"bytes,3,opt,name=base_ejection_time,json=baseEjectionTime,proto3" json:"base_ejection_time,omitempty"` + BaseEjectionTime *durationpb.Duration `protobuf:"bytes,3,opt,name=base_ejection_time,json=baseEjectionTime,proto3" json:"base_ejection_time,omitempty"` // The maximum % of an upstream cluster that can be ejected due to outlier // detection. Defaults to 10% but will eject at least one host regardless of the value. - MaxEjectionPercent *wrappers.UInt32Value `protobuf:"bytes,4,opt,name=max_ejection_percent,json=maxEjectionPercent,proto3" json:"max_ejection_percent,omitempty"` + MaxEjectionPercent *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=max_ejection_percent,json=maxEjectionPercent,proto3" json:"max_ejection_percent,omitempty"` // The % chance that a host will be actually ejected when an outlier status // is detected through consecutive 5xx. This setting can be used to disable // ejection or to ramp it up slowly. Defaults to 100. - EnforcingConsecutive_5Xx *wrappers.UInt32Value `protobuf:"bytes,5,opt,name=enforcing_consecutive_5xx,json=enforcingConsecutive5xx,proto3" json:"enforcing_consecutive_5xx,omitempty"` + EnforcingConsecutive_5Xx *wrapperspb.UInt32Value `protobuf:"bytes,5,opt,name=enforcing_consecutive_5xx,json=enforcingConsecutive5xx,proto3" json:"enforcing_consecutive_5xx,omitempty"` // The % chance that a host will be actually ejected when an outlier status // is detected through success rate statistics. This setting can be used to // disable ejection or to ramp it up slowly. Defaults to 100. - EnforcingSuccessRate *wrappers.UInt32Value `protobuf:"bytes,6,opt,name=enforcing_success_rate,json=enforcingSuccessRate,proto3" json:"enforcing_success_rate,omitempty"` + EnforcingSuccessRate *wrapperspb.UInt32Value `protobuf:"bytes,6,opt,name=enforcing_success_rate,json=enforcingSuccessRate,proto3" json:"enforcing_success_rate,omitempty"` // The number of hosts in a cluster that must have enough request volume to // detect success rate outliers. If the number of hosts is less than this // setting, outlier detection via success rate statistics is not performed // for any host in the cluster. Defaults to 5. - SuccessRateMinimumHosts *wrappers.UInt32Value `protobuf:"bytes,7,opt,name=success_rate_minimum_hosts,json=successRateMinimumHosts,proto3" json:"success_rate_minimum_hosts,omitempty"` + SuccessRateMinimumHosts *wrapperspb.UInt32Value `protobuf:"bytes,7,opt,name=success_rate_minimum_hosts,json=successRateMinimumHosts,proto3" json:"success_rate_minimum_hosts,omitempty"` // The minimum number of total requests that must be collected in one // interval (as defined by the interval duration above) to include this host // in success rate based outlier detection. If the volume is lower than this // setting, outlier detection via success rate statistics is not performed // for that host. Defaults to 100. - SuccessRateRequestVolume *wrappers.UInt32Value `protobuf:"bytes,8,opt,name=success_rate_request_volume,json=successRateRequestVolume,proto3" json:"success_rate_request_volume,omitempty"` + SuccessRateRequestVolume *wrapperspb.UInt32Value `protobuf:"bytes,8,opt,name=success_rate_request_volume,json=successRateRequestVolume,proto3" json:"success_rate_request_volume,omitempty"` // This factor is used to determine the ejection threshold for success rate // outlier ejection. The ejection threshold is the difference between the // mean success rate, and the product of this factor and the standard @@ -78,14 +71,14 @@ type OutlierDetection struct { // success_rate_stdev_factor). This factor is divided by a thousand to get a // double. That is, if the desired factor is 1.9, the runtime value should // be 1900. Defaults to 1900. - SuccessRateStdevFactor *wrappers.UInt32Value `protobuf:"bytes,9,opt,name=success_rate_stdev_factor,json=successRateStdevFactor,proto3" json:"success_rate_stdev_factor,omitempty"` + SuccessRateStdevFactor *wrapperspb.UInt32Value `protobuf:"bytes,9,opt,name=success_rate_stdev_factor,json=successRateStdevFactor,proto3" json:"success_rate_stdev_factor,omitempty"` // The number of consecutive gateway failures (502, 503, 504 status codes) // before a consecutive gateway failure ejection occurs. Defaults to 5. - ConsecutiveGatewayFailure *wrappers.UInt32Value `protobuf:"bytes,10,opt,name=consecutive_gateway_failure,json=consecutiveGatewayFailure,proto3" json:"consecutive_gateway_failure,omitempty"` + ConsecutiveGatewayFailure *wrapperspb.UInt32Value `protobuf:"bytes,10,opt,name=consecutive_gateway_failure,json=consecutiveGatewayFailure,proto3" json:"consecutive_gateway_failure,omitempty"` // The % chance that a host will be actually ejected when an outlier status // is detected through consecutive gateway failures. This setting can be // used to disable ejection or to ramp it up slowly. Defaults to 0. - EnforcingConsecutiveGatewayFailure *wrappers.UInt32Value `protobuf:"bytes,11,opt,name=enforcing_consecutive_gateway_failure,json=enforcingConsecutiveGatewayFailure,proto3" json:"enforcing_consecutive_gateway_failure,omitempty"` + EnforcingConsecutiveGatewayFailure *wrapperspb.UInt32Value `protobuf:"bytes,11,opt,name=enforcing_consecutive_gateway_failure,json=enforcingConsecutiveGatewayFailure,proto3" json:"enforcing_consecutive_gateway_failure,omitempty"` // Determines whether to distinguish local origin failures from external errors. If set to true // the following configuration parameters are taken into account: // `consecutive_local_origin_failure (envoy_api_field_cluster.OutlierDetection.consecutive_local_origin_failure)`, @@ -98,30 +91,30 @@ type OutlierDetection struct { // occurs. Defaults to 5. Parameter takes effect only when // `split_external_local_origin_errors (envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors)` // is set to true. - ConsecutiveLocalOriginFailure *wrappers.UInt32Value `protobuf:"bytes,13,opt,name=consecutive_local_origin_failure,json=consecutiveLocalOriginFailure,proto3" json:"consecutive_local_origin_failure,omitempty"` + ConsecutiveLocalOriginFailure *wrapperspb.UInt32Value `protobuf:"bytes,13,opt,name=consecutive_local_origin_failure,json=consecutiveLocalOriginFailure,proto3" json:"consecutive_local_origin_failure,omitempty"` // The % chance that a host will be actually ejected when an outlier status // is detected through consecutive locally originated failures. This setting can be // used to disable ejection or to ramp it up slowly. Defaults to 100. // Parameter takes effect only when // `split_external_local_origin_errors (envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors)` // is set to true. - EnforcingConsecutiveLocalOriginFailure *wrappers.UInt32Value `protobuf:"bytes,14,opt,name=enforcing_consecutive_local_origin_failure,json=enforcingConsecutiveLocalOriginFailure,proto3" json:"enforcing_consecutive_local_origin_failure,omitempty"` + EnforcingConsecutiveLocalOriginFailure *wrapperspb.UInt32Value `protobuf:"bytes,14,opt,name=enforcing_consecutive_local_origin_failure,json=enforcingConsecutiveLocalOriginFailure,proto3" json:"enforcing_consecutive_local_origin_failure,omitempty"` // The % chance that a host will be actually ejected when an outlier status // is detected through success rate statistics for locally originated errors. // This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100. // Parameter takes effect only when // `split_external_local_origin_errors (envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors)` // is set to true. - EnforcingLocalOriginSuccessRate *wrappers.UInt32Value `protobuf:"bytes,15,opt,name=enforcing_local_origin_success_rate,json=enforcingLocalOriginSuccessRate,proto3" json:"enforcing_local_origin_success_rate,omitempty"` + EnforcingLocalOriginSuccessRate *wrapperspb.UInt32Value `protobuf:"bytes,15,opt,name=enforcing_local_origin_success_rate,json=enforcingLocalOriginSuccessRate,proto3" json:"enforcing_local_origin_success_rate,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OutlierDetection) Reset() { *x = OutlierDetection{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OutlierDetection) String() string { @@ -132,7 +125,7 @@ func (*OutlierDetection) ProtoMessage() {} func (x *OutlierDetection) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -147,77 +140,77 @@ func (*OutlierDetection) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_rawDescGZIP(), []int{0} } -func (x *OutlierDetection) GetConsecutive_5Xx() *wrappers.UInt32Value { +func (x *OutlierDetection) GetConsecutive_5Xx() *wrapperspb.UInt32Value { if x != nil { return x.Consecutive_5Xx } return nil } -func (x *OutlierDetection) GetInterval() *duration.Duration { +func (x *OutlierDetection) GetInterval() *durationpb.Duration { if x != nil { return x.Interval } return nil } -func (x *OutlierDetection) GetBaseEjectionTime() *duration.Duration { +func (x *OutlierDetection) GetBaseEjectionTime() *durationpb.Duration { if x != nil { return x.BaseEjectionTime } return nil } -func (x *OutlierDetection) GetMaxEjectionPercent() *wrappers.UInt32Value { +func (x *OutlierDetection) GetMaxEjectionPercent() *wrapperspb.UInt32Value { if x != nil { return x.MaxEjectionPercent } return nil } -func (x *OutlierDetection) GetEnforcingConsecutive_5Xx() *wrappers.UInt32Value { +func (x *OutlierDetection) GetEnforcingConsecutive_5Xx() *wrapperspb.UInt32Value { if x != nil { return x.EnforcingConsecutive_5Xx } return nil } -func (x *OutlierDetection) GetEnforcingSuccessRate() *wrappers.UInt32Value { +func (x *OutlierDetection) GetEnforcingSuccessRate() *wrapperspb.UInt32Value { if x != nil { return x.EnforcingSuccessRate } return nil } -func (x *OutlierDetection) GetSuccessRateMinimumHosts() *wrappers.UInt32Value { +func (x *OutlierDetection) GetSuccessRateMinimumHosts() *wrapperspb.UInt32Value { if x != nil { return x.SuccessRateMinimumHosts } return nil } -func (x *OutlierDetection) GetSuccessRateRequestVolume() *wrappers.UInt32Value { +func (x *OutlierDetection) GetSuccessRateRequestVolume() *wrapperspb.UInt32Value { if x != nil { return x.SuccessRateRequestVolume } return nil } -func (x *OutlierDetection) GetSuccessRateStdevFactor() *wrappers.UInt32Value { +func (x *OutlierDetection) GetSuccessRateStdevFactor() *wrapperspb.UInt32Value { if x != nil { return x.SuccessRateStdevFactor } return nil } -func (x *OutlierDetection) GetConsecutiveGatewayFailure() *wrappers.UInt32Value { +func (x *OutlierDetection) GetConsecutiveGatewayFailure() *wrapperspb.UInt32Value { if x != nil { return x.ConsecutiveGatewayFailure } return nil } -func (x *OutlierDetection) GetEnforcingConsecutiveGatewayFailure() *wrappers.UInt32Value { +func (x *OutlierDetection) GetEnforcingConsecutiveGatewayFailure() *wrapperspb.UInt32Value { if x != nil { return x.EnforcingConsecutiveGatewayFailure } @@ -231,21 +224,21 @@ func (x *OutlierDetection) GetSplitExternalLocalOriginErrors() bool { return false } -func (x *OutlierDetection) GetConsecutiveLocalOriginFailure() *wrappers.UInt32Value { +func (x *OutlierDetection) GetConsecutiveLocalOriginFailure() *wrapperspb.UInt32Value { if x != nil { return x.ConsecutiveLocalOriginFailure } return nil } -func (x *OutlierDetection) GetEnforcingConsecutiveLocalOriginFailure() *wrappers.UInt32Value { +func (x *OutlierDetection) GetEnforcingConsecutiveLocalOriginFailure() *wrapperspb.UInt32Value { if x != nil { return x.EnforcingConsecutiveLocalOriginFailure } return nil } -func (x *OutlierDetection) GetEnforcingLocalOriginSuccessRate() *wrappers.UInt32Value { +func (x *OutlierDetection) GetEnforcingLocalOriginSuccessRate() *wrapperspb.UInt32Value { if x != nil { return x.EnforcingLocalOriginSuccessRate } @@ -254,7 +247,7 @@ func (x *OutlierDetection) GetEnforcingLocalOriginSuccessRate() *wrappers.UInt32 var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_rawDesc = string([]byte{ 0x0a, 0x60, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -359,37 +352,37 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluste 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x64, 0x52, 0x1f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, - 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x61, 0x74, 0x65, 0x42, 0x9e, 0x01, 0x0a, 0x2a, - 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x42, 0x15, 0x4f, 0x75, 0x74, 0x6c, - 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, - 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, - 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} + 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x61, 0x74, 0x65, 0x42, 0xa2, 0x01, 0xb8, 0xf5, + 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x0a, 0x2a, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x42, 0x15, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, + 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_goTypes = []interface{}{ - (*OutlierDetection)(nil), // 0: solo.io.envoy.api.v2.cluster.OutlierDetection - (*wrappers.UInt32Value)(nil), // 1: google.protobuf.UInt32Value - (*duration.Duration)(nil), // 2: google.protobuf.Duration +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_goTypes = []any{ + (*OutlierDetection)(nil), // 0: solo.io.envoy.api.v2.cluster.OutlierDetection + (*wrapperspb.UInt32Value)(nil), // 1: google.protobuf.UInt32Value + (*durationpb.Duration)(nil), // 2: google.protobuf.Duration } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_depIdxs = []int32{ 1, // 0: solo.io.envoy.api.v2.cluster.OutlierDetection.consecutive_5xx:type_name -> google.protobuf.UInt32Value @@ -420,25 +413,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_clust if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OutlierDetection); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, @@ -449,7 +428,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_clust MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_cluster_outlier_detection_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/api/v2/cluster/outlier_detection.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/api/v2/cluster/outlier_detection.pb.hash.go index 3ac6d26e2..0b17dca75 100644 --- a/pkg/api/gloo.solo.io/external/envoy/api/v2/cluster/outlier_detection.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/api/v2/cluster/outlier_detection.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *OutlierDetection) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,154 +43,220 @@ func (m *OutlierDetection) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetConsecutive_5Xx()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Consecutive_5Xx")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConsecutive_5Xx(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConsecutive_5Xx(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Consecutive_5Xx")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Interval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetInterval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Interval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetBaseEjectionTime()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BaseEjectionTime")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetBaseEjectionTime(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetBaseEjectionTime(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("BaseEjectionTime")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetMaxEjectionPercent()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxEjectionPercent")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMaxEjectionPercent(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMaxEjectionPercent(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MaxEjectionPercent")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetEnforcingConsecutive_5Xx()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnforcingConsecutive_5Xx")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetEnforcingConsecutive_5Xx(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetEnforcingConsecutive_5Xx(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("EnforcingConsecutive_5Xx")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetEnforcingSuccessRate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnforcingSuccessRate")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetEnforcingSuccessRate(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetEnforcingSuccessRate(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("EnforcingSuccessRate")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetSuccessRateMinimumHosts()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SuccessRateMinimumHosts")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSuccessRateMinimumHosts(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSuccessRateMinimumHosts(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SuccessRateMinimumHosts")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetSuccessRateRequestVolume()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SuccessRateRequestVolume")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSuccessRateRequestVolume(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSuccessRateRequestVolume(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SuccessRateRequestVolume")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetSuccessRateStdevFactor()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SuccessRateStdevFactor")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSuccessRateStdevFactor(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSuccessRateStdevFactor(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SuccessRateStdevFactor")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetConsecutiveGatewayFailure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConsecutiveGatewayFailure")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConsecutiveGatewayFailure(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConsecutiveGatewayFailure(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ConsecutiveGatewayFailure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetEnforcingConsecutiveGatewayFailure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnforcingConsecutiveGatewayFailure")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetEnforcingConsecutiveGatewayFailure(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetEnforcingConsecutiveGatewayFailure(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("EnforcingConsecutiveGatewayFailure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -198,42 +268,60 @@ func (m *OutlierDetection) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetConsecutiveLocalOriginFailure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConsecutiveLocalOriginFailure")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConsecutiveLocalOriginFailure(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConsecutiveLocalOriginFailure(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ConsecutiveLocalOriginFailure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetEnforcingConsecutiveLocalOriginFailure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnforcingConsecutiveLocalOriginFailure")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetEnforcingConsecutiveLocalOriginFailure(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetEnforcingConsecutiveLocalOriginFailure(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("EnforcingConsecutiveLocalOriginFailure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetEnforcingLocalOriginSuccessRate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnforcingLocalOriginSuccessRate")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetEnforcingLocalOriginSuccessRate(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetEnforcingLocalOriginSuccessRate(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("EnforcingLocalOriginSuccessRate")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/external/envoy/api/v2/cluster/outlier_detection.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/api/v2/cluster/outlier_detection.pb.uniquehash.go new file mode 100644 index 000000000..b60a0ecff --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/api/v2/cluster/outlier_detection.pb.uniquehash.go @@ -0,0 +1,335 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/api/v2/cluster/outlier_detection.proto + +package cluster + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *OutlierDetection) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.cluster.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/cluster.OutlierDetection")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetConsecutive_5Xx()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Consecutive_5Xx")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConsecutive_5Xx(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Consecutive_5Xx")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Interval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Interval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetBaseEjectionTime()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BaseEjectionTime")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBaseEjectionTime(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BaseEjectionTime")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxEjectionPercent()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxEjectionPercent")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxEjectionPercent(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxEjectionPercent")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEnforcingConsecutive_5Xx()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnforcingConsecutive_5Xx")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnforcingConsecutive_5Xx(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EnforcingConsecutive_5Xx")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEnforcingSuccessRate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnforcingSuccessRate")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnforcingSuccessRate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EnforcingSuccessRate")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetSuccessRateMinimumHosts()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SuccessRateMinimumHosts")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSuccessRateMinimumHosts(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SuccessRateMinimumHosts")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetSuccessRateRequestVolume()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SuccessRateRequestVolume")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSuccessRateRequestVolume(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SuccessRateRequestVolume")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetSuccessRateStdevFactor()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SuccessRateStdevFactor")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSuccessRateStdevFactor(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SuccessRateStdevFactor")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetConsecutiveGatewayFailure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConsecutiveGatewayFailure")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConsecutiveGatewayFailure(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConsecutiveGatewayFailure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEnforcingConsecutiveGatewayFailure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnforcingConsecutiveGatewayFailure")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnforcingConsecutiveGatewayFailure(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EnforcingConsecutiveGatewayFailure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("SplitExternalLocalOriginErrors")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetSplitExternalLocalOriginErrors()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetConsecutiveLocalOriginFailure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConsecutiveLocalOriginFailure")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConsecutiveLocalOriginFailure(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConsecutiveLocalOriginFailure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEnforcingConsecutiveLocalOriginFailure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnforcingConsecutiveLocalOriginFailure")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnforcingConsecutiveLocalOriginFailure(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EnforcingConsecutiveLocalOriginFailure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEnforcingLocalOriginSuccessRate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnforcingLocalOriginSuccessRate")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnforcingLocalOriginSuccessRate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EnforcingLocalOriginSuccessRate")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/api/v2/core/health_check.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/api/v2/core/health_check.pb.equal.go index 37eebe831..4ab97f243 100644 --- a/pkg/api/gloo.solo.io/external/envoy/api/v2/core/health_check.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/api/v2/core/health_check.pb.equal.go @@ -12,6 +12,8 @@ import ( "github.com/golang/protobuf/proto" equality "github.com/solo-io/protoc-gen-ext/pkg/equality" + + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" ) // ensure the imports are used @@ -23,6 +25,8 @@ var ( _ = strings.Compare _ = equality.Equalizer(nil) _ = proto.Message(nil) + + _ = v3.RequestMethod(0) ) // Equal function @@ -171,6 +175,9 @@ func (m *HealthCheck) Equal(that interface{}) bool { switch m.HealthChecker.(type) { case *HealthCheck_HttpHealthCheck_: + if _, ok := target.HealthChecker.(*HealthCheck_HttpHealthCheck_); !ok { + return false + } if h, ok := interface{}(m.GetHttpHealthCheck()).(equality.Equalizer); ok { if !h.Equal(target.GetHttpHealthCheck()) { @@ -183,6 +190,9 @@ func (m *HealthCheck) Equal(that interface{}) bool { } case *HealthCheck_TcpHealthCheck_: + if _, ok := target.HealthChecker.(*HealthCheck_TcpHealthCheck_); !ok { + return false + } if h, ok := interface{}(m.GetTcpHealthCheck()).(equality.Equalizer); ok { if !h.Equal(target.GetTcpHealthCheck()) { @@ -195,6 +205,9 @@ func (m *HealthCheck) Equal(that interface{}) bool { } case *HealthCheck_GrpcHealthCheck_: + if _, ok := target.HealthChecker.(*HealthCheck_GrpcHealthCheck_); !ok { + return false + } if h, ok := interface{}(m.GetGrpcHealthCheck()).(equality.Equalizer); ok { if !h.Equal(target.GetGrpcHealthCheck()) { @@ -207,6 +220,9 @@ func (m *HealthCheck) Equal(that interface{}) bool { } case *HealthCheck_CustomHealthCheck_: + if _, ok := target.HealthChecker.(*HealthCheck_CustomHealthCheck_); !ok { + return false + } if h, ok := interface{}(m.GetCustomHealthCheck()).(equality.Equalizer); ok { if !h.Equal(target.GetCustomHealthCheck()) { @@ -218,6 +234,11 @@ func (m *HealthCheck) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.HealthChecker != target.HealthChecker { + return false + } } return true @@ -247,11 +268,19 @@ func (m *HealthCheck_Payload) Equal(that interface{}) bool { switch m.Payload.(type) { case *HealthCheck_Payload_Text: + if _, ok := target.Payload.(*HealthCheck_Payload_Text); !ok { + return false + } if strings.Compare(m.GetText(), target.GetText()) != 0 { return false } + default: + // m is nil but target is not nil + if m.Payload != target.Payload { + return false + } } return true @@ -349,6 +378,10 @@ func (m *HealthCheck_HttpHealthCheck) Equal(that interface{}) bool { } } + if m.GetMethod() != target.GetMethod() { + return false + } + return true } @@ -460,6 +493,23 @@ func (m *HealthCheck_GrpcHealthCheck) Equal(that interface{}) bool { return false } + if len(m.GetInitialMetadata()) != len(target.GetInitialMetadata()) { + return false + } + for idx, v := range m.GetInitialMetadata() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetInitialMetadata()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetInitialMetadata()[idx]) { + return false + } + } + + } + return true } @@ -491,6 +541,9 @@ func (m *HealthCheck_CustomHealthCheck) Equal(that interface{}) bool { switch m.ConfigType.(type) { case *HealthCheck_CustomHealthCheck_Config: + if _, ok := target.ConfigType.(*HealthCheck_CustomHealthCheck_Config); !ok { + return false + } if h, ok := interface{}(m.GetConfig()).(equality.Equalizer); ok { if !h.Equal(target.GetConfig()) { @@ -503,6 +556,9 @@ func (m *HealthCheck_CustomHealthCheck) Equal(that interface{}) bool { } case *HealthCheck_CustomHealthCheck_TypedConfig: + if _, ok := target.ConfigType.(*HealthCheck_CustomHealthCheck_TypedConfig); !ok { + return false + } if h, ok := interface{}(m.GetTypedConfig()).(equality.Equalizer); ok { if !h.Equal(target.GetTypedConfig()) { @@ -514,6 +570,11 @@ func (m *HealthCheck_CustomHealthCheck) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.ConfigType != target.ConfigType { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/external/envoy/api/v2/core/health_check.pb.go b/pkg/api/gloo.solo.io/external/envoy/api/v2/core/health_check.pb.go index 5d7293c26..bdd47ebad 100644 --- a/pkg/api/gloo.solo.io/external/envoy/api/v2/core/health_check.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/api/v2/core/health_check.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/api/v2/core/health_check.proto @@ -9,19 +9,20 @@ package core import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - any "github.com/golang/protobuf/ptypes/any" - duration "github.com/golang/protobuf/ptypes/duration" - _struct "github.com/golang/protobuf/ptypes/struct" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" _type "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type" advanced_http "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/advanced_http" core "github.com/solo-io/solo-kit/pkg/api/external/envoy/api/v2/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" + durationpb "google.golang.org/protobuf/types/known/durationpb" + structpb "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -31,10 +32,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Endpoint health status. type HealthStatus int32 @@ -46,9 +43,9 @@ const ( // Unhealthy. HealthStatus_UNHEALTHY HealthStatus = 2 // Connection draining in progress. E.g., - // ``_ + // https://aws.amazon.com/blogs/aws/elb-connection-draining-remove-instances-from-service-with-care/ // or - // ``_. + // https://cloud.google.com/compute/docs/load-balancing/enabling-connection-draining. // This is interpreted by Envoy as *UNHEALTHY*. HealthStatus_DRAINING HealthStatus = 3 // Health check timed out. This is part of HDS and is interpreted by Envoy as @@ -106,22 +103,19 @@ func (HealthStatus) EnumDescriptor() ([]byte, []int) { } type HealthCheck struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The time to wait for a health check response. If the timeout is reached the // health check attempt will be considered a failure. - Timeout *duration.Duration `protobuf:"bytes,1,opt,name=timeout,proto3" json:"timeout,omitempty"` + Timeout *durationpb.Duration `protobuf:"bytes,1,opt,name=timeout,proto3" json:"timeout,omitempty"` // The interval between health checks. - Interval *duration.Duration `protobuf:"bytes,2,opt,name=interval,proto3" json:"interval,omitempty"` + Interval *durationpb.Duration `protobuf:"bytes,2,opt,name=interval,proto3" json:"interval,omitempty"` // An optional jitter amount in milliseconds. If specified, Envoy will start health // checking after for a random time in ms between 0 and initial_jitter. This only // applies to the first health check. - InitialJitter *duration.Duration `protobuf:"bytes,20,opt,name=initial_jitter,json=initialJitter,proto3" json:"initial_jitter,omitempty"` + InitialJitter *durationpb.Duration `protobuf:"bytes,20,opt,name=initial_jitter,json=initialJitter,proto3" json:"initial_jitter,omitempty"` // An optional jitter amount in milliseconds. If specified, during every // interval Envoy will add interval_jitter to the wait time. - IntervalJitter *duration.Duration `protobuf:"bytes,3,opt,name=interval_jitter,json=intervalJitter,proto3" json:"interval_jitter,omitempty"` + IntervalJitter *durationpb.Duration `protobuf:"bytes,3,opt,name=interval_jitter,json=intervalJitter,proto3" json:"interval_jitter,omitempty"` // An optional jitter amount as a percentage of interval_ms. If specified, // during every interval Envoy will add interval_ms * // interval_jitter_percent / 100 to the wait time. @@ -132,14 +126,15 @@ type HealthCheck struct { // The number of unhealthy health checks required before a host is marked // unhealthy. Note that for *http* health checking if a host responds with 503 // this threshold is ignored and the host is considered unhealthy immediately. - UnhealthyThreshold *wrappers.UInt32Value `protobuf:"bytes,4,opt,name=unhealthy_threshold,json=unhealthyThreshold,proto3" json:"unhealthy_threshold,omitempty"` + UnhealthyThreshold *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=unhealthy_threshold,json=unhealthyThreshold,proto3" json:"unhealthy_threshold,omitempty"` // The number of healthy health checks required before a host is marked // healthy. Note that during startup, only a single successful health check is // required to mark a host healthy. - HealthyThreshold *wrappers.UInt32Value `protobuf:"bytes,5,opt,name=healthy_threshold,json=healthyThreshold,proto3" json:"healthy_threshold,omitempty"` + HealthyThreshold *wrapperspb.UInt32Value `protobuf:"bytes,5,opt,name=healthy_threshold,json=healthyThreshold,proto3" json:"healthy_threshold,omitempty"` // Reuse health check connection between health checks. Default is true. - ReuseConnection *wrappers.BoolValue `protobuf:"bytes,7,opt,name=reuse_connection,json=reuseConnection,proto3" json:"reuse_connection,omitempty"` - // Types that are assignable to HealthChecker: + ReuseConnection *wrapperspb.BoolValue `protobuf:"bytes,7,opt,name=reuse_connection,json=reuseConnection,proto3" json:"reuse_connection,omitempty"` + // Types that are valid to be assigned to HealthChecker: + // // *HealthCheck_HttpHealthCheck_ // *HealthCheck_TcpHealthCheck_ // *HealthCheck_GrpcHealthCheck_ @@ -153,26 +148,26 @@ type HealthCheck struct { // any other. // // The default value for "no traffic interval" is 60 seconds. - NoTrafficInterval *duration.Duration `protobuf:"bytes,12,opt,name=no_traffic_interval,json=noTrafficInterval,proto3" json:"no_traffic_interval,omitempty"` + NoTrafficInterval *durationpb.Duration `protobuf:"bytes,12,opt,name=no_traffic_interval,json=noTrafficInterval,proto3" json:"no_traffic_interval,omitempty"` // The "unhealthy interval" is a health check interval that is used for hosts that are marked as // unhealthy. As soon as the host is marked as healthy, Envoy will shift back to using the // standard health check interval that is defined. // // The default value for "unhealthy interval" is the same as "interval". - UnhealthyInterval *duration.Duration `protobuf:"bytes,14,opt,name=unhealthy_interval,json=unhealthyInterval,proto3" json:"unhealthy_interval,omitempty"` + UnhealthyInterval *durationpb.Duration `protobuf:"bytes,14,opt,name=unhealthy_interval,json=unhealthyInterval,proto3" json:"unhealthy_interval,omitempty"` // The "unhealthy edge interval" is a special health check interval that is used for the first // health check right after a host is marked as unhealthy. For subsequent health checks // Envoy will shift back to using either "unhealthy interval" if present or the standard health // check interval that is defined. // // The default value for "unhealthy edge interval" is the same as "unhealthy interval". - UnhealthyEdgeInterval *duration.Duration `protobuf:"bytes,15,opt,name=unhealthy_edge_interval,json=unhealthyEdgeInterval,proto3" json:"unhealthy_edge_interval,omitempty"` + UnhealthyEdgeInterval *durationpb.Duration `protobuf:"bytes,15,opt,name=unhealthy_edge_interval,json=unhealthyEdgeInterval,proto3" json:"unhealthy_edge_interval,omitempty"` // The "healthy edge interval" is a special health check interval that is used for the first // health check right after a host is marked as healthy. For subsequent health checks // Envoy will shift back to using the standard health check interval that is defined. // // The default value for "healthy edge interval" is the same as the default interval. - HealthyEdgeInterval *duration.Duration `protobuf:"bytes,16,opt,name=healthy_edge_interval,json=healthyEdgeInterval,proto3" json:"healthy_edge_interval,omitempty"` + HealthyEdgeInterval *durationpb.Duration `protobuf:"bytes,16,opt,name=healthy_edge_interval,json=healthyEdgeInterval,proto3" json:"healthy_edge_interval,omitempty"` // Specifies the path to the `health check event log (arch_overview_health_check_logging)`. // If empty, no event log will be written. EventLogPath string `protobuf:"bytes,17,opt,name=event_log_path,json=eventLogPath,proto3" json:"event_log_path,omitempty"` @@ -180,15 +175,15 @@ type HealthCheck struct { // initial health check failure event will be logged. // The default value is false. AlwaysLogHealthCheckFailures bool `protobuf:"varint,19,opt,name=always_log_health_check_failures,json=alwaysLogHealthCheckFailures,proto3" json:"always_log_health_check_failures,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HealthCheck) Reset() { *x = HealthCheck{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HealthCheck) String() string { @@ -199,7 +194,7 @@ func (*HealthCheck) ProtoMessage() {} func (x *HealthCheck) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -214,28 +209,28 @@ func (*HealthCheck) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_rawDescGZIP(), []int{0} } -func (x *HealthCheck) GetTimeout() *duration.Duration { +func (x *HealthCheck) GetTimeout() *durationpb.Duration { if x != nil { return x.Timeout } return nil } -func (x *HealthCheck) GetInterval() *duration.Duration { +func (x *HealthCheck) GetInterval() *durationpb.Duration { if x != nil { return x.Interval } return nil } -func (x *HealthCheck) GetInitialJitter() *duration.Duration { +func (x *HealthCheck) GetInitialJitter() *durationpb.Duration { if x != nil { return x.InitialJitter } return nil } -func (x *HealthCheck) GetIntervalJitter() *duration.Duration { +func (x *HealthCheck) GetIntervalJitter() *durationpb.Duration { if x != nil { return x.IntervalJitter } @@ -249,84 +244,92 @@ func (x *HealthCheck) GetIntervalJitterPercent() uint32 { return 0 } -func (x *HealthCheck) GetUnhealthyThreshold() *wrappers.UInt32Value { +func (x *HealthCheck) GetUnhealthyThreshold() *wrapperspb.UInt32Value { if x != nil { return x.UnhealthyThreshold } return nil } -func (x *HealthCheck) GetHealthyThreshold() *wrappers.UInt32Value { +func (x *HealthCheck) GetHealthyThreshold() *wrapperspb.UInt32Value { if x != nil { return x.HealthyThreshold } return nil } -func (x *HealthCheck) GetReuseConnection() *wrappers.BoolValue { +func (x *HealthCheck) GetReuseConnection() *wrapperspb.BoolValue { if x != nil { return x.ReuseConnection } return nil } -func (m *HealthCheck) GetHealthChecker() isHealthCheck_HealthChecker { - if m != nil { - return m.HealthChecker +func (x *HealthCheck) GetHealthChecker() isHealthCheck_HealthChecker { + if x != nil { + return x.HealthChecker } return nil } func (x *HealthCheck) GetHttpHealthCheck() *HealthCheck_HttpHealthCheck { - if x, ok := x.GetHealthChecker().(*HealthCheck_HttpHealthCheck_); ok { - return x.HttpHealthCheck + if x != nil { + if x, ok := x.HealthChecker.(*HealthCheck_HttpHealthCheck_); ok { + return x.HttpHealthCheck + } } return nil } func (x *HealthCheck) GetTcpHealthCheck() *HealthCheck_TcpHealthCheck { - if x, ok := x.GetHealthChecker().(*HealthCheck_TcpHealthCheck_); ok { - return x.TcpHealthCheck + if x != nil { + if x, ok := x.HealthChecker.(*HealthCheck_TcpHealthCheck_); ok { + return x.TcpHealthCheck + } } return nil } func (x *HealthCheck) GetGrpcHealthCheck() *HealthCheck_GrpcHealthCheck { - if x, ok := x.GetHealthChecker().(*HealthCheck_GrpcHealthCheck_); ok { - return x.GrpcHealthCheck + if x != nil { + if x, ok := x.HealthChecker.(*HealthCheck_GrpcHealthCheck_); ok { + return x.GrpcHealthCheck + } } return nil } func (x *HealthCheck) GetCustomHealthCheck() *HealthCheck_CustomHealthCheck { - if x, ok := x.GetHealthChecker().(*HealthCheck_CustomHealthCheck_); ok { - return x.CustomHealthCheck + if x != nil { + if x, ok := x.HealthChecker.(*HealthCheck_CustomHealthCheck_); ok { + return x.CustomHealthCheck + } } return nil } -func (x *HealthCheck) GetNoTrafficInterval() *duration.Duration { +func (x *HealthCheck) GetNoTrafficInterval() *durationpb.Duration { if x != nil { return x.NoTrafficInterval } return nil } -func (x *HealthCheck) GetUnhealthyInterval() *duration.Duration { +func (x *HealthCheck) GetUnhealthyInterval() *durationpb.Duration { if x != nil { return x.UnhealthyInterval } return nil } -func (x *HealthCheck) GetUnhealthyEdgeInterval() *duration.Duration { +func (x *HealthCheck) GetUnhealthyEdgeInterval() *durationpb.Duration { if x != nil { return x.UnhealthyEdgeInterval } return nil } -func (x *HealthCheck) GetHealthyEdgeInterval() *duration.Duration { +func (x *HealthCheck) GetHealthyEdgeInterval() *durationpb.Duration { if x != nil { return x.HealthyEdgeInterval } @@ -381,22 +384,20 @@ func (*HealthCheck_CustomHealthCheck_) isHealthCheck_HealthChecker() {} // Describes the encoding of the payload bytes in the payload. type HealthCheck_Payload struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Payload: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Payload: + // // *HealthCheck_Payload_Text - Payload isHealthCheck_Payload_Payload `protobuf_oneof:"payload"` + Payload isHealthCheck_Payload_Payload `protobuf_oneof:"payload"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HealthCheck_Payload) Reset() { *x = HealthCheck_Payload{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HealthCheck_Payload) String() string { @@ -407,7 +408,7 @@ func (*HealthCheck_Payload) ProtoMessage() {} func (x *HealthCheck_Payload) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -422,16 +423,18 @@ func (*HealthCheck_Payload) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_rawDescGZIP(), []int{0, 0} } -func (m *HealthCheck_Payload) GetPayload() isHealthCheck_Payload_Payload { - if m != nil { - return m.Payload +func (x *HealthCheck_Payload) GetPayload() isHealthCheck_Payload_Payload { + if x != nil { + return x.Payload } return nil } func (x *HealthCheck_Payload) GetText() string { - if x, ok := x.GetPayload().(*HealthCheck_Payload_Text); ok { - return x.Text + if x != nil { + if x, ok := x.Payload.(*HealthCheck_Payload_Text); ok { + return x.Text + } } return "" } @@ -449,10 +452,7 @@ func (*HealthCheck_Payload_Text) isHealthCheck_Payload_Payload() {} // [#comment:next free field: 11] type HealthCheck_HttpHealthCheck struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The value of the host header in the HTTP health check request. If // left empty (default value), the name of the cluster this health check is associated // with will be used. @@ -481,15 +481,20 @@ type HealthCheck_HttpHealthCheck struct { // (Enterprise Only): If defined, the response health check rules take precedence over the http // `expected_statuses`. ResponseAssertions *advanced_http.ResponseAssertions `protobuf:"bytes,10,opt,name=response_assertions,json=responseAssertions,proto3" json:"response_assertions,omitempty"` + // HTTP Method that will be used for health checking, default is "GET". + // GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, PATCH methods are supported, but making request body is not supported. + // CONNECT method is disallowed because it is not appropriate for health check request. + // If a non-200 response is expected by the method, it needs to be set in expected_statuses. + Method v3.RequestMethod `protobuf:"varint,11,opt,name=method,proto3,enum=solo.io.envoy.config.core.v3.RequestMethod" json:"method,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HealthCheck_HttpHealthCheck) Reset() { *x = HealthCheck_HttpHealthCheck{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HealthCheck_HttpHealthCheck) String() string { @@ -500,7 +505,7 @@ func (*HealthCheck_HttpHealthCheck) ProtoMessage() {} func (x *HealthCheck_HttpHealthCheck) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -571,26 +576,30 @@ func (x *HealthCheck_HttpHealthCheck) GetResponseAssertions() *advanced_http.Res return nil } -type HealthCheck_TcpHealthCheck struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *HealthCheck_HttpHealthCheck) GetMethod() v3.RequestMethod { + if x != nil { + return x.Method + } + return v3.RequestMethod(0) +} +type HealthCheck_TcpHealthCheck struct { + state protoimpl.MessageState `protogen:"open.v1"` // Empty payloads imply a connect-only health check. Send *HealthCheck_Payload `protobuf:"bytes,1,opt,name=send,proto3" json:"send,omitempty"` // When checking the response, “fuzzy” matching is performed such that each // binary block must be found, and in the order specified, but not // necessarily contiguous. - Receive []*HealthCheck_Payload `protobuf:"bytes,2,rep,name=receive,proto3" json:"receive,omitempty"` + Receive []*HealthCheck_Payload `protobuf:"bytes,2,rep,name=receive,proto3" json:"receive,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HealthCheck_TcpHealthCheck) Reset() { *x = HealthCheck_TcpHealthCheck{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HealthCheck_TcpHealthCheck) String() string { @@ -601,7 +610,7 @@ func (*HealthCheck_TcpHealthCheck) ProtoMessage() {} func (x *HealthCheck_TcpHealthCheck) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -631,24 +640,21 @@ func (x *HealthCheck_TcpHealthCheck) GetReceive() []*HealthCheck_Payload { } type HealthCheck_RedisHealthCheck struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // If set, optionally perform ``EXISTS `` instead of ``PING``. A return value + state protoimpl.MessageState `protogen:"open.v1"` + // If set, optionally perform `EXISTS ` instead of `PING`. A return value // from Redis of 0 (does not exist) is considered a passing healthcheck. A return value other // than 0 is considered a failure. This allows the user to mark a Redis instance for maintenance // by setting the specified key to any value and waiting for traffic to drain. - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HealthCheck_RedisHealthCheck) Reset() { *x = HealthCheck_RedisHealthCheck{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HealthCheck_RedisHealthCheck) String() string { @@ -659,7 +665,7 @@ func (*HealthCheck_RedisHealthCheck) ProtoMessage() {} func (x *HealthCheck_RedisHealthCheck) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -681,34 +687,31 @@ func (x *HealthCheck_RedisHealthCheck) GetKey() string { return "" } -// `grpc.health.v1.Health -// `_-based -// healthcheck. See `gRPC doc `_ +// [grpc.health.v1.Health](https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto)-based +// healthcheck. See [gRPC doc](https://github.com/grpc/grpc/blob/master/doc/health-checking.md) // for details. type HealthCheck_GrpcHealthCheck struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // An optional service name parameter which will be sent to gRPC service in - // `grpc.health.v1.HealthCheckRequest - // `_. - // message. See `gRPC health-checking overview - // `_ for more information. + // [grpc.health.v1.HealthCheckRequest](https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto#L20) + // message. See [gRPC health-checking overview](https://github.com/grpc/grpc/blob/master/doc/health-checking.md) for more information. ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` // The value of the :authority header in the gRPC health check request. If // left empty (default value), the name of the cluster this health check is associated // with will be used. Authority string `protobuf:"bytes,2,opt,name=authority,proto3" json:"authority,omitempty"` + // Specifies a list of key-value pairs that should be added to the metadata of each GRPC call + // that is sent to the health checked cluster. + InitialMetadata []*core.HeaderValueOption `protobuf:"bytes,3,rep,name=initial_metadata,json=initialMetadata,proto3" json:"initial_metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HealthCheck_GrpcHealthCheck) Reset() { *x = HealthCheck_GrpcHealthCheck{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HealthCheck_GrpcHealthCheck) String() string { @@ -719,7 +722,7 @@ func (*HealthCheck_GrpcHealthCheck) ProtoMessage() {} func (x *HealthCheck_GrpcHealthCheck) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -748,30 +751,35 @@ func (x *HealthCheck_GrpcHealthCheck) GetAuthority() string { return "" } +func (x *HealthCheck_GrpcHealthCheck) GetInitialMetadata() []*core.HeaderValueOption { + if x != nil { + return x.InitialMetadata + } + return nil +} + // Custom health check. type HealthCheck_CustomHealthCheck struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The registered name of the custom health checker. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // A custom health checker specific configuration which depends on the custom health checker // being instantiated. See :api:`envoy/config/health_checker` for reference. // - // Types that are assignable to ConfigType: + // Types that are valid to be assigned to ConfigType: + // // *HealthCheck_CustomHealthCheck_Config // *HealthCheck_CustomHealthCheck_TypedConfig - ConfigType isHealthCheck_CustomHealthCheck_ConfigType `protobuf_oneof:"config_type"` + ConfigType isHealthCheck_CustomHealthCheck_ConfigType `protobuf_oneof:"config_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HealthCheck_CustomHealthCheck) Reset() { *x = HealthCheck_CustomHealthCheck{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HealthCheck_CustomHealthCheck) String() string { @@ -782,7 +790,7 @@ func (*HealthCheck_CustomHealthCheck) ProtoMessage() {} func (x *HealthCheck_CustomHealthCheck) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -804,23 +812,27 @@ func (x *HealthCheck_CustomHealthCheck) GetName() string { return "" } -func (m *HealthCheck_CustomHealthCheck) GetConfigType() isHealthCheck_CustomHealthCheck_ConfigType { - if m != nil { - return m.ConfigType +func (x *HealthCheck_CustomHealthCheck) GetConfigType() isHealthCheck_CustomHealthCheck_ConfigType { + if x != nil { + return x.ConfigType } return nil } -func (x *HealthCheck_CustomHealthCheck) GetConfig() *_struct.Struct { - if x, ok := x.GetConfigType().(*HealthCheck_CustomHealthCheck_Config); ok { - return x.Config +func (x *HealthCheck_CustomHealthCheck) GetConfig() *structpb.Struct { + if x != nil { + if x, ok := x.ConfigType.(*HealthCheck_CustomHealthCheck_Config); ok { + return x.Config + } } return nil } -func (x *HealthCheck_CustomHealthCheck) GetTypedConfig() *any.Any { - if x, ok := x.GetConfigType().(*HealthCheck_CustomHealthCheck_TypedConfig); ok { - return x.TypedConfig +func (x *HealthCheck_CustomHealthCheck) GetTypedConfig() *anypb.Any { + if x != nil { + if x, ok := x.ConfigType.(*HealthCheck_CustomHealthCheck_TypedConfig); ok { + return x.TypedConfig + } } return nil } @@ -830,11 +842,11 @@ type isHealthCheck_CustomHealthCheck_ConfigType interface { } type HealthCheck_CustomHealthCheck_Config struct { - Config *_struct.Struct `protobuf:"bytes,2,opt,name=config,proto3,oneof"` + Config *structpb.Struct `protobuf:"bytes,2,opt,name=config,proto3,oneof"` } type HealthCheck_CustomHealthCheck_TypedConfig struct { - TypedConfig *any.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"` + TypedConfig *anypb.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"` } func (*HealthCheck_CustomHealthCheck_Config) isHealthCheck_CustomHealthCheck_ConfigType() {} @@ -843,7 +855,7 @@ func (*HealthCheck_CustomHealthCheck_TypedConfig) isHealthCheck_CustomHealthChec var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_rawDesc = string([]byte{ 0x0a, 0x58, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -866,206 +878,222 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_h 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, - 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, - 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb1, 0x13, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x3f, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0xaa, 0x01, 0x04, 0x08, 0x01, 0x2a, 0x00, 0x52, - 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x41, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0xaa, 0x01, 0x04, 0x08, 0x01, 0x2a, - 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x40, 0x0a, 0x0e, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x6a, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x14, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, - 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x4a, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x42, 0x0a, - 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x6a, 0x69, 0x74, 0x74, 0x65, 0x72, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x4a, 0x69, 0x74, 0x74, 0x65, - 0x72, 0x12, 0x36, 0x0a, 0x17, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x6a, 0x69, - 0x74, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x15, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x4a, 0x69, 0x74, 0x74, - 0x65, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x13, 0x75, 0x6e, 0x68, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x75, 0x6e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x54, - 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x49, 0x0a, 0x11, 0x68, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x79, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x10, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, - 0x6f, 0x6c, 0x64, 0x12, 0x45, 0x0a, 0x10, 0x72, 0x65, 0x75, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x6f, 0x1a, 0x53, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x62, 0x61, 0x73, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdb, 0x14, 0x0a, + 0x0b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x3f, 0x0a, 0x07, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x75, 0x73, 0x65, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x64, 0x0a, 0x11, 0x68, 0x74, - 0x74, 0x70, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x48, 0x74, - 0x74, 0x70, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x00, 0x52, - 0x0f, 0x68, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x12, 0x61, 0x0a, 0x10, 0x74, 0x63, 0x70, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x6f, 0x6c, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0xaa, 0x01, 0x04, + 0x08, 0x01, 0x2a, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x41, 0x0a, + 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0xaa, + 0x01, 0x04, 0x08, 0x01, 0x2a, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x12, 0x40, 0x0a, 0x0e, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x6a, 0x69, 0x74, 0x74, + 0x65, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x4a, 0x69, 0x74, 0x74, + 0x65, 0x72, 0x12, 0x42, 0x0a, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x6a, + 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x4a, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x17, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x5f, 0x6a, 0x69, 0x74, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x4a, 0x69, 0x74, 0x74, 0x65, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x4d, + 0x0a, 0x13, 0x75, 0x6e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x5f, 0x74, 0x68, 0x72, 0x65, + 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, + 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x75, 0x6e, 0x68, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x79, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x49, 0x0a, + 0x11, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, + 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, + 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x54, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x45, 0x0a, 0x10, 0x72, 0x65, 0x75, 0x73, + 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, + 0x72, 0x65, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x64, 0x0a, 0x11, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x2e, 0x54, 0x63, 0x70, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x48, 0x00, 0x52, 0x0e, 0x74, 0x63, 0x70, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x12, 0x64, 0x0a, 0x11, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x68, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, - 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x48, 0x65, 0x61, 0x6c, 0x74, - 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x0f, 0x67, 0x72, 0x70, 0x63, 0x48, 0x65, - 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x6a, 0x0a, 0x13, 0x63, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x43, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x48, 0x00, 0x52, 0x11, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x53, 0x0a, 0x13, 0x6e, 0x6f, 0x5f, 0x74, 0x72, 0x61, 0x66, - 0x66, 0x69, 0x63, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0xaa, 0x01, 0x02, 0x2a, 0x00, 0x52, 0x11, 0x6e, 0x6f, 0x54, 0x72, 0x61, 0x66, 0x66, - 0x69, 0x63, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x52, 0x0a, 0x12, 0x75, 0x6e, - 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x2a, 0x00, 0x52, 0x11, 0x75, 0x6e, 0x68, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x5b, - 0x0a, 0x17, 0x75, 0x6e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x5f, 0x65, 0x64, 0x67, 0x65, - 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x63, 0x6b, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x48, 0x00, 0x52, 0x0f, 0x68, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x61, 0x0a, 0x10, 0x74, 0x63, 0x70, 0x5f, 0x68, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x35, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x6c, + 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x54, 0x63, 0x70, 0x48, 0x65, 0x61, 0x6c, 0x74, + 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x0e, 0x74, 0x63, 0x70, 0x48, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x64, 0x0a, 0x11, 0x67, 0x72, 0x70, 0x63, + 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x47, 0x72, 0x70, 0x63, + 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x0f, 0x67, + 0x72, 0x70, 0x63, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x6a, + 0x0a, 0x13, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x11, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, + 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x53, 0x0a, 0x13, 0x6e, 0x6f, + 0x5f, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x2a, 0x00, 0x52, 0x11, 0x6e, 0x6f, + 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, + 0x52, 0x0a, 0x12, 0x75, 0x6e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x2a, 0x00, + 0x52, 0x11, 0x75, 0x6e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x12, 0x5b, 0x0a, 0x17, 0x75, 0x6e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, + 0x5f, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x2a, 0x00, 0x52, 0x15, 0x75, 0x6e, 0x68, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x79, 0x45, 0x64, 0x67, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x12, 0x57, 0x0a, 0x15, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x5f, 0x65, 0x64, 0x67, 0x65, + 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, - 0x01, 0x02, 0x2a, 0x00, 0x52, 0x15, 0x75, 0x6e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x45, - 0x64, 0x67, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x57, 0x0a, 0x15, 0x68, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x5f, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x2a, 0x00, 0x52, - 0x13, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x45, 0x64, 0x67, 0x65, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x12, 0x24, 0x0a, 0x0e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x6f, - 0x67, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x50, 0x61, 0x74, 0x68, 0x12, 0x46, 0x0a, 0x20, 0x61, 0x6c, - 0x77, 0x61, 0x79, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x13, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x4c, 0x6f, 0x67, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, - 0x65, 0x73, 0x1a, 0x38, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1d, 0x0a, - 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x72, 0x02, 0x20, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x42, 0x0e, 0x0a, 0x07, - 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x1a, 0xe0, 0x03, 0x0a, - 0x0f, 0x48, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x68, 0x6f, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x6c, 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x64, 0x64, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, - 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x92, 0x01, 0x03, 0x10, 0xe8, 0x07, 0x52, 0x13, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, - 0x64, 0x64, 0x12, 0x39, 0x0a, 0x19, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, - 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x1b, 0x0a, - 0x09, 0x75, 0x73, 0x65, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x08, 0x75, 0x73, 0x65, 0x48, 0x74, 0x74, 0x70, 0x32, 0x12, 0x4b, 0x0a, 0x11, 0x65, 0x78, - 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, - 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x66, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x68, - 0x74, 0x74, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x12, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, - 0x9e, 0x01, 0x0a, 0x0e, 0x54, 0x63, 0x70, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x12, 0x42, 0x0a, 0x04, 0x73, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2e, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65, 0x61, - 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x52, 0x04, 0x73, 0x65, 0x6e, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, - 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x1a, 0x24, 0x0a, 0x10, 0x52, 0x65, 0x64, 0x69, 0x73, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x1a, 0x52, 0x0a, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x48, 0x65, - 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, - 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x1a, 0xad, 0x01, 0x0a, 0x11, 0x43, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, - 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x39, 0x0a, 0x0c, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x0b, - 0x74, 0x79, 0x70, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0d, 0x0a, 0x0b, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x15, 0x0a, 0x0e, 0x68, 0x65, - 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, - 0x01, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x52, 0x12, 0x72, 0x65, 0x64, 0x69, 0x73, 0x5f, 0x68, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2a, 0x60, 0x0a, 0x0c, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x55, - 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x45, 0x41, 0x4c, - 0x54, 0x48, 0x59, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x4e, 0x48, 0x45, 0x41, 0x4c, 0x54, - 0x48, 0x59, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, - 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x04, 0x12, - 0x0c, 0x0a, 0x08, 0x44, 0x45, 0x47, 0x52, 0x41, 0x44, 0x45, 0x44, 0x10, 0x05, 0x42, 0x9b, 0x01, - 0x0a, 0x2f, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x42, 0x10, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, - 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x63, - 0x6f, 0x72, 0x65, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, -} + 0x01, 0x02, 0x2a, 0x00, 0x52, 0x13, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x45, 0x64, 0x67, + 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x24, 0x0a, 0x0e, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x50, 0x61, 0x74, 0x68, 0x12, + 0x46, 0x0a, 0x20, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x68, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, + 0x72, 0x65, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x61, 0x6c, 0x77, 0x61, 0x79, + 0x73, 0x4c, 0x6f, 0x67, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, + 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x1a, 0x38, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x12, 0x1d, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x65, 0x78, + 0x74, 0x42, 0x0e, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x03, 0xf8, 0x42, + 0x01, 0x1a, 0xa5, 0x04, 0x0a, 0x0f, 0x48, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x70, 0x61, 0x74, + 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, + 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x6c, 0x0a, 0x16, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, + 0x61, 0x64, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x92, 0x01, 0x03, 0x10, + 0xe8, 0x07, 0x52, 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x12, 0x39, 0x0a, 0x19, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x32, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x75, 0x73, 0x65, 0x48, 0x74, 0x74, 0x70, 0x32, 0x12, + 0x4b, 0x0a, 0x11, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, + 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x10, 0x65, 0x78, 0x70, 0x65, + 0x63, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x66, 0x0a, 0x13, + 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x61, 0x64, 0x76, 0x61, + 0x6e, 0x63, 0x65, 0x64, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x12, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x1a, 0x9e, 0x01, 0x0a, 0x0e, 0x54, 0x63, + 0x70, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x42, 0x0a, 0x04, + 0x73, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x04, 0x73, 0x65, 0x6e, 0x64, + 0x12, 0x48, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x52, 0x07, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x1a, 0x24, 0x0a, 0x10, 0x52, 0x65, + 0x64, 0x69, 0x73, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x1a, 0xb6, 0x01, 0x0a, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x62, 0x0a, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2c, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xfa, + 0x42, 0x06, 0x92, 0x01, 0x03, 0x10, 0xe8, 0x07, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, + 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0xad, 0x01, 0x0a, 0x11, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, + 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x06, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x39, 0x0a, 0x0c, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x74, + 0x79, 0x70, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0d, 0x0a, 0x0b, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x15, 0x0a, 0x0e, 0x68, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, 0x01, + 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x52, 0x12, 0x72, 0x65, 0x64, 0x69, 0x73, 0x5f, 0x68, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2a, 0x60, 0x0a, 0x0c, 0x48, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x45, 0x41, 0x4c, 0x54, + 0x48, 0x59, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x4e, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, + 0x59, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x10, + 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x04, 0x12, 0x0c, + 0x0a, 0x08, 0x44, 0x45, 0x47, 0x52, 0x41, 0x44, 0x45, 0x44, 0x10, 0x05, 0x42, 0x9b, 0x01, 0xb8, + 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x0a, 0x2f, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x10, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4c, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, + 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes = make([]protoimpl.MessageInfo, 7) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_goTypes = []any{ (HealthStatus)(0), // 0: solo.io.envoy.api.v2.core.HealthStatus (*HealthCheck)(nil), // 1: solo.io.envoy.api.v2.core.HealthCheck (*HealthCheck_Payload)(nil), // 2: solo.io.envoy.api.v2.core.HealthCheck.Payload @@ -1074,14 +1102,15 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_h (*HealthCheck_RedisHealthCheck)(nil), // 5: solo.io.envoy.api.v2.core.HealthCheck.RedisHealthCheck (*HealthCheck_GrpcHealthCheck)(nil), // 6: solo.io.envoy.api.v2.core.HealthCheck.GrpcHealthCheck (*HealthCheck_CustomHealthCheck)(nil), // 7: solo.io.envoy.api.v2.core.HealthCheck.CustomHealthCheck - (*duration.Duration)(nil), // 8: google.protobuf.Duration - (*wrappers.UInt32Value)(nil), // 9: google.protobuf.UInt32Value - (*wrappers.BoolValue)(nil), // 10: google.protobuf.BoolValue + (*durationpb.Duration)(nil), // 8: google.protobuf.Duration + (*wrapperspb.UInt32Value)(nil), // 9: google.protobuf.UInt32Value + (*wrapperspb.BoolValue)(nil), // 10: google.protobuf.BoolValue (*core.HeaderValueOption)(nil), // 11: solo.io.envoy.api.v2.core.HeaderValueOption (*_type.Int64Range)(nil), // 12: solo.io.envoy.type.Int64Range (*advanced_http.ResponseAssertions)(nil), // 13: advancedhttp.options.gloo.solo.io.ResponseAssertions - (*_struct.Struct)(nil), // 14: google.protobuf.Struct - (*any.Any)(nil), // 15: google.protobuf.Any + (v3.RequestMethod)(0), // 14: solo.io.envoy.config.core.v3.RequestMethod + (*structpb.Struct)(nil), // 15: google.protobuf.Struct + (*anypb.Any)(nil), // 16: google.protobuf.Any } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_depIdxs = []int32{ 8, // 0: solo.io.envoy.api.v2.core.HealthCheck.timeout:type_name -> google.protobuf.Duration @@ -1102,15 +1131,17 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_h 11, // 15: solo.io.envoy.api.v2.core.HealthCheck.HttpHealthCheck.request_headers_to_add:type_name -> solo.io.envoy.api.v2.core.HeaderValueOption 12, // 16: solo.io.envoy.api.v2.core.HealthCheck.HttpHealthCheck.expected_statuses:type_name -> solo.io.envoy.type.Int64Range 13, // 17: solo.io.envoy.api.v2.core.HealthCheck.HttpHealthCheck.response_assertions:type_name -> advancedhttp.options.gloo.solo.io.ResponseAssertions - 2, // 18: solo.io.envoy.api.v2.core.HealthCheck.TcpHealthCheck.send:type_name -> solo.io.envoy.api.v2.core.HealthCheck.Payload - 2, // 19: solo.io.envoy.api.v2.core.HealthCheck.TcpHealthCheck.receive:type_name -> solo.io.envoy.api.v2.core.HealthCheck.Payload - 14, // 20: solo.io.envoy.api.v2.core.HealthCheck.CustomHealthCheck.config:type_name -> google.protobuf.Struct - 15, // 21: solo.io.envoy.api.v2.core.HealthCheck.CustomHealthCheck.typed_config:type_name -> google.protobuf.Any - 22, // [22:22] is the sub-list for method output_type - 22, // [22:22] is the sub-list for method input_type - 22, // [22:22] is the sub-list for extension type_name - 22, // [22:22] is the sub-list for extension extendee - 0, // [0:22] is the sub-list for field type_name + 14, // 18: solo.io.envoy.api.v2.core.HealthCheck.HttpHealthCheck.method:type_name -> solo.io.envoy.config.core.v3.RequestMethod + 2, // 19: solo.io.envoy.api.v2.core.HealthCheck.TcpHealthCheck.send:type_name -> solo.io.envoy.api.v2.core.HealthCheck.Payload + 2, // 20: solo.io.envoy.api.v2.core.HealthCheck.TcpHealthCheck.receive:type_name -> solo.io.envoy.api.v2.core.HealthCheck.Payload + 11, // 21: solo.io.envoy.api.v2.core.HealthCheck.GrpcHealthCheck.initial_metadata:type_name -> solo.io.envoy.api.v2.core.HeaderValueOption + 15, // 22: solo.io.envoy.api.v2.core.HealthCheck.CustomHealthCheck.config:type_name -> google.protobuf.Struct + 16, // 23: solo.io.envoy.api.v2.core.HealthCheck.CustomHealthCheck.typed_config:type_name -> google.protobuf.Any + 24, // [24:24] is the sub-list for method output_type + 24, // [24:24] is the sub-list for method input_type + 24, // [24:24] is the sub-list for extension type_name + 24, // [24:24] is the sub-list for extension extendee + 0, // [0:24] is the sub-list for field type_name } func init() { @@ -1120,102 +1151,16 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_ if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheck); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheck_Payload); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheck_HttpHealthCheck); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheck_TcpHealthCheck); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheck_RedisHealthCheck); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheck_GrpcHealthCheck); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheck_CustomHealthCheck); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[0].OneofWrappers = []any{ (*HealthCheck_HttpHealthCheck_)(nil), (*HealthCheck_TcpHealthCheck_)(nil), (*HealthCheck_GrpcHealthCheck_)(nil), (*HealthCheck_CustomHealthCheck_)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[1].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[1].OneofWrappers = []any{ (*HealthCheck_Payload_Text)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[6].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes[6].OneofWrappers = []any{ (*HealthCheck_CustomHealthCheck_Config)(nil), (*HealthCheck_CustomHealthCheck_TypedConfig)(nil), } @@ -1223,7 +1168,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_ out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_rawDesc)), NumEnums: 1, NumMessages: 7, NumExtensions: 0, @@ -1235,7 +1180,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_ MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_core_health_check_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/api/v2/core/health_check.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/api/v2/core/health_check.pb.hash.go index c64c77eab..6a1c72e1b 100644 --- a/pkg/api/gloo.solo.io/external/envoy/api/v2/core/health_check.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/api/v2/core/health_check.pb.hash.go @@ -10,8 +10,10 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" + + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" ) // ensure the imports are used @@ -23,9 +25,15 @@ var ( _ = fnv.New64 _ = hashstructure.Hash _ = new(safe_hasher.SafeHasher) + + _ = v3.RequestMethod(0) ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HealthCheck) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,56 +47,80 @@ func (m *HealthCheck) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Interval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetInterval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Interval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetInitialJitter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InitialJitter")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetInitialJitter(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetInitialJitter(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("InitialJitter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetIntervalJitter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IntervalJitter")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetIntervalJitter(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetIntervalJitter(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("IntervalJitter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -100,98 +132,140 @@ func (m *HealthCheck) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetUnhealthyThreshold()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UnhealthyThreshold")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetUnhealthyThreshold(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetUnhealthyThreshold(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("UnhealthyThreshold")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetHealthyThreshold()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HealthyThreshold")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHealthyThreshold(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHealthyThreshold(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HealthyThreshold")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetReuseConnection()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ReuseConnection")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetReuseConnection(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetReuseConnection(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ReuseConnection")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetNoTrafficInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("NoTrafficInterval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetNoTrafficInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetNoTrafficInterval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("NoTrafficInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetUnhealthyInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UnhealthyInterval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetUnhealthyInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetUnhealthyInterval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("UnhealthyInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetUnhealthyEdgeInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UnhealthyEdgeInterval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetUnhealthyEdgeInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetUnhealthyEdgeInterval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("UnhealthyEdgeInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetHealthyEdgeInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HealthyEdgeInterval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHealthyEdgeInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHealthyEdgeInterval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HealthyEdgeInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -211,14 +285,20 @@ func (m *HealthCheck) Hash(hasher hash.Hash64) (uint64, error) { case *HealthCheck_HttpHealthCheck_: if h, ok := interface{}(m.GetHttpHealthCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpHealthCheck")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHttpHealthCheck(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHttpHealthCheck(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HttpHealthCheck")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -227,14 +307,20 @@ func (m *HealthCheck) Hash(hasher hash.Hash64) (uint64, error) { case *HealthCheck_TcpHealthCheck_: if h, ok := interface{}(m.GetTcpHealthCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpHealthCheck")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTcpHealthCheck(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTcpHealthCheck(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TcpHealthCheck")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -243,14 +329,20 @@ func (m *HealthCheck) Hash(hasher hash.Hash64) (uint64, error) { case *HealthCheck_GrpcHealthCheck_: if h, ok := interface{}(m.GetGrpcHealthCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcHealthCheck")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetGrpcHealthCheck(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetGrpcHealthCheck(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("GrpcHealthCheck")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -259,14 +351,20 @@ func (m *HealthCheck) Hash(hasher hash.Hash64) (uint64, error) { case *HealthCheck_CustomHealthCheck_: if h, ok := interface{}(m.GetCustomHealthCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomHealthCheck")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCustomHealthCheck(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCustomHealthCheck(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("CustomHealthCheck")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -278,6 +376,10 @@ func (m *HealthCheck) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HealthCheck_Payload) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -304,6 +406,10 @@ func (m *HealthCheck_Payload) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HealthCheck_HttpHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -331,14 +437,20 @@ func (m *HealthCheck_HttpHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRequestHeadersToAdd() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -362,14 +474,20 @@ func (m *HealthCheck_HttpHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetExpectedStatuses() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -378,23 +496,38 @@ func (m *HealthCheck_HttpHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetResponseAssertions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseAssertions")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetResponseAssertions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetResponseAssertions(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ResponseAssertions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } + err = binary.Write(hasher, binary.LittleEndian, m.GetMethod()) + if err != nil { + return 0, err + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HealthCheck_TcpHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -408,14 +541,20 @@ func (m *HealthCheck_TcpHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetSend()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Send")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSend(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSend(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Send")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -424,14 +563,20 @@ func (m *HealthCheck_TcpHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetReceive() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -443,6 +588,10 @@ func (m *HealthCheck_TcpHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HealthCheck_RedisHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -463,6 +612,10 @@ func (m *HealthCheck_RedisHealthCheck) Hash(hasher hash.Hash64) (uint64, error) } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HealthCheck_GrpcHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -483,10 +636,38 @@ func (m *HealthCheck_GrpcHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + for _, v := range m.GetInitialMetadata() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HealthCheck_CustomHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -508,14 +689,20 @@ func (m *HealthCheck_CustomHealthCheck) Hash(hasher hash.Hash64) (uint64, error) case *HealthCheck_CustomHealthCheck_Config: if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -524,14 +711,20 @@ func (m *HealthCheck_CustomHealthCheck) Hash(hasher hash.Hash64) (uint64, error) case *HealthCheck_CustomHealthCheck_TypedConfig: if h, ok := interface{}(m.GetTypedConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/external/envoy/api/v2/core/health_check.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/api/v2/core/health_check.pb.uniquehash.go new file mode 100644 index 000000000..16cec6670 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/api/v2/core/health_check.pb.uniquehash.go @@ -0,0 +1,803 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/api/v2/core/health_check.proto + +package core + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" + + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) + + _ = v3.RequestMethod(0) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HealthCheck) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.core.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/core.HealthCheck")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Interval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Interval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetInitialJitter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InitialJitter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInitialJitter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("InitialJitter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetIntervalJitter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IntervalJitter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIntervalJitter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IntervalJitter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("IntervalJitterPercent")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetIntervalJitterPercent()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetUnhealthyThreshold()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UnhealthyThreshold")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUnhealthyThreshold(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UnhealthyThreshold")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHealthyThreshold()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HealthyThreshold")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHealthyThreshold(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HealthyThreshold")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetReuseConnection()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ReuseConnection")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetReuseConnection(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ReuseConnection")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetNoTrafficInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("NoTrafficInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetNoTrafficInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("NoTrafficInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetUnhealthyInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UnhealthyInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUnhealthyInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UnhealthyInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetUnhealthyEdgeInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UnhealthyEdgeInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUnhealthyEdgeInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UnhealthyEdgeInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHealthyEdgeInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HealthyEdgeInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHealthyEdgeInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HealthyEdgeInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("EventLogPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetEventLogPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AlwaysLogHealthCheckFailures")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAlwaysLogHealthCheckFailures()) + if err != nil { + return 0, err + } + + switch m.HealthChecker.(type) { + + case *HealthCheck_HttpHealthCheck_: + + if h, ok := interface{}(m.GetHttpHealthCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpHealthCheck")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpHealthCheck(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpHealthCheck")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *HealthCheck_TcpHealthCheck_: + + if h, ok := interface{}(m.GetTcpHealthCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpHealthCheck")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTcpHealthCheck(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TcpHealthCheck")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *HealthCheck_GrpcHealthCheck_: + + if h, ok := interface{}(m.GetGrpcHealthCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcHealthCheck")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcHealthCheck(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcHealthCheck")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *HealthCheck_CustomHealthCheck_: + + if h, ok := interface{}(m.GetCustomHealthCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomHealthCheck")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCustomHealthCheck(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CustomHealthCheck")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HealthCheck_Payload) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.core.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/core.HealthCheck_Payload")); err != nil { + return 0, err + } + + switch m.Payload.(type) { + + case *HealthCheck_Payload_Text: + + if _, err = hasher.Write([]byte("Text")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetText())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HealthCheck_HttpHealthCheck) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.core.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/core.HealthCheck_HttpHealthCheck")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Host")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHost())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ServiceName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetServiceName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RequestHeadersToAdd")); err != nil { + return 0, err + } + for i, v := range m.GetRequestHeadersToAdd() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("RequestHeadersToRemove")); err != nil { + return 0, err + } + for i, v := range m.GetRequestHeadersToRemove() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("UseHttp2")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetUseHttp2()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ExpectedStatuses")); err != nil { + return 0, err + } + for i, v := range m.GetExpectedStatuses() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetResponseAssertions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseAssertions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseAssertions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseAssertions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Method")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMethod()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HealthCheck_TcpHealthCheck) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.core.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/core.HealthCheck_TcpHealthCheck")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSend()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Send")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSend(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Send")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Receive")); err != nil { + return 0, err + } + for i, v := range m.GetReceive() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HealthCheck_RedisHealthCheck) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.core.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/core.HealthCheck_RedisHealthCheck")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HealthCheck_GrpcHealthCheck) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.core.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/core.HealthCheck_GrpcHealthCheck")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ServiceName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetServiceName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Authority")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAuthority())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("InitialMetadata")); err != nil { + return 0, err + } + for i, v := range m.GetInitialMetadata() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HealthCheck_CustomHealthCheck) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.core.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/core.HealthCheck_CustomHealthCheck")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + switch m.ConfigType.(type) { + + case *HealthCheck_CustomHealthCheck_Config: + + if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *HealthCheck_CustomHealthCheck_TypedConfig: + + if h, ok := interface{}(m.GetTypedConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/api/v2/route/route.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/api/v2/route/route.pb.clone.go new file mode 100644 index 000000000..24559a787 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/api/v2/route/route.pb.clone.go @@ -0,0 +1,1583 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/api/v2/route/route.proto + +package route + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type" + + github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core "github.com/solo-io/solo-kit/pkg/api/external/envoy/api/v2/core" + + github_com_solo_io_solo_kit_pkg_api_external_envoy_type "github.com/solo-io/solo-kit/pkg/api/external/envoy/type" + + google_golang_org_protobuf_types_known_anypb "google.golang.org/protobuf/types/known/anypb" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *VirtualHost) Clone() proto.Message { + var target *VirtualHost + if m == nil { + return target + } + target = &VirtualHost{} + + target.Name = m.GetName() + + if m.GetDomains() != nil { + target.Domains = make([]string, len(m.GetDomains())) + for idx, v := range m.GetDomains() { + + target.Domains[idx] = v + + } + } + + if m.GetRoutes() != nil { + target.Routes = make([]*Route, len(m.GetRoutes())) + for idx, v := range m.GetRoutes() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Routes[idx] = h.Clone().(*Route) + } else { + target.Routes[idx] = proto.Clone(v).(*Route) + } + + } + } + + target.RequireTls = m.GetRequireTls() + + if m.GetVirtualClusters() != nil { + target.VirtualClusters = make([]*VirtualCluster, len(m.GetVirtualClusters())) + for idx, v := range m.GetVirtualClusters() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.VirtualClusters[idx] = h.Clone().(*VirtualCluster) + } else { + target.VirtualClusters[idx] = proto.Clone(v).(*VirtualCluster) + } + + } + } + + if m.GetRateLimits() != nil { + target.RateLimits = make([]*RateLimit, len(m.GetRateLimits())) + for idx, v := range m.GetRateLimits() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RateLimits[idx] = h.Clone().(*RateLimit) + } else { + target.RateLimits[idx] = proto.Clone(v).(*RateLimit) + } + + } + } + + if m.GetRequestHeadersToAdd() != nil { + target.RequestHeadersToAdd = make([]*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption, len(m.GetRequestHeadersToAdd())) + for idx, v := range m.GetRequestHeadersToAdd() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RequestHeadersToAdd[idx] = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption) + } else { + target.RequestHeadersToAdd[idx] = proto.Clone(v).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption) + } + + } + } + + if m.GetRequestHeadersToRemove() != nil { + target.RequestHeadersToRemove = make([]string, len(m.GetRequestHeadersToRemove())) + for idx, v := range m.GetRequestHeadersToRemove() { + + target.RequestHeadersToRemove[idx] = v + + } + } + + if m.GetResponseHeadersToAdd() != nil { + target.ResponseHeadersToAdd = make([]*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption, len(m.GetResponseHeadersToAdd())) + for idx, v := range m.GetResponseHeadersToAdd() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ResponseHeadersToAdd[idx] = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption) + } else { + target.ResponseHeadersToAdd[idx] = proto.Clone(v).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption) + } + + } + } + + if m.GetResponseHeadersToRemove() != nil { + target.ResponseHeadersToRemove = make([]string, len(m.GetResponseHeadersToRemove())) + for idx, v := range m.GetResponseHeadersToRemove() { + + target.ResponseHeadersToRemove[idx] = v + + } + } + + if h, ok := interface{}(m.GetCors()).(clone.Cloner); ok { + target.Cors = h.Clone().(*CorsPolicy) + } else { + target.Cors = proto.Clone(m.GetCors()).(*CorsPolicy) + } + + if m.GetPerFilterConfig() != nil { + target.PerFilterConfig = make(map[string]*google_golang_org_protobuf_types_known_structpb.Struct, len(m.GetPerFilterConfig())) + for k, v := range m.GetPerFilterConfig() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.PerFilterConfig[k] = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.PerFilterConfig[k] = proto.Clone(v).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + } + } + + if m.GetTypedPerFilterConfig() != nil { + target.TypedPerFilterConfig = make(map[string]*google_golang_org_protobuf_types_known_anypb.Any, len(m.GetTypedPerFilterConfig())) + for k, v := range m.GetTypedPerFilterConfig() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.TypedPerFilterConfig[k] = h.Clone().(*google_golang_org_protobuf_types_known_anypb.Any) + } else { + target.TypedPerFilterConfig[k] = proto.Clone(v).(*google_golang_org_protobuf_types_known_anypb.Any) + } + + } + } + + target.IncludeRequestAttemptCount = m.GetIncludeRequestAttemptCount() + + if h, ok := interface{}(m.GetRetryPolicy()).(clone.Cloner); ok { + target.RetryPolicy = h.Clone().(*RetryPolicy) + } else { + target.RetryPolicy = proto.Clone(m.GetRetryPolicy()).(*RetryPolicy) + } + + if h, ok := interface{}(m.GetHedgePolicy()).(clone.Cloner); ok { + target.HedgePolicy = h.Clone().(*HedgePolicy) + } else { + target.HedgePolicy = proto.Clone(m.GetHedgePolicy()).(*HedgePolicy) + } + + return target +} + +// Clone function +func (m *Route) Clone() proto.Message { + var target *Route + if m == nil { + return target + } + target = &Route{} + + target.Name = m.GetName() + + if h, ok := interface{}(m.GetMatch()).(clone.Cloner); ok { + target.Match = h.Clone().(*RouteMatch) + } else { + target.Match = proto.Clone(m.GetMatch()).(*RouteMatch) + } + + if h, ok := interface{}(m.GetMetadata()).(clone.Cloner); ok { + target.Metadata = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.Metadata) + } else { + target.Metadata = proto.Clone(m.GetMetadata()).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.Metadata) + } + + if h, ok := interface{}(m.GetDecorator()).(clone.Cloner); ok { + target.Decorator = h.Clone().(*Decorator) + } else { + target.Decorator = proto.Clone(m.GetDecorator()).(*Decorator) + } + + if m.GetPerFilterConfig() != nil { + target.PerFilterConfig = make(map[string]*google_golang_org_protobuf_types_known_structpb.Struct, len(m.GetPerFilterConfig())) + for k, v := range m.GetPerFilterConfig() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.PerFilterConfig[k] = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.PerFilterConfig[k] = proto.Clone(v).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + } + } + + if m.GetTypedPerFilterConfig() != nil { + target.TypedPerFilterConfig = make(map[string]*google_golang_org_protobuf_types_known_anypb.Any, len(m.GetTypedPerFilterConfig())) + for k, v := range m.GetTypedPerFilterConfig() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.TypedPerFilterConfig[k] = h.Clone().(*google_golang_org_protobuf_types_known_anypb.Any) + } else { + target.TypedPerFilterConfig[k] = proto.Clone(v).(*google_golang_org_protobuf_types_known_anypb.Any) + } + + } + } + + if m.GetRequestHeadersToAdd() != nil { + target.RequestHeadersToAdd = make([]*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption, len(m.GetRequestHeadersToAdd())) + for idx, v := range m.GetRequestHeadersToAdd() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RequestHeadersToAdd[idx] = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption) + } else { + target.RequestHeadersToAdd[idx] = proto.Clone(v).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption) + } + + } + } + + if m.GetRequestHeadersToRemove() != nil { + target.RequestHeadersToRemove = make([]string, len(m.GetRequestHeadersToRemove())) + for idx, v := range m.GetRequestHeadersToRemove() { + + target.RequestHeadersToRemove[idx] = v + + } + } + + if m.GetResponseHeadersToAdd() != nil { + target.ResponseHeadersToAdd = make([]*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption, len(m.GetResponseHeadersToAdd())) + for idx, v := range m.GetResponseHeadersToAdd() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ResponseHeadersToAdd[idx] = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption) + } else { + target.ResponseHeadersToAdd[idx] = proto.Clone(v).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption) + } + + } + } + + if m.GetResponseHeadersToRemove() != nil { + target.ResponseHeadersToRemove = make([]string, len(m.GetResponseHeadersToRemove())) + for idx, v := range m.GetResponseHeadersToRemove() { + + target.ResponseHeadersToRemove[idx] = v + + } + } + + if h, ok := interface{}(m.GetTracing()).(clone.Cloner); ok { + target.Tracing = h.Clone().(*Tracing) + } else { + target.Tracing = proto.Clone(m.GetTracing()).(*Tracing) + } + + switch m.Action.(type) { + + case *Route_Route: + + if h, ok := interface{}(m.GetRoute()).(clone.Cloner); ok { + target.Action = &Route_Route{ + Route: h.Clone().(*RouteAction), + } + } else { + target.Action = &Route_Route{ + Route: proto.Clone(m.GetRoute()).(*RouteAction), + } + } + + case *Route_Redirect: + + if h, ok := interface{}(m.GetRedirect()).(clone.Cloner); ok { + target.Action = &Route_Redirect{ + Redirect: h.Clone().(*RedirectAction), + } + } else { + target.Action = &Route_Redirect{ + Redirect: proto.Clone(m.GetRedirect()).(*RedirectAction), + } + } + + case *Route_DirectResponse: + + if h, ok := interface{}(m.GetDirectResponse()).(clone.Cloner); ok { + target.Action = &Route_DirectResponse{ + DirectResponse: h.Clone().(*DirectResponseAction), + } + } else { + target.Action = &Route_DirectResponse{ + DirectResponse: proto.Clone(m.GetDirectResponse()).(*DirectResponseAction), + } + } + + } + + return target +} + +// Clone function +func (m *WeightedCluster) Clone() proto.Message { + var target *WeightedCluster + if m == nil { + return target + } + target = &WeightedCluster{} + + if m.GetClusters() != nil { + target.Clusters = make([]*WeightedCluster_ClusterWeight, len(m.GetClusters())) + for idx, v := range m.GetClusters() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Clusters[idx] = h.Clone().(*WeightedCluster_ClusterWeight) + } else { + target.Clusters[idx] = proto.Clone(v).(*WeightedCluster_ClusterWeight) + } + + } + } + + if h, ok := interface{}(m.GetTotalWeight()).(clone.Cloner); ok { + target.TotalWeight = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.TotalWeight = proto.Clone(m.GetTotalWeight()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + target.RuntimeKeyPrefix = m.GetRuntimeKeyPrefix() + + return target +} + +// Clone function +func (m *RouteMatch) Clone() proto.Message { + var target *RouteMatch + if m == nil { + return target + } + target = &RouteMatch{} + + if h, ok := interface{}(m.GetCaseSensitive()).(clone.Cloner); ok { + target.CaseSensitive = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.CaseSensitive = proto.Clone(m.GetCaseSensitive()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetRuntimeFraction()).(clone.Cloner); ok { + target.RuntimeFraction = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.RuntimeFractionalPercent) + } else { + target.RuntimeFraction = proto.Clone(m.GetRuntimeFraction()).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.RuntimeFractionalPercent) + } + + if m.GetHeaders() != nil { + target.Headers = make([]*HeaderMatcher, len(m.GetHeaders())) + for idx, v := range m.GetHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Headers[idx] = h.Clone().(*HeaderMatcher) + } else { + target.Headers[idx] = proto.Clone(v).(*HeaderMatcher) + } + + } + } + + if m.GetQueryParameters() != nil { + target.QueryParameters = make([]*QueryParameterMatcher, len(m.GetQueryParameters())) + for idx, v := range m.GetQueryParameters() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.QueryParameters[idx] = h.Clone().(*QueryParameterMatcher) + } else { + target.QueryParameters[idx] = proto.Clone(v).(*QueryParameterMatcher) + } + + } + } + + if h, ok := interface{}(m.GetGrpc()).(clone.Cloner); ok { + target.Grpc = h.Clone().(*RouteMatch_GrpcRouteMatchOptions) + } else { + target.Grpc = proto.Clone(m.GetGrpc()).(*RouteMatch_GrpcRouteMatchOptions) + } + + switch m.PathSpecifier.(type) { + + case *RouteMatch_Prefix: + + target.PathSpecifier = &RouteMatch_Prefix{ + Prefix: m.GetPrefix(), + } + + case *RouteMatch_Path: + + target.PathSpecifier = &RouteMatch_Path{ + Path: m.GetPath(), + } + + case *RouteMatch_Regex: + + target.PathSpecifier = &RouteMatch_Regex{ + Regex: m.GetRegex(), + } + + case *RouteMatch_ConnectMatcher_: + + if h, ok := interface{}(m.GetConnectMatcher()).(clone.Cloner); ok { + target.PathSpecifier = &RouteMatch_ConnectMatcher_{ + ConnectMatcher: h.Clone().(*RouteMatch_ConnectMatcher), + } + } else { + target.PathSpecifier = &RouteMatch_ConnectMatcher_{ + ConnectMatcher: proto.Clone(m.GetConnectMatcher()).(*RouteMatch_ConnectMatcher), + } + } + + } + + return target +} + +// Clone function +func (m *CorsPolicy) Clone() proto.Message { + var target *CorsPolicy + if m == nil { + return target + } + target = &CorsPolicy{} + + if m.GetAllowOrigin() != nil { + target.AllowOrigin = make([]string, len(m.GetAllowOrigin())) + for idx, v := range m.GetAllowOrigin() { + + target.AllowOrigin[idx] = v + + } + } + + if m.GetAllowOriginRegex() != nil { + target.AllowOriginRegex = make([]string, len(m.GetAllowOriginRegex())) + for idx, v := range m.GetAllowOriginRegex() { + + target.AllowOriginRegex[idx] = v + + } + } + + target.AllowMethods = m.GetAllowMethods() + + target.AllowHeaders = m.GetAllowHeaders() + + target.ExposeHeaders = m.GetExposeHeaders() + + target.MaxAge = m.GetMaxAge() + + if h, ok := interface{}(m.GetAllowCredentials()).(clone.Cloner); ok { + target.AllowCredentials = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.AllowCredentials = proto.Clone(m.GetAllowCredentials()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetShadowEnabled()).(clone.Cloner); ok { + target.ShadowEnabled = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.RuntimeFractionalPercent) + } else { + target.ShadowEnabled = proto.Clone(m.GetShadowEnabled()).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.RuntimeFractionalPercent) + } + + switch m.EnabledSpecifier.(type) { + + case *CorsPolicy_Enabled: + + if h, ok := interface{}(m.GetEnabled()).(clone.Cloner); ok { + target.EnabledSpecifier = &CorsPolicy_Enabled{ + Enabled: h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue), + } + } else { + target.EnabledSpecifier = &CorsPolicy_Enabled{ + Enabled: proto.Clone(m.GetEnabled()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue), + } + } + + case *CorsPolicy_FilterEnabled: + + if h, ok := interface{}(m.GetFilterEnabled()).(clone.Cloner); ok { + target.EnabledSpecifier = &CorsPolicy_FilterEnabled{ + FilterEnabled: h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.RuntimeFractionalPercent), + } + } else { + target.EnabledSpecifier = &CorsPolicy_FilterEnabled{ + FilterEnabled: proto.Clone(m.GetFilterEnabled()).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.RuntimeFractionalPercent), + } + } + + } + + return target +} + +// Clone function +func (m *RouteAction) Clone() proto.Message { + var target *RouteAction + if m == nil { + return target + } + target = &RouteAction{} + + target.ClusterNotFoundResponseCode = m.GetClusterNotFoundResponseCode() + + if h, ok := interface{}(m.GetMetadataMatch()).(clone.Cloner); ok { + target.MetadataMatch = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.Metadata) + } else { + target.MetadataMatch = proto.Clone(m.GetMetadataMatch()).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.Metadata) + } + + target.PrefixRewrite = m.GetPrefixRewrite() + + if h, ok := interface{}(m.GetTimeout()).(clone.Cloner); ok { + target.Timeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.Timeout = proto.Clone(m.GetTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetIdleTimeout()).(clone.Cloner); ok { + target.IdleTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.IdleTimeout = proto.Clone(m.GetIdleTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetRetryPolicy()).(clone.Cloner); ok { + target.RetryPolicy = h.Clone().(*RetryPolicy) + } else { + target.RetryPolicy = proto.Clone(m.GetRetryPolicy()).(*RetryPolicy) + } + + if h, ok := interface{}(m.GetRequestMirrorPolicy()).(clone.Cloner); ok { + target.RequestMirrorPolicy = h.Clone().(*RouteAction_RequestMirrorPolicy) + } else { + target.RequestMirrorPolicy = proto.Clone(m.GetRequestMirrorPolicy()).(*RouteAction_RequestMirrorPolicy) + } + + target.Priority = m.GetPriority() + + if m.GetRateLimits() != nil { + target.RateLimits = make([]*RateLimit, len(m.GetRateLimits())) + for idx, v := range m.GetRateLimits() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RateLimits[idx] = h.Clone().(*RateLimit) + } else { + target.RateLimits[idx] = proto.Clone(v).(*RateLimit) + } + + } + } + + if h, ok := interface{}(m.GetIncludeVhRateLimits()).(clone.Cloner); ok { + target.IncludeVhRateLimits = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.IncludeVhRateLimits = proto.Clone(m.GetIncludeVhRateLimits()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if m.GetHashPolicy() != nil { + target.HashPolicy = make([]*RouteAction_HashPolicy, len(m.GetHashPolicy())) + for idx, v := range m.GetHashPolicy() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.HashPolicy[idx] = h.Clone().(*RouteAction_HashPolicy) + } else { + target.HashPolicy[idx] = proto.Clone(v).(*RouteAction_HashPolicy) + } + + } + } + + if h, ok := interface{}(m.GetCors()).(clone.Cloner); ok { + target.Cors = h.Clone().(*CorsPolicy) + } else { + target.Cors = proto.Clone(m.GetCors()).(*CorsPolicy) + } + + if h, ok := interface{}(m.GetMaxGrpcTimeout()).(clone.Cloner); ok { + target.MaxGrpcTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.MaxGrpcTimeout = proto.Clone(m.GetMaxGrpcTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetGrpcTimeoutOffset()).(clone.Cloner); ok { + target.GrpcTimeoutOffset = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.GrpcTimeoutOffset = proto.Clone(m.GetGrpcTimeoutOffset()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if m.GetUpgradeConfigs() != nil { + target.UpgradeConfigs = make([]*RouteAction_UpgradeConfig, len(m.GetUpgradeConfigs())) + for idx, v := range m.GetUpgradeConfigs() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.UpgradeConfigs[idx] = h.Clone().(*RouteAction_UpgradeConfig) + } else { + target.UpgradeConfigs[idx] = proto.Clone(v).(*RouteAction_UpgradeConfig) + } + + } + } + + target.InternalRedirectAction = m.GetInternalRedirectAction() + + if h, ok := interface{}(m.GetHedgePolicy()).(clone.Cloner); ok { + target.HedgePolicy = h.Clone().(*HedgePolicy) + } else { + target.HedgePolicy = proto.Clone(m.GetHedgePolicy()).(*HedgePolicy) + } + + switch m.ClusterSpecifier.(type) { + + case *RouteAction_Cluster: + + target.ClusterSpecifier = &RouteAction_Cluster{ + Cluster: m.GetCluster(), + } + + case *RouteAction_ClusterHeader: + + target.ClusterSpecifier = &RouteAction_ClusterHeader{ + ClusterHeader: m.GetClusterHeader(), + } + + case *RouteAction_WeightedClusters: + + if h, ok := interface{}(m.GetWeightedClusters()).(clone.Cloner); ok { + target.ClusterSpecifier = &RouteAction_WeightedClusters{ + WeightedClusters: h.Clone().(*WeightedCluster), + } + } else { + target.ClusterSpecifier = &RouteAction_WeightedClusters{ + WeightedClusters: proto.Clone(m.GetWeightedClusters()).(*WeightedCluster), + } + } + + } + + switch m.HostRewriteSpecifier.(type) { + + case *RouteAction_HostRewrite: + + target.HostRewriteSpecifier = &RouteAction_HostRewrite{ + HostRewrite: m.GetHostRewrite(), + } + + case *RouteAction_AutoHostRewrite: + + if h, ok := interface{}(m.GetAutoHostRewrite()).(clone.Cloner); ok { + target.HostRewriteSpecifier = &RouteAction_AutoHostRewrite{ + AutoHostRewrite: h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue), + } + } else { + target.HostRewriteSpecifier = &RouteAction_AutoHostRewrite{ + AutoHostRewrite: proto.Clone(m.GetAutoHostRewrite()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue), + } + } + + case *RouteAction_AutoHostRewriteHeader: + + target.HostRewriteSpecifier = &RouteAction_AutoHostRewriteHeader{ + AutoHostRewriteHeader: m.GetAutoHostRewriteHeader(), + } + + } + + return target +} + +// Clone function +func (m *RetryPolicy) Clone() proto.Message { + var target *RetryPolicy + if m == nil { + return target + } + target = &RetryPolicy{} + + target.RetryOn = m.GetRetryOn() + + if h, ok := interface{}(m.GetNumRetries()).(clone.Cloner); ok { + target.NumRetries = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.NumRetries = proto.Clone(m.GetNumRetries()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetPerTryTimeout()).(clone.Cloner); ok { + target.PerTryTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.PerTryTimeout = proto.Clone(m.GetPerTryTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetRetryPriority()).(clone.Cloner); ok { + target.RetryPriority = h.Clone().(*RetryPolicy_RetryPriority) + } else { + target.RetryPriority = proto.Clone(m.GetRetryPriority()).(*RetryPolicy_RetryPriority) + } + + if m.GetRetryHostPredicate() != nil { + target.RetryHostPredicate = make([]*RetryPolicy_RetryHostPredicate, len(m.GetRetryHostPredicate())) + for idx, v := range m.GetRetryHostPredicate() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RetryHostPredicate[idx] = h.Clone().(*RetryPolicy_RetryHostPredicate) + } else { + target.RetryHostPredicate[idx] = proto.Clone(v).(*RetryPolicy_RetryHostPredicate) + } + + } + } + + target.HostSelectionRetryMaxAttempts = m.GetHostSelectionRetryMaxAttempts() + + if m.GetRetriableStatusCodes() != nil { + target.RetriableStatusCodes = make([]uint32, len(m.GetRetriableStatusCodes())) + for idx, v := range m.GetRetriableStatusCodes() { + + target.RetriableStatusCodes[idx] = v + + } + } + + if h, ok := interface{}(m.GetRetryBackOff()).(clone.Cloner); ok { + target.RetryBackOff = h.Clone().(*RetryPolicy_RetryBackOff) + } else { + target.RetryBackOff = proto.Clone(m.GetRetryBackOff()).(*RetryPolicy_RetryBackOff) + } + + return target +} + +// Clone function +func (m *HedgePolicy) Clone() proto.Message { + var target *HedgePolicy + if m == nil { + return target + } + target = &HedgePolicy{} + + if h, ok := interface{}(m.GetInitialRequests()).(clone.Cloner); ok { + target.InitialRequests = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.InitialRequests = proto.Clone(m.GetInitialRequests()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetAdditionalRequestChance()).(clone.Cloner); ok { + target.AdditionalRequestChance = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_type.FractionalPercent) + } else { + target.AdditionalRequestChance = proto.Clone(m.GetAdditionalRequestChance()).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_type.FractionalPercent) + } + + target.HedgeOnPerTryTimeout = m.GetHedgeOnPerTryTimeout() + + return target +} + +// Clone function +func (m *RedirectAction) Clone() proto.Message { + var target *RedirectAction + if m == nil { + return target + } + target = &RedirectAction{} + + target.HostRedirect = m.GetHostRedirect() + + target.PortRedirect = m.GetPortRedirect() + + target.ResponseCode = m.GetResponseCode() + + target.StripQuery = m.GetStripQuery() + + switch m.SchemeRewriteSpecifier.(type) { + + case *RedirectAction_HttpsRedirect: + + target.SchemeRewriteSpecifier = &RedirectAction_HttpsRedirect{ + HttpsRedirect: m.GetHttpsRedirect(), + } + + case *RedirectAction_SchemeRedirect: + + target.SchemeRewriteSpecifier = &RedirectAction_SchemeRedirect{ + SchemeRedirect: m.GetSchemeRedirect(), + } + + } + + switch m.PathRewriteSpecifier.(type) { + + case *RedirectAction_PathRedirect: + + target.PathRewriteSpecifier = &RedirectAction_PathRedirect{ + PathRedirect: m.GetPathRedirect(), + } + + case *RedirectAction_PrefixRewrite: + + target.PathRewriteSpecifier = &RedirectAction_PrefixRewrite{ + PrefixRewrite: m.GetPrefixRewrite(), + } + + } + + return target +} + +// Clone function +func (m *DirectResponseAction) Clone() proto.Message { + var target *DirectResponseAction + if m == nil { + return target + } + target = &DirectResponseAction{} + + target.Status = m.GetStatus() + + if h, ok := interface{}(m.GetBody()).(clone.Cloner); ok { + target.Body = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.DataSource) + } else { + target.Body = proto.Clone(m.GetBody()).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.DataSource) + } + + return target +} + +// Clone function +func (m *Decorator) Clone() proto.Message { + var target *Decorator + if m == nil { + return target + } + target = &Decorator{} + + target.Operation = m.GetOperation() + + return target +} + +// Clone function +func (m *Tracing) Clone() proto.Message { + var target *Tracing + if m == nil { + return target + } + target = &Tracing{} + + if h, ok := interface{}(m.GetClientSampling()).(clone.Cloner); ok { + target.ClientSampling = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_type.FractionalPercent) + } else { + target.ClientSampling = proto.Clone(m.GetClientSampling()).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_type.FractionalPercent) + } + + if h, ok := interface{}(m.GetRandomSampling()).(clone.Cloner); ok { + target.RandomSampling = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_type.FractionalPercent) + } else { + target.RandomSampling = proto.Clone(m.GetRandomSampling()).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_type.FractionalPercent) + } + + if h, ok := interface{}(m.GetOverallSampling()).(clone.Cloner); ok { + target.OverallSampling = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_type.FractionalPercent) + } else { + target.OverallSampling = proto.Clone(m.GetOverallSampling()).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_type.FractionalPercent) + } + + return target +} + +// Clone function +func (m *VirtualCluster) Clone() proto.Message { + var target *VirtualCluster + if m == nil { + return target + } + target = &VirtualCluster{} + + target.Pattern = m.GetPattern() + + target.Name = m.GetName() + + target.Method = m.GetMethod() + + return target +} + +// Clone function +func (m *RateLimit) Clone() proto.Message { + var target *RateLimit + if m == nil { + return target + } + target = &RateLimit{} + + if h, ok := interface{}(m.GetStage()).(clone.Cloner); ok { + target.Stage = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.Stage = proto.Clone(m.GetStage()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + target.DisableKey = m.GetDisableKey() + + if m.GetActions() != nil { + target.Actions = make([]*RateLimit_Action, len(m.GetActions())) + for idx, v := range m.GetActions() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Actions[idx] = h.Clone().(*RateLimit_Action) + } else { + target.Actions[idx] = proto.Clone(v).(*RateLimit_Action) + } + + } + } + + return target +} + +// Clone function +func (m *HeaderMatcher) Clone() proto.Message { + var target *HeaderMatcher + if m == nil { + return target + } + target = &HeaderMatcher{} + + target.Name = m.GetName() + + target.InvertMatch = m.GetInvertMatch() + + switch m.HeaderMatchSpecifier.(type) { + + case *HeaderMatcher_ExactMatch: + + target.HeaderMatchSpecifier = &HeaderMatcher_ExactMatch{ + ExactMatch: m.GetExactMatch(), + } + + case *HeaderMatcher_RegexMatch: + + target.HeaderMatchSpecifier = &HeaderMatcher_RegexMatch{ + RegexMatch: m.GetRegexMatch(), + } + + case *HeaderMatcher_RangeMatch: + + if h, ok := interface{}(m.GetRangeMatch()).(clone.Cloner); ok { + target.HeaderMatchSpecifier = &HeaderMatcher_RangeMatch{ + RangeMatch: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type.Int64Range), + } + } else { + target.HeaderMatchSpecifier = &HeaderMatcher_RangeMatch{ + RangeMatch: proto.Clone(m.GetRangeMatch()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type.Int64Range), + } + } + + case *HeaderMatcher_PresentMatch: + + target.HeaderMatchSpecifier = &HeaderMatcher_PresentMatch{ + PresentMatch: m.GetPresentMatch(), + } + + case *HeaderMatcher_PrefixMatch: + + target.HeaderMatchSpecifier = &HeaderMatcher_PrefixMatch{ + PrefixMatch: m.GetPrefixMatch(), + } + + case *HeaderMatcher_SuffixMatch: + + target.HeaderMatchSpecifier = &HeaderMatcher_SuffixMatch{ + SuffixMatch: m.GetSuffixMatch(), + } + + } + + return target +} + +// Clone function +func (m *QueryParameterMatcher) Clone() proto.Message { + var target *QueryParameterMatcher + if m == nil { + return target + } + target = &QueryParameterMatcher{} + + target.Name = m.GetName() + + target.Value = m.GetValue() + + if h, ok := interface{}(m.GetRegex()).(clone.Cloner); ok { + target.Regex = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Regex = proto.Clone(m.GetRegex()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *WeightedCluster_ClusterWeight) Clone() proto.Message { + var target *WeightedCluster_ClusterWeight + if m == nil { + return target + } + target = &WeightedCluster_ClusterWeight{} + + target.Name = m.GetName() + + if h, ok := interface{}(m.GetWeight()).(clone.Cloner); ok { + target.Weight = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.Weight = proto.Clone(m.GetWeight()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetMetadataMatch()).(clone.Cloner); ok { + target.MetadataMatch = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.Metadata) + } else { + target.MetadataMatch = proto.Clone(m.GetMetadataMatch()).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.Metadata) + } + + if m.GetRequestHeadersToAdd() != nil { + target.RequestHeadersToAdd = make([]*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption, len(m.GetRequestHeadersToAdd())) + for idx, v := range m.GetRequestHeadersToAdd() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RequestHeadersToAdd[idx] = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption) + } else { + target.RequestHeadersToAdd[idx] = proto.Clone(v).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption) + } + + } + } + + if m.GetRequestHeadersToRemove() != nil { + target.RequestHeadersToRemove = make([]string, len(m.GetRequestHeadersToRemove())) + for idx, v := range m.GetRequestHeadersToRemove() { + + target.RequestHeadersToRemove[idx] = v + + } + } + + if m.GetResponseHeadersToAdd() != nil { + target.ResponseHeadersToAdd = make([]*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption, len(m.GetResponseHeadersToAdd())) + for idx, v := range m.GetResponseHeadersToAdd() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ResponseHeadersToAdd[idx] = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption) + } else { + target.ResponseHeadersToAdd[idx] = proto.Clone(v).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption) + } + + } + } + + if m.GetResponseHeadersToRemove() != nil { + target.ResponseHeadersToRemove = make([]string, len(m.GetResponseHeadersToRemove())) + for idx, v := range m.GetResponseHeadersToRemove() { + + target.ResponseHeadersToRemove[idx] = v + + } + } + + if m.GetPerFilterConfig() != nil { + target.PerFilterConfig = make(map[string]*google_golang_org_protobuf_types_known_structpb.Struct, len(m.GetPerFilterConfig())) + for k, v := range m.GetPerFilterConfig() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.PerFilterConfig[k] = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.PerFilterConfig[k] = proto.Clone(v).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + } + } + + if m.GetTypedPerFilterConfig() != nil { + target.TypedPerFilterConfig = make(map[string]*google_golang_org_protobuf_types_known_anypb.Any, len(m.GetTypedPerFilterConfig())) + for k, v := range m.GetTypedPerFilterConfig() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.TypedPerFilterConfig[k] = h.Clone().(*google_golang_org_protobuf_types_known_anypb.Any) + } else { + target.TypedPerFilterConfig[k] = proto.Clone(v).(*google_golang_org_protobuf_types_known_anypb.Any) + } + + } + } + + return target +} + +// Clone function +func (m *RouteMatch_ConnectMatcher) Clone() proto.Message { + var target *RouteMatch_ConnectMatcher + if m == nil { + return target + } + target = &RouteMatch_ConnectMatcher{} + + return target +} + +// Clone function +func (m *RouteMatch_GrpcRouteMatchOptions) Clone() proto.Message { + var target *RouteMatch_GrpcRouteMatchOptions + if m == nil { + return target + } + target = &RouteMatch_GrpcRouteMatchOptions{} + + return target +} + +// Clone function +func (m *RouteAction_RequestMirrorPolicy) Clone() proto.Message { + var target *RouteAction_RequestMirrorPolicy + if m == nil { + return target + } + target = &RouteAction_RequestMirrorPolicy{} + + target.Cluster = m.GetCluster() + + target.RuntimeKey = m.GetRuntimeKey() + + if h, ok := interface{}(m.GetRuntimeFraction()).(clone.Cloner); ok { + target.RuntimeFraction = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.RuntimeFractionalPercent) + } else { + target.RuntimeFraction = proto.Clone(m.GetRuntimeFraction()).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.RuntimeFractionalPercent) + } + + return target +} + +// Clone function +func (m *RouteAction_HashPolicy) Clone() proto.Message { + var target *RouteAction_HashPolicy + if m == nil { + return target + } + target = &RouteAction_HashPolicy{} + + target.Terminal = m.GetTerminal() + + switch m.PolicySpecifier.(type) { + + case *RouteAction_HashPolicy_Header_: + + if h, ok := interface{}(m.GetHeader()).(clone.Cloner); ok { + target.PolicySpecifier = &RouteAction_HashPolicy_Header_{ + Header: h.Clone().(*RouteAction_HashPolicy_Header), + } + } else { + target.PolicySpecifier = &RouteAction_HashPolicy_Header_{ + Header: proto.Clone(m.GetHeader()).(*RouteAction_HashPolicy_Header), + } + } + + case *RouteAction_HashPolicy_Cookie_: + + if h, ok := interface{}(m.GetCookie()).(clone.Cloner); ok { + target.PolicySpecifier = &RouteAction_HashPolicy_Cookie_{ + Cookie: h.Clone().(*RouteAction_HashPolicy_Cookie), + } + } else { + target.PolicySpecifier = &RouteAction_HashPolicy_Cookie_{ + Cookie: proto.Clone(m.GetCookie()).(*RouteAction_HashPolicy_Cookie), + } + } + + case *RouteAction_HashPolicy_ConnectionProperties_: + + if h, ok := interface{}(m.GetConnectionProperties()).(clone.Cloner); ok { + target.PolicySpecifier = &RouteAction_HashPolicy_ConnectionProperties_{ + ConnectionProperties: h.Clone().(*RouteAction_HashPolicy_ConnectionProperties), + } + } else { + target.PolicySpecifier = &RouteAction_HashPolicy_ConnectionProperties_{ + ConnectionProperties: proto.Clone(m.GetConnectionProperties()).(*RouteAction_HashPolicy_ConnectionProperties), + } + } + + } + + return target +} + +// Clone function +func (m *RouteAction_UpgradeConfig) Clone() proto.Message { + var target *RouteAction_UpgradeConfig + if m == nil { + return target + } + target = &RouteAction_UpgradeConfig{} + + target.UpgradeType = m.GetUpgradeType() + + if h, ok := interface{}(m.GetEnabled()).(clone.Cloner); ok { + target.Enabled = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Enabled = proto.Clone(m.GetEnabled()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *RouteAction_HashPolicy_Header) Clone() proto.Message { + var target *RouteAction_HashPolicy_Header + if m == nil { + return target + } + target = &RouteAction_HashPolicy_Header{} + + target.HeaderName = m.GetHeaderName() + + return target +} + +// Clone function +func (m *RouteAction_HashPolicy_Cookie) Clone() proto.Message { + var target *RouteAction_HashPolicy_Cookie + if m == nil { + return target + } + target = &RouteAction_HashPolicy_Cookie{} + + target.Name = m.GetName() + + if h, ok := interface{}(m.GetTtl()).(clone.Cloner); ok { + target.Ttl = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.Ttl = proto.Clone(m.GetTtl()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + target.Path = m.GetPath() + + return target +} + +// Clone function +func (m *RouteAction_HashPolicy_ConnectionProperties) Clone() proto.Message { + var target *RouteAction_HashPolicy_ConnectionProperties + if m == nil { + return target + } + target = &RouteAction_HashPolicy_ConnectionProperties{} + + target.SourceIp = m.GetSourceIp() + + return target +} + +// Clone function +func (m *RetryPolicy_RetryPriority) Clone() proto.Message { + var target *RetryPolicy_RetryPriority + if m == nil { + return target + } + target = &RetryPolicy_RetryPriority{} + + target.Name = m.GetName() + + switch m.ConfigType.(type) { + + case *RetryPolicy_RetryPriority_Config: + + if h, ok := interface{}(m.GetConfig()).(clone.Cloner); ok { + target.ConfigType = &RetryPolicy_RetryPriority_Config{ + Config: h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct), + } + } else { + target.ConfigType = &RetryPolicy_RetryPriority_Config{ + Config: proto.Clone(m.GetConfig()).(*google_golang_org_protobuf_types_known_structpb.Struct), + } + } + + case *RetryPolicy_RetryPriority_TypedConfig: + + if h, ok := interface{}(m.GetTypedConfig()).(clone.Cloner); ok { + target.ConfigType = &RetryPolicy_RetryPriority_TypedConfig{ + TypedConfig: h.Clone().(*google_golang_org_protobuf_types_known_anypb.Any), + } + } else { + target.ConfigType = &RetryPolicy_RetryPriority_TypedConfig{ + TypedConfig: proto.Clone(m.GetTypedConfig()).(*google_golang_org_protobuf_types_known_anypb.Any), + } + } + + } + + return target +} + +// Clone function +func (m *RetryPolicy_RetryHostPredicate) Clone() proto.Message { + var target *RetryPolicy_RetryHostPredicate + if m == nil { + return target + } + target = &RetryPolicy_RetryHostPredicate{} + + target.Name = m.GetName() + + switch m.ConfigType.(type) { + + case *RetryPolicy_RetryHostPredicate_Config: + + if h, ok := interface{}(m.GetConfig()).(clone.Cloner); ok { + target.ConfigType = &RetryPolicy_RetryHostPredicate_Config{ + Config: h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct), + } + } else { + target.ConfigType = &RetryPolicy_RetryHostPredicate_Config{ + Config: proto.Clone(m.GetConfig()).(*google_golang_org_protobuf_types_known_structpb.Struct), + } + } + + case *RetryPolicy_RetryHostPredicate_TypedConfig: + + if h, ok := interface{}(m.GetTypedConfig()).(clone.Cloner); ok { + target.ConfigType = &RetryPolicy_RetryHostPredicate_TypedConfig{ + TypedConfig: h.Clone().(*google_golang_org_protobuf_types_known_anypb.Any), + } + } else { + target.ConfigType = &RetryPolicy_RetryHostPredicate_TypedConfig{ + TypedConfig: proto.Clone(m.GetTypedConfig()).(*google_golang_org_protobuf_types_known_anypb.Any), + } + } + + } + + return target +} + +// Clone function +func (m *RetryPolicy_RetryBackOff) Clone() proto.Message { + var target *RetryPolicy_RetryBackOff + if m == nil { + return target + } + target = &RetryPolicy_RetryBackOff{} + + if h, ok := interface{}(m.GetBaseInterval()).(clone.Cloner); ok { + target.BaseInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.BaseInterval = proto.Clone(m.GetBaseInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetMaxInterval()).(clone.Cloner); ok { + target.MaxInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.MaxInterval = proto.Clone(m.GetMaxInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + return target +} + +// Clone function +func (m *RateLimit_Action) Clone() proto.Message { + var target *RateLimit_Action + if m == nil { + return target + } + target = &RateLimit_Action{} + + switch m.ActionSpecifier.(type) { + + case *RateLimit_Action_SourceCluster_: + + if h, ok := interface{}(m.GetSourceCluster()).(clone.Cloner); ok { + target.ActionSpecifier = &RateLimit_Action_SourceCluster_{ + SourceCluster: h.Clone().(*RateLimit_Action_SourceCluster), + } + } else { + target.ActionSpecifier = &RateLimit_Action_SourceCluster_{ + SourceCluster: proto.Clone(m.GetSourceCluster()).(*RateLimit_Action_SourceCluster), + } + } + + case *RateLimit_Action_DestinationCluster_: + + if h, ok := interface{}(m.GetDestinationCluster()).(clone.Cloner); ok { + target.ActionSpecifier = &RateLimit_Action_DestinationCluster_{ + DestinationCluster: h.Clone().(*RateLimit_Action_DestinationCluster), + } + } else { + target.ActionSpecifier = &RateLimit_Action_DestinationCluster_{ + DestinationCluster: proto.Clone(m.GetDestinationCluster()).(*RateLimit_Action_DestinationCluster), + } + } + + case *RateLimit_Action_RequestHeaders_: + + if h, ok := interface{}(m.GetRequestHeaders()).(clone.Cloner); ok { + target.ActionSpecifier = &RateLimit_Action_RequestHeaders_{ + RequestHeaders: h.Clone().(*RateLimit_Action_RequestHeaders), + } + } else { + target.ActionSpecifier = &RateLimit_Action_RequestHeaders_{ + RequestHeaders: proto.Clone(m.GetRequestHeaders()).(*RateLimit_Action_RequestHeaders), + } + } + + case *RateLimit_Action_RemoteAddress_: + + if h, ok := interface{}(m.GetRemoteAddress()).(clone.Cloner); ok { + target.ActionSpecifier = &RateLimit_Action_RemoteAddress_{ + RemoteAddress: h.Clone().(*RateLimit_Action_RemoteAddress), + } + } else { + target.ActionSpecifier = &RateLimit_Action_RemoteAddress_{ + RemoteAddress: proto.Clone(m.GetRemoteAddress()).(*RateLimit_Action_RemoteAddress), + } + } + + case *RateLimit_Action_GenericKey_: + + if h, ok := interface{}(m.GetGenericKey()).(clone.Cloner); ok { + target.ActionSpecifier = &RateLimit_Action_GenericKey_{ + GenericKey: h.Clone().(*RateLimit_Action_GenericKey), + } + } else { + target.ActionSpecifier = &RateLimit_Action_GenericKey_{ + GenericKey: proto.Clone(m.GetGenericKey()).(*RateLimit_Action_GenericKey), + } + } + + case *RateLimit_Action_HeaderValueMatch_: + + if h, ok := interface{}(m.GetHeaderValueMatch()).(clone.Cloner); ok { + target.ActionSpecifier = &RateLimit_Action_HeaderValueMatch_{ + HeaderValueMatch: h.Clone().(*RateLimit_Action_HeaderValueMatch), + } + } else { + target.ActionSpecifier = &RateLimit_Action_HeaderValueMatch_{ + HeaderValueMatch: proto.Clone(m.GetHeaderValueMatch()).(*RateLimit_Action_HeaderValueMatch), + } + } + + } + + return target +} + +// Clone function +func (m *RateLimit_Action_SourceCluster) Clone() proto.Message { + var target *RateLimit_Action_SourceCluster + if m == nil { + return target + } + target = &RateLimit_Action_SourceCluster{} + + return target +} + +// Clone function +func (m *RateLimit_Action_DestinationCluster) Clone() proto.Message { + var target *RateLimit_Action_DestinationCluster + if m == nil { + return target + } + target = &RateLimit_Action_DestinationCluster{} + + return target +} + +// Clone function +func (m *RateLimit_Action_RequestHeaders) Clone() proto.Message { + var target *RateLimit_Action_RequestHeaders + if m == nil { + return target + } + target = &RateLimit_Action_RequestHeaders{} + + target.HeaderName = m.GetHeaderName() + + target.DescriptorKey = m.GetDescriptorKey() + + return target +} + +// Clone function +func (m *RateLimit_Action_RemoteAddress) Clone() proto.Message { + var target *RateLimit_Action_RemoteAddress + if m == nil { + return target + } + target = &RateLimit_Action_RemoteAddress{} + + return target +} + +// Clone function +func (m *RateLimit_Action_GenericKey) Clone() proto.Message { + var target *RateLimit_Action_GenericKey + if m == nil { + return target + } + target = &RateLimit_Action_GenericKey{} + + target.DescriptorValue = m.GetDescriptorValue() + + return target +} + +// Clone function +func (m *RateLimit_Action_HeaderValueMatch) Clone() proto.Message { + var target *RateLimit_Action_HeaderValueMatch + if m == nil { + return target + } + target = &RateLimit_Action_HeaderValueMatch{} + + target.DescriptorValue = m.GetDescriptorValue() + + if h, ok := interface{}(m.GetExpectMatch()).(clone.Cloner); ok { + target.ExpectMatch = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.ExpectMatch = proto.Clone(m.GetExpectMatch()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if m.GetHeaders() != nil { + target.Headers = make([]*HeaderMatcher, len(m.GetHeaders())) + for idx, v := range m.GetHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Headers[idx] = h.Clone().(*HeaderMatcher) + } else { + target.Headers[idx] = proto.Clone(v).(*HeaderMatcher) + } + + } + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/api/v2/route/route.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/api/v2/route/route.pb.equal.go index 88dfc5618..737ab9f00 100644 --- a/pkg/api/gloo.solo.io/external/envoy/api/v2/route/route.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/api/v2/route/route.pb.equal.go @@ -407,6 +407,9 @@ func (m *Route) Equal(that interface{}) bool { switch m.Action.(type) { case *Route_Route: + if _, ok := target.Action.(*Route_Route); !ok { + return false + } if h, ok := interface{}(m.GetRoute()).(equality.Equalizer); ok { if !h.Equal(target.GetRoute()) { @@ -419,6 +422,9 @@ func (m *Route) Equal(that interface{}) bool { } case *Route_Redirect: + if _, ok := target.Action.(*Route_Redirect); !ok { + return false + } if h, ok := interface{}(m.GetRedirect()).(equality.Equalizer); ok { if !h.Equal(target.GetRedirect()) { @@ -431,6 +437,9 @@ func (m *Route) Equal(that interface{}) bool { } case *Route_DirectResponse: + if _, ok := target.Action.(*Route_DirectResponse); !ok { + return false + } if h, ok := interface{}(m.GetDirectResponse()).(equality.Equalizer); ok { if !h.Equal(target.GetDirectResponse()) { @@ -442,6 +451,11 @@ func (m *Route) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.Action != target.Action { + return false + } } return true @@ -590,23 +604,52 @@ func (m *RouteMatch) Equal(that interface{}) bool { switch m.PathSpecifier.(type) { case *RouteMatch_Prefix: + if _, ok := target.PathSpecifier.(*RouteMatch_Prefix); !ok { + return false + } if strings.Compare(m.GetPrefix(), target.GetPrefix()) != 0 { return false } case *RouteMatch_Path: + if _, ok := target.PathSpecifier.(*RouteMatch_Path); !ok { + return false + } if strings.Compare(m.GetPath(), target.GetPath()) != 0 { return false } case *RouteMatch_Regex: + if _, ok := target.PathSpecifier.(*RouteMatch_Regex); !ok { + return false + } if strings.Compare(m.GetRegex(), target.GetRegex()) != 0 { return false } + case *RouteMatch_ConnectMatcher_: + if _, ok := target.PathSpecifier.(*RouteMatch_ConnectMatcher_); !ok { + return false + } + + if h, ok := interface{}(m.GetConnectMatcher()).(equality.Equalizer); ok { + if !h.Equal(target.GetConnectMatcher()) { + return false + } + } else { + if !proto.Equal(m.GetConnectMatcher(), target.GetConnectMatcher()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.PathSpecifier != target.PathSpecifier { + return false + } } return true @@ -694,6 +737,9 @@ func (m *CorsPolicy) Equal(that interface{}) bool { switch m.EnabledSpecifier.(type) { case *CorsPolicy_Enabled: + if _, ok := target.EnabledSpecifier.(*CorsPolicy_Enabled); !ok { + return false + } if h, ok := interface{}(m.GetEnabled()).(equality.Equalizer); ok { if !h.Equal(target.GetEnabled()) { @@ -706,6 +752,9 @@ func (m *CorsPolicy) Equal(that interface{}) bool { } case *CorsPolicy_FilterEnabled: + if _, ok := target.EnabledSpecifier.(*CorsPolicy_FilterEnabled); !ok { + return false + } if h, ok := interface{}(m.GetFilterEnabled()).(equality.Equalizer); ok { if !h.Equal(target.GetFilterEnabled()) { @@ -717,6 +766,11 @@ func (m *CorsPolicy) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.EnabledSpecifier != target.EnabledSpecifier { + return false + } } return true @@ -913,18 +967,27 @@ func (m *RouteAction) Equal(that interface{}) bool { switch m.ClusterSpecifier.(type) { case *RouteAction_Cluster: + if _, ok := target.ClusterSpecifier.(*RouteAction_Cluster); !ok { + return false + } if strings.Compare(m.GetCluster(), target.GetCluster()) != 0 { return false } case *RouteAction_ClusterHeader: + if _, ok := target.ClusterSpecifier.(*RouteAction_ClusterHeader); !ok { + return false + } if strings.Compare(m.GetClusterHeader(), target.GetClusterHeader()) != 0 { return false } case *RouteAction_WeightedClusters: + if _, ok := target.ClusterSpecifier.(*RouteAction_WeightedClusters); !ok { + return false + } if h, ok := interface{}(m.GetWeightedClusters()).(equality.Equalizer); ok { if !h.Equal(target.GetWeightedClusters()) { @@ -936,17 +999,28 @@ func (m *RouteAction) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.ClusterSpecifier != target.ClusterSpecifier { + return false + } } switch m.HostRewriteSpecifier.(type) { case *RouteAction_HostRewrite: + if _, ok := target.HostRewriteSpecifier.(*RouteAction_HostRewrite); !ok { + return false + } if strings.Compare(m.GetHostRewrite(), target.GetHostRewrite()) != 0 { return false } case *RouteAction_AutoHostRewrite: + if _, ok := target.HostRewriteSpecifier.(*RouteAction_AutoHostRewrite); !ok { + return false + } if h, ok := interface{}(m.GetAutoHostRewrite()).(equality.Equalizer); ok { if !h.Equal(target.GetAutoHostRewrite()) { @@ -959,11 +1033,19 @@ func (m *RouteAction) Equal(that interface{}) bool { } case *RouteAction_AutoHostRewriteHeader: + if _, ok := target.HostRewriteSpecifier.(*RouteAction_AutoHostRewriteHeader); !ok { + return false + } if strings.Compare(m.GetAutoHostRewriteHeader(), target.GetAutoHostRewriteHeader()) != 0 { return false } + default: + // m is nil but target is not nil + if m.HostRewriteSpecifier != target.HostRewriteSpecifier { + return false + } } return true @@ -1157,33 +1239,55 @@ func (m *RedirectAction) Equal(that interface{}) bool { switch m.SchemeRewriteSpecifier.(type) { case *RedirectAction_HttpsRedirect: + if _, ok := target.SchemeRewriteSpecifier.(*RedirectAction_HttpsRedirect); !ok { + return false + } if m.GetHttpsRedirect() != target.GetHttpsRedirect() { return false } case *RedirectAction_SchemeRedirect: + if _, ok := target.SchemeRewriteSpecifier.(*RedirectAction_SchemeRedirect); !ok { + return false + } if strings.Compare(m.GetSchemeRedirect(), target.GetSchemeRedirect()) != 0 { return false } + default: + // m is nil but target is not nil + if m.SchemeRewriteSpecifier != target.SchemeRewriteSpecifier { + return false + } } switch m.PathRewriteSpecifier.(type) { case *RedirectAction_PathRedirect: + if _, ok := target.PathRewriteSpecifier.(*RedirectAction_PathRedirect); !ok { + return false + } if strings.Compare(m.GetPathRedirect(), target.GetPathRedirect()) != 0 { return false } case *RedirectAction_PrefixRewrite: + if _, ok := target.PathRewriteSpecifier.(*RedirectAction_PrefixRewrite); !ok { + return false + } if strings.Compare(m.GetPrefixRewrite(), target.GetPrefixRewrite()) != 0 { return false } + default: + // m is nil but target is not nil + if m.PathRewriteSpecifier != target.PathRewriteSpecifier { + return false + } } return true @@ -1432,18 +1536,27 @@ func (m *HeaderMatcher) Equal(that interface{}) bool { switch m.HeaderMatchSpecifier.(type) { case *HeaderMatcher_ExactMatch: + if _, ok := target.HeaderMatchSpecifier.(*HeaderMatcher_ExactMatch); !ok { + return false + } if strings.Compare(m.GetExactMatch(), target.GetExactMatch()) != 0 { return false } case *HeaderMatcher_RegexMatch: + if _, ok := target.HeaderMatchSpecifier.(*HeaderMatcher_RegexMatch); !ok { + return false + } if strings.Compare(m.GetRegexMatch(), target.GetRegexMatch()) != 0 { return false } case *HeaderMatcher_RangeMatch: + if _, ok := target.HeaderMatchSpecifier.(*HeaderMatcher_RangeMatch); !ok { + return false + } if h, ok := interface{}(m.GetRangeMatch()).(equality.Equalizer); ok { if !h.Equal(target.GetRangeMatch()) { @@ -1456,23 +1569,37 @@ func (m *HeaderMatcher) Equal(that interface{}) bool { } case *HeaderMatcher_PresentMatch: + if _, ok := target.HeaderMatchSpecifier.(*HeaderMatcher_PresentMatch); !ok { + return false + } if m.GetPresentMatch() != target.GetPresentMatch() { return false } case *HeaderMatcher_PrefixMatch: + if _, ok := target.HeaderMatchSpecifier.(*HeaderMatcher_PrefixMatch); !ok { + return false + } if strings.Compare(m.GetPrefixMatch(), target.GetPrefixMatch()) != 0 { return false } case *HeaderMatcher_SuffixMatch: + if _, ok := target.HeaderMatchSpecifier.(*HeaderMatcher_SuffixMatch); !ok { + return false + } if strings.Compare(m.GetSuffixMatch(), target.GetSuffixMatch()) != 0 { return false } + default: + // m is nil but target is not nil + if m.HeaderMatchSpecifier != target.HeaderMatchSpecifier { + return false + } } return true @@ -1658,6 +1785,30 @@ func (m *WeightedCluster_ClusterWeight) Equal(that interface{}) bool { return true } +// Equal function +func (m *RouteMatch_ConnectMatcher) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RouteMatch_ConnectMatcher) + if !ok { + that2, ok := that.(RouteMatch_ConnectMatcher) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + // Equal function func (m *RouteMatch_GrpcRouteMatchOptions) Equal(that interface{}) bool { if that == nil { @@ -1752,6 +1903,9 @@ func (m *RouteAction_HashPolicy) Equal(that interface{}) bool { switch m.PolicySpecifier.(type) { case *RouteAction_HashPolicy_Header_: + if _, ok := target.PolicySpecifier.(*RouteAction_HashPolicy_Header_); !ok { + return false + } if h, ok := interface{}(m.GetHeader()).(equality.Equalizer); ok { if !h.Equal(target.GetHeader()) { @@ -1764,6 +1918,9 @@ func (m *RouteAction_HashPolicy) Equal(that interface{}) bool { } case *RouteAction_HashPolicy_Cookie_: + if _, ok := target.PolicySpecifier.(*RouteAction_HashPolicy_Cookie_); !ok { + return false + } if h, ok := interface{}(m.GetCookie()).(equality.Equalizer); ok { if !h.Equal(target.GetCookie()) { @@ -1776,6 +1933,9 @@ func (m *RouteAction_HashPolicy) Equal(that interface{}) bool { } case *RouteAction_HashPolicy_ConnectionProperties_: + if _, ok := target.PolicySpecifier.(*RouteAction_HashPolicy_ConnectionProperties_); !ok { + return false + } if h, ok := interface{}(m.GetConnectionProperties()).(equality.Equalizer); ok { if !h.Equal(target.GetConnectionProperties()) { @@ -1787,6 +1947,11 @@ func (m *RouteAction_HashPolicy) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.PolicySpecifier != target.PolicySpecifier { + return false + } } return true @@ -1956,6 +2121,9 @@ func (m *RetryPolicy_RetryPriority) Equal(that interface{}) bool { switch m.ConfigType.(type) { case *RetryPolicy_RetryPriority_Config: + if _, ok := target.ConfigType.(*RetryPolicy_RetryPriority_Config); !ok { + return false + } if h, ok := interface{}(m.GetConfig()).(equality.Equalizer); ok { if !h.Equal(target.GetConfig()) { @@ -1968,6 +2136,9 @@ func (m *RetryPolicy_RetryPriority) Equal(that interface{}) bool { } case *RetryPolicy_RetryPriority_TypedConfig: + if _, ok := target.ConfigType.(*RetryPolicy_RetryPriority_TypedConfig); !ok { + return false + } if h, ok := interface{}(m.GetTypedConfig()).(equality.Equalizer); ok { if !h.Equal(target.GetTypedConfig()) { @@ -1979,6 +2150,11 @@ func (m *RetryPolicy_RetryPriority) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.ConfigType != target.ConfigType { + return false + } } return true @@ -2012,6 +2188,9 @@ func (m *RetryPolicy_RetryHostPredicate) Equal(that interface{}) bool { switch m.ConfigType.(type) { case *RetryPolicy_RetryHostPredicate_Config: + if _, ok := target.ConfigType.(*RetryPolicy_RetryHostPredicate_Config); !ok { + return false + } if h, ok := interface{}(m.GetConfig()).(equality.Equalizer); ok { if !h.Equal(target.GetConfig()) { @@ -2024,6 +2203,9 @@ func (m *RetryPolicy_RetryHostPredicate) Equal(that interface{}) bool { } case *RetryPolicy_RetryHostPredicate_TypedConfig: + if _, ok := target.ConfigType.(*RetryPolicy_RetryHostPredicate_TypedConfig); !ok { + return false + } if h, ok := interface{}(m.GetTypedConfig()).(equality.Equalizer); ok { if !h.Equal(target.GetTypedConfig()) { @@ -2035,6 +2217,11 @@ func (m *RetryPolicy_RetryHostPredicate) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.ConfigType != target.ConfigType { + return false + } } return true @@ -2108,6 +2295,9 @@ func (m *RateLimit_Action) Equal(that interface{}) bool { switch m.ActionSpecifier.(type) { case *RateLimit_Action_SourceCluster_: + if _, ok := target.ActionSpecifier.(*RateLimit_Action_SourceCluster_); !ok { + return false + } if h, ok := interface{}(m.GetSourceCluster()).(equality.Equalizer); ok { if !h.Equal(target.GetSourceCluster()) { @@ -2120,6 +2310,9 @@ func (m *RateLimit_Action) Equal(that interface{}) bool { } case *RateLimit_Action_DestinationCluster_: + if _, ok := target.ActionSpecifier.(*RateLimit_Action_DestinationCluster_); !ok { + return false + } if h, ok := interface{}(m.GetDestinationCluster()).(equality.Equalizer); ok { if !h.Equal(target.GetDestinationCluster()) { @@ -2132,6 +2325,9 @@ func (m *RateLimit_Action) Equal(that interface{}) bool { } case *RateLimit_Action_RequestHeaders_: + if _, ok := target.ActionSpecifier.(*RateLimit_Action_RequestHeaders_); !ok { + return false + } if h, ok := interface{}(m.GetRequestHeaders()).(equality.Equalizer); ok { if !h.Equal(target.GetRequestHeaders()) { @@ -2144,6 +2340,9 @@ func (m *RateLimit_Action) Equal(that interface{}) bool { } case *RateLimit_Action_RemoteAddress_: + if _, ok := target.ActionSpecifier.(*RateLimit_Action_RemoteAddress_); !ok { + return false + } if h, ok := interface{}(m.GetRemoteAddress()).(equality.Equalizer); ok { if !h.Equal(target.GetRemoteAddress()) { @@ -2156,6 +2355,9 @@ func (m *RateLimit_Action) Equal(that interface{}) bool { } case *RateLimit_Action_GenericKey_: + if _, ok := target.ActionSpecifier.(*RateLimit_Action_GenericKey_); !ok { + return false + } if h, ok := interface{}(m.GetGenericKey()).(equality.Equalizer); ok { if !h.Equal(target.GetGenericKey()) { @@ -2168,6 +2370,9 @@ func (m *RateLimit_Action) Equal(that interface{}) bool { } case *RateLimit_Action_HeaderValueMatch_: + if _, ok := target.ActionSpecifier.(*RateLimit_Action_HeaderValueMatch_); !ok { + return false + } if h, ok := interface{}(m.GetHeaderValueMatch()).(equality.Equalizer); ok { if !h.Equal(target.GetHeaderValueMatch()) { @@ -2179,6 +2384,11 @@ func (m *RateLimit_Action) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.ActionSpecifier != target.ActionSpecifier { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/external/envoy/api/v2/route/route.pb.go b/pkg/api/gloo.solo.io/external/envoy/api/v2/route/route.pb.go index 6294a305c..4cd0d0099 100644 --- a/pkg/api/gloo.solo.io/external/envoy/api/v2/route/route.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/api/v2/route/route.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/api/v2/route/route.proto @@ -9,19 +9,19 @@ package route import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - any "github.com/golang/protobuf/ptypes/any" - duration "github.com/golang/protobuf/ptypes/duration" - _struct "github.com/golang/protobuf/ptypes/struct" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" _type1 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type" core "github.com/solo-io/solo-kit/pkg/api/external/envoy/api/v2/core" _type "github.com/solo-io/solo-kit/pkg/api/external/envoy/type" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" + durationpb "google.golang.org/protobuf/types/known/durationpb" + structpb "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -31,10 +31,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type VirtualHost_TlsRequirementType int32 const ( @@ -250,10 +246,7 @@ func (RedirectAction_RedirectResponseCode) EnumDescriptor() ([]byte, []int) { // a virtual host is selected based on the domain, the routes are processed in order to see which // upstream cluster to route to or whether to perform a redirect. type VirtualHost struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The logical name of the virtual host. This is used when emitting certain // statistics but is not relevant for routing. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` @@ -261,17 +254,20 @@ type VirtualHost struct { // virtual host. Wildcard hosts are supported in the suffix or prefix form. // // Domain search order: - // 1. Exact domain names: ``www.foo.com``. - // 2. Suffix domain wildcards: ``*.foo.com`` or ``*-bar.foo.com``. - // 3. Prefix domain wildcards: ``foo.*`` or ``foo-*``. - // 4. Special wildcard ``*`` matching any domain. // + // 1. Exact domain names: `www.foo.com`. // - // The wildcard will not match the empty string. - // e.g. ``*-bar.foo.com`` will match ``baz-bar.foo.com`` but not ``-bar.foo.com``. - // The longest wildcards match first. - // Only a single virtual host in the entire route configuration can match on ``*``. A domain - // must be unique across all virtual hosts or the config will fail to load. + // 2. Suffix domain wildcards: `*.foo.com` or `*-bar.foo.com`. + // + // 3. Prefix domain wildcards: `foo.*` or `foo-*`. + // + // 4. Special wildcard `*` matching any domain. + // + // The wildcard will not match the empty string. + // e.g. `*-bar.foo.com` will match `baz-bar.foo.com` but not `-bar.foo.com`. + // The longest wildcards match first. + // Only a single virtual host in the entire route configuration can match on `*`. A domain + // must be unique across all virtual hosts or the config will fail to load. Domains []string `protobuf:"bytes,2,rep,name=domains,proto3" json:"domains,omitempty"` // The list of routes that will be matched, in order, for incoming requests. // The first route that matches will be used. @@ -312,13 +308,13 @@ type VirtualHost struct { // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter // specific; see the `HTTP filter documentation (config_http_filters)` // for if and how it is utilized. - PerFilterConfig map[string]*_struct.Struct `protobuf:"bytes,12,rep,name=per_filter_config,json=perFilterConfig,proto3" json:"per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + PerFilterConfig map[string]*structpb.Struct `protobuf:"bytes,12,rep,name=per_filter_config,json=perFilterConfig,proto3" json:"per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // The per_filter_config field can be used to provide virtual host-specific // configurations for filters. The key should match the filter name, such as // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter // specific; see the `HTTP filter documentation (config_http_filters)` // for if and how it is utilized. - TypedPerFilterConfig map[string]*any.Any `protobuf:"bytes,15,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + TypedPerFilterConfig map[string]*anypb.Any `protobuf:"bytes,15,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Decides whether the `x-envoy-attempt-count // (config_http_filters_router_x-envoy-attempt-count)` header should be included // in the upstream request. Setting this option will cause it to override any existing header @@ -335,16 +331,16 @@ type VirtualHost struct { // Indicates the hedge policy for all routes in this virtual host. Note that setting a // route level entry will take precedence over this config and it'll be treated // independently (e.g.: values are not inherited). - HedgePolicy *HedgePolicy `protobuf:"bytes,17,opt,name=hedge_policy,json=hedgePolicy,proto3" json:"hedge_policy,omitempty"` + HedgePolicy *HedgePolicy `protobuf:"bytes,17,opt,name=hedge_policy,json=hedgePolicy,proto3" json:"hedge_policy,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VirtualHost) Reset() { *x = VirtualHost{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VirtualHost) String() string { @@ -355,7 +351,7 @@ func (*VirtualHost) ProtoMessage() {} func (x *VirtualHost) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -447,14 +443,14 @@ func (x *VirtualHost) GetCors() *CorsPolicy { return nil } -func (x *VirtualHost) GetPerFilterConfig() map[string]*_struct.Struct { +func (x *VirtualHost) GetPerFilterConfig() map[string]*structpb.Struct { if x != nil { return x.PerFilterConfig } return nil } -func (x *VirtualHost) GetTypedPerFilterConfig() map[string]*any.Any { +func (x *VirtualHost) GetTypedPerFilterConfig() map[string]*anypb.Any { if x != nil { return x.TypedPerFilterConfig } @@ -485,19 +481,16 @@ func (x *VirtualHost) GetHedgePolicy() *HedgePolicy { // A route is both a specification of how to match a request as well as an indication of what to do // next (e.g., redirect, forward, rewrite, etc.). // -// -// Envoy supports routing on HTTP method via `header matching -// (envoy_api_msg_route.HeaderMatcher)`. +// Envoy supports routing on HTTP method via `header matching +// (envoy_api_msg_route.HeaderMatcher)`. type Route struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Name for the route. Name string `protobuf:"bytes,14,opt,name=name,proto3" json:"name,omitempty"` // Route matching parameters. Match *RouteMatch `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"` - // Types that are assignable to Action: + // Types that are valid to be assigned to Action: + // // *Route_Route // *Route_Redirect // *Route_DirectResponse @@ -515,13 +508,13 @@ type Route struct { // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter // specific; see the `HTTP filter documentation (config_http_filters)` for // if and how it is utilized. - PerFilterConfig map[string]*_struct.Struct `protobuf:"bytes,8,rep,name=per_filter_config,json=perFilterConfig,proto3" json:"per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + PerFilterConfig map[string]*structpb.Struct `protobuf:"bytes,8,rep,name=per_filter_config,json=perFilterConfig,proto3" json:"per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // The per_filter_config field can be used to provide route-specific // configurations for filters. The key should match the filter name, such as // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter // specific; see the `HTTP filter documentation (config_http_filters)` for // if and how it is utilized. - TypedPerFilterConfig map[string]*any.Any `protobuf:"bytes,13,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + TypedPerFilterConfig map[string]*anypb.Any `protobuf:"bytes,13,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Specifies a set of headers that will be added to requests matching this // route. Headers specified at this level are applied before headers from the // enclosing `envoy_api_msg_route.VirtualHost` and @@ -544,16 +537,16 @@ type Route struct { ResponseHeadersToRemove []string `protobuf:"bytes,11,rep,name=response_headers_to_remove,json=responseHeadersToRemove,proto3" json:"response_headers_to_remove,omitempty"` // Presence of the object defines whether the connection manager's tracing configuration // is overridden by this route specific instance. - Tracing *Tracing `protobuf:"bytes,15,opt,name=tracing,proto3" json:"tracing,omitempty"` + Tracing *Tracing `protobuf:"bytes,15,opt,name=tracing,proto3" json:"tracing,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Route) Reset() { *x = Route{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Route) String() string { @@ -564,7 +557,7 @@ func (*Route) ProtoMessage() {} func (x *Route) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -593,30 +586,36 @@ func (x *Route) GetMatch() *RouteMatch { return nil } -func (m *Route) GetAction() isRoute_Action { - if m != nil { - return m.Action +func (x *Route) GetAction() isRoute_Action { + if x != nil { + return x.Action } return nil } func (x *Route) GetRoute() *RouteAction { - if x, ok := x.GetAction().(*Route_Route); ok { - return x.Route + if x != nil { + if x, ok := x.Action.(*Route_Route); ok { + return x.Route + } } return nil } func (x *Route) GetRedirect() *RedirectAction { - if x, ok := x.GetAction().(*Route_Redirect); ok { - return x.Redirect + if x != nil { + if x, ok := x.Action.(*Route_Redirect); ok { + return x.Redirect + } } return nil } func (x *Route) GetDirectResponse() *DirectResponseAction { - if x, ok := x.GetAction().(*Route_DirectResponse); ok { - return x.DirectResponse + if x != nil { + if x, ok := x.Action.(*Route_DirectResponse); ok { + return x.DirectResponse + } } return nil } @@ -635,14 +634,14 @@ func (x *Route) GetDecorator() *Decorator { return nil } -func (x *Route) GetPerFilterConfig() map[string]*_struct.Struct { +func (x *Route) GetPerFilterConfig() map[string]*structpb.Struct { if x != nil { return x.PerFilterConfig } return nil } -func (x *Route) GetTypedPerFilterConfig() map[string]*any.Any { +func (x *Route) GetTypedPerFilterConfig() map[string]*anypb.Any { if x != nil { return x.TypedPerFilterConfig } @@ -716,15 +715,12 @@ func (*Route_DirectResponse) isRoute_Action() {} // traffic to be forwarded to each cluster. The router selects an upstream cluster based on the // weights. type WeightedCluster struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies one or more upstream clusters associated with the route. Clusters []*WeightedCluster_ClusterWeight `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"` // Specifies the total weight across all clusters. The sum of all cluster weights must equal this // value, which must be greater than 0. Defaults to 100. - TotalWeight *wrappers.UInt32Value `protobuf:"bytes,3,opt,name=total_weight,json=totalWeight,proto3" json:"total_weight,omitempty"` + TotalWeight *wrapperspb.UInt32Value `protobuf:"bytes,3,opt,name=total_weight,json=totalWeight,proto3" json:"total_weight,omitempty"` // Specifies the runtime key prefix that should be used to construct the // runtime keys associated with each cluster. When the *runtime_key_prefix* is // specified, the router will look for weights associated with each upstream @@ -734,15 +730,15 @@ type WeightedCluster struct { // configuration file will be used as the default weight. See the `runtime documentation // (operations_runtime)` for how key names map to the underlying implementation. RuntimeKeyPrefix string `protobuf:"bytes,2,opt,name=runtime_key_prefix,json=runtimeKeyPrefix,proto3" json:"runtime_key_prefix,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WeightedCluster) Reset() { *x = WeightedCluster{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WeightedCluster) String() string { @@ -753,7 +749,7 @@ func (*WeightedCluster) ProtoMessage() {} func (x *WeightedCluster) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -775,7 +771,7 @@ func (x *WeightedCluster) GetClusters() []*WeightedCluster_ClusterWeight { return nil } -func (x *WeightedCluster) GetTotalWeight() *wrappers.UInt32Value { +func (x *WeightedCluster) GetTotalWeight() *wrapperspb.UInt32Value { if x != nil { return x.TotalWeight } @@ -790,18 +786,17 @@ func (x *WeightedCluster) GetRuntimeKeyPrefix() string { } type RouteMatch struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to PathSpecifier: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to PathSpecifier: + // // *RouteMatch_Prefix // *RouteMatch_Path // *RouteMatch_Regex + // *RouteMatch_ConnectMatcher_ PathSpecifier isRouteMatch_PathSpecifier `protobuf_oneof:"path_specifier"` // Indicates that prefix/path matching should be case insensitive. The default // is true. - CaseSensitive *wrappers.BoolValue `protobuf:"bytes,4,opt,name=case_sensitive,json=caseSensitive,proto3" json:"case_sensitive,omitempty"` + CaseSensitive *wrapperspb.BoolValue `protobuf:"bytes,4,opt,name=case_sensitive,json=caseSensitive,proto3" json:"case_sensitive,omitempty"` // Indicates that the route should additionally match on a runtime key. Every time the route // is considered for a match, it must also fall under the percentage of matches indicated by // this field. For some fraction N/D, a random number in the range [0,D) is selected. If the @@ -811,12 +806,11 @@ type RouteMatch struct { // code/config deploys. Refer to the `traffic shifting // (config_http_conn_man_route_table_traffic_splitting_shift)` docs for additional documentation. // - // - // Parsing this field is implemented such that the runtime key's data may be represented - // as a FractionalPercent proto represented as JSON/YAML and may also be represented as an - // integer with the assumption that the value is an integral percentage out of 100. For - // instance, a runtime key lookup returning the value "42" would parse as a FractionalPercent - // whose numerator is 42 and denominator is HUNDRED. This preserves legacy semantics. + // Parsing this field is implemented such that the runtime key's data may be represented + // as a FractionalPercent proto represented as JSON/YAML and may also be represented as an + // integer with the assumption that the value is an integral percentage out of 100. For + // instance, a runtime key lookup returning the value "42" would parse as a FractionalPercent + // whose numerator is 42 and denominator is HUNDRED. This preserves legacy semantics. RuntimeFraction *core.RuntimeFractionalPercent `protobuf:"bytes,9,opt,name=runtime_fraction,json=runtimeFraction,proto3" json:"runtime_fraction,omitempty"` // Specifies a set of headers that the route should match on. The router will // check the request’s headers against all the specified headers in the route @@ -833,16 +827,16 @@ type RouteMatch struct { // If specified, only gRPC requests will be matched. The router will check // that the content-type header has a application/grpc or one of the various // application/grpc+ values. - Grpc *RouteMatch_GrpcRouteMatchOptions `protobuf:"bytes,8,opt,name=grpc,proto3" json:"grpc,omitempty"` + Grpc *RouteMatch_GrpcRouteMatchOptions `protobuf:"bytes,8,opt,name=grpc,proto3" json:"grpc,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteMatch) Reset() { *x = RouteMatch{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteMatch) String() string { @@ -853,7 +847,7 @@ func (*RouteMatch) ProtoMessage() {} func (x *RouteMatch) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -868,35 +862,50 @@ func (*RouteMatch) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDescGZIP(), []int{3} } -func (m *RouteMatch) GetPathSpecifier() isRouteMatch_PathSpecifier { - if m != nil { - return m.PathSpecifier +func (x *RouteMatch) GetPathSpecifier() isRouteMatch_PathSpecifier { + if x != nil { + return x.PathSpecifier } return nil } func (x *RouteMatch) GetPrefix() string { - if x, ok := x.GetPathSpecifier().(*RouteMatch_Prefix); ok { - return x.Prefix + if x != nil { + if x, ok := x.PathSpecifier.(*RouteMatch_Prefix); ok { + return x.Prefix + } } return "" } func (x *RouteMatch) GetPath() string { - if x, ok := x.GetPathSpecifier().(*RouteMatch_Path); ok { - return x.Path + if x != nil { + if x, ok := x.PathSpecifier.(*RouteMatch_Path); ok { + return x.Path + } } return "" } func (x *RouteMatch) GetRegex() string { - if x, ok := x.GetPathSpecifier().(*RouteMatch_Regex); ok { - return x.Regex + if x != nil { + if x, ok := x.PathSpecifier.(*RouteMatch_Regex); ok { + return x.Regex + } } return "" } -func (x *RouteMatch) GetCaseSensitive() *wrappers.BoolValue { +func (x *RouteMatch) GetConnectMatcher() *RouteMatch_ConnectMatcher { + if x != nil { + if x, ok := x.PathSpecifier.(*RouteMatch_ConnectMatcher_); ok { + return x.ConnectMatcher + } + } + return nil +} + +func (x *RouteMatch) GetCaseSensitive() *wrapperspb.BoolValue { if x != nil { return x.CaseSensitive } @@ -951,8 +960,7 @@ type RouteMatch_Regex struct { // If specified, the route is a regular expression rule meaning that the // regex must match the *:path* header once the query string is removed. The entire path // (without the query string) must match the regex. The rule will not match if only a - // subsequence of the *:path* header matches the regex. The regex grammar is defined `here - // `_. + // subsequence of the *:path* header matches the regex. The regex grammar is defined [here](https://en.cppreference.com/w/cpp/regex/ecmascript). // // Examples: // @@ -963,17 +971,28 @@ type RouteMatch_Regex struct { Regex string `protobuf:"bytes,3,opt,name=regex,proto3,oneof"` } +type RouteMatch_ConnectMatcher_ struct { + // If this is used as the matcher, the matcher will only match CONNECT requests. + // Note that this will not match HTTP/2 upgrade-style CONNECT requests + // (WebSocket and the like) as they are normalized in Envoy as HTTP/1.1 style + // upgrades. + // This is the only way to match CONNECT requests for HTTP/1.1. For HTTP/2, + // where CONNECT requests may have a path, the path matchers will work if + // there is a path present. + // Note that CONNECT support is currently considered alpha in Envoy. + ConnectMatcher *RouteMatch_ConnectMatcher `protobuf:"bytes,10,opt,name=connect_matcher,json=connectMatcher,proto3,oneof"` +} + func (*RouteMatch_Prefix) isRouteMatch_PathSpecifier() {} func (*RouteMatch_Path) isRouteMatch_PathSpecifier() {} func (*RouteMatch_Regex) isRouteMatch_PathSpecifier() {} -type CorsPolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (*RouteMatch_ConnectMatcher_) isRouteMatch_PathSpecifier() {} +type CorsPolicy struct { + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the origins that will be allowed to do CORS requests. // // An origin is allowed if either allow_origin or allow_origin_regex match. @@ -991,8 +1010,9 @@ type CorsPolicy struct { // Specifies the content for the *access-control-max-age* header. MaxAge string `protobuf:"bytes,5,opt,name=max_age,json=maxAge,proto3" json:"max_age,omitempty"` // Specifies whether the resource allows credentials. - AllowCredentials *wrappers.BoolValue `protobuf:"bytes,6,opt,name=allow_credentials,json=allowCredentials,proto3" json:"allow_credentials,omitempty"` - // Types that are assignable to EnabledSpecifier: + AllowCredentials *wrapperspb.BoolValue `protobuf:"bytes,6,opt,name=allow_credentials,json=allowCredentials,proto3" json:"allow_credentials,omitempty"` + // Types that are valid to be assigned to EnabledSpecifier: + // // *CorsPolicy_Enabled // *CorsPolicy_FilterEnabled EnabledSpecifier isCorsPolicy_EnabledSpecifier `protobuf_oneof:"enabled_specifier"` @@ -1002,19 +1022,18 @@ type CorsPolicy struct { // More information on how this can be controlled via runtime can be found // `here (cors-runtime)`. // - // - // This field defaults to 100/`HUNDRED - // (envoy_api_enum_type.FractionalPercent.DenominatorType)`. + // This field defaults to 100/`HUNDRED + // (envoy_api_enum_type.FractionalPercent.DenominatorType)`. ShadowEnabled *core.RuntimeFractionalPercent `protobuf:"bytes,10,opt,name=shadow_enabled,json=shadowEnabled,proto3" json:"shadow_enabled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CorsPolicy) Reset() { *x = CorsPolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CorsPolicy) String() string { @@ -1025,7 +1044,7 @@ func (*CorsPolicy) ProtoMessage() {} func (x *CorsPolicy) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1082,31 +1101,35 @@ func (x *CorsPolicy) GetMaxAge() string { return "" } -func (x *CorsPolicy) GetAllowCredentials() *wrappers.BoolValue { +func (x *CorsPolicy) GetAllowCredentials() *wrapperspb.BoolValue { if x != nil { return x.AllowCredentials } return nil } -func (m *CorsPolicy) GetEnabledSpecifier() isCorsPolicy_EnabledSpecifier { - if m != nil { - return m.EnabledSpecifier +func (x *CorsPolicy) GetEnabledSpecifier() isCorsPolicy_EnabledSpecifier { + if x != nil { + return x.EnabledSpecifier } return nil } -// Deprecated: Do not use. -func (x *CorsPolicy) GetEnabled() *wrappers.BoolValue { - if x, ok := x.GetEnabledSpecifier().(*CorsPolicy_Enabled); ok { - return x.Enabled +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/api/v2/route/route.proto. +func (x *CorsPolicy) GetEnabled() *wrapperspb.BoolValue { + if x != nil { + if x, ok := x.EnabledSpecifier.(*CorsPolicy_Enabled); ok { + return x.Enabled + } } return nil } func (x *CorsPolicy) GetFilterEnabled() *core.RuntimeFractionalPercent { - if x, ok := x.GetEnabledSpecifier().(*CorsPolicy_FilterEnabled); ok { - return x.FilterEnabled + if x != nil { + if x, ok := x.EnabledSpecifier.(*CorsPolicy_FilterEnabled); ok { + return x.FilterEnabled + } } return nil } @@ -1125,11 +1148,11 @@ type isCorsPolicy_EnabledSpecifier interface { type CorsPolicy_Enabled struct { // Specifies if CORS is enabled. Defaults to true. Only effective on route. // - // **This field is deprecated**. Set the - // `filter_enabled (envoy_api_field_route.CorsPolicy.filter_enabled)` field instead. + // **This field is deprecated**. Set the + // `filter_enabled (envoy_api_field_route.CorsPolicy.filter_enabled)` field instead. // - // Deprecated: Do not use. - Enabled *wrappers.BoolValue `protobuf:"bytes,7,opt,name=enabled,proto3,oneof"` + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/api/v2/route/route.proto. + Enabled *wrapperspb.BoolValue `protobuf:"bytes,7,opt,name=enabled,proto3,oneof"` } type CorsPolicy_FilterEnabled struct { @@ -1138,9 +1161,8 @@ type CorsPolicy_FilterEnabled struct { // More information on how this can be controlled via runtime can be found // `here (cors-runtime)`. // - // - // This field defaults to 100/`HUNDRED - // (envoy_api_enum_type.FractionalPercent.DenominatorType)`. + // This field defaults to 100/`HUNDRED + // (envoy_api_enum_type.FractionalPercent.DenominatorType)`. FilterEnabled *core.RuntimeFractionalPercent `protobuf:"bytes,9,opt,name=filter_enabled,json=filterEnabled,proto3,oneof"` } @@ -1149,11 +1171,9 @@ func (*CorsPolicy_Enabled) isCorsPolicy_EnabledSpecifier() {} func (*CorsPolicy_FilterEnabled) isCorsPolicy_EnabledSpecifier() {} type RouteAction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to ClusterSpecifier: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to ClusterSpecifier: + // // *RouteAction_Cluster // *RouteAction_ClusterHeader // *RouteAction_WeightedClusters @@ -1173,26 +1193,27 @@ type RouteAction struct { // place the original path before rewrite into the `x-envoy-original-path // (config_http_filters_router_x-envoy-original-path)` header. // - // Pay careful attention to the use of trailing slashes in the - // `route's match (envoy_api_field_route.Route.match)` prefix value. - // Stripping a prefix from a path requires multiple Routes to handle all cases. For example, - // rewriting */prefix* to */* and */prefix/etc* to */etc* cannot be done in a single - // `Route (envoy_api_msg_route.Route)`, as shown by the below config entries: + // Pay careful attention to the use of trailing slashes in the + // `route's match (envoy_api_field_route.Route.match)` prefix value. + // Stripping a prefix from a path requires multiple Routes to handle all cases. For example, + // rewriting */prefix* to */* and */prefix/etc* to */etc* cannot be done in a single + // `Route (envoy_api_msg_route.Route)`, as shown by the below config entries: // - // ``` - // - match: - // prefix: "/prefix/" - // route: - // prefix_rewrite: "/" - // - match: - // prefix: "/prefix" - // route: - // prefix_rewrite: "/" - // ``` - // Having above entries in the config, requests to */prefix* will be stripped to */*, while - // requests to */prefix/etc* will be stripped to */etc*. + // ``` + // - match: + // prefix: "/prefix/" + // route: + // prefix_rewrite: "/" + // - match: + // prefix: "/prefix" + // route: + // prefix_rewrite: "/" + // ``` + // Having above entries in the config, requests to */prefix* will be stripped to */*, while + // requests to */prefix/etc* will be stripped to */etc*. PrefixRewrite string `protobuf:"bytes,5,opt,name=prefix_rewrite,json=prefixRewrite,proto3" json:"prefix_rewrite,omitempty"` - // Types that are assignable to HostRewriteSpecifier: + // Types that are valid to be assigned to HostRewriteSpecifier: + // // *RouteAction_HostRewrite // *RouteAction_AutoHostRewrite // *RouteAction_AutoHostRewriteHeader @@ -1201,12 +1222,11 @@ type RouteAction struct { // spans between the point at which the entire downstream request (i.e. end-of-stream) has been // processed and when the upstream response has been completely processed. // - // - // This timeout includes all retries. See also - // `config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, - // `config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`, and the - // `retry overview (arch_overview_http_routing_retry)`. - Timeout *duration.Duration `protobuf:"bytes,8,opt,name=timeout,proto3" json:"timeout,omitempty"` + // This timeout includes all retries. See also + // `config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, + // `config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`, and the + // `retry overview (arch_overview_http_routing_retry)`. + Timeout *durationpb.Duration `protobuf:"bytes,8,opt,name=timeout,proto3" json:"timeout,omitempty"` // Specifies the idle timeout for the route. If not specified, there is no per-route idle timeout, // although the connection manager wide `stream_idle_timeout // (envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.stream_idle_timeout)` @@ -1225,7 +1245,7 @@ type RouteAction struct { // fires, the stream is terminated with a 408 Request Timeout error code if no // upstream response header has been received, otherwise a stream reset // occurs. - IdleTimeout *duration.Duration `protobuf:"bytes,24,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"` + IdleTimeout *durationpb.Duration `protobuf:"bytes,24,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"` // Indicates that the route has a retry policy. Note that if this is set, // it'll take precedence over the virtual host level retry policy entirely // (e.g.: policies are not merged, most internal one becomes the enforced policy). @@ -1242,7 +1262,7 @@ type RouteAction struct { // limits. By default, if the route configured rate limits, the virtual host // `rate_limits (envoy_api_field_route.VirtualHost.rate_limits)` are not applied to the // request. - IncludeVhRateLimits *wrappers.BoolValue `protobuf:"bytes,14,opt,name=include_vh_rate_limits,json=includeVhRateLimits,proto3" json:"include_vh_rate_limits,omitempty"` + IncludeVhRateLimits *wrapperspb.BoolValue `protobuf:"bytes,14,opt,name=include_vh_rate_limits,json=includeVhRateLimits,proto3" json:"include_vh_rate_limits,omitempty"` // Specifies a list of hash policies to use for ring hash load balancing. Each // hash policy is evaluated individually and the combined result is used to // route the request. The method of combination is deterministic such that @@ -1259,7 +1279,7 @@ type RouteAction struct { // Indicates that the route has a CORS policy. Cors *CorsPolicy `protobuf:"bytes,17,opt,name=cors,proto3" json:"cors,omitempty"` // If present, and the request is a gRPC request, use the - // `grpc-timeout header `_, + // [grpc-timeout header](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md), // or its default value (infinity) instead of // `timeout (envoy_api_field_route.RouteAction.timeout)`, but limit the applied timeout // to the maximum value specified here. If configured as 0, the maximum allowed timeout for @@ -1268,7 +1288,7 @@ type RouteAction struct { // `timeout (envoy_api_field_route.RouteAction.timeout)` or its default. // This can be used to prevent unexpected upstream request timeouts due to potentially long // time gaps between gRPC request and response in gRPC streaming mode. - MaxGrpcTimeout *duration.Duration `protobuf:"bytes,23,opt,name=max_grpc_timeout,json=maxGrpcTimeout,proto3" json:"max_grpc_timeout,omitempty"` + MaxGrpcTimeout *durationpb.Duration `protobuf:"bytes,23,opt,name=max_grpc_timeout,json=maxGrpcTimeout,proto3" json:"max_grpc_timeout,omitempty"` // If present, Envoy will adjust the timeout provided by the `grpc-timeout` header by subtracting // the provided duration from the header. This is useful in allowing Envoy to set its global // timeout to be less than that of the deadline imposed by the calling client, which makes it more @@ -1276,22 +1296,22 @@ type RouteAction struct { // The offset will only be applied if the provided grpc_timeout is greater than the offset. This // ensures that the offset will only ever decrease the timeout and never set it to 0 (meaning // infinity). - GrpcTimeoutOffset *duration.Duration `protobuf:"bytes,28,opt,name=grpc_timeout_offset,json=grpcTimeoutOffset,proto3" json:"grpc_timeout_offset,omitempty"` + GrpcTimeoutOffset *durationpb.Duration `protobuf:"bytes,28,opt,name=grpc_timeout_offset,json=grpcTimeoutOffset,proto3" json:"grpc_timeout_offset,omitempty"` UpgradeConfigs []*RouteAction_UpgradeConfig `protobuf:"bytes,25,rep,name=upgrade_configs,json=upgradeConfigs,proto3" json:"upgrade_configs,omitempty"` InternalRedirectAction RouteAction_InternalRedirectAction `protobuf:"varint,26,opt,name=internal_redirect_action,json=internalRedirectAction,proto3,enum=solo.io.envoy.api.v2.route.RouteAction_InternalRedirectAction" json:"internal_redirect_action,omitempty"` // Indicates that the route has a hedge policy. Note that if this is set, // it'll take precedence over the virtual host level hedge policy entirely // (e.g.: policies are not merged, most internal one becomes the enforced policy). - HedgePolicy *HedgePolicy `protobuf:"bytes,27,opt,name=hedge_policy,json=hedgePolicy,proto3" json:"hedge_policy,omitempty"` + HedgePolicy *HedgePolicy `protobuf:"bytes,27,opt,name=hedge_policy,json=hedgePolicy,proto3" json:"hedge_policy,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteAction) Reset() { *x = RouteAction{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteAction) String() string { @@ -1302,7 +1322,7 @@ func (*RouteAction) ProtoMessage() {} func (x *RouteAction) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1317,30 +1337,36 @@ func (*RouteAction) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDescGZIP(), []int{5} } -func (m *RouteAction) GetClusterSpecifier() isRouteAction_ClusterSpecifier { - if m != nil { - return m.ClusterSpecifier +func (x *RouteAction) GetClusterSpecifier() isRouteAction_ClusterSpecifier { + if x != nil { + return x.ClusterSpecifier } return nil } func (x *RouteAction) GetCluster() string { - if x, ok := x.GetClusterSpecifier().(*RouteAction_Cluster); ok { - return x.Cluster + if x != nil { + if x, ok := x.ClusterSpecifier.(*RouteAction_Cluster); ok { + return x.Cluster + } } return "" } func (x *RouteAction) GetClusterHeader() string { - if x, ok := x.GetClusterSpecifier().(*RouteAction_ClusterHeader); ok { - return x.ClusterHeader + if x != nil { + if x, ok := x.ClusterSpecifier.(*RouteAction_ClusterHeader); ok { + return x.ClusterHeader + } } return "" } func (x *RouteAction) GetWeightedClusters() *WeightedCluster { - if x, ok := x.GetClusterSpecifier().(*RouteAction_WeightedClusters); ok { - return x.WeightedClusters + if x != nil { + if x, ok := x.ClusterSpecifier.(*RouteAction_WeightedClusters); ok { + return x.WeightedClusters + } } return nil } @@ -1366,42 +1392,48 @@ func (x *RouteAction) GetPrefixRewrite() string { return "" } -func (m *RouteAction) GetHostRewriteSpecifier() isRouteAction_HostRewriteSpecifier { - if m != nil { - return m.HostRewriteSpecifier +func (x *RouteAction) GetHostRewriteSpecifier() isRouteAction_HostRewriteSpecifier { + if x != nil { + return x.HostRewriteSpecifier } return nil } func (x *RouteAction) GetHostRewrite() string { - if x, ok := x.GetHostRewriteSpecifier().(*RouteAction_HostRewrite); ok { - return x.HostRewrite + if x != nil { + if x, ok := x.HostRewriteSpecifier.(*RouteAction_HostRewrite); ok { + return x.HostRewrite + } } return "" } -func (x *RouteAction) GetAutoHostRewrite() *wrappers.BoolValue { - if x, ok := x.GetHostRewriteSpecifier().(*RouteAction_AutoHostRewrite); ok { - return x.AutoHostRewrite +func (x *RouteAction) GetAutoHostRewrite() *wrapperspb.BoolValue { + if x != nil { + if x, ok := x.HostRewriteSpecifier.(*RouteAction_AutoHostRewrite); ok { + return x.AutoHostRewrite + } } return nil } func (x *RouteAction) GetAutoHostRewriteHeader() string { - if x, ok := x.GetHostRewriteSpecifier().(*RouteAction_AutoHostRewriteHeader); ok { - return x.AutoHostRewriteHeader + if x != nil { + if x, ok := x.HostRewriteSpecifier.(*RouteAction_AutoHostRewriteHeader); ok { + return x.AutoHostRewriteHeader + } } return "" } -func (x *RouteAction) GetTimeout() *duration.Duration { +func (x *RouteAction) GetTimeout() *durationpb.Duration { if x != nil { return x.Timeout } return nil } -func (x *RouteAction) GetIdleTimeout() *duration.Duration { +func (x *RouteAction) GetIdleTimeout() *durationpb.Duration { if x != nil { return x.IdleTimeout } @@ -1426,7 +1458,7 @@ func (x *RouteAction) GetPriority() core.RoutingPriority { if x != nil { return x.Priority } - return core.RoutingPriority_DEFAULT + return core.RoutingPriority(0) } func (x *RouteAction) GetRateLimits() []*RateLimit { @@ -1436,7 +1468,7 @@ func (x *RouteAction) GetRateLimits() []*RateLimit { return nil } -func (x *RouteAction) GetIncludeVhRateLimits() *wrappers.BoolValue { +func (x *RouteAction) GetIncludeVhRateLimits() *wrapperspb.BoolValue { if x != nil { return x.IncludeVhRateLimits } @@ -1457,14 +1489,14 @@ func (x *RouteAction) GetCors() *CorsPolicy { return nil } -func (x *RouteAction) GetMaxGrpcTimeout() *duration.Duration { +func (x *RouteAction) GetMaxGrpcTimeout() *durationpb.Duration { if x != nil { return x.MaxGrpcTimeout } return nil } -func (x *RouteAction) GetGrpcTimeoutOffset() *duration.Duration { +func (x *RouteAction) GetGrpcTimeoutOffset() *durationpb.Duration { if x != nil { return x.GrpcTimeoutOffset } @@ -1508,9 +1540,8 @@ type RouteAction_ClusterHeader struct { // header is not found or the referenced cluster does not exist, Envoy will // return a 404 response. // - // - // Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1 - // *Host* header. Thus, if attempting to match on *Host*, match on *:authority* instead. + // Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1 + // *Host* header. Thus, if attempting to match on *Host*, match on *:authority* instead. ClusterHeader string `protobuf:"bytes,2,opt,name=cluster_header,json=clusterHeader,proto3,oneof"` } @@ -1545,7 +1576,7 @@ type RouteAction_AutoHostRewrite struct { // option is applicable only when the destination cluster for a route is of // type *strict_dns* or *logical_dns*. Setting this to true with other cluster // types has no effect. - AutoHostRewrite *wrappers.BoolValue `protobuf:"bytes,7,opt,name=auto_host_rewrite,json=autoHostRewrite,proto3,oneof"` + AutoHostRewrite *wrapperspb.BoolValue `protobuf:"bytes,7,opt,name=auto_host_rewrite,json=autoHostRewrite,proto3,oneof"` } type RouteAction_AutoHostRewriteHeader struct { @@ -1553,9 +1584,8 @@ type RouteAction_AutoHostRewriteHeader struct { // downstream or `custom (config_http_conn_man_headers_custom_request_headers)` header. // If header value is empty, host header is left intact. // - // - // Pay attention to the potential security implications of using this option. Provided header - // must come from trusted source. + // Pay attention to the potential security implications of using this option. Provided header + // must come from trusted source. AutoHostRewriteHeader string `protobuf:"bytes,29,opt,name=auto_host_rewrite_header,json=autoHostRewriteHeader,proto3,oneof"` } @@ -1567,10 +1597,7 @@ func (*RouteAction_AutoHostRewriteHeader) isRouteAction_HostRewriteSpecifier() { // HTTP retry `architecture overview (arch_overview_http_routing_retry)`. type RetryPolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the conditions under which retry takes place. These are the same // conditions documented for `config_http_filters_router_x-envoy-retry-on` and // `config_http_filters_router_x-envoy-retry-grpc-on`. @@ -1578,18 +1605,17 @@ type RetryPolicy struct { // Specifies the allowed number of retries. This parameter is optional and // defaults to 1. These are the same conditions documented for // `config_http_filters_router_x-envoy-max-retries`. - NumRetries *wrappers.UInt32Value `protobuf:"bytes,2,opt,name=num_retries,json=numRetries,proto3" json:"num_retries,omitempty"` + NumRetries *wrapperspb.UInt32Value `protobuf:"bytes,2,opt,name=num_retries,json=numRetries,proto3" json:"num_retries,omitempty"` // Specifies a non-zero upstream timeout per retry attempt. This parameter is optional. The // same conditions documented for // `config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms` apply. // - // - // If left unspecified, Envoy will use the global - // `route timeout (envoy_api_field_route.RouteAction.timeout)` for the request. - // Consequently, when using a `5xx (config_http_filters_router_x-envoy-retry-on)` based - // retry policy, a request that times out will not be retried as the total timeout budget - // would have been exhausted. - PerTryTimeout *duration.Duration `protobuf:"bytes,3,opt,name=per_try_timeout,json=perTryTimeout,proto3" json:"per_try_timeout,omitempty"` + // If left unspecified, Envoy will use the global + // `route timeout (envoy_api_field_route.RouteAction.timeout)` for the request. + // Consequently, when using a `5xx (config_http_filters_router_x-envoy-retry-on)` based + // retry policy, a request that times out will not be retried as the total timeout budget + // would have been exhausted. + PerTryTimeout *durationpb.Duration `protobuf:"bytes,3,opt,name=per_try_timeout,json=perTryTimeout,proto3" json:"per_try_timeout,omitempty"` // Specifies an implementation of a RetryPriority which is used to determine the // distribution of load across priorities used for retries. Refer to // `retry plugin configuration (arch_overview_http_retry_plugins)` for more details. @@ -1610,16 +1636,16 @@ type RetryPolicy struct { // `upstream.base_retry_backoff_ms` runtime parameter. The default maximum interval is 10 times // the base interval. The documentation for `config_http_filters_router_x-envoy-max-retries` // describes Envoy's back-off algorithm. - RetryBackOff *RetryPolicy_RetryBackOff `protobuf:"bytes,8,opt,name=retry_back_off,json=retryBackOff,proto3" json:"retry_back_off,omitempty"` + RetryBackOff *RetryPolicy_RetryBackOff `protobuf:"bytes,8,opt,name=retry_back_off,json=retryBackOff,proto3" json:"retry_back_off,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RetryPolicy) Reset() { *x = RetryPolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RetryPolicy) String() string { @@ -1630,7 +1656,7 @@ func (*RetryPolicy) ProtoMessage() {} func (x *RetryPolicy) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1652,14 +1678,14 @@ func (x *RetryPolicy) GetRetryOn() string { return "" } -func (x *RetryPolicy) GetNumRetries() *wrappers.UInt32Value { +func (x *RetryPolicy) GetNumRetries() *wrapperspb.UInt32Value { if x != nil { return x.NumRetries } return nil } -func (x *RetryPolicy) GetPerTryTimeout() *duration.Duration { +func (x *RetryPolicy) GetPerTryTimeout() *durationpb.Duration { if x != nil { return x.PerTryTimeout } @@ -1703,15 +1729,12 @@ func (x *RetryPolicy) GetRetryBackOff() *RetryPolicy_RetryBackOff { // HTTP request hedging `architecture overview (arch_overview_http_routing_hedging)`. type HedgePolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the number of initial requests that should be sent upstream. // Must be at least 1. // Defaults to 1. // [#not-implemented-hide:] - InitialRequests *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=initial_requests,json=initialRequests,proto3" json:"initial_requests,omitempty"` + InitialRequests *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=initial_requests,json=initialRequests,proto3" json:"initial_requests,omitempty"` // Specifies a probability that an additional upstream request should be sent // on top of what is specified by initial_requests. // Defaults to 0. @@ -1726,15 +1749,15 @@ type HedgePolicy struct { // `RetryPolicy (envoy_api_msg_route.RetryPolicy)`. // Defaults to false. HedgeOnPerTryTimeout bool `protobuf:"varint,3,opt,name=hedge_on_per_try_timeout,json=hedgeOnPerTryTimeout,proto3" json:"hedge_on_per_try_timeout,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HedgePolicy) Reset() { *x = HedgePolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HedgePolicy) String() string { @@ -1745,7 +1768,7 @@ func (*HedgePolicy) ProtoMessage() {} func (x *HedgePolicy) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1760,7 +1783,7 @@ func (*HedgePolicy) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDescGZIP(), []int{7} } -func (x *HedgePolicy) GetInitialRequests() *wrappers.UInt32Value { +func (x *HedgePolicy) GetInitialRequests() *wrapperspb.UInt32Value { if x != nil { return x.InitialRequests } @@ -1782,17 +1805,15 @@ func (x *HedgePolicy) GetHedgeOnPerTryTimeout() bool { } type RedirectAction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // When the scheme redirection take place, the following rules apply: // 1. If the source URI scheme is `http` and the port is explicitly // set to `:80`, the port will be removed after the redirection // 2. If the source URI scheme is `https` and the port is explicitly // set to `:443`, the port will be removed after the redirection // - // Types that are assignable to SchemeRewriteSpecifier: + // Types that are valid to be assigned to SchemeRewriteSpecifier: + // // *RedirectAction_HttpsRedirect // *RedirectAction_SchemeRedirect SchemeRewriteSpecifier isRedirectAction_SchemeRewriteSpecifier `protobuf_oneof:"scheme_rewrite_specifier"` @@ -1800,7 +1821,8 @@ type RedirectAction struct { HostRedirect string `protobuf:"bytes,1,opt,name=host_redirect,json=hostRedirect,proto3" json:"host_redirect,omitempty"` // The port value of the URL will be swapped with this value. PortRedirect uint32 `protobuf:"varint,8,opt,name=port_redirect,json=portRedirect,proto3" json:"port_redirect,omitempty"` - // Types that are assignable to PathRewriteSpecifier: + // Types that are valid to be assigned to PathRewriteSpecifier: + // // *RedirectAction_PathRedirect // *RedirectAction_PrefixRewrite PathRewriteSpecifier isRedirectAction_PathRewriteSpecifier `protobuf_oneof:"path_rewrite_specifier"` @@ -1809,16 +1831,16 @@ type RedirectAction struct { ResponseCode RedirectAction_RedirectResponseCode `protobuf:"varint,3,opt,name=response_code,json=responseCode,proto3,enum=solo.io.envoy.api.v2.route.RedirectAction_RedirectResponseCode" json:"response_code,omitempty"` // Indicates that during redirection, the query portion of the URL will // be removed. Default value is false. - StripQuery bool `protobuf:"varint,6,opt,name=strip_query,json=stripQuery,proto3" json:"strip_query,omitempty"` + StripQuery bool `protobuf:"varint,6,opt,name=strip_query,json=stripQuery,proto3" json:"strip_query,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RedirectAction) Reset() { *x = RedirectAction{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RedirectAction) String() string { @@ -1829,7 +1851,7 @@ func (*RedirectAction) ProtoMessage() {} func (x *RedirectAction) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1844,23 +1866,27 @@ func (*RedirectAction) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDescGZIP(), []int{8} } -func (m *RedirectAction) GetSchemeRewriteSpecifier() isRedirectAction_SchemeRewriteSpecifier { - if m != nil { - return m.SchemeRewriteSpecifier +func (x *RedirectAction) GetSchemeRewriteSpecifier() isRedirectAction_SchemeRewriteSpecifier { + if x != nil { + return x.SchemeRewriteSpecifier } return nil } func (x *RedirectAction) GetHttpsRedirect() bool { - if x, ok := x.GetSchemeRewriteSpecifier().(*RedirectAction_HttpsRedirect); ok { - return x.HttpsRedirect + if x != nil { + if x, ok := x.SchemeRewriteSpecifier.(*RedirectAction_HttpsRedirect); ok { + return x.HttpsRedirect + } } return false } func (x *RedirectAction) GetSchemeRedirect() string { - if x, ok := x.GetSchemeRewriteSpecifier().(*RedirectAction_SchemeRedirect); ok { - return x.SchemeRedirect + if x != nil { + if x, ok := x.SchemeRewriteSpecifier.(*RedirectAction_SchemeRedirect); ok { + return x.SchemeRedirect + } } return "" } @@ -1879,23 +1905,27 @@ func (x *RedirectAction) GetPortRedirect() uint32 { return 0 } -func (m *RedirectAction) GetPathRewriteSpecifier() isRedirectAction_PathRewriteSpecifier { - if m != nil { - return m.PathRewriteSpecifier +func (x *RedirectAction) GetPathRewriteSpecifier() isRedirectAction_PathRewriteSpecifier { + if x != nil { + return x.PathRewriteSpecifier } return nil } func (x *RedirectAction) GetPathRedirect() string { - if x, ok := x.GetPathRewriteSpecifier().(*RedirectAction_PathRedirect); ok { - return x.PathRedirect + if x != nil { + if x, ok := x.PathRewriteSpecifier.(*RedirectAction_PathRedirect); ok { + return x.PathRedirect + } } return "" } func (x *RedirectAction) GetPrefixRewrite() string { - if x, ok := x.GetPathRewriteSpecifier().(*RedirectAction_PrefixRewrite); ok { - return x.PrefixRewrite + if x != nil { + if x, ok := x.PathRewriteSpecifier.(*RedirectAction_PrefixRewrite); ok { + return x.PrefixRewrite + } } return "" } @@ -1946,9 +1976,8 @@ type RedirectAction_PrefixRewrite struct { // should be swapped with this value. This option allows redirect URLs be dynamically created // based on the request. // - // - // Pay attention to the use of trailing slashes as mentioned in - // `RouteAction's prefix_rewrite (envoy_api_field_route.RouteAction.prefix_rewrite)`. + // Pay attention to the use of trailing slashes as mentioned in + // `RouteAction's prefix_rewrite (envoy_api_field_route.RouteAction.prefix_rewrite)`. PrefixRewrite string `protobuf:"bytes,5,opt,name=prefix_rewrite,json=prefixRewrite,proto3,oneof"` } @@ -1957,29 +1986,25 @@ func (*RedirectAction_PathRedirect) isRedirectAction_PathRewriteSpecifier() {} func (*RedirectAction_PrefixRewrite) isRedirectAction_PathRewriteSpecifier() {} type DirectResponseAction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the HTTP response status to be returned. Status uint32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` // Specifies the content of the response body. If this setting is omitted, // no body is included in the generated response. // - // - // Headers can be specified using *response_headers_to_add* in the enclosing - // `envoy_api_msg_route.Route`, `envoy_api_msg_RouteConfiguration` or - // `envoy_api_msg_route.VirtualHost`. - Body *core.DataSource `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` + // Headers can be specified using *response_headers_to_add* in the enclosing + // `envoy_api_msg_route.Route`, `envoy_api_msg_RouteConfiguration` or + // `envoy_api_msg_route.VirtualHost`. + Body *core.DataSource `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DirectResponseAction) Reset() { *x = DirectResponseAction{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DirectResponseAction) String() string { @@ -1990,7 +2015,7 @@ func (*DirectResponseAction) ProtoMessage() {} func (x *DirectResponseAction) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2020,27 +2045,23 @@ func (x *DirectResponseAction) GetBody() *core.DataSource { } type Decorator struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The operation name associated with the request matched to this route. If tracing is // enabled, this information will be used as the span name reported for this request. // - // - // For ingress (inbound) requests, or egress (outbound) responses, this value may be overridden - // by the `x-envoy-decorator-operation - // (config_http_filters_router_x-envoy-decorator-operation)` header. - Operation string `protobuf:"bytes,1,opt,name=operation,proto3" json:"operation,omitempty"` + // For ingress (inbound) requests, or egress (outbound) responses, this value may be overridden + // by the `x-envoy-decorator-operation + // (config_http_filters_router_x-envoy-decorator-operation)` header. + Operation string `protobuf:"bytes,1,opt,name=operation,proto3" json:"operation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Decorator) Reset() { *x = Decorator{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Decorator) String() string { @@ -2051,7 +2072,7 @@ func (*Decorator) ProtoMessage() {} func (x *Decorator) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2074,10 +2095,7 @@ func (x *Decorator) GetOperation() string { } type Tracing struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Target percentage of requests managed by this HTTP connection manager that will be force // traced if the `x-client-trace-id (config_http_conn_man_headers_x-client-trace-id)` // header is set. This field is a direct analog for the runtime variable @@ -2100,15 +2118,15 @@ type Tracing struct { // `HTTP Connection Manager (config_http_conn_man_runtime)`. // Default: 100% OverallSampling *_type.FractionalPercent `protobuf:"bytes,3,opt,name=overall_sampling,json=overallSampling,proto3" json:"overall_sampling,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Tracing) Reset() { *x = Tracing{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Tracing) String() string { @@ -2119,7 +2137,7 @@ func (*Tracing) ProtoMessage() {} func (x *Tracing) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2167,18 +2185,13 @@ func (x *Tracing) GetOverallSampling() *_type.FractionalPercent { // // Documentation for `virtual cluster statistics (config_http_filters_router_stats)`. // -// -// Virtual clusters are a useful tool, but we do not recommend setting up a virtual cluster for -// every application endpoint. This is both not easily maintainable and as well the matching and -// statistics output are not free. +// Virtual clusters are a useful tool, but we do not recommend setting up a virtual cluster for +// every application endpoint. This is both not easily maintainable and as well the matching and +// statistics output are not free. type VirtualCluster struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies a regex pattern to use for matching requests. The entire path of the request - // must match the regex. The regex grammar used is defined `here - // `_. + // must match the regex. The regex grammar used is defined [here](https://en.cppreference.com/w/cpp/regex/ecmascript). // // Examples: // @@ -2186,23 +2199,24 @@ type VirtualCluster struct { // * The regex */rides/\d+* matches the path */rides/123* // * The regex */rides/\d+* does not match the path */rides/123/456* Pattern string `protobuf:"bytes,1,opt,name=pattern,proto3" json:"pattern,omitempty"` - // Specifies the name of the virtual cluster. The virtual cluster name as well + // Specifies the name of the virtual cluster. The virtual cluster name as well + // // as the virtual host name are used when emitting statistics. The statistics are emitted by the // router filter and are documented `here (config_http_filters_router_stats)`. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Optionally specifies the HTTP method to match on. For example GET, PUT, // etc. // https://github.com/lyft/protoc-gen-validate/issues/42 is resolved.] - Method core.RequestMethod `protobuf:"varint,3,opt,name=method,proto3,enum=solo.io.envoy.api.v2.core.RequestMethod" json:"method,omitempty"` + Method core.RequestMethod `protobuf:"varint,3,opt,name=method,proto3,enum=solo.io.envoy.api.v2.core.RequestMethod" json:"method,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VirtualCluster) Reset() { *x = VirtualCluster{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VirtualCluster) String() string { @@ -2213,7 +2227,7 @@ func (*VirtualCluster) ProtoMessage() {} func (x *VirtualCluster) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2246,22 +2260,18 @@ func (x *VirtualCluster) GetMethod() core.RequestMethod { if x != nil { return x.Method } - return core.RequestMethod_METHOD_UNSPECIFIED + return core.RequestMethod(0) } // Global rate limiting `architecture overview (arch_overview_rate_limit)`. type RateLimit struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Refers to the stage set in the filter. The rate limit configuration only // applies to filters with the same stage number. The default stage number is // 0. // - // - // The filter supports a range of 0 - 10 inclusively for stage numbers. - Stage *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=stage,proto3" json:"stage,omitempty"` + // The filter supports a range of 0 - 10 inclusively for stage numbers. + Stage *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=stage,proto3" json:"stage,omitempty"` // The key to be set in runtime to disable this rate limit configuration. DisableKey string `protobuf:"bytes,2,opt,name=disable_key,json=disableKey,proto3" json:"disable_key,omitempty"` // A list of actions that are to be applied for this rate limit configuration. @@ -2270,16 +2280,16 @@ type RateLimit struct { // cannot append a descriptor entry, no descriptor is generated for the // configuration. See `composing actions // (config_http_filters_rate_limit_composing_actions)` for additional documentation. - Actions []*RateLimit_Action `protobuf:"bytes,3,rep,name=actions,proto3" json:"actions,omitempty"` + Actions []*RateLimit_Action `protobuf:"bytes,3,rep,name=actions,proto3" json:"actions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimit) Reset() { *x = RateLimit{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimit) String() string { @@ -2290,7 +2300,7 @@ func (*RateLimit) ProtoMessage() {} func (x *RateLimit) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2305,7 +2315,7 @@ func (*RateLimit) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDescGZIP(), []int{13} } -func (x *RateLimit) GetStage() *wrappers.UInt32Value { +func (x *RateLimit) GetStage() *wrapperspb.UInt32Value { if x != nil { return x.Stage } @@ -2326,36 +2336,33 @@ func (x *RateLimit) GetActions() []*RateLimit_Action { return nil } +// Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1 *Host* +// header. Thus, if attempting to match on *Host*, match on *:authority* instead. // -// Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1 *Host* -// header. Thus, if attempting to match on *Host*, match on *:authority* instead. +// To route on HTTP method, use the special HTTP/2 *:method* header. This works for both +// HTTP/1 and HTTP/2 as Envoy normalizes headers. E.g., // +// ``` // -// To route on HTTP method, use the special HTTP/2 *:method* header. This works for both -// HTTP/1 and HTTP/2 as Envoy normalizes headers. E.g., -// -// ``` -// { -// "name": ":method", -// "exact_match": "POST" -// } -// ``` +// { +// "name": ":method", +// "exact_match": "POST" +// } // -// In the absence of any header match specifier, match will default to `present_match -// (envoy_api_field_route.HeaderMatcher.present_match)`. i.e, a request that has the `name -// (envoy_api_field_route.HeaderMatcher.name)` header will match, regardless of the header's -// value. +// ``` // +// In the absence of any header match specifier, match will default to `present_match +// (envoy_api_field_route.HeaderMatcher.present_match)`. i.e, a request that has the `name +// (envoy_api_field_route.HeaderMatcher.name)` header will match, regardless of the header's +// value. type HeaderMatcher struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the name of the header in the request. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Specifies how the header match will be performed to route the request. // - // Types that are assignable to HeaderMatchSpecifier: + // Types that are valid to be assigned to HeaderMatchSpecifier: + // // *HeaderMatcher_ExactMatch // *HeaderMatcher_RegexMatch // *HeaderMatcher_RangeMatch @@ -2369,16 +2376,16 @@ type HeaderMatcher struct { // // * The regex *\d{3}* does not match the value *1234*, so it will match when inverted. // * The range [-10,0) will match the value -1, so it will not match when inverted. - InvertMatch bool `protobuf:"varint,8,opt,name=invert_match,json=invertMatch,proto3" json:"invert_match,omitempty"` + InvertMatch bool `protobuf:"varint,8,opt,name=invert_match,json=invertMatch,proto3" json:"invert_match,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HeaderMatcher) Reset() { *x = HeaderMatcher{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HeaderMatcher) String() string { @@ -2389,7 +2396,7 @@ func (*HeaderMatcher) ProtoMessage() {} func (x *HeaderMatcher) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2411,51 +2418,63 @@ func (x *HeaderMatcher) GetName() string { return "" } -func (m *HeaderMatcher) GetHeaderMatchSpecifier() isHeaderMatcher_HeaderMatchSpecifier { - if m != nil { - return m.HeaderMatchSpecifier +func (x *HeaderMatcher) GetHeaderMatchSpecifier() isHeaderMatcher_HeaderMatchSpecifier { + if x != nil { + return x.HeaderMatchSpecifier } return nil } func (x *HeaderMatcher) GetExactMatch() string { - if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_ExactMatch); ok { - return x.ExactMatch + if x != nil { + if x, ok := x.HeaderMatchSpecifier.(*HeaderMatcher_ExactMatch); ok { + return x.ExactMatch + } } return "" } func (x *HeaderMatcher) GetRegexMatch() string { - if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_RegexMatch); ok { - return x.RegexMatch + if x != nil { + if x, ok := x.HeaderMatchSpecifier.(*HeaderMatcher_RegexMatch); ok { + return x.RegexMatch + } } return "" } func (x *HeaderMatcher) GetRangeMatch() *_type1.Int64Range { - if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_RangeMatch); ok { - return x.RangeMatch + if x != nil { + if x, ok := x.HeaderMatchSpecifier.(*HeaderMatcher_RangeMatch); ok { + return x.RangeMatch + } } return nil } func (x *HeaderMatcher) GetPresentMatch() bool { - if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_PresentMatch); ok { - return x.PresentMatch + if x != nil { + if x, ok := x.HeaderMatchSpecifier.(*HeaderMatcher_PresentMatch); ok { + return x.PresentMatch + } } return false } func (x *HeaderMatcher) GetPrefixMatch() string { - if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_PrefixMatch); ok { - return x.PrefixMatch + if x != nil { + if x, ok := x.HeaderMatchSpecifier.(*HeaderMatcher_PrefixMatch); ok { + return x.PrefixMatch + } } return "" } func (x *HeaderMatcher) GetSuffixMatch() string { - if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_SuffixMatch); ok { - return x.SuffixMatch + if x != nil { + if x, ok := x.HeaderMatchSpecifier.(*HeaderMatcher_SuffixMatch); ok { + return x.SuffixMatch + } } return "" } @@ -2480,7 +2499,7 @@ type HeaderMatcher_RegexMatch struct { // If specified, this regex string is a regular expression rule which implies the entire request // header value must match the regex. The rule will not match if only a subsequence of the // request header value matches the regex. The regex grammar used in the value field is defined - // `here `_. + // [here](https://en.cppreference.com/w/cpp/regex/ecmascript). // // Examples: // @@ -2500,8 +2519,8 @@ type HeaderMatcher_RangeMatch struct { // // Examples: // - // * For range [-10,0), route will match for header value -1, but not for 0, "somestring", 10.9, - // "-1somestring" + // - For range [-10,0), route will match for header value -1, but not for 0, "somestring", 10.9, + // "-1somestring" RangeMatch *_type1.Int64Range `protobuf:"bytes,6,opt,name=range_match,json=rangeMatch,proto3,oneof"` } @@ -2546,10 +2565,7 @@ func (*HeaderMatcher_SuffixMatch) isHeaderMatcher_HeaderMatchSpecifier() {} // Query parameter matching treats the query string of a request's :path header // as an ampersand-separated list of keys and/or key=value elements. type QueryParameterMatcher struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the name of a key that must be present in the requested // *path*'s query string. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` @@ -2561,16 +2577,16 @@ type QueryParameterMatcher struct { // Defaults to false. The entire query parameter value (i.e., the part to // the right of the equals sign in "key=value") must match the regex. // E.g., the regex "\d+$" will match "123" but not "a123" or "123a". - Regex *wrappers.BoolValue `protobuf:"bytes,4,opt,name=regex,proto3" json:"regex,omitempty"` + Regex *wrapperspb.BoolValue `protobuf:"bytes,4,opt,name=regex,proto3" json:"regex,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *QueryParameterMatcher) Reset() { *x = QueryParameterMatcher{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *QueryParameterMatcher) String() string { @@ -2581,7 +2597,7 @@ func (*QueryParameterMatcher) ProtoMessage() {} func (x *QueryParameterMatcher) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2610,7 +2626,7 @@ func (x *QueryParameterMatcher) GetValue() string { return "" } -func (x *QueryParameterMatcher) GetRegex() *wrappers.BoolValue { +func (x *QueryParameterMatcher) GetRegex() *wrapperspb.BoolValue { if x != nil { return x.Regex } @@ -2618,10 +2634,7 @@ func (x *QueryParameterMatcher) GetRegex() *wrappers.BoolValue { } type WeightedCluster_ClusterWeight struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Name of the upstream cluster. The cluster must exist in the // `cluster manager configuration (config_cluster_manager)`. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` @@ -2629,7 +2642,7 @@ type WeightedCluster_ClusterWeight struct { // (envoy_api_field_route.WeightedCluster.total_weight)`. When a request matches the route, // the choice of an upstream cluster is determined by its weight. The sum of weights across all // entries in the clusters array must add up to the total_weight, which defaults to 100. - Weight *wrappers.UInt32Value `protobuf:"bytes,2,opt,name=weight,proto3" json:"weight,omitempty"` + Weight *wrapperspb.UInt32Value `protobuf:"bytes,2,opt,name=weight,proto3" json:"weight,omitempty"` // Optional endpoint metadata match criteria used by the subset load balancer. Only endpoints in // the upstream cluster with metadata matching what is set in this field will be considered for // load balancing. Note that this will be merged with what's provided in @@ -2663,22 +2676,22 @@ type WeightedCluster_ClusterWeight struct { // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter // specific; see the `HTTP filter documentation (config_http_filters)` // for if and how it is utilized. - PerFilterConfig map[string]*_struct.Struct `protobuf:"bytes,8,rep,name=per_filter_config,json=perFilterConfig,proto3" json:"per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + PerFilterConfig map[string]*structpb.Struct `protobuf:"bytes,8,rep,name=per_filter_config,json=perFilterConfig,proto3" json:"per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // The per_filter_config field can be used to provide weighted cluster-specific // configurations for filters. The key should match the filter name, such as // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter // specific; see the `HTTP filter documentation (config_http_filters)` // for if and how it is utilized. - TypedPerFilterConfig map[string]*any.Any `protobuf:"bytes,10,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + TypedPerFilterConfig map[string]*anypb.Any `protobuf:"bytes,10,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WeightedCluster_ClusterWeight) Reset() { *x = WeightedCluster_ClusterWeight{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WeightedCluster_ClusterWeight) String() string { @@ -2689,7 +2702,7 @@ func (*WeightedCluster_ClusterWeight) ProtoMessage() {} func (x *WeightedCluster_ClusterWeight) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2711,7 +2724,7 @@ func (x *WeightedCluster_ClusterWeight) GetName() string { return "" } -func (x *WeightedCluster_ClusterWeight) GetWeight() *wrappers.UInt32Value { +func (x *WeightedCluster_ClusterWeight) GetWeight() *wrapperspb.UInt32Value { if x != nil { return x.Weight } @@ -2753,44 +2766,78 @@ func (x *WeightedCluster_ClusterWeight) GetResponseHeadersToRemove() []string { return nil } -func (x *WeightedCluster_ClusterWeight) GetPerFilterConfig() map[string]*_struct.Struct { +func (x *WeightedCluster_ClusterWeight) GetPerFilterConfig() map[string]*structpb.Struct { if x != nil { return x.PerFilterConfig } return nil } -func (x *WeightedCluster_ClusterWeight) GetTypedPerFilterConfig() map[string]*any.Any { +func (x *WeightedCluster_ClusterWeight) GetTypedPerFilterConfig() map[string]*anypb.Any { if x != nil { return x.TypedPerFilterConfig } return nil } -type RouteMatch_GrpcRouteMatchOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type RouteMatch_ConnectMatcher struct { + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *RouteMatch_GrpcRouteMatchOptions) Reset() { - *x = RouteMatch_GrpcRouteMatchOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *RouteMatch_ConnectMatcher) Reset() { + *x = RouteMatch_ConnectMatcher{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *RouteMatch_GrpcRouteMatchOptions) String() string { +func (x *RouteMatch_ConnectMatcher) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RouteMatch_GrpcRouteMatchOptions) ProtoMessage() {} +func (*RouteMatch_ConnectMatcher) ProtoMessage() {} -func (x *RouteMatch_GrpcRouteMatchOptions) ProtoReflect() protoreflect.Message { +func (x *RouteMatch_ConnectMatcher) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RouteMatch_ConnectMatcher.ProtoReflect.Descriptor instead. +func (*RouteMatch_ConnectMatcher) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDescGZIP(), []int{3, 0} +} + +type RouteMatch_GrpcRouteMatchOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RouteMatch_GrpcRouteMatchOptions) Reset() { + *x = RouteMatch_GrpcRouteMatchOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RouteMatch_GrpcRouteMatchOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RouteMatch_GrpcRouteMatchOptions) ProtoMessage() {} + +func (x *RouteMatch_GrpcRouteMatchOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[24] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2802,7 +2849,7 @@ func (x *RouteMatch_GrpcRouteMatchOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use RouteMatch_GrpcRouteMatchOptions.ProtoReflect.Descriptor instead. func (*RouteMatch_GrpcRouteMatchOptions) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDescGZIP(), []int{3, 0} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDescGZIP(), []int{3, 1} } // The router is capable of shadowing traffic from one cluster to another. The current @@ -2813,10 +2860,7 @@ func (*RouteMatch_GrpcRouteMatchOptions) Descriptor() ([]byte, []int) { // During shadowing, the host/authority header is altered such that *-shadow* is appended. This is // useful for logging. For example, *cluster1* becomes *cluster1-shadow*. type RouteAction_RequestMirrorPolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the cluster that requests will be mirrored to. The cluster must // exist in the cluster manager configuration. Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` @@ -2827,12 +2871,11 @@ type RouteAction_RequestMirrorPolicy struct { // configuration but not present in runtime, 0 is the default and thus 0% of // requests will be mirrored. // + // **This field is deprecated**. Set the + // `runtime_fraction + // (envoy_api_field_route.RouteAction.RequestMirrorPolicy.runtime_fraction)` field instead. // - // **This field is deprecated**. Set the - // `runtime_fraction - // (envoy_api_field_route.RouteAction.RequestMirrorPolicy.runtime_fraction)` field instead. - // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/api/v2/route/route.proto. RuntimeKey string `protobuf:"bytes,2,opt,name=runtime_key,json=runtimeKey,proto3" json:"runtime_key,omitempty"` // If both `runtime_key // (envoy_api_field_route.RouteAction.RequestMirrorPolicy.runtime_key)` and this field are not @@ -2845,24 +2888,23 @@ type RouteAction_RequestMirrorPolicy struct { // number is <= the value of the numerator N, or if the key is not present, the default // value, the request will be mirrored. // - // - // Parsing this field is implemented such that the runtime key's data may be represented - // as a `FractionalPercent (envoy_api_msg_type.FractionalPercent)` proto represented - // as JSON/YAML and may also be represented as an integer with the assumption that the value - // is an integral percentage out of 100. For instance, a runtime key lookup returning the - // value "42" would parse as a `FractionalPercent` whose numerator is 42 and denominator is - // HUNDRED. This is behaviour is different to that of the deprecated `runtime_key` field, - // where the implicit denominator is 10000. + // Parsing this field is implemented such that the runtime key's data may be represented + // as a `FractionalPercent (envoy_api_msg_type.FractionalPercent)` proto represented + // as JSON/YAML and may also be represented as an integer with the assumption that the value + // is an integral percentage out of 100. For instance, a runtime key lookup returning the + // value "42" would parse as a `FractionalPercent` whose numerator is 42 and denominator is + // HUNDRED. This is behaviour is different to that of the deprecated `runtime_key` field, + // where the implicit denominator is 10000. RuntimeFraction *core.RuntimeFractionalPercent `protobuf:"bytes,3,opt,name=runtime_fraction,json=runtimeFraction,proto3" json:"runtime_fraction,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteAction_RequestMirrorPolicy) Reset() { *x = RouteAction_RequestMirrorPolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteAction_RequestMirrorPolicy) String() string { @@ -2872,8 +2914,8 @@ func (x *RouteAction_RequestMirrorPolicy) String() string { func (*RouteAction_RequestMirrorPolicy) ProtoMessage() {} func (x *RouteAction_RequestMirrorPolicy) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[25] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2895,7 +2937,7 @@ func (x *RouteAction_RequestMirrorPolicy) GetCluster() string { return "" } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/api/v2/route/route.proto. func (x *RouteAction_RequestMirrorPolicy) GetRuntimeKey() string { if x != nil { return x.RuntimeKey @@ -2913,11 +2955,9 @@ func (x *RouteAction_RequestMirrorPolicy) GetRuntimeFraction() *core.RuntimeFrac // Specifies the route's hashing policy if the upstream cluster uses a hashing `load balancer // (arch_overview_load_balancing_types)`. type RouteAction_HashPolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to PolicySpecifier: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to PolicySpecifier: + // // *RouteAction_HashPolicy_Header_ // *RouteAction_HashPolicy_Cookie_ // *RouteAction_HashPolicy_ConnectionProperties_ @@ -2931,26 +2971,26 @@ type RouteAction_HashPolicy struct { // list of hash polices. // For example, if the following hash methods are configured: // - // ========= ======== - // specifier terminal - // ========= ======== - // Header A true - // Header B false - // Header C false - // ========= ======== + // ========= ======== + // specifier terminal + // ========= ======== + // Header A true + // Header B false + // Header C false + // ========= ======== // // The generateHash process ends if policy "header A" generates a hash, as // it's a terminal policy. - Terminal bool `protobuf:"varint,4,opt,name=terminal,proto3" json:"terminal,omitempty"` + Terminal bool `protobuf:"varint,4,opt,name=terminal,proto3" json:"terminal,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteAction_HashPolicy) Reset() { *x = RouteAction_HashPolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteAction_HashPolicy) String() string { @@ -2960,8 +3000,8 @@ func (x *RouteAction_HashPolicy) String() string { func (*RouteAction_HashPolicy) ProtoMessage() {} func (x *RouteAction_HashPolicy) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[26] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2976,30 +3016,36 @@ func (*RouteAction_HashPolicy) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDescGZIP(), []int{5, 1} } -func (m *RouteAction_HashPolicy) GetPolicySpecifier() isRouteAction_HashPolicy_PolicySpecifier { - if m != nil { - return m.PolicySpecifier +func (x *RouteAction_HashPolicy) GetPolicySpecifier() isRouteAction_HashPolicy_PolicySpecifier { + if x != nil { + return x.PolicySpecifier } return nil } func (x *RouteAction_HashPolicy) GetHeader() *RouteAction_HashPolicy_Header { - if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_Header_); ok { - return x.Header + if x != nil { + if x, ok := x.PolicySpecifier.(*RouteAction_HashPolicy_Header_); ok { + return x.Header + } } return nil } func (x *RouteAction_HashPolicy) GetCookie() *RouteAction_HashPolicy_Cookie { - if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_Cookie_); ok { - return x.Cookie + if x != nil { + if x, ok := x.PolicySpecifier.(*RouteAction_HashPolicy_Cookie_); ok { + return x.Cookie + } } return nil } func (x *RouteAction_HashPolicy) GetConnectionProperties() *RouteAction_HashPolicy_ConnectionProperties { - if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_ConnectionProperties_); ok { - return x.ConnectionProperties + if x != nil { + if x, ok := x.PolicySpecifier.(*RouteAction_HashPolicy_ConnectionProperties_); ok { + return x.ConnectionProperties + } } return nil } @@ -3043,25 +3089,22 @@ func (*RouteAction_HashPolicy_ConnectionProperties_) isRouteAction_HashPolicy_Po // (envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.upgrade_configs)` // but does not affect any custom filter chain specified there. type RouteAction_UpgradeConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The case-insensitive name of this upgrade, e.g. "websocket". // For each upgrade type present in upgrade_configs, requests with // Upgrade: [upgrade_type] will be proxied upstream. UpgradeType string `protobuf:"bytes,1,opt,name=upgrade_type,json=upgradeType,proto3" json:"upgrade_type,omitempty"` // Determines if upgrades are available on this route. Defaults to true. - Enabled *wrappers.BoolValue `protobuf:"bytes,2,opt,name=enabled,proto3" json:"enabled,omitempty"` + Enabled *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=enabled,proto3" json:"enabled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteAction_UpgradeConfig) Reset() { *x = RouteAction_UpgradeConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteAction_UpgradeConfig) String() string { @@ -3071,8 +3114,8 @@ func (x *RouteAction_UpgradeConfig) String() string { func (*RouteAction_UpgradeConfig) ProtoMessage() {} func (x *RouteAction_UpgradeConfig) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[27] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3094,7 +3137,7 @@ func (x *RouteAction_UpgradeConfig) GetUpgradeType() string { return "" } -func (x *RouteAction_UpgradeConfig) GetEnabled() *wrappers.BoolValue { +func (x *RouteAction_UpgradeConfig) GetEnabled() *wrapperspb.BoolValue { if x != nil { return x.Enabled } @@ -3102,22 +3145,19 @@ func (x *RouteAction_UpgradeConfig) GetEnabled() *wrappers.BoolValue { } type RouteAction_HashPolicy_Header struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the request header that will be used to obtain the hash // key. If the request header is not present, no hash will be produced. - HeaderName string `protobuf:"bytes,1,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"` + HeaderName string `protobuf:"bytes,1,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteAction_HashPolicy_Header) Reset() { *x = RouteAction_HashPolicy_Header{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteAction_HashPolicy_Header) String() string { @@ -3127,8 +3167,8 @@ func (x *RouteAction_HashPolicy_Header) String() string { func (*RouteAction_HashPolicy_Header) ProtoMessage() {} func (x *RouteAction_HashPolicy_Header) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[28] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3152,23 +3192,20 @@ func (x *RouteAction_HashPolicy_Header) GetHeaderName() string { // Envoy supports two types of cookie affinity: // -// 1. Passive. Envoy takes a cookie that's present in the cookies header and -// hashes on its value. +// 1. Passive. Envoy takes a cookie that's present in the cookies header and +// hashes on its value. // -// 2. Generated. Envoy generates and sets a cookie with an expiration (TTL) -// on the first request from the client in its response to the client, -// based on the endpoint the request gets sent to. The client then -// presents this on the next and all subsequent requests. The hash of -// this is sufficient to ensure these requests get sent to the same -// endpoint. The cookie is generated by hashing the source and -// destination ports and addresses so that multiple independent HTTP2 -// streams on the same connection will independently receive the same -// cookie, even if they arrive at the Envoy simultaneously. +// 2. Generated. Envoy generates and sets a cookie with an expiration (TTL) +// on the first request from the client in its response to the client, +// based on the endpoint the request gets sent to. The client then +// presents this on the next and all subsequent requests. The hash of +// this is sufficient to ensure these requests get sent to the same +// endpoint. The cookie is generated by hashing the source and +// destination ports and addresses so that multiple independent HTTP2 +// streams on the same connection will independently receive the same +// cookie, even if they arrive at the Envoy simultaneously. type RouteAction_HashPolicy_Cookie struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the cookie that will be used to obtain the hash key. If the // cookie is not present and ttl below is not set, no hash will be // produced. @@ -3176,19 +3213,19 @@ type RouteAction_HashPolicy_Cookie struct { // If specified, a cookie with the TTL will be generated if the cookie is // not present. If the TTL is present and zero, the generated cookie will // be a session cookie. - Ttl *duration.Duration `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"` + Ttl *durationpb.Duration `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"` // The name of the path for the cookie. If no path is specified here, no path // will be set for the cookie. - Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` + Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteAction_HashPolicy_Cookie) Reset() { *x = RouteAction_HashPolicy_Cookie{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteAction_HashPolicy_Cookie) String() string { @@ -3198,8 +3235,8 @@ func (x *RouteAction_HashPolicy_Cookie) String() string { func (*RouteAction_HashPolicy_Cookie) ProtoMessage() {} func (x *RouteAction_HashPolicy_Cookie) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[29] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3221,7 +3258,7 @@ func (x *RouteAction_HashPolicy_Cookie) GetName() string { return "" } -func (x *RouteAction_HashPolicy_Cookie) GetTtl() *duration.Duration { +func (x *RouteAction_HashPolicy_Cookie) GetTtl() *durationpb.Duration { if x != nil { return x.Ttl } @@ -3236,21 +3273,18 @@ func (x *RouteAction_HashPolicy_Cookie) GetPath() string { } type RouteAction_HashPolicy_ConnectionProperties struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Hash on source IP address. - SourceIp bool `protobuf:"varint,1,opt,name=source_ip,json=sourceIp,proto3" json:"source_ip,omitempty"` + SourceIp bool `protobuf:"varint,1,opt,name=source_ip,json=sourceIp,proto3" json:"source_ip,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteAction_HashPolicy_ConnectionProperties) Reset() { *x = RouteAction_HashPolicy_ConnectionProperties{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteAction_HashPolicy_ConnectionProperties) String() string { @@ -3260,8 +3294,8 @@ func (x *RouteAction_HashPolicy_ConnectionProperties) String() string { func (*RouteAction_HashPolicy_ConnectionProperties) ProtoMessage() {} func (x *RouteAction_HashPolicy_ConnectionProperties) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[30] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3284,24 +3318,22 @@ func (x *RouteAction_HashPolicy_ConnectionProperties) GetSourceIp() bool { } type RetryPolicy_RetryPriority struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Types that are assignable to ConfigType: + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Types that are valid to be assigned to ConfigType: + // // *RetryPolicy_RetryPriority_Config // *RetryPolicy_RetryPriority_TypedConfig - ConfigType isRetryPolicy_RetryPriority_ConfigType `protobuf_oneof:"config_type"` + ConfigType isRetryPolicy_RetryPriority_ConfigType `protobuf_oneof:"config_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RetryPolicy_RetryPriority) Reset() { *x = RetryPolicy_RetryPriority{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RetryPolicy_RetryPriority) String() string { @@ -3311,8 +3343,8 @@ func (x *RetryPolicy_RetryPriority) String() string { func (*RetryPolicy_RetryPriority) ProtoMessage() {} func (x *RetryPolicy_RetryPriority) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[31] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3334,23 +3366,27 @@ func (x *RetryPolicy_RetryPriority) GetName() string { return "" } -func (m *RetryPolicy_RetryPriority) GetConfigType() isRetryPolicy_RetryPriority_ConfigType { - if m != nil { - return m.ConfigType +func (x *RetryPolicy_RetryPriority) GetConfigType() isRetryPolicy_RetryPriority_ConfigType { + if x != nil { + return x.ConfigType } return nil } -func (x *RetryPolicy_RetryPriority) GetConfig() *_struct.Struct { - if x, ok := x.GetConfigType().(*RetryPolicy_RetryPriority_Config); ok { - return x.Config +func (x *RetryPolicy_RetryPriority) GetConfig() *structpb.Struct { + if x != nil { + if x, ok := x.ConfigType.(*RetryPolicy_RetryPriority_Config); ok { + return x.Config + } } return nil } -func (x *RetryPolicy_RetryPriority) GetTypedConfig() *any.Any { - if x, ok := x.GetConfigType().(*RetryPolicy_RetryPriority_TypedConfig); ok { - return x.TypedConfig +func (x *RetryPolicy_RetryPriority) GetTypedConfig() *anypb.Any { + if x != nil { + if x, ok := x.ConfigType.(*RetryPolicy_RetryPriority_TypedConfig); ok { + return x.TypedConfig + } } return nil } @@ -3360,11 +3396,11 @@ type isRetryPolicy_RetryPriority_ConfigType interface { } type RetryPolicy_RetryPriority_Config struct { - Config *_struct.Struct `protobuf:"bytes,2,opt,name=config,proto3,oneof"` + Config *structpb.Struct `protobuf:"bytes,2,opt,name=config,proto3,oneof"` } type RetryPolicy_RetryPriority_TypedConfig struct { - TypedConfig *any.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"` + TypedConfig *anypb.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"` } func (*RetryPolicy_RetryPriority_Config) isRetryPolicy_RetryPriority_ConfigType() {} @@ -3372,24 +3408,22 @@ func (*RetryPolicy_RetryPriority_Config) isRetryPolicy_RetryPriority_ConfigType( func (*RetryPolicy_RetryPriority_TypedConfig) isRetryPolicy_RetryPriority_ConfigType() {} type RetryPolicy_RetryHostPredicate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Types that are assignable to ConfigType: + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Types that are valid to be assigned to ConfigType: + // // *RetryPolicy_RetryHostPredicate_Config // *RetryPolicy_RetryHostPredicate_TypedConfig - ConfigType isRetryPolicy_RetryHostPredicate_ConfigType `protobuf_oneof:"config_type"` + ConfigType isRetryPolicy_RetryHostPredicate_ConfigType `protobuf_oneof:"config_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RetryPolicy_RetryHostPredicate) Reset() { *x = RetryPolicy_RetryHostPredicate{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RetryPolicy_RetryHostPredicate) String() string { @@ -3399,8 +3433,8 @@ func (x *RetryPolicy_RetryHostPredicate) String() string { func (*RetryPolicy_RetryHostPredicate) ProtoMessage() {} func (x *RetryPolicy_RetryHostPredicate) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[32] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3422,23 +3456,27 @@ func (x *RetryPolicy_RetryHostPredicate) GetName() string { return "" } -func (m *RetryPolicy_RetryHostPredicate) GetConfigType() isRetryPolicy_RetryHostPredicate_ConfigType { - if m != nil { - return m.ConfigType +func (x *RetryPolicy_RetryHostPredicate) GetConfigType() isRetryPolicy_RetryHostPredicate_ConfigType { + if x != nil { + return x.ConfigType } return nil } -func (x *RetryPolicy_RetryHostPredicate) GetConfig() *_struct.Struct { - if x, ok := x.GetConfigType().(*RetryPolicy_RetryHostPredicate_Config); ok { - return x.Config +func (x *RetryPolicy_RetryHostPredicate) GetConfig() *structpb.Struct { + if x != nil { + if x, ok := x.ConfigType.(*RetryPolicy_RetryHostPredicate_Config); ok { + return x.Config + } } return nil } -func (x *RetryPolicy_RetryHostPredicate) GetTypedConfig() *any.Any { - if x, ok := x.GetConfigType().(*RetryPolicy_RetryHostPredicate_TypedConfig); ok { - return x.TypedConfig +func (x *RetryPolicy_RetryHostPredicate) GetTypedConfig() *anypb.Any { + if x != nil { + if x, ok := x.ConfigType.(*RetryPolicy_RetryHostPredicate_TypedConfig); ok { + return x.TypedConfig + } } return nil } @@ -3448,11 +3486,11 @@ type isRetryPolicy_RetryHostPredicate_ConfigType interface { } type RetryPolicy_RetryHostPredicate_Config struct { - Config *_struct.Struct `protobuf:"bytes,2,opt,name=config,proto3,oneof"` + Config *structpb.Struct `protobuf:"bytes,2,opt,name=config,proto3,oneof"` } type RetryPolicy_RetryHostPredicate_TypedConfig struct { - TypedConfig *any.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"` + TypedConfig *anypb.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"` } func (*RetryPolicy_RetryHostPredicate_Config) isRetryPolicy_RetryHostPredicate_ConfigType() {} @@ -3460,29 +3498,26 @@ func (*RetryPolicy_RetryHostPredicate_Config) isRetryPolicy_RetryHostPredicate_C func (*RetryPolicy_RetryHostPredicate_TypedConfig) isRetryPolicy_RetryHostPredicate_ConfigType() {} type RetryPolicy_RetryBackOff struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the base interval between retries. This parameter is required and must be greater // than zero. Values less than 1 ms are rounded up to 1 ms. // See `config_http_filters_router_x-envoy-max-retries` for a discussion of Envoy's // back-off algorithm. - BaseInterval *duration.Duration `protobuf:"bytes,1,opt,name=base_interval,json=baseInterval,proto3" json:"base_interval,omitempty"` + BaseInterval *durationpb.Duration `protobuf:"bytes,1,opt,name=base_interval,json=baseInterval,proto3" json:"base_interval,omitempty"` // Specifies the maximum interval between retries. This parameter is optional, but must be // greater than or equal to the `base_interval` if set. The default is 10 times the // `base_interval`. See `config_http_filters_router_x-envoy-max-retries` for a discussion // of Envoy's back-off algorithm. - MaxInterval *duration.Duration `protobuf:"bytes,2,opt,name=max_interval,json=maxInterval,proto3" json:"max_interval,omitempty"` + MaxInterval *durationpb.Duration `protobuf:"bytes,2,opt,name=max_interval,json=maxInterval,proto3" json:"max_interval,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RetryPolicy_RetryBackOff) Reset() { *x = RetryPolicy_RetryBackOff{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RetryPolicy_RetryBackOff) String() string { @@ -3492,8 +3527,8 @@ func (x *RetryPolicy_RetryBackOff) String() string { func (*RetryPolicy_RetryBackOff) ProtoMessage() {} func (x *RetryPolicy_RetryBackOff) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[33] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3508,14 +3543,14 @@ func (*RetryPolicy_RetryBackOff) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDescGZIP(), []int{6, 2} } -func (x *RetryPolicy_RetryBackOff) GetBaseInterval() *duration.Duration { +func (x *RetryPolicy_RetryBackOff) GetBaseInterval() *durationpb.Duration { if x != nil { return x.BaseInterval } return nil } -func (x *RetryPolicy_RetryBackOff) GetMaxInterval() *duration.Duration { +func (x *RetryPolicy_RetryBackOff) GetMaxInterval() *durationpb.Duration { if x != nil { return x.MaxInterval } @@ -3523,11 +3558,9 @@ func (x *RetryPolicy_RetryBackOff) GetMaxInterval() *duration.Duration { } type RateLimit_Action struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to ActionSpecifier: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to ActionSpecifier: + // // *RateLimit_Action_SourceCluster_ // *RateLimit_Action_DestinationCluster_ // *RateLimit_Action_RequestHeaders_ @@ -3535,15 +3568,15 @@ type RateLimit_Action struct { // *RateLimit_Action_GenericKey_ // *RateLimit_Action_HeaderValueMatch_ ActionSpecifier isRateLimit_Action_ActionSpecifier `protobuf_oneof:"action_specifier"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimit_Action) Reset() { *x = RateLimit_Action{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimit_Action) String() string { @@ -3553,8 +3586,8 @@ func (x *RateLimit_Action) String() string { func (*RateLimit_Action) ProtoMessage() {} func (x *RateLimit_Action) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[33] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[34] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3569,51 +3602,63 @@ func (*RateLimit_Action) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDescGZIP(), []int{13, 0} } -func (m *RateLimit_Action) GetActionSpecifier() isRateLimit_Action_ActionSpecifier { - if m != nil { - return m.ActionSpecifier +func (x *RateLimit_Action) GetActionSpecifier() isRateLimit_Action_ActionSpecifier { + if x != nil { + return x.ActionSpecifier } return nil } func (x *RateLimit_Action) GetSourceCluster() *RateLimit_Action_SourceCluster { - if x, ok := x.GetActionSpecifier().(*RateLimit_Action_SourceCluster_); ok { - return x.SourceCluster + if x != nil { + if x, ok := x.ActionSpecifier.(*RateLimit_Action_SourceCluster_); ok { + return x.SourceCluster + } } return nil } func (x *RateLimit_Action) GetDestinationCluster() *RateLimit_Action_DestinationCluster { - if x, ok := x.GetActionSpecifier().(*RateLimit_Action_DestinationCluster_); ok { - return x.DestinationCluster + if x != nil { + if x, ok := x.ActionSpecifier.(*RateLimit_Action_DestinationCluster_); ok { + return x.DestinationCluster + } } return nil } func (x *RateLimit_Action) GetRequestHeaders() *RateLimit_Action_RequestHeaders { - if x, ok := x.GetActionSpecifier().(*RateLimit_Action_RequestHeaders_); ok { - return x.RequestHeaders + if x != nil { + if x, ok := x.ActionSpecifier.(*RateLimit_Action_RequestHeaders_); ok { + return x.RequestHeaders + } } return nil } func (x *RateLimit_Action) GetRemoteAddress() *RateLimit_Action_RemoteAddress { - if x, ok := x.GetActionSpecifier().(*RateLimit_Action_RemoteAddress_); ok { - return x.RemoteAddress + if x != nil { + if x, ok := x.ActionSpecifier.(*RateLimit_Action_RemoteAddress_); ok { + return x.RemoteAddress + } } return nil } func (x *RateLimit_Action) GetGenericKey() *RateLimit_Action_GenericKey { - if x, ok := x.GetActionSpecifier().(*RateLimit_Action_GenericKey_); ok { - return x.GenericKey + if x != nil { + if x, ok := x.ActionSpecifier.(*RateLimit_Action_GenericKey_); ok { + return x.GenericKey + } } return nil } func (x *RateLimit_Action) GetHeaderValueMatch() *RateLimit_Action_HeaderValueMatch { - if x, ok := x.GetActionSpecifier().(*RateLimit_Action_HeaderValueMatch_); ok { - return x.HeaderValueMatch + if x != nil { + if x, ok := x.ActionSpecifier.(*RateLimit_Action_HeaderValueMatch_); ok { + return x.HeaderValueMatch + } } return nil } @@ -3667,23 +3712,23 @@ func (*RateLimit_Action_HeaderValueMatch_) isRateLimit_Action_ActionSpecifier() // The following descriptor entry is appended to the descriptor: // // ``` -// ("source_cluster", "") +// +// ("source_cluster", "") +// // ``` // -// is derived from the :option:`--service-cluster` option. +// is derived from the `--service-cluster` option. type RateLimit_Action_SourceCluster struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimit_Action_SourceCluster) Reset() { *x = RateLimit_Action_SourceCluster{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimit_Action_SourceCluster) String() string { @@ -3693,8 +3738,8 @@ func (x *RateLimit_Action_SourceCluster) String() string { func (*RateLimit_Action_SourceCluster) ProtoMessage() {} func (x *RateLimit_Action_SourceCluster) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[34] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[35] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3712,32 +3757,32 @@ func (*RateLimit_Action_SourceCluster) Descriptor() ([]byte, []int) { // The following descriptor entry is appended to the descriptor: // // ``` -// ("destination_cluster", "") +// +// ("destination_cluster", "") +// // ``` // // Once a request matches against a route table rule, a routed cluster is determined by one of // the following `route table configuration (envoy_api_msg_RouteConfiguration)` // settings: // -// * `cluster (envoy_api_field_route.RouteAction.cluster)` indicates the upstream cluster -// to route to. -// * `weighted_clusters (envoy_api_field_route.RouteAction.weighted_clusters)` -// chooses a cluster randomly from a set of clusters with attributed weight. -// * `cluster_header (envoy_api_field_route.RouteAction.cluster_header)` indicates which -// header in the request contains the target cluster. +// - `cluster (envoy_api_field_route.RouteAction.cluster)` indicates the upstream cluster +// to route to. +// - `weighted_clusters (envoy_api_field_route.RouteAction.weighted_clusters)` +// chooses a cluster randomly from a set of clusters with attributed weight. +// - `cluster_header (envoy_api_field_route.RouteAction.cluster_header)` indicates which +// header in the request contains the target cluster. type RateLimit_Action_DestinationCluster struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimit_Action_DestinationCluster) Reset() { *x = RateLimit_Action_DestinationCluster{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimit_Action_DestinationCluster) String() string { @@ -3747,8 +3792,8 @@ func (x *RateLimit_Action_DestinationCluster) String() string { func (*RateLimit_Action_DestinationCluster) ProtoMessage() {} func (x *RateLimit_Action_DestinationCluster) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[36] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3767,28 +3812,27 @@ func (*RateLimit_Action_DestinationCluster) Descriptor() ([]byte, []int) { // *header_name*: // // ``` -// ("", "") +// +// ("", "") +// // ``` type RateLimit_Action_RequestHeaders struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The header name to be queried from the request headers. The header’s // value is used to populate the value of the descriptor entry for the // descriptor_key. HeaderName string `protobuf:"bytes,1,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"` // The key to use in the descriptor entry. DescriptorKey string `protobuf:"bytes,2,opt,name=descriptor_key,json=descriptorKey,proto3" json:"descriptor_key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimit_Action_RequestHeaders) Reset() { *x = RateLimit_Action_RequestHeaders{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimit_Action_RequestHeaders) String() string { @@ -3798,8 +3842,8 @@ func (x *RateLimit_Action_RequestHeaders) String() string { func (*RateLimit_Action_RequestHeaders) ProtoMessage() {} func (x *RateLimit_Action_RequestHeaders) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[37] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3832,21 +3876,21 @@ func (x *RateLimit_Action_RequestHeaders) GetDescriptorKey() string { // trusted address from `x-forwarded-for (config_http_conn_man_headers_x-forwarded-for)`: // // ``` -// ("remote_address", "") +// +// ("remote_address", "") +// // ``` type RateLimit_Action_RemoteAddress struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimit_Action_RemoteAddress) Reset() { *x = RateLimit_Action_RemoteAddress{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimit_Action_RemoteAddress) String() string { @@ -3856,8 +3900,8 @@ func (x *RateLimit_Action_RemoteAddress) String() string { func (*RateLimit_Action_RemoteAddress) ProtoMessage() {} func (x *RateLimit_Action_RemoteAddress) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[37] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[38] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3875,24 +3919,23 @@ func (*RateLimit_Action_RemoteAddress) Descriptor() ([]byte, []int) { // The following descriptor entry is appended to the descriptor: // // ``` -// ("generic_key", "") +// +// ("generic_key", "") +// // ``` type RateLimit_Action_GenericKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The value to use in the descriptor entry. DescriptorValue string `protobuf:"bytes,1,opt,name=descriptor_value,json=descriptorValue,proto3" json:"descriptor_value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimit_Action_GenericKey) Reset() { *x = RateLimit_Action_GenericKey{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimit_Action_GenericKey) String() string { @@ -3902,8 +3945,8 @@ func (x *RateLimit_Action_GenericKey) String() string { func (*RateLimit_Action_GenericKey) ProtoMessage() {} func (x *RateLimit_Action_GenericKey) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[38] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[39] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3928,35 +3971,34 @@ func (x *RateLimit_Action_GenericKey) GetDescriptorValue() string { // The following descriptor entry is appended to the descriptor: // // ``` -// ("header_match", "") +// +// ("header_match", "") +// // ``` type RateLimit_Action_HeaderValueMatch struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The value to use in the descriptor entry. DescriptorValue string `protobuf:"bytes,1,opt,name=descriptor_value,json=descriptorValue,proto3" json:"descriptor_value,omitempty"` // If set to true, the action will append a descriptor entry when the // request matches the headers. If set to false, the action will append a // descriptor entry when the request does not match the headers. The // default value is true. - ExpectMatch *wrappers.BoolValue `protobuf:"bytes,2,opt,name=expect_match,json=expectMatch,proto3" json:"expect_match,omitempty"` + ExpectMatch *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=expect_match,json=expectMatch,proto3" json:"expect_match,omitempty"` // Specifies a set of headers that the rate limit action should match // on. The action will check the request’s headers against all the // specified headers in the config. A match will happen if all the // headers in the config are present in the request with the same values // (or based on presence if the value field is not in the config). - Headers []*HeaderMatcher `protobuf:"bytes,3,rep,name=headers,proto3" json:"headers,omitempty"` + Headers []*HeaderMatcher `protobuf:"bytes,3,rep,name=headers,proto3" json:"headers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimit_Action_HeaderValueMatch) Reset() { *x = RateLimit_Action_HeaderValueMatch{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimit_Action_HeaderValueMatch) String() string { @@ -3966,8 +4008,8 @@ func (x *RateLimit_Action_HeaderValueMatch) String() string { func (*RateLimit_Action_HeaderValueMatch) ProtoMessage() {} func (x *RateLimit_Action_HeaderValueMatch) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[39] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[40] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3989,7 +4031,7 @@ func (x *RateLimit_Action_HeaderValueMatch) GetDescriptorValue() string { return "" } -func (x *RateLimit_Action_HeaderValueMatch) GetExpectMatch() *wrappers.BoolValue { +func (x *RateLimit_Action_HeaderValueMatch) GetExpectMatch() *wrapperspb.BoolValue { if x != nil { return x.ExpectMatch } @@ -4005,7 +4047,7 @@ func (x *RateLimit_Action_HeaderValueMatch) GetHeaders() []*HeaderMatcher { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDesc = string([]byte{ 0x0a, 0x52, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -4287,529 +4329,537 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_ 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, - 0x08, 0x07, 0x10, 0x08, 0x22, 0xac, 0x04, 0x0a, 0x0a, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, + 0x08, 0x07, 0x10, 0x08, 0x22, 0xa0, 0x05, 0x0a, 0x0a, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x18, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x14, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x28, 0x80, 0x08, 0x48, 0x00, 0x52, 0x05, - 0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x41, 0x0a, 0x0e, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65, - 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x63, 0x61, 0x73, 0x65, 0x53, - 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x5e, 0x0a, 0x10, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x5f, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, - 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x5c, 0x0a, - 0x10, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, - 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x0f, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x50, 0x0a, 0x04, 0x67, - 0x72, 0x70, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x04, 0x67, 0x72, 0x70, 0x63, 0x1a, 0x17, 0x0a, - 0x15, 0x47, 0x72, 0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x15, 0x0a, 0x0e, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x73, - 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x4a, 0x04, 0x08, - 0x05, 0x10, 0x06, 0x22, 0xca, 0x04, 0x0a, 0x0a, 0x43, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72, 0x69, 0x67, - 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, - 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x3b, 0x0a, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, - 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x08, 0x20, 0x03, 0x28, - 0x09, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x92, 0x01, 0x07, 0x22, 0x05, 0x72, 0x03, 0x28, 0x80, 0x08, - 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x67, - 0x65, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, - 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, - 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, - 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x41, 0x67, 0x65, 0x12, 0x47, 0x0a, 0x11, - 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3a, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x12, 0x5c, 0x0a, 0x0e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x60, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, + 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x0e, 0x63, 0x61, 0x73, 0x65, 0x5f, + 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x63, 0x61, 0x73, + 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x5e, 0x0a, 0x10, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x0a, 0x07, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, + 0x5c, 0x0a, 0x10, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x48, 0x00, - 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, - 0x5a, 0x0a, 0x0e, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0d, 0x73, 0x68, - 0x61, 0x64, 0x6f, 0x77, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x22, 0xaf, 0x16, 0x0a, 0x0b, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x23, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x5a, 0x0a, 0x11, 0x77, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, - 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, - 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, - 0x00, 0x52, 0x10, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x73, 0x12, 0x93, 0x01, 0x0a, 0x1f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, - 0x6e, 0x6f, 0x74, 0x5f, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x43, 0x2e, + 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x0f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x50, 0x0a, + 0x04, 0x67, 0x72, 0x70, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x04, 0x67, 0x72, 0x70, 0x63, 0x1a, + 0x10, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x72, 0x1a, 0x17, 0x0a, 0x15, 0x47, 0x72, 0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x15, 0x0a, 0x0e, 0x70, 0x61, + 0x74, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, + 0x01, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0xca, 0x04, 0x0a, 0x0a, 0x43, 0x6f, 0x72, 0x73, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, + 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x3b, 0x0a, 0x12, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, + 0x08, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x92, 0x01, 0x07, 0x22, 0x05, 0x72, + 0x03, 0x28, 0x80, 0x08, 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x69, 0x67, 0x69, + 0x6e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x61, + 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x41, 0x67, 0x65, + 0x12, 0x47, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, + 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3a, 0x0a, 0x07, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, + 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x07, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x5c, 0x0a, 0x0e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, - 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, - 0x64, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x1b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x4a, 0x0a, 0x0e, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, - 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, - 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, - 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0c, - 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x68, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, - 0x65, 0x12, 0x48, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, - 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, - 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x01, 0x52, 0x0f, 0x61, 0x75, 0x74, 0x6f, - 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x18, 0x61, - 0x75, 0x74, 0x6f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, - 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, - 0x15, 0x61, 0x75, 0x74, 0x6f, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x3c, 0x0a, 0x0c, 0x69, - 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x64, - 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x4a, 0x0a, 0x0c, 0x72, 0x65, 0x74, - 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x27, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x74, - 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x6f, 0x0a, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, - 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, - 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x52, 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x46, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x46, - 0x0a, 0x0b, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x0d, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x12, 0x5a, 0x0a, 0x0e, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, + 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, + 0x52, 0x0d, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, + 0x13, 0x0a, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x22, 0xaf, 0x16, 0x0a, 0x0b, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x48, 0x00, + 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x0e, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x5a, 0x0a, 0x11, 0x77, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x10, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x93, 0x01, 0x0a, 0x1f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x72, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x43, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x1b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x4a, 0x0a, + 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x12, 0x23, 0x0a, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x68, 0x6f, 0x73, 0x74, 0x52, 0x65, + 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x68, 0x6f, + 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x01, 0x52, 0x0f, + 0x61, 0x75, 0x74, 0x6f, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, + 0x39, 0x0a, 0x18, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x1d, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x01, 0x52, 0x15, 0x61, 0x75, 0x74, 0x6f, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, + 0x3c, 0x0a, 0x0c, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, + 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0b, 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x4a, 0x0a, + 0x0c, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x0a, 0x72, 0x61, 0x74, 0x65, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x16, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, - 0x65, 0x5f, 0x76, 0x68, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x56, 0x68, 0x52, 0x61, 0x74, - 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x53, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x68, 0x5f, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0b, 0x72, 0x65, + 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x6f, 0x0a, 0x15, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, + 0x72, 0x72, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x46, 0x0a, 0x08, 0x70, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x52, 0x0a, 0x68, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3a, 0x0a, 0x04, - 0x63, 0x6f, 0x72, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x52, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x12, 0x43, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, - 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x17, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6d, - 0x61, 0x78, 0x47, 0x72, 0x70, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x49, 0x0a, - 0x13, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x67, 0x72, 0x70, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x5e, 0x0a, 0x0f, 0x75, 0x70, 0x67, 0x72, - 0x61, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x19, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, + 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, + 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x12, 0x46, 0x0a, 0x0b, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x0a, + 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x16, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x76, 0x68, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, + 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x56, + 0x68, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x53, 0x0a, 0x0b, 0x68, + 0x61, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0a, 0x68, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x12, 0x3a, 0x0a, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x72, 0x73, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x12, 0x43, 0x0a, 0x10, + 0x6d, 0x61, 0x78, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x47, 0x72, 0x70, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x12, 0x49, 0x0a, 0x13, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x67, 0x72, 0x70, 0x63, 0x54, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x5e, 0x0a, 0x0f, + 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, + 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, + 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x75, 0x70, + 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x78, 0x0a, 0x18, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, + 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x0c, 0x68, 0x65, 0x64, 0x67, 0x65, 0x5f, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x64, 0x67, 0x65, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0b, 0x68, 0x65, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x1a, 0xbd, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, + 0x72, 0x72, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x21, 0x0a, 0x07, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x20, 0x01, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, + 0x0b, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4b, + 0x65, 0x79, 0x12, 0x5e, 0x0a, 0x10, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x66, 0x72, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x52, 0x0f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x1a, 0xbc, 0x04, 0x0a, 0x0a, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x12, 0x53, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x39, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x70, 0x67, 0x72, 0x61, - 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x78, 0x0a, 0x18, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x0c, 0x68, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x52, 0x0b, 0x68, 0x65, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0xbd, - 0x01, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x21, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, - 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0b, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, - 0x18, 0x01, 0x52, 0x0a, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x5e, - 0x0a, 0x10, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xbc, - 0x04, 0x0a, 0x0a, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x53, 0x0a, - 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x12, 0x53, 0x0a, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, - 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x48, 0x00, 0x52, - 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x7e, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x53, 0x0a, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x48, - 0x00, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, - 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x72, 0x6d, 0x69, - 0x6e, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, 0x65, 0x72, 0x6d, 0x69, - 0x6e, 0x61, 0x6c, 0x1a, 0x32, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x28, 0x0a, - 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x0a, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x66, 0x0a, 0x06, 0x43, 0x6f, 0x6f, 0x6b, 0x69, - 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2b, - 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x1a, - 0x33, 0x0a, 0x14, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, - 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x49, 0x70, 0x42, 0x17, 0x0a, 0x10, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x73, - 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x1a, 0x68, 0x0a, - 0x0d, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, - 0x0a, 0x0c, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x34, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x45, 0x0a, 0x1b, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, - 0x45, 0x5f, 0x55, 0x4e, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x00, 0x12, - 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x22, 0x5a, - 0x0a, 0x16, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x41, 0x53, 0x53, - 0x5f, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, - 0x4c, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, - 0x48, 0x41, 0x4e, 0x44, 0x4c, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, - 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x01, 0x42, 0x18, 0x0a, 0x11, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, - 0x03, 0xf8, 0x42, 0x01, 0x42, 0x18, 0x0a, 0x16, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, - 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4a, 0x04, - 0x08, 0x0c, 0x10, 0x0d, 0x4a, 0x04, 0x08, 0x12, 0x10, 0x13, 0x4a, 0x04, 0x08, 0x13, 0x10, 0x14, - 0x4a, 0x04, 0x08, 0x10, 0x10, 0x11, 0x4a, 0x04, 0x08, 0x16, 0x10, 0x17, 0x4a, 0x04, 0x08, 0x15, - 0x10, 0x16, 0x22, 0xd4, 0x08, 0x0a, 0x0b, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x79, 0x4f, 0x6e, 0x12, 0x3d, 0x0a, - 0x0b, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0a, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x0f, - 0x70, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0d, 0x70, 0x65, 0x72, 0x54, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, - 0x5c, 0x0a, 0x0e, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, - 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x0d, - 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x6c, 0x0a, - 0x14, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x64, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x73, 0x6f, + 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x43, 0x6f, 0x6f, 0x6b, 0x69, + 0x65, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x7e, 0x0a, 0x15, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, + 0x69, 0x65, 0x73, 0x48, 0x00, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x74, + 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, + 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x1a, 0x32, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x12, 0x28, 0x0a, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, + 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x66, 0x0a, 0x06, 0x43, + 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, + 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, + 0x61, 0x74, 0x68, 0x1a, 0x33, 0x0a, 0x14, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x70, 0x42, 0x17, 0x0a, 0x10, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, + 0x01, 0x1a, 0x68, 0x0a, 0x0d, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x45, 0x0a, 0x1b, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x45, + 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, + 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, + 0x10, 0x01, 0x22, 0x5a, 0x0a, 0x16, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x1e, + 0x50, 0x41, 0x53, 0x53, 0x5f, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x5f, 0x49, 0x4e, 0x54, + 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x00, + 0x12, 0x1c, 0x0a, 0x18, 0x48, 0x41, 0x4e, 0x44, 0x4c, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, + 0x4e, 0x41, 0x4c, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x01, 0x42, 0x18, + 0x0a, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x42, 0x18, 0x0a, 0x16, 0x68, 0x6f, 0x73, 0x74, + 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x4a, 0x04, 0x08, 0x12, 0x10, 0x13, 0x4a, 0x04, + 0x08, 0x13, 0x10, 0x14, 0x4a, 0x04, 0x08, 0x10, 0x10, 0x11, 0x4a, 0x04, 0x08, 0x16, 0x10, 0x17, + 0x4a, 0x04, 0x08, 0x15, 0x10, 0x16, 0x22, 0xd4, 0x08, 0x0a, 0x0b, 0x52, 0x65, 0x74, 0x72, 0x79, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x79, 0x4f, + 0x6e, 0x12, 0x3d, 0x0a, 0x0b, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x12, 0x41, 0x0a, 0x0f, 0x70, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x54, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x12, 0x5c, 0x0a, 0x0e, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x72, 0x69, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x48, 0x6f, 0x73, 0x74, 0x50, 0x72, - 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x12, 0x72, 0x65, 0x74, 0x72, 0x79, 0x48, 0x6f, - 0x73, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x48, 0x0a, 0x21, 0x68, - 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, - 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1d, 0x68, 0x6f, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x4d, 0x61, 0x78, 0x41, 0x74, 0x74, - 0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x72, 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x14, 0x72, 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x0e, 0x72, - 0x65, 0x74, 0x72, 0x79, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6f, 0x66, 0x66, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, - 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x74, - 0x72, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x4f, 0x66, 0x66, 0x52, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x79, - 0x42, 0x61, 0x63, 0x6b, 0x4f, 0x66, 0x66, 0x1a, 0xa9, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x72, - 0x79, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, - 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x0a, 0x0c, 0x74, 0x79, 0x70, - 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x64, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0d, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x1a, 0xae, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x74, 0x72, 0x79, 0x48, 0x6f, 0x73, - 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, - 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x0a, 0x0c, 0x74, 0x79, - 0x70, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x64, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0d, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x1a, 0xa2, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x74, 0x72, 0x79, 0x42, 0x61, - 0x63, 0x6b, 0x4f, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x0d, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0xaa, 0x01, 0x04, 0x08, - 0x01, 0x2a, 0x00, 0x52, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x12, 0x46, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x2a, 0x00, 0x52, 0x0b, 0x6d, 0x61, - 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xfa, 0x01, 0x0a, 0x0b, 0x48, 0x65, - 0x64, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x50, 0x0a, 0x10, 0x69, 0x6e, 0x69, - 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x28, 0x01, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, - 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x61, 0x0a, 0x19, 0x61, - 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, - 0x79, 0x70, 0x65, 0x2e, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, - 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x17, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x36, - 0x0a, 0x18, 0x68, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x74, - 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x14, 0x68, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x50, 0x65, 0x72, 0x54, 0x72, 0x79, 0x54, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xbe, 0x04, 0x0a, 0x0e, 0x52, 0x65, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0e, 0x68, 0x74, 0x74, - 0x70, 0x73, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x48, 0x00, 0x52, 0x0d, 0x68, 0x74, 0x74, 0x70, 0x73, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x12, 0x29, 0x0a, 0x0f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x64, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x65, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x23, 0x0a, - 0x0d, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x70, 0x6f, 0x72, 0x74, 0x52, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x25, 0x0a, 0x0d, 0x70, 0x61, 0x74, 0x68, 0x5f, - 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x27, - 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, - 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x6e, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x70, - 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x74, - 0x72, 0x69, 0x70, 0x51, 0x75, 0x65, 0x72, 0x79, 0x22, 0x77, 0x0a, 0x14, 0x52, 0x65, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x41, 0x4e, - 0x45, 0x4e, 0x54, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x4f, 0x55, 0x4e, 0x44, - 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x45, 0x45, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, - 0x02, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x45, 0x4d, 0x50, 0x4f, 0x52, 0x41, 0x52, 0x59, 0x5f, 0x52, - 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x45, 0x52, - 0x4d, 0x41, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, - 0x04, 0x42, 0x1a, 0x0a, 0x18, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x77, 0x72, - 0x69, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x18, 0x0a, - 0x16, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x70, - 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x75, 0x0a, 0x14, 0x44, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x22, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x10, 0xd8, 0x04, 0x28, 0x64, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, - 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x61, - 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x32, - 0x0a, 0x09, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x09, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0xfb, 0x01, 0x0a, 0x07, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x4e, - 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, - 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x46, 0x72, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0e, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x4e, - 0x0a, 0x0f, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x46, 0x72, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0e, - 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x50, - 0x0a, 0x10, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, - 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x46, 0x72, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, - 0x0f, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, - 0x22, 0x95, 0x01, 0x0a, 0x0e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x20, 0x01, 0x28, 0x80, 0x08, - 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x8d, 0x0a, 0x0a, 0x09, 0x52, 0x61, 0x74, - 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x0a, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6b, - 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x4b, 0x65, 0x79, 0x12, 0x50, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x07, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xcf, 0x08, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x63, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x52, 0x0d, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x12, 0x6c, 0x0a, 0x14, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, + 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x3a, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x74, + 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x48, 0x6f, + 0x73, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x12, 0x72, 0x65, 0x74, + 0x72, 0x79, 0x48, 0x6f, 0x73, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, + 0x48, 0x0a, 0x21, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x74, 0x74, 0x65, + 0x6d, 0x70, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1d, 0x68, 0x6f, 0x73, 0x74, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x4d, 0x61, + 0x78, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x72, 0x65, 0x74, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, + 0x64, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x14, 0x72, 0x65, 0x74, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, + 0x5a, 0x0a, 0x0e, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6f, 0x66, + 0x66, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x4f, 0x66, 0x66, 0x52, 0x0c, 0x72, + 0x65, 0x74, 0x72, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x4f, 0x66, 0x66, 0x1a, 0xa9, 0x01, 0x0a, 0x0d, + 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x0a, + 0x0c, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x79, 0x70, + 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0d, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x1a, 0xae, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x74, 0x72, + 0x79, 0x48, 0x6f, 0x73, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1b, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, + 0x0a, 0x0c, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x79, + 0x70, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0d, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x1a, 0xa2, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x74, + 0x72, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x4f, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x0d, 0x62, 0x61, 0x73, + 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0xfa, 0x42, 0x07, + 0xaa, 0x01, 0x04, 0x08, 0x01, 0x2a, 0x00, 0x52, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x46, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x2a, 0x00, + 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xfa, 0x01, + 0x0a, 0x0b, 0x48, 0x65, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x50, 0x0a, + 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x28, 0x01, 0x52, 0x0f, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, + 0x61, 0x0a, 0x19, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x17, 0x61, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, + 0x63, 0x65, 0x12, 0x36, 0x0a, 0x18, 0x68, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x70, + 0x65, 0x72, 0x5f, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x68, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x50, 0x65, 0x72, + 0x54, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xbe, 0x04, 0x0a, 0x0e, 0x52, + 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, + 0x0e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0d, 0x68, 0x74, 0x74, 0x70, 0x73, 0x52, 0x65, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x29, 0x0a, 0x0f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, + 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x0e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x52, 0x65, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, + 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x70, + 0x6f, 0x72, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x25, 0x0a, 0x0d, 0x70, + 0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x12, 0x27, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x72, 0x65, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0d, 0x70, 0x72, + 0x65, 0x66, 0x69, 0x78, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x6e, 0x0a, 0x0d, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x3f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, + 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, + 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, + 0x6f, 0x64, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, + 0x74, 0x72, 0x69, 0x70, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0a, 0x73, 0x74, 0x72, 0x69, 0x70, 0x51, 0x75, 0x65, 0x72, 0x79, 0x22, 0x77, 0x0a, 0x14, + 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x5f, 0x50, 0x45, + 0x52, 0x4d, 0x41, 0x4e, 0x45, 0x4e, 0x54, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x46, + 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x45, 0x45, 0x5f, 0x4f, 0x54, + 0x48, 0x45, 0x52, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x45, 0x4d, 0x50, 0x4f, 0x52, 0x41, + 0x52, 0x59, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x03, 0x12, 0x16, 0x0a, + 0x12, 0x50, 0x45, 0x52, 0x4d, 0x41, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, + 0x45, 0x43, 0x54, 0x10, 0x04, 0x42, 0x1a, 0x0a, 0x18, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x5f, + 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x42, 0x18, 0x0a, 0x16, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, + 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x75, 0x0a, 0x14, 0x44, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x10, 0xd8, 0x04, 0x28, 0x64, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x04, 0x62, 0x6f, + 0x64, 0x79, 0x22, 0x32, 0x0a, 0x09, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, + 0x25, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x09, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xfb, 0x01, 0x0a, 0x07, 0x54, 0x72, 0x61, 0x63, 0x69, + 0x6e, 0x67, 0x12, 0x4e, 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x61, 0x6d, + 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, + 0x2e, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, + 0x6e, 0x74, 0x52, 0x0e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, + 0x6e, 0x67, 0x12, 0x4e, 0x0a, 0x0f, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x5f, 0x73, 0x61, 0x6d, + 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, + 0x2e, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, + 0x6e, 0x74, 0x52, 0x0e, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, + 0x6e, 0x67, 0x12, 0x50, 0x0a, 0x10, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x61, + 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, + 0x65, 0x2e, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, + 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x53, 0x61, 0x6d, 0x70, + 0x6c, 0x69, 0x6e, 0x67, 0x22, 0x95, 0x01, 0x0a, 0x0e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x20, + 0x01, 0x28, 0x80, 0x08, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x1b, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x06, 0x6d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x8d, 0x0a, 0x0a, + 0x09, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3b, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, + 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x0a, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x50, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x72, 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, - 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x66, 0x0a, 0x0f, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, + 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, + 0x01, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xcf, 0x08, 0x0a, 0x06, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x63, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x72, 0x0a, 0x13, 0x64, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x12, 0x64, 0x65, 0x73, 0x74, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x66, + 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x63, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x5a, 0x0a, 0x0b, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x37, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, + 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x6d, 0x0a, 0x12, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x12, 0x63, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x5a, 0x0a, 0x0b, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x69, 0x63, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, - 0x4b, 0x65, 0x79, 0x12, 0x6d, 0x0a, 0x12, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x3d, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, - 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x48, 0x00, - 0x52, 0x10, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x1a, 0x0f, 0x0a, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x1a, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x6a, 0x0a, 0x0e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x0b, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x0e, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x6f, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x0d, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x6f, 0x72, 0x4b, 0x65, 0x79, 0x1a, 0x0f, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0x40, 0x0a, 0x0a, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, - 0x63, 0x4b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x6f, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0xd4, 0x01, 0x0a, 0x10, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x32, 0x0a, - 0x10, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, - 0x52, 0x0f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, - 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x12, 0x4d, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, - 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x48, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x42, - 0x17, 0x0a, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0x8b, 0x03, 0x0a, 0x0d, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, - 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x65, 0x78, 0x61, 0x63, 0x74, - 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, - 0x65, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x2b, 0x0a, 0x0b, 0x72, 0x65, - 0x67, 0x65, 0x78, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x28, 0x80, 0x08, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x67, - 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x41, 0x0a, 0x0b, 0x72, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, - 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0a, - 0x72, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x25, 0x0a, 0x0d, 0x70, 0x72, - 0x65, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x08, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x12, 0x2c, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6d, 0x61, 0x74, 0x63, - 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, - 0x48, 0x00, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, - 0x2c, 0x0a, 0x0c, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x48, 0x00, - 0x52, 0x0b, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x21, 0x0a, - 0x0c, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x42, 0x18, 0x0a, 0x16, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, - 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x7f, 0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, - 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, - 0x42, 0x07, 0x72, 0x05, 0x20, 0x01, 0x28, 0x80, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x42, 0x92, 0x01, 0x0a, 0x28, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x48, 0x00, 0x52, 0x10, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x1a, 0x0f, 0x0a, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x6a, 0x0a, + 0x0e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, + 0x28, 0x0a, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x0a, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x0e, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x0d, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x4b, 0x65, 0x79, 0x1a, 0x0f, 0x0a, 0x0d, 0x52, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0x40, 0x0a, 0x0a, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x0f, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0xd4, 0x01, 0x0a, + 0x10, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x12, 0x32, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x20, 0x01, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x5f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, + 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x12, 0x4d, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x42, 0x17, 0x0a, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0x8b, 0x03, 0x0a, + 0x0d, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x1b, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x65, + 0x78, 0x61, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x0a, 0x65, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x2b, + 0x0a, 0x0b, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x28, 0x80, 0x08, 0x48, 0x00, 0x52, + 0x0a, 0x72, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x41, 0x0a, 0x0b, 0x72, + 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x48, 0x00, 0x52, 0x0a, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x25, + 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x2c, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x20, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x12, 0x2c, 0x0a, 0x0c, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x5f, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x20, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x42, 0x18, 0x0a, 0x16, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4a, 0x04, + 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x7f, 0x0a, 0x15, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x20, 0x01, 0x28, 0x80, 0x08, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x72, 0x65, 0x67, + 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x42, 0x96, 0x01, 0xb8, 0xf5, + 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x0a, 0x28, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x42, 0x0a, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, @@ -4818,25 +4868,24 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_ 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x72, 0x6f, 0x75, 0x74, - 0x65, 0x88, 0x01, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} + 0x65, 0x88, 0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes = make([]protoimpl.MessageInfo, 40) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes = make([]protoimpl.MessageInfo, 41) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_goTypes = []any{ (VirtualHost_TlsRequirementType)(0), // 0: solo.io.envoy.api.v2.route.VirtualHost.TlsRequirementType (RouteAction_ClusterNotFoundResponseCode)(0), // 1: solo.io.envoy.api.v2.route.RouteAction.ClusterNotFoundResponseCode (RouteAction_InternalRedirectAction)(0), // 2: solo.io.envoy.api.v2.route.RouteAction.InternalRedirectAction @@ -4864,44 +4913,45 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_ (*WeightedCluster_ClusterWeight)(nil), // 24: solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight nil, // 25: solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight.PerFilterConfigEntry nil, // 26: solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntry - (*RouteMatch_GrpcRouteMatchOptions)(nil), // 27: solo.io.envoy.api.v2.route.RouteMatch.GrpcRouteMatchOptions - (*RouteAction_RequestMirrorPolicy)(nil), // 28: solo.io.envoy.api.v2.route.RouteAction.RequestMirrorPolicy - (*RouteAction_HashPolicy)(nil), // 29: solo.io.envoy.api.v2.route.RouteAction.HashPolicy - (*RouteAction_UpgradeConfig)(nil), // 30: solo.io.envoy.api.v2.route.RouteAction.UpgradeConfig - (*RouteAction_HashPolicy_Header)(nil), // 31: solo.io.envoy.api.v2.route.RouteAction.HashPolicy.Header - (*RouteAction_HashPolicy_Cookie)(nil), // 32: solo.io.envoy.api.v2.route.RouteAction.HashPolicy.Cookie - (*RouteAction_HashPolicy_ConnectionProperties)(nil), // 33: solo.io.envoy.api.v2.route.RouteAction.HashPolicy.ConnectionProperties - (*RetryPolicy_RetryPriority)(nil), // 34: solo.io.envoy.api.v2.route.RetryPolicy.RetryPriority - (*RetryPolicy_RetryHostPredicate)(nil), // 35: solo.io.envoy.api.v2.route.RetryPolicy.RetryHostPredicate - (*RetryPolicy_RetryBackOff)(nil), // 36: solo.io.envoy.api.v2.route.RetryPolicy.RetryBackOff - (*RateLimit_Action)(nil), // 37: solo.io.envoy.api.v2.route.RateLimit.Action - (*RateLimit_Action_SourceCluster)(nil), // 38: solo.io.envoy.api.v2.route.RateLimit.Action.SourceCluster - (*RateLimit_Action_DestinationCluster)(nil), // 39: solo.io.envoy.api.v2.route.RateLimit.Action.DestinationCluster - (*RateLimit_Action_RequestHeaders)(nil), // 40: solo.io.envoy.api.v2.route.RateLimit.Action.RequestHeaders - (*RateLimit_Action_RemoteAddress)(nil), // 41: solo.io.envoy.api.v2.route.RateLimit.Action.RemoteAddress - (*RateLimit_Action_GenericKey)(nil), // 42: solo.io.envoy.api.v2.route.RateLimit.Action.GenericKey - (*RateLimit_Action_HeaderValueMatch)(nil), // 43: solo.io.envoy.api.v2.route.RateLimit.Action.HeaderValueMatch - (*core.HeaderValueOption)(nil), // 44: solo.io.envoy.api.v2.core.HeaderValueOption - (*core.Metadata)(nil), // 45: solo.io.envoy.api.v2.core.Metadata - (*wrappers.UInt32Value)(nil), // 46: google.protobuf.UInt32Value - (*wrappers.BoolValue)(nil), // 47: google.protobuf.BoolValue - (*core.RuntimeFractionalPercent)(nil), // 48: solo.io.envoy.api.v2.core.RuntimeFractionalPercent - (*duration.Duration)(nil), // 49: google.protobuf.Duration - (core.RoutingPriority)(0), // 50: solo.io.envoy.api.v2.core.RoutingPriority - (*_type.FractionalPercent)(nil), // 51: solo.io.envoy.type.FractionalPercent - (*core.DataSource)(nil), // 52: solo.io.envoy.api.v2.core.DataSource - (core.RequestMethod)(0), // 53: solo.io.envoy.api.v2.core.RequestMethod - (*_type1.Int64Range)(nil), // 54: solo.io.envoy.type.Int64Range - (*_struct.Struct)(nil), // 55: google.protobuf.Struct - (*any.Any)(nil), // 56: google.protobuf.Any + (*RouteMatch_ConnectMatcher)(nil), // 27: solo.io.envoy.api.v2.route.RouteMatch.ConnectMatcher + (*RouteMatch_GrpcRouteMatchOptions)(nil), // 28: solo.io.envoy.api.v2.route.RouteMatch.GrpcRouteMatchOptions + (*RouteAction_RequestMirrorPolicy)(nil), // 29: solo.io.envoy.api.v2.route.RouteAction.RequestMirrorPolicy + (*RouteAction_HashPolicy)(nil), // 30: solo.io.envoy.api.v2.route.RouteAction.HashPolicy + (*RouteAction_UpgradeConfig)(nil), // 31: solo.io.envoy.api.v2.route.RouteAction.UpgradeConfig + (*RouteAction_HashPolicy_Header)(nil), // 32: solo.io.envoy.api.v2.route.RouteAction.HashPolicy.Header + (*RouteAction_HashPolicy_Cookie)(nil), // 33: solo.io.envoy.api.v2.route.RouteAction.HashPolicy.Cookie + (*RouteAction_HashPolicy_ConnectionProperties)(nil), // 34: solo.io.envoy.api.v2.route.RouteAction.HashPolicy.ConnectionProperties + (*RetryPolicy_RetryPriority)(nil), // 35: solo.io.envoy.api.v2.route.RetryPolicy.RetryPriority + (*RetryPolicy_RetryHostPredicate)(nil), // 36: solo.io.envoy.api.v2.route.RetryPolicy.RetryHostPredicate + (*RetryPolicy_RetryBackOff)(nil), // 37: solo.io.envoy.api.v2.route.RetryPolicy.RetryBackOff + (*RateLimit_Action)(nil), // 38: solo.io.envoy.api.v2.route.RateLimit.Action + (*RateLimit_Action_SourceCluster)(nil), // 39: solo.io.envoy.api.v2.route.RateLimit.Action.SourceCluster + (*RateLimit_Action_DestinationCluster)(nil), // 40: solo.io.envoy.api.v2.route.RateLimit.Action.DestinationCluster + (*RateLimit_Action_RequestHeaders)(nil), // 41: solo.io.envoy.api.v2.route.RateLimit.Action.RequestHeaders + (*RateLimit_Action_RemoteAddress)(nil), // 42: solo.io.envoy.api.v2.route.RateLimit.Action.RemoteAddress + (*RateLimit_Action_GenericKey)(nil), // 43: solo.io.envoy.api.v2.route.RateLimit.Action.GenericKey + (*RateLimit_Action_HeaderValueMatch)(nil), // 44: solo.io.envoy.api.v2.route.RateLimit.Action.HeaderValueMatch + (*core.HeaderValueOption)(nil), // 45: solo.io.envoy.api.v2.core.HeaderValueOption + (*core.Metadata)(nil), // 46: solo.io.envoy.api.v2.core.Metadata + (*wrapperspb.UInt32Value)(nil), // 47: google.protobuf.UInt32Value + (*wrapperspb.BoolValue)(nil), // 48: google.protobuf.BoolValue + (*core.RuntimeFractionalPercent)(nil), // 49: solo.io.envoy.api.v2.core.RuntimeFractionalPercent + (*durationpb.Duration)(nil), // 50: google.protobuf.Duration + (core.RoutingPriority)(0), // 51: solo.io.envoy.api.v2.core.RoutingPriority + (*_type.FractionalPercent)(nil), // 52: solo.io.envoy.type.FractionalPercent + (*core.DataSource)(nil), // 53: solo.io.envoy.api.v2.core.DataSource + (core.RequestMethod)(0), // 54: solo.io.envoy.api.v2.core.RequestMethod + (*_type1.Int64Range)(nil), // 55: solo.io.envoy.type.Int64Range + (*structpb.Struct)(nil), // 56: google.protobuf.Struct + (*anypb.Any)(nil), // 57: google.protobuf.Any } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_depIdxs = []int32{ 5, // 0: solo.io.envoy.api.v2.route.VirtualHost.routes:type_name -> solo.io.envoy.api.v2.route.Route 0, // 1: solo.io.envoy.api.v2.route.VirtualHost.require_tls:type_name -> solo.io.envoy.api.v2.route.VirtualHost.TlsRequirementType 16, // 2: solo.io.envoy.api.v2.route.VirtualHost.virtual_clusters:type_name -> solo.io.envoy.api.v2.route.VirtualCluster 17, // 3: solo.io.envoy.api.v2.route.VirtualHost.rate_limits:type_name -> solo.io.envoy.api.v2.route.RateLimit - 44, // 4: solo.io.envoy.api.v2.route.VirtualHost.request_headers_to_add:type_name -> solo.io.envoy.api.v2.core.HeaderValueOption - 44, // 5: solo.io.envoy.api.v2.route.VirtualHost.response_headers_to_add:type_name -> solo.io.envoy.api.v2.core.HeaderValueOption + 45, // 4: solo.io.envoy.api.v2.route.VirtualHost.request_headers_to_add:type_name -> solo.io.envoy.api.v2.core.HeaderValueOption + 45, // 5: solo.io.envoy.api.v2.route.VirtualHost.response_headers_to_add:type_name -> solo.io.envoy.api.v2.core.HeaderValueOption 8, // 6: solo.io.envoy.api.v2.route.VirtualHost.cors:type_name -> solo.io.envoy.api.v2.route.CorsPolicy 20, // 7: solo.io.envoy.api.v2.route.VirtualHost.per_filter_config:type_name -> solo.io.envoy.api.v2.route.VirtualHost.PerFilterConfigEntry 21, // 8: solo.io.envoy.api.v2.route.VirtualHost.typed_per_filter_config:type_name -> solo.io.envoy.api.v2.route.VirtualHost.TypedPerFilterConfigEntry @@ -4911,96 +4961,97 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_ 9, // 12: solo.io.envoy.api.v2.route.Route.route:type_name -> solo.io.envoy.api.v2.route.RouteAction 12, // 13: solo.io.envoy.api.v2.route.Route.redirect:type_name -> solo.io.envoy.api.v2.route.RedirectAction 13, // 14: solo.io.envoy.api.v2.route.Route.direct_response:type_name -> solo.io.envoy.api.v2.route.DirectResponseAction - 45, // 15: solo.io.envoy.api.v2.route.Route.metadata:type_name -> solo.io.envoy.api.v2.core.Metadata + 46, // 15: solo.io.envoy.api.v2.route.Route.metadata:type_name -> solo.io.envoy.api.v2.core.Metadata 14, // 16: solo.io.envoy.api.v2.route.Route.decorator:type_name -> solo.io.envoy.api.v2.route.Decorator 22, // 17: solo.io.envoy.api.v2.route.Route.per_filter_config:type_name -> solo.io.envoy.api.v2.route.Route.PerFilterConfigEntry 23, // 18: solo.io.envoy.api.v2.route.Route.typed_per_filter_config:type_name -> solo.io.envoy.api.v2.route.Route.TypedPerFilterConfigEntry - 44, // 19: solo.io.envoy.api.v2.route.Route.request_headers_to_add:type_name -> solo.io.envoy.api.v2.core.HeaderValueOption - 44, // 20: solo.io.envoy.api.v2.route.Route.response_headers_to_add:type_name -> solo.io.envoy.api.v2.core.HeaderValueOption + 45, // 19: solo.io.envoy.api.v2.route.Route.request_headers_to_add:type_name -> solo.io.envoy.api.v2.core.HeaderValueOption + 45, // 20: solo.io.envoy.api.v2.route.Route.response_headers_to_add:type_name -> solo.io.envoy.api.v2.core.HeaderValueOption 15, // 21: solo.io.envoy.api.v2.route.Route.tracing:type_name -> solo.io.envoy.api.v2.route.Tracing 24, // 22: solo.io.envoy.api.v2.route.WeightedCluster.clusters:type_name -> solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight - 46, // 23: solo.io.envoy.api.v2.route.WeightedCluster.total_weight:type_name -> google.protobuf.UInt32Value - 47, // 24: solo.io.envoy.api.v2.route.RouteMatch.case_sensitive:type_name -> google.protobuf.BoolValue - 48, // 25: solo.io.envoy.api.v2.route.RouteMatch.runtime_fraction:type_name -> solo.io.envoy.api.v2.core.RuntimeFractionalPercent - 18, // 26: solo.io.envoy.api.v2.route.RouteMatch.headers:type_name -> solo.io.envoy.api.v2.route.HeaderMatcher - 19, // 27: solo.io.envoy.api.v2.route.RouteMatch.query_parameters:type_name -> solo.io.envoy.api.v2.route.QueryParameterMatcher - 27, // 28: solo.io.envoy.api.v2.route.RouteMatch.grpc:type_name -> solo.io.envoy.api.v2.route.RouteMatch.GrpcRouteMatchOptions - 47, // 29: solo.io.envoy.api.v2.route.CorsPolicy.allow_credentials:type_name -> google.protobuf.BoolValue - 47, // 30: solo.io.envoy.api.v2.route.CorsPolicy.enabled:type_name -> google.protobuf.BoolValue - 48, // 31: solo.io.envoy.api.v2.route.CorsPolicy.filter_enabled:type_name -> solo.io.envoy.api.v2.core.RuntimeFractionalPercent - 48, // 32: solo.io.envoy.api.v2.route.CorsPolicy.shadow_enabled:type_name -> solo.io.envoy.api.v2.core.RuntimeFractionalPercent - 6, // 33: solo.io.envoy.api.v2.route.RouteAction.weighted_clusters:type_name -> solo.io.envoy.api.v2.route.WeightedCluster - 1, // 34: solo.io.envoy.api.v2.route.RouteAction.cluster_not_found_response_code:type_name -> solo.io.envoy.api.v2.route.RouteAction.ClusterNotFoundResponseCode - 45, // 35: solo.io.envoy.api.v2.route.RouteAction.metadata_match:type_name -> solo.io.envoy.api.v2.core.Metadata - 47, // 36: solo.io.envoy.api.v2.route.RouteAction.auto_host_rewrite:type_name -> google.protobuf.BoolValue - 49, // 37: solo.io.envoy.api.v2.route.RouteAction.timeout:type_name -> google.protobuf.Duration - 49, // 38: solo.io.envoy.api.v2.route.RouteAction.idle_timeout:type_name -> google.protobuf.Duration - 10, // 39: solo.io.envoy.api.v2.route.RouteAction.retry_policy:type_name -> solo.io.envoy.api.v2.route.RetryPolicy - 28, // 40: solo.io.envoy.api.v2.route.RouteAction.request_mirror_policy:type_name -> solo.io.envoy.api.v2.route.RouteAction.RequestMirrorPolicy - 50, // 41: solo.io.envoy.api.v2.route.RouteAction.priority:type_name -> solo.io.envoy.api.v2.core.RoutingPriority - 17, // 42: solo.io.envoy.api.v2.route.RouteAction.rate_limits:type_name -> solo.io.envoy.api.v2.route.RateLimit - 47, // 43: solo.io.envoy.api.v2.route.RouteAction.include_vh_rate_limits:type_name -> google.protobuf.BoolValue - 29, // 44: solo.io.envoy.api.v2.route.RouteAction.hash_policy:type_name -> solo.io.envoy.api.v2.route.RouteAction.HashPolicy - 8, // 45: solo.io.envoy.api.v2.route.RouteAction.cors:type_name -> solo.io.envoy.api.v2.route.CorsPolicy - 49, // 46: solo.io.envoy.api.v2.route.RouteAction.max_grpc_timeout:type_name -> google.protobuf.Duration - 49, // 47: solo.io.envoy.api.v2.route.RouteAction.grpc_timeout_offset:type_name -> google.protobuf.Duration - 30, // 48: solo.io.envoy.api.v2.route.RouteAction.upgrade_configs:type_name -> solo.io.envoy.api.v2.route.RouteAction.UpgradeConfig - 2, // 49: solo.io.envoy.api.v2.route.RouteAction.internal_redirect_action:type_name -> solo.io.envoy.api.v2.route.RouteAction.InternalRedirectAction - 11, // 50: solo.io.envoy.api.v2.route.RouteAction.hedge_policy:type_name -> solo.io.envoy.api.v2.route.HedgePolicy - 46, // 51: solo.io.envoy.api.v2.route.RetryPolicy.num_retries:type_name -> google.protobuf.UInt32Value - 49, // 52: solo.io.envoy.api.v2.route.RetryPolicy.per_try_timeout:type_name -> google.protobuf.Duration - 34, // 53: solo.io.envoy.api.v2.route.RetryPolicy.retry_priority:type_name -> solo.io.envoy.api.v2.route.RetryPolicy.RetryPriority - 35, // 54: solo.io.envoy.api.v2.route.RetryPolicy.retry_host_predicate:type_name -> solo.io.envoy.api.v2.route.RetryPolicy.RetryHostPredicate - 36, // 55: solo.io.envoy.api.v2.route.RetryPolicy.retry_back_off:type_name -> solo.io.envoy.api.v2.route.RetryPolicy.RetryBackOff - 46, // 56: solo.io.envoy.api.v2.route.HedgePolicy.initial_requests:type_name -> google.protobuf.UInt32Value - 51, // 57: solo.io.envoy.api.v2.route.HedgePolicy.additional_request_chance:type_name -> solo.io.envoy.type.FractionalPercent - 3, // 58: solo.io.envoy.api.v2.route.RedirectAction.response_code:type_name -> solo.io.envoy.api.v2.route.RedirectAction.RedirectResponseCode - 52, // 59: solo.io.envoy.api.v2.route.DirectResponseAction.body:type_name -> solo.io.envoy.api.v2.core.DataSource - 51, // 60: solo.io.envoy.api.v2.route.Tracing.client_sampling:type_name -> solo.io.envoy.type.FractionalPercent - 51, // 61: solo.io.envoy.api.v2.route.Tracing.random_sampling:type_name -> solo.io.envoy.type.FractionalPercent - 51, // 62: solo.io.envoy.api.v2.route.Tracing.overall_sampling:type_name -> solo.io.envoy.type.FractionalPercent - 53, // 63: solo.io.envoy.api.v2.route.VirtualCluster.method:type_name -> solo.io.envoy.api.v2.core.RequestMethod - 46, // 64: solo.io.envoy.api.v2.route.RateLimit.stage:type_name -> google.protobuf.UInt32Value - 37, // 65: solo.io.envoy.api.v2.route.RateLimit.actions:type_name -> solo.io.envoy.api.v2.route.RateLimit.Action - 54, // 66: solo.io.envoy.api.v2.route.HeaderMatcher.range_match:type_name -> solo.io.envoy.type.Int64Range - 47, // 67: solo.io.envoy.api.v2.route.QueryParameterMatcher.regex:type_name -> google.protobuf.BoolValue - 55, // 68: solo.io.envoy.api.v2.route.VirtualHost.PerFilterConfigEntry.value:type_name -> google.protobuf.Struct - 56, // 69: solo.io.envoy.api.v2.route.VirtualHost.TypedPerFilterConfigEntry.value:type_name -> google.protobuf.Any - 55, // 70: solo.io.envoy.api.v2.route.Route.PerFilterConfigEntry.value:type_name -> google.protobuf.Struct - 56, // 71: solo.io.envoy.api.v2.route.Route.TypedPerFilterConfigEntry.value:type_name -> google.protobuf.Any - 46, // 72: solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight.weight:type_name -> google.protobuf.UInt32Value - 45, // 73: solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight.metadata_match:type_name -> solo.io.envoy.api.v2.core.Metadata - 44, // 74: solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight.request_headers_to_add:type_name -> solo.io.envoy.api.v2.core.HeaderValueOption - 44, // 75: solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight.response_headers_to_add:type_name -> solo.io.envoy.api.v2.core.HeaderValueOption - 25, // 76: solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight.per_filter_config:type_name -> solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight.PerFilterConfigEntry - 26, // 77: solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight.typed_per_filter_config:type_name -> solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntry - 55, // 78: solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight.PerFilterConfigEntry.value:type_name -> google.protobuf.Struct - 56, // 79: solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntry.value:type_name -> google.protobuf.Any - 48, // 80: solo.io.envoy.api.v2.route.RouteAction.RequestMirrorPolicy.runtime_fraction:type_name -> solo.io.envoy.api.v2.core.RuntimeFractionalPercent - 31, // 81: solo.io.envoy.api.v2.route.RouteAction.HashPolicy.header:type_name -> solo.io.envoy.api.v2.route.RouteAction.HashPolicy.Header - 32, // 82: solo.io.envoy.api.v2.route.RouteAction.HashPolicy.cookie:type_name -> solo.io.envoy.api.v2.route.RouteAction.HashPolicy.Cookie - 33, // 83: solo.io.envoy.api.v2.route.RouteAction.HashPolicy.connection_properties:type_name -> solo.io.envoy.api.v2.route.RouteAction.HashPolicy.ConnectionProperties - 47, // 84: solo.io.envoy.api.v2.route.RouteAction.UpgradeConfig.enabled:type_name -> google.protobuf.BoolValue - 49, // 85: solo.io.envoy.api.v2.route.RouteAction.HashPolicy.Cookie.ttl:type_name -> google.protobuf.Duration - 55, // 86: solo.io.envoy.api.v2.route.RetryPolicy.RetryPriority.config:type_name -> google.protobuf.Struct - 56, // 87: solo.io.envoy.api.v2.route.RetryPolicy.RetryPriority.typed_config:type_name -> google.protobuf.Any - 55, // 88: solo.io.envoy.api.v2.route.RetryPolicy.RetryHostPredicate.config:type_name -> google.protobuf.Struct - 56, // 89: solo.io.envoy.api.v2.route.RetryPolicy.RetryHostPredicate.typed_config:type_name -> google.protobuf.Any - 49, // 90: solo.io.envoy.api.v2.route.RetryPolicy.RetryBackOff.base_interval:type_name -> google.protobuf.Duration - 49, // 91: solo.io.envoy.api.v2.route.RetryPolicy.RetryBackOff.max_interval:type_name -> google.protobuf.Duration - 38, // 92: solo.io.envoy.api.v2.route.RateLimit.Action.source_cluster:type_name -> solo.io.envoy.api.v2.route.RateLimit.Action.SourceCluster - 39, // 93: solo.io.envoy.api.v2.route.RateLimit.Action.destination_cluster:type_name -> solo.io.envoy.api.v2.route.RateLimit.Action.DestinationCluster - 40, // 94: solo.io.envoy.api.v2.route.RateLimit.Action.request_headers:type_name -> solo.io.envoy.api.v2.route.RateLimit.Action.RequestHeaders - 41, // 95: solo.io.envoy.api.v2.route.RateLimit.Action.remote_address:type_name -> solo.io.envoy.api.v2.route.RateLimit.Action.RemoteAddress - 42, // 96: solo.io.envoy.api.v2.route.RateLimit.Action.generic_key:type_name -> solo.io.envoy.api.v2.route.RateLimit.Action.GenericKey - 43, // 97: solo.io.envoy.api.v2.route.RateLimit.Action.header_value_match:type_name -> solo.io.envoy.api.v2.route.RateLimit.Action.HeaderValueMatch - 47, // 98: solo.io.envoy.api.v2.route.RateLimit.Action.HeaderValueMatch.expect_match:type_name -> google.protobuf.BoolValue - 18, // 99: solo.io.envoy.api.v2.route.RateLimit.Action.HeaderValueMatch.headers:type_name -> solo.io.envoy.api.v2.route.HeaderMatcher - 100, // [100:100] is the sub-list for method output_type - 100, // [100:100] is the sub-list for method input_type - 100, // [100:100] is the sub-list for extension type_name - 100, // [100:100] is the sub-list for extension extendee - 0, // [0:100] is the sub-list for field type_name + 47, // 23: solo.io.envoy.api.v2.route.WeightedCluster.total_weight:type_name -> google.protobuf.UInt32Value + 27, // 24: solo.io.envoy.api.v2.route.RouteMatch.connect_matcher:type_name -> solo.io.envoy.api.v2.route.RouteMatch.ConnectMatcher + 48, // 25: solo.io.envoy.api.v2.route.RouteMatch.case_sensitive:type_name -> google.protobuf.BoolValue + 49, // 26: solo.io.envoy.api.v2.route.RouteMatch.runtime_fraction:type_name -> solo.io.envoy.api.v2.core.RuntimeFractionalPercent + 18, // 27: solo.io.envoy.api.v2.route.RouteMatch.headers:type_name -> solo.io.envoy.api.v2.route.HeaderMatcher + 19, // 28: solo.io.envoy.api.v2.route.RouteMatch.query_parameters:type_name -> solo.io.envoy.api.v2.route.QueryParameterMatcher + 28, // 29: solo.io.envoy.api.v2.route.RouteMatch.grpc:type_name -> solo.io.envoy.api.v2.route.RouteMatch.GrpcRouteMatchOptions + 48, // 30: solo.io.envoy.api.v2.route.CorsPolicy.allow_credentials:type_name -> google.protobuf.BoolValue + 48, // 31: solo.io.envoy.api.v2.route.CorsPolicy.enabled:type_name -> google.protobuf.BoolValue + 49, // 32: solo.io.envoy.api.v2.route.CorsPolicy.filter_enabled:type_name -> solo.io.envoy.api.v2.core.RuntimeFractionalPercent + 49, // 33: solo.io.envoy.api.v2.route.CorsPolicy.shadow_enabled:type_name -> solo.io.envoy.api.v2.core.RuntimeFractionalPercent + 6, // 34: solo.io.envoy.api.v2.route.RouteAction.weighted_clusters:type_name -> solo.io.envoy.api.v2.route.WeightedCluster + 1, // 35: solo.io.envoy.api.v2.route.RouteAction.cluster_not_found_response_code:type_name -> solo.io.envoy.api.v2.route.RouteAction.ClusterNotFoundResponseCode + 46, // 36: solo.io.envoy.api.v2.route.RouteAction.metadata_match:type_name -> solo.io.envoy.api.v2.core.Metadata + 48, // 37: solo.io.envoy.api.v2.route.RouteAction.auto_host_rewrite:type_name -> google.protobuf.BoolValue + 50, // 38: solo.io.envoy.api.v2.route.RouteAction.timeout:type_name -> google.protobuf.Duration + 50, // 39: solo.io.envoy.api.v2.route.RouteAction.idle_timeout:type_name -> google.protobuf.Duration + 10, // 40: solo.io.envoy.api.v2.route.RouteAction.retry_policy:type_name -> solo.io.envoy.api.v2.route.RetryPolicy + 29, // 41: solo.io.envoy.api.v2.route.RouteAction.request_mirror_policy:type_name -> solo.io.envoy.api.v2.route.RouteAction.RequestMirrorPolicy + 51, // 42: solo.io.envoy.api.v2.route.RouteAction.priority:type_name -> solo.io.envoy.api.v2.core.RoutingPriority + 17, // 43: solo.io.envoy.api.v2.route.RouteAction.rate_limits:type_name -> solo.io.envoy.api.v2.route.RateLimit + 48, // 44: solo.io.envoy.api.v2.route.RouteAction.include_vh_rate_limits:type_name -> google.protobuf.BoolValue + 30, // 45: solo.io.envoy.api.v2.route.RouteAction.hash_policy:type_name -> solo.io.envoy.api.v2.route.RouteAction.HashPolicy + 8, // 46: solo.io.envoy.api.v2.route.RouteAction.cors:type_name -> solo.io.envoy.api.v2.route.CorsPolicy + 50, // 47: solo.io.envoy.api.v2.route.RouteAction.max_grpc_timeout:type_name -> google.protobuf.Duration + 50, // 48: solo.io.envoy.api.v2.route.RouteAction.grpc_timeout_offset:type_name -> google.protobuf.Duration + 31, // 49: solo.io.envoy.api.v2.route.RouteAction.upgrade_configs:type_name -> solo.io.envoy.api.v2.route.RouteAction.UpgradeConfig + 2, // 50: solo.io.envoy.api.v2.route.RouteAction.internal_redirect_action:type_name -> solo.io.envoy.api.v2.route.RouteAction.InternalRedirectAction + 11, // 51: solo.io.envoy.api.v2.route.RouteAction.hedge_policy:type_name -> solo.io.envoy.api.v2.route.HedgePolicy + 47, // 52: solo.io.envoy.api.v2.route.RetryPolicy.num_retries:type_name -> google.protobuf.UInt32Value + 50, // 53: solo.io.envoy.api.v2.route.RetryPolicy.per_try_timeout:type_name -> google.protobuf.Duration + 35, // 54: solo.io.envoy.api.v2.route.RetryPolicy.retry_priority:type_name -> solo.io.envoy.api.v2.route.RetryPolicy.RetryPriority + 36, // 55: solo.io.envoy.api.v2.route.RetryPolicy.retry_host_predicate:type_name -> solo.io.envoy.api.v2.route.RetryPolicy.RetryHostPredicate + 37, // 56: solo.io.envoy.api.v2.route.RetryPolicy.retry_back_off:type_name -> solo.io.envoy.api.v2.route.RetryPolicy.RetryBackOff + 47, // 57: solo.io.envoy.api.v2.route.HedgePolicy.initial_requests:type_name -> google.protobuf.UInt32Value + 52, // 58: solo.io.envoy.api.v2.route.HedgePolicy.additional_request_chance:type_name -> solo.io.envoy.type.FractionalPercent + 3, // 59: solo.io.envoy.api.v2.route.RedirectAction.response_code:type_name -> solo.io.envoy.api.v2.route.RedirectAction.RedirectResponseCode + 53, // 60: solo.io.envoy.api.v2.route.DirectResponseAction.body:type_name -> solo.io.envoy.api.v2.core.DataSource + 52, // 61: solo.io.envoy.api.v2.route.Tracing.client_sampling:type_name -> solo.io.envoy.type.FractionalPercent + 52, // 62: solo.io.envoy.api.v2.route.Tracing.random_sampling:type_name -> solo.io.envoy.type.FractionalPercent + 52, // 63: solo.io.envoy.api.v2.route.Tracing.overall_sampling:type_name -> solo.io.envoy.type.FractionalPercent + 54, // 64: solo.io.envoy.api.v2.route.VirtualCluster.method:type_name -> solo.io.envoy.api.v2.core.RequestMethod + 47, // 65: solo.io.envoy.api.v2.route.RateLimit.stage:type_name -> google.protobuf.UInt32Value + 38, // 66: solo.io.envoy.api.v2.route.RateLimit.actions:type_name -> solo.io.envoy.api.v2.route.RateLimit.Action + 55, // 67: solo.io.envoy.api.v2.route.HeaderMatcher.range_match:type_name -> solo.io.envoy.type.Int64Range + 48, // 68: solo.io.envoy.api.v2.route.QueryParameterMatcher.regex:type_name -> google.protobuf.BoolValue + 56, // 69: solo.io.envoy.api.v2.route.VirtualHost.PerFilterConfigEntry.value:type_name -> google.protobuf.Struct + 57, // 70: solo.io.envoy.api.v2.route.VirtualHost.TypedPerFilterConfigEntry.value:type_name -> google.protobuf.Any + 56, // 71: solo.io.envoy.api.v2.route.Route.PerFilterConfigEntry.value:type_name -> google.protobuf.Struct + 57, // 72: solo.io.envoy.api.v2.route.Route.TypedPerFilterConfigEntry.value:type_name -> google.protobuf.Any + 47, // 73: solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight.weight:type_name -> google.protobuf.UInt32Value + 46, // 74: solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight.metadata_match:type_name -> solo.io.envoy.api.v2.core.Metadata + 45, // 75: solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight.request_headers_to_add:type_name -> solo.io.envoy.api.v2.core.HeaderValueOption + 45, // 76: solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight.response_headers_to_add:type_name -> solo.io.envoy.api.v2.core.HeaderValueOption + 25, // 77: solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight.per_filter_config:type_name -> solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight.PerFilterConfigEntry + 26, // 78: solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight.typed_per_filter_config:type_name -> solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntry + 56, // 79: solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight.PerFilterConfigEntry.value:type_name -> google.protobuf.Struct + 57, // 80: solo.io.envoy.api.v2.route.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntry.value:type_name -> google.protobuf.Any + 49, // 81: solo.io.envoy.api.v2.route.RouteAction.RequestMirrorPolicy.runtime_fraction:type_name -> solo.io.envoy.api.v2.core.RuntimeFractionalPercent + 32, // 82: solo.io.envoy.api.v2.route.RouteAction.HashPolicy.header:type_name -> solo.io.envoy.api.v2.route.RouteAction.HashPolicy.Header + 33, // 83: solo.io.envoy.api.v2.route.RouteAction.HashPolicy.cookie:type_name -> solo.io.envoy.api.v2.route.RouteAction.HashPolicy.Cookie + 34, // 84: solo.io.envoy.api.v2.route.RouteAction.HashPolicy.connection_properties:type_name -> solo.io.envoy.api.v2.route.RouteAction.HashPolicy.ConnectionProperties + 48, // 85: solo.io.envoy.api.v2.route.RouteAction.UpgradeConfig.enabled:type_name -> google.protobuf.BoolValue + 50, // 86: solo.io.envoy.api.v2.route.RouteAction.HashPolicy.Cookie.ttl:type_name -> google.protobuf.Duration + 56, // 87: solo.io.envoy.api.v2.route.RetryPolicy.RetryPriority.config:type_name -> google.protobuf.Struct + 57, // 88: solo.io.envoy.api.v2.route.RetryPolicy.RetryPriority.typed_config:type_name -> google.protobuf.Any + 56, // 89: solo.io.envoy.api.v2.route.RetryPolicy.RetryHostPredicate.config:type_name -> google.protobuf.Struct + 57, // 90: solo.io.envoy.api.v2.route.RetryPolicy.RetryHostPredicate.typed_config:type_name -> google.protobuf.Any + 50, // 91: solo.io.envoy.api.v2.route.RetryPolicy.RetryBackOff.base_interval:type_name -> google.protobuf.Duration + 50, // 92: solo.io.envoy.api.v2.route.RetryPolicy.RetryBackOff.max_interval:type_name -> google.protobuf.Duration + 39, // 93: solo.io.envoy.api.v2.route.RateLimit.Action.source_cluster:type_name -> solo.io.envoy.api.v2.route.RateLimit.Action.SourceCluster + 40, // 94: solo.io.envoy.api.v2.route.RateLimit.Action.destination_cluster:type_name -> solo.io.envoy.api.v2.route.RateLimit.Action.DestinationCluster + 41, // 95: solo.io.envoy.api.v2.route.RateLimit.Action.request_headers:type_name -> solo.io.envoy.api.v2.route.RateLimit.Action.RequestHeaders + 42, // 96: solo.io.envoy.api.v2.route.RateLimit.Action.remote_address:type_name -> solo.io.envoy.api.v2.route.RateLimit.Action.RemoteAddress + 43, // 97: solo.io.envoy.api.v2.route.RateLimit.Action.generic_key:type_name -> solo.io.envoy.api.v2.route.RateLimit.Action.GenericKey + 44, // 98: solo.io.envoy.api.v2.route.RateLimit.Action.header_value_match:type_name -> solo.io.envoy.api.v2.route.RateLimit.Action.HeaderValueMatch + 48, // 99: solo.io.envoy.api.v2.route.RateLimit.Action.HeaderValueMatch.expect_match:type_name -> google.protobuf.BoolValue + 18, // 100: solo.io.envoy.api.v2.route.RateLimit.Action.HeaderValueMatch.headers:type_name -> solo.io.envoy.api.v2.route.HeaderMatcher + 101, // [101:101] is the sub-list for method output_type + 101, // [101:101] is the sub-list for method input_type + 101, // [101:101] is the sub-list for extension type_name + 101, // [101:101] is the sub-list for extension extendee + 0, // [0:101] is the sub-list for field type_name } func init() { @@ -5010,431 +5061,22 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VirtualHost); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Route); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WeightedCluster); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteMatch); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CorsPolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteAction); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HedgePolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RedirectAction); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DirectResponseAction); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Decorator); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Tracing); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VirtualCluster); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimit); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HeaderMatcher); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryParameterMatcher); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WeightedCluster_ClusterWeight); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteMatch_GrpcRouteMatchOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteAction_RequestMirrorPolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteAction_HashPolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteAction_UpgradeConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteAction_HashPolicy_Header); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteAction_HashPolicy_Cookie); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteAction_HashPolicy_ConnectionProperties); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicy_RetryPriority); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicy_RetryHostPredicate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicy_RetryBackOff); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimit_Action); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimit_Action_SourceCluster); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimit_Action_DestinationCluster); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimit_Action_RequestHeaders); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimit_Action_RemoteAddress); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimit_Action_GenericKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimit_Action_HeaderValueMatch); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[1].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[1].OneofWrappers = []any{ (*Route_Route)(nil), (*Route_Redirect)(nil), (*Route_DirectResponse)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[3].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[3].OneofWrappers = []any{ (*RouteMatch_Prefix)(nil), (*RouteMatch_Path)(nil), (*RouteMatch_Regex)(nil), + (*RouteMatch_ConnectMatcher_)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[4].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[4].OneofWrappers = []any{ (*CorsPolicy_Enabled)(nil), (*CorsPolicy_FilterEnabled)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[5].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[5].OneofWrappers = []any{ (*RouteAction_Cluster)(nil), (*RouteAction_ClusterHeader)(nil), (*RouteAction_WeightedClusters)(nil), @@ -5442,13 +5084,13 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route (*RouteAction_AutoHostRewrite)(nil), (*RouteAction_AutoHostRewriteHeader)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[8].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[8].OneofWrappers = []any{ (*RedirectAction_HttpsRedirect)(nil), (*RedirectAction_SchemeRedirect)(nil), (*RedirectAction_PathRedirect)(nil), (*RedirectAction_PrefixRewrite)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[14].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[14].OneofWrappers = []any{ (*HeaderMatcher_ExactMatch)(nil), (*HeaderMatcher_RegexMatch)(nil), (*HeaderMatcher_RangeMatch)(nil), @@ -5456,20 +5098,20 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route (*HeaderMatcher_PrefixMatch)(nil), (*HeaderMatcher_SuffixMatch)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[25].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[26].OneofWrappers = []any{ (*RouteAction_HashPolicy_Header_)(nil), (*RouteAction_HashPolicy_Cookie_)(nil), (*RouteAction_HashPolicy_ConnectionProperties_)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[30].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[31].OneofWrappers = []any{ (*RetryPolicy_RetryPriority_Config)(nil), (*RetryPolicy_RetryPriority_TypedConfig)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[31].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[32].OneofWrappers = []any{ (*RetryPolicy_RetryHostPredicate_Config)(nil), (*RetryPolicy_RetryHostPredicate_TypedConfig)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[33].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes[34].OneofWrappers = []any{ (*RateLimit_Action_SourceCluster_)(nil), (*RateLimit_Action_DestinationCluster_)(nil), (*RateLimit_Action_RequestHeaders_)(nil), @@ -5481,9 +5123,9 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDesc)), NumEnums: 4, - NumMessages: 40, + NumMessages: 41, NumExtensions: 0, NumServices: 0, }, @@ -5493,7 +5135,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_api_v2_route_route_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/api/v2/route/route.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/api/v2/route/route.pb.hash.go index e3c03957c..1eae527d5 100644 --- a/pkg/api/gloo.solo.io/external/envoy/api/v2/route/route.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/api/v2/route/route.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" core "github.com/solo-io/solo-kit/pkg/api/external/envoy/api/v2/core" ) @@ -32,6 +32,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -59,14 +63,20 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRoutes() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -82,14 +92,20 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetVirtualClusters() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -100,14 +116,20 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRateLimits() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -118,14 +140,20 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRequestHeadersToAdd() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -144,14 +172,20 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetResponseHeadersToAdd() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -168,14 +202,20 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetCors()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCors(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCors(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -188,14 +228,20 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -221,14 +267,20 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -253,28 +305,40 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetRetryPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRetryPolicy(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRetryPolicy(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetHedgePolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HedgePolicy")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHedgePolicy(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHedgePolicy(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HedgePolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -284,6 +348,10 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -301,42 +369,60 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetDecorator()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Decorator")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDecorator(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDecorator(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Decorator")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -349,14 +435,20 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -382,14 +474,20 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -411,14 +509,20 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRequestHeadersToAdd() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -437,14 +541,20 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetResponseHeadersToAdd() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -461,14 +571,20 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetTracing()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Tracing")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTracing(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTracing(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Tracing")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -479,14 +595,20 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { case *Route_Route: if h, ok := interface{}(m.GetRoute()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Route")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRoute(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRoute(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Route")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -495,14 +617,20 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { case *Route_Redirect: if h, ok := interface{}(m.GetRedirect()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Redirect")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRedirect(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRedirect(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Redirect")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -511,14 +639,20 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { case *Route_DirectResponse: if h, ok := interface{}(m.GetDirectResponse()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DirectResponse")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDirectResponse(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDirectResponse(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DirectResponse")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -530,6 +664,10 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *WeightedCluster) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -545,14 +683,20 @@ func (m *WeightedCluster) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetClusters() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -561,14 +705,20 @@ func (m *WeightedCluster) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetTotalWeight()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TotalWeight")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTotalWeight(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTotalWeight(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TotalWeight")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -582,6 +732,10 @@ func (m *WeightedCluster) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteMatch) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -595,28 +749,40 @@ func (m *RouteMatch) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetCaseSensitive()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CaseSensitive")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCaseSensitive(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCaseSensitive(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("CaseSensitive")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetRuntimeFraction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RuntimeFraction")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRuntimeFraction(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRuntimeFraction(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RuntimeFraction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -625,14 +791,20 @@ func (m *RouteMatch) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetHeaders() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -643,14 +815,20 @@ func (m *RouteMatch) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetQueryParameters() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -659,14 +837,20 @@ func (m *RouteMatch) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetGrpc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Grpc")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetGrpc(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetGrpc(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Grpc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -692,12 +876,38 @@ func (m *RouteMatch) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + case *RouteMatch_ConnectMatcher_: + + if h, ok := interface{}(m.GetConnectMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectMatcher")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConnectMatcher(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConnectMatcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + } return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *CorsPolicy) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -743,28 +953,40 @@ func (m *CorsPolicy) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetAllowCredentials()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowCredentials")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAllowCredentials(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAllowCredentials(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AllowCredentials")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetShadowEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ShadowEnabled")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetShadowEnabled(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetShadowEnabled(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ShadowEnabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -775,14 +997,20 @@ func (m *CorsPolicy) Hash(hasher hash.Hash64) (uint64, error) { case *CorsPolicy_Enabled: if h, ok := interface{}(m.GetEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Enabled")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetEnabled(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetEnabled(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Enabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -791,14 +1019,20 @@ func (m *CorsPolicy) Hash(hasher hash.Hash64) (uint64, error) { case *CorsPolicy_FilterEnabled: if h, ok := interface{}(m.GetFilterEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FilterEnabled")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetFilterEnabled(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetFilterEnabled(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("FilterEnabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -810,6 +1044,10 @@ func (m *CorsPolicy) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -828,14 +1066,20 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetMetadataMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MetadataMatch")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadataMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMetadataMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MetadataMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -846,56 +1090,80 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetIdleTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetIdleTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetIdleTimeout(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetRetryPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRetryPolicy(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRetryPolicy(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetRequestMirrorPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestMirrorPolicy")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRequestMirrorPolicy(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRequestMirrorPolicy(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RequestMirrorPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -909,14 +1177,20 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRateLimits() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -925,14 +1199,20 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetIncludeVhRateLimits()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IncludeVhRateLimits")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetIncludeVhRateLimits(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetIncludeVhRateLimits(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("IncludeVhRateLimits")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -941,14 +1221,20 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetHashPolicy() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -957,42 +1243,60 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetCors()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCors(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCors(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetMaxGrpcTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxGrpcTimeout")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMaxGrpcTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMaxGrpcTimeout(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MaxGrpcTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetGrpcTimeoutOffset()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcTimeoutOffset")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetGrpcTimeoutOffset(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetGrpcTimeoutOffset(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("GrpcTimeoutOffset")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1001,14 +1305,20 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetUpgradeConfigs() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1022,14 +1332,20 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetHedgePolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HedgePolicy")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHedgePolicy(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHedgePolicy(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HedgePolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1052,14 +1368,20 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { case *RouteAction_WeightedClusters: if h, ok := interface{}(m.GetWeightedClusters()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("WeightedClusters")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetWeightedClusters(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetWeightedClusters(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("WeightedClusters")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1078,14 +1400,20 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { case *RouteAction_AutoHostRewrite: if h, ok := interface{}(m.GetAutoHostRewrite()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AutoHostRewrite")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAutoHostRewrite(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAutoHostRewrite(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AutoHostRewrite")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1103,6 +1431,10 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RetryPolicy) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1120,42 +1452,60 @@ func (m *RetryPolicy) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetNumRetries()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("NumRetries")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetNumRetries(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetNumRetries(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("NumRetries")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetPerTryTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PerTryTimeout")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPerTryTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPerTryTimeout(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PerTryTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetRetryPriority()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPriority")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRetryPriority(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRetryPriority(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RetryPriority")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1164,14 +1514,20 @@ func (m *RetryPolicy) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRetryHostPredicate() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1190,14 +1546,20 @@ func (m *RetryPolicy) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetRetryBackOff()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryBackOff")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRetryBackOff(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRetryBackOff(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RetryBackOff")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1207,6 +1569,10 @@ func (m *RetryPolicy) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HedgePolicy) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1220,28 +1586,40 @@ func (m *HedgePolicy) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetInitialRequests()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InitialRequests")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetInitialRequests(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetInitialRequests(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("InitialRequests")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetAdditionalRequestChance()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AdditionalRequestChance")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAdditionalRequestChance(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAdditionalRequestChance(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AdditionalRequestChance")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1256,6 +1634,10 @@ func (m *HedgePolicy) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RedirectAction) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1324,6 +1706,10 @@ func (m *RedirectAction) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *DirectResponseAction) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1342,14 +1728,20 @@ func (m *DirectResponseAction) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetBody(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetBody(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1359,6 +1751,10 @@ func (m *DirectResponseAction) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Decorator) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1379,6 +1775,10 @@ func (m *Decorator) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Tracing) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1392,42 +1792,60 @@ func (m *Tracing) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetClientSampling()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClientSampling")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetClientSampling(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetClientSampling(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ClientSampling")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetRandomSampling()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RandomSampling")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRandomSampling(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRandomSampling(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RandomSampling")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetOverallSampling()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OverallSampling")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOverallSampling(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOverallSampling(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("OverallSampling")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1437,6 +1855,10 @@ func (m *Tracing) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *VirtualCluster) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1466,6 +1888,10 @@ func (m *VirtualCluster) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimit) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1479,14 +1905,20 @@ func (m *RateLimit) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetStage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Stage")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetStage(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetStage(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Stage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1499,14 +1931,20 @@ func (m *RateLimit) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetActions() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1518,6 +1956,10 @@ func (m *RateLimit) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HeaderMatcher) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1556,14 +1998,20 @@ func (m *HeaderMatcher) Hash(hasher hash.Hash64) (uint64, error) { case *HeaderMatcher_RangeMatch: if h, ok := interface{}(m.GetRangeMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RangeMatch")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRangeMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRangeMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RangeMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1594,6 +2042,10 @@ func (m *HeaderMatcher) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *QueryParameterMatcher) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1615,14 +2067,20 @@ func (m *QueryParameterMatcher) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetRegex()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Regex")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRegex(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRegex(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Regex")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1632,6 +2090,10 @@ func (m *QueryParameterMatcher) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *WeightedCluster_ClusterWeight) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1649,28 +2111,40 @@ func (m *WeightedCluster_ClusterWeight) Hash(hasher hash.Hash64) (uint64, error) } if h, ok := interface{}(m.GetWeight()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Weight")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetWeight(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetWeight(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Weight")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetMetadataMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MetadataMatch")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadataMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMetadataMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MetadataMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1679,14 +2153,20 @@ func (m *WeightedCluster_ClusterWeight) Hash(hasher hash.Hash64) (uint64, error) for _, v := range m.GetRequestHeadersToAdd() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1705,14 +2185,20 @@ func (m *WeightedCluster_ClusterWeight) Hash(hasher hash.Hash64) (uint64, error) for _, v := range m.GetResponseHeadersToAdd() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1735,14 +2221,20 @@ func (m *WeightedCluster_ClusterWeight) Hash(hasher hash.Hash64) (uint64, error) innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1768,14 +2260,20 @@ func (m *WeightedCluster_ClusterWeight) Hash(hasher hash.Hash64) (uint64, error) innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1798,6 +2296,30 @@ func (m *WeightedCluster_ClusterWeight) Hash(hasher hash.Hash64) (uint64, error) } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RouteMatch_ConnectMatcher) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RouteMatch_ConnectMatcher")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteMatch_GrpcRouteMatchOptions) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1814,6 +2336,10 @@ func (m *RouteMatch_GrpcRouteMatchOptions) Hash(hasher hash.Hash64) (uint64, err } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteAction_RequestMirrorPolicy) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1835,14 +2361,20 @@ func (m *RouteAction_RequestMirrorPolicy) Hash(hasher hash.Hash64) (uint64, erro } if h, ok := interface{}(m.GetRuntimeFraction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RuntimeFraction")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRuntimeFraction(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRuntimeFraction(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RuntimeFraction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1852,6 +2384,10 @@ func (m *RouteAction_RequestMirrorPolicy) Hash(hasher hash.Hash64) (uint64, erro } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteAction_HashPolicy) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1874,14 +2410,20 @@ func (m *RouteAction_HashPolicy) Hash(hasher hash.Hash64) (uint64, error) { case *RouteAction_HashPolicy_Header_: if h, ok := interface{}(m.GetHeader()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHeader(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHeader(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1890,14 +2432,20 @@ func (m *RouteAction_HashPolicy) Hash(hasher hash.Hash64) (uint64, error) { case *RouteAction_HashPolicy_Cookie_: if h, ok := interface{}(m.GetCookie()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cookie")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCookie(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCookie(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Cookie")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1906,14 +2454,20 @@ func (m *RouteAction_HashPolicy) Hash(hasher hash.Hash64) (uint64, error) { case *RouteAction_HashPolicy_ConnectionProperties_: if h, ok := interface{}(m.GetConnectionProperties()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectionProperties")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConnectionProperties(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConnectionProperties(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ConnectionProperties")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1925,6 +2479,10 @@ func (m *RouteAction_HashPolicy) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteAction_UpgradeConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1942,14 +2500,20 @@ func (m *RouteAction_UpgradeConfig) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Enabled")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetEnabled(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetEnabled(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Enabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1959,6 +2523,10 @@ func (m *RouteAction_UpgradeConfig) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteAction_HashPolicy_Header) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1979,6 +2547,10 @@ func (m *RouteAction_HashPolicy_Header) Hash(hasher hash.Hash64) (uint64, error) } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteAction_HashPolicy_Cookie) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1996,14 +2568,20 @@ func (m *RouteAction_HashPolicy_Cookie) Hash(hasher hash.Hash64) (uint64, error) } if h, ok := interface{}(m.GetTtl()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ttl")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTtl(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTtl(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Ttl")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2017,6 +2595,10 @@ func (m *RouteAction_HashPolicy_Cookie) Hash(hasher hash.Hash64) (uint64, error) } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteAction_HashPolicy_ConnectionProperties) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2038,6 +2620,10 @@ func (m *RouteAction_HashPolicy_ConnectionProperties) Hash(hasher hash.Hash64) ( } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RetryPolicy_RetryPriority) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2059,14 +2645,20 @@ func (m *RetryPolicy_RetryPriority) Hash(hasher hash.Hash64) (uint64, error) { case *RetryPolicy_RetryPriority_Config: if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2075,14 +2667,20 @@ func (m *RetryPolicy_RetryPriority) Hash(hasher hash.Hash64) (uint64, error) { case *RetryPolicy_RetryPriority_TypedConfig: if h, ok := interface{}(m.GetTypedConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2094,6 +2692,10 @@ func (m *RetryPolicy_RetryPriority) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RetryPolicy_RetryHostPredicate) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2115,14 +2717,20 @@ func (m *RetryPolicy_RetryHostPredicate) Hash(hasher hash.Hash64) (uint64, error case *RetryPolicy_RetryHostPredicate_Config: if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2131,14 +2739,20 @@ func (m *RetryPolicy_RetryHostPredicate) Hash(hasher hash.Hash64) (uint64, error case *RetryPolicy_RetryHostPredicate_TypedConfig: if h, ok := interface{}(m.GetTypedConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2150,6 +2764,10 @@ func (m *RetryPolicy_RetryHostPredicate) Hash(hasher hash.Hash64) (uint64, error } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RetryPolicy_RetryBackOff) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2163,28 +2781,40 @@ func (m *RetryPolicy_RetryBackOff) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetBaseInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetBaseInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetBaseInterval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetMaxInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMaxInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMaxInterval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2194,6 +2824,10 @@ func (m *RetryPolicy_RetryBackOff) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimit_Action) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2211,14 +2845,20 @@ func (m *RateLimit_Action) Hash(hasher hash.Hash64) (uint64, error) { case *RateLimit_Action_SourceCluster_: if h, ok := interface{}(m.GetSourceCluster()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SourceCluster")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSourceCluster(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSourceCluster(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SourceCluster")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2227,14 +2867,20 @@ func (m *RateLimit_Action) Hash(hasher hash.Hash64) (uint64, error) { case *RateLimit_Action_DestinationCluster_: if h, ok := interface{}(m.GetDestinationCluster()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DestinationCluster")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDestinationCluster(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDestinationCluster(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DestinationCluster")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2243,14 +2889,20 @@ func (m *RateLimit_Action) Hash(hasher hash.Hash64) (uint64, error) { case *RateLimit_Action_RequestHeaders_: if h, ok := interface{}(m.GetRequestHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestHeaders")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRequestHeaders(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRequestHeaders(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RequestHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2259,14 +2911,20 @@ func (m *RateLimit_Action) Hash(hasher hash.Hash64) (uint64, error) { case *RateLimit_Action_RemoteAddress_: if h, ok := interface{}(m.GetRemoteAddress()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RemoteAddress")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRemoteAddress(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRemoteAddress(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RemoteAddress")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2275,14 +2933,20 @@ func (m *RateLimit_Action) Hash(hasher hash.Hash64) (uint64, error) { case *RateLimit_Action_GenericKey_: if h, ok := interface{}(m.GetGenericKey()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GenericKey")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetGenericKey(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetGenericKey(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("GenericKey")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2291,14 +2955,20 @@ func (m *RateLimit_Action) Hash(hasher hash.Hash64) (uint64, error) { case *RateLimit_Action_HeaderValueMatch_: if h, ok := interface{}(m.GetHeaderValueMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderValueMatch")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHeaderValueMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHeaderValueMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HeaderValueMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2310,6 +2980,10 @@ func (m *RateLimit_Action) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimit_Action_SourceCluster) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2326,6 +3000,10 @@ func (m *RateLimit_Action_SourceCluster) Hash(hasher hash.Hash64) (uint64, error } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimit_Action_DestinationCluster) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2342,6 +3020,10 @@ func (m *RateLimit_Action_DestinationCluster) Hash(hasher hash.Hash64) (uint64, } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimit_Action_RequestHeaders) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2366,6 +3048,10 @@ func (m *RateLimit_Action_RequestHeaders) Hash(hasher hash.Hash64) (uint64, erro } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimit_Action_RemoteAddress) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2382,6 +3068,10 @@ func (m *RateLimit_Action_RemoteAddress) Hash(hasher hash.Hash64) (uint64, error } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimit_Action_GenericKey) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2402,6 +3092,10 @@ func (m *RateLimit_Action_GenericKey) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimit_Action_HeaderValueMatch) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2419,14 +3113,20 @@ func (m *RateLimit_Action_HeaderValueMatch) Hash(hasher hash.Hash64) (uint64, er } if h, ok := interface{}(m.GetExpectMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ExpectMatch")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetExpectMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetExpectMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ExpectMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2435,14 +3135,20 @@ func (m *RateLimit_Action_HeaderValueMatch) Hash(hasher hash.Hash64) (uint64, er for _, v := range m.GetHeaders() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/external/envoy/api/v2/route/route.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/api/v2/route/route.pb.uniquehash.go new file mode 100644 index 000000000..651d1df1f --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/api/v2/route/route.pb.uniquehash.go @@ -0,0 +1,3520 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/api/v2/route/route.proto + +package route + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" + + core "github.com/solo-io/solo-kit/pkg/api/external/envoy/api/v2/core" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) + + _ = core.RoutingPriority(0) + + _ = core.RequestMethod(0) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *VirtualHost) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.VirtualHost")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Domains")); err != nil { + return 0, err + } + for i, v := range m.GetDomains() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("Routes")); err != nil { + return 0, err + } + for i, v := range m.GetRoutes() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("RequireTls")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRequireTls()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("VirtualClusters")); err != nil { + return 0, err + } + for i, v := range m.GetVirtualClusters() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("RateLimits")); err != nil { + return 0, err + } + for i, v := range m.GetRateLimits() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("RequestHeadersToAdd")); err != nil { + return 0, err + } + for i, v := range m.GetRequestHeadersToAdd() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("RequestHeadersToRemove")); err != nil { + return 0, err + } + for i, v := range m.GetRequestHeadersToRemove() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("ResponseHeadersToAdd")); err != nil { + return 0, err + } + for i, v := range m.GetResponseHeadersToAdd() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("ResponseHeadersToRemove")); err != nil { + return 0, err + } + for i, v := range m.GetResponseHeadersToRemove() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetCors()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCors(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetPerFilterConfig() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetTypedPerFilterConfig() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("IncludeRequestAttemptCount")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetIncludeRequestAttemptCount()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRetryPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetryPolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHedgePolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HedgePolicy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHedgePolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HedgePolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Route) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.Route")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDecorator()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Decorator")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDecorator(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Decorator")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetPerFilterConfig() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetTypedPerFilterConfig() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("RequestHeadersToAdd")); err != nil { + return 0, err + } + for i, v := range m.GetRequestHeadersToAdd() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("RequestHeadersToRemove")); err != nil { + return 0, err + } + for i, v := range m.GetRequestHeadersToRemove() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("ResponseHeadersToAdd")); err != nil { + return 0, err + } + for i, v := range m.GetResponseHeadersToAdd() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("ResponseHeadersToRemove")); err != nil { + return 0, err + } + for i, v := range m.GetResponseHeadersToRemove() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetTracing()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Tracing")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTracing(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Tracing")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.Action.(type) { + + case *Route_Route: + + if h, ok := interface{}(m.GetRoute()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Route")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRoute(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Route")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Route_Redirect: + + if h, ok := interface{}(m.GetRedirect()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Redirect")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRedirect(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Redirect")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Route_DirectResponse: + + if h, ok := interface{}(m.GetDirectResponse()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DirectResponse")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDirectResponse(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DirectResponse")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *WeightedCluster) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.WeightedCluster")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Clusters")); err != nil { + return 0, err + } + for i, v := range m.GetClusters() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetTotalWeight()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TotalWeight")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTotalWeight(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TotalWeight")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RuntimeKeyPrefix")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRuntimeKeyPrefix())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteMatch) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RouteMatch")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCaseSensitive()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CaseSensitive")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCaseSensitive(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CaseSensitive")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRuntimeFraction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RuntimeFraction")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRuntimeFraction(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RuntimeFraction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + for i, v := range m.GetHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("QueryParameters")); err != nil { + return 0, err + } + for i, v := range m.GetQueryParameters() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetGrpc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Grpc")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpc(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Grpc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.PathSpecifier.(type) { + + case *RouteMatch_Prefix: + + if _, err = hasher.Write([]byte("Prefix")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPrefix())); err != nil { + return 0, err + } + + case *RouteMatch_Path: + + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPath())); err != nil { + return 0, err + } + + case *RouteMatch_Regex: + + if _, err = hasher.Write([]byte("Regex")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRegex())); err != nil { + return 0, err + } + + case *RouteMatch_ConnectMatcher_: + + if h, ok := interface{}(m.GetConnectMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectMatcher")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConnectMatcher(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConnectMatcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *CorsPolicy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.CorsPolicy")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AllowOrigin")); err != nil { + return 0, err + } + for i, v := range m.GetAllowOrigin() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("AllowOriginRegex")); err != nil { + return 0, err + } + for i, v := range m.GetAllowOriginRegex() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("AllowMethods")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAllowMethods())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AllowHeaders")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAllowHeaders())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ExposeHeaders")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetExposeHeaders())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MaxAge")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetMaxAge())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAllowCredentials()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowCredentials")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAllowCredentials(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AllowCredentials")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetShadowEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ShadowEnabled")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetShadowEnabled(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ShadowEnabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.EnabledSpecifier.(type) { + + case *CorsPolicy_Enabled: + + if h, ok := interface{}(m.GetEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Enabled")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnabled(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Enabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *CorsPolicy_FilterEnabled: + + if h, ok := interface{}(m.GetFilterEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FilterEnabled")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFilterEnabled(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FilterEnabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteAction) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RouteAction")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClusterNotFoundResponseCode")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetClusterNotFoundResponseCode()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMetadataMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MetadataMatch")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadataMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MetadataMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("PrefixRewrite")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPrefixRewrite())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetIdleTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIdleTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRetryPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetryPolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRequestMirrorPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestMirrorPolicy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestMirrorPolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestMirrorPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Priority")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPriority()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RateLimits")); err != nil { + return 0, err + } + for i, v := range m.GetRateLimits() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetIncludeVhRateLimits()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IncludeVhRateLimits")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIncludeVhRateLimits(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IncludeVhRateLimits")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("HashPolicy")); err != nil { + return 0, err + } + for i, v := range m.GetHashPolicy() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetCors()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCors(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxGrpcTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxGrpcTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxGrpcTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxGrpcTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetGrpcTimeoutOffset()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcTimeoutOffset")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcTimeoutOffset(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcTimeoutOffset")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("UpgradeConfigs")); err != nil { + return 0, err + } + for i, v := range m.GetUpgradeConfigs() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("InternalRedirectAction")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetInternalRedirectAction()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHedgePolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HedgePolicy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHedgePolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HedgePolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.ClusterSpecifier.(type) { + + case *RouteAction_Cluster: + + if _, err = hasher.Write([]byte("Cluster")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCluster())); err != nil { + return 0, err + } + + case *RouteAction_ClusterHeader: + + if _, err = hasher.Write([]byte("ClusterHeader")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClusterHeader())); err != nil { + return 0, err + } + + case *RouteAction_WeightedClusters: + + if h, ok := interface{}(m.GetWeightedClusters()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("WeightedClusters")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWeightedClusters(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("WeightedClusters")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.HostRewriteSpecifier.(type) { + + case *RouteAction_HostRewrite: + + if _, err = hasher.Write([]byte("HostRewrite")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHostRewrite())); err != nil { + return 0, err + } + + case *RouteAction_AutoHostRewrite: + + if h, ok := interface{}(m.GetAutoHostRewrite()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AutoHostRewrite")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAutoHostRewrite(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AutoHostRewrite")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteAction_AutoHostRewriteHeader: + + if _, err = hasher.Write([]byte("AutoHostRewriteHeader")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAutoHostRewriteHeader())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RetryPolicy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RetryPolicy")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RetryOn")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRetryOn())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetNumRetries()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("NumRetries")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetNumRetries(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("NumRetries")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPerTryTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PerTryTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPerTryTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PerTryTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRetryPriority()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPriority")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetryPriority(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RetryPriority")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RetryHostPredicate")); err != nil { + return 0, err + } + for i, v := range m.GetRetryHostPredicate() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("HostSelectionRetryMaxAttempts")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetHostSelectionRetryMaxAttempts()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RetriableStatusCodes")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRetriableStatusCodes()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRetryBackOff()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryBackOff")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetryBackOff(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RetryBackOff")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HedgePolicy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.HedgePolicy")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetInitialRequests()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InitialRequests")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInitialRequests(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("InitialRequests")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAdditionalRequestChance()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AdditionalRequestChance")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAdditionalRequestChance(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AdditionalRequestChance")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("HedgeOnPerTryTimeout")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetHedgeOnPerTryTimeout()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RedirectAction) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RedirectAction")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("HostRedirect")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHostRedirect())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("PortRedirect")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPortRedirect()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ResponseCode")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetResponseCode()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("StripQuery")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetStripQuery()) + if err != nil { + return 0, err + } + + switch m.SchemeRewriteSpecifier.(type) { + + case *RedirectAction_HttpsRedirect: + + if _, err = hasher.Write([]byte("HttpsRedirect")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetHttpsRedirect()) + if err != nil { + return 0, err + } + + case *RedirectAction_SchemeRedirect: + + if _, err = hasher.Write([]byte("SchemeRedirect")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSchemeRedirect())); err != nil { + return 0, err + } + + } + + switch m.PathRewriteSpecifier.(type) { + + case *RedirectAction_PathRedirect: + + if _, err = hasher.Write([]byte("PathRedirect")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPathRedirect())); err != nil { + return 0, err + } + + case *RedirectAction_PrefixRewrite: + + if _, err = hasher.Write([]byte("PrefixRewrite")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPrefixRewrite())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DirectResponseAction) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.DirectResponseAction")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Status")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetStatus()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Decorator) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.Decorator")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Operation")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetOperation())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Tracing) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.Tracing")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetClientSampling()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClientSampling")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetClientSampling(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ClientSampling")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRandomSampling()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RandomSampling")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRandomSampling(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RandomSampling")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetOverallSampling()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OverallSampling")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOverallSampling(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OverallSampling")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *VirtualCluster) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.VirtualCluster")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Pattern")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPattern())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Method")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMethod()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimit) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RateLimit")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetStage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Stage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Stage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("DisableKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDisableKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Actions")); err != nil { + return 0, err + } + for i, v := range m.GetActions() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HeaderMatcher) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.HeaderMatcher")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("InvertMatch")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetInvertMatch()) + if err != nil { + return 0, err + } + + switch m.HeaderMatchSpecifier.(type) { + + case *HeaderMatcher_ExactMatch: + + if _, err = hasher.Write([]byte("ExactMatch")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetExactMatch())); err != nil { + return 0, err + } + + case *HeaderMatcher_RegexMatch: + + if _, err = hasher.Write([]byte("RegexMatch")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRegexMatch())); err != nil { + return 0, err + } + + case *HeaderMatcher_RangeMatch: + + if h, ok := interface{}(m.GetRangeMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RangeMatch")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRangeMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RangeMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *HeaderMatcher_PresentMatch: + + if _, err = hasher.Write([]byte("PresentMatch")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPresentMatch()) + if err != nil { + return 0, err + } + + case *HeaderMatcher_PrefixMatch: + + if _, err = hasher.Write([]byte("PrefixMatch")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPrefixMatch())); err != nil { + return 0, err + } + + case *HeaderMatcher_SuffixMatch: + + if _, err = hasher.Write([]byte("SuffixMatch")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSuffixMatch())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *QueryParameterMatcher) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.QueryParameterMatcher")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetValue())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRegex()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Regex")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRegex(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Regex")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *WeightedCluster_ClusterWeight) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.WeightedCluster_ClusterWeight")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetWeight()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Weight")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWeight(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Weight")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMetadataMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MetadataMatch")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadataMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MetadataMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RequestHeadersToAdd")); err != nil { + return 0, err + } + for i, v := range m.GetRequestHeadersToAdd() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("RequestHeadersToRemove")); err != nil { + return 0, err + } + for i, v := range m.GetRequestHeadersToRemove() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("ResponseHeadersToAdd")); err != nil { + return 0, err + } + for i, v := range m.GetResponseHeadersToAdd() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("ResponseHeadersToRemove")); err != nil { + return 0, err + } + for i, v := range m.GetResponseHeadersToRemove() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetPerFilterConfig() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetTypedPerFilterConfig() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteMatch_ConnectMatcher) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RouteMatch_ConnectMatcher")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteMatch_GrpcRouteMatchOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RouteMatch_GrpcRouteMatchOptions")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteAction_RequestMirrorPolicy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RouteAction_RequestMirrorPolicy")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Cluster")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCluster())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RuntimeKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRuntimeKey())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRuntimeFraction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RuntimeFraction")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRuntimeFraction(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RuntimeFraction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteAction_HashPolicy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RouteAction_HashPolicy")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Terminal")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetTerminal()) + if err != nil { + return 0, err + } + + switch m.PolicySpecifier.(type) { + + case *RouteAction_HashPolicy_Header_: + + if h, ok := interface{}(m.GetHeader()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeader(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteAction_HashPolicy_Cookie_: + + if h, ok := interface{}(m.GetCookie()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cookie")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCookie(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Cookie")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteAction_HashPolicy_ConnectionProperties_: + + if h, ok := interface{}(m.GetConnectionProperties()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectionProperties")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConnectionProperties(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConnectionProperties")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteAction_UpgradeConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RouteAction_UpgradeConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("UpgradeType")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUpgradeType())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Enabled")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnabled(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Enabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteAction_HashPolicy_Header) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RouteAction_HashPolicy_Header")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("HeaderName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHeaderName())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteAction_HashPolicy_Cookie) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RouteAction_HashPolicy_Cookie")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTtl()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ttl")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTtl(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Ttl")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPath())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteAction_HashPolicy_ConnectionProperties) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RouteAction_HashPolicy_ConnectionProperties")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SourceIp")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetSourceIp()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RetryPolicy_RetryPriority) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RetryPolicy_RetryPriority")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + switch m.ConfigType.(type) { + + case *RetryPolicy_RetryPriority_Config: + + if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RetryPolicy_RetryPriority_TypedConfig: + + if h, ok := interface{}(m.GetTypedConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RetryPolicy_RetryHostPredicate) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RetryPolicy_RetryHostPredicate")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + switch m.ConfigType.(type) { + + case *RetryPolicy_RetryHostPredicate_Config: + + if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RetryPolicy_RetryHostPredicate_TypedConfig: + + if h, ok := interface{}(m.GetTypedConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RetryPolicy_RetryBackOff) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RetryPolicy_RetryBackOff")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetBaseInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBaseInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimit_Action) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RateLimit_Action")); err != nil { + return 0, err + } + + switch m.ActionSpecifier.(type) { + + case *RateLimit_Action_SourceCluster_: + + if h, ok := interface{}(m.GetSourceCluster()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SourceCluster")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSourceCluster(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SourceCluster")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RateLimit_Action_DestinationCluster_: + + if h, ok := interface{}(m.GetDestinationCluster()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DestinationCluster")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDestinationCluster(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DestinationCluster")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RateLimit_Action_RequestHeaders_: + + if h, ok := interface{}(m.GetRequestHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestHeaders")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RateLimit_Action_RemoteAddress_: + + if h, ok := interface{}(m.GetRemoteAddress()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RemoteAddress")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRemoteAddress(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RemoteAddress")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RateLimit_Action_GenericKey_: + + if h, ok := interface{}(m.GetGenericKey()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GenericKey")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGenericKey(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GenericKey")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RateLimit_Action_HeaderValueMatch_: + + if h, ok := interface{}(m.GetHeaderValueMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderValueMatch")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaderValueMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HeaderValueMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimit_Action_SourceCluster) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RateLimit_Action_SourceCluster")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimit_Action_DestinationCluster) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RateLimit_Action_DestinationCluster")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimit_Action_RequestHeaders) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RateLimit_Action_RequestHeaders")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("HeaderName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHeaderName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DescriptorKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDescriptorKey())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimit_Action_RemoteAddress) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RateLimit_Action_RemoteAddress")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimit_Action_GenericKey) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RateLimit_Action_GenericKey")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DescriptorValue")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDescriptorValue())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimit_Action_HeaderValueMatch) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.api.v2.route.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route.RateLimit_Action_HeaderValueMatch")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DescriptorValue")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDescriptorValue())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetExpectMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ExpectMatch")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExpectMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ExpectMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + for i, v := range m.GetHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3/mutation_rules.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3/mutation_rules.pb.clone.go new file mode 100644 index 000000000..61a62b098 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3/mutation_rules.pb.clone.go @@ -0,0 +1,118 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/common/mutation_rules/v3/mutation_rules.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *HeaderMutationRules) Clone() proto.Message { + var target *HeaderMutationRules + if m == nil { + return target + } + target = &HeaderMutationRules{} + + if h, ok := interface{}(m.GetAllowAllRouting()).(clone.Cloner); ok { + target.AllowAllRouting = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.AllowAllRouting = proto.Clone(m.GetAllowAllRouting()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetAllowEnvoy()).(clone.Cloner); ok { + target.AllowEnvoy = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.AllowEnvoy = proto.Clone(m.GetAllowEnvoy()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetDisallowSystem()).(clone.Cloner); ok { + target.DisallowSystem = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.DisallowSystem = proto.Clone(m.GetDisallowSystem()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetDisallowAll()).(clone.Cloner); ok { + target.DisallowAll = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.DisallowAll = proto.Clone(m.GetDisallowAll()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetAllowExpression()).(clone.Cloner); ok { + target.AllowExpression = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.RegexMatcher) + } else { + target.AllowExpression = proto.Clone(m.GetAllowExpression()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.RegexMatcher) + } + + if h, ok := interface{}(m.GetDisallowExpression()).(clone.Cloner); ok { + target.DisallowExpression = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.RegexMatcher) + } else { + target.DisallowExpression = proto.Clone(m.GetDisallowExpression()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.RegexMatcher) + } + + if h, ok := interface{}(m.GetDisallowIsError()).(clone.Cloner); ok { + target.DisallowIsError = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.DisallowIsError = proto.Clone(m.GetDisallowIsError()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *HeaderMutation) Clone() proto.Message { + var target *HeaderMutation + if m == nil { + return target + } + target = &HeaderMutation{} + + switch m.Action.(type) { + + case *HeaderMutation_Remove: + + target.Action = &HeaderMutation_Remove{ + Remove: m.GetRemove(), + } + + case *HeaderMutation_Append: + + if h, ok := interface{}(m.GetAppend()).(clone.Cloner); ok { + target.Action = &HeaderMutation_Append{ + Append: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption), + } + } else { + target.Action = &HeaderMutation_Append{ + Append: proto.Clone(m.GetAppend()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption), + } + } + + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3/mutation_rules.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3/mutation_rules.pb.equal.go new file mode 100644 index 000000000..f21641453 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3/mutation_rules.pb.equal.go @@ -0,0 +1,177 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/common/mutation_rules/v3/mutation_rules.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *HeaderMutationRules) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HeaderMutationRules) + if !ok { + that2, ok := that.(HeaderMutationRules) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetAllowAllRouting()).(equality.Equalizer); ok { + if !h.Equal(target.GetAllowAllRouting()) { + return false + } + } else { + if !proto.Equal(m.GetAllowAllRouting(), target.GetAllowAllRouting()) { + return false + } + } + + if h, ok := interface{}(m.GetAllowEnvoy()).(equality.Equalizer); ok { + if !h.Equal(target.GetAllowEnvoy()) { + return false + } + } else { + if !proto.Equal(m.GetAllowEnvoy(), target.GetAllowEnvoy()) { + return false + } + } + + if h, ok := interface{}(m.GetDisallowSystem()).(equality.Equalizer); ok { + if !h.Equal(target.GetDisallowSystem()) { + return false + } + } else { + if !proto.Equal(m.GetDisallowSystem(), target.GetDisallowSystem()) { + return false + } + } + + if h, ok := interface{}(m.GetDisallowAll()).(equality.Equalizer); ok { + if !h.Equal(target.GetDisallowAll()) { + return false + } + } else { + if !proto.Equal(m.GetDisallowAll(), target.GetDisallowAll()) { + return false + } + } + + if h, ok := interface{}(m.GetAllowExpression()).(equality.Equalizer); ok { + if !h.Equal(target.GetAllowExpression()) { + return false + } + } else { + if !proto.Equal(m.GetAllowExpression(), target.GetAllowExpression()) { + return false + } + } + + if h, ok := interface{}(m.GetDisallowExpression()).(equality.Equalizer); ok { + if !h.Equal(target.GetDisallowExpression()) { + return false + } + } else { + if !proto.Equal(m.GetDisallowExpression(), target.GetDisallowExpression()) { + return false + } + } + + if h, ok := interface{}(m.GetDisallowIsError()).(equality.Equalizer); ok { + if !h.Equal(target.GetDisallowIsError()) { + return false + } + } else { + if !proto.Equal(m.GetDisallowIsError(), target.GetDisallowIsError()) { + return false + } + } + + return true +} + +// Equal function +func (m *HeaderMutation) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HeaderMutation) + if !ok { + that2, ok := that.(HeaderMutation) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + switch m.Action.(type) { + + case *HeaderMutation_Remove: + if _, ok := target.Action.(*HeaderMutation_Remove); !ok { + return false + } + + if strings.Compare(m.GetRemove(), target.GetRemove()) != 0 { + return false + } + + case *HeaderMutation_Append: + if _, ok := target.Action.(*HeaderMutation_Append); !ok { + return false + } + + if h, ok := interface{}(m.GetAppend()).(equality.Equalizer); ok { + if !h.Equal(target.GetAppend()) { + return false + } + } else { + if !proto.Equal(m.GetAppend(), target.GetAppend()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.Action != target.Action { + return false + } + } + + return true +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3/mutation_rules.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3/mutation_rules.pb.go new file mode 100644 index 000000000..2112989d0 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3/mutation_rules.pb.go @@ -0,0 +1,419 @@ +// copied from https://github.com/envoyproxy/envoy/blob/ad89a587aa0177bfdad6b5c968a6aead5d9be7a4/api/envoy/config/common/mutation_rules/v3/mutation_rules.proto + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/common/mutation_rules/v3/mutation_rules.proto + +// manually updated pkg + +package v3 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/envoyproxy/protoc-gen-validate/validate" + _ "github.com/solo-io/protoc-gen-ext/extproto" + v31 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3" + _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// The HeaderMutationRules structure specifies what headers may be +// manipulated by a processing filter. This set of rules makes it +// possible to control which modifications a filter may make. +// +// By default, an external processing server may add, modify, or remove +// any header except for an "Envoy internal" header (which is typically +// denoted by an x-envoy prefix) or specific headers that may affect +// further filter processing: +// +// * `host` +// * `:authority` +// * `:scheme` +// * `:method` +// +// Every attempt to add, change, append, or remove a header will be +// tested against the rules here. Disallowed header mutations will be +// ignored unless `disallow_is_error` is set to true. +// +// Attempts to remove headers are further constrained -- regardless of the +// settings, system-defined headers (that start with `:`) and the `host` +// header may never be removed. +// +// In addition, a counter will be incremented whenever a mutation is +// rejected. In the ext_proc filter, that counter is named +// `rejected_header_mutations`. +// [#next-free-field: 8] +type HeaderMutationRules struct { + state protoimpl.MessageState `protogen:"open.v1"` + // By default, certain headers that could affect processing of subsequent + // filters or request routing cannot be modified. These headers are + // `host`, `:authority`, `:scheme`, and `:method`. Setting this parameter + // to true allows these headers to be modified as well. + AllowAllRouting *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=allow_all_routing,json=allowAllRouting,proto3" json:"allow_all_routing,omitempty"` + // If true, allow modification of envoy internal headers. By default, these + // start with `x-envoy` but this may be overridden in the `Bootstrap` + // configuration using the + // :ref:`header_prefix ` + // field. Default is false. + AllowEnvoy *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=allow_envoy,json=allowEnvoy,proto3" json:"allow_envoy,omitempty"` + // If true, prevent modification of any system header, defined as a header + // that starts with a `:` character, regardless of any other settings. + // A processing server may still override the `:status` of an HTTP response + // using an `ImmediateResponse` message. Default is false. + DisallowSystem *wrapperspb.BoolValue `protobuf:"bytes,3,opt,name=disallow_system,json=disallowSystem,proto3" json:"disallow_system,omitempty"` + // If true, prevent modifications of all header values, regardless of any + // other settings. A processing server may still override the `:status` + // of an HTTP response using an `ImmediateResponse` message. Default is false. + DisallowAll *wrapperspb.BoolValue `protobuf:"bytes,4,opt,name=disallow_all,json=disallowAll,proto3" json:"disallow_all,omitempty"` + // If set, specifically allow any header that matches this regular + // expression. This overrides all other settings except for + // `disallow_expression`. + AllowExpression *v3.RegexMatcher `protobuf:"bytes,5,opt,name=allow_expression,json=allowExpression,proto3" json:"allow_expression,omitempty"` + // If set, specifically disallow any header that matches this regular + // expression regardless of any other settings. + DisallowExpression *v3.RegexMatcher `protobuf:"bytes,6,opt,name=disallow_expression,json=disallowExpression,proto3" json:"disallow_expression,omitempty"` + // If true, and if the rules in this list cause a header mutation to be + // disallowed, then the filter using this configuration will terminate the + // request with a 500 error. In addition, regardless of the setting of this + // parameter, any attempt to set, add, or modify a disallowed header will + // cause the `rejected_header_mutations` counter to be incremented. + // Default is false. + DisallowIsError *wrapperspb.BoolValue `protobuf:"bytes,7,opt,name=disallow_is_error,json=disallowIsError,proto3" json:"disallow_is_error,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HeaderMutationRules) Reset() { + *x = HeaderMutationRules{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HeaderMutationRules) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HeaderMutationRules) ProtoMessage() {} + +func (x *HeaderMutationRules) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HeaderMutationRules.ProtoReflect.Descriptor instead. +func (*HeaderMutationRules) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDescGZIP(), []int{0} +} + +func (x *HeaderMutationRules) GetAllowAllRouting() *wrapperspb.BoolValue { + if x != nil { + return x.AllowAllRouting + } + return nil +} + +func (x *HeaderMutationRules) GetAllowEnvoy() *wrapperspb.BoolValue { + if x != nil { + return x.AllowEnvoy + } + return nil +} + +func (x *HeaderMutationRules) GetDisallowSystem() *wrapperspb.BoolValue { + if x != nil { + return x.DisallowSystem + } + return nil +} + +func (x *HeaderMutationRules) GetDisallowAll() *wrapperspb.BoolValue { + if x != nil { + return x.DisallowAll + } + return nil +} + +func (x *HeaderMutationRules) GetAllowExpression() *v3.RegexMatcher { + if x != nil { + return x.AllowExpression + } + return nil +} + +func (x *HeaderMutationRules) GetDisallowExpression() *v3.RegexMatcher { + if x != nil { + return x.DisallowExpression + } + return nil +} + +func (x *HeaderMutationRules) GetDisallowIsError() *wrapperspb.BoolValue { + if x != nil { + return x.DisallowIsError + } + return nil +} + +// The HeaderMutation structure specifies an action that may be taken on HTTP +// headers. +type HeaderMutation struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Action: + // + // *HeaderMutation_Remove + // *HeaderMutation_Append + Action isHeaderMutation_Action `protobuf_oneof:"action"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HeaderMutation) Reset() { + *x = HeaderMutation{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HeaderMutation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HeaderMutation) ProtoMessage() {} + +func (x *HeaderMutation) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HeaderMutation.ProtoReflect.Descriptor instead. +func (*HeaderMutation) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDescGZIP(), []int{1} +} + +func (x *HeaderMutation) GetAction() isHeaderMutation_Action { + if x != nil { + return x.Action + } + return nil +} + +func (x *HeaderMutation) GetRemove() string { + if x != nil { + if x, ok := x.Action.(*HeaderMutation_Remove); ok { + return x.Remove + } + } + return "" +} + +func (x *HeaderMutation) GetAppend() *v31.HeaderValueOption { + if x != nil { + if x, ok := x.Action.(*HeaderMutation_Append); ok { + return x.Append + } + } + return nil +} + +type isHeaderMutation_Action interface { + isHeaderMutation_Action() +} + +type HeaderMutation_Remove struct { + // Remove the specified header if it exists. + Remove string `protobuf:"bytes,1,opt,name=remove,proto3,oneof"` +} + +type HeaderMutation_Append struct { + // Append new header by the specified HeaderValueOption. + Append *v31.HeaderValueOption `protobuf:"bytes,2,opt,name=append,proto3,oneof"` +} + +func (*HeaderMutation_Remove) isHeaderMutation_Action() {} + +func (*HeaderMutation_Append) isHeaderMutation_Action() {} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDesc = string([]byte{ + 0x0a, 0x6e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x76, 0x33, 0x2f, 0x6d, 0x75, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x2d, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6d, 0x75, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x33, 0x1a, + 0x53, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x55, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, + 0x74, 0x79, 0x70, 0x65, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2f, 0x76, 0x33, 0x2f, + 0x72, 0x65, 0x67, 0x65, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, + 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x75, 0x64, 0x70, + 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, + 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9c, 0x04, 0x0a, 0x13, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, + 0x46, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x72, 0x6f, 0x75, + 0x74, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, + 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6c, 0x6c, + 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x5f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, + 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x45, + 0x6e, 0x76, 0x6f, 0x79, 0x12, 0x43, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x3d, 0x0a, 0x0c, 0x64, 0x69, 0x73, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x69, 0x73, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6c, 0x6c, 0x12, 0x56, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, + 0x76, 0x33, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, + 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x5c, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, + 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, + 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x12, 0x64, 0x69, 0x73, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x46, + 0x0a, 0x11, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x73, 0x5f, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x49, + 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x91, 0x01, 0x0a, 0x0e, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x06, 0x72, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, + 0xc8, 0x01, 0x00, 0xc0, 0x01, 0x02, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x12, 0x49, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x00, 0x52, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x42, 0x0d, 0x0a, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x42, 0xc1, 0x01, 0xb8, 0xf5, 0x04, + 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, + 0x02, 0x0a, 0x33, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, + 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x75, + 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x33, 0x42, 0x12, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x75, 0x6c, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x60, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, + 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6d, 0x75, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x76, 0x33, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_goTypes = []any{ + (*HeaderMutationRules)(nil), // 0: solo.io.envoy.config.common.mutation_rules.v3.HeaderMutationRules + (*HeaderMutation)(nil), // 1: solo.io.envoy.config.common.mutation_rules.v3.HeaderMutation + (*wrapperspb.BoolValue)(nil), // 2: google.protobuf.BoolValue + (*v3.RegexMatcher)(nil), // 3: solo.io.envoy.type.matcher.v3.RegexMatcher + (*v31.HeaderValueOption)(nil), // 4: solo.io.envoy.config.core.v3.HeaderValueOption +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_depIdxs = []int32{ + 2, // 0: solo.io.envoy.config.common.mutation_rules.v3.HeaderMutationRules.allow_all_routing:type_name -> google.protobuf.BoolValue + 2, // 1: solo.io.envoy.config.common.mutation_rules.v3.HeaderMutationRules.allow_envoy:type_name -> google.protobuf.BoolValue + 2, // 2: solo.io.envoy.config.common.mutation_rules.v3.HeaderMutationRules.disallow_system:type_name -> google.protobuf.BoolValue + 2, // 3: solo.io.envoy.config.common.mutation_rules.v3.HeaderMutationRules.disallow_all:type_name -> google.protobuf.BoolValue + 3, // 4: solo.io.envoy.config.common.mutation_rules.v3.HeaderMutationRules.allow_expression:type_name -> solo.io.envoy.type.matcher.v3.RegexMatcher + 3, // 5: solo.io.envoy.config.common.mutation_rules.v3.HeaderMutationRules.disallow_expression:type_name -> solo.io.envoy.type.matcher.v3.RegexMatcher + 2, // 6: solo.io.envoy.config.common.mutation_rules.v3.HeaderMutationRules.disallow_is_error:type_name -> google.protobuf.BoolValue + 4, // 7: solo.io.envoy.config.common.mutation_rules.v3.HeaderMutation.append:type_name -> solo.io.envoy.config.core.v3.HeaderValueOption + 8, // [8:8] is the sub-list for method output_type + 8, // [8:8] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_msgTypes[1].OneofWrappers = []any{ + (*HeaderMutation_Remove)(nil), + (*HeaderMutation_Append)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDesc)), + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_common_mutation_rules_v3_mutation_rules_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3/mutation_rules.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3/mutation_rules.pb.hash.go new file mode 100644 index 000000000..5fd56e085 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3/mutation_rules.pb.hash.go @@ -0,0 +1,238 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/common/mutation_rules/v3/mutation_rules.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HeaderMutationRules) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.common.mutation_rules.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3.HeaderMutationRules")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAllowAllRouting()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowAllRouting")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAllowAllRouting(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AllowAllRouting")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAllowEnvoy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowEnvoy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAllowEnvoy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AllowEnvoy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDisallowSystem()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisallowSystem")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisallowSystem(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisallowSystem")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDisallowAll()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisallowAll")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisallowAll(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisallowAll")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAllowExpression()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowExpression")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAllowExpression(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AllowExpression")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDisallowExpression()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisallowExpression")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisallowExpression(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisallowExpression")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDisallowIsError()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisallowIsError")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisallowIsError(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisallowIsError")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HeaderMutation) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.common.mutation_rules.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3.HeaderMutation")); err != nil { + return 0, err + } + + switch m.Action.(type) { + + case *HeaderMutation_Remove: + + if _, err = hasher.Write([]byte(m.GetRemove())); err != nil { + return 0, err + } + + case *HeaderMutation_Append: + + if h, ok := interface{}(m.GetAppend()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Append")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAppend(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Append")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3/mutation_rules.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3/mutation_rules.pb.uniquehash.go new file mode 100644 index 000000000..fdc6e6ef9 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3/mutation_rules.pb.uniquehash.go @@ -0,0 +1,241 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/common/mutation_rules/v3/mutation_rules.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HeaderMutationRules) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.common.mutation_rules.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3.HeaderMutationRules")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAllowAllRouting()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowAllRouting")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAllowAllRouting(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AllowAllRouting")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAllowEnvoy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowEnvoy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAllowEnvoy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AllowEnvoy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDisallowSystem()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisallowSystem")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisallowSystem(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisallowSystem")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDisallowAll()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisallowAll")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisallowAll(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisallowAll")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAllowExpression()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowExpression")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAllowExpression(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AllowExpression")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDisallowExpression()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisallowExpression")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisallowExpression(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisallowExpression")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDisallowIsError()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisallowIsError")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisallowIsError(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisallowIsError")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HeaderMutation) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.common.mutation_rules.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3.HeaderMutation")); err != nil { + return 0, err + } + + switch m.Action.(type) { + + case *HeaderMutation_Remove: + + if _, err = hasher.Write([]byte("Remove")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRemove())); err != nil { + return 0, err + } + + case *HeaderMutation_Append: + + if h, ok := interface{}(m.GetAppend()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Append")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAppend(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Append")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/address.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/address.pb.clone.go new file mode 100644 index 000000000..1f68a93b5 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/address.pb.clone.go @@ -0,0 +1,201 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/address.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *Pipe) Clone() proto.Message { + var target *Pipe + if m == nil { + return target + } + target = &Pipe{} + + target.Path = m.GetPath() + + target.Mode = m.GetMode() + + return target +} + +// Clone function +func (m *SocketAddress) Clone() proto.Message { + var target *SocketAddress + if m == nil { + return target + } + target = &SocketAddress{} + + target.Protocol = m.GetProtocol() + + target.Address = m.GetAddress() + + target.ResolverName = m.GetResolverName() + + target.Ipv4Compat = m.GetIpv4Compat() + + switch m.PortSpecifier.(type) { + + case *SocketAddress_PortValue: + + target.PortSpecifier = &SocketAddress_PortValue{ + PortValue: m.GetPortValue(), + } + + case *SocketAddress_NamedPort: + + target.PortSpecifier = &SocketAddress_NamedPort{ + NamedPort: m.GetNamedPort(), + } + + } + + return target +} + +// Clone function +func (m *TcpKeepalive) Clone() proto.Message { + var target *TcpKeepalive + if m == nil { + return target + } + target = &TcpKeepalive{} + + if h, ok := interface{}(m.GetKeepaliveProbes()).(clone.Cloner); ok { + target.KeepaliveProbes = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.KeepaliveProbes = proto.Clone(m.GetKeepaliveProbes()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetKeepaliveTime()).(clone.Cloner); ok { + target.KeepaliveTime = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.KeepaliveTime = proto.Clone(m.GetKeepaliveTime()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetKeepaliveInterval()).(clone.Cloner); ok { + target.KeepaliveInterval = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.KeepaliveInterval = proto.Clone(m.GetKeepaliveInterval()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + return target +} + +// Clone function +func (m *BindConfig) Clone() proto.Message { + var target *BindConfig + if m == nil { + return target + } + target = &BindConfig{} + + if h, ok := interface{}(m.GetSourceAddress()).(clone.Cloner); ok { + target.SourceAddress = h.Clone().(*SocketAddress) + } else { + target.SourceAddress = proto.Clone(m.GetSourceAddress()).(*SocketAddress) + } + + if h, ok := interface{}(m.GetFreebind()).(clone.Cloner); ok { + target.Freebind = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Freebind = proto.Clone(m.GetFreebind()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if m.GetSocketOptions() != nil { + target.SocketOptions = make([]*SocketOption, len(m.GetSocketOptions())) + for idx, v := range m.GetSocketOptions() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SocketOptions[idx] = h.Clone().(*SocketOption) + } else { + target.SocketOptions[idx] = proto.Clone(v).(*SocketOption) + } + + } + } + + return target +} + +// Clone function +func (m *Address) Clone() proto.Message { + var target *Address + if m == nil { + return target + } + target = &Address{} + + switch m.Address.(type) { + + case *Address_SocketAddress: + + if h, ok := interface{}(m.GetSocketAddress()).(clone.Cloner); ok { + target.Address = &Address_SocketAddress{ + SocketAddress: h.Clone().(*SocketAddress), + } + } else { + target.Address = &Address_SocketAddress{ + SocketAddress: proto.Clone(m.GetSocketAddress()).(*SocketAddress), + } + } + + case *Address_Pipe: + + if h, ok := interface{}(m.GetPipe()).(clone.Cloner); ok { + target.Address = &Address_Pipe{ + Pipe: h.Clone().(*Pipe), + } + } else { + target.Address = &Address_Pipe{ + Pipe: proto.Clone(m.GetPipe()).(*Pipe), + } + } + + } + + return target +} + +// Clone function +func (m *CidrRange) Clone() proto.Message { + var target *CidrRange + if m == nil { + return target + } + target = &CidrRange{} + + target.AddressPrefix = m.GetAddressPrefix() + + if h, ok := interface{}(m.GetPrefixLen()).(clone.Cloner); ok { + target.PrefixLen = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.PrefixLen = proto.Clone(m.GetPrefixLen()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/address.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/address.pb.equal.go index e84de3740..d5fceff6c 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/address.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/address.pb.equal.go @@ -97,17 +97,28 @@ func (m *SocketAddress) Equal(that interface{}) bool { switch m.PortSpecifier.(type) { case *SocketAddress_PortValue: + if _, ok := target.PortSpecifier.(*SocketAddress_PortValue); !ok { + return false + } if m.GetPortValue() != target.GetPortValue() { return false } case *SocketAddress_NamedPort: + if _, ok := target.PortSpecifier.(*SocketAddress_NamedPort); !ok { + return false + } if strings.Compare(m.GetNamedPort(), target.GetNamedPort()) != 0 { return false } + default: + // m is nil but target is not nil + if m.PortSpecifier != target.PortSpecifier { + return false + } } return true @@ -252,6 +263,9 @@ func (m *Address) Equal(that interface{}) bool { switch m.Address.(type) { case *Address_SocketAddress: + if _, ok := target.Address.(*Address_SocketAddress); !ok { + return false + } if h, ok := interface{}(m.GetSocketAddress()).(equality.Equalizer); ok { if !h.Equal(target.GetSocketAddress()) { @@ -264,6 +278,9 @@ func (m *Address) Equal(that interface{}) bool { } case *Address_Pipe: + if _, ok := target.Address.(*Address_Pipe); !ok { + return false + } if h, ok := interface{}(m.GetPipe()).(equality.Equalizer); ok { if !h.Equal(target.GetPipe()) { @@ -275,6 +292,11 @@ func (m *Address) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.Address != target.Address { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/address.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/address.pb.go index e65c5ad31..bf9e89ff3 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/address.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/address.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/address.proto @@ -9,14 +9,14 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -26,10 +26,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type SocketAddress_Protocol int32 const ( @@ -77,26 +73,23 @@ func (SocketAddress_Protocol) EnumDescriptor() ([]byte, []int) { } type Pipe struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Unix Domain Socket path. On Linux, paths starting with '@' will use the // abstract namespace. The starting '@' is replaced by a null byte by Envoy. // Paths starting with '@' will result in an error in environments other than // Linux. Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` // The mode for the Pipe. Not applicable for abstract sockets. - Mode uint32 `protobuf:"varint,2,opt,name=mode,proto3" json:"mode,omitempty"` + Mode uint32 `protobuf:"varint,2,opt,name=mode,proto3" json:"mode,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Pipe) Reset() { *x = Pipe{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Pipe) String() string { @@ -107,7 +100,7 @@ func (*Pipe) ProtoMessage() {} func (x *Pipe) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -138,24 +131,22 @@ func (x *Pipe) GetMode() uint32 { // [#next-free-field: 7] type SocketAddress struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Protocol SocketAddress_Protocol `protobuf:"varint,1,opt,name=protocol,proto3,enum=solo.io.envoy.config.core.v3.SocketAddress_Protocol" json:"protocol,omitempty"` - // The address for this socket. :ref:`Listeners ` will bind - // to the address. An empty address is not allowed. Specify ``0.0.0.0`` or ``::`` + // The address for this socket. Listeners will bind + // to the address. An empty address is not allowed. Specify `0.0.0.0` or `::` // to bind to any address. [#comment:TODO(zuercher) reinstate when implemented: // It is possible to distinguish a Listener address via the prefix/suffix matching - // in :ref:`FilterChainMatch `.] When used - // within an upstream :ref:`BindConfig `, the address + // in FilterChainMatch.] When used + // within an upstream BindConfig, the address // controls the source address of outbound connections. For :ref:`clusters // `, the cluster type determines whether the // address must be an IP (*STATIC* or *EDS* clusters) or a hostname resolved by DNS // (*STRICT_DNS* or *LOGICAL_DNS* clusters). Address resolution can be customized - // via :ref:`resolver_name `. + // via resolver_name. Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` - // Types that are assignable to PortSpecifier: + // Types that are valid to be assigned to PortSpecifier: + // // *SocketAddress_PortValue // *SocketAddress_NamedPort PortSpecifier isSocketAddress_PortSpecifier `protobuf_oneof:"port_specifier"` @@ -165,20 +156,19 @@ type SocketAddress struct { // should be set for resolution other than DNS. Specifying a custom resolver with // *STRICT_DNS* or *LOGICAL_DNS* will generate an error at runtime. ResolverName string `protobuf:"bytes,5,opt,name=resolver_name,json=resolverName,proto3" json:"resolver_name,omitempty"` - // When binding to an IPv6 address above, this enables `IPv4 compatibility - // `_. Binding to ``::`` will + // When binding to an IPv6 address above, this enables [IPv4 compatibility](https://datatracker.ietf.org/doc/html/rfc3493#page-11). Binding to `::` will // allow both IPv4 and IPv6 connections, with peer IPv4 addresses mapped into - // IPv6 space as ``::FFFF:``. - Ipv4Compat bool `protobuf:"varint,6,opt,name=ipv4_compat,json=ipv4Compat,proto3" json:"ipv4_compat,omitempty"` + // IPv6 space as `::FFFF:`. + Ipv4Compat bool `protobuf:"varint,6,opt,name=ipv4_compat,json=ipv4Compat,proto3" json:"ipv4_compat,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SocketAddress) Reset() { *x = SocketAddress{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SocketAddress) String() string { @@ -189,7 +179,7 @@ func (*SocketAddress) ProtoMessage() {} func (x *SocketAddress) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -218,23 +208,27 @@ func (x *SocketAddress) GetAddress() string { return "" } -func (m *SocketAddress) GetPortSpecifier() isSocketAddress_PortSpecifier { - if m != nil { - return m.PortSpecifier +func (x *SocketAddress) GetPortSpecifier() isSocketAddress_PortSpecifier { + if x != nil { + return x.PortSpecifier } return nil } func (x *SocketAddress) GetPortValue() uint32 { - if x, ok := x.GetPortSpecifier().(*SocketAddress_PortValue); ok { - return x.PortValue + if x != nil { + if x, ok := x.PortSpecifier.(*SocketAddress_PortValue); ok { + return x.PortValue + } } return 0 } func (x *SocketAddress) GetNamedPort() string { - if x, ok := x.GetPortSpecifier().(*SocketAddress_NamedPort); ok { - return x.NamedPort + if x != nil { + if x, ok := x.PortSpecifier.(*SocketAddress_NamedPort); ok { + return x.NamedPort + } } return "" } @@ -273,30 +267,27 @@ func (*SocketAddress_PortValue) isSocketAddress_PortSpecifier() {} func (*SocketAddress_NamedPort) isSocketAddress_PortSpecifier() {} type TcpKeepalive struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Maximum number of keepalive probes to send without response before deciding // the connection is dead. Default is to use the OS level configuration (unless // overridden, Linux defaults to 9.) - KeepaliveProbes *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=keepalive_probes,json=keepaliveProbes,proto3" json:"keepalive_probes,omitempty"` + KeepaliveProbes *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=keepalive_probes,json=keepaliveProbes,proto3" json:"keepalive_probes,omitempty"` // The number of seconds a connection needs to be idle before keep-alive probes // start being sent. Default is to use the OS level configuration (unless // overridden, Linux defaults to 7200s (i.e., 2 hours.) - KeepaliveTime *wrappers.UInt32Value `protobuf:"bytes,2,opt,name=keepalive_time,json=keepaliveTime,proto3" json:"keepalive_time,omitempty"` + KeepaliveTime *wrapperspb.UInt32Value `protobuf:"bytes,2,opt,name=keepalive_time,json=keepaliveTime,proto3" json:"keepalive_time,omitempty"` // The number of seconds between keep-alive probes. Default is to use the OS // level configuration (unless overridden, Linux defaults to 75s.) - KeepaliveInterval *wrappers.UInt32Value `protobuf:"bytes,3,opt,name=keepalive_interval,json=keepaliveInterval,proto3" json:"keepalive_interval,omitempty"` + KeepaliveInterval *wrapperspb.UInt32Value `protobuf:"bytes,3,opt,name=keepalive_interval,json=keepaliveInterval,proto3" json:"keepalive_interval,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TcpKeepalive) Reset() { *x = TcpKeepalive{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TcpKeepalive) String() string { @@ -307,7 +298,7 @@ func (*TcpKeepalive) ProtoMessage() {} func (x *TcpKeepalive) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -322,21 +313,21 @@ func (*TcpKeepalive) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_rawDescGZIP(), []int{2} } -func (x *TcpKeepalive) GetKeepaliveProbes() *wrappers.UInt32Value { +func (x *TcpKeepalive) GetKeepaliveProbes() *wrapperspb.UInt32Value { if x != nil { return x.KeepaliveProbes } return nil } -func (x *TcpKeepalive) GetKeepaliveTime() *wrappers.UInt32Value { +func (x *TcpKeepalive) GetKeepaliveTime() *wrapperspb.UInt32Value { if x != nil { return x.KeepaliveTime } return nil } -func (x *TcpKeepalive) GetKeepaliveInterval() *wrappers.UInt32Value { +func (x *TcpKeepalive) GetKeepaliveInterval() *wrapperspb.UInt32Value { if x != nil { return x.KeepaliveInterval } @@ -344,10 +335,7 @@ func (x *TcpKeepalive) GetKeepaliveInterval() *wrappers.UInt32Value { } type BindConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The address to bind to when creating a socket. SourceAddress *SocketAddress `protobuf:"bytes,1,opt,name=source_address,json=sourceAddress,proto3" json:"source_address,omitempty"` // Whether to set the *IP_FREEBIND* option when creating the socket. When this @@ -357,19 +345,19 @@ type BindConfig struct { // to false, the option *IP_FREEBIND* is disabled on the socket. When this // flag is not set (default), the socket is not modified, i.e. the option is // neither enabled nor disabled. - Freebind *wrappers.BoolValue `protobuf:"bytes,2,opt,name=freebind,proto3" json:"freebind,omitempty"` + Freebind *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=freebind,proto3" json:"freebind,omitempty"` // Additional socket options that may not be present in Envoy source code or // precompiled binaries. SocketOptions []*SocketOption `protobuf:"bytes,3,rep,name=socket_options,json=socketOptions,proto3" json:"socket_options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BindConfig) Reset() { *x = BindConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BindConfig) String() string { @@ -380,7 +368,7 @@ func (*BindConfig) ProtoMessage() {} func (x *BindConfig) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -402,7 +390,7 @@ func (x *BindConfig) GetSourceAddress() *SocketAddress { return nil } -func (x *BindConfig) GetFreebind() *wrappers.BoolValue { +func (x *BindConfig) GetFreebind() *wrapperspb.BoolValue { if x != nil { return x.Freebind } @@ -420,23 +408,21 @@ func (x *BindConfig) GetSocketOptions() []*SocketOption { // used to tell Envoy where to bind/listen, connect to upstream and find // management servers. type Address struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Address: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Address: + // // *Address_SocketAddress // *Address_Pipe - Address isAddress_Address `protobuf_oneof:"address"` + Address isAddress_Address `protobuf_oneof:"address"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Address) Reset() { *x = Address{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Address) String() string { @@ -447,7 +433,7 @@ func (*Address) ProtoMessage() {} func (x *Address) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -462,23 +448,27 @@ func (*Address) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_rawDescGZIP(), []int{4} } -func (m *Address) GetAddress() isAddress_Address { - if m != nil { - return m.Address +func (x *Address) GetAddress() isAddress_Address { + if x != nil { + return x.Address } return nil } func (x *Address) GetSocketAddress() *SocketAddress { - if x, ok := x.GetAddress().(*Address_SocketAddress); ok { - return x.SocketAddress + if x != nil { + if x, ok := x.Address.(*Address_SocketAddress); ok { + return x.SocketAddress + } } return nil } func (x *Address) GetPipe() *Pipe { - if x, ok := x.GetAddress().(*Address_Pipe); ok { - return x.Pipe + if x != nil { + if x, ok := x.Address.(*Address_Pipe); ok { + return x.Pipe + } } return nil } @@ -500,25 +490,22 @@ func (*Address_SocketAddress) isAddress_Address() {} func (*Address_Pipe) isAddress_Address() {} // CidrRange specifies an IP Address and a prefix length to construct -// the subnet mask for a `CIDR `_ range. +// the subnet mask for a [CIDR](https://datatracker.ietf.org/doc/html/rfc4632) range. type CidrRange struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // IPv4 or IPv6 address, e.g. ``192.0.0.0`` or ``2001:db8::``. + state protoimpl.MessageState `protogen:"open.v1"` + // IPv4 or IPv6 address, e.g. `192.0.0.0` or `2001:db8::`. AddressPrefix string `protobuf:"bytes,1,opt,name=address_prefix,json=addressPrefix,proto3" json:"address_prefix,omitempty"` // Length of prefix, e.g. 0, 32. - PrefixLen *wrappers.UInt32Value `protobuf:"bytes,2,opt,name=prefix_len,json=prefixLen,proto3" json:"prefix_len,omitempty"` + PrefixLen *wrapperspb.UInt32Value `protobuf:"bytes,2,opt,name=prefix_len,json=prefixLen,proto3" json:"prefix_len,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CidrRange) Reset() { *x = CidrRange{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CidrRange) String() string { @@ -529,7 +516,7 @@ func (*CidrRange) ProtoMessage() {} func (x *CidrRange) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -551,7 +538,7 @@ func (x *CidrRange) GetAddressPrefix() string { return "" } -func (x *CidrRange) GetPrefixLen() *wrappers.UInt32Value { +func (x *CidrRange) GetPrefixLen() *wrapperspb.UInt32Value { if x != nil { return x.PrefixLen } @@ -560,7 +547,7 @@ func (x *CidrRange) GetPrefixLen() *wrappers.UInt32Value { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_rawDesc = string([]byte{ 0x0a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -675,44 +662,44 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x3a, 0x2b, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x25, 0x0a, 0x23, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x69, 0x64, 0x72, 0x52, 0x61, - 0x6e, 0x67, 0x65, 0x42, 0x9d, 0x01, 0x0a, 0x2a, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, - 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x76, 0x33, 0x42, 0x0c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, - 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, - 0x2f, 0x76, 0x33, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0xb8, 0xf5, 0x04, 0x01, 0xc0, - 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x6e, 0x67, 0x65, 0x42, 0xa1, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, + 0x04, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x2a, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x42, 0x0c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, + 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes = make([]protoimpl.MessageInfo, 6) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_goTypes = []interface{}{ - (SocketAddress_Protocol)(0), // 0: solo.io.envoy.config.core.v3.SocketAddress.Protocol - (*Pipe)(nil), // 1: solo.io.envoy.config.core.v3.Pipe - (*SocketAddress)(nil), // 2: solo.io.envoy.config.core.v3.SocketAddress - (*TcpKeepalive)(nil), // 3: solo.io.envoy.config.core.v3.TcpKeepalive - (*BindConfig)(nil), // 4: solo.io.envoy.config.core.v3.BindConfig - (*Address)(nil), // 5: solo.io.envoy.config.core.v3.Address - (*CidrRange)(nil), // 6: solo.io.envoy.config.core.v3.CidrRange - (*wrappers.UInt32Value)(nil), // 7: google.protobuf.UInt32Value - (*wrappers.BoolValue)(nil), // 8: google.protobuf.BoolValue - (*SocketOption)(nil), // 9: solo.io.envoy.config.core.v3.SocketOption +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_goTypes = []any{ + (SocketAddress_Protocol)(0), // 0: solo.io.envoy.config.core.v3.SocketAddress.Protocol + (*Pipe)(nil), // 1: solo.io.envoy.config.core.v3.Pipe + (*SocketAddress)(nil), // 2: solo.io.envoy.config.core.v3.SocketAddress + (*TcpKeepalive)(nil), // 3: solo.io.envoy.config.core.v3.TcpKeepalive + (*BindConfig)(nil), // 4: solo.io.envoy.config.core.v3.BindConfig + (*Address)(nil), // 5: solo.io.envoy.config.core.v3.Address + (*CidrRange)(nil), // 6: solo.io.envoy.config.core.v3.CidrRange + (*wrapperspb.UInt32Value)(nil), // 7: google.protobuf.UInt32Value + (*wrapperspb.BoolValue)(nil), // 8: google.protobuf.BoolValue + (*SocketOption)(nil), // 9: solo.io.envoy.config.core.v3.SocketOption } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_depIdxs = []int32{ 0, // 0: solo.io.envoy.config.core.v3.SocketAddress.protocol:type_name -> solo.io.envoy.config.core.v3.SocketAddress.Protocol @@ -740,85 +727,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ return } file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_init() - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Pipe); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SocketAddress); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TcpKeepalive); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BindConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Address); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CidrRange); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[1].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[1].OneofWrappers = []any{ (*SocketAddress_PortValue)(nil), (*SocketAddress_NamedPort)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[4].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes[4].OneofWrappers = []any{ (*Address_SocketAddress)(nil), (*Address_Pipe)(nil), } @@ -826,7 +739,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_rawDesc)), NumEnums: 1, NumMessages: 6, NumExtensions: 0, @@ -838,7 +751,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/address.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/address.pb.hash.go index 36318b091..a301fcf5a 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/address.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/address.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Pipe) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -51,6 +55,10 @@ func (m *Pipe) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *SocketAddress) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -102,6 +110,10 @@ func (m *SocketAddress) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *TcpKeepalive) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -115,42 +127,60 @@ func (m *TcpKeepalive) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetKeepaliveProbes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("KeepaliveProbes")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetKeepaliveProbes(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetKeepaliveProbes(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("KeepaliveProbes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetKeepaliveTime()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("KeepaliveTime")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetKeepaliveTime(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetKeepaliveTime(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("KeepaliveTime")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetKeepaliveInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("KeepaliveInterval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetKeepaliveInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetKeepaliveInterval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("KeepaliveInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -160,6 +190,10 @@ func (m *TcpKeepalive) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *BindConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -173,28 +207,40 @@ func (m *BindConfig) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetSourceAddress()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SourceAddress")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSourceAddress(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSourceAddress(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SourceAddress")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetFreebind()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Freebind")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetFreebind(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetFreebind(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Freebind")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -203,14 +249,20 @@ func (m *BindConfig) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetSocketOptions() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -222,6 +274,10 @@ func (m *BindConfig) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Address) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -239,14 +295,20 @@ func (m *Address) Hash(hasher hash.Hash64) (uint64, error) { case *Address_SocketAddress: if h, ok := interface{}(m.GetSocketAddress()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SocketAddress")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSocketAddress(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSocketAddress(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SocketAddress")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -255,14 +317,20 @@ func (m *Address) Hash(hasher hash.Hash64) (uint64, error) { case *Address_Pipe: if h, ok := interface{}(m.GetPipe()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Pipe")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPipe(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPipe(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Pipe")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -274,6 +342,10 @@ func (m *Address) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *CidrRange) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -291,14 +363,20 @@ func (m *CidrRange) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetPrefixLen()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PrefixLen")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPrefixLen(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPrefixLen(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PrefixLen")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/address.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/address.pb.uniquehash.go new file mode 100644 index 000000000..133bfdcfa --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/address.pb.uniquehash.go @@ -0,0 +1,415 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/address.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Pipe) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.Pipe")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Mode")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMode()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SocketAddress) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.SocketAddress")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Protocol")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetProtocol()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Address")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAddress())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ResolverName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetResolverName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Ipv4Compat")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetIpv4Compat()) + if err != nil { + return 0, err + } + + switch m.PortSpecifier.(type) { + + case *SocketAddress_PortValue: + + if _, err = hasher.Write([]byte("PortValue")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPortValue()) + if err != nil { + return 0, err + } + + case *SocketAddress_NamedPort: + + if _, err = hasher.Write([]byte("NamedPort")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetNamedPort())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TcpKeepalive) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.TcpKeepalive")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetKeepaliveProbes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("KeepaliveProbes")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetKeepaliveProbes(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("KeepaliveProbes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetKeepaliveTime()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("KeepaliveTime")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetKeepaliveTime(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("KeepaliveTime")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetKeepaliveInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("KeepaliveInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetKeepaliveInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("KeepaliveInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *BindConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.BindConfig")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSourceAddress()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SourceAddress")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSourceAddress(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SourceAddress")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFreebind()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Freebind")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFreebind(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Freebind")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("SocketOptions")); err != nil { + return 0, err + } + for i, v := range m.GetSocketOptions() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Address) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.Address")); err != nil { + return 0, err + } + + switch m.Address.(type) { + + case *Address_SocketAddress: + + if h, ok := interface{}(m.GetSocketAddress()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SocketAddress")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSocketAddress(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SocketAddress")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Address_Pipe: + + if h, ok := interface{}(m.GetPipe()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Pipe")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPipe(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Pipe")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *CidrRange) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.CidrRange")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AddressPrefix")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAddressPrefix())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPrefixLen()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PrefixLen")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPrefixLen(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PrefixLen")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/backoff.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/backoff.pb.clone.go new file mode 100644 index 000000000..688c9eb86 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/backoff.pb.clone.go @@ -0,0 +1,51 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/backoff.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *BackoffStrategy) Clone() proto.Message { + var target *BackoffStrategy + if m == nil { + return target + } + target = &BackoffStrategy{} + + if h, ok := interface{}(m.GetBaseInterval()).(clone.Cloner); ok { + target.BaseInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.BaseInterval = proto.Clone(m.GetBaseInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetMaxInterval()).(clone.Cloner); ok { + target.MaxInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.MaxInterval = proto.Clone(m.GetMaxInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/backoff.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/backoff.pb.go index 3284ea1aa..64582ead3 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/backoff.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/backoff.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/backoff.proto @@ -9,14 +9,14 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - duration "github.com/golang/protobuf/ptypes/duration" _ "github.com/solo-io/protoc-gen-ext/extproto" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" ) const ( @@ -26,35 +26,28 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Configuration defining a jittered exponential back off strategy. type BackoffStrategy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The base interval to be used for the next back off computation. It should // be greater than zero and less than or equal to :ref:`max_interval // `. - BaseInterval *duration.Duration `protobuf:"bytes,1,opt,name=base_interval,json=baseInterval,proto3" json:"base_interval,omitempty"` + BaseInterval *durationpb.Duration `protobuf:"bytes,1,opt,name=base_interval,json=baseInterval,proto3" json:"base_interval,omitempty"` // Specifies the maximum interval between retries. This parameter is optional, // but must be greater than or equal to the :ref:`base_interval // ` if set. The default // is 10 times the :ref:`base_interval // `. - MaxInterval *duration.Duration `protobuf:"bytes,2,opt,name=max_interval,json=maxInterval,proto3" json:"max_interval,omitempty"` + MaxInterval *durationpb.Duration `protobuf:"bytes,2,opt,name=max_interval,json=maxInterval,proto3" json:"max_interval,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BackoffStrategy) Reset() { *x = BackoffStrategy{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BackoffStrategy) String() string { @@ -65,7 +58,7 @@ func (*BackoffStrategy) ProtoMessage() {} func (x *BackoffStrategy) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -80,14 +73,14 @@ func (*BackoffStrategy) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_rawDescGZIP(), []int{0} } -func (x *BackoffStrategy) GetBaseInterval() *duration.Duration { +func (x *BackoffStrategy) GetBaseInterval() *durationpb.Duration { if x != nil { return x.BaseInterval } return nil } -func (x *BackoffStrategy) GetMaxInterval() *duration.Duration { +func (x *BackoffStrategy) GetMaxInterval() *durationpb.Duration { if x != nil { return x.MaxInterval } @@ -96,7 +89,7 @@ func (x *BackoffStrategy) GetMaxInterval() *duration.Duration { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_rawDesc = string([]byte{ 0x0a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -127,35 +120,36 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v 0x6c, 0x3a, 0x32, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x2c, 0x0a, 0x2a, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x53, 0x74, 0x72, - 0x61, 0x74, 0x65, 0x67, 0x79, 0x42, 0x9d, 0x01, 0x0a, 0x2a, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, - 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x76, 0x33, 0x42, 0x0c, 0x42, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, - 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, - 0x72, 0x65, 0x2f, 0x76, 0x33, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0xb8, 0xf5, 0x04, - 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x61, 0x74, 0x65, 0x67, 0x79, 0x42, 0xa1, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, + 0xd0, 0xf5, 0x04, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x2a, 0x69, 0x6f, + 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x42, 0x0c, 0x42, 0x61, 0x63, 0x6b, 0x6f, 0x66, + 0x66, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_goTypes = []interface{}{ - (*BackoffStrategy)(nil), // 0: solo.io.envoy.config.core.v3.BackoffStrategy - (*duration.Duration)(nil), // 1: google.protobuf.Duration +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_goTypes = []any{ + (*BackoffStrategy)(nil), // 0: solo.io.envoy.config.core.v3.BackoffStrategy + (*durationpb.Duration)(nil), // 1: google.protobuf.Duration } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_depIdxs = []int32{ 1, // 0: solo.io.envoy.config.core.v3.BackoffStrategy.base_interval:type_name -> google.protobuf.Duration @@ -174,25 +168,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BackoffStrategy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, @@ -203,7 +183,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/backoff.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/backoff.pb.hash.go index 4aebc6de6..0ca230282 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/backoff.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/backoff.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *BackoffStrategy) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,28 +43,40 @@ func (m *BackoffStrategy) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetBaseInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetBaseInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetBaseInterval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetMaxInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMaxInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMaxInterval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/backoff.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/backoff.pb.uniquehash.go new file mode 100644 index 000000000..96d741894 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/backoff.pb.uniquehash.go @@ -0,0 +1,87 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/backoff.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *BackoffStrategy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.BackoffStrategy")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetBaseInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBaseInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/base.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/base.pb.clone.go new file mode 100644 index 000000000..74bc5885d --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/base.pb.clone.go @@ -0,0 +1,509 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/base.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/v3" + + google_golang_org_protobuf_types_known_anypb "google.golang.org/protobuf/types/known/anypb" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *Locality) Clone() proto.Message { + var target *Locality + if m == nil { + return target + } + target = &Locality{} + + target.Region = m.GetRegion() + + target.Zone = m.GetZone() + + target.SubZone = m.GetSubZone() + + return target +} + +// Clone function +func (m *BuildVersion) Clone() proto.Message { + var target *BuildVersion + if m == nil { + return target + } + target = &BuildVersion{} + + if h, ok := interface{}(m.GetVersion()).(clone.Cloner); ok { + target.Version = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3.SemanticVersion) + } else { + target.Version = proto.Clone(m.GetVersion()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3.SemanticVersion) + } + + if h, ok := interface{}(m.GetMetadata()).(clone.Cloner); ok { + target.Metadata = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Metadata = proto.Clone(m.GetMetadata()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + return target +} + +// Clone function +func (m *Extension) Clone() proto.Message { + var target *Extension + if m == nil { + return target + } + target = &Extension{} + + target.Name = m.GetName() + + target.Category = m.GetCategory() + + target.TypeDescriptor = m.GetTypeDescriptor() + + if h, ok := interface{}(m.GetVersion()).(clone.Cloner); ok { + target.Version = h.Clone().(*BuildVersion) + } else { + target.Version = proto.Clone(m.GetVersion()).(*BuildVersion) + } + + target.Disabled = m.GetDisabled() + + return target +} + +// Clone function +func (m *Node) Clone() proto.Message { + var target *Node + if m == nil { + return target + } + target = &Node{} + + target.Id = m.GetId() + + target.Cluster = m.GetCluster() + + if h, ok := interface{}(m.GetMetadata()).(clone.Cloner); ok { + target.Metadata = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Metadata = proto.Clone(m.GetMetadata()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + if h, ok := interface{}(m.GetLocality()).(clone.Cloner); ok { + target.Locality = h.Clone().(*Locality) + } else { + target.Locality = proto.Clone(m.GetLocality()).(*Locality) + } + + target.UserAgentName = m.GetUserAgentName() + + if m.GetExtensions() != nil { + target.Extensions = make([]*Extension, len(m.GetExtensions())) + for idx, v := range m.GetExtensions() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Extensions[idx] = h.Clone().(*Extension) + } else { + target.Extensions[idx] = proto.Clone(v).(*Extension) + } + + } + } + + if m.GetClientFeatures() != nil { + target.ClientFeatures = make([]string, len(m.GetClientFeatures())) + for idx, v := range m.GetClientFeatures() { + + target.ClientFeatures[idx] = v + + } + } + + if m.GetListeningAddresses() != nil { + target.ListeningAddresses = make([]*Address, len(m.GetListeningAddresses())) + for idx, v := range m.GetListeningAddresses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ListeningAddresses[idx] = h.Clone().(*Address) + } else { + target.ListeningAddresses[idx] = proto.Clone(v).(*Address) + } + + } + } + + switch m.UserAgentVersionType.(type) { + + case *Node_UserAgentVersion: + + target.UserAgentVersionType = &Node_UserAgentVersion{ + UserAgentVersion: m.GetUserAgentVersion(), + } + + case *Node_UserAgentBuildVersion: + + if h, ok := interface{}(m.GetUserAgentBuildVersion()).(clone.Cloner); ok { + target.UserAgentVersionType = &Node_UserAgentBuildVersion{ + UserAgentBuildVersion: h.Clone().(*BuildVersion), + } + } else { + target.UserAgentVersionType = &Node_UserAgentBuildVersion{ + UserAgentBuildVersion: proto.Clone(m.GetUserAgentBuildVersion()).(*BuildVersion), + } + } + + } + + return target +} + +// Clone function +func (m *Metadata) Clone() proto.Message { + var target *Metadata + if m == nil { + return target + } + target = &Metadata{} + + if m.GetFilterMetadata() != nil { + target.FilterMetadata = make(map[string]*google_golang_org_protobuf_types_known_structpb.Struct, len(m.GetFilterMetadata())) + for k, v := range m.GetFilterMetadata() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.FilterMetadata[k] = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.FilterMetadata[k] = proto.Clone(v).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + } + } + + return target +} + +// Clone function +func (m *RuntimeUInt32) Clone() proto.Message { + var target *RuntimeUInt32 + if m == nil { + return target + } + target = &RuntimeUInt32{} + + target.DefaultValue = m.GetDefaultValue() + + target.RuntimeKey = m.GetRuntimeKey() + + return target +} + +// Clone function +func (m *RuntimeDouble) Clone() proto.Message { + var target *RuntimeDouble + if m == nil { + return target + } + target = &RuntimeDouble{} + + target.DefaultValue = m.GetDefaultValue() + + target.RuntimeKey = m.GetRuntimeKey() + + return target +} + +// Clone function +func (m *RuntimeFeatureFlag) Clone() proto.Message { + var target *RuntimeFeatureFlag + if m == nil { + return target + } + target = &RuntimeFeatureFlag{} + + if h, ok := interface{}(m.GetDefaultValue()).(clone.Cloner); ok { + target.DefaultValue = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.DefaultValue = proto.Clone(m.GetDefaultValue()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + target.RuntimeKey = m.GetRuntimeKey() + + return target +} + +// Clone function +func (m *HeaderValue) Clone() proto.Message { + var target *HeaderValue + if m == nil { + return target + } + target = &HeaderValue{} + + target.Key = m.GetKey() + + target.Value = m.GetValue() + + return target +} + +// Clone function +func (m *HeaderValueOption) Clone() proto.Message { + var target *HeaderValueOption + if m == nil { + return target + } + target = &HeaderValueOption{} + + if h, ok := interface{}(m.GetHeader()).(clone.Cloner); ok { + target.Header = h.Clone().(*HeaderValue) + } else { + target.Header = proto.Clone(m.GetHeader()).(*HeaderValue) + } + + if h, ok := interface{}(m.GetAppend()).(clone.Cloner); ok { + target.Append = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Append = proto.Clone(m.GetAppend()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *HeaderMap) Clone() proto.Message { + var target *HeaderMap + if m == nil { + return target + } + target = &HeaderMap{} + + if m.GetHeaders() != nil { + target.Headers = make([]*HeaderValue, len(m.GetHeaders())) + for idx, v := range m.GetHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Headers[idx] = h.Clone().(*HeaderValue) + } else { + target.Headers[idx] = proto.Clone(v).(*HeaderValue) + } + + } + } + + return target +} + +// Clone function +func (m *DataSource) Clone() proto.Message { + var target *DataSource + if m == nil { + return target + } + target = &DataSource{} + + switch m.Specifier.(type) { + + case *DataSource_Filename: + + target.Specifier = &DataSource_Filename{ + Filename: m.GetFilename(), + } + + case *DataSource_InlineBytes: + + if m.GetInlineBytes() != nil { + newArr := make([]byte, len(m.GetInlineBytes())) + copy(newArr, m.GetInlineBytes()) + target.Specifier = &DataSource_InlineBytes{ + InlineBytes: newArr, + } + } else { + target.Specifier = &DataSource_InlineBytes{ + InlineBytes: nil, + } + } + + case *DataSource_InlineString: + + target.Specifier = &DataSource_InlineString{ + InlineString: m.GetInlineString(), + } + + } + + return target +} + +// Clone function +func (m *RetryPolicy) Clone() proto.Message { + var target *RetryPolicy + if m == nil { + return target + } + target = &RetryPolicy{} + + if h, ok := interface{}(m.GetRetryBackOff()).(clone.Cloner); ok { + target.RetryBackOff = h.Clone().(*BackoffStrategy) + } else { + target.RetryBackOff = proto.Clone(m.GetRetryBackOff()).(*BackoffStrategy) + } + + if h, ok := interface{}(m.GetNumRetries()).(clone.Cloner); ok { + target.NumRetries = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.NumRetries = proto.Clone(m.GetNumRetries()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + return target +} + +// Clone function +func (m *RemoteDataSource) Clone() proto.Message { + var target *RemoteDataSource + if m == nil { + return target + } + target = &RemoteDataSource{} + + if h, ok := interface{}(m.GetHttpUri()).(clone.Cloner); ok { + target.HttpUri = h.Clone().(*HttpUri) + } else { + target.HttpUri = proto.Clone(m.GetHttpUri()).(*HttpUri) + } + + target.Sha256 = m.GetSha256() + + if h, ok := interface{}(m.GetRetryPolicy()).(clone.Cloner); ok { + target.RetryPolicy = h.Clone().(*RetryPolicy) + } else { + target.RetryPolicy = proto.Clone(m.GetRetryPolicy()).(*RetryPolicy) + } + + return target +} + +// Clone function +func (m *AsyncDataSource) Clone() proto.Message { + var target *AsyncDataSource + if m == nil { + return target + } + target = &AsyncDataSource{} + + switch m.Specifier.(type) { + + case *AsyncDataSource_Local: + + if h, ok := interface{}(m.GetLocal()).(clone.Cloner); ok { + target.Specifier = &AsyncDataSource_Local{ + Local: h.Clone().(*DataSource), + } + } else { + target.Specifier = &AsyncDataSource_Local{ + Local: proto.Clone(m.GetLocal()).(*DataSource), + } + } + + case *AsyncDataSource_Remote: + + if h, ok := interface{}(m.GetRemote()).(clone.Cloner); ok { + target.Specifier = &AsyncDataSource_Remote{ + Remote: h.Clone().(*RemoteDataSource), + } + } else { + target.Specifier = &AsyncDataSource_Remote{ + Remote: proto.Clone(m.GetRemote()).(*RemoteDataSource), + } + } + + } + + return target +} + +// Clone function +func (m *TransportSocket) Clone() proto.Message { + var target *TransportSocket + if m == nil { + return target + } + target = &TransportSocket{} + + target.Name = m.GetName() + + switch m.ConfigType.(type) { + + case *TransportSocket_TypedConfig: + + if h, ok := interface{}(m.GetTypedConfig()).(clone.Cloner); ok { + target.ConfigType = &TransportSocket_TypedConfig{ + TypedConfig: h.Clone().(*google_golang_org_protobuf_types_known_anypb.Any), + } + } else { + target.ConfigType = &TransportSocket_TypedConfig{ + TypedConfig: proto.Clone(m.GetTypedConfig()).(*google_golang_org_protobuf_types_known_anypb.Any), + } + } + + } + + return target +} + +// Clone function +func (m *RuntimeFractionalPercent) Clone() proto.Message { + var target *RuntimeFractionalPercent + if m == nil { + return target + } + target = &RuntimeFractionalPercent{} + + if h, ok := interface{}(m.GetDefaultValue()).(clone.Cloner); ok { + target.DefaultValue = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3.FractionalPercent) + } else { + target.DefaultValue = proto.Clone(m.GetDefaultValue()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3.FractionalPercent) + } + + target.RuntimeKey = m.GetRuntimeKey() + + return target +} + +// Clone function +func (m *ControlPlane) Clone() proto.Message { + var target *ControlPlane + if m == nil { + return target + } + target = &ControlPlane{} + + target.Identifier = m.GetIdentifier() + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/base.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/base.pb.equal.go index ed6bf0710..e067fcd98 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/base.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/base.pb.equal.go @@ -256,12 +256,18 @@ func (m *Node) Equal(that interface{}) bool { switch m.UserAgentVersionType.(type) { case *Node_UserAgentVersion: + if _, ok := target.UserAgentVersionType.(*Node_UserAgentVersion); !ok { + return false + } if strings.Compare(m.GetUserAgentVersion(), target.GetUserAgentVersion()) != 0 { return false } case *Node_UserAgentBuildVersion: + if _, ok := target.UserAgentVersionType.(*Node_UserAgentBuildVersion); !ok { + return false + } if h, ok := interface{}(m.GetUserAgentBuildVersion()).(equality.Equalizer); ok { if !h.Equal(target.GetUserAgentBuildVersion()) { @@ -273,6 +279,11 @@ func (m *Node) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.UserAgentVersionType != target.UserAgentVersionType { + return false + } } return true @@ -562,23 +573,37 @@ func (m *DataSource) Equal(that interface{}) bool { switch m.Specifier.(type) { case *DataSource_Filename: + if _, ok := target.Specifier.(*DataSource_Filename); !ok { + return false + } if strings.Compare(m.GetFilename(), target.GetFilename()) != 0 { return false } case *DataSource_InlineBytes: + if _, ok := target.Specifier.(*DataSource_InlineBytes); !ok { + return false + } if bytes.Compare(m.GetInlineBytes(), target.GetInlineBytes()) != 0 { return false } case *DataSource_InlineString: + if _, ok := target.Specifier.(*DataSource_InlineString); !ok { + return false + } if strings.Compare(m.GetInlineString(), target.GetInlineString()) != 0 { return false } + default: + // m is nil but target is not nil + if m.Specifier != target.Specifier { + return false + } } return true @@ -700,6 +725,9 @@ func (m *AsyncDataSource) Equal(that interface{}) bool { switch m.Specifier.(type) { case *AsyncDataSource_Local: + if _, ok := target.Specifier.(*AsyncDataSource_Local); !ok { + return false + } if h, ok := interface{}(m.GetLocal()).(equality.Equalizer); ok { if !h.Equal(target.GetLocal()) { @@ -712,6 +740,9 @@ func (m *AsyncDataSource) Equal(that interface{}) bool { } case *AsyncDataSource_Remote: + if _, ok := target.Specifier.(*AsyncDataSource_Remote); !ok { + return false + } if h, ok := interface{}(m.GetRemote()).(equality.Equalizer); ok { if !h.Equal(target.GetRemote()) { @@ -723,6 +754,11 @@ func (m *AsyncDataSource) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.Specifier != target.Specifier { + return false + } } return true @@ -756,6 +792,9 @@ func (m *TransportSocket) Equal(that interface{}) bool { switch m.ConfigType.(type) { case *TransportSocket_TypedConfig: + if _, ok := target.ConfigType.(*TransportSocket_TypedConfig); !ok { + return false + } if h, ok := interface{}(m.GetTypedConfig()).(equality.Equalizer); ok { if !h.Equal(target.GetTypedConfig()) { @@ -767,6 +806,11 @@ func (m *TransportSocket) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.ConfigType != target.ConfigType { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/base.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/base.pb.go index 02a6019b6..e94deb9b1 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/base.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/base.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/base.proto @@ -9,18 +9,18 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - any "github.com/golang/protobuf/ptypes/any" - _ "github.com/golang/protobuf/ptypes/duration" - _struct "github.com/golang/protobuf/ptypes/struct" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/v3" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" + _ "google.golang.org/protobuf/types/known/durationpb" + structpb "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -30,10 +30,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Envoy supports :ref:`upstream priority routing // ` both at the route and the virtual // cluster level. The current priority implementation uses different connection @@ -213,34 +209,30 @@ func (TrafficDirection) EnumDescriptor() ([]byte, []int) { // Identifies location of where either Envoy runs or where upstream hosts run. type Locality struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Region this :ref:`zone ` belongs to. + state protoimpl.MessageState `protogen:"open.v1"` + // Region this zone belongs to. Region string `protobuf:"bytes,1,opt,name=region,proto3" json:"region,omitempty"` // Defines the local service zone where Envoy is running. Though optional, it // should be set if discovery service routing is used and the discovery - // service exposes :ref:`zone data `, - // either in this message or via :option:`--service-zone`. The meaning of zone - // is context dependent, e.g. `Availability Zone (AZ) - // `_ - // on AWS, `Zone `_ on + // service exposes zone data, + // either in this message or via `--service-zone`. The meaning of zone + // is context dependent, e.g. [Availability Zone (AZ)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html) + // on AWS, [Zone](https://cloud.google.com/compute/docs/regions-zones/) on // GCP, etc. Zone string `protobuf:"bytes,2,opt,name=zone,proto3" json:"zone,omitempty"` // When used for locality of upstream hosts, this field further splits zone // into smaller chunks of sub-zones so they can be load balanced // independently. - SubZone string `protobuf:"bytes,3,opt,name=sub_zone,json=subZone,proto3" json:"sub_zone,omitempty"` + SubZone string `protobuf:"bytes,3,opt,name=sub_zone,json=subZone,proto3" json:"sub_zone,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Locality) Reset() { *x = Locality{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Locality) String() string { @@ -251,7 +243,7 @@ func (*Locality) ProtoMessage() {} func (x *Locality) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -290,24 +282,21 @@ func (x *Locality) GetSubZone() string { // BuildVersion combines SemVer version of extension with free-form build information // (i.e. 'alpha', 'private-build') as a set of strings. type BuildVersion struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // SemVer version of extension. Version *v3.SemanticVersion `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` // Free-form build information. // Envoy defines several well known keys in the source/common/common/version.h file - Metadata *_struct.Struct `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` + Metadata *structpb.Struct `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BuildVersion) Reset() { *x = BuildVersion{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BuildVersion) String() string { @@ -318,7 +307,7 @@ func (*BuildVersion) ProtoMessage() {} func (x *BuildVersion) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -340,7 +329,7 @@ func (x *BuildVersion) GetVersion() *v3.SemanticVersion { return nil } -func (x *BuildVersion) GetMetadata() *_struct.Struct { +func (x *BuildVersion) GetMetadata() *structpb.Struct { if x != nil { return x.Metadata } @@ -350,10 +339,7 @@ func (x *BuildVersion) GetMetadata() *_struct.Struct { // Version and identification for an Envoy extension. // [#next-free-field: 6] type Extension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // This is the name of the Envoy filter as specified in the Envoy // configuration, e.g. envoy.filters.http.router, com.acme.widget. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` @@ -372,16 +358,16 @@ type Extension struct { // This field is not set when extension did not provide version information. Version *BuildVersion `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` // Indicates that the extension is present but was disabled via dynamic configuration. - Disabled bool `protobuf:"varint,5,opt,name=disabled,proto3" json:"disabled,omitempty"` + Disabled bool `protobuf:"varint,5,opt,name=disabled,proto3" json:"disabled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Extension) Reset() { *x = Extension{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Extension) String() string { @@ -392,7 +378,7 @@ func (*Extension) ProtoMessage() {} func (x *Extension) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -447,39 +433,37 @@ func (x *Extension) GetDisabled() bool { // configuration for serving. // [#next-free-field: 12] type Node struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // An opaque node identifier for the Envoy node. This also provides the local // service node name. It should be set if any of the following features are - // used: :ref:`statsd `, :ref:`CDS + // used: statsd, :ref:`CDS // `, and :ref:`HTTP tracing // `, either in this message or via - // :option:`--service-node`. + // `--service-node`. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Defines the local service cluster name where Envoy is running. Though // optional, it should be set if any of the following features are used: - // :ref:`statsd `, :ref:`health check cluster + // statsd, :ref:`health check cluster // verification // `, - // :ref:`runtime override directory `, + // runtime override directory, // :ref:`user agent addition // `, - // :ref:`HTTP global rate limiting `, - // :ref:`CDS `, and :ref:`HTTP tracing + // HTTP global rate limiting, + // CDS, and :ref:`HTTP tracing // `, either in this message or via - // :option:`--service-cluster`. + // `--service-cluster`. Cluster string `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"` // Opaque metadata extending the node identifier. Envoy will pass this // directly to the management server. - Metadata *_struct.Struct `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"` + Metadata *structpb.Struct `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"` // Locality specifying where the Envoy instance is running. Locality *Locality `protobuf:"bytes,4,opt,name=locality,proto3" json:"locality,omitempty"` // Free-form string that identifies the entity requesting config. // E.g. "envoy" or "grpc" UserAgentName string `protobuf:"bytes,6,opt,name=user_agent_name,json=userAgentName,proto3" json:"user_agent_name,omitempty"` - // Types that are assignable to UserAgentVersionType: + // Types that are valid to be assigned to UserAgentVersionType: + // // *Node_UserAgentVersion // *Node_UserAgentBuildVersion UserAgentVersionType isNode_UserAgentVersionType `protobuf_oneof:"user_agent_version_type"` @@ -488,23 +472,23 @@ type Node struct { // Client feature support list. These are well known features described // in the Envoy API repository for a given major version of an API. Client features // use reverse DNS naming scheme, for example `com.acme.feature`. - // See :ref:`the list of features ` that xDS client may + // See the list of features that xDS client may // support. ClientFeatures []string `protobuf:"bytes,10,rep,name=client_features,json=clientFeatures,proto3" json:"client_features,omitempty"` // Known listening ports on the node as a generic hint to the management server - // for filtering :ref:`listeners ` to be returned. For example, + // for filtering listeners to be returned. For example, // if there is a listener bound to port 80, the list can optionally contain the // SocketAddress `(0.0.0.0,80)`. The field is optional and just a hint. ListeningAddresses []*Address `protobuf:"bytes,11,rep,name=listening_addresses,json=listeningAddresses,proto3" json:"listening_addresses,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Node) Reset() { *x = Node{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Node) String() string { @@ -515,7 +499,7 @@ func (*Node) ProtoMessage() {} func (x *Node) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -544,7 +528,7 @@ func (x *Node) GetCluster() string { return "" } -func (x *Node) GetMetadata() *_struct.Struct { +func (x *Node) GetMetadata() *structpb.Struct { if x != nil { return x.Metadata } @@ -565,23 +549,27 @@ func (x *Node) GetUserAgentName() string { return "" } -func (m *Node) GetUserAgentVersionType() isNode_UserAgentVersionType { - if m != nil { - return m.UserAgentVersionType +func (x *Node) GetUserAgentVersionType() isNode_UserAgentVersionType { + if x != nil { + return x.UserAgentVersionType } return nil } func (x *Node) GetUserAgentVersion() string { - if x, ok := x.GetUserAgentVersionType().(*Node_UserAgentVersion); ok { - return x.UserAgentVersion + if x != nil { + if x, ok := x.UserAgentVersionType.(*Node_UserAgentVersion); ok { + return x.UserAgentVersion + } } return "" } func (x *Node) GetUserAgentBuildVersion() *BuildVersion { - if x, ok := x.GetUserAgentVersionType().(*Node_UserAgentBuildVersion); ok { - return x.UserAgentBuildVersion + if x != nil { + if x, ok := x.UserAgentVersionType.(*Node_UserAgentBuildVersion); ok { + return x.UserAgentBuildVersion + } } return nil } @@ -644,27 +632,25 @@ func (*Node_UserAgentBuildVersion) isNode_UserAgentVersionType() {} // object to match against. There are some well defined metadata used today for // this purpose: // -// * ``{"envoy.lb": {"canary": }}`` This indicates the canary status of an -// endpoint and is also used during header processing -// (x-envoy-upstream-canary) and for stats purposes. +// - `{"envoy.lb": {"canary": }}` This indicates the canary status of an +// endpoint and is also used during header processing +// (x-envoy-upstream-canary) and for stats purposes. +// // [#next-major-version: move to type/metadata/v2] type Metadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Key is the reverse DNS filter name, e.g. com.acme.widget. The envoy.* // namespace is reserved for Envoy's built-in filters. - FilterMetadata map[string]*_struct.Struct `protobuf:"bytes,1,rep,name=filter_metadata,json=filterMetadata,proto3" json:"filter_metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + FilterMetadata map[string]*structpb.Struct `protobuf:"bytes,1,rep,name=filter_metadata,json=filterMetadata,proto3" json:"filter_metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Metadata) Reset() { *x = Metadata{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Metadata) String() string { @@ -675,7 +661,7 @@ func (*Metadata) ProtoMessage() {} func (x *Metadata) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -690,7 +676,7 @@ func (*Metadata) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{4} } -func (x *Metadata) GetFilterMetadata() map[string]*_struct.Struct { +func (x *Metadata) GetFilterMetadata() map[string]*structpb.Struct { if x != nil { return x.FilterMetadata } @@ -699,23 +685,20 @@ func (x *Metadata) GetFilterMetadata() map[string]*_struct.Struct { // Runtime derived uint32 with a default when not specified. type RuntimeUInt32 struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Default value if runtime value is not available. DefaultValue uint32 `protobuf:"varint,2,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` // Runtime key to get value for comparison. This value is used if defined. - RuntimeKey string `protobuf:"bytes,3,opt,name=runtime_key,json=runtimeKey,proto3" json:"runtime_key,omitempty"` + RuntimeKey string `protobuf:"bytes,3,opt,name=runtime_key,json=runtimeKey,proto3" json:"runtime_key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RuntimeUInt32) Reset() { *x = RuntimeUInt32{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RuntimeUInt32) String() string { @@ -726,7 +709,7 @@ func (*RuntimeUInt32) ProtoMessage() {} func (x *RuntimeUInt32) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -757,23 +740,20 @@ func (x *RuntimeUInt32) GetRuntimeKey() string { // Runtime derived double with a default when not specified. type RuntimeDouble struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Default value if runtime value is not available. DefaultValue float64 `protobuf:"fixed64,1,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` // Runtime key to get value for comparison. This value is used if defined. - RuntimeKey string `protobuf:"bytes,2,opt,name=runtime_key,json=runtimeKey,proto3" json:"runtime_key,omitempty"` + RuntimeKey string `protobuf:"bytes,2,opt,name=runtime_key,json=runtimeKey,proto3" json:"runtime_key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RuntimeDouble) Reset() { *x = RuntimeDouble{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RuntimeDouble) String() string { @@ -784,7 +764,7 @@ func (*RuntimeDouble) ProtoMessage() {} func (x *RuntimeDouble) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -815,25 +795,22 @@ func (x *RuntimeDouble) GetRuntimeKey() string { // Runtime derived bool with a default when not specified. type RuntimeFeatureFlag struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Default value if runtime value is not available. - DefaultValue *wrappers.BoolValue `protobuf:"bytes,1,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` + DefaultValue *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` // Runtime key to get value for comparison. This value is used if defined. The boolean value must // be represented via its - // `canonical JSON encoding `_. - RuntimeKey string `protobuf:"bytes,2,opt,name=runtime_key,json=runtimeKey,proto3" json:"runtime_key,omitempty"` + // [canonical JSON encoding](https://developers.google.com/protocol-buffers/docs/proto3#json). + RuntimeKey string `protobuf:"bytes,2,opt,name=runtime_key,json=runtimeKey,proto3" json:"runtime_key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RuntimeFeatureFlag) Reset() { *x = RuntimeFeatureFlag{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RuntimeFeatureFlag) String() string { @@ -844,7 +821,7 @@ func (*RuntimeFeatureFlag) ProtoMessage() {} func (x *RuntimeFeatureFlag) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -859,7 +836,7 @@ func (*RuntimeFeatureFlag) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{7} } -func (x *RuntimeFeatureFlag) GetDefaultValue() *wrappers.BoolValue { +func (x *RuntimeFeatureFlag) GetDefaultValue() *wrapperspb.BoolValue { if x != nil { return x.DefaultValue } @@ -875,27 +852,24 @@ func (x *RuntimeFeatureFlag) GetRuntimeKey() string { // Header name/value pair. type HeaderValue struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Header name. Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Header value. // - // The same :ref:`format specifier ` as used for - // :ref:`HTTP access logging ` applies here, however + // The same format specifier as used for + // HTTP access logging applies here, however // unknown header values are replaced with the empty string instead of `-`. - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HeaderValue) Reset() { *x = HeaderValue{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HeaderValue) String() string { @@ -906,7 +880,7 @@ func (*HeaderValue) ProtoMessage() {} func (x *HeaderValue) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -937,24 +911,21 @@ func (x *HeaderValue) GetValue() string { // Header name/value pair plus option to control append behavior. type HeaderValueOption struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Header name/value pair that this option applies to. Header *HeaderValue `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // Should the value be appended? If true (default), the value is appended to // existing values. - Append *wrappers.BoolValue `protobuf:"bytes,2,opt,name=append,proto3" json:"append,omitempty"` + Append *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=append,proto3" json:"append,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HeaderValueOption) Reset() { *x = HeaderValueOption{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HeaderValueOption) String() string { @@ -965,7 +936,7 @@ func (*HeaderValueOption) ProtoMessage() {} func (x *HeaderValueOption) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -987,7 +958,7 @@ func (x *HeaderValueOption) GetHeader() *HeaderValue { return nil } -func (x *HeaderValueOption) GetAppend() *wrappers.BoolValue { +func (x *HeaderValueOption) GetAppend() *wrapperspb.BoolValue { if x != nil { return x.Append } @@ -996,20 +967,17 @@ func (x *HeaderValueOption) GetAppend() *wrappers.BoolValue { // Wrapper for a set of headers. type HeaderMap struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Headers []*HeaderValue `protobuf:"bytes,1,rep,name=headers,proto3" json:"headers,omitempty"` unknownFields protoimpl.UnknownFields - - Headers []*HeaderValue `protobuf:"bytes,1,rep,name=headers,proto3" json:"headers,omitempty"` + sizeCache protoimpl.SizeCache } func (x *HeaderMap) Reset() { *x = HeaderMap{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HeaderMap) String() string { @@ -1020,7 +988,7 @@ func (*HeaderMap) ProtoMessage() {} func (x *HeaderMap) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1044,24 +1012,22 @@ func (x *HeaderMap) GetHeaders() []*HeaderValue { // Data source consisting of either a file or an inline value. type DataSource struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Specifier: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Specifier: + // // *DataSource_Filename // *DataSource_InlineBytes // *DataSource_InlineString - Specifier isDataSource_Specifier `protobuf_oneof:"specifier"` + Specifier isDataSource_Specifier `protobuf_oneof:"specifier"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DataSource) Reset() { *x = DataSource{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DataSource) String() string { @@ -1072,7 +1038,7 @@ func (*DataSource) ProtoMessage() {} func (x *DataSource) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1087,30 +1053,36 @@ func (*DataSource) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{11} } -func (m *DataSource) GetSpecifier() isDataSource_Specifier { - if m != nil { - return m.Specifier +func (x *DataSource) GetSpecifier() isDataSource_Specifier { + if x != nil { + return x.Specifier } return nil } func (x *DataSource) GetFilename() string { - if x, ok := x.GetSpecifier().(*DataSource_Filename); ok { - return x.Filename + if x != nil { + if x, ok := x.Specifier.(*DataSource_Filename); ok { + return x.Filename + } } return "" } func (x *DataSource) GetInlineBytes() []byte { - if x, ok := x.GetSpecifier().(*DataSource_InlineBytes); ok { - return x.InlineBytes + if x != nil { + if x, ok := x.Specifier.(*DataSource_InlineBytes); ok { + return x.InlineBytes + } } return nil } func (x *DataSource) GetInlineString() string { - if x, ok := x.GetSpecifier().(*DataSource_InlineString); ok { - return x.InlineString + if x != nil { + if x, ok := x.Specifier.(*DataSource_InlineString); ok { + return x.InlineString + } } return "" } @@ -1142,26 +1114,23 @@ func (*DataSource_InlineString) isDataSource_Specifier() {} // The message specifies the retry policy of remote data source when fetching fails. type RetryPolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Specifies parameters that control :ref:`retry backoff strategy `. + state protoimpl.MessageState `protogen:"open.v1"` + // Specifies parameters that control retry backoff strategy. // This parameter is optional, in which case the default base interval is 1000 milliseconds. The // default maximum interval is 10 times the base interval. RetryBackOff *BackoffStrategy `protobuf:"bytes,1,opt,name=retry_back_off,json=retryBackOff,proto3" json:"retry_back_off,omitempty"` // Specifies the allowed number of retries. This parameter is optional and // defaults to 1. - NumRetries *wrappers.UInt32Value `protobuf:"bytes,2,opt,name=num_retries,json=numRetries,proto3" json:"num_retries,omitempty"` + NumRetries *wrapperspb.UInt32Value `protobuf:"bytes,2,opt,name=num_retries,json=numRetries,proto3" json:"num_retries,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RetryPolicy) Reset() { *x = RetryPolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RetryPolicy) String() string { @@ -1172,7 +1141,7 @@ func (*RetryPolicy) ProtoMessage() {} func (x *RetryPolicy) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1194,7 +1163,7 @@ func (x *RetryPolicy) GetRetryBackOff() *BackoffStrategy { return nil } -func (x *RetryPolicy) GetNumRetries() *wrappers.UInt32Value { +func (x *RetryPolicy) GetNumRetries() *wrapperspb.UInt32Value { if x != nil { return x.NumRetries } @@ -1203,25 +1172,22 @@ func (x *RetryPolicy) GetNumRetries() *wrappers.UInt32Value { // The message specifies how to fetch data from remote and how to verify it. type RemoteDataSource struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The HTTP URI to fetch the remote data. HttpUri *HttpUri `protobuf:"bytes,1,opt,name=http_uri,json=httpUri,proto3" json:"http_uri,omitempty"` // SHA256 string for verifying data. Sha256 string `protobuf:"bytes,2,opt,name=sha256,proto3" json:"sha256,omitempty"` // Retry policy for fetching remote data. - RetryPolicy *RetryPolicy `protobuf:"bytes,3,opt,name=retry_policy,json=retryPolicy,proto3" json:"retry_policy,omitempty"` + RetryPolicy *RetryPolicy `protobuf:"bytes,3,opt,name=retry_policy,json=retryPolicy,proto3" json:"retry_policy,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RemoteDataSource) Reset() { *x = RemoteDataSource{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoteDataSource) String() string { @@ -1232,7 +1198,7 @@ func (*RemoteDataSource) ProtoMessage() {} func (x *RemoteDataSource) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1270,23 +1236,21 @@ func (x *RemoteDataSource) GetRetryPolicy() *RetryPolicy { // Async data source which support async data fetch. type AsyncDataSource struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Specifier: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Specifier: + // // *AsyncDataSource_Local // *AsyncDataSource_Remote - Specifier isAsyncDataSource_Specifier `protobuf_oneof:"specifier"` + Specifier isAsyncDataSource_Specifier `protobuf_oneof:"specifier"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AsyncDataSource) Reset() { *x = AsyncDataSource{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AsyncDataSource) String() string { @@ -1297,7 +1261,7 @@ func (*AsyncDataSource) ProtoMessage() {} func (x *AsyncDataSource) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1312,23 +1276,27 @@ func (*AsyncDataSource) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{14} } -func (m *AsyncDataSource) GetSpecifier() isAsyncDataSource_Specifier { - if m != nil { - return m.Specifier +func (x *AsyncDataSource) GetSpecifier() isAsyncDataSource_Specifier { + if x != nil { + return x.Specifier } return nil } func (x *AsyncDataSource) GetLocal() *DataSource { - if x, ok := x.GetSpecifier().(*AsyncDataSource_Local); ok { - return x.Local + if x != nil { + if x, ok := x.Specifier.(*AsyncDataSource_Local); ok { + return x.Local + } } return nil } func (x *AsyncDataSource) GetRemote() *RemoteDataSource { - if x, ok := x.GetSpecifier().(*AsyncDataSource_Remote); ok { - return x.Remote + if x != nil { + if x, ok := x.Specifier.(*AsyncDataSource_Remote); ok { + return x.Remote + } } return nil } @@ -1351,33 +1319,31 @@ func (*AsyncDataSource_Local) isAsyncDataSource_Specifier() {} func (*AsyncDataSource_Remote) isAsyncDataSource_Specifier() {} -// Configuration for transport socket in :ref:`listeners ` and -// :ref:`clusters `. If the configuration is +// Configuration for transport socket in listeners and +// clusters. If the configuration is // empty, a default transport socket implementation and configuration will be // chosen based on the platform and existence of tls_context. type TransportSocket struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the transport socket to instantiate. The name must match a supported transport // socket implementation. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Implementation specific configuration which depends on the implementation being instantiated. // See the supported transport socket implementations for further documentation. // - // Types that are assignable to ConfigType: + // Types that are valid to be assigned to ConfigType: + // // *TransportSocket_TypedConfig - ConfigType isTransportSocket_ConfigType `protobuf_oneof:"config_type"` + ConfigType isTransportSocket_ConfigType `protobuf_oneof:"config_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TransportSocket) Reset() { *x = TransportSocket{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TransportSocket) String() string { @@ -1388,7 +1354,7 @@ func (*TransportSocket) ProtoMessage() {} func (x *TransportSocket) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1410,16 +1376,18 @@ func (x *TransportSocket) GetName() string { return "" } -func (m *TransportSocket) GetConfigType() isTransportSocket_ConfigType { - if m != nil { - return m.ConfigType +func (x *TransportSocket) GetConfigType() isTransportSocket_ConfigType { + if x != nil { + return x.ConfigType } return nil } -func (x *TransportSocket) GetTypedConfig() *any.Any { - if x, ok := x.GetConfigType().(*TransportSocket_TypedConfig); ok { - return x.TypedConfig +func (x *TransportSocket) GetTypedConfig() *anypb.Any { + if x != nil { + if x, ok := x.ConfigType.(*TransportSocket_TypedConfig); ok { + return x.TypedConfig + } } return nil } @@ -1429,7 +1397,7 @@ type isTransportSocket_ConfigType interface { } type TransportSocket_TypedConfig struct { - TypedConfig *any.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"` + TypedConfig *anypb.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"` } func (*TransportSocket_TypedConfig) isTransportSocket_ConfigType() {} @@ -1437,31 +1405,28 @@ func (*TransportSocket_TypedConfig) isTransportSocket_ConfigType() {} // Runtime derived FractionalPercent with defaults for when the numerator or denominator is not // specified via a runtime key. // -// .. note:: +// **Note**: // -// Parsing of the runtime key's data is implemented such that it may be represented as a -// :ref:`FractionalPercent ` proto represented as JSON/YAML -// and may also be represented as an integer with the assumption that the value is an integral -// percentage out of 100. For instance, a runtime key lookup returning the value "42" would parse -// as a `FractionalPercent` whose numerator is 42 and denominator is HUNDRED. +// Parsing of the runtime key's data is implemented such that it may be represented as a +// FractionalPercent proto represented as JSON/YAML +// and may also be represented as an integer with the assumption that the value is an integral +// percentage out of 100. For instance, a runtime key lookup returning the value "42" would parse +// as a `FractionalPercent` whose numerator is 42 and denominator is HUNDRED. type RuntimeFractionalPercent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Default value if the runtime value's for the numerator/denominator keys are not available. DefaultValue *v3.FractionalPercent `protobuf:"bytes,1,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` // Runtime key for a YAML representation of a FractionalPercent. - RuntimeKey string `protobuf:"bytes,2,opt,name=runtime_key,json=runtimeKey,proto3" json:"runtime_key,omitempty"` + RuntimeKey string `protobuf:"bytes,2,opt,name=runtime_key,json=runtimeKey,proto3" json:"runtime_key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RuntimeFractionalPercent) Reset() { *x = RuntimeFractionalPercent{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RuntimeFractionalPercent) String() string { @@ -1472,7 +1437,7 @@ func (*RuntimeFractionalPercent) ProtoMessage() {} func (x *RuntimeFractionalPercent) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1503,23 +1468,20 @@ func (x *RuntimeFractionalPercent) GetRuntimeKey() string { // Identifies a specific ControlPlane instance that Envoy is connected to. type ControlPlane struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // An opaque control plane identifier that uniquely identifies an instance // of control plane. This can be used to identify which control plane instance, // the Envoy is connected to. - Identifier string `protobuf:"bytes,1,opt,name=identifier,proto3" json:"identifier,omitempty"` + Identifier string `protobuf:"bytes,1,opt,name=identifier,proto3" json:"identifier,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControlPlane) Reset() { *x = ControlPlane{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControlPlane) String() string { @@ -1530,7 +1492,7 @@ func (*ControlPlane) ProtoMessage() {} func (x *ControlPlane) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1554,7 +1516,7 @@ func (x *ControlPlane) GetIdentifier() string { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_rawDesc = string([]byte{ 0x0a, 0x53, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -1730,10 +1692,10 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x89, 0x01, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x11, - 0xfa, 0x42, 0x0e, 0x72, 0x0c, 0x20, 0x01, 0x28, 0x80, 0x80, 0x01, 0xc0, 0x01, 0x01, 0xc8, 0x01, - 0x00, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0xfa, 0x42, 0x0e, 0x72, 0x0c, 0x20, 0x01, 0x28, 0x80, 0x80, 0x01, 0xc8, 0x01, 0x00, 0xc0, 0x01, + 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0f, 0xfa, 0x42, 0x0c, 0x72, 0x0a, 0x28, 0x80, 0x80, 0x01, - 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x2e, 0x8a, + 0xc8, 0x01, 0x00, 0xc0, 0x01, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x2e, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x28, 0x0a, 0x26, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xca, 0x01, @@ -1862,34 +1824,35 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, - 0x08, 0x4f, 0x55, 0x54, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x42, 0x9a, 0x01, 0x0a, 0x2a, - 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x42, 0x09, 0x42, 0x61, 0x73, 0x65, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, - 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x08, 0x4f, 0x55, 0x54, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x42, 0x9e, 0x01, 0xb8, 0xf5, + 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, + 0x10, 0x02, 0x0a, 0x2a, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x42, 0x09, + 0x42, 0x61, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_enumTypes = make([]protoimpl.EnumInfo, 3) var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes = make([]protoimpl.MessageInfo, 19) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_goTypes = []any{ (RoutingPriority)(0), // 0: solo.io.envoy.config.core.v3.RoutingPriority (RequestMethod)(0), // 1: solo.io.envoy.config.core.v3.RequestMethod (TrafficDirection)(0), // 2: solo.io.envoy.config.core.v3.TrafficDirection @@ -1913,13 +1876,13 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v (*ControlPlane)(nil), // 20: solo.io.envoy.config.core.v3.ControlPlane nil, // 21: solo.io.envoy.config.core.v3.Metadata.FilterMetadataEntry (*v3.SemanticVersion)(nil), // 22: solo.io.envoy.type.v3.SemanticVersion - (*_struct.Struct)(nil), // 23: google.protobuf.Struct + (*structpb.Struct)(nil), // 23: google.protobuf.Struct (*Address)(nil), // 24: solo.io.envoy.config.core.v3.Address - (*wrappers.BoolValue)(nil), // 25: google.protobuf.BoolValue + (*wrapperspb.BoolValue)(nil), // 25: google.protobuf.BoolValue (*BackoffStrategy)(nil), // 26: solo.io.envoy.config.core.v3.BackoffStrategy - (*wrappers.UInt32Value)(nil), // 27: google.protobuf.UInt32Value + (*wrapperspb.UInt32Value)(nil), // 27: google.protobuf.UInt32Value (*HttpUri)(nil), // 28: solo.io.envoy.config.core.v3.HttpUri - (*any.Any)(nil), // 29: google.protobuf.Any + (*anypb.Any)(nil), // 29: google.protobuf.Any (*v3.FractionalPercent)(nil), // 30: solo.io.envoy.type.v3.FractionalPercent } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_depIdxs = []int32{ @@ -1962,245 +1925,27 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_address_proto_init() file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_backoff_proto_init() file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_init() - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Locality); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BuildVersion); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Extension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Node); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Metadata); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RuntimeUInt32); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RuntimeDouble); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RuntimeFeatureFlag); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HeaderValue); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HeaderValueOption); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HeaderMap); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DataSource); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoteDataSource); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AsyncDataSource); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TransportSocket); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RuntimeFractionalPercent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControlPlane); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[3].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[3].OneofWrappers = []any{ (*Node_UserAgentVersion)(nil), (*Node_UserAgentBuildVersion)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[11].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[11].OneofWrappers = []any{ (*DataSource_Filename)(nil), (*DataSource_InlineBytes)(nil), (*DataSource_InlineString)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[14].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[14].OneofWrappers = []any{ (*AsyncDataSource_Local)(nil), (*AsyncDataSource_Remote)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[15].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes[15].OneofWrappers = []any{ (*TransportSocket_TypedConfig)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_rawDesc)), NumEnums: 3, NumMessages: 19, NumExtensions: 0, @@ -2212,7 +1957,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/base.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/base.pb.hash.go index 488b28e00..91e3f9498 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/base.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/base.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Locality) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -54,6 +58,10 @@ func (m *Locality) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *BuildVersion) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -67,28 +75,40 @@ func (m *BuildVersion) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetVersion()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Version")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetVersion(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetVersion(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Version")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -98,6 +118,10 @@ func (m *BuildVersion) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Extension) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -123,14 +147,20 @@ func (m *Extension) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetVersion()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Version")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetVersion(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetVersion(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Version")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -145,6 +175,10 @@ func (m *Extension) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Node) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -166,28 +200,40 @@ func (m *Node) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetLocality()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Locality")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetLocality(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetLocality(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Locality")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -200,14 +246,20 @@ func (m *Node) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetExtensions() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -226,14 +278,20 @@ func (m *Node) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetListeningAddresses() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -252,14 +310,20 @@ func (m *Node) Hash(hasher hash.Hash64) (uint64, error) { case *Node_UserAgentBuildVersion: if h, ok := interface{}(m.GetUserAgentBuildVersion()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UserAgentBuildVersion")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetUserAgentBuildVersion(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetUserAgentBuildVersion(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("UserAgentBuildVersion")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -271,6 +335,10 @@ func (m *Node) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Metadata) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -290,14 +358,20 @@ func (m *Metadata) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -320,6 +394,10 @@ func (m *Metadata) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RuntimeUInt32) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -345,6 +423,10 @@ func (m *RuntimeUInt32) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RuntimeDouble) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -370,6 +452,10 @@ func (m *RuntimeDouble) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RuntimeFeatureFlag) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -383,14 +469,20 @@ func (m *RuntimeFeatureFlag) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetDefaultValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DefaultValue")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDefaultValue(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDefaultValue(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DefaultValue")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -404,6 +496,10 @@ func (m *RuntimeFeatureFlag) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HeaderValue) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -428,6 +524,10 @@ func (m *HeaderValue) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HeaderValueOption) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -441,28 +541,40 @@ func (m *HeaderValueOption) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetHeader()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHeader(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHeader(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetAppend()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Append")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAppend(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAppend(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Append")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -472,6 +584,10 @@ func (m *HeaderValueOption) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HeaderMap) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -487,14 +603,20 @@ func (m *HeaderMap) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetHeaders() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -506,6 +628,10 @@ func (m *HeaderMap) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *DataSource) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -544,6 +670,10 @@ func (m *DataSource) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RetryPolicy) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -557,28 +687,40 @@ func (m *RetryPolicy) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetRetryBackOff()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryBackOff")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRetryBackOff(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRetryBackOff(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RetryBackOff")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetNumRetries()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("NumRetries")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetNumRetries(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetNumRetries(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("NumRetries")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -588,6 +730,10 @@ func (m *RetryPolicy) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RemoteDataSource) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -601,14 +747,20 @@ func (m *RemoteDataSource) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetHttpUri()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpUri")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHttpUri(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHttpUri(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HttpUri")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -619,14 +771,20 @@ func (m *RemoteDataSource) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetRetryPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRetryPolicy(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRetryPolicy(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -636,6 +794,10 @@ func (m *RemoteDataSource) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *AsyncDataSource) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -653,14 +815,20 @@ func (m *AsyncDataSource) Hash(hasher hash.Hash64) (uint64, error) { case *AsyncDataSource_Local: if h, ok := interface{}(m.GetLocal()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Local")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetLocal(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetLocal(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Local")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -669,14 +837,20 @@ func (m *AsyncDataSource) Hash(hasher hash.Hash64) (uint64, error) { case *AsyncDataSource_Remote: if h, ok := interface{}(m.GetRemote()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Remote")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRemote(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRemote(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Remote")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -688,6 +862,10 @@ func (m *AsyncDataSource) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *TransportSocket) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -709,14 +887,20 @@ func (m *TransportSocket) Hash(hasher hash.Hash64) (uint64, error) { case *TransportSocket_TypedConfig: if h, ok := interface{}(m.GetTypedConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -728,6 +912,10 @@ func (m *TransportSocket) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RuntimeFractionalPercent) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -741,14 +929,20 @@ func (m *RuntimeFractionalPercent) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetDefaultValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DefaultValue")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDefaultValue(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDefaultValue(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DefaultValue")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -762,6 +956,10 @@ func (m *RuntimeFractionalPercent) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ControlPlane) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/base.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/base.pb.uniquehash.go new file mode 100644 index 000000000..6b562e08c --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/base.pb.uniquehash.go @@ -0,0 +1,1069 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/base.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Locality) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.Locality")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Region")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRegion())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Zone")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetZone())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SubZone")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSubZone())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *BuildVersion) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.BuildVersion")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetVersion()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Version")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetVersion(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Version")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Extension) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.Extension")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Category")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCategory())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TypeDescriptor")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTypeDescriptor())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetVersion()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Version")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetVersion(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Version")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Disabled")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDisabled()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Node) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.Node")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Id")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Cluster")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCluster())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetLocality()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Locality")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLocality(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Locality")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("UserAgentName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUserAgentName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + for i, v := range m.GetExtensions() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("ClientFeatures")); err != nil { + return 0, err + } + for i, v := range m.GetClientFeatures() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("ListeningAddresses")); err != nil { + return 0, err + } + for i, v := range m.GetListeningAddresses() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.UserAgentVersionType.(type) { + + case *Node_UserAgentVersion: + + if _, err = hasher.Write([]byte("UserAgentVersion")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUserAgentVersion())); err != nil { + return 0, err + } + + case *Node_UserAgentBuildVersion: + + if h, ok := interface{}(m.GetUserAgentBuildVersion()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UserAgentBuildVersion")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUserAgentBuildVersion(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UserAgentBuildVersion")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Metadata) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.Metadata")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetFilterMetadata() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RuntimeUInt32) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.RuntimeUInt32")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DefaultValue")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDefaultValue()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RuntimeKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRuntimeKey())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RuntimeDouble) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.RuntimeDouble")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DefaultValue")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDefaultValue()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RuntimeKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRuntimeKey())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RuntimeFeatureFlag) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.RuntimeFeatureFlag")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDefaultValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DefaultValue")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDefaultValue(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DefaultValue")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RuntimeKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRuntimeKey())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HeaderValue) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.HeaderValue")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetValue())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HeaderValueOption) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.HeaderValueOption")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHeader()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeader(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAppend()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Append")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAppend(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Append")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HeaderMap) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.HeaderMap")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + for i, v := range m.GetHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DataSource) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.DataSource")); err != nil { + return 0, err + } + + switch m.Specifier.(type) { + + case *DataSource_Filename: + + if _, err = hasher.Write([]byte("Filename")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetFilename())); err != nil { + return 0, err + } + + case *DataSource_InlineBytes: + + if _, err = hasher.Write([]byte("InlineBytes")); err != nil { + return 0, err + } + if _, err = hasher.Write(m.GetInlineBytes()); err != nil { + return 0, err + } + + case *DataSource_InlineString: + + if _, err = hasher.Write([]byte("InlineString")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetInlineString())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RetryPolicy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.RetryPolicy")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRetryBackOff()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryBackOff")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetryBackOff(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RetryBackOff")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetNumRetries()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("NumRetries")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetNumRetries(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("NumRetries")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RemoteDataSource) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.RemoteDataSource")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHttpUri()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpUri")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpUri(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpUri")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Sha256")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSha256())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRetryPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetryPolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AsyncDataSource) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.AsyncDataSource")); err != nil { + return 0, err + } + + switch m.Specifier.(type) { + + case *AsyncDataSource_Local: + + if h, ok := interface{}(m.GetLocal()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Local")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLocal(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Local")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AsyncDataSource_Remote: + + if h, ok := interface{}(m.GetRemote()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Remote")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRemote(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Remote")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TransportSocket) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.TransportSocket")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + switch m.ConfigType.(type) { + + case *TransportSocket_TypedConfig: + + if h, ok := interface{}(m.GetTypedConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RuntimeFractionalPercent) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.RuntimeFractionalPercent")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDefaultValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DefaultValue")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDefaultValue(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DefaultValue")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RuntimeKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRuntimeKey())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ControlPlane) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.ControlPlane")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Identifier")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetIdentifier())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/event_service_config.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/event_service_config.pb.clone.go new file mode 100644 index 000000000..43914b842 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/event_service_config.pb.clone.go @@ -0,0 +1,53 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/event_service_config.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *EventServiceConfig) Clone() proto.Message { + var target *EventServiceConfig + if m == nil { + return target + } + target = &EventServiceConfig{} + + switch m.ConfigSourceSpecifier.(type) { + + case *EventServiceConfig_GrpcService: + + if h, ok := interface{}(m.GetGrpcService()).(clone.Cloner); ok { + target.ConfigSourceSpecifier = &EventServiceConfig_GrpcService{ + GrpcService: h.Clone().(*GrpcService), + } + } else { + target.ConfigSourceSpecifier = &EventServiceConfig_GrpcService{ + GrpcService: proto.Clone(m.GetGrpcService()).(*GrpcService), + } + } + + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/event_service_config.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/event_service_config.pb.equal.go index 11a8c076c..7a2c40e39 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/event_service_config.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/event_service_config.pb.equal.go @@ -49,6 +49,9 @@ func (m *EventServiceConfig) Equal(that interface{}) bool { switch m.ConfigSourceSpecifier.(type) { case *EventServiceConfig_GrpcService: + if _, ok := target.ConfigSourceSpecifier.(*EventServiceConfig_GrpcService); !ok { + return false + } if h, ok := interface{}(m.GetGrpcService()).(equality.Equalizer); ok { if !h.Equal(target.GetGrpcService()) { @@ -60,6 +63,11 @@ func (m *EventServiceConfig) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.ConfigSourceSpecifier != target.ConfigSourceSpecifier { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/event_service_config.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/event_service_config.pb.go index 4b2ce44de..071677548 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/event_service_config.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/event_service_config.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/event_service_config.proto @@ -9,9 +9,9 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -25,29 +25,23 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // [#not-implemented-hide:] // Configuration of the event reporting service endpoint. type EventServiceConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to ConfigSourceSpecifier: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to ConfigSourceSpecifier: + // // *EventServiceConfig_GrpcService ConfigSourceSpecifier isEventServiceConfig_ConfigSourceSpecifier `protobuf_oneof:"config_source_specifier"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EventServiceConfig) Reset() { *x = EventServiceConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EventServiceConfig) String() string { @@ -58,7 +52,7 @@ func (*EventServiceConfig) ProtoMessage() {} func (x *EventServiceConfig) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -73,16 +67,18 @@ func (*EventServiceConfig) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_rawDescGZIP(), []int{0} } -func (m *EventServiceConfig) GetConfigSourceSpecifier() isEventServiceConfig_ConfigSourceSpecifier { - if m != nil { - return m.ConfigSourceSpecifier +func (x *EventServiceConfig) GetConfigSourceSpecifier() isEventServiceConfig_ConfigSourceSpecifier { + if x != nil { + return x.ConfigSourceSpecifier } return nil } func (x *EventServiceConfig) GetGrpcService() *GrpcService { - if x, ok := x.GetConfigSourceSpecifier().(*EventServiceConfig_GrpcService); ok { - return x.GrpcService + if x != nil { + if x, ok := x.ConfigSourceSpecifier.(*EventServiceConfig_GrpcService); ok { + return x.GrpcService + } } return nil } @@ -100,7 +96,7 @@ func (*EventServiceConfig_GrpcService) isEventServiceConfig_ConfigSourceSpecifie var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_rawDesc = string([]byte{ 0x0a, 0x63, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -133,34 +129,35 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x1e, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, - 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x42, 0xa8, 0x01, - 0x0a, 0x2a, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x42, 0x17, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, - 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x42, 0xac, 0x01, + 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, + 0x07, 0x02, 0x10, 0x02, 0x0a, 0x2a, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, + 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, + 0x42, 0x17, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_goTypes = []any{ (*EventServiceConfig)(nil), // 0: solo.io.envoy.config.core.v3.EventServiceConfig (*GrpcService)(nil), // 1: solo.io.envoy.config.core.v3.GrpcService } @@ -181,28 +178,14 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ return } file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_init() - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EventServiceConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_msgTypes[0].OneofWrappers = []any{ (*EventServiceConfig_GrpcService)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, @@ -213,7 +196,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/event_service_config.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/event_service_config.pb.hash.go index b4dab0a0d..d29750063 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/event_service_config.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/event_service_config.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *EventServiceConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -43,14 +47,20 @@ func (m *EventServiceConfig) Hash(hasher hash.Hash64) (uint64, error) { case *EventServiceConfig_GrpcService: if h, ok := interface{}(m.GetGrpcService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetGrpcService(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetGrpcService(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/event_service_config.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/event_service_config.pb.uniquehash.go new file mode 100644 index 000000000..c402c85e2 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/event_service_config.pb.uniquehash.go @@ -0,0 +1,73 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/event_service_config.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *EventServiceConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.EventServiceConfig")); err != nil { + return 0, err + } + + switch m.ConfigSourceSpecifier.(type) { + + case *EventServiceConfig_GrpcService: + + if h, ok := interface{}(m.GetGrpcService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcService(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/extension.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/extension.pb.clone.go new file mode 100644 index 000000000..0b8fb78ac --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/extension.pb.clone.go @@ -0,0 +1,47 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/extension.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_anypb "google.golang.org/protobuf/types/known/anypb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *TypedExtensionConfig) Clone() proto.Message { + var target *TypedExtensionConfig + if m == nil { + return target + } + target = &TypedExtensionConfig{} + + target.Name = m.GetName() + + if h, ok := interface{}(m.GetTypedConfig()).(clone.Cloner); ok { + target.TypedConfig = h.Clone().(*google_golang_org_protobuf_types_known_anypb.Any) + } else { + target.TypedConfig = proto.Clone(m.GetTypedConfig()).(*google_golang_org_protobuf_types_known_anypb.Any) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/extension.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/extension.pb.go index 955c9710f..a2b4434a0 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/extension.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/extension.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/extension.proto @@ -9,14 +9,14 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - any "github.com/golang/protobuf/ptypes/any" _ "github.com/solo-io/protoc-gen-ext/extproto" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" ) const ( @@ -26,17 +26,10 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Message type for extension configuration. // [#next-major-version: revisit all existing typed_config that doesn't use this wrapper.]. type TypedExtensionConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of an extension. This is not used to select the extension, instead // it serves the role of an opaque identifier. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` @@ -45,16 +38,16 @@ type TypedExtensionConfig struct { // the inner type URL of *TypedStruct* will be utilized. See the // :ref:`extension configuration overview // ` for further details. - TypedConfig *any.Any `protobuf:"bytes,2,opt,name=typed_config,json=typedConfig,proto3" json:"typed_config,omitempty"` + TypedConfig *anypb.Any `protobuf:"bytes,2,opt,name=typed_config,json=typedConfig,proto3" json:"typed_config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TypedExtensionConfig) Reset() { *x = TypedExtensionConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TypedExtensionConfig) String() string { @@ -65,7 +58,7 @@ func (*TypedExtensionConfig) ProtoMessage() {} func (x *TypedExtensionConfig) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -87,7 +80,7 @@ func (x *TypedExtensionConfig) GetName() string { return "" } -func (x *TypedExtensionConfig) GetTypedConfig() *any.Any { +func (x *TypedExtensionConfig) GetTypedConfig() *anypb.Any { if x != nil { return x.TypedConfig } @@ -96,7 +89,7 @@ func (x *TypedExtensionConfig) GetTypedConfig() *any.Any { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_rawDesc = string([]byte{ 0x0a, 0x58, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -118,36 +111,36 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xa2, 0x01, 0x02, 0x08, 0x01, 0x52, 0x0b, 0x74, 0x79, 0x70, 0x65, - 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x9f, 0x01, 0x0a, 0x2a, 0x69, 0x6f, 0x2e, 0x65, - 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x42, 0x0e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, - 0x02, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, -} + 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0xa3, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, + 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x2a, + 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x42, 0x0e, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, + 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_goTypes = []any{ (*TypedExtensionConfig)(nil), // 0: solo.io.envoy.config.core.v3.TypedExtensionConfig - (*any.Any)(nil), // 1: google.protobuf.Any + (*anypb.Any)(nil), // 1: google.protobuf.Any } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_depIdxs = []int32{ 1, // 0: solo.io.envoy.config.core.v3.TypedExtensionConfig.typed_config:type_name -> google.protobuf.Any @@ -165,25 +158,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TypedExtensionConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, @@ -194,7 +173,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_extension_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/extension.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/extension.pb.hash.go index 7f7967708..6201c35ae 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/extension.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/extension.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *TypedExtensionConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -43,14 +47,20 @@ func (m *TypedExtensionConfig) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetTypedConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/extension.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/extension.pb.uniquehash.go new file mode 100644 index 000000000..7fd37620e --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/extension.pb.uniquehash.go @@ -0,0 +1,74 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/extension.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TypedExtensionConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.TypedExtensionConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTypedConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/grpc_service.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/grpc_service.pb.clone.go new file mode 100644 index 000000000..8d04f365b --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/grpc_service.pb.clone.go @@ -0,0 +1,486 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/grpc_service.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_anypb "google.golang.org/protobuf/types/known/anypb" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_emptypb "google.golang.org/protobuf/types/known/emptypb" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *GrpcService) Clone() proto.Message { + var target *GrpcService + if m == nil { + return target + } + target = &GrpcService{} + + if h, ok := interface{}(m.GetTimeout()).(clone.Cloner); ok { + target.Timeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.Timeout = proto.Clone(m.GetTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if m.GetInitialMetadata() != nil { + target.InitialMetadata = make([]*HeaderValue, len(m.GetInitialMetadata())) + for idx, v := range m.GetInitialMetadata() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.InitialMetadata[idx] = h.Clone().(*HeaderValue) + } else { + target.InitialMetadata[idx] = proto.Clone(v).(*HeaderValue) + } + + } + } + + switch m.TargetSpecifier.(type) { + + case *GrpcService_EnvoyGrpc_: + + if h, ok := interface{}(m.GetEnvoyGrpc()).(clone.Cloner); ok { + target.TargetSpecifier = &GrpcService_EnvoyGrpc_{ + EnvoyGrpc: h.Clone().(*GrpcService_EnvoyGrpc), + } + } else { + target.TargetSpecifier = &GrpcService_EnvoyGrpc_{ + EnvoyGrpc: proto.Clone(m.GetEnvoyGrpc()).(*GrpcService_EnvoyGrpc), + } + } + + case *GrpcService_GoogleGrpc_: + + if h, ok := interface{}(m.GetGoogleGrpc()).(clone.Cloner); ok { + target.TargetSpecifier = &GrpcService_GoogleGrpc_{ + GoogleGrpc: h.Clone().(*GrpcService_GoogleGrpc), + } + } else { + target.TargetSpecifier = &GrpcService_GoogleGrpc_{ + GoogleGrpc: proto.Clone(m.GetGoogleGrpc()).(*GrpcService_GoogleGrpc), + } + } + + } + + return target +} + +// Clone function +func (m *GrpcService_EnvoyGrpc) Clone() proto.Message { + var target *GrpcService_EnvoyGrpc + if m == nil { + return target + } + target = &GrpcService_EnvoyGrpc{} + + target.ClusterName = m.GetClusterName() + + target.Authority = m.GetAuthority() + + if h, ok := interface{}(m.GetRetryPolicy()).(clone.Cloner); ok { + target.RetryPolicy = h.Clone().(*RetryPolicy) + } else { + target.RetryPolicy = proto.Clone(m.GetRetryPolicy()).(*RetryPolicy) + } + + return target +} + +// Clone function +func (m *GrpcService_GoogleGrpc) Clone() proto.Message { + var target *GrpcService_GoogleGrpc + if m == nil { + return target + } + target = &GrpcService_GoogleGrpc{} + + target.TargetUri = m.GetTargetUri() + + if h, ok := interface{}(m.GetChannelCredentials()).(clone.Cloner); ok { + target.ChannelCredentials = h.Clone().(*GrpcService_GoogleGrpc_ChannelCredentials) + } else { + target.ChannelCredentials = proto.Clone(m.GetChannelCredentials()).(*GrpcService_GoogleGrpc_ChannelCredentials) + } + + if m.GetCallCredentials() != nil { + target.CallCredentials = make([]*GrpcService_GoogleGrpc_CallCredentials, len(m.GetCallCredentials())) + for idx, v := range m.GetCallCredentials() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.CallCredentials[idx] = h.Clone().(*GrpcService_GoogleGrpc_CallCredentials) + } else { + target.CallCredentials[idx] = proto.Clone(v).(*GrpcService_GoogleGrpc_CallCredentials) + } + + } + } + + target.StatPrefix = m.GetStatPrefix() + + target.CredentialsFactoryName = m.GetCredentialsFactoryName() + + if h, ok := interface{}(m.GetConfig()).(clone.Cloner); ok { + target.Config = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Config = proto.Clone(m.GetConfig()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + if h, ok := interface{}(m.GetPerStreamBufferLimitBytes()).(clone.Cloner); ok { + target.PerStreamBufferLimitBytes = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.PerStreamBufferLimitBytes = proto.Clone(m.GetPerStreamBufferLimitBytes()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetChannelArgs()).(clone.Cloner); ok { + target.ChannelArgs = h.Clone().(*GrpcService_GoogleGrpc_ChannelArgs) + } else { + target.ChannelArgs = proto.Clone(m.GetChannelArgs()).(*GrpcService_GoogleGrpc_ChannelArgs) + } + + return target +} + +// Clone function +func (m *GrpcService_GoogleGrpc_SslCredentials) Clone() proto.Message { + var target *GrpcService_GoogleGrpc_SslCredentials + if m == nil { + return target + } + target = &GrpcService_GoogleGrpc_SslCredentials{} + + if h, ok := interface{}(m.GetRootCerts()).(clone.Cloner); ok { + target.RootCerts = h.Clone().(*DataSource) + } else { + target.RootCerts = proto.Clone(m.GetRootCerts()).(*DataSource) + } + + if h, ok := interface{}(m.GetPrivateKey()).(clone.Cloner); ok { + target.PrivateKey = h.Clone().(*DataSource) + } else { + target.PrivateKey = proto.Clone(m.GetPrivateKey()).(*DataSource) + } + + if h, ok := interface{}(m.GetCertChain()).(clone.Cloner); ok { + target.CertChain = h.Clone().(*DataSource) + } else { + target.CertChain = proto.Clone(m.GetCertChain()).(*DataSource) + } + + return target +} + +// Clone function +func (m *GrpcService_GoogleGrpc_GoogleLocalCredentials) Clone() proto.Message { + var target *GrpcService_GoogleGrpc_GoogleLocalCredentials + if m == nil { + return target + } + target = &GrpcService_GoogleGrpc_GoogleLocalCredentials{} + + return target +} + +// Clone function +func (m *GrpcService_GoogleGrpc_ChannelCredentials) Clone() proto.Message { + var target *GrpcService_GoogleGrpc_ChannelCredentials + if m == nil { + return target + } + target = &GrpcService_GoogleGrpc_ChannelCredentials{} + + switch m.CredentialSpecifier.(type) { + + case *GrpcService_GoogleGrpc_ChannelCredentials_SslCredentials: + + if h, ok := interface{}(m.GetSslCredentials()).(clone.Cloner); ok { + target.CredentialSpecifier = &GrpcService_GoogleGrpc_ChannelCredentials_SslCredentials{ + SslCredentials: h.Clone().(*GrpcService_GoogleGrpc_SslCredentials), + } + } else { + target.CredentialSpecifier = &GrpcService_GoogleGrpc_ChannelCredentials_SslCredentials{ + SslCredentials: proto.Clone(m.GetSslCredentials()).(*GrpcService_GoogleGrpc_SslCredentials), + } + } + + case *GrpcService_GoogleGrpc_ChannelCredentials_GoogleDefault: + + if h, ok := interface{}(m.GetGoogleDefault()).(clone.Cloner); ok { + target.CredentialSpecifier = &GrpcService_GoogleGrpc_ChannelCredentials_GoogleDefault{ + GoogleDefault: h.Clone().(*google_golang_org_protobuf_types_known_emptypb.Empty), + } + } else { + target.CredentialSpecifier = &GrpcService_GoogleGrpc_ChannelCredentials_GoogleDefault{ + GoogleDefault: proto.Clone(m.GetGoogleDefault()).(*google_golang_org_protobuf_types_known_emptypb.Empty), + } + } + + case *GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials: + + if h, ok := interface{}(m.GetLocalCredentials()).(clone.Cloner); ok { + target.CredentialSpecifier = &GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials{ + LocalCredentials: h.Clone().(*GrpcService_GoogleGrpc_GoogleLocalCredentials), + } + } else { + target.CredentialSpecifier = &GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials{ + LocalCredentials: proto.Clone(m.GetLocalCredentials()).(*GrpcService_GoogleGrpc_GoogleLocalCredentials), + } + } + + } + + return target +} + +// Clone function +func (m *GrpcService_GoogleGrpc_CallCredentials) Clone() proto.Message { + var target *GrpcService_GoogleGrpc_CallCredentials + if m == nil { + return target + } + target = &GrpcService_GoogleGrpc_CallCredentials{} + + switch m.CredentialSpecifier.(type) { + + case *GrpcService_GoogleGrpc_CallCredentials_AccessToken: + + target.CredentialSpecifier = &GrpcService_GoogleGrpc_CallCredentials_AccessToken{ + AccessToken: m.GetAccessToken(), + } + + case *GrpcService_GoogleGrpc_CallCredentials_GoogleComputeEngine: + + if h, ok := interface{}(m.GetGoogleComputeEngine()).(clone.Cloner); ok { + target.CredentialSpecifier = &GrpcService_GoogleGrpc_CallCredentials_GoogleComputeEngine{ + GoogleComputeEngine: h.Clone().(*google_golang_org_protobuf_types_known_emptypb.Empty), + } + } else { + target.CredentialSpecifier = &GrpcService_GoogleGrpc_CallCredentials_GoogleComputeEngine{ + GoogleComputeEngine: proto.Clone(m.GetGoogleComputeEngine()).(*google_golang_org_protobuf_types_known_emptypb.Empty), + } + } + + case *GrpcService_GoogleGrpc_CallCredentials_GoogleRefreshToken: + + target.CredentialSpecifier = &GrpcService_GoogleGrpc_CallCredentials_GoogleRefreshToken{ + GoogleRefreshToken: m.GetGoogleRefreshToken(), + } + + case *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJwtAccess: + + if h, ok := interface{}(m.GetServiceAccountJwtAccess()).(clone.Cloner); ok { + target.CredentialSpecifier = &GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJwtAccess{ + ServiceAccountJwtAccess: h.Clone().(*GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials), + } + } else { + target.CredentialSpecifier = &GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJwtAccess{ + ServiceAccountJwtAccess: proto.Clone(m.GetServiceAccountJwtAccess()).(*GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials), + } + } + + case *GrpcService_GoogleGrpc_CallCredentials_GoogleIam: + + if h, ok := interface{}(m.GetGoogleIam()).(clone.Cloner); ok { + target.CredentialSpecifier = &GrpcService_GoogleGrpc_CallCredentials_GoogleIam{ + GoogleIam: h.Clone().(*GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials), + } + } else { + target.CredentialSpecifier = &GrpcService_GoogleGrpc_CallCredentials_GoogleIam{ + GoogleIam: proto.Clone(m.GetGoogleIam()).(*GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials), + } + } + + case *GrpcService_GoogleGrpc_CallCredentials_FromPlugin: + + if h, ok := interface{}(m.GetFromPlugin()).(clone.Cloner); ok { + target.CredentialSpecifier = &GrpcService_GoogleGrpc_CallCredentials_FromPlugin{ + FromPlugin: h.Clone().(*GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin), + } + } else { + target.CredentialSpecifier = &GrpcService_GoogleGrpc_CallCredentials_FromPlugin{ + FromPlugin: proto.Clone(m.GetFromPlugin()).(*GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin), + } + } + + case *GrpcService_GoogleGrpc_CallCredentials_StsService_: + + if h, ok := interface{}(m.GetStsService()).(clone.Cloner); ok { + target.CredentialSpecifier = &GrpcService_GoogleGrpc_CallCredentials_StsService_{ + StsService: h.Clone().(*GrpcService_GoogleGrpc_CallCredentials_StsService), + } + } else { + target.CredentialSpecifier = &GrpcService_GoogleGrpc_CallCredentials_StsService_{ + StsService: proto.Clone(m.GetStsService()).(*GrpcService_GoogleGrpc_CallCredentials_StsService), + } + } + + } + + return target +} + +// Clone function +func (m *GrpcService_GoogleGrpc_ChannelArgs) Clone() proto.Message { + var target *GrpcService_GoogleGrpc_ChannelArgs + if m == nil { + return target + } + target = &GrpcService_GoogleGrpc_ChannelArgs{} + + if m.GetArgs() != nil { + target.Args = make(map[string]*GrpcService_GoogleGrpc_ChannelArgs_Value, len(m.GetArgs())) + for k, v := range m.GetArgs() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Args[k] = h.Clone().(*GrpcService_GoogleGrpc_ChannelArgs_Value) + } else { + target.Args[k] = proto.Clone(v).(*GrpcService_GoogleGrpc_ChannelArgs_Value) + } + + } + } + + return target +} + +// Clone function +func (m *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials) Clone() proto.Message { + var target *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials + if m == nil { + return target + } + target = &GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials{} + + target.JsonKey = m.GetJsonKey() + + target.TokenLifetimeSeconds = m.GetTokenLifetimeSeconds() + + return target +} + +// Clone function +func (m *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) Clone() proto.Message { + var target *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials + if m == nil { + return target + } + target = &GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials{} + + target.AuthorizationToken = m.GetAuthorizationToken() + + target.AuthoritySelector = m.GetAuthoritySelector() + + return target +} + +// Clone function +func (m *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) Clone() proto.Message { + var target *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin + if m == nil { + return target + } + target = &GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin{} + + target.Name = m.GetName() + + switch m.ConfigType.(type) { + + case *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig: + + if h, ok := interface{}(m.GetTypedConfig()).(clone.Cloner); ok { + target.ConfigType = &GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig{ + TypedConfig: h.Clone().(*google_golang_org_protobuf_types_known_anypb.Any), + } + } else { + target.ConfigType = &GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig{ + TypedConfig: proto.Clone(m.GetTypedConfig()).(*google_golang_org_protobuf_types_known_anypb.Any), + } + } + + } + + return target +} + +// Clone function +func (m *GrpcService_GoogleGrpc_CallCredentials_StsService) Clone() proto.Message { + var target *GrpcService_GoogleGrpc_CallCredentials_StsService + if m == nil { + return target + } + target = &GrpcService_GoogleGrpc_CallCredentials_StsService{} + + target.TokenExchangeServiceUri = m.GetTokenExchangeServiceUri() + + target.Resource = m.GetResource() + + target.Audience = m.GetAudience() + + target.Scope = m.GetScope() + + target.RequestedTokenType = m.GetRequestedTokenType() + + target.SubjectTokenPath = m.GetSubjectTokenPath() + + target.SubjectTokenType = m.GetSubjectTokenType() + + target.ActorTokenPath = m.GetActorTokenPath() + + target.ActorTokenType = m.GetActorTokenType() + + return target +} + +// Clone function +func (m *GrpcService_GoogleGrpc_ChannelArgs_Value) Clone() proto.Message { + var target *GrpcService_GoogleGrpc_ChannelArgs_Value + if m == nil { + return target + } + target = &GrpcService_GoogleGrpc_ChannelArgs_Value{} + + switch m.ValueSpecifier.(type) { + + case *GrpcService_GoogleGrpc_ChannelArgs_Value_StringValue: + + target.ValueSpecifier = &GrpcService_GoogleGrpc_ChannelArgs_Value_StringValue{ + StringValue: m.GetStringValue(), + } + + case *GrpcService_GoogleGrpc_ChannelArgs_Value_IntValue: + + target.ValueSpecifier = &GrpcService_GoogleGrpc_ChannelArgs_Value_IntValue{ + IntValue: m.GetIntValue(), + } + + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/grpc_service.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/grpc_service.pb.equal.go index 19c88568b..affebc62a 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/grpc_service.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/grpc_service.pb.equal.go @@ -76,6 +76,9 @@ func (m *GrpcService) Equal(that interface{}) bool { switch m.TargetSpecifier.(type) { case *GrpcService_EnvoyGrpc_: + if _, ok := target.TargetSpecifier.(*GrpcService_EnvoyGrpc_); !ok { + return false + } if h, ok := interface{}(m.GetEnvoyGrpc()).(equality.Equalizer); ok { if !h.Equal(target.GetEnvoyGrpc()) { @@ -88,6 +91,9 @@ func (m *GrpcService) Equal(that interface{}) bool { } case *GrpcService_GoogleGrpc_: + if _, ok := target.TargetSpecifier.(*GrpcService_GoogleGrpc_); !ok { + return false + } if h, ok := interface{}(m.GetGoogleGrpc()).(equality.Equalizer); ok { if !h.Equal(target.GetGoogleGrpc()) { @@ -99,6 +105,11 @@ func (m *GrpcService) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.TargetSpecifier != target.TargetSpecifier { + return false + } } return true @@ -129,6 +140,20 @@ func (m *GrpcService_EnvoyGrpc) Equal(that interface{}) bool { return false } + if strings.Compare(m.GetAuthority(), target.GetAuthority()) != 0 { + return false + } + + if h, ok := interface{}(m.GetRetryPolicy()).(equality.Equalizer); ok { + if !h.Equal(target.GetRetryPolicy()) { + return false + } + } else { + if !proto.Equal(m.GetRetryPolicy(), target.GetRetryPolicy()) { + return false + } + } + return true } @@ -327,6 +352,9 @@ func (m *GrpcService_GoogleGrpc_ChannelCredentials) Equal(that interface{}) bool switch m.CredentialSpecifier.(type) { case *GrpcService_GoogleGrpc_ChannelCredentials_SslCredentials: + if _, ok := target.CredentialSpecifier.(*GrpcService_GoogleGrpc_ChannelCredentials_SslCredentials); !ok { + return false + } if h, ok := interface{}(m.GetSslCredentials()).(equality.Equalizer); ok { if !h.Equal(target.GetSslCredentials()) { @@ -339,6 +367,9 @@ func (m *GrpcService_GoogleGrpc_ChannelCredentials) Equal(that interface{}) bool } case *GrpcService_GoogleGrpc_ChannelCredentials_GoogleDefault: + if _, ok := target.CredentialSpecifier.(*GrpcService_GoogleGrpc_ChannelCredentials_GoogleDefault); !ok { + return false + } if h, ok := interface{}(m.GetGoogleDefault()).(equality.Equalizer); ok { if !h.Equal(target.GetGoogleDefault()) { @@ -351,6 +382,9 @@ func (m *GrpcService_GoogleGrpc_ChannelCredentials) Equal(that interface{}) bool } case *GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials: + if _, ok := target.CredentialSpecifier.(*GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials); !ok { + return false + } if h, ok := interface{}(m.GetLocalCredentials()).(equality.Equalizer); ok { if !h.Equal(target.GetLocalCredentials()) { @@ -362,6 +396,11 @@ func (m *GrpcService_GoogleGrpc_ChannelCredentials) Equal(that interface{}) bool } } + default: + // m is nil but target is not nil + if m.CredentialSpecifier != target.CredentialSpecifier { + return false + } } return true @@ -391,12 +430,18 @@ func (m *GrpcService_GoogleGrpc_CallCredentials) Equal(that interface{}) bool { switch m.CredentialSpecifier.(type) { case *GrpcService_GoogleGrpc_CallCredentials_AccessToken: + if _, ok := target.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_AccessToken); !ok { + return false + } if strings.Compare(m.GetAccessToken(), target.GetAccessToken()) != 0 { return false } case *GrpcService_GoogleGrpc_CallCredentials_GoogleComputeEngine: + if _, ok := target.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_GoogleComputeEngine); !ok { + return false + } if h, ok := interface{}(m.GetGoogleComputeEngine()).(equality.Equalizer); ok { if !h.Equal(target.GetGoogleComputeEngine()) { @@ -409,12 +454,18 @@ func (m *GrpcService_GoogleGrpc_CallCredentials) Equal(that interface{}) bool { } case *GrpcService_GoogleGrpc_CallCredentials_GoogleRefreshToken: + if _, ok := target.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_GoogleRefreshToken); !ok { + return false + } if strings.Compare(m.GetGoogleRefreshToken(), target.GetGoogleRefreshToken()) != 0 { return false } case *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJwtAccess: + if _, ok := target.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJwtAccess); !ok { + return false + } if h, ok := interface{}(m.GetServiceAccountJwtAccess()).(equality.Equalizer); ok { if !h.Equal(target.GetServiceAccountJwtAccess()) { @@ -427,6 +478,9 @@ func (m *GrpcService_GoogleGrpc_CallCredentials) Equal(that interface{}) bool { } case *GrpcService_GoogleGrpc_CallCredentials_GoogleIam: + if _, ok := target.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_GoogleIam); !ok { + return false + } if h, ok := interface{}(m.GetGoogleIam()).(equality.Equalizer); ok { if !h.Equal(target.GetGoogleIam()) { @@ -439,6 +493,9 @@ func (m *GrpcService_GoogleGrpc_CallCredentials) Equal(that interface{}) bool { } case *GrpcService_GoogleGrpc_CallCredentials_FromPlugin: + if _, ok := target.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_FromPlugin); !ok { + return false + } if h, ok := interface{}(m.GetFromPlugin()).(equality.Equalizer); ok { if !h.Equal(target.GetFromPlugin()) { @@ -451,6 +508,9 @@ func (m *GrpcService_GoogleGrpc_CallCredentials) Equal(that interface{}) bool { } case *GrpcService_GoogleGrpc_CallCredentials_StsService_: + if _, ok := target.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_StsService_); !ok { + return false + } if h, ok := interface{}(m.GetStsService()).(equality.Equalizer); ok { if !h.Equal(target.GetStsService()) { @@ -462,6 +522,11 @@ func (m *GrpcService_GoogleGrpc_CallCredentials) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.CredentialSpecifier != target.CredentialSpecifier { + return false + } } return true @@ -600,6 +665,9 @@ func (m *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) E switch m.ConfigType.(type) { case *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig: + if _, ok := target.ConfigType.(*GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig); !ok { + return false + } if h, ok := interface{}(m.GetTypedConfig()).(equality.Equalizer); ok { if !h.Equal(target.GetTypedConfig()) { @@ -611,6 +679,11 @@ func (m *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) E } } + default: + // m is nil but target is not nil + if m.ConfigType != target.ConfigType { + return false + } } return true @@ -700,17 +773,28 @@ func (m *GrpcService_GoogleGrpc_ChannelArgs_Value) Equal(that interface{}) bool switch m.ValueSpecifier.(type) { case *GrpcService_GoogleGrpc_ChannelArgs_Value_StringValue: + if _, ok := target.ValueSpecifier.(*GrpcService_GoogleGrpc_ChannelArgs_Value_StringValue); !ok { + return false + } if strings.Compare(m.GetStringValue(), target.GetStringValue()) != 0 { return false } case *GrpcService_GoogleGrpc_ChannelArgs_Value_IntValue: + if _, ok := target.ValueSpecifier.(*GrpcService_GoogleGrpc_ChannelArgs_Value_IntValue); !ok { + return false + } if m.GetIntValue() != target.GetIntValue() { return false } + default: + // m is nil but target is not nil + if m.ValueSpecifier != target.ValueSpecifier { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/grpc_service.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/grpc_service.pb.go index d11159c8d..4272eeb3e 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/grpc_service.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/grpc_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/grpc_service.proto @@ -9,18 +9,18 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - any "github.com/golang/protobuf/ptypes/any" - duration "github.com/golang/protobuf/ptypes/duration" - empty "github.com/golang/protobuf/ptypes/empty" - _struct "github.com/golang/protobuf/ptypes/struct" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" + durationpb "google.golang.org/protobuf/types/known/durationpb" + emptypb "google.golang.org/protobuf/types/known/emptypb" + structpb "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -30,38 +30,32 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // gRPC service configuration. This is used by :ref:`ApiConfigSource // ` and filter configurations. // [#next-free-field: 6] type GrpcService struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to TargetSpecifier: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to TargetSpecifier: + // // *GrpcService_EnvoyGrpc_ // *GrpcService_GoogleGrpc_ TargetSpecifier isGrpcService_TargetSpecifier `protobuf_oneof:"target_specifier"` // The timeout for the gRPC request. This is the timeout for a specific // request. - Timeout *duration.Duration `protobuf:"bytes,3,opt,name=timeout,proto3" json:"timeout,omitempty"` + Timeout *durationpb.Duration `protobuf:"bytes,3,opt,name=timeout,proto3" json:"timeout,omitempty"` // Additional metadata to include in streams initiated to the GrpcService. // This can be used for scenarios in which additional ad hoc authorization - // headers (e.g. ``x-foo-bar: baz-key``) are to be injected. + // headers (e.g. `x-foo-bar: baz-key`) are to be injected. InitialMetadata []*HeaderValue `protobuf:"bytes,5,rep,name=initial_metadata,json=initialMetadata,proto3" json:"initial_metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GrpcService) Reset() { *x = GrpcService{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GrpcService) String() string { @@ -72,7 +66,7 @@ func (*GrpcService) ProtoMessage() {} func (x *GrpcService) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -87,28 +81,32 @@ func (*GrpcService) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_rawDescGZIP(), []int{0} } -func (m *GrpcService) GetTargetSpecifier() isGrpcService_TargetSpecifier { - if m != nil { - return m.TargetSpecifier +func (x *GrpcService) GetTargetSpecifier() isGrpcService_TargetSpecifier { + if x != nil { + return x.TargetSpecifier } return nil } func (x *GrpcService) GetEnvoyGrpc() *GrpcService_EnvoyGrpc { - if x, ok := x.GetTargetSpecifier().(*GrpcService_EnvoyGrpc_); ok { - return x.EnvoyGrpc + if x != nil { + if x, ok := x.TargetSpecifier.(*GrpcService_EnvoyGrpc_); ok { + return x.EnvoyGrpc + } } return nil } func (x *GrpcService) GetGoogleGrpc() *GrpcService_GoogleGrpc { - if x, ok := x.GetTargetSpecifier().(*GrpcService_GoogleGrpc_); ok { - return x.GoogleGrpc + if x != nil { + if x, ok := x.TargetSpecifier.(*GrpcService_GoogleGrpc_); ok { + return x.GoogleGrpc + } } return nil } -func (x *GrpcService) GetTimeout() *duration.Duration { +func (x *GrpcService) GetTimeout() *durationpb.Duration { if x != nil { return x.Timeout } @@ -134,7 +132,7 @@ type GrpcService_EnvoyGrpc_ struct { } type GrpcService_GoogleGrpc_ struct { - // `Google C++ gRPC client `_ + // [Google C++ gRPC client](https://github.com/grpc/grpc) // See the :ref:`gRPC services overview ` // documentation for discussion on gRPC client selection. GoogleGrpc *GrpcService_GoogleGrpc `protobuf:"bytes,2,opt,name=google_grpc,json=googleGrpc,proto3,oneof"` @@ -145,23 +143,28 @@ func (*GrpcService_EnvoyGrpc_) isGrpcService_TargetSpecifier() {} func (*GrpcService_GoogleGrpc_) isGrpcService_TargetSpecifier() {} type GrpcService_EnvoyGrpc struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the upstream gRPC cluster. SSL credentials will be supplied - // in the :ref:`Cluster ` :ref:`transport_socket + // in the Cluster :ref:`transport_socket // `. ClusterName string `protobuf:"bytes,1,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` + // The `:authority` header in the grpc request. If this field is not set, the authority header value will be `cluster_name`. + // Note that this authority does not override the SNI. The SNI is provided by the transport socket of the cluster. + Authority string `protobuf:"bytes,2,opt,name=authority,proto3" json:"authority,omitempty"` + // Indicates the retry policy for re-establishing the gRPC stream + // This field is optional. If max interval is not provided, it will be set to ten times the provided base interval. + // Currently only supported for xDS gRPC streams. + // If not set, xDS gRPC streams default base interval:500ms, maximum interval:30s will be applied. + RetryPolicy *RetryPolicy `protobuf:"bytes,3,opt,name=retry_policy,json=retryPolicy,proto3" json:"retry_policy,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GrpcService_EnvoyGrpc) Reset() { *x = GrpcService_EnvoyGrpc{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GrpcService_EnvoyGrpc) String() string { @@ -172,7 +175,7 @@ func (*GrpcService_EnvoyGrpc) ProtoMessage() {} func (x *GrpcService_EnvoyGrpc) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -194,29 +197,39 @@ func (x *GrpcService_EnvoyGrpc) GetClusterName() string { return "" } +func (x *GrpcService_EnvoyGrpc) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + +func (x *GrpcService_EnvoyGrpc) GetRetryPolicy() *RetryPolicy { + if x != nil { + return x.RetryPolicy + } + return nil +} + // [#next-free-field: 9] type GrpcService_GoogleGrpc struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The target URI when using the `Google C++ gRPC client - // `_. SSL credentials will be supplied in - // :ref:`channel_credentials `. + state protoimpl.MessageState `protogen:"open.v1"` + // The target URI when using the [Google C++ gRPC client](https://github.com/grpc/grpc). SSL credentials will be supplied in + // channel_credentials. TargetUri string `protobuf:"bytes,1,opt,name=target_uri,json=targetUri,proto3" json:"target_uri,omitempty"` ChannelCredentials *GrpcService_GoogleGrpc_ChannelCredentials `protobuf:"bytes,2,opt,name=channel_credentials,json=channelCredentials,proto3" json:"channel_credentials,omitempty"` - // A set of call credentials that can be composed with `channel credentials - // `_. + // A set of call credentials that can be composed with [channel credentials](https://grpc.io/docs/guides/auth.html#credential-types). CallCredentials []*GrpcService_GoogleGrpc_CallCredentials `protobuf:"bytes,3,rep,name=call_credentials,json=callCredentials,proto3" json:"call_credentials,omitempty"` // The human readable prefix to use when emitting statistics for the gRPC // service. // // .. csv-table:: - // :header: Name, Type, Description - // :widths: 1, 1, 2 // - // streams_total, Counter, Total number of streams opened - // streams_closed_, Counter, Total streams closed with + // :header: Name, Type, Description + // :widths: 1, 1, 2 + // + // streams_total, Counter, Total number of streams opened + // streams_closed_, Counter, Total streams closed with StatPrefix string `protobuf:"bytes,4,opt,name=stat_prefix,json=statPrefix,proto3" json:"stat_prefix,omitempty"` // The name of the Google gRPC credentials factory to use. This must have been registered with // Envoy. If this is empty, a default credentials factory will be used that sets up channel @@ -224,21 +237,21 @@ type GrpcService_GoogleGrpc struct { CredentialsFactoryName string `protobuf:"bytes,5,opt,name=credentials_factory_name,json=credentialsFactoryName,proto3" json:"credentials_factory_name,omitempty"` // Additional configuration for site-specific customizations of the Google // gRPC library. - Config *_struct.Struct `protobuf:"bytes,6,opt,name=config,proto3" json:"config,omitempty"` + Config *structpb.Struct `protobuf:"bytes,6,opt,name=config,proto3" json:"config,omitempty"` // How many bytes each stream can buffer internally. // If not set an implementation defined default is applied (1MiB). - PerStreamBufferLimitBytes *wrappers.UInt32Value `protobuf:"bytes,7,opt,name=per_stream_buffer_limit_bytes,json=perStreamBufferLimitBytes,proto3" json:"per_stream_buffer_limit_bytes,omitempty"` + PerStreamBufferLimitBytes *wrapperspb.UInt32Value `protobuf:"bytes,7,opt,name=per_stream_buffer_limit_bytes,json=perStreamBufferLimitBytes,proto3" json:"per_stream_buffer_limit_bytes,omitempty"` // Custom channels args. - ChannelArgs *GrpcService_GoogleGrpc_ChannelArgs `protobuf:"bytes,8,opt,name=channel_args,json=channelArgs,proto3" json:"channel_args,omitempty"` + ChannelArgs *GrpcService_GoogleGrpc_ChannelArgs `protobuf:"bytes,8,opt,name=channel_args,json=channelArgs,proto3" json:"channel_args,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GrpcService_GoogleGrpc) Reset() { *x = GrpcService_GoogleGrpc{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GrpcService_GoogleGrpc) String() string { @@ -249,7 +262,7 @@ func (*GrpcService_GoogleGrpc) ProtoMessage() {} func (x *GrpcService_GoogleGrpc) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -299,14 +312,14 @@ func (x *GrpcService_GoogleGrpc) GetCredentialsFactoryName() string { return "" } -func (x *GrpcService_GoogleGrpc) GetConfig() *_struct.Struct { +func (x *GrpcService_GoogleGrpc) GetConfig() *structpb.Struct { if x != nil { return x.Config } return nil } -func (x *GrpcService_GoogleGrpc) GetPerStreamBufferLimitBytes() *wrappers.UInt32Value { +func (x *GrpcService_GoogleGrpc) GetPerStreamBufferLimitBytes() *wrapperspb.UInt32Value { if x != nil { return x.PerStreamBufferLimitBytes } @@ -322,25 +335,22 @@ func (x *GrpcService_GoogleGrpc) GetChannelArgs() *GrpcService_GoogleGrpc_Channe // See https://grpc.io/grpc/cpp/structgrpc_1_1_ssl_credentials_options.html. type GrpcService_GoogleGrpc_SslCredentials struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // PEM encoded server root certificates. RootCerts *DataSource `protobuf:"bytes,1,opt,name=root_certs,json=rootCerts,proto3" json:"root_certs,omitempty"` // PEM encoded client private key. PrivateKey *DataSource `protobuf:"bytes,2,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` // PEM encoded client certificate chain. - CertChain *DataSource `protobuf:"bytes,3,opt,name=cert_chain,json=certChain,proto3" json:"cert_chain,omitempty"` + CertChain *DataSource `protobuf:"bytes,3,opt,name=cert_chain,json=certChain,proto3" json:"cert_chain,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GrpcService_GoogleGrpc_SslCredentials) Reset() { *x = GrpcService_GoogleGrpc_SslCredentials{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GrpcService_GoogleGrpc_SslCredentials) String() string { @@ -351,7 +361,7 @@ func (*GrpcService_GoogleGrpc_SslCredentials) ProtoMessage() {} func (x *GrpcService_GoogleGrpc_SslCredentials) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -390,18 +400,16 @@ func (x *GrpcService_GoogleGrpc_SslCredentials) GetCertChain() *DataSource { // Local channel credentials. Only UDS is supported for now. // See https://github.com/grpc/grpc/pull/15909. type GrpcService_GoogleGrpc_GoogleLocalCredentials struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GrpcService_GoogleGrpc_GoogleLocalCredentials) Reset() { *x = GrpcService_GoogleGrpc_GoogleLocalCredentials{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GrpcService_GoogleGrpc_GoogleLocalCredentials) String() string { @@ -412,7 +420,7 @@ func (*GrpcService_GoogleGrpc_GoogleLocalCredentials) ProtoMessage() {} func (x *GrpcService_GoogleGrpc_GoogleLocalCredentials) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -430,24 +438,22 @@ func (*GrpcService_GoogleGrpc_GoogleLocalCredentials) Descriptor() ([]byte, []in // See https://grpc.io/docs/guides/auth.html#credential-types to understand Channel and Call // credential types. type GrpcService_GoogleGrpc_ChannelCredentials struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to CredentialSpecifier: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to CredentialSpecifier: + // // *GrpcService_GoogleGrpc_ChannelCredentials_SslCredentials // *GrpcService_GoogleGrpc_ChannelCredentials_GoogleDefault // *GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials CredentialSpecifier isGrpcService_GoogleGrpc_ChannelCredentials_CredentialSpecifier `protobuf_oneof:"credential_specifier"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GrpcService_GoogleGrpc_ChannelCredentials) Reset() { *x = GrpcService_GoogleGrpc_ChannelCredentials{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GrpcService_GoogleGrpc_ChannelCredentials) String() string { @@ -458,7 +464,7 @@ func (*GrpcService_GoogleGrpc_ChannelCredentials) ProtoMessage() {} func (x *GrpcService_GoogleGrpc_ChannelCredentials) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -473,30 +479,36 @@ func (*GrpcService_GoogleGrpc_ChannelCredentials) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_rawDescGZIP(), []int{0, 1, 2} } -func (m *GrpcService_GoogleGrpc_ChannelCredentials) GetCredentialSpecifier() isGrpcService_GoogleGrpc_ChannelCredentials_CredentialSpecifier { - if m != nil { - return m.CredentialSpecifier +func (x *GrpcService_GoogleGrpc_ChannelCredentials) GetCredentialSpecifier() isGrpcService_GoogleGrpc_ChannelCredentials_CredentialSpecifier { + if x != nil { + return x.CredentialSpecifier } return nil } func (x *GrpcService_GoogleGrpc_ChannelCredentials) GetSslCredentials() *GrpcService_GoogleGrpc_SslCredentials { - if x, ok := x.GetCredentialSpecifier().(*GrpcService_GoogleGrpc_ChannelCredentials_SslCredentials); ok { - return x.SslCredentials + if x != nil { + if x, ok := x.CredentialSpecifier.(*GrpcService_GoogleGrpc_ChannelCredentials_SslCredentials); ok { + return x.SslCredentials + } } return nil } -func (x *GrpcService_GoogleGrpc_ChannelCredentials) GetGoogleDefault() *empty.Empty { - if x, ok := x.GetCredentialSpecifier().(*GrpcService_GoogleGrpc_ChannelCredentials_GoogleDefault); ok { - return x.GoogleDefault +func (x *GrpcService_GoogleGrpc_ChannelCredentials) GetGoogleDefault() *emptypb.Empty { + if x != nil { + if x, ok := x.CredentialSpecifier.(*GrpcService_GoogleGrpc_ChannelCredentials_GoogleDefault); ok { + return x.GoogleDefault + } } return nil } func (x *GrpcService_GoogleGrpc_ChannelCredentials) GetLocalCredentials() *GrpcService_GoogleGrpc_GoogleLocalCredentials { - if x, ok := x.GetCredentialSpecifier().(*GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials); ok { - return x.LocalCredentials + if x != nil { + if x, ok := x.CredentialSpecifier.(*GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials); ok { + return x.LocalCredentials + } } return nil } @@ -511,7 +523,7 @@ type GrpcService_GoogleGrpc_ChannelCredentials_SslCredentials struct { type GrpcService_GoogleGrpc_ChannelCredentials_GoogleDefault struct { // https://grpc.io/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61 - GoogleDefault *empty.Empty `protobuf:"bytes,2,opt,name=google_default,json=googleDefault,proto3,oneof"` + GoogleDefault *emptypb.Empty `protobuf:"bytes,2,opt,name=google_default,json=googleDefault,proto3,oneof"` } type GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials struct { @@ -529,11 +541,9 @@ func (*GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials) isGrpcService // [#next-free-field: 8] type GrpcService_GoogleGrpc_CallCredentials struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to CredentialSpecifier: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to CredentialSpecifier: + // // *GrpcService_GoogleGrpc_CallCredentials_AccessToken // *GrpcService_GoogleGrpc_CallCredentials_GoogleComputeEngine // *GrpcService_GoogleGrpc_CallCredentials_GoogleRefreshToken @@ -542,15 +552,15 @@ type GrpcService_GoogleGrpc_CallCredentials struct { // *GrpcService_GoogleGrpc_CallCredentials_FromPlugin // *GrpcService_GoogleGrpc_CallCredentials_StsService_ CredentialSpecifier isGrpcService_GoogleGrpc_CallCredentials_CredentialSpecifier `protobuf_oneof:"credential_specifier"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GrpcService_GoogleGrpc_CallCredentials) Reset() { *x = GrpcService_GoogleGrpc_CallCredentials{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GrpcService_GoogleGrpc_CallCredentials) String() string { @@ -561,7 +571,7 @@ func (*GrpcService_GoogleGrpc_CallCredentials) ProtoMessage() {} func (x *GrpcService_GoogleGrpc_CallCredentials) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -576,58 +586,72 @@ func (*GrpcService_GoogleGrpc_CallCredentials) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_rawDescGZIP(), []int{0, 1, 3} } -func (m *GrpcService_GoogleGrpc_CallCredentials) GetCredentialSpecifier() isGrpcService_GoogleGrpc_CallCredentials_CredentialSpecifier { - if m != nil { - return m.CredentialSpecifier +func (x *GrpcService_GoogleGrpc_CallCredentials) GetCredentialSpecifier() isGrpcService_GoogleGrpc_CallCredentials_CredentialSpecifier { + if x != nil { + return x.CredentialSpecifier } return nil } func (x *GrpcService_GoogleGrpc_CallCredentials) GetAccessToken() string { - if x, ok := x.GetCredentialSpecifier().(*GrpcService_GoogleGrpc_CallCredentials_AccessToken); ok { - return x.AccessToken + if x != nil { + if x, ok := x.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_AccessToken); ok { + return x.AccessToken + } } return "" } -func (x *GrpcService_GoogleGrpc_CallCredentials) GetGoogleComputeEngine() *empty.Empty { - if x, ok := x.GetCredentialSpecifier().(*GrpcService_GoogleGrpc_CallCredentials_GoogleComputeEngine); ok { - return x.GoogleComputeEngine +func (x *GrpcService_GoogleGrpc_CallCredentials) GetGoogleComputeEngine() *emptypb.Empty { + if x != nil { + if x, ok := x.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_GoogleComputeEngine); ok { + return x.GoogleComputeEngine + } } return nil } func (x *GrpcService_GoogleGrpc_CallCredentials) GetGoogleRefreshToken() string { - if x, ok := x.GetCredentialSpecifier().(*GrpcService_GoogleGrpc_CallCredentials_GoogleRefreshToken); ok { - return x.GoogleRefreshToken + if x != nil { + if x, ok := x.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_GoogleRefreshToken); ok { + return x.GoogleRefreshToken + } } return "" } func (x *GrpcService_GoogleGrpc_CallCredentials) GetServiceAccountJwtAccess() *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials { - if x, ok := x.GetCredentialSpecifier().(*GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJwtAccess); ok { - return x.ServiceAccountJwtAccess + if x != nil { + if x, ok := x.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJwtAccess); ok { + return x.ServiceAccountJwtAccess + } } return nil } func (x *GrpcService_GoogleGrpc_CallCredentials) GetGoogleIam() *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials { - if x, ok := x.GetCredentialSpecifier().(*GrpcService_GoogleGrpc_CallCredentials_GoogleIam); ok { - return x.GoogleIam + if x != nil { + if x, ok := x.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_GoogleIam); ok { + return x.GoogleIam + } } return nil } func (x *GrpcService_GoogleGrpc_CallCredentials) GetFromPlugin() *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin { - if x, ok := x.GetCredentialSpecifier().(*GrpcService_GoogleGrpc_CallCredentials_FromPlugin); ok { - return x.FromPlugin + if x != nil { + if x, ok := x.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_FromPlugin); ok { + return x.FromPlugin + } } return nil } func (x *GrpcService_GoogleGrpc_CallCredentials) GetStsService() *GrpcService_GoogleGrpc_CallCredentials_StsService { - if x, ok := x.GetCredentialSpecifier().(*GrpcService_GoogleGrpc_CallCredentials_StsService_); ok { - return x.StsService + if x != nil { + if x, ok := x.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_StsService_); ok { + return x.StsService + } } return nil } @@ -645,7 +669,7 @@ type GrpcService_GoogleGrpc_CallCredentials_AccessToken struct { type GrpcService_GoogleGrpc_CallCredentials_GoogleComputeEngine struct { // Google Compute Engine credentials. // https://grpc.io/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61 - GoogleComputeEngine *empty.Empty `protobuf:"bytes,2,opt,name=google_compute_engine,json=googleComputeEngine,proto3,oneof"` + GoogleComputeEngine *emptypb.Empty `protobuf:"bytes,2,opt,name=google_compute_engine,json=googleComputeEngine,proto3,oneof"` } type GrpcService_GoogleGrpc_CallCredentials_GoogleRefreshToken struct { @@ -675,7 +699,7 @@ type GrpcService_GoogleGrpc_CallCredentials_FromPlugin struct { type GrpcService_GoogleGrpc_CallCredentials_StsService_ struct { // Custom security token service which implements OAuth 2.0 token exchange. - // https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16 + // https://datatracker.ietf.org/doc/html/draft-ietf-oauth-token-exchange-16 // See https://github.com/grpc/grpc/pull/19587. StsService *GrpcService_GoogleGrpc_CallCredentials_StsService `protobuf:"bytes,7,opt,name=sts_service,json=stsService,proto3,oneof"` } @@ -703,21 +727,18 @@ func (*GrpcService_GoogleGrpc_CallCredentials_StsService_) isGrpcService_GoogleG // Channel arguments. type GrpcService_GoogleGrpc_ChannelArgs struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // See grpc_types.h GRPC_ARG #defines for keys that work here. - Args map[string]*GrpcService_GoogleGrpc_ChannelArgs_Value `protobuf:"bytes,1,rep,name=args,proto3" json:"args,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Args map[string]*GrpcService_GoogleGrpc_ChannelArgs_Value `protobuf:"bytes,1,rep,name=args,proto3" json:"args,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GrpcService_GoogleGrpc_ChannelArgs) Reset() { *x = GrpcService_GoogleGrpc_ChannelArgs{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GrpcService_GoogleGrpc_ChannelArgs) String() string { @@ -728,7 +749,7 @@ func (*GrpcService_GoogleGrpc_ChannelArgs) ProtoMessage() {} func (x *GrpcService_GoogleGrpc_ChannelArgs) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -751,21 +772,18 @@ func (x *GrpcService_GoogleGrpc_ChannelArgs) GetArgs() map[string]*GrpcService_G } type GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - JsonKey string `protobuf:"bytes,1,opt,name=json_key,json=jsonKey,proto3" json:"json_key,omitempty"` - TokenLifetimeSeconds uint64 `protobuf:"varint,2,opt,name=token_lifetime_seconds,json=tokenLifetimeSeconds,proto3" json:"token_lifetime_seconds,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + JsonKey string `protobuf:"bytes,1,opt,name=json_key,json=jsonKey,proto3" json:"json_key,omitempty"` + TokenLifetimeSeconds uint64 `protobuf:"varint,2,opt,name=token_lifetime_seconds,json=tokenLifetimeSeconds,proto3" json:"token_lifetime_seconds,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials) Reset() { *x = GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials) String() string { @@ -776,7 +794,7 @@ func (*GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials func (x *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -806,21 +824,18 @@ func (x *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentia } type GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - AuthorizationToken string `protobuf:"bytes,1,opt,name=authorization_token,json=authorizationToken,proto3" json:"authorization_token,omitempty"` - AuthoritySelector string `protobuf:"bytes,2,opt,name=authority_selector,json=authoritySelector,proto3" json:"authority_selector,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + AuthorizationToken string `protobuf:"bytes,1,opt,name=authorization_token,json=authorizationToken,proto3" json:"authorization_token,omitempty"` + AuthoritySelector string `protobuf:"bytes,2,opt,name=authority_selector,json=authoritySelector,proto3" json:"authority_selector,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) Reset() { *x = GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) String() string { @@ -831,7 +846,7 @@ func (*GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) ProtoMessage func (x *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -861,23 +876,21 @@ func (x *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) GetAuthori } type GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Types that are assignable to ConfigType: + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Types that are valid to be assigned to ConfigType: + // // *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig - ConfigType isGrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_ConfigType `protobuf_oneof:"config_type"` + ConfigType isGrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_ConfigType `protobuf_oneof:"config_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) Reset() { *x = GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) String() string { @@ -888,7 +901,7 @@ func (*GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) Pro func (x *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -910,16 +923,18 @@ func (x *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) G return "" } -func (m *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) GetConfigType() isGrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_ConfigType { - if m != nil { - return m.ConfigType +func (x *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) GetConfigType() isGrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_ConfigType { + if x != nil { + return x.ConfigType } return nil } -func (x *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) GetTypedConfig() *any.Any { - if x, ok := x.GetConfigType().(*GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig); ok { - return x.TypedConfig +func (x *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) GetTypedConfig() *anypb.Any { + if x != nil { + if x, ok := x.ConfigType.(*GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig); ok { + return x.TypedConfig + } } return nil } @@ -929,7 +944,7 @@ type isGrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_Conf } type GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig struct { - TypedConfig *any.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"` + TypedConfig *anypb.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"` } func (*GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig) isGrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_ConfigType() { @@ -937,14 +952,11 @@ func (*GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_Type // Security token service configuration that allows Google gRPC to // fetch security token from an OAuth 2.0 authorization server. -// See https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16 and +// See https://datatracker.ietf.org/doc/html/draft-ietf-oauth-token-exchange-16 and // https://github.com/grpc/grpc/pull/19587. // [#next-free-field: 10] type GrpcService_GoogleGrpc_CallCredentials_StsService struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // URI of the token exchange service that handles token exchange requests. // [#comment:TODO(asraa): Add URI validation when implemented. Tracked by // https://github.com/envoyproxy/protoc-gen-validate/issues/303] @@ -971,15 +983,15 @@ type GrpcService_GoogleGrpc_CallCredentials_StsService struct { ActorTokenPath string `protobuf:"bytes,8,opt,name=actor_token_path,json=actorTokenPath,proto3" json:"actor_token_path,omitempty"` // Type of the actor token. ActorTokenType string `protobuf:"bytes,9,opt,name=actor_token_type,json=actorTokenType,proto3" json:"actor_token_type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GrpcService_GoogleGrpc_CallCredentials_StsService) Reset() { *x = GrpcService_GoogleGrpc_CallCredentials_StsService{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GrpcService_GoogleGrpc_CallCredentials_StsService) String() string { @@ -990,7 +1002,7 @@ func (*GrpcService_GoogleGrpc_CallCredentials_StsService) ProtoMessage() {} func (x *GrpcService_GoogleGrpc_CallCredentials_StsService) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1069,26 +1081,24 @@ func (x *GrpcService_GoogleGrpc_CallCredentials_StsService) GetActorTokenType() } type GrpcService_GoogleGrpc_ChannelArgs_Value struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Pointer values are not supported, since they don't make any sense when // delivered via the API. // - // Types that are assignable to ValueSpecifier: + // Types that are valid to be assigned to ValueSpecifier: + // // *GrpcService_GoogleGrpc_ChannelArgs_Value_StringValue // *GrpcService_GoogleGrpc_ChannelArgs_Value_IntValue ValueSpecifier isGrpcService_GoogleGrpc_ChannelArgs_Value_ValueSpecifier `protobuf_oneof:"value_specifier"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GrpcService_GoogleGrpc_ChannelArgs_Value) Reset() { *x = GrpcService_GoogleGrpc_ChannelArgs_Value{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GrpcService_GoogleGrpc_ChannelArgs_Value) String() string { @@ -1099,7 +1109,7 @@ func (*GrpcService_GoogleGrpc_ChannelArgs_Value) ProtoMessage() {} func (x *GrpcService_GoogleGrpc_ChannelArgs_Value) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1114,23 +1124,27 @@ func (*GrpcService_GoogleGrpc_ChannelArgs_Value) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_rawDescGZIP(), []int{0, 1, 4, 0} } -func (m *GrpcService_GoogleGrpc_ChannelArgs_Value) GetValueSpecifier() isGrpcService_GoogleGrpc_ChannelArgs_Value_ValueSpecifier { - if m != nil { - return m.ValueSpecifier +func (x *GrpcService_GoogleGrpc_ChannelArgs_Value) GetValueSpecifier() isGrpcService_GoogleGrpc_ChannelArgs_Value_ValueSpecifier { + if x != nil { + return x.ValueSpecifier } return nil } func (x *GrpcService_GoogleGrpc_ChannelArgs_Value) GetStringValue() string { - if x, ok := x.GetValueSpecifier().(*GrpcService_GoogleGrpc_ChannelArgs_Value_StringValue); ok { - return x.StringValue + if x != nil { + if x, ok := x.ValueSpecifier.(*GrpcService_GoogleGrpc_ChannelArgs_Value_StringValue); ok { + return x.StringValue + } } return "" } func (x *GrpcService_GoogleGrpc_ChannelArgs_Value) GetIntValue() int64 { - if x, ok := x.GetValueSpecifier().(*GrpcService_GoogleGrpc_ChannelArgs_Value_IntValue); ok { - return x.IntValue + if x != nil { + if x, ok := x.ValueSpecifier.(*GrpcService_GoogleGrpc_ChannelArgs_Value_IntValue); ok { + return x.IntValue + } } return 0 } @@ -1155,7 +1169,7 @@ func (*GrpcService_GoogleGrpc_ChannelArgs_Value_IntValue) isGrpcService_GoogleGr var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_rawDesc = string([]byte{ 0x0a, 0x5b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -1187,7 +1201,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, - 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc7, 0x22, 0x0a, 0x0b, 0x47, 0x72, 0x70, 0x63, + 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc7, 0x23, 0x0a, 0x0b, 0x47, 0x72, 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x54, 0x0a, 0x0a, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, @@ -1208,10 +1222,18 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x1a, 0x70, 0x0a, 0x09, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x47, 0x72, 0x70, 0x63, 0x12, 0x2a, - 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x0b, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x3a, 0x37, 0x8a, 0xc8, 0xde, 0x8e, + 0x61, 0x1a, 0xef, 0x01, 0x0a, 0x09, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x47, 0x72, 0x70, 0x63, 0x12, + 0x2a, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x0b, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x11, + 0xfa, 0x42, 0x0e, 0x72, 0x0c, 0x10, 0x00, 0x28, 0x80, 0x80, 0x01, 0xc8, 0x01, 0x00, 0xc0, 0x01, + 0x02, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x4c, 0x0a, 0x0c, + 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x33, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0b, 0x72, + 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x3a, 0x37, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x31, 0x0a, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x47, @@ -1464,33 +1486,34 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x17, 0x0a, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x4a, 0x04, 0x08, 0x04, 0x10, - 0x05, 0x42, 0xa1, 0x01, 0x0a, 0x2a, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, - 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, - 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, - 0x42, 0x10, 0x47, 0x72, 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, - 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, - 0x72, 0x65, 0x2f, 0x76, 0x33, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0xb8, 0xf5, 0x04, - 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x05, 0x42, 0xa5, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, + 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x2a, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x76, 0x33, 0x42, 0x10, 0x47, 0x72, 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes = make([]protoimpl.MessageInfo, 14) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_goTypes = []any{ (*GrpcService)(nil), // 0: solo.io.envoy.config.core.v3.GrpcService (*GrpcService_EnvoyGrpc)(nil), // 1: solo.io.envoy.config.core.v3.GrpcService.EnvoyGrpc (*GrpcService_GoogleGrpc)(nil), // 2: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc @@ -1504,44 +1527,46 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v (*GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin)(nil), // 10: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.MetadataCredentialsFromPlugin (*GrpcService_GoogleGrpc_CallCredentials_StsService)(nil), // 11: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.StsService (*GrpcService_GoogleGrpc_ChannelArgs_Value)(nil), // 12: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.Value - nil, // 13: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.ArgsEntry - (*duration.Duration)(nil), // 14: google.protobuf.Duration - (*HeaderValue)(nil), // 15: solo.io.envoy.config.core.v3.HeaderValue - (*_struct.Struct)(nil), // 16: google.protobuf.Struct - (*wrappers.UInt32Value)(nil), // 17: google.protobuf.UInt32Value - (*DataSource)(nil), // 18: solo.io.envoy.config.core.v3.DataSource - (*empty.Empty)(nil), // 19: google.protobuf.Empty - (*any.Any)(nil), // 20: google.protobuf.Any + nil, // 13: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.ArgsEntry + (*durationpb.Duration)(nil), // 14: google.protobuf.Duration + (*HeaderValue)(nil), // 15: solo.io.envoy.config.core.v3.HeaderValue + (*RetryPolicy)(nil), // 16: solo.io.envoy.config.core.v3.RetryPolicy + (*structpb.Struct)(nil), // 17: google.protobuf.Struct + (*wrapperspb.UInt32Value)(nil), // 18: google.protobuf.UInt32Value + (*DataSource)(nil), // 19: solo.io.envoy.config.core.v3.DataSource + (*emptypb.Empty)(nil), // 20: google.protobuf.Empty + (*anypb.Any)(nil), // 21: google.protobuf.Any } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_depIdxs = []int32{ 1, // 0: solo.io.envoy.config.core.v3.GrpcService.envoy_grpc:type_name -> solo.io.envoy.config.core.v3.GrpcService.EnvoyGrpc 2, // 1: solo.io.envoy.config.core.v3.GrpcService.google_grpc:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc 14, // 2: solo.io.envoy.config.core.v3.GrpcService.timeout:type_name -> google.protobuf.Duration 15, // 3: solo.io.envoy.config.core.v3.GrpcService.initial_metadata:type_name -> solo.io.envoy.config.core.v3.HeaderValue - 5, // 4: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.channel_credentials:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelCredentials - 6, // 5: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.call_credentials:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials - 16, // 6: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.config:type_name -> google.protobuf.Struct - 17, // 7: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.per_stream_buffer_limit_bytes:type_name -> google.protobuf.UInt32Value - 7, // 8: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.channel_args:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs - 18, // 9: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.SslCredentials.root_certs:type_name -> solo.io.envoy.config.core.v3.DataSource - 18, // 10: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.SslCredentials.private_key:type_name -> solo.io.envoy.config.core.v3.DataSource - 18, // 11: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.SslCredentials.cert_chain:type_name -> solo.io.envoy.config.core.v3.DataSource - 3, // 12: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelCredentials.ssl_credentials:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.SslCredentials - 19, // 13: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelCredentials.google_default:type_name -> google.protobuf.Empty - 4, // 14: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelCredentials.local_credentials:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.GoogleLocalCredentials - 19, // 15: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.google_compute_engine:type_name -> google.protobuf.Empty - 8, // 16: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.service_account_jwt_access:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.ServiceAccountJWTAccessCredentials - 9, // 17: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.google_iam:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.GoogleIAMCredentials - 10, // 18: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.from_plugin:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.MetadataCredentialsFromPlugin - 11, // 19: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.sts_service:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.StsService - 13, // 20: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.args:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.ArgsEntry - 20, // 21: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.MetadataCredentialsFromPlugin.typed_config:type_name -> google.protobuf.Any - 12, // 22: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.ArgsEntry.value:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.Value - 23, // [23:23] is the sub-list for method output_type - 23, // [23:23] is the sub-list for method input_type - 23, // [23:23] is the sub-list for extension type_name - 23, // [23:23] is the sub-list for extension extendee - 0, // [0:23] is the sub-list for field type_name + 16, // 4: solo.io.envoy.config.core.v3.GrpcService.EnvoyGrpc.retry_policy:type_name -> solo.io.envoy.config.core.v3.RetryPolicy + 5, // 5: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.channel_credentials:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelCredentials + 6, // 6: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.call_credentials:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials + 17, // 7: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.config:type_name -> google.protobuf.Struct + 18, // 8: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.per_stream_buffer_limit_bytes:type_name -> google.protobuf.UInt32Value + 7, // 9: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.channel_args:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs + 19, // 10: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.SslCredentials.root_certs:type_name -> solo.io.envoy.config.core.v3.DataSource + 19, // 11: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.SslCredentials.private_key:type_name -> solo.io.envoy.config.core.v3.DataSource + 19, // 12: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.SslCredentials.cert_chain:type_name -> solo.io.envoy.config.core.v3.DataSource + 3, // 13: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelCredentials.ssl_credentials:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.SslCredentials + 20, // 14: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelCredentials.google_default:type_name -> google.protobuf.Empty + 4, // 15: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelCredentials.local_credentials:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.GoogleLocalCredentials + 20, // 16: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.google_compute_engine:type_name -> google.protobuf.Empty + 8, // 17: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.service_account_jwt_access:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.ServiceAccountJWTAccessCredentials + 9, // 18: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.google_iam:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.GoogleIAMCredentials + 10, // 19: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.from_plugin:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.MetadataCredentialsFromPlugin + 11, // 20: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.sts_service:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.StsService + 13, // 21: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.args:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.ArgsEntry + 21, // 22: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.MetadataCredentialsFromPlugin.typed_config:type_name -> google.protobuf.Any + 12, // 23: solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.ArgsEntry.value:type_name -> solo.io.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.Value + 24, // [24:24] is the sub-list for method output_type + 24, // [24:24] is the sub-list for method input_type + 24, // [24:24] is the sub-list for extension type_name + 24, // [24:24] is the sub-list for extension extendee + 0, // [0:24] is the sub-list for field type_name } func init() { @@ -1552,174 +1577,16 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ return } file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_init() - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GrpcService); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GrpcService_EnvoyGrpc); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GrpcService_GoogleGrpc); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GrpcService_GoogleGrpc_SslCredentials); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GrpcService_GoogleGrpc_GoogleLocalCredentials); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GrpcService_GoogleGrpc_ChannelCredentials); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GrpcService_GoogleGrpc_CallCredentials); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GrpcService_GoogleGrpc_ChannelArgs); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GrpcService_GoogleGrpc_CallCredentials_StsService); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GrpcService_GoogleGrpc_ChannelArgs_Value); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[0].OneofWrappers = []any{ (*GrpcService_EnvoyGrpc_)(nil), (*GrpcService_GoogleGrpc_)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[5].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[5].OneofWrappers = []any{ (*GrpcService_GoogleGrpc_ChannelCredentials_SslCredentials)(nil), (*GrpcService_GoogleGrpc_ChannelCredentials_GoogleDefault)(nil), (*GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[6].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[6].OneofWrappers = []any{ (*GrpcService_GoogleGrpc_CallCredentials_AccessToken)(nil), (*GrpcService_GoogleGrpc_CallCredentials_GoogleComputeEngine)(nil), (*GrpcService_GoogleGrpc_CallCredentials_GoogleRefreshToken)(nil), @@ -1728,10 +1595,10 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ (*GrpcService_GoogleGrpc_CallCredentials_FromPlugin)(nil), (*GrpcService_GoogleGrpc_CallCredentials_StsService_)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[10].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[10].OneofWrappers = []any{ (*GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[12].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes[12].OneofWrappers = []any{ (*GrpcService_GoogleGrpc_ChannelArgs_Value_StringValue)(nil), (*GrpcService_GoogleGrpc_ChannelArgs_Value_IntValue)(nil), } @@ -1739,7 +1606,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_rawDesc)), NumEnums: 0, NumMessages: 14, NumExtensions: 0, @@ -1750,7 +1617,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_grpc_service_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/grpc_service.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/grpc_service.pb.hash.go index d7501ed3c..ec9be5040 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/grpc_service.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/grpc_service.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GrpcService) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,14 +43,20 @@ func (m *GrpcService) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -55,14 +65,20 @@ func (m *GrpcService) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetInitialMetadata() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -75,14 +91,20 @@ func (m *GrpcService) Hash(hasher hash.Hash64) (uint64, error) { case *GrpcService_EnvoyGrpc_: if h, ok := interface{}(m.GetEnvoyGrpc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnvoyGrpc")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetEnvoyGrpc(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetEnvoyGrpc(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("EnvoyGrpc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -91,14 +113,20 @@ func (m *GrpcService) Hash(hasher hash.Hash64) (uint64, error) { case *GrpcService_GoogleGrpc_: if h, ok := interface{}(m.GetGoogleGrpc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GoogleGrpc")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetGoogleGrpc(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetGoogleGrpc(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("GoogleGrpc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -110,6 +138,10 @@ func (m *GrpcService) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GrpcService_EnvoyGrpc) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -126,10 +158,38 @@ func (m *GrpcService_EnvoyGrpc) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + if _, err = hasher.Write([]byte(m.GetAuthority())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRetryPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetryPolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GrpcService_GoogleGrpc) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -147,14 +207,20 @@ func (m *GrpcService_GoogleGrpc) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetChannelCredentials()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ChannelCredentials")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetChannelCredentials(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetChannelCredentials(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ChannelCredentials")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -163,14 +229,20 @@ func (m *GrpcService_GoogleGrpc) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetCallCredentials() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -187,42 +259,60 @@ func (m *GrpcService_GoogleGrpc) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetPerStreamBufferLimitBytes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PerStreamBufferLimitBytes")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPerStreamBufferLimitBytes(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPerStreamBufferLimitBytes(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PerStreamBufferLimitBytes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetChannelArgs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ChannelArgs")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetChannelArgs(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetChannelArgs(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ChannelArgs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -232,6 +322,10 @@ func (m *GrpcService_GoogleGrpc) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GrpcService_GoogleGrpc_SslCredentials) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -245,42 +339,60 @@ func (m *GrpcService_GoogleGrpc_SslCredentials) Hash(hasher hash.Hash64) (uint64 } if h, ok := interface{}(m.GetRootCerts()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RootCerts")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRootCerts(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRootCerts(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RootCerts")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetPrivateKey()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PrivateKey")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPrivateKey(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPrivateKey(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PrivateKey")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetCertChain()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CertChain")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCertChain(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCertChain(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("CertChain")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -290,6 +402,10 @@ func (m *GrpcService_GoogleGrpc_SslCredentials) Hash(hasher hash.Hash64) (uint64 } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GrpcService_GoogleGrpc_GoogleLocalCredentials) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -306,6 +422,10 @@ func (m *GrpcService_GoogleGrpc_GoogleLocalCredentials) Hash(hasher hash.Hash64) } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GrpcService_GoogleGrpc_ChannelCredentials) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -323,14 +443,20 @@ func (m *GrpcService_GoogleGrpc_ChannelCredentials) Hash(hasher hash.Hash64) (ui case *GrpcService_GoogleGrpc_ChannelCredentials_SslCredentials: if h, ok := interface{}(m.GetSslCredentials()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslCredentials")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSslCredentials(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSslCredentials(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SslCredentials")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -339,14 +465,20 @@ func (m *GrpcService_GoogleGrpc_ChannelCredentials) Hash(hasher hash.Hash64) (ui case *GrpcService_GoogleGrpc_ChannelCredentials_GoogleDefault: if h, ok := interface{}(m.GetGoogleDefault()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GoogleDefault")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetGoogleDefault(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetGoogleDefault(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("GoogleDefault")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -355,14 +487,20 @@ func (m *GrpcService_GoogleGrpc_ChannelCredentials) Hash(hasher hash.Hash64) (ui case *GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials: if h, ok := interface{}(m.GetLocalCredentials()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LocalCredentials")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetLocalCredentials(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetLocalCredentials(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("LocalCredentials")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -374,6 +512,10 @@ func (m *GrpcService_GoogleGrpc_ChannelCredentials) Hash(hasher hash.Hash64) (ui } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GrpcService_GoogleGrpc_CallCredentials) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -397,14 +539,20 @@ func (m *GrpcService_GoogleGrpc_CallCredentials) Hash(hasher hash.Hash64) (uint6 case *GrpcService_GoogleGrpc_CallCredentials_GoogleComputeEngine: if h, ok := interface{}(m.GetGoogleComputeEngine()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GoogleComputeEngine")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetGoogleComputeEngine(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetGoogleComputeEngine(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("GoogleComputeEngine")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -419,14 +567,20 @@ func (m *GrpcService_GoogleGrpc_CallCredentials) Hash(hasher hash.Hash64) (uint6 case *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJwtAccess: if h, ok := interface{}(m.GetServiceAccountJwtAccess()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServiceAccountJwtAccess")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetServiceAccountJwtAccess(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetServiceAccountJwtAccess(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ServiceAccountJwtAccess")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -435,14 +589,20 @@ func (m *GrpcService_GoogleGrpc_CallCredentials) Hash(hasher hash.Hash64) (uint6 case *GrpcService_GoogleGrpc_CallCredentials_GoogleIam: if h, ok := interface{}(m.GetGoogleIam()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GoogleIam")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetGoogleIam(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetGoogleIam(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("GoogleIam")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -451,14 +611,20 @@ func (m *GrpcService_GoogleGrpc_CallCredentials) Hash(hasher hash.Hash64) (uint6 case *GrpcService_GoogleGrpc_CallCredentials_FromPlugin: if h, ok := interface{}(m.GetFromPlugin()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FromPlugin")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetFromPlugin(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetFromPlugin(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("FromPlugin")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -467,14 +633,20 @@ func (m *GrpcService_GoogleGrpc_CallCredentials) Hash(hasher hash.Hash64) (uint6 case *GrpcService_GoogleGrpc_CallCredentials_StsService_: if h, ok := interface{}(m.GetStsService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("StsService")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetStsService(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetStsService(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("StsService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -486,6 +658,10 @@ func (m *GrpcService_GoogleGrpc_CallCredentials) Hash(hasher hash.Hash64) (uint6 } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GrpcService_GoogleGrpc_ChannelArgs) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -505,14 +681,20 @@ func (m *GrpcService_GoogleGrpc_ChannelArgs) Hash(hasher hash.Hash64) (uint64, e innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -535,6 +717,10 @@ func (m *GrpcService_GoogleGrpc_ChannelArgs) Hash(hasher hash.Hash64) (uint64, e } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -560,6 +746,10 @@ func (m *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentia } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -584,6 +774,10 @@ func (m *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) Hash(hashe } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -605,14 +799,20 @@ func (m *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) H case *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig: if h, ok := interface{}(m.GetTypedConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -624,6 +824,10 @@ func (m *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) H } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GrpcService_GoogleGrpc_CallCredentials_StsService) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -676,6 +880,10 @@ func (m *GrpcService_GoogleGrpc_CallCredentials_StsService) Hash(hasher hash.Has } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GrpcService_GoogleGrpc_ChannelArgs_Value) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/grpc_service.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/grpc_service.pb.uniquehash.go new file mode 100644 index 000000000..c94efbbea --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/grpc_service.pb.uniquehash.go @@ -0,0 +1,990 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/grpc_service.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcService) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.GrpcService")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("InitialMetadata")); err != nil { + return 0, err + } + for i, v := range m.GetInitialMetadata() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.TargetSpecifier.(type) { + + case *GrpcService_EnvoyGrpc_: + + if h, ok := interface{}(m.GetEnvoyGrpc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnvoyGrpc")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnvoyGrpc(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EnvoyGrpc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *GrpcService_GoogleGrpc_: + + if h, ok := interface{}(m.GetGoogleGrpc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GoogleGrpc")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGoogleGrpc(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GoogleGrpc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcService_EnvoyGrpc) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.GrpcService_EnvoyGrpc")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClusterName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClusterName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Authority")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAuthority())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRetryPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetryPolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcService_GoogleGrpc) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.GrpcService_GoogleGrpc")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TargetUri")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTargetUri())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetChannelCredentials()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ChannelCredentials")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetChannelCredentials(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ChannelCredentials")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("CallCredentials")); err != nil { + return 0, err + } + for i, v := range m.GetCallCredentials() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("StatPrefix")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetStatPrefix())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CredentialsFactoryName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCredentialsFactoryName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPerStreamBufferLimitBytes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PerStreamBufferLimitBytes")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPerStreamBufferLimitBytes(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PerStreamBufferLimitBytes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetChannelArgs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ChannelArgs")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetChannelArgs(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ChannelArgs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcService_GoogleGrpc_SslCredentials) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.GrpcService_GoogleGrpc_SslCredentials")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRootCerts()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RootCerts")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRootCerts(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RootCerts")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPrivateKey()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PrivateKey")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPrivateKey(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PrivateKey")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCertChain()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CertChain")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCertChain(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CertChain")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcService_GoogleGrpc_GoogleLocalCredentials) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.GrpcService_GoogleGrpc_GoogleLocalCredentials")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcService_GoogleGrpc_ChannelCredentials) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.GrpcService_GoogleGrpc_ChannelCredentials")); err != nil { + return 0, err + } + + switch m.CredentialSpecifier.(type) { + + case *GrpcService_GoogleGrpc_ChannelCredentials_SslCredentials: + + if h, ok := interface{}(m.GetSslCredentials()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslCredentials")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslCredentials(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslCredentials")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *GrpcService_GoogleGrpc_ChannelCredentials_GoogleDefault: + + if h, ok := interface{}(m.GetGoogleDefault()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GoogleDefault")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGoogleDefault(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GoogleDefault")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials: + + if h, ok := interface{}(m.GetLocalCredentials()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LocalCredentials")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLocalCredentials(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LocalCredentials")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcService_GoogleGrpc_CallCredentials) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.GrpcService_GoogleGrpc_CallCredentials")); err != nil { + return 0, err + } + + switch m.CredentialSpecifier.(type) { + + case *GrpcService_GoogleGrpc_CallCredentials_AccessToken: + + if _, err = hasher.Write([]byte("AccessToken")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAccessToken())); err != nil { + return 0, err + } + + case *GrpcService_GoogleGrpc_CallCredentials_GoogleComputeEngine: + + if h, ok := interface{}(m.GetGoogleComputeEngine()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GoogleComputeEngine")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGoogleComputeEngine(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GoogleComputeEngine")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *GrpcService_GoogleGrpc_CallCredentials_GoogleRefreshToken: + + if _, err = hasher.Write([]byte("GoogleRefreshToken")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetGoogleRefreshToken())); err != nil { + return 0, err + } + + case *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJwtAccess: + + if h, ok := interface{}(m.GetServiceAccountJwtAccess()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServiceAccountJwtAccess")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetServiceAccountJwtAccess(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ServiceAccountJwtAccess")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *GrpcService_GoogleGrpc_CallCredentials_GoogleIam: + + if h, ok := interface{}(m.GetGoogleIam()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GoogleIam")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGoogleIam(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GoogleIam")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *GrpcService_GoogleGrpc_CallCredentials_FromPlugin: + + if h, ok := interface{}(m.GetFromPlugin()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FromPlugin")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFromPlugin(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FromPlugin")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *GrpcService_GoogleGrpc_CallCredentials_StsService_: + + if h, ok := interface{}(m.GetStsService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("StsService")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStsService(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("StsService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcService_GoogleGrpc_ChannelArgs) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.GrpcService_GoogleGrpc_ChannelArgs")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetArgs() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("JsonKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetJsonKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TokenLifetimeSeconds")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetTokenLifetimeSeconds()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AuthorizationToken")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAuthorizationToken())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AuthoritySelector")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAuthoritySelector())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + switch m.ConfigType.(type) { + + case *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig: + + if h, ok := interface{}(m.GetTypedConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcService_GoogleGrpc_CallCredentials_StsService) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.GrpcService_GoogleGrpc_CallCredentials_StsService")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TokenExchangeServiceUri")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTokenExchangeServiceUri())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Resource")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetResource())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Audience")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAudience())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Scope")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetScope())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RequestedTokenType")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRequestedTokenType())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SubjectTokenPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSubjectTokenPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SubjectTokenType")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSubjectTokenType())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ActorTokenPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetActorTokenPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ActorTokenType")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetActorTokenType())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcService_GoogleGrpc_ChannelArgs_Value) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.GrpcService_GoogleGrpc_ChannelArgs_Value")); err != nil { + return 0, err + } + + switch m.ValueSpecifier.(type) { + + case *GrpcService_GoogleGrpc_ChannelArgs_Value_StringValue: + + if _, err = hasher.Write([]byte("StringValue")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetStringValue())); err != nil { + return 0, err + } + + case *GrpcService_GoogleGrpc_ChannelArgs_Value_IntValue: + + if _, err = hasher.Write([]byte("IntValue")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetIntValue()) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/health_check.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/health_check.pb.clone.go new file mode 100644 index 000000000..356e92e9e --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/health_check.pb.clone.go @@ -0,0 +1,417 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/health_check.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_advanced_http "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/advanced_http" + + google_golang_org_protobuf_types_known_anypb "google.golang.org/protobuf/types/known/anypb" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *HealthCheck) Clone() proto.Message { + var target *HealthCheck + if m == nil { + return target + } + target = &HealthCheck{} + + if h, ok := interface{}(m.GetTimeout()).(clone.Cloner); ok { + target.Timeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.Timeout = proto.Clone(m.GetTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetInterval()).(clone.Cloner); ok { + target.Interval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.Interval = proto.Clone(m.GetInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetInitialJitter()).(clone.Cloner); ok { + target.InitialJitter = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.InitialJitter = proto.Clone(m.GetInitialJitter()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetIntervalJitter()).(clone.Cloner); ok { + target.IntervalJitter = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.IntervalJitter = proto.Clone(m.GetIntervalJitter()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + target.IntervalJitterPercent = m.GetIntervalJitterPercent() + + if h, ok := interface{}(m.GetUnhealthyThreshold()).(clone.Cloner); ok { + target.UnhealthyThreshold = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.UnhealthyThreshold = proto.Clone(m.GetUnhealthyThreshold()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetHealthyThreshold()).(clone.Cloner); ok { + target.HealthyThreshold = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.HealthyThreshold = proto.Clone(m.GetHealthyThreshold()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetAltPort()).(clone.Cloner); ok { + target.AltPort = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.AltPort = proto.Clone(m.GetAltPort()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetReuseConnection()).(clone.Cloner); ok { + target.ReuseConnection = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.ReuseConnection = proto.Clone(m.GetReuseConnection()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetNoTrafficInterval()).(clone.Cloner); ok { + target.NoTrafficInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.NoTrafficInterval = proto.Clone(m.GetNoTrafficInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetUnhealthyInterval()).(clone.Cloner); ok { + target.UnhealthyInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.UnhealthyInterval = proto.Clone(m.GetUnhealthyInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetUnhealthyEdgeInterval()).(clone.Cloner); ok { + target.UnhealthyEdgeInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.UnhealthyEdgeInterval = proto.Clone(m.GetUnhealthyEdgeInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetHealthyEdgeInterval()).(clone.Cloner); ok { + target.HealthyEdgeInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.HealthyEdgeInterval = proto.Clone(m.GetHealthyEdgeInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + target.EventLogPath = m.GetEventLogPath() + + if h, ok := interface{}(m.GetEventService()).(clone.Cloner); ok { + target.EventService = h.Clone().(*EventServiceConfig) + } else { + target.EventService = proto.Clone(m.GetEventService()).(*EventServiceConfig) + } + + target.AlwaysLogHealthCheckFailures = m.GetAlwaysLogHealthCheckFailures() + + if h, ok := interface{}(m.GetTlsOptions()).(clone.Cloner); ok { + target.TlsOptions = h.Clone().(*HealthCheck_TlsOptions) + } else { + target.TlsOptions = proto.Clone(m.GetTlsOptions()).(*HealthCheck_TlsOptions) + } + + if h, ok := interface{}(m.GetTransportSocketMatchCriteria()).(clone.Cloner); ok { + target.TransportSocketMatchCriteria = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.TransportSocketMatchCriteria = proto.Clone(m.GetTransportSocketMatchCriteria()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + switch m.HealthChecker.(type) { + + case *HealthCheck_HttpHealthCheck_: + + if h, ok := interface{}(m.GetHttpHealthCheck()).(clone.Cloner); ok { + target.HealthChecker = &HealthCheck_HttpHealthCheck_{ + HttpHealthCheck: h.Clone().(*HealthCheck_HttpHealthCheck), + } + } else { + target.HealthChecker = &HealthCheck_HttpHealthCheck_{ + HttpHealthCheck: proto.Clone(m.GetHttpHealthCheck()).(*HealthCheck_HttpHealthCheck), + } + } + + case *HealthCheck_TcpHealthCheck_: + + if h, ok := interface{}(m.GetTcpHealthCheck()).(clone.Cloner); ok { + target.HealthChecker = &HealthCheck_TcpHealthCheck_{ + TcpHealthCheck: h.Clone().(*HealthCheck_TcpHealthCheck), + } + } else { + target.HealthChecker = &HealthCheck_TcpHealthCheck_{ + TcpHealthCheck: proto.Clone(m.GetTcpHealthCheck()).(*HealthCheck_TcpHealthCheck), + } + } + + case *HealthCheck_GrpcHealthCheck_: + + if h, ok := interface{}(m.GetGrpcHealthCheck()).(clone.Cloner); ok { + target.HealthChecker = &HealthCheck_GrpcHealthCheck_{ + GrpcHealthCheck: h.Clone().(*HealthCheck_GrpcHealthCheck), + } + } else { + target.HealthChecker = &HealthCheck_GrpcHealthCheck_{ + GrpcHealthCheck: proto.Clone(m.GetGrpcHealthCheck()).(*HealthCheck_GrpcHealthCheck), + } + } + + case *HealthCheck_CustomHealthCheck_: + + if h, ok := interface{}(m.GetCustomHealthCheck()).(clone.Cloner); ok { + target.HealthChecker = &HealthCheck_CustomHealthCheck_{ + CustomHealthCheck: h.Clone().(*HealthCheck_CustomHealthCheck), + } + } else { + target.HealthChecker = &HealthCheck_CustomHealthCheck_{ + CustomHealthCheck: proto.Clone(m.GetCustomHealthCheck()).(*HealthCheck_CustomHealthCheck), + } + } + + } + + return target +} + +// Clone function +func (m *HealthCheck_Payload) Clone() proto.Message { + var target *HealthCheck_Payload + if m == nil { + return target + } + target = &HealthCheck_Payload{} + + switch m.Payload.(type) { + + case *HealthCheck_Payload_Text: + + target.Payload = &HealthCheck_Payload_Text{ + Text: m.GetText(), + } + + case *HealthCheck_Payload_Binary: + + if m.GetBinary() != nil { + newArr := make([]byte, len(m.GetBinary())) + copy(newArr, m.GetBinary()) + target.Payload = &HealthCheck_Payload_Binary{ + Binary: newArr, + } + } else { + target.Payload = &HealthCheck_Payload_Binary{ + Binary: nil, + } + } + + } + + return target +} + +// Clone function +func (m *HealthCheck_HttpHealthCheck) Clone() proto.Message { + var target *HealthCheck_HttpHealthCheck + if m == nil { + return target + } + target = &HealthCheck_HttpHealthCheck{} + + target.Host = m.GetHost() + + target.Path = m.GetPath() + + if h, ok := interface{}(m.GetSend()).(clone.Cloner); ok { + target.Send = h.Clone().(*HealthCheck_Payload) + } else { + target.Send = proto.Clone(m.GetSend()).(*HealthCheck_Payload) + } + + if h, ok := interface{}(m.GetReceive()).(clone.Cloner); ok { + target.Receive = h.Clone().(*HealthCheck_Payload) + } else { + target.Receive = proto.Clone(m.GetReceive()).(*HealthCheck_Payload) + } + + if m.GetRequestHeadersToAdd() != nil { + target.RequestHeadersToAdd = make([]*HeaderValueOption, len(m.GetRequestHeadersToAdd())) + for idx, v := range m.GetRequestHeadersToAdd() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RequestHeadersToAdd[idx] = h.Clone().(*HeaderValueOption) + } else { + target.RequestHeadersToAdd[idx] = proto.Clone(v).(*HeaderValueOption) + } + + } + } + + if m.GetRequestHeadersToRemove() != nil { + target.RequestHeadersToRemove = make([]string, len(m.GetRequestHeadersToRemove())) + for idx, v := range m.GetRequestHeadersToRemove() { + + target.RequestHeadersToRemove[idx] = v + + } + } + + if m.GetExpectedStatuses() != nil { + target.ExpectedStatuses = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3.Int64Range, len(m.GetExpectedStatuses())) + for idx, v := range m.GetExpectedStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ExpectedStatuses[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3.Int64Range) + } else { + target.ExpectedStatuses[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3.Int64Range) + } + + } + } + + target.CodecClientType = m.GetCodecClientType() + + if h, ok := interface{}(m.GetServiceNameMatcher()).(clone.Cloner); ok { + target.ServiceNameMatcher = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.StringMatcher) + } else { + target.ServiceNameMatcher = proto.Clone(m.GetServiceNameMatcher()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.StringMatcher) + } + + if h, ok := interface{}(m.GetResponseAssertions()).(clone.Cloner); ok { + target.ResponseAssertions = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_advanced_http.ResponseAssertions) + } else { + target.ResponseAssertions = proto.Clone(m.GetResponseAssertions()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_advanced_http.ResponseAssertions) + } + + return target +} + +// Clone function +func (m *HealthCheck_TcpHealthCheck) Clone() proto.Message { + var target *HealthCheck_TcpHealthCheck + if m == nil { + return target + } + target = &HealthCheck_TcpHealthCheck{} + + if h, ok := interface{}(m.GetSend()).(clone.Cloner); ok { + target.Send = h.Clone().(*HealthCheck_Payload) + } else { + target.Send = proto.Clone(m.GetSend()).(*HealthCheck_Payload) + } + + if m.GetReceive() != nil { + target.Receive = make([]*HealthCheck_Payload, len(m.GetReceive())) + for idx, v := range m.GetReceive() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Receive[idx] = h.Clone().(*HealthCheck_Payload) + } else { + target.Receive[idx] = proto.Clone(v).(*HealthCheck_Payload) + } + + } + } + + return target +} + +// Clone function +func (m *HealthCheck_RedisHealthCheck) Clone() proto.Message { + var target *HealthCheck_RedisHealthCheck + if m == nil { + return target + } + target = &HealthCheck_RedisHealthCheck{} + + target.Key = m.GetKey() + + return target +} + +// Clone function +func (m *HealthCheck_GrpcHealthCheck) Clone() proto.Message { + var target *HealthCheck_GrpcHealthCheck + if m == nil { + return target + } + target = &HealthCheck_GrpcHealthCheck{} + + target.ServiceName = m.GetServiceName() + + target.Authority = m.GetAuthority() + + return target +} + +// Clone function +func (m *HealthCheck_CustomHealthCheck) Clone() proto.Message { + var target *HealthCheck_CustomHealthCheck + if m == nil { + return target + } + target = &HealthCheck_CustomHealthCheck{} + + target.Name = m.GetName() + + switch m.ConfigType.(type) { + + case *HealthCheck_CustomHealthCheck_TypedConfig: + + if h, ok := interface{}(m.GetTypedConfig()).(clone.Cloner); ok { + target.ConfigType = &HealthCheck_CustomHealthCheck_TypedConfig{ + TypedConfig: h.Clone().(*google_golang_org_protobuf_types_known_anypb.Any), + } + } else { + target.ConfigType = &HealthCheck_CustomHealthCheck_TypedConfig{ + TypedConfig: proto.Clone(m.GetTypedConfig()).(*google_golang_org_protobuf_types_known_anypb.Any), + } + } + + } + + return target +} + +// Clone function +func (m *HealthCheck_TlsOptions) Clone() proto.Message { + var target *HealthCheck_TlsOptions + if m == nil { + return target + } + target = &HealthCheck_TlsOptions{} + + if m.GetAlpnProtocols() != nil { + target.AlpnProtocols = make([]string, len(m.GetAlpnProtocols())) + for idx, v := range m.GetAlpnProtocols() { + + target.AlpnProtocols[idx] = v + + } + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/health_check.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/health_check.pb.equal.go index 9fac460d1..674445bde 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/health_check.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/health_check.pb.equal.go @@ -211,6 +211,9 @@ func (m *HealthCheck) Equal(that interface{}) bool { switch m.HealthChecker.(type) { case *HealthCheck_HttpHealthCheck_: + if _, ok := target.HealthChecker.(*HealthCheck_HttpHealthCheck_); !ok { + return false + } if h, ok := interface{}(m.GetHttpHealthCheck()).(equality.Equalizer); ok { if !h.Equal(target.GetHttpHealthCheck()) { @@ -223,6 +226,9 @@ func (m *HealthCheck) Equal(that interface{}) bool { } case *HealthCheck_TcpHealthCheck_: + if _, ok := target.HealthChecker.(*HealthCheck_TcpHealthCheck_); !ok { + return false + } if h, ok := interface{}(m.GetTcpHealthCheck()).(equality.Equalizer); ok { if !h.Equal(target.GetTcpHealthCheck()) { @@ -235,6 +241,9 @@ func (m *HealthCheck) Equal(that interface{}) bool { } case *HealthCheck_GrpcHealthCheck_: + if _, ok := target.HealthChecker.(*HealthCheck_GrpcHealthCheck_); !ok { + return false + } if h, ok := interface{}(m.GetGrpcHealthCheck()).(equality.Equalizer); ok { if !h.Equal(target.GetGrpcHealthCheck()) { @@ -247,6 +256,9 @@ func (m *HealthCheck) Equal(that interface{}) bool { } case *HealthCheck_CustomHealthCheck_: + if _, ok := target.HealthChecker.(*HealthCheck_CustomHealthCheck_); !ok { + return false + } if h, ok := interface{}(m.GetCustomHealthCheck()).(equality.Equalizer); ok { if !h.Equal(target.GetCustomHealthCheck()) { @@ -258,6 +270,11 @@ func (m *HealthCheck) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.HealthChecker != target.HealthChecker { + return false + } } return true @@ -287,17 +304,28 @@ func (m *HealthCheck_Payload) Equal(that interface{}) bool { switch m.Payload.(type) { case *HealthCheck_Payload_Text: + if _, ok := target.Payload.(*HealthCheck_Payload_Text); !ok { + return false + } if strings.Compare(m.GetText(), target.GetText()) != 0 { return false } case *HealthCheck_Payload_Binary: + if _, ok := target.Payload.(*HealthCheck_Payload_Binary); !ok { + return false + } if bytes.Compare(m.GetBinary(), target.GetBinary()) != 0 { return false } + default: + // m is nil but target is not nil + if m.Payload != target.Payload { + return false + } } return true @@ -563,6 +591,9 @@ func (m *HealthCheck_CustomHealthCheck) Equal(that interface{}) bool { switch m.ConfigType.(type) { case *HealthCheck_CustomHealthCheck_TypedConfig: + if _, ok := target.ConfigType.(*HealthCheck_CustomHealthCheck_TypedConfig); !ok { + return false + } if h, ok := interface{}(m.GetTypedConfig()).(equality.Equalizer); ok { if !h.Equal(target.GetTypedConfig()) { @@ -574,6 +605,11 @@ func (m *HealthCheck_CustomHealthCheck) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.ConfigType != target.ConfigType { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/health_check.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/health_check.pb.go index b54f3f8cc..2c175b2f5 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/health_check.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/health_check.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/health_check.proto @@ -9,13 +9,9 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - any "github.com/golang/protobuf/ptypes/any" - duration "github.com/golang/protobuf/ptypes/duration" - _struct "github.com/golang/protobuf/ptypes/struct" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" v31 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3" v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/v3" @@ -23,6 +19,10 @@ import ( advanced_http "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/advanced_http" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" + durationpb "google.golang.org/protobuf/types/known/durationpb" + structpb "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -32,10 +32,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Endpoint health status. type HealthStatus int32 @@ -47,9 +43,9 @@ const ( // Unhealthy. HealthStatus_UNHEALTHY HealthStatus = 2 // Connection draining in progress. E.g., - // ``_ + // https://aws.amazon.com/blogs/aws/elb-connection-draining-remove-instances-from-service-with-care/ // or - // ``_. + // https://cloud.google.com/compute/docs/load-balancing/enabling-connection-draining. // This is interpreted by Envoy as *UNHEALTHY*. HealthStatus_DRAINING HealthStatus = 3 // Health check timed out. This is part of HDS and is interpreted by Envoy as @@ -108,22 +104,19 @@ func (HealthStatus) EnumDescriptor() ([]byte, []int) { // [#next-free-field: 24] type HealthCheck struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The time to wait for a health check response. If the timeout is reached the // health check attempt will be considered a failure. - Timeout *duration.Duration `protobuf:"bytes,1,opt,name=timeout,proto3" json:"timeout,omitempty"` + Timeout *durationpb.Duration `protobuf:"bytes,1,opt,name=timeout,proto3" json:"timeout,omitempty"` // The interval between health checks. - Interval *duration.Duration `protobuf:"bytes,2,opt,name=interval,proto3" json:"interval,omitempty"` + Interval *durationpb.Duration `protobuf:"bytes,2,opt,name=interval,proto3" json:"interval,omitempty"` // An optional jitter amount in milliseconds. If specified, Envoy will start health // checking after for a random time in ms between 0 and initial_jitter. This only // applies to the first health check. - InitialJitter *duration.Duration `protobuf:"bytes,20,opt,name=initial_jitter,json=initialJitter,proto3" json:"initial_jitter,omitempty"` + InitialJitter *durationpb.Duration `protobuf:"bytes,20,opt,name=initial_jitter,json=initialJitter,proto3" json:"initial_jitter,omitempty"` // An optional jitter amount in milliseconds. If specified, during every // interval Envoy will add interval_jitter to the wait time. - IntervalJitter *duration.Duration `protobuf:"bytes,3,opt,name=interval_jitter,json=intervalJitter,proto3" json:"interval_jitter,omitempty"` + IntervalJitter *durationpb.Duration `protobuf:"bytes,3,opt,name=interval_jitter,json=intervalJitter,proto3" json:"interval_jitter,omitempty"` // An optional jitter amount as a percentage of interval_ms. If specified, // during every interval Envoy will add interval_ms * // interval_jitter_percent / 100 to the wait time. @@ -134,16 +127,17 @@ type HealthCheck struct { // The number of unhealthy health checks required before a host is marked // unhealthy. Note that for *http* health checking if a host responds with 503 // this threshold is ignored and the host is considered unhealthy immediately. - UnhealthyThreshold *wrappers.UInt32Value `protobuf:"bytes,4,opt,name=unhealthy_threshold,json=unhealthyThreshold,proto3" json:"unhealthy_threshold,omitempty"` + UnhealthyThreshold *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=unhealthy_threshold,json=unhealthyThreshold,proto3" json:"unhealthy_threshold,omitempty"` // The number of healthy health checks required before a host is marked // healthy. Note that during startup, only a single successful health check is // required to mark a host healthy. - HealthyThreshold *wrappers.UInt32Value `protobuf:"bytes,5,opt,name=healthy_threshold,json=healthyThreshold,proto3" json:"healthy_threshold,omitempty"` + HealthyThreshold *wrapperspb.UInt32Value `protobuf:"bytes,5,opt,name=healthy_threshold,json=healthyThreshold,proto3" json:"healthy_threshold,omitempty"` // [#not-implemented-hide:] Non-serving port for health checking. - AltPort *wrappers.UInt32Value `protobuf:"bytes,6,opt,name=alt_port,json=altPort,proto3" json:"alt_port,omitempty"` + AltPort *wrapperspb.UInt32Value `protobuf:"bytes,6,opt,name=alt_port,json=altPort,proto3" json:"alt_port,omitempty"` // Reuse health check connection between health checks. Default is true. - ReuseConnection *wrappers.BoolValue `protobuf:"bytes,7,opt,name=reuse_connection,json=reuseConnection,proto3" json:"reuse_connection,omitempty"` - // Types that are assignable to HealthChecker: + ReuseConnection *wrapperspb.BoolValue `protobuf:"bytes,7,opt,name=reuse_connection,json=reuseConnection,proto3" json:"reuse_connection,omitempty"` + // Types that are valid to be assigned to HealthChecker: + // // *HealthCheck_HttpHealthCheck_ // *HealthCheck_TcpHealthCheck_ // *HealthCheck_GrpcHealthCheck_ @@ -157,27 +151,27 @@ type HealthCheck struct { // any other. // // The default value for "no traffic interval" is 60 seconds. - NoTrafficInterval *duration.Duration `protobuf:"bytes,12,opt,name=no_traffic_interval,json=noTrafficInterval,proto3" json:"no_traffic_interval,omitempty"` + NoTrafficInterval *durationpb.Duration `protobuf:"bytes,12,opt,name=no_traffic_interval,json=noTrafficInterval,proto3" json:"no_traffic_interval,omitempty"` // The "unhealthy interval" is a health check interval that is used for hosts that are marked as // unhealthy. As soon as the host is marked as healthy, Envoy will shift back to using the // standard health check interval that is defined. // // The default value for "unhealthy interval" is the same as "interval". - UnhealthyInterval *duration.Duration `protobuf:"bytes,14,opt,name=unhealthy_interval,json=unhealthyInterval,proto3" json:"unhealthy_interval,omitempty"` + UnhealthyInterval *durationpb.Duration `protobuf:"bytes,14,opt,name=unhealthy_interval,json=unhealthyInterval,proto3" json:"unhealthy_interval,omitempty"` // The "unhealthy edge interval" is a special health check interval that is used for the first // health check right after a host is marked as unhealthy. For subsequent health checks // Envoy will shift back to using either "unhealthy interval" if present or the standard health // check interval that is defined. // // The default value for "unhealthy edge interval" is the same as "unhealthy interval". - UnhealthyEdgeInterval *duration.Duration `protobuf:"bytes,15,opt,name=unhealthy_edge_interval,json=unhealthyEdgeInterval,proto3" json:"unhealthy_edge_interval,omitempty"` + UnhealthyEdgeInterval *durationpb.Duration `protobuf:"bytes,15,opt,name=unhealthy_edge_interval,json=unhealthyEdgeInterval,proto3" json:"unhealthy_edge_interval,omitempty"` // The "healthy edge interval" is a special health check interval that is used for the first // health check right after a host is marked as healthy. For subsequent health checks // Envoy will shift back to using the standard health check interval that is defined. // // The default value for "healthy edge interval" is the same as the default interval. - HealthyEdgeInterval *duration.Duration `protobuf:"bytes,16,opt,name=healthy_edge_interval,json=healthyEdgeInterval,proto3" json:"healthy_edge_interval,omitempty"` - // Specifies the path to the :ref:`health check event log `. + HealthyEdgeInterval *durationpb.Duration `protobuf:"bytes,16,opt,name=healthy_edge_interval,json=healthyEdgeInterval,proto3" json:"healthy_edge_interval,omitempty"` + // Specifies the path to the health check event log. // If empty, no event log will be written. EventLogPath string `protobuf:"bytes,17,opt,name=event_log_path,json=eventLogPath,proto3" json:"event_log_path,omitempty"` // [#not-implemented-hide:] @@ -191,45 +185,45 @@ type HealthCheck struct { // This allows overriding the cluster TLS settings, just for health check connections. TlsOptions *HealthCheck_TlsOptions `protobuf:"bytes,21,opt,name=tls_options,json=tlsOptions,proto3" json:"tls_options,omitempty"` // Optional key/value pairs that will be used to match a transport socket from those specified in the cluster's - // :ref:`tranport socket matches `. + // tranport socket matches. // For example, the following match criteria // // .. code-block:: yaml // - // transport_socket_match_criteria: - // useMTLS: true + // transport_socket_match_criteria: + // useMTLS: true // // Will match the following :ref:`cluster socket match ` // // .. code-block:: yaml // - // transport_socket_matches: - // - name: "useMTLS" - // match: - // useMTLS: true - // transport_socket: - // name: envoy.transport_sockets.tls - // config: { ... } # tls socket configuration + // transport_socket_matches: + // - name: "useMTLS" + // match: + // useMTLS: true + // transport_socket: + // name: envoy.transport_sockets.tls + // config: { ... } # tls socket configuration // // If this field is set, then for health checks it will supersede an entry of *envoy.transport_socket* in the - // :ref:`LbEndpoint.Metadata `. + // LbEndpoint.Metadata. // This allows using different transport socket capabilities for health checking versus proxying to the // endpoint. // // If the key/values pairs specified do not match any - // :ref:`transport socket matches `, + // transport socket matches, // the cluster's :ref:`transport socket ` // will be used for health check socket configuration. - TransportSocketMatchCriteria *_struct.Struct `protobuf:"bytes,23,opt,name=transport_socket_match_criteria,json=transportSocketMatchCriteria,proto3" json:"transport_socket_match_criteria,omitempty"` + TransportSocketMatchCriteria *structpb.Struct `protobuf:"bytes,23,opt,name=transport_socket_match_criteria,json=transportSocketMatchCriteria,proto3" json:"transport_socket_match_criteria,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HealthCheck) Reset() { *x = HealthCheck{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HealthCheck) String() string { @@ -240,7 +234,7 @@ func (*HealthCheck) ProtoMessage() {} func (x *HealthCheck) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -255,28 +249,28 @@ func (*HealthCheck) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_rawDescGZIP(), []int{0} } -func (x *HealthCheck) GetTimeout() *duration.Duration { +func (x *HealthCheck) GetTimeout() *durationpb.Duration { if x != nil { return x.Timeout } return nil } -func (x *HealthCheck) GetInterval() *duration.Duration { +func (x *HealthCheck) GetInterval() *durationpb.Duration { if x != nil { return x.Interval } return nil } -func (x *HealthCheck) GetInitialJitter() *duration.Duration { +func (x *HealthCheck) GetInitialJitter() *durationpb.Duration { if x != nil { return x.InitialJitter } return nil } -func (x *HealthCheck) GetIntervalJitter() *duration.Duration { +func (x *HealthCheck) GetIntervalJitter() *durationpb.Duration { if x != nil { return x.IntervalJitter } @@ -290,91 +284,99 @@ func (x *HealthCheck) GetIntervalJitterPercent() uint32 { return 0 } -func (x *HealthCheck) GetUnhealthyThreshold() *wrappers.UInt32Value { +func (x *HealthCheck) GetUnhealthyThreshold() *wrapperspb.UInt32Value { if x != nil { return x.UnhealthyThreshold } return nil } -func (x *HealthCheck) GetHealthyThreshold() *wrappers.UInt32Value { +func (x *HealthCheck) GetHealthyThreshold() *wrapperspb.UInt32Value { if x != nil { return x.HealthyThreshold } return nil } -func (x *HealthCheck) GetAltPort() *wrappers.UInt32Value { +func (x *HealthCheck) GetAltPort() *wrapperspb.UInt32Value { if x != nil { return x.AltPort } return nil } -func (x *HealthCheck) GetReuseConnection() *wrappers.BoolValue { +func (x *HealthCheck) GetReuseConnection() *wrapperspb.BoolValue { if x != nil { return x.ReuseConnection } return nil } -func (m *HealthCheck) GetHealthChecker() isHealthCheck_HealthChecker { - if m != nil { - return m.HealthChecker +func (x *HealthCheck) GetHealthChecker() isHealthCheck_HealthChecker { + if x != nil { + return x.HealthChecker } return nil } func (x *HealthCheck) GetHttpHealthCheck() *HealthCheck_HttpHealthCheck { - if x, ok := x.GetHealthChecker().(*HealthCheck_HttpHealthCheck_); ok { - return x.HttpHealthCheck + if x != nil { + if x, ok := x.HealthChecker.(*HealthCheck_HttpHealthCheck_); ok { + return x.HttpHealthCheck + } } return nil } func (x *HealthCheck) GetTcpHealthCheck() *HealthCheck_TcpHealthCheck { - if x, ok := x.GetHealthChecker().(*HealthCheck_TcpHealthCheck_); ok { - return x.TcpHealthCheck + if x != nil { + if x, ok := x.HealthChecker.(*HealthCheck_TcpHealthCheck_); ok { + return x.TcpHealthCheck + } } return nil } func (x *HealthCheck) GetGrpcHealthCheck() *HealthCheck_GrpcHealthCheck { - if x, ok := x.GetHealthChecker().(*HealthCheck_GrpcHealthCheck_); ok { - return x.GrpcHealthCheck + if x != nil { + if x, ok := x.HealthChecker.(*HealthCheck_GrpcHealthCheck_); ok { + return x.GrpcHealthCheck + } } return nil } func (x *HealthCheck) GetCustomHealthCheck() *HealthCheck_CustomHealthCheck { - if x, ok := x.GetHealthChecker().(*HealthCheck_CustomHealthCheck_); ok { - return x.CustomHealthCheck + if x != nil { + if x, ok := x.HealthChecker.(*HealthCheck_CustomHealthCheck_); ok { + return x.CustomHealthCheck + } } return nil } -func (x *HealthCheck) GetNoTrafficInterval() *duration.Duration { +func (x *HealthCheck) GetNoTrafficInterval() *durationpb.Duration { if x != nil { return x.NoTrafficInterval } return nil } -func (x *HealthCheck) GetUnhealthyInterval() *duration.Duration { +func (x *HealthCheck) GetUnhealthyInterval() *durationpb.Duration { if x != nil { return x.UnhealthyInterval } return nil } -func (x *HealthCheck) GetUnhealthyEdgeInterval() *duration.Duration { +func (x *HealthCheck) GetUnhealthyEdgeInterval() *durationpb.Duration { if x != nil { return x.UnhealthyEdgeInterval } return nil } -func (x *HealthCheck) GetHealthyEdgeInterval() *duration.Duration { +func (x *HealthCheck) GetHealthyEdgeInterval() *durationpb.Duration { if x != nil { return x.HealthyEdgeInterval } @@ -409,7 +411,7 @@ func (x *HealthCheck) GetTlsOptions() *HealthCheck_TlsOptions { return nil } -func (x *HealthCheck) GetTransportSocketMatchCriteria() *_struct.Struct { +func (x *HealthCheck) GetTransportSocketMatchCriteria() *structpb.Struct { if x != nil { return x.TransportSocketMatchCriteria } @@ -450,23 +452,21 @@ func (*HealthCheck_CustomHealthCheck_) isHealthCheck_HealthChecker() {} // Describes the encoding of the payload bytes in the payload. type HealthCheck_Payload struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Payload: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Payload: + // // *HealthCheck_Payload_Text // *HealthCheck_Payload_Binary - Payload isHealthCheck_Payload_Payload `protobuf_oneof:"payload"` + Payload isHealthCheck_Payload_Payload `protobuf_oneof:"payload"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HealthCheck_Payload) Reset() { *x = HealthCheck_Payload{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HealthCheck_Payload) String() string { @@ -477,7 +477,7 @@ func (*HealthCheck_Payload) ProtoMessage() {} func (x *HealthCheck_Payload) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -492,23 +492,27 @@ func (*HealthCheck_Payload) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_rawDescGZIP(), []int{0, 0} } -func (m *HealthCheck_Payload) GetPayload() isHealthCheck_Payload_Payload { - if m != nil { - return m.Payload +func (x *HealthCheck_Payload) GetPayload() isHealthCheck_Payload_Payload { + if x != nil { + return x.Payload } return nil } func (x *HealthCheck_Payload) GetText() string { - if x, ok := x.GetPayload().(*HealthCheck_Payload_Text); ok { - return x.Text + if x != nil { + if x, ok := x.Payload.(*HealthCheck_Payload_Text); ok { + return x.Text + } } return "" } func (x *HealthCheck_Payload) GetBinary() []byte { - if x, ok := x.GetPayload().(*HealthCheck_Payload_Binary); ok { - return x.Binary + if x != nil { + if x, ok := x.Payload.(*HealthCheck_Payload_Binary); ok { + return x.Binary + } } return nil } @@ -533,14 +537,11 @@ func (*HealthCheck_Payload_Binary) isHealthCheck_Payload_Payload() {} // [#next-free-field: 13] type HealthCheck_HttpHealthCheck struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The value of the host header in the HTTP health check request. If // left empty (default value), the name of the cluster this health check is associated // with will be used. The host header can be customized for a specific endpoint by setting the - // :ref:`hostname ` field. + // hostname field. Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` // Specifies the HTTP path that will be requested during health checking. For example // */healthcheck*. @@ -559,7 +560,7 @@ type HealthCheck_HttpHealthCheck struct { RequestHeadersToRemove []string `protobuf:"bytes,8,rep,name=request_headers_to_remove,json=requestHeadersToRemove,proto3" json:"request_headers_to_remove,omitempty"` // Specifies a list of HTTP response statuses considered healthy. If provided, replaces default // 200-only policy - 200 must be included explicitly as needed. Ranges follow half-open - // semantics of :ref:`Int64Range `. The start and end of each + // semantics of Int64Range. The start and end of each // range are required. Only statuses in the range [100, 600) are allowed. ExpectedStatuses []*v3.Int64Range `protobuf:"bytes,9,rep,name=expected_statuses,json=expectedStatuses,proto3" json:"expected_statuses,omitempty"` // Use specified application protocol for health checks. @@ -572,15 +573,15 @@ type HealthCheck_HttpHealthCheck struct { // (Enterprise Only): If defined, the response health check rules take precedence over the http // `expected_statuses`. ResponseAssertions *advanced_http.ResponseAssertions `protobuf:"bytes,12,opt,name=response_assertions,json=responseAssertions,proto3" json:"response_assertions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HealthCheck_HttpHealthCheck) Reset() { *x = HealthCheck_HttpHealthCheck{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HealthCheck_HttpHealthCheck) String() string { @@ -591,7 +592,7 @@ func (*HealthCheck_HttpHealthCheck) ProtoMessage() {} func (x *HealthCheck_HttpHealthCheck) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -659,7 +660,7 @@ func (x *HealthCheck_HttpHealthCheck) GetCodecClientType() v3.CodecClientType { if x != nil { return x.CodecClientType } - return v3.CodecClientType_HTTP1 + return v3.CodecClientType(0) } func (x *HealthCheck_HttpHealthCheck) GetServiceNameMatcher() *v31.StringMatcher { @@ -677,25 +678,22 @@ func (x *HealthCheck_HttpHealthCheck) GetResponseAssertions() *advanced_http.Res } type HealthCheck_TcpHealthCheck struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Empty payloads imply a connect-only health check. Send *HealthCheck_Payload `protobuf:"bytes,1,opt,name=send,proto3" json:"send,omitempty"` // When checking the response, “fuzzy” matching is performed such that each // binary block must be found, and in the order specified, but not // necessarily contiguous. - Receive []*HealthCheck_Payload `protobuf:"bytes,2,rep,name=receive,proto3" json:"receive,omitempty"` + Receive []*HealthCheck_Payload `protobuf:"bytes,2,rep,name=receive,proto3" json:"receive,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HealthCheck_TcpHealthCheck) Reset() { *x = HealthCheck_TcpHealthCheck{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HealthCheck_TcpHealthCheck) String() string { @@ -706,7 +704,7 @@ func (*HealthCheck_TcpHealthCheck) ProtoMessage() {} func (x *HealthCheck_TcpHealthCheck) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -736,24 +734,21 @@ func (x *HealthCheck_TcpHealthCheck) GetReceive() []*HealthCheck_Payload { } type HealthCheck_RedisHealthCheck struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // If set, optionally perform ``EXISTS `` instead of ``PING``. A return value + state protoimpl.MessageState `protogen:"open.v1"` + // If set, optionally perform `EXISTS ` instead of `PING`. A return value // from Redis of 0 (does not exist) is considered a passing healthcheck. A return value other // than 0 is considered a failure. This allows the user to mark a Redis instance for maintenance // by setting the specified key to any value and waiting for traffic to drain. - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HealthCheck_RedisHealthCheck) Reset() { *x = HealthCheck_RedisHealthCheck{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HealthCheck_RedisHealthCheck) String() string { @@ -764,7 +759,7 @@ func (*HealthCheck_RedisHealthCheck) ProtoMessage() {} func (x *HealthCheck_RedisHealthCheck) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -786,35 +781,29 @@ func (x *HealthCheck_RedisHealthCheck) GetKey() string { return "" } -// `grpc.health.v1.Health -// `_-based -// healthcheck. See `gRPC doc `_ +// [grpc.health.v1.Health](https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto)-based +// healthcheck. See [gRPC doc](https://github.com/grpc/grpc/blob/master/doc/health-checking.md) // for details. type HealthCheck_GrpcHealthCheck struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // An optional service name parameter which will be sent to gRPC service in - // `grpc.health.v1.HealthCheckRequest - // `_. - // message. See `gRPC health-checking overview - // `_ for more information. + // [grpc.health.v1.HealthCheckRequest](https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto#L20). + // message. See [gRPC health-checking overview](https://github.com/grpc/grpc/blob/master/doc/health-checking.md) for more information. ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` // The value of the :authority header in the gRPC health check request. If // left empty (default value), the name of the cluster this health check is associated // with will be used. The authority header can be customized for a specific endpoint by setting - // the :ref:`hostname ` field. - Authority string `protobuf:"bytes,2,opt,name=authority,proto3" json:"authority,omitempty"` + // the hostname field. + Authority string `protobuf:"bytes,2,opt,name=authority,proto3" json:"authority,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HealthCheck_GrpcHealthCheck) Reset() { *x = HealthCheck_GrpcHealthCheck{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HealthCheck_GrpcHealthCheck) String() string { @@ -825,7 +814,7 @@ func (*HealthCheck_GrpcHealthCheck) ProtoMessage() {} func (x *HealthCheck_GrpcHealthCheck) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -856,27 +845,25 @@ func (x *HealthCheck_GrpcHealthCheck) GetAuthority() string { // Custom health check. type HealthCheck_CustomHealthCheck struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The registered name of the custom health checker. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // A custom health checker specific configuration which depends on the custom health checker // being instantiated. See :api:`envoy/config/health_checker` for reference. // - // Types that are assignable to ConfigType: + // Types that are valid to be assigned to ConfigType: + // // *HealthCheck_CustomHealthCheck_TypedConfig - ConfigType isHealthCheck_CustomHealthCheck_ConfigType `protobuf_oneof:"config_type"` + ConfigType isHealthCheck_CustomHealthCheck_ConfigType `protobuf_oneof:"config_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HealthCheck_CustomHealthCheck) Reset() { *x = HealthCheck_CustomHealthCheck{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HealthCheck_CustomHealthCheck) String() string { @@ -887,7 +874,7 @@ func (*HealthCheck_CustomHealthCheck) ProtoMessage() {} func (x *HealthCheck_CustomHealthCheck) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -909,16 +896,18 @@ func (x *HealthCheck_CustomHealthCheck) GetName() string { return "" } -func (m *HealthCheck_CustomHealthCheck) GetConfigType() isHealthCheck_CustomHealthCheck_ConfigType { - if m != nil { - return m.ConfigType +func (x *HealthCheck_CustomHealthCheck) GetConfigType() isHealthCheck_CustomHealthCheck_ConfigType { + if x != nil { + return x.ConfigType } return nil } -func (x *HealthCheck_CustomHealthCheck) GetTypedConfig() *any.Any { - if x, ok := x.GetConfigType().(*HealthCheck_CustomHealthCheck_TypedConfig); ok { - return x.TypedConfig +func (x *HealthCheck_CustomHealthCheck) GetTypedConfig() *anypb.Any { + if x != nil { + if x, ok := x.ConfigType.(*HealthCheck_CustomHealthCheck_TypedConfig); ok { + return x.TypedConfig + } } return nil } @@ -928,7 +917,7 @@ type isHealthCheck_CustomHealthCheck_ConfigType interface { } type HealthCheck_CustomHealthCheck_TypedConfig struct { - TypedConfig *any.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"` + TypedConfig *anypb.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"` } func (*HealthCheck_CustomHealthCheck_TypedConfig) isHealthCheck_CustomHealthCheck_ConfigType() {} @@ -938,24 +927,21 @@ func (*HealthCheck_CustomHealthCheck_TypedConfig) isHealthCheck_CustomHealthChec // // This allows overriding the cluster TLS settings, just for health check connections. type HealthCheck_TlsOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the ALPN protocols for health check connections. This is useful if the // corresponding upstream is using ALPN-based :ref:`FilterChainMatch // ` along with different protocols for health checks // versus data connections. If empty, no ALPN protocols will be set on health check connections. AlpnProtocols []string `protobuf:"bytes,1,rep,name=alpn_protocols,json=alpnProtocols,proto3" json:"alpn_protocols,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HealthCheck_TlsOptions) Reset() { *x = HealthCheck_TlsOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HealthCheck_TlsOptions) String() string { @@ -966,7 +952,7 @@ func (*HealthCheck_TlsOptions) ProtoMessage() {} func (x *HealthCheck_TlsOptions) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -990,7 +976,7 @@ func (x *HealthCheck_TlsOptions) GetAlpnProtocols() []string { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_rawDesc = string([]byte{ 0x0a, 0x5b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -1169,9 +1155,9 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x1a, 0x82, 0x07, 0x0a, 0x0f, 0x48, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x1f, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, - 0x08, 0x72, 0x06, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, + 0x08, 0x72, 0x06, 0xc8, 0x01, 0x00, 0xc0, 0x01, 0x02, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xfa, - 0x42, 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 0x52, 0x04, 0x70, 0x61, + 0x42, 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc8, 0x01, 0x00, 0xc0, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x45, 0x0a, 0x04, 0x73, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, @@ -1191,7 +1177,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v 0x72, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x12, 0x4b, 0x0a, 0x19, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x42, 0x10, 0xfa, 0x42, 0x0d, 0x92, - 0x01, 0x0a, 0x22, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00, 0x52, 0x16, 0x72, 0x65, + 0x01, 0x0a, 0x22, 0x08, 0x72, 0x06, 0xc8, 0x01, 0x00, 0xc0, 0x01, 0x01, 0x52, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x4e, 0x0a, 0x11, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, @@ -1248,8 +1234,8 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x02, - 0xc8, 0x01, 0x00, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x3a, 0x3e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc8, 0x01, 0x00, + 0xc0, 0x01, 0x02, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x3a, 0x3e, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x38, 0x0a, 0x36, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x47, @@ -1284,35 +1270,35 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x4e, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x59, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x45, - 0x47, 0x52, 0x41, 0x44, 0x45, 0x44, 0x10, 0x05, 0x42, 0xa1, 0x01, 0x0a, 0x2a, 0x69, 0x6f, 0x2e, - 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x42, 0x10, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, - 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0xe2, 0xb5, 0xdf, 0xcb, - 0x07, 0x02, 0x10, 0x02, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} + 0x47, 0x52, 0x41, 0x44, 0x45, 0x44, 0x10, 0x05, 0x42, 0xa5, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, + 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, + 0x2a, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x42, 0x10, 0x48, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes = make([]protoimpl.MessageInfo, 8) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_goTypes = []any{ (HealthStatus)(0), // 0: solo.io.envoy.config.core.v3.HealthStatus (*HealthCheck)(nil), // 1: solo.io.envoy.config.core.v3.HealthCheck (*HealthCheck_Payload)(nil), // 2: solo.io.envoy.config.core.v3.HealthCheck.Payload @@ -1322,17 +1308,17 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v (*HealthCheck_GrpcHealthCheck)(nil), // 6: solo.io.envoy.config.core.v3.HealthCheck.GrpcHealthCheck (*HealthCheck_CustomHealthCheck)(nil), // 7: solo.io.envoy.config.core.v3.HealthCheck.CustomHealthCheck (*HealthCheck_TlsOptions)(nil), // 8: solo.io.envoy.config.core.v3.HealthCheck.TlsOptions - (*duration.Duration)(nil), // 9: google.protobuf.Duration - (*wrappers.UInt32Value)(nil), // 10: google.protobuf.UInt32Value - (*wrappers.BoolValue)(nil), // 11: google.protobuf.BoolValue + (*durationpb.Duration)(nil), // 9: google.protobuf.Duration + (*wrapperspb.UInt32Value)(nil), // 10: google.protobuf.UInt32Value + (*wrapperspb.BoolValue)(nil), // 11: google.protobuf.BoolValue (*EventServiceConfig)(nil), // 12: solo.io.envoy.config.core.v3.EventServiceConfig - (*_struct.Struct)(nil), // 13: google.protobuf.Struct + (*structpb.Struct)(nil), // 13: google.protobuf.Struct (*HeaderValueOption)(nil), // 14: solo.io.envoy.config.core.v3.HeaderValueOption (*v3.Int64Range)(nil), // 15: solo.io.envoy.type.v3.Int64Range (v3.CodecClientType)(0), // 16: solo.io.envoy.type.v3.CodecClientType (*v31.StringMatcher)(nil), // 17: solo.io.envoy.type.matcher.v3.StringMatcher (*advanced_http.ResponseAssertions)(nil), // 18: advancedhttp.options.gloo.solo.io.ResponseAssertions - (*any.Any)(nil), // 19: google.protobuf.Any + (*anypb.Any)(nil), // 19: google.protobuf.Any } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_depIdxs = []int32{ 9, // 0: solo.io.envoy.config.core.v3.HealthCheck.timeout:type_name -> google.protobuf.Duration @@ -1380,122 +1366,24 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ } file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_base_proto_init() file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_event_service_config_proto_init() - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheck); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheck_Payload); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheck_HttpHealthCheck); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheck_TcpHealthCheck); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheck_RedisHealthCheck); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheck_GrpcHealthCheck); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheck_CustomHealthCheck); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheck_TlsOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[0].OneofWrappers = []any{ (*HealthCheck_HttpHealthCheck_)(nil), (*HealthCheck_TcpHealthCheck_)(nil), (*HealthCheck_GrpcHealthCheck_)(nil), (*HealthCheck_CustomHealthCheck_)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[1].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[1].OneofWrappers = []any{ (*HealthCheck_Payload_Text)(nil), (*HealthCheck_Payload_Binary)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[6].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes[6].OneofWrappers = []any{ (*HealthCheck_CustomHealthCheck_TypedConfig)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_rawDesc)), NumEnums: 1, NumMessages: 8, NumExtensions: 0, @@ -1507,7 +1395,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_health_check_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/health_check.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/health_check.pb.hash.go index 15b5bb707..80de926ed 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/health_check.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/health_check.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HealthCheck) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,56 +43,80 @@ func (m *HealthCheck) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Interval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetInterval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Interval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetInitialJitter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InitialJitter")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetInitialJitter(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetInitialJitter(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("InitialJitter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetIntervalJitter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IntervalJitter")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetIntervalJitter(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetIntervalJitter(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("IntervalJitter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -100,112 +128,160 @@ func (m *HealthCheck) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetUnhealthyThreshold()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UnhealthyThreshold")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetUnhealthyThreshold(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetUnhealthyThreshold(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("UnhealthyThreshold")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetHealthyThreshold()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HealthyThreshold")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHealthyThreshold(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHealthyThreshold(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HealthyThreshold")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetAltPort()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AltPort")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAltPort(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAltPort(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AltPort")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetReuseConnection()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ReuseConnection")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetReuseConnection(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetReuseConnection(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ReuseConnection")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetNoTrafficInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("NoTrafficInterval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetNoTrafficInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetNoTrafficInterval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("NoTrafficInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetUnhealthyInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UnhealthyInterval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetUnhealthyInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetUnhealthyInterval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("UnhealthyInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetUnhealthyEdgeInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UnhealthyEdgeInterval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetUnhealthyEdgeInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetUnhealthyEdgeInterval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("UnhealthyEdgeInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetHealthyEdgeInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HealthyEdgeInterval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHealthyEdgeInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHealthyEdgeInterval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HealthyEdgeInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -216,14 +292,20 @@ func (m *HealthCheck) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetEventService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EventService")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetEventService(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetEventService(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("EventService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -235,28 +317,40 @@ func (m *HealthCheck) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetTlsOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TlsOptions")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTlsOptions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTlsOptions(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TlsOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetTransportSocketMatchCriteria()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TransportSocketMatchCriteria")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTransportSocketMatchCriteria(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTransportSocketMatchCriteria(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TransportSocketMatchCriteria")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -267,14 +361,20 @@ func (m *HealthCheck) Hash(hasher hash.Hash64) (uint64, error) { case *HealthCheck_HttpHealthCheck_: if h, ok := interface{}(m.GetHttpHealthCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpHealthCheck")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHttpHealthCheck(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHttpHealthCheck(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HttpHealthCheck")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -283,14 +383,20 @@ func (m *HealthCheck) Hash(hasher hash.Hash64) (uint64, error) { case *HealthCheck_TcpHealthCheck_: if h, ok := interface{}(m.GetTcpHealthCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpHealthCheck")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTcpHealthCheck(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTcpHealthCheck(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TcpHealthCheck")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -299,14 +405,20 @@ func (m *HealthCheck) Hash(hasher hash.Hash64) (uint64, error) { case *HealthCheck_GrpcHealthCheck_: if h, ok := interface{}(m.GetGrpcHealthCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcHealthCheck")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetGrpcHealthCheck(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetGrpcHealthCheck(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("GrpcHealthCheck")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -315,14 +427,20 @@ func (m *HealthCheck) Hash(hasher hash.Hash64) (uint64, error) { case *HealthCheck_CustomHealthCheck_: if h, ok := interface{}(m.GetCustomHealthCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomHealthCheck")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCustomHealthCheck(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCustomHealthCheck(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("CustomHealthCheck")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -334,6 +452,10 @@ func (m *HealthCheck) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HealthCheck_Payload) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -366,6 +488,10 @@ func (m *HealthCheck_Payload) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HealthCheck_HttpHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -387,28 +513,40 @@ func (m *HealthCheck_HttpHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetSend()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Send")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSend(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSend(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Send")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetReceive()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Receive")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetReceive(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetReceive(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Receive")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -417,14 +555,20 @@ func (m *HealthCheck_HttpHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRequestHeadersToAdd() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -443,14 +587,20 @@ func (m *HealthCheck_HttpHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetExpectedStatuses() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -464,28 +614,40 @@ func (m *HealthCheck_HttpHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetServiceNameMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServiceNameMatcher")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetServiceNameMatcher(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetServiceNameMatcher(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ServiceNameMatcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetResponseAssertions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseAssertions")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetResponseAssertions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetResponseAssertions(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ResponseAssertions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -495,6 +657,10 @@ func (m *HealthCheck_HttpHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HealthCheck_TcpHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -508,14 +674,20 @@ func (m *HealthCheck_TcpHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetSend()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Send")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSend(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSend(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Send")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -524,14 +696,20 @@ func (m *HealthCheck_TcpHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetReceive() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -543,6 +721,10 @@ func (m *HealthCheck_TcpHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HealthCheck_RedisHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -563,6 +745,10 @@ func (m *HealthCheck_RedisHealthCheck) Hash(hasher hash.Hash64) (uint64, error) } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HealthCheck_GrpcHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -587,6 +773,10 @@ func (m *HealthCheck_GrpcHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HealthCheck_CustomHealthCheck) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -608,14 +798,20 @@ func (m *HealthCheck_CustomHealthCheck) Hash(hasher hash.Hash64) (uint64, error) case *HealthCheck_CustomHealthCheck_TypedConfig: if h, ok := interface{}(m.GetTypedConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -627,6 +823,10 @@ func (m *HealthCheck_CustomHealthCheck) Hash(hasher hash.Hash64) (uint64, error) } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HealthCheck_TlsOptions) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/health_check.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/health_check.pb.uniquehash.go new file mode 100644 index 000000000..d6a8c66c3 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/health_check.pb.uniquehash.go @@ -0,0 +1,917 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/health_check.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HealthCheck) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.HealthCheck")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Interval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Interval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetInitialJitter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InitialJitter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInitialJitter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("InitialJitter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetIntervalJitter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IntervalJitter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIntervalJitter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IntervalJitter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("IntervalJitterPercent")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetIntervalJitterPercent()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetUnhealthyThreshold()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UnhealthyThreshold")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUnhealthyThreshold(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UnhealthyThreshold")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHealthyThreshold()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HealthyThreshold")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHealthyThreshold(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HealthyThreshold")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAltPort()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AltPort")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAltPort(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AltPort")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetReuseConnection()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ReuseConnection")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetReuseConnection(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ReuseConnection")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetNoTrafficInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("NoTrafficInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetNoTrafficInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("NoTrafficInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetUnhealthyInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UnhealthyInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUnhealthyInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UnhealthyInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetUnhealthyEdgeInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UnhealthyEdgeInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUnhealthyEdgeInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UnhealthyEdgeInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHealthyEdgeInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HealthyEdgeInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHealthyEdgeInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HealthyEdgeInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("EventLogPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetEventLogPath())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetEventService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EventService")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEventService(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EventService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("AlwaysLogHealthCheckFailures")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAlwaysLogHealthCheckFailures()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTlsOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TlsOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTlsOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TlsOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTransportSocketMatchCriteria()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TransportSocketMatchCriteria")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTransportSocketMatchCriteria(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TransportSocketMatchCriteria")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.HealthChecker.(type) { + + case *HealthCheck_HttpHealthCheck_: + + if h, ok := interface{}(m.GetHttpHealthCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpHealthCheck")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpHealthCheck(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpHealthCheck")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *HealthCheck_TcpHealthCheck_: + + if h, ok := interface{}(m.GetTcpHealthCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpHealthCheck")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTcpHealthCheck(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TcpHealthCheck")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *HealthCheck_GrpcHealthCheck_: + + if h, ok := interface{}(m.GetGrpcHealthCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcHealthCheck")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcHealthCheck(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcHealthCheck")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *HealthCheck_CustomHealthCheck_: + + if h, ok := interface{}(m.GetCustomHealthCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomHealthCheck")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCustomHealthCheck(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CustomHealthCheck")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HealthCheck_Payload) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.HealthCheck_Payload")); err != nil { + return 0, err + } + + switch m.Payload.(type) { + + case *HealthCheck_Payload_Text: + + if _, err = hasher.Write([]byte("Text")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetText())); err != nil { + return 0, err + } + + case *HealthCheck_Payload_Binary: + + if _, err = hasher.Write([]byte("Binary")); err != nil { + return 0, err + } + if _, err = hasher.Write(m.GetBinary()); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HealthCheck_HttpHealthCheck) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.HealthCheck_HttpHealthCheck")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Host")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHost())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPath())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSend()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Send")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSend(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Send")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetReceive()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Receive")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetReceive(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Receive")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RequestHeadersToAdd")); err != nil { + return 0, err + } + for i, v := range m.GetRequestHeadersToAdd() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("RequestHeadersToRemove")); err != nil { + return 0, err + } + for i, v := range m.GetRequestHeadersToRemove() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("ExpectedStatuses")); err != nil { + return 0, err + } + for i, v := range m.GetExpectedStatuses() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("CodecClientType")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetCodecClientType()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetServiceNameMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServiceNameMatcher")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetServiceNameMatcher(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ServiceNameMatcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetResponseAssertions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseAssertions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseAssertions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseAssertions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HealthCheck_TcpHealthCheck) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.HealthCheck_TcpHealthCheck")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSend()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Send")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSend(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Send")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Receive")); err != nil { + return 0, err + } + for i, v := range m.GetReceive() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HealthCheck_RedisHealthCheck) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.HealthCheck_RedisHealthCheck")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HealthCheck_GrpcHealthCheck) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.HealthCheck_GrpcHealthCheck")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ServiceName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetServiceName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Authority")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAuthority())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HealthCheck_CustomHealthCheck) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.HealthCheck_CustomHealthCheck")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + switch m.ConfigType.(type) { + + case *HealthCheck_CustomHealthCheck_TypedConfig: + + if h, ok := interface{}(m.GetTypedConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HealthCheck_TlsOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.HealthCheck_TlsOptions")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AlpnProtocols")); err != nil { + return 0, err + } + for i, v := range m.GetAlpnProtocols() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/http_uri.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/http_uri.pb.clone.go new file mode 100644 index 000000000..074dbdc01 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/http_uri.pb.clone.go @@ -0,0 +1,57 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/http_uri.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *HttpUri) Clone() proto.Message { + var target *HttpUri + if m == nil { + return target + } + target = &HttpUri{} + + target.Uri = m.GetUri() + + if h, ok := interface{}(m.GetTimeout()).(clone.Cloner); ok { + target.Timeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.Timeout = proto.Clone(m.GetTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + switch m.HttpUpstreamType.(type) { + + case *HttpUri_Cluster: + + target.HttpUpstreamType = &HttpUri_Cluster{ + Cluster: m.GetCluster(), + } + + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/http_uri.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/http_uri.pb.equal.go index 530396776..1f755dd50 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/http_uri.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/http_uri.pb.equal.go @@ -63,11 +63,19 @@ func (m *HttpUri) Equal(that interface{}) bool { switch m.HttpUpstreamType.(type) { case *HttpUri_Cluster: + if _, ok := target.HttpUpstreamType.(*HttpUri_Cluster); !ok { + return false + } if strings.Compare(m.GetCluster(), target.GetCluster()) != 0 { return false } + default: + // m is nil but target is not nil + if m.HttpUpstreamType != target.HttpUpstreamType { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/http_uri.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/http_uri.pb.go index 8e1b9e1e5..89f01cd59 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/http_uri.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/http_uri.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/http_uri.proto @@ -9,14 +9,14 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - duration "github.com/golang/protobuf/ptypes/duration" _ "github.com/solo-io/protoc-gen-ext/extproto" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" ) const ( @@ -26,44 +26,36 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Envoy external URI descriptor type HttpUri struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The HTTP server URI. It should be a full FQDN with protocol, host and path. // // Example: // // .. code-block:: yaml // - // uri: https://www.googleapis.com/oauth2/v1/certs - // + // uri: https://www.googleapis.com/oauth2/v1/certs Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"` // Specify how `uri` is to be fetched. Today, this requires an explicit // cluster, but in the future we may support dynamic cluster creation or - // inline DNS resolution. See `issue - // `_. + // inline DNS resolution. See [issue](https://github.com/envoyproxy/envoy/issues/1606). + // + // Types that are valid to be assigned to HttpUpstreamType: // - // Types that are assignable to HttpUpstreamType: // *HttpUri_Cluster HttpUpstreamType isHttpUri_HttpUpstreamType `protobuf_oneof:"http_upstream_type"` // Sets the maximum duration in milliseconds that a response can take to arrive upon request. - Timeout *duration.Duration `protobuf:"bytes,3,opt,name=timeout,proto3" json:"timeout,omitempty"` + Timeout *durationpb.Duration `protobuf:"bytes,3,opt,name=timeout,proto3" json:"timeout,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HttpUri) Reset() { *x = HttpUri{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HttpUri) String() string { @@ -74,7 +66,7 @@ func (*HttpUri) ProtoMessage() {} func (x *HttpUri) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -96,21 +88,23 @@ func (x *HttpUri) GetUri() string { return "" } -func (m *HttpUri) GetHttpUpstreamType() isHttpUri_HttpUpstreamType { - if m != nil { - return m.HttpUpstreamType +func (x *HttpUri) GetHttpUpstreamType() isHttpUri_HttpUpstreamType { + if x != nil { + return x.HttpUpstreamType } return nil } func (x *HttpUri) GetCluster() string { - if x, ok := x.GetHttpUpstreamType().(*HttpUri_Cluster); ok { - return x.Cluster + if x != nil { + if x, ok := x.HttpUpstreamType.(*HttpUri_Cluster); ok { + return x.Cluster + } } return "" } -func (x *HttpUri) GetTimeout() *duration.Duration { +func (x *HttpUri) GetTimeout() *durationpb.Duration { if x != nil { return x.Timeout } @@ -129,8 +123,7 @@ type HttpUri_Cluster struct { // // .. code-block:: yaml // - // cluster: jwks_cluster - // + // cluster: jwks_cluster Cluster string `protobuf:"bytes,2,opt,name=cluster,proto3,oneof"` } @@ -138,7 +131,7 @@ func (*HttpUri_Cluster) isHttpUri_HttpUpstreamType() {} var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_rawDesc = string([]byte{ 0x0a, 0x57, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -168,36 +161,36 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x55, 0x72, 0x69, 0x42, 0x19, 0x0a, 0x12, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x42, 0x9d, 0x01, 0x0a, 0x2a, 0x69, - 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x42, 0x0c, 0x48, 0x74, 0x74, 0x70, 0x55, - 0x72, 0x69, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, - 0x10, 0x02, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x42, 0xa1, 0x01, 0xb8, 0xf5, 0x04, + 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, + 0x02, 0x0a, 0x2a, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x42, 0x0c, 0x48, + 0x74, 0x74, 0x70, 0x55, 0x72, 0x69, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_goTypes = []interface{}{ - (*HttpUri)(nil), // 0: solo.io.envoy.config.core.v3.HttpUri - (*duration.Duration)(nil), // 1: google.protobuf.Duration +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_goTypes = []any{ + (*HttpUri)(nil), // 0: solo.io.envoy.config.core.v3.HttpUri + (*durationpb.Duration)(nil), // 1: google.protobuf.Duration } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_depIdxs = []int32{ 1, // 0: solo.io.envoy.config.core.v3.HttpUri.timeout:type_name -> google.protobuf.Duration @@ -215,28 +208,14 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HttpUri); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_msgTypes[0].OneofWrappers = []any{ (*HttpUri_Cluster)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, @@ -247,7 +226,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_http_uri_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/http_uri.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/http_uri.pb.hash.go index 8364db64a..6f728c98d 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/http_uri.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/http_uri.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HttpUri) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -43,14 +47,20 @@ func (m *HttpUri) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/http_uri.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/http_uri.pb.uniquehash.go new file mode 100644 index 000000000..2ea7cab0f --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/http_uri.pb.uniquehash.go @@ -0,0 +1,87 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/http_uri.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HttpUri) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.HttpUri")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Uri")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUri())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.HttpUpstreamType.(type) { + + case *HttpUri_Cluster: + + if _, err = hasher.Write([]byte("Cluster")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCluster())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/proxy_protocol.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/proxy_protocol.pb.clone.go new file mode 100644 index 000000000..81c824dd3 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/proxy_protocol.pb.clone.go @@ -0,0 +1,67 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/proxy_protocol.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *ProxyProtocolPassThroughTLVs) Clone() proto.Message { + var target *ProxyProtocolPassThroughTLVs + if m == nil { + return target + } + target = &ProxyProtocolPassThroughTLVs{} + + target.MatchType = m.GetMatchType() + + if m.GetTlvType() != nil { + target.TlvType = make([]uint32, len(m.GetTlvType())) + for idx, v := range m.GetTlvType() { + + target.TlvType[idx] = v + + } + } + + return target +} + +// Clone function +func (m *ProxyProtocolConfig) Clone() proto.Message { + var target *ProxyProtocolConfig + if m == nil { + return target + } + target = &ProxyProtocolConfig{} + + target.Version = m.GetVersion() + + if h, ok := interface{}(m.GetPassThroughTlvs()).(clone.Cloner); ok { + target.PassThroughTlvs = h.Clone().(*ProxyProtocolPassThroughTLVs) + } else { + target.PassThroughTlvs = proto.Clone(m.GetPassThroughTlvs()).(*ProxyProtocolPassThroughTLVs) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/proxy_protocol.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/proxy_protocol.pb.equal.go index dc6e9eb11..ee27d20ba 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/proxy_protocol.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/proxy_protocol.pb.equal.go @@ -25,6 +25,45 @@ var ( _ = proto.Message(nil) ) +// Equal function +func (m *ProxyProtocolPassThroughTLVs) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ProxyProtocolPassThroughTLVs) + if !ok { + that2, ok := that.(ProxyProtocolPassThroughTLVs) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetMatchType() != target.GetMatchType() { + return false + } + + if len(m.GetTlvType()) != len(target.GetTlvType()) { + return false + } + for idx, v := range m.GetTlvType() { + + if v != target.GetTlvType()[idx] { + return false + } + + } + + return true +} + // Equal function func (m *ProxyProtocolConfig) Equal(that interface{}) bool { if that == nil { @@ -50,5 +89,15 @@ func (m *ProxyProtocolConfig) Equal(that interface{}) bool { return false } + if h, ok := interface{}(m.GetPassThroughTlvs()).(equality.Equalizer); ok { + if !h.Equal(target.GetPassThroughTlvs()) { + return false + } + } else { + if !proto.Equal(m.GetPassThroughTlvs(), target.GetPassThroughTlvs()) { + return false + } + } + return true } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/proxy_protocol.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/proxy_protocol.pb.go index 47a081df7..aa52ecbc8 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/proxy_protocol.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/proxy_protocol.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/proxy_protocol.proto @@ -9,9 +9,9 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -25,9 +25,53 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 +type ProxyProtocolPassThroughTLVs_PassTLVsMatchType int32 + +const ( + // Pass all TLVs. + ProxyProtocolPassThroughTLVs_INCLUDE_ALL ProxyProtocolPassThroughTLVs_PassTLVsMatchType = 0 + // Pass specific TLVs defined in tlv_type. + ProxyProtocolPassThroughTLVs_INCLUDE ProxyProtocolPassThroughTLVs_PassTLVsMatchType = 1 +) + +// Enum value maps for ProxyProtocolPassThroughTLVs_PassTLVsMatchType. +var ( + ProxyProtocolPassThroughTLVs_PassTLVsMatchType_name = map[int32]string{ + 0: "INCLUDE_ALL", + 1: "INCLUDE", + } + ProxyProtocolPassThroughTLVs_PassTLVsMatchType_value = map[string]int32{ + "INCLUDE_ALL": 0, + "INCLUDE": 1, + } +) + +func (x ProxyProtocolPassThroughTLVs_PassTLVsMatchType) Enum() *ProxyProtocolPassThroughTLVs_PassTLVsMatchType { + p := new(ProxyProtocolPassThroughTLVs_PassTLVsMatchType) + *p = x + return p +} + +func (x ProxyProtocolPassThroughTLVs_PassTLVsMatchType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ProxyProtocolPassThroughTLVs_PassTLVsMatchType) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_enumTypes[0].Descriptor() +} + +func (ProxyProtocolPassThroughTLVs_PassTLVsMatchType) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_enumTypes[0] +} + +func (x ProxyProtocolPassThroughTLVs_PassTLVsMatchType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ProxyProtocolPassThroughTLVs_PassTLVsMatchType.Descriptor instead. +func (ProxyProtocolPassThroughTLVs_PassTLVsMatchType) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDescGZIP(), []int{0, 0} +} type ProxyProtocolConfig_Version int32 @@ -61,11 +105,11 @@ func (x ProxyProtocolConfig_Version) String() string { } func (ProxyProtocolConfig_Version) Descriptor() protoreflect.EnumDescriptor { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_enumTypes[0].Descriptor() + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_enumTypes[1].Descriptor() } func (ProxyProtocolConfig_Version) Type() protoreflect.EnumType { - return &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_enumTypes[0] + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_enumTypes[1] } func (x ProxyProtocolConfig_Version) Number() protoreflect.EnumNumber { @@ -74,25 +118,81 @@ func (x ProxyProtocolConfig_Version) Number() protoreflect.EnumNumber { // Deprecated: Use ProxyProtocolConfig_Version.Descriptor instead. func (ProxyProtocolConfig_Version) EnumDescriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDescGZIP(), []int{0, 0} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDescGZIP(), []int{1, 0} } -type ProxyProtocolConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type ProxyProtocolPassThroughTLVs struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The strategy to pass through TLVs. Default is INCLUDE_ALL. + // If INCLUDE_ALL is set, all TLVs will be passed through no matter the tlv_type field. + MatchType ProxyProtocolPassThroughTLVs_PassTLVsMatchType `protobuf:"varint,1,opt,name=match_type,json=matchType,proto3,enum=solo.io.envoy.config.core.v3.ProxyProtocolPassThroughTLVs_PassTLVsMatchType" json:"match_type,omitempty"` + // The TLV types that are applied based on match_type. + // TLV type is defined as uint8_t in proxy protocol. See [the spec](https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt) for details. + TlvType []uint32 `protobuf:"varint,2,rep,packed,name=tlv_type,json=tlvType,proto3" json:"tlv_type,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ProxyProtocolPassThroughTLVs) Reset() { + *x = ProxyProtocolPassThroughTLVs{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ProxyProtocolPassThroughTLVs) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProxyProtocolPassThroughTLVs) ProtoMessage() {} + +func (x *ProxyProtocolPassThroughTLVs) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProxyProtocolPassThroughTLVs.ProtoReflect.Descriptor instead. +func (*ProxyProtocolPassThroughTLVs) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDescGZIP(), []int{0} +} + +func (x *ProxyProtocolPassThroughTLVs) GetMatchType() ProxyProtocolPassThroughTLVs_PassTLVsMatchType { + if x != nil { + return x.MatchType + } + return ProxyProtocolPassThroughTLVs_INCLUDE_ALL +} + +func (x *ProxyProtocolPassThroughTLVs) GetTlvType() []uint32 { + if x != nil { + return x.TlvType + } + return nil +} +type ProxyProtocolConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` // The PROXY protocol version to use. See https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt for details Version ProxyProtocolConfig_Version `protobuf:"varint,1,opt,name=version,proto3,enum=solo.io.envoy.config.core.v3.ProxyProtocolConfig_Version" json:"version,omitempty"` + // This config controls which TLVs can be passed to filter state if it is Proxy Protocol + // V2 header. If there is no setting for this field, no TLVs will be passed through. + PassThroughTlvs *ProxyProtocolPassThroughTLVs `protobuf:"bytes,2,opt,name=pass_through_tlvs,json=passThroughTlvs,proto3" json:"pass_through_tlvs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ProxyProtocolConfig) Reset() { *x = ProxyProtocolConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProxyProtocolConfig) String() string { @@ -102,8 +202,8 @@ func (x *ProxyProtocolConfig) String() string { func (*ProxyProtocolConfig) ProtoMessage() {} func (x *ProxyProtocolConfig) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_msgTypes[1] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -115,7 +215,7 @@ func (x *ProxyProtocolConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ProxyProtocolConfig.ProtoReflect.Descriptor instead. func (*ProxyProtocolConfig) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDescGZIP(), []int{0} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDescGZIP(), []int{1} } func (x *ProxyProtocolConfig) GetVersion() ProxyProtocolConfig_Version { @@ -125,9 +225,16 @@ func (x *ProxyProtocolConfig) GetVersion() ProxyProtocolConfig_Version { return ProxyProtocolConfig_V1 } +func (x *ProxyProtocolConfig) GetPassThroughTlvs() *ProxyProtocolPassThroughTLVs { + if x != nil { + return x.PassThroughTlvs + } + return nil +} + var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDesc = string([]byte{ 0x0a, 0x5d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -140,53 +247,79 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, - 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x85, 0x01, 0x0a, 0x13, 0x50, 0x72, - 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x53, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, - 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, - 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x19, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x06, 0x0a, 0x02, 0x56, 0x31, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x56, 0x32, 0x10, - 0x01, 0x42, 0xa3, 0x01, 0x0a, 0x2a, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, - 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, - 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, - 0x42, 0x12, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, - 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0xb8, - 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe8, 0x01, 0x0a, 0x1c, 0x50, 0x72, + 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x50, 0x61, 0x73, 0x73, 0x54, + 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x54, 0x4c, 0x56, 0x73, 0x12, 0x6b, 0x0a, 0x0a, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4c, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, + 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x50, 0x61, 0x73, 0x73, 0x54, + 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x54, 0x4c, 0x56, 0x73, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x54, + 0x4c, 0x56, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x08, 0x74, 0x6c, 0x76, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x92, 0x01, + 0x07, 0x22, 0x05, 0x2a, 0x03, 0x10, 0x80, 0x02, 0x52, 0x07, 0x74, 0x6c, 0x76, 0x54, 0x79, 0x70, + 0x65, 0x22, 0x31, 0x0a, 0x11, 0x50, 0x61, 0x73, 0x73, 0x54, 0x4c, 0x56, 0x73, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x43, 0x4c, 0x55, 0x44, + 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x43, 0x4c, 0x55, + 0x44, 0x45, 0x10, 0x01, 0x22, 0xed, 0x01, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x53, 0x0a, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, + 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x66, 0x0a, 0x11, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, + 0x68, 0x5f, 0x74, 0x6c, 0x76, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x78, + 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x50, 0x61, 0x73, 0x73, 0x54, 0x68, 0x72, + 0x6f, 0x75, 0x67, 0x68, 0x54, 0x4c, 0x56, 0x73, 0x52, 0x0f, 0x70, 0x61, 0x73, 0x73, 0x54, 0x68, + 0x72, 0x6f, 0x75, 0x67, 0x68, 0x54, 0x6c, 0x76, 0x73, 0x22, 0x19, 0x0a, 0x07, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x06, 0x0a, 0x02, 0x56, 0x31, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, + 0x56, 0x32, 0x10, 0x01, 0x42, 0xa7, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, + 0xf5, 0x04, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x2a, 0x69, 0x6f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x42, 0x12, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_goTypes = []interface{}{ - (ProxyProtocolConfig_Version)(0), // 0: solo.io.envoy.config.core.v3.ProxyProtocolConfig.Version - (*ProxyProtocolConfig)(nil), // 1: solo.io.envoy.config.core.v3.ProxyProtocolConfig +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_goTypes = []any{ + (ProxyProtocolPassThroughTLVs_PassTLVsMatchType)(0), // 0: solo.io.envoy.config.core.v3.ProxyProtocolPassThroughTLVs.PassTLVsMatchType + (ProxyProtocolConfig_Version)(0), // 1: solo.io.envoy.config.core.v3.ProxyProtocolConfig.Version + (*ProxyProtocolPassThroughTLVs)(nil), // 2: solo.io.envoy.config.core.v3.ProxyProtocolPassThroughTLVs + (*ProxyProtocolConfig)(nil), // 3: solo.io.envoy.config.core.v3.ProxyProtocolConfig } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_depIdxs = []int32{ - 0, // 0: solo.io.envoy.config.core.v3.ProxyProtocolConfig.version:type_name -> solo.io.envoy.config.core.v3.ProxyProtocolConfig.Version - 1, // [1:1] is the sub-list for method output_type - 1, // [1:1] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name + 0, // 0: solo.io.envoy.config.core.v3.ProxyProtocolPassThroughTLVs.match_type:type_name -> solo.io.envoy.config.core.v3.ProxyProtocolPassThroughTLVs.PassTLVsMatchType + 1, // 1: solo.io.envoy.config.core.v3.ProxyProtocolConfig.version:type_name -> solo.io.envoy.config.core.v3.ProxyProtocolConfig.Version + 2, // 2: solo.io.envoy.config.core.v3.ProxyProtocolConfig.pass_through_tlvs:type_name -> solo.io.envoy.config.core.v3.ProxyProtocolPassThroughTLVs + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name } func init() { @@ -196,27 +329,13 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProxyProtocolConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDesc, - NumEnums: 1, - NumMessages: 1, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDesc)), + NumEnums: 2, + NumMessages: 2, NumExtensions: 0, NumServices: 0, }, @@ -226,7 +345,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_proxy_protocol_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/proxy_protocol.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/proxy_protocol.pb.hash.go index 4c42a8cdd..77b141839 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/proxy_protocol.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/proxy_protocol.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,40 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ProxyProtocolPassThroughTLVs) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.ProxyProtocolPassThroughTLVs")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetMatchType()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetTlvType()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ProxyProtocolConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -43,5 +77,25 @@ func (m *ProxyProtocolConfig) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + if h, ok := interface{}(m.GetPassThroughTlvs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PassThroughTlvs")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPassThroughTlvs(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PassThroughTlvs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + return hasher.Sum64(), nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/proxy_protocol.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/proxy_protocol.pb.uniquehash.go new file mode 100644 index 000000000..cdda1d578 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/proxy_protocol.pb.uniquehash.go @@ -0,0 +1,110 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/proxy_protocol.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ProxyProtocolPassThroughTLVs) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.ProxyProtocolPassThroughTLVs")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MatchType")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMatchType()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TlvType")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetTlvType()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ProxyProtocolConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.ProxyProtocolConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Version")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetVersion()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPassThroughTlvs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PassThroughTlvs")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPassThroughTlvs(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PassThroughTlvs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/socket_option.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/socket_option.pb.clone.go new file mode 100644 index 000000000..259bbe371 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/socket_option.pb.clone.go @@ -0,0 +1,69 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/socket_option.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *SocketOption) Clone() proto.Message { + var target *SocketOption + if m == nil { + return target + } + target = &SocketOption{} + + target.Description = m.GetDescription() + + target.Level = m.GetLevel() + + target.Name = m.GetName() + + target.State = m.GetState() + + switch m.Value.(type) { + + case *SocketOption_IntValue: + + target.Value = &SocketOption_IntValue{ + IntValue: m.GetIntValue(), + } + + case *SocketOption_BufValue: + + if m.GetBufValue() != nil { + newArr := make([]byte, len(m.GetBufValue())) + copy(newArr, m.GetBufValue()) + target.Value = &SocketOption_BufValue{ + BufValue: newArr, + } + } else { + target.Value = &SocketOption_BufValue{ + BufValue: nil, + } + } + + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/socket_option.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/socket_option.pb.equal.go index d8a284f4d..26cc2a1f1 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/socket_option.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/socket_option.pb.equal.go @@ -65,17 +65,28 @@ func (m *SocketOption) Equal(that interface{}) bool { switch m.Value.(type) { case *SocketOption_IntValue: + if _, ok := target.Value.(*SocketOption_IntValue); !ok { + return false + } if m.GetIntValue() != target.GetIntValue() { return false } case *SocketOption_BufValue: + if _, ok := target.Value.(*SocketOption_BufValue); !ok { + return false + } if bytes.Compare(m.GetBufValue(), target.GetBufValue()) != 0 { return false } + default: + // m is nil but target is not nil + if m.Value != target.Value { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/socket_option.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/socket_option.pb.go index 989eddedd..4f7b8611d 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/socket_option.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/socket_option.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/socket_option.proto @@ -9,9 +9,9 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -25,10 +25,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type SocketOption_SocketState int32 const ( @@ -85,10 +81,7 @@ func (SocketOption_SocketState) EnumDescriptor() ([]byte, []int) { // might not exist in upstream kernels or precompiled Envoy binaries. // [#next-free-field: 7] type SocketOption struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // An optional name to give this socket option for debugging, etc. // Uniqueness is not required and no special meaning is assumed. Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` @@ -96,22 +89,23 @@ type SocketOption struct { Level int64 `protobuf:"varint,2,opt,name=level,proto3" json:"level,omitempty"` // The numeric name as passed to setsockopt Name int64 `protobuf:"varint,3,opt,name=name,proto3" json:"name,omitempty"` - // Types that are assignable to Value: + // Types that are valid to be assigned to Value: + // // *SocketOption_IntValue // *SocketOption_BufValue Value isSocketOption_Value `protobuf_oneof:"value"` // The state in which the option will be applied. When used in BindConfig // STATE_PREBIND is currently the only valid value. - State SocketOption_SocketState `protobuf:"varint,6,opt,name=state,proto3,enum=solo.io.envoy.config.core.v3.SocketOption_SocketState" json:"state,omitempty"` + State SocketOption_SocketState `protobuf:"varint,6,opt,name=state,proto3,enum=solo.io.envoy.config.core.v3.SocketOption_SocketState" json:"state,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SocketOption) Reset() { *x = SocketOption{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SocketOption) String() string { @@ -122,7 +116,7 @@ func (*SocketOption) ProtoMessage() {} func (x *SocketOption) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -158,23 +152,27 @@ func (x *SocketOption) GetName() int64 { return 0 } -func (m *SocketOption) GetValue() isSocketOption_Value { - if m != nil { - return m.Value +func (x *SocketOption) GetValue() isSocketOption_Value { + if x != nil { + return x.Value } return nil } func (x *SocketOption) GetIntValue() int64 { - if x, ok := x.GetValue().(*SocketOption_IntValue); ok { - return x.IntValue + if x != nil { + if x, ok := x.Value.(*SocketOption_IntValue); ok { + return x.IntValue + } } return 0 } func (x *SocketOption) GetBufValue() []byte { - if x, ok := x.GetValue().(*SocketOption_BufValue); ok { - return x.BufValue + if x != nil { + if x, ok := x.Value.(*SocketOption_BufValue); ok { + return x.BufValue + } } return nil } @@ -206,7 +204,7 @@ func (*SocketOption_BufValue) isSocketOption_Value() {} var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_rawDesc = string([]byte{ 0x0a, 0x5c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -245,35 +243,35 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x03, 0xf8, 0x42, 0x01, 0x42, 0xa2, 0x01, 0x0a, 0x2a, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, - 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x76, 0x33, 0x42, 0x11, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, - 0x10, 0x02, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} + 0x12, 0x03, 0xf8, 0x42, 0x01, 0x42, 0xa6, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, + 0xd0, 0xf5, 0x04, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x2a, 0x69, 0x6f, + 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x42, 0x11, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_goTypes = []any{ (SocketOption_SocketState)(0), // 0: solo.io.envoy.config.core.v3.SocketOption.SocketState (*SocketOption)(nil), // 1: solo.io.envoy.config.core.v3.SocketOption } @@ -293,21 +291,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SocketOption); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_msgTypes[0].OneofWrappers = []any{ (*SocketOption_IntValue)(nil), (*SocketOption_BufValue)(nil), } @@ -315,7 +299,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_rawDesc)), NumEnums: 1, NumMessages: 1, NumExtensions: 0, @@ -327,7 +311,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_ MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_core_v3_socket_option_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/socket_option.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/socket_option.pb.hash.go index d8b5a5040..f89168c68 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/socket_option.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/socket_option.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *SocketOption) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/socket_option.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/socket_option.pb.uniquehash.go new file mode 100644 index 000000000..030b1ca35 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/socket_option.pb.uniquehash.go @@ -0,0 +1,101 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/core/v3/socket_option.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SocketOption) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.core.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3.SocketOption")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Description")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDescription())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Level")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetLevel()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetName()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("State")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + switch m.Value.(type) { + + case *SocketOption_IntValue: + + if _, err = hasher.Write([]byte("IntValue")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetIntValue()) + if err != nil { + return 0, err + } + + case *SocketOption_BufValue: + + if _, err = hasher.Write([]byte("BufValue")); err != nil { + return 0, err + } + if _, err = hasher.Write(m.GetBufValue()); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/filter/http/gzip/v2/gzip.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/config/filter/http/gzip/v2/gzip.pb.clone.go new file mode 100644 index 000000000..2343b4e27 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/filter/http/gzip/v2/gzip.pb.clone.go @@ -0,0 +1,85 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/filter/http/gzip/v2/gzip.proto + +package v2 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *Gzip) Clone() proto.Message { + var target *Gzip + if m == nil { + return target + } + target = &Gzip{} + + if h, ok := interface{}(m.GetMemoryLevel()).(clone.Cloner); ok { + target.MemoryLevel = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MemoryLevel = proto.Clone(m.GetMemoryLevel()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetContentLength()).(clone.Cloner); ok { + target.ContentLength = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.ContentLength = proto.Clone(m.GetContentLength()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + target.CompressionLevel = m.GetCompressionLevel() + + target.CompressionStrategy = m.GetCompressionStrategy() + + if m.GetContentType() != nil { + target.ContentType = make([]string, len(m.GetContentType())) + for idx, v := range m.GetContentType() { + + target.ContentType[idx] = v + + } + } + + target.DisableOnEtagHeader = m.GetDisableOnEtagHeader() + + target.RemoveAcceptEncodingHeader = m.GetRemoveAcceptEncodingHeader() + + if h, ok := interface{}(m.GetWindowBits()).(clone.Cloner); ok { + target.WindowBits = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.WindowBits = proto.Clone(m.GetWindowBits()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + return target +} + +// Clone function +func (m *Gzip_CompressionLevel) Clone() proto.Message { + var target *Gzip_CompressionLevel + if m == nil { + return target + } + target = &Gzip_CompressionLevel{} + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/filter/http/gzip/v2/gzip.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/filter/http/gzip/v2/gzip.pb.go index de1f97cc5..fd386e7df 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/filter/http/gzip/v2/gzip.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/filter/http/gzip/v2/gzip.pb.go @@ -2,7 +2,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/filter/http/gzip/v2/gzip.proto @@ -11,13 +11,13 @@ package v2 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -27,10 +27,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Gzip_CompressionStrategy int32 const ( @@ -134,15 +130,12 @@ func (Gzip_CompressionLevel_Enum) EnumDescriptor() ([]byte, []int) { // [#next-free-field: 10] type Gzip struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Value from 1 to 9 that controls the amount of internal memory used by zlib. Higher values // use more memory, but are faster and produce better compression results. The default value is 5. - MemoryLevel *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=memory_level,json=memoryLevel,proto3" json:"memory_level,omitempty"` + MemoryLevel *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=memory_level,json=memoryLevel,proto3" json:"memory_level,omitempty"` // Minimum response length, in bytes, which will trigger compression. The default value is 30. - ContentLength *wrappers.UInt32Value `protobuf:"bytes,2,opt,name=content_length,json=contentLength,proto3" json:"content_length,omitempty"` + ContentLength *wrapperspb.UInt32Value `protobuf:"bytes,2,opt,name=content_length,json=contentLength,proto3" json:"content_length,omitempty"` // A value used for selecting the zlib compression level. This setting will affect speed and // amount of compression applied to the content. "BEST" provides higher compression at the cost of // higher latency, "SPEED" provides lower compression with minimum impact on response time. @@ -171,16 +164,16 @@ type Gzip struct { // Larger window results in better compression at the expense of memory usage. The default is 12 // which will produce a 4096 bytes window. For more details about this parameter, please refer to // zlib manual > deflateInit2. - WindowBits *wrappers.UInt32Value `protobuf:"bytes,9,opt,name=window_bits,json=windowBits,proto3" json:"window_bits,omitempty"` + WindowBits *wrapperspb.UInt32Value `protobuf:"bytes,9,opt,name=window_bits,json=windowBits,proto3" json:"window_bits,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Gzip) Reset() { *x = Gzip{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Gzip) String() string { @@ -191,7 +184,7 @@ func (*Gzip) ProtoMessage() {} func (x *Gzip) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -206,14 +199,14 @@ func (*Gzip) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_rawDescGZIP(), []int{0} } -func (x *Gzip) GetMemoryLevel() *wrappers.UInt32Value { +func (x *Gzip) GetMemoryLevel() *wrapperspb.UInt32Value { if x != nil { return x.MemoryLevel } return nil } -func (x *Gzip) GetContentLength() *wrappers.UInt32Value { +func (x *Gzip) GetContentLength() *wrapperspb.UInt32Value { if x != nil { return x.ContentLength } @@ -255,7 +248,7 @@ func (x *Gzip) GetRemoveAcceptEncodingHeader() bool { return false } -func (x *Gzip) GetWindowBits() *wrappers.UInt32Value { +func (x *Gzip) GetWindowBits() *wrapperspb.UInt32Value { if x != nil { return x.WindowBits } @@ -263,18 +256,16 @@ func (x *Gzip) GetWindowBits() *wrappers.UInt32Value { } type Gzip_CompressionLevel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Gzip_CompressionLevel) Reset() { *x = Gzip_CompressionLevel{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Gzip_CompressionLevel) String() string { @@ -285,7 +276,7 @@ func (*Gzip_CompressionLevel) ProtoMessage() {} func (x *Gzip_CompressionLevel) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -302,7 +293,7 @@ func (*Gzip_CompressionLevel) Descriptor() ([]byte, []int) { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_rawDesc = string([]byte{ 0x0a, 0x5f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -365,36 +356,37 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x55, 0x46, 0x46, - 0x4d, 0x41, 0x4e, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x52, 0x4c, 0x45, 0x10, 0x03, 0x42, 0x65, - 0x5a, 0x5b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, - 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, - 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x67, 0x7a, 0x69, 0x70, 0x2f, 0x76, 0x32, 0xc0, 0xf5, 0x04, - 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x4d, 0x41, 0x4e, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x52, 0x4c, 0x45, 0x10, 0x03, 0x42, 0x69, + 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x5b, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, + 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2f, 0x68, 0x74, 0x74, + 0x70, 0x2f, 0x67, 0x7a, 0x69, 0x70, 0x2f, 0x76, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_goTypes = []any{ (Gzip_CompressionStrategy)(0), // 0: solo.io.envoy.config.filter.http.gzip.v2.Gzip.CompressionStrategy (Gzip_CompressionLevel_Enum)(0), // 1: solo.io.envoy.config.filter.http.gzip.v2.Gzip.CompressionLevel.Enum (*Gzip)(nil), // 2: solo.io.envoy.config.filter.http.gzip.v2.Gzip (*Gzip_CompressionLevel)(nil), // 3: solo.io.envoy.config.filter.http.gzip.v2.Gzip.CompressionLevel - (*wrappers.UInt32Value)(nil), // 4: google.protobuf.UInt32Value + (*wrapperspb.UInt32Value)(nil), // 4: google.protobuf.UInt32Value } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_depIdxs = []int32{ 4, // 0: solo.io.envoy.config.filter.http.gzip.v2.Gzip.memory_level:type_name -> google.protobuf.UInt32Value @@ -416,37 +408,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filte if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Gzip); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Gzip_CompressionLevel); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_rawDesc)), NumEnums: 2, NumMessages: 2, NumExtensions: 0, @@ -458,7 +424,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filte MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_http_gzip_v2_gzip_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/filter/http/gzip/v2/gzip.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/config/filter/http/gzip/v2/gzip.pb.hash.go index 6a2768c66..d023895c4 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/filter/http/gzip/v2/gzip.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/filter/http/gzip/v2/gzip.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Gzip) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,28 +43,40 @@ func (m *Gzip) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetMemoryLevel()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MemoryLevel")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMemoryLevel(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMemoryLevel(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MemoryLevel")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetContentLength()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ContentLength")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetContentLength(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetContentLength(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ContentLength")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -95,14 +111,20 @@ func (m *Gzip) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetWindowBits()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("WindowBits")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetWindowBits(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetWindowBits(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("WindowBits")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -112,6 +134,10 @@ func (m *Gzip) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Gzip_CompressionLevel) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/external/envoy/config/filter/http/gzip/v2/gzip.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/config/filter/http/gzip/v2/gzip.pb.uniquehash.go new file mode 100644 index 000000000..e0993cc1d --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/filter/http/gzip/v2/gzip.pb.uniquehash.go @@ -0,0 +1,175 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/filter/http/gzip/v2/gzip.proto + +package v2 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Gzip) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.filter.http.gzip.v2.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/filter/http/gzip/v2.Gzip")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMemoryLevel()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MemoryLevel")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMemoryLevel(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MemoryLevel")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetContentLength()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ContentLength")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetContentLength(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ContentLength")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("CompressionLevel")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetCompressionLevel()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CompressionStrategy")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetCompressionStrategy()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ContentType")); err != nil { + return 0, err + } + for i, v := range m.GetContentType() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("DisableOnEtagHeader")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDisableOnEtagHeader()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RemoveAcceptEncodingHeader")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRemoveAcceptEncodingHeader()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetWindowBits()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("WindowBits")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWindowBits(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("WindowBits")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Gzip_CompressionLevel) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.filter.http.gzip.v2.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/filter/http/gzip/v2.Gzip_CompressionLevel")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.pb.clone.go new file mode 100644 index 000000000..23d0b333b --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.pb.clone.go @@ -0,0 +1,37 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *TlsCipherInspector) Clone() proto.Message { + var target *TlsCipherInspector + if m == nil { + return target + } + target = &TlsCipherInspector{} + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.pb.equal.go new file mode 100644 index 000000000..76212354c --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.pb.equal.go @@ -0,0 +1,50 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *TlsCipherInspector) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*TlsCipherInspector) + if !ok { + that2, ok := that.(TlsCipherInspector) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.pb.go new file mode 100644 index 000000000..fdfcb3cf9 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.pb.go @@ -0,0 +1,148 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.proto + +package v3 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type TlsCipherInspector struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TlsCipherInspector) Reset() { + *x = TlsCipherInspector{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TlsCipherInspector) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TlsCipherInspector) ProtoMessage() {} + +func (x *TlsCipherInspector) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TlsCipherInspector.ProtoReflect.Descriptor instead. +func (*TlsCipherInspector) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_rawDescGZIP(), []int{0} +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_rawDesc = string([]byte{ + 0x0a, 0x83, 0x01, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x65, 0x72, 0x2f, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x69, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2f, 0x76, 0x33, 0x2f, 0x74, 0x6c, 0x73, 0x5f, + 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x34, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x6c, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x65, 0x72, 0x2e, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, + 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x76, 0x33, 0x1a, 0x1d, 0x75, 0x64, + 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0x14, 0x0a, 0x12, 0x54, 0x6c, 0x73, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0xe4, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, + 0xd0, 0xf5, 0x04, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x42, 0x69, 0x6f, + 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, + 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x2e, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x69, 0x70, + 0x68, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x76, 0x33, + 0x42, 0x17, 0x54, 0x6c, 0x73, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x6f, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2f, 0x6c, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x65, 0x72, 0x2f, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, + 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_goTypes = []any{ + (*TlsCipherInspector)(nil), // 0: envoy.config.filter.listener.tls_cipher_inspector.v3.TlsCipherInspector +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_filter_listener_tls_cipher_inspector_v3_tls_cipher_inspector_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.pb.hash.go new file mode 100644 index 000000000..6be97ed6e --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.pb.hash.go @@ -0,0 +1,46 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *TlsCipherInspector) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.config.filter.listener.tls_cipher_inspector.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/filter/listener/tls_cipher_inspector/v3.TlsCipherInspector")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.pb.uniquehash.go new file mode 100644 index 000000000..d6cd88e49 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.pb.uniquehash.go @@ -0,0 +1,47 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/filter/listener/tls_cipher_inspector/v3/tls_cipher_inspector.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TlsCipherInspector) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.config.filter.listener.tls_cipher_inspector.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/filter/listener/tls_cipher_inspector/v3.TlsCipherInspector")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.pb.clone.go new file mode 100644 index 000000000..a56d1bb5c --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.pb.clone.go @@ -0,0 +1,78 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_cncf_xds_go_xds_type_matcher_v3 "github.com/cncf/xds/go/xds/type/matcher/v3" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *ServerNameMatcher) Clone() proto.Message { + var target *ServerNameMatcher + if m == nil { + return target + } + target = &ServerNameMatcher{} + + if m.GetServerNameMatchers() != nil { + target.ServerNameMatchers = make([]*ServerNameMatcher_ServerNameSetMatcher, len(m.GetServerNameMatchers())) + for idx, v := range m.GetServerNameMatchers() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ServerNameMatchers[idx] = h.Clone().(*ServerNameMatcher_ServerNameSetMatcher) + } else { + target.ServerNameMatchers[idx] = proto.Clone(v).(*ServerNameMatcher_ServerNameSetMatcher) + } + + } + } + + return target +} + +// Clone function +func (m *ServerNameMatcher_ServerNameSetMatcher) Clone() proto.Message { + var target *ServerNameMatcher_ServerNameSetMatcher + if m == nil { + return target + } + target = &ServerNameMatcher_ServerNameSetMatcher{} + + if m.GetServerNames() != nil { + target.ServerNames = make([]string, len(m.GetServerNames())) + for idx, v := range m.GetServerNames() { + + target.ServerNames[idx] = v + + } + } + + if h, ok := interface{}(m.GetOnMatch()).(clone.Cloner); ok { + target.OnMatch = h.Clone().(*github_com_cncf_xds_go_xds_type_matcher_v3.Matcher_OnMatch) + } else { + target.OnMatch = proto.Clone(m.GetOnMatch()).(*github_com_cncf_xds_go_xds_type_matcher_v3.Matcher_OnMatch) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.pb.equal.go new file mode 100644 index 000000000..0d95f57eb --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.pb.equal.go @@ -0,0 +1,112 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *ServerNameMatcher) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ServerNameMatcher) + if !ok { + that2, ok := that.(ServerNameMatcher) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetServerNameMatchers()) != len(target.GetServerNameMatchers()) { + return false + } + for idx, v := range m.GetServerNameMatchers() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetServerNameMatchers()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetServerNameMatchers()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *ServerNameMatcher_ServerNameSetMatcher) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ServerNameMatcher_ServerNameSetMatcher) + if !ok { + that2, ok := that.(ServerNameMatcher_ServerNameSetMatcher) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetServerNames()) != len(target.GetServerNames()) { + return false + } + for idx, v := range m.GetServerNames() { + + if strings.Compare(v, target.GetServerNames()[idx]) != 0 { + return false + } + + } + + if h, ok := interface{}(m.GetOnMatch()).(equality.Equalizer); ok { + if !h.Equal(target.GetOnMatch()) { + return false + } + } else { + if !proto.Equal(m.GetOnMatch(), target.GetOnMatch()) { + return false + } + } + + return true +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.pb.go new file mode 100644 index 000000000..6d0599460 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.pb.go @@ -0,0 +1,237 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.proto + +package v3 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + v3 "github.com/cncf/xds/go/xds/type/matcher/v3" + _ "github.com/envoyproxy/protoc-gen-validate/validate" + _ "github.com/solo-io/protoc-gen-ext/extproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Matches a specific server name provided in the client request against a set server names configured for the matcher to handle, with possible prefix wildcard. +type ServerNameMatcher struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Match server names. Order doesn't matter, the most specific server name is matched. + ServerNameMatchers []*ServerNameMatcher_ServerNameSetMatcher `protobuf:"bytes,1,rep,name=server_name_matchers,json=serverNameMatchers,proto3" json:"server_name_matchers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ServerNameMatcher) Reset() { + *x = ServerNameMatcher{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ServerNameMatcher) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ServerNameMatcher) ProtoMessage() {} + +func (x *ServerNameMatcher) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ServerNameMatcher.ProtoReflect.Descriptor instead. +func (*ServerNameMatcher) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_rawDescGZIP(), []int{0} +} + +func (x *ServerNameMatcher) GetServerNameMatchers() []*ServerNameMatcher_ServerNameSetMatcher { + if x != nil { + return x.ServerNameMatchers + } + return nil +} + +// Specifies a list of server names and a match action. +type ServerNameMatcher_ServerNameSetMatcher struct { + state protoimpl.MessageState `protogen:"open.v1"` + // A non-empty set of server names. + // Server name can start with a wildcard prefix, e.g. "*.example.com". + ServerNames []string `protobuf:"bytes,1,rep,name=server_names,json=serverNames,proto3" json:"server_names,omitempty"` + // Match action to apply when the input matches the server name. + OnMatch *v3.Matcher_OnMatch `protobuf:"bytes,2,opt,name=on_match,json=onMatch,proto3" json:"on_match,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ServerNameMatcher_ServerNameSetMatcher) Reset() { + *x = ServerNameMatcher_ServerNameSetMatcher{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ServerNameMatcher_ServerNameSetMatcher) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ServerNameMatcher_ServerNameSetMatcher) ProtoMessage() {} + +func (x *ServerNameMatcher_ServerNameSetMatcher) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ServerNameMatcher_ServerNameSetMatcher.ProtoReflect.Descriptor instead. +func (*ServerNameMatcher_ServerNameSetMatcher) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *ServerNameMatcher_ServerNameSetMatcher) GetServerNames() []string { + if x != nil { + return x.ServerNames + } + return nil +} + +func (x *ServerNameMatcher_ServerNameSetMatcher) GetOnMatch() *v3.Matcher_OnMatch { + if x != nil { + return x.OnMatch + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_rawDesc = string([]byte{ + 0x0a, 0x82, 0x01, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x34, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x33, 0x1a, 0x17, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x78, 0x64, 0x73, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2f, 0x76, 0x33, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xab, 0x02, 0x0a, 0x11, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x72, 0x12, 0x8e, 0x01, 0x0a, 0x14, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x5c, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x12, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x72, 0x73, 0x1a, 0x84, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x0c, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x0b, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x08, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x78, 0x64, 0x73, + 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x76, 0x33, + 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x4f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x07, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x42, 0xd4, 0x01, 0xb8, 0xf5, 0x04, 0x01, + 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x0a, 0x3b, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x2e, 0x76, 0x33, 0x42, 0x16, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x6f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, + 0x67, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, + 0x73, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x2f, 0x76, 0x33, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_goTypes = []any{ + (*ServerNameMatcher)(nil), // 0: envoy.config.matching.custom_matchers.server_name.v3.ServerNameMatcher + (*ServerNameMatcher_ServerNameSetMatcher)(nil), // 1: envoy.config.matching.custom_matchers.server_name.v3.ServerNameMatcher.ServerNameSetMatcher + (*v3.Matcher_OnMatch)(nil), // 2: xds.type.matcher.v3.Matcher.OnMatch +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_depIdxs = []int32{ + 1, // 0: envoy.config.matching.custom_matchers.server_name.v3.ServerNameMatcher.server_name_matchers:type_name -> envoy.config.matching.custom_matchers.server_name.v3.ServerNameMatcher.ServerNameSetMatcher + 2, // 1: envoy.config.matching.custom_matchers.server_name.v3.ServerNameMatcher.ServerNameSetMatcher.on_match:type_name -> xds.type.matcher.v3.Matcher.OnMatch + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_rawDesc)), + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_custom_matchers_server_name_v3_server_name_matcher_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.pb.hash.go new file mode 100644 index 000000000..6c982da5c --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.pb.hash.go @@ -0,0 +1,118 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ServerNameMatcher) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.config.matching.custom_matchers.server_name.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/matching/custom_matchers/server_name/v3.ServerNameMatcher")); err != nil { + return 0, err + } + + for _, v := range m.GetServerNameMatchers() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ServerNameMatcher_ServerNameSetMatcher) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.config.matching.custom_matchers.server_name.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/matching/custom_matchers/server_name/v3.ServerNameMatcher_ServerNameSetMatcher")); err != nil { + return 0, err + } + + for _, v := range m.GetServerNames() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetOnMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OnMatch")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOnMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OnMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.pb.uniquehash.go new file mode 100644 index 000000000..98205c557 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.pb.uniquehash.go @@ -0,0 +1,133 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/matching/custom_matchers/server_name/v3/server_name_matcher.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ServerNameMatcher) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.config.matching.custom_matchers.server_name.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/matching/custom_matchers/server_name/v3.ServerNameMatcher")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ServerNameMatchers")); err != nil { + return 0, err + } + for i, v := range m.GetServerNameMatchers() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ServerNameMatcher_ServerNameSetMatcher) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.config.matching.custom_matchers.server_name.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/matching/custom_matchers/server_name/v3.ServerNameMatcher_ServerNameSetMatcher")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ServerNames")); err != nil { + return 0, err + } + for i, v := range m.GetServerNames() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetOnMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OnMatch")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOnMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OnMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.pb.clone.go new file mode 100644 index 000000000..6898d895e --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.pb.clone.go @@ -0,0 +1,55 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *CipherDetectionInput) Clone() proto.Message { + var target *CipherDetectionInput + if m == nil { + return target + } + target = &CipherDetectionInput{} + + if m.GetPassthroughCiphers() != nil { + target.PassthroughCiphers = make([]uint32, len(m.GetPassthroughCiphers())) + for idx, v := range m.GetPassthroughCiphers() { + + target.PassthroughCiphers[idx] = v + + } + } + + if m.GetTerminatingCiphers() != nil { + target.TerminatingCiphers = make([]uint32, len(m.GetTerminatingCiphers())) + for idx, v := range m.GetTerminatingCiphers() { + + target.TerminatingCiphers[idx] = v + + } + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.pb.equal.go new file mode 100644 index 000000000..df3aff1df --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.pb.equal.go @@ -0,0 +1,72 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *CipherDetectionInput) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*CipherDetectionInput) + if !ok { + that2, ok := that.(CipherDetectionInput) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetPassthroughCiphers()) != len(target.GetPassthroughCiphers()) { + return false + } + for idx, v := range m.GetPassthroughCiphers() { + + if v != target.GetPassthroughCiphers()[idx] { + return false + } + + } + + if len(m.GetTerminatingCiphers()) != len(target.GetTerminatingCiphers()) { + return false + } + for idx, v := range m.GetTerminatingCiphers() { + + if v != target.GetTerminatingCiphers()[idx] { + return false + } + + } + + return true +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.pb.go new file mode 100644 index 000000000..7b76d0035 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.pb.go @@ -0,0 +1,187 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.proto + +package v3 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/envoyproxy/protoc-gen-validate/validate" + _ "github.com/solo-io/protoc-gen-ext/extproto" + _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Specifies that matching should be performed by the destination IP address. +// [#extension: io.solo.matching.inputs.cipher_detection_input] +type CipherDetectionInput struct { + state protoimpl.MessageState `protogen:"open.v1"` + // List of TLS ciphers to send to the passthrough cipher chain. Ciphers must + // be provided using their 16-bit value. These numbers of IANA standardised + // values for all possible cipher suites and can be found here: + // https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml + // + // example: to select the following cipher + // + // 0x00,0x3c TLS_RSA_WITH_AES_128_CBC_SHA256 + // + // this field should be set to 0x003c + PassthroughCiphers []uint32 `protobuf:"varint,1,rep,packed,name=passthrough_ciphers,json=passthroughCiphers,proto3" json:"passthrough_ciphers,omitempty"` + // Terminating ciphers are those that should be considered as supported. + // If not specified, defaults to whatever the current envoy implementation + // finds to be the default set of ciphers. + TerminatingCiphers []uint32 `protobuf:"varint,2,rep,packed,name=terminating_ciphers,json=terminatingCiphers,proto3" json:"terminating_ciphers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CipherDetectionInput) Reset() { + *x = CipherDetectionInput{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CipherDetectionInput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CipherDetectionInput) ProtoMessage() {} + +func (x *CipherDetectionInput) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CipherDetectionInput.ProtoReflect.Descriptor instead. +func (*CipherDetectionInput) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_rawDescGZIP(), []int{0} +} + +func (x *CipherDetectionInput) GetPassthroughCiphers() []uint32 { + if x != nil { + return x.PassthroughCiphers + } + return nil +} + +func (x *CipherDetectionInput) GetTerminatingCiphers() []uint32 { + if x != nil { + return x.TerminatingCiphers + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_rawDesc = string([]byte{ + 0x0a, 0x87, 0x01, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x73, 0x2f, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x69, + 0x70, 0x68, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x2f, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, + 0x67, 0x2e, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x33, 0x1a, 0x1d, 0x75, 0x64, 0x70, + 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, + 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x78, 0x0a, 0x14, 0x43, 0x69, 0x70, 0x68, 0x65, + 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, + 0x2f, 0x0a, 0x13, 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x63, + 0x69, 0x70, 0x68, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x12, 0x70, 0x61, + 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x73, + 0x12, 0x2f, 0x0a, 0x13, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, + 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x12, 0x74, + 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, + 0x73, 0x42, 0xdc, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, + 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x3d, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x69, + 0x70, 0x68, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x33, 0x42, 0x12, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x71, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x2f, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x64, 0x65, + 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x2f, 0x76, 0x33, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_goTypes = []any{ + (*CipherDetectionInput)(nil), // 0: envoy.config.matching.cipher_detection_input.v3.CipherDetectionInput +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_matching_inputs_cipher_detection_input_v3_cipher_detection_input_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.pb.hash.go new file mode 100644 index 000000000..d2ba4c5e4 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.pb.hash.go @@ -0,0 +1,56 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *CipherDetectionInput) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.config.matching.cipher_detection_input.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/matching/inputs/cipher_detection_input/v3.CipherDetectionInput")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetPassthroughCiphers()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetTerminatingCiphers()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.pb.uniquehash.go new file mode 100644 index 000000000..026ba978c --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.pb.uniquehash.go @@ -0,0 +1,63 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/matching/inputs/cipher_detection_input/v3/cipher_detection_input.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *CipherDetectionInput) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.config.matching.cipher_detection_input.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/matching/inputs/cipher_detection_input/v3.CipherDetectionInput")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("PassthroughCiphers")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPassthroughCiphers()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TerminatingCiphers")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetTerminatingCiphers()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/route/v3/route_components.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/config/route/v3/route_components.pb.clone.go new file mode 100644 index 000000000..9004fc6fb --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/route/v3/route_components.pb.clone.go @@ -0,0 +1,1901 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/route/v3/route_components.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_metadata_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_tracing_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/v3" + + google_golang_org_protobuf_types_known_anypb "google.golang.org/protobuf/types/known/anypb" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *VirtualHost) Clone() proto.Message { + var target *VirtualHost + if m == nil { + return target + } + target = &VirtualHost{} + + target.Name = m.GetName() + + if m.GetDomains() != nil { + target.Domains = make([]string, len(m.GetDomains())) + for idx, v := range m.GetDomains() { + + target.Domains[idx] = v + + } + } + + if m.GetRoutes() != nil { + target.Routes = make([]*Route, len(m.GetRoutes())) + for idx, v := range m.GetRoutes() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Routes[idx] = h.Clone().(*Route) + } else { + target.Routes[idx] = proto.Clone(v).(*Route) + } + + } + } + + target.RequireTls = m.GetRequireTls() + + if m.GetVirtualClusters() != nil { + target.VirtualClusters = make([]*VirtualCluster, len(m.GetVirtualClusters())) + for idx, v := range m.GetVirtualClusters() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.VirtualClusters[idx] = h.Clone().(*VirtualCluster) + } else { + target.VirtualClusters[idx] = proto.Clone(v).(*VirtualCluster) + } + + } + } + + if m.GetRateLimits() != nil { + target.RateLimits = make([]*RateLimit, len(m.GetRateLimits())) + for idx, v := range m.GetRateLimits() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RateLimits[idx] = h.Clone().(*RateLimit) + } else { + target.RateLimits[idx] = proto.Clone(v).(*RateLimit) + } + + } + } + + if m.GetRequestHeadersToAdd() != nil { + target.RequestHeadersToAdd = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption, len(m.GetRequestHeadersToAdd())) + for idx, v := range m.GetRequestHeadersToAdd() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RequestHeadersToAdd[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption) + } else { + target.RequestHeadersToAdd[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption) + } + + } + } + + if m.GetRequestHeadersToRemove() != nil { + target.RequestHeadersToRemove = make([]string, len(m.GetRequestHeadersToRemove())) + for idx, v := range m.GetRequestHeadersToRemove() { + + target.RequestHeadersToRemove[idx] = v + + } + } + + if m.GetResponseHeadersToAdd() != nil { + target.ResponseHeadersToAdd = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption, len(m.GetResponseHeadersToAdd())) + for idx, v := range m.GetResponseHeadersToAdd() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ResponseHeadersToAdd[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption) + } else { + target.ResponseHeadersToAdd[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption) + } + + } + } + + if m.GetResponseHeadersToRemove() != nil { + target.ResponseHeadersToRemove = make([]string, len(m.GetResponseHeadersToRemove())) + for idx, v := range m.GetResponseHeadersToRemove() { + + target.ResponseHeadersToRemove[idx] = v + + } + } + + if h, ok := interface{}(m.GetCors()).(clone.Cloner); ok { + target.Cors = h.Clone().(*CorsPolicy) + } else { + target.Cors = proto.Clone(m.GetCors()).(*CorsPolicy) + } + + if m.GetTypedPerFilterConfig() != nil { + target.TypedPerFilterConfig = make(map[string]*google_golang_org_protobuf_types_known_anypb.Any, len(m.GetTypedPerFilterConfig())) + for k, v := range m.GetTypedPerFilterConfig() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.TypedPerFilterConfig[k] = h.Clone().(*google_golang_org_protobuf_types_known_anypb.Any) + } else { + target.TypedPerFilterConfig[k] = proto.Clone(v).(*google_golang_org_protobuf_types_known_anypb.Any) + } + + } + } + + target.IncludeRequestAttemptCount = m.GetIncludeRequestAttemptCount() + + target.IncludeAttemptCountInResponse = m.GetIncludeAttemptCountInResponse() + + if h, ok := interface{}(m.GetRetryPolicy()).(clone.Cloner); ok { + target.RetryPolicy = h.Clone().(*RetryPolicy) + } else { + target.RetryPolicy = proto.Clone(m.GetRetryPolicy()).(*RetryPolicy) + } + + if h, ok := interface{}(m.GetRetryPolicyTypedConfig()).(clone.Cloner); ok { + target.RetryPolicyTypedConfig = h.Clone().(*google_golang_org_protobuf_types_known_anypb.Any) + } else { + target.RetryPolicyTypedConfig = proto.Clone(m.GetRetryPolicyTypedConfig()).(*google_golang_org_protobuf_types_known_anypb.Any) + } + + if h, ok := interface{}(m.GetHedgePolicy()).(clone.Cloner); ok { + target.HedgePolicy = h.Clone().(*HedgePolicy) + } else { + target.HedgePolicy = proto.Clone(m.GetHedgePolicy()).(*HedgePolicy) + } + + if h, ok := interface{}(m.GetPerRequestBufferLimitBytes()).(clone.Cloner); ok { + target.PerRequestBufferLimitBytes = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.PerRequestBufferLimitBytes = proto.Clone(m.GetPerRequestBufferLimitBytes()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + return target +} + +// Clone function +func (m *FilterAction) Clone() proto.Message { + var target *FilterAction + if m == nil { + return target + } + target = &FilterAction{} + + if h, ok := interface{}(m.GetAction()).(clone.Cloner); ok { + target.Action = h.Clone().(*google_golang_org_protobuf_types_known_anypb.Any) + } else { + target.Action = proto.Clone(m.GetAction()).(*google_golang_org_protobuf_types_known_anypb.Any) + } + + return target +} + +// Clone function +func (m *Route) Clone() proto.Message { + var target *Route + if m == nil { + return target + } + target = &Route{} + + target.Name = m.GetName() + + if h, ok := interface{}(m.GetMatch()).(clone.Cloner); ok { + target.Match = h.Clone().(*RouteMatch) + } else { + target.Match = proto.Clone(m.GetMatch()).(*RouteMatch) + } + + if h, ok := interface{}(m.GetMetadata()).(clone.Cloner); ok { + target.Metadata = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.Metadata) + } else { + target.Metadata = proto.Clone(m.GetMetadata()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.Metadata) + } + + if h, ok := interface{}(m.GetDecorator()).(clone.Cloner); ok { + target.Decorator = h.Clone().(*Decorator) + } else { + target.Decorator = proto.Clone(m.GetDecorator()).(*Decorator) + } + + if m.GetTypedPerFilterConfig() != nil { + target.TypedPerFilterConfig = make(map[string]*google_golang_org_protobuf_types_known_anypb.Any, len(m.GetTypedPerFilterConfig())) + for k, v := range m.GetTypedPerFilterConfig() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.TypedPerFilterConfig[k] = h.Clone().(*google_golang_org_protobuf_types_known_anypb.Any) + } else { + target.TypedPerFilterConfig[k] = proto.Clone(v).(*google_golang_org_protobuf_types_known_anypb.Any) + } + + } + } + + if m.GetRequestHeadersToAdd() != nil { + target.RequestHeadersToAdd = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption, len(m.GetRequestHeadersToAdd())) + for idx, v := range m.GetRequestHeadersToAdd() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RequestHeadersToAdd[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption) + } else { + target.RequestHeadersToAdd[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption) + } + + } + } + + if m.GetRequestHeadersToRemove() != nil { + target.RequestHeadersToRemove = make([]string, len(m.GetRequestHeadersToRemove())) + for idx, v := range m.GetRequestHeadersToRemove() { + + target.RequestHeadersToRemove[idx] = v + + } + } + + if m.GetResponseHeadersToAdd() != nil { + target.ResponseHeadersToAdd = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption, len(m.GetResponseHeadersToAdd())) + for idx, v := range m.GetResponseHeadersToAdd() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ResponseHeadersToAdd[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption) + } else { + target.ResponseHeadersToAdd[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption) + } + + } + } + + if m.GetResponseHeadersToRemove() != nil { + target.ResponseHeadersToRemove = make([]string, len(m.GetResponseHeadersToRemove())) + for idx, v := range m.GetResponseHeadersToRemove() { + + target.ResponseHeadersToRemove[idx] = v + + } + } + + if h, ok := interface{}(m.GetTracing()).(clone.Cloner); ok { + target.Tracing = h.Clone().(*Tracing) + } else { + target.Tracing = proto.Clone(m.GetTracing()).(*Tracing) + } + + if h, ok := interface{}(m.GetPerRequestBufferLimitBytes()).(clone.Cloner); ok { + target.PerRequestBufferLimitBytes = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.PerRequestBufferLimitBytes = proto.Clone(m.GetPerRequestBufferLimitBytes()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + switch m.Action.(type) { + + case *Route_Route: + + if h, ok := interface{}(m.GetRoute()).(clone.Cloner); ok { + target.Action = &Route_Route{ + Route: h.Clone().(*RouteAction), + } + } else { + target.Action = &Route_Route{ + Route: proto.Clone(m.GetRoute()).(*RouteAction), + } + } + + case *Route_Redirect: + + if h, ok := interface{}(m.GetRedirect()).(clone.Cloner); ok { + target.Action = &Route_Redirect{ + Redirect: h.Clone().(*RedirectAction), + } + } else { + target.Action = &Route_Redirect{ + Redirect: proto.Clone(m.GetRedirect()).(*RedirectAction), + } + } + + case *Route_DirectResponse: + + if h, ok := interface{}(m.GetDirectResponse()).(clone.Cloner); ok { + target.Action = &Route_DirectResponse{ + DirectResponse: h.Clone().(*DirectResponseAction), + } + } else { + target.Action = &Route_DirectResponse{ + DirectResponse: proto.Clone(m.GetDirectResponse()).(*DirectResponseAction), + } + } + + case *Route_FilterAction: + + if h, ok := interface{}(m.GetFilterAction()).(clone.Cloner); ok { + target.Action = &Route_FilterAction{ + FilterAction: h.Clone().(*FilterAction), + } + } else { + target.Action = &Route_FilterAction{ + FilterAction: proto.Clone(m.GetFilterAction()).(*FilterAction), + } + } + + } + + return target +} + +// Clone function +func (m *WeightedCluster) Clone() proto.Message { + var target *WeightedCluster + if m == nil { + return target + } + target = &WeightedCluster{} + + if m.GetClusters() != nil { + target.Clusters = make([]*WeightedCluster_ClusterWeight, len(m.GetClusters())) + for idx, v := range m.GetClusters() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Clusters[idx] = h.Clone().(*WeightedCluster_ClusterWeight) + } else { + target.Clusters[idx] = proto.Clone(v).(*WeightedCluster_ClusterWeight) + } + + } + } + + if h, ok := interface{}(m.GetTotalWeight()).(clone.Cloner); ok { + target.TotalWeight = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.TotalWeight = proto.Clone(m.GetTotalWeight()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + target.RuntimeKeyPrefix = m.GetRuntimeKeyPrefix() + + return target +} + +// Clone function +func (m *RouteMatch) Clone() proto.Message { + var target *RouteMatch + if m == nil { + return target + } + target = &RouteMatch{} + + if h, ok := interface{}(m.GetCaseSensitive()).(clone.Cloner); ok { + target.CaseSensitive = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.CaseSensitive = proto.Clone(m.GetCaseSensitive()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetRuntimeFraction()).(clone.Cloner); ok { + target.RuntimeFraction = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.RuntimeFractionalPercent) + } else { + target.RuntimeFraction = proto.Clone(m.GetRuntimeFraction()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.RuntimeFractionalPercent) + } + + if m.GetHeaders() != nil { + target.Headers = make([]*HeaderMatcher, len(m.GetHeaders())) + for idx, v := range m.GetHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Headers[idx] = h.Clone().(*HeaderMatcher) + } else { + target.Headers[idx] = proto.Clone(v).(*HeaderMatcher) + } + + } + } + + if m.GetQueryParameters() != nil { + target.QueryParameters = make([]*QueryParameterMatcher, len(m.GetQueryParameters())) + for idx, v := range m.GetQueryParameters() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.QueryParameters[idx] = h.Clone().(*QueryParameterMatcher) + } else { + target.QueryParameters[idx] = proto.Clone(v).(*QueryParameterMatcher) + } + + } + } + + if h, ok := interface{}(m.GetGrpc()).(clone.Cloner); ok { + target.Grpc = h.Clone().(*RouteMatch_GrpcRouteMatchOptions) + } else { + target.Grpc = proto.Clone(m.GetGrpc()).(*RouteMatch_GrpcRouteMatchOptions) + } + + if h, ok := interface{}(m.GetTlsContext()).(clone.Cloner); ok { + target.TlsContext = h.Clone().(*RouteMatch_TlsContextMatchOptions) + } else { + target.TlsContext = proto.Clone(m.GetTlsContext()).(*RouteMatch_TlsContextMatchOptions) + } + + switch m.PathSpecifier.(type) { + + case *RouteMatch_Prefix: + + target.PathSpecifier = &RouteMatch_Prefix{ + Prefix: m.GetPrefix(), + } + + case *RouteMatch_Path: + + target.PathSpecifier = &RouteMatch_Path{ + Path: m.GetPath(), + } + + case *RouteMatch_SafeRegex: + + if h, ok := interface{}(m.GetSafeRegex()).(clone.Cloner); ok { + target.PathSpecifier = &RouteMatch_SafeRegex{ + SafeRegex: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.RegexMatcher), + } + } else { + target.PathSpecifier = &RouteMatch_SafeRegex{ + SafeRegex: proto.Clone(m.GetSafeRegex()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.RegexMatcher), + } + } + + case *RouteMatch_ConnectMatcher_: + + if h, ok := interface{}(m.GetConnectMatcher()).(clone.Cloner); ok { + target.PathSpecifier = &RouteMatch_ConnectMatcher_{ + ConnectMatcher: h.Clone().(*RouteMatch_ConnectMatcher), + } + } else { + target.PathSpecifier = &RouteMatch_ConnectMatcher_{ + ConnectMatcher: proto.Clone(m.GetConnectMatcher()).(*RouteMatch_ConnectMatcher), + } + } + + } + + return target +} + +// Clone function +func (m *CorsPolicy) Clone() proto.Message { + var target *CorsPolicy + if m == nil { + return target + } + target = &CorsPolicy{} + + if m.GetAllowOriginStringMatch() != nil { + target.AllowOriginStringMatch = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.StringMatcher, len(m.GetAllowOriginStringMatch())) + for idx, v := range m.GetAllowOriginStringMatch() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.AllowOriginStringMatch[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.StringMatcher) + } else { + target.AllowOriginStringMatch[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.StringMatcher) + } + + } + } + + target.AllowMethods = m.GetAllowMethods() + + target.AllowHeaders = m.GetAllowHeaders() + + target.ExposeHeaders = m.GetExposeHeaders() + + target.MaxAge = m.GetMaxAge() + + if h, ok := interface{}(m.GetAllowCredentials()).(clone.Cloner); ok { + target.AllowCredentials = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.AllowCredentials = proto.Clone(m.GetAllowCredentials()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetShadowEnabled()).(clone.Cloner); ok { + target.ShadowEnabled = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.RuntimeFractionalPercent) + } else { + target.ShadowEnabled = proto.Clone(m.GetShadowEnabled()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.RuntimeFractionalPercent) + } + + switch m.EnabledSpecifier.(type) { + + case *CorsPolicy_FilterEnabled: + + if h, ok := interface{}(m.GetFilterEnabled()).(clone.Cloner); ok { + target.EnabledSpecifier = &CorsPolicy_FilterEnabled{ + FilterEnabled: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.RuntimeFractionalPercent), + } + } else { + target.EnabledSpecifier = &CorsPolicy_FilterEnabled{ + FilterEnabled: proto.Clone(m.GetFilterEnabled()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.RuntimeFractionalPercent), + } + } + + } + + return target +} + +// Clone function +func (m *RouteAction) Clone() proto.Message { + var target *RouteAction + if m == nil { + return target + } + target = &RouteAction{} + + target.ClusterNotFoundResponseCode = m.GetClusterNotFoundResponseCode() + + if h, ok := interface{}(m.GetMetadataMatch()).(clone.Cloner); ok { + target.MetadataMatch = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.Metadata) + } else { + target.MetadataMatch = proto.Clone(m.GetMetadataMatch()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.Metadata) + } + + target.PrefixRewrite = m.GetPrefixRewrite() + + if h, ok := interface{}(m.GetRegexRewrite()).(clone.Cloner); ok { + target.RegexRewrite = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.RegexMatchAndSubstitute) + } else { + target.RegexRewrite = proto.Clone(m.GetRegexRewrite()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.RegexMatchAndSubstitute) + } + + if h, ok := interface{}(m.GetTimeout()).(clone.Cloner); ok { + target.Timeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.Timeout = proto.Clone(m.GetTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetIdleTimeout()).(clone.Cloner); ok { + target.IdleTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.IdleTimeout = proto.Clone(m.GetIdleTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetRetryPolicy()).(clone.Cloner); ok { + target.RetryPolicy = h.Clone().(*RetryPolicy) + } else { + target.RetryPolicy = proto.Clone(m.GetRetryPolicy()).(*RetryPolicy) + } + + if h, ok := interface{}(m.GetRetryPolicyTypedConfig()).(clone.Cloner); ok { + target.RetryPolicyTypedConfig = h.Clone().(*google_golang_org_protobuf_types_known_anypb.Any) + } else { + target.RetryPolicyTypedConfig = proto.Clone(m.GetRetryPolicyTypedConfig()).(*google_golang_org_protobuf_types_known_anypb.Any) + } + + if m.GetRequestMirrorPolicies() != nil { + target.RequestMirrorPolicies = make([]*RouteAction_RequestMirrorPolicy, len(m.GetRequestMirrorPolicies())) + for idx, v := range m.GetRequestMirrorPolicies() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RequestMirrorPolicies[idx] = h.Clone().(*RouteAction_RequestMirrorPolicy) + } else { + target.RequestMirrorPolicies[idx] = proto.Clone(v).(*RouteAction_RequestMirrorPolicy) + } + + } + } + + target.Priority = m.GetPriority() + + if m.GetRateLimits() != nil { + target.RateLimits = make([]*RateLimit, len(m.GetRateLimits())) + for idx, v := range m.GetRateLimits() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RateLimits[idx] = h.Clone().(*RateLimit) + } else { + target.RateLimits[idx] = proto.Clone(v).(*RateLimit) + } + + } + } + + if h, ok := interface{}(m.GetIncludeVhRateLimits()).(clone.Cloner); ok { + target.IncludeVhRateLimits = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.IncludeVhRateLimits = proto.Clone(m.GetIncludeVhRateLimits()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if m.GetHashPolicy() != nil { + target.HashPolicy = make([]*RouteAction_HashPolicy, len(m.GetHashPolicy())) + for idx, v := range m.GetHashPolicy() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.HashPolicy[idx] = h.Clone().(*RouteAction_HashPolicy) + } else { + target.HashPolicy[idx] = proto.Clone(v).(*RouteAction_HashPolicy) + } + + } + } + + if h, ok := interface{}(m.GetCors()).(clone.Cloner); ok { + target.Cors = h.Clone().(*CorsPolicy) + } else { + target.Cors = proto.Clone(m.GetCors()).(*CorsPolicy) + } + + if h, ok := interface{}(m.GetMaxGrpcTimeout()).(clone.Cloner); ok { + target.MaxGrpcTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.MaxGrpcTimeout = proto.Clone(m.GetMaxGrpcTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetGrpcTimeoutOffset()).(clone.Cloner); ok { + target.GrpcTimeoutOffset = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.GrpcTimeoutOffset = proto.Clone(m.GetGrpcTimeoutOffset()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if m.GetUpgradeConfigs() != nil { + target.UpgradeConfigs = make([]*RouteAction_UpgradeConfig, len(m.GetUpgradeConfigs())) + for idx, v := range m.GetUpgradeConfigs() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.UpgradeConfigs[idx] = h.Clone().(*RouteAction_UpgradeConfig) + } else { + target.UpgradeConfigs[idx] = proto.Clone(v).(*RouteAction_UpgradeConfig) + } + + } + } + + if h, ok := interface{}(m.GetInternalRedirectPolicy()).(clone.Cloner); ok { + target.InternalRedirectPolicy = h.Clone().(*InternalRedirectPolicy) + } else { + target.InternalRedirectPolicy = proto.Clone(m.GetInternalRedirectPolicy()).(*InternalRedirectPolicy) + } + + target.InternalRedirectAction = m.GetInternalRedirectAction() + + if h, ok := interface{}(m.GetMaxInternalRedirects()).(clone.Cloner); ok { + target.MaxInternalRedirects = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxInternalRedirects = proto.Clone(m.GetMaxInternalRedirects()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetHedgePolicy()).(clone.Cloner); ok { + target.HedgePolicy = h.Clone().(*HedgePolicy) + } else { + target.HedgePolicy = proto.Clone(m.GetHedgePolicy()).(*HedgePolicy) + } + + switch m.ClusterSpecifier.(type) { + + case *RouteAction_Cluster: + + target.ClusterSpecifier = &RouteAction_Cluster{ + Cluster: m.GetCluster(), + } + + case *RouteAction_ClusterHeader: + + target.ClusterSpecifier = &RouteAction_ClusterHeader{ + ClusterHeader: m.GetClusterHeader(), + } + + case *RouteAction_WeightedClusters: + + if h, ok := interface{}(m.GetWeightedClusters()).(clone.Cloner); ok { + target.ClusterSpecifier = &RouteAction_WeightedClusters{ + WeightedClusters: h.Clone().(*WeightedCluster), + } + } else { + target.ClusterSpecifier = &RouteAction_WeightedClusters{ + WeightedClusters: proto.Clone(m.GetWeightedClusters()).(*WeightedCluster), + } + } + + } + + switch m.HostRewriteSpecifier.(type) { + + case *RouteAction_HostRewriteLiteral: + + target.HostRewriteSpecifier = &RouteAction_HostRewriteLiteral{ + HostRewriteLiteral: m.GetHostRewriteLiteral(), + } + + case *RouteAction_AutoHostRewrite: + + if h, ok := interface{}(m.GetAutoHostRewrite()).(clone.Cloner); ok { + target.HostRewriteSpecifier = &RouteAction_AutoHostRewrite{ + AutoHostRewrite: h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue), + } + } else { + target.HostRewriteSpecifier = &RouteAction_AutoHostRewrite{ + AutoHostRewrite: proto.Clone(m.GetAutoHostRewrite()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue), + } + } + + case *RouteAction_HostRewriteHeader: + + target.HostRewriteSpecifier = &RouteAction_HostRewriteHeader{ + HostRewriteHeader: m.GetHostRewriteHeader(), + } + + } + + return target +} + +// Clone function +func (m *RetryPolicy) Clone() proto.Message { + var target *RetryPolicy + if m == nil { + return target + } + target = &RetryPolicy{} + + target.RetryOn = m.GetRetryOn() + + if h, ok := interface{}(m.GetNumRetries()).(clone.Cloner); ok { + target.NumRetries = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.NumRetries = proto.Clone(m.GetNumRetries()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetPerTryTimeout()).(clone.Cloner); ok { + target.PerTryTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.PerTryTimeout = proto.Clone(m.GetPerTryTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetRetryPriority()).(clone.Cloner); ok { + target.RetryPriority = h.Clone().(*RetryPolicy_RetryPriority) + } else { + target.RetryPriority = proto.Clone(m.GetRetryPriority()).(*RetryPolicy_RetryPriority) + } + + if m.GetRetryHostPredicate() != nil { + target.RetryHostPredicate = make([]*RetryPolicy_RetryHostPredicate, len(m.GetRetryHostPredicate())) + for idx, v := range m.GetRetryHostPredicate() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RetryHostPredicate[idx] = h.Clone().(*RetryPolicy_RetryHostPredicate) + } else { + target.RetryHostPredicate[idx] = proto.Clone(v).(*RetryPolicy_RetryHostPredicate) + } + + } + } + + target.HostSelectionRetryMaxAttempts = m.GetHostSelectionRetryMaxAttempts() + + if m.GetRetriableStatusCodes() != nil { + target.RetriableStatusCodes = make([]uint32, len(m.GetRetriableStatusCodes())) + for idx, v := range m.GetRetriableStatusCodes() { + + target.RetriableStatusCodes[idx] = v + + } + } + + if h, ok := interface{}(m.GetRetryBackOff()).(clone.Cloner); ok { + target.RetryBackOff = h.Clone().(*RetryPolicy_RetryBackOff) + } else { + target.RetryBackOff = proto.Clone(m.GetRetryBackOff()).(*RetryPolicy_RetryBackOff) + } + + if m.GetRetriableHeaders() != nil { + target.RetriableHeaders = make([]*HeaderMatcher, len(m.GetRetriableHeaders())) + for idx, v := range m.GetRetriableHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RetriableHeaders[idx] = h.Clone().(*HeaderMatcher) + } else { + target.RetriableHeaders[idx] = proto.Clone(v).(*HeaderMatcher) + } + + } + } + + if m.GetRetriableRequestHeaders() != nil { + target.RetriableRequestHeaders = make([]*HeaderMatcher, len(m.GetRetriableRequestHeaders())) + for idx, v := range m.GetRetriableRequestHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RetriableRequestHeaders[idx] = h.Clone().(*HeaderMatcher) + } else { + target.RetriableRequestHeaders[idx] = proto.Clone(v).(*HeaderMatcher) + } + + } + } + + return target +} + +// Clone function +func (m *HedgePolicy) Clone() proto.Message { + var target *HedgePolicy + if m == nil { + return target + } + target = &HedgePolicy{} + + if h, ok := interface{}(m.GetInitialRequests()).(clone.Cloner); ok { + target.InitialRequests = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.InitialRequests = proto.Clone(m.GetInitialRequests()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetAdditionalRequestChance()).(clone.Cloner); ok { + target.AdditionalRequestChance = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3.FractionalPercent) + } else { + target.AdditionalRequestChance = proto.Clone(m.GetAdditionalRequestChance()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3.FractionalPercent) + } + + target.HedgeOnPerTryTimeout = m.GetHedgeOnPerTryTimeout() + + return target +} + +// Clone function +func (m *RedirectAction) Clone() proto.Message { + var target *RedirectAction + if m == nil { + return target + } + target = &RedirectAction{} + + target.HostRedirect = m.GetHostRedirect() + + target.PortRedirect = m.GetPortRedirect() + + target.ResponseCode = m.GetResponseCode() + + target.StripQuery = m.GetStripQuery() + + switch m.SchemeRewriteSpecifier.(type) { + + case *RedirectAction_HttpsRedirect: + + target.SchemeRewriteSpecifier = &RedirectAction_HttpsRedirect{ + HttpsRedirect: m.GetHttpsRedirect(), + } + + case *RedirectAction_SchemeRedirect: + + target.SchemeRewriteSpecifier = &RedirectAction_SchemeRedirect{ + SchemeRedirect: m.GetSchemeRedirect(), + } + + } + + switch m.PathRewriteSpecifier.(type) { + + case *RedirectAction_PathRedirect: + + target.PathRewriteSpecifier = &RedirectAction_PathRedirect{ + PathRedirect: m.GetPathRedirect(), + } + + case *RedirectAction_PrefixRewrite: + + target.PathRewriteSpecifier = &RedirectAction_PrefixRewrite{ + PrefixRewrite: m.GetPrefixRewrite(), + } + + } + + return target +} + +// Clone function +func (m *DirectResponseAction) Clone() proto.Message { + var target *DirectResponseAction + if m == nil { + return target + } + target = &DirectResponseAction{} + + target.Status = m.GetStatus() + + if h, ok := interface{}(m.GetBody()).(clone.Cloner); ok { + target.Body = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.DataSource) + } else { + target.Body = proto.Clone(m.GetBody()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.DataSource) + } + + return target +} + +// Clone function +func (m *Decorator) Clone() proto.Message { + var target *Decorator + if m == nil { + return target + } + target = &Decorator{} + + target.Operation = m.GetOperation() + + if h, ok := interface{}(m.GetPropagate()).(clone.Cloner); ok { + target.Propagate = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Propagate = proto.Clone(m.GetPropagate()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *Tracing) Clone() proto.Message { + var target *Tracing + if m == nil { + return target + } + target = &Tracing{} + + if h, ok := interface{}(m.GetClientSampling()).(clone.Cloner); ok { + target.ClientSampling = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3.FractionalPercent) + } else { + target.ClientSampling = proto.Clone(m.GetClientSampling()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3.FractionalPercent) + } + + if h, ok := interface{}(m.GetRandomSampling()).(clone.Cloner); ok { + target.RandomSampling = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3.FractionalPercent) + } else { + target.RandomSampling = proto.Clone(m.GetRandomSampling()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3.FractionalPercent) + } + + if h, ok := interface{}(m.GetOverallSampling()).(clone.Cloner); ok { + target.OverallSampling = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3.FractionalPercent) + } else { + target.OverallSampling = proto.Clone(m.GetOverallSampling()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3.FractionalPercent) + } + + if m.GetCustomTags() != nil { + target.CustomTags = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_tracing_v3.CustomTag, len(m.GetCustomTags())) + for idx, v := range m.GetCustomTags() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.CustomTags[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_tracing_v3.CustomTag) + } else { + target.CustomTags[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_tracing_v3.CustomTag) + } + + } + } + + return target +} + +// Clone function +func (m *VirtualCluster) Clone() proto.Message { + var target *VirtualCluster + if m == nil { + return target + } + target = &VirtualCluster{} + + if m.GetHeaders() != nil { + target.Headers = make([]*HeaderMatcher, len(m.GetHeaders())) + for idx, v := range m.GetHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Headers[idx] = h.Clone().(*HeaderMatcher) + } else { + target.Headers[idx] = proto.Clone(v).(*HeaderMatcher) + } + + } + } + + target.Name = m.GetName() + + return target +} + +// Clone function +func (m *RateLimit) Clone() proto.Message { + var target *RateLimit + if m == nil { + return target + } + target = &RateLimit{} + + if h, ok := interface{}(m.GetStage()).(clone.Cloner); ok { + target.Stage = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.Stage = proto.Clone(m.GetStage()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + target.DisableKey = m.GetDisableKey() + + if m.GetActions() != nil { + target.Actions = make([]*RateLimit_Action, len(m.GetActions())) + for idx, v := range m.GetActions() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Actions[idx] = h.Clone().(*RateLimit_Action) + } else { + target.Actions[idx] = proto.Clone(v).(*RateLimit_Action) + } + + } + } + + if h, ok := interface{}(m.GetLimit()).(clone.Cloner); ok { + target.Limit = h.Clone().(*RateLimit_Override) + } else { + target.Limit = proto.Clone(m.GetLimit()).(*RateLimit_Override) + } + + return target +} + +// Clone function +func (m *HeaderMatcher) Clone() proto.Message { + var target *HeaderMatcher + if m == nil { + return target + } + target = &HeaderMatcher{} + + target.Name = m.GetName() + + target.InvertMatch = m.GetInvertMatch() + + switch m.HeaderMatchSpecifier.(type) { + + case *HeaderMatcher_ExactMatch: + + target.HeaderMatchSpecifier = &HeaderMatcher_ExactMatch{ + ExactMatch: m.GetExactMatch(), + } + + case *HeaderMatcher_SafeRegexMatch: + + if h, ok := interface{}(m.GetSafeRegexMatch()).(clone.Cloner); ok { + target.HeaderMatchSpecifier = &HeaderMatcher_SafeRegexMatch{ + SafeRegexMatch: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.RegexMatcher), + } + } else { + target.HeaderMatchSpecifier = &HeaderMatcher_SafeRegexMatch{ + SafeRegexMatch: proto.Clone(m.GetSafeRegexMatch()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.RegexMatcher), + } + } + + case *HeaderMatcher_RangeMatch: + + if h, ok := interface{}(m.GetRangeMatch()).(clone.Cloner); ok { + target.HeaderMatchSpecifier = &HeaderMatcher_RangeMatch{ + RangeMatch: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3.Int64Range), + } + } else { + target.HeaderMatchSpecifier = &HeaderMatcher_RangeMatch{ + RangeMatch: proto.Clone(m.GetRangeMatch()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3.Int64Range), + } + } + + case *HeaderMatcher_PresentMatch: + + target.HeaderMatchSpecifier = &HeaderMatcher_PresentMatch{ + PresentMatch: m.GetPresentMatch(), + } + + case *HeaderMatcher_PrefixMatch: + + target.HeaderMatchSpecifier = &HeaderMatcher_PrefixMatch{ + PrefixMatch: m.GetPrefixMatch(), + } + + case *HeaderMatcher_SuffixMatch: + + target.HeaderMatchSpecifier = &HeaderMatcher_SuffixMatch{ + SuffixMatch: m.GetSuffixMatch(), + } + + } + + return target +} + +// Clone function +func (m *QueryParameterMatcher) Clone() proto.Message { + var target *QueryParameterMatcher + if m == nil { + return target + } + target = &QueryParameterMatcher{} + + target.Name = m.GetName() + + switch m.QueryParameterMatchSpecifier.(type) { + + case *QueryParameterMatcher_StringMatch: + + if h, ok := interface{}(m.GetStringMatch()).(clone.Cloner); ok { + target.QueryParameterMatchSpecifier = &QueryParameterMatcher_StringMatch{ + StringMatch: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.StringMatcher), + } + } else { + target.QueryParameterMatchSpecifier = &QueryParameterMatcher_StringMatch{ + StringMatch: proto.Clone(m.GetStringMatch()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.StringMatcher), + } + } + + case *QueryParameterMatcher_PresentMatch: + + target.QueryParameterMatchSpecifier = &QueryParameterMatcher_PresentMatch{ + PresentMatch: m.GetPresentMatch(), + } + + } + + return target +} + +// Clone function +func (m *InternalRedirectPolicy) Clone() proto.Message { + var target *InternalRedirectPolicy + if m == nil { + return target + } + target = &InternalRedirectPolicy{} + + if h, ok := interface{}(m.GetMaxInternalRedirects()).(clone.Cloner); ok { + target.MaxInternalRedirects = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxInternalRedirects = proto.Clone(m.GetMaxInternalRedirects()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if m.GetRedirectResponseCodes() != nil { + target.RedirectResponseCodes = make([]uint32, len(m.GetRedirectResponseCodes())) + for idx, v := range m.GetRedirectResponseCodes() { + + target.RedirectResponseCodes[idx] = v + + } + } + + if m.GetPredicates() != nil { + target.Predicates = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.TypedExtensionConfig, len(m.GetPredicates())) + for idx, v := range m.GetPredicates() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Predicates[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.TypedExtensionConfig) + } else { + target.Predicates[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.TypedExtensionConfig) + } + + } + } + + target.AllowCrossSchemeRedirect = m.GetAllowCrossSchemeRedirect() + + return target +} + +// Clone function +func (m *WeightedCluster_ClusterWeight) Clone() proto.Message { + var target *WeightedCluster_ClusterWeight + if m == nil { + return target + } + target = &WeightedCluster_ClusterWeight{} + + target.Name = m.GetName() + + if h, ok := interface{}(m.GetWeight()).(clone.Cloner); ok { + target.Weight = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.Weight = proto.Clone(m.GetWeight()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetMetadataMatch()).(clone.Cloner); ok { + target.MetadataMatch = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.Metadata) + } else { + target.MetadataMatch = proto.Clone(m.GetMetadataMatch()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.Metadata) + } + + if m.GetRequestHeadersToAdd() != nil { + target.RequestHeadersToAdd = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption, len(m.GetRequestHeadersToAdd())) + for idx, v := range m.GetRequestHeadersToAdd() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RequestHeadersToAdd[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption) + } else { + target.RequestHeadersToAdd[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption) + } + + } + } + + if m.GetRequestHeadersToRemove() != nil { + target.RequestHeadersToRemove = make([]string, len(m.GetRequestHeadersToRemove())) + for idx, v := range m.GetRequestHeadersToRemove() { + + target.RequestHeadersToRemove[idx] = v + + } + } + + if m.GetResponseHeadersToAdd() != nil { + target.ResponseHeadersToAdd = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption, len(m.GetResponseHeadersToAdd())) + for idx, v := range m.GetResponseHeadersToAdd() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ResponseHeadersToAdd[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption) + } else { + target.ResponseHeadersToAdd[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption) + } + + } + } + + if m.GetResponseHeadersToRemove() != nil { + target.ResponseHeadersToRemove = make([]string, len(m.GetResponseHeadersToRemove())) + for idx, v := range m.GetResponseHeadersToRemove() { + + target.ResponseHeadersToRemove[idx] = v + + } + } + + if m.GetTypedPerFilterConfig() != nil { + target.TypedPerFilterConfig = make(map[string]*google_golang_org_protobuf_types_known_anypb.Any, len(m.GetTypedPerFilterConfig())) + for k, v := range m.GetTypedPerFilterConfig() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.TypedPerFilterConfig[k] = h.Clone().(*google_golang_org_protobuf_types_known_anypb.Any) + } else { + target.TypedPerFilterConfig[k] = proto.Clone(v).(*google_golang_org_protobuf_types_known_anypb.Any) + } + + } + } + + return target +} + +// Clone function +func (m *RouteMatch_GrpcRouteMatchOptions) Clone() proto.Message { + var target *RouteMatch_GrpcRouteMatchOptions + if m == nil { + return target + } + target = &RouteMatch_GrpcRouteMatchOptions{} + + return target +} + +// Clone function +func (m *RouteMatch_TlsContextMatchOptions) Clone() proto.Message { + var target *RouteMatch_TlsContextMatchOptions + if m == nil { + return target + } + target = &RouteMatch_TlsContextMatchOptions{} + + if h, ok := interface{}(m.GetPresented()).(clone.Cloner); ok { + target.Presented = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Presented = proto.Clone(m.GetPresented()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetValidated()).(clone.Cloner); ok { + target.Validated = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Validated = proto.Clone(m.GetValidated()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *RouteMatch_ConnectMatcher) Clone() proto.Message { + var target *RouteMatch_ConnectMatcher + if m == nil { + return target + } + target = &RouteMatch_ConnectMatcher{} + + return target +} + +// Clone function +func (m *RouteAction_RequestMirrorPolicy) Clone() proto.Message { + var target *RouteAction_RequestMirrorPolicy + if m == nil { + return target + } + target = &RouteAction_RequestMirrorPolicy{} + + target.Cluster = m.GetCluster() + + if h, ok := interface{}(m.GetRuntimeFraction()).(clone.Cloner); ok { + target.RuntimeFraction = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.RuntimeFractionalPercent) + } else { + target.RuntimeFraction = proto.Clone(m.GetRuntimeFraction()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.RuntimeFractionalPercent) + } + + if h, ok := interface{}(m.GetTraceSampled()).(clone.Cloner); ok { + target.TraceSampled = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.TraceSampled = proto.Clone(m.GetTraceSampled()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *RouteAction_HashPolicy) Clone() proto.Message { + var target *RouteAction_HashPolicy + if m == nil { + return target + } + target = &RouteAction_HashPolicy{} + + target.Terminal = m.GetTerminal() + + switch m.PolicySpecifier.(type) { + + case *RouteAction_HashPolicy_Header_: + + if h, ok := interface{}(m.GetHeader()).(clone.Cloner); ok { + target.PolicySpecifier = &RouteAction_HashPolicy_Header_{ + Header: h.Clone().(*RouteAction_HashPolicy_Header), + } + } else { + target.PolicySpecifier = &RouteAction_HashPolicy_Header_{ + Header: proto.Clone(m.GetHeader()).(*RouteAction_HashPolicy_Header), + } + } + + case *RouteAction_HashPolicy_Cookie_: + + if h, ok := interface{}(m.GetCookie()).(clone.Cloner); ok { + target.PolicySpecifier = &RouteAction_HashPolicy_Cookie_{ + Cookie: h.Clone().(*RouteAction_HashPolicy_Cookie), + } + } else { + target.PolicySpecifier = &RouteAction_HashPolicy_Cookie_{ + Cookie: proto.Clone(m.GetCookie()).(*RouteAction_HashPolicy_Cookie), + } + } + + case *RouteAction_HashPolicy_ConnectionProperties_: + + if h, ok := interface{}(m.GetConnectionProperties()).(clone.Cloner); ok { + target.PolicySpecifier = &RouteAction_HashPolicy_ConnectionProperties_{ + ConnectionProperties: h.Clone().(*RouteAction_HashPolicy_ConnectionProperties), + } + } else { + target.PolicySpecifier = &RouteAction_HashPolicy_ConnectionProperties_{ + ConnectionProperties: proto.Clone(m.GetConnectionProperties()).(*RouteAction_HashPolicy_ConnectionProperties), + } + } + + case *RouteAction_HashPolicy_QueryParameter_: + + if h, ok := interface{}(m.GetQueryParameter()).(clone.Cloner); ok { + target.PolicySpecifier = &RouteAction_HashPolicy_QueryParameter_{ + QueryParameter: h.Clone().(*RouteAction_HashPolicy_QueryParameter), + } + } else { + target.PolicySpecifier = &RouteAction_HashPolicy_QueryParameter_{ + QueryParameter: proto.Clone(m.GetQueryParameter()).(*RouteAction_HashPolicy_QueryParameter), + } + } + + case *RouteAction_HashPolicy_FilterState_: + + if h, ok := interface{}(m.GetFilterState()).(clone.Cloner); ok { + target.PolicySpecifier = &RouteAction_HashPolicy_FilterState_{ + FilterState: h.Clone().(*RouteAction_HashPolicy_FilterState), + } + } else { + target.PolicySpecifier = &RouteAction_HashPolicy_FilterState_{ + FilterState: proto.Clone(m.GetFilterState()).(*RouteAction_HashPolicy_FilterState), + } + } + + } + + return target +} + +// Clone function +func (m *RouteAction_UpgradeConfig) Clone() proto.Message { + var target *RouteAction_UpgradeConfig + if m == nil { + return target + } + target = &RouteAction_UpgradeConfig{} + + target.UpgradeType = m.GetUpgradeType() + + if h, ok := interface{}(m.GetEnabled()).(clone.Cloner); ok { + target.Enabled = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Enabled = proto.Clone(m.GetEnabled()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetConnectConfig()).(clone.Cloner); ok { + target.ConnectConfig = h.Clone().(*RouteAction_UpgradeConfig_ConnectConfig) + } else { + target.ConnectConfig = proto.Clone(m.GetConnectConfig()).(*RouteAction_UpgradeConfig_ConnectConfig) + } + + return target +} + +// Clone function +func (m *RouteAction_HashPolicy_Header) Clone() proto.Message { + var target *RouteAction_HashPolicy_Header + if m == nil { + return target + } + target = &RouteAction_HashPolicy_Header{} + + target.HeaderName = m.GetHeaderName() + + if h, ok := interface{}(m.GetRegexRewrite()).(clone.Cloner); ok { + target.RegexRewrite = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.RegexMatchAndSubstitute) + } else { + target.RegexRewrite = proto.Clone(m.GetRegexRewrite()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.RegexMatchAndSubstitute) + } + + return target +} + +// Clone function +func (m *RouteAction_HashPolicy_Cookie) Clone() proto.Message { + var target *RouteAction_HashPolicy_Cookie + if m == nil { + return target + } + target = &RouteAction_HashPolicy_Cookie{} + + target.Name = m.GetName() + + if h, ok := interface{}(m.GetTtl()).(clone.Cloner); ok { + target.Ttl = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.Ttl = proto.Clone(m.GetTtl()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + target.Path = m.GetPath() + + return target +} + +// Clone function +func (m *RouteAction_HashPolicy_ConnectionProperties) Clone() proto.Message { + var target *RouteAction_HashPolicy_ConnectionProperties + if m == nil { + return target + } + target = &RouteAction_HashPolicy_ConnectionProperties{} + + target.SourceIp = m.GetSourceIp() + + return target +} + +// Clone function +func (m *RouteAction_HashPolicy_QueryParameter) Clone() proto.Message { + var target *RouteAction_HashPolicy_QueryParameter + if m == nil { + return target + } + target = &RouteAction_HashPolicy_QueryParameter{} + + target.Name = m.GetName() + + return target +} + +// Clone function +func (m *RouteAction_HashPolicy_FilterState) Clone() proto.Message { + var target *RouteAction_HashPolicy_FilterState + if m == nil { + return target + } + target = &RouteAction_HashPolicy_FilterState{} + + target.Key = m.GetKey() + + return target +} + +// Clone function +func (m *RouteAction_UpgradeConfig_ConnectConfig) Clone() proto.Message { + var target *RouteAction_UpgradeConfig_ConnectConfig + if m == nil { + return target + } + target = &RouteAction_UpgradeConfig_ConnectConfig{} + + if h, ok := interface{}(m.GetProxyProtocolConfig()).(clone.Cloner); ok { + target.ProxyProtocolConfig = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.ProxyProtocolConfig) + } else { + target.ProxyProtocolConfig = proto.Clone(m.GetProxyProtocolConfig()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.ProxyProtocolConfig) + } + + return target +} + +// Clone function +func (m *RetryPolicy_RetryPriority) Clone() proto.Message { + var target *RetryPolicy_RetryPriority + if m == nil { + return target + } + target = &RetryPolicy_RetryPriority{} + + target.Name = m.GetName() + + switch m.ConfigType.(type) { + + case *RetryPolicy_RetryPriority_TypedConfig: + + if h, ok := interface{}(m.GetTypedConfig()).(clone.Cloner); ok { + target.ConfigType = &RetryPolicy_RetryPriority_TypedConfig{ + TypedConfig: h.Clone().(*google_golang_org_protobuf_types_known_anypb.Any), + } + } else { + target.ConfigType = &RetryPolicy_RetryPriority_TypedConfig{ + TypedConfig: proto.Clone(m.GetTypedConfig()).(*google_golang_org_protobuf_types_known_anypb.Any), + } + } + + } + + return target +} + +// Clone function +func (m *RetryPolicy_RetryHostPredicate) Clone() proto.Message { + var target *RetryPolicy_RetryHostPredicate + if m == nil { + return target + } + target = &RetryPolicy_RetryHostPredicate{} + + target.Name = m.GetName() + + switch m.ConfigType.(type) { + + case *RetryPolicy_RetryHostPredicate_TypedConfig: + + if h, ok := interface{}(m.GetTypedConfig()).(clone.Cloner); ok { + target.ConfigType = &RetryPolicy_RetryHostPredicate_TypedConfig{ + TypedConfig: h.Clone().(*google_golang_org_protobuf_types_known_anypb.Any), + } + } else { + target.ConfigType = &RetryPolicy_RetryHostPredicate_TypedConfig{ + TypedConfig: proto.Clone(m.GetTypedConfig()).(*google_golang_org_protobuf_types_known_anypb.Any), + } + } + + } + + return target +} + +// Clone function +func (m *RetryPolicy_RetryBackOff) Clone() proto.Message { + var target *RetryPolicy_RetryBackOff + if m == nil { + return target + } + target = &RetryPolicy_RetryBackOff{} + + if h, ok := interface{}(m.GetBaseInterval()).(clone.Cloner); ok { + target.BaseInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.BaseInterval = proto.Clone(m.GetBaseInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetMaxInterval()).(clone.Cloner); ok { + target.MaxInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.MaxInterval = proto.Clone(m.GetMaxInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + return target +} + +// Clone function +func (m *RateLimit_Action) Clone() proto.Message { + var target *RateLimit_Action + if m == nil { + return target + } + target = &RateLimit_Action{} + + switch m.ActionSpecifier.(type) { + + case *RateLimit_Action_SourceCluster_: + + if h, ok := interface{}(m.GetSourceCluster()).(clone.Cloner); ok { + target.ActionSpecifier = &RateLimit_Action_SourceCluster_{ + SourceCluster: h.Clone().(*RateLimit_Action_SourceCluster), + } + } else { + target.ActionSpecifier = &RateLimit_Action_SourceCluster_{ + SourceCluster: proto.Clone(m.GetSourceCluster()).(*RateLimit_Action_SourceCluster), + } + } + + case *RateLimit_Action_DestinationCluster_: + + if h, ok := interface{}(m.GetDestinationCluster()).(clone.Cloner); ok { + target.ActionSpecifier = &RateLimit_Action_DestinationCluster_{ + DestinationCluster: h.Clone().(*RateLimit_Action_DestinationCluster), + } + } else { + target.ActionSpecifier = &RateLimit_Action_DestinationCluster_{ + DestinationCluster: proto.Clone(m.GetDestinationCluster()).(*RateLimit_Action_DestinationCluster), + } + } + + case *RateLimit_Action_RequestHeaders_: + + if h, ok := interface{}(m.GetRequestHeaders()).(clone.Cloner); ok { + target.ActionSpecifier = &RateLimit_Action_RequestHeaders_{ + RequestHeaders: h.Clone().(*RateLimit_Action_RequestHeaders), + } + } else { + target.ActionSpecifier = &RateLimit_Action_RequestHeaders_{ + RequestHeaders: proto.Clone(m.GetRequestHeaders()).(*RateLimit_Action_RequestHeaders), + } + } + + case *RateLimit_Action_RemoteAddress_: + + if h, ok := interface{}(m.GetRemoteAddress()).(clone.Cloner); ok { + target.ActionSpecifier = &RateLimit_Action_RemoteAddress_{ + RemoteAddress: h.Clone().(*RateLimit_Action_RemoteAddress), + } + } else { + target.ActionSpecifier = &RateLimit_Action_RemoteAddress_{ + RemoteAddress: proto.Clone(m.GetRemoteAddress()).(*RateLimit_Action_RemoteAddress), + } + } + + case *RateLimit_Action_GenericKey_: + + if h, ok := interface{}(m.GetGenericKey()).(clone.Cloner); ok { + target.ActionSpecifier = &RateLimit_Action_GenericKey_{ + GenericKey: h.Clone().(*RateLimit_Action_GenericKey), + } + } else { + target.ActionSpecifier = &RateLimit_Action_GenericKey_{ + GenericKey: proto.Clone(m.GetGenericKey()).(*RateLimit_Action_GenericKey), + } + } + + case *RateLimit_Action_HeaderValueMatch_: + + if h, ok := interface{}(m.GetHeaderValueMatch()).(clone.Cloner); ok { + target.ActionSpecifier = &RateLimit_Action_HeaderValueMatch_{ + HeaderValueMatch: h.Clone().(*RateLimit_Action_HeaderValueMatch), + } + } else { + target.ActionSpecifier = &RateLimit_Action_HeaderValueMatch_{ + HeaderValueMatch: proto.Clone(m.GetHeaderValueMatch()).(*RateLimit_Action_HeaderValueMatch), + } + } + + case *RateLimit_Action_DynamicMetadata: + + if h, ok := interface{}(m.GetDynamicMetadata()).(clone.Cloner); ok { + target.ActionSpecifier = &RateLimit_Action_DynamicMetadata{ + DynamicMetadata: h.Clone().(*RateLimit_Action_DynamicMetaData), + } + } else { + target.ActionSpecifier = &RateLimit_Action_DynamicMetadata{ + DynamicMetadata: proto.Clone(m.GetDynamicMetadata()).(*RateLimit_Action_DynamicMetaData), + } + } + + } + + return target +} + +// Clone function +func (m *RateLimit_Override) Clone() proto.Message { + var target *RateLimit_Override + if m == nil { + return target + } + target = &RateLimit_Override{} + + switch m.OverrideSpecifier.(type) { + + case *RateLimit_Override_DynamicMetadata_: + + if h, ok := interface{}(m.GetDynamicMetadata()).(clone.Cloner); ok { + target.OverrideSpecifier = &RateLimit_Override_DynamicMetadata_{ + DynamicMetadata: h.Clone().(*RateLimit_Override_DynamicMetadata), + } + } else { + target.OverrideSpecifier = &RateLimit_Override_DynamicMetadata_{ + DynamicMetadata: proto.Clone(m.GetDynamicMetadata()).(*RateLimit_Override_DynamicMetadata), + } + } + + } + + return target +} + +// Clone function +func (m *RateLimit_Action_SourceCluster) Clone() proto.Message { + var target *RateLimit_Action_SourceCluster + if m == nil { + return target + } + target = &RateLimit_Action_SourceCluster{} + + return target +} + +// Clone function +func (m *RateLimit_Action_DestinationCluster) Clone() proto.Message { + var target *RateLimit_Action_DestinationCluster + if m == nil { + return target + } + target = &RateLimit_Action_DestinationCluster{} + + return target +} + +// Clone function +func (m *RateLimit_Action_RequestHeaders) Clone() proto.Message { + var target *RateLimit_Action_RequestHeaders + if m == nil { + return target + } + target = &RateLimit_Action_RequestHeaders{} + + target.HeaderName = m.GetHeaderName() + + target.DescriptorKey = m.GetDescriptorKey() + + target.SkipIfAbsent = m.GetSkipIfAbsent() + + return target +} + +// Clone function +func (m *RateLimit_Action_RemoteAddress) Clone() proto.Message { + var target *RateLimit_Action_RemoteAddress + if m == nil { + return target + } + target = &RateLimit_Action_RemoteAddress{} + + return target +} + +// Clone function +func (m *RateLimit_Action_GenericKey) Clone() proto.Message { + var target *RateLimit_Action_GenericKey + if m == nil { + return target + } + target = &RateLimit_Action_GenericKey{} + + target.DescriptorValue = m.GetDescriptorValue() + + return target +} + +// Clone function +func (m *RateLimit_Action_HeaderValueMatch) Clone() proto.Message { + var target *RateLimit_Action_HeaderValueMatch + if m == nil { + return target + } + target = &RateLimit_Action_HeaderValueMatch{} + + target.DescriptorValue = m.GetDescriptorValue() + + if h, ok := interface{}(m.GetExpectMatch()).(clone.Cloner); ok { + target.ExpectMatch = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.ExpectMatch = proto.Clone(m.GetExpectMatch()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if m.GetHeaders() != nil { + target.Headers = make([]*HeaderMatcher, len(m.GetHeaders())) + for idx, v := range m.GetHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Headers[idx] = h.Clone().(*HeaderMatcher) + } else { + target.Headers[idx] = proto.Clone(v).(*HeaderMatcher) + } + + } + } + + return target +} + +// Clone function +func (m *RateLimit_Action_DynamicMetaData) Clone() proto.Message { + var target *RateLimit_Action_DynamicMetaData + if m == nil { + return target + } + target = &RateLimit_Action_DynamicMetaData{} + + target.DescriptorKey = m.GetDescriptorKey() + + if h, ok := interface{}(m.GetMetadataKey()).(clone.Cloner); ok { + target.MetadataKey = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_metadata_v3.MetadataKey) + } else { + target.MetadataKey = proto.Clone(m.GetMetadataKey()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_metadata_v3.MetadataKey) + } + + return target +} + +// Clone function +func (m *RateLimit_Override_DynamicMetadata) Clone() proto.Message { + var target *RateLimit_Override_DynamicMetadata + if m == nil { + return target + } + target = &RateLimit_Override_DynamicMetadata{} + + if h, ok := interface{}(m.GetMetadataKey()).(clone.Cloner); ok { + target.MetadataKey = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_metadata_v3.MetadataKey) + } else { + target.MetadataKey = proto.Clone(m.GetMetadataKey()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_metadata_v3.MetadataKey) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/route/v3/route_components.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/config/route/v3/route_components.pb.equal.go index 117f4c778..cc39759a8 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/route/v3/route_components.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/route/v3/route_components.pb.equal.go @@ -435,6 +435,9 @@ func (m *Route) Equal(that interface{}) bool { switch m.Action.(type) { case *Route_Route: + if _, ok := target.Action.(*Route_Route); !ok { + return false + } if h, ok := interface{}(m.GetRoute()).(equality.Equalizer); ok { if !h.Equal(target.GetRoute()) { @@ -447,6 +450,9 @@ func (m *Route) Equal(that interface{}) bool { } case *Route_Redirect: + if _, ok := target.Action.(*Route_Redirect); !ok { + return false + } if h, ok := interface{}(m.GetRedirect()).(equality.Equalizer); ok { if !h.Equal(target.GetRedirect()) { @@ -459,6 +465,9 @@ func (m *Route) Equal(that interface{}) bool { } case *Route_DirectResponse: + if _, ok := target.Action.(*Route_DirectResponse); !ok { + return false + } if h, ok := interface{}(m.GetDirectResponse()).(equality.Equalizer); ok { if !h.Equal(target.GetDirectResponse()) { @@ -471,6 +480,9 @@ func (m *Route) Equal(that interface{}) bool { } case *Route_FilterAction: + if _, ok := target.Action.(*Route_FilterAction); !ok { + return false + } if h, ok := interface{}(m.GetFilterAction()).(equality.Equalizer); ok { if !h.Equal(target.GetFilterAction()) { @@ -482,6 +494,11 @@ func (m *Route) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.Action != target.Action { + return false + } } return true @@ -640,18 +657,27 @@ func (m *RouteMatch) Equal(that interface{}) bool { switch m.PathSpecifier.(type) { case *RouteMatch_Prefix: + if _, ok := target.PathSpecifier.(*RouteMatch_Prefix); !ok { + return false + } if strings.Compare(m.GetPrefix(), target.GetPrefix()) != 0 { return false } case *RouteMatch_Path: + if _, ok := target.PathSpecifier.(*RouteMatch_Path); !ok { + return false + } if strings.Compare(m.GetPath(), target.GetPath()) != 0 { return false } case *RouteMatch_SafeRegex: + if _, ok := target.PathSpecifier.(*RouteMatch_SafeRegex); !ok { + return false + } if h, ok := interface{}(m.GetSafeRegex()).(equality.Equalizer); ok { if !h.Equal(target.GetSafeRegex()) { @@ -664,6 +690,9 @@ func (m *RouteMatch) Equal(that interface{}) bool { } case *RouteMatch_ConnectMatcher_: + if _, ok := target.PathSpecifier.(*RouteMatch_ConnectMatcher_); !ok { + return false + } if h, ok := interface{}(m.GetConnectMatcher()).(equality.Equalizer); ok { if !h.Equal(target.GetConnectMatcher()) { @@ -675,6 +704,11 @@ func (m *RouteMatch) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.PathSpecifier != target.PathSpecifier { + return false + } } return true @@ -757,6 +791,9 @@ func (m *CorsPolicy) Equal(that interface{}) bool { switch m.EnabledSpecifier.(type) { case *CorsPolicy_FilterEnabled: + if _, ok := target.EnabledSpecifier.(*CorsPolicy_FilterEnabled); !ok { + return false + } if h, ok := interface{}(m.GetFilterEnabled()).(equality.Equalizer); ok { if !h.Equal(target.GetFilterEnabled()) { @@ -768,6 +805,11 @@ func (m *CorsPolicy) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.EnabledSpecifier != target.EnabledSpecifier { + return false + } } return true @@ -1011,18 +1053,27 @@ func (m *RouteAction) Equal(that interface{}) bool { switch m.ClusterSpecifier.(type) { case *RouteAction_Cluster: + if _, ok := target.ClusterSpecifier.(*RouteAction_Cluster); !ok { + return false + } if strings.Compare(m.GetCluster(), target.GetCluster()) != 0 { return false } case *RouteAction_ClusterHeader: + if _, ok := target.ClusterSpecifier.(*RouteAction_ClusterHeader); !ok { + return false + } if strings.Compare(m.GetClusterHeader(), target.GetClusterHeader()) != 0 { return false } case *RouteAction_WeightedClusters: + if _, ok := target.ClusterSpecifier.(*RouteAction_WeightedClusters); !ok { + return false + } if h, ok := interface{}(m.GetWeightedClusters()).(equality.Equalizer); ok { if !h.Equal(target.GetWeightedClusters()) { @@ -1034,17 +1085,28 @@ func (m *RouteAction) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.ClusterSpecifier != target.ClusterSpecifier { + return false + } } switch m.HostRewriteSpecifier.(type) { case *RouteAction_HostRewriteLiteral: + if _, ok := target.HostRewriteSpecifier.(*RouteAction_HostRewriteLiteral); !ok { + return false + } if strings.Compare(m.GetHostRewriteLiteral(), target.GetHostRewriteLiteral()) != 0 { return false } case *RouteAction_AutoHostRewrite: + if _, ok := target.HostRewriteSpecifier.(*RouteAction_AutoHostRewrite); !ok { + return false + } if h, ok := interface{}(m.GetAutoHostRewrite()).(equality.Equalizer); ok { if !h.Equal(target.GetAutoHostRewrite()) { @@ -1057,11 +1119,19 @@ func (m *RouteAction) Equal(that interface{}) bool { } case *RouteAction_HostRewriteHeader: + if _, ok := target.HostRewriteSpecifier.(*RouteAction_HostRewriteHeader); !ok { + return false + } if strings.Compare(m.GetHostRewriteHeader(), target.GetHostRewriteHeader()) != 0 { return false } + default: + // m is nil but target is not nil + if m.HostRewriteSpecifier != target.HostRewriteSpecifier { + return false + } } return true @@ -1289,33 +1359,55 @@ func (m *RedirectAction) Equal(that interface{}) bool { switch m.SchemeRewriteSpecifier.(type) { case *RedirectAction_HttpsRedirect: + if _, ok := target.SchemeRewriteSpecifier.(*RedirectAction_HttpsRedirect); !ok { + return false + } if m.GetHttpsRedirect() != target.GetHttpsRedirect() { return false } case *RedirectAction_SchemeRedirect: + if _, ok := target.SchemeRewriteSpecifier.(*RedirectAction_SchemeRedirect); !ok { + return false + } if strings.Compare(m.GetSchemeRedirect(), target.GetSchemeRedirect()) != 0 { return false } + default: + // m is nil but target is not nil + if m.SchemeRewriteSpecifier != target.SchemeRewriteSpecifier { + return false + } } switch m.PathRewriteSpecifier.(type) { case *RedirectAction_PathRedirect: + if _, ok := target.PathRewriteSpecifier.(*RedirectAction_PathRedirect); !ok { + return false + } if strings.Compare(m.GetPathRedirect(), target.GetPathRedirect()) != 0 { return false } case *RedirectAction_PrefixRewrite: + if _, ok := target.PathRewriteSpecifier.(*RedirectAction_PrefixRewrite); !ok { + return false + } if strings.Compare(m.GetPrefixRewrite(), target.GetPrefixRewrite()) != 0 { return false } + default: + // m is nil but target is not nil + if m.PathRewriteSpecifier != target.PathRewriteSpecifier { + return false + } } return true @@ -1610,12 +1702,18 @@ func (m *HeaderMatcher) Equal(that interface{}) bool { switch m.HeaderMatchSpecifier.(type) { case *HeaderMatcher_ExactMatch: + if _, ok := target.HeaderMatchSpecifier.(*HeaderMatcher_ExactMatch); !ok { + return false + } if strings.Compare(m.GetExactMatch(), target.GetExactMatch()) != 0 { return false } case *HeaderMatcher_SafeRegexMatch: + if _, ok := target.HeaderMatchSpecifier.(*HeaderMatcher_SafeRegexMatch); !ok { + return false + } if h, ok := interface{}(m.GetSafeRegexMatch()).(equality.Equalizer); ok { if !h.Equal(target.GetSafeRegexMatch()) { @@ -1628,6 +1726,9 @@ func (m *HeaderMatcher) Equal(that interface{}) bool { } case *HeaderMatcher_RangeMatch: + if _, ok := target.HeaderMatchSpecifier.(*HeaderMatcher_RangeMatch); !ok { + return false + } if h, ok := interface{}(m.GetRangeMatch()).(equality.Equalizer); ok { if !h.Equal(target.GetRangeMatch()) { @@ -1640,23 +1741,37 @@ func (m *HeaderMatcher) Equal(that interface{}) bool { } case *HeaderMatcher_PresentMatch: + if _, ok := target.HeaderMatchSpecifier.(*HeaderMatcher_PresentMatch); !ok { + return false + } if m.GetPresentMatch() != target.GetPresentMatch() { return false } case *HeaderMatcher_PrefixMatch: + if _, ok := target.HeaderMatchSpecifier.(*HeaderMatcher_PrefixMatch); !ok { + return false + } if strings.Compare(m.GetPrefixMatch(), target.GetPrefixMatch()) != 0 { return false } case *HeaderMatcher_SuffixMatch: + if _, ok := target.HeaderMatchSpecifier.(*HeaderMatcher_SuffixMatch); !ok { + return false + } if strings.Compare(m.GetSuffixMatch(), target.GetSuffixMatch()) != 0 { return false } + default: + // m is nil but target is not nil + if m.HeaderMatchSpecifier != target.HeaderMatchSpecifier { + return false + } } return true @@ -1690,6 +1805,9 @@ func (m *QueryParameterMatcher) Equal(that interface{}) bool { switch m.QueryParameterMatchSpecifier.(type) { case *QueryParameterMatcher_StringMatch: + if _, ok := target.QueryParameterMatchSpecifier.(*QueryParameterMatcher_StringMatch); !ok { + return false + } if h, ok := interface{}(m.GetStringMatch()).(equality.Equalizer); ok { if !h.Equal(target.GetStringMatch()) { @@ -1702,11 +1820,19 @@ func (m *QueryParameterMatcher) Equal(that interface{}) bool { } case *QueryParameterMatcher_PresentMatch: + if _, ok := target.QueryParameterMatchSpecifier.(*QueryParameterMatcher_PresentMatch); !ok { + return false + } if m.GetPresentMatch() != target.GetPresentMatch() { return false } + default: + // m is nil but target is not nil + if m.QueryParameterMatchSpecifier != target.QueryParameterMatchSpecifier { + return false + } } return true @@ -2067,6 +2193,9 @@ func (m *RouteAction_HashPolicy) Equal(that interface{}) bool { switch m.PolicySpecifier.(type) { case *RouteAction_HashPolicy_Header_: + if _, ok := target.PolicySpecifier.(*RouteAction_HashPolicy_Header_); !ok { + return false + } if h, ok := interface{}(m.GetHeader()).(equality.Equalizer); ok { if !h.Equal(target.GetHeader()) { @@ -2079,6 +2208,9 @@ func (m *RouteAction_HashPolicy) Equal(that interface{}) bool { } case *RouteAction_HashPolicy_Cookie_: + if _, ok := target.PolicySpecifier.(*RouteAction_HashPolicy_Cookie_); !ok { + return false + } if h, ok := interface{}(m.GetCookie()).(equality.Equalizer); ok { if !h.Equal(target.GetCookie()) { @@ -2091,6 +2223,9 @@ func (m *RouteAction_HashPolicy) Equal(that interface{}) bool { } case *RouteAction_HashPolicy_ConnectionProperties_: + if _, ok := target.PolicySpecifier.(*RouteAction_HashPolicy_ConnectionProperties_); !ok { + return false + } if h, ok := interface{}(m.GetConnectionProperties()).(equality.Equalizer); ok { if !h.Equal(target.GetConnectionProperties()) { @@ -2103,6 +2238,9 @@ func (m *RouteAction_HashPolicy) Equal(that interface{}) bool { } case *RouteAction_HashPolicy_QueryParameter_: + if _, ok := target.PolicySpecifier.(*RouteAction_HashPolicy_QueryParameter_); !ok { + return false + } if h, ok := interface{}(m.GetQueryParameter()).(equality.Equalizer); ok { if !h.Equal(target.GetQueryParameter()) { @@ -2115,6 +2253,9 @@ func (m *RouteAction_HashPolicy) Equal(that interface{}) bool { } case *RouteAction_HashPolicy_FilterState_: + if _, ok := target.PolicySpecifier.(*RouteAction_HashPolicy_FilterState_); !ok { + return false + } if h, ok := interface{}(m.GetFilterState()).(equality.Equalizer); ok { if !h.Equal(target.GetFilterState()) { @@ -2126,6 +2267,11 @@ func (m *RouteAction_HashPolicy) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.PolicySpecifier != target.PolicySpecifier { + return false + } } return true @@ -2405,6 +2551,9 @@ func (m *RetryPolicy_RetryPriority) Equal(that interface{}) bool { switch m.ConfigType.(type) { case *RetryPolicy_RetryPriority_TypedConfig: + if _, ok := target.ConfigType.(*RetryPolicy_RetryPriority_TypedConfig); !ok { + return false + } if h, ok := interface{}(m.GetTypedConfig()).(equality.Equalizer); ok { if !h.Equal(target.GetTypedConfig()) { @@ -2416,6 +2565,11 @@ func (m *RetryPolicy_RetryPriority) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.ConfigType != target.ConfigType { + return false + } } return true @@ -2449,6 +2603,9 @@ func (m *RetryPolicy_RetryHostPredicate) Equal(that interface{}) bool { switch m.ConfigType.(type) { case *RetryPolicy_RetryHostPredicate_TypedConfig: + if _, ok := target.ConfigType.(*RetryPolicy_RetryHostPredicate_TypedConfig); !ok { + return false + } if h, ok := interface{}(m.GetTypedConfig()).(equality.Equalizer); ok { if !h.Equal(target.GetTypedConfig()) { @@ -2460,6 +2617,11 @@ func (m *RetryPolicy_RetryHostPredicate) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.ConfigType != target.ConfigType { + return false + } } return true @@ -2533,6 +2695,9 @@ func (m *RateLimit_Action) Equal(that interface{}) bool { switch m.ActionSpecifier.(type) { case *RateLimit_Action_SourceCluster_: + if _, ok := target.ActionSpecifier.(*RateLimit_Action_SourceCluster_); !ok { + return false + } if h, ok := interface{}(m.GetSourceCluster()).(equality.Equalizer); ok { if !h.Equal(target.GetSourceCluster()) { @@ -2545,6 +2710,9 @@ func (m *RateLimit_Action) Equal(that interface{}) bool { } case *RateLimit_Action_DestinationCluster_: + if _, ok := target.ActionSpecifier.(*RateLimit_Action_DestinationCluster_); !ok { + return false + } if h, ok := interface{}(m.GetDestinationCluster()).(equality.Equalizer); ok { if !h.Equal(target.GetDestinationCluster()) { @@ -2557,6 +2725,9 @@ func (m *RateLimit_Action) Equal(that interface{}) bool { } case *RateLimit_Action_RequestHeaders_: + if _, ok := target.ActionSpecifier.(*RateLimit_Action_RequestHeaders_); !ok { + return false + } if h, ok := interface{}(m.GetRequestHeaders()).(equality.Equalizer); ok { if !h.Equal(target.GetRequestHeaders()) { @@ -2569,6 +2740,9 @@ func (m *RateLimit_Action) Equal(that interface{}) bool { } case *RateLimit_Action_RemoteAddress_: + if _, ok := target.ActionSpecifier.(*RateLimit_Action_RemoteAddress_); !ok { + return false + } if h, ok := interface{}(m.GetRemoteAddress()).(equality.Equalizer); ok { if !h.Equal(target.GetRemoteAddress()) { @@ -2581,6 +2755,9 @@ func (m *RateLimit_Action) Equal(that interface{}) bool { } case *RateLimit_Action_GenericKey_: + if _, ok := target.ActionSpecifier.(*RateLimit_Action_GenericKey_); !ok { + return false + } if h, ok := interface{}(m.GetGenericKey()).(equality.Equalizer); ok { if !h.Equal(target.GetGenericKey()) { @@ -2593,6 +2770,9 @@ func (m *RateLimit_Action) Equal(that interface{}) bool { } case *RateLimit_Action_HeaderValueMatch_: + if _, ok := target.ActionSpecifier.(*RateLimit_Action_HeaderValueMatch_); !ok { + return false + } if h, ok := interface{}(m.GetHeaderValueMatch()).(equality.Equalizer); ok { if !h.Equal(target.GetHeaderValueMatch()) { @@ -2605,6 +2785,9 @@ func (m *RateLimit_Action) Equal(that interface{}) bool { } case *RateLimit_Action_DynamicMetadata: + if _, ok := target.ActionSpecifier.(*RateLimit_Action_DynamicMetadata); !ok { + return false + } if h, ok := interface{}(m.GetDynamicMetadata()).(equality.Equalizer); ok { if !h.Equal(target.GetDynamicMetadata()) { @@ -2616,6 +2799,11 @@ func (m *RateLimit_Action) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.ActionSpecifier != target.ActionSpecifier { + return false + } } return true @@ -2645,6 +2833,9 @@ func (m *RateLimit_Override) Equal(that interface{}) bool { switch m.OverrideSpecifier.(type) { case *RateLimit_Override_DynamicMetadata_: + if _, ok := target.OverrideSpecifier.(*RateLimit_Override_DynamicMetadata_); !ok { + return false + } if h, ok := interface{}(m.GetDynamicMetadata()).(equality.Equalizer); ok { if !h.Equal(target.GetDynamicMetadata()) { @@ -2656,6 +2847,11 @@ func (m *RateLimit_Override) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.OverrideSpecifier != target.OverrideSpecifier { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/external/envoy/config/route/v3/route_components.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/route/v3/route_components.pb.go index e1e2ac8d6..74c8ad682 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/route/v3/route_components.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/route/v3/route_components.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/route/v3/route_components.proto @@ -9,13 +9,9 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - any "github.com/golang/protobuf/ptypes/any" - duration "github.com/golang/protobuf/ptypes/duration" - _ "github.com/golang/protobuf/ptypes/struct" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" v31 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3" @@ -25,6 +21,10 @@ import ( _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" + durationpb "google.golang.org/protobuf/types/known/durationpb" + _ "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -34,10 +34,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type VirtualHost_TlsRequirementType int32 const ( @@ -140,10 +136,10 @@ func (RouteAction_ClusterNotFoundResponseCode) EnumDescriptor() ([]byte, []int) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{6, 0} } -// Configures :ref:`internal redirect ` behavior. +// Configures internal redirect behavior. // [#next-major-version: remove this definition - it's defined in the InternalRedirectPolicy message.] // -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/route/v3/route_components.proto. type RouteAction_InternalRedirectAction int32 const ( @@ -257,10 +253,7 @@ func (RedirectAction_RedirectResponseCode) EnumDescriptor() ([]byte, []int) { // upstream cluster to route to or whether to perform a redirect. // [#next-free-field: 21] type VirtualHost struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The logical name of the virtual host. This is used when emitting certain // statistics but is not relevant for routing. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` @@ -268,18 +261,18 @@ type VirtualHost struct { // virtual host. Wildcard hosts are supported in the suffix or prefix form. // // Domain search order: - // 1. Exact domain names: ``www.foo.com``. - // 2. Suffix domain wildcards: ``*.foo.com`` or ``*-bar.foo.com``. - // 3. Prefix domain wildcards: ``foo.*`` or ``foo-*``. - // 4. Special wildcard ``*`` matching any domain. + // 1. Exact domain names: `www.foo.com`. + // 2. Suffix domain wildcards: `*.foo.com` or `*-bar.foo.com`. + // 3. Prefix domain wildcards: `foo.*` or `foo-*`. + // 4. Special wildcard `*` matching any domain. // - // .. note:: + // **Note**: // - // The wildcard will not match the empty string. - // e.g. ``*-bar.foo.com`` will match ``baz-bar.foo.com`` but not ``-bar.foo.com``. - // The longest wildcards match first. - // Only a single virtual host in the entire route configuration can match on ``*``. A domain - // must be unique across all virtual hosts or the config will fail to load. + // The wildcard will not match the empty string. + // e.g. `*-bar.foo.com` will match `baz-bar.foo.com` but not `-bar.foo.com`. + // The longest wildcards match first. + // Only a single virtual host in the entire route configuration can match on `*`. A domain + // must be unique across all virtual hosts or the config will fail to load. // // Domains cannot contain control characters. This is validated by the well_known_regex HTTP_HEADER_VALUE. Domains []string `protobuf:"bytes,2,rep,name=domains,proto3" json:"domains,omitempty"` @@ -322,7 +315,7 @@ type VirtualHost struct { // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter // specific; see the :ref:`HTTP filter documentation ` // for if and how it is utilized. - TypedPerFilterConfig map[string]*any.Any `protobuf:"bytes,15,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + TypedPerFilterConfig map[string]*anypb.Any `protobuf:"bytes,15,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Decides whether the :ref:`x-envoy-attempt-count // ` header should be included // in the upstream request. Setting this option will cause it to override any existing header @@ -350,9 +343,9 @@ type VirtualHost struct { // [#not-implemented-hide:] // Specifies the configuration for retry policy extension. Note that setting a route level entry // will take precedence over this config and it'll be treated independently (e.g.: values are not - // inherited). :ref:`Retry policy ` should not be + // inherited). Retry policy should not be // set if this field is used. - RetryPolicyTypedConfig *any.Any `protobuf:"bytes,20,opt,name=retry_policy_typed_config,json=retryPolicyTypedConfig,proto3" json:"retry_policy_typed_config,omitempty"` + RetryPolicyTypedConfig *anypb.Any `protobuf:"bytes,20,opt,name=retry_policy_typed_config,json=retryPolicyTypedConfig,proto3" json:"retry_policy_typed_config,omitempty"` // Indicates the hedge policy for all routes in this virtual host. Note that setting a // route level entry will take precedence over this config and it'll be treated // independently (e.g.: values are not inherited). @@ -360,16 +353,16 @@ type VirtualHost struct { // The maximum bytes which will be buffered for retries and shadowing. // If set and a route-specific limit is not set, the bytes actually buffered will be the minimum // value of this and the listener per_connection_buffer_limit_bytes. - PerRequestBufferLimitBytes *wrappers.UInt32Value `protobuf:"bytes,18,opt,name=per_request_buffer_limit_bytes,json=perRequestBufferLimitBytes,proto3" json:"per_request_buffer_limit_bytes,omitempty"` + PerRequestBufferLimitBytes *wrapperspb.UInt32Value `protobuf:"bytes,18,opt,name=per_request_buffer_limit_bytes,json=perRequestBufferLimitBytes,proto3" json:"per_request_buffer_limit_bytes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VirtualHost) Reset() { *x = VirtualHost{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VirtualHost) String() string { @@ -380,7 +373,7 @@ func (*VirtualHost) ProtoMessage() {} func (x *VirtualHost) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -472,7 +465,7 @@ func (x *VirtualHost) GetCors() *CorsPolicy { return nil } -func (x *VirtualHost) GetTypedPerFilterConfig() map[string]*any.Any { +func (x *VirtualHost) GetTypedPerFilterConfig() map[string]*anypb.Any { if x != nil { return x.TypedPerFilterConfig } @@ -500,7 +493,7 @@ func (x *VirtualHost) GetRetryPolicy() *RetryPolicy { return nil } -func (x *VirtualHost) GetRetryPolicyTypedConfig() *any.Any { +func (x *VirtualHost) GetRetryPolicyTypedConfig() *anypb.Any { if x != nil { return x.RetryPolicyTypedConfig } @@ -514,7 +507,7 @@ func (x *VirtualHost) GetHedgePolicy() *HedgePolicy { return nil } -func (x *VirtualHost) GetPerRequestBufferLimitBytes() *wrappers.UInt32Value { +func (x *VirtualHost) GetPerRequestBufferLimitBytes() *wrapperspb.UInt32Value { if x != nil { return x.PerRequestBufferLimitBytes } @@ -523,20 +516,17 @@ func (x *VirtualHost) GetPerRequestBufferLimitBytes() *wrappers.UInt32Value { // A filter-defined action type. type FilterAction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Action *anypb.Any `protobuf:"bytes,1,opt,name=action,proto3" json:"action,omitempty"` unknownFields protoimpl.UnknownFields - - Action *any.Any `protobuf:"bytes,1,opt,name=action,proto3" json:"action,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FilterAction) Reset() { *x = FilterAction{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FilterAction) String() string { @@ -547,7 +537,7 @@ func (*FilterAction) ProtoMessage() {} func (x *FilterAction) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -562,7 +552,7 @@ func (*FilterAction) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{1} } -func (x *FilterAction) GetAction() *any.Any { +func (x *FilterAction) GetAction() *anypb.Any { if x != nil { return x.Action } @@ -572,21 +562,20 @@ func (x *FilterAction) GetAction() *any.Any { // A route is both a specification of how to match a request as well as an indication of what to do // next (e.g., redirect, forward, rewrite, etc.). // -// .. attention:: +// **Attention**: +// +// Envoy supports routing on HTTP method via :ref:`header matching +// `. // -// Envoy supports routing on HTTP method via :ref:`header matching -// `. // [#next-free-field: 18] type Route struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Name for the route. Name string `protobuf:"bytes,14,opt,name=name,proto3" json:"name,omitempty"` // Route matching parameters. Match *RouteMatch `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"` - // Types that are assignable to Action: + // Types that are valid to be assigned to Action: + // // *Route_Route // *Route_Redirect // *Route_DirectResponse @@ -603,9 +592,9 @@ type Route struct { // The typed_per_filter_config field can be used to provide route-specific // configurations for filters. The key should match the filter name, such as // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter - // specific; see the :ref:`HTTP filter documentation ` for + // specific; see the HTTP filter documentation for // if and how it is utilized. - TypedPerFilterConfig map[string]*any.Any `protobuf:"bytes,13,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + TypedPerFilterConfig map[string]*anypb.Any `protobuf:"bytes,13,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Specifies a set of headers that will be added to requests matching this // route. Headers specified at this level are applied before headers from the // enclosing :ref:`envoy_api_msg_config.route.v3.VirtualHost` and @@ -621,7 +610,7 @@ type Route struct { // headers from the enclosing :ref:`envoy_api_msg_config.route.v3.VirtualHost` and // :ref:`envoy_api_msg_config.route.v3.RouteConfiguration`. For more information, including // details on header value syntax, see the documentation on - // :ref:`custom request headers `. + // custom request headers. ResponseHeadersToAdd []*v3.HeaderValueOption `protobuf:"bytes,10,rep,name=response_headers_to_add,json=responseHeadersToAdd,proto3" json:"response_headers_to_add,omitempty"` // Specifies a list of HTTP headers that should be removed from each response // to requests matching this route. @@ -632,16 +621,16 @@ type Route struct { // The maximum bytes which will be buffered for retries and shadowing. // If set, the bytes actually buffered will be the minimum value of this and the // listener per_connection_buffer_limit_bytes. - PerRequestBufferLimitBytes *wrappers.UInt32Value `protobuf:"bytes,16,opt,name=per_request_buffer_limit_bytes,json=perRequestBufferLimitBytes,proto3" json:"per_request_buffer_limit_bytes,omitempty"` + PerRequestBufferLimitBytes *wrapperspb.UInt32Value `protobuf:"bytes,16,opt,name=per_request_buffer_limit_bytes,json=perRequestBufferLimitBytes,proto3" json:"per_request_buffer_limit_bytes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Route) Reset() { *x = Route{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Route) String() string { @@ -652,7 +641,7 @@ func (*Route) ProtoMessage() {} func (x *Route) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -681,37 +670,45 @@ func (x *Route) GetMatch() *RouteMatch { return nil } -func (m *Route) GetAction() isRoute_Action { - if m != nil { - return m.Action +func (x *Route) GetAction() isRoute_Action { + if x != nil { + return x.Action } return nil } func (x *Route) GetRoute() *RouteAction { - if x, ok := x.GetAction().(*Route_Route); ok { - return x.Route + if x != nil { + if x, ok := x.Action.(*Route_Route); ok { + return x.Route + } } return nil } func (x *Route) GetRedirect() *RedirectAction { - if x, ok := x.GetAction().(*Route_Redirect); ok { - return x.Redirect + if x != nil { + if x, ok := x.Action.(*Route_Redirect); ok { + return x.Redirect + } } return nil } func (x *Route) GetDirectResponse() *DirectResponseAction { - if x, ok := x.GetAction().(*Route_DirectResponse); ok { - return x.DirectResponse + if x != nil { + if x, ok := x.Action.(*Route_DirectResponse); ok { + return x.DirectResponse + } } return nil } func (x *Route) GetFilterAction() *FilterAction { - if x, ok := x.GetAction().(*Route_FilterAction); ok { - return x.FilterAction + if x != nil { + if x, ok := x.Action.(*Route_FilterAction); ok { + return x.FilterAction + } } return nil } @@ -730,7 +727,7 @@ func (x *Route) GetDecorator() *Decorator { return nil } -func (x *Route) GetTypedPerFilterConfig() map[string]*any.Any { +func (x *Route) GetTypedPerFilterConfig() map[string]*anypb.Any { if x != nil { return x.TypedPerFilterConfig } @@ -772,7 +769,7 @@ func (x *Route) GetTracing() *Tracing { return nil } -func (x *Route) GetPerRequestBufferLimitBytes() *wrappers.UInt32Value { +func (x *Route) GetPerRequestBufferLimitBytes() *wrapperspb.UInt32Value { if x != nil { return x.PerRequestBufferLimitBytes } @@ -815,22 +812,19 @@ func (*Route_DirectResponse) isRoute_Action() {} func (*Route_FilterAction) isRoute_Action() {} -// Compared to the :ref:`cluster ` field that specifies a +// Compared to the cluster field that specifies a // single upstream cluster as the target of a request, the :ref:`weighted_clusters // ` option allows for specification of // multiple upstream clusters along with weights that indicate the percentage of // traffic to be forwarded to each cluster. The router selects an upstream cluster based on the // weights. type WeightedCluster struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies one or more upstream clusters associated with the route. Clusters []*WeightedCluster_ClusterWeight `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"` // Specifies the total weight across all clusters. The sum of all cluster weights must equal this // value, which must be greater than 0. Defaults to 100. - TotalWeight *wrappers.UInt32Value `protobuf:"bytes,3,opt,name=total_weight,json=totalWeight,proto3" json:"total_weight,omitempty"` + TotalWeight *wrapperspb.UInt32Value `protobuf:"bytes,3,opt,name=total_weight,json=totalWeight,proto3" json:"total_weight,omitempty"` // Specifies the runtime key prefix that should be used to construct the // runtime keys associated with each cluster. When the *runtime_key_prefix* is // specified, the router will look for weights associated with each upstream @@ -840,15 +834,15 @@ type WeightedCluster struct { // configuration file will be used as the default weight. See the :ref:`runtime documentation // ` for how key names map to the underlying implementation. RuntimeKeyPrefix string `protobuf:"bytes,2,opt,name=runtime_key_prefix,json=runtimeKeyPrefix,proto3" json:"runtime_key_prefix,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WeightedCluster) Reset() { *x = WeightedCluster{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WeightedCluster) String() string { @@ -859,7 +853,7 @@ func (*WeightedCluster) ProtoMessage() {} func (x *WeightedCluster) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -881,7 +875,7 @@ func (x *WeightedCluster) GetClusters() []*WeightedCluster_ClusterWeight { return nil } -func (x *WeightedCluster) GetTotalWeight() *wrappers.UInt32Value { +func (x *WeightedCluster) GetTotalWeight() *wrapperspb.UInt32Value { if x != nil { return x.TotalWeight } @@ -897,11 +891,9 @@ func (x *WeightedCluster) GetRuntimeKeyPrefix() string { // [#next-free-field: 13] type RouteMatch struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to PathSpecifier: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to PathSpecifier: + // // *RouteMatch_Prefix // *RouteMatch_Path // *RouteMatch_SafeRegex @@ -909,7 +901,7 @@ type RouteMatch struct { PathSpecifier isRouteMatch_PathSpecifier `protobuf_oneof:"path_specifier"` // Indicates that prefix/path matching should be case insensitive. The default // is true. - CaseSensitive *wrappers.BoolValue `protobuf:"bytes,4,opt,name=case_sensitive,json=caseSensitive,proto3" json:"case_sensitive,omitempty"` + CaseSensitive *wrapperspb.BoolValue `protobuf:"bytes,4,opt,name=case_sensitive,json=caseSensitive,proto3" json:"case_sensitive,omitempty"` // Indicates that the route should additionally match on a runtime key. Every time the route // is considered for a match, it must also fall under the percentage of matches indicated by // this field. For some fraction N/D, a random number in the range [0,D) is selected. If the @@ -919,13 +911,13 @@ type RouteMatch struct { // code/config deploys. Refer to the :ref:`traffic shifting // ` docs for additional documentation. // - // .. note:: + // **Note**: // - // Parsing this field is implemented such that the runtime key's data may be represented - // as a FractionalPercent proto represented as JSON/YAML and may also be represented as an - // integer with the assumption that the value is an integral percentage out of 100. For - // instance, a runtime key lookup returning the value "42" would parse as a FractionalPercent - // whose numerator is 42 and denominator is HUNDRED. This preserves legacy semantics. + // Parsing this field is implemented such that the runtime key's data may be represented + // as a FractionalPercent proto represented as JSON/YAML and may also be represented as an + // integer with the assumption that the value is an integral percentage out of 100. For + // instance, a runtime key lookup returning the value "42" would parse as a FractionalPercent + // whose numerator is 42 and denominator is HUNDRED. This preserves legacy semantics. RuntimeFraction *v3.RuntimeFractionalPercent `protobuf:"bytes,9,opt,name=runtime_fraction,json=runtimeFraction,proto3" json:"runtime_fraction,omitempty"` // Specifies a set of headers that the route should match on. The router will // check the request’s headers against all the specified headers in the route @@ -947,16 +939,16 @@ type RouteMatch struct { // match options. // // [#next-major-version: unify with RBAC] - TlsContext *RouteMatch_TlsContextMatchOptions `protobuf:"bytes,11,opt,name=tls_context,json=tlsContext,proto3" json:"tls_context,omitempty"` + TlsContext *RouteMatch_TlsContextMatchOptions `protobuf:"bytes,11,opt,name=tls_context,json=tlsContext,proto3" json:"tls_context,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteMatch) Reset() { *x = RouteMatch{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteMatch) String() string { @@ -967,7 +959,7 @@ func (*RouteMatch) ProtoMessage() {} func (x *RouteMatch) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -982,42 +974,50 @@ func (*RouteMatch) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{4} } -func (m *RouteMatch) GetPathSpecifier() isRouteMatch_PathSpecifier { - if m != nil { - return m.PathSpecifier +func (x *RouteMatch) GetPathSpecifier() isRouteMatch_PathSpecifier { + if x != nil { + return x.PathSpecifier } return nil } func (x *RouteMatch) GetPrefix() string { - if x, ok := x.GetPathSpecifier().(*RouteMatch_Prefix); ok { - return x.Prefix + if x != nil { + if x, ok := x.PathSpecifier.(*RouteMatch_Prefix); ok { + return x.Prefix + } } return "" } func (x *RouteMatch) GetPath() string { - if x, ok := x.GetPathSpecifier().(*RouteMatch_Path); ok { - return x.Path + if x != nil { + if x, ok := x.PathSpecifier.(*RouteMatch_Path); ok { + return x.Path + } } return "" } func (x *RouteMatch) GetSafeRegex() *v31.RegexMatcher { - if x, ok := x.GetPathSpecifier().(*RouteMatch_SafeRegex); ok { - return x.SafeRegex + if x != nil { + if x, ok := x.PathSpecifier.(*RouteMatch_SafeRegex); ok { + return x.SafeRegex + } } return nil } func (x *RouteMatch) GetConnectMatcher() *RouteMatch_ConnectMatcher { - if x, ok := x.GetPathSpecifier().(*RouteMatch_ConnectMatcher_); ok { - return x.ConnectMatcher + if x != nil { + if x, ok := x.PathSpecifier.(*RouteMatch_ConnectMatcher_); ok { + return x.ConnectMatcher + } } return nil } -func (x *RouteMatch) GetCaseSensitive() *wrappers.BoolValue { +func (x *RouteMatch) GetCaseSensitive() *wrapperspb.BoolValue { if x != nil { return x.CaseSensitive } @@ -1114,10 +1114,7 @@ func (*RouteMatch_ConnectMatcher_) isRouteMatch_PathSpecifier() {} // [#next-free-field: 12] type CorsPolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies string patterns that match allowed origins. An origin is allowed if any of the // string matchers match. AllowOriginStringMatch []*v31.StringMatcher `protobuf:"bytes,11,rep,name=allow_origin_string_match,json=allowOriginStringMatch,proto3" json:"allow_origin_string_match,omitempty"` @@ -1130,29 +1127,30 @@ type CorsPolicy struct { // Specifies the content for the *access-control-max-age* header. MaxAge string `protobuf:"bytes,5,opt,name=max_age,json=maxAge,proto3" json:"max_age,omitempty"` // Specifies whether the resource allows credentials. - AllowCredentials *wrappers.BoolValue `protobuf:"bytes,6,opt,name=allow_credentials,json=allowCredentials,proto3" json:"allow_credentials,omitempty"` - // Types that are assignable to EnabledSpecifier: + AllowCredentials *wrapperspb.BoolValue `protobuf:"bytes,6,opt,name=allow_credentials,json=allowCredentials,proto3" json:"allow_credentials,omitempty"` + // Types that are valid to be assigned to EnabledSpecifier: + // // *CorsPolicy_FilterEnabled EnabledSpecifier isCorsPolicy_EnabledSpecifier `protobuf_oneof:"enabled_specifier"` // Specifies the % of requests for which the CORS policies will be evaluated and tracked, but not // enforced. // - // This field is intended to be used when ``filter_enabled`` and ``enabled`` are off. One of those + // This field is intended to be used when `filter_enabled` and `enabled` are off. One of those // fields have to explicitly disable the filter in order for this setting to take effect. // - // If :ref:`runtime_key ` is specified, + // If runtime_key is specified, // Envoy will lookup the runtime key to get the percentage of requests for which it will evaluate // and track the request's *Origin* to determine if it's valid but will not enforce any policies. ShadowEnabled *v3.RuntimeFractionalPercent `protobuf:"bytes,10,opt,name=shadow_enabled,json=shadowEnabled,proto3" json:"shadow_enabled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CorsPolicy) Reset() { *x = CorsPolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CorsPolicy) String() string { @@ -1163,7 +1161,7 @@ func (*CorsPolicy) ProtoMessage() {} func (x *CorsPolicy) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1213,23 +1211,25 @@ func (x *CorsPolicy) GetMaxAge() string { return "" } -func (x *CorsPolicy) GetAllowCredentials() *wrappers.BoolValue { +func (x *CorsPolicy) GetAllowCredentials() *wrapperspb.BoolValue { if x != nil { return x.AllowCredentials } return nil } -func (m *CorsPolicy) GetEnabledSpecifier() isCorsPolicy_EnabledSpecifier { - if m != nil { - return m.EnabledSpecifier +func (x *CorsPolicy) GetEnabledSpecifier() isCorsPolicy_EnabledSpecifier { + if x != nil { + return x.EnabledSpecifier } return nil } func (x *CorsPolicy) GetFilterEnabled() *v3.RuntimeFractionalPercent { - if x, ok := x.GetEnabledSpecifier().(*CorsPolicy_FilterEnabled); ok { - return x.FilterEnabled + if x != nil { + if x, ok := x.EnabledSpecifier.(*CorsPolicy_FilterEnabled); ok { + return x.FilterEnabled + } } return nil } @@ -1248,10 +1248,10 @@ type isCorsPolicy_EnabledSpecifier interface { type CorsPolicy_FilterEnabled struct { // Specifies the % of requests for which the CORS filter is enabled. // - // If neither ``enabled``, ``filter_enabled``, nor ``shadow_enabled`` are specified, the CORS + // If neither `enabled`, `filter_enabled`, nor `shadow_enabled` are specified, the CORS // filter will be enabled for 100% of the requests. // - // If :ref:`runtime_key ` is + // If runtime_key is // specified, Envoy will lookup the runtime key to get the percentage of requests to filter. FilterEnabled *v3.RuntimeFractionalPercent `protobuf:"bytes,9,opt,name=filter_enabled,json=filterEnabled,proto3,oneof"` } @@ -1260,11 +1260,9 @@ func (*CorsPolicy_FilterEnabled) isCorsPolicy_EnabledSpecifier() {} // [#next-free-field: 35] type RouteAction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to ClusterSpecifier: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to ClusterSpecifier: + // // *RouteAction_Cluster // *RouteAction_ClusterHeader // *RouteAction_WeightedClusters @@ -1288,27 +1286,27 @@ type RouteAction struct { // :ref:`regex_rewrite ` // may be specified. // - // .. attention:: + // **Attention**: // - // Pay careful attention to the use of trailing slashes in the - // :ref:`route's match ` prefix value. - // Stripping a prefix from a path requires multiple Routes to handle all cases. For example, - // rewriting */prefix* to */* and */prefix/etc* to */etc* cannot be done in a single - // :ref:`Route `, as shown by the below config entries: + // Pay careful attention to the use of trailing slashes in the + // route's match prefix value. + // Stripping a prefix from a path requires multiple Routes to handle all cases. For example, + // rewriting */prefix* to */* and */prefix/etc* to */etc* cannot be done in a single + // Route, as shown by the below config entries: // - // .. code-block:: yaml + // .. code-block:: yaml // - // - match: - // prefix: "/prefix/" - // route: - // prefix_rewrite: "/" - // - match: - // prefix: "/prefix" - // route: - // prefix_rewrite: "/" + // - match: + // prefix: "/prefix/" + // route: + // prefix_rewrite: "/" + // - match: + // prefix: "/prefix" + // route: + // prefix_rewrite: "/" // - // Having above entries in the config, requests to */prefix* will be stripped to */*, while - // requests to */prefix/etc* will be stripped to */etc*. + // Having above entries in the config, requests to */prefix* will be stripped to */*, while + // requests to */prefix/etc* will be stripped to */etc*. PrefixRewrite string `protobuf:"bytes,5,opt,name=prefix_rewrite,json=prefixRewrite,proto3" json:"prefix_rewrite,omitempty"` // Indicates that during forwarding, portions of the path that match the // pattern should be rewritten, even allowing the substitution of capture @@ -1322,24 +1320,25 @@ type RouteAction struct { // Only one of :ref:`prefix_rewrite ` // or *regex_rewrite* may be specified. // - // Examples using Google's `RE2 `_ engine: + // Examples using Google's [RE2](https://github.com/google/re2) engine: // - // * The path pattern ``^/service/([^/]+)(/.*)$`` paired with a substitution - // string of ``\2/instance/\1`` would transform ``/service/foo/v1/api`` - // into ``/v1/api/instance/foo``. + // - The path pattern `^/service/([^/]+)(/.*)$` paired with a substitution + // string of `\2/instance/\1` would transform `/service/foo/v1/api` + // into `/v1/api/instance/foo`. // - // * The pattern ``one`` paired with a substitution string of ``two`` would - // transform ``/xxx/one/yyy/one/zzz`` into ``/xxx/two/yyy/two/zzz``. + // - The pattern `one` paired with a substitution string of `two` would + // transform `/xxx/one/yyy/one/zzz` into `/xxx/two/yyy/two/zzz`. // - // * The pattern ``^(.*?)one(.*)$`` paired with a substitution string of - // ``\1two\2`` would replace only the first occurrence of ``one``, - // transforming path ``/xxx/one/yyy/one/zzz`` into ``/xxx/two/yyy/one/zzz``. + // - The pattern `^(.*?)one(.*)$` paired with a substitution string of + // `\1two\2` would replace only the first occurrence of `one`, + // transforming path `/xxx/one/yyy/one/zzz` into `/xxx/two/yyy/one/zzz`. // - // * The pattern ``(?i)/xxx/`` paired with a substitution string of ``/yyy/`` - // would do a case-insensitive match and transform path ``/aaa/XxX/bbb`` to - // ``/aaa/yyy/bbb``. + // - The pattern `(?i)/xxx/` paired with a substitution string of `/yyy/` + // would do a case-insensitive match and transform path `/aaa/XxX/bbb` to + // `/aaa/yyy/bbb`. RegexRewrite *v31.RegexMatchAndSubstitute `protobuf:"bytes,32,opt,name=regex_rewrite,json=regexRewrite,proto3" json:"regex_rewrite,omitempty"` - // Types that are assignable to HostRewriteSpecifier: + // Types that are valid to be assigned to HostRewriteSpecifier: + // // *RouteAction_HostRewriteLiteral // *RouteAction_AutoHostRewrite // *RouteAction_HostRewriteHeader @@ -1349,13 +1348,13 @@ type RouteAction struct { // processed and when the upstream response has been completely processed. A value of 0 will // disable the route's timeout. // - // .. note:: + // **Note**: // - // This timeout includes all retries. See also - // :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, - // :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`, and the - // :ref:`retry overview `. - Timeout *duration.Duration `protobuf:"bytes,8,opt,name=timeout,proto3" json:"timeout,omitempty"` + // This timeout includes all retries. See also + // :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, + // :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`, and the + // retry overview. + Timeout *durationpb.Duration `protobuf:"bytes,8,opt,name=timeout,proto3" json:"timeout,omitempty"` // Specifies the idle timeout for the route. If not specified, there is no per-route idle timeout, // although the connection manager wide :ref:`stream_idle_timeout // ` @@ -1374,7 +1373,7 @@ type RouteAction struct { // fires, the stream is terminated with a 408 Request Timeout error code if no // upstream response header has been received, otherwise a stream reset // occurs. - IdleTimeout *duration.Duration `protobuf:"bytes,24,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"` + IdleTimeout *durationpb.Duration `protobuf:"bytes,24,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"` // Indicates that the route has a retry policy. Note that if this is set, // it'll take precedence over the virtual host level retry policy entirely // (e.g.: policies are not merged, most internal one becomes the enforced policy). @@ -1384,19 +1383,19 @@ type RouteAction struct { // precedence over the virtual host level retry policy entirely (e.g.: policies are not merged, // most internal one becomes the enforced policy). :ref:`Retry policy ` // should not be set if this field is used. - RetryPolicyTypedConfig *any.Any `protobuf:"bytes,33,opt,name=retry_policy_typed_config,json=retryPolicyTypedConfig,proto3" json:"retry_policy_typed_config,omitempty"` + RetryPolicyTypedConfig *anypb.Any `protobuf:"bytes,33,opt,name=retry_policy_typed_config,json=retryPolicyTypedConfig,proto3" json:"retry_policy_typed_config,omitempty"` // Indicates that the route has request mirroring policies. RequestMirrorPolicies []*RouteAction_RequestMirrorPolicy `protobuf:"bytes,30,rep,name=request_mirror_policies,json=requestMirrorPolicies,proto3" json:"request_mirror_policies,omitempty"` - // Optionally specifies the :ref:`routing priority `. + // Optionally specifies the routing priority. Priority v3.RoutingPriority `protobuf:"varint,11,opt,name=priority,proto3,enum=solo.io.envoy.config.core.v3.RoutingPriority" json:"priority,omitempty"` // Specifies a set of rate limit configurations that could be applied to the // route. RateLimits []*RateLimit `protobuf:"bytes,13,rep,name=rate_limits,json=rateLimits,proto3" json:"rate_limits,omitempty"` // Specifies if the rate limit filter should include the virtual host rate // limits. By default, if the route configured rate limits, the virtual host - // :ref:`rate_limits ` are not applied to the + // rate_limits are not applied to the // request. - IncludeVhRateLimits *wrappers.BoolValue `protobuf:"bytes,14,opt,name=include_vh_rate_limits,json=includeVhRateLimits,proto3" json:"include_vh_rate_limits,omitempty"` + IncludeVhRateLimits *wrapperspb.BoolValue `protobuf:"bytes,14,opt,name=include_vh_rate_limits,json=includeVhRateLimits,proto3" json:"include_vh_rate_limits,omitempty"` // Specifies a list of hash policies to use for ring hash load balancing. Each // hash policy is evaluated individually and the combined result is used to // route the request. The method of combination is deterministic such that @@ -1413,25 +1412,25 @@ type RouteAction struct { // Indicates that the route has a CORS policy. Cors *CorsPolicy `protobuf:"bytes,17,opt,name=cors,proto3" json:"cors,omitempty"` // If present, and the request is a gRPC request, use the - // `grpc-timeout header `_, + // [grpc-timeout header](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md), // or its default value (infinity) instead of - // :ref:`timeout `, but limit the applied timeout + // timeout, but limit the applied timeout // to the maximum value specified here. If configured as 0, the maximum allowed timeout for // gRPC requests is infinity. If not configured at all, the `grpc-timeout` header is not used // and gRPC requests time out like any other requests using - // :ref:`timeout ` or its default. + // timeout or its default. // This can be used to prevent unexpected upstream request timeouts due to potentially long // time gaps between gRPC request and response in gRPC streaming mode. // - // .. note:: + // **Note**: // - // If a timeout is specified using :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, it takes - // precedence over `grpc-timeout header `_, when - // both are present. See also - // :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, - // :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`, and the - // :ref:`retry overview `. - MaxGrpcTimeout *duration.Duration `protobuf:"bytes,23,opt,name=max_grpc_timeout,json=maxGrpcTimeout,proto3" json:"max_grpc_timeout,omitempty"` + // If a timeout is specified using :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, it takes + // precedence over [grpc-timeout header](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md), when + // both are present. See also + // :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, + // :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`, and the + // retry overview. + MaxGrpcTimeout *durationpb.Duration `protobuf:"bytes,23,opt,name=max_grpc_timeout,json=maxGrpcTimeout,proto3" json:"max_grpc_timeout,omitempty"` // If present, Envoy will adjust the timeout provided by the `grpc-timeout` header by subtracting // the provided duration from the header. This is useful in allowing Envoy to set its global // timeout to be less than that of the deadline imposed by the calling client, which makes it more @@ -1439,14 +1438,14 @@ type RouteAction struct { // The offset will only be applied if the provided grpc_timeout is greater than the offset. This // ensures that the offset will only ever decrease the timeout and never set it to 0 (meaning // infinity). - GrpcTimeoutOffset *duration.Duration `protobuf:"bytes,28,opt,name=grpc_timeout_offset,json=grpcTimeoutOffset,proto3" json:"grpc_timeout_offset,omitempty"` + GrpcTimeoutOffset *durationpb.Duration `protobuf:"bytes,28,opt,name=grpc_timeout_offset,json=grpcTimeoutOffset,proto3" json:"grpc_timeout_offset,omitempty"` UpgradeConfigs []*RouteAction_UpgradeConfig `protobuf:"bytes,25,rep,name=upgrade_configs,json=upgradeConfigs,proto3" json:"upgrade_configs,omitempty"` // If present, Envoy will try to follow an upstream redirect response instead of proxying the // response back to the downstream. An upstream redirect response is defined // by :ref:`redirect_response_codes // `. InternalRedirectPolicy *InternalRedirectPolicy `protobuf:"bytes,34,opt,name=internal_redirect_policy,json=internalRedirectPolicy,proto3" json:"internal_redirect_policy,omitempty"` - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/route/v3/route_components.proto. InternalRedirectAction RouteAction_InternalRedirectAction `protobuf:"varint,26,opt,name=internal_redirect_action,json=internalRedirectAction,proto3,enum=solo.io.envoy.config.route.v3.RouteAction_InternalRedirectAction" json:"internal_redirect_action,omitempty"` // An internal redirect is handled, iff the number of previous internal redirects that a // downstream request has encountered is lower than this value, and @@ -1463,21 +1462,21 @@ type RouteAction struct { // // If not specified, at most one redirect will be followed. // - // Deprecated: Do not use. - MaxInternalRedirects *wrappers.UInt32Value `protobuf:"bytes,31,opt,name=max_internal_redirects,json=maxInternalRedirects,proto3" json:"max_internal_redirects,omitempty"` + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/route/v3/route_components.proto. + MaxInternalRedirects *wrapperspb.UInt32Value `protobuf:"bytes,31,opt,name=max_internal_redirects,json=maxInternalRedirects,proto3" json:"max_internal_redirects,omitempty"` // Indicates that the route has a hedge policy. Note that if this is set, // it'll take precedence over the virtual host level hedge policy entirely // (e.g.: policies are not merged, most internal one becomes the enforced policy). - HedgePolicy *HedgePolicy `protobuf:"bytes,27,opt,name=hedge_policy,json=hedgePolicy,proto3" json:"hedge_policy,omitempty"` + HedgePolicy *HedgePolicy `protobuf:"bytes,27,opt,name=hedge_policy,json=hedgePolicy,proto3" json:"hedge_policy,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteAction) Reset() { *x = RouteAction{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteAction) String() string { @@ -1488,7 +1487,7 @@ func (*RouteAction) ProtoMessage() {} func (x *RouteAction) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1503,30 +1502,36 @@ func (*RouteAction) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{6} } -func (m *RouteAction) GetClusterSpecifier() isRouteAction_ClusterSpecifier { - if m != nil { - return m.ClusterSpecifier +func (x *RouteAction) GetClusterSpecifier() isRouteAction_ClusterSpecifier { + if x != nil { + return x.ClusterSpecifier } return nil } func (x *RouteAction) GetCluster() string { - if x, ok := x.GetClusterSpecifier().(*RouteAction_Cluster); ok { - return x.Cluster + if x != nil { + if x, ok := x.ClusterSpecifier.(*RouteAction_Cluster); ok { + return x.Cluster + } } return "" } func (x *RouteAction) GetClusterHeader() string { - if x, ok := x.GetClusterSpecifier().(*RouteAction_ClusterHeader); ok { - return x.ClusterHeader + if x != nil { + if x, ok := x.ClusterSpecifier.(*RouteAction_ClusterHeader); ok { + return x.ClusterHeader + } } return "" } func (x *RouteAction) GetWeightedClusters() *WeightedCluster { - if x, ok := x.GetClusterSpecifier().(*RouteAction_WeightedClusters); ok { - return x.WeightedClusters + if x != nil { + if x, ok := x.ClusterSpecifier.(*RouteAction_WeightedClusters); ok { + return x.WeightedClusters + } } return nil } @@ -1559,42 +1564,48 @@ func (x *RouteAction) GetRegexRewrite() *v31.RegexMatchAndSubstitute { return nil } -func (m *RouteAction) GetHostRewriteSpecifier() isRouteAction_HostRewriteSpecifier { - if m != nil { - return m.HostRewriteSpecifier +func (x *RouteAction) GetHostRewriteSpecifier() isRouteAction_HostRewriteSpecifier { + if x != nil { + return x.HostRewriteSpecifier } return nil } func (x *RouteAction) GetHostRewriteLiteral() string { - if x, ok := x.GetHostRewriteSpecifier().(*RouteAction_HostRewriteLiteral); ok { - return x.HostRewriteLiteral + if x != nil { + if x, ok := x.HostRewriteSpecifier.(*RouteAction_HostRewriteLiteral); ok { + return x.HostRewriteLiteral + } } return "" } -func (x *RouteAction) GetAutoHostRewrite() *wrappers.BoolValue { - if x, ok := x.GetHostRewriteSpecifier().(*RouteAction_AutoHostRewrite); ok { - return x.AutoHostRewrite +func (x *RouteAction) GetAutoHostRewrite() *wrapperspb.BoolValue { + if x != nil { + if x, ok := x.HostRewriteSpecifier.(*RouteAction_AutoHostRewrite); ok { + return x.AutoHostRewrite + } } return nil } func (x *RouteAction) GetHostRewriteHeader() string { - if x, ok := x.GetHostRewriteSpecifier().(*RouteAction_HostRewriteHeader); ok { - return x.HostRewriteHeader + if x != nil { + if x, ok := x.HostRewriteSpecifier.(*RouteAction_HostRewriteHeader); ok { + return x.HostRewriteHeader + } } return "" } -func (x *RouteAction) GetTimeout() *duration.Duration { +func (x *RouteAction) GetTimeout() *durationpb.Duration { if x != nil { return x.Timeout } return nil } -func (x *RouteAction) GetIdleTimeout() *duration.Duration { +func (x *RouteAction) GetIdleTimeout() *durationpb.Duration { if x != nil { return x.IdleTimeout } @@ -1608,7 +1619,7 @@ func (x *RouteAction) GetRetryPolicy() *RetryPolicy { return nil } -func (x *RouteAction) GetRetryPolicyTypedConfig() *any.Any { +func (x *RouteAction) GetRetryPolicyTypedConfig() *anypb.Any { if x != nil { return x.RetryPolicyTypedConfig } @@ -1626,7 +1637,7 @@ func (x *RouteAction) GetPriority() v3.RoutingPriority { if x != nil { return x.Priority } - return v3.RoutingPriority_DEFAULT + return v3.RoutingPriority(0) } func (x *RouteAction) GetRateLimits() []*RateLimit { @@ -1636,7 +1647,7 @@ func (x *RouteAction) GetRateLimits() []*RateLimit { return nil } -func (x *RouteAction) GetIncludeVhRateLimits() *wrappers.BoolValue { +func (x *RouteAction) GetIncludeVhRateLimits() *wrapperspb.BoolValue { if x != nil { return x.IncludeVhRateLimits } @@ -1657,14 +1668,14 @@ func (x *RouteAction) GetCors() *CorsPolicy { return nil } -func (x *RouteAction) GetMaxGrpcTimeout() *duration.Duration { +func (x *RouteAction) GetMaxGrpcTimeout() *durationpb.Duration { if x != nil { return x.MaxGrpcTimeout } return nil } -func (x *RouteAction) GetGrpcTimeoutOffset() *duration.Duration { +func (x *RouteAction) GetGrpcTimeoutOffset() *durationpb.Duration { if x != nil { return x.GrpcTimeoutOffset } @@ -1685,7 +1696,7 @@ func (x *RouteAction) GetInternalRedirectPolicy() *InternalRedirectPolicy { return nil } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/route/v3/route_components.proto. func (x *RouteAction) GetInternalRedirectAction() RouteAction_InternalRedirectAction { if x != nil { return x.InternalRedirectAction @@ -1693,8 +1704,8 @@ func (x *RouteAction) GetInternalRedirectAction() RouteAction_InternalRedirectAc return RouteAction_PASS_THROUGH_INTERNAL_REDIRECT } -// Deprecated: Do not use. -func (x *RouteAction) GetMaxInternalRedirects() *wrappers.UInt32Value { +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/route/v3/route_components.proto. +func (x *RouteAction) GetMaxInternalRedirects() *wrapperspb.UInt32Value { if x != nil { return x.MaxInternalRedirects } @@ -1724,10 +1735,10 @@ type RouteAction_ClusterHeader struct { // header is not found or the referenced cluster does not exist, Envoy will // return a 404 response. // - // .. attention:: + // **Attention**: // - // Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1 - // *Host* header. Thus, if attempting to match on *Host*, match on *:authority* instead. + // Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1 + // *Host* header. Thus, if attempting to match on *Host*, match on *:authority* instead. ClusterHeader string `protobuf:"bytes,2,opt,name=cluster_header,json=clusterHeader,proto3,oneof"` } @@ -1762,18 +1773,18 @@ type RouteAction_AutoHostRewrite struct { // option is applicable only when the destination cluster for a route is of // type *strict_dns* or *logical_dns*. Setting this to true with other cluster // types has no effect. - AutoHostRewrite *wrappers.BoolValue `protobuf:"bytes,7,opt,name=auto_host_rewrite,json=autoHostRewrite,proto3,oneof"` + AutoHostRewrite *wrapperspb.BoolValue `protobuf:"bytes,7,opt,name=auto_host_rewrite,json=autoHostRewrite,proto3,oneof"` } type RouteAction_HostRewriteHeader struct { // Indicates that during forwarding, the host header will be swapped with the content of given - // downstream or :ref:`custom ` header. + // downstream or custom header. // If header value is empty, host header is left intact. // - // .. attention:: + // **Attention**: // - // Pay attention to the potential security implications of using this option. Provided header - // must come from trusted source. + // Pay attention to the potential security implications of using this option. Provided header + // must come from trusted source. HostRewriteHeader string `protobuf:"bytes,29,opt,name=host_rewrite_header,json=hostRewriteHeader,proto3,oneof"` } @@ -1783,13 +1794,10 @@ func (*RouteAction_AutoHostRewrite) isRouteAction_HostRewriteSpecifier() {} func (*RouteAction_HostRewriteHeader) isRouteAction_HostRewriteSpecifier() {} -// HTTP retry :ref:`architecture overview `. +// HTTP retry architecture overview. // [#next-free-field: 11] type RetryPolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the conditions under which retry takes place. These are the same // conditions documented for :ref:`config_http_filters_router_x-envoy-retry-on` and // :ref:`config_http_filters_router_x-envoy-retry-grpc-on`. @@ -1797,26 +1805,26 @@ type RetryPolicy struct { // Specifies the allowed number of retries. This parameter is optional and // defaults to 1. These are the same conditions documented for // :ref:`config_http_filters_router_x-envoy-max-retries`. - NumRetries *wrappers.UInt32Value `protobuf:"bytes,2,opt,name=num_retries,json=numRetries,proto3" json:"num_retries,omitempty"` + NumRetries *wrapperspb.UInt32Value `protobuf:"bytes,2,opt,name=num_retries,json=numRetries,proto3" json:"num_retries,omitempty"` // Specifies a non-zero upstream timeout per retry attempt. This parameter is optional. The // same conditions documented for // :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms` apply. // - // .. note:: + // **Note**: // - // If left unspecified, Envoy will use the global - // :ref:`route timeout ` for the request. - // Consequently, when using a :ref:`5xx ` based - // retry policy, a request that times out will not be retried as the total timeout budget - // would have been exhausted. - PerTryTimeout *duration.Duration `protobuf:"bytes,3,opt,name=per_try_timeout,json=perTryTimeout,proto3" json:"per_try_timeout,omitempty"` + // If left unspecified, Envoy will use the global + // route timeout for the request. + // Consequently, when using a 5xx based + // retry policy, a request that times out will not be retried as the total timeout budget + // would have been exhausted. + PerTryTimeout *durationpb.Duration `protobuf:"bytes,3,opt,name=per_try_timeout,json=perTryTimeout,proto3" json:"per_try_timeout,omitempty"` // Specifies an implementation of a RetryPriority which is used to determine the // distribution of load across priorities used for retries. Refer to - // :ref:`retry plugin configuration ` for more details. + // retry plugin configuration for more details. RetryPriority *RetryPolicy_RetryPriority `protobuf:"bytes,4,opt,name=retry_priority,json=retryPriority,proto3" json:"retry_priority,omitempty"` // Specifies a collection of RetryHostPredicates that will be consulted when selecting a host // for retries. If any of the predicates reject the host, host selection will be reattempted. - // Refer to :ref:`retry plugin configuration ` for more + // Refer to retry plugin configuration for more // details. RetryHostPredicate []*RetryPolicy_RetryHostPredicate `protobuf:"bytes,5,rep,name=retry_host_predicate,json=retryHostPredicate,proto3" json:"retry_host_predicate,omitempty"` // The maximum number of times host selection will be reattempted before giving up, at which @@ -1837,15 +1845,15 @@ type RetryPolicy struct { RetriableHeaders []*HeaderMatcher `protobuf:"bytes,9,rep,name=retriable_headers,json=retriableHeaders,proto3" json:"retriable_headers,omitempty"` // HTTP headers which must be present in the request for retries to be attempted. RetriableRequestHeaders []*HeaderMatcher `protobuf:"bytes,10,rep,name=retriable_request_headers,json=retriableRequestHeaders,proto3" json:"retriable_request_headers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RetryPolicy) Reset() { *x = RetryPolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RetryPolicy) String() string { @@ -1856,7 +1864,7 @@ func (*RetryPolicy) ProtoMessage() {} func (x *RetryPolicy) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1878,14 +1886,14 @@ func (x *RetryPolicy) GetRetryOn() string { return "" } -func (x *RetryPolicy) GetNumRetries() *wrappers.UInt32Value { +func (x *RetryPolicy) GetNumRetries() *wrapperspb.UInt32Value { if x != nil { return x.NumRetries } return nil } -func (x *RetryPolicy) GetPerTryTimeout() *duration.Duration { +func (x *RetryPolicy) GetPerTryTimeout() *durationpb.Duration { if x != nil { return x.PerTryTimeout } @@ -1941,17 +1949,14 @@ func (x *RetryPolicy) GetRetriableRequestHeaders() []*HeaderMatcher { return nil } -// HTTP request hedging :ref:`architecture overview `. +// HTTP request hedging architecture overview. type HedgePolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the number of initial requests that should be sent upstream. // Must be at least 1. // Defaults to 1. // [#not-implemented-hide:] - InitialRequests *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=initial_requests,json=initialRequests,proto3" json:"initial_requests,omitempty"` + InitialRequests *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=initial_requests,json=initialRequests,proto3" json:"initial_requests,omitempty"` // Specifies a probability that an additional upstream request should be sent // on top of what is specified by initial_requests. // Defaults to 0. @@ -1963,18 +1968,18 @@ type HedgePolicy struct { // Once a timed out request is retried due to per try timeout, the router // filter will ensure that it is not retried again even if the returned // response headers would otherwise be retried according the specified - // :ref:`RetryPolicy `. + // RetryPolicy. // Defaults to false. HedgeOnPerTryTimeout bool `protobuf:"varint,3,opt,name=hedge_on_per_try_timeout,json=hedgeOnPerTryTimeout,proto3" json:"hedge_on_per_try_timeout,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HedgePolicy) Reset() { *x = HedgePolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HedgePolicy) String() string { @@ -1985,7 +1990,7 @@ func (*HedgePolicy) ProtoMessage() {} func (x *HedgePolicy) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2000,7 +2005,7 @@ func (*HedgePolicy) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{8} } -func (x *HedgePolicy) GetInitialRequests() *wrappers.UInt32Value { +func (x *HedgePolicy) GetInitialRequests() *wrapperspb.UInt32Value { if x != nil { return x.InitialRequests } @@ -2023,17 +2028,15 @@ func (x *HedgePolicy) GetHedgeOnPerTryTimeout() bool { // [#next-free-field: 9] type RedirectAction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // When the scheme redirection take place, the following rules apply: // 1. If the source URI scheme is `http` and the port is explicitly // set to `:80`, the port will be removed after the redirection // 2. If the source URI scheme is `https` and the port is explicitly // set to `:443`, the port will be removed after the redirection // - // Types that are assignable to SchemeRewriteSpecifier: + // Types that are valid to be assigned to SchemeRewriteSpecifier: + // // *RedirectAction_HttpsRedirect // *RedirectAction_SchemeRedirect SchemeRewriteSpecifier isRedirectAction_SchemeRewriteSpecifier `protobuf_oneof:"scheme_rewrite_specifier"` @@ -2041,7 +2044,8 @@ type RedirectAction struct { HostRedirect string `protobuf:"bytes,1,opt,name=host_redirect,json=hostRedirect,proto3" json:"host_redirect,omitempty"` // The port value of the URL will be swapped with this value. PortRedirect uint32 `protobuf:"varint,8,opt,name=port_redirect,json=portRedirect,proto3" json:"port_redirect,omitempty"` - // Types that are assignable to PathRewriteSpecifier: + // Types that are valid to be assigned to PathRewriteSpecifier: + // // *RedirectAction_PathRedirect // *RedirectAction_PrefixRewrite PathRewriteSpecifier isRedirectAction_PathRewriteSpecifier `protobuf_oneof:"path_rewrite_specifier"` @@ -2050,16 +2054,16 @@ type RedirectAction struct { ResponseCode RedirectAction_RedirectResponseCode `protobuf:"varint,3,opt,name=response_code,json=responseCode,proto3,enum=solo.io.envoy.config.route.v3.RedirectAction_RedirectResponseCode" json:"response_code,omitempty"` // Indicates that during redirection, the query portion of the URL will // be removed. Default value is false. - StripQuery bool `protobuf:"varint,6,opt,name=strip_query,json=stripQuery,proto3" json:"strip_query,omitempty"` + StripQuery bool `protobuf:"varint,6,opt,name=strip_query,json=stripQuery,proto3" json:"strip_query,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RedirectAction) Reset() { *x = RedirectAction{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RedirectAction) String() string { @@ -2070,7 +2074,7 @@ func (*RedirectAction) ProtoMessage() {} func (x *RedirectAction) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2085,23 +2089,27 @@ func (*RedirectAction) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{9} } -func (m *RedirectAction) GetSchemeRewriteSpecifier() isRedirectAction_SchemeRewriteSpecifier { - if m != nil { - return m.SchemeRewriteSpecifier +func (x *RedirectAction) GetSchemeRewriteSpecifier() isRedirectAction_SchemeRewriteSpecifier { + if x != nil { + return x.SchemeRewriteSpecifier } return nil } func (x *RedirectAction) GetHttpsRedirect() bool { - if x, ok := x.GetSchemeRewriteSpecifier().(*RedirectAction_HttpsRedirect); ok { - return x.HttpsRedirect + if x != nil { + if x, ok := x.SchemeRewriteSpecifier.(*RedirectAction_HttpsRedirect); ok { + return x.HttpsRedirect + } } return false } func (x *RedirectAction) GetSchemeRedirect() string { - if x, ok := x.GetSchemeRewriteSpecifier().(*RedirectAction_SchemeRedirect); ok { - return x.SchemeRedirect + if x != nil { + if x, ok := x.SchemeRewriteSpecifier.(*RedirectAction_SchemeRedirect); ok { + return x.SchemeRedirect + } } return "" } @@ -2120,23 +2128,27 @@ func (x *RedirectAction) GetPortRedirect() uint32 { return 0 } -func (m *RedirectAction) GetPathRewriteSpecifier() isRedirectAction_PathRewriteSpecifier { - if m != nil { - return m.PathRewriteSpecifier +func (x *RedirectAction) GetPathRewriteSpecifier() isRedirectAction_PathRewriteSpecifier { + if x != nil { + return x.PathRewriteSpecifier } return nil } func (x *RedirectAction) GetPathRedirect() string { - if x, ok := x.GetPathRewriteSpecifier().(*RedirectAction_PathRedirect); ok { - return x.PathRedirect + if x != nil { + if x, ok := x.PathRewriteSpecifier.(*RedirectAction_PathRedirect); ok { + return x.PathRedirect + } } return "" } func (x *RedirectAction) GetPrefixRewrite() string { - if x, ok := x.GetPathRewriteSpecifier().(*RedirectAction_PrefixRewrite); ok { - return x.PrefixRewrite + if x != nil { + if x, ok := x.PathRewriteSpecifier.(*RedirectAction_PrefixRewrite); ok { + return x.PrefixRewrite + } } return "" } @@ -2184,12 +2196,12 @@ type RedirectAction_PathRedirect struct { // // For example, let's say we have the following routes: // - // - match: { path: "/old-path-1" } - // redirect: { path_redirect: "/new-path-1" } - // - match: { path: "/old-path-2" } - // redirect: { path_redirect: "/new-path-2", strip-query: "true" } - // - match: { path: "/old-path-3" } - // redirect: { path_redirect: "/new-path-3?foo=1", strip_query: "true" } + // - match: { path: "/old-path-1" } + // redirect: { path_redirect: "/new-path-1" } + // - match: { path: "/old-path-2" } + // redirect: { path_redirect: "/new-path-2", strip-query: "true" } + // - match: { path: "/old-path-3" } + // redirect: { path_redirect: "/new-path-3?foo=1", strip_query: "true" } // // 1. if request uri is "/old-path-1?bar=1", users will be redirected to "/new-path-1?bar=1" // 2. if request uri is "/old-path-2?bar=1", users will be redirected to "/new-path-2" @@ -2202,10 +2214,10 @@ type RedirectAction_PrefixRewrite struct { // should be swapped with this value. This option allows redirect URLs be dynamically created // based on the request. // - // .. attention:: + // **Attention**: // - // Pay attention to the use of trailing slashes as mentioned in - // :ref:`RouteAction's prefix_rewrite `. + // Pay attention to the use of trailing slashes as mentioned in + // RouteAction's prefix_rewrite. PrefixRewrite string `protobuf:"bytes,5,opt,name=prefix_rewrite,json=prefixRewrite,proto3,oneof"` } @@ -2214,30 +2226,27 @@ func (*RedirectAction_PathRedirect) isRedirectAction_PathRewriteSpecifier() {} func (*RedirectAction_PrefixRewrite) isRedirectAction_PathRewriteSpecifier() {} type DirectResponseAction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the HTTP response status to be returned. Status uint32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` // Specifies the content of the response body. If this setting is omitted, // no body is included in the generated response. // - // .. note:: + // **Note**: // - // Headers can be specified using *response_headers_to_add* in the enclosing - // :ref:`envoy_api_msg_config.route.v3.Route`, :ref:`envoy_api_msg_config.route.v3.RouteConfiguration` or - // :ref:`envoy_api_msg_config.route.v3.VirtualHost`. - Body *v3.DataSource `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` + // Headers can be specified using *response_headers_to_add* in the enclosing + // :ref:`envoy_api_msg_config.route.v3.Route`, :ref:`envoy_api_msg_config.route.v3.RouteConfiguration` or + // :ref:`envoy_api_msg_config.route.v3.VirtualHost`. + Body *v3.DataSource `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DirectResponseAction) Reset() { *x = DirectResponseAction{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DirectResponseAction) String() string { @@ -2248,7 +2257,7 @@ func (*DirectResponseAction) ProtoMessage() {} func (x *DirectResponseAction) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2278,30 +2287,27 @@ func (x *DirectResponseAction) GetBody() *v3.DataSource { } type Decorator struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The operation name associated with the request matched to this route. If tracing is // enabled, this information will be used as the span name reported for this request. // - // .. note:: + // **Note**: // - // For ingress (inbound) requests, or egress (outbound) responses, this value may be overridden - // by the :ref:`x-envoy-decorator-operation - // ` header. + // For ingress (inbound) requests, or egress (outbound) responses, this value may be overridden + // by the :ref:`x-envoy-decorator-operation + // ` header. Operation string `protobuf:"bytes,1,opt,name=operation,proto3" json:"operation,omitempty"` // Whether the decorated details should be propagated to the other party. The default is true. - Propagate *wrappers.BoolValue `protobuf:"bytes,2,opt,name=propagate,proto3" json:"propagate,omitempty"` + Propagate *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=propagate,proto3" json:"propagate,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Decorator) Reset() { *x = Decorator{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Decorator) String() string { @@ -2312,7 +2318,7 @@ func (*Decorator) ProtoMessage() {} func (x *Decorator) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2334,7 +2340,7 @@ func (x *Decorator) GetOperation() string { return "" } -func (x *Decorator) GetPropagate() *wrappers.BoolValue { +func (x *Decorator) GetPropagate() *wrapperspb.BoolValue { if x != nil { return x.Propagate } @@ -2342,10 +2348,7 @@ func (x *Decorator) GetPropagate() *wrappers.BoolValue { } type Tracing struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Target percentage of requests managed by this HTTP connection manager that will be force // traced if the :ref:`x-client-trace-id ` // header is set. This field is a direct analog for the runtime variable @@ -2356,7 +2359,7 @@ type Tracing struct { // Target percentage of requests managed by this HTTP connection manager that will be randomly // selected for trace generation, if not requested by the client or not forced. This field is // a direct analog for the runtime variable 'tracing.random_sampling' in the - // :ref:`HTTP Connection Manager `. + // HTTP Connection Manager. // Default: 100% RandomSampling *v32.FractionalPercent `protobuf:"bytes,2,opt,name=random_sampling,json=randomSampling,proto3" json:"random_sampling,omitempty"` // Target percentage of requests managed by this HTTP connection manager that will be traced @@ -2365,7 +2368,7 @@ type Tracing struct { // instance, setting client_sampling to 100% but overall_sampling to 1% will result in only 1% // of client requests with the appropriate headers to be force traced. This field is a direct // analog for the runtime variable 'tracing.global_enabled' in the - // :ref:`HTTP Connection Manager `. + // HTTP Connection Manager. // Default: 100% OverallSampling *v32.FractionalPercent `protobuf:"bytes,3,opt,name=overall_sampling,json=overallSampling,proto3" json:"overall_sampling,omitempty"` // A list of custom tags with unique tag name to create tags for the active span. @@ -2374,16 +2377,16 @@ type Tracing struct { // configured in the HTTP connection manager. If two tags with the same name are configured // each in the HTTP connection manager and the route level, the one configured here takes // priority. - CustomTags []*v33.CustomTag `protobuf:"bytes,4,rep,name=custom_tags,json=customTags,proto3" json:"custom_tags,omitempty"` + CustomTags []*v33.CustomTag `protobuf:"bytes,4,rep,name=custom_tags,json=customTags,proto3" json:"custom_tags,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Tracing) Reset() { *x = Tracing{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Tracing) String() string { @@ -2394,7 +2397,7 @@ func (*Tracing) ProtoMessage() {} func (x *Tracing) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2447,35 +2450,32 @@ func (x *Tracing) GetCustomTags() []*v33.CustomTag { // statistics are perfect in the sense that they are emitted on the downstream // side such that they include network level failures. // -// Documentation for :ref:`virtual cluster statistics `. +// Documentation for virtual cluster statistics. // -// .. note:: +// **Note**: // -// Virtual clusters are a useful tool, but we do not recommend setting up a virtual cluster for -// every application endpoint. This is both not easily maintainable and as well the matching and -// statistics output are not free. +// Virtual clusters are a useful tool, but we do not recommend setting up a virtual cluster for +// every application endpoint. This is both not easily maintainable and as well the matching and +// statistics output are not free. type VirtualCluster struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies a list of header matchers to use for matching requests. Each specified header must // match. The pseudo-headers `:path` and `:method` can be used to match the request path and // method, respectively. Headers []*HeaderMatcher `protobuf:"bytes,4,rep,name=headers,proto3" json:"headers,omitempty"` // Specifies the name of the virtual cluster. The virtual cluster name as well // as the virtual host name are used when emitting statistics. The statistics are emitted by the - // router filter and are documented :ref:`here `. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // router filter and are documented here. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VirtualCluster) Reset() { *x = VirtualCluster{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VirtualCluster) String() string { @@ -2486,7 +2486,7 @@ func (*VirtualCluster) ProtoMessage() {} func (x *VirtualCluster) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2515,20 +2515,17 @@ func (x *VirtualCluster) GetName() string { return "" } -// Global rate limiting :ref:`architecture overview `. +// Global rate limiting architecture overview. type RateLimit struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Refers to the stage set in the filter. The rate limit configuration only // applies to filters with the same stage number. The default stage number is // 0. // - // .. note:: + // **Note**: // - // The filter supports a range of 0 - 10 inclusively for stage numbers. - Stage *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=stage,proto3" json:"stage,omitempty"` + // The filter supports a range of 0 - 10 inclusively for stage numbers. + Stage *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=stage,proto3" json:"stage,omitempty"` // The key to be set in runtime to disable this rate limit configuration. DisableKey string `protobuf:"bytes,2,opt,name=disable_key,json=disableKey,proto3" json:"disable_key,omitempty"` // A list of actions that are to be applied for this rate limit configuration. @@ -2542,16 +2539,16 @@ type RateLimit struct { // rate limit configuration. If the override value is invalid or cannot be resolved // from metadata, no override is provided. See :ref:`rate limit override // ` for more information. - Limit *RateLimit_Override `protobuf:"bytes,4,opt,name=limit,proto3" json:"limit,omitempty"` + Limit *RateLimit_Override `protobuf:"bytes,4,opt,name=limit,proto3" json:"limit,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimit) Reset() { *x = RateLimit{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimit) String() string { @@ -2562,7 +2559,7 @@ func (*RateLimit) ProtoMessage() {} func (x *RateLimit) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2577,7 +2574,7 @@ func (*RateLimit) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{14} } -func (x *RateLimit) GetStage() *wrappers.UInt32Value { +func (x *RateLimit) GetStage() *wrapperspb.UInt32Value { if x != nil { return x.Stage } @@ -2605,41 +2602,41 @@ func (x *RateLimit) GetLimit() *RateLimit_Override { return nil } -// .. attention:: +// **Attention**: +// +// Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1 *Host* +// header. Thus, if attempting to match on *Host*, match on *:authority* instead. // -// Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1 *Host* -// header. Thus, if attempting to match on *Host*, match on *:authority* instead. +// **Attention**: // -// .. attention:: +// To route on HTTP method, use the special HTTP/2 *:method* header. This works for both +// HTTP/1 and HTTP/2 as Envoy normalizes headers. E.g., // -// To route on HTTP method, use the special HTTP/2 *:method* header. This works for both -// HTTP/1 and HTTP/2 as Envoy normalizes headers. E.g., +// .. code-block:: json // -// .. code-block:: json +// { +// "name": ":method", +// "exact_match": "POST" +// } // -// { -// "name": ":method", -// "exact_match": "POST" -// } +// **Attention**: // -// .. attention:: -// In the absence of any header match specifier, match will default to :ref:`present_match -// `. i.e, a request that has the :ref:`name -// ` header will match, regardless of the header's -// value. +// In the absence of any header match specifier, match will default to :ref:`present_match +// `. i.e, a request that has the :ref:`name +// ` header will match, regardless of the header's +// value. +// +// [#next-major-version: HeaderMatcher should be refactored to use StringMatcher.] // -// [#next-major-version: HeaderMatcher should be refactored to use StringMatcher.] // [#next-free-field: 12] type HeaderMatcher struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the name of the header in the request. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Specifies how the header match will be performed to route the request. // - // Types that are assignable to HeaderMatchSpecifier: + // Types that are valid to be assigned to HeaderMatchSpecifier: + // // *HeaderMatcher_ExactMatch // *HeaderMatcher_SafeRegexMatch // *HeaderMatcher_RangeMatch @@ -2651,18 +2648,18 @@ type HeaderMatcher struct { // // Examples: // - // * The regex ``\d{3}`` does not match the value *1234*, so it will match when inverted. + // * The regex `\d{3}` does not match the value *1234*, so it will match when inverted. // * The range [-10,0) will match the value -1, so it will not match when inverted. - InvertMatch bool `protobuf:"varint,8,opt,name=invert_match,json=invertMatch,proto3" json:"invert_match,omitempty"` + InvertMatch bool `protobuf:"varint,8,opt,name=invert_match,json=invertMatch,proto3" json:"invert_match,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HeaderMatcher) Reset() { *x = HeaderMatcher{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HeaderMatcher) String() string { @@ -2673,7 +2670,7 @@ func (*HeaderMatcher) ProtoMessage() {} func (x *HeaderMatcher) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2695,51 +2692,63 @@ func (x *HeaderMatcher) GetName() string { return "" } -func (m *HeaderMatcher) GetHeaderMatchSpecifier() isHeaderMatcher_HeaderMatchSpecifier { - if m != nil { - return m.HeaderMatchSpecifier +func (x *HeaderMatcher) GetHeaderMatchSpecifier() isHeaderMatcher_HeaderMatchSpecifier { + if x != nil { + return x.HeaderMatchSpecifier } return nil } func (x *HeaderMatcher) GetExactMatch() string { - if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_ExactMatch); ok { - return x.ExactMatch + if x != nil { + if x, ok := x.HeaderMatchSpecifier.(*HeaderMatcher_ExactMatch); ok { + return x.ExactMatch + } } return "" } func (x *HeaderMatcher) GetSafeRegexMatch() *v31.RegexMatcher { - if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_SafeRegexMatch); ok { - return x.SafeRegexMatch + if x != nil { + if x, ok := x.HeaderMatchSpecifier.(*HeaderMatcher_SafeRegexMatch); ok { + return x.SafeRegexMatch + } } return nil } func (x *HeaderMatcher) GetRangeMatch() *v32.Int64Range { - if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_RangeMatch); ok { - return x.RangeMatch + if x != nil { + if x, ok := x.HeaderMatchSpecifier.(*HeaderMatcher_RangeMatch); ok { + return x.RangeMatch + } } return nil } func (x *HeaderMatcher) GetPresentMatch() bool { - if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_PresentMatch); ok { - return x.PresentMatch + if x != nil { + if x, ok := x.HeaderMatchSpecifier.(*HeaderMatcher_PresentMatch); ok { + return x.PresentMatch + } } return false } func (x *HeaderMatcher) GetPrefixMatch() string { - if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_PrefixMatch); ok { - return x.PrefixMatch + if x != nil { + if x, ok := x.HeaderMatchSpecifier.(*HeaderMatcher_PrefixMatch); ok { + return x.PrefixMatch + } } return "" } func (x *HeaderMatcher) GetSuffixMatch() string { - if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_SuffixMatch); ok { - return x.SuffixMatch + if x != nil { + if x, ok := x.HeaderMatchSpecifier.(*HeaderMatcher_SuffixMatch); ok { + return x.SuffixMatch + } } return "" } @@ -2777,8 +2786,8 @@ type HeaderMatcher_RangeMatch struct { // // Examples: // - // * For range [-10,0), route will match for header value -1, but not for 0, "somestring", 10.9, - // "-1somestring" + // - For range [-10,0), route will match for header value -1, but not for 0, "somestring", 10.9, + // "-1somestring" RangeMatch *v32.Int64Range `protobuf:"bytes,6,opt,name=range_match,json=rangeMatch,proto3,oneof"` } @@ -2824,26 +2833,24 @@ func (*HeaderMatcher_SuffixMatch) isHeaderMatcher_HeaderMatchSpecifier() {} // as an ampersand-separated list of keys and/or key=value elements. // [#next-free-field: 7] type QueryParameterMatcher struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the name of a key that must be present in the requested // *path*'s query string. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Types that are assignable to QueryParameterMatchSpecifier: + // Types that are valid to be assigned to QueryParameterMatchSpecifier: + // // *QueryParameterMatcher_StringMatch // *QueryParameterMatcher_PresentMatch QueryParameterMatchSpecifier isQueryParameterMatcher_QueryParameterMatchSpecifier `protobuf_oneof:"query_parameter_match_specifier"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *QueryParameterMatcher) Reset() { *x = QueryParameterMatcher{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *QueryParameterMatcher) String() string { @@ -2854,7 +2861,7 @@ func (*QueryParameterMatcher) ProtoMessage() {} func (x *QueryParameterMatcher) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2876,23 +2883,27 @@ func (x *QueryParameterMatcher) GetName() string { return "" } -func (m *QueryParameterMatcher) GetQueryParameterMatchSpecifier() isQueryParameterMatcher_QueryParameterMatchSpecifier { - if m != nil { - return m.QueryParameterMatchSpecifier +func (x *QueryParameterMatcher) GetQueryParameterMatchSpecifier() isQueryParameterMatcher_QueryParameterMatchSpecifier { + if x != nil { + return x.QueryParameterMatchSpecifier } return nil } func (x *QueryParameterMatcher) GetStringMatch() *v31.StringMatcher { - if x, ok := x.GetQueryParameterMatchSpecifier().(*QueryParameterMatcher_StringMatch); ok { - return x.StringMatch + if x != nil { + if x, ok := x.QueryParameterMatchSpecifier.(*QueryParameterMatcher_StringMatch); ok { + return x.StringMatch + } } return nil } func (x *QueryParameterMatcher) GetPresentMatch() bool { - if x, ok := x.GetQueryParameterMatchSpecifier().(*QueryParameterMatcher_PresentMatch); ok { - return x.PresentMatch + if x != nil { + if x, ok := x.QueryParameterMatchSpecifier.(*QueryParameterMatcher_PresentMatch); ok { + return x.PresentMatch + } } return false } @@ -2915,12 +2926,9 @@ func (*QueryParameterMatcher_StringMatch) isQueryParameterMatcher_QueryParameter func (*QueryParameterMatcher_PresentMatch) isQueryParameterMatcher_QueryParameterMatchSpecifier() {} -// HTTP Internal Redirect :ref:`architecture overview `. +// HTTP Internal Redirect architecture overview. type InternalRedirectPolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // An internal redirect is not handled, unless the number of previous internal redirects that a // downstream request has encountered is lower than this value. // In the case where a downstream request is bounced among multiple routes by internal redirect, @@ -2929,7 +2937,7 @@ type InternalRedirectPolicy struct { // will pass the redirect back to downstream. // // If not specified, at most one redirect will be followed. - MaxInternalRedirects *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=max_internal_redirects,json=maxInternalRedirects,proto3" json:"max_internal_redirects,omitempty"` + MaxInternalRedirects *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=max_internal_redirects,json=maxInternalRedirects,proto3" json:"max_internal_redirects,omitempty"` // Defines what upstream response codes are allowed to trigger internal redirect. If unspecified, // only 302 will be treated as internal redirect. // Only 301, 302, 303, 307 and 308 are valid values. Any other codes will be ignored. @@ -2941,15 +2949,15 @@ type InternalRedirectPolicy struct { // Allow internal redirect to follow a target URI with a different scheme than the value of // x-forwarded-proto. The default is false. AllowCrossSchemeRedirect bool `protobuf:"varint,4,opt,name=allow_cross_scheme_redirect,json=allowCrossSchemeRedirect,proto3" json:"allow_cross_scheme_redirect,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *InternalRedirectPolicy) Reset() { *x = InternalRedirectPolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *InternalRedirectPolicy) String() string { @@ -2960,7 +2968,7 @@ func (*InternalRedirectPolicy) ProtoMessage() {} func (x *InternalRedirectPolicy) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2975,7 +2983,7 @@ func (*InternalRedirectPolicy) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{17} } -func (x *InternalRedirectPolicy) GetMaxInternalRedirects() *wrappers.UInt32Value { +func (x *InternalRedirectPolicy) GetMaxInternalRedirects() *wrapperspb.UInt32Value { if x != nil { return x.MaxInternalRedirects } @@ -3005,22 +3013,19 @@ func (x *InternalRedirectPolicy) GetAllowCrossSchemeRedirect() bool { // [#next-free-field: 11] type WeightedCluster_ClusterWeight struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Name of the upstream cluster. The cluster must exist in the - // :ref:`cluster manager configuration `. + // cluster manager configuration. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // An integer between 0 and :ref:`total_weight // `. When a request matches the route, // the choice of an upstream cluster is determined by its weight. The sum of weights across all // entries in the clusters array must add up to the total_weight, which defaults to 100. - Weight *wrappers.UInt32Value `protobuf:"bytes,2,opt,name=weight,proto3" json:"weight,omitempty"` + Weight *wrapperspb.UInt32Value `protobuf:"bytes,2,opt,name=weight,proto3" json:"weight,omitempty"` // Optional endpoint metadata match criteria used by the subset load balancer. Only endpoints in // the upstream cluster with metadata matching what is set in this field will be considered for // load balancing. Note that this will be merged with what's provided in - // :ref:`RouteAction.metadata_match `, with + // RouteAction.metadata_match, with // values here taking precedence. The filter name should be specified as *envoy.lb*. MetadataMatch *v3.Metadata `protobuf:"bytes,3,opt,name=metadata_match,json=metadataMatch,proto3" json:"metadata_match,omitempty"` // Specifies a list of headers to be added to requests when this cluster is selected @@ -3050,16 +3055,16 @@ type WeightedCluster_ClusterWeight struct { // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter // specific; see the :ref:`HTTP filter documentation ` // for if and how it is utilized. - TypedPerFilterConfig map[string]*any.Any `protobuf:"bytes,10,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + TypedPerFilterConfig map[string]*anypb.Any `protobuf:"bytes,10,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WeightedCluster_ClusterWeight) Reset() { *x = WeightedCluster_ClusterWeight{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WeightedCluster_ClusterWeight) String() string { @@ -3070,7 +3075,7 @@ func (*WeightedCluster_ClusterWeight) ProtoMessage() {} func (x *WeightedCluster_ClusterWeight) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3092,7 +3097,7 @@ func (x *WeightedCluster_ClusterWeight) GetName() string { return "" } -func (x *WeightedCluster_ClusterWeight) GetWeight() *wrappers.UInt32Value { +func (x *WeightedCluster_ClusterWeight) GetWeight() *wrapperspb.UInt32Value { if x != nil { return x.Weight } @@ -3134,7 +3139,7 @@ func (x *WeightedCluster_ClusterWeight) GetResponseHeadersToRemove() []string { return nil } -func (x *WeightedCluster_ClusterWeight) GetTypedPerFilterConfig() map[string]*any.Any { +func (x *WeightedCluster_ClusterWeight) GetTypedPerFilterConfig() map[string]*anypb.Any { if x != nil { return x.TypedPerFilterConfig } @@ -3142,18 +3147,16 @@ func (x *WeightedCluster_ClusterWeight) GetTypedPerFilterConfig() map[string]*an } type RouteMatch_GrpcRouteMatchOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteMatch_GrpcRouteMatchOptions) Reset() { *x = RouteMatch_GrpcRouteMatchOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteMatch_GrpcRouteMatchOptions) String() string { @@ -3164,7 +3167,7 @@ func (*RouteMatch_GrpcRouteMatchOptions) ProtoMessage() {} func (x *RouteMatch_GrpcRouteMatchOptions) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3180,25 +3183,22 @@ func (*RouteMatch_GrpcRouteMatchOptions) Descriptor() ([]byte, []int) { } type RouteMatch_TlsContextMatchOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // If specified, the route will match against whether or not a certificate is presented. // If not specified, certificate presentation status (true or false) will not be considered when route matching. - Presented *wrappers.BoolValue `protobuf:"bytes,1,opt,name=presented,proto3" json:"presented,omitempty"` + Presented *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=presented,proto3" json:"presented,omitempty"` // If specified, the route will match against whether or not a certificate is validated. // If not specified, certificate validation status (true or false) will not be considered when route matching. - Validated *wrappers.BoolValue `protobuf:"bytes,2,opt,name=validated,proto3" json:"validated,omitempty"` + Validated *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=validated,proto3" json:"validated,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteMatch_TlsContextMatchOptions) Reset() { *x = RouteMatch_TlsContextMatchOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteMatch_TlsContextMatchOptions) String() string { @@ -3209,7 +3209,7 @@ func (*RouteMatch_TlsContextMatchOptions) ProtoMessage() {} func (x *RouteMatch_TlsContextMatchOptions) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3224,14 +3224,14 @@ func (*RouteMatch_TlsContextMatchOptions) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{4, 1} } -func (x *RouteMatch_TlsContextMatchOptions) GetPresented() *wrappers.BoolValue { +func (x *RouteMatch_TlsContextMatchOptions) GetPresented() *wrapperspb.BoolValue { if x != nil { return x.Presented } return nil } -func (x *RouteMatch_TlsContextMatchOptions) GetValidated() *wrappers.BoolValue { +func (x *RouteMatch_TlsContextMatchOptions) GetValidated() *wrapperspb.BoolValue { if x != nil { return x.Validated } @@ -3240,18 +3240,16 @@ func (x *RouteMatch_TlsContextMatchOptions) GetValidated() *wrappers.BoolValue { // An extensible message for matching CONNECT requests. type RouteMatch_ConnectMatcher struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteMatch_ConnectMatcher) Reset() { *x = RouteMatch_ConnectMatcher{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteMatch_ConnectMatcher) String() string { @@ -3262,7 +3260,7 @@ func (*RouteMatch_ConnectMatcher) ProtoMessage() {} func (x *RouteMatch_ConnectMatcher) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3285,14 +3283,11 @@ func (*RouteMatch_ConnectMatcher) Descriptor() ([]byte, []int) { // During shadowing, the host/authority header is altered such that *-shadow* is appended. This is // useful for logging. For example, *cluster1* becomes *cluster1-shadow*. // -// .. note:: +// **Note**: // -// Shadowing will not be triggered if the primary cluster does not exist. +// Shadowing will not be triggered if the primary cluster does not exist. type RouteAction_RequestMirrorPolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the cluster that requests will be mirrored to. The cluster must // exist in the cluster manager configuration. Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` @@ -3306,16 +3301,16 @@ type RouteAction_RequestMirrorPolicy struct { // value, the request will be mirrored. RuntimeFraction *v3.RuntimeFractionalPercent `protobuf:"bytes,3,opt,name=runtime_fraction,json=runtimeFraction,proto3" json:"runtime_fraction,omitempty"` // Determines if the trace span should be sampled. Defaults to true. - TraceSampled *wrappers.BoolValue `protobuf:"bytes,4,opt,name=trace_sampled,json=traceSampled,proto3" json:"trace_sampled,omitempty"` + TraceSampled *wrapperspb.BoolValue `protobuf:"bytes,4,opt,name=trace_sampled,json=traceSampled,proto3" json:"trace_sampled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteAction_RequestMirrorPolicy) Reset() { *x = RouteAction_RequestMirrorPolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteAction_RequestMirrorPolicy) String() string { @@ -3326,7 +3321,7 @@ func (*RouteAction_RequestMirrorPolicy) ProtoMessage() {} func (x *RouteAction_RequestMirrorPolicy) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3355,7 +3350,7 @@ func (x *RouteAction_RequestMirrorPolicy) GetRuntimeFraction() *v3.RuntimeFracti return nil } -func (x *RouteAction_RequestMirrorPolicy) GetTraceSampled() *wrappers.BoolValue { +func (x *RouteAction_RequestMirrorPolicy) GetTraceSampled() *wrapperspb.BoolValue { if x != nil { return x.TraceSampled } @@ -3366,11 +3361,9 @@ func (x *RouteAction_RequestMirrorPolicy) GetTraceSampled() *wrappers.BoolValue // `. // [#next-free-field: 7] type RouteAction_HashPolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to PolicySpecifier: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to PolicySpecifier: + // // *RouteAction_HashPolicy_Header_ // *RouteAction_HashPolicy_Cookie_ // *RouteAction_HashPolicy_ConnectionProperties_ @@ -3386,26 +3379,26 @@ type RouteAction_HashPolicy struct { // list of hash polices. // For example, if the following hash methods are configured: // - // ========= ======== - // specifier terminal - // ========= ======== - // Header A true - // Header B false - // Header C false - // ========= ======== + // ========= ======== + // specifier terminal + // ========= ======== + // Header A true + // Header B false + // Header C false + // ========= ======== // // The generateHash process ends if policy "header A" generates a hash, as // it's a terminal policy. - Terminal bool `protobuf:"varint,4,opt,name=terminal,proto3" json:"terminal,omitempty"` + Terminal bool `protobuf:"varint,4,opt,name=terminal,proto3" json:"terminal,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteAction_HashPolicy) Reset() { *x = RouteAction_HashPolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteAction_HashPolicy) String() string { @@ -3416,7 +3409,7 @@ func (*RouteAction_HashPolicy) ProtoMessage() {} func (x *RouteAction_HashPolicy) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3431,44 +3424,54 @@ func (*RouteAction_HashPolicy) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{6, 1} } -func (m *RouteAction_HashPolicy) GetPolicySpecifier() isRouteAction_HashPolicy_PolicySpecifier { - if m != nil { - return m.PolicySpecifier +func (x *RouteAction_HashPolicy) GetPolicySpecifier() isRouteAction_HashPolicy_PolicySpecifier { + if x != nil { + return x.PolicySpecifier } return nil } func (x *RouteAction_HashPolicy) GetHeader() *RouteAction_HashPolicy_Header { - if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_Header_); ok { - return x.Header + if x != nil { + if x, ok := x.PolicySpecifier.(*RouteAction_HashPolicy_Header_); ok { + return x.Header + } } return nil } func (x *RouteAction_HashPolicy) GetCookie() *RouteAction_HashPolicy_Cookie { - if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_Cookie_); ok { - return x.Cookie + if x != nil { + if x, ok := x.PolicySpecifier.(*RouteAction_HashPolicy_Cookie_); ok { + return x.Cookie + } } return nil } func (x *RouteAction_HashPolicy) GetConnectionProperties() *RouteAction_HashPolicy_ConnectionProperties { - if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_ConnectionProperties_); ok { - return x.ConnectionProperties + if x != nil { + if x, ok := x.PolicySpecifier.(*RouteAction_HashPolicy_ConnectionProperties_); ok { + return x.ConnectionProperties + } } return nil } func (x *RouteAction_HashPolicy) GetQueryParameter() *RouteAction_HashPolicy_QueryParameter { - if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_QueryParameter_); ok { - return x.QueryParameter + if x != nil { + if x, ok := x.PolicySpecifier.(*RouteAction_HashPolicy_QueryParameter_); ok { + return x.QueryParameter + } } return nil } func (x *RouteAction_HashPolicy) GetFilterState() *RouteAction_HashPolicy_FilterState { - if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_FilterState_); ok { - return x.FilterState + if x != nil { + if x, ok := x.PolicySpecifier.(*RouteAction_HashPolicy_FilterState_); ok { + return x.FilterState + } } return nil } @@ -3526,30 +3529,27 @@ func (*RouteAction_HashPolicy_FilterState_) isRouteAction_HashPolicy_PolicySpeci // ` // but does not affect any custom filter chain specified there. type RouteAction_UpgradeConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The case-insensitive name of this upgrade, e.g. "websocket". // For each upgrade type present in upgrade_configs, requests with // Upgrade: [upgrade_type] will be proxied upstream. UpgradeType string `protobuf:"bytes,1,opt,name=upgrade_type,json=upgradeType,proto3" json:"upgrade_type,omitempty"` // Determines if upgrades are available on this route. Defaults to true. - Enabled *wrappers.BoolValue `protobuf:"bytes,2,opt,name=enabled,proto3" json:"enabled,omitempty"` + Enabled *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=enabled,proto3" json:"enabled,omitempty"` // Configuration for sending data upstream as a raw data payload. This is used for // CONNECT requests, when forwarding CONNECT payload as raw TCP. // Note that CONNECT support is currently considered alpha in Envoy. // [#comment:TODO(htuch): Replace the above comment with an alpha tag. ConnectConfig *RouteAction_UpgradeConfig_ConnectConfig `protobuf:"bytes,3,opt,name=connect_config,json=connectConfig,proto3" json:"connect_config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteAction_UpgradeConfig) Reset() { *x = RouteAction_UpgradeConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteAction_UpgradeConfig) String() string { @@ -3560,7 +3560,7 @@ func (*RouteAction_UpgradeConfig) ProtoMessage() {} func (x *RouteAction_UpgradeConfig) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3582,7 +3582,7 @@ func (x *RouteAction_UpgradeConfig) GetUpgradeType() string { return "" } -func (x *RouteAction_UpgradeConfig) GetEnabled() *wrappers.BoolValue { +func (x *RouteAction_UpgradeConfig) GetEnabled() *wrapperspb.BoolValue { if x != nil { return x.Enabled } @@ -3597,25 +3597,22 @@ func (x *RouteAction_UpgradeConfig) GetConnectConfig() *RouteAction_UpgradeConfi } type RouteAction_HashPolicy_Header struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the request header that will be used to obtain the hash // key. If the request header is not present, no hash will be produced. HeaderName string `protobuf:"bytes,1,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"` // If specified, the request header value will be rewritten and used // to produce the hash key. - RegexRewrite *v31.RegexMatchAndSubstitute `protobuf:"bytes,2,opt,name=regex_rewrite,json=regexRewrite,proto3" json:"regex_rewrite,omitempty"` + RegexRewrite *v31.RegexMatchAndSubstitute `protobuf:"bytes,2,opt,name=regex_rewrite,json=regexRewrite,proto3" json:"regex_rewrite,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteAction_HashPolicy_Header) Reset() { *x = RouteAction_HashPolicy_Header{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteAction_HashPolicy_Header) String() string { @@ -3626,7 +3623,7 @@ func (*RouteAction_HashPolicy_Header) ProtoMessage() {} func (x *RouteAction_HashPolicy_Header) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3657,23 +3654,20 @@ func (x *RouteAction_HashPolicy_Header) GetRegexRewrite() *v31.RegexMatchAndSubs // Envoy supports two types of cookie affinity: // -// 1. Passive. Envoy takes a cookie that's present in the cookies header and -// hashes on its value. +// 1. Passive. Envoy takes a cookie that's present in the cookies header and +// hashes on its value. // -// 2. Generated. Envoy generates and sets a cookie with an expiration (TTL) -// on the first request from the client in its response to the client, -// based on the endpoint the request gets sent to. The client then -// presents this on the next and all subsequent requests. The hash of -// this is sufficient to ensure these requests get sent to the same -// endpoint. The cookie is generated by hashing the source and -// destination ports and addresses so that multiple independent HTTP2 -// streams on the same connection will independently receive the same -// cookie, even if they arrive at the Envoy simultaneously. +// 2. Generated. Envoy generates and sets a cookie with an expiration (TTL) +// on the first request from the client in its response to the client, +// based on the endpoint the request gets sent to. The client then +// presents this on the next and all subsequent requests. The hash of +// this is sufficient to ensure these requests get sent to the same +// endpoint. The cookie is generated by hashing the source and +// destination ports and addresses so that multiple independent HTTP2 +// streams on the same connection will independently receive the same +// cookie, even if they arrive at the Envoy simultaneously. type RouteAction_HashPolicy_Cookie struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the cookie that will be used to obtain the hash key. If the // cookie is not present and ttl below is not set, no hash will be // produced. @@ -3681,19 +3675,19 @@ type RouteAction_HashPolicy_Cookie struct { // If specified, a cookie with the TTL will be generated if the cookie is // not present. If the TTL is present and zero, the generated cookie will // be a session cookie. - Ttl *duration.Duration `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"` + Ttl *durationpb.Duration `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"` // The name of the path for the cookie. If no path is specified here, no path // will be set for the cookie. - Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` + Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteAction_HashPolicy_Cookie) Reset() { *x = RouteAction_HashPolicy_Cookie{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteAction_HashPolicy_Cookie) String() string { @@ -3704,7 +3698,7 @@ func (*RouteAction_HashPolicy_Cookie) ProtoMessage() {} func (x *RouteAction_HashPolicy_Cookie) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3726,7 +3720,7 @@ func (x *RouteAction_HashPolicy_Cookie) GetName() string { return "" } -func (x *RouteAction_HashPolicy_Cookie) GetTtl() *duration.Duration { +func (x *RouteAction_HashPolicy_Cookie) GetTtl() *durationpb.Duration { if x != nil { return x.Ttl } @@ -3741,21 +3735,18 @@ func (x *RouteAction_HashPolicy_Cookie) GetPath() string { } type RouteAction_HashPolicy_ConnectionProperties struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Hash on source IP address. - SourceIp bool `protobuf:"varint,1,opt,name=source_ip,json=sourceIp,proto3" json:"source_ip,omitempty"` + SourceIp bool `protobuf:"varint,1,opt,name=source_ip,json=sourceIp,proto3" json:"source_ip,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteAction_HashPolicy_ConnectionProperties) Reset() { *x = RouteAction_HashPolicy_ConnectionProperties{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteAction_HashPolicy_ConnectionProperties) String() string { @@ -3766,7 +3757,7 @@ func (*RouteAction_HashPolicy_ConnectionProperties) ProtoMessage() {} func (x *RouteAction_HashPolicy_ConnectionProperties) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3789,23 +3780,20 @@ func (x *RouteAction_HashPolicy_ConnectionProperties) GetSourceIp() bool { } type RouteAction_HashPolicy_QueryParameter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the URL query parameter that will be used to obtain the hash // key. If the parameter is not present, no hash will be produced. Query // parameter names are case-sensitive. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteAction_HashPolicy_QueryParameter) Reset() { *x = RouteAction_HashPolicy_QueryParameter{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteAction_HashPolicy_QueryParameter) String() string { @@ -3816,7 +3804,7 @@ func (*RouteAction_HashPolicy_QueryParameter) ProtoMessage() {} func (x *RouteAction_HashPolicy_QueryParameter) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3839,23 +3827,20 @@ func (x *RouteAction_HashPolicy_QueryParameter) GetName() string { } type RouteAction_HashPolicy_FilterState struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the Object in the per-request filterState, which is an // Envoy::Http::Hashable object. If there is no data associated with the key, // or the stored object is not Envoy::Http::Hashable, no hash will be produced. - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteAction_HashPolicy_FilterState) Reset() { *x = RouteAction_HashPolicy_FilterState{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteAction_HashPolicy_FilterState) String() string { @@ -3866,7 +3851,7 @@ func (*RouteAction_HashPolicy_FilterState) ProtoMessage() {} func (x *RouteAction_HashPolicy_FilterState) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3891,21 +3876,18 @@ func (x *RouteAction_HashPolicy_FilterState) GetKey() string { // Configuration for sending data upstream as a raw data payload. This is used for // CONNECT requests, when forwarding CONNECT payload as raw TCP. type RouteAction_UpgradeConfig_ConnectConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // If present, the proxy protocol header will be prepended to the CONNECT payload sent upstream. ProxyProtocolConfig *v3.ProxyProtocolConfig `protobuf:"bytes,1,opt,name=proxy_protocol_config,json=proxyProtocolConfig,proto3" json:"proxy_protocol_config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteAction_UpgradeConfig_ConnectConfig) Reset() { *x = RouteAction_UpgradeConfig_ConnectConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteAction_UpgradeConfig_ConnectConfig) String() string { @@ -3916,7 +3898,7 @@ func (*RouteAction_UpgradeConfig_ConnectConfig) ProtoMessage() {} func (x *RouteAction_UpgradeConfig_ConnectConfig) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[33] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3939,23 +3921,21 @@ func (x *RouteAction_UpgradeConfig_ConnectConfig) GetProxyProtocolConfig() *v3.P } type RetryPolicy_RetryPriority struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Types that are assignable to ConfigType: + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Types that are valid to be assigned to ConfigType: + // // *RetryPolicy_RetryPriority_TypedConfig - ConfigType isRetryPolicy_RetryPriority_ConfigType `protobuf_oneof:"config_type"` + ConfigType isRetryPolicy_RetryPriority_ConfigType `protobuf_oneof:"config_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RetryPolicy_RetryPriority) Reset() { *x = RetryPolicy_RetryPriority{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RetryPolicy_RetryPriority) String() string { @@ -3966,7 +3946,7 @@ func (*RetryPolicy_RetryPriority) ProtoMessage() {} func (x *RetryPolicy_RetryPriority) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[34] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3988,16 +3968,18 @@ func (x *RetryPolicy_RetryPriority) GetName() string { return "" } -func (m *RetryPolicy_RetryPriority) GetConfigType() isRetryPolicy_RetryPriority_ConfigType { - if m != nil { - return m.ConfigType +func (x *RetryPolicy_RetryPriority) GetConfigType() isRetryPolicy_RetryPriority_ConfigType { + if x != nil { + return x.ConfigType } return nil } -func (x *RetryPolicy_RetryPriority) GetTypedConfig() *any.Any { - if x, ok := x.GetConfigType().(*RetryPolicy_RetryPriority_TypedConfig); ok { - return x.TypedConfig +func (x *RetryPolicy_RetryPriority) GetTypedConfig() *anypb.Any { + if x != nil { + if x, ok := x.ConfigType.(*RetryPolicy_RetryPriority_TypedConfig); ok { + return x.TypedConfig + } } return nil } @@ -4007,29 +3989,27 @@ type isRetryPolicy_RetryPriority_ConfigType interface { } type RetryPolicy_RetryPriority_TypedConfig struct { - TypedConfig *any.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"` + TypedConfig *anypb.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"` } func (*RetryPolicy_RetryPriority_TypedConfig) isRetryPolicy_RetryPriority_ConfigType() {} type RetryPolicy_RetryHostPredicate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Types that are assignable to ConfigType: + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Types that are valid to be assigned to ConfigType: + // // *RetryPolicy_RetryHostPredicate_TypedConfig - ConfigType isRetryPolicy_RetryHostPredicate_ConfigType `protobuf_oneof:"config_type"` + ConfigType isRetryPolicy_RetryHostPredicate_ConfigType `protobuf_oneof:"config_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RetryPolicy_RetryHostPredicate) Reset() { *x = RetryPolicy_RetryHostPredicate{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RetryPolicy_RetryHostPredicate) String() string { @@ -4040,7 +4020,7 @@ func (*RetryPolicy_RetryHostPredicate) ProtoMessage() {} func (x *RetryPolicy_RetryHostPredicate) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4062,16 +4042,18 @@ func (x *RetryPolicy_RetryHostPredicate) GetName() string { return "" } -func (m *RetryPolicy_RetryHostPredicate) GetConfigType() isRetryPolicy_RetryHostPredicate_ConfigType { - if m != nil { - return m.ConfigType +func (x *RetryPolicy_RetryHostPredicate) GetConfigType() isRetryPolicy_RetryHostPredicate_ConfigType { + if x != nil { + return x.ConfigType } return nil } -func (x *RetryPolicy_RetryHostPredicate) GetTypedConfig() *any.Any { - if x, ok := x.GetConfigType().(*RetryPolicy_RetryHostPredicate_TypedConfig); ok { - return x.TypedConfig +func (x *RetryPolicy_RetryHostPredicate) GetTypedConfig() *anypb.Any { + if x != nil { + if x, ok := x.ConfigType.(*RetryPolicy_RetryHostPredicate_TypedConfig); ok { + return x.TypedConfig + } } return nil } @@ -4081,35 +4063,32 @@ type isRetryPolicy_RetryHostPredicate_ConfigType interface { } type RetryPolicy_RetryHostPredicate_TypedConfig struct { - TypedConfig *any.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"` + TypedConfig *anypb.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"` } func (*RetryPolicy_RetryHostPredicate_TypedConfig) isRetryPolicy_RetryHostPredicate_ConfigType() {} type RetryPolicy_RetryBackOff struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the base interval between retries. This parameter is required and must be greater // than zero. Values less than 1 ms are rounded up to 1 ms. // See :ref:`config_http_filters_router_x-envoy-max-retries` for a discussion of Envoy's // back-off algorithm. - BaseInterval *duration.Duration `protobuf:"bytes,1,opt,name=base_interval,json=baseInterval,proto3" json:"base_interval,omitempty"` + BaseInterval *durationpb.Duration `protobuf:"bytes,1,opt,name=base_interval,json=baseInterval,proto3" json:"base_interval,omitempty"` // Specifies the maximum interval between retries. This parameter is optional, but must be // greater than or equal to the `base_interval` if set. The default is 10 times the // `base_interval`. See :ref:`config_http_filters_router_x-envoy-max-retries` for a discussion // of Envoy's back-off algorithm. - MaxInterval *duration.Duration `protobuf:"bytes,2,opt,name=max_interval,json=maxInterval,proto3" json:"max_interval,omitempty"` + MaxInterval *durationpb.Duration `protobuf:"bytes,2,opt,name=max_interval,json=maxInterval,proto3" json:"max_interval,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RetryPolicy_RetryBackOff) Reset() { *x = RetryPolicy_RetryBackOff{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RetryPolicy_RetryBackOff) String() string { @@ -4120,7 +4099,7 @@ func (*RetryPolicy_RetryBackOff) ProtoMessage() {} func (x *RetryPolicy_RetryBackOff) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4135,14 +4114,14 @@ func (*RetryPolicy_RetryBackOff) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{7, 2} } -func (x *RetryPolicy_RetryBackOff) GetBaseInterval() *duration.Duration { +func (x *RetryPolicy_RetryBackOff) GetBaseInterval() *durationpb.Duration { if x != nil { return x.BaseInterval } return nil } -func (x *RetryPolicy_RetryBackOff) GetMaxInterval() *duration.Duration { +func (x *RetryPolicy_RetryBackOff) GetMaxInterval() *durationpb.Duration { if x != nil { return x.MaxInterval } @@ -4151,11 +4130,9 @@ func (x *RetryPolicy_RetryBackOff) GetMaxInterval() *duration.Duration { // [#next-free-field: 8] type RateLimit_Action struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to ActionSpecifier: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to ActionSpecifier: + // // *RateLimit_Action_SourceCluster_ // *RateLimit_Action_DestinationCluster_ // *RateLimit_Action_RequestHeaders_ @@ -4164,15 +4141,15 @@ type RateLimit_Action struct { // *RateLimit_Action_HeaderValueMatch_ // *RateLimit_Action_DynamicMetadata ActionSpecifier isRateLimit_Action_ActionSpecifier `protobuf_oneof:"action_specifier"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimit_Action) Reset() { *x = RateLimit_Action{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimit_Action) String() string { @@ -4183,7 +4160,7 @@ func (*RateLimit_Action) ProtoMessage() {} func (x *RateLimit_Action) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[37] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4198,58 +4175,72 @@ func (*RateLimit_Action) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{14, 0} } -func (m *RateLimit_Action) GetActionSpecifier() isRateLimit_Action_ActionSpecifier { - if m != nil { - return m.ActionSpecifier +func (x *RateLimit_Action) GetActionSpecifier() isRateLimit_Action_ActionSpecifier { + if x != nil { + return x.ActionSpecifier } return nil } func (x *RateLimit_Action) GetSourceCluster() *RateLimit_Action_SourceCluster { - if x, ok := x.GetActionSpecifier().(*RateLimit_Action_SourceCluster_); ok { - return x.SourceCluster + if x != nil { + if x, ok := x.ActionSpecifier.(*RateLimit_Action_SourceCluster_); ok { + return x.SourceCluster + } } return nil } func (x *RateLimit_Action) GetDestinationCluster() *RateLimit_Action_DestinationCluster { - if x, ok := x.GetActionSpecifier().(*RateLimit_Action_DestinationCluster_); ok { - return x.DestinationCluster + if x != nil { + if x, ok := x.ActionSpecifier.(*RateLimit_Action_DestinationCluster_); ok { + return x.DestinationCluster + } } return nil } func (x *RateLimit_Action) GetRequestHeaders() *RateLimit_Action_RequestHeaders { - if x, ok := x.GetActionSpecifier().(*RateLimit_Action_RequestHeaders_); ok { - return x.RequestHeaders + if x != nil { + if x, ok := x.ActionSpecifier.(*RateLimit_Action_RequestHeaders_); ok { + return x.RequestHeaders + } } return nil } func (x *RateLimit_Action) GetRemoteAddress() *RateLimit_Action_RemoteAddress { - if x, ok := x.GetActionSpecifier().(*RateLimit_Action_RemoteAddress_); ok { - return x.RemoteAddress + if x != nil { + if x, ok := x.ActionSpecifier.(*RateLimit_Action_RemoteAddress_); ok { + return x.RemoteAddress + } } return nil } func (x *RateLimit_Action) GetGenericKey() *RateLimit_Action_GenericKey { - if x, ok := x.GetActionSpecifier().(*RateLimit_Action_GenericKey_); ok { - return x.GenericKey + if x != nil { + if x, ok := x.ActionSpecifier.(*RateLimit_Action_GenericKey_); ok { + return x.GenericKey + } } return nil } func (x *RateLimit_Action) GetHeaderValueMatch() *RateLimit_Action_HeaderValueMatch { - if x, ok := x.GetActionSpecifier().(*RateLimit_Action_HeaderValueMatch_); ok { - return x.HeaderValueMatch + if x != nil { + if x, ok := x.ActionSpecifier.(*RateLimit_Action_HeaderValueMatch_); ok { + return x.HeaderValueMatch + } } return nil } func (x *RateLimit_Action) GetDynamicMetadata() *RateLimit_Action_DynamicMetaData { - if x, ok := x.GetActionSpecifier().(*RateLimit_Action_DynamicMetadata); ok { - return x.DynamicMetadata + if x != nil { + if x, ok := x.ActionSpecifier.(*RateLimit_Action_DynamicMetadata); ok { + return x.DynamicMetadata + } } return nil } @@ -4308,22 +4299,20 @@ func (*RateLimit_Action_HeaderValueMatch_) isRateLimit_Action_ActionSpecifier() func (*RateLimit_Action_DynamicMetadata) isRateLimit_Action_ActionSpecifier() {} type RateLimit_Override struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to OverrideSpecifier: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to OverrideSpecifier: + // // *RateLimit_Override_DynamicMetadata_ OverrideSpecifier isRateLimit_Override_OverrideSpecifier `protobuf_oneof:"override_specifier"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimit_Override) Reset() { *x = RateLimit_Override{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimit_Override) String() string { @@ -4334,7 +4323,7 @@ func (*RateLimit_Override) ProtoMessage() {} func (x *RateLimit_Override) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[38] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4349,16 +4338,18 @@ func (*RateLimit_Override) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{14, 1} } -func (m *RateLimit_Override) GetOverrideSpecifier() isRateLimit_Override_OverrideSpecifier { - if m != nil { - return m.OverrideSpecifier +func (x *RateLimit_Override) GetOverrideSpecifier() isRateLimit_Override_OverrideSpecifier { + if x != nil { + return x.OverrideSpecifier } return nil } func (x *RateLimit_Override) GetDynamicMetadata() *RateLimit_Override_DynamicMetadata { - if x, ok := x.GetOverrideSpecifier().(*RateLimit_Override_DynamicMetadata_); ok { - return x.DynamicMetadata + if x != nil { + if x, ok := x.OverrideSpecifier.(*RateLimit_Override_DynamicMetadata_); ok { + return x.DynamicMetadata + } } return nil } @@ -4378,22 +4369,20 @@ func (*RateLimit_Override_DynamicMetadata_) isRateLimit_Override_OverrideSpecifi // // .. code-block:: cpp // -// ("source_cluster", "") +// ("source_cluster", "") // -// is derived from the :option:`--service-cluster` option. +// is derived from the `--service-cluster` option. type RateLimit_Action_SourceCluster struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimit_Action_SourceCluster) Reset() { *x = RateLimit_Action_SourceCluster{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimit_Action_SourceCluster) String() string { @@ -4404,7 +4393,7 @@ func (*RateLimit_Action_SourceCluster) ProtoMessage() {} func (x *RateLimit_Action_SourceCluster) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[39] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4423,31 +4412,29 @@ func (*RateLimit_Action_SourceCluster) Descriptor() ([]byte, []int) { // // .. code-block:: cpp // -// ("destination_cluster", "") +// ("destination_cluster", "") // // Once a request matches against a route table rule, a routed cluster is determined by one of // the following :ref:`route table configuration ` // settings: // -// * :ref:`cluster ` indicates the upstream cluster -// to route to. -// * :ref:`weighted_clusters ` -// chooses a cluster randomly from a set of clusters with attributed weight. -// * :ref:`cluster_header ` indicates which -// header in the request contains the target cluster. +// - cluster indicates the upstream cluster +// to route to. +// - :ref:`weighted_clusters ` +// chooses a cluster randomly from a set of clusters with attributed weight. +// - cluster_header indicates which +// header in the request contains the target cluster. type RateLimit_Action_DestinationCluster struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimit_Action_DestinationCluster) Reset() { *x = RateLimit_Action_DestinationCluster{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimit_Action_DestinationCluster) String() string { @@ -4458,7 +4445,7 @@ func (*RateLimit_Action_DestinationCluster) ProtoMessage() {} func (x *RateLimit_Action_DestinationCluster) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[40] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4478,12 +4465,9 @@ func (*RateLimit_Action_DestinationCluster) Descriptor() ([]byte, []int) { // // .. code-block:: cpp // -// ("", "") +// ("", "") type RateLimit_Action_RequestHeaders struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The header name to be queried from the request headers. The header’s // value is used to populate the value of the descriptor entry for the // descriptor_key. @@ -4493,16 +4477,16 @@ type RateLimit_Action_RequestHeaders struct { // If set to true, Envoy skips the descriptor while calling rate limiting service // when header is not present in the request. By default it skips calling the // rate limiting service if this header is not present in the request. - SkipIfAbsent bool `protobuf:"varint,3,opt,name=skip_if_absent,json=skipIfAbsent,proto3" json:"skip_if_absent,omitempty"` + SkipIfAbsent bool `protobuf:"varint,3,opt,name=skip_if_absent,json=skipIfAbsent,proto3" json:"skip_if_absent,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimit_Action_RequestHeaders) Reset() { *x = RateLimit_Action_RequestHeaders{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimit_Action_RequestHeaders) String() string { @@ -4513,7 +4497,7 @@ func (*RateLimit_Action_RequestHeaders) ProtoMessage() {} func (x *RateLimit_Action_RequestHeaders) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[41] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4550,24 +4534,22 @@ func (x *RateLimit_Action_RequestHeaders) GetSkipIfAbsent() bool { } // The following descriptor entry is appended to the descriptor and is populated using the -// trusted address from :ref:`x-forwarded-for `: +// trusted address from x-forwarded-for. // // .. code-block:: cpp // -// ("remote_address", "") +// ("remote_address", "") type RateLimit_Action_RemoteAddress struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimit_Action_RemoteAddress) Reset() { *x = RateLimit_Action_RemoteAddress{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimit_Action_RemoteAddress) String() string { @@ -4578,7 +4560,7 @@ func (*RateLimit_Action_RemoteAddress) ProtoMessage() {} func (x *RateLimit_Action_RemoteAddress) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[42] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4597,23 +4579,20 @@ func (*RateLimit_Action_RemoteAddress) Descriptor() ([]byte, []int) { // // .. code-block:: cpp // -// ("generic_key", "") +// ("generic_key", "") type RateLimit_Action_GenericKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The value to use in the descriptor entry. DescriptorValue string `protobuf:"bytes,1,opt,name=descriptor_value,json=descriptorValue,proto3" json:"descriptor_value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimit_Action_GenericKey) Reset() { *x = RateLimit_Action_GenericKey{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimit_Action_GenericKey) String() string { @@ -4624,7 +4603,7 @@ func (*RateLimit_Action_GenericKey) ProtoMessage() {} func (x *RateLimit_Action_GenericKey) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4650,34 +4629,31 @@ func (x *RateLimit_Action_GenericKey) GetDescriptorValue() string { // // .. code-block:: cpp // -// ("header_match", "") +// ("header_match", "") type RateLimit_Action_HeaderValueMatch struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The value to use in the descriptor entry. DescriptorValue string `protobuf:"bytes,1,opt,name=descriptor_value,json=descriptorValue,proto3" json:"descriptor_value,omitempty"` // If set to true, the action will append a descriptor entry when the // request matches the headers. If set to false, the action will append a // descriptor entry when the request does not match the headers. The // default value is true. - ExpectMatch *wrappers.BoolValue `protobuf:"bytes,2,opt,name=expect_match,json=expectMatch,proto3" json:"expect_match,omitempty"` + ExpectMatch *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=expect_match,json=expectMatch,proto3" json:"expect_match,omitempty"` // Specifies a set of headers that the rate limit action should match // on. The action will check the request’s headers against all the // specified headers in the config. A match will happen if all the // headers in the config are present in the request with the same values // (or based on presence if the value field is not in the config). - Headers []*HeaderMatcher `protobuf:"bytes,3,rep,name=headers,proto3" json:"headers,omitempty"` + Headers []*HeaderMatcher `protobuf:"bytes,3,rep,name=headers,proto3" json:"headers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimit_Action_HeaderValueMatch) Reset() { *x = RateLimit_Action_HeaderValueMatch{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimit_Action_HeaderValueMatch) String() string { @@ -4688,7 +4664,7 @@ func (*RateLimit_Action_HeaderValueMatch) ProtoMessage() {} func (x *RateLimit_Action_HeaderValueMatch) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[44] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4710,7 +4686,7 @@ func (x *RateLimit_Action_HeaderValueMatch) GetDescriptorValue() string { return "" } -func (x *RateLimit_Action_HeaderValueMatch) GetExpectMatch() *wrappers.BoolValue { +func (x *RateLimit_Action_HeaderValueMatch) GetExpectMatch() *wrapperspb.BoolValue { if x != nil { return x.ExpectMatch } @@ -4728,26 +4704,23 @@ func (x *RateLimit_Action_HeaderValueMatch) GetHeaders() []*HeaderMatcher { // // .. code-block:: cpp // -// ("", "") +// ("", "") type RateLimit_Action_DynamicMetaData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The key to use in the descriptor entry. DescriptorKey string `protobuf:"bytes,1,opt,name=descriptor_key,json=descriptorKey,proto3" json:"descriptor_key,omitempty"` // Metadata struct that defines the key and path to retrieve the string value. A match will // only happen if the value in the dynamic metadata is of type string. - MetadataKey *v34.MetadataKey `protobuf:"bytes,2,opt,name=metadata_key,json=metadataKey,proto3" json:"metadata_key,omitempty"` + MetadataKey *v34.MetadataKey `protobuf:"bytes,2,opt,name=metadata_key,json=metadataKey,proto3" json:"metadata_key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimit_Action_DynamicMetaData) Reset() { *x = RateLimit_Action_DynamicMetaData{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[45] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimit_Action_DynamicMetaData) String() string { @@ -4758,7 +4731,7 @@ func (*RateLimit_Action_DynamicMetaData) ProtoMessage() {} func (x *RateLimit_Action_DynamicMetaData) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[45] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4789,24 +4762,21 @@ func (x *RateLimit_Action_DynamicMetaData) GetMetadataKey() *v34.MetadataKey { // Fetches the override from the dynamic metadata. type RateLimit_Override_DynamicMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Metadata struct that defines the key and path to retrieve the struct value. // The value must be a struct containing an integer "requests_per_unit" property // and a "unit" property with a value parseable to :ref:`RateLimitUnit // enum ` - MetadataKey *v34.MetadataKey `protobuf:"bytes,1,opt,name=metadata_key,json=metadataKey,proto3" json:"metadata_key,omitempty"` + MetadataKey *v34.MetadataKey `protobuf:"bytes,1,opt,name=metadata_key,json=metadataKey,proto3" json:"metadata_key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimit_Override_DynamicMetadata) Reset() { *x = RateLimit_Override_DynamicMetadata{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[46] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimit_Override_DynamicMetadata) String() string { @@ -4817,7 +4787,7 @@ func (*RateLimit_Override_DynamicMetadata) ProtoMessage() {} func (x *RateLimit_Override_DynamicMetadata) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[46] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4841,7 +4811,7 @@ func (x *RateLimit_Override_DynamicMetadata) GetMetadataKey() *v34.MetadataKey { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDesc = string([]byte{ 0x0a, 0x60, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -4920,7 +4890,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x12, 0xfa, 0x42, 0x0f, - 0x92, 0x01, 0x0c, 0x08, 0x01, 0x22, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 0x52, + 0x92, 0x01, 0x0c, 0x08, 0x01, 0x22, 0x08, 0x72, 0x06, 0xc8, 0x01, 0x00, 0xc0, 0x01, 0x02, 0x52, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, @@ -4952,7 +4922,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_ 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x12, 0x4d, 0x0a, 0x19, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x42, 0x12, 0xfa, 0x42, 0x0f, 0x92, 0x01, - 0x0c, 0x22, 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00, 0x52, 0x16, 0x72, + 0x0c, 0x22, 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc8, 0x01, 0x00, 0xc0, 0x01, 0x01, 0x52, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x71, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x64, 0x64, @@ -5081,8 +5051,8 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_ 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x12, 0x4d, 0x0a, 0x19, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x42, 0x12, 0xfa, - 0x42, 0x0f, 0x92, 0x01, 0x0c, 0x22, 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc0, 0x01, 0x01, 0xc8, 0x01, - 0x00, 0x52, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x42, 0x0f, 0x92, 0x01, 0x0c, 0x22, 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc8, 0x01, 0x00, 0xc0, 0x01, + 0x01, 0x52, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x71, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x64, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x6f, 0x6c, @@ -5308,8 +5278,8 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc0, 0x01, 0x01, 0xc8, 0x01, - 0x00, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, + 0x28, 0x09, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc8, 0x01, 0x00, 0xc0, 0x01, + 0x01, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x5d, 0x0a, 0x11, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, @@ -5332,7 +5302,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_ 0x33, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x32, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 0x52, 0x0d, + 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc8, 0x01, 0x00, 0xc0, 0x01, 0x02, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x5b, 0x0a, 0x0d, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, @@ -5341,8 +5311,8 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_ 0x6e, 0x64, 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x67, 0x65, 0x78, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x3f, 0x0a, 0x14, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x74, 0x65, 0x72, - 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, - 0x01, 0x02, 0xc8, 0x01, 0x00, 0x48, 0x01, 0x52, 0x12, 0x68, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, + 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc8, + 0x01, 0x00, 0xc0, 0x01, 0x02, 0x48, 0x01, 0x52, 0x12, 0x68, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x48, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, @@ -5350,7 +5320,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_ 0x75, 0x65, 0x48, 0x01, 0x52, 0x0f, 0x61, 0x75, 0x74, 0x6f, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x13, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x1d, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00, 0x48, + 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc8, 0x01, 0x00, 0xc0, 0x01, 0x01, 0x48, 0x01, 0x52, 0x11, 0x68, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, @@ -5499,7 +5469,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_ 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x1a, 0xd7, 0x01, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00, + 0x09, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc8, 0x01, 0x00, 0xc0, 0x01, 0x01, 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x5b, 0x0a, 0x0d, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, @@ -5552,7 +5522,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_ 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x1a, 0x9a, 0x03, 0x0a, 0x0d, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2e, 0x0a, 0x0c, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 0x52, + 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc8, 0x01, 0x00, 0xc0, 0x01, 0x02, 0x52, 0x0b, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, @@ -5717,16 +5687,16 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_ 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x30, 0x0a, 0x0d, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 0x52, 0x0c, 0x68, 0x6f, + 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc8, 0x01, 0x00, 0xc0, 0x01, 0x02, 0x52, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x32, 0x0a, 0x0d, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x02, - 0xc8, 0x01, 0x00, 0x48, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x52, 0x65, 0x64, 0x69, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc8, 0x01, 0x00, + 0xc0, 0x01, 0x02, 0x48, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x34, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, - 0x72, 0x06, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 0x48, 0x01, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x66, + 0x72, 0x06, 0xc8, 0x01, 0x00, 0xc0, 0x01, 0x02, 0x48, 0x01, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x71, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, @@ -5886,8 +5856,8 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_ 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0xda, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc0, - 0x01, 0x01, 0xc8, 0x01, 0x00, 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc8, + 0x01, 0x00, 0xc0, 0x01, 0x01, 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x0e, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x0d, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x4b, 0x65, @@ -5965,7 +5935,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_ 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x85, 0x04, 0x0a, 0x0d, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00, + 0x09, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc8, 0x01, 0x00, 0xc0, 0x01, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x65, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x57, 0x0a, 0x10, 0x73, 0x61, 0x66, @@ -6035,35 +6005,35 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_ 0x73, 0x73, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x42, 0xa7, 0x01, 0x0a, 0x2b, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, - 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, - 0x76, 0x33, 0x42, 0x14, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, - 0x6e, 0x74, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x50, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, - 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2f, 0x76, 0x33, 0xe2, 0xb5, 0xdf, 0xcb, - 0x07, 0x02, 0x10, 0x02, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} + 0x63, 0x74, 0x42, 0xab, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, + 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x2b, 0x69, 0x6f, 0x2e, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x42, 0x14, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6d, + 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x50, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2f, 0x76, 0x33, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_enumTypes = make([]protoimpl.EnumInfo, 4) var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes = make([]protoimpl.MessageInfo, 47) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_goTypes = []any{ (VirtualHost_TlsRequirementType)(0), // 0: solo.io.envoy.config.route.v3.VirtualHost.TlsRequirementType (RouteAction_ClusterNotFoundResponseCode)(0), // 1: solo.io.envoy.config.route.v3.RouteAction.ClusterNotFoundResponseCode (RouteAction_InternalRedirectAction)(0), // 2: solo.io.envoy.config.route.v3.RouteAction.InternalRedirectAction @@ -6116,15 +6086,15 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_ (*RateLimit_Action_DynamicMetaData)(nil), // 49: solo.io.envoy.config.route.v3.RateLimit.Action.DynamicMetaData (*RateLimit_Override_DynamicMetadata)(nil), // 50: solo.io.envoy.config.route.v3.RateLimit.Override.DynamicMetadata (*v3.HeaderValueOption)(nil), // 51: solo.io.envoy.config.core.v3.HeaderValueOption - (*any.Any)(nil), // 52: google.protobuf.Any - (*wrappers.UInt32Value)(nil), // 53: google.protobuf.UInt32Value + (*anypb.Any)(nil), // 52: google.protobuf.Any + (*wrapperspb.UInt32Value)(nil), // 53: google.protobuf.UInt32Value (*v3.Metadata)(nil), // 54: solo.io.envoy.config.core.v3.Metadata (*v31.RegexMatcher)(nil), // 55: solo.io.envoy.type.matcher.v3.RegexMatcher - (*wrappers.BoolValue)(nil), // 56: google.protobuf.BoolValue + (*wrapperspb.BoolValue)(nil), // 56: google.protobuf.BoolValue (*v3.RuntimeFractionalPercent)(nil), // 57: solo.io.envoy.config.core.v3.RuntimeFractionalPercent (*v31.StringMatcher)(nil), // 58: solo.io.envoy.type.matcher.v3.StringMatcher (*v31.RegexMatchAndSubstitute)(nil), // 59: solo.io.envoy.type.matcher.v3.RegexMatchAndSubstitute - (*duration.Duration)(nil), // 60: google.protobuf.Duration + (*durationpb.Duration)(nil), // 60: google.protobuf.Duration (v3.RoutingPriority)(0), // 61: solo.io.envoy.config.core.v3.RoutingPriority (*v32.FractionalPercent)(nil), // 62: solo.io.envoy.type.v3.FractionalPercent (*v3.DataSource)(nil), // 63: solo.io.envoy.config.core.v3.DataSource @@ -6273,552 +6243,22 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VirtualHost); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FilterAction); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Route); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WeightedCluster); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteMatch); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CorsPolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteAction); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HedgePolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RedirectAction); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DirectResponseAction); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Decorator); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Tracing); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VirtualCluster); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimit); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HeaderMatcher); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryParameterMatcher); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InternalRedirectPolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WeightedCluster_ClusterWeight); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteMatch_GrpcRouteMatchOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteMatch_TlsContextMatchOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteMatch_ConnectMatcher); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteAction_RequestMirrorPolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteAction_HashPolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteAction_UpgradeConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteAction_HashPolicy_Header); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteAction_HashPolicy_Cookie); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteAction_HashPolicy_ConnectionProperties); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteAction_HashPolicy_QueryParameter); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteAction_HashPolicy_FilterState); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteAction_UpgradeConfig_ConnectConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicy_RetryPriority); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicy_RetryHostPredicate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicy_RetryBackOff); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimit_Action); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimit_Override); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimit_Action_SourceCluster); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimit_Action_DestinationCluster); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimit_Action_RequestHeaders); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimit_Action_RemoteAddress); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimit_Action_GenericKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimit_Action_HeaderValueMatch); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimit_Action_DynamicMetaData); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimit_Override_DynamicMetadata); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[2].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[2].OneofWrappers = []any{ (*Route_Route)(nil), (*Route_Redirect)(nil), (*Route_DirectResponse)(nil), (*Route_FilterAction)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[4].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[4].OneofWrappers = []any{ (*RouteMatch_Prefix)(nil), (*RouteMatch_Path)(nil), (*RouteMatch_SafeRegex)(nil), (*RouteMatch_ConnectMatcher_)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[5].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[5].OneofWrappers = []any{ (*CorsPolicy_FilterEnabled)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[6].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[6].OneofWrappers = []any{ (*RouteAction_Cluster)(nil), (*RouteAction_ClusterHeader)(nil), (*RouteAction_WeightedClusters)(nil), @@ -6826,13 +6266,13 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route (*RouteAction_AutoHostRewrite)(nil), (*RouteAction_HostRewriteHeader)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[9].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[9].OneofWrappers = []any{ (*RedirectAction_HttpsRedirect)(nil), (*RedirectAction_SchemeRedirect)(nil), (*RedirectAction_PathRedirect)(nil), (*RedirectAction_PrefixRewrite)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[15].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[15].OneofWrappers = []any{ (*HeaderMatcher_ExactMatch)(nil), (*HeaderMatcher_SafeRegexMatch)(nil), (*HeaderMatcher_RangeMatch)(nil), @@ -6840,24 +6280,24 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route (*HeaderMatcher_PrefixMatch)(nil), (*HeaderMatcher_SuffixMatch)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[16].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[16].OneofWrappers = []any{ (*QueryParameterMatcher_StringMatch)(nil), (*QueryParameterMatcher_PresentMatch)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[26].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[26].OneofWrappers = []any{ (*RouteAction_HashPolicy_Header_)(nil), (*RouteAction_HashPolicy_Cookie_)(nil), (*RouteAction_HashPolicy_ConnectionProperties_)(nil), (*RouteAction_HashPolicy_QueryParameter_)(nil), (*RouteAction_HashPolicy_FilterState_)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[34].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[34].OneofWrappers = []any{ (*RetryPolicy_RetryPriority_TypedConfig)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[35].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[35].OneofWrappers = []any{ (*RetryPolicy_RetryHostPredicate_TypedConfig)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[37].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[37].OneofWrappers = []any{ (*RateLimit_Action_SourceCluster_)(nil), (*RateLimit_Action_DestinationCluster_)(nil), (*RateLimit_Action_RequestHeaders_)(nil), @@ -6866,14 +6306,14 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route (*RateLimit_Action_HeaderValueMatch_)(nil), (*RateLimit_Action_DynamicMetadata)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[38].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes[38].OneofWrappers = []any{ (*RateLimit_Override_DynamicMetadata_)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDesc)), NumEnums: 4, NumMessages: 47, NumExtensions: 0, @@ -6885,7 +6325,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/route/v3/route_components.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/config/route/v3/route_components.pb.hash.go index be8a55f34..0a50f1b48 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/route/v3/route_components.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/route/v3/route_components.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -53,14 +57,20 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRoutes() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -76,14 +86,20 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetVirtualClusters() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -94,14 +110,20 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRateLimits() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -112,14 +134,20 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRequestHeadersToAdd() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -138,14 +166,20 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetResponseHeadersToAdd() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -162,14 +196,20 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetCors()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCors(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCors(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -182,14 +222,20 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -219,56 +265,80 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetRetryPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRetryPolicy(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRetryPolicy(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetRetryPolicyTypedConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPolicyTypedConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRetryPolicyTypedConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRetryPolicyTypedConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RetryPolicyTypedConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetHedgePolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HedgePolicy")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHedgePolicy(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHedgePolicy(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HedgePolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetPerRequestBufferLimitBytes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PerRequestBufferLimitBytes")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPerRequestBufferLimitBytes(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPerRequestBufferLimitBytes(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PerRequestBufferLimitBytes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -278,6 +348,10 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FilterAction) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -291,14 +365,20 @@ func (m *FilterAction) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetAction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Action")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAction(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAction(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Action")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -308,6 +388,10 @@ func (m *FilterAction) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -325,42 +409,60 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetDecorator()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Decorator")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDecorator(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDecorator(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Decorator")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -373,14 +475,20 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -402,14 +510,20 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRequestHeadersToAdd() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -428,14 +542,20 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetResponseHeadersToAdd() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -452,28 +572,40 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetTracing()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Tracing")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTracing(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTracing(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Tracing")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetPerRequestBufferLimitBytes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PerRequestBufferLimitBytes")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPerRequestBufferLimitBytes(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPerRequestBufferLimitBytes(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PerRequestBufferLimitBytes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -484,14 +616,20 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { case *Route_Route: if h, ok := interface{}(m.GetRoute()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Route")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRoute(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRoute(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Route")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -500,14 +638,20 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { case *Route_Redirect: if h, ok := interface{}(m.GetRedirect()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Redirect")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRedirect(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRedirect(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Redirect")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -516,14 +660,20 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { case *Route_DirectResponse: if h, ok := interface{}(m.GetDirectResponse()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DirectResponse")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDirectResponse(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDirectResponse(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DirectResponse")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -532,14 +682,20 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { case *Route_FilterAction: if h, ok := interface{}(m.GetFilterAction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FilterAction")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetFilterAction(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetFilterAction(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("FilterAction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -551,6 +707,10 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *WeightedCluster) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -566,14 +726,20 @@ func (m *WeightedCluster) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetClusters() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -582,14 +748,20 @@ func (m *WeightedCluster) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetTotalWeight()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TotalWeight")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTotalWeight(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTotalWeight(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TotalWeight")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -603,6 +775,10 @@ func (m *WeightedCluster) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteMatch) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -616,28 +792,40 @@ func (m *RouteMatch) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetCaseSensitive()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CaseSensitive")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCaseSensitive(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCaseSensitive(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("CaseSensitive")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetRuntimeFraction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RuntimeFraction")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRuntimeFraction(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRuntimeFraction(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RuntimeFraction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -646,14 +834,20 @@ func (m *RouteMatch) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetHeaders() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -664,14 +858,20 @@ func (m *RouteMatch) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetQueryParameters() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -680,28 +880,40 @@ func (m *RouteMatch) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetGrpc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Grpc")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetGrpc(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetGrpc(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Grpc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetTlsContext()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TlsContext")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTlsContext(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTlsContext(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TlsContext")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -724,14 +936,20 @@ func (m *RouteMatch) Hash(hasher hash.Hash64) (uint64, error) { case *RouteMatch_SafeRegex: if h, ok := interface{}(m.GetSafeRegex()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SafeRegex")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSafeRegex(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSafeRegex(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SafeRegex")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -740,14 +958,20 @@ func (m *RouteMatch) Hash(hasher hash.Hash64) (uint64, error) { case *RouteMatch_ConnectMatcher_: if h, ok := interface{}(m.GetConnectMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectMatcher")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConnectMatcher(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConnectMatcher(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ConnectMatcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -759,6 +983,10 @@ func (m *RouteMatch) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *CorsPolicy) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -774,14 +1002,20 @@ func (m *CorsPolicy) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetAllowOriginStringMatch() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -806,28 +1040,40 @@ func (m *CorsPolicy) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetAllowCredentials()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowCredentials")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAllowCredentials(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAllowCredentials(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AllowCredentials")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetShadowEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ShadowEnabled")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetShadowEnabled(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetShadowEnabled(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ShadowEnabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -838,14 +1084,20 @@ func (m *CorsPolicy) Hash(hasher hash.Hash64) (uint64, error) { case *CorsPolicy_FilterEnabled: if h, ok := interface{}(m.GetFilterEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FilterEnabled")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetFilterEnabled(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetFilterEnabled(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("FilterEnabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -857,6 +1109,10 @@ func (m *CorsPolicy) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -875,14 +1131,20 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetMetadataMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MetadataMatch")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadataMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMetadataMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MetadataMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -893,70 +1155,100 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetRegexRewrite()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RegexRewrite")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRegexRewrite(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRegexRewrite(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RegexRewrite")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetIdleTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetIdleTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetIdleTimeout(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetRetryPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRetryPolicy(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRetryPolicy(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetRetryPolicyTypedConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPolicyTypedConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRetryPolicyTypedConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRetryPolicyTypedConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RetryPolicyTypedConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -965,14 +1257,20 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRequestMirrorPolicies() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -988,14 +1286,20 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRateLimits() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1004,14 +1308,20 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetIncludeVhRateLimits()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IncludeVhRateLimits")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetIncludeVhRateLimits(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetIncludeVhRateLimits(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("IncludeVhRateLimits")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1020,14 +1330,20 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetHashPolicy() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1036,42 +1352,60 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetCors()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCors(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCors(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetMaxGrpcTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxGrpcTimeout")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMaxGrpcTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMaxGrpcTimeout(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MaxGrpcTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetGrpcTimeoutOffset()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcTimeoutOffset")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetGrpcTimeoutOffset(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetGrpcTimeoutOffset(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("GrpcTimeoutOffset")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1080,14 +1414,20 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetUpgradeConfigs() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1096,14 +1436,20 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetInternalRedirectPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InternalRedirectPolicy")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetInternalRedirectPolicy(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetInternalRedirectPolicy(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("InternalRedirectPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1115,28 +1461,40 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetMaxInternalRedirects()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxInternalRedirects")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMaxInternalRedirects(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMaxInternalRedirects(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MaxInternalRedirects")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetHedgePolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HedgePolicy")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHedgePolicy(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHedgePolicy(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HedgePolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1159,14 +1517,20 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { case *RouteAction_WeightedClusters: if h, ok := interface{}(m.GetWeightedClusters()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("WeightedClusters")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetWeightedClusters(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetWeightedClusters(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("WeightedClusters")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1185,14 +1549,20 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { case *RouteAction_AutoHostRewrite: if h, ok := interface{}(m.GetAutoHostRewrite()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AutoHostRewrite")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAutoHostRewrite(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAutoHostRewrite(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AutoHostRewrite")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1210,6 +1580,10 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RetryPolicy) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1227,42 +1601,60 @@ func (m *RetryPolicy) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetNumRetries()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("NumRetries")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetNumRetries(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetNumRetries(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("NumRetries")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetPerTryTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PerTryTimeout")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPerTryTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPerTryTimeout(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PerTryTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetRetryPriority()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPriority")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRetryPriority(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRetryPriority(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RetryPriority")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1271,14 +1663,20 @@ func (m *RetryPolicy) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRetryHostPredicate() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1297,14 +1695,20 @@ func (m *RetryPolicy) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetRetryBackOff()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryBackOff")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRetryBackOff(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRetryBackOff(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RetryBackOff")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1313,14 +1717,20 @@ func (m *RetryPolicy) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRetriableHeaders() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1331,14 +1741,20 @@ func (m *RetryPolicy) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRetriableRequestHeaders() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1350,6 +1766,10 @@ func (m *RetryPolicy) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HedgePolicy) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1363,28 +1783,40 @@ func (m *HedgePolicy) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetInitialRequests()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InitialRequests")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetInitialRequests(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetInitialRequests(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("InitialRequests")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetAdditionalRequestChance()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AdditionalRequestChance")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAdditionalRequestChance(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAdditionalRequestChance(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AdditionalRequestChance")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1399,6 +1831,10 @@ func (m *HedgePolicy) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RedirectAction) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1467,6 +1903,10 @@ func (m *RedirectAction) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *DirectResponseAction) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1485,14 +1925,20 @@ func (m *DirectResponseAction) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetBody(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetBody(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1502,6 +1948,10 @@ func (m *DirectResponseAction) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Decorator) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1519,14 +1969,20 @@ func (m *Decorator) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetPropagate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Propagate")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPropagate(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPropagate(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Propagate")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1536,6 +1992,10 @@ func (m *Decorator) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Tracing) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1549,42 +2009,60 @@ func (m *Tracing) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetClientSampling()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClientSampling")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetClientSampling(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetClientSampling(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ClientSampling")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetRandomSampling()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RandomSampling")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRandomSampling(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRandomSampling(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RandomSampling")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetOverallSampling()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OverallSampling")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOverallSampling(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOverallSampling(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("OverallSampling")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1593,14 +2071,20 @@ func (m *Tracing) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetCustomTags() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1612,6 +2096,10 @@ func (m *Tracing) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *VirtualCluster) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1627,14 +2115,20 @@ func (m *VirtualCluster) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetHeaders() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1650,6 +2144,10 @@ func (m *VirtualCluster) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimit) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1663,14 +2161,20 @@ func (m *RateLimit) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetStage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Stage")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetStage(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetStage(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Stage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1683,14 +2187,20 @@ func (m *RateLimit) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetActions() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1699,14 +2209,20 @@ func (m *RateLimit) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetLimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Limit")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetLimit(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetLimit(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Limit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1716,6 +2232,10 @@ func (m *RateLimit) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HeaderMatcher) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1748,14 +2268,20 @@ func (m *HeaderMatcher) Hash(hasher hash.Hash64) (uint64, error) { case *HeaderMatcher_SafeRegexMatch: if h, ok := interface{}(m.GetSafeRegexMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SafeRegexMatch")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSafeRegexMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSafeRegexMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SafeRegexMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1764,14 +2290,20 @@ func (m *HeaderMatcher) Hash(hasher hash.Hash64) (uint64, error) { case *HeaderMatcher_RangeMatch: if h, ok := interface{}(m.GetRangeMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RangeMatch")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRangeMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRangeMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RangeMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1802,6 +2334,10 @@ func (m *HeaderMatcher) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *QueryParameterMatcher) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1823,14 +2359,20 @@ func (m *QueryParameterMatcher) Hash(hasher hash.Hash64) (uint64, error) { case *QueryParameterMatcher_StringMatch: if h, ok := interface{}(m.GetStringMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("StringMatch")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetStringMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetStringMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("StringMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1849,6 +2391,10 @@ func (m *QueryParameterMatcher) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *InternalRedirectPolicy) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1862,14 +2408,20 @@ func (m *InternalRedirectPolicy) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetMaxInternalRedirects()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxInternalRedirects")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMaxInternalRedirects(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMaxInternalRedirects(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MaxInternalRedirects")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1883,14 +2435,20 @@ func (m *InternalRedirectPolicy) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetPredicates() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1907,6 +2465,10 @@ func (m *InternalRedirectPolicy) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *WeightedCluster_ClusterWeight) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1924,28 +2486,40 @@ func (m *WeightedCluster_ClusterWeight) Hash(hasher hash.Hash64) (uint64, error) } if h, ok := interface{}(m.GetWeight()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Weight")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetWeight(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetWeight(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Weight")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetMetadataMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MetadataMatch")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadataMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMetadataMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MetadataMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1954,14 +2528,20 @@ func (m *WeightedCluster_ClusterWeight) Hash(hasher hash.Hash64) (uint64, error) for _, v := range m.GetRequestHeadersToAdd() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1980,14 +2560,20 @@ func (m *WeightedCluster_ClusterWeight) Hash(hasher hash.Hash64) (uint64, error) for _, v := range m.GetResponseHeadersToAdd() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2010,14 +2596,20 @@ func (m *WeightedCluster_ClusterWeight) Hash(hasher hash.Hash64) (uint64, error) innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2040,6 +2632,10 @@ func (m *WeightedCluster_ClusterWeight) Hash(hasher hash.Hash64) (uint64, error) } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteMatch_GrpcRouteMatchOptions) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2056,6 +2652,10 @@ func (m *RouteMatch_GrpcRouteMatchOptions) Hash(hasher hash.Hash64) (uint64, err } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteMatch_TlsContextMatchOptions) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2069,28 +2669,40 @@ func (m *RouteMatch_TlsContextMatchOptions) Hash(hasher hash.Hash64) (uint64, er } if h, ok := interface{}(m.GetPresented()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Presented")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPresented(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPresented(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Presented")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetValidated()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Validated")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetValidated(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetValidated(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Validated")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2100,6 +2712,10 @@ func (m *RouteMatch_TlsContextMatchOptions) Hash(hasher hash.Hash64) (uint64, er } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteMatch_ConnectMatcher) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2116,6 +2732,10 @@ func (m *RouteMatch_ConnectMatcher) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteAction_RequestMirrorPolicy) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2133,28 +2753,40 @@ func (m *RouteAction_RequestMirrorPolicy) Hash(hasher hash.Hash64) (uint64, erro } if h, ok := interface{}(m.GetRuntimeFraction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RuntimeFraction")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRuntimeFraction(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRuntimeFraction(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RuntimeFraction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetTraceSampled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TraceSampled")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTraceSampled(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTraceSampled(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TraceSampled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2164,6 +2796,10 @@ func (m *RouteAction_RequestMirrorPolicy) Hash(hasher hash.Hash64) (uint64, erro } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteAction_HashPolicy) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2186,14 +2822,20 @@ func (m *RouteAction_HashPolicy) Hash(hasher hash.Hash64) (uint64, error) { case *RouteAction_HashPolicy_Header_: if h, ok := interface{}(m.GetHeader()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHeader(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHeader(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2202,14 +2844,20 @@ func (m *RouteAction_HashPolicy) Hash(hasher hash.Hash64) (uint64, error) { case *RouteAction_HashPolicy_Cookie_: if h, ok := interface{}(m.GetCookie()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cookie")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCookie(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCookie(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Cookie")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2218,14 +2866,20 @@ func (m *RouteAction_HashPolicy) Hash(hasher hash.Hash64) (uint64, error) { case *RouteAction_HashPolicy_ConnectionProperties_: if h, ok := interface{}(m.GetConnectionProperties()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectionProperties")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConnectionProperties(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConnectionProperties(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ConnectionProperties")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2234,14 +2888,20 @@ func (m *RouteAction_HashPolicy) Hash(hasher hash.Hash64) (uint64, error) { case *RouteAction_HashPolicy_QueryParameter_: if h, ok := interface{}(m.GetQueryParameter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("QueryParameter")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetQueryParameter(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetQueryParameter(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("QueryParameter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2250,14 +2910,20 @@ func (m *RouteAction_HashPolicy) Hash(hasher hash.Hash64) (uint64, error) { case *RouteAction_HashPolicy_FilterState_: if h, ok := interface{}(m.GetFilterState()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FilterState")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetFilterState(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetFilterState(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("FilterState")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2269,6 +2935,10 @@ func (m *RouteAction_HashPolicy) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteAction_UpgradeConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2286,28 +2956,40 @@ func (m *RouteAction_UpgradeConfig) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Enabled")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetEnabled(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetEnabled(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Enabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetConnectConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConnectConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConnectConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ConnectConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2317,6 +2999,10 @@ func (m *RouteAction_UpgradeConfig) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteAction_HashPolicy_Header) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2334,14 +3020,20 @@ func (m *RouteAction_HashPolicy_Header) Hash(hasher hash.Hash64) (uint64, error) } if h, ok := interface{}(m.GetRegexRewrite()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RegexRewrite")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRegexRewrite(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRegexRewrite(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RegexRewrite")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2351,6 +3043,10 @@ func (m *RouteAction_HashPolicy_Header) Hash(hasher hash.Hash64) (uint64, error) } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteAction_HashPolicy_Cookie) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2368,14 +3064,20 @@ func (m *RouteAction_HashPolicy_Cookie) Hash(hasher hash.Hash64) (uint64, error) } if h, ok := interface{}(m.GetTtl()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ttl")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTtl(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTtl(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Ttl")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2389,6 +3091,10 @@ func (m *RouteAction_HashPolicy_Cookie) Hash(hasher hash.Hash64) (uint64, error) } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteAction_HashPolicy_ConnectionProperties) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2410,6 +3116,10 @@ func (m *RouteAction_HashPolicy_ConnectionProperties) Hash(hasher hash.Hash64) ( } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteAction_HashPolicy_QueryParameter) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2430,6 +3140,10 @@ func (m *RouteAction_HashPolicy_QueryParameter) Hash(hasher hash.Hash64) (uint64 } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteAction_HashPolicy_FilterState) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2450,6 +3164,10 @@ func (m *RouteAction_HashPolicy_FilterState) Hash(hasher hash.Hash64) (uint64, e } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteAction_UpgradeConfig_ConnectConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2463,14 +3181,20 @@ func (m *RouteAction_UpgradeConfig_ConnectConfig) Hash(hasher hash.Hash64) (uint } if h, ok := interface{}(m.GetProxyProtocolConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProxyProtocolConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetProxyProtocolConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetProxyProtocolConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ProxyProtocolConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2480,6 +3204,10 @@ func (m *RouteAction_UpgradeConfig_ConnectConfig) Hash(hasher hash.Hash64) (uint } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RetryPolicy_RetryPriority) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2501,14 +3229,20 @@ func (m *RetryPolicy_RetryPriority) Hash(hasher hash.Hash64) (uint64, error) { case *RetryPolicy_RetryPriority_TypedConfig: if h, ok := interface{}(m.GetTypedConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2520,6 +3254,10 @@ func (m *RetryPolicy_RetryPriority) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RetryPolicy_RetryHostPredicate) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2541,14 +3279,20 @@ func (m *RetryPolicy_RetryHostPredicate) Hash(hasher hash.Hash64) (uint64, error case *RetryPolicy_RetryHostPredicate_TypedConfig: if h, ok := interface{}(m.GetTypedConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2560,6 +3304,10 @@ func (m *RetryPolicy_RetryHostPredicate) Hash(hasher hash.Hash64) (uint64, error } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RetryPolicy_RetryBackOff) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2573,28 +3321,40 @@ func (m *RetryPolicy_RetryBackOff) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetBaseInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetBaseInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetBaseInterval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetMaxInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMaxInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMaxInterval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2604,6 +3364,10 @@ func (m *RetryPolicy_RetryBackOff) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimit_Action) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2621,14 +3385,20 @@ func (m *RateLimit_Action) Hash(hasher hash.Hash64) (uint64, error) { case *RateLimit_Action_SourceCluster_: if h, ok := interface{}(m.GetSourceCluster()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SourceCluster")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSourceCluster(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSourceCluster(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SourceCluster")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2637,14 +3407,20 @@ func (m *RateLimit_Action) Hash(hasher hash.Hash64) (uint64, error) { case *RateLimit_Action_DestinationCluster_: if h, ok := interface{}(m.GetDestinationCluster()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DestinationCluster")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDestinationCluster(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDestinationCluster(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DestinationCluster")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2653,14 +3429,20 @@ func (m *RateLimit_Action) Hash(hasher hash.Hash64) (uint64, error) { case *RateLimit_Action_RequestHeaders_: if h, ok := interface{}(m.GetRequestHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestHeaders")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRequestHeaders(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRequestHeaders(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RequestHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2669,14 +3451,20 @@ func (m *RateLimit_Action) Hash(hasher hash.Hash64) (uint64, error) { case *RateLimit_Action_RemoteAddress_: if h, ok := interface{}(m.GetRemoteAddress()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RemoteAddress")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRemoteAddress(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRemoteAddress(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RemoteAddress")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2685,14 +3473,20 @@ func (m *RateLimit_Action) Hash(hasher hash.Hash64) (uint64, error) { case *RateLimit_Action_GenericKey_: if h, ok := interface{}(m.GetGenericKey()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GenericKey")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetGenericKey(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetGenericKey(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("GenericKey")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2701,14 +3495,20 @@ func (m *RateLimit_Action) Hash(hasher hash.Hash64) (uint64, error) { case *RateLimit_Action_HeaderValueMatch_: if h, ok := interface{}(m.GetHeaderValueMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderValueMatch")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHeaderValueMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHeaderValueMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HeaderValueMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2717,14 +3517,20 @@ func (m *RateLimit_Action) Hash(hasher hash.Hash64) (uint64, error) { case *RateLimit_Action_DynamicMetadata: if h, ok := interface{}(m.GetDynamicMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DynamicMetadata")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDynamicMetadata(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDynamicMetadata(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DynamicMetadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2736,6 +3542,10 @@ func (m *RateLimit_Action) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimit_Override) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2753,14 +3563,20 @@ func (m *RateLimit_Override) Hash(hasher hash.Hash64) (uint64, error) { case *RateLimit_Override_DynamicMetadata_: if h, ok := interface{}(m.GetDynamicMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DynamicMetadata")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDynamicMetadata(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDynamicMetadata(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DynamicMetadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2772,6 +3588,10 @@ func (m *RateLimit_Override) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimit_Action_SourceCluster) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2788,6 +3608,10 @@ func (m *RateLimit_Action_SourceCluster) Hash(hasher hash.Hash64) (uint64, error } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimit_Action_DestinationCluster) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2804,6 +3628,10 @@ func (m *RateLimit_Action_DestinationCluster) Hash(hasher hash.Hash64) (uint64, } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimit_Action_RequestHeaders) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2833,6 +3661,10 @@ func (m *RateLimit_Action_RequestHeaders) Hash(hasher hash.Hash64) (uint64, erro } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimit_Action_RemoteAddress) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2849,6 +3681,10 @@ func (m *RateLimit_Action_RemoteAddress) Hash(hasher hash.Hash64) (uint64, error } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimit_Action_GenericKey) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2869,6 +3705,10 @@ func (m *RateLimit_Action_GenericKey) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimit_Action_HeaderValueMatch) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2886,14 +3726,20 @@ func (m *RateLimit_Action_HeaderValueMatch) Hash(hasher hash.Hash64) (uint64, er } if h, ok := interface{}(m.GetExpectMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ExpectMatch")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetExpectMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetExpectMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ExpectMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2902,14 +3748,20 @@ func (m *RateLimit_Action_HeaderValueMatch) Hash(hasher hash.Hash64) (uint64, er for _, v := range m.GetHeaders() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2921,6 +3773,10 @@ func (m *RateLimit_Action_HeaderValueMatch) Hash(hasher hash.Hash64) (uint64, er } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimit_Action_DynamicMetaData) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2938,14 +3794,20 @@ func (m *RateLimit_Action_DynamicMetaData) Hash(hasher hash.Hash64) (uint64, err } if h, ok := interface{}(m.GetMetadataKey()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MetadataKey")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadataKey(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMetadataKey(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MetadataKey")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -2955,6 +3817,10 @@ func (m *RateLimit_Action_DynamicMetaData) Hash(hasher hash.Hash64) (uint64, err } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimit_Override_DynamicMetadata) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -2968,14 +3834,20 @@ func (m *RateLimit_Override_DynamicMetadata) Hash(hasher hash.Hash64) (uint64, e } if h, ok := interface{}(m.GetMetadataKey()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MetadataKey")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadataKey(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMetadataKey(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MetadataKey")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/route/v3/route_components.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/config/route/v3/route_components.pb.uniquehash.go new file mode 100644 index 000000000..0145fa0fa --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/route/v3/route_components.pb.uniquehash.go @@ -0,0 +1,4229 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/route/v3/route_components.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *VirtualHost) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.VirtualHost")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Domains")); err != nil { + return 0, err + } + for i, v := range m.GetDomains() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("Routes")); err != nil { + return 0, err + } + for i, v := range m.GetRoutes() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("RequireTls")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRequireTls()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("VirtualClusters")); err != nil { + return 0, err + } + for i, v := range m.GetVirtualClusters() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("RateLimits")); err != nil { + return 0, err + } + for i, v := range m.GetRateLimits() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("RequestHeadersToAdd")); err != nil { + return 0, err + } + for i, v := range m.GetRequestHeadersToAdd() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("RequestHeadersToRemove")); err != nil { + return 0, err + } + for i, v := range m.GetRequestHeadersToRemove() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("ResponseHeadersToAdd")); err != nil { + return 0, err + } + for i, v := range m.GetResponseHeadersToAdd() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("ResponseHeadersToRemove")); err != nil { + return 0, err + } + for i, v := range m.GetResponseHeadersToRemove() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetCors()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCors(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetTypedPerFilterConfig() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("IncludeRequestAttemptCount")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetIncludeRequestAttemptCount()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("IncludeAttemptCountInResponse")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetIncludeAttemptCountInResponse()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRetryPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetryPolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRetryPolicyTypedConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPolicyTypedConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetryPolicyTypedConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RetryPolicyTypedConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHedgePolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HedgePolicy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHedgePolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HedgePolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPerRequestBufferLimitBytes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PerRequestBufferLimitBytes")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPerRequestBufferLimitBytes(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PerRequestBufferLimitBytes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FilterAction) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.FilterAction")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Action")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAction(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Action")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Route) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.Route")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDecorator()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Decorator")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDecorator(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Decorator")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetTypedPerFilterConfig() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("RequestHeadersToAdd")); err != nil { + return 0, err + } + for i, v := range m.GetRequestHeadersToAdd() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("RequestHeadersToRemove")); err != nil { + return 0, err + } + for i, v := range m.GetRequestHeadersToRemove() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("ResponseHeadersToAdd")); err != nil { + return 0, err + } + for i, v := range m.GetResponseHeadersToAdd() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("ResponseHeadersToRemove")); err != nil { + return 0, err + } + for i, v := range m.GetResponseHeadersToRemove() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetTracing()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Tracing")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTracing(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Tracing")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPerRequestBufferLimitBytes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PerRequestBufferLimitBytes")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPerRequestBufferLimitBytes(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PerRequestBufferLimitBytes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.Action.(type) { + + case *Route_Route: + + if h, ok := interface{}(m.GetRoute()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Route")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRoute(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Route")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Route_Redirect: + + if h, ok := interface{}(m.GetRedirect()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Redirect")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRedirect(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Redirect")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Route_DirectResponse: + + if h, ok := interface{}(m.GetDirectResponse()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DirectResponse")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDirectResponse(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DirectResponse")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Route_FilterAction: + + if h, ok := interface{}(m.GetFilterAction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FilterAction")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFilterAction(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FilterAction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *WeightedCluster) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.WeightedCluster")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Clusters")); err != nil { + return 0, err + } + for i, v := range m.GetClusters() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetTotalWeight()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TotalWeight")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTotalWeight(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TotalWeight")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RuntimeKeyPrefix")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRuntimeKeyPrefix())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteMatch) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RouteMatch")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCaseSensitive()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CaseSensitive")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCaseSensitive(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CaseSensitive")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRuntimeFraction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RuntimeFraction")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRuntimeFraction(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RuntimeFraction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + for i, v := range m.GetHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("QueryParameters")); err != nil { + return 0, err + } + for i, v := range m.GetQueryParameters() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetGrpc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Grpc")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpc(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Grpc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTlsContext()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TlsContext")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTlsContext(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TlsContext")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.PathSpecifier.(type) { + + case *RouteMatch_Prefix: + + if _, err = hasher.Write([]byte("Prefix")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPrefix())); err != nil { + return 0, err + } + + case *RouteMatch_Path: + + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPath())); err != nil { + return 0, err + } + + case *RouteMatch_SafeRegex: + + if h, ok := interface{}(m.GetSafeRegex()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SafeRegex")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSafeRegex(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SafeRegex")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteMatch_ConnectMatcher_: + + if h, ok := interface{}(m.GetConnectMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectMatcher")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConnectMatcher(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConnectMatcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *CorsPolicy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.CorsPolicy")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AllowOriginStringMatch")); err != nil { + return 0, err + } + for i, v := range m.GetAllowOriginStringMatch() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("AllowMethods")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAllowMethods())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AllowHeaders")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAllowHeaders())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ExposeHeaders")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetExposeHeaders())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MaxAge")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetMaxAge())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAllowCredentials()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowCredentials")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAllowCredentials(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AllowCredentials")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetShadowEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ShadowEnabled")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetShadowEnabled(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ShadowEnabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.EnabledSpecifier.(type) { + + case *CorsPolicy_FilterEnabled: + + if h, ok := interface{}(m.GetFilterEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FilterEnabled")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFilterEnabled(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FilterEnabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteAction) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RouteAction")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClusterNotFoundResponseCode")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetClusterNotFoundResponseCode()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMetadataMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MetadataMatch")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadataMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MetadataMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("PrefixRewrite")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPrefixRewrite())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRegexRewrite()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RegexRewrite")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRegexRewrite(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RegexRewrite")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetIdleTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIdleTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRetryPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetryPolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRetryPolicyTypedConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPolicyTypedConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetryPolicyTypedConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RetryPolicyTypedConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RequestMirrorPolicies")); err != nil { + return 0, err + } + for i, v := range m.GetRequestMirrorPolicies() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("Priority")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPriority()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RateLimits")); err != nil { + return 0, err + } + for i, v := range m.GetRateLimits() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetIncludeVhRateLimits()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IncludeVhRateLimits")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIncludeVhRateLimits(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IncludeVhRateLimits")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("HashPolicy")); err != nil { + return 0, err + } + for i, v := range m.GetHashPolicy() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetCors()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCors(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxGrpcTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxGrpcTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxGrpcTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxGrpcTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetGrpcTimeoutOffset()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcTimeoutOffset")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcTimeoutOffset(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcTimeoutOffset")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("UpgradeConfigs")); err != nil { + return 0, err + } + for i, v := range m.GetUpgradeConfigs() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetInternalRedirectPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InternalRedirectPolicy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInternalRedirectPolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("InternalRedirectPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("InternalRedirectAction")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetInternalRedirectAction()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxInternalRedirects()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxInternalRedirects")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxInternalRedirects(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxInternalRedirects")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHedgePolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HedgePolicy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHedgePolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HedgePolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.ClusterSpecifier.(type) { + + case *RouteAction_Cluster: + + if _, err = hasher.Write([]byte("Cluster")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCluster())); err != nil { + return 0, err + } + + case *RouteAction_ClusterHeader: + + if _, err = hasher.Write([]byte("ClusterHeader")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClusterHeader())); err != nil { + return 0, err + } + + case *RouteAction_WeightedClusters: + + if h, ok := interface{}(m.GetWeightedClusters()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("WeightedClusters")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWeightedClusters(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("WeightedClusters")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.HostRewriteSpecifier.(type) { + + case *RouteAction_HostRewriteLiteral: + + if _, err = hasher.Write([]byte("HostRewriteLiteral")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHostRewriteLiteral())); err != nil { + return 0, err + } + + case *RouteAction_AutoHostRewrite: + + if h, ok := interface{}(m.GetAutoHostRewrite()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AutoHostRewrite")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAutoHostRewrite(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AutoHostRewrite")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteAction_HostRewriteHeader: + + if _, err = hasher.Write([]byte("HostRewriteHeader")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHostRewriteHeader())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RetryPolicy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RetryPolicy")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RetryOn")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRetryOn())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetNumRetries()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("NumRetries")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetNumRetries(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("NumRetries")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPerTryTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PerTryTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPerTryTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PerTryTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRetryPriority()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPriority")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetryPriority(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RetryPriority")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RetryHostPredicate")); err != nil { + return 0, err + } + for i, v := range m.GetRetryHostPredicate() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("HostSelectionRetryMaxAttempts")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetHostSelectionRetryMaxAttempts()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RetriableStatusCodes")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRetriableStatusCodes()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRetryBackOff()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryBackOff")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetryBackOff(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RetryBackOff")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RetriableHeaders")); err != nil { + return 0, err + } + for i, v := range m.GetRetriableHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("RetriableRequestHeaders")); err != nil { + return 0, err + } + for i, v := range m.GetRetriableRequestHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HedgePolicy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.HedgePolicy")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetInitialRequests()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InitialRequests")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInitialRequests(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("InitialRequests")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAdditionalRequestChance()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AdditionalRequestChance")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAdditionalRequestChance(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AdditionalRequestChance")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("HedgeOnPerTryTimeout")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetHedgeOnPerTryTimeout()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RedirectAction) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RedirectAction")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("HostRedirect")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHostRedirect())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("PortRedirect")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPortRedirect()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ResponseCode")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetResponseCode()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("StripQuery")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetStripQuery()) + if err != nil { + return 0, err + } + + switch m.SchemeRewriteSpecifier.(type) { + + case *RedirectAction_HttpsRedirect: + + if _, err = hasher.Write([]byte("HttpsRedirect")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetHttpsRedirect()) + if err != nil { + return 0, err + } + + case *RedirectAction_SchemeRedirect: + + if _, err = hasher.Write([]byte("SchemeRedirect")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSchemeRedirect())); err != nil { + return 0, err + } + + } + + switch m.PathRewriteSpecifier.(type) { + + case *RedirectAction_PathRedirect: + + if _, err = hasher.Write([]byte("PathRedirect")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPathRedirect())); err != nil { + return 0, err + } + + case *RedirectAction_PrefixRewrite: + + if _, err = hasher.Write([]byte("PrefixRewrite")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPrefixRewrite())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DirectResponseAction) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.DirectResponseAction")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Status")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetStatus()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Decorator) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.Decorator")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Operation")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetOperation())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPropagate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Propagate")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPropagate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Propagate")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Tracing) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.Tracing")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetClientSampling()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClientSampling")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetClientSampling(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ClientSampling")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRandomSampling()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RandomSampling")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRandomSampling(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RandomSampling")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetOverallSampling()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OverallSampling")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOverallSampling(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OverallSampling")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("CustomTags")); err != nil { + return 0, err + } + for i, v := range m.GetCustomTags() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *VirtualCluster) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.VirtualCluster")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + for i, v := range m.GetHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimit) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RateLimit")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetStage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Stage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Stage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("DisableKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDisableKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Actions")); err != nil { + return 0, err + } + for i, v := range m.GetActions() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetLimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Limit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Limit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HeaderMatcher) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.HeaderMatcher")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("InvertMatch")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetInvertMatch()) + if err != nil { + return 0, err + } + + switch m.HeaderMatchSpecifier.(type) { + + case *HeaderMatcher_ExactMatch: + + if _, err = hasher.Write([]byte("ExactMatch")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetExactMatch())); err != nil { + return 0, err + } + + case *HeaderMatcher_SafeRegexMatch: + + if h, ok := interface{}(m.GetSafeRegexMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SafeRegexMatch")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSafeRegexMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SafeRegexMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *HeaderMatcher_RangeMatch: + + if h, ok := interface{}(m.GetRangeMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RangeMatch")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRangeMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RangeMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *HeaderMatcher_PresentMatch: + + if _, err = hasher.Write([]byte("PresentMatch")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPresentMatch()) + if err != nil { + return 0, err + } + + case *HeaderMatcher_PrefixMatch: + + if _, err = hasher.Write([]byte("PrefixMatch")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPrefixMatch())); err != nil { + return 0, err + } + + case *HeaderMatcher_SuffixMatch: + + if _, err = hasher.Write([]byte("SuffixMatch")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSuffixMatch())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *QueryParameterMatcher) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.QueryParameterMatcher")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + switch m.QueryParameterMatchSpecifier.(type) { + + case *QueryParameterMatcher_StringMatch: + + if h, ok := interface{}(m.GetStringMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("StringMatch")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStringMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("StringMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *QueryParameterMatcher_PresentMatch: + + if _, err = hasher.Write([]byte("PresentMatch")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPresentMatch()) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *InternalRedirectPolicy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.InternalRedirectPolicy")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxInternalRedirects()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxInternalRedirects")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxInternalRedirects(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxInternalRedirects")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RedirectResponseCodes")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRedirectResponseCodes()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Predicates")); err != nil { + return 0, err + } + for i, v := range m.GetPredicates() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("AllowCrossSchemeRedirect")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAllowCrossSchemeRedirect()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *WeightedCluster_ClusterWeight) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.WeightedCluster_ClusterWeight")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetWeight()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Weight")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWeight(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Weight")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMetadataMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MetadataMatch")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadataMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MetadataMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RequestHeadersToAdd")); err != nil { + return 0, err + } + for i, v := range m.GetRequestHeadersToAdd() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("RequestHeadersToRemove")); err != nil { + return 0, err + } + for i, v := range m.GetRequestHeadersToRemove() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("ResponseHeadersToAdd")); err != nil { + return 0, err + } + for i, v := range m.GetResponseHeadersToAdd() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("ResponseHeadersToRemove")); err != nil { + return 0, err + } + for i, v := range m.GetResponseHeadersToRemove() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetTypedPerFilterConfig() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteMatch_GrpcRouteMatchOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RouteMatch_GrpcRouteMatchOptions")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteMatch_TlsContextMatchOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RouteMatch_TlsContextMatchOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPresented()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Presented")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPresented(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Presented")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetValidated()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Validated")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValidated(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Validated")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteMatch_ConnectMatcher) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RouteMatch_ConnectMatcher")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteAction_RequestMirrorPolicy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RouteAction_RequestMirrorPolicy")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Cluster")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCluster())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRuntimeFraction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RuntimeFraction")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRuntimeFraction(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RuntimeFraction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTraceSampled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TraceSampled")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTraceSampled(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TraceSampled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteAction_HashPolicy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RouteAction_HashPolicy")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Terminal")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetTerminal()) + if err != nil { + return 0, err + } + + switch m.PolicySpecifier.(type) { + + case *RouteAction_HashPolicy_Header_: + + if h, ok := interface{}(m.GetHeader()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeader(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteAction_HashPolicy_Cookie_: + + if h, ok := interface{}(m.GetCookie()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cookie")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCookie(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Cookie")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteAction_HashPolicy_ConnectionProperties_: + + if h, ok := interface{}(m.GetConnectionProperties()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectionProperties")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConnectionProperties(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConnectionProperties")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteAction_HashPolicy_QueryParameter_: + + if h, ok := interface{}(m.GetQueryParameter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("QueryParameter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetQueryParameter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("QueryParameter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteAction_HashPolicy_FilterState_: + + if h, ok := interface{}(m.GetFilterState()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FilterState")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFilterState(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FilterState")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteAction_UpgradeConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RouteAction_UpgradeConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("UpgradeType")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUpgradeType())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Enabled")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnabled(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Enabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetConnectConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConnectConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConnectConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteAction_HashPolicy_Header) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RouteAction_HashPolicy_Header")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("HeaderName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHeaderName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRegexRewrite()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RegexRewrite")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRegexRewrite(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RegexRewrite")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteAction_HashPolicy_Cookie) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RouteAction_HashPolicy_Cookie")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTtl()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ttl")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTtl(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Ttl")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPath())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteAction_HashPolicy_ConnectionProperties) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RouteAction_HashPolicy_ConnectionProperties")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SourceIp")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetSourceIp()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteAction_HashPolicy_QueryParameter) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RouteAction_HashPolicy_QueryParameter")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteAction_HashPolicy_FilterState) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RouteAction_HashPolicy_FilterState")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteAction_UpgradeConfig_ConnectConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RouteAction_UpgradeConfig_ConnectConfig")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetProxyProtocolConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProxyProtocolConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProxyProtocolConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ProxyProtocolConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RetryPolicy_RetryPriority) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RetryPolicy_RetryPriority")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + switch m.ConfigType.(type) { + + case *RetryPolicy_RetryPriority_TypedConfig: + + if h, ok := interface{}(m.GetTypedConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RetryPolicy_RetryHostPredicate) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RetryPolicy_RetryHostPredicate")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + switch m.ConfigType.(type) { + + case *RetryPolicy_RetryHostPredicate_TypedConfig: + + if h, ok := interface{}(m.GetTypedConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTypedConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TypedConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RetryPolicy_RetryBackOff) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RetryPolicy_RetryBackOff")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetBaseInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBaseInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimit_Action) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RateLimit_Action")); err != nil { + return 0, err + } + + switch m.ActionSpecifier.(type) { + + case *RateLimit_Action_SourceCluster_: + + if h, ok := interface{}(m.GetSourceCluster()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SourceCluster")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSourceCluster(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SourceCluster")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RateLimit_Action_DestinationCluster_: + + if h, ok := interface{}(m.GetDestinationCluster()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DestinationCluster")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDestinationCluster(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DestinationCluster")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RateLimit_Action_RequestHeaders_: + + if h, ok := interface{}(m.GetRequestHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestHeaders")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RateLimit_Action_RemoteAddress_: + + if h, ok := interface{}(m.GetRemoteAddress()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RemoteAddress")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRemoteAddress(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RemoteAddress")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RateLimit_Action_GenericKey_: + + if h, ok := interface{}(m.GetGenericKey()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GenericKey")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGenericKey(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GenericKey")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RateLimit_Action_HeaderValueMatch_: + + if h, ok := interface{}(m.GetHeaderValueMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderValueMatch")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaderValueMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HeaderValueMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RateLimit_Action_DynamicMetadata: + + if h, ok := interface{}(m.GetDynamicMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DynamicMetadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDynamicMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DynamicMetadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimit_Override) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RateLimit_Override")); err != nil { + return 0, err + } + + switch m.OverrideSpecifier.(type) { + + case *RateLimit_Override_DynamicMetadata_: + + if h, ok := interface{}(m.GetDynamicMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DynamicMetadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDynamicMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DynamicMetadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimit_Action_SourceCluster) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RateLimit_Action_SourceCluster")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimit_Action_DestinationCluster) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RateLimit_Action_DestinationCluster")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimit_Action_RequestHeaders) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RateLimit_Action_RequestHeaders")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("HeaderName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHeaderName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DescriptorKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDescriptorKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SkipIfAbsent")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetSkipIfAbsent()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimit_Action_RemoteAddress) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RateLimit_Action_RemoteAddress")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimit_Action_GenericKey) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RateLimit_Action_GenericKey")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DescriptorValue")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDescriptorValue())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimit_Action_HeaderValueMatch) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RateLimit_Action_HeaderValueMatch")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DescriptorValue")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDescriptorValue())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetExpectMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ExpectMatch")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExpectMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ExpectMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + for i, v := range m.GetHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimit_Action_DynamicMetaData) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RateLimit_Action_DynamicMetaData")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DescriptorKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDescriptorKey())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMetadataKey()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MetadataKey")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadataKey(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MetadataKey")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimit_Override_DynamicMetadata) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.route.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3.RateLimit_Override_DynamicMetadata")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMetadataKey()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MetadataKey")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadataKey(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MetadataKey")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/datadog.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/datadog.pb.clone.go new file mode 100644 index 000000000..9ad79e7d7 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/datadog.pb.clone.go @@ -0,0 +1,102 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/trace/v3/datadog.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *DatadogRemoteConfig) Clone() proto.Message { + var target *DatadogRemoteConfig + if m == nil { + return target + } + target = &DatadogRemoteConfig{} + + if h, ok := interface{}(m.GetPollingInterval()).(clone.Cloner); ok { + target.PollingInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.PollingInterval = proto.Clone(m.GetPollingInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetDisabled()).(clone.Cloner); ok { + target.Disabled = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Disabled = proto.Clone(m.GetDisabled()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *DatadogConfig) Clone() proto.Message { + var target *DatadogConfig + if m == nil { + return target + } + target = &DatadogConfig{} + + if h, ok := interface{}(m.GetServiceName()).(clone.Cloner); ok { + target.ServiceName = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.ServiceName = proto.Clone(m.GetServiceName()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + target.CollectorHostname = m.GetCollectorHostname() + + if h, ok := interface{}(m.GetRemoteConfig()).(clone.Cloner); ok { + target.RemoteConfig = h.Clone().(*DatadogRemoteConfig) + } else { + target.RemoteConfig = proto.Clone(m.GetRemoteConfig()).(*DatadogRemoteConfig) + } + + switch m.CollectorCluster.(type) { + + case *DatadogConfig_CollectorUpstreamRef: + + if h, ok := interface{}(m.GetCollectorUpstreamRef()).(clone.Cloner); ok { + target.CollectorCluster = &DatadogConfig_CollectorUpstreamRef{ + CollectorUpstreamRef: h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } else { + target.CollectorCluster = &DatadogConfig_CollectorUpstreamRef{ + CollectorUpstreamRef: proto.Clone(m.GetCollectorUpstreamRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } + + case *DatadogConfig_ClusterName: + + target.CollectorCluster = &DatadogConfig_ClusterName{ + ClusterName: m.GetClusterName(), + } + + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/datadog.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/datadog.pb.equal.go index 634599a38..9cc11d686 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/datadog.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/datadog.pb.equal.go @@ -25,6 +25,50 @@ var ( _ = proto.Message(nil) ) +// Equal function +func (m *DatadogRemoteConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*DatadogRemoteConfig) + if !ok { + that2, ok := that.(DatadogRemoteConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetPollingInterval()).(equality.Equalizer); ok { + if !h.Equal(target.GetPollingInterval()) { + return false + } + } else { + if !proto.Equal(m.GetPollingInterval(), target.GetPollingInterval()) { + return false + } + } + + if h, ok := interface{}(m.GetDisabled()).(equality.Equalizer); ok { + if !h.Equal(target.GetDisabled()) { + return false + } + } else { + if !proto.Equal(m.GetDisabled(), target.GetDisabled()) { + return false + } + } + + return true +} + // Equal function func (m *DatadogConfig) Equal(that interface{}) bool { if that == nil { @@ -46,13 +90,36 @@ func (m *DatadogConfig) Equal(that interface{}) bool { return false } - if strings.Compare(m.GetServiceName(), target.GetServiceName()) != 0 { + if h, ok := interface{}(m.GetServiceName()).(equality.Equalizer); ok { + if !h.Equal(target.GetServiceName()) { + return false + } + } else { + if !proto.Equal(m.GetServiceName(), target.GetServiceName()) { + return false + } + } + + if strings.Compare(m.GetCollectorHostname(), target.GetCollectorHostname()) != 0 { return false } + if h, ok := interface{}(m.GetRemoteConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetRemoteConfig()) { + return false + } + } else { + if !proto.Equal(m.GetRemoteConfig(), target.GetRemoteConfig()) { + return false + } + } + switch m.CollectorCluster.(type) { case *DatadogConfig_CollectorUpstreamRef: + if _, ok := target.CollectorCluster.(*DatadogConfig_CollectorUpstreamRef); !ok { + return false + } if h, ok := interface{}(m.GetCollectorUpstreamRef()).(equality.Equalizer); ok { if !h.Equal(target.GetCollectorUpstreamRef()) { @@ -65,11 +132,19 @@ func (m *DatadogConfig) Equal(that interface{}) bool { } case *DatadogConfig_ClusterName: + if _, ok := target.CollectorCluster.(*DatadogConfig_ClusterName); !ok { + return false + } if strings.Compare(m.GetClusterName(), target.GetClusterName()) != 0 { return false } + default: + // m is nil but target is not nil + if m.CollectorCluster != target.CollectorCluster { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/datadog.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/datadog.pb.go index 2c9bd0da0..36539738a 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/datadog.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/datadog.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/trace/v3/datadog.proto @@ -9,14 +9,16 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -26,34 +28,95 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 +// Configuration for the Remote Configuration feature. +type DatadogRemoteConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Frequency at which new configuration updates are queried. + // If no value is provided, the default value is delegated to the Datadog tracing library. + PollingInterval *durationpb.Duration `protobuf:"bytes,1,opt,name=polling_interval,json=pollingInterval,proto3" json:"polling_interval,omitempty"` + // Disabled remote config. + // This field does not exist in envoy's config but allow us to preserve the default behavior + // when upgrading to envoy v1.31 + Disabled *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=disabled,proto3" json:"disabled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DatadogRemoteConfig) Reset() { + *x = DatadogRemoteConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DatadogRemoteConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DatadogRemoteConfig) ProtoMessage() {} + +func (x *DatadogRemoteConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DatadogRemoteConfig.ProtoReflect.Descriptor instead. +func (*DatadogRemoteConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_rawDescGZIP(), []int{0} +} + +func (x *DatadogRemoteConfig) GetPollingInterval() *durationpb.Duration { + if x != nil { + return x.PollingInterval + } + return nil +} + +func (x *DatadogRemoteConfig) GetDisabled() *wrapperspb.BoolValue { + if x != nil { + return x.Disabled + } + return nil +} // Configuration for the Datadog tracer. // [#extension: envoy.tracers.datadog] type DatadogConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The cluster to use for submitting traces to the Datadog agent. // - // Types that are assignable to CollectorCluster: + // Types that are valid to be assigned to CollectorCluster: + // // *DatadogConfig_CollectorUpstreamRef // *DatadogConfig_ClusterName CollectorCluster isDatadogConfig_CollectorCluster `protobuf_oneof:"collector_cluster"` // The name used for the service when traces are generated by envoy. - ServiceName string `protobuf:"bytes,2,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` + ServiceName *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` + // Optional hostname to use when sending spans to the collector_cluster. Useful for collectors + // that require a specific hostname. Defaults to collector_cluster above. + CollectorHostname string `protobuf:"bytes,4,opt,name=collector_hostname,json=collectorHostname,proto3" json:"collector_hostname,omitempty"` + // Configures remote configuration. + // Remote Configuration allows to configure the tracer from Datadog's user interface. + // This feature can drastically increase the number of connections to the Datadog Agent. + // Each tracer regularly polls for configuration updates, and the number of tracers is the product + // of the number of listeners and worker threads. + RemoteConfig *DatadogRemoteConfig `protobuf:"bytes,5,opt,name=remote_config,json=remoteConfig,proto3" json:"remote_config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DatadogConfig) Reset() { *x = DatadogConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DatadogConfig) String() string { @@ -63,8 +126,8 @@ func (x *DatadogConfig) String() string { func (*DatadogConfig) ProtoMessage() {} func (x *DatadogConfig) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_msgTypes[1] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -76,37 +139,55 @@ func (x *DatadogConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use DatadogConfig.ProtoReflect.Descriptor instead. func (*DatadogConfig) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_rawDescGZIP(), []int{0} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_rawDescGZIP(), []int{1} } -func (m *DatadogConfig) GetCollectorCluster() isDatadogConfig_CollectorCluster { - if m != nil { - return m.CollectorCluster +func (x *DatadogConfig) GetCollectorCluster() isDatadogConfig_CollectorCluster { + if x != nil { + return x.CollectorCluster } return nil } func (x *DatadogConfig) GetCollectorUpstreamRef() *core.ResourceRef { - if x, ok := x.GetCollectorCluster().(*DatadogConfig_CollectorUpstreamRef); ok { - return x.CollectorUpstreamRef + if x != nil { + if x, ok := x.CollectorCluster.(*DatadogConfig_CollectorUpstreamRef); ok { + return x.CollectorUpstreamRef + } } return nil } func (x *DatadogConfig) GetClusterName() string { - if x, ok := x.GetCollectorCluster().(*DatadogConfig_ClusterName); ok { - return x.ClusterName + if x != nil { + if x, ok := x.CollectorCluster.(*DatadogConfig_ClusterName); ok { + return x.ClusterName + } } return "" } -func (x *DatadogConfig) GetServiceName() string { +func (x *DatadogConfig) GetServiceName() *wrapperspb.StringValue { if x != nil { return x.ServiceName } + return nil +} + +func (x *DatadogConfig) GetCollectorHostname() string { + if x != nil { + return x.CollectorHostname + } return "" } +func (x *DatadogConfig) GetRemoteConfig() *DatadogRemoteConfig { + if x != nil { + return x.RemoteConfig + } + return nil +} + type isDatadogConfig_CollectorCluster interface { isDatadogConfig_CollectorCluster() } @@ -129,7 +210,7 @@ func (*DatadogConfig_ClusterName) isDatadogConfig_CollectorCluster() {} var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_rawDesc = string([]byte{ 0x0a, 0x57, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -137,7 +218,11 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_ 0x69, 0x67, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x64, 0x6f, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1d, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x76, 0x33, 0x1a, 0x1e, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, + 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x76, 0x33, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, + 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, @@ -149,22 +234,46 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_ 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf5, 0x01, 0x0a, 0x0d, 0x44, 0x61, 0x74, 0x61, 0x64, 0x6f, - 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x51, 0x0a, 0x16, 0x63, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x72, 0x65, - 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, - 0x65, 0x66, 0x48, 0x00, 0x52, 0x14, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x55, - 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x12, 0x23, 0x0a, 0x0c, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x2a, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0b, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x3a, 0x2b, 0x8a, 0xc8, 0xde, - 0x8e, 0x04, 0x25, 0x0a, 0x23, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x64, - 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x13, 0x0a, 0x11, 0x63, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x42, 0xcf, 0x01, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x93, 0x01, 0x0a, 0x13, 0x44, 0x61, 0x74, 0x61, 0x64, 0x6f, + 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x44, 0x0a, + 0x10, 0x70, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0f, 0x70, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x9b, 0x03, 0x0a, 0x0d, + 0x44, 0x61, 0x74, 0x61, 0x64, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x51, 0x0a, + 0x16, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x48, 0x00, 0x52, 0x14, 0x63, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, + 0x12, 0x23, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x10, 0x01, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x68, 0x6f, 0x73, + 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x57, + 0x0a, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, + 0x63, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x64, 0x6f, 0x67, 0x52, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3a, 0x2b, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x25, 0x0a, + 0x23, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, + 0x61, 0x63, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x64, 0x6f, 0x67, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x42, 0x13, 0x0a, 0x11, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x42, 0xd3, 0x01, 0xb8, 0xf5, 0x04, 0x01, + 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x82, 0x8a, 0xd7, 0xad, 0x04, 0x2a, 0x12, 0x28, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x72, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x64, 0x6f, 0x67, + 0x2e, 0x76, 0x34, 0x61, 0x6c, 0x70, 0x68, 0x61, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x2b, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x76, 0x33, 0x42, 0x0c, 0x44, @@ -173,38 +282,42 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_ 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2f, 0x76, 0x33, 0x82, - 0x8a, 0xd7, 0xad, 0x04, 0x2a, 0x12, 0x28, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x72, 0x73, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x64, 0x6f, 0x67, 0x2e, 0x76, 0x34, 0x61, 0x6c, 0x70, 0x68, 0x61, 0xe2, - 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_goTypes = []interface{}{ - (*DatadogConfig)(nil), // 0: solo.io.envoy.config.trace.v3.DatadogConfig - (*core.ResourceRef)(nil), // 1: core.solo.io.ResourceRef +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_goTypes = []any{ + (*DatadogRemoteConfig)(nil), // 0: solo.io.envoy.config.trace.v3.DatadogRemoteConfig + (*DatadogConfig)(nil), // 1: solo.io.envoy.config.trace.v3.DatadogConfig + (*durationpb.Duration)(nil), // 2: google.protobuf.Duration + (*wrapperspb.BoolValue)(nil), // 3: google.protobuf.BoolValue + (*core.ResourceRef)(nil), // 4: core.solo.io.ResourceRef + (*wrapperspb.StringValue)(nil), // 5: google.protobuf.StringValue } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_depIdxs = []int32{ - 1, // 0: solo.io.envoy.config.trace.v3.DatadogConfig.collector_upstream_ref:type_name -> core.solo.io.ResourceRef - 1, // [1:1] is the sub-list for method output_type - 1, // [1:1] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name + 2, // 0: solo.io.envoy.config.trace.v3.DatadogRemoteConfig.polling_interval:type_name -> google.protobuf.Duration + 3, // 1: solo.io.envoy.config.trace.v3.DatadogRemoteConfig.disabled:type_name -> google.protobuf.BoolValue + 4, // 2: solo.io.envoy.config.trace.v3.DatadogConfig.collector_upstream_ref:type_name -> core.solo.io.ResourceRef + 5, // 3: solo.io.envoy.config.trace.v3.DatadogConfig.service_name:type_name -> google.protobuf.StringValue + 0, // 4: solo.io.envoy.config.trace.v3.DatadogConfig.remote_config:type_name -> solo.io.envoy.config.trace.v3.DatadogRemoteConfig + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name } func init() { @@ -214,21 +327,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DatadogConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_msgTypes[1].OneofWrappers = []any{ (*DatadogConfig_CollectorUpstreamRef)(nil), (*DatadogConfig_ClusterName)(nil), } @@ -236,9 +335,9 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_rawDesc)), NumEnums: 0, - NumMessages: 1, + NumMessages: 2, NumExtensions: 0, NumServices: 0, }, @@ -247,7 +346,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_datadog_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/datadog.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/datadog.pb.hash.go index 62c7b0d39..07cfb0c3b 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/datadog.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/datadog.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,70 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *DatadogRemoteConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.trace.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3.DatadogRemoteConfig")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPollingInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PollingInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPollingInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PollingInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDisabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Disabled")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisabled(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Disabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *DatadogConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -38,23 +102,69 @@ func (m *DatadogConfig) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } - if _, err = hasher.Write([]byte(m.GetServiceName())); err != nil { + if h, ok := interface{}(m.GetServiceName()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServiceName")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetServiceName(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ServiceName")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetCollectorHostname())); err != nil { return 0, err } + if h, ok := interface{}(m.GetRemoteConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RemoteConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRemoteConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RemoteConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + switch m.CollectorCluster.(type) { case *DatadogConfig_CollectorUpstreamRef: if h, ok := interface{}(m.GetCollectorUpstreamRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CollectorUpstreamRef")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCollectorUpstreamRef(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCollectorUpstreamRef(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("CollectorUpstreamRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/datadog.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/datadog.pb.uniquehash.go new file mode 100644 index 000000000..75618f78d --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/datadog.pb.uniquehash.go @@ -0,0 +1,188 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/trace/v3/datadog.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DatadogRemoteConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.trace.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3.DatadogRemoteConfig")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPollingInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PollingInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPollingInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PollingInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDisabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Disabled")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisabled(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Disabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DatadogConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.trace.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3.DatadogConfig")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetServiceName()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServiceName")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetServiceName(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ServiceName")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("CollectorHostname")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCollectorHostname())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRemoteConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RemoteConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRemoteConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RemoteConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.CollectorCluster.(type) { + + case *DatadogConfig_CollectorUpstreamRef: + + if h, ok := interface{}(m.GetCollectorUpstreamRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CollectorUpstreamRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCollectorUpstreamRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CollectorUpstreamRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *DatadogConfig_ClusterName: + + if _, err = hasher.Write([]byte("ClusterName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClusterName())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opencensus.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opencensus.pb.clone.go new file mode 100644 index 000000000..a5dc4e901 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opencensus.pb.clone.go @@ -0,0 +1,198 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/trace/v3/opencensus.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *OpenCensusConfig) Clone() proto.Message { + var target *OpenCensusConfig + if m == nil { + return target + } + target = &OpenCensusConfig{} + + if h, ok := interface{}(m.GetTraceConfig()).(clone.Cloner); ok { + target.TraceConfig = h.Clone().(*TraceConfig) + } else { + target.TraceConfig = proto.Clone(m.GetTraceConfig()).(*TraceConfig) + } + + target.OcagentExporterEnabled = m.GetOcagentExporterEnabled() + + if m.GetIncomingTraceContext() != nil { + target.IncomingTraceContext = make([]OpenCensusConfig_TraceContext, len(m.GetIncomingTraceContext())) + for idx, v := range m.GetIncomingTraceContext() { + + target.IncomingTraceContext[idx] = v + + } + } + + if m.GetOutgoingTraceContext() != nil { + target.OutgoingTraceContext = make([]OpenCensusConfig_TraceContext, len(m.GetOutgoingTraceContext())) + for idx, v := range m.GetOutgoingTraceContext() { + + target.OutgoingTraceContext[idx] = v + + } + } + + switch m.OcagentAddress.(type) { + + case *OpenCensusConfig_HttpAddress: + + target.OcagentAddress = &OpenCensusConfig_HttpAddress{ + HttpAddress: m.GetHttpAddress(), + } + + case *OpenCensusConfig_GrpcAddress: + + if h, ok := interface{}(m.GetGrpcAddress()).(clone.Cloner); ok { + target.OcagentAddress = &OpenCensusConfig_GrpcAddress{ + GrpcAddress: h.Clone().(*OpenCensusConfig_OcagentGrpcAddress), + } + } else { + target.OcagentAddress = &OpenCensusConfig_GrpcAddress{ + GrpcAddress: proto.Clone(m.GetGrpcAddress()).(*OpenCensusConfig_OcagentGrpcAddress), + } + } + + } + + return target +} + +// Clone function +func (m *TraceConfig) Clone() proto.Message { + var target *TraceConfig + if m == nil { + return target + } + target = &TraceConfig{} + + target.MaxNumberOfAttributes = m.GetMaxNumberOfAttributes() + + target.MaxNumberOfAnnotations = m.GetMaxNumberOfAnnotations() + + target.MaxNumberOfMessageEvents = m.GetMaxNumberOfMessageEvents() + + target.MaxNumberOfLinks = m.GetMaxNumberOfLinks() + + switch m.Sampler.(type) { + + case *TraceConfig_ProbabilitySampler: + + if h, ok := interface{}(m.GetProbabilitySampler()).(clone.Cloner); ok { + target.Sampler = &TraceConfig_ProbabilitySampler{ + ProbabilitySampler: h.Clone().(*ProbabilitySampler), + } + } else { + target.Sampler = &TraceConfig_ProbabilitySampler{ + ProbabilitySampler: proto.Clone(m.GetProbabilitySampler()).(*ProbabilitySampler), + } + } + + case *TraceConfig_ConstantSampler: + + if h, ok := interface{}(m.GetConstantSampler()).(clone.Cloner); ok { + target.Sampler = &TraceConfig_ConstantSampler{ + ConstantSampler: h.Clone().(*ConstantSampler), + } + } else { + target.Sampler = &TraceConfig_ConstantSampler{ + ConstantSampler: proto.Clone(m.GetConstantSampler()).(*ConstantSampler), + } + } + + case *TraceConfig_RateLimitingSampler: + + if h, ok := interface{}(m.GetRateLimitingSampler()).(clone.Cloner); ok { + target.Sampler = &TraceConfig_RateLimitingSampler{ + RateLimitingSampler: h.Clone().(*RateLimitingSampler), + } + } else { + target.Sampler = &TraceConfig_RateLimitingSampler{ + RateLimitingSampler: proto.Clone(m.GetRateLimitingSampler()).(*RateLimitingSampler), + } + } + + } + + return target +} + +// Clone function +func (m *ProbabilitySampler) Clone() proto.Message { + var target *ProbabilitySampler + if m == nil { + return target + } + target = &ProbabilitySampler{} + + target.SamplingProbability = m.GetSamplingProbability() + + return target +} + +// Clone function +func (m *ConstantSampler) Clone() proto.Message { + var target *ConstantSampler + if m == nil { + return target + } + target = &ConstantSampler{} + + target.Decision = m.GetDecision() + + return target +} + +// Clone function +func (m *RateLimitingSampler) Clone() proto.Message { + var target *RateLimitingSampler + if m == nil { + return target + } + target = &RateLimitingSampler{} + + target.Qps = m.GetQps() + + return target +} + +// Clone function +func (m *OpenCensusConfig_OcagentGrpcAddress) Clone() proto.Message { + var target *OpenCensusConfig_OcagentGrpcAddress + if m == nil { + return target + } + target = &OpenCensusConfig_OcagentGrpcAddress{} + + target.TargetUri = m.GetTargetUri() + + target.StatPrefix = m.GetStatPrefix() + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opencensus.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opencensus.pb.equal.go new file mode 100644 index 000000000..bc74e4485 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opencensus.pb.equal.go @@ -0,0 +1,329 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/trace/v3/opencensus.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *OpenCensusConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*OpenCensusConfig) + if !ok { + that2, ok := that.(OpenCensusConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetTraceConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetTraceConfig()) { + return false + } + } else { + if !proto.Equal(m.GetTraceConfig(), target.GetTraceConfig()) { + return false + } + } + + if m.GetOcagentExporterEnabled() != target.GetOcagentExporterEnabled() { + return false + } + + if len(m.GetIncomingTraceContext()) != len(target.GetIncomingTraceContext()) { + return false + } + for idx, v := range m.GetIncomingTraceContext() { + + if v != target.GetIncomingTraceContext()[idx] { + return false + } + + } + + if len(m.GetOutgoingTraceContext()) != len(target.GetOutgoingTraceContext()) { + return false + } + for idx, v := range m.GetOutgoingTraceContext() { + + if v != target.GetOutgoingTraceContext()[idx] { + return false + } + + } + + switch m.OcagentAddress.(type) { + + case *OpenCensusConfig_HttpAddress: + if _, ok := target.OcagentAddress.(*OpenCensusConfig_HttpAddress); !ok { + return false + } + + if strings.Compare(m.GetHttpAddress(), target.GetHttpAddress()) != 0 { + return false + } + + case *OpenCensusConfig_GrpcAddress: + if _, ok := target.OcagentAddress.(*OpenCensusConfig_GrpcAddress); !ok { + return false + } + + if h, ok := interface{}(m.GetGrpcAddress()).(equality.Equalizer); ok { + if !h.Equal(target.GetGrpcAddress()) { + return false + } + } else { + if !proto.Equal(m.GetGrpcAddress(), target.GetGrpcAddress()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.OcagentAddress != target.OcagentAddress { + return false + } + } + + return true +} + +// Equal function +func (m *TraceConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*TraceConfig) + if !ok { + that2, ok := that.(TraceConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetMaxNumberOfAttributes() != target.GetMaxNumberOfAttributes() { + return false + } + + if m.GetMaxNumberOfAnnotations() != target.GetMaxNumberOfAnnotations() { + return false + } + + if m.GetMaxNumberOfMessageEvents() != target.GetMaxNumberOfMessageEvents() { + return false + } + + if m.GetMaxNumberOfLinks() != target.GetMaxNumberOfLinks() { + return false + } + + switch m.Sampler.(type) { + + case *TraceConfig_ProbabilitySampler: + if _, ok := target.Sampler.(*TraceConfig_ProbabilitySampler); !ok { + return false + } + + if h, ok := interface{}(m.GetProbabilitySampler()).(equality.Equalizer); ok { + if !h.Equal(target.GetProbabilitySampler()) { + return false + } + } else { + if !proto.Equal(m.GetProbabilitySampler(), target.GetProbabilitySampler()) { + return false + } + } + + case *TraceConfig_ConstantSampler: + if _, ok := target.Sampler.(*TraceConfig_ConstantSampler); !ok { + return false + } + + if h, ok := interface{}(m.GetConstantSampler()).(equality.Equalizer); ok { + if !h.Equal(target.GetConstantSampler()) { + return false + } + } else { + if !proto.Equal(m.GetConstantSampler(), target.GetConstantSampler()) { + return false + } + } + + case *TraceConfig_RateLimitingSampler: + if _, ok := target.Sampler.(*TraceConfig_RateLimitingSampler); !ok { + return false + } + + if h, ok := interface{}(m.GetRateLimitingSampler()).(equality.Equalizer); ok { + if !h.Equal(target.GetRateLimitingSampler()) { + return false + } + } else { + if !proto.Equal(m.GetRateLimitingSampler(), target.GetRateLimitingSampler()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.Sampler != target.Sampler { + return false + } + } + + return true +} + +// Equal function +func (m *ProbabilitySampler) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ProbabilitySampler) + if !ok { + that2, ok := that.(ProbabilitySampler) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetSamplingProbability() != target.GetSamplingProbability() { + return false + } + + return true +} + +// Equal function +func (m *ConstantSampler) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ConstantSampler) + if !ok { + that2, ok := that.(ConstantSampler) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetDecision() != target.GetDecision() { + return false + } + + return true +} + +// Equal function +func (m *RateLimitingSampler) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RateLimitingSampler) + if !ok { + that2, ok := that.(RateLimitingSampler) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetQps() != target.GetQps() { + return false + } + + return true +} + +// Equal function +func (m *OpenCensusConfig_OcagentGrpcAddress) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*OpenCensusConfig_OcagentGrpcAddress) + if !ok { + that2, ok := that.(OpenCensusConfig_OcagentGrpcAddress) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetTargetUri(), target.GetTargetUri()) != 0 { + return false + } + + if strings.Compare(m.GetStatPrefix(), target.GetStatPrefix()) != 0 { + return false + } + + return true +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opencensus.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opencensus.pb.go new file mode 100644 index 000000000..7c32ce13e --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opencensus.pb.go @@ -0,0 +1,807 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/trace/v3/opencensus.proto + +package v3 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/envoyproxy/protoc-gen-validate/validate" + _ "github.com/solo-io/protoc-gen-ext/extproto" + _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type OpenCensusConfig_TraceContext int32 + +const ( + // No-op default, no trace context is utilized. + OpenCensusConfig_NONE OpenCensusConfig_TraceContext = 0 + // W3C Trace-Context format "traceparent:" header. + OpenCensusConfig_TRACE_CONTEXT OpenCensusConfig_TraceContext = 1 + // Binary "grpc-trace-bin:" header. + OpenCensusConfig_GRPC_TRACE_BIN OpenCensusConfig_TraceContext = 2 + // "X-Cloud-Trace-Context:" header. + OpenCensusConfig_CLOUD_TRACE_CONTEXT OpenCensusConfig_TraceContext = 3 + // X-B3-* headers. + OpenCensusConfig_B3 OpenCensusConfig_TraceContext = 4 +) + +// Enum value maps for OpenCensusConfig_TraceContext. +var ( + OpenCensusConfig_TraceContext_name = map[int32]string{ + 0: "NONE", + 1: "TRACE_CONTEXT", + 2: "GRPC_TRACE_BIN", + 3: "CLOUD_TRACE_CONTEXT", + 4: "B3", + } + OpenCensusConfig_TraceContext_value = map[string]int32{ + "NONE": 0, + "TRACE_CONTEXT": 1, + "GRPC_TRACE_BIN": 2, + "CLOUD_TRACE_CONTEXT": 3, + "B3": 4, + } +) + +func (x OpenCensusConfig_TraceContext) Enum() *OpenCensusConfig_TraceContext { + p := new(OpenCensusConfig_TraceContext) + *p = x + return p +} + +func (x OpenCensusConfig_TraceContext) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OpenCensusConfig_TraceContext) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_enumTypes[0].Descriptor() +} + +func (OpenCensusConfig_TraceContext) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_enumTypes[0] +} + +func (x OpenCensusConfig_TraceContext) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OpenCensusConfig_TraceContext.Descriptor instead. +func (OpenCensusConfig_TraceContext) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_rawDescGZIP(), []int{0, 0} +} + +// How spans should be sampled: +// - Always off +// - Always on +// - Always follow the parent Span's decision (off if no parent). +type ConstantSampler_ConstantDecision int32 + +const ( + ConstantSampler_ALWAYS_OFF ConstantSampler_ConstantDecision = 0 + ConstantSampler_ALWAYS_ON ConstantSampler_ConstantDecision = 1 + ConstantSampler_ALWAYS_PARENT ConstantSampler_ConstantDecision = 2 +) + +// Enum value maps for ConstantSampler_ConstantDecision. +var ( + ConstantSampler_ConstantDecision_name = map[int32]string{ + 0: "ALWAYS_OFF", + 1: "ALWAYS_ON", + 2: "ALWAYS_PARENT", + } + ConstantSampler_ConstantDecision_value = map[string]int32{ + "ALWAYS_OFF": 0, + "ALWAYS_ON": 1, + "ALWAYS_PARENT": 2, + } +) + +func (x ConstantSampler_ConstantDecision) Enum() *ConstantSampler_ConstantDecision { + p := new(ConstantSampler_ConstantDecision) + *p = x + return p +} + +func (x ConstantSampler_ConstantDecision) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ConstantSampler_ConstantDecision) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_enumTypes[1].Descriptor() +} + +func (ConstantSampler_ConstantDecision) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_enumTypes[1] +} + +func (x ConstantSampler_ConstantDecision) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ConstantSampler_ConstantDecision.Descriptor instead. +func (ConstantSampler_ConstantDecision) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_rawDescGZIP(), []int{3, 0} +} + +// Configuration for the OpenCensus tracer. +// +// The OpenCensus tracer is capable of reporting metadata to a collector using W3C-standard Trace Context: https://www.w3.org/TR/trace-context/ +// WARNING: users should take care to note that this plugin has a serious limitation that can cause a configuration freeze of Envoy's dynamic listeners. This plugin can be initialised once after Envoy has started. In order to change this plugin's configuration, users must first apply the new configuration, and then restart Envoy. Users should also be aware that once the new configuration is applied, Envoy will reject any changes to its dynamic listeners configuration until after it has been restarted. +// [#extension: envoy.tracers.opencensus] +type OpenCensusConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Configuration of when to submit traces to the collector. + // See https://github.com/census-instrumentation/opencensus-proto/blob/3619b5dda8bff26ff1974714c24de8f6d4953811/src/opencensus/proto/trace/v1/trace_config.proto#L29 for full documentation + TraceConfig *TraceConfig `protobuf:"bytes,1,opt,name=trace_config,json=traceConfig,proto3" json:"trace_config,omitempty"` + // Enables the OpenCensus agent if set to true. + OcagentExporterEnabled bool `protobuf:"varint,2,opt,name=ocagent_exporter_enabled,json=ocagentExporterEnabled,proto3" json:"ocagent_exporter_enabled,omitempty"` + // Upstream to which trace data should be sent + // + // Types that are valid to be assigned to OcagentAddress: + // + // *OpenCensusConfig_HttpAddress + // *OpenCensusConfig_GrpcAddress + OcagentAddress isOpenCensusConfig_OcagentAddress `protobuf_oneof:"ocagent_address"` + // List of incoming trace context headers to accept. First one found wins + IncomingTraceContext []OpenCensusConfig_TraceContext `protobuf:"varint,5,rep,packed,name=incoming_trace_context,json=incomingTraceContext,proto3,enum=solo.io.envoy.config.trace.v3.OpenCensusConfig_TraceContext" json:"incoming_trace_context,omitempty"` + // List of outgoing trace context headers we will produce + OutgoingTraceContext []OpenCensusConfig_TraceContext `protobuf:"varint,6,rep,packed,name=outgoing_trace_context,json=outgoingTraceContext,proto3,enum=solo.io.envoy.config.trace.v3.OpenCensusConfig_TraceContext" json:"outgoing_trace_context,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OpenCensusConfig) Reset() { + *x = OpenCensusConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OpenCensusConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OpenCensusConfig) ProtoMessage() {} + +func (x *OpenCensusConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OpenCensusConfig.ProtoReflect.Descriptor instead. +func (*OpenCensusConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_rawDescGZIP(), []int{0} +} + +func (x *OpenCensusConfig) GetTraceConfig() *TraceConfig { + if x != nil { + return x.TraceConfig + } + return nil +} + +func (x *OpenCensusConfig) GetOcagentExporterEnabled() bool { + if x != nil { + return x.OcagentExporterEnabled + } + return false +} + +func (x *OpenCensusConfig) GetOcagentAddress() isOpenCensusConfig_OcagentAddress { + if x != nil { + return x.OcagentAddress + } + return nil +} + +func (x *OpenCensusConfig) GetHttpAddress() string { + if x != nil { + if x, ok := x.OcagentAddress.(*OpenCensusConfig_HttpAddress); ok { + return x.HttpAddress + } + } + return "" +} + +func (x *OpenCensusConfig) GetGrpcAddress() *OpenCensusConfig_OcagentGrpcAddress { + if x != nil { + if x, ok := x.OcagentAddress.(*OpenCensusConfig_GrpcAddress); ok { + return x.GrpcAddress + } + } + return nil +} + +func (x *OpenCensusConfig) GetIncomingTraceContext() []OpenCensusConfig_TraceContext { + if x != nil { + return x.IncomingTraceContext + } + return nil +} + +func (x *OpenCensusConfig) GetOutgoingTraceContext() []OpenCensusConfig_TraceContext { + if x != nil { + return x.OutgoingTraceContext + } + return nil +} + +type isOpenCensusConfig_OcagentAddress interface { + isOpenCensusConfig_OcagentAddress() +} + +type OpenCensusConfig_HttpAddress struct { + // Send to upstream over http + HttpAddress string `protobuf:"bytes,3,opt,name=http_address,json=httpAddress,proto3,oneof"` +} + +type OpenCensusConfig_GrpcAddress struct { + // Send to upstream over GRPC + GrpcAddress *OpenCensusConfig_OcagentGrpcAddress `protobuf:"bytes,4,opt,name=grpc_address,json=grpcAddress,proto3,oneof"` +} + +func (*OpenCensusConfig_HttpAddress) isOpenCensusConfig_OcagentAddress() {} + +func (*OpenCensusConfig_GrpcAddress) isOpenCensusConfig_OcagentAddress() {} + +type TraceConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Sampler: + // + // *TraceConfig_ProbabilitySampler + // *TraceConfig_ConstantSampler + // *TraceConfig_RateLimitingSampler + Sampler isTraceConfig_Sampler `protobuf_oneof:"sampler"` + // The global default max number of attributes per span. + MaxNumberOfAttributes int64 `protobuf:"varint,4,opt,name=max_number_of_attributes,json=maxNumberOfAttributes,proto3" json:"max_number_of_attributes,omitempty"` + // The global default max number of annotation events per span. + MaxNumberOfAnnotations int64 `protobuf:"varint,5,opt,name=max_number_of_annotations,json=maxNumberOfAnnotations,proto3" json:"max_number_of_annotations,omitempty"` + // The global default max number of message events per span. + MaxNumberOfMessageEvents int64 `protobuf:"varint,6,opt,name=max_number_of_message_events,json=maxNumberOfMessageEvents,proto3" json:"max_number_of_message_events,omitempty"` + // The global default max number of link entries per span. + MaxNumberOfLinks int64 `protobuf:"varint,7,opt,name=max_number_of_links,json=maxNumberOfLinks,proto3" json:"max_number_of_links,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TraceConfig) Reset() { + *x = TraceConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TraceConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TraceConfig) ProtoMessage() {} + +func (x *TraceConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TraceConfig.ProtoReflect.Descriptor instead. +func (*TraceConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_rawDescGZIP(), []int{1} +} + +func (x *TraceConfig) GetSampler() isTraceConfig_Sampler { + if x != nil { + return x.Sampler + } + return nil +} + +func (x *TraceConfig) GetProbabilitySampler() *ProbabilitySampler { + if x != nil { + if x, ok := x.Sampler.(*TraceConfig_ProbabilitySampler); ok { + return x.ProbabilitySampler + } + } + return nil +} + +func (x *TraceConfig) GetConstantSampler() *ConstantSampler { + if x != nil { + if x, ok := x.Sampler.(*TraceConfig_ConstantSampler); ok { + return x.ConstantSampler + } + } + return nil +} + +func (x *TraceConfig) GetRateLimitingSampler() *RateLimitingSampler { + if x != nil { + if x, ok := x.Sampler.(*TraceConfig_RateLimitingSampler); ok { + return x.RateLimitingSampler + } + } + return nil +} + +func (x *TraceConfig) GetMaxNumberOfAttributes() int64 { + if x != nil { + return x.MaxNumberOfAttributes + } + return 0 +} + +func (x *TraceConfig) GetMaxNumberOfAnnotations() int64 { + if x != nil { + return x.MaxNumberOfAnnotations + } + return 0 +} + +func (x *TraceConfig) GetMaxNumberOfMessageEvents() int64 { + if x != nil { + return x.MaxNumberOfMessageEvents + } + return 0 +} + +func (x *TraceConfig) GetMaxNumberOfLinks() int64 { + if x != nil { + return x.MaxNumberOfLinks + } + return 0 +} + +type isTraceConfig_Sampler interface { + isTraceConfig_Sampler() +} + +type TraceConfig_ProbabilitySampler struct { + ProbabilitySampler *ProbabilitySampler `protobuf:"bytes,1,opt,name=probability_sampler,json=probabilitySampler,proto3,oneof"` +} + +type TraceConfig_ConstantSampler struct { + ConstantSampler *ConstantSampler `protobuf:"bytes,2,opt,name=constant_sampler,json=constantSampler,proto3,oneof"` +} + +type TraceConfig_RateLimitingSampler struct { + RateLimitingSampler *RateLimitingSampler `protobuf:"bytes,3,opt,name=rate_limiting_sampler,json=rateLimitingSampler,proto3,oneof"` +} + +func (*TraceConfig_ProbabilitySampler) isTraceConfig_Sampler() {} + +func (*TraceConfig_ConstantSampler) isTraceConfig_Sampler() {} + +func (*TraceConfig_RateLimitingSampler) isTraceConfig_Sampler() {} + +// Sampler that tries to uniformly sample traces with a given probability. +// The probability of sampling a trace is equal to that of the specified probability. +type ProbabilitySampler struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The desired probability of sampling. Must be within [0.0, 1.0]. + SamplingProbability float64 `protobuf:"fixed64,1,opt,name=samplingProbability,proto3" json:"samplingProbability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ProbabilitySampler) Reset() { + *x = ProbabilitySampler{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ProbabilitySampler) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProbabilitySampler) ProtoMessage() {} + +func (x *ProbabilitySampler) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProbabilitySampler.ProtoReflect.Descriptor instead. +func (*ProbabilitySampler) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_rawDescGZIP(), []int{2} +} + +func (x *ProbabilitySampler) GetSamplingProbability() float64 { + if x != nil { + return x.SamplingProbability + } + return 0 +} + +// Sampler that always makes a constant decision on span sampling. +type ConstantSampler struct { + state protoimpl.MessageState `protogen:"open.v1"` + Decision ConstantSampler_ConstantDecision `protobuf:"varint,1,opt,name=decision,proto3,enum=solo.io.envoy.config.trace.v3.ConstantSampler_ConstantDecision" json:"decision,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ConstantSampler) Reset() { + *x = ConstantSampler{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ConstantSampler) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConstantSampler) ProtoMessage() {} + +func (x *ConstantSampler) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConstantSampler.ProtoReflect.Descriptor instead. +func (*ConstantSampler) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_rawDescGZIP(), []int{3} +} + +func (x *ConstantSampler) GetDecision() ConstantSampler_ConstantDecision { + if x != nil { + return x.Decision + } + return ConstantSampler_ALWAYS_OFF +} + +// Sampler that tries to sample with a rate per time window. +type RateLimitingSampler struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Rate per second. + Qps int64 `protobuf:"varint,1,opt,name=qps,proto3" json:"qps,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RateLimitingSampler) Reset() { + *x = RateLimitingSampler{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RateLimitingSampler) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RateLimitingSampler) ProtoMessage() {} + +func (x *RateLimitingSampler) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RateLimitingSampler.ProtoReflect.Descriptor instead. +func (*RateLimitingSampler) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_rawDescGZIP(), []int{4} +} + +func (x *RateLimitingSampler) GetQps() int64 { + if x != nil { + return x.Qps + } + return 0 +} + +type OpenCensusConfig_OcagentGrpcAddress struct { + state protoimpl.MessageState `protogen:"open.v1"` + // URI of the target address + TargetUri string `protobuf:"bytes,1,opt,name=target_uri,json=targetUri,proto3" json:"target_uri,omitempty"` + // Prefix for statistical measurements + StatPrefix string `protobuf:"bytes,2,opt,name=stat_prefix,json=statPrefix,proto3" json:"stat_prefix,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OpenCensusConfig_OcagentGrpcAddress) Reset() { + *x = OpenCensusConfig_OcagentGrpcAddress{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OpenCensusConfig_OcagentGrpcAddress) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OpenCensusConfig_OcagentGrpcAddress) ProtoMessage() {} + +func (x *OpenCensusConfig_OcagentGrpcAddress) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OpenCensusConfig_OcagentGrpcAddress.ProtoReflect.Descriptor instead. +func (*OpenCensusConfig_OcagentGrpcAddress) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *OpenCensusConfig_OcagentGrpcAddress) GetTargetUri() string { + if x != nil { + return x.TargetUri + } + return "" +} + +func (x *OpenCensusConfig_OcagentGrpcAddress) GetStatPrefix() string { + if x != nil { + return x.StatPrefix + } + return "" +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_rawDesc = string([]byte{ + 0x0a, 0x5a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x6f, 0x70, 0x65, 0x6e, + 0x63, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1d, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x76, 0x33, 0x1a, 0x1e, 0x75, 0x64, 0x70, + 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x69, + 0x67, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x75, 0x64, 0x70, + 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x75, 0x64, 0x70, 0x61, + 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8c, 0x06, 0x0a, 0x10, 0x4f, + 0x70, 0x65, 0x6e, 0x43, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x4d, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, + 0x63, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38, + 0x0a, 0x18, 0x6f, 0x63, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x16, 0x6f, 0x63, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, + 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0c, 0x68, 0x74, 0x74, 0x70, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x67, 0x0a, + 0x0c, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, + 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x63, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x70, 0x63, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x67, 0x72, 0x70, 0x63, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x72, 0x0a, 0x16, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, + 0x6e, 0x67, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, + 0x61, 0x63, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x65, 0x6e, 0x73, 0x75, + 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x78, 0x74, 0x52, 0x14, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x54, 0x72, + 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x72, 0x0a, 0x16, 0x6f, 0x75, + 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x78, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x43, + 0x65, 0x6e, 0x73, 0x75, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x72, 0x61, 0x63, + 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x14, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, + 0x6e, 0x67, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x1a, 0x54, + 0x0a, 0x12, 0x4f, 0x63, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x70, 0x63, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, + 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x55, 0x72, 0x69, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, + 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x50, 0x72, + 0x65, 0x66, 0x69, 0x78, 0x22, 0x60, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x78, 0x74, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x11, + 0x0a, 0x0d, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x58, 0x54, 0x10, + 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x47, 0x52, 0x50, 0x43, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, + 0x42, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x54, + 0x52, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x58, 0x54, 0x10, 0x03, 0x12, 0x06, + 0x0a, 0x02, 0x42, 0x33, 0x10, 0x04, 0x3a, 0x2e, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x28, 0x0a, 0x26, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, + 0x63, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x65, 0x6e, 0x73, 0x75, 0x73, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x11, 0x0a, 0x0f, 0x6f, 0x63, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xa8, 0x04, 0x0a, 0x0b, 0x54, 0x72, + 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x64, 0x0a, 0x13, 0x70, 0x72, 0x6f, + 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, + 0x61, 0x63, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x48, 0x00, 0x52, 0x12, 0x70, 0x72, 0x6f, + 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x12, + 0x5b, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x73, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x12, 0x68, 0x0a, 0x15, + 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x61, 0x74, 0x65, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x48, + 0x00, 0x52, 0x13, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x53, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x18, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x6d, 0x61, 0x78, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x4f, 0x66, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, + 0x39, 0x0a, 0x19, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, + 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x16, 0x6d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x41, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x1c, 0x6d, 0x61, + 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x18, 0x6d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x61, + 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, + 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x4f, 0x66, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x73, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x72, 0x22, 0x46, 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x61, + 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x13, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, + 0x67, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0xb4, 0x01, 0x0a, + 0x0f, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, + 0x12, 0x5b, 0x0a, 0x08, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x3f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x44, 0x65, 0x63, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x44, 0x0a, + 0x10, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x4c, 0x57, 0x41, 0x59, 0x53, 0x5f, 0x4f, 0x46, 0x46, 0x10, + 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x4c, 0x57, 0x41, 0x59, 0x53, 0x5f, 0x4f, 0x4e, 0x10, 0x01, + 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x4c, 0x57, 0x41, 0x59, 0x53, 0x5f, 0x50, 0x41, 0x52, 0x45, 0x4e, + 0x54, 0x10, 0x02, 0x22, 0x27, 0x0a, 0x13, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x69, 0x6e, 0x67, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x71, 0x70, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x71, 0x70, 0x73, 0x42, 0xd9, 0x01, 0xb8, + 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x82, 0x8a, 0xd7, 0xad, 0x04, + 0x2d, 0x12, 0x2b, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x72, 0x73, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x63, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x2e, 0x76, 0x34, 0x61, 0x6c, 0x70, 0x68, 0x61, 0xe2, 0xb5, + 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x2b, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, + 0x2e, 0x76, 0x33, 0x42, 0x0f, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, + 0x74, 0x72, 0x61, 0x63, 0x65, 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_goTypes = []any{ + (OpenCensusConfig_TraceContext)(0), // 0: solo.io.envoy.config.trace.v3.OpenCensusConfig.TraceContext + (ConstantSampler_ConstantDecision)(0), // 1: solo.io.envoy.config.trace.v3.ConstantSampler.ConstantDecision + (*OpenCensusConfig)(nil), // 2: solo.io.envoy.config.trace.v3.OpenCensusConfig + (*TraceConfig)(nil), // 3: solo.io.envoy.config.trace.v3.TraceConfig + (*ProbabilitySampler)(nil), // 4: solo.io.envoy.config.trace.v3.ProbabilitySampler + (*ConstantSampler)(nil), // 5: solo.io.envoy.config.trace.v3.ConstantSampler + (*RateLimitingSampler)(nil), // 6: solo.io.envoy.config.trace.v3.RateLimitingSampler + (*OpenCensusConfig_OcagentGrpcAddress)(nil), // 7: solo.io.envoy.config.trace.v3.OpenCensusConfig.OcagentGrpcAddress +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_depIdxs = []int32{ + 3, // 0: solo.io.envoy.config.trace.v3.OpenCensusConfig.trace_config:type_name -> solo.io.envoy.config.trace.v3.TraceConfig + 7, // 1: solo.io.envoy.config.trace.v3.OpenCensusConfig.grpc_address:type_name -> solo.io.envoy.config.trace.v3.OpenCensusConfig.OcagentGrpcAddress + 0, // 2: solo.io.envoy.config.trace.v3.OpenCensusConfig.incoming_trace_context:type_name -> solo.io.envoy.config.trace.v3.OpenCensusConfig.TraceContext + 0, // 3: solo.io.envoy.config.trace.v3.OpenCensusConfig.outgoing_trace_context:type_name -> solo.io.envoy.config.trace.v3.OpenCensusConfig.TraceContext + 4, // 4: solo.io.envoy.config.trace.v3.TraceConfig.probability_sampler:type_name -> solo.io.envoy.config.trace.v3.ProbabilitySampler + 5, // 5: solo.io.envoy.config.trace.v3.TraceConfig.constant_sampler:type_name -> solo.io.envoy.config.trace.v3.ConstantSampler + 6, // 6: solo.io.envoy.config.trace.v3.TraceConfig.rate_limiting_sampler:type_name -> solo.io.envoy.config.trace.v3.RateLimitingSampler + 1, // 7: solo.io.envoy.config.trace.v3.ConstantSampler.decision:type_name -> solo.io.envoy.config.trace.v3.ConstantSampler.ConstantDecision + 8, // [8:8] is the sub-list for method output_type + 8, // [8:8] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_msgTypes[0].OneofWrappers = []any{ + (*OpenCensusConfig_HttpAddress)(nil), + (*OpenCensusConfig_GrpcAddress)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_msgTypes[1].OneofWrappers = []any{ + (*TraceConfig_ProbabilitySampler)(nil), + (*TraceConfig_ConstantSampler)(nil), + (*TraceConfig_RateLimitingSampler)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_rawDesc)), + NumEnums: 2, + NumMessages: 6, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_enumTypes, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opencensus_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opencensus.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opencensus.pb.hash.go new file mode 100644 index 000000000..076ac0552 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opencensus.pb.hash.go @@ -0,0 +1,334 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/trace/v3/opencensus.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *OpenCensusConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.trace.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3.OpenCensusConfig")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTraceConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TraceConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTraceConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TraceConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetOcagentExporterEnabled()) + if err != nil { + return 0, err + } + + for _, v := range m.GetIncomingTraceContext() { + + err = binary.Write(hasher, binary.LittleEndian, v) + if err != nil { + return 0, err + } + + } + + for _, v := range m.GetOutgoingTraceContext() { + + err = binary.Write(hasher, binary.LittleEndian, v) + if err != nil { + return 0, err + } + + } + + switch m.OcagentAddress.(type) { + + case *OpenCensusConfig_HttpAddress: + + if _, err = hasher.Write([]byte(m.GetHttpAddress())); err != nil { + return 0, err + } + + case *OpenCensusConfig_GrpcAddress: + + if h, ok := interface{}(m.GetGrpcAddress()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcAddress")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcAddress(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcAddress")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *TraceConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.trace.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3.TraceConfig")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetMaxNumberOfAttributes()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetMaxNumberOfAnnotations()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetMaxNumberOfMessageEvents()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetMaxNumberOfLinks()) + if err != nil { + return 0, err + } + + switch m.Sampler.(type) { + + case *TraceConfig_ProbabilitySampler: + + if h, ok := interface{}(m.GetProbabilitySampler()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProbabilitySampler")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProbabilitySampler(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ProbabilitySampler")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *TraceConfig_ConstantSampler: + + if h, ok := interface{}(m.GetConstantSampler()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConstantSampler")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConstantSampler(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConstantSampler")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *TraceConfig_RateLimitingSampler: + + if h, ok := interface{}(m.GetRateLimitingSampler()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimitingSampler")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRateLimitingSampler(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RateLimitingSampler")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ProbabilitySampler) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.trace.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3.ProbabilitySampler")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetSamplingProbability()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ConstantSampler) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.trace.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3.ConstantSampler")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetDecision()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RateLimitingSampler) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.trace.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3.RateLimitingSampler")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetQps()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *OpenCensusConfig_OcagentGrpcAddress) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.trace.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3.OpenCensusConfig_OcagentGrpcAddress")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetTargetUri())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetStatPrefix())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opencensus.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opencensus.pb.uniquehash.go new file mode 100644 index 000000000..f578b6763 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opencensus.pb.uniquehash.go @@ -0,0 +1,381 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/trace/v3/opencensus.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *OpenCensusConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.trace.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3.OpenCensusConfig")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTraceConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TraceConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTraceConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TraceConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("OcagentExporterEnabled")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetOcagentExporterEnabled()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("IncomingTraceContext")); err != nil { + return 0, err + } + for i, v := range m.GetIncomingTraceContext() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, v) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("OutgoingTraceContext")); err != nil { + return 0, err + } + for i, v := range m.GetOutgoingTraceContext() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, v) + if err != nil { + return 0, err + } + + } + + switch m.OcagentAddress.(type) { + + case *OpenCensusConfig_HttpAddress: + + if _, err = hasher.Write([]byte("HttpAddress")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHttpAddress())); err != nil { + return 0, err + } + + case *OpenCensusConfig_GrpcAddress: + + if h, ok := interface{}(m.GetGrpcAddress()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcAddress")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcAddress(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcAddress")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TraceConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.trace.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3.TraceConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MaxNumberOfAttributes")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMaxNumberOfAttributes()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MaxNumberOfAnnotations")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMaxNumberOfAnnotations()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MaxNumberOfMessageEvents")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMaxNumberOfMessageEvents()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MaxNumberOfLinks")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMaxNumberOfLinks()) + if err != nil { + return 0, err + } + + switch m.Sampler.(type) { + + case *TraceConfig_ProbabilitySampler: + + if h, ok := interface{}(m.GetProbabilitySampler()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProbabilitySampler")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProbabilitySampler(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ProbabilitySampler")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *TraceConfig_ConstantSampler: + + if h, ok := interface{}(m.GetConstantSampler()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConstantSampler")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConstantSampler(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConstantSampler")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *TraceConfig_RateLimitingSampler: + + if h, ok := interface{}(m.GetRateLimitingSampler()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimitingSampler")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRateLimitingSampler(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RateLimitingSampler")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ProbabilitySampler) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.trace.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3.ProbabilitySampler")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SamplingProbability")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetSamplingProbability()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ConstantSampler) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.trace.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3.ConstantSampler")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Decision")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDecision()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimitingSampler) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.trace.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3.RateLimitingSampler")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Qps")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetQps()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *OpenCensusConfig_OcagentGrpcAddress) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.trace.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3.OpenCensusConfig_OcagentGrpcAddress")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TargetUri")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTargetUri())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("StatPrefix")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetStatPrefix())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opentelemetry.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opentelemetry.pb.clone.go new file mode 100644 index 000000000..d0c9654d6 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opentelemetry.pb.clone.go @@ -0,0 +1,100 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/trace/v3/opentelemetry.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *OpenTelemetryConfig) Clone() proto.Message { + var target *OpenTelemetryConfig + if m == nil { + return target + } + target = &OpenTelemetryConfig{} + + target.ServiceName = m.GetServiceName() + + if h, ok := interface{}(m.GetMaxCacheSize()).(clone.Cloner); ok { + target.MaxCacheSize = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxCacheSize = proto.Clone(m.GetMaxCacheSize()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + switch m.CollectorCluster.(type) { + + case *OpenTelemetryConfig_CollectorUpstreamRef: + + if h, ok := interface{}(m.GetCollectorUpstreamRef()).(clone.Cloner); ok { + target.CollectorCluster = &OpenTelemetryConfig_CollectorUpstreamRef{ + CollectorUpstreamRef: h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } else { + target.CollectorCluster = &OpenTelemetryConfig_CollectorUpstreamRef{ + CollectorUpstreamRef: proto.Clone(m.GetCollectorUpstreamRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } + + case *OpenTelemetryConfig_ClusterName: + + target.CollectorCluster = &OpenTelemetryConfig_ClusterName{ + ClusterName: m.GetClusterName(), + } + + } + + switch m.ServiceType.(type) { + + case *OpenTelemetryConfig_GrpcService: + + if h, ok := interface{}(m.GetGrpcService()).(clone.Cloner); ok { + target.ServiceType = &OpenTelemetryConfig_GrpcService{ + GrpcService: h.Clone().(*GrpcService), + } + } else { + target.ServiceType = &OpenTelemetryConfig_GrpcService{ + GrpcService: proto.Clone(m.GetGrpcService()).(*GrpcService), + } + } + + } + + return target +} + +// Clone function +func (m *GrpcService) Clone() proto.Message { + var target *GrpcService + if m == nil { + return target + } + target = &GrpcService{} + + target.Authority = m.GetAuthority() + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opentelemetry.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opentelemetry.pb.equal.go new file mode 100644 index 000000000..75f3d3763 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opentelemetry.pb.equal.go @@ -0,0 +1,149 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/trace/v3/opentelemetry.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *OpenTelemetryConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*OpenTelemetryConfig) + if !ok { + that2, ok := that.(OpenTelemetryConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetServiceName(), target.GetServiceName()) != 0 { + return false + } + + if h, ok := interface{}(m.GetMaxCacheSize()).(equality.Equalizer); ok { + if !h.Equal(target.GetMaxCacheSize()) { + return false + } + } else { + if !proto.Equal(m.GetMaxCacheSize(), target.GetMaxCacheSize()) { + return false + } + } + + switch m.CollectorCluster.(type) { + + case *OpenTelemetryConfig_CollectorUpstreamRef: + if _, ok := target.CollectorCluster.(*OpenTelemetryConfig_CollectorUpstreamRef); !ok { + return false + } + + if h, ok := interface{}(m.GetCollectorUpstreamRef()).(equality.Equalizer); ok { + if !h.Equal(target.GetCollectorUpstreamRef()) { + return false + } + } else { + if !proto.Equal(m.GetCollectorUpstreamRef(), target.GetCollectorUpstreamRef()) { + return false + } + } + + case *OpenTelemetryConfig_ClusterName: + if _, ok := target.CollectorCluster.(*OpenTelemetryConfig_ClusterName); !ok { + return false + } + + if strings.Compare(m.GetClusterName(), target.GetClusterName()) != 0 { + return false + } + + default: + // m is nil but target is not nil + if m.CollectorCluster != target.CollectorCluster { + return false + } + } + + switch m.ServiceType.(type) { + + case *OpenTelemetryConfig_GrpcService: + if _, ok := target.ServiceType.(*OpenTelemetryConfig_GrpcService); !ok { + return false + } + + if h, ok := interface{}(m.GetGrpcService()).(equality.Equalizer); ok { + if !h.Equal(target.GetGrpcService()) { + return false + } + } else { + if !proto.Equal(m.GetGrpcService(), target.GetGrpcService()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.ServiceType != target.ServiceType { + return false + } + } + + return true +} + +// Equal function +func (m *GrpcService) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*GrpcService) + if !ok { + that2, ok := that.(GrpcService) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetAuthority(), target.GetAuthority()) != 0 { + return false + } + + return true +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opentelemetry.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opentelemetry.pb.go new file mode 100644 index 000000000..a39e390ae --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opentelemetry.pb.go @@ -0,0 +1,353 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/trace/v3/opentelemetry.proto + +package v3 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/envoyproxy/protoc-gen-validate/validate" + _ "github.com/solo-io/protoc-gen-ext/extproto" + _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" + core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Configuration for the OpenTelemetry tracer. +// [#extension: envoy.tracers.opentelemetry] +type OpenTelemetryConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The cluster to use for submitting traces to the OpenTelemetry agent. + // + // Types that are valid to be assigned to CollectorCluster: + // + // *OpenTelemetryConfig_CollectorUpstreamRef + // *OpenTelemetryConfig_ClusterName + CollectorCluster isOpenTelemetryConfig_CollectorCluster `protobuf_oneof:"collector_cluster"` + // Optional. If set, the service name will be used as the service name in the trace. + // If this is not set it will be automatically set to the name of the + // listener + the namespace of the Gateway object + ServiceName string `protobuf:"bytes,3,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` + // Optional. Current only gRPC is supported, but are intentionally using a oneof + // to allow for future support of HTTP. This structure matches Envoy's. + // + // Types that are valid to be assigned to ServiceType: + // + // *OpenTelemetryConfig_GrpcService + ServiceType isOpenTelemetryConfig_ServiceType `protobuf_oneof:"service_type"` + // Optional. The maximum number of spans that can be cached. + // If this buffer is exceeded, Envoy may begin dropping traces before they are sent to the collector. + // https://opentelemetry.io/docs/specs/otel/performance/ + // Users should tune the setting based on their environment's expected telemetry volume and + // decide their preferences on resource usage vs. data loss. + // If not specified, the default is 1024. + MaxCacheSize *wrapperspb.UInt32Value `protobuf:"bytes,5,opt,name=max_cache_size,json=maxCacheSize,proto3" json:"max_cache_size,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OpenTelemetryConfig) Reset() { + *x = OpenTelemetryConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OpenTelemetryConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OpenTelemetryConfig) ProtoMessage() {} + +func (x *OpenTelemetryConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OpenTelemetryConfig.ProtoReflect.Descriptor instead. +func (*OpenTelemetryConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_rawDescGZIP(), []int{0} +} + +func (x *OpenTelemetryConfig) GetCollectorCluster() isOpenTelemetryConfig_CollectorCluster { + if x != nil { + return x.CollectorCluster + } + return nil +} + +func (x *OpenTelemetryConfig) GetCollectorUpstreamRef() *core.ResourceRef { + if x != nil { + if x, ok := x.CollectorCluster.(*OpenTelemetryConfig_CollectorUpstreamRef); ok { + return x.CollectorUpstreamRef + } + } + return nil +} + +func (x *OpenTelemetryConfig) GetClusterName() string { + if x != nil { + if x, ok := x.CollectorCluster.(*OpenTelemetryConfig_ClusterName); ok { + return x.ClusterName + } + } + return "" +} + +func (x *OpenTelemetryConfig) GetServiceName() string { + if x != nil { + return x.ServiceName + } + return "" +} + +func (x *OpenTelemetryConfig) GetServiceType() isOpenTelemetryConfig_ServiceType { + if x != nil { + return x.ServiceType + } + return nil +} + +func (x *OpenTelemetryConfig) GetGrpcService() *GrpcService { + if x != nil { + if x, ok := x.ServiceType.(*OpenTelemetryConfig_GrpcService); ok { + return x.GrpcService + } + } + return nil +} + +func (x *OpenTelemetryConfig) GetMaxCacheSize() *wrapperspb.UInt32Value { + if x != nil { + return x.MaxCacheSize + } + return nil +} + +type isOpenTelemetryConfig_CollectorCluster interface { + isOpenTelemetryConfig_CollectorCluster() +} + +type OpenTelemetryConfig_CollectorUpstreamRef struct { + // The upstream to use for submitting traces to the OpenTelemetry agent. + CollectorUpstreamRef *core.ResourceRef `protobuf:"bytes,1,opt,name=collector_upstream_ref,json=collectorUpstreamRef,proto3,oneof"` +} + +type OpenTelemetryConfig_ClusterName struct { + // The name of the Envoy cluster to use for submitting traces to the + // OpenTelemetry agent + ClusterName string `protobuf:"bytes,2,opt,name=cluster_name,json=clusterName,proto3,oneof"` +} + +func (*OpenTelemetryConfig_CollectorUpstreamRef) isOpenTelemetryConfig_CollectorCluster() {} + +func (*OpenTelemetryConfig_ClusterName) isOpenTelemetryConfig_CollectorCluster() {} + +type isOpenTelemetryConfig_ServiceType interface { + isOpenTelemetryConfig_ServiceType() +} + +type OpenTelemetryConfig_GrpcService struct { + // Optional gRPC transport options + GrpcService *GrpcService `protobuf:"bytes,4,opt,name=grpc_service,json=grpcService,proto3,oneof"` +} + +func (*OpenTelemetryConfig_GrpcService) isOpenTelemetryConfig_ServiceType() {} + +type GrpcService struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Set the authority header when calling the gRPC service. + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GrpcService) Reset() { + *x = GrpcService{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GrpcService) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GrpcService) ProtoMessage() {} + +func (x *GrpcService) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GrpcService.ProtoReflect.Descriptor instead. +func (*GrpcService) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_rawDescGZIP(), []int{1} +} + +func (x *GrpcService) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_rawDesc = string([]byte{ + 0x0a, 0x5d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x6f, 0x70, 0x65, 0x6e, + 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x1d, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x76, 0x33, 0x1a, 0x1e, + 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, + 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x75, + 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, + 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, + 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9d, 0x03, 0x0a, 0x13, + 0x4f, 0x70, 0x65, 0x6e, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x51, 0x0a, 0x16, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x48, 0x00, + 0x52, 0x14, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x12, 0x23, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4f, + 0x0a, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, + 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x48, 0x01, 0x52, 0x0b, 0x67, 0x72, 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x42, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x43, 0x61, 0x63, 0x68, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x3a, 0x31, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x2b, 0x0a, 0x29, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, + 0x76, 0x32, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x13, 0x0a, 0x11, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x42, 0x0e, 0x0a, 0x0c, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x2b, 0x0a, 0x0b, 0x47, + 0x72, 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0xdf, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, + 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x82, 0x8a, 0xd7, 0xad, 0x04, 0x30, 0x12, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x74, 0x72, 0x61, 0x63, 0x65, 0x72, 0x73, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x6c, 0x65, + 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x34, 0x61, 0x6c, 0x70, 0x68, 0x61, 0xe2, 0xb5, 0xdf, + 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x2b, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, + 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, + 0x76, 0x33, 0x42, 0x12, 0x4f, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, + 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_goTypes = []any{ + (*OpenTelemetryConfig)(nil), // 0: solo.io.envoy.config.trace.v3.OpenTelemetryConfig + (*GrpcService)(nil), // 1: solo.io.envoy.config.trace.v3.GrpcService + (*core.ResourceRef)(nil), // 2: core.solo.io.ResourceRef + (*wrapperspb.UInt32Value)(nil), // 3: google.protobuf.UInt32Value +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_depIdxs = []int32{ + 2, // 0: solo.io.envoy.config.trace.v3.OpenTelemetryConfig.collector_upstream_ref:type_name -> core.solo.io.ResourceRef + 1, // 1: solo.io.envoy.config.trace.v3.OpenTelemetryConfig.grpc_service:type_name -> solo.io.envoy.config.trace.v3.GrpcService + 3, // 2: solo.io.envoy.config.trace.v3.OpenTelemetryConfig.max_cache_size:type_name -> google.protobuf.UInt32Value + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_msgTypes[0].OneofWrappers = []any{ + (*OpenTelemetryConfig_CollectorUpstreamRef)(nil), + (*OpenTelemetryConfig_ClusterName)(nil), + (*OpenTelemetryConfig_GrpcService)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_rawDesc)), + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_opentelemetry_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opentelemetry.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opentelemetry.pb.hash.go new file mode 100644 index 000000000..442c94465 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opentelemetry.pb.hash.go @@ -0,0 +1,152 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/trace/v3/opentelemetry.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *OpenTelemetryConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.trace.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3.OpenTelemetryConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetServiceName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxCacheSize()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxCacheSize")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxCacheSize(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxCacheSize")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.CollectorCluster.(type) { + + case *OpenTelemetryConfig_CollectorUpstreamRef: + + if h, ok := interface{}(m.GetCollectorUpstreamRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CollectorUpstreamRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCollectorUpstreamRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CollectorUpstreamRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *OpenTelemetryConfig_ClusterName: + + if _, err = hasher.Write([]byte(m.GetClusterName())); err != nil { + return 0, err + } + + } + + switch m.ServiceType.(type) { + + case *OpenTelemetryConfig_GrpcService: + + if h, ok := interface{}(m.GetGrpcService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcService(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *GrpcService) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.trace.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3.GrpcService")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetAuthority())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opentelemetry.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opentelemetry.pb.uniquehash.go new file mode 100644 index 000000000..c5d6ed628 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/opentelemetry.pb.uniquehash.go @@ -0,0 +1,161 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/trace/v3/opentelemetry.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *OpenTelemetryConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.trace.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3.OpenTelemetryConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ServiceName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetServiceName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxCacheSize()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxCacheSize")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxCacheSize(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxCacheSize")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.CollectorCluster.(type) { + + case *OpenTelemetryConfig_CollectorUpstreamRef: + + if h, ok := interface{}(m.GetCollectorUpstreamRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CollectorUpstreamRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCollectorUpstreamRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CollectorUpstreamRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *OpenTelemetryConfig_ClusterName: + + if _, err = hasher.Write([]byte("ClusterName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClusterName())); err != nil { + return 0, err + } + + } + + switch m.ServiceType.(type) { + + case *OpenTelemetryConfig_GrpcService: + + if h, ok := interface{}(m.GetGrpcService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcService(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcService) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.trace.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3.GrpcService")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Authority")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAuthority())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/zipkin.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/zipkin.pb.clone.go new file mode 100644 index 000000000..6f0dd793a --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/zipkin.pb.clone.go @@ -0,0 +1,79 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/trace/v3/zipkin.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *ZipkinConfig) Clone() proto.Message { + var target *ZipkinConfig + if m == nil { + return target + } + target = &ZipkinConfig{} + + target.CollectorEndpoint = m.GetCollectorEndpoint() + + if h, ok := interface{}(m.GetTraceId_128Bit()).(clone.Cloner); ok { + target.TraceId_128Bit = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.TraceId_128Bit = proto.Clone(m.GetTraceId_128Bit()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetSharedSpanContext()).(clone.Cloner); ok { + target.SharedSpanContext = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.SharedSpanContext = proto.Clone(m.GetSharedSpanContext()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + target.CollectorEndpointVersion = m.GetCollectorEndpointVersion() + + switch m.CollectorCluster.(type) { + + case *ZipkinConfig_CollectorUpstreamRef: + + if h, ok := interface{}(m.GetCollectorUpstreamRef()).(clone.Cloner); ok { + target.CollectorCluster = &ZipkinConfig_CollectorUpstreamRef{ + CollectorUpstreamRef: h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } else { + target.CollectorCluster = &ZipkinConfig_CollectorUpstreamRef{ + CollectorUpstreamRef: proto.Clone(m.GetCollectorUpstreamRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } + + case *ZipkinConfig_ClusterName: + + target.CollectorCluster = &ZipkinConfig_ClusterName{ + ClusterName: m.GetClusterName(), + } + + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/zipkin.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/zipkin.pb.equal.go index e9ef534bf..f7d962cd1 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/zipkin.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/zipkin.pb.equal.go @@ -50,8 +50,14 @@ func (m *ZipkinConfig) Equal(that interface{}) bool { return false } - if m.GetTraceId_128Bit() != target.GetTraceId_128Bit() { - return false + if h, ok := interface{}(m.GetTraceId_128Bit()).(equality.Equalizer); ok { + if !h.Equal(target.GetTraceId_128Bit()) { + return false + } + } else { + if !proto.Equal(m.GetTraceId_128Bit(), target.GetTraceId_128Bit()) { + return false + } } if h, ok := interface{}(m.GetSharedSpanContext()).(equality.Equalizer); ok { @@ -71,6 +77,9 @@ func (m *ZipkinConfig) Equal(that interface{}) bool { switch m.CollectorCluster.(type) { case *ZipkinConfig_CollectorUpstreamRef: + if _, ok := target.CollectorCluster.(*ZipkinConfig_CollectorUpstreamRef); !ok { + return false + } if h, ok := interface{}(m.GetCollectorUpstreamRef()).(equality.Equalizer); ok { if !h.Equal(target.GetCollectorUpstreamRef()) { @@ -83,11 +92,19 @@ func (m *ZipkinConfig) Equal(that interface{}) bool { } case *ZipkinConfig_ClusterName: + if _, ok := target.CollectorCluster.(*ZipkinConfig_ClusterName); !ok { + return false + } if strings.Compare(m.GetClusterName(), target.GetClusterName()) != 0 { return false } + default: + // m is nil but target is not nil + if m.CollectorCluster != target.CollectorCluster { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/zipkin.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/zipkin.pb.go index aaaebbc06..cdb1c1936 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/zipkin.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/zipkin.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/trace/v3/zipkin.proto @@ -9,16 +9,16 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/annotations" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -28,10 +28,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Available Zipkin collector endpoint versions. type ZipkinConfig_CollectorEndpointVersion int32 @@ -44,7 +40,7 @@ const ( // user upgrading Envoy with this change. Furthermore, we also immediately deprecate this field, // since in Zipkin realm this v1 version is considered to be not preferable anymore.] // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/trace/v3/zipkin.proto. ZipkinConfig_DEPRECATED_AND_UNAVAILABLE_DO_NOT_USE ZipkinConfig_CollectorEndpointVersion = 0 // Zipkin API v2, JSON over HTTP. ZipkinConfig_HTTP_JSON ZipkinConfig_CollectorEndpointVersion = 1 @@ -97,13 +93,11 @@ func (ZipkinConfig_CollectorEndpointVersion) EnumDescriptor() ([]byte, []int) { // [#extension: envoy.tracers.zipkin] // [#next-free-field: 6] type ZipkinConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The cluster that hosts the Zipkin collectors. // - // Types that are assignable to CollectorCluster: + // Types that are valid to be assigned to CollectorCluster: + // // *ZipkinConfig_CollectorUpstreamRef // *ZipkinConfig_ClusterName CollectorCluster isZipkinConfig_CollectorCluster `protobuf_oneof:"collector_cluster"` @@ -113,22 +107,22 @@ type ZipkinConfig struct { CollectorEndpoint string `protobuf:"bytes,2,opt,name=collector_endpoint,json=collectorEndpoint,proto3" json:"collector_endpoint,omitempty"` // Determines whether a 128bit trace id will be used when creating a new // trace instance. The default value is false, which will result in a 64 bit trace id being used. - TraceId_128Bit bool `protobuf:"varint,3,opt,name=trace_id_128bit,json=traceId128bit,proto3" json:"trace_id_128bit,omitempty"` + TraceId_128Bit *wrapperspb.BoolValue `protobuf:"bytes,3,opt,name=trace_id_128bit,json=traceId128bit,proto3" json:"trace_id_128bit,omitempty"` // Determines whether client and server spans will share the same span context. // The default value is true. - SharedSpanContext *wrappers.BoolValue `protobuf:"bytes,4,opt,name=shared_span_context,json=sharedSpanContext,proto3" json:"shared_span_context,omitempty"` - // Determines the selected collector endpoint version. By default, the ``HTTP_JSON_V1`` will be + SharedSpanContext *wrapperspb.BoolValue `protobuf:"bytes,4,opt,name=shared_span_context,json=sharedSpanContext,proto3" json:"shared_span_context,omitempty"` + // Determines the selected collector endpoint version. By default, the `HTTP_JSON_V1` will be // used. CollectorEndpointVersion ZipkinConfig_CollectorEndpointVersion `protobuf:"varint,5,opt,name=collector_endpoint_version,json=collectorEndpointVersion,proto3,enum=solo.io.envoy.config.trace.v3.ZipkinConfig_CollectorEndpointVersion" json:"collector_endpoint_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ZipkinConfig) Reset() { *x = ZipkinConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ZipkinConfig) String() string { @@ -139,7 +133,7 @@ func (*ZipkinConfig) ProtoMessage() {} func (x *ZipkinConfig) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -154,23 +148,27 @@ func (*ZipkinConfig) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_rawDescGZIP(), []int{0} } -func (m *ZipkinConfig) GetCollectorCluster() isZipkinConfig_CollectorCluster { - if m != nil { - return m.CollectorCluster +func (x *ZipkinConfig) GetCollectorCluster() isZipkinConfig_CollectorCluster { + if x != nil { + return x.CollectorCluster } return nil } func (x *ZipkinConfig) GetCollectorUpstreamRef() *core.ResourceRef { - if x, ok := x.GetCollectorCluster().(*ZipkinConfig_CollectorUpstreamRef); ok { - return x.CollectorUpstreamRef + if x != nil { + if x, ok := x.CollectorCluster.(*ZipkinConfig_CollectorUpstreamRef); ok { + return x.CollectorUpstreamRef + } } return nil } func (x *ZipkinConfig) GetClusterName() string { - if x, ok := x.GetCollectorCluster().(*ZipkinConfig_ClusterName); ok { - return x.ClusterName + if x != nil { + if x, ok := x.CollectorCluster.(*ZipkinConfig_ClusterName); ok { + return x.ClusterName + } } return "" } @@ -182,14 +180,14 @@ func (x *ZipkinConfig) GetCollectorEndpoint() string { return "" } -func (x *ZipkinConfig) GetTraceId_128Bit() bool { +func (x *ZipkinConfig) GetTraceId_128Bit() *wrapperspb.BoolValue { if x != nil { return x.TraceId_128Bit } - return false + return nil } -func (x *ZipkinConfig) GetSharedSpanContext() *wrappers.BoolValue { +func (x *ZipkinConfig) GetSharedSpanContext() *wrapperspb.BoolValue { if x != nil { return x.SharedSpanContext } @@ -225,7 +223,7 @@ func (*ZipkinConfig_ClusterName) isZipkinConfig_CollectorCluster() {} var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_rawDesc = string([]byte{ 0x0a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -249,7 +247,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_ 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, - 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe8, 0x04, 0x0a, 0x0c, 0x5a, 0x69, + 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x84, 0x05, 0x0a, 0x0c, 0x5a, 0x69, 0x70, 0x6b, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x51, 0x0a, 0x16, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, @@ -261,78 +259,81 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_ 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x12, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x11, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x72, + 0x6f, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x31, 0x32, 0x38, 0x62, 0x69, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x64, 0x31, 0x32, 0x38, 0x62, - 0x69, 0x74, 0x12, 0x4a, 0x0a, 0x13, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x70, 0x61, - 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x73, 0x68, 0x61, - 0x72, 0x65, 0x64, 0x53, 0x70, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x82, - 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x65, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x44, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x0d, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x64, 0x31, 0x32, 0x38, 0x62, 0x69, 0x74, 0x12, 0x4a, + 0x0a, 0x13, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x70, 0x61, 0x6e, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, + 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x53, + 0x70, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x82, 0x01, 0x0a, 0x1a, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x44, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x76, 0x33, 0x2e, + 0x5a, 0x69, 0x70, 0x6b, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x18, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, + 0x6e, 0x0a, 0x18, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x25, 0x44, + 0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x55, 0x4e, + 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x4f, 0x5f, 0x4e, 0x4f, 0x54, + 0x5f, 0x55, 0x53, 0x45, 0x10, 0x00, 0x1a, 0x08, 0xa0, 0x8f, 0xa3, 0xa8, 0x05, 0x01, 0x08, 0x01, + 0x12, 0x0d, 0x0a, 0x09, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x01, 0x12, + 0x0e, 0x0a, 0x0a, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x10, 0x02, 0x3a, + 0x2a, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x24, 0x0a, 0x22, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x5a, + 0x69, 0x70, 0x6b, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x13, 0x0a, 0x11, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x42, 0xd1, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x82, + 0x8a, 0xd7, 0xad, 0x04, 0x29, 0x12, 0x27, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x72, 0x73, 0x2e, + 0x7a, 0x69, 0x70, 0x6b, 0x69, 0x6e, 0x2e, 0x76, 0x34, 0x61, 0x6c, 0x70, 0x68, 0x61, 0xe2, 0xb5, + 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x2b, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, - 0x2e, 0x76, 0x33, 0x2e, 0x5a, 0x69, 0x70, 0x6b, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x18, 0x63, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x22, 0x6e, 0x0a, 0x18, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x33, 0x0a, 0x25, 0x44, 0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x4e, - 0x44, 0x5f, 0x55, 0x4e, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x4f, - 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x10, 0x00, 0x1a, 0x08, 0x08, 0x01, 0xa0, 0x8f, - 0xa3, 0xa8, 0x05, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x4a, 0x53, 0x4f, - 0x4e, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x54, - 0x4f, 0x10, 0x02, 0x3a, 0x2a, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x24, 0x0a, 0x22, 0x65, 0x6e, 0x76, - 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, - 0x76, 0x32, 0x2e, 0x5a, 0x69, 0x70, 0x6b, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, - 0x13, 0x0a, 0x11, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x42, 0xcd, 0x01, 0x0a, 0x2b, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, - 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, - 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, - 0x65, 0x2e, 0x76, 0x33, 0x42, 0x0b, 0x5a, 0x69, 0x70, 0x6b, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x50, 0x01, 0x5a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, - 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, - 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x74, 0x72, 0x61, - 0x63, 0x65, 0x2f, 0x76, 0x33, 0x82, 0x8a, 0xd7, 0xad, 0x04, 0x29, 0x12, 0x27, 0x65, 0x6e, 0x76, - 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x72, - 0x61, 0x63, 0x65, 0x72, 0x73, 0x2e, 0x7a, 0x69, 0x70, 0x6b, 0x69, 0x6e, 0x2e, 0x76, 0x34, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0xb8, 0xf5, 0x04, 0x01, - 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x2e, 0x76, 0x33, 0x42, 0x0b, 0x5a, 0x69, 0x70, 0x6b, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x74, 0x72, 0x61, 0x63, + 0x65, 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_goTypes = []any{ (ZipkinConfig_CollectorEndpointVersion)(0), // 0: solo.io.envoy.config.trace.v3.ZipkinConfig.CollectorEndpointVersion (*ZipkinConfig)(nil), // 1: solo.io.envoy.config.trace.v3.ZipkinConfig (*core.ResourceRef)(nil), // 2: core.solo.io.ResourceRef - (*wrappers.BoolValue)(nil), // 3: google.protobuf.BoolValue + (*wrapperspb.BoolValue)(nil), // 3: google.protobuf.BoolValue } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_depIdxs = []int32{ 2, // 0: solo.io.envoy.config.trace.v3.ZipkinConfig.collector_upstream_ref:type_name -> core.solo.io.ResourceRef - 3, // 1: solo.io.envoy.config.trace.v3.ZipkinConfig.shared_span_context:type_name -> google.protobuf.BoolValue - 0, // 2: solo.io.envoy.config.trace.v3.ZipkinConfig.collector_endpoint_version:type_name -> solo.io.envoy.config.trace.v3.ZipkinConfig.CollectorEndpointVersion - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name + 3, // 1: solo.io.envoy.config.trace.v3.ZipkinConfig.trace_id_128bit:type_name -> google.protobuf.BoolValue + 3, // 2: solo.io.envoy.config.trace.v3.ZipkinConfig.shared_span_context:type_name -> google.protobuf.BoolValue + 0, // 3: solo.io.envoy.config.trace.v3.ZipkinConfig.collector_endpoint_version:type_name -> solo.io.envoy.config.trace.v3.ZipkinConfig.CollectorEndpointVersion + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name } func init() { @@ -342,21 +343,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ZipkinConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_msgTypes[0].OneofWrappers = []any{ (*ZipkinConfig_CollectorUpstreamRef)(nil), (*ZipkinConfig_ClusterName)(nil), } @@ -364,7 +351,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_rawDesc)), NumEnums: 1, NumMessages: 1, NumExtensions: 0, @@ -376,7 +363,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_trace_v3_zipkin_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/zipkin.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/zipkin.pb.hash.go index 70b05a3e5..c0388b32d 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/zipkin.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/zipkin.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ZipkinConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -42,20 +46,41 @@ func (m *ZipkinConfig) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } - err = binary.Write(hasher, binary.LittleEndian, m.GetTraceId_128Bit()) - if err != nil { - return 0, err + if h, ok := interface{}(m.GetTraceId_128Bit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TraceId_128Bit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTraceId_128Bit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TraceId_128Bit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } if h, ok := interface{}(m.GetSharedSpanContext()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SharedSpanContext")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSharedSpanContext(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSharedSpanContext(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SharedSpanContext")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -71,14 +96,20 @@ func (m *ZipkinConfig) Hash(hasher hash.Hash64) (uint64, error) { case *ZipkinConfig_CollectorUpstreamRef: if h, ok := interface{}(m.GetCollectorUpstreamRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CollectorUpstreamRef")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCollectorUpstreamRef(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCollectorUpstreamRef(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("CollectorUpstreamRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/zipkin.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/zipkin.pb.uniquehash.go new file mode 100644 index 000000000..07c6dcb48 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/zipkin.pb.uniquehash.go @@ -0,0 +1,137 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/trace/v3/zipkin.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ZipkinConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.config.trace.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3.ZipkinConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CollectorEndpoint")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCollectorEndpoint())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTraceId_128Bit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TraceId_128Bit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTraceId_128Bit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TraceId_128Bit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetSharedSpanContext()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SharedSpanContext")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSharedSpanContext(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SharedSpanContext")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("CollectorEndpointVersion")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetCollectorEndpointVersion()) + if err != nil { + return 0, err + } + + switch m.CollectorCluster.(type) { + + case *ZipkinConfig_CollectorUpstreamRef: + + if h, ok := interface{}(m.GetCollectorUpstreamRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CollectorUpstreamRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCollectorUpstreamRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CollectorUpstreamRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ZipkinConfig_ClusterName: + + if _, err = hasher.Write([]byte("ClusterName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClusterName())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/advanced_http/advanced_http.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/advanced_http/advanced_http.pb.go index 692adc181..5e6e02a47 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/advanced_http/advanced_http.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/advanced_http/advanced_http.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/advanced_http/advanced_http.proto @@ -9,14 +9,14 @@ package advanced_http import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - empty "github.com/golang/protobuf/ptypes/empty" v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" ) const ( @@ -26,10 +26,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type HealthCheckResult int32 const ( @@ -80,33 +76,30 @@ func (HealthCheckResult) EnumDescriptor() ([]byte, []int) { } // Same as envoy's default HTTP health checker, but with some additions: -// - allows a custom path and method on the health check request per endpoint. -// The http path to use can be overridden using endpoint metadata. The endpoint-specific -// path should be in the "io.solo.health_checkers.advanced_http" namespace, under a string -// value named "path". The same can be done for the method by setting a string value -// named "method". -// - allows for health check responses to leverage the response body rather than just -// the http status code returned. The response body can be parsed as json and complex -// assertions can be made on fields parsed from the json or plaintext response body. +// - allows a custom path and method on the health check request per endpoint. +// The http path to use can be overridden using endpoint metadata. The endpoint-specific +// path should be in the "io.solo.health_checkers.advanced_http" namespace, under a string +// value named "path". The same can be done for the method by setting a string value +// named "method". +// - allows for health check responses to leverage the response body rather than just +// the http status code returned. The response body can be parsed as json and complex +// assertions can be made on fields parsed from the json or plaintext response body. type AdvancedHttp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Http health check. HttpHealthCheck *v3.HealthCheck_HttpHealthCheck `protobuf:"bytes,1,opt,name=http_health_check,json=httpHealthCheck,proto3" json:"http_health_check,omitempty"` // If defined, the response health check rules take precedence over the http status // settings defined in `http_health_check` ResponseAssertions *ResponseAssertions `protobuf:"bytes,2,opt,name=response_assertions,json=responseAssertions,proto3" json:"response_assertions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AdvancedHttp) Reset() { *x = AdvancedHttp{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AdvancedHttp) String() string { @@ -117,7 +110,7 @@ func (*AdvancedHttp) ProtoMessage() {} func (x *AdvancedHttp) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -147,10 +140,7 @@ func (x *AdvancedHttp) GetResponseAssertions() *ResponseAssertions { } type ResponseAssertions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // A bunch of match rules, the first match wins out and short-circuits ResponseMatchers []*ResponseMatcher `protobuf:"bytes,1,rep,name=response_matchers,json=responseMatchers,proto3" json:"response_matchers,omitempty"` // The default health response if none of the response health checks were matches. @@ -163,15 +153,15 @@ type ResponseAssertions struct { // As such, we offload this defaulting behavior to the control plane. // For more reading, see https://github.com/protocolbuffers/protobuf/issues/1606#issuecomment-618687169 NoMatchHealth HealthCheckResult `protobuf:"varint,2,opt,name=no_match_health,json=noMatchHealth,proto3,enum=envoy.config.health_checker.advanced_http.v2.HealthCheckResult" json:"no_match_health,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResponseAssertions) Reset() { *x = ResponseAssertions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ResponseAssertions) String() string { @@ -182,7 +172,7 @@ func (*ResponseAssertions) ProtoMessage() {} func (x *ResponseAssertions) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -213,24 +203,21 @@ func (x *ResponseAssertions) GetNoMatchHealth() HealthCheckResult { // Defines a transformation template. type ResponseMatcher struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Defines the parameters to determine a single match ResponseMatch *ResponseMatch `protobuf:"bytes,1,opt,name=response_match,json=responseMatch,proto3" json:"response_match,omitempty"` // The health response if this response_match is a match. // If omitted, defaults to healthy - MatchHealth HealthCheckResult `protobuf:"varint,2,opt,name=match_health,json=matchHealth,proto3,enum=envoy.config.health_checker.advanced_http.v2.HealthCheckResult" json:"match_health,omitempty"` + MatchHealth HealthCheckResult `protobuf:"varint,2,opt,name=match_health,json=matchHealth,proto3,enum=envoy.config.health_checker.advanced_http.v2.HealthCheckResult" json:"match_health,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResponseMatcher) Reset() { *x = ResponseMatcher{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ResponseMatcher) String() string { @@ -241,7 +228,7 @@ func (*ResponseMatcher) ProtoMessage() {} func (x *ResponseMatcher) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -272,10 +259,7 @@ func (x *ResponseMatcher) GetMatchHealth() HealthCheckResult { // ResponseMatches can be used to extract information from the request/response. type ResponseMatch struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Configuration to get the json key. // Treats the body as raw text if omitted. JsonKey *JsonKey `protobuf:"bytes,1,opt,name=json_key,json=jsonKey,proto3" json:"json_key,omitempty"` @@ -284,23 +268,24 @@ type ResponseMatch struct { IgnoreErrorOnParse bool `protobuf:"varint,2,opt,name=ignore_error_on_parse,json=ignoreErrorOnParse,proto3" json:"ignore_error_on_parse,omitempty"` // The source of the extraction // - // Types that are assignable to Source: + // Types that are valid to be assigned to Source: + // // *ResponseMatch_Header // *ResponseMatch_Body Source isResponseMatch_Source `protobuf_oneof:"source"` // Only strings matching this regular expression will be considered a match. // The most simple value for this field is '.*', which matches the // whole source. The field is required. - Regex string `protobuf:"bytes,5,opt,name=regex,proto3" json:"regex,omitempty"` + Regex string `protobuf:"bytes,5,opt,name=regex,proto3" json:"regex,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResponseMatch) Reset() { *x = ResponseMatch{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ResponseMatch) String() string { @@ -311,7 +296,7 @@ func (*ResponseMatch) ProtoMessage() {} func (x *ResponseMatch) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -340,23 +325,27 @@ func (x *ResponseMatch) GetIgnoreErrorOnParse() bool { return false } -func (m *ResponseMatch) GetSource() isResponseMatch_Source { - if m != nil { - return m.Source +func (x *ResponseMatch) GetSource() isResponseMatch_Source { + if x != nil { + return x.Source } return nil } func (x *ResponseMatch) GetHeader() string { - if x, ok := x.GetSource().(*ResponseMatch_Header); ok { - return x.Header + if x != nil { + if x, ok := x.Source.(*ResponseMatch_Header); ok { + return x.Header + } } return "" } -func (x *ResponseMatch) GetBody() *empty.Empty { - if x, ok := x.GetSource().(*ResponseMatch_Body); ok { - return x.Body +func (x *ResponseMatch) GetBody() *emptypb.Empty { + if x != nil { + if x, ok := x.Source.(*ResponseMatch_Body); ok { + return x.Body + } } return nil } @@ -379,7 +368,7 @@ type ResponseMatch_Header struct { type ResponseMatch_Body struct { // Extract information from the request/response body - Body *empty.Empty `protobuf:"bytes,4,opt,name=body,proto3,oneof"` + Body *emptypb.Empty `protobuf:"bytes,4,opt,name=body,proto3,oneof"` } func (*ResponseMatch_Header) isResponseMatch_Source() {} @@ -387,21 +376,18 @@ func (*ResponseMatch_Header) isResponseMatch_Source() {} func (*ResponseMatch_Body) isResponseMatch_Source() {} type JsonKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The path to retrieve the Value. - Path []*JsonKey_PathSegment `protobuf:"bytes,2,rep,name=path,proto3" json:"path,omitempty"` + Path []*JsonKey_PathSegment `protobuf:"bytes,2,rep,name=path,proto3" json:"path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JsonKey) Reset() { *x = JsonKey{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JsonKey) String() string { @@ -412,7 +398,7 @@ func (*JsonKey) ProtoMessage() {} func (x *JsonKey) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -436,22 +422,20 @@ func (x *JsonKey) GetPath() []*JsonKey_PathSegment { // Specifies the segment in a path to retrieve value. type JsonKey_PathSegment struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Segment: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Segment: + // // *JsonKey_PathSegment_Key - Segment isJsonKey_PathSegment_Segment `protobuf_oneof:"segment"` + Segment isJsonKey_PathSegment_Segment `protobuf_oneof:"segment"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JsonKey_PathSegment) Reset() { *x = JsonKey_PathSegment{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JsonKey_PathSegment) String() string { @@ -462,7 +446,7 @@ func (*JsonKey_PathSegment) ProtoMessage() {} func (x *JsonKey_PathSegment) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -477,16 +461,18 @@ func (*JsonKey_PathSegment) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_rawDescGZIP(), []int{4, 0} } -func (m *JsonKey_PathSegment) GetSegment() isJsonKey_PathSegment_Segment { - if m != nil { - return m.Segment +func (x *JsonKey_PathSegment) GetSegment() isJsonKey_PathSegment_Segment { + if x != nil { + return x.Segment } return nil } func (x *JsonKey_PathSegment) GetKey() string { - if x, ok := x.GetSegment().(*JsonKey_PathSegment_Key); ok { - return x.Key + if x != nil { + if x, ok := x.Segment.(*JsonKey_PathSegment_Key); ok { + return x.Key + } } return "" } @@ -505,7 +491,7 @@ func (*JsonKey_PathSegment_Key) isJsonKey_PathSegment_Segment() {} var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_rawDesc = string([]byte{ 0x0a, 0x66, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -612,23 +598,23 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_ad 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes = make([]protoimpl.MessageInfo, 6) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_goTypes = []any{ (HealthCheckResult)(0), // 0: envoy.config.health_checker.advanced_http.v2.HealthCheckResult (*AdvancedHttp)(nil), // 1: envoy.config.health_checker.advanced_http.v2.AdvancedHttp (*ResponseAssertions)(nil), // 2: envoy.config.health_checker.advanced_http.v2.ResponseAssertions @@ -637,7 +623,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_ad (*JsonKey)(nil), // 5: envoy.config.health_checker.advanced_http.v2.JsonKey (*JsonKey_PathSegment)(nil), // 6: envoy.config.health_checker.advanced_http.v2.JsonKey.PathSegment (*v3.HealthCheck_HttpHealthCheck)(nil), // 7: solo.io.envoy.config.core.v3.HealthCheck.HttpHealthCheck - (*empty.Empty)(nil), // 8: google.protobuf.Empty + (*emptypb.Empty)(nil), // 8: google.protobuf.Empty } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_depIdxs = []int32{ 7, // 0: envoy.config.health_checker.advanced_http.v2.AdvancedHttp.http_health_check:type_name -> solo.io.envoy.config.core.v3.HealthCheck.HttpHealthCheck @@ -663,92 +649,18 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_a if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AdvancedHttp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResponseAssertions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResponseMatcher); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResponseMatch); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JsonKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JsonKey_PathSegment); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[3].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[3].OneofWrappers = []any{ (*ResponseMatch_Header)(nil), (*ResponseMatch_Body)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[5].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes[5].OneofWrappers = []any{ (*JsonKey_PathSegment_Key)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_rawDesc)), NumEnums: 1, NumMessages: 6, NumExtensions: 0, @@ -760,7 +672,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_a MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_advanced_http_advanced_http_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/aws/filter.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/extensions/aws/filter.pb.clone.go new file mode 100644 index 000000000..748cc5532 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/aws/filter.pb.clone.go @@ -0,0 +1,175 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/aws/filter.proto + +package aws + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *AWSLambdaPerRoute) Clone() proto.Message { + var target *AWSLambdaPerRoute + if m == nil { + return target + } + target = &AWSLambdaPerRoute{} + + target.Name = m.GetName() + + target.Qualifier = m.GetQualifier() + + target.Async = m.GetAsync() + + if h, ok := interface{}(m.GetEmptyBodyOverride()).(clone.Cloner); ok { + target.EmptyBodyOverride = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.EmptyBodyOverride = proto.Clone(m.GetEmptyBodyOverride()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + target.UnwrapAsAlb = m.GetUnwrapAsAlb() + + if h, ok := interface{}(m.GetTransformerConfig()).(clone.Cloner); ok { + target.TransformerConfig = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.TypedExtensionConfig) + } else { + target.TransformerConfig = proto.Clone(m.GetTransformerConfig()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.TypedExtensionConfig) + } + + if h, ok := interface{}(m.GetRequestTransformerConfig()).(clone.Cloner); ok { + target.RequestTransformerConfig = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.TypedExtensionConfig) + } else { + target.RequestTransformerConfig = proto.Clone(m.GetRequestTransformerConfig()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.TypedExtensionConfig) + } + + return target +} + +// Clone function +func (m *AWSLambdaProtocolExtension) Clone() proto.Message { + var target *AWSLambdaProtocolExtension + if m == nil { + return target + } + target = &AWSLambdaProtocolExtension{} + + target.Host = m.GetHost() + + target.Region = m.GetRegion() + + target.AccessKey = m.GetAccessKey() + + target.SecretKey = m.GetSecretKey() + + target.SessionToken = m.GetSessionToken() + + target.RoleArn = m.GetRoleArn() + + target.DisableRoleChaining = m.GetDisableRoleChaining() + + return target +} + +// Clone function +func (m *AWSLambdaConfig) Clone() proto.Message { + var target *AWSLambdaConfig + if m == nil { + return target + } + target = &AWSLambdaConfig{} + + target.PropagateOriginalRouting = m.GetPropagateOriginalRouting() + + if h, ok := interface{}(m.GetCredentialRefreshDelay()).(clone.Cloner); ok { + target.CredentialRefreshDelay = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.CredentialRefreshDelay = proto.Clone(m.GetCredentialRefreshDelay()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + switch m.CredentialsFetcher.(type) { + + case *AWSLambdaConfig_UseDefaultCredentials: + + if h, ok := interface{}(m.GetUseDefaultCredentials()).(clone.Cloner); ok { + target.CredentialsFetcher = &AWSLambdaConfig_UseDefaultCredentials{ + UseDefaultCredentials: h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue), + } + } else { + target.CredentialsFetcher = &AWSLambdaConfig_UseDefaultCredentials{ + UseDefaultCredentials: proto.Clone(m.GetUseDefaultCredentials()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue), + } + } + + case *AWSLambdaConfig_ServiceAccountCredentials_: + + if h, ok := interface{}(m.GetServiceAccountCredentials()).(clone.Cloner); ok { + target.CredentialsFetcher = &AWSLambdaConfig_ServiceAccountCredentials_{ + ServiceAccountCredentials: h.Clone().(*AWSLambdaConfig_ServiceAccountCredentials), + } + } else { + target.CredentialsFetcher = &AWSLambdaConfig_ServiceAccountCredentials_{ + ServiceAccountCredentials: proto.Clone(m.GetServiceAccountCredentials()).(*AWSLambdaConfig_ServiceAccountCredentials), + } + } + + } + + return target +} + +// Clone function +func (m *ApiGatewayTransformation) Clone() proto.Message { + var target *ApiGatewayTransformation + if m == nil { + return target + } + target = &ApiGatewayTransformation{} + + return target +} + +// Clone function +func (m *AWSLambdaConfig_ServiceAccountCredentials) Clone() proto.Message { + var target *AWSLambdaConfig_ServiceAccountCredentials + if m == nil { + return target + } + target = &AWSLambdaConfig_ServiceAccountCredentials{} + + target.Cluster = m.GetCluster() + + target.Uri = m.GetUri() + + if h, ok := interface{}(m.GetTimeout()).(clone.Cloner); ok { + target.Timeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.Timeout = proto.Clone(m.GetTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + target.Region = m.GetRegion() + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/aws/filter.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/extensions/aws/filter.pb.equal.go index 3074af3db..c7562b056 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/aws/filter.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/aws/filter.pb.equal.go @@ -68,6 +68,30 @@ func (m *AWSLambdaPerRoute) Equal(that interface{}) bool { } } + if m.GetUnwrapAsAlb() != target.GetUnwrapAsAlb() { + return false + } + + if h, ok := interface{}(m.GetTransformerConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetTransformerConfig()) { + return false + } + } else { + if !proto.Equal(m.GetTransformerConfig(), target.GetTransformerConfig()) { + return false + } + } + + if h, ok := interface{}(m.GetRequestTransformerConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetRequestTransformerConfig()) { + return false + } + } else { + if !proto.Equal(m.GetRequestTransformerConfig(), target.GetRequestTransformerConfig()) { + return false + } + } + return true } @@ -116,6 +140,10 @@ func (m *AWSLambdaProtocolExtension) Equal(that interface{}) bool { return false } + if m.GetDisableRoleChaining() != target.GetDisableRoleChaining() { + return false + } + return true } @@ -140,9 +168,26 @@ func (m *AWSLambdaConfig) Equal(that interface{}) bool { return false } + if m.GetPropagateOriginalRouting() != target.GetPropagateOriginalRouting() { + return false + } + + if h, ok := interface{}(m.GetCredentialRefreshDelay()).(equality.Equalizer); ok { + if !h.Equal(target.GetCredentialRefreshDelay()) { + return false + } + } else { + if !proto.Equal(m.GetCredentialRefreshDelay(), target.GetCredentialRefreshDelay()) { + return false + } + } + switch m.CredentialsFetcher.(type) { case *AWSLambdaConfig_UseDefaultCredentials: + if _, ok := target.CredentialsFetcher.(*AWSLambdaConfig_UseDefaultCredentials); !ok { + return false + } if h, ok := interface{}(m.GetUseDefaultCredentials()).(equality.Equalizer); ok { if !h.Equal(target.GetUseDefaultCredentials()) { @@ -155,6 +200,9 @@ func (m *AWSLambdaConfig) Equal(that interface{}) bool { } case *AWSLambdaConfig_ServiceAccountCredentials_: + if _, ok := target.CredentialsFetcher.(*AWSLambdaConfig_ServiceAccountCredentials_); !ok { + return false + } if h, ok := interface{}(m.GetServiceAccountCredentials()).(equality.Equalizer); ok { if !h.Equal(target.GetServiceAccountCredentials()) { @@ -166,6 +214,35 @@ func (m *AWSLambdaConfig) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.CredentialsFetcher != target.CredentialsFetcher { + return false + } + } + + return true +} + +// Equal function +func (m *ApiGatewayTransformation) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ApiGatewayTransformation) + if !ok { + that2, ok := that.(ApiGatewayTransformation) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false } return true @@ -210,5 +287,9 @@ func (m *AWSLambdaConfig_ServiceAccountCredentials) Equal(that interface{}) bool } } + if strings.Compare(m.GetRegion(), target.GetRegion()) != 0 { + return false + } + return true } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/aws/filter.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/aws/filter.pb.go index 125fa1501..830362895 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/aws/filter.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/aws/filter.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/aws/filter.proto @@ -11,14 +11,15 @@ package aws import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - duration "github.com/golang/protobuf/ptypes/duration" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -28,17 +29,10 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // AWS Lambda contains the configuration necessary to perform transform regular // http calls to AWS Lambda invocations. type AWSLambdaPerRoute struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the function Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // The qualifier of the function (defaults to $LATEST if not specified) @@ -47,16 +41,33 @@ type AWSLambdaPerRoute struct { Async bool `protobuf:"varint,3,opt,name=async,proto3" json:"async,omitempty"` // Optional default body if the body is empty. By default on default // body is used if the body empty, and an empty body will be sent upstream. - EmptyBodyOverride *wrappers.StringValue `protobuf:"bytes,4,opt,name=empty_body_override,json=emptyBodyOverride,proto3" json:"empty_body_override,omitempty"` + EmptyBodyOverride *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=empty_body_override,json=emptyBodyOverride,proto3" json:"empty_body_override,omitempty"` + // Deprecated. Use transformer_config to specify an AWS Lambda response transformer instead. + // Unwrap responses as AWS ALB does. + // Expects json lambda responses to construct response. + // Intended to ease migration when previously using alb to invoke Lambdas. + // When set on a route the filter will not stream data on the encoding step. + // For further information see below link for the expected format when true. + // https://docs.aws.amazon.com/elasticloadbalancing/latest/application/lambda-functions.html + // Defaults to false. + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/aws/filter.proto. + UnwrapAsAlb bool `protobuf:"varint,5,opt,name=unwrap_as_alb,json=unwrapAsAlb,proto3" json:"unwrap_as_alb,omitempty"` + // transformer configuration used to process response data + // cannot be configured simultaneously with unwrap_as_alb + TransformerConfig *v3.TypedExtensionConfig `protobuf:"bytes,6,opt,name=transformer_config,json=transformerConfig,proto3" json:"transformer_config,omitempty"` + // This is a transformer config, as defined in api.envoy.config.filter.http.transformation.v2 + // used to process request data. + RequestTransformerConfig *v3.TypedExtensionConfig `protobuf:"bytes,7,opt,name=request_transformer_config,json=requestTransformerConfig,proto3" json:"request_transformer_config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AWSLambdaPerRoute) Reset() { *x = AWSLambdaPerRoute{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AWSLambdaPerRoute) String() string { @@ -67,7 +78,7 @@ func (*AWSLambdaPerRoute) ProtoMessage() {} func (x *AWSLambdaPerRoute) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -103,18 +114,37 @@ func (x *AWSLambdaPerRoute) GetAsync() bool { return false } -func (x *AWSLambdaPerRoute) GetEmptyBodyOverride() *wrappers.StringValue { +func (x *AWSLambdaPerRoute) GetEmptyBodyOverride() *wrapperspb.StringValue { if x != nil { return x.EmptyBodyOverride } return nil } -type AWSLambdaProtocolExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/aws/filter.proto. +func (x *AWSLambdaPerRoute) GetUnwrapAsAlb() bool { + if x != nil { + return x.UnwrapAsAlb + } + return false +} + +func (x *AWSLambdaPerRoute) GetTransformerConfig() *v3.TypedExtensionConfig { + if x != nil { + return x.TransformerConfig + } + return nil +} + +func (x *AWSLambdaPerRoute) GetRequestTransformerConfig() *v3.TypedExtensionConfig { + if x != nil { + return x.RequestTransformerConfig + } + return nil +} +type AWSLambdaProtocolExtension struct { + state protoimpl.MessageState `protogen:"open.v1"` // The host header for AWS this cluster Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` // The region for this cluster @@ -127,15 +157,17 @@ type AWSLambdaProtocolExtension struct { SessionToken string `protobuf:"bytes,5,opt,name=session_token,json=sessionToken,proto3" json:"session_token,omitempty"` // The role_arn to use when generating credentials for the mounted projected SA token RoleArn string `protobuf:"bytes,6,opt,name=role_arn,json=roleArn,proto3" json:"role_arn,omitempty"` + // Optional override to disable role chaining; + DisableRoleChaining bool `protobuf:"varint,7,opt,name=disable_role_chaining,json=disableRoleChaining,proto3" json:"disable_role_chaining,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AWSLambdaProtocolExtension) Reset() { *x = AWSLambdaProtocolExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AWSLambdaProtocolExtension) String() string { @@ -146,7 +178,7 @@ func (*AWSLambdaProtocolExtension) ProtoMessage() {} func (x *AWSLambdaProtocolExtension) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -203,24 +235,38 @@ func (x *AWSLambdaProtocolExtension) GetRoleArn() string { return "" } -type AWSLambdaConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *AWSLambdaProtocolExtension) GetDisableRoleChaining() bool { + if x != nil { + return x.DisableRoleChaining + } + return false +} - // Types that are assignable to CredentialsFetcher: +type AWSLambdaConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to CredentialsFetcher: + // // *AWSLambdaConfig_UseDefaultCredentials // *AWSLambdaConfig_ServiceAccountCredentials_ CredentialsFetcher isAWSLambdaConfig_CredentialsFetcher `protobuf_oneof:"credentials_fetcher"` + // Send downstream path and method as `x-envoy-original-path` and + // `x-envoy-original-method` headers on the request to AWS lambda. + // Defaults to false. + PropagateOriginalRouting bool `protobuf:"varint,3,opt,name=propagate_original_routing,json=propagateOriginalRouting,proto3" json:"propagate_original_routing,omitempty"` + // Sets cadence for refreshing credentials for Service Account. + // Does nothing if Service account is not set. + // Does not affect the default filewatch for service account only augments it. + // Defaults to not refreshing on time period. Suggested is 15 minutes. + CredentialRefreshDelay *durationpb.Duration `protobuf:"bytes,4,opt,name=credential_refresh_delay,json=credentialRefreshDelay,proto3" json:"credential_refresh_delay,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AWSLambdaConfig) Reset() { *x = AWSLambdaConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AWSLambdaConfig) String() string { @@ -231,7 +277,7 @@ func (*AWSLambdaConfig) ProtoMessage() {} func (x *AWSLambdaConfig) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -246,23 +292,41 @@ func (*AWSLambdaConfig) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_rawDescGZIP(), []int{2} } -func (m *AWSLambdaConfig) GetCredentialsFetcher() isAWSLambdaConfig_CredentialsFetcher { - if m != nil { - return m.CredentialsFetcher +func (x *AWSLambdaConfig) GetCredentialsFetcher() isAWSLambdaConfig_CredentialsFetcher { + if x != nil { + return x.CredentialsFetcher } return nil } -func (x *AWSLambdaConfig) GetUseDefaultCredentials() *wrappers.BoolValue { - if x, ok := x.GetCredentialsFetcher().(*AWSLambdaConfig_UseDefaultCredentials); ok { - return x.UseDefaultCredentials +func (x *AWSLambdaConfig) GetUseDefaultCredentials() *wrapperspb.BoolValue { + if x != nil { + if x, ok := x.CredentialsFetcher.(*AWSLambdaConfig_UseDefaultCredentials); ok { + return x.UseDefaultCredentials + } } return nil } func (x *AWSLambdaConfig) GetServiceAccountCredentials() *AWSLambdaConfig_ServiceAccountCredentials { - if x, ok := x.GetCredentialsFetcher().(*AWSLambdaConfig_ServiceAccountCredentials_); ok { - return x.ServiceAccountCredentials + if x != nil { + if x, ok := x.CredentialsFetcher.(*AWSLambdaConfig_ServiceAccountCredentials_); ok { + return x.ServiceAccountCredentials + } + } + return nil +} + +func (x *AWSLambdaConfig) GetPropagateOriginalRouting() bool { + if x != nil { + return x.PropagateOriginalRouting + } + return false +} + +func (x *AWSLambdaConfig) GetCredentialRefreshDelay() *durationpb.Duration { + if x != nil { + return x.CredentialRefreshDelay } return nil } @@ -279,7 +343,7 @@ type AWSLambdaConfig_UseDefaultCredentials struct { // If credentials are provided on the cluster (using the // AWSLambdaProtocolExtension), it will override these credentials. This // defaults to false, but may change in the future to true. - UseDefaultCredentials *wrappers.BoolValue `protobuf:"bytes,1,opt,name=use_default_credentials,json=useDefaultCredentials,proto3,oneof"` + UseDefaultCredentials *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=use_default_credentials,json=useDefaultCredentials,proto3,oneof"` } type AWSLambdaConfig_ServiceAccountCredentials_ struct { @@ -290,8 +354,8 @@ type AWSLambdaConfig_ServiceAccountCredentials_ struct { // https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html // // If the following environment values are not present, this option cannot be used. - // 1. AWS_WEB_IDENTITY_TOKEN_FILE - // 2. AWS_ROLE_ARN + // 1. AWS_WEB_IDENTITY_TOKEN_FILE + // 2. AWS_ROLE_ARN // // If they are not specified envoy will NACK the config update, which will show up in the logs when running OS Gloo. // When running Gloo enterprise it will be reflected in the prometheus stat: "glooe.solo.io/xds/nack" @@ -305,29 +369,64 @@ func (*AWSLambdaConfig_UseDefaultCredentials) isAWSLambdaConfig_CredentialsFetch func (*AWSLambdaConfig_ServiceAccountCredentials_) isAWSLambdaConfig_CredentialsFetcher() {} +type ApiGatewayTransformation struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ApiGatewayTransformation) Reset() { + *x = ApiGatewayTransformation{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ApiGatewayTransformation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApiGatewayTransformation) ProtoMessage() {} + +func (x *ApiGatewayTransformation) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApiGatewayTransformation.ProtoReflect.Descriptor instead. +func (*ApiGatewayTransformation) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_rawDescGZIP(), []int{3} +} + // In order to specify the aws sts endpoint, both the cluster and uri must be set. // This is due to an envoy limitation which cannot infer the host or path from the cluster, // and therefore must be explicitly specified via the uri type AWSLambdaConfig_ServiceAccountCredentials struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the envoy cluster which represents the desired aws sts endpoint Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` // The full uri of the aws sts endpoint Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"` // timeout for the request - Timeout *duration.Duration `protobuf:"bytes,3,opt,name=timeout,proto3" json:"timeout,omitempty"` + Timeout *durationpb.Duration `protobuf:"bytes,3,opt,name=timeout,proto3" json:"timeout,omitempty"` + // Region for the sts endpoint. Defaults to us-east-1 + Region string `protobuf:"bytes,4,opt,name=region,proto3" json:"region,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AWSLambdaConfig_ServiceAccountCredentials) Reset() { *x = AWSLambdaConfig_ServiceAccountCredentials{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AWSLambdaConfig_ServiceAccountCredentials) String() string { @@ -337,8 +436,8 @@ func (x *AWSLambdaConfig_ServiceAccountCredentials) String() string { func (*AWSLambdaConfig_ServiceAccountCredentials) ProtoMessage() {} func (x *AWSLambdaConfig_ServiceAccountCredentials) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes[4] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -367,16 +466,23 @@ func (x *AWSLambdaConfig_ServiceAccountCredentials) GetUri() string { return "" } -func (x *AWSLambdaConfig_ServiceAccountCredentials) GetTimeout() *duration.Duration { +func (x *AWSLambdaConfig_ServiceAccountCredentials) GetTimeout() *durationpb.Duration { if x != nil { return x.Timeout } return nil } +func (x *AWSLambdaConfig_ServiceAccountCredentials) GetRegion() string { + if x != nil { + return x.Region + } + return "" +} + var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_rawDesc = string([]byte{ 0x0a, 0x55, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -391,103 +497,146 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aw 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb2, 0x01, 0x0a, - 0x11, 0x41, 0x57, 0x53, 0x4c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x50, 0x65, 0x72, 0x52, 0x6f, 0x75, - 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x14, 0x0a, - 0x05, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x73, - 0x79, 0x6e, 0x63, 0x12, 0x4c, 0x0a, 0x13, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x62, 0x6f, 0x64, - 0x79, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, - 0x65, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x6f, 0x64, 0x79, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, - 0x65, 0x22, 0xd8, 0x01, 0x0a, 0x1a, 0x41, 0x57, 0x53, 0x4c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x1b, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x1f, 0x0a, - 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, - 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x0a, - 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, - 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x41, 0x72, 0x6e, 0x22, 0xa5, 0x03, 0x0a, - 0x0f, 0x41, 0x57, 0x53, 0x4c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x54, 0x0a, 0x17, 0x75, 0x73, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, - 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, - 0x15, 0x75, 0x73, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x93, 0x01, 0x0a, 0x1b, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x65, - 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x61, 0x77, 0x73, 0x5f, 0x6c, 0x61, 0x6d, 0x62, - 0x64, 0x61, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x57, 0x53, 0x4c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x48, - 0x00, 0x52, 0x19, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x1a, 0x8e, 0x01, 0x0a, - 0x19, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x07, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x72, 0x02, 0x20, 0x01, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, - 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x20, 0x01, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x15, 0x0a, - 0x13, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x5f, 0x66, 0x65, 0x74, - 0x63, 0x68, 0x65, 0x72, 0x42, 0xa1, 0x01, 0x0a, 0x34, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, - 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, - 0x61, 0x77, 0x73, 0x5f, 0x6c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x2e, 0x76, 0x32, 0x42, 0x0e, 0x41, - 0x77, 0x73, 0x4c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, - 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, - 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, - 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x77, 0x73, - 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x58, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, + 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xaf, 0x03, 0x0a, 0x11, 0x41, 0x57, 0x53, 0x4c, 0x61, + 0x6d, 0x62, 0x64, 0x61, 0x50, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x71, 0x75, 0x61, + 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x71, 0x75, + 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x79, 0x6e, 0x63, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x4c, 0x0a, + 0x13, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x6f, 0x76, 0x65, 0x72, + 0x72, 0x69, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x42, + 0x6f, 0x64, 0x79, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x26, 0x0a, 0x0d, 0x75, + 0x6e, 0x77, 0x72, 0x61, 0x70, 0x5f, 0x61, 0x73, 0x5f, 0x61, 0x6c, 0x62, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x75, 0x6e, 0x77, 0x72, 0x61, 0x70, 0x41, 0x73, + 0x41, 0x6c, 0x62, 0x12, 0x61, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x54, + 0x79, 0x70, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x70, 0x0a, 0x1a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x18, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x8c, 0x02, 0x0a, 0x1a, 0x41, 0x57, 0x53, + 0x4c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, + 0x68, 0x6f, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x06, 0x72, + 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x4b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, + 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x6f, 0x6c, 0x65, + 0x41, 0x72, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, + 0x6f, 0x6c, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x43, + 0x68, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0xd0, 0x04, 0x0a, 0x0f, 0x41, 0x57, 0x53, 0x4c, + 0x61, 0x6d, 0x62, 0x64, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x54, 0x0a, 0x17, 0x75, + 0x73, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, + 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x15, 0x75, 0x73, 0x65, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x12, 0x93, 0x01, 0x0a, 0x1b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, + 0x74, 0x70, 0x2e, 0x61, 0x77, 0x73, 0x5f, 0x6c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x2e, 0x76, 0x32, + 0x2e, 0x41, 0x57, 0x53, 0x4c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x19, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x70, 0x72, 0x6f, 0x70, 0x61, + 0x67, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x6f, + 0x75, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x70, 0x72, 0x6f, + 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x52, 0x6f, + 0x75, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x53, 0x0a, 0x18, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x64, 0x65, 0x6c, 0x61, + 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x16, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, + 0x66, 0x72, 0x65, 0x73, 0x68, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x1a, 0xa6, 0x01, 0x0a, 0x19, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x20, 0x01, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x03, 0x75, + 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, + 0x01, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, + 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, + 0x69, 0x6f, 0x6e, 0x42, 0x15, 0x0a, 0x13, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x5f, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x72, 0x22, 0x1a, 0x0a, 0x18, 0x41, 0x70, + 0x69, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0xa5, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, + 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x0a, 0x34, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, + 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x61, 0x77, + 0x73, 0x5f, 0x6c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x2e, 0x76, 0x32, 0x42, 0x0e, 0x41, 0x77, 0x73, + 0x4c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x77, 0x73, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_goTypes = []any{ (*AWSLambdaPerRoute)(nil), // 0: envoy.config.filter.http.aws_lambda.v2.AWSLambdaPerRoute (*AWSLambdaProtocolExtension)(nil), // 1: envoy.config.filter.http.aws_lambda.v2.AWSLambdaProtocolExtension (*AWSLambdaConfig)(nil), // 2: envoy.config.filter.http.aws_lambda.v2.AWSLambdaConfig - (*AWSLambdaConfig_ServiceAccountCredentials)(nil), // 3: envoy.config.filter.http.aws_lambda.v2.AWSLambdaConfig.ServiceAccountCredentials - (*wrappers.StringValue)(nil), // 4: google.protobuf.StringValue - (*wrappers.BoolValue)(nil), // 5: google.protobuf.BoolValue - (*duration.Duration)(nil), // 6: google.protobuf.Duration + (*ApiGatewayTransformation)(nil), // 3: envoy.config.filter.http.aws_lambda.v2.ApiGatewayTransformation + (*AWSLambdaConfig_ServiceAccountCredentials)(nil), // 4: envoy.config.filter.http.aws_lambda.v2.AWSLambdaConfig.ServiceAccountCredentials + (*wrapperspb.StringValue)(nil), // 5: google.protobuf.StringValue + (*v3.TypedExtensionConfig)(nil), // 6: solo.io.envoy.config.core.v3.TypedExtensionConfig + (*wrapperspb.BoolValue)(nil), // 7: google.protobuf.BoolValue + (*durationpb.Duration)(nil), // 8: google.protobuf.Duration } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_depIdxs = []int32{ - 4, // 0: envoy.config.filter.http.aws_lambda.v2.AWSLambdaPerRoute.empty_body_override:type_name -> google.protobuf.StringValue - 5, // 1: envoy.config.filter.http.aws_lambda.v2.AWSLambdaConfig.use_default_credentials:type_name -> google.protobuf.BoolValue - 3, // 2: envoy.config.filter.http.aws_lambda.v2.AWSLambdaConfig.service_account_credentials:type_name -> envoy.config.filter.http.aws_lambda.v2.AWSLambdaConfig.ServiceAccountCredentials - 6, // 3: envoy.config.filter.http.aws_lambda.v2.AWSLambdaConfig.ServiceAccountCredentials.timeout:type_name -> google.protobuf.Duration - 4, // [4:4] is the sub-list for method output_type - 4, // [4:4] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 5, // 0: envoy.config.filter.http.aws_lambda.v2.AWSLambdaPerRoute.empty_body_override:type_name -> google.protobuf.StringValue + 6, // 1: envoy.config.filter.http.aws_lambda.v2.AWSLambdaPerRoute.transformer_config:type_name -> solo.io.envoy.config.core.v3.TypedExtensionConfig + 6, // 2: envoy.config.filter.http.aws_lambda.v2.AWSLambdaPerRoute.request_transformer_config:type_name -> solo.io.envoy.config.core.v3.TypedExtensionConfig + 7, // 3: envoy.config.filter.http.aws_lambda.v2.AWSLambdaConfig.use_default_credentials:type_name -> google.protobuf.BoolValue + 4, // 4: envoy.config.filter.http.aws_lambda.v2.AWSLambdaConfig.service_account_credentials:type_name -> envoy.config.filter.http.aws_lambda.v2.AWSLambdaConfig.ServiceAccountCredentials + 8, // 5: envoy.config.filter.http.aws_lambda.v2.AWSLambdaConfig.credential_refresh_delay:type_name -> google.protobuf.Duration + 8, // 6: envoy.config.filter.http.aws_lambda.v2.AWSLambdaConfig.ServiceAccountCredentials.timeout:type_name -> google.protobuf.Duration + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { @@ -497,57 +646,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_a if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AWSLambdaPerRoute); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AWSLambdaProtocolExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AWSLambdaConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AWSLambdaConfig_ServiceAccountCredentials); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes[2].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes[2].OneofWrappers = []any{ (*AWSLambdaConfig_UseDefaultCredentials)(nil), (*AWSLambdaConfig_ServiceAccountCredentials_)(nil), } @@ -555,9 +654,9 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_a out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_rawDesc)), NumEnums: 0, - NumMessages: 4, + NumMessages: 5, NumExtensions: 0, NumServices: 0, }, @@ -566,7 +665,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_a MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_aws_filter_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/aws/filter.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/extensions/aws/filter.pb.hash.go index c4fb9e650..c058ed8dd 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/aws/filter.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/aws/filter.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *AWSLambdaPerRoute) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -52,14 +56,65 @@ func (m *AWSLambdaPerRoute) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetEmptyBodyOverride()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EmptyBodyOverride")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEmptyBodyOverride(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EmptyBodyOverride")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetUnwrapAsAlb()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTransformerConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TransformerConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTransformerConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TransformerConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRequestTransformerConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTransformerConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetEmptyBodyOverride(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRequestTransformerConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RequestTransformerConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -69,6 +124,10 @@ func (m *AWSLambdaPerRoute) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *AWSLambdaProtocolExtension) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -105,10 +164,19 @@ func (m *AWSLambdaProtocolExtension) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + err = binary.Write(hasher, binary.LittleEndian, m.GetDisableRoleChaining()) + if err != nil { + return 0, err + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *AWSLambdaConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -121,19 +189,50 @@ func (m *AWSLambdaConfig) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + err = binary.Write(hasher, binary.LittleEndian, m.GetPropagateOriginalRouting()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCredentialRefreshDelay()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CredentialRefreshDelay")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCredentialRefreshDelay(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CredentialRefreshDelay")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + switch m.CredentialsFetcher.(type) { case *AWSLambdaConfig_UseDefaultCredentials: if h, ok := interface{}(m.GetUseDefaultCredentials()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UseDefaultCredentials")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetUseDefaultCredentials(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetUseDefaultCredentials(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("UseDefaultCredentials")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -142,14 +241,20 @@ func (m *AWSLambdaConfig) Hash(hasher hash.Hash64) (uint64, error) { case *AWSLambdaConfig_ServiceAccountCredentials_: if h, ok := interface{}(m.GetServiceAccountCredentials()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServiceAccountCredentials")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetServiceAccountCredentials(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetServiceAccountCredentials(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ServiceAccountCredentials")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -161,6 +266,30 @@ func (m *AWSLambdaConfig) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ApiGatewayTransformation) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.config.filter.http.aws_lambda.v2.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/aws.ApiGatewayTransformation")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *AWSLambdaConfig_ServiceAccountCredentials) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -182,18 +311,28 @@ func (m *AWSLambdaConfig_ServiceAccountCredentials) Hash(hasher hash.Hash64) (ui } if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } + if _, err = hasher.Write([]byte(m.GetRegion())); err != nil { + return 0, err + } + return hasher.Sum64(), nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/aws/filter.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/extensions/aws/filter.pb.uniquehash.go new file mode 100644 index 000000000..d1fb83d2b --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/aws/filter.pb.uniquehash.go @@ -0,0 +1,380 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/aws/filter.proto + +package aws + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AWSLambdaPerRoute) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.config.filter.http.aws_lambda.v2.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/aws.AWSLambdaPerRoute")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Qualifier")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetQualifier())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Async")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAsync()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetEmptyBodyOverride()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EmptyBodyOverride")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEmptyBodyOverride(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EmptyBodyOverride")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("UnwrapAsAlb")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetUnwrapAsAlb()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTransformerConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TransformerConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTransformerConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TransformerConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRequestTransformerConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTransformerConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestTransformerConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestTransformerConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AWSLambdaProtocolExtension) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.config.filter.http.aws_lambda.v2.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/aws.AWSLambdaProtocolExtension")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Host")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHost())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Region")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRegion())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AccessKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAccessKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SecretKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSecretKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SessionToken")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSessionToken())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RoleArn")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRoleArn())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DisableRoleChaining")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDisableRoleChaining()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AWSLambdaConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.config.filter.http.aws_lambda.v2.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/aws.AWSLambdaConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("PropagateOriginalRouting")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPropagateOriginalRouting()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCredentialRefreshDelay()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CredentialRefreshDelay")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCredentialRefreshDelay(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CredentialRefreshDelay")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.CredentialsFetcher.(type) { + + case *AWSLambdaConfig_UseDefaultCredentials: + + if h, ok := interface{}(m.GetUseDefaultCredentials()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UseDefaultCredentials")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUseDefaultCredentials(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UseDefaultCredentials")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AWSLambdaConfig_ServiceAccountCredentials_: + + if h, ok := interface{}(m.GetServiceAccountCredentials()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServiceAccountCredentials")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetServiceAccountCredentials(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ServiceAccountCredentials")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ApiGatewayTransformation) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.config.filter.http.aws_lambda.v2.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/aws.ApiGatewayTransformation")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AWSLambdaConfig_ServiceAccountCredentials) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.config.filter.http.aws_lambda.v2.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/aws.AWSLambdaConfig_ServiceAccountCredentials")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Cluster")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCluster())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Uri")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUri())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Region")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRegion())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/cache/grpc/config.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/cache/grpc/config.pb.go new file mode 100644 index 000000000..be970ef9d --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/cache/grpc/config.pb.go @@ -0,0 +1,187 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/cache/grpc/config.proto + +package grpc + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/envoyproxy/protoc-gen-validate/validate" + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// [#proto-status: experimental] +type GrpcCacheConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // A GRPC service: this maps exactly to envoy GRPC service defintions + Service *v3.GrpcService `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"` + // Connection timeout for retrieval from cache + Timeout *durationpb.Duration `protobuf:"bytes,2,opt,name=timeout,proto3" json:"timeout,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GrpcCacheConfig) Reset() { + *x = GrpcCacheConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GrpcCacheConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GrpcCacheConfig) ProtoMessage() {} + +func (x *GrpcCacheConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GrpcCacheConfig.ProtoReflect.Descriptor instead. +func (*GrpcCacheConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_rawDescGZIP(), []int{0} +} + +func (x *GrpcCacheConfig) GetService() *v3.GrpcService { + if x != nil { + return x.Service + } + return nil +} + +func (x *GrpcCacheConfig) GetTimeout() *durationpb.Duration { + if x != nil { + return x.Timeout + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_rawDesc = string([]byte{ + 0x0a, 0x5c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2f, 0x67, 0x72, 0x70, + 0x63, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x32, 0x1a, 0x53, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x5b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, + 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x67, 0x72, + 0x70, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1d, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x95, 0x01, 0x0a, 0x0f, 0x47, 0x72, 0x70, + 0x63, 0x43, 0x61, 0x63, 0x68, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4d, 0x0a, 0x07, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x72, 0x70, + 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x42, 0xa6, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x2c, 0x69, 0x6f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x63, 0x61, 0x63, 0x68, + 0x65, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x32, 0x42, 0x14, 0x47, 0x72, 0x70, 0x63, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, + 0x61, 0x63, 0x68, 0x65, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_goTypes = []any{ + (*GrpcCacheConfig)(nil), // 0: envoy.extensions.cache.grpc.v2.GrpcCacheConfig + (*v3.GrpcService)(nil), // 1: solo.io.envoy.config.core.v3.GrpcService + (*durationpb.Duration)(nil), // 2: google.protobuf.Duration +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_depIdxs = []int32{ + 1, // 0: envoy.extensions.cache.grpc.v2.GrpcCacheConfig.service:type_name -> solo.io.envoy.config.core.v3.GrpcService + 2, // 1: envoy.extensions.cache.grpc.v2.GrpcCacheConfig.timeout:type_name -> google.protobuf.Duration + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_cache_grpc_config_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/extauth/sanitize.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/extauth/sanitize.pb.go index ec1b912fd..3534ce6b3 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/extauth/sanitize.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/extauth/sanitize.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/extauth/sanitize.proto @@ -9,8 +9,8 @@ package extauth import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) @@ -22,28 +22,21 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Sanitize struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - HeadersToRemove []string `protobuf:"bytes,1,rep,name=headers_to_remove,json=headersToRemove,proto3" json:"headers_to_remove,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + HeadersToRemove []string `protobuf:"bytes,1,rep,name=headers_to_remove,json=headersToRemove,proto3" json:"headers_to_remove,omitempty"` // The name of the custom ext auth server // This is only set in the case where multiple auth servers exist. CustomAuthServerName string `protobuf:"bytes,2,opt,name=custom_auth_server_name,json=customAuthServerName,proto3" json:"custom_auth_server_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Sanitize) Reset() { *x = Sanitize{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Sanitize) String() string { @@ -54,7 +47,7 @@ func (*Sanitize) ProtoMessage() {} func (x *Sanitize) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -84,22 +77,19 @@ func (x *Sanitize) GetCustomAuthServerName() string { } type SanitizePerRoute struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the custom ext auth server // This is only set in the case where multiple auth servers exist. CustomAuthServerName string `protobuf:"bytes,1,opt,name=custom_auth_server_name,json=customAuthServerName,proto3" json:"custom_auth_server_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SanitizePerRoute) Reset() { *x = SanitizePerRoute{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SanitizePerRoute) String() string { @@ -110,7 +100,7 @@ func (*SanitizePerRoute) ProtoMessage() {} func (x *SanitizePerRoute) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -134,7 +124,7 @@ func (x *SanitizePerRoute) GetCustomAuthServerName() string { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_rawDesc = string([]byte{ 0x0a, 0x5b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -161,22 +151,22 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_ex 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x78, 0x74, 0x61, 0x75, 0x74, 0x68, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_goTypes = []any{ (*Sanitize)(nil), // 0: envoy.config.filter.http.sanitize.v2.Sanitize (*SanitizePerRoute)(nil), // 1: envoy.config.filter.http.sanitize.v2.SanitizePerRoute } @@ -195,37 +185,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_e if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Sanitize); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SanitizePerRoute); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_rawDesc)), NumEnums: 0, NumMessages: 2, NumExtensions: 0, @@ -236,7 +200,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_e MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_extauth_sanitize_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3/buffer.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3/buffer.pb.clone.go new file mode 100644 index 000000000..f5d4e4364 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3/buffer.pb.clone.go @@ -0,0 +1,78 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/buffer/v3/buffer.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *Buffer) Clone() proto.Message { + var target *Buffer + if m == nil { + return target + } + target = &Buffer{} + + if h, ok := interface{}(m.GetMaxRequestBytes()).(clone.Cloner); ok { + target.MaxRequestBytes = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxRequestBytes = proto.Clone(m.GetMaxRequestBytes()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + return target +} + +// Clone function +func (m *BufferPerRoute) Clone() proto.Message { + var target *BufferPerRoute + if m == nil { + return target + } + target = &BufferPerRoute{} + + switch m.Override.(type) { + + case *BufferPerRoute_Disabled: + + target.Override = &BufferPerRoute_Disabled{ + Disabled: m.GetDisabled(), + } + + case *BufferPerRoute_Buffer: + + if h, ok := interface{}(m.GetBuffer()).(clone.Cloner); ok { + target.Override = &BufferPerRoute_Buffer{ + Buffer: h.Clone().(*Buffer), + } + } else { + target.Override = &BufferPerRoute_Buffer{ + Buffer: proto.Clone(m.GetBuffer()).(*Buffer), + } + } + + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3/buffer.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3/buffer.pb.equal.go index 67f66fb87..2cd7d5463 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3/buffer.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3/buffer.pb.equal.go @@ -83,12 +83,18 @@ func (m *BufferPerRoute) Equal(that interface{}) bool { switch m.Override.(type) { case *BufferPerRoute_Disabled: + if _, ok := target.Override.(*BufferPerRoute_Disabled); !ok { + return false + } if m.GetDisabled() != target.GetDisabled() { return false } case *BufferPerRoute_Buffer: + if _, ok := target.Override.(*BufferPerRoute_Buffer); !ok { + return false + } if h, ok := interface{}(m.GetBuffer()).(equality.Equalizer); ok { if !h.Equal(target.GetBuffer()) { @@ -100,6 +106,11 @@ func (m *BufferPerRoute) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.Override != target.Override { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3/buffer.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3/buffer.pb.go index f8e2ae24e..3c2f0ff00 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3/buffer.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3/buffer.pb.go @@ -2,7 +2,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/buffer/v3/buffer.proto @@ -11,13 +11,13 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -27,27 +27,20 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Buffer struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The maximum request size that the filter will buffer before the connection // manager will stop buffering and return a 413 response. - MaxRequestBytes *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=max_request_bytes,json=maxRequestBytes,proto3" json:"max_request_bytes,omitempty"` + MaxRequestBytes *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=max_request_bytes,json=maxRequestBytes,proto3" json:"max_request_bytes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Buffer) Reset() { *x = Buffer{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Buffer) String() string { @@ -58,7 +51,7 @@ func (*Buffer) ProtoMessage() {} func (x *Buffer) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -73,7 +66,7 @@ func (*Buffer) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_rawDescGZIP(), []int{0} } -func (x *Buffer) GetMaxRequestBytes() *wrappers.UInt32Value { +func (x *Buffer) GetMaxRequestBytes() *wrapperspb.UInt32Value { if x != nil { return x.MaxRequestBytes } @@ -81,23 +74,21 @@ func (x *Buffer) GetMaxRequestBytes() *wrappers.UInt32Value { } type BufferPerRoute struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Override: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Override: + // // *BufferPerRoute_Disabled // *BufferPerRoute_Buffer - Override isBufferPerRoute_Override `protobuf_oneof:"override"` + Override isBufferPerRoute_Override `protobuf_oneof:"override"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BufferPerRoute) Reset() { *x = BufferPerRoute{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BufferPerRoute) String() string { @@ -108,7 +99,7 @@ func (*BufferPerRoute) ProtoMessage() {} func (x *BufferPerRoute) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -123,23 +114,27 @@ func (*BufferPerRoute) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_rawDescGZIP(), []int{1} } -func (m *BufferPerRoute) GetOverride() isBufferPerRoute_Override { - if m != nil { - return m.Override +func (x *BufferPerRoute) GetOverride() isBufferPerRoute_Override { + if x != nil { + return x.Override } return nil } func (x *BufferPerRoute) GetDisabled() bool { - if x, ok := x.GetOverride().(*BufferPerRoute_Disabled); ok { - return x.Disabled + if x != nil { + if x, ok := x.Override.(*BufferPerRoute_Disabled); ok { + return x.Disabled + } } return false } func (x *BufferPerRoute) GetBuffer() *Buffer { - if x, ok := x.GetOverride().(*BufferPerRoute_Buffer); ok { - return x.Buffer + if x != nil { + if x, ok := x.Override.(*BufferPerRoute_Buffer); ok { + return x.Buffer + } } return nil } @@ -166,7 +161,7 @@ func (*BufferPerRoute_Buffer) isBufferPerRoute_Override() {} var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_rawDesc = string([]byte{ 0x0a, 0x68, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -181,55 +176,55 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_fi 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, - 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x69, 0x0a, 0x06, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x12, 0x59, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x66, 0x0a, 0x06, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x12, 0x56, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0f, 0xfa, 0x42, 0x04, - 0x2a, 0x02, 0x20, 0x00, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6d, 0x61, - 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x4a, 0x04, 0x08, - 0x02, 0x10, 0x03, 0x22, 0xa5, 0x01, 0x0a, 0x0e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x65, - 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x6a, 0x02, 0x08, - 0x01, 0x48, 0x00, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x5b, 0x0a, - 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, - 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, - 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, - 0x48, 0x00, 0x52, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x08, 0x6f, 0x76, - 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x42, 0xb2, 0x01, 0x0a, 0x35, - 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, - 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x62, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x2e, 0x76, 0x33, 0x42, 0x0b, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x62, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, - 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x62, - 0x75, 0x66, 0x66, 0x65, 0x72, 0x2f, 0x76, 0x33, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0c, 0xfa, 0x42, 0x09, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x2a, 0x02, 0x20, 0x00, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, + 0x22, 0xa5, 0x01, 0x0a, 0x0e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x65, 0x72, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x6a, 0x02, 0x08, 0x01, 0x48, 0x00, + 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x5b, 0x0a, 0x06, 0x62, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, + 0x74, 0x70, 0x2e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, + 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, + 0x69, 0x64, 0x65, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x42, 0xb6, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, + 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x0a, 0x35, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, + 0x68, 0x74, 0x74, 0x70, 0x2e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x42, 0x0b, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x62, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2f, 0x76, + 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_goTypes = []interface{}{ - (*Buffer)(nil), // 0: solo.io.envoy.extensions.filters.http.buffer.v3.Buffer - (*BufferPerRoute)(nil), // 1: solo.io.envoy.extensions.filters.http.buffer.v3.BufferPerRoute - (*wrappers.UInt32Value)(nil), // 2: google.protobuf.UInt32Value +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_goTypes = []any{ + (*Buffer)(nil), // 0: solo.io.envoy.extensions.filters.http.buffer.v3.Buffer + (*BufferPerRoute)(nil), // 1: solo.io.envoy.extensions.filters.http.buffer.v3.BufferPerRoute + (*wrapperspb.UInt32Value)(nil), // 2: google.protobuf.UInt32Value } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_depIdxs = []int32{ 2, // 0: solo.io.envoy.extensions.filters.http.buffer.v3.Buffer.max_request_bytes:type_name -> google.protobuf.UInt32Value @@ -248,33 +243,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_f if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Buffer); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BufferPerRoute); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_msgTypes[1].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_msgTypes[1].OneofWrappers = []any{ (*BufferPerRoute_Disabled)(nil), (*BufferPerRoute_Buffer)(nil), } @@ -282,7 +251,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_f out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_rawDesc)), NumEnums: 0, NumMessages: 2, NumExtensions: 0, @@ -293,7 +262,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_f MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_buffer_v3_buffer_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3/buffer.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3/buffer.pb.hash.go index 818e0959f..282f2b94e 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3/buffer.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3/buffer.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Buffer) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,14 +43,20 @@ func (m *Buffer) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetMaxRequestBytes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxRequestBytes")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMaxRequestBytes(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMaxRequestBytes(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MaxRequestBytes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -56,6 +66,10 @@ func (m *Buffer) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *BufferPerRoute) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -80,14 +94,20 @@ func (m *BufferPerRoute) Hash(hasher hash.Hash64) (uint64, error) { case *BufferPerRoute_Buffer: if h, ok := interface{}(m.GetBuffer()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Buffer")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetBuffer(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetBuffer(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Buffer")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3/buffer.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3/buffer.pb.uniquehash.go new file mode 100644 index 000000000..66c53be21 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3/buffer.pb.uniquehash.go @@ -0,0 +1,122 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/buffer/v3/buffer.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Buffer) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.extensions.filters.http.buffer.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3.Buffer")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxRequestBytes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxRequestBytes")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxRequestBytes(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxRequestBytes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *BufferPerRoute) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.extensions.filters.http.buffer.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3.BufferPerRoute")); err != nil { + return 0, err + } + + switch m.Override.(type) { + + case *BufferPerRoute_Disabled: + + if _, err = hasher.Write([]byte("Disabled")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDisabled()) + if err != nil { + return 0, err + } + + case *BufferPerRoute_Buffer: + + if h, ok := interface{}(m.GetBuffer()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Buffer")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBuffer(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Buffer")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3/csrf.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3/csrf.pb.clone.go new file mode 100644 index 000000000..3a0cf9d90 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3/csrf.pb.clone.go @@ -0,0 +1,66 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/csrf/v3/csrf.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *CsrfPolicy) Clone() proto.Message { + var target *CsrfPolicy + if m == nil { + return target + } + target = &CsrfPolicy{} + + if h, ok := interface{}(m.GetFilterEnabled()).(clone.Cloner); ok { + target.FilterEnabled = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.RuntimeFractionalPercent) + } else { + target.FilterEnabled = proto.Clone(m.GetFilterEnabled()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.RuntimeFractionalPercent) + } + + if h, ok := interface{}(m.GetShadowEnabled()).(clone.Cloner); ok { + target.ShadowEnabled = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.RuntimeFractionalPercent) + } else { + target.ShadowEnabled = proto.Clone(m.GetShadowEnabled()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.RuntimeFractionalPercent) + } + + if m.GetAdditionalOrigins() != nil { + target.AdditionalOrigins = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.StringMatcher, len(m.GetAdditionalOrigins())) + for idx, v := range m.GetAdditionalOrigins() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.AdditionalOrigins[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.StringMatcher) + } else { + target.AdditionalOrigins[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.StringMatcher) + } + + } + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3/csrf.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3/csrf.pb.go index 7ea0d923c..e5494ea4b 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3/csrf.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3/csrf.pb.go @@ -1,8 +1,8 @@ -// copied from https://github.com/envoyproxy/envoy/blob/master/api/envoy/extensions/filters/http/csrf/v3/csrf.proto +// copied from https://github.com/envoyproxy/envoy/blob/main/api/envoy/extensions/filters/http/csrf/v3/csrf.proto // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/csrf/v3/csrf.proto @@ -11,9 +11,9 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" v31 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3" @@ -28,31 +28,24 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // CSRF filter config. type CsrfPolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the % of requests for which the CSRF filter is enabled. // - // If :ref:`runtime_key ` is specified, + // If runtime_key is specified, // Envoy will lookup the runtime key to get the percentage of requests to filter. // - // .. note:: + // **Note**: // - // This field defaults to 100/:ref:`HUNDRED - // `. + // This field defaults to 100/:ref:`HUNDRED + // `. FilterEnabled *v3.RuntimeFractionalPercent `protobuf:"bytes,1,opt,name=filter_enabled,json=filterEnabled,proto3" json:"filter_enabled,omitempty"` // Specifies that CSRF policies will be evaluated and tracked, but not enforced. // - // This is intended to be used when ``filter_enabled`` is off and will be ignored otherwise. + // This is intended to be used when `filter_enabled` is off and will be ignored otherwise. // - // If :ref:`runtime_key ` is specified, + // If runtime_key is specified, // Envoy will lookup the runtime key to get the percentage of requests for which it will evaluate // and track the request's *Origin* and *Destination* to determine if it's valid, but will not // enforce any policies. @@ -61,17 +54,17 @@ type CsrfPolicy struct { // the destination origin. // // More information on how this can be configured via runtime can be found - // :ref:`here `. + // here. AdditionalOrigins []*v31.StringMatcher `protobuf:"bytes,3,rep,name=additional_origins,json=additionalOrigins,proto3" json:"additional_origins,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CsrfPolicy) Reset() { *x = CsrfPolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CsrfPolicy) String() string { @@ -82,7 +75,7 @@ func (*CsrfPolicy) ProtoMessage() {} func (x *CsrfPolicy) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -120,7 +113,7 @@ func (x *CsrfPolicy) GetAdditionalOrigins() []*v31.StringMatcher { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_rawDesc = string([]byte{ 0x0a, 0x64, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -163,34 +156,34 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_fi 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x11, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4f, 0x72, 0x69, 0x67, - 0x69, 0x6e, 0x73, 0x42, 0xac, 0x01, 0x0a, 0x33, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, - 0x74, 0x74, 0x70, 0x2e, 0x63, 0x73, 0x72, 0x66, 0x2e, 0x76, 0x33, 0x42, 0x09, 0x43, 0x73, 0x72, - 0x66, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x60, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x68, 0x74, - 0x74, 0x70, 0x2f, 0x63, 0x73, 0x72, 0x66, 0x2f, 0x76, 0x33, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, - 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x69, 0x6e, 0x73, 0x42, 0xb0, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, + 0x04, 0x01, 0x0a, 0x33, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, + 0x63, 0x73, 0x72, 0x66, 0x2e, 0x76, 0x33, 0x42, 0x09, 0x43, 0x73, 0x72, 0x66, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x60, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x63, + 0x73, 0x72, 0x66, 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_goTypes = []any{ (*CsrfPolicy)(nil), // 0: solo.io.envoy.extensions.filters.http.csrf.v3.CsrfPolicy (*v3.RuntimeFractionalPercent)(nil), // 1: solo.io.envoy.config.core.v3.RuntimeFractionalPercent (*v31.StringMatcher)(nil), // 2: solo.io.envoy.type.matcher.v3.StringMatcher @@ -213,25 +206,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_f if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CsrfPolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, @@ -242,7 +221,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_f MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_csrf_v3_csrf_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3/csrf.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3/csrf.pb.hash.go index b7913cf33..375c43892 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3/csrf.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3/csrf.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *CsrfPolicy) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,28 +43,40 @@ func (m *CsrfPolicy) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetFilterEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FilterEnabled")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetFilterEnabled(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetFilterEnabled(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("FilterEnabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetShadowEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ShadowEnabled")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetShadowEnabled(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetShadowEnabled(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ShadowEnabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -69,14 +85,20 @@ func (m *CsrfPolicy) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetAdditionalOrigins() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3/csrf.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3/csrf.pb.uniquehash.go new file mode 100644 index 000000000..31fdaa540 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3/csrf.pb.uniquehash.go @@ -0,0 +1,117 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/csrf/v3/csrf.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *CsrfPolicy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.extensions.filters.http.csrf.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3.CsrfPolicy")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetFilterEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FilterEnabled")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFilterEnabled(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FilterEnabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetShadowEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ShadowEnabled")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetShadowEnabled(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ShadowEnabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("AdditionalOrigins")); err != nil { + return 0, err + } + for i, v := range m.GetAdditionalOrigins() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.pb.clone.go new file mode 100644 index 000000000..55be95f55 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.pb.clone.go @@ -0,0 +1,49 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *ProcessingMode) Clone() proto.Message { + var target *ProcessingMode + if m == nil { + return target + } + target = &ProcessingMode{} + + target.RequestHeaderMode = m.GetRequestHeaderMode() + + target.ResponseHeaderMode = m.GetResponseHeaderMode() + + target.RequestBodyMode = m.GetRequestBodyMode() + + target.ResponseBodyMode = m.GetResponseBodyMode() + + target.RequestTrailerMode = m.GetRequestTrailerMode() + + target.ResponseTrailerMode = m.GetResponseTrailerMode() + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.pb.equal.go new file mode 100644 index 000000000..64fbeba7d --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.pb.equal.go @@ -0,0 +1,74 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *ProcessingMode) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ProcessingMode) + if !ok { + that2, ok := that.(ProcessingMode) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetRequestHeaderMode() != target.GetRequestHeaderMode() { + return false + } + + if m.GetResponseHeaderMode() != target.GetResponseHeaderMode() { + return false + } + + if m.GetRequestBodyMode() != target.GetRequestBodyMode() { + return false + } + + if m.GetResponseBodyMode() != target.GetResponseBodyMode() { + return false + } + + if m.GetRequestTrailerMode() != target.GetRequestTrailerMode() { + return false + } + + if m.GetResponseTrailerMode() != target.GetResponseTrailerMode() { + return false + } + + return true +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.pb.go new file mode 100644 index 000000000..9d475edc7 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.pb.go @@ -0,0 +1,394 @@ +// copied from https://github.com/envoyproxy/envoy/blob/ad89a587aa0177bfdad6b5c968a6aead5d9be7a4/api/envoy/extensions/filters/http/ext_proc/v3/processing_mode.proto + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.proto + +// manually updated pkg + +package v3 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/envoyproxy/protoc-gen-validate/validate" + _ "github.com/solo-io/protoc-gen-ext/extproto" + _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Control how headers and trailers are handled +type ProcessingMode_HeaderSendMode int32 + +const ( + // The default HeaderSendMode depends on which part of the message is being + // processed. By default, request and response headers are sent, + // while trailers are skipped. + ProcessingMode_DEFAULT ProcessingMode_HeaderSendMode = 0 + // Send the header or trailer. + ProcessingMode_SEND ProcessingMode_HeaderSendMode = 1 + // Do not send the header or trailer. + ProcessingMode_SKIP ProcessingMode_HeaderSendMode = 2 +) + +// Enum value maps for ProcessingMode_HeaderSendMode. +var ( + ProcessingMode_HeaderSendMode_name = map[int32]string{ + 0: "DEFAULT", + 1: "SEND", + 2: "SKIP", + } + ProcessingMode_HeaderSendMode_value = map[string]int32{ + "DEFAULT": 0, + "SEND": 1, + "SKIP": 2, + } +) + +func (x ProcessingMode_HeaderSendMode) Enum() *ProcessingMode_HeaderSendMode { + p := new(ProcessingMode_HeaderSendMode) + *p = x + return p +} + +func (x ProcessingMode_HeaderSendMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ProcessingMode_HeaderSendMode) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_enumTypes[0].Descriptor() +} + +func (ProcessingMode_HeaderSendMode) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_enumTypes[0] +} + +func (x ProcessingMode_HeaderSendMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ProcessingMode_HeaderSendMode.Descriptor instead. +func (ProcessingMode_HeaderSendMode) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_rawDescGZIP(), []int{0, 0} +} + +// Control how the request and response bodies are handled +type ProcessingMode_BodySendMode int32 + +const ( + // Do not send the body at all. This is the default. + ProcessingMode_NONE ProcessingMode_BodySendMode = 0 + // Stream the body to the server in pieces as they arrive at the + // proxy. + ProcessingMode_STREAMED ProcessingMode_BodySendMode = 1 + // Buffer the message body in memory and send the entire body at once. + // If the body exceeds the configured buffer limit, then the + // downstream system will receive an error. + ProcessingMode_BUFFERED ProcessingMode_BodySendMode = 2 + // Buffer the message body in memory and send the entire body in one + // chunk. If the body exceeds the configured buffer limit, then the body contents + // up to the buffer limit will be sent. + ProcessingMode_BUFFERED_PARTIAL ProcessingMode_BodySendMode = 3 +) + +// Enum value maps for ProcessingMode_BodySendMode. +var ( + ProcessingMode_BodySendMode_name = map[int32]string{ + 0: "NONE", + 1: "STREAMED", + 2: "BUFFERED", + 3: "BUFFERED_PARTIAL", + } + ProcessingMode_BodySendMode_value = map[string]int32{ + "NONE": 0, + "STREAMED": 1, + "BUFFERED": 2, + "BUFFERED_PARTIAL": 3, + } +) + +func (x ProcessingMode_BodySendMode) Enum() *ProcessingMode_BodySendMode { + p := new(ProcessingMode_BodySendMode) + *p = x + return p +} + +func (x ProcessingMode_BodySendMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ProcessingMode_BodySendMode) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_enumTypes[1].Descriptor() +} + +func (ProcessingMode_BodySendMode) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_enumTypes[1] +} + +func (x ProcessingMode_BodySendMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ProcessingMode_BodySendMode.Descriptor instead. +func (ProcessingMode_BodySendMode) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_rawDescGZIP(), []int{0, 1} +} + +// [#next-free-field: 7] +type ProcessingMode struct { + state protoimpl.MessageState `protogen:"open.v1"` + // How to handle the request header. Default is "SEND". + RequestHeaderMode ProcessingMode_HeaderSendMode `protobuf:"varint,1,opt,name=request_header_mode,json=requestHeaderMode,proto3,enum=solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode_HeaderSendMode" json:"request_header_mode,omitempty"` + // How to handle the response header. Default is "SEND". + ResponseHeaderMode ProcessingMode_HeaderSendMode `protobuf:"varint,2,opt,name=response_header_mode,json=responseHeaderMode,proto3,enum=solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode_HeaderSendMode" json:"response_header_mode,omitempty"` + // How to handle the request body. Default is "NONE". + RequestBodyMode ProcessingMode_BodySendMode `protobuf:"varint,3,opt,name=request_body_mode,json=requestBodyMode,proto3,enum=solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode_BodySendMode" json:"request_body_mode,omitempty"` + // How do handle the response body. Default is "NONE". + ResponseBodyMode ProcessingMode_BodySendMode `protobuf:"varint,4,opt,name=response_body_mode,json=responseBodyMode,proto3,enum=solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode_BodySendMode" json:"response_body_mode,omitempty"` + // How to handle the request trailers. Default is "SKIP". + RequestTrailerMode ProcessingMode_HeaderSendMode `protobuf:"varint,5,opt,name=request_trailer_mode,json=requestTrailerMode,proto3,enum=solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode_HeaderSendMode" json:"request_trailer_mode,omitempty"` + // How to handle the response trailers. Default is "SKIP". + ResponseTrailerMode ProcessingMode_HeaderSendMode `protobuf:"varint,6,opt,name=response_trailer_mode,json=responseTrailerMode,proto3,enum=solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode_HeaderSendMode" json:"response_trailer_mode,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ProcessingMode) Reset() { + *x = ProcessingMode{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ProcessingMode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProcessingMode) ProtoMessage() {} + +func (x *ProcessingMode) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProcessingMode.ProtoReflect.Descriptor instead. +func (*ProcessingMode) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_rawDescGZIP(), []int{0} +} + +func (x *ProcessingMode) GetRequestHeaderMode() ProcessingMode_HeaderSendMode { + if x != nil { + return x.RequestHeaderMode + } + return ProcessingMode_DEFAULT +} + +func (x *ProcessingMode) GetResponseHeaderMode() ProcessingMode_HeaderSendMode { + if x != nil { + return x.ResponseHeaderMode + } + return ProcessingMode_DEFAULT +} + +func (x *ProcessingMode) GetRequestBodyMode() ProcessingMode_BodySendMode { + if x != nil { + return x.RequestBodyMode + } + return ProcessingMode_NONE +} + +func (x *ProcessingMode) GetResponseBodyMode() ProcessingMode_BodySendMode { + if x != nil { + return x.ResponseBodyMode + } + return ProcessingMode_NONE +} + +func (x *ProcessingMode) GetRequestTrailerMode() ProcessingMode_HeaderSendMode { + if x != nil { + return x.RequestTrailerMode + } + return ProcessingMode_DEFAULT +} + +func (x *ProcessingMode) GetResponseTrailerMode() ProcessingMode_HeaderSendMode { + if x != nil { + return x.ResponseTrailerMode + } + return ProcessingMode_DEFAULT +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_rawDesc = string([]byte{ + 0x0a, 0x73, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x68, + 0x74, 0x74, 0x70, 0x2f, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2f, 0x76, 0x33, 0x2f, + 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x31, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x65, 0x78, 0x74, + 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x1a, 0x1d, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdb, 0x07, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, + 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x13, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x50, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x65, 0x78, + 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x53, + 0x65, 0x6e, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x50, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x65, 0x78, 0x74, 0x5f, + 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, + 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x53, 0x65, 0x6e, + 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x12, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, + 0x6f, 0x64, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x4e, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, + 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x4d, 0x6f, + 0x64, 0x65, 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x12, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4e, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, + 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x63, + 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x53, + 0x65, 0x6e, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x10, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x4d, + 0x6f, 0x64, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x14, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x50, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, + 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, + 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x53, 0x65, 0x6e, 0x64, + 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x12, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x8e, 0x01, 0x0a, 0x15, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, + 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x50, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, + 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, + 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x53, 0x65, 0x6e, 0x64, + 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x13, + 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x4d, + 0x6f, 0x64, 0x65, 0x22, 0x31, 0x0a, 0x0e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x53, 0x65, 0x6e, + 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, + 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x45, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, + 0x53, 0x4b, 0x49, 0x50, 0x10, 0x02, 0x22, 0x4a, 0x0a, 0x0c, 0x42, 0x6f, 0x64, 0x79, 0x53, 0x65, + 0x6e, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, + 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, + 0x0a, 0x08, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x45, 0x44, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, + 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x41, 0x4c, + 0x10, 0x03, 0x42, 0xca, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, + 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x37, 0x69, 0x6f, 0x2e, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, + 0x76, 0x33, 0x42, 0x13, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x4d, 0x6f, + 0x64, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x64, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x68, + 0x74, 0x74, 0x70, 0x2f, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2f, 0x76, 0x33, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_goTypes = []any{ + (ProcessingMode_HeaderSendMode)(0), // 0: solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode.HeaderSendMode + (ProcessingMode_BodySendMode)(0), // 1: solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode.BodySendMode + (*ProcessingMode)(nil), // 2: solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_depIdxs = []int32{ + 0, // 0: solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode.request_header_mode:type_name -> solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode.HeaderSendMode + 0, // 1: solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode.response_header_mode:type_name -> solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode.HeaderSendMode + 1, // 2: solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode.request_body_mode:type_name -> solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode.BodySendMode + 1, // 3: solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode.response_body_mode:type_name -> solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode.BodySendMode + 0, // 4: solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode.request_trailer_mode:type_name -> solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode.HeaderSendMode + 0, // 5: solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode.response_trailer_mode:type_name -> solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode.HeaderSendMode + 6, // [6:6] is the sub-list for method output_type + 6, // [6:6] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_rawDesc)), + NumEnums: 2, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_enumTypes, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.pb.hash.go new file mode 100644 index 000000000..7020f2d2b --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.pb.hash.go @@ -0,0 +1,76 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ProcessingMode) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.extensions.filters.http.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/ext_proc/v3.ProcessingMode")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetRequestHeaderMode()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetResponseHeaderMode()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetRequestBodyMode()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetResponseBodyMode()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetRequestTrailerMode()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetResponseTrailerMode()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.pb.uniquehash.go new file mode 100644 index 000000000..32c33f2fa --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.pb.uniquehash.go @@ -0,0 +1,95 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/ext_proc/v3/processing_mode.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ProcessingMode) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.extensions.filters.http.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/ext_proc/v3.ProcessingMode")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RequestHeaderMode")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRequestHeaderMode()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ResponseHeaderMode")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetResponseHeaderMode()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RequestBodyMode")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRequestBodyMode()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ResponseBodyMode")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetResponseBodyMode()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RequestTrailerMode")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRequestTrailerMode()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ResponseTrailerMode")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetResponseTrailerMode()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/graphql/v2/graphql.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/graphql/v2/graphql.pb.go new file mode 100644 index 000000000..3eda4f06e --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/graphql/v2/graphql.pb.go @@ -0,0 +1,1674 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/graphql/graphql.proto + +package v2 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// DEPRECATED: This enum is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type ValueProvider_TypedValueProvider_Type int32 + +const ( + ValueProvider_TypedValueProvider_STRING ValueProvider_TypedValueProvider_Type = 0 + ValueProvider_TypedValueProvider_INT ValueProvider_TypedValueProvider_Type = 1 + ValueProvider_TypedValueProvider_FLOAT ValueProvider_TypedValueProvider_Type = 2 + ValueProvider_TypedValueProvider_BOOLEAN ValueProvider_TypedValueProvider_Type = 3 +) + +// Enum value maps for ValueProvider_TypedValueProvider_Type. +var ( + ValueProvider_TypedValueProvider_Type_name = map[int32]string{ + 0: "STRING", + 1: "INT", + 2: "FLOAT", + 3: "BOOLEAN", + } + ValueProvider_TypedValueProvider_Type_value = map[string]int32{ + "STRING": 0, + "INT": 1, + "FLOAT": 2, + "BOOLEAN": 3, + } +) + +func (x ValueProvider_TypedValueProvider_Type) Enum() *ValueProvider_TypedValueProvider_Type { + p := new(ValueProvider_TypedValueProvider_Type) + *p = x + return p +} + +func (x ValueProvider_TypedValueProvider_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ValueProvider_TypedValueProvider_Type) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_enumTypes[0].Descriptor() +} + +func (ValueProvider_TypedValueProvider_Type) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_enumTypes[0] +} + +func (x ValueProvider_TypedValueProvider_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ValueProvider_TypedValueProvider_Type.Descriptor instead. +func (ValueProvider_TypedValueProvider_Type) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{3, 2, 0} +} + +// DEPRECATED: This enum is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type CacheControl_CacheControlScope int32 + +const ( + CacheControl_UNSET CacheControl_CacheControlScope = 0 + CacheControl_PUBLIC CacheControl_CacheControlScope = 1 + CacheControl_PRIVATE CacheControl_CacheControlScope = 2 +) + +// Enum value maps for CacheControl_CacheControlScope. +var ( + CacheControl_CacheControlScope_name = map[int32]string{ + 0: "UNSET", + 1: "PUBLIC", + 2: "PRIVATE", + } + CacheControl_CacheControlScope_value = map[string]int32{ + "UNSET": 0, + "PUBLIC": 1, + "PRIVATE": 2, + } +) + +func (x CacheControl_CacheControlScope) Enum() *CacheControl_CacheControlScope { + p := new(CacheControl_CacheControlScope) + *p = x + return p +} + +func (x CacheControl_CacheControlScope) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CacheControl_CacheControlScope) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_enumTypes[1].Descriptor() +} + +func (CacheControl_CacheControlScope) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_enumTypes[1] +} + +func (x CacheControl_CacheControlScope) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CacheControl_CacheControlScope.Descriptor instead. +func (CacheControl_CacheControlScope) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{18, 0} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type PathSegment struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PathSegment) Reset() { + *x = PathSegment{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PathSegment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PathSegment) ProtoMessage() {} + +func (x *PathSegment) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PathSegment.ProtoReflect.Descriptor instead. +func (*PathSegment) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{0} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type Path struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Path) Reset() { + *x = Path{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Path) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Path) ProtoMessage() {} + +func (x *Path) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Path.ProtoReflect.Descriptor instead. +func (*Path) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{1} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type TemplatedPath struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TemplatedPath) Reset() { + *x = TemplatedPath{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TemplatedPath) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TemplatedPath) ProtoMessage() {} + +func (x *TemplatedPath) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TemplatedPath.ProtoReflect.Descriptor instead. +func (*TemplatedPath) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{2} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type ValueProvider struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ValueProvider) Reset() { + *x = ValueProvider{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ValueProvider) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValueProvider) ProtoMessage() {} + +func (x *ValueProvider) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ValueProvider.ProtoReflect.Descriptor instead. +func (*ValueProvider) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{3} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type JsonValueList struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonValueList) Reset() { + *x = JsonValueList{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonValueList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonValueList) ProtoMessage() {} + +func (x *JsonValueList) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonValueList.ProtoReflect.Descriptor instead. +func (*JsonValueList) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{4} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type JsonValue struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonValue) Reset() { + *x = JsonValue{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonValue) ProtoMessage() {} + +func (x *JsonValue) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonValue.ProtoReflect.Descriptor instead. +func (*JsonValue) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{5} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type JsonKeyValue struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonKeyValue) Reset() { + *x = JsonKeyValue{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonKeyValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonKeyValue) ProtoMessage() {} + +func (x *JsonKeyValue) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonKeyValue.ProtoReflect.Descriptor instead. +func (*JsonKeyValue) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{6} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type JsonNode struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonNode) Reset() { + *x = JsonNode{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonNode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonNode) ProtoMessage() {} + +func (x *JsonNode) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonNode.ProtoReflect.Descriptor instead. +func (*JsonNode) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{7} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type RequestTemplate struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RequestTemplate) Reset() { + *x = RequestTemplate{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RequestTemplate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RequestTemplate) ProtoMessage() {} + +func (x *RequestTemplate) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RequestTemplate.ProtoReflect.Descriptor instead. +func (*RequestTemplate) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{8} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type ResponseTemplate struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResponseTemplate) Reset() { + *x = ResponseTemplate{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResponseTemplate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResponseTemplate) ProtoMessage() {} + +func (x *ResponseTemplate) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResponseTemplate.ProtoReflect.Descriptor instead. +func (*ResponseTemplate) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{9} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type RESTResolver struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RESTResolver) Reset() { + *x = RESTResolver{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RESTResolver) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RESTResolver) ProtoMessage() {} + +func (x *RESTResolver) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RESTResolver.ProtoReflect.Descriptor instead. +func (*RESTResolver) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{10} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type GrpcRequestTemplate struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GrpcRequestTemplate) Reset() { + *x = GrpcRequestTemplate{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GrpcRequestTemplate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GrpcRequestTemplate) ProtoMessage() {} + +func (x *GrpcRequestTemplate) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GrpcRequestTemplate.ProtoReflect.Descriptor instead. +func (*GrpcRequestTemplate) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{11} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type GrpcDescriptorRegistry struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GrpcDescriptorRegistry) Reset() { + *x = GrpcDescriptorRegistry{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GrpcDescriptorRegistry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GrpcDescriptorRegistry) ProtoMessage() {} + +func (x *GrpcDescriptorRegistry) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GrpcDescriptorRegistry.ProtoReflect.Descriptor instead. +func (*GrpcDescriptorRegistry) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{12} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type GrpcResolver struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GrpcResolver) Reset() { + *x = GrpcResolver{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GrpcResolver) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GrpcResolver) ProtoMessage() {} + +func (x *GrpcResolver) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GrpcResolver.ProtoReflect.Descriptor instead. +func (*GrpcResolver) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{13} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type StaticResolver struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StaticResolver) Reset() { + *x = StaticResolver{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StaticResolver) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StaticResolver) ProtoMessage() {} + +func (x *StaticResolver) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StaticResolver.ProtoReflect.Descriptor instead. +func (*StaticResolver) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{14} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type AbstractTypeResolver struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AbstractTypeResolver) Reset() { + *x = AbstractTypeResolver{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AbstractTypeResolver) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AbstractTypeResolver) ProtoMessage() {} + +func (x *AbstractTypeResolver) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AbstractTypeResolver.ProtoReflect.Descriptor instead. +func (*AbstractTypeResolver) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{15} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type QueryMatcher struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *QueryMatcher) Reset() { + *x = QueryMatcher{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *QueryMatcher) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryMatcher) ProtoMessage() {} + +func (x *QueryMatcher) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QueryMatcher.ProtoReflect.Descriptor instead. +func (*QueryMatcher) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{16} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type Resolution struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Resolution) Reset() { + *x = Resolution{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Resolution) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Resolution) ProtoMessage() {} + +func (x *Resolution) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Resolution.ProtoReflect.Descriptor instead. +func (*Resolution) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{17} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type CacheControl struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CacheControl) Reset() { + *x = CacheControl{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CacheControl) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CacheControl) ProtoMessage() {} + +func (x *CacheControl) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CacheControl.ProtoReflect.Descriptor instead. +func (*CacheControl) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{18} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type GraphQLConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GraphQLConfig) Reset() { + *x = GraphQLConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GraphQLConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GraphQLConfig) ProtoMessage() {} + +func (x *GraphQLConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GraphQLConfig.ProtoReflect.Descriptor instead. +func (*GraphQLConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{19} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type GraphQLRouteConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GraphQLRouteConfig) Reset() { + *x = GraphQLRouteConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GraphQLRouteConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GraphQLRouteConfig) ProtoMessage() {} + +func (x *GraphQLRouteConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GraphQLRouteConfig.ProtoReflect.Descriptor instead. +func (*GraphQLRouteConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{20} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type PersistedQueryCacheConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PersistedQueryCacheConfig) Reset() { + *x = PersistedQueryCacheConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PersistedQueryCacheConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PersistedQueryCacheConfig) ProtoMessage() {} + +func (x *PersistedQueryCacheConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PersistedQueryCacheConfig.ProtoReflect.Descriptor instead. +func (*PersistedQueryCacheConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{21} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type ExecutableSchema struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExecutableSchema) Reset() { + *x = ExecutableSchema{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExecutableSchema) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecutableSchema) ProtoMessage() {} + +func (x *ExecutableSchema) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecutableSchema.ProtoReflect.Descriptor instead. +func (*ExecutableSchema) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{22} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type Executor struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Executor) Reset() { + *x = Executor{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Executor) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Executor) ProtoMessage() {} + +func (x *Executor) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Executor.ProtoReflect.Descriptor instead. +func (*Executor) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{23} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type ValueProvider_GraphQLArgExtraction struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ValueProvider_GraphQLArgExtraction) Reset() { + *x = ValueProvider_GraphQLArgExtraction{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ValueProvider_GraphQLArgExtraction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValueProvider_GraphQLArgExtraction) ProtoMessage() {} + +func (x *ValueProvider_GraphQLArgExtraction) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ValueProvider_GraphQLArgExtraction.ProtoReflect.Descriptor instead. +func (*ValueProvider_GraphQLArgExtraction) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{3, 0} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type ValueProvider_GraphQLParentExtraction struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ValueProvider_GraphQLParentExtraction) Reset() { + *x = ValueProvider_GraphQLParentExtraction{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ValueProvider_GraphQLParentExtraction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValueProvider_GraphQLParentExtraction) ProtoMessage() {} + +func (x *ValueProvider_GraphQLParentExtraction) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ValueProvider_GraphQLParentExtraction.ProtoReflect.Descriptor instead. +func (*ValueProvider_GraphQLParentExtraction) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{3, 1} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type ValueProvider_TypedValueProvider struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ValueProvider_TypedValueProvider) Reset() { + *x = ValueProvider_TypedValueProvider{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ValueProvider_TypedValueProvider) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValueProvider_TypedValueProvider) ProtoMessage() {} + +func (x *ValueProvider_TypedValueProvider) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ValueProvider_TypedValueProvider.ProtoReflect.Descriptor instead. +func (*ValueProvider_TypedValueProvider) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{3, 2} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type ValueProvider_Provider struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ValueProvider_Provider) Reset() { + *x = ValueProvider_Provider{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ValueProvider_Provider) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValueProvider_Provider) ProtoMessage() {} + +func (x *ValueProvider_Provider) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ValueProvider_Provider.ProtoReflect.Descriptor instead. +func (*ValueProvider_Provider) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{3, 3} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type StaticResolver_AsyncResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StaticResolver_AsyncResponse) Reset() { + *x = StaticResolver_AsyncResponse{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StaticResolver_AsyncResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StaticResolver_AsyncResponse) ProtoMessage() {} + +func (x *StaticResolver_AsyncResponse) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StaticResolver_AsyncResponse.ProtoReflect.Descriptor instead. +func (*StaticResolver_AsyncResponse) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{14, 0} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type QueryMatcher_FieldMatcher struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *QueryMatcher_FieldMatcher) Reset() { + *x = QueryMatcher_FieldMatcher{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *QueryMatcher_FieldMatcher) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryMatcher_FieldMatcher) ProtoMessage() {} + +func (x *QueryMatcher_FieldMatcher) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[29] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QueryMatcher_FieldMatcher.ProtoReflect.Descriptor instead. +func (*QueryMatcher_FieldMatcher) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{16, 0} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type Executor_Local struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Executor_Local) Reset() { + *x = Executor_Local{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Executor_Local) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Executor_Local) ProtoMessage() {} + +func (x *Executor_Local) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[30] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Executor_Local.ProtoReflect.Descriptor instead. +func (*Executor_Local) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{23, 0} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type Executor_Remote struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Executor_Remote) Reset() { + *x = Executor_Remote{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Executor_Remote) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Executor_Remote) ProtoMessage() {} + +func (x *Executor_Remote) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[31] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Executor_Remote.ProtoReflect.Descriptor instead. +func (*Executor_Remote) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{23, 1} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type Executor_Remote_Extraction struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Executor_Remote_Extraction) Reset() { + *x = Executor_Remote_Extraction{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Executor_Remote_Extraction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Executor_Remote_Extraction) ProtoMessage() {} + +func (x *Executor_Remote_Extraction) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[32] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Executor_Remote_Extraction.ProtoReflect.Descriptor instead. +func (*Executor_Remote_Extraction) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{23, 1, 0} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type Executor_Remote_RemoteSchemaRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Executor_Remote_RemoteSchemaRequest) Reset() { + *x = Executor_Remote_RemoteSchemaRequest{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Executor_Remote_RemoteSchemaRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Executor_Remote_RemoteSchemaRequest) ProtoMessage() {} + +func (x *Executor_Remote_RemoteSchemaRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[33] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Executor_Remote_RemoteSchemaRequest.ProtoReflect.Descriptor instead. +func (*Executor_Remote_RemoteSchemaRequest) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{23, 1, 1} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type Executor_Remote_Extraction_DynamicMetadataExtraction struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Executor_Remote_Extraction_DynamicMetadataExtraction) Reset() { + *x = Executor_Remote_Extraction_DynamicMetadataExtraction{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Executor_Remote_Extraction_DynamicMetadataExtraction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Executor_Remote_Extraction_DynamicMetadataExtraction) ProtoMessage() {} + +func (x *Executor_Remote_Extraction_DynamicMetadataExtraction) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes[34] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Executor_Remote_Extraction_DynamicMetadataExtraction.ProtoReflect.Descriptor instead. +func (*Executor_Remote_Extraction_DynamicMetadataExtraction) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP(), []int{23, 1, 0, 0} +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDesc = string([]byte{ + 0x0a, 0x5a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x2f, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x23, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x2e, 0x76, + 0x32, 0x22, 0x30, 0x0a, 0x0b, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, + 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, + 0x10, 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x03, + 0x61, 0x6c, 0x6c, 0x22, 0x16, 0x0a, 0x04, 0x50, 0x61, 0x74, 0x68, 0x4a, 0x04, 0x08, 0x01, 0x10, + 0x02, 0x52, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x37, 0x0a, 0x0d, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x4a, 0x04, 0x08, 0x01, + 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x0d, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x70, + 0x61, 0x74, 0x68, 0x73, 0x22, 0xd1, 0x02, 0x0a, 0x0d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x1a, 0x32, 0x0a, 0x14, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, + 0x4c, 0x41, 0x72, 0x67, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x04, + 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x08, 0x61, 0x72, 0x67, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x1a, 0x25, 0x0a, 0x17, 0x47, 0x72, + 0x61, 0x70, 0x68, 0x51, 0x4c, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, + 0x68, 0x1a, 0x70, 0x0a, 0x12, 0x54, 0x79, 0x70, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x33, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x49, + 0x4e, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x10, 0x02, 0x12, + 0x0b, 0x0a, 0x07, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x01, + 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x1a, 0x49, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4a, + 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, + 0x04, 0x52, 0x0b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x5f, 0x61, 0x72, 0x67, 0x52, 0x0e, + 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x0e, + 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x4a, 0x04, + 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x1d, 0x0a, 0x0d, 0x4a, 0x73, 0x6f, 0x6e, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x39, 0x0a, 0x09, 0x4a, 0x73, 0x6f, 0x6e, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, + 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x52, 0x0e, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x04, 0x6c, 0x69, + 0x73, 0x74, 0x22, 0x26, 0x0a, 0x0c, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x1c, 0x0a, 0x08, 0x4a, 0x73, + 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x0a, 0x6b, 0x65, + 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x49, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, + 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x07, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x62, + 0x6f, 0x64, 0x79, 0x22, 0x34, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, + 0x02, 0x10, 0x03, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, + 0x52, 0x07, 0x73, 0x65, 0x74, 0x74, 0x65, 0x72, 0x73, 0x22, 0x69, 0x0a, 0x0c, 0x52, 0x45, 0x53, + 0x54, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, + 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, + 0x05, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x69, 0x52, 0x11, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x52, 0x17, 0x70, 0x72, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x09, 0x73, 0x70, 0x61, 0x6e, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x71, 0x0a, 0x13, 0x47, 0x72, 0x70, 0x63, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, + 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, + 0x04, 0x10, 0x05, 0x52, 0x15, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x10, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x31, 0x0a, 0x16, 0x47, 0x72, 0x70, 0x63, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, + 0x79, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x4a, 0x0a, 0x0c, 0x47, 0x72, + 0x70, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, + 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x0a, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x69, 0x52, 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x09, 0x73, 0x70, 0x61, + 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x82, 0x01, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x74, 0x69, + 0x63, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x1a, 0x2f, 0x0a, 0x0d, 0x41, 0x73, 0x79, + 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, + 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x52, 0x08, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x6d, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, + 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x0d, 0x73, 0x79, + 0x6e, 0x63, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0e, 0x61, 0x73, 0x79, + 0x6e, 0x63, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0e, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x41, + 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, + 0x76, 0x65, 0x72, 0x22, 0x4c, 0x0a, 0x0c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x72, 0x1a, 0x27, 0x0a, 0x0c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x72, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4a, 0x04, 0x08, 0x01, + 0x10, 0x02, 0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x72, 0x22, 0x5f, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, + 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, + 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, + 0x06, 0x10, 0x07, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x08, 0x72, 0x65, + 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x70, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x52, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x22, 0x7a, 0x0a, 0x0c, 0x43, 0x61, 0x63, 0x68, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x22, 0x37, 0x0a, 0x11, 0x43, 0x61, 0x63, 0x68, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x4e, 0x53, 0x45, 0x54, + 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x01, 0x12, 0x0b, + 0x0a, 0x07, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x01, 0x10, + 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x07, 0x6d, + 0x61, 0x78, 0x5f, 0x61, 0x67, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x0f, 0x69, + 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x67, 0x65, 0x22, 0x0f, + 0x0a, 0x0d, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, + 0x80, 0x01, 0x0a, 0x12, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, + 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x52, 0x11, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x1c, + 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, + 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x14, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x68, 0x61, 0x73, 0x68, + 0x65, 0x73, 0x22, 0x2d, 0x0a, 0x19, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x43, 0x61, 0x63, 0x68, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, + 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x0a, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x22, 0x6e, 0x0a, 0x10, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, + 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x11, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x08, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x19, 0x6c, 0x6f, 0x67, 0x5f, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x66, + 0x6f, 0x22, 0xe9, 0x02, 0x0a, 0x08, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x1a, 0x47, + 0x0a, 0x05, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, + 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x6c, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, + 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x6d, 0x61, + 0x78, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x1a, 0xf8, 0x01, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x1a, 0x81, 0x01, 0x0a, 0x0a, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x1a, 0x40, 0x0a, 0x19, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x04, + 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x12, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, + 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x52, 0x10, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x38, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4a, 0x04, 0x08, + 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x52, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, + 0x10, 0x04, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x69, 0x52, 0x07, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x09, 0x73, 0x70, 0x61, 0x6e, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x05, + 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x42, 0xae, 0x01, + 0x0a, 0x31, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, + 0x2e, 0x76, 0x32, 0x42, 0x12, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x46, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x63, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x68, + 0x74, 0x74, 0x70, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes = make([]protoimpl.MessageInfo, 35) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_goTypes = []any{ + (ValueProvider_TypedValueProvider_Type)(0), // 0: envoy.config.filter.http.graphql.v2.ValueProvider.TypedValueProvider.Type + (CacheControl_CacheControlScope)(0), // 1: envoy.config.filter.http.graphql.v2.CacheControl.CacheControlScope + (*PathSegment)(nil), // 2: envoy.config.filter.http.graphql.v2.PathSegment + (*Path)(nil), // 3: envoy.config.filter.http.graphql.v2.Path + (*TemplatedPath)(nil), // 4: envoy.config.filter.http.graphql.v2.TemplatedPath + (*ValueProvider)(nil), // 5: envoy.config.filter.http.graphql.v2.ValueProvider + (*JsonValueList)(nil), // 6: envoy.config.filter.http.graphql.v2.JsonValueList + (*JsonValue)(nil), // 7: envoy.config.filter.http.graphql.v2.JsonValue + (*JsonKeyValue)(nil), // 8: envoy.config.filter.http.graphql.v2.JsonKeyValue + (*JsonNode)(nil), // 9: envoy.config.filter.http.graphql.v2.JsonNode + (*RequestTemplate)(nil), // 10: envoy.config.filter.http.graphql.v2.RequestTemplate + (*ResponseTemplate)(nil), // 11: envoy.config.filter.http.graphql.v2.ResponseTemplate + (*RESTResolver)(nil), // 12: envoy.config.filter.http.graphql.v2.RESTResolver + (*GrpcRequestTemplate)(nil), // 13: envoy.config.filter.http.graphql.v2.GrpcRequestTemplate + (*GrpcDescriptorRegistry)(nil), // 14: envoy.config.filter.http.graphql.v2.GrpcDescriptorRegistry + (*GrpcResolver)(nil), // 15: envoy.config.filter.http.graphql.v2.GrpcResolver + (*StaticResolver)(nil), // 16: envoy.config.filter.http.graphql.v2.StaticResolver + (*AbstractTypeResolver)(nil), // 17: envoy.config.filter.http.graphql.v2.AbstractTypeResolver + (*QueryMatcher)(nil), // 18: envoy.config.filter.http.graphql.v2.QueryMatcher + (*Resolution)(nil), // 19: envoy.config.filter.http.graphql.v2.Resolution + (*CacheControl)(nil), // 20: envoy.config.filter.http.graphql.v2.CacheControl + (*GraphQLConfig)(nil), // 21: envoy.config.filter.http.graphql.v2.GraphQLConfig + (*GraphQLRouteConfig)(nil), // 22: envoy.config.filter.http.graphql.v2.GraphQLRouteConfig + (*PersistedQueryCacheConfig)(nil), // 23: envoy.config.filter.http.graphql.v2.PersistedQueryCacheConfig + (*ExecutableSchema)(nil), // 24: envoy.config.filter.http.graphql.v2.ExecutableSchema + (*Executor)(nil), // 25: envoy.config.filter.http.graphql.v2.Executor + (*ValueProvider_GraphQLArgExtraction)(nil), // 26: envoy.config.filter.http.graphql.v2.ValueProvider.GraphQLArgExtraction + (*ValueProvider_GraphQLParentExtraction)(nil), // 27: envoy.config.filter.http.graphql.v2.ValueProvider.GraphQLParentExtraction + (*ValueProvider_TypedValueProvider)(nil), // 28: envoy.config.filter.http.graphql.v2.ValueProvider.TypedValueProvider + (*ValueProvider_Provider)(nil), // 29: envoy.config.filter.http.graphql.v2.ValueProvider.Provider + (*StaticResolver_AsyncResponse)(nil), // 30: envoy.config.filter.http.graphql.v2.StaticResolver.AsyncResponse + (*QueryMatcher_FieldMatcher)(nil), // 31: envoy.config.filter.http.graphql.v2.QueryMatcher.FieldMatcher + (*Executor_Local)(nil), // 32: envoy.config.filter.http.graphql.v2.Executor.Local + (*Executor_Remote)(nil), // 33: envoy.config.filter.http.graphql.v2.Executor.Remote + (*Executor_Remote_Extraction)(nil), // 34: envoy.config.filter.http.graphql.v2.Executor.Remote.Extraction + (*Executor_Remote_RemoteSchemaRequest)(nil), // 35: envoy.config.filter.http.graphql.v2.Executor.Remote.RemoteSchemaRequest + (*Executor_Remote_Extraction_DynamicMetadataExtraction)(nil), // 36: envoy.config.filter.http.graphql.v2.Executor.Remote.Extraction.DynamicMetadataExtraction +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_rawDesc)), + NumEnums: 2, + NumMessages: 35, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_enumTypes, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/graphql/v2/stitching.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/graphql/v2/stitching.pb.go new file mode 100644 index 000000000..622f20cb9 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/graphql/v2/stitching.pb.go @@ -0,0 +1,572 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/graphql/stitching.proto + +package v2 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/envoyproxy/protoc-gen-validate/validate" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/known/anypb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type FieldNode struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FieldNode) Reset() { + *x = FieldNode{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FieldNode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FieldNode) ProtoMessage() {} + +func (x *FieldNode) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FieldNode.ProtoReflect.Descriptor instead. +func (*FieldNode) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_rawDescGZIP(), []int{0} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type FieldNodeMap struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FieldNodeMap) Reset() { + *x = FieldNodeMap{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FieldNodeMap) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FieldNodeMap) ProtoMessage() {} + +func (x *FieldNodeMap) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FieldNodeMap.ProtoReflect.Descriptor instead. +func (*FieldNodeMap) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_rawDescGZIP(), []int{1} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type FieldNodes struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FieldNodes) Reset() { + *x = FieldNodes{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FieldNodes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FieldNodes) ProtoMessage() {} + +func (x *FieldNodes) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FieldNodes.ProtoReflect.Descriptor instead. +func (*FieldNodes) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_rawDescGZIP(), []int{2} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type ResolverConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResolverConfig) Reset() { + *x = ResolverConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResolverConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResolverConfig) ProtoMessage() {} + +func (x *ResolverConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResolverConfig.ProtoReflect.Descriptor instead. +func (*ResolverConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_rawDescGZIP(), []int{3} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type Schemas struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Schemas) Reset() { + *x = Schemas{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Schemas) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Schemas) ProtoMessage() {} + +func (x *Schemas) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Schemas.ProtoReflect.Descriptor instead. +func (*Schemas) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_rawDescGZIP(), []int{4} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type ArgPath struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ArgPath) Reset() { + *x = ArgPath{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ArgPath) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArgPath) ProtoMessage() {} + +func (x *ArgPath) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ArgPath.ProtoReflect.Descriptor instead. +func (*ArgPath) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_rawDescGZIP(), []int{5} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type ResolverInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResolverInfo) Reset() { + *x = ResolverInfo{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResolverInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResolverInfo) ProtoMessage() {} + +func (x *ResolverInfo) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResolverInfo.ProtoReflect.Descriptor instead. +func (*ResolverInfo) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_rawDescGZIP(), []int{6} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type MergedTypeConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MergedTypeConfig) Reset() { + *x = MergedTypeConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MergedTypeConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MergedTypeConfig) ProtoMessage() {} + +func (x *MergedTypeConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MergedTypeConfig.ProtoReflect.Descriptor instead. +func (*MergedTypeConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_rawDescGZIP(), []int{7} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type StitchingInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StitchingInfo) Reset() { + *x = StitchingInfo{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StitchingInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StitchingInfo) ProtoMessage() {} + +func (x *StitchingInfo) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StitchingInfo.ProtoReflect.Descriptor instead. +func (*StitchingInfo) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_rawDescGZIP(), []int{8} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type StitchingResolver struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StitchingResolver) Reset() { + *x = StitchingResolver{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StitchingResolver) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StitchingResolver) ProtoMessage() {} + +func (x *StitchingResolver) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StitchingResolver.ProtoReflect.Descriptor instead. +func (*StitchingResolver) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_rawDescGZIP(), []int{9} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type StitchingInfo_SubschemaConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StitchingInfo_SubschemaConfig) Reset() { + *x = StitchingInfo_SubschemaConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StitchingInfo_SubschemaConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StitchingInfo_SubschemaConfig) ProtoMessage() {} + +func (x *StitchingInfo_SubschemaConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StitchingInfo_SubschemaConfig.ProtoReflect.Descriptor instead. +func (*StitchingInfo_SubschemaConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_rawDescGZIP(), []int{8, 0} +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_rawDesc = string([]byte{ + 0x0a, 0x5c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x2f, 0x73, + 0x74, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x22, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x74, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x32, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x5a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x71, 0x6c, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0x17, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x4a, + 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1b, 0x0a, 0x0c, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x61, 0x70, 0x4a, 0x04, 0x08, 0x01, 0x10, + 0x02, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x1f, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x0b, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x37, 0x0a, 0x0e, 0x52, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x04, 0x08, 0x01, 0x10, + 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x0d, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x4a, 0x04, 0x08, + 0x01, 0x10, 0x02, 0x52, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x22, 0x33, 0x0a, 0x07, + 0x41, 0x72, 0x67, 0x50, 0x61, 0x74, 0x68, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, + 0x02, 0x10, 0x03, 0x52, 0x0b, 0x73, 0x65, 0x74, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x74, 0x68, + 0x52, 0x0f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x74, + 0x68, 0x22, 0x2c, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, + 0x6f, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x0a, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, + 0xd8, 0x01, 0x0a, 0x10, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, + 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, + 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x52, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x52, 0x0e, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x65, 0x74, 0x73, 0x52, 0x1f, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x24, 0x6e, 0x6f, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x1d, 0x64, 0x65, 0x63, 0x6c, + 0x61, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x73, + 0x75, 0x62, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, 0x1f, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0xb0, 0x01, 0x0a, 0x0d, 0x53, + 0x74, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x2a, 0x0a, 0x0f, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, + 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, + 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, + 0x52, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x62, 0x79, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x6f, 0x64, + 0x65, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x0c, 0x6d, 0x65, 0x72, + 0x67, 0x65, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x52, 0x22, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x75, 0x62, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x29, 0x0a, + 0x11, 0x53, 0x74, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, + 0x65, 0x72, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x0e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0xb1, 0x01, 0x0a, 0x31, 0x69, 0x6f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, + 0x74, 0x74, 0x70, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x2e, 0x76, 0x32, 0x42, 0x15, + 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x53, 0x74, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x63, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x68, 0x74, 0x74, + 0x70, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_goTypes = []any{ + (*FieldNode)(nil), // 0: envoy.config.resolver.stitching.v2.FieldNode + (*FieldNodeMap)(nil), // 1: envoy.config.resolver.stitching.v2.FieldNodeMap + (*FieldNodes)(nil), // 2: envoy.config.resolver.stitching.v2.FieldNodes + (*ResolverConfig)(nil), // 3: envoy.config.resolver.stitching.v2.ResolverConfig + (*Schemas)(nil), // 4: envoy.config.resolver.stitching.v2.Schemas + (*ArgPath)(nil), // 5: envoy.config.resolver.stitching.v2.ArgPath + (*ResolverInfo)(nil), // 6: envoy.config.resolver.stitching.v2.ResolverInfo + (*MergedTypeConfig)(nil), // 7: envoy.config.resolver.stitching.v2.MergedTypeConfig + (*StitchingInfo)(nil), // 8: envoy.config.resolver.stitching.v2.StitchingInfo + (*StitchingResolver)(nil), // 9: envoy.config.resolver.stitching.v2.StitchingResolver + (*StitchingInfo_SubschemaConfig)(nil), // 10: envoy.config.resolver.stitching.v2.StitchingInfo.SubschemaConfig +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_graphql_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_rawDesc)), + NumEnums: 0, + NumMessages: 11, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_graphql_stitching_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/jwt_authn/v3/config.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/jwt_authn/v3/config.pb.go index c1f1bbe6f..92d46ed91 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/jwt_authn/v3/config.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/jwt_authn/v3/config.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/jwt_authn/v3/config.proto @@ -9,16 +9,16 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - duration "github.com/golang/protobuf/ptypes/duration" - empty "github.com/golang/protobuf/ptypes/empty" v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" v31 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + emptypb "google.golang.org/protobuf/types/known/emptypb" ) const ( @@ -28,15 +28,11 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Please see following for JWT authentication flow: // -// * `JSON Web Token (JWT) `_ -// * `The OAuth 2.0 Authorization Framework `_ -// * `OpenID Connect `_ +// * [JSON Web Token (JWT)](https://datatracker.ietf.org/doc/html/rfc7519) +// * [The OAuth 2.0 Authorization Framework](https://datatracker.ietf.org/doc/html/rfc6749) +// * [OpenID Connect](http://openid.net/connect) // // A JwtProvider message specifies how a JSON Web Token (JWT) can be verified. It specifies: // @@ -50,25 +46,22 @@ const _ = proto.ProtoPackageIsVersion4 // // .. code-block:: yaml // -// issuer: https://example.com -// audiences: -// - bookstore_android.apps.googleusercontent.com -// - bookstore_web.apps.googleusercontent.com -// remote_jwks: -// http_uri: -// uri: https://example.com/.well-known/jwks.json -// cluster: example_jwks_cluster -// timeout: 1s -// cache_duration: -// seconds: 300 +// issuer: https://example.com +// audiences: +// - bookstore_android.apps.googleusercontent.com +// - bookstore_web.apps.googleusercontent.com +// remote_jwks: +// http_uri: +// uri: https://example.com/.well-known/jwks.json +// cluster: example_jwks_cluster +// timeout: 1s +// cache_duration: +// seconds: 300 // // [#next-free-field: 11] type JwtProvider struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Specify the `principal `_ that issued + state protoimpl.MessageState `protogen:"open.v1"` + // Specify the [principal](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.1) that issued // the JWT, usually a URL or an email address. // // It is optional. If specified, it has to match the *iss* field in JWT. @@ -87,9 +80,8 @@ type JwtProvider struct { // // Example: https://securetoken.google.com // Example: 1234567-compute@developer.gserviceaccount.com - // Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"` - // The list of JWT `audiences `_ are + // The list of JWT [audiences](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.3) are // allowed to access. A JWT containing any of these audiences will be accepted. If not specified, // will not check audiences in the token. // @@ -97,15 +89,15 @@ type JwtProvider struct { // // .. code-block:: yaml // - // audiences: - // - bookstore_android.apps.googleusercontent.com - // - bookstore_web.apps.googleusercontent.com - // + // audiences: + // - bookstore_android.apps.googleusercontent.com + // - bookstore_web.apps.googleusercontent.com Audiences []string `protobuf:"bytes,2,rep,name=audiences,proto3" json:"audiences,omitempty"` - // `JSON Web Key Set (JWKS) `_ is needed to + // [JSON Web Key Set (JWKS)](https://datatracker.ietf.org/doc/html/rfc7517#appendix-A) is needed to // validate signature of a JWT. This field specifies where to fetch JWKS. // - // Types that are assignable to JwksSourceSpecifier: + // Types that are valid to be assigned to JwksSourceSpecifier: + // // *JwtProvider_RemoteJwks // *JwtProvider_LocalJwks JwksSourceSpecifier isJwtProvider_JwksSourceSpecifier `protobuf_oneof:"jwks_source_specifier"` @@ -116,12 +108,11 @@ type JwtProvider struct { // // If no explicit location is specified, the following default locations are tried in order: // - // 1. The Authorization header using the `Bearer schema - // `_. Example:: + // 1. The Authorization header using the [Bearer schema](https://datatracker.ietf.org/doc/html/rfc6750#section-2.1). Example:: // - // Authorization: Bearer . + // Authorization: Bearer . // - // 2. `access_token `_ query parameter. + // 2. [access_token](https://datatracker.ietf.org/doc/html/rfc6750#section-2.3) query parameter. // // Multiple JWTs can be verified for a request. Each JWT has to be extracted from the locations // its provider specified or from the default locations. @@ -130,13 +121,12 @@ type JwtProvider struct { // // .. code-block:: yaml // - // from_headers: - // - name: x-goog-iap-jwt-assertion + // from_headers: + // - name: x-goog-iap-jwt-assertion // // can be used to extract token from header:: // - // ``x-goog-iap-jwt-assertion: ``. - // + // `x-goog-iap-jwt-assertion: `. FromHeaders []*JwtHeader `protobuf:"bytes,6,rep,name=from_headers,json=fromHeaders,proto3" json:"from_headers,omitempty"` // JWT is sent in a query parameter. `jwt_params` represents the query parameter names. // @@ -144,18 +134,17 @@ type JwtProvider struct { // // .. code-block:: yaml // - // from_params: - // - jwt_token + // from_params: + // - jwt_token // // The JWT format in query parameter is:: // - // /path?jwt_token= - // + // /path?jwt_token= FromParams []string `protobuf:"bytes,7,rep,name=from_params,json=fromParams,proto3" json:"from_params,omitempty"` // This field specifies the header name to forward a successfully verified JWT payload to the // backend. The forwarded data is:: // - // base64url_encoded(jwt_payload_in_JSON) + // base64url_encoded(jwt_payload_in_JSON) // // If it is not specified, the payload will not be forwarded. ForwardPayloadHeader string `protobuf:"bytes,8,opt,name=forward_payload_header,json=forwardPayloadHeader,proto3" json:"forward_payload_header,omitempty"` @@ -168,26 +157,39 @@ type JwtProvider struct { // // .. code-block:: yaml // - // envoy.filters.http.jwt_authn: - // my_payload: - // iss: https://example.com - // sub: test@example.com - // aud: https://example.com - // exp: 1501281058 - // + // envoy.filters.http.jwt_authn: + // my_payload: + // iss: https://example.com + // sub: test@example.com + // aud: https://example.com + // exp: 1501281058 PayloadInMetadata string `protobuf:"bytes,9,opt,name=payload_in_metadata,json=payloadInMetadata,proto3" json:"payload_in_metadata,omitempty"` // Specify the clock skew in seconds when verifying JWT time constraint, // such as `exp`, and `nbf`. If not specified, default is 60 seconds. ClockSkewSeconds uint32 `protobuf:"varint,10,opt,name=clock_skew_seconds,json=clockSkewSeconds,proto3" json:"clock_skew_seconds,omitempty"` + // If non empty, the failure status “::google::jwt_verify::Status“ for a non verified JWT will be written to StreamInfo DynamicMetadata + // in the format as: “namespace“ is the jwt_authn filter name as “envoy.filters.http.jwt_authn“ + // The value is the “protobuf::Struct“. The values of this field will be “code“ and “message“ + // and they will contain the JWT authentication failure status code and a message describing the failure. + // + // For example, if failed_status_in_metadata is “my_auth_failure_status“: + // + // .. code-block:: yaml + // + // envoy.filters.http.jwt_authn: + // my_auth_failure_status: + // code: 3 + // message: Jwt expired + FailedStatusInMetadata string `protobuf:"bytes,11,opt,name=failed_status_in_metadata,json=failedStatusInMetadata,proto3" json:"failed_status_in_metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JwtProvider) Reset() { *x = JwtProvider{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JwtProvider) String() string { @@ -198,7 +200,7 @@ func (*JwtProvider) ProtoMessage() {} func (x *JwtProvider) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -227,23 +229,27 @@ func (x *JwtProvider) GetAudiences() []string { return nil } -func (m *JwtProvider) GetJwksSourceSpecifier() isJwtProvider_JwksSourceSpecifier { - if m != nil { - return m.JwksSourceSpecifier +func (x *JwtProvider) GetJwksSourceSpecifier() isJwtProvider_JwksSourceSpecifier { + if x != nil { + return x.JwksSourceSpecifier } return nil } func (x *JwtProvider) GetRemoteJwks() *RemoteJwks { - if x, ok := x.GetJwksSourceSpecifier().(*JwtProvider_RemoteJwks); ok { - return x.RemoteJwks + if x != nil { + if x, ok := x.JwksSourceSpecifier.(*JwtProvider_RemoteJwks); ok { + return x.RemoteJwks + } } return nil } func (x *JwtProvider) GetLocalJwks() *v3.DataSource { - if x, ok := x.GetJwksSourceSpecifier().(*JwtProvider_LocalJwks); ok { - return x.LocalJwks + if x != nil { + if x, ok := x.JwksSourceSpecifier.(*JwtProvider_LocalJwks); ok { + return x.LocalJwks + } } return nil } @@ -290,6 +296,13 @@ func (x *JwtProvider) GetClockSkewSeconds() uint32 { return 0 } +func (x *JwtProvider) GetFailedStatusInMetadata() string { + if x != nil { + return x.FailedStatusInMetadata + } + return "" +} + type isJwtProvider_JwksSourceSpecifier interface { isJwtProvider_JwksSourceSpecifier() } @@ -302,14 +315,13 @@ type JwtProvider_RemoteJwks struct { // // .. code-block:: yaml // - // remote_jwks: - // http_uri: - // uri: https://www.googleapis.com/oauth2/v1/certs - // cluster: jwt.www.googleapis.com|443 - // timeout: 1s - // cache_duration: - // seconds: 300 - // + // remote_jwks: + // http_uri: + // uri: https://www.googleapis.com/oauth2/v1/certs + // cluster: jwt.www.googleapis.com|443 + // timeout: 1s + // cache_duration: + // seconds: 300 RemoteJwks *RemoteJwks `protobuf:"bytes,3,opt,name=remote_jwks,json=remoteJwks,proto3,oneof"` } @@ -321,16 +333,15 @@ type JwtProvider_LocalJwks struct { // // .. code-block:: yaml // - // local_jwks: - // filename: /etc/envoy/jwks/jwks1.txt + // local_jwks: + // filename: /etc/envoy/jwks/jwks1.txt // // Example: inline_string // // .. code-block:: yaml // - // local_jwks: - // inline_string: ACADADADADA - // + // local_jwks: + // inline_string: ACADADADADA LocalJwks *v3.DataSource `protobuf:"bytes,4,opt,name=local_jwks,json=localJwks,proto3,oneof"` } @@ -340,32 +351,43 @@ func (*JwtProvider_LocalJwks) isJwtProvider_JwksSourceSpecifier() {} // This message specifies how to fetch JWKS from remote and how to cache it. type RemoteJwks struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The HTTP URI to fetch the JWKS. For example: // // .. code-block:: yaml // - // http_uri: - // uri: https://www.googleapis.com/oauth2/v1/certs - // cluster: jwt.www.googleapis.com|443 - // timeout: 1s - // + // http_uri: + // uri: https://www.googleapis.com/oauth2/v1/certs + // cluster: jwt.www.googleapis.com|443 + // timeout: 1s HttpUri *v3.HttpUri `protobuf:"bytes,1,opt,name=http_uri,json=httpUri,proto3" json:"http_uri,omitempty"` // Duration after which the cached JWKS should be expired. If not specified, default cache // duration is 5 minutes. - CacheDuration *duration.Duration `protobuf:"bytes,2,opt,name=cache_duration,json=cacheDuration,proto3" json:"cache_duration,omitempty"` + CacheDuration *durationpb.Duration `protobuf:"bytes,2,opt,name=cache_duration,json=cacheDuration,proto3" json:"cache_duration,omitempty"` + // Fetch Jwks asynchronously in the main thread before the listener is activated. + // Fetched Jwks can be used by all worker threads. + // + // If this feature is not enabled: + // + // - The Jwks is fetched on-demand when the requests come. During the fetching, first + // few requests are paused until the Jwks is fetched. + // - Each worker thread fetches its own Jwks since Jwks cache is per worker thread. + // + // If this feature is enabled: + // + // - Fetched Jwks is done in the main thread before the listener is activated. Its fetched + // Jwks can be used by all worker threads. Each worker thread doesn't need to fetch its own. + // - Jwks is ready when the requests come, not need to wait for the Jwks fetching. + AsyncFetch *JwksAsyncFetch `protobuf:"bytes,3,opt,name=async_fetch,json=asyncFetch,proto3" json:"async_fetch,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RemoteJwks) Reset() { *x = RemoteJwks{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoteJwks) String() string { @@ -376,7 +398,7 @@ func (*RemoteJwks) ProtoMessage() {} func (x *RemoteJwks) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -398,34 +420,90 @@ func (x *RemoteJwks) GetHttpUri() *v3.HttpUri { return nil } -func (x *RemoteJwks) GetCacheDuration() *duration.Duration { +func (x *RemoteJwks) GetCacheDuration() *durationpb.Duration { if x != nil { return x.CacheDuration } return nil } -// This message specifies a header location to extract JWT token. -type JwtHeader struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +func (x *RemoteJwks) GetAsyncFetch() *JwksAsyncFetch { + if x != nil { + return x.AsyncFetch + } + return nil +} + +// Fetch Jwks asynchronously in the main thread when the filter config is parsed. +// The listener is activated only after the Jwks is fetched. +// When the Jwks is expired in the cache, it is fetched again in the main thread. +// The fetched Jwks from the main thread can be used by all worker threads. +type JwksAsyncFetch struct { + state protoimpl.MessageState `protogen:"open.v1"` + // If false, the listener is activated after the initial fetch is completed. + // The initial fetch result can be either successful or failed. + // If true, it is activated without waiting for the initial fetch to complete. + // Default is false. + FastListener bool `protobuf:"varint,1,opt,name=fast_listener,json=fastListener,proto3" json:"fast_listener,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JwksAsyncFetch) Reset() { + *x = JwksAsyncFetch{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JwksAsyncFetch) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JwksAsyncFetch) ProtoMessage() {} +func (x *JwksAsyncFetch) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JwksAsyncFetch.ProtoReflect.Descriptor instead. +func (*JwksAsyncFetch) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{2} +} + +func (x *JwksAsyncFetch) GetFastListener() bool { + if x != nil { + return x.FastListener + } + return false +} + +// This message specifies a header location to extract JWT token. +type JwtHeader struct { + state protoimpl.MessageState `protogen:"open.v1"` // The HTTP header name. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // The value prefix. The value format is "value_prefix" // For example, for "Authorization: Bearer ", value_prefix="Bearer " with a space at the // end. - ValuePrefix string `protobuf:"bytes,2,opt,name=value_prefix,json=valuePrefix,proto3" json:"value_prefix,omitempty"` + ValuePrefix string `protobuf:"bytes,2,opt,name=value_prefix,json=valuePrefix,proto3" json:"value_prefix,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JwtHeader) Reset() { *x = JwtHeader{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JwtHeader) String() string { @@ -435,8 +513,8 @@ func (x *JwtHeader) String() string { func (*JwtHeader) ProtoMessage() {} func (x *JwtHeader) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[3] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -448,7 +526,7 @@ func (x *JwtHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use JwtHeader.ProtoReflect.Descriptor instead. func (*JwtHeader) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{2} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{3} } func (x *JwtHeader) GetName() string { @@ -467,23 +545,20 @@ func (x *JwtHeader) GetValuePrefix() string { // Specify a required provider with audiences. type ProviderWithAudiences struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specify a required provider name. ProviderName string `protobuf:"bytes,1,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"` // This field overrides the one specified in the JwtProvider. - Audiences []string `protobuf:"bytes,2,rep,name=audiences,proto3" json:"audiences,omitempty"` + Audiences []string `protobuf:"bytes,2,rep,name=audiences,proto3" json:"audiences,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ProviderWithAudiences) Reset() { *x = ProviderWithAudiences{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProviderWithAudiences) String() string { @@ -493,8 +568,8 @@ func (x *ProviderWithAudiences) String() string { func (*ProviderWithAudiences) ProtoMessage() {} func (x *ProviderWithAudiences) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[4] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -506,7 +581,7 @@ func (x *ProviderWithAudiences) ProtoReflect() protoreflect.Message { // Deprecated: Use ProviderWithAudiences.ProtoReflect.Descriptor instead. func (*ProviderWithAudiences) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{3} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{4} } func (x *ProviderWithAudiences) GetProviderName() string { @@ -528,80 +603,78 @@ func (x *ProviderWithAudiences) GetAudiences() []string { // // .. code-block:: yaml // -// # Example 1: not required with an empty message +// # Example 1: not required with an empty message // -// # Example 2: require A -// provider_name: provider-A +// # Example 2: require A +// provider_name: provider-A // -// # Example 3: require A or B -// requires_any: -// requirements: -// - provider_name: provider-A -// - provider_name: provider-B +// # Example 3: require A or B +// requires_any: +// requirements: +// - provider_name: provider-A +// - provider_name: provider-B // -// # Example 4: require A and B -// requires_all: -// requirements: -// - provider_name: provider-A -// - provider_name: provider-B +// # Example 4: require A and B +// requires_all: +// requirements: +// - provider_name: provider-A +// - provider_name: provider-B // -// # Example 5: require A and (B or C) -// requires_all: -// requirements: -// - provider_name: provider-A -// - requires_any: -// requirements: -// - provider_name: provider-B -// - provider_name: provider-C +// # Example 5: require A and (B or C) +// requires_all: +// requirements: +// - provider_name: provider-A +// - requires_any: +// requirements: +// - provider_name: provider-B +// - provider_name: provider-C // -// # Example 6: require A or (B and C) -// requires_any: -// requirements: -// - provider_name: provider-A -// - requires_all: -// requirements: -// - provider_name: provider-B -// - provider_name: provider-C +// # Example 6: require A or (B and C) +// requires_any: +// requirements: +// - provider_name: provider-A +// - requires_all: +// requirements: +// - provider_name: provider-B +// - provider_name: provider-C // -// # Example 7: A is optional (if token from A is provided, it must be valid, but also allows -// missing token.) -// requires_any: -// requirements: -// - provider_name: provider-A -// - allow_missing: {} +// # Example 7: A is optional (if token from A is provided, it must be valid, but also allows +// missing token.) +// requires_any: +// requirements: +// - provider_name: provider-A +// - allow_missing: {} // -// # Example 8: A is optional and B is required. -// requires_all: -// requirements: -// - requires_any: -// requirements: -// - provider_name: provider-A -// - allow_missing: {} -// - provider_name: provider-B +// # Example 8: A is optional and B is required. +// requires_all: +// requirements: +// - requires_any: +// requirements: +// - provider_name: provider-A +// - allow_missing: {} +// - provider_name: provider-B // // [#next-free-field: 7] type JwtRequirement struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to RequiresType: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to RequiresType: + // // *JwtRequirement_ProviderName // *JwtRequirement_ProviderAndAudiences // *JwtRequirement_RequiresAny // *JwtRequirement_RequiresAll // *JwtRequirement_AllowMissingOrFailed // *JwtRequirement_AllowMissing - RequiresType isJwtRequirement_RequiresType `protobuf_oneof:"requires_type"` + RequiresType isJwtRequirement_RequiresType `protobuf_oneof:"requires_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JwtRequirement) Reset() { *x = JwtRequirement{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JwtRequirement) String() string { @@ -611,8 +684,8 @@ func (x *JwtRequirement) String() string { func (*JwtRequirement) ProtoMessage() {} func (x *JwtRequirement) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[5] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -624,54 +697,66 @@ func (x *JwtRequirement) ProtoReflect() protoreflect.Message { // Deprecated: Use JwtRequirement.ProtoReflect.Descriptor instead. func (*JwtRequirement) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{4} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{5} } -func (m *JwtRequirement) GetRequiresType() isJwtRequirement_RequiresType { - if m != nil { - return m.RequiresType +func (x *JwtRequirement) GetRequiresType() isJwtRequirement_RequiresType { + if x != nil { + return x.RequiresType } return nil } func (x *JwtRequirement) GetProviderName() string { - if x, ok := x.GetRequiresType().(*JwtRequirement_ProviderName); ok { - return x.ProviderName + if x != nil { + if x, ok := x.RequiresType.(*JwtRequirement_ProviderName); ok { + return x.ProviderName + } } return "" } func (x *JwtRequirement) GetProviderAndAudiences() *ProviderWithAudiences { - if x, ok := x.GetRequiresType().(*JwtRequirement_ProviderAndAudiences); ok { - return x.ProviderAndAudiences + if x != nil { + if x, ok := x.RequiresType.(*JwtRequirement_ProviderAndAudiences); ok { + return x.ProviderAndAudiences + } } return nil } func (x *JwtRequirement) GetRequiresAny() *JwtRequirementOrList { - if x, ok := x.GetRequiresType().(*JwtRequirement_RequiresAny); ok { - return x.RequiresAny + if x != nil { + if x, ok := x.RequiresType.(*JwtRequirement_RequiresAny); ok { + return x.RequiresAny + } } return nil } func (x *JwtRequirement) GetRequiresAll() *JwtRequirementAndList { - if x, ok := x.GetRequiresType().(*JwtRequirement_RequiresAll); ok { - return x.RequiresAll + if x != nil { + if x, ok := x.RequiresType.(*JwtRequirement_RequiresAll); ok { + return x.RequiresAll + } } return nil } -func (x *JwtRequirement) GetAllowMissingOrFailed() *empty.Empty { - if x, ok := x.GetRequiresType().(*JwtRequirement_AllowMissingOrFailed); ok { - return x.AllowMissingOrFailed +func (x *JwtRequirement) GetAllowMissingOrFailed() *emptypb.Empty { + if x != nil { + if x, ok := x.RequiresType.(*JwtRequirement_AllowMissingOrFailed); ok { + return x.AllowMissingOrFailed + } } return nil } -func (x *JwtRequirement) GetAllowMissing() *empty.Empty { - if x, ok := x.GetRequiresType().(*JwtRequirement_AllowMissing); ok { - return x.AllowMissing +func (x *JwtRequirement) GetAllowMissing() *emptypb.Empty { + if x != nil { + if x, ok := x.RequiresType.(*JwtRequirement_AllowMissing); ok { + return x.AllowMissing + } } return nil } @@ -707,7 +792,7 @@ type JwtRequirement_AllowMissingOrFailed struct { // verification fails. A typical usage is: this filter is used to only verify // JWTs and pass the verified JWT payloads to another filter, the other filter // will make decision. In this mode, all JWT tokens will be verified. - AllowMissingOrFailed *empty.Empty `protobuf:"bytes,5,opt,name=allow_missing_or_failed,json=allowMissingOrFailed,proto3,oneof"` + AllowMissingOrFailed *emptypb.Empty `protobuf:"bytes,5,opt,name=allow_missing_or_failed,json=allowMissingOrFailed,proto3,oneof"` } type JwtRequirement_AllowMissing struct { @@ -715,7 +800,7 @@ type JwtRequirement_AllowMissing struct { // presented but invalid. Similar to allow_missing_or_failed, this is used // to only verify JWTs and pass the verified payload to another filter. The // different is this mode will reject requests with invalid tokens. - AllowMissing *empty.Empty `protobuf:"bytes,6,opt,name=allow_missing,json=allowMissing,proto3,oneof"` + AllowMissing *emptypb.Empty `protobuf:"bytes,6,opt,name=allow_missing,json=allowMissing,proto3,oneof"` } func (*JwtRequirement_ProviderName) isJwtRequirement_RequiresType() {} @@ -733,21 +818,18 @@ func (*JwtRequirement_AllowMissing) isJwtRequirement_RequiresType() {} // This message specifies a list of RequiredProvider. // Their results are OR-ed; if any one of them passes, the result is passed type JwtRequirementOrList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specify a list of JwtRequirement. - Requirements []*JwtRequirement `protobuf:"bytes,1,rep,name=requirements,proto3" json:"requirements,omitempty"` + Requirements []*JwtRequirement `protobuf:"bytes,1,rep,name=requirements,proto3" json:"requirements,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JwtRequirementOrList) Reset() { *x = JwtRequirementOrList{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JwtRequirementOrList) String() string { @@ -757,8 +839,8 @@ func (x *JwtRequirementOrList) String() string { func (*JwtRequirementOrList) ProtoMessage() {} func (x *JwtRequirementOrList) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[6] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -770,7 +852,7 @@ func (x *JwtRequirementOrList) ProtoReflect() protoreflect.Message { // Deprecated: Use JwtRequirementOrList.ProtoReflect.Descriptor instead. func (*JwtRequirementOrList) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{5} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{6} } func (x *JwtRequirementOrList) GetRequirements() []*JwtRequirement { @@ -783,21 +865,18 @@ func (x *JwtRequirementOrList) GetRequirements() []*JwtRequirement { // This message specifies a list of RequiredProvider. // Their results are AND-ed; all of them must pass, if one of them fails or missing, it fails. type JwtRequirementAndList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specify a list of JwtRequirement. - Requirements []*JwtRequirement `protobuf:"bytes,1,rep,name=requirements,proto3" json:"requirements,omitempty"` + Requirements []*JwtRequirement `protobuf:"bytes,1,rep,name=requirements,proto3" json:"requirements,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JwtRequirementAndList) Reset() { *x = JwtRequirementAndList{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JwtRequirementAndList) String() string { @@ -807,8 +886,8 @@ func (x *JwtRequirementAndList) String() string { func (*JwtRequirementAndList) ProtoMessage() {} func (x *JwtRequirementAndList) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[7] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -820,7 +899,7 @@ func (x *JwtRequirementAndList) ProtoReflect() protoreflect.Message { // Deprecated: Use JwtRequirementAndList.ProtoReflect.Descriptor instead. func (*JwtRequirementAndList) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{6} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{7} } func (x *JwtRequirementAndList) GetRequirements() []*JwtRequirement { @@ -835,8 +914,8 @@ func (x *JwtRequirementAndList) GetRequirements() []*JwtRequirement { // // .. code-block:: yaml // -// - match: -// prefix: /healthz +// - match: +// prefix: /healthz // // In above example, "requires" field is empty for /healthz prefix match, // it means that requests matching the path prefix don't require JWT authentication. @@ -845,17 +924,14 @@ func (x *JwtRequirementAndList) GetRequirements() []*JwtRequirement { // // .. code-block:: yaml // -// - match: -// prefix: / -// requires: { provider_name: provider-A } +// - match: +// prefix: / +// requires: { provider_name: provider-A } // // In above example, all requests matched the path prefix require jwt authentication // from "provider-A". type RequirementRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The route matching parameter. Only when the match is satisfied, the "requires" field will // apply. // @@ -863,26 +939,26 @@ type RequirementRule struct { // // .. code-block:: yaml // - // match: - // prefix: / - // + // match: + // prefix: / Match *v31.RouteMatch `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"` // Specify a Jwt requirement. // If not specified, Jwt verification is disabled. // - // Types that are assignable to RequirementType: + // Types that are valid to be assigned to RequirementType: + // // *RequirementRule_Requires // *RequirementRule_RequirementName RequirementType isRequirementRule_RequirementType `protobuf_oneof:"requirement_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RequirementRule) Reset() { *x = RequirementRule{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RequirementRule) String() string { @@ -892,8 +968,8 @@ func (x *RequirementRule) String() string { func (*RequirementRule) ProtoMessage() {} func (x *RequirementRule) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[8] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -905,7 +981,7 @@ func (x *RequirementRule) ProtoReflect() protoreflect.Message { // Deprecated: Use RequirementRule.ProtoReflect.Descriptor instead. func (*RequirementRule) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{7} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{8} } func (x *RequirementRule) GetMatch() *v31.RouteMatch { @@ -915,23 +991,27 @@ func (x *RequirementRule) GetMatch() *v31.RouteMatch { return nil } -func (m *RequirementRule) GetRequirementType() isRequirementRule_RequirementType { - if m != nil { - return m.RequirementType +func (x *RequirementRule) GetRequirementType() isRequirementRule_RequirementType { + if x != nil { + return x.RequirementType } return nil } func (x *RequirementRule) GetRequires() *JwtRequirement { - if x, ok := x.GetRequirementType().(*RequirementRule_Requires); ok { - return x.Requires + if x != nil { + if x, ok := x.RequirementType.(*RequirementRule_Requires); ok { + return x.Requires + } } return nil } func (x *RequirementRule) GetRequirementName() string { - if x, ok := x.GetRequirementType().(*RequirementRule_RequirementName); ok { - return x.RequirementName + if x != nil { + if x, ok := x.RequirementType.(*RequirementRule_RequirementName); ok { + return x.RequirementName + } } return "" } @@ -965,34 +1045,31 @@ func (*RequirementRule_RequirementName) isRequirementRule_RequirementType() {} // // .. code-block:: yaml // -// name: jwt_selector -// requires: -// issuer_1: -// provider_name: issuer1 -// issuer_2: -// provider_name: issuer2 +// name: jwt_selector +// requires: +// issuer_1: +// provider_name: issuer1 +// issuer_2: +// provider_name: issuer2 // // If a filter set "jwt_selector" with "issuer_1" to FilterState for a request, // jwt_authn filter will use JwtRequirement{"provider_name": "issuer1"} to verify. type FilterStateRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The filter state name to retrieve the `Router::StringAccessor` object. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // A map of string keys to requirements. The string key is the string value // in the FilterState with the name specified in the *name* field above. - Requires map[string]*JwtRequirement `protobuf:"bytes,3,rep,name=requires,proto3" json:"requires,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Requires map[string]*JwtRequirement `protobuf:"bytes,3,rep,name=requires,proto3" json:"requires,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FilterStateRule) Reset() { *x = FilterStateRule{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FilterStateRule) String() string { @@ -1002,8 +1079,8 @@ func (x *FilterStateRule) String() string { func (*FilterStateRule) ProtoMessage() {} func (x *FilterStateRule) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[9] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1015,7 +1092,7 @@ func (x *FilterStateRule) ProtoReflect() protoreflect.Message { // Deprecated: Use FilterStateRule.ProtoReflect.Descriptor instead. func (*FilterStateRule) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{8} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{9} } func (x *FilterStateRule) GetName() string { @@ -1038,121 +1115,115 @@ func (x *FilterStateRule) GetRequires() map[string]*JwtRequirement { // // .. code-block:: yaml // -// providers: -// provider1: -// issuer: issuer1 -// audiences: -// - audience1 -// - audience2 -// remote_jwks: -// http_uri: -// uri: https://example.com/.well-known/jwks.json -// cluster: example_jwks_cluster -// timeout: 1s -// provider2: -// issuer: issuer2 -// local_jwks: -// inline_string: jwks_string +// providers: +// provider1: +// issuer: issuer1 +// audiences: +// - audience1 +// - audience2 +// remote_jwks: +// http_uri: +// uri: https://example.com/.well-known/jwks.json +// cluster: example_jwks_cluster +// timeout: 1s +// provider2: +// issuer: issuer2 +// local_jwks: +// inline_string: jwks_string // -// rules: -// # Not jwt verification is required for /health path -// - match: -// prefix: /health +// rules: +// # Not jwt verification is required for /health path +// - match: +// prefix: /health // -// # Jwt verification for provider1 is required for path prefixed with "prefix" -// - match: -// prefix: /prefix -// requires: -// provider_name: provider1 +// # Jwt verification for provider1 is required for path prefixed with "prefix" +// - match: +// prefix: /prefix +// requires: +// provider_name: provider1 // -// # Jwt verification for either provider1 or provider2 is required for all other requests. -// - match: -// prefix: / -// requires: -// requires_any: -// requirements: -// - provider_name: provider1 -// - provider_name: provider2 +// # Jwt verification for either provider1 or provider2 is required for all other requests. +// - match: +// prefix: / +// requires: +// requires_any: +// requirements: +// - provider_name: provider1 +// - provider_name: provider2 // // [#next-free-field: 6] type JwtAuthentication struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Map of provider names to JwtProviders. // // .. code-block:: yaml // - // providers: - // provider1: - // issuer: issuer1 - // audiences: - // - audience1 - // - audience2 - // remote_jwks: - // http_uri: - // uri: https://example.com/.well-known/jwks.json - // cluster: example_jwks_cluster - // timeout: 1s - // provider2: - // issuer: provider2 - // local_jwks: - // inline_string: jwks_string - // - Providers map[string]*JwtProvider `protobuf:"bytes,1,rep,name=providers,proto3" json:"providers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // providers: + // provider1: + // issuer: issuer1 + // audiences: + // - audience1 + // - audience2 + // remote_jwks: + // http_uri: + // uri: https://example.com/.well-known/jwks.json + // cluster: example_jwks_cluster + // timeout: 1s + // provider2: + // issuer: provider2 + // local_jwks: + // inline_string: jwks_string + Providers map[string]*JwtProvider `protobuf:"bytes,1,rep,name=providers,proto3" json:"providers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Specifies requirements based on the route matches. The first matched requirement will be // applied. If there are overlapped match conditions, please put the most specific match first. // - // Examples + // # Examples // // .. code-block:: yaml // - // rules: - // - match: - // prefix: /healthz - // - match: - // prefix: /baz - // requires: - // provider_name: provider1 - // - match: - // prefix: /foo - // requires: - // requires_any: - // requirements: - // - provider_name: provider1 - // - provider_name: provider2 - // - match: - // prefix: /bar - // requires: - // requires_all: - // requirements: - // - provider_name: provider1 - // - provider_name: provider2 - // + // rules: + // - match: + // prefix: /healthz + // - match: + // prefix: /baz + // requires: + // provider_name: provider1 + // - match: + // prefix: /foo + // requires: + // requires_any: + // requirements: + // - provider_name: provider1 + // - provider_name: provider2 + // - match: + // prefix: /bar + // requires: + // requires_all: + // requirements: + // - provider_name: provider1 + // - provider_name: provider2 Rules []*RequirementRule `protobuf:"bytes,2,rep,name=rules,proto3" json:"rules,omitempty"` // This message specifies Jwt requirements based on stream_info.filterState. // Other HTTP filters can use it to specify Jwt requirements dynamically. // The *rules* field above is checked first, if it could not find any matches, // check this one. FilterStateRules *FilterStateRule `protobuf:"bytes,3,opt,name=filter_state_rules,json=filterStateRules,proto3" json:"filter_state_rules,omitempty"` - // When set to true, bypass the `CORS preflight request - // `_ regardless of JWT + // When set to true, bypass the [CORS preflight request](http://www.w3.org/TR/cors/#cross-origin-request-with-preflight) regardless of JWT // requirements specified in the rules. BypassCorsPreflight bool `protobuf:"varint,4,opt,name=bypass_cors_preflight,json=bypassCorsPreflight,proto3" json:"bypass_cors_preflight,omitempty"` // A map of unique requirement_names to JwtRequirements. // :ref:`requirement_name ` // in `PerRouteConfig` uses this map to specify a JwtRequirement. - RequirementMap map[string]*JwtRequirement `protobuf:"bytes,5,rep,name=requirement_map,json=requirementMap,proto3" json:"requirement_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + RequirementMap map[string]*JwtRequirement `protobuf:"bytes,5,rep,name=requirement_map,json=requirementMap,proto3" json:"requirement_map,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JwtAuthentication) Reset() { *x = JwtAuthentication{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JwtAuthentication) String() string { @@ -1162,8 +1233,8 @@ func (x *JwtAuthentication) String() string { func (*JwtAuthentication) ProtoMessage() {} func (x *JwtAuthentication) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[10] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1175,7 +1246,7 @@ func (x *JwtAuthentication) ProtoReflect() protoreflect.Message { // Deprecated: Use JwtAuthentication.ProtoReflect.Descriptor instead. func (*JwtAuthentication) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{9} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{10} } func (x *JwtAuthentication) GetProviders() map[string]*JwtProvider { @@ -1215,23 +1286,21 @@ func (x *JwtAuthentication) GetRequirementMap() map[string]*JwtRequirement { // Specify per-route config. type PerRouteConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to RequirementSpecifier: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to RequirementSpecifier: + // // *PerRouteConfig_Disabled // *PerRouteConfig_RequirementName RequirementSpecifier isPerRouteConfig_RequirementSpecifier `protobuf_oneof:"requirement_specifier"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PerRouteConfig) Reset() { *x = PerRouteConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PerRouteConfig) String() string { @@ -1241,8 +1310,8 @@ func (x *PerRouteConfig) String() string { func (*PerRouteConfig) ProtoMessage() {} func (x *PerRouteConfig) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[11] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1254,26 +1323,30 @@ func (x *PerRouteConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use PerRouteConfig.ProtoReflect.Descriptor instead. func (*PerRouteConfig) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{10} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{11} } -func (m *PerRouteConfig) GetRequirementSpecifier() isPerRouteConfig_RequirementSpecifier { - if m != nil { - return m.RequirementSpecifier +func (x *PerRouteConfig) GetRequirementSpecifier() isPerRouteConfig_RequirementSpecifier { + if x != nil { + return x.RequirementSpecifier } return nil } func (x *PerRouteConfig) GetDisabled() bool { - if x, ok := x.GetRequirementSpecifier().(*PerRouteConfig_Disabled); ok { - return x.Disabled + if x != nil { + if x, ok := x.RequirementSpecifier.(*PerRouteConfig_Disabled); ok { + return x.Disabled + } } return false } func (x *PerRouteConfig) GetRequirementName() string { - if x, ok := x.GetRequirementSpecifier().(*PerRouteConfig_RequirementName); ok { - return x.RequirementName + if x != nil { + if x, ok := x.RequirementSpecifier.(*PerRouteConfig_RequirementName); ok { + return x.RequirementName + } } return "" } @@ -1301,7 +1374,7 @@ func (*PerRouteConfig_RequirementName) isPerRouteConfig_RequirementSpecifier() { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDesc = string([]byte{ 0x0a, 0x6b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -1338,7 +1411,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_fi 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8d, 0x05, 0x0a, 0x0b, 0x4a, 0x77, + 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc8, 0x05, 0x0a, 0x0b, 0x4a, 0x77, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, @@ -1366,302 +1439,318 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_fi 0x66, 0x72, 0x6f, 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x41, 0x0a, 0x16, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, - 0x06, 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00, 0x52, 0x14, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x06, 0xc8, 0x01, 0x00, 0xc0, 0x01, 0x01, 0x52, 0x14, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x13, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6b, 0x65, 0x77, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x63, 0x6c, 0x6f, 0x63, 0x6b, - 0x53, 0x6b, 0x65, 0x77, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x3a, 0x3e, 0x8a, 0xc8, 0xde, - 0x8e, 0x04, 0x38, 0x0a, 0x36, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, - 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, - 0x4a, 0x77, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x1c, 0x0a, 0x15, 0x6a, - 0x77, 0x6b, 0x73, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0xcf, 0x01, 0x0a, 0x0a, 0x52, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x4a, 0x77, 0x6b, 0x73, 0x12, 0x40, 0x0a, 0x08, 0x68, 0x74, 0x74, 0x70, - 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x55, 0x72, - 0x69, 0x52, 0x07, 0x68, 0x74, 0x74, 0x70, 0x55, 0x72, 0x69, 0x12, 0x40, 0x0a, 0x0e, 0x63, 0x61, - 0x63, 0x68, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, - 0x61, 0x63, 0x68, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x3d, 0x8a, 0xc8, + 0x53, 0x6b, 0x65, 0x77, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x66, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x69, 0x6e, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, + 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x49, 0x6e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x3e, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x38, 0x0a, 0x36, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, + 0x68, 0x6e, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4a, 0x77, 0x74, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x1c, 0x0a, 0x15, 0x6a, 0x77, 0x6b, 0x73, 0x5f, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, + 0x03, 0xf8, 0x42, 0x01, 0x22, 0xb4, 0x02, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4a, + 0x77, 0x6b, 0x73, 0x12, 0x40, 0x0a, 0x08, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x75, 0x72, 0x69, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x55, 0x72, 0x69, 0x52, 0x07, 0x68, 0x74, + 0x74, 0x70, 0x55, 0x72, 0x69, 0x12, 0x40, 0x0a, 0x0e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x64, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x63, 0x0a, 0x0b, 0x61, 0x73, 0x79, 0x6e, 0x63, + 0x5f, 0x66, 0x65, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, + 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4a, 0x77, 0x6b, 0x73, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x65, 0x74, 0x63, 0x68, + 0x52, 0x0a, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x65, 0x74, 0x63, 0x68, 0x3a, 0x3d, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x37, 0x0a, 0x35, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4a, 0x77, 0x6b, 0x73, 0x22, 0x9c, 0x01, 0x0a, 0x09, - 0x4a, 0x77, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x10, 0x01, - 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x0c, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 0x52, - 0x0b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x3a, 0x3c, 0x8a, 0xc8, - 0xde, 0x8e, 0x04, 0x36, 0x0a, 0x34, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, - 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x2e, 0x4a, 0x77, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0xa4, 0x01, 0x0a, 0x15, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x57, 0x69, 0x74, 0x68, 0x41, 0x75, 0x64, 0x69, 0x65, - 0x6e, 0x63, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x64, - 0x69, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, - 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x3a, 0x48, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x42, 0x0a, - 0x40, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, - 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x57, 0x69, 0x74, 0x68, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, - 0x73, 0x22, 0xfe, 0x04, 0x0a, 0x0e, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x81, 0x01, 0x0a, 0x16, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x61, 0x75, 0x64, - 0x69, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x73, + 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4a, 0x77, 0x6b, 0x73, 0x22, 0x35, 0x0a, 0x0e, 0x4a, + 0x77, 0x6b, 0x73, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x65, 0x74, 0x63, 0x68, 0x12, 0x23, 0x0a, + 0x0d, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x61, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x65, 0x72, 0x22, 0x9c, 0x01, 0x0a, 0x09, 0x4a, 0x77, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x12, 0x21, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, + 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x10, 0x01, 0xc8, 0x01, 0x00, 0xc0, 0x01, 0x01, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x70, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, + 0xc8, 0x01, 0x00, 0xc0, 0x01, 0x02, 0x52, 0x0b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x3a, 0x3c, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x36, 0x0a, 0x34, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, + 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4a, 0x77, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x22, 0xa4, 0x01, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x57, 0x69, + 0x74, 0x68, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x3a, 0x48, + 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x42, 0x0a, 0x40, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, + 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x57, 0x69, 0x74, 0x68, 0x41, + 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0xfe, 0x04, 0x0a, 0x0e, 0x4a, 0x77, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0d, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x81, 0x01, 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, + 0x61, 0x6e, 0x64, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, + 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x57, 0x69, 0x74, 0x68, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x48, 0x00, + 0x52, 0x14, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x41, 0x6e, 0x64, 0x41, 0x75, 0x64, + 0x69, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x6d, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, + 0x65, 0x73, 0x5f, 0x61, 0x6e, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x57, 0x69, 0x74, 0x68, 0x41, 0x75, - 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x48, 0x00, 0x52, 0x14, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x41, 0x6e, 0x64, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, - 0x6d, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x6e, 0x79, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, - 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x77, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x48, - 0x00, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x41, 0x6e, 0x79, 0x12, 0x6e, - 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, - 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, - 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x48, - 0x00, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x41, 0x6c, 0x6c, 0x12, 0x4f, - 0x0a, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, - 0x6f, 0x72, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, - 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, - 0x3d, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x33, 0x2e, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x4f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, + 0x65, 0x73, 0x41, 0x6e, 0x79, 0x12, 0x6e, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, + 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, + 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, + 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, + 0x65, 0x73, 0x41, 0x6c, 0x6c, 0x12, 0x4f, 0x0a, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x72, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, - 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x3a, 0x41, - 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x3b, 0x0a, 0x39, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, - 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x2e, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x22, 0xd1, 0x01, 0x0a, 0x14, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x70, 0x0a, 0x0c, 0x72, - 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x42, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, - 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, - 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x02, 0x52, - 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x47, 0x8a, - 0xc8, 0xde, 0x8e, 0x04, 0x41, 0x0a, 0x3f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, - 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x2e, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x4f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xd3, 0x01, 0x0a, 0x15, 0x4a, 0x77, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x70, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, - 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x77, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, - 0x01, 0x02, 0x08, 0x02, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x3a, 0x48, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x42, 0x0a, 0x40, 0x65, 0x6e, 0x76, 0x6f, - 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, - 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, - 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xcc, 0x02, 0x0a, - 0x0f, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6c, 0x65, - 0x12, 0x49, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x29, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, - 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x60, 0x0a, 0x08, 0x72, - 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, + 0x52, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x4f, 0x72, + 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x69, + 0x73, 0x73, 0x69, 0x6e, 0x67, 0x3a, 0x41, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x3b, 0x0a, 0x39, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, + 0x6e, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, + 0x69, 0x72, 0x65, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xd1, 0x01, 0x0a, 0x14, 0x4a, 0x77, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x72, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x70, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, + 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x77, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x92, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x47, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x41, 0x0a, 0x3f, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, + 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xd3, 0x01, + 0x0a, 0x15, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x41, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x70, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x12, 0x34, 0x0a, - 0x10, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, - 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x3a, 0x42, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x3c, 0x0a, 0x3a, 0x65, 0x6e, 0x76, + 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0c, 0x72, 0x65, 0x71, + 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x48, 0x8a, 0xc8, 0xde, 0x8e, 0x04, + 0x42, 0x0a, 0x40, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, + 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4a, 0x77, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6e, 0x64, 0x4c, + 0x69, 0x73, 0x74, 0x22, 0xcc, 0x02, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x49, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x12, 0x60, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, + 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, + 0x69, 0x72, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x10, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x3a, 0x42, 0x8a, 0xc8, 0xde, 0x8e, + 0x04, 0x3c, 0x0a, 0x3a, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, + 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, + 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x42, 0x12, + 0x0a, 0x10, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x22, 0xe2, 0x02, 0x0a, 0x0f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x6d, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, + 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, + 0x65, 0x73, 0x1a, 0x7f, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x58, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, + 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x3a, 0x42, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x3c, 0x0a, 0x3a, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, - 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x72, 0x65, 0x71, 0x75, 0x69, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xe2, 0x02, 0x0a, 0x0f, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, - 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x6d, 0x0a, 0x08, - 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x51, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x75, 0x6c, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x1a, 0x7f, 0x0a, 0x0d, 0x52, - 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x58, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, + 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x22, 0xdb, 0x06, 0x0a, 0x11, 0x4a, 0x77, 0x74, 0x41, + 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x72, 0x0a, + 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x54, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, + 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x77, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x73, 0x12, 0x59, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x43, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, + 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x71, 0x0a, 0x12, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x75, 0x6c, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, + 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x10, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, + 0x32, 0x0a, 0x15, 0x62, 0x79, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x72, 0x73, 0x5f, 0x70, + 0x72, 0x65, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, + 0x62, 0x79, 0x70, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x72, 0x73, 0x50, 0x72, 0x65, 0x66, 0x6c, 0x69, + 0x67, 0x68, 0x74, 0x12, 0x82, 0x01, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x59, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x42, 0x8a, 0xc8, - 0xde, 0x8e, 0x04, 0x3c, 0x0a, 0x3a, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, - 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, - 0x22, 0xdb, 0x06, 0x0a, 0x11, 0x4a, 0x77, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x72, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x54, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, - 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, - 0x77, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x59, 0x0a, 0x05, 0x72, 0x75, - 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, - 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, - 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, - 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x71, 0x0a, 0x12, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x43, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, - 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, - 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x10, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x62, 0x79, 0x70, 0x61, - 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x72, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x6c, 0x69, 0x67, 0x68, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x62, 0x79, 0x70, 0x61, 0x73, 0x73, 0x43, - 0x6f, 0x72, 0x73, 0x50, 0x72, 0x65, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x12, 0x82, 0x01, 0x0a, - 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x70, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x59, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, - 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x77, 0x74, 0x41, - 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, - 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x61, - 0x70, 0x1a, 0x7d, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x55, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, - 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, - 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x77, 0x74, 0x50, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x1a, 0x85, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x58, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, - 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, - 0x77, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x44, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x3e, - 0x0a, 0x3c, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, - 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4a, 0x77, 0x74, - 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8b, - 0x01, 0x0a, 0x0e, 0x50, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x25, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x6a, 0x02, 0x08, 0x01, 0x48, 0x00, 0x52, 0x08, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x10, 0x72, 0x65, 0x71, 0x75, - 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x72, - 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x1c, - 0x0a, 0x15, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x70, - 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x42, 0xb8, 0x01, 0x0a, - 0x38, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, - 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, - 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x42, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x65, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x68, 0x74, - 0x74, 0x70, 0x2f, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2f, 0x76, 0x33, 0xe2, - 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x76, 0x33, 0x2e, 0x4a, 0x77, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x1a, 0x7d, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x55, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, + 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4a, 0x77, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x85, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x75, + 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x58, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x42, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, + 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, + 0x44, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x3e, 0x0a, 0x3c, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, + 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x32, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x2e, 0x4a, 0x77, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8b, 0x01, 0x0a, 0x0e, 0x50, 0x65, 0x72, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x6a, + 0x02, 0x08, 0x01, 0x48, 0x00, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, + 0x34, 0x0a, 0x10, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x10, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x1c, 0x0a, 0x15, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x03, + 0xf8, 0x42, 0x01, 0x42, 0xb8, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x38, + 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, + 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x42, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x65, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x68, 0x74, 0x74, + 0x70, 0x2f, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2f, 0x76, 0x33, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes = make([]protoimpl.MessageInfo, 14) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes = make([]protoimpl.MessageInfo, 15) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_goTypes = []any{ (*JwtProvider)(nil), // 0: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtProvider (*RemoteJwks)(nil), // 1: solo.io.envoy.extensions.filters.http.jwt_authn.v3.RemoteJwks - (*JwtHeader)(nil), // 2: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtHeader - (*ProviderWithAudiences)(nil), // 3: solo.io.envoy.extensions.filters.http.jwt_authn.v3.ProviderWithAudiences - (*JwtRequirement)(nil), // 4: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement - (*JwtRequirementOrList)(nil), // 5: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementOrList - (*JwtRequirementAndList)(nil), // 6: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementAndList - (*RequirementRule)(nil), // 7: solo.io.envoy.extensions.filters.http.jwt_authn.v3.RequirementRule - (*FilterStateRule)(nil), // 8: solo.io.envoy.extensions.filters.http.jwt_authn.v3.FilterStateRule - (*JwtAuthentication)(nil), // 9: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication - (*PerRouteConfig)(nil), // 10: solo.io.envoy.extensions.filters.http.jwt_authn.v3.PerRouteConfig - nil, // 11: solo.io.envoy.extensions.filters.http.jwt_authn.v3.FilterStateRule.RequiresEntry - nil, // 12: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.ProvidersEntry - nil, // 13: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.RequirementMapEntry - (*v3.DataSource)(nil), // 14: solo.io.envoy.config.core.v3.DataSource - (*v3.HttpUri)(nil), // 15: solo.io.envoy.config.core.v3.HttpUri - (*duration.Duration)(nil), // 16: google.protobuf.Duration - (*empty.Empty)(nil), // 17: google.protobuf.Empty - (*v31.RouteMatch)(nil), // 18: solo.io.envoy.config.route.v3.RouteMatch + (*JwksAsyncFetch)(nil), // 2: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwksAsyncFetch + (*JwtHeader)(nil), // 3: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtHeader + (*ProviderWithAudiences)(nil), // 4: solo.io.envoy.extensions.filters.http.jwt_authn.v3.ProviderWithAudiences + (*JwtRequirement)(nil), // 5: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement + (*JwtRequirementOrList)(nil), // 6: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementOrList + (*JwtRequirementAndList)(nil), // 7: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementAndList + (*RequirementRule)(nil), // 8: solo.io.envoy.extensions.filters.http.jwt_authn.v3.RequirementRule + (*FilterStateRule)(nil), // 9: solo.io.envoy.extensions.filters.http.jwt_authn.v3.FilterStateRule + (*JwtAuthentication)(nil), // 10: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication + (*PerRouteConfig)(nil), // 11: solo.io.envoy.extensions.filters.http.jwt_authn.v3.PerRouteConfig + nil, // 12: solo.io.envoy.extensions.filters.http.jwt_authn.v3.FilterStateRule.RequiresEntry + nil, // 13: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.ProvidersEntry + nil, // 14: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.RequirementMapEntry + (*v3.DataSource)(nil), // 15: solo.io.envoy.config.core.v3.DataSource + (*v3.HttpUri)(nil), // 16: solo.io.envoy.config.core.v3.HttpUri + (*durationpb.Duration)(nil), // 17: google.protobuf.Duration + (*emptypb.Empty)(nil), // 18: google.protobuf.Empty + (*v31.RouteMatch)(nil), // 19: solo.io.envoy.config.route.v3.RouteMatch } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_depIdxs = []int32{ 1, // 0: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtProvider.remote_jwks:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.RemoteJwks - 14, // 1: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtProvider.local_jwks:type_name -> solo.io.envoy.config.core.v3.DataSource - 2, // 2: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtProvider.from_headers:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtHeader - 15, // 3: solo.io.envoy.extensions.filters.http.jwt_authn.v3.RemoteJwks.http_uri:type_name -> solo.io.envoy.config.core.v3.HttpUri - 16, // 4: solo.io.envoy.extensions.filters.http.jwt_authn.v3.RemoteJwks.cache_duration:type_name -> google.protobuf.Duration - 3, // 5: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement.provider_and_audiences:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.ProviderWithAudiences - 5, // 6: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement.requires_any:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementOrList - 6, // 7: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement.requires_all:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementAndList - 17, // 8: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement.allow_missing_or_failed:type_name -> google.protobuf.Empty - 17, // 9: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement.allow_missing:type_name -> google.protobuf.Empty - 4, // 10: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementOrList.requirements:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement - 4, // 11: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementAndList.requirements:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement - 18, // 12: solo.io.envoy.extensions.filters.http.jwt_authn.v3.RequirementRule.match:type_name -> solo.io.envoy.config.route.v3.RouteMatch - 4, // 13: solo.io.envoy.extensions.filters.http.jwt_authn.v3.RequirementRule.requires:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement - 11, // 14: solo.io.envoy.extensions.filters.http.jwt_authn.v3.FilterStateRule.requires:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.FilterStateRule.RequiresEntry - 12, // 15: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.providers:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.ProvidersEntry - 7, // 16: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.rules:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.RequirementRule - 8, // 17: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.filter_state_rules:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.FilterStateRule - 13, // 18: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.requirement_map:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.RequirementMapEntry - 4, // 19: solo.io.envoy.extensions.filters.http.jwt_authn.v3.FilterStateRule.RequiresEntry.value:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement - 0, // 20: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.ProvidersEntry.value:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtProvider - 4, // 21: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.RequirementMapEntry.value:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement - 22, // [22:22] is the sub-list for method output_type - 22, // [22:22] is the sub-list for method input_type - 22, // [22:22] is the sub-list for extension type_name - 22, // [22:22] is the sub-list for extension extendee - 0, // [0:22] is the sub-list for field type_name + 15, // 1: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtProvider.local_jwks:type_name -> solo.io.envoy.config.core.v3.DataSource + 3, // 2: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtProvider.from_headers:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtHeader + 16, // 3: solo.io.envoy.extensions.filters.http.jwt_authn.v3.RemoteJwks.http_uri:type_name -> solo.io.envoy.config.core.v3.HttpUri + 17, // 4: solo.io.envoy.extensions.filters.http.jwt_authn.v3.RemoteJwks.cache_duration:type_name -> google.protobuf.Duration + 2, // 5: solo.io.envoy.extensions.filters.http.jwt_authn.v3.RemoteJwks.async_fetch:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwksAsyncFetch + 4, // 6: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement.provider_and_audiences:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.ProviderWithAudiences + 6, // 7: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement.requires_any:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementOrList + 7, // 8: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement.requires_all:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementAndList + 18, // 9: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement.allow_missing_or_failed:type_name -> google.protobuf.Empty + 18, // 10: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement.allow_missing:type_name -> google.protobuf.Empty + 5, // 11: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementOrList.requirements:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement + 5, // 12: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementAndList.requirements:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement + 19, // 13: solo.io.envoy.extensions.filters.http.jwt_authn.v3.RequirementRule.match:type_name -> solo.io.envoy.config.route.v3.RouteMatch + 5, // 14: solo.io.envoy.extensions.filters.http.jwt_authn.v3.RequirementRule.requires:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement + 12, // 15: solo.io.envoy.extensions.filters.http.jwt_authn.v3.FilterStateRule.requires:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.FilterStateRule.RequiresEntry + 13, // 16: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.providers:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.ProvidersEntry + 8, // 17: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.rules:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.RequirementRule + 9, // 18: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.filter_state_rules:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.FilterStateRule + 14, // 19: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.requirement_map:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.RequirementMapEntry + 5, // 20: solo.io.envoy.extensions.filters.http.jwt_authn.v3.FilterStateRule.RequiresEntry.value:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement + 0, // 21: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.ProvidersEntry.value:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtProvider + 5, // 22: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.RequirementMapEntry.value:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement + 23, // [23:23] is the sub-list for method output_type + 23, // [23:23] is the sub-list for method input_type + 23, // [23:23] is the sub-list for extension type_name + 23, // [23:23] is the sub-list for extension extendee + 0, // [0:23] is the sub-list for field type_name } func init() { @@ -1671,145 +1760,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_f if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JwtProvider); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoteJwks); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JwtHeader); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProviderWithAudiences); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JwtRequirement); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JwtRequirementOrList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JwtRequirementAndList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequirementRule); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FilterStateRule); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JwtAuthentication); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PerRouteConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[0].OneofWrappers = []any{ (*JwtProvider_RemoteJwks)(nil), (*JwtProvider_LocalJwks)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[4].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[5].OneofWrappers = []any{ (*JwtRequirement_ProviderName)(nil), (*JwtRequirement_ProviderAndAudiences)(nil), (*JwtRequirement_RequiresAny)(nil), @@ -1817,11 +1772,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_f (*JwtRequirement_AllowMissingOrFailed)(nil), (*JwtRequirement_AllowMissing)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[7].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[8].OneofWrappers = []any{ (*RequirementRule_Requires)(nil), (*RequirementRule_RequirementName)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[10].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[11].OneofWrappers = []any{ (*PerRouteConfig_Disabled)(nil), (*PerRouteConfig_RequirementName)(nil), } @@ -1829,9 +1784,9 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_f out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDesc)), NumEnums: 0, - NumMessages: 14, + NumMessages: 15, NumExtensions: 0, NumServices: 0, }, @@ -1840,7 +1795,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_f MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_jwt_authn_v3_config_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/wasm/v3/wasm.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/wasm/v3/wasm.pb.clone.go new file mode 100644 index 000000000..98e8a85ae --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/wasm/v3/wasm.pb.clone.go @@ -0,0 +1,45 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/wasm/v3/wasm.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_wasm_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *Wasm) Clone() proto.Message { + var target *Wasm + if m == nil { + return target + } + target = &Wasm{} + + if h, ok := interface{}(m.GetConfig()).(clone.Cloner); ok { + target.Config = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_wasm_v3.PluginConfig) + } else { + target.Config = proto.Clone(m.GetConfig()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_wasm_v3.PluginConfig) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/wasm/v3/wasm.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/wasm/v3/wasm.pb.go index eeac2a5f9..30d7cd9d7 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/wasm/v3/wasm.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/wasm/v3/wasm.pb.go @@ -2,7 +2,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/wasm/v3/wasm.proto @@ -11,9 +11,9 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -27,26 +27,19 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Wasm struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // General Plugin configuration. - Config *v3.PluginConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + Config *v3.PluginConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Wasm) Reset() { *x = Wasm{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Wasm) String() string { @@ -57,7 +50,7 @@ func (*Wasm) ProtoMessage() {} func (x *Wasm) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -81,7 +74,7 @@ func (x *Wasm) GetConfig() *v3.PluginConfig { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_rawDesc = string([]byte{ 0x0a, 0x64, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -104,35 +97,35 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_fi 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x77, 0x61, 0x73, 0x6d, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0xac, 0x01, 0x0a, 0x33, - 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, - 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x77, 0x61, 0x73, 0x6d, - 0x2e, 0x76, 0x33, 0x42, 0x09, 0x57, 0x61, 0x73, 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, - 0x5a, 0x60, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, - 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, - 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x77, 0x61, 0x73, 0x6d, 0x2f, - 0x76, 0x33, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} + 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0xb0, 0x01, 0xb8, 0xf5, + 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x0a, 0x33, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x77, 0x61, 0x73, 0x6d, 0x2e, 0x76, 0x33, 0x42, + 0x09, 0x57, 0x61, 0x73, 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x60, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, + 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x77, 0x61, 0x73, 0x6d, 0x2f, 0x76, 0x33, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_goTypes = []any{ (*Wasm)(nil), // 0: solo.io.envoy.extensions.filters.http.wasm.v3.Wasm (*v3.PluginConfig)(nil), // 1: solo.io.envoy.extensions.wasm.v3.PluginConfig } @@ -152,25 +145,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_f if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Wasm); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, @@ -181,7 +160,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_f MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_filters_http_wasm_v3_wasm_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/wasm/v3/wasm.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/wasm/v3/wasm.pb.hash.go index 62cbdb41e..04c22b4da 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/wasm/v3/wasm.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/wasm/v3/wasm.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Wasm) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,14 +43,20 @@ func (m *Wasm) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/wasm/v3/wasm.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/wasm/v3/wasm.pb.uniquehash.go new file mode 100644 index 000000000..f1dcffe63 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/wasm/v3/wasm.pb.uniquehash.go @@ -0,0 +1,67 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/filters/http/wasm/v3/wasm.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Wasm) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.extensions.filters.http.wasm.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/wasm/v3.Wasm")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/http_path/http_path.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/extensions/http_path/http_path.pb.clone.go new file mode 100644 index 000000000..1f080a0d8 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/http_path/http_path.pb.clone.go @@ -0,0 +1,45 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/http_path/http_path.proto + +package http_path + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *HttpPath) Clone() proto.Message { + var target *HttpPath + if m == nil { + return target + } + target = &HttpPath{} + + if h, ok := interface{}(m.GetHttpHealthCheck()).(clone.Cloner); ok { + target.HttpHealthCheck = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HealthCheck_HttpHealthCheck) + } else { + target.HttpHealthCheck = proto.Clone(m.GetHttpHealthCheck()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HealthCheck_HttpHealthCheck) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/http_path/http_path.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/http_path/http_path.pb.go index c5c5396c7..df71471cf 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/http_path/http_path.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/http_path/http_path.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/http_path/http_path.proto @@ -9,8 +9,8 @@ package http_path import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" @@ -25,29 +25,22 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Same as HTTP health checker, but allows a custom path per endpoint // The http path to use can be overriden using endpoint metadata. The endpoint specific path should // be in the "io.solo.health_checkers.http_path" namespace, under a string value named "path". type HttpPath struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Http health check. HttpHealthCheck *v3.HealthCheck_HttpHealthCheck `protobuf:"bytes,1,opt,name=http_health_check,json=httpHealthCheck,proto3" json:"http_health_check,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HttpPath) Reset() { *x = HttpPath{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HttpPath) String() string { @@ -58,7 +51,7 @@ func (*HttpPath) ProtoMessage() {} func (x *HttpPath) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -82,7 +75,7 @@ func (x *HttpPath) GetHttpHealthCheck() *v3.HealthCheck_HttpHealthCheck { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_rawDesc = string([]byte{ 0x0a, 0x5e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -107,35 +100,35 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_ht 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x0f, 0x68, 0x74, - 0x74, 0x70, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0xab, 0x01, - 0x0a, 0x36, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, - 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x68, 0x65, 0x61, - 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, - 0x5f, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x42, 0x08, 0x48, 0x74, 0x74, 0x70, 0x50, 0x61, - 0x74, 0x68, 0x50, 0x01, 0x5a, 0x55, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, - 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x61, 0x74, 0x68, 0xb8, 0xf5, 0x04, 0x01, 0xc0, - 0xf5, 0x04, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, -} + 0x74, 0x70, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0xaf, 0x01, + 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, + 0x07, 0x02, 0x10, 0x02, 0x0a, 0x36, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, + 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x72, 0x2e, + 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x42, 0x08, 0x48, 0x74, + 0x74, 0x70, 0x50, 0x61, 0x74, 0x68, 0x50, 0x01, 0x5a, 0x55, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_goTypes = []any{ (*HttpPath)(nil), // 0: envoy.config.health_checker.http_path.v2.HttpPath (*v3.HealthCheck_HttpHealthCheck)(nil), // 1: solo.io.envoy.config.core.v3.HealthCheck.HttpHealthCheck } @@ -155,25 +148,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_h if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HttpPath); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, @@ -184,7 +163,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_h MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_http_path_http_path_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/http_path/http_path.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/extensions/http_path/http_path.pb.hash.go index 630588370..bef2564e9 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/http_path/http_path.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/http_path/http_path.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HttpPath) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,14 +43,20 @@ func (m *HttpPath) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetHttpHealthCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpHealthCheck")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHttpHealthCheck(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHttpHealthCheck(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HttpHealthCheck")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/http_path/http_path.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/extensions/http_path/http_path.pb.uniquehash.go new file mode 100644 index 000000000..3b72425aa --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/http_path/http_path.pb.uniquehash.go @@ -0,0 +1,67 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/http_path/http_path.proto + +package http_path + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HttpPath) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.config.health_checker.http_path.v2.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/http_path.HttpPath")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHttpHealthCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpHealthCheck")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpHealthCheck(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpHealthCheck")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/jwt/solo_jwt_authn.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/jwt/solo_jwt_authn.pb.go index 863f07430..c25b61873 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/jwt/solo_jwt_authn.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/jwt/solo_jwt_authn.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/jwt/solo_jwt_authn.proto @@ -9,9 +9,9 @@ package jwt import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/jwt_authn/v3" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -24,29 +24,22 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type JwtWithStage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The JwtAuthentication config for this filter. JwtAuthn *v3.JwtAuthentication `protobuf:"bytes,1,opt,name=jwt_authn,json=jwtAuthn,proto3" json:"jwt_authn,omitempty"` // Only SoloJwtAuthnPerRoute.JwtAuthnPerRoute with matching stage will be // used with this filter - Stage uint32 `protobuf:"varint,2,opt,name=stage,proto3" json:"stage,omitempty"` + Stage uint32 `protobuf:"varint,2,opt,name=stage,proto3" json:"stage,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JwtWithStage) Reset() { *x = JwtWithStage{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JwtWithStage) String() string { @@ -57,7 +50,7 @@ func (*JwtWithStage) ProtoMessage() {} func (x *JwtWithStage) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -87,29 +80,26 @@ func (x *JwtWithStage) GetStage() uint32 { } type SoloJwtAuthnPerRoute struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Requirement string `protobuf:"bytes,1,opt,name=requirement,proto3" json:"requirement,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Requirement string `protobuf:"bytes,1,opt,name=requirement,proto3" json:"requirement,omitempty"` // Copy the claims from the payload field is the key. // non-existant fields are ignored. - ClaimsToHeaders map[string]*SoloJwtAuthnPerRoute_ClaimToHeaders `protobuf:"bytes,2,rep,name=claims_to_headers,json=claimsToHeaders,proto3" json:"claims_to_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ClaimsToHeaders map[string]*SoloJwtAuthnPerRoute_ClaimToHeaders `protobuf:"bytes,2,rep,name=claims_to_headers,json=claimsToHeaders,proto3" json:"claims_to_headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // clear the route cache if claims were added to the header ClearRouteCache bool `protobuf:"varint,3,opt,name=clear_route_cache,json=clearRouteCache,proto3" json:"clear_route_cache,omitempty"` // To easly integrate with other filters, this will copy the payload to this // name in the dynamic metadata. The payload will only be copied if one // payload is present (i.e. or match) PayloadInMetadata string `protobuf:"bytes,4,opt,name=payload_in_metadata,json=payloadInMetadata,proto3" json:"payload_in_metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SoloJwtAuthnPerRoute) Reset() { *x = SoloJwtAuthnPerRoute{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SoloJwtAuthnPerRoute) String() string { @@ -120,7 +110,7 @@ func (*SoloJwtAuthnPerRoute) ProtoMessage() {} func (x *SoloJwtAuthnPerRoute) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -164,22 +154,19 @@ func (x *SoloJwtAuthnPerRoute) GetPayloadInMetadata() string { } type StagedJwtAuthnPerRoute struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Map from stage number to jwt config // This jwt config will only be processed by filters with the same stage number. - JwtConfigs map[uint32]*SoloJwtAuthnPerRoute `protobuf:"bytes,5,rep,name=jwt_configs,json=jwtConfigs,proto3" json:"jwt_configs,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + JwtConfigs map[uint32]*SoloJwtAuthnPerRoute `protobuf:"bytes,5,rep,name=jwt_configs,json=jwtConfigs,proto3" json:"jwt_configs,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StagedJwtAuthnPerRoute) Reset() { *x = StagedJwtAuthnPerRoute{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StagedJwtAuthnPerRoute) String() string { @@ -190,7 +177,7 @@ func (*StagedJwtAuthnPerRoute) ProtoMessage() {} func (x *StagedJwtAuthnPerRoute) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -215,22 +202,19 @@ func (x *StagedJwtAuthnPerRoute) GetJwtConfigs() map[uint32]*SoloJwtAuthnPerRout // If this is specified, one of the claims will be copied to a header // and the route cache will be cleared. type SoloJwtAuthnPerRoute_ClaimToHeader struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Claim string `protobuf:"bytes,1,opt,name=claim,proto3" json:"claim,omitempty"` + Header string `protobuf:"bytes,2,opt,name=header,proto3" json:"header,omitempty"` + Append bool `protobuf:"varint,3,opt,name=append,proto3" json:"append,omitempty"` unknownFields protoimpl.UnknownFields - - Claim string `protobuf:"bytes,1,opt,name=claim,proto3" json:"claim,omitempty"` - Header string `protobuf:"bytes,2,opt,name=header,proto3" json:"header,omitempty"` - Append bool `protobuf:"varint,3,opt,name=append,proto3" json:"append,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SoloJwtAuthnPerRoute_ClaimToHeader) Reset() { *x = SoloJwtAuthnPerRoute_ClaimToHeader{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SoloJwtAuthnPerRoute_ClaimToHeader) String() string { @@ -241,7 +225,7 @@ func (*SoloJwtAuthnPerRoute_ClaimToHeader) ProtoMessage() {} func (x *SoloJwtAuthnPerRoute_ClaimToHeader) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -278,20 +262,17 @@ func (x *SoloJwtAuthnPerRoute_ClaimToHeader) GetAppend() bool { } type SoloJwtAuthnPerRoute_ClaimToHeaders struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Claims []*SoloJwtAuthnPerRoute_ClaimToHeader `protobuf:"bytes,1,rep,name=claims,proto3" json:"claims,omitempty"` unknownFields protoimpl.UnknownFields - - Claims []*SoloJwtAuthnPerRoute_ClaimToHeader `protobuf:"bytes,1,rep,name=claims,proto3" json:"claims,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SoloJwtAuthnPerRoute_ClaimToHeaders) Reset() { *x = SoloJwtAuthnPerRoute_ClaimToHeaders{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SoloJwtAuthnPerRoute_ClaimToHeaders) String() string { @@ -302,7 +283,7 @@ func (*SoloJwtAuthnPerRoute_ClaimToHeaders) ProtoMessage() {} func (x *SoloJwtAuthnPerRoute_ClaimToHeaders) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -326,7 +307,7 @@ func (x *SoloJwtAuthnPerRoute_ClaimToHeaders) GetClaims() []*SoloJwtAuthnPerRout var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_rawDesc = string([]byte{ 0x0a, 0x5d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -423,22 +404,22 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jw 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6a, 0x77, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_msgTypes = make([]protoimpl.MessageInfo, 7) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_goTypes = []any{ (*JwtWithStage)(nil), // 0: envoy.config.filter.http.solo_jwt_authn.v2.JwtWithStage (*SoloJwtAuthnPerRoute)(nil), // 1: envoy.config.filter.http.solo_jwt_authn.v2.SoloJwtAuthnPerRoute (*StagedJwtAuthnPerRoute)(nil), // 2: envoy.config.filter.http.solo_jwt_authn.v2.StagedJwtAuthnPerRoute @@ -469,73 +450,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_j if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JwtWithStage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SoloJwtAuthnPerRoute); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StagedJwtAuthnPerRoute); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SoloJwtAuthnPerRoute_ClaimToHeader); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SoloJwtAuthnPerRoute_ClaimToHeaders); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_rawDesc)), NumEnums: 0, NumMessages: 7, NumExtensions: 0, @@ -546,7 +465,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_j MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_jwt_solo_jwt_authn_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/proxy_protocol/proxyprotocol.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/proxy_protocol/proxyprotocol.pb.go new file mode 100644 index 000000000..cd4e0d915 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/proxy_protocol/proxyprotocol.pb.go @@ -0,0 +1,356 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/proxyprotocol/proxyprotocol.proto + +package proxy_protocol + +import ( + reflect "reflect" + sync "sync" + + _ "github.com/envoyproxy/protoc-gen-validate/validate" + _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type CustomProxyProtocol struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The list of rules to apply to requests. + Rules []*CustomProxyProtocol_Rule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` + // Allow requests through that don't use proxy protocol. Defaults to false. + // + // .. attention:: + // + // This breaks conformance with the specification. + // Only enable if ALL traffic to the listener comes from a trusted source. + // For more information on the security implications of this feature, see + // https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt + AllowRequestsWithoutProxyProtocol bool `protobuf:"varint,2,opt,name=allow_requests_without_proxy_protocol,json=allowRequestsWithoutProxyProtocol,proto3" json:"allow_requests_without_proxy_protocol,omitempty"` +} + +func (x *CustomProxyProtocol) Reset() { + *x = CustomProxyProtocol{} + if protoimpl.UnsafeEnabled { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CustomProxyProtocol) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CustomProxyProtocol) ProtoMessage() {} + +func (x *CustomProxyProtocol) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CustomProxyProtocol.ProtoReflect.Descriptor instead. +func (*CustomProxyProtocol) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_rawDescGZIP(), []int{0} +} + +func (x *CustomProxyProtocol) GetRules() []*CustomProxyProtocol_Rule { + if x != nil { + return x.Rules + } + return nil +} + +func (x *CustomProxyProtocol) GetAllowRequestsWithoutProxyProtocol() bool { + if x != nil { + return x.AllowRequestsWithoutProxyProtocol + } + return false +} + +type CustomProxyProtocol_KeyValuePair struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The namespace — if this is empty, the filter's namespace will be used. + MetadataNamespace string `protobuf:"bytes,1,opt,name=metadata_namespace,json=metadataNamespace,proto3" json:"metadata_namespace,omitempty"` + // The key to use within the namespace. + Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` +} + +func (x *CustomProxyProtocol_KeyValuePair) Reset() { + *x = CustomProxyProtocol_KeyValuePair{} + if protoimpl.UnsafeEnabled { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CustomProxyProtocol_KeyValuePair) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CustomProxyProtocol_KeyValuePair) ProtoMessage() {} + +func (x *CustomProxyProtocol_KeyValuePair) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CustomProxyProtocol_KeyValuePair.ProtoReflect.Descriptor instead. +func (*CustomProxyProtocol_KeyValuePair) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *CustomProxyProtocol_KeyValuePair) GetMetadataNamespace() string { + if x != nil { + return x.MetadataNamespace + } + return "" +} + +func (x *CustomProxyProtocol_KeyValuePair) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +// A Rule defines what metadata to apply when a header is present or missing. +type CustomProxyProtocol_Rule struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The type that triggers the rule - required + // TLV type is defined as uint8_t in proxy protocol. See `the spec + // `_ for details. + TlvType uint32 `protobuf:"varint,1,opt,name=tlv_type,json=tlvType,proto3" json:"tlv_type,omitempty"` + // If the TLV type is present, apply this metadata KeyValuePair. + OnTlvPresent *CustomProxyProtocol_KeyValuePair `protobuf:"bytes,2,opt,name=on_tlv_present,json=onTlvPresent,proto3" json:"on_tlv_present,omitempty"` +} + +func (x *CustomProxyProtocol_Rule) Reset() { + *x = CustomProxyProtocol_Rule{} + if protoimpl.UnsafeEnabled { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CustomProxyProtocol_Rule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CustomProxyProtocol_Rule) ProtoMessage() {} + +func (x *CustomProxyProtocol_Rule) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CustomProxyProtocol_Rule.ProtoReflect.Descriptor instead. +func (*CustomProxyProtocol_Rule) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *CustomProxyProtocol_Rule) GetTlvType() uint32 { + if x != nil { + return x.TlvType + } + return 0 +} + +func (x *CustomProxyProtocol_Rule) GetOnTlvPresent() *CustomProxyProtocol_KeyValuePair { + if x != nil { + return x.OnTlvPresent + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_rawDesc = []byte{ + 0x0a, 0x66, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x27, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x2e, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x76, + 0x33, 0x1a, 0x1d, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb9, 0x03, 0x0a, 0x13, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x12, 0x57, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x41, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x52, + 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x25, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x77, 0x69, 0x74, + 0x68, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x21, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x50, + 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x1a, 0x58, 0x0a, 0x0c, + 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x12, 0x2d, 0x0a, 0x12, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, + 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x1a, 0x9c, 0x01, 0x0a, 0x04, 0x52, 0x75, 0x6c, 0x65, 0x12, + 0x23, 0x0a, 0x08, 0x74, 0x6c, 0x76, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x10, 0x80, 0x02, 0x52, 0x07, 0x74, 0x6c, 0x76, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x6f, 0x0a, 0x0e, 0x6f, 0x6e, 0x5f, 0x74, 0x6c, 0x76, 0x5f, 0x70, + 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6c, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x72, 0x6f, + 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0c, 0x6f, 0x6e, 0x54, 0x6c, 0x76, 0x50, 0x72, + 0x65, 0x73, 0x65, 0x6e, 0x74, 0x42, 0xbd, 0x01, 0x0a, 0x41, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, + 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x76, 0x33, 0x42, 0x12, 0x50, 0x72, 0x6f, + 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x5a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, + 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xe2, 0xb5, 0xdf, + 0xcb, 0x07, 0x02, 0x10, 0x02, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_rawDesc +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_rawDescData) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_goTypes = []interface{}{ + (*CustomProxyProtocol)(nil), // 0: envoy.config.listener.proxy_protocol.v3.CustomProxyProtocol + (*CustomProxyProtocol_KeyValuePair)(nil), // 1: envoy.config.listener.proxy_protocol.v3.CustomProxyProtocol.KeyValuePair + (*CustomProxyProtocol_Rule)(nil), // 2: envoy.config.listener.proxy_protocol.v3.CustomProxyProtocol.Rule +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_depIdxs = []int32{ + 2, // 0: envoy.config.listener.proxy_protocol.v3.CustomProxyProtocol.rules:type_name -> envoy.config.listener.proxy_protocol.v3.CustomProxyProtocol.Rule + 1, // 1: envoy.config.listener.proxy_protocol.v3.CustomProxyProtocol.Rule.on_tlv_present:type_name -> envoy.config.listener.proxy_protocol.v3.CustomProxyProtocol.KeyValuePair + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CustomProxyProtocol); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CustomProxyProtocol_KeyValuePair); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CustomProxyProtocol_Rule); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_rawDesc, + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_rawDesc = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxyprotocol_proxyprotocol_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/proxylatency/proxylatency.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/extensions/proxylatency/proxylatency.pb.clone.go new file mode 100644 index 000000000..f72af1a0c --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/proxylatency/proxylatency.pb.clone.go @@ -0,0 +1,63 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/proxylatency/proxylatency.proto + +package proxylatency + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *ProxyLatency) Clone() proto.Message { + var target *ProxyLatency + if m == nil { + return target + } + target = &ProxyLatency{} + + target.Request = m.GetRequest() + + target.MeasureRequestInternally = m.GetMeasureRequestInternally() + + target.Response = m.GetResponse() + + if h, ok := interface{}(m.GetChargeClusterStat()).(clone.Cloner); ok { + target.ChargeClusterStat = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.ChargeClusterStat = proto.Clone(m.GetChargeClusterStat()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetChargeListenerStat()).(clone.Cloner); ok { + target.ChargeListenerStat = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.ChargeListenerStat = proto.Clone(m.GetChargeListenerStat()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetEmitDynamicMetadata()).(clone.Cloner); ok { + target.EmitDynamicMetadata = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.EmitDynamicMetadata = proto.Clone(m.GetEmitDynamicMetadata()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/proxylatency/proxylatency.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/proxylatency/proxylatency.pb.go index 7288d7fb3..757abe109 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/proxylatency/proxylatency.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/proxylatency/proxylatency.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/proxylatency/proxylatency.proto @@ -9,12 +9,12 @@ package proxylatency import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -24,10 +24,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // How to perform the latency measurement. Given an incoming request from downstream and // outging request to upstream; or incoming response from upstream and outgoing repsonse to // downstream, This outlines how to measure the latency used by the proxy. @@ -89,12 +85,18 @@ func (ProxyLatency_Measurement) EnumDescriptor() ([]byte, []int) { // Configure the proxy latency filter. This filter measures the latency // incurred by the filter chain in a histogram. +// The filter fields are similar to the settings for [`COMMON_DURATION`](https://www.envoyproxy.io/docs/envoy/latest/configuration/observability/access_log/usage.html), +// introduced in Envoy 1.31. +// The filter also emits the following additional dynamic metadata fields, +// which you can use to augment the existing upstream options for access logging: +// - request_out_internal: first_byte_processed_millis +// - request_out: firstUpstreamTxByteSent +// - response_out: firstDownstreamTxByteSent type ProxyLatency struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // How to measure the request. + // Affects the output stats. + // Does not affect metadata. Request ProxyLatency_Measurement `protobuf:"varint,1,opt,name=request,proto3,enum=envoy.config.filter.http.proxylatency.v2.ProxyLatency_Measurement" json:"request,omitempty"` // When FIRST_OUTGOING (i.e. LAST_INCOMING_FIRST_OUTGOING or FIRST_INCOMING_FIRST_OUTGOING) is // instead of when the first byte is sent upstream. This has the advantage of not measuring the time @@ -109,20 +111,21 @@ type ProxyLatency struct { // How measure the response. Response ProxyLatency_Measurement `protobuf:"varint,2,opt,name=response,proto3,enum=envoy.config.filter.http.proxylatency.v2.ProxyLatency_Measurement" json:"response,omitempty"` // Charge a stat per upstream cluster. If not specified, defaults to true. - ChargeClusterStat *wrappers.BoolValue `protobuf:"bytes,3,opt,name=charge_cluster_stat,json=chargeClusterStat,proto3" json:"charge_cluster_stat,omitempty"` + ChargeClusterStat *wrapperspb.BoolValue `protobuf:"bytes,3,opt,name=charge_cluster_stat,json=chargeClusterStat,proto3" json:"charge_cluster_stat,omitempty"` // Charge a stat per listener. If not specified, defaults to true. - ChargeListenerStat *wrappers.BoolValue `protobuf:"bytes,4,opt,name=charge_listener_stat,json=chargeListenerStat,proto3" json:"charge_listener_stat,omitempty"` - // Should we emit request timing to dynamic metadata. defaults to true. - EmitDynamicMetadata *wrappers.BoolValue `protobuf:"bytes,6,opt,name=emit_dynamic_metadata,json=emitDynamicMetadata,proto3" json:"emit_dynamic_metadata,omitempty"` + ChargeListenerStat *wrapperspb.BoolValue `protobuf:"bytes,4,opt,name=charge_listener_stat,json=chargeListenerStat,proto3" json:"charge_listener_stat,omitempty"` + // Whether request timing is emitted to dynamic metadata. + // If enabled, defaults to true. + EmitDynamicMetadata *wrapperspb.BoolValue `protobuf:"bytes,6,opt,name=emit_dynamic_metadata,json=emitDynamicMetadata,proto3" json:"emit_dynamic_metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ProxyLatency) Reset() { *x = ProxyLatency{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProxyLatency) String() string { @@ -133,7 +136,7 @@ func (*ProxyLatency) ProtoMessage() {} func (x *ProxyLatency) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -169,21 +172,21 @@ func (x *ProxyLatency) GetResponse() ProxyLatency_Measurement { return ProxyLatency_LAST_INCOMING_FIRST_OUTGOING } -func (x *ProxyLatency) GetChargeClusterStat() *wrappers.BoolValue { +func (x *ProxyLatency) GetChargeClusterStat() *wrapperspb.BoolValue { if x != nil { return x.ChargeClusterStat } return nil } -func (x *ProxyLatency) GetChargeListenerStat() *wrappers.BoolValue { +func (x *ProxyLatency) GetChargeListenerStat() *wrapperspb.BoolValue { if x != nil { return x.ChargeListenerStat } return nil } -func (x *ProxyLatency) GetEmitDynamicMetadata() *wrappers.BoolValue { +func (x *ProxyLatency) GetEmitDynamicMetadata() *wrapperspb.BoolValue { if x != nil { return x.EmitDynamicMetadata } @@ -192,7 +195,7 @@ func (x *ProxyLatency) GetEmitDynamicMetadata() *wrappers.BoolValue { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_rawDesc = string([]byte{ 0x0a, 0x64, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -246,33 +249,34 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_pr 0x47, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x47, 0x4f, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x46, 0x49, 0x52, 0x53, 0x54, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x4d, 0x49, 0x4e, 0x47, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x47, 0x4f, 0x49, 0x4e, - 0x47, 0x10, 0x03, 0x42, 0x62, 0x5a, 0x58, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, - 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0xc0, - 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x47, 0x10, 0x03, 0x42, 0x66, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, + 0x01, 0x5a, 0x58, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, + 0x72, 0x6f, 0x78, 0x79, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_goTypes = []any{ (ProxyLatency_Measurement)(0), // 0: envoy.config.filter.http.proxylatency.v2.ProxyLatency.Measurement (*ProxyLatency)(nil), // 1: envoy.config.filter.http.proxylatency.v2.ProxyLatency - (*wrappers.BoolValue)(nil), // 2: google.protobuf.BoolValue + (*wrapperspb.BoolValue)(nil), // 2: google.protobuf.BoolValue } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_depIdxs = []int32{ 0, // 0: envoy.config.filter.http.proxylatency.v2.ProxyLatency.request:type_name -> envoy.config.filter.http.proxylatency.v2.ProxyLatency.Measurement @@ -294,25 +298,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_p if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProxyLatency); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_rawDesc)), NumEnums: 1, NumMessages: 1, NumExtensions: 0, @@ -324,7 +314,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_p MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_proxylatency_proxylatency_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/proxylatency/proxylatency.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/extensions/proxylatency/proxylatency.pb.hash.go index b4a818730..9bd1fc8ac 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/proxylatency/proxylatency.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/proxylatency/proxylatency.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ProxyLatency) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -54,42 +58,60 @@ func (m *ProxyLatency) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetChargeClusterStat()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ChargeClusterStat")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetChargeClusterStat(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetChargeClusterStat(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ChargeClusterStat")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetChargeListenerStat()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ChargeListenerStat")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetChargeListenerStat(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetChargeListenerStat(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ChargeListenerStat")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetEmitDynamicMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EmitDynamicMetadata")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetEmitDynamicMetadata(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetEmitDynamicMetadata(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("EmitDynamicMetadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/proxylatency/proxylatency.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/extensions/proxylatency/proxylatency.pb.uniquehash.go new file mode 100644 index 000000000..e97100272 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/proxylatency/proxylatency.pb.uniquehash.go @@ -0,0 +1,131 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/proxylatency/proxylatency.proto + +package proxylatency + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ProxyLatency) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.config.filter.http.proxylatency.v2.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/proxylatency.ProxyLatency")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Request")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRequest()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MeasureRequestInternally")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMeasureRequestInternally()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Response")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetResponse()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetChargeClusterStat()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ChargeClusterStat")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetChargeClusterStat(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ChargeClusterStat")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetChargeListenerStat()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ChargeListenerStat")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetChargeListenerStat(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ChargeListenerStat")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEmitDynamicMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EmitDynamicMetadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEmitDynamicMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EmitDynamicMetadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.clone.go new file mode 100644 index 000000000..8d35f9ea1 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.clone.go @@ -0,0 +1,815 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/transformation/transformation.proto + +package transformation + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_route_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3" + + google_golang_org_protobuf_types_known_emptypb "google.golang.org/protobuf/types/known/emptypb" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *FilterTransformations) Clone() proto.Message { + var target *FilterTransformations + if m == nil { + return target + } + target = &FilterTransformations{} + + if m.GetTransformations() != nil { + target.Transformations = make([]*TransformationRule, len(m.GetTransformations())) + for idx, v := range m.GetTransformations() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Transformations[idx] = h.Clone().(*TransformationRule) + } else { + target.Transformations[idx] = proto.Clone(v).(*TransformationRule) + } + + } + } + + target.Stage = m.GetStage() + + target.LogRequestResponseInfo = m.GetLogRequestResponseInfo() + + target.AutoWebsocketPassthrough = m.GetAutoWebsocketPassthrough() + + return target +} + +// Clone function +func (m *TransformationRule) Clone() proto.Message { + var target *TransformationRule + if m == nil { + return target + } + target = &TransformationRule{} + + if h, ok := interface{}(m.GetMatch()).(clone.Cloner); ok { + target.Match = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_route_v3.RouteMatch) + } else { + target.Match = proto.Clone(m.GetMatch()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_route_v3.RouteMatch) + } + + if h, ok := interface{}(m.GetRouteTransformations()).(clone.Cloner); ok { + target.RouteTransformations = h.Clone().(*TransformationRule_Transformations) + } else { + target.RouteTransformations = proto.Clone(m.GetRouteTransformations()).(*TransformationRule_Transformations) + } + + return target +} + +// Clone function +func (m *RouteTransformations) Clone() proto.Message { + var target *RouteTransformations + if m == nil { + return target + } + target = &RouteTransformations{} + + if h, ok := interface{}(m.GetRequestTransformation()).(clone.Cloner); ok { + target.RequestTransformation = h.Clone().(*Transformation) + } else { + target.RequestTransformation = proto.Clone(m.GetRequestTransformation()).(*Transformation) + } + + if h, ok := interface{}(m.GetResponseTransformation()).(clone.Cloner); ok { + target.ResponseTransformation = h.Clone().(*Transformation) + } else { + target.ResponseTransformation = proto.Clone(m.GetResponseTransformation()).(*Transformation) + } + + target.ClearRouteCache = m.GetClearRouteCache() + + if m.GetTransformations() != nil { + target.Transformations = make([]*RouteTransformations_RouteTransformation, len(m.GetTransformations())) + for idx, v := range m.GetTransformations() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Transformations[idx] = h.Clone().(*RouteTransformations_RouteTransformation) + } else { + target.Transformations[idx] = proto.Clone(v).(*RouteTransformations_RouteTransformation) + } + + } + } + + return target +} + +// Clone function +func (m *ResponseMatcher) Clone() proto.Message { + var target *ResponseMatcher + if m == nil { + return target + } + target = &ResponseMatcher{} + + if m.GetHeaders() != nil { + target.Headers = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_route_v3.HeaderMatcher, len(m.GetHeaders())) + for idx, v := range m.GetHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Headers[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_route_v3.HeaderMatcher) + } else { + target.Headers[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_route_v3.HeaderMatcher) + } + + } + } + + if h, ok := interface{}(m.GetResponseCodeDetails()).(clone.Cloner); ok { + target.ResponseCodeDetails = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.StringMatcher) + } else { + target.ResponseCodeDetails = proto.Clone(m.GetResponseCodeDetails()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.StringMatcher) + } + + return target +} + +// Clone function +func (m *ResponseTransformationRule) Clone() proto.Message { + var target *ResponseTransformationRule + if m == nil { + return target + } + target = &ResponseTransformationRule{} + + if h, ok := interface{}(m.GetMatch()).(clone.Cloner); ok { + target.Match = h.Clone().(*ResponseMatcher) + } else { + target.Match = proto.Clone(m.GetMatch()).(*ResponseMatcher) + } + + if h, ok := interface{}(m.GetResponseTransformation()).(clone.Cloner); ok { + target.ResponseTransformation = h.Clone().(*Transformation) + } else { + target.ResponseTransformation = proto.Clone(m.GetResponseTransformation()).(*Transformation) + } + + return target +} + +// Clone function +func (m *Transformation) Clone() proto.Message { + var target *Transformation + if m == nil { + return target + } + target = &Transformation{} + + if h, ok := interface{}(m.GetLogRequestResponseInfo()).(clone.Cloner); ok { + target.LogRequestResponseInfo = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.LogRequestResponseInfo = proto.Clone(m.GetLogRequestResponseInfo()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + switch m.TransformationType.(type) { + + case *Transformation_TransformationTemplate: + + if h, ok := interface{}(m.GetTransformationTemplate()).(clone.Cloner); ok { + target.TransformationType = &Transformation_TransformationTemplate{ + TransformationTemplate: h.Clone().(*TransformationTemplate), + } + } else { + target.TransformationType = &Transformation_TransformationTemplate{ + TransformationTemplate: proto.Clone(m.GetTransformationTemplate()).(*TransformationTemplate), + } + } + + case *Transformation_HeaderBodyTransform: + + if h, ok := interface{}(m.GetHeaderBodyTransform()).(clone.Cloner); ok { + target.TransformationType = &Transformation_HeaderBodyTransform{ + HeaderBodyTransform: h.Clone().(*HeaderBodyTransform), + } + } else { + target.TransformationType = &Transformation_HeaderBodyTransform{ + HeaderBodyTransform: proto.Clone(m.GetHeaderBodyTransform()).(*HeaderBodyTransform), + } + } + + case *Transformation_TransformerConfig: + + if h, ok := interface{}(m.GetTransformerConfig()).(clone.Cloner); ok { + target.TransformationType = &Transformation_TransformerConfig{ + TransformerConfig: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.TypedExtensionConfig), + } + } else { + target.TransformationType = &Transformation_TransformerConfig{ + TransformerConfig: proto.Clone(m.GetTransformerConfig()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.TypedExtensionConfig), + } + } + + case *Transformation_AiTransformation: + + if h, ok := interface{}(m.GetAiTransformation()).(clone.Cloner); ok { + target.TransformationType = &Transformation_AiTransformation{ + AiTransformation: h.Clone().(*AiTransformation), + } + } else { + target.TransformationType = &Transformation_AiTransformation{ + AiTransformation: proto.Clone(m.GetAiTransformation()).(*AiTransformation), + } + } + + } + + return target +} + +// Clone function +func (m *Extraction) Clone() proto.Message { + var target *Extraction + if m == nil { + return target + } + target = &Extraction{} + + target.Regex = m.GetRegex() + + target.Subgroup = m.GetSubgroup() + + if h, ok := interface{}(m.GetReplacementText()).(clone.Cloner); ok { + target.ReplacementText = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.ReplacementText = proto.Clone(m.GetReplacementText()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + target.Mode = m.GetMode() + + switch m.Source.(type) { + + case *Extraction_Header: + + target.Source = &Extraction_Header{ + Header: m.GetHeader(), + } + + case *Extraction_Body: + + if h, ok := interface{}(m.GetBody()).(clone.Cloner); ok { + target.Source = &Extraction_Body{ + Body: h.Clone().(*google_golang_org_protobuf_types_known_emptypb.Empty), + } + } else { + target.Source = &Extraction_Body{ + Body: proto.Clone(m.GetBody()).(*google_golang_org_protobuf_types_known_emptypb.Empty), + } + } + + } + + return target +} + +// Clone function +func (m *TransformationTemplate) Clone() proto.Message { + var target *TransformationTemplate + if m == nil { + return target + } + target = &TransformationTemplate{} + + target.AdvancedTemplates = m.GetAdvancedTemplates() + + if m.GetExtractors() != nil { + target.Extractors = make(map[string]*Extraction, len(m.GetExtractors())) + for k, v := range m.GetExtractors() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Extractors[k] = h.Clone().(*Extraction) + } else { + target.Extractors[k] = proto.Clone(v).(*Extraction) + } + + } + } + + if m.GetHeaders() != nil { + target.Headers = make(map[string]*InjaTemplate, len(m.GetHeaders())) + for k, v := range m.GetHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Headers[k] = h.Clone().(*InjaTemplate) + } else { + target.Headers[k] = proto.Clone(v).(*InjaTemplate) + } + + } + } + + if m.GetHeadersToAppend() != nil { + target.HeadersToAppend = make([]*TransformationTemplate_HeaderToAppend, len(m.GetHeadersToAppend())) + for idx, v := range m.GetHeadersToAppend() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.HeadersToAppend[idx] = h.Clone().(*TransformationTemplate_HeaderToAppend) + } else { + target.HeadersToAppend[idx] = proto.Clone(v).(*TransformationTemplate_HeaderToAppend) + } + + } + } + + if m.GetHeadersToRemove() != nil { + target.HeadersToRemove = make([]string, len(m.GetHeadersToRemove())) + for idx, v := range m.GetHeadersToRemove() { + + target.HeadersToRemove[idx] = v + + } + } + + target.ParseBodyBehavior = m.GetParseBodyBehavior() + + target.IgnoreErrorOnParse = m.GetIgnoreErrorOnParse() + + if m.GetDynamicMetadataValues() != nil { + target.DynamicMetadataValues = make([]*TransformationTemplate_DynamicMetadataValue, len(m.GetDynamicMetadataValues())) + for idx, v := range m.GetDynamicMetadataValues() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.DynamicMetadataValues[idx] = h.Clone().(*TransformationTemplate_DynamicMetadataValue) + } else { + target.DynamicMetadataValues[idx] = proto.Clone(v).(*TransformationTemplate_DynamicMetadataValue) + } + + } + } + + target.EscapeCharacters = m.GetEscapeCharacters() + + if h, ok := interface{}(m.GetSpanTransformer()).(clone.Cloner); ok { + target.SpanTransformer = h.Clone().(*TransformationTemplate_SpanTransformer) + } else { + target.SpanTransformer = proto.Clone(m.GetSpanTransformer()).(*TransformationTemplate_SpanTransformer) + } + + switch m.BodyTransformation.(type) { + + case *TransformationTemplate_Body: + + if h, ok := interface{}(m.GetBody()).(clone.Cloner); ok { + target.BodyTransformation = &TransformationTemplate_Body{ + Body: h.Clone().(*InjaTemplate), + } + } else { + target.BodyTransformation = &TransformationTemplate_Body{ + Body: proto.Clone(m.GetBody()).(*InjaTemplate), + } + } + + case *TransformationTemplate_Passthrough: + + if h, ok := interface{}(m.GetPassthrough()).(clone.Cloner); ok { + target.BodyTransformation = &TransformationTemplate_Passthrough{ + Passthrough: h.Clone().(*Passthrough), + } + } else { + target.BodyTransformation = &TransformationTemplate_Passthrough{ + Passthrough: proto.Clone(m.GetPassthrough()).(*Passthrough), + } + } + + case *TransformationTemplate_MergeExtractorsToBody: + + if h, ok := interface{}(m.GetMergeExtractorsToBody()).(clone.Cloner); ok { + target.BodyTransformation = &TransformationTemplate_MergeExtractorsToBody{ + MergeExtractorsToBody: h.Clone().(*MergeExtractorsToBody), + } + } else { + target.BodyTransformation = &TransformationTemplate_MergeExtractorsToBody{ + MergeExtractorsToBody: proto.Clone(m.GetMergeExtractorsToBody()).(*MergeExtractorsToBody), + } + } + + case *TransformationTemplate_MergeJsonKeys: + + if h, ok := interface{}(m.GetMergeJsonKeys()).(clone.Cloner); ok { + target.BodyTransformation = &TransformationTemplate_MergeJsonKeys{ + MergeJsonKeys: h.Clone().(*MergeJsonKeys), + } + } else { + target.BodyTransformation = &TransformationTemplate_MergeJsonKeys{ + MergeJsonKeys: proto.Clone(m.GetMergeJsonKeys()).(*MergeJsonKeys), + } + } + + } + + return target +} + +// Clone function +func (m *InjaTemplate) Clone() proto.Message { + var target *InjaTemplate + if m == nil { + return target + } + target = &InjaTemplate{} + + target.Text = m.GetText() + + return target +} + +// Clone function +func (m *Passthrough) Clone() proto.Message { + var target *Passthrough + if m == nil { + return target + } + target = &Passthrough{} + + return target +} + +// Clone function +func (m *MergeExtractorsToBody) Clone() proto.Message { + var target *MergeExtractorsToBody + if m == nil { + return target + } + target = &MergeExtractorsToBody{} + + return target +} + +// Clone function +func (m *MergeJsonKeys) Clone() proto.Message { + var target *MergeJsonKeys + if m == nil { + return target + } + target = &MergeJsonKeys{} + + if m.GetJsonKeys() != nil { + target.JsonKeys = make(map[string]*MergeJsonKeys_OverridableTemplate, len(m.GetJsonKeys())) + for k, v := range m.GetJsonKeys() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.JsonKeys[k] = h.Clone().(*MergeJsonKeys_OverridableTemplate) + } else { + target.JsonKeys[k] = proto.Clone(v).(*MergeJsonKeys_OverridableTemplate) + } + + } + } + + return target +} + +// Clone function +func (m *HeaderBodyTransform) Clone() proto.Message { + var target *HeaderBodyTransform + if m == nil { + return target + } + target = &HeaderBodyTransform{} + + target.AddRequestMetadata = m.GetAddRequestMetadata() + + return target +} + +// Clone function +func (m *FieldDefault) Clone() proto.Message { + var target *FieldDefault + if m == nil { + return target + } + target = &FieldDefault{} + + target.Field = m.GetField() + + if h, ok := interface{}(m.GetValue()).(clone.Cloner); ok { + target.Value = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Value) + } else { + target.Value = proto.Clone(m.GetValue()).(*google_golang_org_protobuf_types_known_structpb.Value) + } + + target.Override = m.GetOverride() + + return target +} + +// Clone function +func (m *PromptEnrichment) Clone() proto.Message { + var target *PromptEnrichment + if m == nil { + return target + } + target = &PromptEnrichment{} + + if m.GetPrepend() != nil { + target.Prepend = make([]*PromptEnrichment_Message, len(m.GetPrepend())) + for idx, v := range m.GetPrepend() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Prepend[idx] = h.Clone().(*PromptEnrichment_Message) + } else { + target.Prepend[idx] = proto.Clone(v).(*PromptEnrichment_Message) + } + + } + } + + if m.GetAppend() != nil { + target.Append = make([]*PromptEnrichment_Message, len(m.GetAppend())) + for idx, v := range m.GetAppend() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Append[idx] = h.Clone().(*PromptEnrichment_Message) + } else { + target.Append[idx] = proto.Clone(v).(*PromptEnrichment_Message) + } + + } + } + + return target +} + +// Clone function +func (m *AiTransformation) Clone() proto.Message { + var target *AiTransformation + if m == nil { + return target + } + target = &AiTransformation{} + + target.EnableChatStreaming = m.GetEnableChatStreaming() + + if m.GetFieldDefaults() != nil { + target.FieldDefaults = make([]*FieldDefault, len(m.GetFieldDefaults())) + for idx, v := range m.GetFieldDefaults() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.FieldDefaults[idx] = h.Clone().(*FieldDefault) + } else { + target.FieldDefaults[idx] = proto.Clone(v).(*FieldDefault) + } + + } + } + + if h, ok := interface{}(m.GetPromptEnrichment()).(clone.Cloner); ok { + target.PromptEnrichment = h.Clone().(*PromptEnrichment) + } else { + target.PromptEnrichment = proto.Clone(m.GetPromptEnrichment()).(*PromptEnrichment) + } + + return target +} + +// Clone function +func (m *TransformationRule_Transformations) Clone() proto.Message { + var target *TransformationRule_Transformations + if m == nil { + return target + } + target = &TransformationRule_Transformations{} + + if h, ok := interface{}(m.GetRequestTransformation()).(clone.Cloner); ok { + target.RequestTransformation = h.Clone().(*Transformation) + } else { + target.RequestTransformation = proto.Clone(m.GetRequestTransformation()).(*Transformation) + } + + target.ClearRouteCache = m.GetClearRouteCache() + + if h, ok := interface{}(m.GetResponseTransformation()).(clone.Cloner); ok { + target.ResponseTransformation = h.Clone().(*Transformation) + } else { + target.ResponseTransformation = proto.Clone(m.GetResponseTransformation()).(*Transformation) + } + + if h, ok := interface{}(m.GetOnStreamCompletionTransformation()).(clone.Cloner); ok { + target.OnStreamCompletionTransformation = h.Clone().(*Transformation) + } else { + target.OnStreamCompletionTransformation = proto.Clone(m.GetOnStreamCompletionTransformation()).(*Transformation) + } + + return target +} + +// Clone function +func (m *RouteTransformations_RouteTransformation) Clone() proto.Message { + var target *RouteTransformations_RouteTransformation + if m == nil { + return target + } + target = &RouteTransformations_RouteTransformation{} + + target.Stage = m.GetStage() + + switch m.Match.(type) { + + case *RouteTransformations_RouteTransformation_RequestMatch_: + + if h, ok := interface{}(m.GetRequestMatch()).(clone.Cloner); ok { + target.Match = &RouteTransformations_RouteTransformation_RequestMatch_{ + RequestMatch: h.Clone().(*RouteTransformations_RouteTransformation_RequestMatch), + } + } else { + target.Match = &RouteTransformations_RouteTransformation_RequestMatch_{ + RequestMatch: proto.Clone(m.GetRequestMatch()).(*RouteTransformations_RouteTransformation_RequestMatch), + } + } + + case *RouteTransformations_RouteTransformation_ResponseMatch_: + + if h, ok := interface{}(m.GetResponseMatch()).(clone.Cloner); ok { + target.Match = &RouteTransformations_RouteTransformation_ResponseMatch_{ + ResponseMatch: h.Clone().(*RouteTransformations_RouteTransformation_ResponseMatch), + } + } else { + target.Match = &RouteTransformations_RouteTransformation_ResponseMatch_{ + ResponseMatch: proto.Clone(m.GetResponseMatch()).(*RouteTransformations_RouteTransformation_ResponseMatch), + } + } + + } + + return target +} + +// Clone function +func (m *RouteTransformations_RouteTransformation_RequestMatch) Clone() proto.Message { + var target *RouteTransformations_RouteTransformation_RequestMatch + if m == nil { + return target + } + target = &RouteTransformations_RouteTransformation_RequestMatch{} + + if h, ok := interface{}(m.GetMatch()).(clone.Cloner); ok { + target.Match = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_route_v3.RouteMatch) + } else { + target.Match = proto.Clone(m.GetMatch()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_route_v3.RouteMatch) + } + + if h, ok := interface{}(m.GetRequestTransformation()).(clone.Cloner); ok { + target.RequestTransformation = h.Clone().(*Transformation) + } else { + target.RequestTransformation = proto.Clone(m.GetRequestTransformation()).(*Transformation) + } + + if h, ok := interface{}(m.GetResponseTransformation()).(clone.Cloner); ok { + target.ResponseTransformation = h.Clone().(*Transformation) + } else { + target.ResponseTransformation = proto.Clone(m.GetResponseTransformation()).(*Transformation) + } + + target.ClearRouteCache = m.GetClearRouteCache() + + return target +} + +// Clone function +func (m *RouteTransformations_RouteTransformation_ResponseMatch) Clone() proto.Message { + var target *RouteTransformations_RouteTransformation_ResponseMatch + if m == nil { + return target + } + target = &RouteTransformations_RouteTransformation_ResponseMatch{} + + if h, ok := interface{}(m.GetMatch()).(clone.Cloner); ok { + target.Match = h.Clone().(*ResponseMatcher) + } else { + target.Match = proto.Clone(m.GetMatch()).(*ResponseMatcher) + } + + if h, ok := interface{}(m.GetResponseTransformation()).(clone.Cloner); ok { + target.ResponseTransformation = h.Clone().(*Transformation) + } else { + target.ResponseTransformation = proto.Clone(m.GetResponseTransformation()).(*Transformation) + } + + return target +} + +// Clone function +func (m *TransformationTemplate_HeaderToAppend) Clone() proto.Message { + var target *TransformationTemplate_HeaderToAppend + if m == nil { + return target + } + target = &TransformationTemplate_HeaderToAppend{} + + target.Key = m.GetKey() + + if h, ok := interface{}(m.GetValue()).(clone.Cloner); ok { + target.Value = h.Clone().(*InjaTemplate) + } else { + target.Value = proto.Clone(m.GetValue()).(*InjaTemplate) + } + + return target +} + +// Clone function +func (m *TransformationTemplate_DynamicMetadataValue) Clone() proto.Message { + var target *TransformationTemplate_DynamicMetadataValue + if m == nil { + return target + } + target = &TransformationTemplate_DynamicMetadataValue{} + + target.MetadataNamespace = m.GetMetadataNamespace() + + target.Key = m.GetKey() + + if h, ok := interface{}(m.GetValue()).(clone.Cloner); ok { + target.Value = h.Clone().(*InjaTemplate) + } else { + target.Value = proto.Clone(m.GetValue()).(*InjaTemplate) + } + + target.JsonToProto = m.GetJsonToProto() + + return target +} + +// Clone function +func (m *TransformationTemplate_SpanTransformer) Clone() proto.Message { + var target *TransformationTemplate_SpanTransformer + if m == nil { + return target + } + target = &TransformationTemplate_SpanTransformer{} + + if h, ok := interface{}(m.GetName()).(clone.Cloner); ok { + target.Name = h.Clone().(*InjaTemplate) + } else { + target.Name = proto.Clone(m.GetName()).(*InjaTemplate) + } + + return target +} + +// Clone function +func (m *MergeJsonKeys_OverridableTemplate) Clone() proto.Message { + var target *MergeJsonKeys_OverridableTemplate + if m == nil { + return target + } + target = &MergeJsonKeys_OverridableTemplate{} + + if h, ok := interface{}(m.GetTmpl()).(clone.Cloner); ok { + target.Tmpl = h.Clone().(*InjaTemplate) + } else { + target.Tmpl = proto.Clone(m.GetTmpl()).(*InjaTemplate) + } + + target.OverrideEmpty = m.GetOverrideEmpty() + + return target +} + +// Clone function +func (m *PromptEnrichment_Message) Clone() proto.Message { + var target *PromptEnrichment_Message + if m == nil { + return target + } + target = &PromptEnrichment_Message{} + + target.Role = m.GetRole() + + target.Content = m.GetContent() + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.equal.go index 55596bb91..b15e292af 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.equal.go @@ -67,6 +67,14 @@ func (m *FilterTransformations) Equal(that interface{}) bool { return false } + if m.GetLogRequestResponseInfo() != target.GetLogRequestResponseInfo() { + return false + } + + if m.GetAutoWebsocketPassthrough() != target.GetAutoWebsocketPassthrough() { + return false + } + return true } @@ -295,9 +303,22 @@ func (m *Transformation) Equal(that interface{}) bool { return false } + if h, ok := interface{}(m.GetLogRequestResponseInfo()).(equality.Equalizer); ok { + if !h.Equal(target.GetLogRequestResponseInfo()) { + return false + } + } else { + if !proto.Equal(m.GetLogRequestResponseInfo(), target.GetLogRequestResponseInfo()) { + return false + } + } + switch m.TransformationType.(type) { case *Transformation_TransformationTemplate: + if _, ok := target.TransformationType.(*Transformation_TransformationTemplate); !ok { + return false + } if h, ok := interface{}(m.GetTransformationTemplate()).(equality.Equalizer); ok { if !h.Equal(target.GetTransformationTemplate()) { @@ -310,6 +331,9 @@ func (m *Transformation) Equal(that interface{}) bool { } case *Transformation_HeaderBodyTransform: + if _, ok := target.TransformationType.(*Transformation_HeaderBodyTransform); !ok { + return false + } if h, ok := interface{}(m.GetHeaderBodyTransform()).(equality.Equalizer); ok { if !h.Equal(target.GetHeaderBodyTransform()) { @@ -322,6 +346,9 @@ func (m *Transformation) Equal(that interface{}) bool { } case *Transformation_TransformerConfig: + if _, ok := target.TransformationType.(*Transformation_TransformerConfig); !ok { + return false + } if h, ok := interface{}(m.GetTransformerConfig()).(equality.Equalizer); ok { if !h.Equal(target.GetTransformerConfig()) { @@ -333,6 +360,26 @@ func (m *Transformation) Equal(that interface{}) bool { } } + case *Transformation_AiTransformation: + if _, ok := target.TransformationType.(*Transformation_AiTransformation); !ok { + return false + } + + if h, ok := interface{}(m.GetAiTransformation()).(equality.Equalizer); ok { + if !h.Equal(target.GetAiTransformation()) { + return false + } + } else { + if !proto.Equal(m.GetAiTransformation(), target.GetAiTransformation()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.TransformationType != target.TransformationType { + return false + } } return true @@ -367,15 +414,35 @@ func (m *Extraction) Equal(that interface{}) bool { return false } + if h, ok := interface{}(m.GetReplacementText()).(equality.Equalizer); ok { + if !h.Equal(target.GetReplacementText()) { + return false + } + } else { + if !proto.Equal(m.GetReplacementText(), target.GetReplacementText()) { + return false + } + } + + if m.GetMode() != target.GetMode() { + return false + } + switch m.Source.(type) { case *Extraction_Header: + if _, ok := target.Source.(*Extraction_Header); !ok { + return false + } if strings.Compare(m.GetHeader(), target.GetHeader()) != 0 { return false } case *Extraction_Body: + if _, ok := target.Source.(*Extraction_Body); !ok { + return false + } if h, ok := interface{}(m.GetBody()).(equality.Equalizer); ok { if !h.Equal(target.GetBody()) { @@ -387,6 +454,11 @@ func (m *Extraction) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.Source != target.Source { + return false + } } return true @@ -468,6 +540,17 @@ func (m *TransformationTemplate) Equal(that interface{}) bool { } + if len(m.GetHeadersToRemove()) != len(target.GetHeadersToRemove()) { + return false + } + for idx, v := range m.GetHeadersToRemove() { + + if strings.Compare(v, target.GetHeadersToRemove()[idx]) != 0 { + return false + } + + } + if m.GetParseBodyBehavior() != target.GetParseBodyBehavior() { return false } @@ -493,9 +576,26 @@ func (m *TransformationTemplate) Equal(that interface{}) bool { } + if m.GetEscapeCharacters() != target.GetEscapeCharacters() { + return false + } + + if h, ok := interface{}(m.GetSpanTransformer()).(equality.Equalizer); ok { + if !h.Equal(target.GetSpanTransformer()) { + return false + } + } else { + if !proto.Equal(m.GetSpanTransformer(), target.GetSpanTransformer()) { + return false + } + } + switch m.BodyTransformation.(type) { case *TransformationTemplate_Body: + if _, ok := target.BodyTransformation.(*TransformationTemplate_Body); !ok { + return false + } if h, ok := interface{}(m.GetBody()).(equality.Equalizer); ok { if !h.Equal(target.GetBody()) { @@ -508,6 +608,9 @@ func (m *TransformationTemplate) Equal(that interface{}) bool { } case *TransformationTemplate_Passthrough: + if _, ok := target.BodyTransformation.(*TransformationTemplate_Passthrough); !ok { + return false + } if h, ok := interface{}(m.GetPassthrough()).(equality.Equalizer); ok { if !h.Equal(target.GetPassthrough()) { @@ -520,6 +623,9 @@ func (m *TransformationTemplate) Equal(that interface{}) bool { } case *TransformationTemplate_MergeExtractorsToBody: + if _, ok := target.BodyTransformation.(*TransformationTemplate_MergeExtractorsToBody); !ok { + return false + } if h, ok := interface{}(m.GetMergeExtractorsToBody()).(equality.Equalizer); ok { if !h.Equal(target.GetMergeExtractorsToBody()) { @@ -531,6 +637,26 @@ func (m *TransformationTemplate) Equal(that interface{}) bool { } } + case *TransformationTemplate_MergeJsonKeys: + if _, ok := target.BodyTransformation.(*TransformationTemplate_MergeJsonKeys); !ok { + return false + } + + if h, ok := interface{}(m.GetMergeJsonKeys()).(equality.Equalizer); ok { + if !h.Equal(target.GetMergeJsonKeys()) { + return false + } + } else { + if !proto.Equal(m.GetMergeJsonKeys(), target.GetMergeJsonKeys()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.BodyTransformation != target.BodyTransformation { + return false + } } return true @@ -612,6 +738,47 @@ func (m *MergeExtractorsToBody) Equal(that interface{}) bool { return true } +// Equal function +func (m *MergeJsonKeys) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*MergeJsonKeys) + if !ok { + that2, ok := that.(MergeJsonKeys) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetJsonKeys()) != len(target.GetJsonKeys()) { + return false + } + for k, v := range m.GetJsonKeys() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetJsonKeys()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetJsonKeys()[k]) { + return false + } + } + + } + + return true +} + // Equal function func (m *HeaderBodyTransform) Equal(that interface{}) bool { if that == nil { @@ -633,6 +800,165 @@ func (m *HeaderBodyTransform) Equal(that interface{}) bool { return false } + if m.GetAddRequestMetadata() != target.GetAddRequestMetadata() { + return false + } + + return true +} + +// Equal function +func (m *FieldDefault) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*FieldDefault) + if !ok { + that2, ok := that.(FieldDefault) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetField(), target.GetField()) != 0 { + return false + } + + if h, ok := interface{}(m.GetValue()).(equality.Equalizer); ok { + if !h.Equal(target.GetValue()) { + return false + } + } else { + if !proto.Equal(m.GetValue(), target.GetValue()) { + return false + } + } + + if m.GetOverride() != target.GetOverride() { + return false + } + + return true +} + +// Equal function +func (m *PromptEnrichment) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*PromptEnrichment) + if !ok { + that2, ok := that.(PromptEnrichment) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetPrepend()) != len(target.GetPrepend()) { + return false + } + for idx, v := range m.GetPrepend() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetPrepend()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetPrepend()[idx]) { + return false + } + } + + } + + if len(m.GetAppend()) != len(target.GetAppend()) { + return false + } + for idx, v := range m.GetAppend() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetAppend()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetAppend()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *AiTransformation) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AiTransformation) + if !ok { + that2, ok := that.(AiTransformation) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetEnableChatStreaming() != target.GetEnableChatStreaming() { + return false + } + + if len(m.GetFieldDefaults()) != len(target.GetFieldDefaults()) { + return false + } + for idx, v := range m.GetFieldDefaults() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetFieldDefaults()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetFieldDefaults()[idx]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetPromptEnrichment()).(equality.Equalizer); ok { + if !h.Equal(target.GetPromptEnrichment()) { + return false + } + } else { + if !proto.Equal(m.GetPromptEnrichment(), target.GetPromptEnrichment()) { + return false + } + } + return true } @@ -722,6 +1048,9 @@ func (m *RouteTransformations_RouteTransformation) Equal(that interface{}) bool switch m.Match.(type) { case *RouteTransformations_RouteTransformation_RequestMatch_: + if _, ok := target.Match.(*RouteTransformations_RouteTransformation_RequestMatch_); !ok { + return false + } if h, ok := interface{}(m.GetRequestMatch()).(equality.Equalizer); ok { if !h.Equal(target.GetRequestMatch()) { @@ -734,6 +1063,9 @@ func (m *RouteTransformations_RouteTransformation) Equal(that interface{}) bool } case *RouteTransformations_RouteTransformation_ResponseMatch_: + if _, ok := target.Match.(*RouteTransformations_RouteTransformation_ResponseMatch_); !ok { + return false + } if h, ok := interface{}(m.GetResponseMatch()).(equality.Equalizer); ok { if !h.Equal(target.GetResponseMatch()) { @@ -745,6 +1077,11 @@ func (m *RouteTransformations_RouteTransformation) Equal(that interface{}) bool } } + default: + // m is nil but target is not nil + if m.Match != target.Match { + return false + } } return true @@ -929,5 +1266,113 @@ func (m *TransformationTemplate_DynamicMetadataValue) Equal(that interface{}) bo } } + if m.GetJsonToProto() != target.GetJsonToProto() { + return false + } + + return true +} + +// Equal function +func (m *TransformationTemplate_SpanTransformer) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*TransformationTemplate_SpanTransformer) + if !ok { + that2, ok := that.(TransformationTemplate_SpanTransformer) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetName()).(equality.Equalizer); ok { + if !h.Equal(target.GetName()) { + return false + } + } else { + if !proto.Equal(m.GetName(), target.GetName()) { + return false + } + } + + return true +} + +// Equal function +func (m *MergeJsonKeys_OverridableTemplate) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*MergeJsonKeys_OverridableTemplate) + if !ok { + that2, ok := that.(MergeJsonKeys_OverridableTemplate) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetTmpl()).(equality.Equalizer); ok { + if !h.Equal(target.GetTmpl()) { + return false + } + } else { + if !proto.Equal(m.GetTmpl(), target.GetTmpl()) { + return false + } + } + + if m.GetOverrideEmpty() != target.GetOverrideEmpty() { + return false + } + + return true +} + +// Equal function +func (m *PromptEnrichment_Message) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*PromptEnrichment_Message) + if !ok { + that2, ok := that.(PromptEnrichment_Message) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetRole(), target.GetRole()) != 0 { + return false + } + + if strings.Compare(m.GetContent(), target.GetContent()) != 0 { + return false + } + return true } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.go index ba18af63c..f7b401826 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/transformation/transformation.proto @@ -9,16 +9,18 @@ package transformation import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - empty "github.com/golang/protobuf/ptypes/empty" _ "github.com/solo-io/protoc-gen-ext/extproto" v32 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3" v31 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + structpb "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -28,9 +30,66 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 +// The mode of operation for the extraction. +type Extraction_Mode int32 + +const ( + // Default mode. Extract the content of a specified capturing group. In this mode, + // `subgroup` selects the n-th capturing group, which represents the value that + // you want to extract. + Extraction_EXTRACT Extraction_Mode = 0 + // Replace the content of a specified capturing group. In this mode, `subgroup` selects the + // n-th capturing group, which represents the value that you want to replace with + // the string provided in `replacement_text`. + // Note: `replacement_text` must be set for this mode. + Extraction_SINGLE_REPLACE Extraction_Mode = 1 + // Replace all regex matches with the value provided in `replacement_text`. + // Note: `replacement_text` must be set for this mode. + // Note: The configuration fails if `subgroup` is set to a non-zero value. + // Note: restrictions on the regex are different for this mode. See the regex field for more details. + Extraction_REPLACE_ALL Extraction_Mode = 2 +) + +// Enum value maps for Extraction_Mode. +var ( + Extraction_Mode_name = map[int32]string{ + 0: "EXTRACT", + 1: "SINGLE_REPLACE", + 2: "REPLACE_ALL", + } + Extraction_Mode_value = map[string]int32{ + "EXTRACT": 0, + "SINGLE_REPLACE": 1, + "REPLACE_ALL": 2, + } +) + +func (x Extraction_Mode) Enum() *Extraction_Mode { + p := new(Extraction_Mode) + *p = x + return p +} + +func (x Extraction_Mode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Extraction_Mode) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_enumTypes[0].Descriptor() +} + +func (Extraction_Mode) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_enumTypes[0] +} + +func (x Extraction_Mode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Extraction_Mode.Descriptor instead. +func (Extraction_Mode) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescGZIP(), []int{6, 0} +} // Determines how the body will be parsed. type TransformationTemplate_RequestBodyParse int32 @@ -65,11 +124,11 @@ func (x TransformationTemplate_RequestBodyParse) String() string { } func (TransformationTemplate_RequestBodyParse) Descriptor() protoreflect.EnumDescriptor { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_enumTypes[0].Descriptor() + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_enumTypes[1].Descriptor() } func (TransformationTemplate_RequestBodyParse) Type() protoreflect.EnumType { - return &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_enumTypes[0] + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_enumTypes[1] } func (x TransformationTemplate_RequestBodyParse) Number() protoreflect.EnumNumber { @@ -82,10 +141,7 @@ func (TransformationTemplate_RequestBodyParse) EnumDescriptor() ([]byte, []int) } type FilterTransformations struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies transformations based on the route matches. The first matched // transformation will be applied. If there are overlapped match conditions, // please put the most specific match first. @@ -93,15 +149,23 @@ type FilterTransformations struct { // Only RouteTransformations.RouteTransformation with matching stage will be // used with this filter. Stage uint32 `protobuf:"varint,2,opt,name=stage,proto3" json:"stage,omitempty"` + // Logs request/response sensitive information + // By default, this is false so no request or response sensitive information is logged. + // If set to true, the filter will log the request/response body and headers before and + // after any transformation is applied. + LogRequestResponseInfo bool `protobuf:"varint,3,opt,name=log_request_response_info,json=logRequestResponseInfo,proto3" json:"log_request_response_info,omitempty"` + // Automatically detect websocket upgrade request and pass through the request and response + // body without applying body transformations. Header transformation will still apply. + AutoWebsocketPassthrough bool `protobuf:"varint,5,opt,name=auto_websocket_passthrough,json=autoWebsocketPassthrough,proto3" json:"auto_websocket_passthrough,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FilterTransformations) Reset() { *x = FilterTransformations{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FilterTransformations) String() string { @@ -112,7 +176,7 @@ func (*FilterTransformations) ProtoMessage() {} func (x *FilterTransformations) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -141,11 +205,22 @@ func (x *FilterTransformations) GetStage() uint32 { return 0 } -type TransformationRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *FilterTransformations) GetLogRequestResponseInfo() bool { + if x != nil { + return x.LogRequestResponseInfo + } + return false +} + +func (x *FilterTransformations) GetAutoWebsocketPassthrough() bool { + if x != nil { + return x.AutoWebsocketPassthrough + } + return false +} +type TransformationRule struct { + state protoimpl.MessageState `protogen:"open.v1"` // The route matching parameter. Only when the match is satisfied, the // "requires" field will apply. // @@ -153,21 +228,20 @@ type TransformationRule struct { // // .. code-block:: yaml // - // match: - // prefix: / - // + // match: + // prefix: / Match *v3.RouteMatch `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"` // transformation to perform RouteTransformations *TransformationRule_Transformations `protobuf:"bytes,2,opt,name=route_transformations,json=routeTransformations,proto3" json:"route_transformations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TransformationRule) Reset() { *x = TransformationRule{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TransformationRule) String() string { @@ -178,7 +252,7 @@ func (*TransformationRule) ProtoMessage() {} func (x *TransformationRule) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -208,34 +282,31 @@ func (x *TransformationRule) GetRouteTransformations() *TransformationRule_Trans } type RouteTransformations struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // deprecated. Use transformations[].request_match.request_transformation // instead. // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/transformation/transformation.proto. RequestTransformation *Transformation `protobuf:"bytes,1,opt,name=request_transformation,json=requestTransformation,proto3" json:"request_transformation,omitempty"` // deprecated. Use transformations[].request_match.response_transformation // instead. // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/transformation/transformation.proto. ResponseTransformation *Transformation `protobuf:"bytes,2,opt,name=response_transformation,json=responseTransformation,proto3" json:"response_transformation,omitempty"` // deprecated. Use transformations[].request_match.clear_route_cache instead. // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/transformation/transformation.proto. ClearRouteCache bool `protobuf:"varint,3,opt,name=clear_route_cache,json=clearRouteCache,proto3" json:"clear_route_cache,omitempty"` Transformations []*RouteTransformations_RouteTransformation `protobuf:"bytes,4,rep,name=transformations,proto3" json:"transformations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteTransformations) Reset() { *x = RouteTransformations{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteTransformations) String() string { @@ -246,7 +317,7 @@ func (*RouteTransformations) ProtoMessage() {} func (x *RouteTransformations) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -261,7 +332,7 @@ func (*RouteTransformations) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescGZIP(), []int{2} } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/transformation/transformation.proto. func (x *RouteTransformations) GetRequestTransformation() *Transformation { if x != nil { return x.RequestTransformation @@ -269,7 +340,7 @@ func (x *RouteTransformations) GetRequestTransformation() *Transformation { return nil } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/transformation/transformation.proto. func (x *RouteTransformations) GetResponseTransformation() *Transformation { if x != nil { return x.ResponseTransformation @@ -277,7 +348,7 @@ func (x *RouteTransformations) GetResponseTransformation() *Transformation { return nil } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/transformation/transformation.proto. func (x *RouteTransformations) GetClearRouteCache() bool { if x != nil { return x.ClearRouteCache @@ -293,10 +364,7 @@ func (x *RouteTransformations) GetTransformations() []*RouteTransformations_Rout } type ResponseMatcher struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies a set of headers that the route should match on. The router will // check the response headers against all the specified headers in the route // config. A match will happen if all the headers in the route are present in @@ -306,15 +374,15 @@ type ResponseMatcher struct { // Only match responses with non empty response code details (this usually // implies a local reply). ResponseCodeDetails *v31.StringMatcher `protobuf:"bytes,2,opt,name=response_code_details,json=responseCodeDetails,proto3" json:"response_code_details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResponseMatcher) Reset() { *x = ResponseMatcher{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ResponseMatcher) String() string { @@ -325,7 +393,7 @@ func (*ResponseMatcher) ProtoMessage() {} func (x *ResponseMatcher) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -355,22 +423,19 @@ func (x *ResponseMatcher) GetResponseCodeDetails() *v31.StringMatcher { } type ResponseTransformationRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Match *ResponseMatcher `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Match *ResponseMatcher `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"` // transformation to perform ResponseTransformation *Transformation `protobuf:"bytes,2,opt,name=response_transformation,json=responseTransformation,proto3" json:"response_transformation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResponseTransformationRule) Reset() { *x = ResponseTransformationRule{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ResponseTransformationRule) String() string { @@ -381,7 +446,7 @@ func (*ResponseTransformationRule) ProtoMessage() {} func (x *ResponseTransformationRule) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -413,26 +478,30 @@ func (x *ResponseTransformationRule) GetResponseTransformation() *Transformation // This message defines a transformation. // This proto is for envoy filter config, not user-facing API. type Transformation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The type of transformation to apply. // - // Types that are assignable to TransformationType: + // Types that are valid to be assigned to TransformationType: + // // *Transformation_TransformationTemplate // *Transformation_HeaderBodyTransform // *Transformation_TransformerConfig + // *Transformation_AiTransformation TransformationType isTransformation_TransformationType `protobuf_oneof:"transformation_type"` + // Logs request/response sensitive information + // By default, this is false so no request or response sensitive information is logged. + // If set to true, the filter will log the request/response body and headers before and + // after this transformation is applied. + LogRequestResponseInfo *wrapperspb.BoolValue `protobuf:"bytes,4,opt,name=log_request_response_info,json=logRequestResponseInfo,proto3" json:"log_request_response_info,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Transformation) Reset() { *x = Transformation{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Transformation) String() string { @@ -443,7 +512,7 @@ func (*Transformation) ProtoMessage() {} func (x *Transformation) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -458,30 +527,52 @@ func (*Transformation) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescGZIP(), []int{5} } -func (m *Transformation) GetTransformationType() isTransformation_TransformationType { - if m != nil { - return m.TransformationType +func (x *Transformation) GetTransformationType() isTransformation_TransformationType { + if x != nil { + return x.TransformationType } return nil } func (x *Transformation) GetTransformationTemplate() *TransformationTemplate { - if x, ok := x.GetTransformationType().(*Transformation_TransformationTemplate); ok { - return x.TransformationTemplate + if x != nil { + if x, ok := x.TransformationType.(*Transformation_TransformationTemplate); ok { + return x.TransformationTemplate + } } return nil } func (x *Transformation) GetHeaderBodyTransform() *HeaderBodyTransform { - if x, ok := x.GetTransformationType().(*Transformation_HeaderBodyTransform); ok { - return x.HeaderBodyTransform + if x != nil { + if x, ok := x.TransformationType.(*Transformation_HeaderBodyTransform); ok { + return x.HeaderBodyTransform + } } return nil } func (x *Transformation) GetTransformerConfig() *v32.TypedExtensionConfig { - if x, ok := x.GetTransformationType().(*Transformation_TransformerConfig); ok { - return x.TransformerConfig + if x != nil { + if x, ok := x.TransformationType.(*Transformation_TransformerConfig); ok { + return x.TransformerConfig + } + } + return nil +} + +func (x *Transformation) GetAiTransformation() *AiTransformation { + if x != nil { + if x, ok := x.TransformationType.(*Transformation_AiTransformation); ok { + return x.AiTransformation + } + } + return nil +} + +func (x *Transformation) GetLogRequestResponseInfo() *wrapperspb.BoolValue { + if x != nil { + return x.LogRequestResponseInfo } return nil } @@ -509,42 +600,76 @@ type Transformation_TransformerConfig struct { TransformerConfig *v32.TypedExtensionConfig `protobuf:"bytes,3,opt,name=transformer_config,json=transformerConfig,proto3,oneof"` } +type Transformation_AiTransformation struct { + // AI Gateway specific Transformation + AiTransformation *AiTransformation `protobuf:"bytes,5,opt,name=ai_transformation,json=aiTransformation,proto3,oneof"` +} + func (*Transformation_TransformationTemplate) isTransformation_TransformationType() {} func (*Transformation_HeaderBodyTransform) isTransformation_TransformationType() {} func (*Transformation_TransformerConfig) isTransformation_TransformationType() {} +func (*Transformation_AiTransformation) isTransformation_TransformationType() {} + // Extractions can be used to extract information from the request/response. // The extracted information can then be referenced in template fields. type Extraction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The source of the extraction // - // Types that are assignable to Source: + // Types that are valid to be assigned to Source: + // // *Extraction_Header // *Extraction_Body Source isExtraction_Source `protobuf_oneof:"source"` - // Only strings matching this regular expression will be part of the - // extraction. The most simple value for this field is '.*', which matches the - // whole source. The field is required. If extraction fails the result is an - // empty value. + // The regex field specifies the regular expression used for matching against the source content. + // - In EXTRACT mode, the entire source must match the regex. `subgroup` selects the n-th capturing group, + // which determines the part of the match that you want to extract. If the regex does not match the source, + // the result of the extraction will be an empty value. + // - In SINGLE_REPLACE mode, the regex also needs to match the entire source. `subgroup` selects the n-th capturing group + // that is replaced with the content of `replacement_text`. If the regex does not match the source, the result + // of the replacement will be the source itself. + // - In REPLACE_ALL mode, the regex is applied repeatedly to find all occurrences within the source that match. + // Each matching occurrence is replaced with the value in `replacement_text`. In this mode, the configuration is rejected + // if `subgroup` is set. If the regex does not match the source, the result of the replacement will be the source itself. Regex string `protobuf:"bytes,2,opt,name=regex,proto3" json:"regex,omitempty"` - // If your regex contains capturing groups, use this field to determine which - // group should be selected. + // If your regex contains capturing groups, use this field to determine the + // group that you want to select. Defaults to 0. + // If set in `EXTRACT` and `SINGLE_REPLACE` modes, the subgroup represents the capturing + // group that you want to extract or replace in the source. + // The configuration is rejected if you set subgroup to a non-zero value when using thev `REPLACE_ALL` mode. Subgroup uint32 `protobuf:"varint,3,opt,name=subgroup,proto3" json:"subgroup,omitempty"` + // The value `replacement_text` is used to format the substitution for matched sequences in + // in an input string. This value is only legal in `SINGLE_REPLACE` and `REPLACE_ALL` modes. + // - In `SINGLE_REPLACE` mode, the `subgroup` selects the n-th capturing group, which represents + // the value that you want to replace with the string provided in `replacement_text`. + // - In `REPLACE_ALL` mode, each sequence that matches the specified regex in the input is + // replaced with the value in`replacement_text`. + // + // The `replacement_text` can include special syntax, such as $1, $2, etc., to refer to + // + // capturing groups within the regular expression. + // + // The value that is specified in `replacement_text` is treated as a string, and is passed + // + // to `std::regex_replace` as the replacement string. + // + // For more informatino, see https://en.cppreference.com/w/cpp/regex/regex_replace. + ReplacementText *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=replacement_text,json=replacementText,proto3" json:"replacement_text,omitempty"` + // The mode of operation for the extraction. + // Defaults to EXTRACT. + Mode Extraction_Mode `protobuf:"varint,6,opt,name=mode,proto3,enum=envoy.api.v2.filter.http.Extraction_Mode" json:"mode,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Extraction) Reset() { *x = Extraction{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Extraction) String() string { @@ -555,7 +680,7 @@ func (*Extraction) ProtoMessage() {} func (x *Extraction) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -570,23 +695,27 @@ func (*Extraction) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescGZIP(), []int{6} } -func (m *Extraction) GetSource() isExtraction_Source { - if m != nil { - return m.Source +func (x *Extraction) GetSource() isExtraction_Source { + if x != nil { + return x.Source } return nil } func (x *Extraction) GetHeader() string { - if x, ok := x.GetSource().(*Extraction_Header); ok { - return x.Header + if x != nil { + if x, ok := x.Source.(*Extraction_Header); ok { + return x.Header + } } return "" } -func (x *Extraction) GetBody() *empty.Empty { - if x, ok := x.GetSource().(*Extraction_Body); ok { - return x.Body +func (x *Extraction) GetBody() *emptypb.Empty { + if x != nil { + if x, ok := x.Source.(*Extraction_Body); ok { + return x.Body + } } return nil } @@ -605,6 +734,20 @@ func (x *Extraction) GetSubgroup() uint32 { return 0 } +func (x *Extraction) GetReplacementText() *wrapperspb.StringValue { + if x != nil { + return x.ReplacementText + } + return nil +} + +func (x *Extraction) GetMode() Extraction_Mode { + if x != nil { + return x.Mode + } + return Extraction_EXTRACT +} + type isExtraction_Source interface { isExtraction_Source() } @@ -616,7 +759,7 @@ type Extraction_Header struct { type Extraction_Body struct { // Extract information from the request/response body - Body *empty.Empty `protobuf:"bytes,4,opt,name=body,proto3,oneof"` + Body *emptypb.Empty `protobuf:"bytes,4,opt,name=body,proto3,oneof"` } func (*Extraction_Header) isExtraction_Source() {} @@ -625,10 +768,7 @@ func (*Extraction_Body) isExtraction_Source() {} // Defines a transformation template. type TransformationTemplate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // If set to true, use JSON pointer notation (e.g. "time/start") instead of // dot notation (e.g. "time.start") to access JSON elements. Defaults to // false. @@ -645,7 +785,7 @@ type TransformationTemplate struct { // extractor with a name. You can reference extractors by their name in // templates, e.g. "{{ my-extractor }}" will render to the value of the // "my-extractor" extractor. - Extractors map[string]*Extraction `protobuf:"bytes,2,rep,name=extractors,proto3" json:"extractors,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Extractors map[string]*Extraction `protobuf:"bytes,2,rep,name=extractors,proto3" json:"extractors,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Use this attribute to transform request/response headers. It consists of a // map of strings to templates. The string key determines the name of the // resulting header, the rendered template will determine the value. Any existing @@ -656,14 +796,16 @@ type TransformationTemplate struct { // For example, the following header transformation configuration: // // ```yaml - // headers: - // x-header-one: {"text": "first {{inja}} template"} - // x-header-one: {"text": "second {{inja}} template"} - // headersToAppend: - // - key: x-header-one - // value: {"text": "first appended {{inja}} template"} - // - key: x-header-one - // value: {"text": "second appended {{inja}} template"} + // + // headers: + // x-header-one: {"text": "first {{inja}} template"} + // x-header-one: {"text": "second {{inja}} template"} + // headersToAppend: + // - key: x-header-one + // value: {"text": "first appended {{inja}} template"} + // - key: x-header-one + // value: {"text": "second appended {{inja}} template"} + // // ``` // will result in the following headers on the HTTP message: // @@ -672,35 +814,48 @@ type TransformationTemplate struct { // x-header-one: first appended inja template // x-header-one: second appended inja template // ``` - Headers map[string]*InjaTemplate `protobuf:"bytes,3,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Headers map[string]*InjaTemplate `protobuf:"bytes,3,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Use this attribute to transform request/response headers. It consists of // an array of string/template objects. Use this attribute to define multiple // templates for a single header. Header template(s) defined here will be appended to any // existing headers with the same header name, not replace existing ones. // See `headers` documentation to see an example of usage. HeadersToAppend []*TransformationTemplate_HeaderToAppend `protobuf:"bytes,10,rep,name=headers_to_append,json=headersToAppend,proto3" json:"headers_to_append,omitempty"` + // Attribute to remove headers from requests. If a header is present multiple + // times, all instances of the header will be removed. + HeadersToRemove []string `protobuf:"bytes,11,rep,name=headers_to_remove,json=headersToRemove,proto3" json:"headers_to_remove,omitempty"` // Determines the type of transformation to apply to the request/response body // - // Types that are assignable to BodyTransformation: + // Types that are valid to be assigned to BodyTransformation: + // // *TransformationTemplate_Body // *TransformationTemplate_Passthrough // *TransformationTemplate_MergeExtractorsToBody + // *TransformationTemplate_MergeJsonKeys BodyTransformation isTransformationTemplate_BodyTransformation `protobuf_oneof:"body_transformation"` - ParseBodyBehavior TransformationTemplate_RequestBodyParse `protobuf:"varint,7,opt,name=parse_body_behavior,json=parseBodyBehavior,proto3,enum=envoy.api.v2.filter.http.TransformationTemplate_RequestBodyParse" json:"parse_body_behavior,omitempty"` + // Determines how the body will be parsed. Defaults to ParseAsJson + ParseBodyBehavior TransformationTemplate_RequestBodyParse `protobuf:"varint,7,opt,name=parse_body_behavior,json=parseBodyBehavior,proto3,enum=envoy.api.v2.filter.http.TransformationTemplate_RequestBodyParse" json:"parse_body_behavior,omitempty"` // If set to true, Envoy will not throw an exception in case the body parsing // fails. IgnoreErrorOnParse bool `protobuf:"varint,8,opt,name=ignore_error_on_parse,json=ignoreErrorOnParse,proto3" json:"ignore_error_on_parse,omitempty"` // Use this field to set Dynamic Metadata. DynamicMetadataValues []*TransformationTemplate_DynamicMetadataValue `protobuf:"bytes,9,rep,name=dynamic_metadata_values,json=dynamicMetadataValues,proto3" json:"dynamic_metadata_values,omitempty"` + // Use this field to set Inja behavior when rendering strings which contain + // characters that would need to be escaped to be valid JSON. Note that this + // sets the behavior for the entire transformation. Use raw_strings function + // for fine-grained control within a template. + EscapeCharacters bool `protobuf:"varint,12,opt,name=escape_characters,json=escapeCharacters,proto3" json:"escape_characters,omitempty"` + // Use this field to modify the span of the trace. + SpanTransformer *TransformationTemplate_SpanTransformer `protobuf:"bytes,15,opt,name=span_transformer,json=spanTransformer,proto3" json:"span_transformer,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TransformationTemplate) Reset() { *x = TransformationTemplate{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TransformationTemplate) String() string { @@ -711,7 +866,7 @@ func (*TransformationTemplate) ProtoMessage() {} func (x *TransformationTemplate) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -754,30 +909,52 @@ func (x *TransformationTemplate) GetHeadersToAppend() []*TransformationTemplate_ return nil } -func (m *TransformationTemplate) GetBodyTransformation() isTransformationTemplate_BodyTransformation { - if m != nil { - return m.BodyTransformation +func (x *TransformationTemplate) GetHeadersToRemove() []string { + if x != nil { + return x.HeadersToRemove + } + return nil +} + +func (x *TransformationTemplate) GetBodyTransformation() isTransformationTemplate_BodyTransformation { + if x != nil { + return x.BodyTransformation } return nil } func (x *TransformationTemplate) GetBody() *InjaTemplate { - if x, ok := x.GetBodyTransformation().(*TransformationTemplate_Body); ok { - return x.Body + if x != nil { + if x, ok := x.BodyTransformation.(*TransformationTemplate_Body); ok { + return x.Body + } } return nil } func (x *TransformationTemplate) GetPassthrough() *Passthrough { - if x, ok := x.GetBodyTransformation().(*TransformationTemplate_Passthrough); ok { - return x.Passthrough + if x != nil { + if x, ok := x.BodyTransformation.(*TransformationTemplate_Passthrough); ok { + return x.Passthrough + } } return nil } func (x *TransformationTemplate) GetMergeExtractorsToBody() *MergeExtractorsToBody { - if x, ok := x.GetBodyTransformation().(*TransformationTemplate_MergeExtractorsToBody); ok { - return x.MergeExtractorsToBody + if x != nil { + if x, ok := x.BodyTransformation.(*TransformationTemplate_MergeExtractorsToBody); ok { + return x.MergeExtractorsToBody + } + } + return nil +} + +func (x *TransformationTemplate) GetMergeJsonKeys() *MergeJsonKeys { + if x != nil { + if x, ok := x.BodyTransformation.(*TransformationTemplate_MergeJsonKeys); ok { + return x.MergeJsonKeys + } } return nil } @@ -803,6 +980,20 @@ func (x *TransformationTemplate) GetDynamicMetadataValues() []*TransformationTem return nil } +func (x *TransformationTemplate) GetEscapeCharacters() bool { + if x != nil { + return x.EscapeCharacters + } + return false +} + +func (x *TransformationTemplate) GetSpanTransformer() *TransformationTemplate_SpanTransformer { + if x != nil { + return x.SpanTransformer + } + return nil +} + type isTransformationTemplate_BodyTransformation interface { isTransformationTemplate_BodyTransformation() } @@ -826,38 +1017,56 @@ type TransformationTemplate_MergeExtractorsToBody struct { MergeExtractorsToBody *MergeExtractorsToBody `protobuf:"bytes,6,opt,name=merge_extractors_to_body,json=mergeExtractorsToBody,proto3,oneof"` } +type TransformationTemplate_MergeJsonKeys struct { + // A set of key-value pairs to merge into the JSON body. + // Each value will be rendered separately, and then placed into the JSON body at + // the specified key. + // There are a number of important caveats to using this feature: + // * This can only be used when the body is parsed as JSON. + // * This option does NOT work with advanced templates currently + MergeJsonKeys *MergeJsonKeys `protobuf:"bytes,13,opt,name=merge_json_keys,json=mergeJsonKeys,proto3,oneof"` +} + func (*TransformationTemplate_Body) isTransformationTemplate_BodyTransformation() {} func (*TransformationTemplate_Passthrough) isTransformationTemplate_BodyTransformation() {} func (*TransformationTemplate_MergeExtractorsToBody) isTransformationTemplate_BodyTransformation() {} +func (*TransformationTemplate_MergeJsonKeys) isTransformationTemplate_BodyTransformation() {} + // Defines an [Inja template](https://github.com/pantor/inja) that will be // rendered by Gloo. In addition to the core template functions, the Gloo // transformation filter defines the following custom functions: -// - header(header_name): returns the value of the header with the given name +// - header(header_name): returns the value of the header with the given name. // - extraction(extractor_name): returns the value of the extractor with the -// given name +// given name. // - env(env_var_name): returns the value of the environment variable with the -// given name -// - body(): returns the request/response body +// given name. +// - body(): returns the request/response body. // - context(): returns the base JSON context (allowing for example to range on -// a JSON body that is an array) +// a JSON body that is an array). +// - request_header(header_name): returns the value of the request header with +// the given name. Use this option when you want to include request header values in response +// transformations. +// - base64_encode(string): encodes the input string to base64. +// - base64_decode(string): decodes the input string from base64. +// - substring(string, start_pos, substring_len): returns a substring of the +// input string, starting at `start_pos` and extending for `substring_len` +// characters. If no `substring_len` is provided or `substring_len` is <= 0, the +// substring extends to the end of the input string. type InjaTemplate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` unknownFields protoimpl.UnknownFields - - Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` + sizeCache protoimpl.SizeCache } func (x *InjaTemplate) Reset() { *x = InjaTemplate{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *InjaTemplate) String() string { @@ -868,7 +1077,7 @@ func (*InjaTemplate) ProtoMessage() {} func (x *InjaTemplate) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -891,18 +1100,16 @@ func (x *InjaTemplate) GetText() string { } type Passthrough struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Passthrough) Reset() { *x = Passthrough{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Passthrough) String() string { @@ -913,7 +1120,7 @@ func (*Passthrough) ProtoMessage() {} func (x *Passthrough) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -929,18 +1136,16 @@ func (*Passthrough) Descriptor() ([]byte, []int) { } type MergeExtractorsToBody struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MergeExtractorsToBody) Reset() { *x = MergeExtractorsToBody{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MergeExtractorsToBody) String() string { @@ -951,7 +1156,7 @@ func (*MergeExtractorsToBody) ProtoMessage() {} func (x *MergeExtractorsToBody) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -966,30 +1171,47 @@ func (*MergeExtractorsToBody) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescGZIP(), []int{10} } -type HeaderBodyTransform struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type MergeJsonKeys struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Map of key name -> template to render into the JSON body. + // Specified keys which don't exist in the JSON body will be set, + // keys which do exist will be overriden. + // + // For example, given the following JSON body: + // { + // "key1": "value1" + // } + // and the following MergeJsonKeys: + // { + // "key1": "{{ header("header1") }}", + // "key2": "{{ header("header2") }}" + // } + // The resulting JSON body will be: + // { + // "key1": "header1_value", + // "key2": "header2_value" + // } + JsonKeys map[string]*MergeJsonKeys_OverridableTemplate `protobuf:"bytes,2,rep,name=json_keys,json=jsonKeys,proto3" json:"json_keys,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *HeaderBodyTransform) Reset() { - *x = HeaderBodyTransform{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *MergeJsonKeys) Reset() { + *x = MergeJsonKeys{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *HeaderBodyTransform) String() string { +func (x *MergeJsonKeys) String() string { return protoimpl.X.MessageStringOf(x) } -func (*HeaderBodyTransform) ProtoMessage() {} +func (*MergeJsonKeys) ProtoMessage() {} -func (x *HeaderBodyTransform) ProtoReflect() protoreflect.Message { +func (x *MergeJsonKeys) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -999,45 +1221,44 @@ func (x *HeaderBodyTransform) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use HeaderBodyTransform.ProtoReflect.Descriptor instead. -func (*HeaderBodyTransform) Descriptor() ([]byte, []int) { +// Deprecated: Use MergeJsonKeys.ProtoReflect.Descriptor instead. +func (*MergeJsonKeys) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescGZIP(), []int{11} } -type TransformationRule_Transformations struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *MergeJsonKeys) GetJsonKeys() map[string]*MergeJsonKeys_OverridableTemplate { + if x != nil { + return x.JsonKeys + } + return nil +} - // Apply a transformation to requests. - RequestTransformation *Transformation `protobuf:"bytes,1,opt,name=request_transformation,json=requestTransformation,proto3" json:"request_transformation,omitempty"` - // Clear the route cache if the request transformation was applied. - ClearRouteCache bool `protobuf:"varint,3,opt,name=clear_route_cache,json=clearRouteCache,proto3" json:"clear_route_cache,omitempty"` - // Apply a transformation to responses. - ResponseTransformation *Transformation `protobuf:"bytes,2,opt,name=response_transformation,json=responseTransformation,proto3" json:"response_transformation,omitempty"` - // Apply a transformation in the onStreamComplete callback - // (for modifying headers and dynamic metadata for access logs) - OnStreamCompletionTransformation *Transformation `protobuf:"bytes,4,opt,name=on_stream_completion_transformation,json=onStreamCompletionTransformation,proto3" json:"on_stream_completion_transformation,omitempty"` +type HeaderBodyTransform struct { + state protoimpl.MessageState `protogen:"open.v1"` + // When transforming a request, setting this to true will additionally add "queryString", + // "queryStringParameters", "multiValueQueryStringParameters", "httpMethod", "path", + // and "multiValueHeaders" to the body + AddRequestMetadata bool `protobuf:"varint,1,opt,name=add_request_metadata,json=addRequestMetadata,proto3" json:"add_request_metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *TransformationRule_Transformations) Reset() { - *x = TransformationRule_Transformations{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *HeaderBodyTransform) Reset() { + *x = HeaderBodyTransform{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *TransformationRule_Transformations) String() string { +func (x *HeaderBodyTransform) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TransformationRule_Transformations) ProtoMessage() {} +func (*HeaderBodyTransform) ProtoMessage() {} -func (x *TransformationRule_Transformations) ProtoReflect() protoreflect.Message { +func (x *HeaderBodyTransform) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1047,27 +1268,260 @@ func (x *TransformationRule_Transformations) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use TransformationRule_Transformations.ProtoReflect.Descriptor instead. -func (*TransformationRule_Transformations) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescGZIP(), []int{1, 0} +// Deprecated: Use HeaderBodyTransform.ProtoReflect.Descriptor instead. +func (*HeaderBodyTransform) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescGZIP(), []int{12} } -func (x *TransformationRule_Transformations) GetRequestTransformation() *Transformation { +func (x *HeaderBodyTransform) GetAddRequestMetadata() bool { if x != nil { - return x.RequestTransformation + return x.AddRequestMetadata } - return nil + return false } -func (x *TransformationRule_Transformations) GetClearRouteCache() bool { - if x != nil { - return x.ClearRouteCache - } - return false +type FieldDefault struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The name of the field. + Field string `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"` + // The field default value, which can be any JSON Data Type. + Value *structpb.Value `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + // Whether to override the field's value if it already exists. + // Defaults to false. + Override bool `protobuf:"varint,3,opt,name=override,proto3" json:"override,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *TransformationRule_Transformations) GetResponseTransformation() *Transformation { - if x != nil { +func (x *FieldDefault) Reset() { + *x = FieldDefault{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FieldDefault) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FieldDefault) ProtoMessage() {} + +func (x *FieldDefault) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FieldDefault.ProtoReflect.Descriptor instead. +func (*FieldDefault) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescGZIP(), []int{13} +} + +func (x *FieldDefault) GetField() string { + if x != nil { + return x.Field + } + return "" +} + +func (x *FieldDefault) GetValue() *structpb.Value { + if x != nil { + return x.Value + } + return nil +} + +func (x *FieldDefault) GetOverride() bool { + if x != nil { + return x.Override + } + return false +} + +type PromptEnrichment struct { + state protoimpl.MessageState `protogen:"open.v1"` + // A list of messages to be prepended to the prompt sent by the client. + Prepend []*PromptEnrichment_Message `protobuf:"bytes,2,rep,name=prepend,proto3" json:"prepend,omitempty"` + // A list of messages to be appended to the prompt sent by the client. + Append []*PromptEnrichment_Message `protobuf:"bytes,3,rep,name=append,proto3" json:"append,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PromptEnrichment) Reset() { + *x = PromptEnrichment{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PromptEnrichment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PromptEnrichment) ProtoMessage() {} + +func (x *PromptEnrichment) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PromptEnrichment.ProtoReflect.Descriptor instead. +func (*PromptEnrichment) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescGZIP(), []int{14} +} + +func (x *PromptEnrichment) GetPrepend() []*PromptEnrichment_Message { + if x != nil { + return x.Prepend + } + return nil +} + +func (x *PromptEnrichment) GetAppend() []*PromptEnrichment_Message { + if x != nil { + return x.Append + } + return nil +} + +type AiTransformation struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Rewrite the request to enable chat streaming + EnableChatStreaming bool `protobuf:"varint,1,opt,name=enable_chat_streaming,json=enableChatStreaming,proto3" json:"enable_chat_streaming,omitempty"` + // Set defaults for fields in the request body + FieldDefaults []*FieldDefault `protobuf:"bytes,2,rep,name=field_defaults,json=fieldDefaults,proto3" json:"field_defaults,omitempty"` + // Inject prompts into the request body + PromptEnrichment *PromptEnrichment `protobuf:"bytes,3,opt,name=prompt_enrichment,json=promptEnrichment,proto3" json:"prompt_enrichment,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AiTransformation) Reset() { + *x = AiTransformation{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AiTransformation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AiTransformation) ProtoMessage() {} + +func (x *AiTransformation) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AiTransformation.ProtoReflect.Descriptor instead. +func (*AiTransformation) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescGZIP(), []int{15} +} + +func (x *AiTransformation) GetEnableChatStreaming() bool { + if x != nil { + return x.EnableChatStreaming + } + return false +} + +func (x *AiTransformation) GetFieldDefaults() []*FieldDefault { + if x != nil { + return x.FieldDefaults + } + return nil +} + +func (x *AiTransformation) GetPromptEnrichment() *PromptEnrichment { + if x != nil { + return x.PromptEnrichment + } + return nil +} + +type TransformationRule_Transformations struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Apply a transformation to requests. + RequestTransformation *Transformation `protobuf:"bytes,1,opt,name=request_transformation,json=requestTransformation,proto3" json:"request_transformation,omitempty"` + // Clear the route cache if the request transformation was applied. + ClearRouteCache bool `protobuf:"varint,3,opt,name=clear_route_cache,json=clearRouteCache,proto3" json:"clear_route_cache,omitempty"` + // Apply a transformation to responses. + ResponseTransformation *Transformation `protobuf:"bytes,2,opt,name=response_transformation,json=responseTransformation,proto3" json:"response_transformation,omitempty"` + // Apply a transformation in the onStreamComplete callback + // (for modifying headers and dynamic metadata for access logs) + OnStreamCompletionTransformation *Transformation `protobuf:"bytes,4,opt,name=on_stream_completion_transformation,json=onStreamCompletionTransformation,proto3" json:"on_stream_completion_transformation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TransformationRule_Transformations) Reset() { + *x = TransformationRule_Transformations{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TransformationRule_Transformations) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransformationRule_Transformations) ProtoMessage() {} + +func (x *TransformationRule_Transformations) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransformationRule_Transformations.ProtoReflect.Descriptor instead. +func (*TransformationRule_Transformations) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *TransformationRule_Transformations) GetRequestTransformation() *Transformation { + if x != nil { + return x.RequestTransformation + } + return nil +} + +func (x *TransformationRule_Transformations) GetClearRouteCache() bool { + if x != nil { + return x.ClearRouteCache + } + return false +} + +func (x *TransformationRule_Transformations) GetResponseTransformation() *Transformation { + if x != nil { return x.ResponseTransformation } return nil @@ -1081,26 +1535,24 @@ func (x *TransformationRule_Transformations) GetOnStreamCompletionTransformation } type RouteTransformations_RouteTransformation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Stage number. This transformation will only be processed by filters with // the same stage number. Stage uint32 `protobuf:"varint,1,opt,name=stage,proto3" json:"stage,omitempty"` - // Types that are assignable to Match: + // Types that are valid to be assigned to Match: + // // *RouteTransformations_RouteTransformation_RequestMatch_ // *RouteTransformations_RouteTransformation_ResponseMatch_ - Match isRouteTransformations_RouteTransformation_Match `protobuf_oneof:"match"` + Match isRouteTransformations_RouteTransformation_Match `protobuf_oneof:"match"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteTransformations_RouteTransformation) Reset() { *x = RouteTransformations_RouteTransformation{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteTransformations_RouteTransformation) String() string { @@ -1110,8 +1562,8 @@ func (x *RouteTransformations_RouteTransformation) String() string { func (*RouteTransformations_RouteTransformation) ProtoMessage() {} func (x *RouteTransformations_RouteTransformation) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[17] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1133,23 +1585,27 @@ func (x *RouteTransformations_RouteTransformation) GetStage() uint32 { return 0 } -func (m *RouteTransformations_RouteTransformation) GetMatch() isRouteTransformations_RouteTransformation_Match { - if m != nil { - return m.Match +func (x *RouteTransformations_RouteTransformation) GetMatch() isRouteTransformations_RouteTransformation_Match { + if x != nil { + return x.Match } return nil } func (x *RouteTransformations_RouteTransformation) GetRequestMatch() *RouteTransformations_RouteTransformation_RequestMatch { - if x, ok := x.GetMatch().(*RouteTransformations_RouteTransformation_RequestMatch_); ok { - return x.RequestMatch + if x != nil { + if x, ok := x.Match.(*RouteTransformations_RouteTransformation_RequestMatch_); ok { + return x.RequestMatch + } } return nil } func (x *RouteTransformations_RouteTransformation) GetResponseMatch() *RouteTransformations_RouteTransformation_ResponseMatch { - if x, ok := x.GetMatch().(*RouteTransformations_RouteTransformation_ResponseMatch_); ok { - return x.ResponseMatch + if x != nil { + if x, ok := x.Match.(*RouteTransformations_RouteTransformation_ResponseMatch_); ok { + return x.ResponseMatch + } } return nil } @@ -1173,10 +1629,7 @@ func (*RouteTransformations_RouteTransformation_ResponseMatch_) isRouteTransform } type RouteTransformations_RouteTransformation_RequestMatch struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // if no match is specified, will match all Match *v3.RouteMatch `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"` // transformation to perform @@ -1184,15 +1637,15 @@ type RouteTransformations_RouteTransformation_RequestMatch struct { ResponseTransformation *Transformation `protobuf:"bytes,3,opt,name=response_transformation,json=responseTransformation,proto3" json:"response_transformation,omitempty"` // clear the route cache if the request transformation was applied ClearRouteCache bool `protobuf:"varint,4,opt,name=clear_route_cache,json=clearRouteCache,proto3" json:"clear_route_cache,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteTransformations_RouteTransformation_RequestMatch) Reset() { *x = RouteTransformations_RouteTransformation_RequestMatch{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteTransformations_RouteTransformation_RequestMatch) String() string { @@ -1202,8 +1655,8 @@ func (x *RouteTransformations_RouteTransformation_RequestMatch) String() string func (*RouteTransformations_RouteTransformation_RequestMatch) ProtoMessage() {} func (x *RouteTransformations_RouteTransformation_RequestMatch) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[18] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1247,22 +1700,19 @@ func (x *RouteTransformations_RouteTransformation_RequestMatch) GetClearRouteCac } type RouteTransformations_RouteTransformation_ResponseMatch struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Match *ResponseMatcher `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Match *ResponseMatcher `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"` // transformation to perform ResponseTransformation *Transformation `protobuf:"bytes,2,opt,name=response_transformation,json=responseTransformation,proto3" json:"response_transformation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteTransformations_RouteTransformation_ResponseMatch) Reset() { *x = RouteTransformations_RouteTransformation_ResponseMatch{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteTransformations_RouteTransformation_ResponseMatch) String() string { @@ -1272,8 +1722,8 @@ func (x *RouteTransformations_RouteTransformation_ResponseMatch) String() string func (*RouteTransformations_RouteTransformation_ResponseMatch) ProtoMessage() {} func (x *RouteTransformations_RouteTransformation_ResponseMatch) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[19] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1304,23 +1754,20 @@ func (x *RouteTransformations_RouteTransformation_ResponseMatch) GetResponseTran // Defines a header-template pair to be used in `headers_to_append` type TransformationTemplate_HeaderToAppend struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Header name Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Apply a template to the header value - Value *InjaTemplate `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + Value *InjaTemplate `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TransformationTemplate_HeaderToAppend) Reset() { *x = TransformationTemplate_HeaderToAppend{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TransformationTemplate_HeaderToAppend) String() string { @@ -1330,8 +1777,8 @@ func (x *TransformationTemplate_HeaderToAppend) String() string { func (*TransformationTemplate_HeaderToAppend) ProtoMessage() {} func (x *TransformationTemplate_HeaderToAppend) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[22] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1364,25 +1811,25 @@ func (x *TransformationTemplate_HeaderToAppend) GetValue() *InjaTemplate { // Metadata](https://www.envoyproxy.io/docs/envoy/latest/configuration/advanced/well_known_dynamic_metadata) // entry. type TransformationTemplate_DynamicMetadataValue struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The metadata namespace. Defaults to the filter namespace. MetadataNamespace string `protobuf:"bytes,1,opt,name=metadata_namespace,json=metadataNamespace,proto3" json:"metadata_namespace,omitempty"` // The metadata key. Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` // A template that determines the metadata value. Value *InjaTemplate `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` + // Instruct the filter to parse the rendered value as a proto Struct message + // before setting it as the metadata value. + JsonToProto bool `protobuf:"varint,4,opt,name=json_to_proto,json=jsonToProto,proto3" json:"json_to_proto,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TransformationTemplate_DynamicMetadataValue) Reset() { *x = TransformationTemplate_DynamicMetadataValue{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TransformationTemplate_DynamicMetadataValue) String() string { @@ -1392,8 +1839,8 @@ func (x *TransformationTemplate_DynamicMetadataValue) String() string { func (*TransformationTemplate_DynamicMetadataValue) ProtoMessage() {} func (x *TransformationTemplate_DynamicMetadataValue) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[23] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1429,9 +1876,171 @@ func (x *TransformationTemplate_DynamicMetadataValue) GetValue() *InjaTemplate { return nil } +func (x *TransformationTemplate_DynamicMetadataValue) GetJsonToProto() bool { + if x != nil { + return x.JsonToProto + } + return false +} + +type TransformationTemplate_SpanTransformer struct { + state protoimpl.MessageState `protogen:"open.v1"` + // A template that sets the span name + Name *InjaTemplate `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TransformationTemplate_SpanTransformer) Reset() { + *x = TransformationTemplate_SpanTransformer{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TransformationTemplate_SpanTransformer) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransformationTemplate_SpanTransformer) ProtoMessage() {} + +func (x *TransformationTemplate_SpanTransformer) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransformationTemplate_SpanTransformer.ProtoReflect.Descriptor instead. +func (*TransformationTemplate_SpanTransformer) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescGZIP(), []int{7, 4} +} + +func (x *TransformationTemplate_SpanTransformer) GetName() *InjaTemplate { + if x != nil { + return x.Name + } + return nil +} + +type MergeJsonKeys_OverridableTemplate struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Template to render + Tmpl *InjaTemplate `protobuf:"bytes,1,opt,name=tmpl,proto3" json:"tmpl,omitempty"` + // If set to true, the template will be set even if the rendered value is empty. + OverrideEmpty bool `protobuf:"varint,2,opt,name=override_empty,json=overrideEmpty,proto3" json:"override_empty,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MergeJsonKeys_OverridableTemplate) Reset() { + *x = MergeJsonKeys_OverridableTemplate{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MergeJsonKeys_OverridableTemplate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MergeJsonKeys_OverridableTemplate) ProtoMessage() {} + +func (x *MergeJsonKeys_OverridableTemplate) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MergeJsonKeys_OverridableTemplate.ProtoReflect.Descriptor instead. +func (*MergeJsonKeys_OverridableTemplate) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescGZIP(), []int{11, 0} +} + +func (x *MergeJsonKeys_OverridableTemplate) GetTmpl() *InjaTemplate { + if x != nil { + return x.Tmpl + } + return nil +} + +func (x *MergeJsonKeys_OverridableTemplate) GetOverrideEmpty() bool { + if x != nil { + return x.OverrideEmpty + } + return false +} + +// An entry for a message to prepend or append to each prompt. +type PromptEnrichment_Message struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Role of the message. The available roles depend on the backend + // LLM provider model, such as `SYSTEM` or `USER` in the OpenAI API. + Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + // String content of the message. + Content string `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PromptEnrichment_Message) Reset() { + *x = PromptEnrichment_Message{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PromptEnrichment_Message) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PromptEnrichment_Message) ProtoMessage() {} + +func (x *PromptEnrichment_Message) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PromptEnrichment_Message.ProtoReflect.Descriptor instead. +func (*PromptEnrichment_Message) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescGZIP(), []int{14, 0} +} + +func (x *PromptEnrichment_Message) GetRole() string { + if x != nil { + return x.Role + } + return "" +} + +func (x *PromptEnrichment_Message) GetContent() string { + if x != nil { + return x.Content + } + return "" +} + var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDesc = string([]byte{ 0x0a, 0x68, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -1443,392 +2052,540 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_tr 0x68, 0x74, 0x74, 0x70, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x60, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x60, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x6f, + 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, - 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, - 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2f, 0x76, 0x33, 0x2f, 0x73, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x58, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, - 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, - 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, - 0x76, 0x33, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0x8e, 0x01, 0x0a, 0x15, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x56, 0x0a, 0x0f, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, + 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2f, 0x76, 0x33, 0x2f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x58, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, + 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0x87, 0x02, 0x0a, 0x15, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x56, 0x0a, 0x0f, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, + 0x65, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x0a, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, + 0x65, 0x12, 0x39, 0x0a, 0x19, 0x6c, 0x6f, 0x67, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3c, 0x0a, 0x1a, + 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x70, + 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x18, 0x61, 0x75, 0x74, 0x6f, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x50, + 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x22, 0xcf, 0x04, 0x0a, 0x12, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, + 0x65, 0x12, 0x49, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x29, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, + 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x71, 0x0a, 0x15, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x14, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, + 0xfa, 0x02, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x5f, 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, + 0x12, 0x61, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x77, 0x0a, 0x23, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x20, 0x6f, 0x6e, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb0, 0x09, 0x0a, + 0x14, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x63, 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, - 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x75, 0x6c, 0x65, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x0a, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x67, 0x65, 0x22, 0xcf, 0x04, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x49, 0x0a, 0x05, 0x6d, 0x61, + 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x02, 0x18, 0x01, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x65, 0x0a, 0x17, 0x72, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, 0x52, 0x16, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x2e, 0x0a, 0x11, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, + 0x52, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, + 0x65, 0x12, 0x6c, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, + 0xad, 0x06, 0x0a, 0x13, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x0a, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x76, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x48, 0x00, + 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x79, + 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x50, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, + 0x70, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x1a, 0xbf, 0x02, 0x0a, 0x0c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x3f, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x71, 0x0a, 0x15, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, - 0x6c, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x14, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xfa, 0x02, 0x0a, 0x0f, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5f, 0x0a, 0x16, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x5f, 0x0a, 0x16, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x61, 0x0a, 0x17, + 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x2a, 0x0a, 0x11, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, + 0x61, 0x63, 0x68, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x6c, 0x65, 0x61, + 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x1a, 0xb3, 0x01, 0x0a, 0x0d, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x3f, 0x0a, + 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, - 0x11, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x63, - 0x68, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x61, 0x0a, 0x17, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x6e, 0x76, - 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x77, 0x0a, 0x23, - 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x6e, 0x76, 0x6f, - 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, - 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x20, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb0, 0x09, 0x0a, 0x14, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x63, - 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, + 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x61, + 0x0a, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x28, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x0c, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, + 0xbb, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, + 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x60, 0x0a, 0x15, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x13, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xc0, 0x01, + 0x0a, 0x1a, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x3f, 0x0a, 0x05, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x61, 0x0a, + 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, 0x52, 0x15, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x65, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x02, - 0x18, 0x01, 0x52, 0x16, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x11, 0x63, 0x6c, - 0x65, 0x61, 0x72, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x72, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x6c, 0x0a, 0x0f, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xad, 0x06, 0x0a, 0x13, 0x52, 0x6f, 0x75, - 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x1d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x0a, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, - 0x76, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, - 0x70, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x79, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x50, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x1a, 0xbf, 0x02, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x12, 0x3f, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, - 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, - 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x12, 0x5f, 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x90, 0x04, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x6b, 0x0a, 0x17, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x61, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x16, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x12, 0x63, 0x0a, 0x15, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x5f, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x42, 0x6f, 0x64, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x48, 0x00, + 0x52, 0x13, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x6f, 0x64, 0x79, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x63, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, + 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x59, 0x0a, 0x11, 0x61, 0x69, + 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, + 0x2e, 0x41, 0x69, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x00, 0x52, 0x10, 0x61, 0x69, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x19, 0x6c, 0x6f, 0x67, 0x5f, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x69, 0x6e, + 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x16, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x15, 0x0a, 0x13, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x22, 0xd2, 0x02, 0x0a, 0x0a, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x04, + 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, + 0x67, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, + 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x08, 0x73, 0x75, 0x62, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x47, 0x0a, 0x10, + 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x54, 0x65, 0x78, 0x74, 0x12, 0x3d, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x45, + 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, + 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x38, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, + 0x45, 0x58, 0x54, 0x52, 0x41, 0x43, 0x54, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x49, 0x4e, + 0x47, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x01, 0x12, 0x0f, 0x0a, + 0x0b, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x42, 0x08, + 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xb2, 0x0e, 0x0a, 0x16, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x12, 0x60, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x16, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6c, 0x65, 0x61, - 0x72, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x1a, 0xb3, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x3f, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x12, 0x57, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, - 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, - 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x61, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x6b, 0x0a, + 0x11, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x70, 0x70, 0x65, + 0x6e, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x16, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x05, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0xbb, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x07, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x12, 0x60, 0x0a, 0x15, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, - 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, - 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, - 0x72, 0x52, 0x13, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xc0, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, + 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x52, 0x0f, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, + 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, - 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x61, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, - 0x74, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x16, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xde, 0x02, 0x0a, 0x0e, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6b, 0x0a, 0x17, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, - 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, - 0x00, 0x52, 0x16, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x63, 0x0a, 0x15, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, - 0x74, 0x74, 0x70, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x6f, 0x64, 0x79, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x48, 0x00, 0x52, 0x13, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x42, 0x6f, 0x64, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x63, - 0x0a, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x45, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, - 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x0a, 0x45, - 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x06, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, 0x64, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x73, 0x75, 0x62, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xa0, 0x0b, - 0x0a, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, - 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x60, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x65, 0x6e, + 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x04, + 0x62, 0x6f, 0x64, 0x79, 0x12, 0x49, 0x0a, 0x0b, 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, + 0x75, 0x67, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, + 0x68, 0x74, 0x74, 0x70, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, + 0x48, 0x00, 0x52, 0x0b, 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x12, + 0x6a, 0x0a, 0x18, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x4d, 0x65, 0x72, + 0x67, 0x65, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x54, 0x6f, 0x42, 0x6f, + 0x64, 0x79, 0x48, 0x00, 0x52, 0x15, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x45, 0x78, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x54, 0x6f, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x51, 0x0a, 0x0f, 0x6d, + 0x65, 0x72, 0x67, 0x65, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, + 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x48, 0x00, 0x52, + 0x0d, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x71, + 0x0a, 0x13, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x62, 0x65, 0x68, + 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x78, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x65, - 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x57, 0x0a, 0x07, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x65, 0x6e, 0x76, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x50, 0x61, 0x72, 0x73, 0x65, 0x52, 0x11, + 0x70, 0x61, 0x72, 0x73, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, + 0x72, 0x12, 0x31, 0x0a, 0x15, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x5f, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x12, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4f, 0x6e, 0x50, + 0x61, 0x72, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x17, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, + 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x64, 0x79, + 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x5f, 0x63, 0x68, + 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, + 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, + 0x12, 0x6b, 0x0a, 0x10, 0x73, 0x70, 0x61, 0x6e, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x12, 0x6b, 0x0a, 0x11, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, - 0x5f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, - 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x52, 0x0f, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x12, - 0x3c, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x49, 0x0a, - 0x0b, 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x50, 0x61, - 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x61, 0x73, - 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x12, 0x6a, 0x0a, 0x18, 0x6d, 0x65, 0x72, 0x67, - 0x65, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, - 0x62, 0x6f, 0x64, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x65, 0x6e, 0x76, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x70, 0x61, + 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x52, 0x0f, 0x73, 0x70, + 0x61, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x1a, 0x63, 0x0a, + 0x0f, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x45, 0x78, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x62, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x49, + 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x60, 0x0a, 0x0e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x54, 0x6f, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, + 0x68, 0x74, 0x74, 0x70, 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0xc2, 0x01, 0x0a, 0x14, 0x44, 0x79, 0x6e, + 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x19, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x45, 0x78, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x54, 0x6f, 0x42, 0x6f, 0x64, 0x79, 0x48, 0x00, 0x52, 0x15, 0x6d, - 0x65, 0x72, 0x67, 0x65, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x54, 0x6f, - 0x42, 0x6f, 0x64, 0x79, 0x12, 0x71, 0x0a, 0x13, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x62, 0x6f, - 0x64, 0x79, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x41, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x50, - 0x61, 0x72, 0x73, 0x65, 0x52, 0x11, 0x70, 0x61, 0x72, 0x73, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x42, - 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x31, 0x0a, 0x15, 0x69, 0x67, 0x6e, 0x6f, 0x72, - 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x4f, 0x6e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x17, 0x64, 0x79, - 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x65, 0x6e, + 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6a, 0x73, 0x6f, + 0x6e, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0b, 0x6a, 0x73, 0x6f, 0x6e, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4d, 0x0a, + 0x0f, 0x53, 0x70, 0x61, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, + 0x12, 0x3a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x32, 0x0a, 0x10, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x50, 0x61, 0x72, 0x73, 0x65, + 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x73, 0x65, 0x41, 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x10, + 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x6f, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x73, 0x65, 0x10, 0x01, + 0x42, 0x15, 0x0a, 0x13, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x04, 0x08, 0x0e, 0x10, 0x0f, 0x22, 0x22, 0x0a, + 0x0c, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, + 0x74, 0x22, 0x0d, 0x0a, 0x0b, 0x50, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, + 0x22, 0x17, 0x0a, 0x15, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x54, 0x6f, 0x42, 0x6f, 0x64, 0x79, 0x22, 0xd7, 0x02, 0x0a, 0x0d, 0x4d, 0x65, + 0x72, 0x67, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x52, 0x0a, 0x09, 0x6a, + 0x73, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, + 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4a, + 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x1a, + 0x78, 0x0a, 0x13, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x6d, 0x70, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, + 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x04, 0x74, 0x6d, + 0x70, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x65, + 0x6d, 0x70, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6f, 0x76, 0x65, 0x72, + 0x72, 0x69, 0x64, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x78, 0x0a, 0x0d, 0x4a, 0x73, 0x6f, + 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x51, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x79, - 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x15, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x63, 0x0a, 0x0f, 0x45, 0x78, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3a, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x62, - 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x60, 0x0a, 0x0e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x70, - 0x70, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, + 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4a, 0x73, 0x6f, 0x6e, + 0x4b, 0x65, 0x79, 0x73, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x47, 0x0a, 0x13, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x6f, 0x64, + 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x64, + 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x61, 0x64, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x6e, 0x0a, 0x0c, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0xe5, 0x01, 0x0a, + 0x10, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x45, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x4c, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x50, 0x72, + 0x6f, 0x6d, 0x70, 0x74, 0x45, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x70, 0x72, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x12, + 0x4a, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x32, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x70, + 0x74, 0x45, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x1a, 0x37, 0x0a, 0x07, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x22, 0xee, 0x01, 0x0a, 0x10, 0x41, 0x69, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, + 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x43, 0x68, 0x61, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x4d, 0x0a, + 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, - 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x9e, 0x01, 0x0a, 0x14, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2d, 0x0a, - 0x12, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, - 0x20, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, - 0x70, 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x32, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x42, 0x6f, 0x64, 0x79, 0x50, 0x61, 0x72, 0x73, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x61, 0x72, - 0x73, 0x65, 0x41, 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x6f, - 0x6e, 0x74, 0x50, 0x61, 0x72, 0x73, 0x65, 0x10, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x62, 0x6f, 0x64, - 0x79, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x22, 0x0a, 0x0c, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x74, 0x65, 0x78, 0x74, 0x22, 0x0d, 0x0a, 0x0b, 0x50, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, - 0x75, 0x67, 0x68, 0x22, 0x17, 0x0a, 0x15, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x45, 0x78, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x54, 0x6f, 0x42, 0x6f, 0x64, 0x79, 0x22, 0x15, 0x0a, 0x13, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x6f, 0x64, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x6f, 0x72, 0x6d, 0x42, 0x64, 0x5a, 0x5a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, - 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, -} + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x0d, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x57, 0x0a, 0x11, + 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, + 0x74, 0x70, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x45, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x45, 0x6e, 0x72, 0x69, 0x63, + 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x68, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, + 0xf5, 0x04, 0x01, 0x5a, 0x5a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes = make([]protoimpl.MessageInfo, 20) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_goTypes = []interface{}{ - (TransformationTemplate_RequestBodyParse)(0), // 0: envoy.api.v2.filter.http.TransformationTemplate.RequestBodyParse - (*FilterTransformations)(nil), // 1: envoy.api.v2.filter.http.FilterTransformations - (*TransformationRule)(nil), // 2: envoy.api.v2.filter.http.TransformationRule - (*RouteTransformations)(nil), // 3: envoy.api.v2.filter.http.RouteTransformations - (*ResponseMatcher)(nil), // 4: envoy.api.v2.filter.http.ResponseMatcher - (*ResponseTransformationRule)(nil), // 5: envoy.api.v2.filter.http.ResponseTransformationRule - (*Transformation)(nil), // 6: envoy.api.v2.filter.http.Transformation - (*Extraction)(nil), // 7: envoy.api.v2.filter.http.Extraction - (*TransformationTemplate)(nil), // 8: envoy.api.v2.filter.http.TransformationTemplate - (*InjaTemplate)(nil), // 9: envoy.api.v2.filter.http.InjaTemplate - (*Passthrough)(nil), // 10: envoy.api.v2.filter.http.Passthrough - (*MergeExtractorsToBody)(nil), // 11: envoy.api.v2.filter.http.MergeExtractorsToBody - (*HeaderBodyTransform)(nil), // 12: envoy.api.v2.filter.http.HeaderBodyTransform - (*TransformationRule_Transformations)(nil), // 13: envoy.api.v2.filter.http.TransformationRule.Transformations - (*RouteTransformations_RouteTransformation)(nil), // 14: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation - (*RouteTransformations_RouteTransformation_RequestMatch)(nil), // 15: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.RequestMatch - (*RouteTransformations_RouteTransformation_ResponseMatch)(nil), // 16: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.ResponseMatch - nil, // 17: envoy.api.v2.filter.http.TransformationTemplate.ExtractorsEntry - nil, // 18: envoy.api.v2.filter.http.TransformationTemplate.HeadersEntry - (*TransformationTemplate_HeaderToAppend)(nil), // 19: envoy.api.v2.filter.http.TransformationTemplate.HeaderToAppend - (*TransformationTemplate_DynamicMetadataValue)(nil), // 20: envoy.api.v2.filter.http.TransformationTemplate.DynamicMetadataValue - (*v3.RouteMatch)(nil), // 21: solo.io.envoy.config.route.v3.RouteMatch - (*v3.HeaderMatcher)(nil), // 22: solo.io.envoy.config.route.v3.HeaderMatcher - (*v31.StringMatcher)(nil), // 23: solo.io.envoy.type.matcher.v3.StringMatcher - (*v32.TypedExtensionConfig)(nil), // 24: solo.io.envoy.config.core.v3.TypedExtensionConfig - (*empty.Empty)(nil), // 25: google.protobuf.Empty +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes = make([]protoimpl.MessageInfo, 28) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_goTypes = []any{ + (Extraction_Mode)(0), // 0: envoy.api.v2.filter.http.Extraction.Mode + (TransformationTemplate_RequestBodyParse)(0), // 1: envoy.api.v2.filter.http.TransformationTemplate.RequestBodyParse + (*FilterTransformations)(nil), // 2: envoy.api.v2.filter.http.FilterTransformations + (*TransformationRule)(nil), // 3: envoy.api.v2.filter.http.TransformationRule + (*RouteTransformations)(nil), // 4: envoy.api.v2.filter.http.RouteTransformations + (*ResponseMatcher)(nil), // 5: envoy.api.v2.filter.http.ResponseMatcher + (*ResponseTransformationRule)(nil), // 6: envoy.api.v2.filter.http.ResponseTransformationRule + (*Transformation)(nil), // 7: envoy.api.v2.filter.http.Transformation + (*Extraction)(nil), // 8: envoy.api.v2.filter.http.Extraction + (*TransformationTemplate)(nil), // 9: envoy.api.v2.filter.http.TransformationTemplate + (*InjaTemplate)(nil), // 10: envoy.api.v2.filter.http.InjaTemplate + (*Passthrough)(nil), // 11: envoy.api.v2.filter.http.Passthrough + (*MergeExtractorsToBody)(nil), // 12: envoy.api.v2.filter.http.MergeExtractorsToBody + (*MergeJsonKeys)(nil), // 13: envoy.api.v2.filter.http.MergeJsonKeys + (*HeaderBodyTransform)(nil), // 14: envoy.api.v2.filter.http.HeaderBodyTransform + (*FieldDefault)(nil), // 15: envoy.api.v2.filter.http.FieldDefault + (*PromptEnrichment)(nil), // 16: envoy.api.v2.filter.http.PromptEnrichment + (*AiTransformation)(nil), // 17: envoy.api.v2.filter.http.AiTransformation + (*TransformationRule_Transformations)(nil), // 18: envoy.api.v2.filter.http.TransformationRule.Transformations + (*RouteTransformations_RouteTransformation)(nil), // 19: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation + (*RouteTransformations_RouteTransformation_RequestMatch)(nil), // 20: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.RequestMatch + (*RouteTransformations_RouteTransformation_ResponseMatch)(nil), // 21: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.ResponseMatch + nil, // 22: envoy.api.v2.filter.http.TransformationTemplate.ExtractorsEntry + nil, // 23: envoy.api.v2.filter.http.TransformationTemplate.HeadersEntry + (*TransformationTemplate_HeaderToAppend)(nil), // 24: envoy.api.v2.filter.http.TransformationTemplate.HeaderToAppend + (*TransformationTemplate_DynamicMetadataValue)(nil), // 25: envoy.api.v2.filter.http.TransformationTemplate.DynamicMetadataValue + (*TransformationTemplate_SpanTransformer)(nil), // 26: envoy.api.v2.filter.http.TransformationTemplate.SpanTransformer + (*MergeJsonKeys_OverridableTemplate)(nil), // 27: envoy.api.v2.filter.http.MergeJsonKeys.OverridableTemplate + nil, // 28: envoy.api.v2.filter.http.MergeJsonKeys.JsonKeysEntry + (*PromptEnrichment_Message)(nil), // 29: envoy.api.v2.filter.http.PromptEnrichment.Message + (*v3.RouteMatch)(nil), // 30: solo.io.envoy.config.route.v3.RouteMatch + (*v3.HeaderMatcher)(nil), // 31: solo.io.envoy.config.route.v3.HeaderMatcher + (*v31.StringMatcher)(nil), // 32: solo.io.envoy.type.matcher.v3.StringMatcher + (*v32.TypedExtensionConfig)(nil), // 33: solo.io.envoy.config.core.v3.TypedExtensionConfig + (*wrapperspb.BoolValue)(nil), // 34: google.protobuf.BoolValue + (*emptypb.Empty)(nil), // 35: google.protobuf.Empty + (*wrapperspb.StringValue)(nil), // 36: google.protobuf.StringValue + (*structpb.Value)(nil), // 37: google.protobuf.Value } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_depIdxs = []int32{ - 2, // 0: envoy.api.v2.filter.http.FilterTransformations.transformations:type_name -> envoy.api.v2.filter.http.TransformationRule - 21, // 1: envoy.api.v2.filter.http.TransformationRule.match:type_name -> solo.io.envoy.config.route.v3.RouteMatch - 13, // 2: envoy.api.v2.filter.http.TransformationRule.route_transformations:type_name -> envoy.api.v2.filter.http.TransformationRule.Transformations - 6, // 3: envoy.api.v2.filter.http.RouteTransformations.request_transformation:type_name -> envoy.api.v2.filter.http.Transformation - 6, // 4: envoy.api.v2.filter.http.RouteTransformations.response_transformation:type_name -> envoy.api.v2.filter.http.Transformation - 14, // 5: envoy.api.v2.filter.http.RouteTransformations.transformations:type_name -> envoy.api.v2.filter.http.RouteTransformations.RouteTransformation - 22, // 6: envoy.api.v2.filter.http.ResponseMatcher.headers:type_name -> solo.io.envoy.config.route.v3.HeaderMatcher - 23, // 7: envoy.api.v2.filter.http.ResponseMatcher.response_code_details:type_name -> solo.io.envoy.type.matcher.v3.StringMatcher - 4, // 8: envoy.api.v2.filter.http.ResponseTransformationRule.match:type_name -> envoy.api.v2.filter.http.ResponseMatcher - 6, // 9: envoy.api.v2.filter.http.ResponseTransformationRule.response_transformation:type_name -> envoy.api.v2.filter.http.Transformation - 8, // 10: envoy.api.v2.filter.http.Transformation.transformation_template:type_name -> envoy.api.v2.filter.http.TransformationTemplate - 12, // 11: envoy.api.v2.filter.http.Transformation.header_body_transform:type_name -> envoy.api.v2.filter.http.HeaderBodyTransform - 24, // 12: envoy.api.v2.filter.http.Transformation.transformer_config:type_name -> solo.io.envoy.config.core.v3.TypedExtensionConfig - 25, // 13: envoy.api.v2.filter.http.Extraction.body:type_name -> google.protobuf.Empty - 17, // 14: envoy.api.v2.filter.http.TransformationTemplate.extractors:type_name -> envoy.api.v2.filter.http.TransformationTemplate.ExtractorsEntry - 18, // 15: envoy.api.v2.filter.http.TransformationTemplate.headers:type_name -> envoy.api.v2.filter.http.TransformationTemplate.HeadersEntry - 19, // 16: envoy.api.v2.filter.http.TransformationTemplate.headers_to_append:type_name -> envoy.api.v2.filter.http.TransformationTemplate.HeaderToAppend - 9, // 17: envoy.api.v2.filter.http.TransformationTemplate.body:type_name -> envoy.api.v2.filter.http.InjaTemplate - 10, // 18: envoy.api.v2.filter.http.TransformationTemplate.passthrough:type_name -> envoy.api.v2.filter.http.Passthrough - 11, // 19: envoy.api.v2.filter.http.TransformationTemplate.merge_extractors_to_body:type_name -> envoy.api.v2.filter.http.MergeExtractorsToBody - 0, // 20: envoy.api.v2.filter.http.TransformationTemplate.parse_body_behavior:type_name -> envoy.api.v2.filter.http.TransformationTemplate.RequestBodyParse - 20, // 21: envoy.api.v2.filter.http.TransformationTemplate.dynamic_metadata_values:type_name -> envoy.api.v2.filter.http.TransformationTemplate.DynamicMetadataValue - 6, // 22: envoy.api.v2.filter.http.TransformationRule.Transformations.request_transformation:type_name -> envoy.api.v2.filter.http.Transformation - 6, // 23: envoy.api.v2.filter.http.TransformationRule.Transformations.response_transformation:type_name -> envoy.api.v2.filter.http.Transformation - 6, // 24: envoy.api.v2.filter.http.TransformationRule.Transformations.on_stream_completion_transformation:type_name -> envoy.api.v2.filter.http.Transformation - 15, // 25: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.request_match:type_name -> envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.RequestMatch - 16, // 26: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.response_match:type_name -> envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.ResponseMatch - 21, // 27: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.RequestMatch.match:type_name -> solo.io.envoy.config.route.v3.RouteMatch - 6, // 28: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.RequestMatch.request_transformation:type_name -> envoy.api.v2.filter.http.Transformation - 6, // 29: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.RequestMatch.response_transformation:type_name -> envoy.api.v2.filter.http.Transformation - 4, // 30: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.ResponseMatch.match:type_name -> envoy.api.v2.filter.http.ResponseMatcher - 6, // 31: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.ResponseMatch.response_transformation:type_name -> envoy.api.v2.filter.http.Transformation - 7, // 32: envoy.api.v2.filter.http.TransformationTemplate.ExtractorsEntry.value:type_name -> envoy.api.v2.filter.http.Extraction - 9, // 33: envoy.api.v2.filter.http.TransformationTemplate.HeadersEntry.value:type_name -> envoy.api.v2.filter.http.InjaTemplate - 9, // 34: envoy.api.v2.filter.http.TransformationTemplate.HeaderToAppend.value:type_name -> envoy.api.v2.filter.http.InjaTemplate - 9, // 35: envoy.api.v2.filter.http.TransformationTemplate.DynamicMetadataValue.value:type_name -> envoy.api.v2.filter.http.InjaTemplate - 36, // [36:36] is the sub-list for method output_type - 36, // [36:36] is the sub-list for method input_type - 36, // [36:36] is the sub-list for extension type_name - 36, // [36:36] is the sub-list for extension extendee - 0, // [0:36] is the sub-list for field type_name + 3, // 0: envoy.api.v2.filter.http.FilterTransformations.transformations:type_name -> envoy.api.v2.filter.http.TransformationRule + 30, // 1: envoy.api.v2.filter.http.TransformationRule.match:type_name -> solo.io.envoy.config.route.v3.RouteMatch + 18, // 2: envoy.api.v2.filter.http.TransformationRule.route_transformations:type_name -> envoy.api.v2.filter.http.TransformationRule.Transformations + 7, // 3: envoy.api.v2.filter.http.RouteTransformations.request_transformation:type_name -> envoy.api.v2.filter.http.Transformation + 7, // 4: envoy.api.v2.filter.http.RouteTransformations.response_transformation:type_name -> envoy.api.v2.filter.http.Transformation + 19, // 5: envoy.api.v2.filter.http.RouteTransformations.transformations:type_name -> envoy.api.v2.filter.http.RouteTransformations.RouteTransformation + 31, // 6: envoy.api.v2.filter.http.ResponseMatcher.headers:type_name -> solo.io.envoy.config.route.v3.HeaderMatcher + 32, // 7: envoy.api.v2.filter.http.ResponseMatcher.response_code_details:type_name -> solo.io.envoy.type.matcher.v3.StringMatcher + 5, // 8: envoy.api.v2.filter.http.ResponseTransformationRule.match:type_name -> envoy.api.v2.filter.http.ResponseMatcher + 7, // 9: envoy.api.v2.filter.http.ResponseTransformationRule.response_transformation:type_name -> envoy.api.v2.filter.http.Transformation + 9, // 10: envoy.api.v2.filter.http.Transformation.transformation_template:type_name -> envoy.api.v2.filter.http.TransformationTemplate + 14, // 11: envoy.api.v2.filter.http.Transformation.header_body_transform:type_name -> envoy.api.v2.filter.http.HeaderBodyTransform + 33, // 12: envoy.api.v2.filter.http.Transformation.transformer_config:type_name -> solo.io.envoy.config.core.v3.TypedExtensionConfig + 17, // 13: envoy.api.v2.filter.http.Transformation.ai_transformation:type_name -> envoy.api.v2.filter.http.AiTransformation + 34, // 14: envoy.api.v2.filter.http.Transformation.log_request_response_info:type_name -> google.protobuf.BoolValue + 35, // 15: envoy.api.v2.filter.http.Extraction.body:type_name -> google.protobuf.Empty + 36, // 16: envoy.api.v2.filter.http.Extraction.replacement_text:type_name -> google.protobuf.StringValue + 0, // 17: envoy.api.v2.filter.http.Extraction.mode:type_name -> envoy.api.v2.filter.http.Extraction.Mode + 22, // 18: envoy.api.v2.filter.http.TransformationTemplate.extractors:type_name -> envoy.api.v2.filter.http.TransformationTemplate.ExtractorsEntry + 23, // 19: envoy.api.v2.filter.http.TransformationTemplate.headers:type_name -> envoy.api.v2.filter.http.TransformationTemplate.HeadersEntry + 24, // 20: envoy.api.v2.filter.http.TransformationTemplate.headers_to_append:type_name -> envoy.api.v2.filter.http.TransformationTemplate.HeaderToAppend + 10, // 21: envoy.api.v2.filter.http.TransformationTemplate.body:type_name -> envoy.api.v2.filter.http.InjaTemplate + 11, // 22: envoy.api.v2.filter.http.TransformationTemplate.passthrough:type_name -> envoy.api.v2.filter.http.Passthrough + 12, // 23: envoy.api.v2.filter.http.TransformationTemplate.merge_extractors_to_body:type_name -> envoy.api.v2.filter.http.MergeExtractorsToBody + 13, // 24: envoy.api.v2.filter.http.TransformationTemplate.merge_json_keys:type_name -> envoy.api.v2.filter.http.MergeJsonKeys + 1, // 25: envoy.api.v2.filter.http.TransformationTemplate.parse_body_behavior:type_name -> envoy.api.v2.filter.http.TransformationTemplate.RequestBodyParse + 25, // 26: envoy.api.v2.filter.http.TransformationTemplate.dynamic_metadata_values:type_name -> envoy.api.v2.filter.http.TransformationTemplate.DynamicMetadataValue + 26, // 27: envoy.api.v2.filter.http.TransformationTemplate.span_transformer:type_name -> envoy.api.v2.filter.http.TransformationTemplate.SpanTransformer + 28, // 28: envoy.api.v2.filter.http.MergeJsonKeys.json_keys:type_name -> envoy.api.v2.filter.http.MergeJsonKeys.JsonKeysEntry + 37, // 29: envoy.api.v2.filter.http.FieldDefault.value:type_name -> google.protobuf.Value + 29, // 30: envoy.api.v2.filter.http.PromptEnrichment.prepend:type_name -> envoy.api.v2.filter.http.PromptEnrichment.Message + 29, // 31: envoy.api.v2.filter.http.PromptEnrichment.append:type_name -> envoy.api.v2.filter.http.PromptEnrichment.Message + 15, // 32: envoy.api.v2.filter.http.AiTransformation.field_defaults:type_name -> envoy.api.v2.filter.http.FieldDefault + 16, // 33: envoy.api.v2.filter.http.AiTransformation.prompt_enrichment:type_name -> envoy.api.v2.filter.http.PromptEnrichment + 7, // 34: envoy.api.v2.filter.http.TransformationRule.Transformations.request_transformation:type_name -> envoy.api.v2.filter.http.Transformation + 7, // 35: envoy.api.v2.filter.http.TransformationRule.Transformations.response_transformation:type_name -> envoy.api.v2.filter.http.Transformation + 7, // 36: envoy.api.v2.filter.http.TransformationRule.Transformations.on_stream_completion_transformation:type_name -> envoy.api.v2.filter.http.Transformation + 20, // 37: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.request_match:type_name -> envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.RequestMatch + 21, // 38: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.response_match:type_name -> envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.ResponseMatch + 30, // 39: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.RequestMatch.match:type_name -> solo.io.envoy.config.route.v3.RouteMatch + 7, // 40: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.RequestMatch.request_transformation:type_name -> envoy.api.v2.filter.http.Transformation + 7, // 41: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.RequestMatch.response_transformation:type_name -> envoy.api.v2.filter.http.Transformation + 5, // 42: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.ResponseMatch.match:type_name -> envoy.api.v2.filter.http.ResponseMatcher + 7, // 43: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.ResponseMatch.response_transformation:type_name -> envoy.api.v2.filter.http.Transformation + 8, // 44: envoy.api.v2.filter.http.TransformationTemplate.ExtractorsEntry.value:type_name -> envoy.api.v2.filter.http.Extraction + 10, // 45: envoy.api.v2.filter.http.TransformationTemplate.HeadersEntry.value:type_name -> envoy.api.v2.filter.http.InjaTemplate + 10, // 46: envoy.api.v2.filter.http.TransformationTemplate.HeaderToAppend.value:type_name -> envoy.api.v2.filter.http.InjaTemplate + 10, // 47: envoy.api.v2.filter.http.TransformationTemplate.DynamicMetadataValue.value:type_name -> envoy.api.v2.filter.http.InjaTemplate + 10, // 48: envoy.api.v2.filter.http.TransformationTemplate.SpanTransformer.name:type_name -> envoy.api.v2.filter.http.InjaTemplate + 10, // 49: envoy.api.v2.filter.http.MergeJsonKeys.OverridableTemplate.tmpl:type_name -> envoy.api.v2.filter.http.InjaTemplate + 27, // 50: envoy.api.v2.filter.http.MergeJsonKeys.JsonKeysEntry.value:type_name -> envoy.api.v2.filter.http.MergeJsonKeys.OverridableTemplate + 51, // [51:51] is the sub-list for method output_type + 51, // [51:51] is the sub-list for method input_type + 51, // [51:51] is the sub-list for extension type_name + 51, // [51:51] is the sub-list for extension extendee + 0, // [0:51] is the sub-list for field type_name } func init() { @@ -1838,239 +2595,23 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_t if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FilterTransformations); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TransformationRule); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteTransformations); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResponseMatcher); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResponseTransformationRule); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Transformation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Extraction); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TransformationTemplate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InjaTemplate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Passthrough); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MergeExtractorsToBody); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HeaderBodyTransform); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TransformationRule_Transformations); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteTransformations_RouteTransformation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteTransformations_RouteTransformation_RequestMatch); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteTransformations_RouteTransformation_ResponseMatch); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TransformationTemplate_HeaderToAppend); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TransformationTemplate_DynamicMetadataValue); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[5].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[5].OneofWrappers = []any{ (*Transformation_TransformationTemplate)(nil), (*Transformation_HeaderBodyTransform)(nil), (*Transformation_TransformerConfig)(nil), + (*Transformation_AiTransformation)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[6].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[6].OneofWrappers = []any{ (*Extraction_Header)(nil), (*Extraction_Body)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[7].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[7].OneofWrappers = []any{ (*TransformationTemplate_Body)(nil), (*TransformationTemplate_Passthrough)(nil), (*TransformationTemplate_MergeExtractorsToBody)(nil), + (*TransformationTemplate_MergeJsonKeys)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[13].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[17].OneofWrappers = []any{ (*RouteTransformations_RouteTransformation_RequestMatch_)(nil), (*RouteTransformations_RouteTransformation_ResponseMatch_)(nil), } @@ -2078,9 +2619,9 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_t out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDesc, - NumEnums: 1, - NumMessages: 20, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDesc)), + NumEnums: 2, + NumMessages: 28, NumExtensions: 0, NumServices: 0, }, @@ -2090,7 +2631,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_t MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.hash.go index a24ab3c0a..8eaaf1dc8 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FilterTransformations) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -41,14 +45,20 @@ func (m *FilterTransformations) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetTransformations() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -61,10 +71,24 @@ func (m *FilterTransformations) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + err = binary.Write(hasher, binary.LittleEndian, m.GetLogRequestResponseInfo()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetAutoWebsocketPassthrough()) + if err != nil { + return 0, err + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *TransformationRule) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -78,28 +102,40 @@ func (m *TransformationRule) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetRouteTransformations()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RouteTransformations")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRouteTransformations(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRouteTransformations(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RouteTransformations")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -109,6 +145,10 @@ func (m *TransformationRule) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteTransformations) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -122,28 +162,40 @@ func (m *RouteTransformations) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetRequestTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTransformation")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRequestTransformation(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRequestTransformation(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RequestTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetResponseTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -157,14 +209,20 @@ func (m *RouteTransformations) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetTransformations() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -176,6 +234,10 @@ func (m *RouteTransformations) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ResponseMatcher) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -191,14 +253,20 @@ func (m *ResponseMatcher) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetHeaders() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -207,14 +275,20 @@ func (m *ResponseMatcher) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetResponseCodeDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseCodeDetails")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetResponseCodeDetails(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetResponseCodeDetails(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ResponseCodeDetails")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -224,6 +298,10 @@ func (m *ResponseMatcher) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ResponseTransformationRule) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -237,28 +315,40 @@ func (m *ResponseTransformationRule) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetResponseTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -268,6 +358,10 @@ func (m *ResponseTransformationRule) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Transformation) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -280,19 +374,45 @@ func (m *Transformation) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + if h, ok := interface{}(m.GetLogRequestResponseInfo()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LogRequestResponseInfo")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLogRequestResponseInfo(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LogRequestResponseInfo")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + switch m.TransformationType.(type) { case *Transformation_TransformationTemplate: if h, ok := interface{}(m.GetTransformationTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TransformationTemplate")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTransformationTemplate(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTransformationTemplate(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TransformationTemplate")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -301,14 +421,20 @@ func (m *Transformation) Hash(hasher hash.Hash64) (uint64, error) { case *Transformation_HeaderBodyTransform: if h, ok := interface{}(m.GetHeaderBodyTransform()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderBodyTransform")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHeaderBodyTransform(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHeaderBodyTransform(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HeaderBodyTransform")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -317,14 +443,42 @@ func (m *Transformation) Hash(hasher hash.Hash64) (uint64, error) { case *Transformation_TransformerConfig: if h, ok := interface{}(m.GetTransformerConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TransformerConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTransformerConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TransformerConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Transformation_AiTransformation: + + if h, ok := interface{}(m.GetAiTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AiTransformation")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTransformerConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAiTransformation(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AiTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -336,6 +490,10 @@ func (m *Transformation) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Extraction) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -357,6 +515,31 @@ func (m *Extraction) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + if h, ok := interface{}(m.GetReplacementText()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ReplacementText")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetReplacementText(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ReplacementText")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetMode()) + if err != nil { + return 0, err + } + switch m.Source.(type) { case *Extraction_Header: @@ -368,14 +551,20 @@ func (m *Extraction) Hash(hasher hash.Hash64) (uint64, error) { case *Extraction_Body: if h, ok := interface{}(m.GetBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetBody(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetBody(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -387,6 +576,10 @@ func (m *Extraction) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *TransformationTemplate) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -411,14 +604,20 @@ func (m *TransformationTemplate) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -444,14 +643,20 @@ func (m *TransformationTemplate) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -473,14 +678,20 @@ func (m *TransformationTemplate) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetHeadersToAppend() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -488,6 +699,14 @@ func (m *TransformationTemplate) Hash(hasher hash.Hash64) (uint64, error) { } + for _, v := range m.GetHeadersToRemove() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + err = binary.Write(hasher, binary.LittleEndian, m.GetParseBodyBehavior()) if err != nil { return 0, err @@ -501,14 +720,20 @@ func (m *TransformationTemplate) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetDynamicMetadataValues() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -516,19 +741,50 @@ func (m *TransformationTemplate) Hash(hasher hash.Hash64) (uint64, error) { } + err = binary.Write(hasher, binary.LittleEndian, m.GetEscapeCharacters()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSpanTransformer()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SpanTransformer")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSpanTransformer(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SpanTransformer")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + switch m.BodyTransformation.(type) { case *TransformationTemplate_Body: if h, ok := interface{}(m.GetBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetBody(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetBody(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -537,14 +793,20 @@ func (m *TransformationTemplate) Hash(hasher hash.Hash64) (uint64, error) { case *TransformationTemplate_Passthrough: if h, ok := interface{}(m.GetPassthrough()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Passthrough")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPassthrough(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPassthrough(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Passthrough")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -553,14 +815,42 @@ func (m *TransformationTemplate) Hash(hasher hash.Hash64) (uint64, error) { case *TransformationTemplate_MergeExtractorsToBody: if h, ok := interface{}(m.GetMergeExtractorsToBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MergeExtractorsToBody")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMergeExtractorsToBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MergeExtractorsToBody")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *TransformationTemplate_MergeJsonKeys: + + if h, ok := interface{}(m.GetMergeJsonKeys()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MergeJsonKeys")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMergeExtractorsToBody(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMergeJsonKeys(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MergeJsonKeys")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -572,6 +862,10 @@ func (m *TransformationTemplate) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *InjaTemplate) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -592,6 +886,10 @@ func (m *InjaTemplate) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Passthrough) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -608,6 +906,10 @@ func (m *Passthrough) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *MergeExtractorsToBody) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -624,6 +926,69 @@ func (m *MergeExtractorsToBody) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *MergeJsonKeys) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.MergeJsonKeys")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetJsonKeys() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HeaderBodyTransform) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -636,10 +1001,205 @@ func (m *HeaderBodyTransform) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + err = binary.Write(hasher, binary.LittleEndian, m.GetAddRequestMetadata()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *FieldDefault) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.FieldDefault")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetField())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValue(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetOverride()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *PromptEnrichment) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.PromptEnrichment")); err != nil { + return 0, err + } + + for _, v := range m.GetPrepend() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + for _, v := range m.GetAppend() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AiTransformation) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.AiTransformation")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetEnableChatStreaming()) + if err != nil { + return 0, err + } + + for _, v := range m.GetFieldDefaults() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetPromptEnrichment()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PromptEnrichment")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPromptEnrichment(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PromptEnrichment")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *TransformationRule_Transformations) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -653,14 +1213,20 @@ func (m *TransformationRule_Transformations) Hash(hasher hash.Hash64) (uint64, e } if h, ok := interface{}(m.GetRequestTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTransformation")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRequestTransformation(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRequestTransformation(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RequestTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -672,28 +1238,40 @@ func (m *TransformationRule_Transformations) Hash(hasher hash.Hash64) (uint64, e } if h, ok := interface{}(m.GetResponseTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetOnStreamCompletionTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OnStreamCompletionTransformation")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOnStreamCompletionTransformation(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOnStreamCompletionTransformation(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("OnStreamCompletionTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -703,6 +1281,10 @@ func (m *TransformationRule_Transformations) Hash(hasher hash.Hash64) (uint64, e } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteTransformations_RouteTransformation) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -725,14 +1307,20 @@ func (m *RouteTransformations_RouteTransformation) Hash(hasher hash.Hash64) (uin case *RouteTransformations_RouteTransformation_RequestMatch_: if h, ok := interface{}(m.GetRequestMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestMatch")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRequestMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRequestMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RequestMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -741,14 +1329,20 @@ func (m *RouteTransformations_RouteTransformation) Hash(hasher hash.Hash64) (uin case *RouteTransformations_RouteTransformation_ResponseMatch_: if h, ok := interface{}(m.GetResponseMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseMatch")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetResponseMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetResponseMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ResponseMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -760,6 +1354,10 @@ func (m *RouteTransformations_RouteTransformation) Hash(hasher hash.Hash64) (uin } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteTransformations_RouteTransformation_RequestMatch) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -773,42 +1371,60 @@ func (m *RouteTransformations_RouteTransformation_RequestMatch) Hash(hasher hash } if h, ok := interface{}(m.GetMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetRequestTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTransformation")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRequestTransformation(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRequestTransformation(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RequestTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetResponseTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -823,6 +1439,10 @@ func (m *RouteTransformations_RouteTransformation_RequestMatch) Hash(hasher hash } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteTransformations_RouteTransformation_ResponseMatch) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -836,28 +1456,40 @@ func (m *RouteTransformations_RouteTransformation_ResponseMatch) Hash(hasher has } if h, ok := interface{}(m.GetMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetResponseTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -867,6 +1499,10 @@ func (m *RouteTransformations_RouteTransformation_ResponseMatch) Hash(hasher has } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *TransformationTemplate_HeaderToAppend) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -884,14 +1520,20 @@ func (m *TransformationTemplate_HeaderToAppend) Hash(hasher hash.Hash64) (uint64 } if h, ok := interface{}(m.GetValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetValue(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetValue(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -901,6 +1543,10 @@ func (m *TransformationTemplate_HeaderToAppend) Hash(hasher hash.Hash64) (uint64 } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *TransformationTemplate_DynamicMetadataValue) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -922,18 +1568,142 @@ func (m *TransformationTemplate_DynamicMetadataValue) Hash(hasher hash.Hash64) ( } if h, ok := interface{}(m.GetValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetValue(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetValue(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } + err = binary.Write(hasher, binary.LittleEndian, m.GetJsonToProto()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *TransformationTemplate_SpanTransformer) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.TransformationTemplate_SpanTransformer")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetName()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetName(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *MergeJsonKeys_OverridableTemplate) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.MergeJsonKeys_OverridableTemplate")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTmpl()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Tmpl")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTmpl(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Tmpl")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetOverrideEmpty()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *PromptEnrichment_Message) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.PromptEnrichment_Message")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetRole())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetContent())); err != nil { + return 0, err + } + return hasher.Sum64(), nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.uniquehash.go new file mode 100644 index 000000000..292415182 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.uniquehash.go @@ -0,0 +1,1833 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/transformation/transformation.proto + +package transformation + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FilterTransformations) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.FilterTransformations")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Transformations")); err != nil { + return 0, err + } + for i, v := range m.GetTransformations() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("Stage")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetStage()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("LogRequestResponseInfo")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetLogRequestResponseInfo()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AutoWebsocketPassthrough")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAutoWebsocketPassthrough()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TransformationRule) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.TransformationRule")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRouteTransformations()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RouteTransformations")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRouteTransformations(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RouteTransformations")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteTransformations) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.RouteTransformations")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRequestTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTransformation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestTransformation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetResponseTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("ClearRouteCache")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetClearRouteCache()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Transformations")); err != nil { + return 0, err + } + for i, v := range m.GetTransformations() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ResponseMatcher) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.ResponseMatcher")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + for i, v := range m.GetHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetResponseCodeDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseCodeDetails")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseCodeDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseCodeDetails")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ResponseTransformationRule) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.ResponseTransformationRule")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetResponseTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Transformation) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.Transformation")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetLogRequestResponseInfo()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LogRequestResponseInfo")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLogRequestResponseInfo(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LogRequestResponseInfo")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.TransformationType.(type) { + + case *Transformation_TransformationTemplate: + + if h, ok := interface{}(m.GetTransformationTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TransformationTemplate")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTransformationTemplate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TransformationTemplate")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Transformation_HeaderBodyTransform: + + if h, ok := interface{}(m.GetHeaderBodyTransform()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderBodyTransform")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaderBodyTransform(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HeaderBodyTransform")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Transformation_TransformerConfig: + + if h, ok := interface{}(m.GetTransformerConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TransformerConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTransformerConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TransformerConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Transformation_AiTransformation: + + if h, ok := interface{}(m.GetAiTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AiTransformation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAiTransformation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AiTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Extraction) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.Extraction")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Regex")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRegex())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Subgroup")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetSubgroup()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetReplacementText()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ReplacementText")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetReplacementText(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ReplacementText")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Mode")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMode()) + if err != nil { + return 0, err + } + + switch m.Source.(type) { + + case *Extraction_Header: + + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHeader())); err != nil { + return 0, err + } + + case *Extraction_Body: + + if h, ok := interface{}(m.GetBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TransformationTemplate) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.TransformationTemplate")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AdvancedTemplates")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAdvancedTemplates()) + if err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetExtractors() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetHeaders() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("HeadersToAppend")); err != nil { + return 0, err + } + for i, v := range m.GetHeadersToAppend() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("HeadersToRemove")); err != nil { + return 0, err + } + for i, v := range m.GetHeadersToRemove() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("ParseBodyBehavior")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetParseBodyBehavior()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("IgnoreErrorOnParse")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetIgnoreErrorOnParse()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DynamicMetadataValues")); err != nil { + return 0, err + } + for i, v := range m.GetDynamicMetadataValues() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("EscapeCharacters")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetEscapeCharacters()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSpanTransformer()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SpanTransformer")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSpanTransformer(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SpanTransformer")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.BodyTransformation.(type) { + + case *TransformationTemplate_Body: + + if h, ok := interface{}(m.GetBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *TransformationTemplate_Passthrough: + + if h, ok := interface{}(m.GetPassthrough()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Passthrough")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPassthrough(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Passthrough")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *TransformationTemplate_MergeExtractorsToBody: + + if h, ok := interface{}(m.GetMergeExtractorsToBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MergeExtractorsToBody")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMergeExtractorsToBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MergeExtractorsToBody")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *TransformationTemplate_MergeJsonKeys: + + if h, ok := interface{}(m.GetMergeJsonKeys()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MergeJsonKeys")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMergeJsonKeys(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MergeJsonKeys")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *InjaTemplate) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.InjaTemplate")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Text")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetText())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Passthrough) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.Passthrough")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MergeExtractorsToBody) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.MergeExtractorsToBody")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MergeJsonKeys) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.MergeJsonKeys")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetJsonKeys() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HeaderBodyTransform) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.HeaderBodyTransform")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AddRequestMetadata")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAddRequestMetadata()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FieldDefault) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.FieldDefault")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Field")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetField())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValue(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Override")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetOverride()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *PromptEnrichment) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.PromptEnrichment")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Prepend")); err != nil { + return 0, err + } + for i, v := range m.GetPrepend() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("Append")); err != nil { + return 0, err + } + for i, v := range m.GetAppend() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AiTransformation) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.AiTransformation")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("EnableChatStreaming")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetEnableChatStreaming()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("FieldDefaults")); err != nil { + return 0, err + } + for i, v := range m.GetFieldDefaults() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetPromptEnrichment()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PromptEnrichment")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPromptEnrichment(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PromptEnrichment")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TransformationRule_Transformations) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.TransformationRule_Transformations")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRequestTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTransformation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestTransformation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("ClearRouteCache")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetClearRouteCache()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetResponseTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetOnStreamCompletionTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OnStreamCompletionTransformation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOnStreamCompletionTransformation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OnStreamCompletionTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteTransformations_RouteTransformation) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.RouteTransformations_RouteTransformation")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Stage")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetStage()) + if err != nil { + return 0, err + } + + switch m.Match.(type) { + + case *RouteTransformations_RouteTransformation_RequestMatch_: + + if h, ok := interface{}(m.GetRequestMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestMatch")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteTransformations_RouteTransformation_ResponseMatch_: + + if h, ok := interface{}(m.GetResponseMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseMatch")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteTransformations_RouteTransformation_RequestMatch) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.RouteTransformations_RouteTransformation_RequestMatch")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRequestTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTransformation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestTransformation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetResponseTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("ClearRouteCache")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetClearRouteCache()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteTransformations_RouteTransformation_ResponseMatch) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.RouteTransformations_RouteTransformation_ResponseMatch")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Match")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetResponseTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TransformationTemplate_HeaderToAppend) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.TransformationTemplate_HeaderToAppend")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValue(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TransformationTemplate_DynamicMetadataValue) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.TransformationTemplate_DynamicMetadataValue")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MetadataNamespace")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetMetadataNamespace())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValue(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("JsonToProto")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetJsonToProto()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TransformationTemplate_SpanTransformer) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.TransformationTemplate_SpanTransformer")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetName()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetName(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MergeJsonKeys_OverridableTemplate) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.MergeJsonKeys_OverridableTemplate")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTmpl()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Tmpl")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTmpl(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Tmpl")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("OverrideEmpty")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetOverrideEmpty()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *PromptEnrichment_Message) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.PromptEnrichment_Message")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Role")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRole())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Content")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetContent())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/transformation_ee/transformation.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/transformation_ee/transformation.pb.go index 4be06f315..cbc6b562b 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/transformation_ee/transformation.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/transformation_ee/transformation.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/transformation_ee/transformation.proto @@ -9,10 +9,11 @@ package transformation_ee import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" route "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/route" + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3" _type "github.com/solo-io/solo-kit/pkg/api/external/envoy/type" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -25,27 +26,23 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type FilterTransformations struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies transformations based on the route matches. The first matched transformation will be // applied. If there are overlapped match conditions, please put the most specific match first. Transformations []*TransformationRule `protobuf:"bytes,1,rep,name=transformations,proto3" json:"transformations,omitempty"` + // Automatically detect websocket upgrade request and pass through the request and response + // body without applying body transformations. Header transformation will still apply. + AutoWebsocketPassthrough bool `protobuf:"varint,3,opt,name=auto_websocket_passthrough,json=autoWebsocketPassthrough,proto3" json:"auto_websocket_passthrough,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FilterTransformations) Reset() { *x = FilterTransformations{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FilterTransformations) String() string { @@ -56,7 +53,7 @@ func (*FilterTransformations) ProtoMessage() {} func (x *FilterTransformations) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -78,11 +75,15 @@ func (x *FilterTransformations) GetTransformations() []*TransformationRule { return nil } -type TransformationRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *FilterTransformations) GetAutoWebsocketPassthrough() bool { + if x != nil { + return x.AutoWebsocketPassthrough + } + return false +} +type TransformationRule struct { + state protoimpl.MessageState `protogen:"open.v1"` // The route matching parameter. Only when the match is satisfied, the "requires" field will // apply. // @@ -90,21 +91,21 @@ type TransformationRule struct { // // .. code-block:: yaml // - // match: - // prefix: / - // - Match *route.RouteMatch `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"` + // match: + // prefix: / + Match *route.RouteMatch `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"` + MatchV3 *v3.RouteMatch `protobuf:"bytes,3,opt,name=match_v3,json=matchV3,proto3" json:"match_v3,omitempty"` // transformation to perform RouteTransformations *RouteTransformations `protobuf:"bytes,2,opt,name=route_transformations,json=routeTransformations,proto3" json:"route_transformations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TransformationRule) Reset() { *x = TransformationRule{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TransformationRule) String() string { @@ -115,7 +116,7 @@ func (*TransformationRule) ProtoMessage() {} func (x *TransformationRule) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -137,6 +138,13 @@ func (x *TransformationRule) GetMatch() *route.RouteMatch { return nil } +func (x *TransformationRule) GetMatchV3() *v3.RouteMatch { + if x != nil { + return x.MatchV3 + } + return nil +} + func (x *TransformationRule) GetRouteTransformations() *RouteTransformations { if x != nil { return x.RouteTransformations @@ -145,26 +153,23 @@ func (x *TransformationRule) GetRouteTransformations() *RouteTransformations { } type RouteTransformations struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RequestTransformation *Transformation `protobuf:"bytes,1,opt,name=request_transformation,json=requestTransformation,proto3" json:"request_transformation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + RequestTransformation *Transformation `protobuf:"bytes,1,opt,name=request_transformation,json=requestTransformation,proto3" json:"request_transformation,omitempty"` // clear the route cache if the request transformation was applied ClearRouteCache bool `protobuf:"varint,3,opt,name=clear_route_cache,json=clearRouteCache,proto3" json:"clear_route_cache,omitempty"` ResponseTransformation *Transformation `protobuf:"bytes,2,opt,name=response_transformation,json=responseTransformation,proto3" json:"response_transformation,omitempty"` // Apply a transformation in the onStreamComplete callback // (for modifying headers and dynamic metadata for access logs) OnStreamCompletionTransformation *Transformation `protobuf:"bytes,4,opt,name=on_stream_completion_transformation,json=onStreamCompletionTransformation,proto3" json:"on_stream_completion_transformation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteTransformations) Reset() { *x = RouteTransformations{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteTransformations) String() string { @@ -175,7 +180,7 @@ func (*RouteTransformations) ProtoMessage() {} func (x *RouteTransformations) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -219,24 +224,22 @@ func (x *RouteTransformations) GetOnStreamCompletionTransformation() *Transforma } type Transformation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Template is in the transformed request language domain // - // Types that are assignable to TransformationType: + // Types that are valid to be assigned to TransformationType: + // // *Transformation_DlpTransformation TransformationType isTransformation_TransformationType `protobuf_oneof:"transformation_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Transformation) Reset() { *x = Transformation{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Transformation) String() string { @@ -247,7 +250,7 @@ func (*Transformation) ProtoMessage() {} func (x *Transformation) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -262,16 +265,18 @@ func (*Transformation) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDescGZIP(), []int{3} } -func (m *Transformation) GetTransformationType() isTransformation_TransformationType { - if m != nil { - return m.TransformationType +func (x *Transformation) GetTransformationType() isTransformation_TransformationType { + if x != nil { + return x.TransformationType } return nil } func (x *Transformation) GetDlpTransformation() *DlpTransformation { - if x, ok := x.GetTransformationType().(*Transformation_DlpTransformation); ok { - return x.DlpTransformation + if x != nil { + if x, ok := x.TransformationType.(*Transformation_DlpTransformation); ok { + return x.DlpTransformation + } } return nil } @@ -287,10 +292,7 @@ type Transformation_DlpTransformation struct { func (*Transformation_DlpTransformation) isTransformation_TransformationType() {} type DlpTransformation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // list of actions to apply Actions []*Action `protobuf:"bytes,1,rep,name=actions,proto3" json:"actions,omitempty"` // If true, headers will be transformed. Should only be true for the @@ -299,15 +301,15 @@ type DlpTransformation struct { // If true, dynamic metadata will be transformed. Should only be used for the // on_stream_complete_transformation route transformation type. EnableDynamicMetadataTransformation bool `protobuf:"varint,3,opt,name=enable_dynamic_metadata_transformation,json=enableDynamicMetadataTransformation,proto3" json:"enable_dynamic_metadata_transformation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DlpTransformation) Reset() { *x = DlpTransformation{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DlpTransformation) String() string { @@ -318,7 +320,7 @@ func (*DlpTransformation) ProtoMessage() {} func (x *DlpTransformation) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -355,17 +357,25 @@ func (x *DlpTransformation) GetEnableDynamicMetadataTransformation() bool { } type Action struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Identifier for this action. // Used mostly to help ID specific actions in logs. // If left null will default to unknown Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Deprecated in favor of DlpMatcher // List of regexes to apply to the response body to match data which should be masked // They will be applied iteratively in the order which they are specified + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/transformation_ee/transformation.proto. Regex []string `protobuf:"bytes,2,rep,name=regex,proto3" json:"regex,omitempty"` + // Deprecated in favor of DlpMatcher + // List of regexes to apply to the response body to match data which should be + // masked. They will be applied iteratively in the order which they are + // specified. If this field and `regex` are both provided, all the regexes will + // be applied iteratively in the order provided, starting with the ones from `regex` + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/transformation_ee/transformation.proto. + RegexActions []*RegexAction `protobuf:"bytes,6,rep,name=regex_actions,json=regexActions,proto3" json:"regex_actions,omitempty"` // If specified, this rule will not actually be applied, but only logged. Shadow bool `protobuf:"varint,3,opt,name=shadow,proto3" json:"shadow,omitempty"` // The percent of the string which should be masked. @@ -374,15 +384,17 @@ type Action struct { // The character which should overwrite the masked data // If left empty, defaults to "X" MaskChar string `protobuf:"bytes,5,opt,name=mask_char,json=maskChar,proto3" json:"mask_char,omitempty"` + // The matcher used to determine which values will be masked by this action. + Matcher *Action_DlpMatcher `protobuf:"bytes,7,opt,name=matcher,proto3" json:"matcher,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Action) Reset() { *x = Action{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Action) String() string { @@ -393,7 +405,7 @@ func (*Action) ProtoMessage() {} func (x *Action) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -415,6 +427,7 @@ func (x *Action) GetName() string { return "" } +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/transformation_ee/transformation.proto. func (x *Action) GetRegex() []string { if x != nil { return x.Regex @@ -422,6 +435,14 @@ func (x *Action) GetRegex() []string { return nil } +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/transformation_ee/transformation.proto. +func (x *Action) GetRegexActions() []*RegexAction { + if x != nil { + return x.RegexActions + } + return nil +} + func (x *Action) GetShadow() bool { if x != nil { return x.Shadow @@ -443,9 +464,247 @@ func (x *Action) GetMaskChar() string { return "" } +func (x *Action) GetMatcher() *Action_DlpMatcher { + if x != nil { + return x.Matcher + } + return nil +} + +type RegexAction struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The regex to match for masking. + Regex string `protobuf:"bytes,1,opt,name=regex,proto3" json:"regex,omitempty"` + // If provided and not 0, only this specific subgroup of the regex will be masked. + Subgroup uint32 `protobuf:"varint,2,opt,name=subgroup,proto3" json:"subgroup,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RegexAction) Reset() { + *x = RegexAction{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RegexAction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RegexAction) ProtoMessage() {} + +func (x *RegexAction) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RegexAction.ProtoReflect.Descriptor instead. +func (*RegexAction) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDescGZIP(), []int{6} +} + +func (x *RegexAction) GetRegex() string { + if x != nil { + return x.Regex + } + return "" +} + +func (x *RegexAction) GetSubgroup() uint32 { + if x != nil { + return x.Subgroup + } + return 0 +} + +// List of regexes to apply to the response body to match data which should be +// masked. They will be applied iteratively in the order which they are +// specified. +type Action_RegexMatcher struct { + state protoimpl.MessageState `protogen:"open.v1"` + RegexActions []*RegexAction `protobuf:"bytes,1,rep,name=regex_actions,json=regexActions,proto3" json:"regex_actions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Action_RegexMatcher) Reset() { + *x = Action_RegexMatcher{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Action_RegexMatcher) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Action_RegexMatcher) ProtoMessage() {} + +func (x *Action_RegexMatcher) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Action_RegexMatcher.ProtoReflect.Descriptor instead. +func (*Action_RegexMatcher) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDescGZIP(), []int{5, 0} +} + +func (x *Action_RegexMatcher) GetRegexActions() []*RegexAction { + if x != nil { + return x.RegexActions + } + return nil +} + +// List of headers for which associated values will be masked. +// Note that enable_header_transformation must be set for this to take effect. +// Note that if enable_dynamic_metadata_transformation is set, proto struct dynamic metadata +// (i.e., the values matching any JSON keys specified in `keys`; primarily for json-formatted WAF audit logs) will also be masked accordingly. +type Action_KeyValueMatcher struct { + state protoimpl.MessageState `protogen:"open.v1"` + Keys []string `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Action_KeyValueMatcher) Reset() { + *x = Action_KeyValueMatcher{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Action_KeyValueMatcher) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Action_KeyValueMatcher) ProtoMessage() {} + +func (x *Action_KeyValueMatcher) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Action_KeyValueMatcher.ProtoReflect.Descriptor instead. +func (*Action_KeyValueMatcher) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDescGZIP(), []int{5, 1} +} + +func (x *Action_KeyValueMatcher) GetKeys() []string { + if x != nil { + return x.Keys + } + return nil +} + +type Action_DlpMatcher struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Matcher: + // + // *Action_DlpMatcher_RegexMatcher + // *Action_DlpMatcher_KeyValueMatcher + Matcher isAction_DlpMatcher_Matcher `protobuf_oneof:"matcher"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Action_DlpMatcher) Reset() { + *x = Action_DlpMatcher{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Action_DlpMatcher) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Action_DlpMatcher) ProtoMessage() {} + +func (x *Action_DlpMatcher) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Action_DlpMatcher.ProtoReflect.Descriptor instead. +func (*Action_DlpMatcher) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDescGZIP(), []int{5, 2} +} + +func (x *Action_DlpMatcher) GetMatcher() isAction_DlpMatcher_Matcher { + if x != nil { + return x.Matcher + } + return nil +} + +func (x *Action_DlpMatcher) GetRegexMatcher() *Action_RegexMatcher { + if x != nil { + if x, ok := x.Matcher.(*Action_DlpMatcher_RegexMatcher); ok { + return x.RegexMatcher + } + } + return nil +} + +func (x *Action_DlpMatcher) GetKeyValueMatcher() *Action_KeyValueMatcher { + if x != nil { + if x, ok := x.Matcher.(*Action_DlpMatcher_KeyValueMatcher); ok { + return x.KeyValueMatcher + } + } + return nil +} + +type isAction_DlpMatcher_Matcher interface { + isAction_DlpMatcher_Matcher() +} + +type Action_DlpMatcher_RegexMatcher struct { + RegexMatcher *Action_RegexMatcher `protobuf:"bytes,1,opt,name=regex_matcher,json=regexMatcher,proto3,oneof"` +} + +type Action_DlpMatcher_KeyValueMatcher struct { + KeyValueMatcher *Action_KeyValueMatcher `protobuf:"bytes,2,opt,name=key_value_matcher,json=keyValueMatcher,proto3,oneof"` +} + +func (*Action_DlpMatcher_RegexMatcher) isAction_DlpMatcher_Matcher() {} + +func (*Action_DlpMatcher_KeyValueMatcher) isAction_DlpMatcher_Matcher() {} + var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDesc = string([]byte{ 0x0a, 0x6b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -463,147 +722,213 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_tr 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x65, - 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x84, 0x01, 0x0a, 0x15, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x6b, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x65, 0x6e, - 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x0f, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, - 0xd6, 0x01, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x46, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, + 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x60, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x2f, 0x76, 0x33, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, + 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc2, 0x01, 0x0a, 0x15, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x6b, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, + 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, + 0x6b, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x61, 0x75, 0x74, 0x6f, 0x57, 0x65, 0x62, 0x73, 0x6f, + 0x63, 0x6b, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x22, + 0x92, 0x02, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x78, - 0x0a, 0x15, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, + 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x12, 0x44, 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x76, 0x33, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x56, 0x33, 0x12, 0x78, 0x0a, 0x15, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, + 0x68, 0x74, 0x74, 0x70, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x14, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xbf, 0x03, 0x0a, 0x14, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x74, 0x0a, + 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, + 0x63, 0x6c, 0x65, 0x61, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, + 0x76, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x2e, 0x76, 0x32, + 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x16, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x8c, 0x01, 0x0a, 0x23, 0x6f, 0x6e, 0x5f, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, + 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x65, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x20, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9a, 0x01, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x71, 0x0a, 0x12, 0x64, 0x6c, 0x70, + 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, + 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x65, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6c, 0x70, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x11, 0x64, 0x6c, 0x70, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x15, 0x0a, 0x13, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x22, 0xfb, 0x01, 0x0a, 0x11, 0x44, 0x6c, 0x70, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x07, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x1c, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x1a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x53, 0x0a, 0x26, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x23, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x8a, 0x06, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x24, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x0e, 0xfa, 0x42, 0x09, 0x92, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x20, 0x01, 0x18, 0x01, 0x52, + 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x63, 0x0a, 0x0d, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x14, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xbf, 0x03, 0x0a, 0x14, 0x52, 0x6f, 0x75, - 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x74, 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x3d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, + 0x67, 0x65, 0x78, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x72, + 0x65, 0x67, 0x65, 0x78, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x68, 0x61, 0x64, 0x6f, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x68, 0x61, + 0x64, 0x6f, 0x77, 0x12, 0x35, 0x0a, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x52, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x09, 0x6d, 0x61, + 0x73, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x28, 0x01, 0x52, 0x08, 0x6d, 0x61, 0x73, 0x6b, 0x43, 0x68, 0x61, 0x72, + 0x12, 0x5a, 0x0a, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x40, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x2e, 0x76, - 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6c, 0x65, 0x61, 0x72, - 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x61, - 0x63, 0x68, 0x65, 0x12, 0x76, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, - 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x8c, 0x01, 0x0a, 0x23, - 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, - 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, - 0x68, 0x74, 0x74, 0x70, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x20, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9a, 0x01, 0x0a, 0x0e, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x71, 0x0a, - 0x12, 0x64, 0x6c, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x65, 0x6e, 0x76, 0x6f, + 0x32, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x6c, 0x70, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x1a, 0x6f, 0x0a, 0x0c, + 0x52, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x5f, 0x0a, 0x0d, + 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, + 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0c, 0x72, 0x65, 0x67, 0x65, 0x78, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x25, 0x0a, + 0x0f, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, + 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, + 0x6b, 0x65, 0x79, 0x73, 0x1a, 0xf7, 0x01, 0x0a, 0x0a, 0x44, 0x6c, 0x70, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x72, 0x12, 0x69, 0x0a, 0x0d, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x48, 0x00, + 0x52, 0x0c, 0x72, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x73, + 0x0a, 0x11, 0x6b, 0x65, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6c, 0x70, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x11, 0x64, - 0x6c, 0x70, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x15, 0x0a, 0x13, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xfb, 0x01, 0x0a, 0x11, 0x44, 0x6c, 0x70, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, - 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, - 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, - 0x0a, 0x1c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x53, 0x0a, 0x26, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x79, 0x6e, 0x61, 0x6d, - 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x23, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb5, 0x01, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x20, - 0x01, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x64, - 0x6f, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, - 0x12, 0x35, 0x0a, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, - 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x07, - 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x09, 0x6d, 0x61, 0x73, 0x6b, 0x5f, - 0x63, 0x68, 0x61, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x28, 0x01, 0x52, 0x08, 0x6d, 0x61, 0x73, 0x6b, 0x43, 0x68, 0x61, 0x72, 0x42, 0xbb, 0x01, - 0x0a, 0x3b, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, - 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x2e, 0x76, 0x32, 0x42, 0x1b, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x45, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x5d, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, - 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, -} + 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, + 0x48, 0x00, 0x52, 0x0f, 0x6b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x72, 0x42, 0x09, 0x0a, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x22, 0x48, + 0x0a, 0x0b, 0x52, 0x65, 0x67, 0x65, 0x78, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, + 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, + 0x73, 0x75, 0x62, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, + 0x73, 0x75, 0x62, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0xbb, 0x01, 0x0a, 0x3b, 0x69, 0x6f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, + 0x74, 0x74, 0x70, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x2e, 0x76, 0x32, 0x42, 0x1b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x45, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x5d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes = make([]protoimpl.MessageInfo, 6) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_goTypes = []interface{}{ - (*FilterTransformations)(nil), // 0: envoy.config.filter.http.transformation_ee.v2.FilterTransformations - (*TransformationRule)(nil), // 1: envoy.config.filter.http.transformation_ee.v2.TransformationRule - (*RouteTransformations)(nil), // 2: envoy.config.filter.http.transformation_ee.v2.RouteTransformations - (*Transformation)(nil), // 3: envoy.config.filter.http.transformation_ee.v2.Transformation - (*DlpTransformation)(nil), // 4: envoy.config.filter.http.transformation_ee.v2.DlpTransformation - (*Action)(nil), // 5: envoy.config.filter.http.transformation_ee.v2.Action - (*route.RouteMatch)(nil), // 6: solo.io.envoy.api.v2.route.RouteMatch - (*_type.Percent)(nil), // 7: solo.io.envoy.type.Percent +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_goTypes = []any{ + (*FilterTransformations)(nil), // 0: envoy.config.filter.http.transformation_ee.v2.FilterTransformations + (*TransformationRule)(nil), // 1: envoy.config.filter.http.transformation_ee.v2.TransformationRule + (*RouteTransformations)(nil), // 2: envoy.config.filter.http.transformation_ee.v2.RouteTransformations + (*Transformation)(nil), // 3: envoy.config.filter.http.transformation_ee.v2.Transformation + (*DlpTransformation)(nil), // 4: envoy.config.filter.http.transformation_ee.v2.DlpTransformation + (*Action)(nil), // 5: envoy.config.filter.http.transformation_ee.v2.Action + (*RegexAction)(nil), // 6: envoy.config.filter.http.transformation_ee.v2.RegexAction + (*Action_RegexMatcher)(nil), // 7: envoy.config.filter.http.transformation_ee.v2.Action.RegexMatcher + (*Action_KeyValueMatcher)(nil), // 8: envoy.config.filter.http.transformation_ee.v2.Action.KeyValueMatcher + (*Action_DlpMatcher)(nil), // 9: envoy.config.filter.http.transformation_ee.v2.Action.DlpMatcher + (*route.RouteMatch)(nil), // 10: solo.io.envoy.api.v2.route.RouteMatch + (*v3.RouteMatch)(nil), // 11: solo.io.envoy.config.route.v3.RouteMatch + (*_type.Percent)(nil), // 12: solo.io.envoy.type.Percent } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_depIdxs = []int32{ - 1, // 0: envoy.config.filter.http.transformation_ee.v2.FilterTransformations.transformations:type_name -> envoy.config.filter.http.transformation_ee.v2.TransformationRule - 6, // 1: envoy.config.filter.http.transformation_ee.v2.TransformationRule.match:type_name -> solo.io.envoy.api.v2.route.RouteMatch - 2, // 2: envoy.config.filter.http.transformation_ee.v2.TransformationRule.route_transformations:type_name -> envoy.config.filter.http.transformation_ee.v2.RouteTransformations - 3, // 3: envoy.config.filter.http.transformation_ee.v2.RouteTransformations.request_transformation:type_name -> envoy.config.filter.http.transformation_ee.v2.Transformation - 3, // 4: envoy.config.filter.http.transformation_ee.v2.RouteTransformations.response_transformation:type_name -> envoy.config.filter.http.transformation_ee.v2.Transformation - 3, // 5: envoy.config.filter.http.transformation_ee.v2.RouteTransformations.on_stream_completion_transformation:type_name -> envoy.config.filter.http.transformation_ee.v2.Transformation - 4, // 6: envoy.config.filter.http.transformation_ee.v2.Transformation.dlp_transformation:type_name -> envoy.config.filter.http.transformation_ee.v2.DlpTransformation - 5, // 7: envoy.config.filter.http.transformation_ee.v2.DlpTransformation.actions:type_name -> envoy.config.filter.http.transformation_ee.v2.Action - 7, // 8: envoy.config.filter.http.transformation_ee.v2.Action.percent:type_name -> solo.io.envoy.type.Percent - 9, // [9:9] is the sub-list for method output_type - 9, // [9:9] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 1, // 0: envoy.config.filter.http.transformation_ee.v2.FilterTransformations.transformations:type_name -> envoy.config.filter.http.transformation_ee.v2.TransformationRule + 10, // 1: envoy.config.filter.http.transformation_ee.v2.TransformationRule.match:type_name -> solo.io.envoy.api.v2.route.RouteMatch + 11, // 2: envoy.config.filter.http.transformation_ee.v2.TransformationRule.match_v3:type_name -> solo.io.envoy.config.route.v3.RouteMatch + 2, // 3: envoy.config.filter.http.transformation_ee.v2.TransformationRule.route_transformations:type_name -> envoy.config.filter.http.transformation_ee.v2.RouteTransformations + 3, // 4: envoy.config.filter.http.transformation_ee.v2.RouteTransformations.request_transformation:type_name -> envoy.config.filter.http.transformation_ee.v2.Transformation + 3, // 5: envoy.config.filter.http.transformation_ee.v2.RouteTransformations.response_transformation:type_name -> envoy.config.filter.http.transformation_ee.v2.Transformation + 3, // 6: envoy.config.filter.http.transformation_ee.v2.RouteTransformations.on_stream_completion_transformation:type_name -> envoy.config.filter.http.transformation_ee.v2.Transformation + 4, // 7: envoy.config.filter.http.transformation_ee.v2.Transformation.dlp_transformation:type_name -> envoy.config.filter.http.transformation_ee.v2.DlpTransformation + 5, // 8: envoy.config.filter.http.transformation_ee.v2.DlpTransformation.actions:type_name -> envoy.config.filter.http.transformation_ee.v2.Action + 6, // 9: envoy.config.filter.http.transformation_ee.v2.Action.regex_actions:type_name -> envoy.config.filter.http.transformation_ee.v2.RegexAction + 12, // 10: envoy.config.filter.http.transformation_ee.v2.Action.percent:type_name -> solo.io.envoy.type.Percent + 9, // 11: envoy.config.filter.http.transformation_ee.v2.Action.matcher:type_name -> envoy.config.filter.http.transformation_ee.v2.Action.DlpMatcher + 6, // 12: envoy.config.filter.http.transformation_ee.v2.Action.RegexMatcher.regex_actions:type_name -> envoy.config.filter.http.transformation_ee.v2.RegexAction + 7, // 13: envoy.config.filter.http.transformation_ee.v2.Action.DlpMatcher.regex_matcher:type_name -> envoy.config.filter.http.transformation_ee.v2.Action.RegexMatcher + 8, // 14: envoy.config.filter.http.transformation_ee.v2.Action.DlpMatcher.key_value_matcher:type_name -> envoy.config.filter.http.transformation_ee.v2.Action.KeyValueMatcher + 15, // [15:15] is the sub-list for method output_type + 15, // [15:15] is the sub-list for method input_type + 15, // [15:15] is the sub-list for extension type_name + 15, // [15:15] is the sub-list for extension extendee + 0, // [0:15] is the sub-list for field type_name } func init() { @@ -613,90 +938,20 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_t if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FilterTransformations); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TransformationRule); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteTransformations); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Transformation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DlpTransformation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Action); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[3].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[3].OneofWrappers = []any{ (*Transformation_DlpTransformation)(nil), } + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes[9].OneofWrappers = []any{ + (*Action_DlpMatcher_RegexMatcher)(nil), + (*Action_DlpMatcher_KeyValueMatcher)(nil), + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDesc)), NumEnums: 0, - NumMessages: 6, + NumMessages: 10, NumExtensions: 0, NumServices: 0, }, @@ -705,7 +960,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_t MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_ee_transformation_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/transformers/xslt/xslt_transformer.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/transformers/xslt/xslt_transformer.pb.go index 8344a4fbd..8d7925a8a 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/transformers/xslt/xslt_transformer.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/transformers/xslt/xslt_transformer.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/transformers/xslt/xslt_transformer.proto @@ -9,8 +9,8 @@ package xslt import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) @@ -22,16 +22,9 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Defines an XSLT Transformation. type XsltTransformation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // XSLT transformation template which you want to transform requests/responses with. // Invalid XSLT transformation templates will result will result in a NACK during envoy configuration-time and the configuration will not be loaded. Xslt string `protobuf:"bytes,1,opt,name=xslt,proto3" json:"xslt,omitempty"` @@ -47,15 +40,15 @@ type XsltTransformation struct { // XSLT to accept the non-XML input without throwing an error by passing the input as XML CDATA. // defaults to false. NonXmlTransform bool `protobuf:"varint,3,opt,name=non_xml_transform,json=nonXmlTransform,proto3" json:"non_xml_transform,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *XsltTransformation) Reset() { *x = XsltTransformation{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *XsltTransformation) String() string { @@ -66,7 +59,7 @@ func (*XsltTransformation) ProtoMessage() {} func (x *XsltTransformation) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -104,7 +97,7 @@ func (x *XsltTransformation) GetNonXmlTransform() bool { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_rawDesc = string([]byte{ 0x0a, 0x6d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -134,22 +127,22 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_tr 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x73, 0x2f, 0x78, 0x73, 0x6c, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_goTypes = []any{ (*XsltTransformation)(nil), // 0: envoy.config.transformer.xslt.v2.XsltTransformation } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_depIdxs = []int32{ @@ -167,25 +160,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_t if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XsltTransformation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, @@ -196,7 +175,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_t MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformers_xslt_xslt_transformer_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/upstream_wait/upstream_wait_filter.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/upstream_wait/upstream_wait_filter.pb.go new file mode 100644 index 000000000..21384df20 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/upstream_wait/upstream_wait_filter.pb.go @@ -0,0 +1,137 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/upstream_wait/upstream_wait_filter.proto + +package upstream_wait + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type UpstreamWaitFilterConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamWaitFilterConfig) Reset() { + *x = UpstreamWaitFilterConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamWaitFilterConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamWaitFilterConfig) ProtoMessage() {} + +func (x *UpstreamWaitFilterConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpstreamWaitFilterConfig.ProtoReflect.Descriptor instead. +func (*UpstreamWaitFilterConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_rawDescGZIP(), []int{0} +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_rawDesc = string([]byte{ + 0x0a, 0x6d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, + 0x77, 0x61, 0x69, 0x74, 0x2f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x77, 0x61, + 0x69, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x29, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x2e, 0x76, 0x32, 0x22, 0x1a, 0x0a, 0x18, 0x55, 0x70, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x57, 0x61, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0xaf, 0x01, 0x0a, 0x37, 0x69, 0x6f, 0x2e, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, + 0x70, 0x2e, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x2e, + 0x76, 0x32, 0x42, 0x17, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x57, 0x61, 0x69, 0x74, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x59, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x75, 0x70, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_goTypes = []any{ + (*UpstreamWaitFilterConfig)(nil), // 0: envoy.config.filter.http.upstream_wait.v2.UpstreamWaitFilterConfig +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_upstream_wait_upstream_wait_filter_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/waf/waf.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/extensions/waf/waf.pb.clone.go new file mode 100644 index 000000000..ef3503d6f --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/waf/waf.pb.clone.go @@ -0,0 +1,157 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/waf/waf.proto + +package waf + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_transformation_ee "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation_ee" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *AuditLogging) Clone() proto.Message { + var target *AuditLogging + if m == nil { + return target + } + target = &AuditLogging{} + + target.Action = m.GetAction() + + target.Location = m.GetLocation() + + return target +} + +// Clone function +func (m *ModSecurity) Clone() proto.Message { + var target *ModSecurity + if m == nil { + return target + } + target = &ModSecurity{} + + target.Disabled = m.GetDisabled() + + if m.GetRuleSets() != nil { + target.RuleSets = make([]*RuleSet, len(m.GetRuleSets())) + for idx, v := range m.GetRuleSets() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RuleSets[idx] = h.Clone().(*RuleSet) + } else { + target.RuleSets[idx] = proto.Clone(v).(*RuleSet) + } + + } + } + + target.CustomInterventionMessage = m.GetCustomInterventionMessage() + + if h, ok := interface{}(m.GetAuditLogging()).(clone.Cloner); ok { + target.AuditLogging = h.Clone().(*AuditLogging) + } else { + target.AuditLogging = proto.Clone(m.GetAuditLogging()).(*AuditLogging) + } + + target.RequestHeadersOnly = m.GetRequestHeadersOnly() + + target.ResponseHeadersOnly = m.GetResponseHeadersOnly() + + target.RegressionLogs = m.GetRegressionLogs() + + if h, ok := interface{}(m.GetDlpTransformation()).(clone.Cloner); ok { + target.DlpTransformation = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_transformation_ee.DlpTransformation) + } else { + target.DlpTransformation = proto.Clone(m.GetDlpTransformation()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_transformation_ee.DlpTransformation) + } + + return target +} + +// Clone function +func (m *RuleSet) Clone() proto.Message { + var target *RuleSet + if m == nil { + return target + } + target = &RuleSet{} + + target.RuleStr = m.GetRuleStr() + + if m.GetFiles() != nil { + target.Files = make([]string, len(m.GetFiles())) + for idx, v := range m.GetFiles() { + + target.Files[idx] = v + + } + } + + target.Directory = m.GetDirectory() + + return target +} + +// Clone function +func (m *ModSecurityPerRoute) Clone() proto.Message { + var target *ModSecurityPerRoute + if m == nil { + return target + } + target = &ModSecurityPerRoute{} + + target.Disabled = m.GetDisabled() + + if m.GetRuleSets() != nil { + target.RuleSets = make([]*RuleSet, len(m.GetRuleSets())) + for idx, v := range m.GetRuleSets() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RuleSets[idx] = h.Clone().(*RuleSet) + } else { + target.RuleSets[idx] = proto.Clone(v).(*RuleSet) + } + + } + } + + target.CustomInterventionMessage = m.GetCustomInterventionMessage() + + if h, ok := interface{}(m.GetAuditLogging()).(clone.Cloner); ok { + target.AuditLogging = h.Clone().(*AuditLogging) + } else { + target.AuditLogging = proto.Clone(m.GetAuditLogging()).(*AuditLogging) + } + + target.RequestHeadersOnly = m.GetRequestHeadersOnly() + + target.ResponseHeadersOnly = m.GetResponseHeadersOnly() + + if h, ok := interface{}(m.GetDlpTransformation()).(clone.Cloner); ok { + target.DlpTransformation = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_transformation_ee.DlpTransformation) + } else { + target.DlpTransformation = proto.Clone(m.GetDlpTransformation()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_transformation_ee.DlpTransformation) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/waf/waf.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/extensions/waf/waf.pb.equal.go index 01216c692..4aec398c7 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/waf/waf.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/waf/waf.pb.equal.go @@ -125,6 +125,16 @@ func (m *ModSecurity) Equal(that interface{}) bool { return false } + if h, ok := interface{}(m.GetDlpTransformation()).(equality.Equalizer); ok { + if !h.Equal(target.GetDlpTransformation()) { + return false + } + } else { + if !proto.Equal(m.GetDlpTransformation(), target.GetDlpTransformation()) { + return false + } + } + return true } @@ -235,5 +245,15 @@ func (m *ModSecurityPerRoute) Equal(that interface{}) bool { return false } + if h, ok := interface{}(m.GetDlpTransformation()).(equality.Equalizer); ok { + if !h.Equal(target.GetDlpTransformation()) { + return false + } + } else { + if !proto.Equal(m.GetDlpTransformation(), target.GetDlpTransformation()) { + return false + } + } + return true } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/waf/waf.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/waf/waf.pb.go index c24ae680a..8b2bd12cd 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/waf/waf.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/waf/waf.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/waf/waf.proto @@ -9,9 +9,10 @@ package waf import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" + transformation_ee "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation_ee" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) @@ -23,10 +24,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type AuditLogging_AuditLogAction int32 const ( @@ -134,21 +131,18 @@ func (AuditLogging_AuditLogLocation) EnumDescriptor() ([]byte, []int) { } type AuditLogging struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Action AuditLogging_AuditLogAction `protobuf:"varint,1,opt,name=action,proto3,enum=envoy.config.filter.http.modsecurity.v2.AuditLogging_AuditLogAction" json:"action,omitempty"` + Location AuditLogging_AuditLogLocation `protobuf:"varint,2,opt,name=location,proto3,enum=envoy.config.filter.http.modsecurity.v2.AuditLogging_AuditLogLocation" json:"location,omitempty"` unknownFields protoimpl.UnknownFields - - Action AuditLogging_AuditLogAction `protobuf:"varint,1,opt,name=action,proto3,enum=envoy.config.filter.http.modsecurity.v2.AuditLogging_AuditLogAction" json:"action,omitempty"` - Location AuditLogging_AuditLogLocation `protobuf:"varint,2,opt,name=location,proto3,enum=envoy.config.filter.http.modsecurity.v2.AuditLogging_AuditLogLocation" json:"location,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AuditLogging) Reset() { *x = AuditLogging{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuditLogging) String() string { @@ -159,7 +153,7 @@ func (*AuditLogging) ProtoMessage() {} func (x *AuditLogging) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -189,10 +183,7 @@ func (x *AuditLogging) GetLocation() AuditLogging_AuditLogLocation { } type ModSecurity struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Disable all rules on the current route Disabled bool `protobuf:"varint,1,opt,name=disabled,proto3" json:"disabled,omitempty"` // Global rule sets for the current http connection manager @@ -208,16 +199,17 @@ type ModSecurity struct { // log in a format suited for the OWASP regression tests. // this format is a multiline log format, so it is disabled for regular use. // do not enable this in production! - RegressionLogs bool `protobuf:"varint,4,opt,name=regression_logs,json=regressionLogs,proto3" json:"regression_logs,omitempty"` + RegressionLogs bool `protobuf:"varint,4,opt,name=regression_logs,json=regressionLogs,proto3" json:"regression_logs,omitempty"` + DlpTransformation *transformation_ee.DlpTransformation `protobuf:"bytes,8,opt,name=dlp_transformation,json=dlpTransformation,proto3" json:"dlp_transformation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ModSecurity) Reset() { *x = ModSecurity{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ModSecurity) String() string { @@ -228,7 +220,7 @@ func (*ModSecurity) ProtoMessage() {} func (x *ModSecurity) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -292,27 +284,33 @@ func (x *ModSecurity) GetRegressionLogs() bool { return false } -type RuleSet struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ModSecurity) GetDlpTransformation() *transformation_ee.DlpTransformation { + if x != nil { + return x.DlpTransformation + } + return nil +} +type RuleSet struct { + state protoimpl.MessageState `protogen:"open.v1"` // String of rules which are added directly RuleStr string `protobuf:"bytes,1,opt,name=rule_str,json=ruleStr,proto3" json:"rule_str,omitempty"` - // Array of files to include + // Array of files with rules to include. + // Any subsequent changes to the rules in these files are not automatically updated. To update rules from files, version and update the file name. + // If you want dynamically updated rules, use the `configMapRuleSets` option instead. Files []string `protobuf:"bytes,3,rep,name=files,proto3" json:"files,omitempty"` // A directory to include. all *.conf files in this directory will be // included. sub directories will NOT be checked. - Directory string `protobuf:"bytes,4,opt,name=directory,proto3" json:"directory,omitempty"` + Directory string `protobuf:"bytes,4,opt,name=directory,proto3" json:"directory,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RuleSet) Reset() { *x = RuleSet{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RuleSet) String() string { @@ -323,7 +321,7 @@ func (*RuleSet) ProtoMessage() {} func (x *RuleSet) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -360,10 +358,7 @@ func (x *RuleSet) GetDirectory() string { } type ModSecurityPerRoute struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Disable all rules on the current route Disabled bool `protobuf:"varint,1,opt,name=disabled,proto3" json:"disabled,omitempty"` // Overwrite the global rules on this route @@ -374,17 +369,18 @@ type ModSecurityPerRoute struct { AuditLogging *AuditLogging `protobuf:"bytes,5,opt,name=audit_logging,json=auditLogging,proto3" json:"audit_logging,omitempty"` // If set, the body will not be buffered and fed to ModSecurity. Only the headers will. // This can help improve performance. - RequestHeadersOnly bool `protobuf:"varint,6,opt,name=request_headers_only,json=requestHeadersOnly,proto3" json:"request_headers_only,omitempty"` - ResponseHeadersOnly bool `protobuf:"varint,7,opt,name=response_headers_only,json=responseHeadersOnly,proto3" json:"response_headers_only,omitempty"` + RequestHeadersOnly bool `protobuf:"varint,6,opt,name=request_headers_only,json=requestHeadersOnly,proto3" json:"request_headers_only,omitempty"` + ResponseHeadersOnly bool `protobuf:"varint,7,opt,name=response_headers_only,json=responseHeadersOnly,proto3" json:"response_headers_only,omitempty"` + DlpTransformation *transformation_ee.DlpTransformation `protobuf:"bytes,8,opt,name=dlp_transformation,json=dlpTransformation,proto3" json:"dlp_transformation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ModSecurityPerRoute) Reset() { *x = ModSecurityPerRoute{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ModSecurityPerRoute) String() string { @@ -395,7 +391,7 @@ func (*ModSecurityPerRoute) ProtoMessage() {} func (x *ModSecurityPerRoute) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -452,9 +448,16 @@ func (x *ModSecurityPerRoute) GetResponseHeadersOnly() bool { return false } +func (x *ModSecurityPerRoute) GetDlpTransformation() *transformation_ee.DlpTransformation { + if x != nil { + return x.DlpTransformation + } + return nil +} + var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_rawDesc = string([]byte{ 0x0a, 0x52, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -464,126 +467,150 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wa 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6d, 0x6f, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x32, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0xc8, 0x02, 0x0a, 0x0c, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x69, - 0x6e, 0x67, 0x12, 0x5c, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x44, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6d, 0x6f, - 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x75, 0x64, - 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, - 0x6f, 0x67, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x62, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x46, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6d, 0x6f, - 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x75, 0x64, - 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, - 0x6f, 0x67, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x0a, 0x0e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x09, 0x0a, 0x05, 0x4e, 0x45, 0x56, 0x45, 0x52, 0x10, - 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x4c, 0x45, 0x56, 0x41, 0x4e, 0x54, 0x5f, 0x4f, 0x4e, - 0x4c, 0x59, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4c, 0x57, 0x41, 0x59, 0x53, 0x10, 0x02, - 0x22, 0x3a, 0x0a, 0x10, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x4c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x45, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, - 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x10, 0x01, 0x22, 0xa3, 0x03, 0x0a, - 0x0b, 0x4d, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x4d, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, - 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x6e, + 0x6f, 0x1a, 0x6b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc8, + 0x02, 0x0a, 0x0c, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x12, + 0x5c, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x44, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6d, 0x6f, 0x64, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, + 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x62, 0x0a, + 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x46, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6d, 0x6f, 0x64, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, + 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x3a, 0x0a, 0x0e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x09, 0x0a, 0x05, 0x4e, 0x45, 0x56, 0x45, 0x52, 0x10, 0x00, 0x12, 0x11, + 0x0a, 0x0d, 0x52, 0x45, 0x4c, 0x45, 0x56, 0x41, 0x4e, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, + 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4c, 0x57, 0x41, 0x59, 0x53, 0x10, 0x02, 0x22, 0x3a, 0x0a, + 0x10, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x4d, + 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x10, 0x01, 0x22, 0x94, 0x04, 0x0a, 0x0b, 0x4d, 0x6f, + 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x4d, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x73, 0x65, + 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, + 0x74, 0x74, 0x70, 0x2e, 0x6d, 0x6f, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, + 0x76, 0x32, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, + 0x53, 0x65, 0x74, 0x73, 0x12, 0x3e, 0x0a, 0x1b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x5a, 0x0a, 0x0d, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, 0x6c, 0x6f, + 0x67, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6d, 0x6f, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, - 0x74, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x72, - 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x73, 0x12, 0x3e, 0x0a, 0x1b, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x5a, 0x0a, 0x0d, 0x61, 0x75, 0x64, 0x69, 0x74, - 0x5f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, - 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6d, 0x6f, 0x64, 0x73, 0x65, 0x63, - 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, - 0x67, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x61, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x67, - 0x69, 0x6e, 0x67, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x12, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x32, 0x0a, 0x15, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, - 0x67, 0x73, 0x22, 0x58, 0x0a, 0x07, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x12, 0x19, 0x0a, - 0x08, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x72, 0x75, 0x6c, 0x65, 0x53, 0x74, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x1c, - 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x82, 0x03, 0x0a, - 0x13, 0x4d, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x65, 0x72, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x12, 0x4d, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6d, - 0x6f, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x75, - 0x6c, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x73, 0x12, - 0x3e, 0x0a, 0x1b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x5a, 0x0a, 0x0d, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, - 0x70, 0x2e, 0x6d, 0x6f, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x32, - 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x61, - 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x30, 0x0a, 0x14, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x6f, - 0x6e, 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x32, 0x0a, - 0x15, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4f, 0x6e, 0x6c, - 0x79, 0x42, 0x59, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, - 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, - 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x77, 0x61, 0x66, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} + 0x74, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x69, + 0x6e, 0x67, 0x52, 0x0c, 0x61, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, + 0x12, 0x30, 0x0a, 0x14, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4f, 0x6e, + 0x6c, 0x79, 0x12, 0x32, 0x0a, 0x15, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x13, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0e, 0x72, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x12, + 0x6f, 0x0a, 0x12, 0x64, 0x6c, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6c, 0x70, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x64, + 0x6c, 0x70, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x58, 0x0a, 0x07, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x72, + 0x75, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, + 0x75, 0x6c, 0x65, 0x53, 0x74, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x22, 0xf3, 0x03, 0x0a, 0x13, 0x4d, + 0x6f, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x65, 0x72, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x4d, + 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6d, 0x6f, 0x64, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x75, 0x6c, 0x65, + 0x53, 0x65, 0x74, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x73, 0x12, 0x3e, 0x0a, + 0x1b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x65, 0x6e, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x19, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x5a, 0x0a, + 0x0d, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, + 0x6d, 0x6f, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x41, + 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x61, 0x75, 0x64, + 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, + 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x32, 0x0a, 0x15, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, + 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, + 0x6f, 0x0a, 0x12, 0x64, 0x6c, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6c, 0x70, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x64, + 0x6c, 0x70, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x5d, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x4f, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x77, 0x61, 0x66, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_goTypes = []interface{}{ - (AuditLogging_AuditLogAction)(0), // 0: envoy.config.filter.http.modsecurity.v2.AuditLogging.AuditLogAction - (AuditLogging_AuditLogLocation)(0), // 1: envoy.config.filter.http.modsecurity.v2.AuditLogging.AuditLogLocation - (*AuditLogging)(nil), // 2: envoy.config.filter.http.modsecurity.v2.AuditLogging - (*ModSecurity)(nil), // 3: envoy.config.filter.http.modsecurity.v2.ModSecurity - (*RuleSet)(nil), // 4: envoy.config.filter.http.modsecurity.v2.RuleSet - (*ModSecurityPerRoute)(nil), // 5: envoy.config.filter.http.modsecurity.v2.ModSecurityPerRoute +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_goTypes = []any{ + (AuditLogging_AuditLogAction)(0), // 0: envoy.config.filter.http.modsecurity.v2.AuditLogging.AuditLogAction + (AuditLogging_AuditLogLocation)(0), // 1: envoy.config.filter.http.modsecurity.v2.AuditLogging.AuditLogLocation + (*AuditLogging)(nil), // 2: envoy.config.filter.http.modsecurity.v2.AuditLogging + (*ModSecurity)(nil), // 3: envoy.config.filter.http.modsecurity.v2.ModSecurity + (*RuleSet)(nil), // 4: envoy.config.filter.http.modsecurity.v2.RuleSet + (*ModSecurityPerRoute)(nil), // 5: envoy.config.filter.http.modsecurity.v2.ModSecurityPerRoute + (*transformation_ee.DlpTransformation)(nil), // 6: envoy.config.filter.http.transformation_ee.v2.DlpTransformation } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_depIdxs = []int32{ 0, // 0: envoy.config.filter.http.modsecurity.v2.AuditLogging.action:type_name -> envoy.config.filter.http.modsecurity.v2.AuditLogging.AuditLogAction 1, // 1: envoy.config.filter.http.modsecurity.v2.AuditLogging.location:type_name -> envoy.config.filter.http.modsecurity.v2.AuditLogging.AuditLogLocation 4, // 2: envoy.config.filter.http.modsecurity.v2.ModSecurity.rule_sets:type_name -> envoy.config.filter.http.modsecurity.v2.RuleSet 2, // 3: envoy.config.filter.http.modsecurity.v2.ModSecurity.audit_logging:type_name -> envoy.config.filter.http.modsecurity.v2.AuditLogging - 4, // 4: envoy.config.filter.http.modsecurity.v2.ModSecurityPerRoute.rule_sets:type_name -> envoy.config.filter.http.modsecurity.v2.RuleSet - 2, // 5: envoy.config.filter.http.modsecurity.v2.ModSecurityPerRoute.audit_logging:type_name -> envoy.config.filter.http.modsecurity.v2.AuditLogging - 6, // [6:6] is the sub-list for method output_type - 6, // [6:6] is the sub-list for method input_type - 6, // [6:6] is the sub-list for extension type_name - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name + 6, // 4: envoy.config.filter.http.modsecurity.v2.ModSecurity.dlp_transformation:type_name -> envoy.config.filter.http.transformation_ee.v2.DlpTransformation + 4, // 5: envoy.config.filter.http.modsecurity.v2.ModSecurityPerRoute.rule_sets:type_name -> envoy.config.filter.http.modsecurity.v2.RuleSet + 2, // 6: envoy.config.filter.http.modsecurity.v2.ModSecurityPerRoute.audit_logging:type_name -> envoy.config.filter.http.modsecurity.v2.AuditLogging + 6, // 7: envoy.config.filter.http.modsecurity.v2.ModSecurityPerRoute.dlp_transformation:type_name -> envoy.config.filter.http.transformation_ee.v2.DlpTransformation + 8, // [8:8] is the sub-list for method output_type + 8, // [8:8] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name } func init() { @@ -593,61 +620,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_w if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AuditLogging); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ModSecurity); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RuleSet); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ModSecurityPerRoute); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_rawDesc)), NumEnums: 2, NumMessages: 4, NumExtensions: 0, @@ -659,7 +636,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_w MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_waf_waf_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/waf/waf.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/extensions/waf/waf.pb.hash.go index a5b96df68..ea93150e1 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/waf/waf.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/waf/waf.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *AuditLogging) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -52,6 +56,10 @@ func (m *AuditLogging) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ModSecurity) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -72,14 +80,20 @@ func (m *ModSecurity) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRuleSets() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -92,14 +106,20 @@ func (m *ModSecurity) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetAuditLogging()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuditLogging")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAuditLogging(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAuditLogging(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AuditLogging")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -120,10 +140,34 @@ func (m *ModSecurity) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + if h, ok := interface{}(m.GetDlpTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DlpTransformation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDlpTransformation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DlpTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RuleSet) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -156,6 +200,10 @@ func (m *RuleSet) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ModSecurityPerRoute) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -176,14 +224,20 @@ func (m *ModSecurityPerRoute) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRuleSets() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -196,14 +250,20 @@ func (m *ModSecurityPerRoute) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetAuditLogging()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuditLogging")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAuditLogging(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAuditLogging(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AuditLogging")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -219,5 +279,25 @@ func (m *ModSecurityPerRoute) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + if h, ok := interface{}(m.GetDlpTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DlpTransformation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDlpTransformation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DlpTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + return hasher.Sum64(), nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/waf/waf.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/extensions/waf/waf.pb.uniquehash.go new file mode 100644 index 000000000..78d85af10 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/waf/waf.pb.uniquehash.go @@ -0,0 +1,361 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/waf/waf.proto + +package waf + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AuditLogging) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.config.filter.http.modsecurity.v2.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/waf.AuditLogging")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Action")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAction()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Location")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetLocation()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ModSecurity) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.config.filter.http.modsecurity.v2.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/waf.ModSecurity")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Disabled")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDisabled()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RuleSets")); err != nil { + return 0, err + } + for i, v := range m.GetRuleSets() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("CustomInterventionMessage")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCustomInterventionMessage())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAuditLogging()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuditLogging")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuditLogging(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuditLogging")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RequestHeadersOnly")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRequestHeadersOnly()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ResponseHeadersOnly")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetResponseHeadersOnly()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RegressionLogs")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRegressionLogs()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDlpTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DlpTransformation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDlpTransformation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DlpTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RuleSet) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.config.filter.http.modsecurity.v2.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/waf.RuleSet")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RuleStr")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRuleStr())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Files")); err != nil { + return 0, err + } + for i, v := range m.GetFiles() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("Directory")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDirectory())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ModSecurityPerRoute) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.config.filter.http.modsecurity.v2.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/waf.ModSecurityPerRoute")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Disabled")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDisabled()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RuleSets")); err != nil { + return 0, err + } + for i, v := range m.GetRuleSets() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("CustomInterventionMessage")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCustomInterventionMessage())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAuditLogging()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuditLogging")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuditLogging(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuditLogging")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RequestHeadersOnly")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRequestHeadersOnly()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ResponseHeadersOnly")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetResponseHeadersOnly()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDlpTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DlpTransformation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDlpTransformation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DlpTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3/wasm.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3/wasm.pb.clone.go new file mode 100644 index 000000000..c9ba154f5 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3/wasm.pb.clone.go @@ -0,0 +1,119 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/wasm/v3/wasm.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + + google_golang_org_protobuf_types_known_anypb "google.golang.org/protobuf/types/known/anypb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *VmConfig) Clone() proto.Message { + var target *VmConfig + if m == nil { + return target + } + target = &VmConfig{} + + target.VmId = m.GetVmId() + + target.Runtime = m.GetRuntime() + + if h, ok := interface{}(m.GetCode()).(clone.Cloner); ok { + target.Code = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.AsyncDataSource) + } else { + target.Code = proto.Clone(m.GetCode()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.AsyncDataSource) + } + + if h, ok := interface{}(m.GetConfiguration()).(clone.Cloner); ok { + target.Configuration = h.Clone().(*google_golang_org_protobuf_types_known_anypb.Any) + } else { + target.Configuration = proto.Clone(m.GetConfiguration()).(*google_golang_org_protobuf_types_known_anypb.Any) + } + + target.AllowPrecompiled = m.GetAllowPrecompiled() + + target.NackOnCodeCacheMiss = m.GetNackOnCodeCacheMiss() + + return target +} + +// Clone function +func (m *PluginConfig) Clone() proto.Message { + var target *PluginConfig + if m == nil { + return target + } + target = &PluginConfig{} + + target.Name = m.GetName() + + target.RootId = m.GetRootId() + + if h, ok := interface{}(m.GetConfiguration()).(clone.Cloner); ok { + target.Configuration = h.Clone().(*google_golang_org_protobuf_types_known_anypb.Any) + } else { + target.Configuration = proto.Clone(m.GetConfiguration()).(*google_golang_org_protobuf_types_known_anypb.Any) + } + + target.FailOpen = m.GetFailOpen() + + switch m.Vm.(type) { + + case *PluginConfig_VmConfig: + + if h, ok := interface{}(m.GetVmConfig()).(clone.Cloner); ok { + target.Vm = &PluginConfig_VmConfig{ + VmConfig: h.Clone().(*VmConfig), + } + } else { + target.Vm = &PluginConfig_VmConfig{ + VmConfig: proto.Clone(m.GetVmConfig()).(*VmConfig), + } + } + + } + + return target +} + +// Clone function +func (m *WasmService) Clone() proto.Message { + var target *WasmService + if m == nil { + return target + } + target = &WasmService{} + + if h, ok := interface{}(m.GetConfig()).(clone.Cloner); ok { + target.Config = h.Clone().(*PluginConfig) + } else { + target.Config = proto.Clone(m.GetConfig()).(*PluginConfig) + } + + target.Singleton = m.GetSingleton() + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3/wasm.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3/wasm.pb.equal.go index cce145a89..b41c57a23 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3/wasm.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3/wasm.pb.equal.go @@ -131,6 +131,9 @@ func (m *PluginConfig) Equal(that interface{}) bool { switch m.Vm.(type) { case *PluginConfig_VmConfig: + if _, ok := target.Vm.(*PluginConfig_VmConfig); !ok { + return false + } if h, ok := interface{}(m.GetVmConfig()).(equality.Equalizer); ok { if !h.Equal(target.GetVmConfig()) { @@ -142,6 +145,11 @@ func (m *PluginConfig) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.Vm != target.Vm { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3/wasm.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3/wasm.pb.go index f3f11d9d4..3df21eba7 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3/wasm.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3/wasm.pb.go @@ -2,7 +2,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/wasm/v3/wasm.proto @@ -11,14 +11,14 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - any "github.com/golang/protobuf/ptypes/any" _ "github.com/solo-io/protoc-gen-ext/extproto" v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" ) const ( @@ -28,17 +28,10 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Configuration for a Wasm VM. // [#next-free-field: 7] type VmConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // An ID which will be used along with a hash of the wasm code (or the name of the registered Null // VM plugin) to determine which VM will be used for the plugin. All plugins which use the same // *vm_id* and code will use the same VM. May be left blank. Sharing a VM between plugins can @@ -53,7 +46,7 @@ type VmConfig struct { // (proxy_on_start). `google.protobuf.Struct` is serialized as JSON before // passing it to the plugin. `google.protobuf.BytesValue` and // `google.protobuf.StringValue` are passed directly without the wrapper. - Configuration *any.Any `protobuf:"bytes,4,opt,name=configuration,proto3" json:"configuration,omitempty"` + Configuration *anypb.Any `protobuf:"bytes,4,opt,name=configuration,proto3" json:"configuration,omitempty"` // Allow the wasm file to include pre-compiled code on VMs which support it. // Warning: this should only be enable for trusted sources as the precompiled code is not // verified. @@ -62,15 +55,15 @@ type VmConfig struct { // update and do a background fetch to fill the cache, otherwise fetch the code asynchronously and enter // warming state. NackOnCodeCacheMiss bool `protobuf:"varint,6,opt,name=nack_on_code_cache_miss,json=nackOnCodeCacheMiss,proto3" json:"nack_on_code_cache_miss,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VmConfig) Reset() { *x = VmConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VmConfig) String() string { @@ -81,7 +74,7 @@ func (*VmConfig) ProtoMessage() {} func (x *VmConfig) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -117,7 +110,7 @@ func (x *VmConfig) GetCode() *v3.AsyncDataSource { return nil } -func (x *VmConfig) GetConfiguration() *any.Any { +func (x *VmConfig) GetConfiguration() *anypb.Any { if x != nil { return x.Configuration } @@ -141,10 +134,7 @@ func (x *VmConfig) GetNackOnCodeCacheMiss() bool { // Base Configuration for Wasm Plugins e.g. filters and services. // [#next-free-field: 6] type PluginConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // A unique name for a filters/services in a VM for use in identifying the filter/service if // multiple filters/services are handled by the same *vm_id* and *root_id* and for // logging/debugging. @@ -155,7 +145,8 @@ type PluginConfig struct { RootId string `protobuf:"bytes,2,opt,name=root_id,json=rootId,proto3" json:"root_id,omitempty"` // Configuration for finding or starting VM. // - // Types that are assignable to Vm: + // Types that are valid to be assigned to Vm: + // // *PluginConfig_VmConfig Vm isPluginConfig_Vm `protobuf_oneof:"vm"` // Filter/service configuration used to configure or reconfigure a plugin @@ -163,22 +154,22 @@ type PluginConfig struct { // `google.protobuf.Struct` is serialized as JSON before // passing it to the plugin. `google.protobuf.BytesValue` and // `google.protobuf.StringValue` are passed directly without the wrapper. - Configuration *any.Any `protobuf:"bytes,4,opt,name=configuration,proto3" json:"configuration,omitempty"` + Configuration *anypb.Any `protobuf:"bytes,4,opt,name=configuration,proto3" json:"configuration,omitempty"` // If there is a fatal error on the VM (e.g. exception, abort(), on_start or on_configure return false), // then all plugins associated with the VM will either fail closed (by default), e.g. by returning an HTTP 503 error, // or fail open (if 'fail_open' is set to true) by bypassing the filter. Note: when on_start or on_configure return false // during xDS updates the xDS configuration will be rejected and when on_start or on_configuration return false on initial // startup the proxy will not start. - FailOpen bool `protobuf:"varint,5,opt,name=fail_open,json=failOpen,proto3" json:"fail_open,omitempty"` + FailOpen bool `protobuf:"varint,5,opt,name=fail_open,json=failOpen,proto3" json:"fail_open,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PluginConfig) Reset() { *x = PluginConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PluginConfig) String() string { @@ -189,7 +180,7 @@ func (*PluginConfig) ProtoMessage() {} func (x *PluginConfig) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -218,21 +209,23 @@ func (x *PluginConfig) GetRootId() string { return "" } -func (m *PluginConfig) GetVm() isPluginConfig_Vm { - if m != nil { - return m.Vm +func (x *PluginConfig) GetVm() isPluginConfig_Vm { + if x != nil { + return x.Vm } return nil } func (x *PluginConfig) GetVmConfig() *VmConfig { - if x, ok := x.GetVm().(*PluginConfig_VmConfig); ok { - return x.VmConfig + if x != nil { + if x, ok := x.Vm.(*PluginConfig_VmConfig); ok { + return x.VmConfig + } } return nil } -func (x *PluginConfig) GetConfiguration() *any.Any { +func (x *PluginConfig) GetConfiguration() *anypb.Any { if x != nil { return x.Configuration } @@ -259,24 +252,21 @@ func (*PluginConfig_VmConfig) isPluginConfig_Vm() {} // WasmService is configured as a built-in *envoy.wasm_service* :ref:`WasmService // ` This opaque configuration will be used to create a Wasm Service. type WasmService struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // General plugin configuration. Config *PluginConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` // If true, create a single VM rather than creating one VM per worker. Such a singleton can // not be used with filters. - Singleton bool `protobuf:"varint,2,opt,name=singleton,proto3" json:"singleton,omitempty"` + Singleton bool `protobuf:"varint,2,opt,name=singleton,proto3" json:"singleton,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WasmService) Reset() { *x = WasmService{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WasmService) String() string { @@ -287,7 +277,7 @@ func (*WasmService) ProtoMessage() {} func (x *WasmService) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -318,7 +308,7 @@ func (x *WasmService) GetSingleton() bool { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_rawDesc = string([]byte{ 0x0a, 0x57, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -376,38 +366,38 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wa 0x73, 0x2e, 0x77, 0x61, 0x73, 0x6d, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x74, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x09, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x74, 0x6f, 0x6e, 0x42, 0x92, 0x01, 0x0a, - 0x26, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, - 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x77, 0x61, 0x73, 0x6d, 0x2e, 0x76, 0x33, 0x42, 0x09, 0x57, 0x61, 0x73, 0x6d, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x53, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, - 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x77, 0x61, 0x73, 0x6d, 0x2f, 0x76, 0x33, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, - 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x08, 0x52, 0x09, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x74, 0x6f, 0x6e, 0x42, 0x96, 0x01, 0xb8, + 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x0a, 0x26, 0x69, 0x6f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x77, 0x61, 0x73, 0x6d, + 0x2e, 0x76, 0x33, 0x42, 0x09, 0x57, 0x61, 0x73, 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x53, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x77, 0x61, + 0x73, 0x6d, 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_goTypes = []any{ (*VmConfig)(nil), // 0: solo.io.envoy.extensions.wasm.v3.VmConfig (*PluginConfig)(nil), // 1: solo.io.envoy.extensions.wasm.v3.PluginConfig (*WasmService)(nil), // 2: solo.io.envoy.extensions.wasm.v3.WasmService (*v3.AsyncDataSource)(nil), // 3: solo.io.envoy.config.core.v3.AsyncDataSource - (*any.Any)(nil), // 4: google.protobuf.Any + (*anypb.Any)(nil), // 4: google.protobuf.Any } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_depIdxs = []int32{ 3, // 0: solo.io.envoy.extensions.wasm.v3.VmConfig.code:type_name -> solo.io.envoy.config.core.v3.AsyncDataSource @@ -429,52 +419,14 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_w if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VmConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PluginConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WasmService); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_msgTypes[1].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_msgTypes[1].OneofWrappers = []any{ (*PluginConfig_VmConfig)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_rawDesc)), NumEnums: 0, NumMessages: 3, NumExtensions: 0, @@ -485,7 +437,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_w MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_wasm_v3_wasm_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3/wasm.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3/wasm.pb.hash.go index 72b9d25c5..6af749701 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3/wasm.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3/wasm.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *VmConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -47,28 +51,40 @@ func (m *VmConfig) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetCode()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Code")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCode(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCode(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Code")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetConfiguration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Configuration")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConfiguration(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConfiguration(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Configuration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -88,6 +104,10 @@ func (m *VmConfig) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *PluginConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -109,14 +129,20 @@ func (m *PluginConfig) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetConfiguration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Configuration")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConfiguration(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConfiguration(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Configuration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -132,14 +158,20 @@ func (m *PluginConfig) Hash(hasher hash.Hash64) (uint64, error) { case *PluginConfig_VmConfig: if h, ok := interface{}(m.GetVmConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("VmConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetVmConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetVmConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("VmConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -151,6 +183,10 @@ func (m *PluginConfig) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *WasmService) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -164,14 +200,20 @@ func (m *WasmService) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3/wasm.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3/wasm.pb.uniquehash.go new file mode 100644 index 000000000..29b32bcdb --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3/wasm.pb.uniquehash.go @@ -0,0 +1,251 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/wasm/v3/wasm.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *VmConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.extensions.wasm.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3.VmConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("VmId")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetVmId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Runtime")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRuntime())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCode()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Code")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCode(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Code")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetConfiguration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Configuration")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConfiguration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Configuration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("AllowPrecompiled")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAllowPrecompiled()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("NackOnCodeCacheMiss")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetNackOnCodeCacheMiss()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *PluginConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.extensions.wasm.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3.PluginConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RootId")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRootId())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetConfiguration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Configuration")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConfiguration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Configuration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("FailOpen")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetFailOpen()) + if err != nil { + return 0, err + } + + switch m.Vm.(type) { + + case *PluginConfig_VmConfig: + + if h, ok := interface{}(m.GetVmConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("VmConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetVmConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("VmConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *WasmService) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.extensions.wasm.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/wasm/v3.WasmService")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Singleton")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetSingleton()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/xff_offset/solo_xff_offset_filter.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/xff_offset/solo_xff_offset_filter.pb.go index d075dcca5..aef506dbe 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/xff_offset/solo_xff_offset_filter.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/xff_offset/solo_xff_offset_filter.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/extensions/xff_offset/solo_xff_offset_filter.proto @@ -9,8 +9,8 @@ package xff_offset import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) @@ -22,28 +22,21 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Envoy filter configuration for the solo_xff_offset filter, not set by the user. type SoloXffOffset struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The amount of addresses from the left of x-forwarded-for (xff) header // which should be skipped to get the client address. - Offset uint32 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"` + Offset uint32 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SoloXffOffset) Reset() { *x = SoloXffOffset{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SoloXffOffset) String() string { @@ -54,7 +47,7 @@ func (*SoloXffOffset) ProtoMessage() {} func (x *SoloXffOffset) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -78,7 +71,7 @@ func (x *SoloXffOffset) GetOffset() uint32 { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_rawDesc = string([]byte{ 0x0a, 0x6c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -103,22 +96,22 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xf 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x78, 0x66, 0x66, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_goTypes = []any{ (*SoloXffOffset)(nil), // 0: envoy.config.filter.http.solo_xff_offset.v2.SoloXffOffset } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_depIdxs = []int32{ @@ -136,25 +129,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_x if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SoloXffOffset); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, @@ -165,7 +144,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_x MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_xff_offset_solo_xff_offset_filter_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3/external_processor.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3/external_processor.pb.clone.go new file mode 100644 index 000000000..a891a91e7 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3/external_processor.pb.clone.go @@ -0,0 +1,529 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/service/ext_proc/v3/external_processor.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_ext_proc_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/ext_proc/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/v3" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *ProcessingRequest) Clone() proto.Message { + var target *ProcessingRequest + if m == nil { + return target + } + target = &ProcessingRequest{} + + if h, ok := interface{}(m.GetMetadataContext()).(clone.Cloner); ok { + target.MetadataContext = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.Metadata) + } else { + target.MetadataContext = proto.Clone(m.GetMetadataContext()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.Metadata) + } + + if m.GetAttributes() != nil { + target.Attributes = make(map[string]*google_golang_org_protobuf_types_known_structpb.Struct, len(m.GetAttributes())) + for k, v := range m.GetAttributes() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Attributes[k] = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Attributes[k] = proto.Clone(v).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + } + } + + target.ObservabilityMode = m.GetObservabilityMode() + + switch m.Request.(type) { + + case *ProcessingRequest_RequestHeaders: + + if h, ok := interface{}(m.GetRequestHeaders()).(clone.Cloner); ok { + target.Request = &ProcessingRequest_RequestHeaders{ + RequestHeaders: h.Clone().(*HttpHeaders), + } + } else { + target.Request = &ProcessingRequest_RequestHeaders{ + RequestHeaders: proto.Clone(m.GetRequestHeaders()).(*HttpHeaders), + } + } + + case *ProcessingRequest_ResponseHeaders: + + if h, ok := interface{}(m.GetResponseHeaders()).(clone.Cloner); ok { + target.Request = &ProcessingRequest_ResponseHeaders{ + ResponseHeaders: h.Clone().(*HttpHeaders), + } + } else { + target.Request = &ProcessingRequest_ResponseHeaders{ + ResponseHeaders: proto.Clone(m.GetResponseHeaders()).(*HttpHeaders), + } + } + + case *ProcessingRequest_RequestBody: + + if h, ok := interface{}(m.GetRequestBody()).(clone.Cloner); ok { + target.Request = &ProcessingRequest_RequestBody{ + RequestBody: h.Clone().(*HttpBody), + } + } else { + target.Request = &ProcessingRequest_RequestBody{ + RequestBody: proto.Clone(m.GetRequestBody()).(*HttpBody), + } + } + + case *ProcessingRequest_ResponseBody: + + if h, ok := interface{}(m.GetResponseBody()).(clone.Cloner); ok { + target.Request = &ProcessingRequest_ResponseBody{ + ResponseBody: h.Clone().(*HttpBody), + } + } else { + target.Request = &ProcessingRequest_ResponseBody{ + ResponseBody: proto.Clone(m.GetResponseBody()).(*HttpBody), + } + } + + case *ProcessingRequest_RequestTrailers: + + if h, ok := interface{}(m.GetRequestTrailers()).(clone.Cloner); ok { + target.Request = &ProcessingRequest_RequestTrailers{ + RequestTrailers: h.Clone().(*HttpTrailers), + } + } else { + target.Request = &ProcessingRequest_RequestTrailers{ + RequestTrailers: proto.Clone(m.GetRequestTrailers()).(*HttpTrailers), + } + } + + case *ProcessingRequest_ResponseTrailers: + + if h, ok := interface{}(m.GetResponseTrailers()).(clone.Cloner); ok { + target.Request = &ProcessingRequest_ResponseTrailers{ + ResponseTrailers: h.Clone().(*HttpTrailers), + } + } else { + target.Request = &ProcessingRequest_ResponseTrailers{ + ResponseTrailers: proto.Clone(m.GetResponseTrailers()).(*HttpTrailers), + } + } + + } + + return target +} + +// Clone function +func (m *ProcessingResponse) Clone() proto.Message { + var target *ProcessingResponse + if m == nil { + return target + } + target = &ProcessingResponse{} + + if h, ok := interface{}(m.GetDynamicMetadata()).(clone.Cloner); ok { + target.DynamicMetadata = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.DynamicMetadata = proto.Clone(m.GetDynamicMetadata()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + if h, ok := interface{}(m.GetModeOverride()).(clone.Cloner); ok { + target.ModeOverride = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_ext_proc_v3.ProcessingMode) + } else { + target.ModeOverride = proto.Clone(m.GetModeOverride()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_ext_proc_v3.ProcessingMode) + } + + if h, ok := interface{}(m.GetOverrideMessageTimeout()).(clone.Cloner); ok { + target.OverrideMessageTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.OverrideMessageTimeout = proto.Clone(m.GetOverrideMessageTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + switch m.Response.(type) { + + case *ProcessingResponse_RequestHeaders: + + if h, ok := interface{}(m.GetRequestHeaders()).(clone.Cloner); ok { + target.Response = &ProcessingResponse_RequestHeaders{ + RequestHeaders: h.Clone().(*HeadersResponse), + } + } else { + target.Response = &ProcessingResponse_RequestHeaders{ + RequestHeaders: proto.Clone(m.GetRequestHeaders()).(*HeadersResponse), + } + } + + case *ProcessingResponse_ResponseHeaders: + + if h, ok := interface{}(m.GetResponseHeaders()).(clone.Cloner); ok { + target.Response = &ProcessingResponse_ResponseHeaders{ + ResponseHeaders: h.Clone().(*HeadersResponse), + } + } else { + target.Response = &ProcessingResponse_ResponseHeaders{ + ResponseHeaders: proto.Clone(m.GetResponseHeaders()).(*HeadersResponse), + } + } + + case *ProcessingResponse_RequestBody: + + if h, ok := interface{}(m.GetRequestBody()).(clone.Cloner); ok { + target.Response = &ProcessingResponse_RequestBody{ + RequestBody: h.Clone().(*BodyResponse), + } + } else { + target.Response = &ProcessingResponse_RequestBody{ + RequestBody: proto.Clone(m.GetRequestBody()).(*BodyResponse), + } + } + + case *ProcessingResponse_ResponseBody: + + if h, ok := interface{}(m.GetResponseBody()).(clone.Cloner); ok { + target.Response = &ProcessingResponse_ResponseBody{ + ResponseBody: h.Clone().(*BodyResponse), + } + } else { + target.Response = &ProcessingResponse_ResponseBody{ + ResponseBody: proto.Clone(m.GetResponseBody()).(*BodyResponse), + } + } + + case *ProcessingResponse_RequestTrailers: + + if h, ok := interface{}(m.GetRequestTrailers()).(clone.Cloner); ok { + target.Response = &ProcessingResponse_RequestTrailers{ + RequestTrailers: h.Clone().(*TrailersResponse), + } + } else { + target.Response = &ProcessingResponse_RequestTrailers{ + RequestTrailers: proto.Clone(m.GetRequestTrailers()).(*TrailersResponse), + } + } + + case *ProcessingResponse_ResponseTrailers: + + if h, ok := interface{}(m.GetResponseTrailers()).(clone.Cloner); ok { + target.Response = &ProcessingResponse_ResponseTrailers{ + ResponseTrailers: h.Clone().(*TrailersResponse), + } + } else { + target.Response = &ProcessingResponse_ResponseTrailers{ + ResponseTrailers: proto.Clone(m.GetResponseTrailers()).(*TrailersResponse), + } + } + + case *ProcessingResponse_ImmediateResponse: + + if h, ok := interface{}(m.GetImmediateResponse()).(clone.Cloner); ok { + target.Response = &ProcessingResponse_ImmediateResponse{ + ImmediateResponse: h.Clone().(*ImmediateResponse), + } + } else { + target.Response = &ProcessingResponse_ImmediateResponse{ + ImmediateResponse: proto.Clone(m.GetImmediateResponse()).(*ImmediateResponse), + } + } + + } + + return target +} + +// Clone function +func (m *HttpHeaders) Clone() proto.Message { + var target *HttpHeaders + if m == nil { + return target + } + target = &HttpHeaders{} + + if h, ok := interface{}(m.GetHeaders()).(clone.Cloner); ok { + target.Headers = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderMap) + } else { + target.Headers = proto.Clone(m.GetHeaders()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderMap) + } + + if m.GetAttributes() != nil { + target.Attributes = make(map[string]*google_golang_org_protobuf_types_known_structpb.Struct, len(m.GetAttributes())) + for k, v := range m.GetAttributes() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Attributes[k] = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Attributes[k] = proto.Clone(v).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + } + } + + target.EndOfStream = m.GetEndOfStream() + + return target +} + +// Clone function +func (m *HttpBody) Clone() proto.Message { + var target *HttpBody + if m == nil { + return target + } + target = &HttpBody{} + + if m.GetBody() != nil { + target.Body = make([]byte, len(m.GetBody())) + copy(target.Body, m.GetBody()) + } + + target.EndOfStream = m.GetEndOfStream() + + return target +} + +// Clone function +func (m *HttpTrailers) Clone() proto.Message { + var target *HttpTrailers + if m == nil { + return target + } + target = &HttpTrailers{} + + if h, ok := interface{}(m.GetTrailers()).(clone.Cloner); ok { + target.Trailers = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderMap) + } else { + target.Trailers = proto.Clone(m.GetTrailers()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderMap) + } + + return target +} + +// Clone function +func (m *HeadersResponse) Clone() proto.Message { + var target *HeadersResponse + if m == nil { + return target + } + target = &HeadersResponse{} + + if h, ok := interface{}(m.GetResponse()).(clone.Cloner); ok { + target.Response = h.Clone().(*CommonResponse) + } else { + target.Response = proto.Clone(m.GetResponse()).(*CommonResponse) + } + + return target +} + +// Clone function +func (m *TrailersResponse) Clone() proto.Message { + var target *TrailersResponse + if m == nil { + return target + } + target = &TrailersResponse{} + + if h, ok := interface{}(m.GetHeaderMutation()).(clone.Cloner); ok { + target.HeaderMutation = h.Clone().(*HeaderMutation) + } else { + target.HeaderMutation = proto.Clone(m.GetHeaderMutation()).(*HeaderMutation) + } + + return target +} + +// Clone function +func (m *BodyResponse) Clone() proto.Message { + var target *BodyResponse + if m == nil { + return target + } + target = &BodyResponse{} + + if h, ok := interface{}(m.GetResponse()).(clone.Cloner); ok { + target.Response = h.Clone().(*CommonResponse) + } else { + target.Response = proto.Clone(m.GetResponse()).(*CommonResponse) + } + + return target +} + +// Clone function +func (m *CommonResponse) Clone() proto.Message { + var target *CommonResponse + if m == nil { + return target + } + target = &CommonResponse{} + + target.Status = m.GetStatus() + + if h, ok := interface{}(m.GetHeaderMutation()).(clone.Cloner); ok { + target.HeaderMutation = h.Clone().(*HeaderMutation) + } else { + target.HeaderMutation = proto.Clone(m.GetHeaderMutation()).(*HeaderMutation) + } + + if h, ok := interface{}(m.GetBodyMutation()).(clone.Cloner); ok { + target.BodyMutation = h.Clone().(*BodyMutation) + } else { + target.BodyMutation = proto.Clone(m.GetBodyMutation()).(*BodyMutation) + } + + if h, ok := interface{}(m.GetTrailers()).(clone.Cloner); ok { + target.Trailers = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderMap) + } else { + target.Trailers = proto.Clone(m.GetTrailers()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderMap) + } + + target.ClearRouteCache = m.GetClearRouteCache() + + return target +} + +// Clone function +func (m *ImmediateResponse) Clone() proto.Message { + var target *ImmediateResponse + if m == nil { + return target + } + target = &ImmediateResponse{} + + if h, ok := interface{}(m.GetStatus()).(clone.Cloner); ok { + target.Status = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3.HttpStatus) + } else { + target.Status = proto.Clone(m.GetStatus()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3.HttpStatus) + } + + if h, ok := interface{}(m.GetHeaders()).(clone.Cloner); ok { + target.Headers = h.Clone().(*HeaderMutation) + } else { + target.Headers = proto.Clone(m.GetHeaders()).(*HeaderMutation) + } + + if m.GetBody() != nil { + target.Body = make([]byte, len(m.GetBody())) + copy(target.Body, m.GetBody()) + } + + if h, ok := interface{}(m.GetGrpcStatus()).(clone.Cloner); ok { + target.GrpcStatus = h.Clone().(*GrpcStatus) + } else { + target.GrpcStatus = proto.Clone(m.GetGrpcStatus()).(*GrpcStatus) + } + + target.Details = m.GetDetails() + + return target +} + +// Clone function +func (m *GrpcStatus) Clone() proto.Message { + var target *GrpcStatus + if m == nil { + return target + } + target = &GrpcStatus{} + + target.Status = m.GetStatus() + + return target +} + +// Clone function +func (m *HeaderMutation) Clone() proto.Message { + var target *HeaderMutation + if m == nil { + return target + } + target = &HeaderMutation{} + + if m.GetSetHeaders() != nil { + target.SetHeaders = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption, len(m.GetSetHeaders())) + for idx, v := range m.GetSetHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SetHeaders[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption) + } else { + target.SetHeaders[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValueOption) + } + + } + } + + if m.GetRemoveHeaders() != nil { + target.RemoveHeaders = make([]string, len(m.GetRemoveHeaders())) + for idx, v := range m.GetRemoveHeaders() { + + target.RemoveHeaders[idx] = v + + } + } + + return target +} + +// Clone function +func (m *BodyMutation) Clone() proto.Message { + var target *BodyMutation + if m == nil { + return target + } + target = &BodyMutation{} + + switch m.Mutation.(type) { + + case *BodyMutation_Body: + + if m.GetBody() != nil { + newArr := make([]byte, len(m.GetBody())) + copy(newArr, m.GetBody()) + target.Mutation = &BodyMutation_Body{ + Body: newArr, + } + } else { + target.Mutation = &BodyMutation_Body{ + Body: nil, + } + } + + case *BodyMutation_ClearBody: + + target.Mutation = &BodyMutation_ClearBody{ + ClearBody: m.GetClearBody(), + } + + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3/external_processor.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3/external_processor.pb.equal.go new file mode 100644 index 000000000..264e2b23f --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3/external_processor.pb.equal.go @@ -0,0 +1,826 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/service/ext_proc/v3/external_processor.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *ProcessingRequest) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ProcessingRequest) + if !ok { + that2, ok := that.(ProcessingRequest) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetMetadataContext()).(equality.Equalizer); ok { + if !h.Equal(target.GetMetadataContext()) { + return false + } + } else { + if !proto.Equal(m.GetMetadataContext(), target.GetMetadataContext()) { + return false + } + } + + if len(m.GetAttributes()) != len(target.GetAttributes()) { + return false + } + for k, v := range m.GetAttributes() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetAttributes()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetAttributes()[k]) { + return false + } + } + + } + + if m.GetObservabilityMode() != target.GetObservabilityMode() { + return false + } + + switch m.Request.(type) { + + case *ProcessingRequest_RequestHeaders: + if _, ok := target.Request.(*ProcessingRequest_RequestHeaders); !ok { + return false + } + + if h, ok := interface{}(m.GetRequestHeaders()).(equality.Equalizer); ok { + if !h.Equal(target.GetRequestHeaders()) { + return false + } + } else { + if !proto.Equal(m.GetRequestHeaders(), target.GetRequestHeaders()) { + return false + } + } + + case *ProcessingRequest_ResponseHeaders: + if _, ok := target.Request.(*ProcessingRequest_ResponseHeaders); !ok { + return false + } + + if h, ok := interface{}(m.GetResponseHeaders()).(equality.Equalizer); ok { + if !h.Equal(target.GetResponseHeaders()) { + return false + } + } else { + if !proto.Equal(m.GetResponseHeaders(), target.GetResponseHeaders()) { + return false + } + } + + case *ProcessingRequest_RequestBody: + if _, ok := target.Request.(*ProcessingRequest_RequestBody); !ok { + return false + } + + if h, ok := interface{}(m.GetRequestBody()).(equality.Equalizer); ok { + if !h.Equal(target.GetRequestBody()) { + return false + } + } else { + if !proto.Equal(m.GetRequestBody(), target.GetRequestBody()) { + return false + } + } + + case *ProcessingRequest_ResponseBody: + if _, ok := target.Request.(*ProcessingRequest_ResponseBody); !ok { + return false + } + + if h, ok := interface{}(m.GetResponseBody()).(equality.Equalizer); ok { + if !h.Equal(target.GetResponseBody()) { + return false + } + } else { + if !proto.Equal(m.GetResponseBody(), target.GetResponseBody()) { + return false + } + } + + case *ProcessingRequest_RequestTrailers: + if _, ok := target.Request.(*ProcessingRequest_RequestTrailers); !ok { + return false + } + + if h, ok := interface{}(m.GetRequestTrailers()).(equality.Equalizer); ok { + if !h.Equal(target.GetRequestTrailers()) { + return false + } + } else { + if !proto.Equal(m.GetRequestTrailers(), target.GetRequestTrailers()) { + return false + } + } + + case *ProcessingRequest_ResponseTrailers: + if _, ok := target.Request.(*ProcessingRequest_ResponseTrailers); !ok { + return false + } + + if h, ok := interface{}(m.GetResponseTrailers()).(equality.Equalizer); ok { + if !h.Equal(target.GetResponseTrailers()) { + return false + } + } else { + if !proto.Equal(m.GetResponseTrailers(), target.GetResponseTrailers()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.Request != target.Request { + return false + } + } + + return true +} + +// Equal function +func (m *ProcessingResponse) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ProcessingResponse) + if !ok { + that2, ok := that.(ProcessingResponse) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetDynamicMetadata()).(equality.Equalizer); ok { + if !h.Equal(target.GetDynamicMetadata()) { + return false + } + } else { + if !proto.Equal(m.GetDynamicMetadata(), target.GetDynamicMetadata()) { + return false + } + } + + if h, ok := interface{}(m.GetModeOverride()).(equality.Equalizer); ok { + if !h.Equal(target.GetModeOverride()) { + return false + } + } else { + if !proto.Equal(m.GetModeOverride(), target.GetModeOverride()) { + return false + } + } + + if h, ok := interface{}(m.GetOverrideMessageTimeout()).(equality.Equalizer); ok { + if !h.Equal(target.GetOverrideMessageTimeout()) { + return false + } + } else { + if !proto.Equal(m.GetOverrideMessageTimeout(), target.GetOverrideMessageTimeout()) { + return false + } + } + + switch m.Response.(type) { + + case *ProcessingResponse_RequestHeaders: + if _, ok := target.Response.(*ProcessingResponse_RequestHeaders); !ok { + return false + } + + if h, ok := interface{}(m.GetRequestHeaders()).(equality.Equalizer); ok { + if !h.Equal(target.GetRequestHeaders()) { + return false + } + } else { + if !proto.Equal(m.GetRequestHeaders(), target.GetRequestHeaders()) { + return false + } + } + + case *ProcessingResponse_ResponseHeaders: + if _, ok := target.Response.(*ProcessingResponse_ResponseHeaders); !ok { + return false + } + + if h, ok := interface{}(m.GetResponseHeaders()).(equality.Equalizer); ok { + if !h.Equal(target.GetResponseHeaders()) { + return false + } + } else { + if !proto.Equal(m.GetResponseHeaders(), target.GetResponseHeaders()) { + return false + } + } + + case *ProcessingResponse_RequestBody: + if _, ok := target.Response.(*ProcessingResponse_RequestBody); !ok { + return false + } + + if h, ok := interface{}(m.GetRequestBody()).(equality.Equalizer); ok { + if !h.Equal(target.GetRequestBody()) { + return false + } + } else { + if !proto.Equal(m.GetRequestBody(), target.GetRequestBody()) { + return false + } + } + + case *ProcessingResponse_ResponseBody: + if _, ok := target.Response.(*ProcessingResponse_ResponseBody); !ok { + return false + } + + if h, ok := interface{}(m.GetResponseBody()).(equality.Equalizer); ok { + if !h.Equal(target.GetResponseBody()) { + return false + } + } else { + if !proto.Equal(m.GetResponseBody(), target.GetResponseBody()) { + return false + } + } + + case *ProcessingResponse_RequestTrailers: + if _, ok := target.Response.(*ProcessingResponse_RequestTrailers); !ok { + return false + } + + if h, ok := interface{}(m.GetRequestTrailers()).(equality.Equalizer); ok { + if !h.Equal(target.GetRequestTrailers()) { + return false + } + } else { + if !proto.Equal(m.GetRequestTrailers(), target.GetRequestTrailers()) { + return false + } + } + + case *ProcessingResponse_ResponseTrailers: + if _, ok := target.Response.(*ProcessingResponse_ResponseTrailers); !ok { + return false + } + + if h, ok := interface{}(m.GetResponseTrailers()).(equality.Equalizer); ok { + if !h.Equal(target.GetResponseTrailers()) { + return false + } + } else { + if !proto.Equal(m.GetResponseTrailers(), target.GetResponseTrailers()) { + return false + } + } + + case *ProcessingResponse_ImmediateResponse: + if _, ok := target.Response.(*ProcessingResponse_ImmediateResponse); !ok { + return false + } + + if h, ok := interface{}(m.GetImmediateResponse()).(equality.Equalizer); ok { + if !h.Equal(target.GetImmediateResponse()) { + return false + } + } else { + if !proto.Equal(m.GetImmediateResponse(), target.GetImmediateResponse()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.Response != target.Response { + return false + } + } + + return true +} + +// Equal function +func (m *HttpHeaders) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HttpHeaders) + if !ok { + that2, ok := that.(HttpHeaders) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetHeaders()).(equality.Equalizer); ok { + if !h.Equal(target.GetHeaders()) { + return false + } + } else { + if !proto.Equal(m.GetHeaders(), target.GetHeaders()) { + return false + } + } + + if len(m.GetAttributes()) != len(target.GetAttributes()) { + return false + } + for k, v := range m.GetAttributes() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetAttributes()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetAttributes()[k]) { + return false + } + } + + } + + if m.GetEndOfStream() != target.GetEndOfStream() { + return false + } + + return true +} + +// Equal function +func (m *HttpBody) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HttpBody) + if !ok { + that2, ok := that.(HttpBody) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if bytes.Compare(m.GetBody(), target.GetBody()) != 0 { + return false + } + + if m.GetEndOfStream() != target.GetEndOfStream() { + return false + } + + return true +} + +// Equal function +func (m *HttpTrailers) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HttpTrailers) + if !ok { + that2, ok := that.(HttpTrailers) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetTrailers()).(equality.Equalizer); ok { + if !h.Equal(target.GetTrailers()) { + return false + } + } else { + if !proto.Equal(m.GetTrailers(), target.GetTrailers()) { + return false + } + } + + return true +} + +// Equal function +func (m *HeadersResponse) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HeadersResponse) + if !ok { + that2, ok := that.(HeadersResponse) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetResponse()).(equality.Equalizer); ok { + if !h.Equal(target.GetResponse()) { + return false + } + } else { + if !proto.Equal(m.GetResponse(), target.GetResponse()) { + return false + } + } + + return true +} + +// Equal function +func (m *TrailersResponse) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*TrailersResponse) + if !ok { + that2, ok := that.(TrailersResponse) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetHeaderMutation()).(equality.Equalizer); ok { + if !h.Equal(target.GetHeaderMutation()) { + return false + } + } else { + if !proto.Equal(m.GetHeaderMutation(), target.GetHeaderMutation()) { + return false + } + } + + return true +} + +// Equal function +func (m *BodyResponse) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*BodyResponse) + if !ok { + that2, ok := that.(BodyResponse) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetResponse()).(equality.Equalizer); ok { + if !h.Equal(target.GetResponse()) { + return false + } + } else { + if !proto.Equal(m.GetResponse(), target.GetResponse()) { + return false + } + } + + return true +} + +// Equal function +func (m *CommonResponse) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*CommonResponse) + if !ok { + that2, ok := that.(CommonResponse) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetStatus() != target.GetStatus() { + return false + } + + if h, ok := interface{}(m.GetHeaderMutation()).(equality.Equalizer); ok { + if !h.Equal(target.GetHeaderMutation()) { + return false + } + } else { + if !proto.Equal(m.GetHeaderMutation(), target.GetHeaderMutation()) { + return false + } + } + + if h, ok := interface{}(m.GetBodyMutation()).(equality.Equalizer); ok { + if !h.Equal(target.GetBodyMutation()) { + return false + } + } else { + if !proto.Equal(m.GetBodyMutation(), target.GetBodyMutation()) { + return false + } + } + + if h, ok := interface{}(m.GetTrailers()).(equality.Equalizer); ok { + if !h.Equal(target.GetTrailers()) { + return false + } + } else { + if !proto.Equal(m.GetTrailers(), target.GetTrailers()) { + return false + } + } + + if m.GetClearRouteCache() != target.GetClearRouteCache() { + return false + } + + return true +} + +// Equal function +func (m *ImmediateResponse) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ImmediateResponse) + if !ok { + that2, ok := that.(ImmediateResponse) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetStatus()).(equality.Equalizer); ok { + if !h.Equal(target.GetStatus()) { + return false + } + } else { + if !proto.Equal(m.GetStatus(), target.GetStatus()) { + return false + } + } + + if h, ok := interface{}(m.GetHeaders()).(equality.Equalizer); ok { + if !h.Equal(target.GetHeaders()) { + return false + } + } else { + if !proto.Equal(m.GetHeaders(), target.GetHeaders()) { + return false + } + } + + if bytes.Compare(m.GetBody(), target.GetBody()) != 0 { + return false + } + + if h, ok := interface{}(m.GetGrpcStatus()).(equality.Equalizer); ok { + if !h.Equal(target.GetGrpcStatus()) { + return false + } + } else { + if !proto.Equal(m.GetGrpcStatus(), target.GetGrpcStatus()) { + return false + } + } + + if strings.Compare(m.GetDetails(), target.GetDetails()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *GrpcStatus) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*GrpcStatus) + if !ok { + that2, ok := that.(GrpcStatus) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetStatus() != target.GetStatus() { + return false + } + + return true +} + +// Equal function +func (m *HeaderMutation) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HeaderMutation) + if !ok { + that2, ok := that.(HeaderMutation) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetSetHeaders()) != len(target.GetSetHeaders()) { + return false + } + for idx, v := range m.GetSetHeaders() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetSetHeaders()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetSetHeaders()[idx]) { + return false + } + } + + } + + if len(m.GetRemoveHeaders()) != len(target.GetRemoveHeaders()) { + return false + } + for idx, v := range m.GetRemoveHeaders() { + + if strings.Compare(v, target.GetRemoveHeaders()[idx]) != 0 { + return false + } + + } + + return true +} + +// Equal function +func (m *BodyMutation) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*BodyMutation) + if !ok { + that2, ok := that.(BodyMutation) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + switch m.Mutation.(type) { + + case *BodyMutation_Body: + if _, ok := target.Mutation.(*BodyMutation_Body); !ok { + return false + } + + if bytes.Compare(m.GetBody(), target.GetBody()) != 0 { + return false + } + + case *BodyMutation_ClearBody: + if _, ok := target.Mutation.(*BodyMutation_ClearBody); !ok { + return false + } + + if m.GetClearBody() != target.GetClearBody() { + return false + } + + default: + // m is nil but target is not nil + if m.Mutation != target.Mutation { + return false + } + } + + return true +} diff --git a/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3/external_processor.pb.go b/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3/external_processor.pb.go new file mode 100644 index 000000000..70831210d --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3/external_processor.pb.go @@ -0,0 +1,1799 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/service/ext_proc/v3/external_processor.proto + +package v3 + +import ( + context "context" + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/envoyproxy/protoc-gen-validate/validate" + _ "github.com/solo-io/protoc-gen-ext/extproto" + _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/annotations" + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + v31 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/ext_proc/v3" + v32 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/v3" + _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + structpb "google.golang.org/protobuf/types/known/structpb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type CommonResponse_ResponseStatus int32 + +const ( + // Apply the mutation instructions in this message to the + // request or response, and then continue processing the filter + // stream as normal. This is the default. + CommonResponse_CONTINUE CommonResponse_ResponseStatus = 0 + // Apply the specified header mutation, replace the body with the body + // specified in the body mutation (if present), and do not send any + // further messages for this request or response even if the processing + // mode is configured to do so. + // + // When used in response to a request_headers or response_headers message, + // this status makes it possible to either completely replace the body + // while discarding the original body, or to add a body to a message that + // formerly did not have one. + // + // In other words, this response makes it possible to turn an HTTP GET + // into a POST, PUT, or PATCH. + CommonResponse_CONTINUE_AND_REPLACE CommonResponse_ResponseStatus = 1 +) + +// Enum value maps for CommonResponse_ResponseStatus. +var ( + CommonResponse_ResponseStatus_name = map[int32]string{ + 0: "CONTINUE", + 1: "CONTINUE_AND_REPLACE", + } + CommonResponse_ResponseStatus_value = map[string]int32{ + "CONTINUE": 0, + "CONTINUE_AND_REPLACE": 1, + } +) + +func (x CommonResponse_ResponseStatus) Enum() *CommonResponse_ResponseStatus { + p := new(CommonResponse_ResponseStatus) + *p = x + return p +} + +func (x CommonResponse_ResponseStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CommonResponse_ResponseStatus) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_enumTypes[0].Descriptor() +} + +func (CommonResponse_ResponseStatus) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_enumTypes[0] +} + +func (x CommonResponse_ResponseStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CommonResponse_ResponseStatus.Descriptor instead. +func (CommonResponse_ResponseStatus) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_rawDescGZIP(), []int{8, 0} +} + +// This represents the different types of messages that Envoy can send +// to an external processing server. +// [#next-free-field: 11] +type ProcessingRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Each request message will include one of the following sub-messages. Which + // ones are set for a particular HTTP request/response depend on the + // processing mode. + // + // Types that are valid to be assigned to Request: + // + // *ProcessingRequest_RequestHeaders + // *ProcessingRequest_ResponseHeaders + // *ProcessingRequest_RequestBody + // *ProcessingRequest_ResponseBody + // *ProcessingRequest_RequestTrailers + // *ProcessingRequest_ResponseTrailers + Request isProcessingRequest_Request `protobuf_oneof:"request"` + // Dynamic metadata associated with the request. + MetadataContext *v3.Metadata `protobuf:"bytes,8,opt,name=metadata_context,json=metadataContext,proto3" json:"metadata_context,omitempty"` + // The values of properties selected by the `request_attributes` + // or `response_attributes` list in the configuration. Each entry + // in the list is populated from the standard + // attributes supported across Envoy. + Attributes map[string]*structpb.Struct `protobuf:"bytes,9,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Specify whether the filter that sent this request is running in :ref:`observability_mode + // ` + // and defaults to false. + // + // - A value of `false` indicates that the server must respond + // to this message by either sending back a matching ProcessingResponse message, + // or by closing the stream. + // - A value of `true` indicates that the server should not respond to this message, as any + // responses will be ignored. However, it may still close the stream to indicate that no more messages + // are needed. + ObservabilityMode bool `protobuf:"varint,10,opt,name=observability_mode,json=observabilityMode,proto3" json:"observability_mode,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ProcessingRequest) Reset() { + *x = ProcessingRequest{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ProcessingRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProcessingRequest) ProtoMessage() {} + +func (x *ProcessingRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProcessingRequest.ProtoReflect.Descriptor instead. +func (*ProcessingRequest) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_rawDescGZIP(), []int{0} +} + +func (x *ProcessingRequest) GetRequest() isProcessingRequest_Request { + if x != nil { + return x.Request + } + return nil +} + +func (x *ProcessingRequest) GetRequestHeaders() *HttpHeaders { + if x != nil { + if x, ok := x.Request.(*ProcessingRequest_RequestHeaders); ok { + return x.RequestHeaders + } + } + return nil +} + +func (x *ProcessingRequest) GetResponseHeaders() *HttpHeaders { + if x != nil { + if x, ok := x.Request.(*ProcessingRequest_ResponseHeaders); ok { + return x.ResponseHeaders + } + } + return nil +} + +func (x *ProcessingRequest) GetRequestBody() *HttpBody { + if x != nil { + if x, ok := x.Request.(*ProcessingRequest_RequestBody); ok { + return x.RequestBody + } + } + return nil +} + +func (x *ProcessingRequest) GetResponseBody() *HttpBody { + if x != nil { + if x, ok := x.Request.(*ProcessingRequest_ResponseBody); ok { + return x.ResponseBody + } + } + return nil +} + +func (x *ProcessingRequest) GetRequestTrailers() *HttpTrailers { + if x != nil { + if x, ok := x.Request.(*ProcessingRequest_RequestTrailers); ok { + return x.RequestTrailers + } + } + return nil +} + +func (x *ProcessingRequest) GetResponseTrailers() *HttpTrailers { + if x != nil { + if x, ok := x.Request.(*ProcessingRequest_ResponseTrailers); ok { + return x.ResponseTrailers + } + } + return nil +} + +func (x *ProcessingRequest) GetMetadataContext() *v3.Metadata { + if x != nil { + return x.MetadataContext + } + return nil +} + +func (x *ProcessingRequest) GetAttributes() map[string]*structpb.Struct { + if x != nil { + return x.Attributes + } + return nil +} + +func (x *ProcessingRequest) GetObservabilityMode() bool { + if x != nil { + return x.ObservabilityMode + } + return false +} + +type isProcessingRequest_Request interface { + isProcessingRequest_Request() +} + +type ProcessingRequest_RequestHeaders struct { + // Information about the HTTP request headers, as well as peer info and additional + // properties. Unless `observability_mode` is `true`, the server must send back a + // HeaderResponse message, an ImmediateResponse message, or close the stream. + RequestHeaders *HttpHeaders `protobuf:"bytes,2,opt,name=request_headers,json=requestHeaders,proto3,oneof"` +} + +type ProcessingRequest_ResponseHeaders struct { + // Information about the HTTP response headers, as well as peer info and additional + // properties. Unless `observability_mode` is `true`, the server must send back a + // HeaderResponse message or close the stream. + ResponseHeaders *HttpHeaders `protobuf:"bytes,3,opt,name=response_headers,json=responseHeaders,proto3,oneof"` +} + +type ProcessingRequest_RequestBody struct { + // A chunk of the HTTP request body. Unless `observability_mode` is true, the server must send back + // a BodyResponse message, an ImmediateResponse message, or close the stream. + RequestBody *HttpBody `protobuf:"bytes,4,opt,name=request_body,json=requestBody,proto3,oneof"` +} + +type ProcessingRequest_ResponseBody struct { + // A chunk of the HTTP response body. Unless `observability_mode` is `true`, the server must send back + // a BodyResponse message or close the stream. + ResponseBody *HttpBody `protobuf:"bytes,5,opt,name=response_body,json=responseBody,proto3,oneof"` +} + +type ProcessingRequest_RequestTrailers struct { + // The HTTP trailers for the request path. Unless `observability_mode` is `true`, the server + // must send back a TrailerResponse message or close the stream. + // + // This message is only sent if the trailers processing mode is set to `SEND` and + // the original downstream request has trailers. + RequestTrailers *HttpTrailers `protobuf:"bytes,6,opt,name=request_trailers,json=requestTrailers,proto3,oneof"` +} + +type ProcessingRequest_ResponseTrailers struct { + // The HTTP trailers for the response path. Unless `observability_mode` is `true`, the server + // must send back a TrailerResponse message or close the stream. + // + // This message is only sent if the trailers processing mode is set to `SEND` and + // the original upstream response has trailers. + ResponseTrailers *HttpTrailers `protobuf:"bytes,7,opt,name=response_trailers,json=responseTrailers,proto3,oneof"` +} + +func (*ProcessingRequest_RequestHeaders) isProcessingRequest_Request() {} + +func (*ProcessingRequest_ResponseHeaders) isProcessingRequest_Request() {} + +func (*ProcessingRequest_RequestBody) isProcessingRequest_Request() {} + +func (*ProcessingRequest_ResponseBody) isProcessingRequest_Request() {} + +func (*ProcessingRequest_RequestTrailers) isProcessingRequest_Request() {} + +func (*ProcessingRequest_ResponseTrailers) isProcessingRequest_Request() {} + +// For every ProcessingRequest received by the server with the `observability_mode` field +// set to false, the server must send back exactly one ProcessingResponse message. +// [#next-free-field: 11] +type ProcessingResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Response: + // + // *ProcessingResponse_RequestHeaders + // *ProcessingResponse_ResponseHeaders + // *ProcessingResponse_RequestBody + // *ProcessingResponse_ResponseBody + // *ProcessingResponse_RequestTrailers + // *ProcessingResponse_ResponseTrailers + // *ProcessingResponse_ImmediateResponse + Response isProcessingResponse_Response `protobuf_oneof:"response"` + // Optional metadata that will be emitted as dynamic metadata to be consumed by + // following filters. This metadata will be placed in the namespace(s) specified by the top-level + // field name(s) of the struct. + DynamicMetadata *structpb.Struct `protobuf:"bytes,8,opt,name=dynamic_metadata,json=dynamicMetadata,proto3" json:"dynamic_metadata,omitempty"` + // Override how parts of the HTTP request and response are processed + // for the duration of this particular request/response only. Servers + // may use this to intelligently control how requests are processed + // based on the headers and other metadata that they see. + // This field is only applicable when servers responding to the header requests. + // If it is set in the response to the body or trailer requests, it will be ignored by Envoy. + // It is also ignored by Envoy when the ext_proc filter config + // :ref:`allow_mode_override + // ` + // is set to false. + ModeOverride *v31.ProcessingMode `protobuf:"bytes,9,opt,name=mode_override,json=modeOverride,proto3" json:"mode_override,omitempty"` + // When ext_proc server receives a request message, in case it needs more + // time to process the message, it sends back a ProcessingResponse message + // with a new timeout value. When Envoy receives this response message, + // it ignores other fields in the response, just stop the original timer, + // which has the timeout value specified in + // :ref:`message_timeout + // ` + // and start a new timer with this `override_message_timeout` value and keep the + // Envoy ext_proc filter state machine intact. + // Has to be >= 1ms and <= + // :ref:`max_message_timeout ` + // Such message can be sent at most once in a particular Envoy ext_proc filter processing state. + // To enable this API, one has to set `max_message_timeout` to a number >= 1ms. + OverrideMessageTimeout *durationpb.Duration `protobuf:"bytes,10,opt,name=override_message_timeout,json=overrideMessageTimeout,proto3" json:"override_message_timeout,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ProcessingResponse) Reset() { + *x = ProcessingResponse{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ProcessingResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProcessingResponse) ProtoMessage() {} + +func (x *ProcessingResponse) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProcessingResponse.ProtoReflect.Descriptor instead. +func (*ProcessingResponse) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_rawDescGZIP(), []int{1} +} + +func (x *ProcessingResponse) GetResponse() isProcessingResponse_Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *ProcessingResponse) GetRequestHeaders() *HeadersResponse { + if x != nil { + if x, ok := x.Response.(*ProcessingResponse_RequestHeaders); ok { + return x.RequestHeaders + } + } + return nil +} + +func (x *ProcessingResponse) GetResponseHeaders() *HeadersResponse { + if x != nil { + if x, ok := x.Response.(*ProcessingResponse_ResponseHeaders); ok { + return x.ResponseHeaders + } + } + return nil +} + +func (x *ProcessingResponse) GetRequestBody() *BodyResponse { + if x != nil { + if x, ok := x.Response.(*ProcessingResponse_RequestBody); ok { + return x.RequestBody + } + } + return nil +} + +func (x *ProcessingResponse) GetResponseBody() *BodyResponse { + if x != nil { + if x, ok := x.Response.(*ProcessingResponse_ResponseBody); ok { + return x.ResponseBody + } + } + return nil +} + +func (x *ProcessingResponse) GetRequestTrailers() *TrailersResponse { + if x != nil { + if x, ok := x.Response.(*ProcessingResponse_RequestTrailers); ok { + return x.RequestTrailers + } + } + return nil +} + +func (x *ProcessingResponse) GetResponseTrailers() *TrailersResponse { + if x != nil { + if x, ok := x.Response.(*ProcessingResponse_ResponseTrailers); ok { + return x.ResponseTrailers + } + } + return nil +} + +func (x *ProcessingResponse) GetImmediateResponse() *ImmediateResponse { + if x != nil { + if x, ok := x.Response.(*ProcessingResponse_ImmediateResponse); ok { + return x.ImmediateResponse + } + } + return nil +} + +func (x *ProcessingResponse) GetDynamicMetadata() *structpb.Struct { + if x != nil { + return x.DynamicMetadata + } + return nil +} + +func (x *ProcessingResponse) GetModeOverride() *v31.ProcessingMode { + if x != nil { + return x.ModeOverride + } + return nil +} + +func (x *ProcessingResponse) GetOverrideMessageTimeout() *durationpb.Duration { + if x != nil { + return x.OverrideMessageTimeout + } + return nil +} + +type isProcessingResponse_Response interface { + isProcessingResponse_Response() +} + +type ProcessingResponse_RequestHeaders struct { + // The server must send back this message in response to a message with the + // `request_headers` field set. + RequestHeaders *HeadersResponse `protobuf:"bytes,1,opt,name=request_headers,json=requestHeaders,proto3,oneof"` +} + +type ProcessingResponse_ResponseHeaders struct { + // The server must send back this message in response to a message with the + // `response_headers` field set. + ResponseHeaders *HeadersResponse `protobuf:"bytes,2,opt,name=response_headers,json=responseHeaders,proto3,oneof"` +} + +type ProcessingResponse_RequestBody struct { + // The server must send back this message in response to a message with + // the `request_body` field set. + RequestBody *BodyResponse `protobuf:"bytes,3,opt,name=request_body,json=requestBody,proto3,oneof"` +} + +type ProcessingResponse_ResponseBody struct { + // The server must send back this message in response to a message with + // the `response_body` field set. + ResponseBody *BodyResponse `protobuf:"bytes,4,opt,name=response_body,json=responseBody,proto3,oneof"` +} + +type ProcessingResponse_RequestTrailers struct { + // The server must send back this message in response to a message with + // the `request_trailers` field set. + RequestTrailers *TrailersResponse `protobuf:"bytes,5,opt,name=request_trailers,json=requestTrailers,proto3,oneof"` +} + +type ProcessingResponse_ResponseTrailers struct { + // The server must send back this message in response to a message with + // the `response_trailers` field set. + ResponseTrailers *TrailersResponse `protobuf:"bytes,6,opt,name=response_trailers,json=responseTrailers,proto3,oneof"` +} + +type ProcessingResponse_ImmediateResponse struct { + // If specified, attempt to create a locally generated response, send it + // downstream, and stop processing additional filters and ignore any + // additional messages received from the remote server for this request or + // response. If a response has already started -- for example, if this + // message is sent response to a `response_body` message -- then + // this will either ship the reply directly to the downstream codec, + // or reset the stream. + ImmediateResponse *ImmediateResponse `protobuf:"bytes,7,opt,name=immediate_response,json=immediateResponse,proto3,oneof"` +} + +func (*ProcessingResponse_RequestHeaders) isProcessingResponse_Response() {} + +func (*ProcessingResponse_ResponseHeaders) isProcessingResponse_Response() {} + +func (*ProcessingResponse_RequestBody) isProcessingResponse_Response() {} + +func (*ProcessingResponse_ResponseBody) isProcessingResponse_Response() {} + +func (*ProcessingResponse_RequestTrailers) isProcessingResponse_Response() {} + +func (*ProcessingResponse_ResponseTrailers) isProcessingResponse_Response() {} + +func (*ProcessingResponse_ImmediateResponse) isProcessingResponse_Response() {} + +// This message is sent to the external server when the HTTP request and responses +// are first received. +type HttpHeaders struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The HTTP request headers. All header keys will be + // lower-cased, because HTTP header keys are case-insensitive. + // The `headers` encoding is based on the runtime guard + // envoy_reloadable_features_send_header_raw_value setting. + // When it is true, the header value is encoded in the + // raw_value field. + // When it is false, the header value is encoded in the + // value field. + Headers *v3.HeaderMap `protobuf:"bytes,1,opt,name=headers,proto3" json:"headers,omitempty"` + // [#not-implemented-hide:] + // This field is deprecated and not implemented. Attributes will be sent in + // the top-level :ref:`attributes ` + // is set to CONTINUE_AND_REPLACE. + BodyMutation *BodyMutation `protobuf:"bytes,3,opt,name=body_mutation,json=bodyMutation,proto3" json:"body_mutation,omitempty"` + // [#not-implemented-hide:] + // Add new trailers to the message. This may be used when responding to either a + // HttpHeaders or HttpBody message, but only if this message is returned + // along with the CONTINUE_AND_REPLACE status. + // The `trailers` encoding is based on the runtime guard + // envoy_reloadable_features_send_header_raw_value setting. + // When it is true, the header value is encoded in the + // raw_value field. + // When it is false, the header value is encoded in the + // value field. + Trailers *v3.HeaderMap `protobuf:"bytes,4,opt,name=trailers,proto3" json:"trailers,omitempty"` + // Clear the route cache for the current client request. This is necessary + // if the remote server modified headers that are used to calculate the route. + // This field is ignored in the response direction. This field is also ignored + // if the Envoy ext_proc filter is in the upstream filter chain. + ClearRouteCache bool `protobuf:"varint,5,opt,name=clear_route_cache,json=clearRouteCache,proto3" json:"clear_route_cache,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CommonResponse) Reset() { + *x = CommonResponse{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CommonResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommonResponse) ProtoMessage() {} + +func (x *CommonResponse) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommonResponse.ProtoReflect.Descriptor instead. +func (*CommonResponse) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_rawDescGZIP(), []int{8} +} + +func (x *CommonResponse) GetStatus() CommonResponse_ResponseStatus { + if x != nil { + return x.Status + } + return CommonResponse_CONTINUE +} + +func (x *CommonResponse) GetHeaderMutation() *HeaderMutation { + if x != nil { + return x.HeaderMutation + } + return nil +} + +func (x *CommonResponse) GetBodyMutation() *BodyMutation { + if x != nil { + return x.BodyMutation + } + return nil +} + +func (x *CommonResponse) GetTrailers() *v3.HeaderMap { + if x != nil { + return x.Trailers + } + return nil +} + +func (x *CommonResponse) GetClearRouteCache() bool { + if x != nil { + return x.ClearRouteCache + } + return false +} + +// This message causes the filter to attempt to create a locally +// generated response, send it downstream, stop processing +// additional filters, and ignore any additional messages received +// from the remote server for this request or response. If a response +// has already started, then this will either ship the reply directly +// to the downstream codec, or reset the stream. +// [#next-free-field: 6] +type ImmediateResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The response code to return + Status *v32.HttpStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + // Apply changes to the default headers, which will include content-type. + Headers *HeaderMutation `protobuf:"bytes,2,opt,name=headers,proto3" json:"headers,omitempty"` + // The message body to return with the response which is sent using the + // text/plain content type, or encoded in the grpc-message header. + Body []byte `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"` + // If set, then include a gRPC status trailer. + GrpcStatus *GrpcStatus `protobuf:"bytes,4,opt,name=grpc_status,json=grpcStatus,proto3" json:"grpc_status,omitempty"` + // A string detailing why this local reply was sent, which may be included + // in log and debug output (e.g. this populates the %RESPONSE_CODE_DETAILS% + // command operator field for use in access logging). + Details string `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ImmediateResponse) Reset() { + *x = ImmediateResponse{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ImmediateResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImmediateResponse) ProtoMessage() {} + +func (x *ImmediateResponse) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ImmediateResponse.ProtoReflect.Descriptor instead. +func (*ImmediateResponse) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_rawDescGZIP(), []int{9} +} + +func (x *ImmediateResponse) GetStatus() *v32.HttpStatus { + if x != nil { + return x.Status + } + return nil +} + +func (x *ImmediateResponse) GetHeaders() *HeaderMutation { + if x != nil { + return x.Headers + } + return nil +} + +func (x *ImmediateResponse) GetBody() []byte { + if x != nil { + return x.Body + } + return nil +} + +func (x *ImmediateResponse) GetGrpcStatus() *GrpcStatus { + if x != nil { + return x.GrpcStatus + } + return nil +} + +func (x *ImmediateResponse) GetDetails() string { + if x != nil { + return x.Details + } + return "" +} + +// This message specifies a gRPC status for an ImmediateResponse message. +type GrpcStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The actual gRPC status + Status uint32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GrpcStatus) Reset() { + *x = GrpcStatus{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GrpcStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GrpcStatus) ProtoMessage() {} + +func (x *GrpcStatus) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GrpcStatus.ProtoReflect.Descriptor instead. +func (*GrpcStatus) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_rawDescGZIP(), []int{10} +} + +func (x *GrpcStatus) GetStatus() uint32 { + if x != nil { + return x.Status + } + return 0 +} + +// Change HTTP headers or trailers by appending, replacing, or removing +// headers. +type HeaderMutation struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Add or replace HTTP headers. Attempts to set the value of + // any `x-envoy` header, and attempts to set the `:method`, + // `:authority`, `:scheme`, or `host` headers will be ignored. + // The `set_headers` encoding is based on the runtime guard + // envoy_reloadable_features_send_header_raw_value setting. + // When it is true, the header value is encoded in the + // raw_value field. + // When it is false, the header value is encoded in the + // value field. + SetHeaders []*v3.HeaderValueOption `protobuf:"bytes,1,rep,name=set_headers,json=setHeaders,proto3" json:"set_headers,omitempty"` + // Remove these HTTP headers. Attempts to remove system headers -- + // any header starting with `:`, plus `host` -- will be ignored. + RemoveHeaders []string `protobuf:"bytes,2,rep,name=remove_headers,json=removeHeaders,proto3" json:"remove_headers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HeaderMutation) Reset() { + *x = HeaderMutation{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HeaderMutation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HeaderMutation) ProtoMessage() {} + +func (x *HeaderMutation) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HeaderMutation.ProtoReflect.Descriptor instead. +func (*HeaderMutation) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_rawDescGZIP(), []int{11} +} + +func (x *HeaderMutation) GetSetHeaders() []*v3.HeaderValueOption { + if x != nil { + return x.SetHeaders + } + return nil +} + +func (x *HeaderMutation) GetRemoveHeaders() []string { + if x != nil { + return x.RemoveHeaders + } + return nil +} + +// Replace the entire message body chunk received in the corresponding +// HttpBody message with this new body, or clear the body. +type BodyMutation struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Mutation: + // + // *BodyMutation_Body + // *BodyMutation_ClearBody + Mutation isBodyMutation_Mutation `protobuf_oneof:"mutation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BodyMutation) Reset() { + *x = BodyMutation{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BodyMutation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BodyMutation) ProtoMessage() {} + +func (x *BodyMutation) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BodyMutation.ProtoReflect.Descriptor instead. +func (*BodyMutation) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_rawDescGZIP(), []int{12} +} + +func (x *BodyMutation) GetMutation() isBodyMutation_Mutation { + if x != nil { + return x.Mutation + } + return nil +} + +func (x *BodyMutation) GetBody() []byte { + if x != nil { + if x, ok := x.Mutation.(*BodyMutation_Body); ok { + return x.Body + } + } + return nil +} + +func (x *BodyMutation) GetClearBody() bool { + if x != nil { + if x, ok := x.Mutation.(*BodyMutation_ClearBody); ok { + return x.ClearBody + } + } + return false +} + +type isBodyMutation_Mutation interface { + isBodyMutation_Mutation() +} + +type BodyMutation_Body struct { + // The entire body to replace + Body []byte `protobuf:"bytes,1,opt,name=body,proto3,oneof"` +} + +type BodyMutation_ClearBody struct { + // Clear the corresponding body chunk + ClearBody bool `protobuf:"varint,2,opt,name=clear_body,json=clearBody,proto3,oneof"` +} + +func (*BodyMutation_Body) isBodyMutation_Mutation() {} + +func (*BodyMutation_ClearBody) isBodyMutation_Mutation() {} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_rawDesc = string([]byte{ + 0x0a, 0x66, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2f, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2f, 0x76, 0x33, 0x2f, + 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, + 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x21, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x1a, 0x53, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, + 0x72, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x73, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x68, + 0x74, 0x74, 0x70, 0x2f, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2f, 0x76, 0x33, 0x2f, + 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x53, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x72, + 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x75, + 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x91, 0x07, 0x0a, 0x11, 0x50, 0x72, + 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x59, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x74, 0x74, + 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x5b, 0x0a, 0x10, 0x72, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x65, 0x78, 0x74, + 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x50, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, + 0x33, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x52, 0x0a, 0x0d, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, + 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x48, 0x00, 0x52, + 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x5c, 0x0a, + 0x10, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, + 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x74, 0x74, 0x70, + 0x54, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x12, 0x5e, 0x0a, 0x11, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x73, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x65, + 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x54, + 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x10, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x10, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0f, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x64, + 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, + 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x11, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, + 0x6f, 0x64, 0x65, 0x1a, 0x56, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0e, 0x0a, 0x07, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x4a, 0x04, 0x08, 0x01, 0x10, + 0x02, 0x52, 0x0a, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0xc1, 0x07, + 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, + 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x12, 0x5f, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, + 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x12, 0x54, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x42, + 0x6f, 0x64, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x56, 0x0a, 0x0d, 0x72, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, + 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x6f, + 0x64, 0x79, 0x12, 0x60, 0x0a, 0x10, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x72, + 0x61, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, + 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x72, 0x61, 0x69, + 0x6c, 0x65, 0x72, 0x73, 0x12, 0x62, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, + 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x10, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x54, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x12, 0x65, 0x0a, 0x12, 0x69, 0x6d, 0x6d, 0x65, + 0x64, 0x69, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x65, 0x78, 0x74, + 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x6d, 0x6d, 0x65, 0x64, 0x69, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x11, 0x69, 0x6d, + 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x42, 0x0a, 0x10, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x52, 0x0f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x66, 0x0a, 0x0d, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x6f, 0x76, 0x65, 0x72, + 0x72, 0x69, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, + 0x74, 0x70, 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x50, + 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x6d, + 0x6f, 0x64, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x53, 0x0a, 0x18, 0x6f, + 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, + 0x64, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x42, 0x0f, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x03, 0xf8, 0x42, + 0x01, 0x22, 0xb9, 0x02, 0x0a, 0x0b, 0x48, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x12, 0x41, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x52, 0x07, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x12, 0x6b, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x74, 0x74, + 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0b, 0x82, 0xc7, 0x89, 0xab, 0x07, 0x03, + 0x33, 0x2e, 0x30, 0x18, 0x01, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x65, 0x6e, 0x64, 0x4f, 0x66, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x1a, 0x56, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x42, 0x0a, + 0x08, 0x48, 0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x22, 0x0a, + 0x0d, 0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x65, 0x6e, 0x64, 0x4f, 0x66, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x22, 0x53, 0x0a, 0x0c, 0x48, 0x74, 0x74, 0x70, 0x54, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, + 0x73, 0x12, 0x43, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x52, 0x08, 0x74, 0x72, + 0x61, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x22, 0x60, 0x0a, 0x0f, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x08, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, + 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6e, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x69, + 0x6c, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0f, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x65, 0x78, + 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5d, 0x0a, 0x0c, 0x42, 0x6f, 0x64, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd1, 0x03, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x40, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x5a, + 0x0a, 0x0f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x0d, 0x62, 0x6f, + 0x64, 0x79, 0x5f, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, + 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0c, 0x62, 0x6f, 0x64, 0x79, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x43, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x52, 0x08, 0x74, 0x72, 0x61, + 0x69, 0x6c, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, + 0x65, 0x22, 0x38, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x55, 0x45, 0x10, + 0x00, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x55, 0x45, 0x5f, 0x41, 0x4e, + 0x44, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x01, 0x22, 0xa3, 0x02, 0x0a, 0x11, + 0x49, 0x6d, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x43, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4b, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x4e, 0x0a, 0x0b, 0x67, 0x72, 0x70, 0x63, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, + 0x2e, 0x47, 0x72, 0x70, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0a, 0x67, 0x72, 0x70, + 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x22, 0x24, 0x0a, 0x0a, 0x47, 0x72, 0x70, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x0e, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x0b, 0x73, 0x65, + 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0a, 0x73, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, + 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x22, 0x51, 0x0a, 0x0c, 0x42, 0x6f, 0x64, 0x79, 0x4d, 0x75, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x1f, 0x0a, 0x0a, 0x63, 0x6c, 0x65, + 0x61, 0x72, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, + 0x09, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x42, 0x6f, 0x64, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x6d, 0x75, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x91, 0x01, 0x0a, 0x11, 0x45, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x12, 0x7c, 0x0a, 0x07, + 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x12, 0x34, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x63, + 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, + 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0xad, 0x01, 0xb8, 0xf5, 0x04, + 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, + 0x02, 0x0a, 0x27, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, + 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x65, + 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x42, 0x16, 0x45, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x54, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x65, + 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_msgTypes = make([]protoimpl.MessageInfo, 15) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_goTypes = []any{ + (CommonResponse_ResponseStatus)(0), // 0: solo.io.envoy.service.ext_proc.v3.CommonResponse.ResponseStatus + (*ProcessingRequest)(nil), // 1: solo.io.envoy.service.ext_proc.v3.ProcessingRequest + (*ProcessingResponse)(nil), // 2: solo.io.envoy.service.ext_proc.v3.ProcessingResponse + (*HttpHeaders)(nil), // 3: solo.io.envoy.service.ext_proc.v3.HttpHeaders + (*HttpBody)(nil), // 4: solo.io.envoy.service.ext_proc.v3.HttpBody + (*HttpTrailers)(nil), // 5: solo.io.envoy.service.ext_proc.v3.HttpTrailers + (*HeadersResponse)(nil), // 6: solo.io.envoy.service.ext_proc.v3.HeadersResponse + (*TrailersResponse)(nil), // 7: solo.io.envoy.service.ext_proc.v3.TrailersResponse + (*BodyResponse)(nil), // 8: solo.io.envoy.service.ext_proc.v3.BodyResponse + (*CommonResponse)(nil), // 9: solo.io.envoy.service.ext_proc.v3.CommonResponse + (*ImmediateResponse)(nil), // 10: solo.io.envoy.service.ext_proc.v3.ImmediateResponse + (*GrpcStatus)(nil), // 11: solo.io.envoy.service.ext_proc.v3.GrpcStatus + (*HeaderMutation)(nil), // 12: solo.io.envoy.service.ext_proc.v3.HeaderMutation + (*BodyMutation)(nil), // 13: solo.io.envoy.service.ext_proc.v3.BodyMutation + nil, // 14: solo.io.envoy.service.ext_proc.v3.ProcessingRequest.AttributesEntry + nil, // 15: solo.io.envoy.service.ext_proc.v3.HttpHeaders.AttributesEntry + (*v3.Metadata)(nil), // 16: solo.io.envoy.config.core.v3.Metadata + (*structpb.Struct)(nil), // 17: google.protobuf.Struct + (*v31.ProcessingMode)(nil), // 18: solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode + (*durationpb.Duration)(nil), // 19: google.protobuf.Duration + (*v3.HeaderMap)(nil), // 20: solo.io.envoy.config.core.v3.HeaderMap + (*v32.HttpStatus)(nil), // 21: solo.io.envoy.type.v3.HttpStatus + (*v3.HeaderValueOption)(nil), // 22: solo.io.envoy.config.core.v3.HeaderValueOption +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_depIdxs = []int32{ + 3, // 0: solo.io.envoy.service.ext_proc.v3.ProcessingRequest.request_headers:type_name -> solo.io.envoy.service.ext_proc.v3.HttpHeaders + 3, // 1: solo.io.envoy.service.ext_proc.v3.ProcessingRequest.response_headers:type_name -> solo.io.envoy.service.ext_proc.v3.HttpHeaders + 4, // 2: solo.io.envoy.service.ext_proc.v3.ProcessingRequest.request_body:type_name -> solo.io.envoy.service.ext_proc.v3.HttpBody + 4, // 3: solo.io.envoy.service.ext_proc.v3.ProcessingRequest.response_body:type_name -> solo.io.envoy.service.ext_proc.v3.HttpBody + 5, // 4: solo.io.envoy.service.ext_proc.v3.ProcessingRequest.request_trailers:type_name -> solo.io.envoy.service.ext_proc.v3.HttpTrailers + 5, // 5: solo.io.envoy.service.ext_proc.v3.ProcessingRequest.response_trailers:type_name -> solo.io.envoy.service.ext_proc.v3.HttpTrailers + 16, // 6: solo.io.envoy.service.ext_proc.v3.ProcessingRequest.metadata_context:type_name -> solo.io.envoy.config.core.v3.Metadata + 14, // 7: solo.io.envoy.service.ext_proc.v3.ProcessingRequest.attributes:type_name -> solo.io.envoy.service.ext_proc.v3.ProcessingRequest.AttributesEntry + 6, // 8: solo.io.envoy.service.ext_proc.v3.ProcessingResponse.request_headers:type_name -> solo.io.envoy.service.ext_proc.v3.HeadersResponse + 6, // 9: solo.io.envoy.service.ext_proc.v3.ProcessingResponse.response_headers:type_name -> solo.io.envoy.service.ext_proc.v3.HeadersResponse + 8, // 10: solo.io.envoy.service.ext_proc.v3.ProcessingResponse.request_body:type_name -> solo.io.envoy.service.ext_proc.v3.BodyResponse + 8, // 11: solo.io.envoy.service.ext_proc.v3.ProcessingResponse.response_body:type_name -> solo.io.envoy.service.ext_proc.v3.BodyResponse + 7, // 12: solo.io.envoy.service.ext_proc.v3.ProcessingResponse.request_trailers:type_name -> solo.io.envoy.service.ext_proc.v3.TrailersResponse + 7, // 13: solo.io.envoy.service.ext_proc.v3.ProcessingResponse.response_trailers:type_name -> solo.io.envoy.service.ext_proc.v3.TrailersResponse + 10, // 14: solo.io.envoy.service.ext_proc.v3.ProcessingResponse.immediate_response:type_name -> solo.io.envoy.service.ext_proc.v3.ImmediateResponse + 17, // 15: solo.io.envoy.service.ext_proc.v3.ProcessingResponse.dynamic_metadata:type_name -> google.protobuf.Struct + 18, // 16: solo.io.envoy.service.ext_proc.v3.ProcessingResponse.mode_override:type_name -> solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode + 19, // 17: solo.io.envoy.service.ext_proc.v3.ProcessingResponse.override_message_timeout:type_name -> google.protobuf.Duration + 20, // 18: solo.io.envoy.service.ext_proc.v3.HttpHeaders.headers:type_name -> solo.io.envoy.config.core.v3.HeaderMap + 15, // 19: solo.io.envoy.service.ext_proc.v3.HttpHeaders.attributes:type_name -> solo.io.envoy.service.ext_proc.v3.HttpHeaders.AttributesEntry + 20, // 20: solo.io.envoy.service.ext_proc.v3.HttpTrailers.trailers:type_name -> solo.io.envoy.config.core.v3.HeaderMap + 9, // 21: solo.io.envoy.service.ext_proc.v3.HeadersResponse.response:type_name -> solo.io.envoy.service.ext_proc.v3.CommonResponse + 12, // 22: solo.io.envoy.service.ext_proc.v3.TrailersResponse.header_mutation:type_name -> solo.io.envoy.service.ext_proc.v3.HeaderMutation + 9, // 23: solo.io.envoy.service.ext_proc.v3.BodyResponse.response:type_name -> solo.io.envoy.service.ext_proc.v3.CommonResponse + 0, // 24: solo.io.envoy.service.ext_proc.v3.CommonResponse.status:type_name -> solo.io.envoy.service.ext_proc.v3.CommonResponse.ResponseStatus + 12, // 25: solo.io.envoy.service.ext_proc.v3.CommonResponse.header_mutation:type_name -> solo.io.envoy.service.ext_proc.v3.HeaderMutation + 13, // 26: solo.io.envoy.service.ext_proc.v3.CommonResponse.body_mutation:type_name -> solo.io.envoy.service.ext_proc.v3.BodyMutation + 20, // 27: solo.io.envoy.service.ext_proc.v3.CommonResponse.trailers:type_name -> solo.io.envoy.config.core.v3.HeaderMap + 21, // 28: solo.io.envoy.service.ext_proc.v3.ImmediateResponse.status:type_name -> solo.io.envoy.type.v3.HttpStatus + 12, // 29: solo.io.envoy.service.ext_proc.v3.ImmediateResponse.headers:type_name -> solo.io.envoy.service.ext_proc.v3.HeaderMutation + 11, // 30: solo.io.envoy.service.ext_proc.v3.ImmediateResponse.grpc_status:type_name -> solo.io.envoy.service.ext_proc.v3.GrpcStatus + 22, // 31: solo.io.envoy.service.ext_proc.v3.HeaderMutation.set_headers:type_name -> solo.io.envoy.config.core.v3.HeaderValueOption + 17, // 32: solo.io.envoy.service.ext_proc.v3.ProcessingRequest.AttributesEntry.value:type_name -> google.protobuf.Struct + 17, // 33: solo.io.envoy.service.ext_proc.v3.HttpHeaders.AttributesEntry.value:type_name -> google.protobuf.Struct + 1, // 34: solo.io.envoy.service.ext_proc.v3.ExternalProcessor.Process:input_type -> solo.io.envoy.service.ext_proc.v3.ProcessingRequest + 2, // 35: solo.io.envoy.service.ext_proc.v3.ExternalProcessor.Process:output_type -> solo.io.envoy.service.ext_proc.v3.ProcessingResponse + 35, // [35:36] is the sub-list for method output_type + 34, // [34:35] is the sub-list for method input_type + 34, // [34:34] is the sub-list for extension type_name + 34, // [34:34] is the sub-list for extension extendee + 0, // [0:34] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[0].OneofWrappers = []any{ + (*ProcessingRequest_RequestHeaders)(nil), + (*ProcessingRequest_ResponseHeaders)(nil), + (*ProcessingRequest_RequestBody)(nil), + (*ProcessingRequest_ResponseBody)(nil), + (*ProcessingRequest_RequestTrailers)(nil), + (*ProcessingRequest_ResponseTrailers)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[1].OneofWrappers = []any{ + (*ProcessingResponse_RequestHeaders)(nil), + (*ProcessingResponse_ResponseHeaders)(nil), + (*ProcessingResponse_RequestBody)(nil), + (*ProcessingResponse_ResponseBody)(nil), + (*ProcessingResponse_RequestTrailers)(nil), + (*ProcessingResponse_ResponseTrailers)(nil), + (*ProcessingResponse_ImmediateResponse)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[12].OneofWrappers = []any{ + (*BodyMutation_Body)(nil), + (*BodyMutation_ClearBody)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_rawDesc)), + NumEnums: 1, + NumMessages: 15, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_enumTypes, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_service_ext_proc_v3_external_processor_proto_depIdxs = nil +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConnInterface + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion6 + +// ExternalProcessorClient is the client API for ExternalProcessor service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type ExternalProcessorClient interface { + // This begins the bidirectional stream that Envoy will use to + // give the server control over what the filter does. The actual + // protocol is described by the ProcessingRequest and ProcessingResponse + // messages below. + Process(ctx context.Context, opts ...grpc.CallOption) (ExternalProcessor_ProcessClient, error) +} + +type externalProcessorClient struct { + cc grpc.ClientConnInterface +} + +func NewExternalProcessorClient(cc grpc.ClientConnInterface) ExternalProcessorClient { + return &externalProcessorClient{cc} +} + +func (c *externalProcessorClient) Process(ctx context.Context, opts ...grpc.CallOption) (ExternalProcessor_ProcessClient, error) { + stream, err := c.cc.NewStream(ctx, &_ExternalProcessor_serviceDesc.Streams[0], "/solo.io.envoy.service.ext_proc.v3.ExternalProcessor/Process", opts...) + if err != nil { + return nil, err + } + x := &externalProcessorProcessClient{stream} + return x, nil +} + +type ExternalProcessor_ProcessClient interface { + Send(*ProcessingRequest) error + Recv() (*ProcessingResponse, error) + grpc.ClientStream +} + +type externalProcessorProcessClient struct { + grpc.ClientStream +} + +func (x *externalProcessorProcessClient) Send(m *ProcessingRequest) error { + return x.ClientStream.SendMsg(m) +} + +func (x *externalProcessorProcessClient) Recv() (*ProcessingResponse, error) { + m := new(ProcessingResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +// ExternalProcessorServer is the server API for ExternalProcessor service. +type ExternalProcessorServer interface { + // This begins the bidirectional stream that Envoy will use to + // give the server control over what the filter does. The actual + // protocol is described by the ProcessingRequest and ProcessingResponse + // messages below. + Process(ExternalProcessor_ProcessServer) error +} + +// UnimplementedExternalProcessorServer can be embedded to have forward compatible implementations. +type UnimplementedExternalProcessorServer struct { +} + +func (*UnimplementedExternalProcessorServer) Process(ExternalProcessor_ProcessServer) error { + return status.Errorf(codes.Unimplemented, "method Process not implemented") +} + +func RegisterExternalProcessorServer(s *grpc.Server, srv ExternalProcessorServer) { + s.RegisterService(&_ExternalProcessor_serviceDesc, srv) +} + +func _ExternalProcessor_Process_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(ExternalProcessorServer).Process(&externalProcessorProcessServer{stream}) +} + +type ExternalProcessor_ProcessServer interface { + Send(*ProcessingResponse) error + Recv() (*ProcessingRequest, error) + grpc.ServerStream +} + +type externalProcessorProcessServer struct { + grpc.ServerStream +} + +func (x *externalProcessorProcessServer) Send(m *ProcessingResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *externalProcessorProcessServer) Recv() (*ProcessingRequest, error) { + m := new(ProcessingRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +var _ExternalProcessor_serviceDesc = grpc.ServiceDesc{ + ServiceName: "solo.io.envoy.service.ext_proc.v3.ExternalProcessor", + HandlerType: (*ExternalProcessorServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{ + { + StreamName: "Process", + Handler: _ExternalProcessor_Process_Handler, + ServerStreams: true, + ClientStreams: true, + }, + }, + Metadata: "github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/service/ext_proc/v3/external_processor.proto", +} diff --git a/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3/external_processor.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3/external_processor.pb.hash.go new file mode 100644 index 000000000..7cb660d38 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3/external_processor.pb.hash.go @@ -0,0 +1,1049 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/service/ext_proc/v3/external_processor.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ProcessingRequest) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.ProcessingRequest")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMetadataContext()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MetadataContext")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadataContext(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MetadataContext")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetAttributes() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetObservabilityMode()) + if err != nil { + return 0, err + } + + switch m.Request.(type) { + + case *ProcessingRequest_RequestHeaders: + + if h, ok := interface{}(m.GetRequestHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestHeaders")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProcessingRequest_ResponseHeaders: + + if h, ok := interface{}(m.GetResponseHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseHeaders")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProcessingRequest_RequestBody: + + if h, ok := interface{}(m.GetRequestBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestBody")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestBody")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProcessingRequest_ResponseBody: + + if h, ok := interface{}(m.GetResponseBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseBody")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseBody")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProcessingRequest_RequestTrailers: + + if h, ok := interface{}(m.GetRequestTrailers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTrailers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestTrailers(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestTrailers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProcessingRequest_ResponseTrailers: + + if h, ok := interface{}(m.GetResponseTrailers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseTrailers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseTrailers(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseTrailers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ProcessingResponse) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.ProcessingResponse")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDynamicMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DynamicMetadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDynamicMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DynamicMetadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetModeOverride()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ModeOverride")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetModeOverride(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ModeOverride")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetOverrideMessageTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OverrideMessageTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOverrideMessageTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OverrideMessageTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.Response.(type) { + + case *ProcessingResponse_RequestHeaders: + + if h, ok := interface{}(m.GetRequestHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestHeaders")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProcessingResponse_ResponseHeaders: + + if h, ok := interface{}(m.GetResponseHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseHeaders")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProcessingResponse_RequestBody: + + if h, ok := interface{}(m.GetRequestBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestBody")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestBody")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProcessingResponse_ResponseBody: + + if h, ok := interface{}(m.GetResponseBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseBody")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseBody")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProcessingResponse_RequestTrailers: + + if h, ok := interface{}(m.GetRequestTrailers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTrailers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestTrailers(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestTrailers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProcessingResponse_ResponseTrailers: + + if h, ok := interface{}(m.GetResponseTrailers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseTrailers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseTrailers(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseTrailers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProcessingResponse_ImmediateResponse: + + if h, ok := interface{}(m.GetImmediateResponse()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ImmediateResponse")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetImmediateResponse(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ImmediateResponse")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HttpHeaders) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.HttpHeaders")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetAttributes() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetEndOfStream()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HttpBody) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.HttpBody")); err != nil { + return 0, err + } + + if _, err = hasher.Write(m.GetBody()); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetEndOfStream()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HttpTrailers) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.HttpTrailers")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTrailers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Trailers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTrailers(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Trailers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HeadersResponse) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.HeadersResponse")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetResponse()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Response")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponse(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Response")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *TrailersResponse) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.TrailersResponse")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHeaderMutation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderMutation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaderMutation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HeaderMutation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *BodyResponse) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.BodyResponse")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetResponse()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Response")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponse(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Response")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *CommonResponse) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.CommonResponse")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetStatus()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHeaderMutation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderMutation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaderMutation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HeaderMutation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetBodyMutation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BodyMutation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBodyMutation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BodyMutation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTrailers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Trailers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTrailers(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Trailers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetClearRouteCache()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ImmediateResponse) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.ImmediateResponse")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Status")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStatus(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Status")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write(m.GetBody()); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetGrpcStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcStatus")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcStatus(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcStatus")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetDetails())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *GrpcStatus) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.GrpcStatus")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetStatus()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HeaderMutation) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.HeaderMutation")); err != nil { + return 0, err + } + + for _, v := range m.GetSetHeaders() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + for _, v := range m.GetRemoveHeaders() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *BodyMutation) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.BodyMutation")); err != nil { + return 0, err + } + + switch m.Mutation.(type) { + + case *BodyMutation_Body: + + if _, err = hasher.Write(m.GetBody()); err != nil { + return 0, err + } + + case *BodyMutation_ClearBody: + + err = binary.Write(hasher, binary.LittleEndian, m.GetClearBody()) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3/external_processor.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3/external_processor.pb.uniquehash.go new file mode 100644 index 000000000..c171a6d87 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3/external_processor.pb.uniquehash.go @@ -0,0 +1,1092 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/service/ext_proc/v3/external_processor.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ProcessingRequest) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.ProcessingRequest")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMetadataContext()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MetadataContext")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadataContext(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MetadataContext")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetAttributes() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("ObservabilityMode")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetObservabilityMode()) + if err != nil { + return 0, err + } + + switch m.Request.(type) { + + case *ProcessingRequest_RequestHeaders: + + if h, ok := interface{}(m.GetRequestHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestHeaders")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProcessingRequest_ResponseHeaders: + + if h, ok := interface{}(m.GetResponseHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseHeaders")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProcessingRequest_RequestBody: + + if h, ok := interface{}(m.GetRequestBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestBody")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestBody")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProcessingRequest_ResponseBody: + + if h, ok := interface{}(m.GetResponseBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseBody")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseBody")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProcessingRequest_RequestTrailers: + + if h, ok := interface{}(m.GetRequestTrailers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTrailers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestTrailers(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestTrailers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProcessingRequest_ResponseTrailers: + + if h, ok := interface{}(m.GetResponseTrailers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseTrailers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseTrailers(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseTrailers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ProcessingResponse) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.ProcessingResponse")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDynamicMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DynamicMetadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDynamicMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DynamicMetadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetModeOverride()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ModeOverride")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetModeOverride(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ModeOverride")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetOverrideMessageTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OverrideMessageTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOverrideMessageTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OverrideMessageTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.Response.(type) { + + case *ProcessingResponse_RequestHeaders: + + if h, ok := interface{}(m.GetRequestHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestHeaders")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProcessingResponse_ResponseHeaders: + + if h, ok := interface{}(m.GetResponseHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseHeaders")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProcessingResponse_RequestBody: + + if h, ok := interface{}(m.GetRequestBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestBody")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestBody")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProcessingResponse_ResponseBody: + + if h, ok := interface{}(m.GetResponseBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseBody")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseBody")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProcessingResponse_RequestTrailers: + + if h, ok := interface{}(m.GetRequestTrailers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTrailers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestTrailers(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestTrailers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProcessingResponse_ResponseTrailers: + + if h, ok := interface{}(m.GetResponseTrailers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseTrailers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseTrailers(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseTrailers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProcessingResponse_ImmediateResponse: + + if h, ok := interface{}(m.GetImmediateResponse()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ImmediateResponse")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetImmediateResponse(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ImmediateResponse")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HttpHeaders) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.HttpHeaders")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetAttributes() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("EndOfStream")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetEndOfStream()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HttpBody) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.HttpBody")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if _, err = hasher.Write(m.GetBody()); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("EndOfStream")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetEndOfStream()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HttpTrailers) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.HttpTrailers")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTrailers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Trailers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTrailers(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Trailers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HeadersResponse) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.HeadersResponse")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetResponse()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Response")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponse(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Response")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TrailersResponse) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.TrailersResponse")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHeaderMutation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderMutation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaderMutation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HeaderMutation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *BodyResponse) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.BodyResponse")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetResponse()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Response")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponse(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Response")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *CommonResponse) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.CommonResponse")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Status")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetStatus()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHeaderMutation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderMutation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaderMutation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HeaderMutation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetBodyMutation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BodyMutation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBodyMutation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BodyMutation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTrailers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Trailers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTrailers(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Trailers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("ClearRouteCache")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetClearRouteCache()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ImmediateResponse) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.ImmediateResponse")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Status")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStatus(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Status")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if _, err = hasher.Write(m.GetBody()); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetGrpcStatus()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcStatus")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcStatus(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcStatus")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDetails())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.GrpcStatus")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Status")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetStatus()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HeaderMutation) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.HeaderMutation")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SetHeaders")); err != nil { + return 0, err + } + for i, v := range m.GetSetHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("RemoveHeaders")); err != nil { + return 0, err + } + for i, v := range m.GetRemoveHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *BodyMutation) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.service.ext_proc.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3.BodyMutation")); err != nil { + return 0, err + } + + switch m.Mutation.(type) { + + case *BodyMutation_Body: + + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if _, err = hasher.Write(m.GetBody()); err != nil { + return 0, err + } + + case *BodyMutation_ClearBody: + + if _, err = hasher.Write([]byte("ClearBody")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetClearBody()) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/regex.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/regex.pb.clone.go new file mode 100644 index 000000000..70df92fa8 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/regex.pb.clone.go @@ -0,0 +1,93 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/matcher/v3/regex.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *RegexMatcher) Clone() proto.Message { + var target *RegexMatcher + if m == nil { + return target + } + target = &RegexMatcher{} + + target.Regex = m.GetRegex() + + switch m.EngineType.(type) { + + case *RegexMatcher_GoogleRe2: + + if h, ok := interface{}(m.GetGoogleRe2()).(clone.Cloner); ok { + target.EngineType = &RegexMatcher_GoogleRe2{ + GoogleRe2: h.Clone().(*RegexMatcher_GoogleRE2), + } + } else { + target.EngineType = &RegexMatcher_GoogleRe2{ + GoogleRe2: proto.Clone(m.GetGoogleRe2()).(*RegexMatcher_GoogleRE2), + } + } + + } + + return target +} + +// Clone function +func (m *RegexMatchAndSubstitute) Clone() proto.Message { + var target *RegexMatchAndSubstitute + if m == nil { + return target + } + target = &RegexMatchAndSubstitute{} + + if h, ok := interface{}(m.GetPattern()).(clone.Cloner); ok { + target.Pattern = h.Clone().(*RegexMatcher) + } else { + target.Pattern = proto.Clone(m.GetPattern()).(*RegexMatcher) + } + + target.Substitution = m.GetSubstitution() + + return target +} + +// Clone function +func (m *RegexMatcher_GoogleRE2) Clone() proto.Message { + var target *RegexMatcher_GoogleRE2 + if m == nil { + return target + } + target = &RegexMatcher_GoogleRE2{} + + if h, ok := interface{}(m.GetMaxProgramSize()).(clone.Cloner); ok { + target.MaxProgramSize = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxProgramSize = proto.Clone(m.GetMaxProgramSize()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/regex.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/regex.pb.equal.go index 936ad0eec..3b5167db4 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/regex.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/regex.pb.equal.go @@ -53,6 +53,9 @@ func (m *RegexMatcher) Equal(that interface{}) bool { switch m.EngineType.(type) { case *RegexMatcher_GoogleRe2: + if _, ok := target.EngineType.(*RegexMatcher_GoogleRe2); !ok { + return false + } if h, ok := interface{}(m.GetGoogleRe2()).(equality.Equalizer); ok { if !h.Equal(target.GetGoogleRe2()) { @@ -64,6 +67,11 @@ func (m *RegexMatcher) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.EngineType != target.EngineType { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/regex.pb.go b/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/regex.pb.go index 678be8976..0ab6b9543 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/regex.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/regex.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/matcher/v3/regex.proto @@ -9,14 +9,14 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -26,30 +26,24 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // A regex matcher designed for safety when used with untrusted input. type RegexMatcher struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to EngineType: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to EngineType: + // // *RegexMatcher_GoogleRe2 EngineType isRegexMatcher_EngineType `protobuf_oneof:"engine_type"` // The regex match string. The string must be supported by the configured engine. - Regex string `protobuf:"bytes,2,opt,name=regex,proto3" json:"regex,omitempty"` + Regex string `protobuf:"bytes,2,opt,name=regex,proto3" json:"regex,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RegexMatcher) Reset() { *x = RegexMatcher{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RegexMatcher) String() string { @@ -60,7 +54,7 @@ func (*RegexMatcher) ProtoMessage() {} func (x *RegexMatcher) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -75,16 +69,18 @@ func (*RegexMatcher) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_rawDescGZIP(), []int{0} } -func (m *RegexMatcher) GetEngineType() isRegexMatcher_EngineType { - if m != nil { - return m.EngineType +func (x *RegexMatcher) GetEngineType() isRegexMatcher_EngineType { + if x != nil { + return x.EngineType } return nil } func (x *RegexMatcher) GetGoogleRe2() *RegexMatcher_GoogleRE2 { - if x, ok := x.GetEngineType().(*RegexMatcher_GoogleRe2); ok { - return x.GoogleRe2 + if x != nil { + if x, ok := x.EngineType.(*RegexMatcher_GoogleRe2); ok { + return x.GoogleRe2 + } } return nil } @@ -110,10 +106,7 @@ func (*RegexMatcher_GoogleRe2) isRegexMatcher_EngineType() {} // Describes how to match a string and then produce a new string using a regular // expression and a substitution string. type RegexMatchAndSubstitute struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The regular expression used to find portions of a string (hereafter called // the "subject string") that should be replaced. When a new string is // produced during the substitution operation, the new string is initially @@ -128,21 +121,20 @@ type RegexMatchAndSubstitute struct { // subject string during a substitution operation to produce a new string. // Capture groups in the pattern can be referenced in the substitution // string. Note, however, that the syntax for referring to capture groups is - // defined by the chosen regular expression engine. Google's `RE2 - // `_ regular expression engine uses a + // defined by the chosen regular expression engine. Google's [RE2](https://github.com/google/re2) regular expression engine uses a // backslash followed by the capture group number to denote a numbered - // capture group. E.g., ``\1`` refers to capture group 1, and ``\2`` refers + // capture group. E.g., `\1` refers to capture group 1, and `\2` refers // to capture group 2. - Substitution string `protobuf:"bytes,2,opt,name=substitution,proto3" json:"substitution,omitempty"` + Substitution string `protobuf:"bytes,2,opt,name=substitution,proto3" json:"substitution,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RegexMatchAndSubstitute) Reset() { *x = RegexMatchAndSubstitute{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RegexMatchAndSubstitute) String() string { @@ -153,7 +145,7 @@ func (*RegexMatchAndSubstitute) ProtoMessage() {} func (x *RegexMatchAndSubstitute) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -182,8 +174,8 @@ func (x *RegexMatchAndSubstitute) GetSubstitution() string { return "" } -// Google's `RE2 `_ regex engine. The regex string must adhere to -// the documented `syntax `_. The engine is designed +// Google's [RE2](https://github.com/google/re2) regex engine. The regex string must adhere to +// the documented [syntax](https://github.com/google/re2/wiki/Syntax). The engine is designed // to complete execution in linear time as well as limit the amount of memory used. // // Envoy supports program size checking via runtime. The runtime keys `re2.max_program_size.error_level` @@ -196,10 +188,7 @@ func (x *RegexMatchAndSubstitute) GetSubstitution() string { // which records the program size, and the counter `re2.exceeded_warn_level`, which is incremented // each time the program size exceeds the warn level threshold. type RegexMatcher_GoogleRE2 struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // This field controls the RE2 "program size" which is a rough estimate of how complex a // compiled regex is to evaluate. A regex that has a program size greater than the configured // value will fail to compile. In this case, the configured max program size can be increased @@ -208,17 +197,17 @@ type RegexMatcher_GoogleRE2 struct { // This field is deprecated; regexp validation should be performed on the management server // instead of being done by each individual client. // - // Deprecated: Do not use. - MaxProgramSize *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=max_program_size,json=maxProgramSize,proto3" json:"max_program_size,omitempty"` + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/matcher/v3/regex.proto. + MaxProgramSize *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=max_program_size,json=maxProgramSize,proto3" json:"max_program_size,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RegexMatcher_GoogleRE2) Reset() { *x = RegexMatcher_GoogleRE2{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RegexMatcher_GoogleRE2) String() string { @@ -229,7 +218,7 @@ func (*RegexMatcher_GoogleRE2) ProtoMessage() {} func (x *RegexMatcher_GoogleRE2) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -244,8 +233,8 @@ func (*RegexMatcher_GoogleRE2) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_rawDescGZIP(), []int{0, 0} } -// Deprecated: Do not use. -func (x *RegexMatcher_GoogleRE2) GetMaxProgramSize() *wrappers.UInt32Value { +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/matcher/v3/regex.proto. +func (x *RegexMatcher_GoogleRE2) GetMaxProgramSize() *wrapperspb.UInt32Value { if x != nil { return x.MaxProgramSize } @@ -254,7 +243,7 @@ func (x *RegexMatcher_GoogleRE2) GetMaxProgramSize() *wrappers.UInt32Value { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_rawDesc = string([]byte{ 0x0a, 0x55, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -305,37 +294,38 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_ 0x6f, 0x6e, 0x3a, 0x32, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x2c, 0x0a, 0x2a, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x6e, 0x64, 0x53, 0x75, 0x62, 0x73, - 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, 0x42, 0x9d, 0x01, 0x0a, 0x2b, 0x69, 0x6f, 0x2e, 0x65, 0x6e, - 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, - 0x68, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x42, 0x0a, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, - 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x6d, 0x61, 0x74, 0x63, - 0x68, 0x65, 0x72, 0x2f, 0x76, 0x33, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0xb8, 0xf5, - 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, 0x42, 0xa1, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, + 0x01, 0xd0, 0xf5, 0x04, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x2b, 0x69, + 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x42, 0x0a, 0x52, 0x65, 0x67, 0x65, + 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_goTypes = []any{ (*RegexMatcher)(nil), // 0: solo.io.envoy.type.matcher.v3.RegexMatcher (*RegexMatchAndSubstitute)(nil), // 1: solo.io.envoy.type.matcher.v3.RegexMatchAndSubstitute (*RegexMatcher_GoogleRE2)(nil), // 2: solo.io.envoy.type.matcher.v3.RegexMatcher.GoogleRE2 - (*wrappers.UInt32Value)(nil), // 3: google.protobuf.UInt32Value + (*wrapperspb.UInt32Value)(nil), // 3: google.protobuf.UInt32Value } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_depIdxs = []int32{ 2, // 0: solo.io.envoy.type.matcher.v3.RegexMatcher.google_re2:type_name -> solo.io.envoy.type.matcher.v3.RegexMatcher.GoogleRE2 @@ -355,52 +345,14 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RegexMatcher); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RegexMatchAndSubstitute); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RegexMatcher_GoogleRE2); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_msgTypes[0].OneofWrappers = []any{ (*RegexMatcher_GoogleRe2)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_rawDesc)), NumEnums: 0, NumMessages: 3, NumExtensions: 0, @@ -411,7 +363,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/regex.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/regex.pb.hash.go index af17dd6dd..76fe9982f 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/regex.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/regex.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RegexMatcher) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -47,14 +51,20 @@ func (m *RegexMatcher) Hash(hasher hash.Hash64) (uint64, error) { case *RegexMatcher_GoogleRe2: if h, ok := interface{}(m.GetGoogleRe2()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GoogleRe2")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetGoogleRe2(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetGoogleRe2(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("GoogleRe2")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -66,6 +76,10 @@ func (m *RegexMatcher) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RegexMatchAndSubstitute) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -79,14 +93,20 @@ func (m *RegexMatchAndSubstitute) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetPattern()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Pattern")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPattern(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPattern(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Pattern")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -100,6 +120,10 @@ func (m *RegexMatchAndSubstitute) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RegexMatcher_GoogleRE2) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -113,14 +137,20 @@ func (m *RegexMatcher_GoogleRE2) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetMaxProgramSize()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxProgramSize")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMaxProgramSize(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMaxProgramSize(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MaxProgramSize")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/regex.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/regex.pb.uniquehash.go new file mode 100644 index 000000000..7247bbd59 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/regex.pb.uniquehash.go @@ -0,0 +1,165 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/matcher/v3/regex.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RegexMatcher) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.matcher.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3.RegexMatcher")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Regex")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRegex())); err != nil { + return 0, err + } + + switch m.EngineType.(type) { + + case *RegexMatcher_GoogleRe2: + + if h, ok := interface{}(m.GetGoogleRe2()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GoogleRe2")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGoogleRe2(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GoogleRe2")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RegexMatchAndSubstitute) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.matcher.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3.RegexMatchAndSubstitute")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPattern()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Pattern")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPattern(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Pattern")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Substitution")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSubstitution())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RegexMatcher_GoogleRE2) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.matcher.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3.RegexMatcher_GoogleRE2")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxProgramSize()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxProgramSize")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxProgramSize(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxProgramSize")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/string.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/string.pb.clone.go new file mode 100644 index 000000000..024cb907c --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/string.pb.clone.go @@ -0,0 +1,97 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/matcher/v3/string.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *StringMatcher) Clone() proto.Message { + var target *StringMatcher + if m == nil { + return target + } + target = &StringMatcher{} + + target.IgnoreCase = m.GetIgnoreCase() + + switch m.MatchPattern.(type) { + + case *StringMatcher_Exact: + + target.MatchPattern = &StringMatcher_Exact{ + Exact: m.GetExact(), + } + + case *StringMatcher_Prefix: + + target.MatchPattern = &StringMatcher_Prefix{ + Prefix: m.GetPrefix(), + } + + case *StringMatcher_Suffix: + + target.MatchPattern = &StringMatcher_Suffix{ + Suffix: m.GetSuffix(), + } + + case *StringMatcher_SafeRegex: + + if h, ok := interface{}(m.GetSafeRegex()).(clone.Cloner); ok { + target.MatchPattern = &StringMatcher_SafeRegex{ + SafeRegex: h.Clone().(*RegexMatcher), + } + } else { + target.MatchPattern = &StringMatcher_SafeRegex{ + SafeRegex: proto.Clone(m.GetSafeRegex()).(*RegexMatcher), + } + } + + } + + return target +} + +// Clone function +func (m *ListStringMatcher) Clone() proto.Message { + var target *ListStringMatcher + if m == nil { + return target + } + target = &ListStringMatcher{} + + if m.GetPatterns() != nil { + target.Patterns = make([]*StringMatcher, len(m.GetPatterns())) + for idx, v := range m.GetPatterns() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Patterns[idx] = h.Clone().(*StringMatcher) + } else { + target.Patterns[idx] = proto.Clone(v).(*StringMatcher) + } + + } + } + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/string.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/string.pb.equal.go index 572458764..bca8a09c3 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/string.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/string.pb.equal.go @@ -53,24 +53,36 @@ func (m *StringMatcher) Equal(that interface{}) bool { switch m.MatchPattern.(type) { case *StringMatcher_Exact: + if _, ok := target.MatchPattern.(*StringMatcher_Exact); !ok { + return false + } if strings.Compare(m.GetExact(), target.GetExact()) != 0 { return false } case *StringMatcher_Prefix: + if _, ok := target.MatchPattern.(*StringMatcher_Prefix); !ok { + return false + } if strings.Compare(m.GetPrefix(), target.GetPrefix()) != 0 { return false } case *StringMatcher_Suffix: + if _, ok := target.MatchPattern.(*StringMatcher_Suffix); !ok { + return false + } if strings.Compare(m.GetSuffix(), target.GetSuffix()) != 0 { return false } case *StringMatcher_SafeRegex: + if _, ok := target.MatchPattern.(*StringMatcher_SafeRegex); !ok { + return false + } if h, ok := interface{}(m.GetSafeRegex()).(equality.Equalizer); ok { if !h.Equal(target.GetSafeRegex()) { @@ -82,6 +94,11 @@ func (m *StringMatcher) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.MatchPattern != target.MatchPattern { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/string.pb.go b/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/string.pb.go index f23d8bbcd..062be2004 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/string.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/string.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/matcher/v3/string.proto @@ -9,9 +9,9 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/annotations" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" @@ -26,18 +26,12 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Specifies the way to match a string. // [#next-free-field: 7] type StringMatcher struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to MatchPattern: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to MatchPattern: + // // *StringMatcher_Exact // *StringMatcher_Prefix // *StringMatcher_Suffix @@ -46,16 +40,16 @@ type StringMatcher struct { // If true, indicates the exact/prefix/suffix matching should be case insensitive. This has no // effect for the safe_regex match. // For example, the matcher *data* will match both input string *Data* and *data* if set to true. - IgnoreCase bool `protobuf:"varint,6,opt,name=ignore_case,json=ignoreCase,proto3" json:"ignore_case,omitempty"` + IgnoreCase bool `protobuf:"varint,6,opt,name=ignore_case,json=ignoreCase,proto3" json:"ignore_case,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StringMatcher) Reset() { *x = StringMatcher{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StringMatcher) String() string { @@ -66,7 +60,7 @@ func (*StringMatcher) ProtoMessage() {} func (x *StringMatcher) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -81,37 +75,45 @@ func (*StringMatcher) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_rawDescGZIP(), []int{0} } -func (m *StringMatcher) GetMatchPattern() isStringMatcher_MatchPattern { - if m != nil { - return m.MatchPattern +func (x *StringMatcher) GetMatchPattern() isStringMatcher_MatchPattern { + if x != nil { + return x.MatchPattern } return nil } func (x *StringMatcher) GetExact() string { - if x, ok := x.GetMatchPattern().(*StringMatcher_Exact); ok { - return x.Exact + if x != nil { + if x, ok := x.MatchPattern.(*StringMatcher_Exact); ok { + return x.Exact + } } return "" } func (x *StringMatcher) GetPrefix() string { - if x, ok := x.GetMatchPattern().(*StringMatcher_Prefix); ok { - return x.Prefix + if x != nil { + if x, ok := x.MatchPattern.(*StringMatcher_Prefix); ok { + return x.Prefix + } } return "" } func (x *StringMatcher) GetSuffix() string { - if x, ok := x.GetMatchPattern().(*StringMatcher_Suffix); ok { - return x.Suffix + if x != nil { + if x, ok := x.MatchPattern.(*StringMatcher_Suffix); ok { + return x.Suffix + } } return "" } func (x *StringMatcher) GetSafeRegex() *RegexMatcher { - if x, ok := x.GetMatchPattern().(*StringMatcher_SafeRegex); ok { - return x.SafeRegex + if x != nil { + if x, ok := x.MatchPattern.(*StringMatcher_SafeRegex); ok { + return x.SafeRegex + } } return nil } @@ -171,20 +173,17 @@ func (*StringMatcher_SafeRegex) isStringMatcher_MatchPattern() {} // Specifies a list of ways to match a string. type ListStringMatcher struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Patterns []*StringMatcher `protobuf:"bytes,1,rep,name=patterns,proto3" json:"patterns,omitempty"` unknownFields protoimpl.UnknownFields - - Patterns []*StringMatcher `protobuf:"bytes,1,rep,name=patterns,proto3" json:"patterns,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListStringMatcher) Reset() { *x = ListStringMatcher{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListStringMatcher) String() string { @@ -195,7 +194,7 @@ func (*ListStringMatcher) ProtoMessage() {} func (x *ListStringMatcher) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -219,7 +218,7 @@ func (x *ListStringMatcher) GetPatterns() []*StringMatcher { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_rawDesc = string([]byte{ 0x0a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -271,33 +270,33 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_ 0x6e, 0x73, 0x3a, 0x2c, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x26, 0x0a, 0x24, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, - 0x42, 0x9e, 0x01, 0x0a, 0x2b, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, - 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x76, 0x33, - 0x42, 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, - 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, - 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, - 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2f, 0x76, - 0x33, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, - 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x42, 0xa2, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0xe2, + 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x2b, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x72, 0x2e, 0x76, 0x33, 0x42, 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x50, 0x01, 0x5a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x65, 0x72, 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_goTypes = []any{ (*StringMatcher)(nil), // 0: solo.io.envoy.type.matcher.v3.StringMatcher (*ListStringMatcher)(nil), // 1: solo.io.envoy.type.matcher.v3.ListStringMatcher (*RegexMatcher)(nil), // 2: solo.io.envoy.type.matcher.v3.RegexMatcher @@ -320,33 +319,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher return } file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_regex_proto_init() - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StringMatcher); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListStringMatcher); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_msgTypes[0].OneofWrappers = []any{ (*StringMatcher_Exact)(nil), (*StringMatcher_Prefix)(nil), (*StringMatcher_Suffix)(nil), @@ -356,7 +329,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_rawDesc)), NumEnums: 0, NumMessages: 2, NumExtensions: 0, @@ -367,7 +340,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_matcher_v3_string_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/string.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/string.pb.hash.go index fe9de5fce..70297db73 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/string.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/string.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *StringMatcher) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -66,14 +70,20 @@ func (m *StringMatcher) Hash(hasher hash.Hash64) (uint64, error) { case *StringMatcher_SafeRegex: if h, ok := interface{}(m.GetSafeRegex()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SafeRegex")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSafeRegex(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSafeRegex(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SafeRegex")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -85,6 +95,10 @@ func (m *StringMatcher) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ListStringMatcher) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -100,14 +114,20 @@ func (m *ListStringMatcher) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetPatterns() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/string.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/string.pb.uniquehash.go new file mode 100644 index 000000000..b41732134 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/string.pb.uniquehash.go @@ -0,0 +1,157 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/matcher/v3/string.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *StringMatcher) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.matcher.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3.StringMatcher")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("IgnoreCase")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetIgnoreCase()) + if err != nil { + return 0, err + } + + switch m.MatchPattern.(type) { + + case *StringMatcher_Exact: + + if _, err = hasher.Write([]byte("Exact")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetExact())); err != nil { + return 0, err + } + + case *StringMatcher_Prefix: + + if _, err = hasher.Write([]byte("Prefix")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPrefix())); err != nil { + return 0, err + } + + case *StringMatcher_Suffix: + + if _, err = hasher.Write([]byte("Suffix")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSuffix())); err != nil { + return 0, err + } + + case *StringMatcher_SafeRegex: + + if h, ok := interface{}(m.GetSafeRegex()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SafeRegex")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSafeRegex(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SafeRegex")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ListStringMatcher) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.matcher.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3.ListStringMatcher")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Patterns")); err != nil { + return 0, err + } + for i, v := range m.GetPatterns() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3/metadata.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3/metadata.pb.clone.go new file mode 100644 index 000000000..6676f6545 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3/metadata.pb.clone.go @@ -0,0 +1,180 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/metadata/v3/metadata.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *MetadataKey) Clone() proto.Message { + var target *MetadataKey + if m == nil { + return target + } + target = &MetadataKey{} + + target.Key = m.GetKey() + + if m.GetPath() != nil { + target.Path = make([]*MetadataKey_PathSegment, len(m.GetPath())) + for idx, v := range m.GetPath() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Path[idx] = h.Clone().(*MetadataKey_PathSegment) + } else { + target.Path[idx] = proto.Clone(v).(*MetadataKey_PathSegment) + } + + } + } + + return target +} + +// Clone function +func (m *MetadataKind) Clone() proto.Message { + var target *MetadataKind + if m == nil { + return target + } + target = &MetadataKind{} + + switch m.Kind.(type) { + + case *MetadataKind_Request_: + + if h, ok := interface{}(m.GetRequest()).(clone.Cloner); ok { + target.Kind = &MetadataKind_Request_{ + Request: h.Clone().(*MetadataKind_Request), + } + } else { + target.Kind = &MetadataKind_Request_{ + Request: proto.Clone(m.GetRequest()).(*MetadataKind_Request), + } + } + + case *MetadataKind_Route_: + + if h, ok := interface{}(m.GetRoute()).(clone.Cloner); ok { + target.Kind = &MetadataKind_Route_{ + Route: h.Clone().(*MetadataKind_Route), + } + } else { + target.Kind = &MetadataKind_Route_{ + Route: proto.Clone(m.GetRoute()).(*MetadataKind_Route), + } + } + + case *MetadataKind_Cluster_: + + if h, ok := interface{}(m.GetCluster()).(clone.Cloner); ok { + target.Kind = &MetadataKind_Cluster_{ + Cluster: h.Clone().(*MetadataKind_Cluster), + } + } else { + target.Kind = &MetadataKind_Cluster_{ + Cluster: proto.Clone(m.GetCluster()).(*MetadataKind_Cluster), + } + } + + case *MetadataKind_Host_: + + if h, ok := interface{}(m.GetHost()).(clone.Cloner); ok { + target.Kind = &MetadataKind_Host_{ + Host: h.Clone().(*MetadataKind_Host), + } + } else { + target.Kind = &MetadataKind_Host_{ + Host: proto.Clone(m.GetHost()).(*MetadataKind_Host), + } + } + + } + + return target +} + +// Clone function +func (m *MetadataKey_PathSegment) Clone() proto.Message { + var target *MetadataKey_PathSegment + if m == nil { + return target + } + target = &MetadataKey_PathSegment{} + + switch m.Segment.(type) { + + case *MetadataKey_PathSegment_Key: + + target.Segment = &MetadataKey_PathSegment_Key{ + Key: m.GetKey(), + } + + } + + return target +} + +// Clone function +func (m *MetadataKind_Request) Clone() proto.Message { + var target *MetadataKind_Request + if m == nil { + return target + } + target = &MetadataKind_Request{} + + return target +} + +// Clone function +func (m *MetadataKind_Route) Clone() proto.Message { + var target *MetadataKind_Route + if m == nil { + return target + } + target = &MetadataKind_Route{} + + return target +} + +// Clone function +func (m *MetadataKind_Cluster) Clone() proto.Message { + var target *MetadataKind_Cluster + if m == nil { + return target + } + target = &MetadataKind_Cluster{} + + return target +} + +// Clone function +func (m *MetadataKind_Host) Clone() proto.Message { + var target *MetadataKind_Host + if m == nil { + return target + } + target = &MetadataKind_Host{} + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3/metadata.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3/metadata.pb.equal.go index 86cfa483e..7200d7f97 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3/metadata.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3/metadata.pb.equal.go @@ -94,6 +94,9 @@ func (m *MetadataKind) Equal(that interface{}) bool { switch m.Kind.(type) { case *MetadataKind_Request_: + if _, ok := target.Kind.(*MetadataKind_Request_); !ok { + return false + } if h, ok := interface{}(m.GetRequest()).(equality.Equalizer); ok { if !h.Equal(target.GetRequest()) { @@ -106,6 +109,9 @@ func (m *MetadataKind) Equal(that interface{}) bool { } case *MetadataKind_Route_: + if _, ok := target.Kind.(*MetadataKind_Route_); !ok { + return false + } if h, ok := interface{}(m.GetRoute()).(equality.Equalizer); ok { if !h.Equal(target.GetRoute()) { @@ -118,6 +124,9 @@ func (m *MetadataKind) Equal(that interface{}) bool { } case *MetadataKind_Cluster_: + if _, ok := target.Kind.(*MetadataKind_Cluster_); !ok { + return false + } if h, ok := interface{}(m.GetCluster()).(equality.Equalizer); ok { if !h.Equal(target.GetCluster()) { @@ -130,6 +139,9 @@ func (m *MetadataKind) Equal(that interface{}) bool { } case *MetadataKind_Host_: + if _, ok := target.Kind.(*MetadataKind_Host_); !ok { + return false + } if h, ok := interface{}(m.GetHost()).(equality.Equalizer); ok { if !h.Equal(target.GetHost()) { @@ -141,6 +153,11 @@ func (m *MetadataKind) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.Kind != target.Kind { + return false + } } return true @@ -170,11 +187,19 @@ func (m *MetadataKey_PathSegment) Equal(that interface{}) bool { switch m.Segment.(type) { case *MetadataKey_PathSegment_Key: + if _, ok := target.Segment.(*MetadataKey_PathSegment_Key); !ok { + return false + } if strings.Compare(m.GetKey(), target.GetKey()) != 0 { return false } + default: + // m is nil but target is not nil + if m.Segment != target.Segment { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3/metadata.pb.go b/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3/metadata.pb.go index ce13005e3..94599b543 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3/metadata.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3/metadata.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/metadata/v3/metadata.proto @@ -9,9 +9,9 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -25,57 +25,49 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // MetadataKey provides a general interface using `key` and `path` to retrieve value from -// :ref:`Metadata `. +// Metadata. // // For example, for the following Metadata: // // .. code-block:: yaml // -// filter_metadata: -// envoy.xxx: -// prop: -// foo: bar -// xyz: -// hello: envoy +// filter_metadata: +// envoy.xxx: +// prop: +// foo: bar +// xyz: +// hello: envoy // // The following MetadataKey will retrieve a string value "bar" from the Metadata. // // .. code-block:: yaml // -// key: envoy.xxx -// path: -// - key: prop -// - key: foo -// +// key: envoy.xxx +// path: +// - key: prop +// - key: foo type MetadataKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The key name of Metadata to retrieve the Struct from the metadata. // Typically, it represents a builtin subsystem or custom extension. Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // The path to retrieve the Value from the Struct. It can be a prefix or a full path, - // e.g. ``[prop, xyz]`` for a struct or ``[prop, foo]`` for a string in the example, + // e.g. `[prop, xyz]` for a struct or `[prop, foo]` for a string in the example, // which depends on the particular scenario. // // Note: Due to that only the key type segment is supported, the path can not specify a list // unless the list is the last segment. - Path []*MetadataKey_PathSegment `protobuf:"bytes,2,rep,name=path,proto3" json:"path,omitempty"` + Path []*MetadataKey_PathSegment `protobuf:"bytes,2,rep,name=path,proto3" json:"path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MetadataKey) Reset() { *x = MetadataKey{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MetadataKey) String() string { @@ -86,7 +78,7 @@ func (*MetadataKey) ProtoMessage() {} func (x *MetadataKey) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -117,25 +109,23 @@ func (x *MetadataKey) GetPath() []*MetadataKey_PathSegment { // Describes what kind of metadata. type MetadataKind struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Kind: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Kind: + // // *MetadataKind_Request_ // *MetadataKind_Route_ // *MetadataKind_Cluster_ // *MetadataKind_Host_ - Kind isMetadataKind_Kind `protobuf_oneof:"kind"` + Kind isMetadataKind_Kind `protobuf_oneof:"kind"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MetadataKind) Reset() { *x = MetadataKind{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MetadataKind) String() string { @@ -146,7 +136,7 @@ func (*MetadataKind) ProtoMessage() {} func (x *MetadataKind) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -161,37 +151,45 @@ func (*MetadataKind) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_rawDescGZIP(), []int{1} } -func (m *MetadataKind) GetKind() isMetadataKind_Kind { - if m != nil { - return m.Kind +func (x *MetadataKind) GetKind() isMetadataKind_Kind { + if x != nil { + return x.Kind } return nil } func (x *MetadataKind) GetRequest() *MetadataKind_Request { - if x, ok := x.GetKind().(*MetadataKind_Request_); ok { - return x.Request + if x != nil { + if x, ok := x.Kind.(*MetadataKind_Request_); ok { + return x.Request + } } return nil } func (x *MetadataKind) GetRoute() *MetadataKind_Route { - if x, ok := x.GetKind().(*MetadataKind_Route_); ok { - return x.Route + if x != nil { + if x, ok := x.Kind.(*MetadataKind_Route_); ok { + return x.Route + } } return nil } func (x *MetadataKind) GetCluster() *MetadataKind_Cluster { - if x, ok := x.GetKind().(*MetadataKind_Cluster_); ok { - return x.Cluster + if x != nil { + if x, ok := x.Kind.(*MetadataKind_Cluster_); ok { + return x.Cluster + } } return nil } func (x *MetadataKind) GetHost() *MetadataKind_Host { - if x, ok := x.GetKind().(*MetadataKind_Host_); ok { - return x.Host + if x != nil { + if x, ok := x.Kind.(*MetadataKind_Host_); ok { + return x.Host + } } return nil } @@ -231,22 +229,20 @@ func (*MetadataKind_Host_) isMetadataKind_Kind() {} // Specifies the segment in a path to retrieve value from Metadata. // Currently it is only supported to specify the key, i.e. field name, as one segment of a path. type MetadataKey_PathSegment struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Segment: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Segment: + // // *MetadataKey_PathSegment_Key - Segment isMetadataKey_PathSegment_Segment `protobuf_oneof:"segment"` + Segment isMetadataKey_PathSegment_Segment `protobuf_oneof:"segment"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MetadataKey_PathSegment) Reset() { *x = MetadataKey_PathSegment{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MetadataKey_PathSegment) String() string { @@ -257,7 +253,7 @@ func (*MetadataKey_PathSegment) ProtoMessage() {} func (x *MetadataKey_PathSegment) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -272,16 +268,18 @@ func (*MetadataKey_PathSegment) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_rawDescGZIP(), []int{0, 0} } -func (m *MetadataKey_PathSegment) GetSegment() isMetadataKey_PathSegment_Segment { - if m != nil { - return m.Segment +func (x *MetadataKey_PathSegment) GetSegment() isMetadataKey_PathSegment_Segment { + if x != nil { + return x.Segment } return nil } func (x *MetadataKey_PathSegment) GetKey() string { - if x, ok := x.GetSegment().(*MetadataKey_PathSegment_Key); ok { - return x.Key + if x != nil { + if x, ok := x.Segment.(*MetadataKey_PathSegment_Key); ok { + return x.Key + } } return "" } @@ -299,18 +297,16 @@ func (*MetadataKey_PathSegment_Key) isMetadataKey_PathSegment_Segment() {} // Represents dynamic metadata associated with the request. type MetadataKind_Request struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MetadataKind_Request) Reset() { *x = MetadataKind_Request{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MetadataKind_Request) String() string { @@ -321,7 +317,7 @@ func (*MetadataKind_Request) ProtoMessage() {} func (x *MetadataKind_Request) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -338,18 +334,16 @@ func (*MetadataKind_Request) Descriptor() ([]byte, []int) { // Represents metadata from :ref:`the route`. type MetadataKind_Route struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MetadataKind_Route) Reset() { *x = MetadataKind_Route{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MetadataKind_Route) String() string { @@ -360,7 +354,7 @@ func (*MetadataKind_Route) ProtoMessage() {} func (x *MetadataKind_Route) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -377,18 +371,16 @@ func (*MetadataKind_Route) Descriptor() ([]byte, []int) { // Represents metadata from :ref:`the upstream cluster`. type MetadataKind_Cluster struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MetadataKind_Cluster) Reset() { *x = MetadataKind_Cluster{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MetadataKind_Cluster) String() string { @@ -399,7 +391,7 @@ func (*MetadataKind_Cluster) ProtoMessage() {} func (x *MetadataKind_Cluster) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -417,18 +409,16 @@ func (*MetadataKind_Cluster) Descriptor() ([]byte, []int) { // Represents metadata from :ref:`the upstream // host`. type MetadataKind_Host struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MetadataKind_Host) Reset() { *x = MetadataKind_Host{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MetadataKind_Host) String() string { @@ -439,7 +429,7 @@ func (*MetadataKind_Host) ProtoMessage() {} func (x *MetadataKind_Host) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -456,7 +446,7 @@ func (*MetadataKind_Host) Descriptor() ([]byte, []int) { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_rawDesc = string([]byte{ 0x0a, 0x59, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -529,34 +519,34 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata 0xde, 0x8e, 0x04, 0x25, 0x0a, 0x23, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x42, 0x0b, 0x0a, 0x04, 0x6b, 0x69, 0x6e, - 0x64, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x42, 0xa2, 0x01, 0x0a, 0x2c, 0x69, 0x6f, 0x2e, 0x65, 0x6e, - 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x33, 0x42, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x51, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x76, 0x33, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, - 0x02, 0x10, 0x02, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, -} + 0x64, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x42, 0xa6, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, + 0x01, 0xd0, 0xf5, 0x04, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x2c, 0x69, + 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x33, 0x42, 0x0d, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x51, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, + 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, + 0x79, 0x70, 0x65, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x76, 0x33, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes = make([]protoimpl.MessageInfo, 7) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_goTypes = []any{ (*MetadataKey)(nil), // 0: solo.io.envoy.type.metadata.v3.MetadataKey (*MetadataKind)(nil), // 1: solo.io.envoy.type.metadata.v3.MetadataKind (*MetadataKey_PathSegment)(nil), // 2: solo.io.envoy.type.metadata.v3.MetadataKey.PathSegment @@ -585,106 +575,20 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadat if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MetadataKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MetadataKind); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MetadataKey_PathSegment); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MetadataKind_Request); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MetadataKind_Route); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MetadataKind_Cluster); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MetadataKind_Host); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[1].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[1].OneofWrappers = []any{ (*MetadataKind_Request_)(nil), (*MetadataKind_Route_)(nil), (*MetadataKind_Cluster_)(nil), (*MetadataKind_Host_)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[2].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes[2].OneofWrappers = []any{ (*MetadataKey_PathSegment_Key)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_rawDesc)), NumEnums: 0, NumMessages: 7, NumExtensions: 0, @@ -695,7 +599,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadat MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_metadata_v3_metadata_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3/metadata.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3/metadata.pb.hash.go index b0a50c24c..fc20fb258 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3/metadata.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3/metadata.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *MetadataKey) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -45,14 +49,20 @@ func (m *MetadataKey) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetPath() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -64,6 +74,10 @@ func (m *MetadataKey) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *MetadataKind) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -81,14 +95,20 @@ func (m *MetadataKind) Hash(hasher hash.Hash64) (uint64, error) { case *MetadataKind_Request_: if h, ok := interface{}(m.GetRequest()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Request")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRequest(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRequest(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Request")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -97,14 +117,20 @@ func (m *MetadataKind) Hash(hasher hash.Hash64) (uint64, error) { case *MetadataKind_Route_: if h, ok := interface{}(m.GetRoute()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Route")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRoute(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRoute(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Route")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -113,14 +139,20 @@ func (m *MetadataKind) Hash(hasher hash.Hash64) (uint64, error) { case *MetadataKind_Cluster_: if h, ok := interface{}(m.GetCluster()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cluster")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCluster(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCluster(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Cluster")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -129,14 +161,20 @@ func (m *MetadataKind) Hash(hasher hash.Hash64) (uint64, error) { case *MetadataKind_Host_: if h, ok := interface{}(m.GetHost()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Host")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHost(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHost(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Host")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -148,6 +186,10 @@ func (m *MetadataKind) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *MetadataKey_PathSegment) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -174,6 +216,10 @@ func (m *MetadataKey_PathSegment) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *MetadataKind_Request) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -190,6 +236,10 @@ func (m *MetadataKind_Request) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *MetadataKind_Route) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -206,6 +256,10 @@ func (m *MetadataKind_Route) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *MetadataKind_Cluster) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -222,6 +276,10 @@ func (m *MetadataKind_Cluster) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *MetadataKind_Host) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3/metadata.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3/metadata.pb.uniquehash.go new file mode 100644 index 000000000..bd197b6a1 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3/metadata.pb.uniquehash.go @@ -0,0 +1,303 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/metadata/v3/metadata.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MetadataKey) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.metadata.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3.MetadataKey")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + for i, v := range m.GetPath() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MetadataKind) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.metadata.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3.MetadataKind")); err != nil { + return 0, err + } + + switch m.Kind.(type) { + + case *MetadataKind_Request_: + + if h, ok := interface{}(m.GetRequest()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Request")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequest(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Request")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *MetadataKind_Route_: + + if h, ok := interface{}(m.GetRoute()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Route")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRoute(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Route")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *MetadataKind_Cluster_: + + if h, ok := interface{}(m.GetCluster()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cluster")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCluster(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Cluster")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *MetadataKind_Host_: + + if h, ok := interface{}(m.GetHost()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Host")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHost(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Host")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MetadataKey_PathSegment) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.metadata.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3.MetadataKey_PathSegment")); err != nil { + return 0, err + } + + switch m.Segment.(type) { + + case *MetadataKey_PathSegment_Key: + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MetadataKind_Request) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.metadata.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3.MetadataKind_Request")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MetadataKind_Route) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.metadata.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3.MetadataKind_Route")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MetadataKind_Cluster) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.metadata.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3.MetadataKind_Cluster")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MetadataKind_Host) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.metadata.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3.MetadataKind_Host")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/type/range.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/type/range.pb.clone.go new file mode 100644 index 000000000..0798428a9 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/range.pb.clone.go @@ -0,0 +1,56 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/range.proto + +package _type + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *Int64Range) Clone() proto.Message { + var target *Int64Range + if m == nil { + return target + } + target = &Int64Range{} + + target.Start = m.GetStart() + + target.End = m.GetEnd() + + return target +} + +// Clone function +func (m *DoubleRange) Clone() proto.Message { + var target *DoubleRange + if m == nil { + return target + } + target = &DoubleRange{} + + target.Start = m.GetStart() + + target.End = m.GetEnd() + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/type/range.pb.go b/pkg/api/gloo.solo.io/external/envoy/type/range.pb.go index 834dcd9c1..099a8acf7 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/range.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/range.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/range.proto @@ -9,8 +9,8 @@ package _type import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -23,30 +23,23 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Specifies the int64 start and end of the range using half-open interval semantics [start, // end). type Int64Range struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // start of the range (inclusive) Start int64 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"` // end of the range (exclusive) - End int64 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"` + End int64 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Int64Range) Reset() { *x = Int64Range{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Int64Range) String() string { @@ -57,7 +50,7 @@ func (*Int64Range) ProtoMessage() {} func (x *Int64Range) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -89,23 +82,20 @@ func (x *Int64Range) GetEnd() int64 { // Specifies the double start and end of the range using half-open interval semantics [start, // end). type DoubleRange struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // start of the range (inclusive) Start float64 `protobuf:"fixed64,1,opt,name=start,proto3" json:"start,omitempty"` // end of the range (exclusive) - End float64 `protobuf:"fixed64,2,opt,name=end,proto3" json:"end,omitempty"` + End float64 `protobuf:"fixed64,2,opt,name=end,proto3" json:"end,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DoubleRange) Reset() { *x = DoubleRange{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DoubleRange) String() string { @@ -116,7 +106,7 @@ func (*DoubleRange) ProtoMessage() {} func (x *DoubleRange) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -147,7 +137,7 @@ func (x *DoubleRange) GetEnd() float64 { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_rawDesc = string([]byte{ 0x0a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -162,31 +152,31 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_pr 0x75, 0x62, 0x6c, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x65, 0x6e, - 0x64, 0x42, 0x77, 0x0a, 0x18, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0a, 0x52, - 0x61, 0x6e, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x45, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, - 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, - 0x70, 0x65, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} + 0x64, 0x42, 0x7b, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x0a, + 0x18, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0a, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_goTypes = []any{ (*Int64Range)(nil), // 0: solo.io.envoy.type.Int64Range (*DoubleRange)(nil), // 1: solo.io.envoy.type.DoubleRange } @@ -203,37 +193,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_p if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Int64Range); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DoubleRange); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_rawDesc)), NumEnums: 0, NumMessages: 2, NumExtensions: 0, @@ -244,7 +208,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_p MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_range_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/type/range.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/type/range.pb.hash.go index a9d9cc0a7..a6a328963 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/range.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/range.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Int64Range) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -52,6 +56,10 @@ func (m *Int64Range) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *DoubleRange) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/external/envoy/type/range.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/type/range.pb.uniquehash.go new file mode 100644 index 000000000..3cd4bd24b --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/range.pb.uniquehash.go @@ -0,0 +1,98 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/range.proto + +package _type + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Int64Range) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type.Int64Range")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Start")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetStart()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("End")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetEnd()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DoubleRange) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type.DoubleRange")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Start")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetStart()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("End")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetEnd()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3/custom_tag.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3/custom_tag.pb.clone.go new file mode 100644 index 000000000..0f6a2c556 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3/custom_tag.pb.clone.go @@ -0,0 +1,161 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/tracing/v3/custom_tag.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_metadata_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *CustomTag) Clone() proto.Message { + var target *CustomTag + if m == nil { + return target + } + target = &CustomTag{} + + target.Tag = m.GetTag() + + switch m.Type.(type) { + + case *CustomTag_Literal_: + + if h, ok := interface{}(m.GetLiteral()).(clone.Cloner); ok { + target.Type = &CustomTag_Literal_{ + Literal: h.Clone().(*CustomTag_Literal), + } + } else { + target.Type = &CustomTag_Literal_{ + Literal: proto.Clone(m.GetLiteral()).(*CustomTag_Literal), + } + } + + case *CustomTag_Environment_: + + if h, ok := interface{}(m.GetEnvironment()).(clone.Cloner); ok { + target.Type = &CustomTag_Environment_{ + Environment: h.Clone().(*CustomTag_Environment), + } + } else { + target.Type = &CustomTag_Environment_{ + Environment: proto.Clone(m.GetEnvironment()).(*CustomTag_Environment), + } + } + + case *CustomTag_RequestHeader: + + if h, ok := interface{}(m.GetRequestHeader()).(clone.Cloner); ok { + target.Type = &CustomTag_RequestHeader{ + RequestHeader: h.Clone().(*CustomTag_Header), + } + } else { + target.Type = &CustomTag_RequestHeader{ + RequestHeader: proto.Clone(m.GetRequestHeader()).(*CustomTag_Header), + } + } + + case *CustomTag_Metadata_: + + if h, ok := interface{}(m.GetMetadata()).(clone.Cloner); ok { + target.Type = &CustomTag_Metadata_{ + Metadata: h.Clone().(*CustomTag_Metadata), + } + } else { + target.Type = &CustomTag_Metadata_{ + Metadata: proto.Clone(m.GetMetadata()).(*CustomTag_Metadata), + } + } + + } + + return target +} + +// Clone function +func (m *CustomTag_Literal) Clone() proto.Message { + var target *CustomTag_Literal + if m == nil { + return target + } + target = &CustomTag_Literal{} + + target.Value = m.GetValue() + + return target +} + +// Clone function +func (m *CustomTag_Environment) Clone() proto.Message { + var target *CustomTag_Environment + if m == nil { + return target + } + target = &CustomTag_Environment{} + + target.Name = m.GetName() + + target.DefaultValue = m.GetDefaultValue() + + return target +} + +// Clone function +func (m *CustomTag_Header) Clone() proto.Message { + var target *CustomTag_Header + if m == nil { + return target + } + target = &CustomTag_Header{} + + target.Name = m.GetName() + + target.DefaultValue = m.GetDefaultValue() + + return target +} + +// Clone function +func (m *CustomTag_Metadata) Clone() proto.Message { + var target *CustomTag_Metadata + if m == nil { + return target + } + target = &CustomTag_Metadata{} + + if h, ok := interface{}(m.GetKind()).(clone.Cloner); ok { + target.Kind = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_metadata_v3.MetadataKind) + } else { + target.Kind = proto.Clone(m.GetKind()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_metadata_v3.MetadataKind) + } + + if h, ok := interface{}(m.GetMetadataKey()).(clone.Cloner); ok { + target.MetadataKey = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_metadata_v3.MetadataKey) + } else { + target.MetadataKey = proto.Clone(m.GetMetadataKey()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_metadata_v3.MetadataKey) + } + + target.DefaultValue = m.GetDefaultValue() + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3/custom_tag.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3/custom_tag.pb.equal.go index 2b1a561af..b48d4665b 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3/custom_tag.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3/custom_tag.pb.equal.go @@ -53,6 +53,9 @@ func (m *CustomTag) Equal(that interface{}) bool { switch m.Type.(type) { case *CustomTag_Literal_: + if _, ok := target.Type.(*CustomTag_Literal_); !ok { + return false + } if h, ok := interface{}(m.GetLiteral()).(equality.Equalizer); ok { if !h.Equal(target.GetLiteral()) { @@ -65,6 +68,9 @@ func (m *CustomTag) Equal(that interface{}) bool { } case *CustomTag_Environment_: + if _, ok := target.Type.(*CustomTag_Environment_); !ok { + return false + } if h, ok := interface{}(m.GetEnvironment()).(equality.Equalizer); ok { if !h.Equal(target.GetEnvironment()) { @@ -77,6 +83,9 @@ func (m *CustomTag) Equal(that interface{}) bool { } case *CustomTag_RequestHeader: + if _, ok := target.Type.(*CustomTag_RequestHeader); !ok { + return false + } if h, ok := interface{}(m.GetRequestHeader()).(equality.Equalizer); ok { if !h.Equal(target.GetRequestHeader()) { @@ -89,6 +98,9 @@ func (m *CustomTag) Equal(that interface{}) bool { } case *CustomTag_Metadata_: + if _, ok := target.Type.(*CustomTag_Metadata_); !ok { + return false + } if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { if !h.Equal(target.GetMetadata()) { @@ -100,6 +112,11 @@ func (m *CustomTag) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.Type != target.Type { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3/custom_tag.pb.go b/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3/custom_tag.pb.go index 23fef6780..ded668d5a 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3/custom_tag.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3/custom_tag.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/tracing/v3/custom_tag.proto @@ -9,9 +9,9 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" @@ -26,36 +26,30 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Describes custom tags for the active span. // [#next-free-field: 6] type CustomTag struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Used to populate the tag name. Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` // Used to specify what kind of custom tag. // - // Types that are assignable to Type: + // Types that are valid to be assigned to Type: + // // *CustomTag_Literal_ // *CustomTag_Environment_ // *CustomTag_RequestHeader // *CustomTag_Metadata_ - Type isCustomTag_Type `protobuf_oneof:"type"` + Type isCustomTag_Type `protobuf_oneof:"type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CustomTag) Reset() { *x = CustomTag{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CustomTag) String() string { @@ -66,7 +60,7 @@ func (*CustomTag) ProtoMessage() {} func (x *CustomTag) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -88,37 +82,45 @@ func (x *CustomTag) GetTag() string { return "" } -func (m *CustomTag) GetType() isCustomTag_Type { - if m != nil { - return m.Type +func (x *CustomTag) GetType() isCustomTag_Type { + if x != nil { + return x.Type } return nil } func (x *CustomTag) GetLiteral() *CustomTag_Literal { - if x, ok := x.GetType().(*CustomTag_Literal_); ok { - return x.Literal + if x != nil { + if x, ok := x.Type.(*CustomTag_Literal_); ok { + return x.Literal + } } return nil } func (x *CustomTag) GetEnvironment() *CustomTag_Environment { - if x, ok := x.GetType().(*CustomTag_Environment_); ok { - return x.Environment + if x != nil { + if x, ok := x.Type.(*CustomTag_Environment_); ok { + return x.Environment + } } return nil } func (x *CustomTag) GetRequestHeader() *CustomTag_Header { - if x, ok := x.GetType().(*CustomTag_RequestHeader); ok { - return x.RequestHeader + if x != nil { + if x, ok := x.Type.(*CustomTag_RequestHeader); ok { + return x.RequestHeader + } } return nil } func (x *CustomTag) GetMetadata() *CustomTag_Metadata { - if x, ok := x.GetType().(*CustomTag_Metadata_); ok { - return x.Metadata + if x != nil { + if x, ok := x.Type.(*CustomTag_Metadata_); ok { + return x.Metadata + } } return nil } @@ -157,21 +159,18 @@ func (*CustomTag_Metadata_) isCustomTag_Type() {} // Literal type custom tag with static value for the tag value. type CustomTag_Literal struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Static literal value to populate the tag value. - Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CustomTag_Literal) Reset() { *x = CustomTag_Literal{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CustomTag_Literal) String() string { @@ -182,7 +181,7 @@ func (*CustomTag_Literal) ProtoMessage() {} func (x *CustomTag_Literal) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -206,25 +205,22 @@ func (x *CustomTag_Literal) GetValue() string { // Environment type custom tag with environment name and default value. type CustomTag_Environment struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Environment variable name to obtain the value to populate the tag value. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // When the environment variable is not found, // the tag value will be populated with this default value if specified, // otherwise no tag will be populated. - DefaultValue string `protobuf:"bytes,2,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` + DefaultValue string `protobuf:"bytes,2,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CustomTag_Environment) Reset() { *x = CustomTag_Environment{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CustomTag_Environment) String() string { @@ -235,7 +231,7 @@ func (*CustomTag_Environment) ProtoMessage() {} func (x *CustomTag_Environment) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -266,25 +262,22 @@ func (x *CustomTag_Environment) GetDefaultValue() string { // Header type custom tag with header name and default value. type CustomTag_Header struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Header name to obtain the value to populate the tag value. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // When the header does not exist, // the tag value will be populated with this default value if specified, // otherwise no tag will be populated. - DefaultValue string `protobuf:"bytes,2,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` + DefaultValue string `protobuf:"bytes,2,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CustomTag_Header) Reset() { *x = CustomTag_Header{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CustomTag_Header) String() string { @@ -295,7 +288,7 @@ func (*CustomTag_Header) ProtoMessage() {} func (x *CustomTag_Header) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -325,15 +318,12 @@ func (x *CustomTag_Header) GetDefaultValue() string { } // Metadata type custom tag using -// :ref:`MetadataKey ` to retrieve the protobuf value -// from :ref:`Metadata `, and populate the tag value with -// `the canonical JSON `_ +// MetadataKey to retrieve the protobuf value +// from Metadata, and populate the tag value with +// [the canonical JSON](https://developers.google.com/protocol-buffers/docs/proto3#json) // representation of it. type CustomTag_Metadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specify what kind of metadata to obtain tag value from. Kind *v3.MetadataKind `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` // Metadata key to define the path to retrieve the tag value. @@ -341,16 +331,16 @@ type CustomTag_Metadata struct { // When no valid metadata is found, // the tag value would be populated with this default value if specified, // otherwise no tag would be populated. - DefaultValue string `protobuf:"bytes,3,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` + DefaultValue string `protobuf:"bytes,3,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CustomTag_Metadata) Reset() { *x = CustomTag_Metadata{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CustomTag_Metadata) String() string { @@ -361,7 +351,7 @@ func (*CustomTag_Metadata) ProtoMessage() {} func (x *CustomTag_Metadata) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -399,7 +389,7 @@ func (x *CustomTag_Metadata) GetDefaultValue() string { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_rawDesc = string([]byte{ 0x0a, 0x5a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -460,7 +450,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_ 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x61, 0x67, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x80, 0x01, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xfa, 0x42, - 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc8, 0x01, 0x00, 0xc0, 0x01, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x2e, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x28, 0x0a, 0x26, @@ -485,33 +475,34 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_ 0xde, 0x8e, 0x04, 0x21, 0x0a, 0x1f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x61, 0x67, 0x42, 0x0b, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x03, 0xf8, - 0x42, 0x01, 0x42, 0xa1, 0x01, 0x0a, 0x2b, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, - 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x33, 0x42, 0x0e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x61, 0x67, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, - 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x63, - 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x33, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0xb8, 0xf5, - 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x42, 0x01, 0x42, 0xa5, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, + 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x2b, 0x69, 0x6f, 0x2e, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x63, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x42, 0x0e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x61, + 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, + 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes = make([]protoimpl.MessageInfo, 5) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_goTypes = []any{ (*CustomTag)(nil), // 0: solo.io.envoy.type.tracing.v3.CustomTag (*CustomTag_Literal)(nil), // 1: solo.io.envoy.type.tracing.v3.CustomTag.Literal (*CustomTag_Environment)(nil), // 2: solo.io.envoy.type.tracing.v3.CustomTag.Environment @@ -541,69 +532,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CustomTag); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CustomTag_Literal); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CustomTag_Environment); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CustomTag_Header); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CustomTag_Metadata); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes[0].OneofWrappers = []any{ (*CustomTag_Literal_)(nil), (*CustomTag_Environment_)(nil), (*CustomTag_RequestHeader)(nil), @@ -613,7 +542,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_rawDesc)), NumEnums: 0, NumMessages: 5, NumExtensions: 0, @@ -624,7 +553,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_tracing_v3_custom_tag_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3/custom_tag.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3/custom_tag.pb.hash.go index c416a7c15..9926042c9 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3/custom_tag.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3/custom_tag.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *CustomTag) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -47,14 +51,20 @@ func (m *CustomTag) Hash(hasher hash.Hash64) (uint64, error) { case *CustomTag_Literal_: if h, ok := interface{}(m.GetLiteral()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Literal")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetLiteral(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetLiteral(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Literal")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -63,14 +73,20 @@ func (m *CustomTag) Hash(hasher hash.Hash64) (uint64, error) { case *CustomTag_Environment_: if h, ok := interface{}(m.GetEnvironment()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Environment")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetEnvironment(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetEnvironment(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Environment")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -79,14 +95,20 @@ func (m *CustomTag) Hash(hasher hash.Hash64) (uint64, error) { case *CustomTag_RequestHeader: if h, ok := interface{}(m.GetRequestHeader()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestHeader")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRequestHeader(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRequestHeader(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RequestHeader")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -95,14 +117,20 @@ func (m *CustomTag) Hash(hasher hash.Hash64) (uint64, error) { case *CustomTag_Metadata_: if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -114,6 +142,10 @@ func (m *CustomTag) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *CustomTag_Literal) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -134,6 +166,10 @@ func (m *CustomTag_Literal) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *CustomTag_Environment) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -158,6 +194,10 @@ func (m *CustomTag_Environment) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *CustomTag_Header) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -182,6 +222,10 @@ func (m *CustomTag_Header) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *CustomTag_Metadata) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -195,28 +239,40 @@ func (m *CustomTag_Metadata) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetKind()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Kind")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetKind(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetKind(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Kind")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetMetadataKey()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MetadataKey")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadataKey(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMetadataKey(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MetadataKey")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3/custom_tag.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3/custom_tag.pb.uniquehash.go new file mode 100644 index 000000000..6d97e7e59 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3/custom_tag.pb.uniquehash.go @@ -0,0 +1,304 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/tracing/v3/custom_tag.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *CustomTag) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.tracing.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3.CustomTag")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Tag")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTag())); err != nil { + return 0, err + } + + switch m.Type.(type) { + + case *CustomTag_Literal_: + + if h, ok := interface{}(m.GetLiteral()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Literal")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLiteral(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Literal")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *CustomTag_Environment_: + + if h, ok := interface{}(m.GetEnvironment()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Environment")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnvironment(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Environment")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *CustomTag_RequestHeader: + + if h, ok := interface{}(m.GetRequestHeader()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestHeader")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestHeader(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestHeader")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *CustomTag_Metadata_: + + if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *CustomTag_Literal) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.tracing.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3.CustomTag_Literal")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetValue())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *CustomTag_Environment) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.tracing.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3.CustomTag_Environment")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DefaultValue")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDefaultValue())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *CustomTag_Header) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.tracing.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3.CustomTag_Header")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DefaultValue")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDefaultValue())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *CustomTag_Metadata) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.tracing.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3.CustomTag_Metadata")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetKind()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Kind")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetKind(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Kind")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMetadataKey()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MetadataKey")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadataKey(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MetadataKey")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("DefaultValue")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDefaultValue())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/type/v3/http.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/type/v3/http.pb.clone.go new file mode 100644 index 000000000..9305cc4c1 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/v3/http.pb.clone.go @@ -0,0 +1,26 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/v3/http.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) diff --git a/pkg/api/gloo.solo.io/external/envoy/type/v3/http.pb.go b/pkg/api/gloo.solo.io/external/envoy/type/v3/http.pb.go index 83cec1e69..2e3095d66 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/v3/http.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/v3/http.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/v3/http.proto @@ -9,8 +9,8 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -24,10 +24,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type CodecClientType int32 const ( @@ -82,7 +78,7 @@ func (CodecClientType) EnumDescriptor() ([]byte, []int) { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_rawDesc = string([]byte{ 0x0a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -95,33 +91,33 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_ 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2a, 0x32, 0x0a, 0x0f, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x48, 0x54, 0x54, 0x50, 0x31, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x48, 0x54, 0x54, 0x50, 0x32, 0x10, - 0x01, 0x12, 0x09, 0x0a, 0x05, 0x48, 0x54, 0x54, 0x50, 0x33, 0x10, 0x02, 0x42, 0x8c, 0x01, 0x0a, - 0x23, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, - 0x65, 0x2e, 0x76, 0x33, 0x42, 0x09, 0x48, 0x74, 0x74, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, - 0x01, 0x5a, 0x48, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, - 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, - 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x76, 0x33, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, - 0x02, 0x10, 0x02, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, -} + 0x01, 0x12, 0x09, 0x0a, 0x05, 0x48, 0x54, 0x54, 0x50, 0x33, 0x10, 0x02, 0x42, 0x90, 0x01, 0xb8, + 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, + 0x02, 0x10, 0x02, 0x0a, 0x23, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, + 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x33, 0x42, 0x09, 0x48, 0x74, 0x74, 0x70, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x48, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x76, 0x33, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_goTypes = []any{ (CodecClientType)(0), // 0: solo.io.envoy.type.v3.CodecClientType } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_depIdxs = []int32{ @@ -141,7 +137,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_rawDesc)), NumEnums: 1, NumMessages: 0, NumExtensions: 0, @@ -152,7 +148,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_enumTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/type/v3/http.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/type/v3/http.pb.hash.go index 7e81bcf21..004d184ce 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/v3/http.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/v3/http.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used diff --git a/pkg/api/gloo.solo.io/external/envoy/type/v3/http.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/type/v3/http.pb.uniquehash.go new file mode 100644 index 000000000..1f630300b --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/v3/http.pb.uniquehash.go @@ -0,0 +1,28 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/v3/http.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) diff --git a/pkg/api/gloo.solo.io/external/envoy/type/v3/http_status.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/type/v3/http_status.pb.clone.go new file mode 100644 index 000000000..30438c5e0 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/v3/http_status.pb.clone.go @@ -0,0 +1,39 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/v3/http_status.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *HttpStatus) Clone() proto.Message { + var target *HttpStatus + if m == nil { + return target + } + target = &HttpStatus{} + + target.Code = m.GetCode() + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/type/v3/http_status.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/type/v3/http_status.pb.equal.go new file mode 100644 index 000000000..eaf75ea73 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/v3/http_status.pb.equal.go @@ -0,0 +1,54 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/v3/http_status.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *HttpStatus) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HttpStatus) + if !ok { + that2, ok := that.(HttpStatus) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetCode() != target.GetCode() { + return false + } + + return true +} diff --git a/pkg/api/gloo.solo.io/external/envoy/type/v3/http_status.pb.go b/pkg/api/gloo.solo.io/external/envoy/type/v3/http_status.pb.go new file mode 100644 index 000000000..755461254 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/v3/http_status.pb.go @@ -0,0 +1,452 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/v3/http_status.proto + +package v3 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/envoyproxy/protoc-gen-validate/validate" + _ "github.com/solo-io/protoc-gen-ext/extproto" + _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// HTTP response codes supported in Envoy. +// For more details: https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml +type StatusCode int32 + +const ( + // Empty - This code not part of the HTTP status code specification, but it is needed for proto + // `enum` type. + StatusCode_Empty StatusCode = 0 + StatusCode_Continue StatusCode = 100 + StatusCode_OK StatusCode = 200 + StatusCode_Created StatusCode = 201 + StatusCode_Accepted StatusCode = 202 + StatusCode_NonAuthoritativeInformation StatusCode = 203 + StatusCode_NoContent StatusCode = 204 + StatusCode_ResetContent StatusCode = 205 + StatusCode_PartialContent StatusCode = 206 + StatusCode_MultiStatus StatusCode = 207 + StatusCode_AlreadyReported StatusCode = 208 + StatusCode_IMUsed StatusCode = 226 + StatusCode_MultipleChoices StatusCode = 300 + StatusCode_MovedPermanently StatusCode = 301 + StatusCode_Found StatusCode = 302 + StatusCode_SeeOther StatusCode = 303 + StatusCode_NotModified StatusCode = 304 + StatusCode_UseProxy StatusCode = 305 + StatusCode_TemporaryRedirect StatusCode = 307 + StatusCode_PermanentRedirect StatusCode = 308 + StatusCode_BadRequest StatusCode = 400 + StatusCode_Unauthorized StatusCode = 401 + StatusCode_PaymentRequired StatusCode = 402 + StatusCode_Forbidden StatusCode = 403 + StatusCode_NotFound StatusCode = 404 + StatusCode_MethodNotAllowed StatusCode = 405 + StatusCode_NotAcceptable StatusCode = 406 + StatusCode_ProxyAuthenticationRequired StatusCode = 407 + StatusCode_RequestTimeout StatusCode = 408 + StatusCode_Conflict StatusCode = 409 + StatusCode_Gone StatusCode = 410 + StatusCode_LengthRequired StatusCode = 411 + StatusCode_PreconditionFailed StatusCode = 412 + StatusCode_PayloadTooLarge StatusCode = 413 + StatusCode_URITooLong StatusCode = 414 + StatusCode_UnsupportedMediaType StatusCode = 415 + StatusCode_RangeNotSatisfiable StatusCode = 416 + StatusCode_ExpectationFailed StatusCode = 417 + StatusCode_MisdirectedRequest StatusCode = 421 + StatusCode_UnprocessableEntity StatusCode = 422 + StatusCode_Locked StatusCode = 423 + StatusCode_FailedDependency StatusCode = 424 + StatusCode_UpgradeRequired StatusCode = 426 + StatusCode_PreconditionRequired StatusCode = 428 + StatusCode_TooManyRequests StatusCode = 429 + StatusCode_RequestHeaderFieldsTooLarge StatusCode = 431 + StatusCode_InternalServerError StatusCode = 500 + StatusCode_NotImplemented StatusCode = 501 + StatusCode_BadGateway StatusCode = 502 + StatusCode_ServiceUnavailable StatusCode = 503 + StatusCode_GatewayTimeout StatusCode = 504 + StatusCode_HTTPVersionNotSupported StatusCode = 505 + StatusCode_VariantAlsoNegotiates StatusCode = 506 + StatusCode_InsufficientStorage StatusCode = 507 + StatusCode_LoopDetected StatusCode = 508 + StatusCode_NotExtended StatusCode = 510 + StatusCode_NetworkAuthenticationRequired StatusCode = 511 +) + +// Enum value maps for StatusCode. +var ( + StatusCode_name = map[int32]string{ + 0: "Empty", + 100: "Continue", + 200: "OK", + 201: "Created", + 202: "Accepted", + 203: "NonAuthoritativeInformation", + 204: "NoContent", + 205: "ResetContent", + 206: "PartialContent", + 207: "MultiStatus", + 208: "AlreadyReported", + 226: "IMUsed", + 300: "MultipleChoices", + 301: "MovedPermanently", + 302: "Found", + 303: "SeeOther", + 304: "NotModified", + 305: "UseProxy", + 307: "TemporaryRedirect", + 308: "PermanentRedirect", + 400: "BadRequest", + 401: "Unauthorized", + 402: "PaymentRequired", + 403: "Forbidden", + 404: "NotFound", + 405: "MethodNotAllowed", + 406: "NotAcceptable", + 407: "ProxyAuthenticationRequired", + 408: "RequestTimeout", + 409: "Conflict", + 410: "Gone", + 411: "LengthRequired", + 412: "PreconditionFailed", + 413: "PayloadTooLarge", + 414: "URITooLong", + 415: "UnsupportedMediaType", + 416: "RangeNotSatisfiable", + 417: "ExpectationFailed", + 421: "MisdirectedRequest", + 422: "UnprocessableEntity", + 423: "Locked", + 424: "FailedDependency", + 426: "UpgradeRequired", + 428: "PreconditionRequired", + 429: "TooManyRequests", + 431: "RequestHeaderFieldsTooLarge", + 500: "InternalServerError", + 501: "NotImplemented", + 502: "BadGateway", + 503: "ServiceUnavailable", + 504: "GatewayTimeout", + 505: "HTTPVersionNotSupported", + 506: "VariantAlsoNegotiates", + 507: "InsufficientStorage", + 508: "LoopDetected", + 510: "NotExtended", + 511: "NetworkAuthenticationRequired", + } + StatusCode_value = map[string]int32{ + "Empty": 0, + "Continue": 100, + "OK": 200, + "Created": 201, + "Accepted": 202, + "NonAuthoritativeInformation": 203, + "NoContent": 204, + "ResetContent": 205, + "PartialContent": 206, + "MultiStatus": 207, + "AlreadyReported": 208, + "IMUsed": 226, + "MultipleChoices": 300, + "MovedPermanently": 301, + "Found": 302, + "SeeOther": 303, + "NotModified": 304, + "UseProxy": 305, + "TemporaryRedirect": 307, + "PermanentRedirect": 308, + "BadRequest": 400, + "Unauthorized": 401, + "PaymentRequired": 402, + "Forbidden": 403, + "NotFound": 404, + "MethodNotAllowed": 405, + "NotAcceptable": 406, + "ProxyAuthenticationRequired": 407, + "RequestTimeout": 408, + "Conflict": 409, + "Gone": 410, + "LengthRequired": 411, + "PreconditionFailed": 412, + "PayloadTooLarge": 413, + "URITooLong": 414, + "UnsupportedMediaType": 415, + "RangeNotSatisfiable": 416, + "ExpectationFailed": 417, + "MisdirectedRequest": 421, + "UnprocessableEntity": 422, + "Locked": 423, + "FailedDependency": 424, + "UpgradeRequired": 426, + "PreconditionRequired": 428, + "TooManyRequests": 429, + "RequestHeaderFieldsTooLarge": 431, + "InternalServerError": 500, + "NotImplemented": 501, + "BadGateway": 502, + "ServiceUnavailable": 503, + "GatewayTimeout": 504, + "HTTPVersionNotSupported": 505, + "VariantAlsoNegotiates": 506, + "InsufficientStorage": 507, + "LoopDetected": 508, + "NotExtended": 510, + "NetworkAuthenticationRequired": 511, + } +) + +func (x StatusCode) Enum() *StatusCode { + p := new(StatusCode) + *p = x + return p +} + +func (x StatusCode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (StatusCode) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_enumTypes[0].Descriptor() +} + +func (StatusCode) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_enumTypes[0] +} + +func (x StatusCode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use StatusCode.Descriptor instead. +func (StatusCode) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_rawDescGZIP(), []int{0} +} + +// HTTP status. +type HttpStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Supplies HTTP response code. + Code StatusCode `protobuf:"varint,1,opt,name=code,proto3,enum=solo.io.envoy.type.v3.StatusCode" json:"code,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HttpStatus) Reset() { + *x = HttpStatus{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HttpStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HttpStatus) ProtoMessage() {} + +func (x *HttpStatus) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HttpStatus.ProtoReflect.Descriptor instead. +func (*HttpStatus) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_rawDescGZIP(), []int{0} +} + +func (x *HttpStatus) GetCode() StatusCode { + if x != nil { + return x.Code + } + return StatusCode_Empty +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_rawDesc = string([]byte{ + 0x0a, 0x53, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, + 0x2f, 0x76, 0x33, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x33, 0x1a, 0x1d, 0x75, 0x64, + 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x75, 0x64, 0x70, + 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6e, 0x0a, 0x0a, 0x48, + 0x74, 0x74, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x41, 0x0a, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x33, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x82, + 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x3a, 0x1d, 0x8a, 0xc8, + 0xde, 0x8e, 0x04, 0x17, 0x0a, 0x15, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, + 0x2e, 0x48, 0x74, 0x74, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2a, 0xb5, 0x09, 0x0a, 0x0a, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, + 0x65, 0x10, 0x64, 0x12, 0x07, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0xc8, 0x01, 0x12, 0x0c, 0x0a, 0x07, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x10, 0xc9, 0x01, 0x12, 0x0d, 0x0a, 0x08, 0x41, 0x63, + 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, 0xca, 0x01, 0x12, 0x20, 0x0a, 0x1b, 0x4e, 0x6f, 0x6e, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0xcb, 0x01, 0x12, 0x0e, 0x0a, 0x09, 0x4e, + 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x10, 0xcc, 0x01, 0x12, 0x11, 0x0a, 0x0c, 0x52, + 0x65, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x10, 0xcd, 0x01, 0x12, 0x13, + 0x0a, 0x0e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x10, 0xce, 0x01, 0x12, 0x10, 0x0a, 0x0b, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x10, 0xcf, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x41, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x10, 0xd0, 0x01, 0x12, 0x0b, 0x0a, 0x06, 0x49, + 0x4d, 0x55, 0x73, 0x65, 0x64, 0x10, 0xe2, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x4d, 0x75, 0x6c, 0x74, + 0x69, 0x70, 0x6c, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x73, 0x10, 0xac, 0x02, 0x12, 0x15, + 0x0a, 0x10, 0x4d, 0x6f, 0x76, 0x65, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, + 0x6c, 0x79, 0x10, 0xad, 0x02, 0x12, 0x0a, 0x0a, 0x05, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xae, + 0x02, 0x12, 0x0d, 0x0a, 0x08, 0x53, 0x65, 0x65, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x10, 0xaf, 0x02, + 0x12, 0x10, 0x0a, 0x0b, 0x4e, 0x6f, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, + 0xb0, 0x02, 0x12, 0x0d, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x10, 0xb1, + 0x02, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x52, 0x65, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x10, 0xb3, 0x02, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x65, 0x72, + 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x10, 0xb4, + 0x02, 0x12, 0x0f, 0x0a, 0x0a, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x10, + 0x90, 0x03, 0x12, 0x11, 0x0a, 0x0c, 0x55, 0x6e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x65, 0x64, 0x10, 0x91, 0x03, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x10, 0x92, 0x03, 0x12, 0x0e, 0x0a, 0x09, 0x46, + 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x10, 0x93, 0x03, 0x12, 0x0d, 0x0a, 0x08, 0x4e, + 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x94, 0x03, 0x12, 0x15, 0x0a, 0x10, 0x4d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x4e, 0x6f, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x95, + 0x03, 0x12, 0x12, 0x0a, 0x0d, 0x4e, 0x6f, 0x74, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x10, 0x96, 0x03, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x41, 0x75, + 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x69, 0x72, 0x65, 0x64, 0x10, 0x97, 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x10, 0x98, 0x03, 0x12, 0x0d, 0x0a, 0x08, + 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x10, 0x99, 0x03, 0x12, 0x09, 0x0a, 0x04, 0x47, + 0x6f, 0x6e, 0x65, 0x10, 0x9a, 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x10, 0x9b, 0x03, 0x12, 0x17, 0x0a, 0x12, 0x50, + 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, + 0x64, 0x10, 0x9c, 0x03, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, + 0x6f, 0x6f, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x10, 0x9d, 0x03, 0x12, 0x0f, 0x0a, 0x0a, 0x55, 0x52, + 0x49, 0x54, 0x6f, 0x6f, 0x4c, 0x6f, 0x6e, 0x67, 0x10, 0x9e, 0x03, 0x12, 0x19, 0x0a, 0x14, 0x55, + 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, + 0x79, 0x70, 0x65, 0x10, 0x9f, 0x03, 0x12, 0x18, 0x0a, 0x13, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4e, + 0x6f, 0x74, 0x53, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x10, 0xa0, 0x03, + 0x12, 0x16, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xa1, 0x03, 0x12, 0x17, 0x0a, 0x12, 0x4d, 0x69, 0x73, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x10, 0xa5, + 0x03, 0x12, 0x18, 0x0a, 0x13, 0x55, 0x6e, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x10, 0xa6, 0x03, 0x12, 0x0b, 0x0a, 0x06, 0x4c, + 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x10, 0xa7, 0x03, 0x12, 0x15, 0x0a, 0x10, 0x46, 0x61, 0x69, 0x6c, + 0x65, 0x64, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x10, 0xa8, 0x03, 0x12, + 0x14, 0x0a, 0x0f, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, + 0x65, 0x64, 0x10, 0xaa, 0x03, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x10, 0xac, 0x03, + 0x12, 0x14, 0x0a, 0x0f, 0x54, 0x6f, 0x6f, 0x4d, 0x61, 0x6e, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x73, 0x10, 0xad, 0x03, 0x12, 0x20, 0x0a, 0x1b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x54, 0x6f, 0x6f, + 0x4c, 0x61, 0x72, 0x67, 0x65, 0x10, 0xaf, 0x03, 0x12, 0x18, 0x0a, 0x13, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, + 0xf4, 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x4e, 0x6f, 0x74, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x65, 0x64, 0x10, 0xf5, 0x03, 0x12, 0x0f, 0x0a, 0x0a, 0x42, 0x61, 0x64, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x10, 0xf6, 0x03, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x55, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x10, 0xf7, + 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x10, 0xf8, 0x03, 0x12, 0x1c, 0x0a, 0x17, 0x48, 0x54, 0x54, 0x50, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, + 0x64, 0x10, 0xf9, 0x03, 0x12, 0x1a, 0x0a, 0x15, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x41, + 0x6c, 0x73, 0x6f, 0x4e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x65, 0x73, 0x10, 0xfa, 0x03, + 0x12, 0x18, 0x0a, 0x13, 0x49, 0x6e, 0x73, 0x75, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, + 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x10, 0xfb, 0x03, 0x12, 0x11, 0x0a, 0x0c, 0x4c, 0x6f, + 0x6f, 0x70, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x10, 0xfc, 0x03, 0x12, 0x10, 0x0a, + 0x0b, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x10, 0xfe, 0x03, 0x12, + 0x22, 0x0a, 0x1d, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, + 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, + 0x10, 0xff, 0x03, 0x42, 0x8e, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, + 0x04, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x1b, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x33, 0x42, 0x0f, 0x48, 0x74, 0x74, 0x70, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x48, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, + 0x65, 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_goTypes = []any{ + (StatusCode)(0), // 0: solo.io.envoy.type.v3.StatusCode + (*HttpStatus)(nil), // 1: solo.io.envoy.type.v3.HttpStatus +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_depIdxs = []int32{ + 0, // 0: solo.io.envoy.type.v3.HttpStatus.code:type_name -> solo.io.envoy.type.v3.StatusCode + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_rawDesc)), + NumEnums: 1, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_enumTypes, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_http_status_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/type/v3/http_status.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/type/v3/http_status.pb.hash.go new file mode 100644 index 000000000..5774df05d --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/v3/http_status.pb.hash.go @@ -0,0 +1,51 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/v3/http_status.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HttpStatus) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/v3.HttpStatus")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetCode()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/type/v3/http_status.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/type/v3/http_status.pb.uniquehash.go new file mode 100644 index 000000000..2d5237303 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/v3/http_status.pb.uniquehash.go @@ -0,0 +1,55 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/v3/http_status.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HttpStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/v3.HttpStatus")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Code")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetCode()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/type/v3/percent.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/type/v3/percent.pb.clone.go new file mode 100644 index 000000000..19212ef80 --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/v3/percent.pb.clone.go @@ -0,0 +1,54 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/v3/percent.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *Percent) Clone() proto.Message { + var target *Percent + if m == nil { + return target + } + target = &Percent{} + + target.Value = m.GetValue() + + return target +} + +// Clone function +func (m *FractionalPercent) Clone() proto.Message { + var target *FractionalPercent + if m == nil { + return target + } + target = &FractionalPercent{} + + target.Numerator = m.GetNumerator() + + target.Denominator = m.GetDenominator() + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/type/v3/percent.pb.go b/pkg/api/gloo.solo.io/external/envoy/type/v3/percent.pb.go index 55c515701..efa308ad6 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/v3/percent.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/v3/percent.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/v3/percent.proto @@ -9,9 +9,9 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -25,10 +25,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Fraction percentages support several fixed denominator values. type FractionalPercent_DenominatorType int32 @@ -90,20 +86,17 @@ func (FractionalPercent_DenominatorType) EnumDescriptor() ([]byte, []int) { // Identifies a percentage, in the range [0.0, 100.0]. type Percent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Value float64 `protobuf:"fixed64,1,opt,name=value,proto3" json:"value,omitempty"` unknownFields protoimpl.UnknownFields - - Value float64 `protobuf:"fixed64,1,opt,name=value,proto3" json:"value,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Percent) Reset() { *x = Percent{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Percent) String() string { @@ -114,7 +107,7 @@ func (*Percent) ProtoMessage() {} func (x *Percent) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -143,24 +136,21 @@ func (x *Percent) GetValue() float64 { // * **Example**: 1/100 = 1%. // * **Example**: 3/10000 = 0.03%. type FractionalPercent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the numerator. Defaults to 0. Numerator uint32 `protobuf:"varint,1,opt,name=numerator,proto3" json:"numerator,omitempty"` // Specifies the denominator. If the denominator specified is less than the numerator, the final // fractional percentage is capped at 1 (100%). - Denominator FractionalPercent_DenominatorType `protobuf:"varint,2,opt,name=denominator,proto3,enum=solo.io.envoy.type.v3.FractionalPercent_DenominatorType" json:"denominator,omitempty"` + Denominator FractionalPercent_DenominatorType `protobuf:"varint,2,opt,name=denominator,proto3,enum=solo.io.envoy.type.v3.FractionalPercent_DenominatorType" json:"denominator,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FractionalPercent) Reset() { *x = FractionalPercent{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FractionalPercent) String() string { @@ -171,7 +161,7 @@ func (*FractionalPercent) ProtoMessage() {} func (x *FractionalPercent) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -202,7 +192,7 @@ func (x *FractionalPercent) GetDenominator() FractionalPercent_DenominatorType { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_rawDesc = string([]byte{ 0x0a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -238,33 +228,34 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_perce 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x49, 0x4c, 0x4c, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x3a, 0x24, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x1e, 0x0a, 0x1c, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, - 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x8f, 0x01, 0x0a, 0x23, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, - 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x33, 0x42, 0x0c, 0x50, - 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x48, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, - 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, - 0x74, 0x79, 0x70, 0x65, 0x2f, 0x76, 0x33, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0xb8, - 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x93, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, + 0xd0, 0xf5, 0x04, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x23, 0x69, 0x6f, + 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, + 0x33, 0x42, 0x0c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x48, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_goTypes = []any{ (FractionalPercent_DenominatorType)(0), // 0: solo.io.envoy.type.v3.FractionalPercent.DenominatorType (*Percent)(nil), // 1: solo.io.envoy.type.v3.Percent (*FractionalPercent)(nil), // 2: solo.io.envoy.type.v3.FractionalPercent @@ -285,37 +276,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_perc if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Percent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FractionalPercent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_rawDesc)), NumEnums: 1, NumMessages: 2, NumExtensions: 0, @@ -327,7 +292,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_perc MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_percent_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/type/v3/percent.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/type/v3/percent.pb.hash.go index ed9d2fb00..4c036af47 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/v3/percent.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/v3/percent.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Percent) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -47,6 +51,10 @@ func (m *Percent) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FractionalPercent) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/external/envoy/type/v3/percent.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/type/v3/percent.pb.uniquehash.go new file mode 100644 index 000000000..500e9ed3c --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/v3/percent.pb.uniquehash.go @@ -0,0 +1,90 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/v3/percent.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Percent) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/v3.Percent")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetValue()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FractionalPercent) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/v3.FractionalPercent")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Numerator")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetNumerator()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Denominator")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDenominator()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/type/v3/range.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/type/v3/range.pb.clone.go new file mode 100644 index 000000000..959e8268c --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/v3/range.pb.clone.go @@ -0,0 +1,71 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/v3/range.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *Int64Range) Clone() proto.Message { + var target *Int64Range + if m == nil { + return target + } + target = &Int64Range{} + + target.Start = m.GetStart() + + target.End = m.GetEnd() + + return target +} + +// Clone function +func (m *Int32Range) Clone() proto.Message { + var target *Int32Range + if m == nil { + return target + } + target = &Int32Range{} + + target.Start = m.GetStart() + + target.End = m.GetEnd() + + return target +} + +// Clone function +func (m *DoubleRange) Clone() proto.Message { + var target *DoubleRange + if m == nil { + return target + } + target = &DoubleRange{} + + target.Start = m.GetStart() + + target.End = m.GetEnd() + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/type/v3/range.pb.go b/pkg/api/gloo.solo.io/external/envoy/type/v3/range.pb.go index b9219eb69..69de890f8 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/v3/range.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/v3/range.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/v3/range.proto @@ -9,8 +9,8 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -24,30 +24,23 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Specifies the int64 start and end of the range using half-open interval semantics [start, // end). type Int64Range struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // start of the range (inclusive) Start int64 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"` // end of the range (exclusive) - End int64 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"` + End int64 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Int64Range) Reset() { *x = Int64Range{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Int64Range) String() string { @@ -58,7 +51,7 @@ func (*Int64Range) ProtoMessage() {} func (x *Int64Range) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -90,23 +83,20 @@ func (x *Int64Range) GetEnd() int64 { // Specifies the int32 start and end of the range using half-open interval semantics [start, // end). type Int32Range struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // start of the range (inclusive) Start int32 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"` // end of the range (exclusive) - End int32 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"` + End int32 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Int32Range) Reset() { *x = Int32Range{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Int32Range) String() string { @@ -117,7 +107,7 @@ func (*Int32Range) ProtoMessage() {} func (x *Int32Range) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -149,23 +139,20 @@ func (x *Int32Range) GetEnd() int32 { // Specifies the double start and end of the range using half-open interval semantics [start, // end). type DoubleRange struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // start of the range (inclusive) Start float64 `protobuf:"fixed64,1,opt,name=start,proto3" json:"start,omitempty"` // end of the range (exclusive) - End float64 `protobuf:"fixed64,2,opt,name=end,proto3" json:"end,omitempty"` + End float64 `protobuf:"fixed64,2,opt,name=end,proto3" json:"end,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DoubleRange) Reset() { *x = DoubleRange{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DoubleRange) String() string { @@ -176,7 +163,7 @@ func (*DoubleRange) ProtoMessage() {} func (x *DoubleRange) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -207,7 +194,7 @@ func (x *DoubleRange) GetEnd() float64 { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_rawDesc = string([]byte{ 0x0a, 0x4d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -236,32 +223,33 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x3a, 0x1e, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x18, 0x0a, 0x16, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, - 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x8d, 0x01, 0x0a, 0x23, 0x69, 0x6f, 0x2e, 0x65, 0x6e, - 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x33, 0x42, 0x0a, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x48, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, - 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, - 0x79, 0x70, 0x65, 0x2f, 0x76, 0x33, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0xb8, 0xf5, - 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x91, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, + 0x01, 0xd0, 0xf5, 0x04, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0x0a, 0x23, 0x69, + 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, + 0x76, 0x33, 0x42, 0x0a, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x48, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_goTypes = []any{ (*Int64Range)(nil), // 0: solo.io.envoy.type.v3.Int64Range (*Int32Range)(nil), // 1: solo.io.envoy.type.v3.Int32Range (*DoubleRange)(nil), // 2: solo.io.envoy.type.v3.DoubleRange @@ -281,49 +269,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_rang if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Int64Range); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Int32Range); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DoubleRange); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_rawDesc)), NumEnums: 0, NumMessages: 3, NumExtensions: 0, @@ -334,7 +284,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_rang MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_range_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/type/v3/range.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/type/v3/range.pb.hash.go index 52d178b97..f28b421a5 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/v3/range.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/v3/range.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Int64Range) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -52,6 +56,10 @@ func (m *Int64Range) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Int32Range) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -78,6 +86,10 @@ func (m *Int32Range) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *DoubleRange) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/external/envoy/type/v3/range.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/type/v3/range.pb.uniquehash.go new file mode 100644 index 000000000..f82976f6a --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/v3/range.pb.uniquehash.go @@ -0,0 +1,133 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/v3/range.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Int64Range) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/v3.Int64Range")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Start")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetStart()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("End")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetEnd()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Int32Range) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/v3.Int32Range")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Start")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetStart()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("End")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetEnd()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DoubleRange) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/v3.DoubleRange")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Start")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetStart()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("End")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetEnd()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/envoy/type/v3/semantic_version.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/type/v3/semantic_version.pb.clone.go new file mode 100644 index 000000000..dc420156d --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/v3/semantic_version.pb.clone.go @@ -0,0 +1,43 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/v3/semantic_version.proto + +package v3 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *SemanticVersion) Clone() proto.Message { + var target *SemanticVersion + if m == nil { + return target + } + target = &SemanticVersion{} + + target.MajorNumber = m.GetMajorNumber() + + target.MinorNumber = m.GetMinorNumber() + + target.Patch = m.GetPatch() + + return target +} diff --git a/pkg/api/gloo.solo.io/external/envoy/type/v3/semantic_version.pb.go b/pkg/api/gloo.solo.io/external/envoy/type/v3/semantic_version.pb.go index 4a27a2c10..72a8ff596 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/v3/semantic_version.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/v3/semantic_version.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/v3/semantic_version.proto @@ -9,8 +9,8 @@ package v3 import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -24,30 +24,23 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Envoy uses SemVer (https://semver.org/). Major/minor versions indicate // expected behaviors and APIs, the patch version field is used only // for security fixes and can be generally ignored. type SemanticVersion struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + MajorNumber uint32 `protobuf:"varint,1,opt,name=major_number,json=majorNumber,proto3" json:"major_number,omitempty"` + MinorNumber uint32 `protobuf:"varint,2,opt,name=minor_number,json=minorNumber,proto3" json:"minor_number,omitempty"` + Patch uint32 `protobuf:"varint,3,opt,name=patch,proto3" json:"patch,omitempty"` unknownFields protoimpl.UnknownFields - - MajorNumber uint32 `protobuf:"varint,1,opt,name=major_number,json=majorNumber,proto3" json:"major_number,omitempty"` - MinorNumber uint32 `protobuf:"varint,2,opt,name=minor_number,json=minorNumber,proto3" json:"minor_number,omitempty"` - Patch uint32 `protobuf:"varint,3,opt,name=patch,proto3" json:"patch,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SemanticVersion) Reset() { *x = SemanticVersion{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SemanticVersion) String() string { @@ -58,7 +51,7 @@ func (*SemanticVersion) ProtoMessage() {} func (x *SemanticVersion) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -96,7 +89,7 @@ func (x *SemanticVersion) GetPatch() uint32 { var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_rawDesc = string([]byte{ 0x0a, 0x58, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -118,33 +111,34 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_seman 0x72, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x3a, 0x22, 0x8a, 0xc8, 0xde, 0x8e, 0x04, 0x1c, 0x0a, 0x1a, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x53, 0x65, 0x6d, 0x61, - 0x6e, 0x74, 0x69, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x97, 0x01, 0x0a, 0x23, - 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, - 0x2e, 0x76, 0x33, 0x42, 0x14, 0x53, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x48, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, - 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, - 0x70, 0x65, 0x2f, 0x76, 0x33, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, 0x10, 0x02, 0xb8, 0xf5, 0x04, - 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x6e, 0x74, 0x69, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x9b, 0x01, 0xb8, 0xf5, + 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0xe2, 0xb5, 0xdf, 0xcb, 0x07, 0x02, + 0x10, 0x02, 0x0a, 0x23, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x33, 0x42, 0x14, 0x53, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, + 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x48, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_goTypes = []any{ (*SemanticVersion)(nil), // 0: solo.io.envoy.type.v3.SemanticVersion } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_depIdxs = []int32{ @@ -162,25 +156,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_sema if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SemanticVersion); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, @@ -191,7 +171,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_sema MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_type_v3_semantic_version_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/envoy/type/v3/semantic_version.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/type/v3/semantic_version.pb.hash.go index 8bd0b930b..395bbad71 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/v3/semantic_version.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/v3/semantic_version.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *SemanticVersion) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/external/envoy/type/v3/semantic_version.pb.uniquehash.go b/pkg/api/gloo.solo.io/external/envoy/type/v3/semantic_version.pb.uniquehash.go new file mode 100644 index 000000000..0bcb61dee --- /dev/null +++ b/pkg/api/gloo.solo.io/external/envoy/type/v3/semantic_version.pb.uniquehash.go @@ -0,0 +1,71 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/type/v3/semantic_version.proto + +package v3 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SemanticVersion) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("solo.io.envoy.type.v3.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/v3.SemanticVersion")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MajorNumber")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMajorNumber()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MinorNumber")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMinorNumber()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Patch")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPatch()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/external/udpa/annotations/migrate.pb.go b/pkg/api/gloo.solo.io/external/udpa/annotations/migrate.pb.go index 08f4b6b1e..b64043618 100644 --- a/pkg/api/gloo.solo.io/external/udpa/annotations/migrate.pb.go +++ b/pkg/api/gloo.solo.io/external/udpa/annotations/migrate.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/udpa/annotations/migrate.proto @@ -9,11 +9,11 @@ package annotations import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - descriptor "github.com/golang/protobuf/protoc-gen-go/descriptor" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + descriptorpb "google.golang.org/protobuf/types/descriptorpb" ) const ( @@ -23,26 +23,19 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type MigrateAnnotation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Rename the message/enum/enum value in next version. - Rename string `protobuf:"bytes,1,opt,name=rename,proto3" json:"rename,omitempty"` + Rename string `protobuf:"bytes,1,opt,name=rename,proto3" json:"rename,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MigrateAnnotation) Reset() { *x = MigrateAnnotation{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MigrateAnnotation) String() string { @@ -53,7 +46,7 @@ func (*MigrateAnnotation) ProtoMessage() {} func (x *MigrateAnnotation) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -76,25 +69,22 @@ func (x *MigrateAnnotation) GetRename() string { } type FieldMigrateAnnotation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Rename the field in next version. Rename string `protobuf:"bytes,1,opt,name=rename,proto3" json:"rename,omitempty"` // Add the field to a named oneof in next version. If this already exists, the // field will join its siblings under the oneof, otherwise a new oneof will be // created with the given name. OneofPromotion string `protobuf:"bytes,2,opt,name=oneof_promotion,json=oneofPromotion,proto3" json:"oneof_promotion,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FieldMigrateAnnotation) Reset() { *x = FieldMigrateAnnotation{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FieldMigrateAnnotation) String() string { @@ -105,7 +95,7 @@ func (*FieldMigrateAnnotation) ProtoMessage() {} func (x *FieldMigrateAnnotation) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -135,22 +125,19 @@ func (x *FieldMigrateAnnotation) GetOneofPromotion() string { } type FileMigrateAnnotation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Move all types in the file to another package, this implies changing proto // file path. MoveToPackage string `protobuf:"bytes,2,opt,name=move_to_package,json=moveToPackage,proto3" json:"move_to_package,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FileMigrateAnnotation) Reset() { *x = FileMigrateAnnotation{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FileMigrateAnnotation) String() string { @@ -161,7 +148,7 @@ func (*FileMigrateAnnotation) ProtoMessage() {} func (x *FileMigrateAnnotation) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -185,7 +172,7 @@ func (x *FileMigrateAnnotation) GetMoveToPackage() string { var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_extTypes = []protoimpl.ExtensionInfo{ { - ExtendedType: (*descriptor.MessageOptions)(nil), + ExtendedType: (*descriptorpb.MessageOptions)(nil), ExtensionType: (*MigrateAnnotation)(nil), Field: 146192544, Name: "solo.io.udpa.annotations.message_migrate", @@ -193,7 +180,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_mi Filename: "github.com/solo-io/solo-apis/api/gloo/gloo/external/udpa/annotations/migrate.proto", }, { - ExtendedType: (*descriptor.FieldOptions)(nil), + ExtendedType: (*descriptorpb.FieldOptions)(nil), ExtensionType: (*FieldMigrateAnnotation)(nil), Field: 146192544, Name: "solo.io.udpa.annotations.field_migrate", @@ -201,7 +188,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_mi Filename: "github.com/solo-io/solo-apis/api/gloo/gloo/external/udpa/annotations/migrate.proto", }, { - ExtendedType: (*descriptor.EnumOptions)(nil), + ExtendedType: (*descriptorpb.EnumOptions)(nil), ExtensionType: (*MigrateAnnotation)(nil), Field: 146192544, Name: "solo.io.udpa.annotations.enum_migrate", @@ -209,7 +196,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_mi Filename: "github.com/solo-io/solo-apis/api/gloo/gloo/external/udpa/annotations/migrate.proto", }, { - ExtendedType: (*descriptor.EnumValueOptions)(nil), + ExtendedType: (*descriptorpb.EnumValueOptions)(nil), ExtensionType: (*MigrateAnnotation)(nil), Field: 146192544, Name: "solo.io.udpa.annotations.enum_value_migrate", @@ -217,7 +204,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_mi Filename: "github.com/solo-io/solo-apis/api/gloo/gloo/external/udpa/annotations/migrate.proto", }, { - ExtendedType: (*descriptor.FileOptions)(nil), + ExtendedType: (*descriptorpb.FileOptions)(nil), ExtensionType: (*FileMigrateAnnotation)(nil), Field: 146192544, Name: "solo.io.udpa.annotations.file_migrate", @@ -226,31 +213,31 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_mi }, } -// Extension fields to descriptor.MessageOptions. +// Extension fields to descriptorpb.MessageOptions. var ( // optional solo.io.udpa.annotations.MigrateAnnotation message_migrate = 146192544; E_MessageMigrate = &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_extTypes[0] ) -// Extension fields to descriptor.FieldOptions. +// Extension fields to descriptorpb.FieldOptions. var ( // optional solo.io.udpa.annotations.FieldMigrateAnnotation field_migrate = 146192544; E_FieldMigrate = &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_extTypes[1] ) -// Extension fields to descriptor.EnumOptions. +// Extension fields to descriptorpb.EnumOptions. var ( // optional solo.io.udpa.annotations.MigrateAnnotation enum_migrate = 146192544; E_EnumMigrate = &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_extTypes[2] ) -// Extension fields to descriptor.EnumValueOptions. +// Extension fields to descriptorpb.EnumValueOptions. var ( // optional solo.io.udpa.annotations.MigrateAnnotation enum_value_migrate = 146192544; E_EnumValueMigrate = &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_extTypes[3] ) -// Extension fields to descriptor.FileOptions. +// Extension fields to descriptorpb.FileOptions. var ( // optional solo.io.udpa.annotations.FileMigrateAnnotation file_migrate = 146192544; E_FileMigrate = &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_extTypes[4] @@ -258,7 +245,7 @@ var ( var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_rawDesc = string([]byte{ 0x0a, 0x52, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -324,30 +311,30 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_mi 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_goTypes = []interface{}{ - (*MigrateAnnotation)(nil), // 0: solo.io.udpa.annotations.MigrateAnnotation - (*FieldMigrateAnnotation)(nil), // 1: solo.io.udpa.annotations.FieldMigrateAnnotation - (*FileMigrateAnnotation)(nil), // 2: solo.io.udpa.annotations.FileMigrateAnnotation - (*descriptor.MessageOptions)(nil), // 3: google.protobuf.MessageOptions - (*descriptor.FieldOptions)(nil), // 4: google.protobuf.FieldOptions - (*descriptor.EnumOptions)(nil), // 5: google.protobuf.EnumOptions - (*descriptor.EnumValueOptions)(nil), // 6: google.protobuf.EnumValueOptions - (*descriptor.FileOptions)(nil), // 7: google.protobuf.FileOptions +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_goTypes = []any{ + (*MigrateAnnotation)(nil), // 0: solo.io.udpa.annotations.MigrateAnnotation + (*FieldMigrateAnnotation)(nil), // 1: solo.io.udpa.annotations.FieldMigrateAnnotation + (*FileMigrateAnnotation)(nil), // 2: solo.io.udpa.annotations.FileMigrateAnnotation + (*descriptorpb.MessageOptions)(nil), // 3: google.protobuf.MessageOptions + (*descriptorpb.FieldOptions)(nil), // 4: google.protobuf.FieldOptions + (*descriptorpb.EnumOptions)(nil), // 5: google.protobuf.EnumOptions + (*descriptorpb.EnumValueOptions)(nil), // 6: google.protobuf.EnumValueOptions + (*descriptorpb.FileOptions)(nil), // 7: google.protobuf.FileOptions } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_depIdxs = []int32{ 3, // 0: solo.io.udpa.annotations.message_migrate:extendee -> google.protobuf.MessageOptions @@ -374,49 +361,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_m if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MigrateAnnotation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldMigrateAnnotation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FileMigrateAnnotation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_rawDesc)), NumEnums: 0, NumMessages: 3, NumExtensions: 5, @@ -428,7 +377,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_m ExtensionInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_extTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_migrate_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/udpa/annotations/sensitive.pb.go b/pkg/api/gloo.solo.io/external/udpa/annotations/sensitive.pb.go index 0c9de74f4..d8be004d9 100644 --- a/pkg/api/gloo.solo.io/external/udpa/annotations/sensitive.pb.go +++ b/pkg/api/gloo.solo.io/external/udpa/annotations/sensitive.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/udpa/annotations/sensitive.proto @@ -8,11 +8,11 @@ package annotations import ( reflect "reflect" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - descriptor "github.com/golang/protobuf/protoc-gen-go/descriptor" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + descriptorpb "google.golang.org/protobuf/types/descriptorpb" ) const ( @@ -22,13 +22,9 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_sensitive_proto_extTypes = []protoimpl.ExtensionInfo{ { - ExtendedType: (*descriptor.FieldOptions)(nil), + ExtendedType: (*descriptorpb.FieldOptions)(nil), ExtensionType: (*bool)(nil), Field: 168928285, Name: "solo.io.udpa.annotations.sensitive", @@ -37,7 +33,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_se }, } -// Extension fields to descriptor.FieldOptions. +// Extension fields to descriptorpb.FieldOptions. var ( // Magic number is the 28 most significant bits in the sha256sum of "solo.io.udpa.annotations.sensitive". // When set to true, `sensitive` indicates that this field contains sensitive data, such as @@ -51,7 +47,7 @@ var ( var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_sensitive_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_sensitive_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_sensitive_proto_rawDesc = string([]byte{ 0x0a, 0x54, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -71,10 +67,10 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_se 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_sensitive_proto_goTypes = []interface{}{ - (*descriptor.FieldOptions)(nil), // 0: google.protobuf.FieldOptions +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_sensitive_proto_goTypes = []any{ + (*descriptorpb.FieldOptions)(nil), // 0: google.protobuf.FieldOptions } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_sensitive_proto_depIdxs = []int32{ 0, // 0: solo.io.udpa.annotations.sensitive:extendee -> google.protobuf.FieldOptions @@ -96,7 +92,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_s out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_sensitive_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_sensitive_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_sensitive_proto_rawDesc)), NumEnums: 0, NumMessages: 0, NumExtensions: 1, @@ -107,7 +103,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_s ExtensionInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_sensitive_proto_extTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_sensitive_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_sensitive_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_sensitive_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_sensitive_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/udpa/annotations/status.pb.go b/pkg/api/gloo.solo.io/external/udpa/annotations/status.pb.go index b34bc457e..262bac65a 100644 --- a/pkg/api/gloo.solo.io/external/udpa/annotations/status.pb.go +++ b/pkg/api/gloo.solo.io/external/udpa/annotations/status.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/udpa/annotations/status.proto @@ -9,11 +9,11 @@ package annotations import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - descriptor "github.com/golang/protobuf/protoc-gen-go/descriptor" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + descriptorpb "google.golang.org/protobuf/types/descriptorpb" ) const ( @@ -23,10 +23,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type PackageVersionStatus int32 const ( @@ -85,23 +81,20 @@ func (PackageVersionStatus) EnumDescriptor() ([]byte, []int) { } type StatusAnnotation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The entity is work-in-progress and subject to breaking changes. WorkInProgress bool `protobuf:"varint,1,opt,name=work_in_progress,json=workInProgress,proto3" json:"work_in_progress,omitempty"` // The entity belongs to a package with the given version status. PackageVersionStatus PackageVersionStatus `protobuf:"varint,2,opt,name=package_version_status,json=packageVersionStatus,proto3,enum=solo.io.udpa.annotations.PackageVersionStatus" json:"package_version_status,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StatusAnnotation) Reset() { *x = StatusAnnotation{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StatusAnnotation) String() string { @@ -112,7 +105,7 @@ func (*StatusAnnotation) ProtoMessage() {} func (x *StatusAnnotation) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -143,7 +136,7 @@ func (x *StatusAnnotation) GetPackageVersionStatus() PackageVersionStatus { var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_extTypes = []protoimpl.ExtensionInfo{ { - ExtendedType: (*descriptor.FileOptions)(nil), + ExtendedType: (*descriptorpb.FileOptions)(nil), ExtensionType: (*StatusAnnotation)(nil), Field: 254737244, Name: "solo.io.udpa.annotations.file_status", @@ -152,7 +145,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_st }, } -// Extension fields to descriptor.FileOptions. +// Extension fields to descriptorpb.FileOptions. var ( // optional solo.io.udpa.annotations.StatusAnnotation file_status = 254737244; E_FileStatus = &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_extTypes[0] @@ -160,7 +153,7 @@ var ( var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_rawDesc = string([]byte{ 0x0a, 0x51, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -199,26 +192,26 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_st 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_goTypes = []interface{}{ - (PackageVersionStatus)(0), // 0: solo.io.udpa.annotations.PackageVersionStatus - (*StatusAnnotation)(nil), // 1: solo.io.udpa.annotations.StatusAnnotation - (*descriptor.FileOptions)(nil), // 2: google.protobuf.FileOptions +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_goTypes = []any{ + (PackageVersionStatus)(0), // 0: solo.io.udpa.annotations.PackageVersionStatus + (*StatusAnnotation)(nil), // 1: solo.io.udpa.annotations.StatusAnnotation + (*descriptorpb.FileOptions)(nil), // 2: google.protobuf.FileOptions } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_depIdxs = []int32{ 0, // 0: solo.io.udpa.annotations.StatusAnnotation.package_version_status:type_name -> solo.io.udpa.annotations.PackageVersionStatus @@ -238,25 +231,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_s if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusAnnotation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_rawDesc)), NumEnums: 1, NumMessages: 1, NumExtensions: 1, @@ -269,7 +248,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_s ExtensionInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_extTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_status_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/external/udpa/annotations/versioning.pb.go b/pkg/api/gloo.solo.io/external/udpa/annotations/versioning.pb.go index d609453c9..e02e77d38 100644 --- a/pkg/api/gloo.solo.io/external/udpa/annotations/versioning.pb.go +++ b/pkg/api/gloo.solo.io/external/udpa/annotations/versioning.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/external/udpa/annotations/versioning.proto @@ -9,11 +9,11 @@ package annotations import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - descriptor "github.com/golang/protobuf/protoc-gen-go/descriptor" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + descriptorpb "google.golang.org/protobuf/types/descriptorpb" ) const ( @@ -23,28 +23,21 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type VersioningAnnotation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Track the previous message type. E.g. this message might be // udpa.foo.v3alpha.Foo and it was previously udpa.bar.v2.Bar. This // information is consumed by UDPA via proto descriptors. PreviousMessageType string `protobuf:"bytes,1,opt,name=previous_message_type,json=previousMessageType,proto3" json:"previous_message_type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VersioningAnnotation) Reset() { *x = VersioningAnnotation{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VersioningAnnotation) String() string { @@ -55,7 +48,7 @@ func (*VersioningAnnotation) ProtoMessage() {} func (x *VersioningAnnotation) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -79,7 +72,7 @@ func (x *VersioningAnnotation) GetPreviousMessageType() string { var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_extTypes = []protoimpl.ExtensionInfo{ { - ExtendedType: (*descriptor.MessageOptions)(nil), + ExtendedType: (*descriptorpb.MessageOptions)(nil), ExtensionType: (*VersioningAnnotation)(nil), Field: 138081409, Name: "solo.io.udpa.annotations.versioning", @@ -88,7 +81,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_ve }, } -// Extension fields to descriptor.MessageOptions. +// Extension fields to descriptorpb.MessageOptions. var ( // Magic number in this file derived from top 28bit of SHA256 digest of // "solo.io.udpa.annotation.versioning". @@ -99,7 +92,7 @@ var ( var File_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_rawDesc = string([]byte{ 0x0a, 0x55, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, @@ -127,24 +120,24 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_ve 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_goTypes = []interface{}{ - (*VersioningAnnotation)(nil), // 0: solo.io.udpa.annotations.VersioningAnnotation - (*descriptor.MessageOptions)(nil), // 1: google.protobuf.MessageOptions +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_goTypes = []any{ + (*VersioningAnnotation)(nil), // 0: solo.io.udpa.annotations.VersioningAnnotation + (*descriptorpb.MessageOptions)(nil), // 1: google.protobuf.MessageOptions } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_depIdxs = []int32{ 1, // 0: solo.io.udpa.annotations.versioning:extendee -> google.protobuf.MessageOptions @@ -163,25 +156,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_v if File_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VersioningAnnotation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 1, @@ -193,7 +172,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_v ExtensionInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_extTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_external_udpa_annotations_versioning_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/artifact.pb.clone.go b/pkg/api/gloo.solo.io/v1/artifact.pb.clone.go new file mode 100644 index 000000000..7a008de30 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/artifact.pb.clone.go @@ -0,0 +1,54 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/artifact.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *Artifact) Clone() proto.Message { + var target *Artifact + if m == nil { + return target + } + target = &Artifact{} + + if m.GetData() != nil { + target.Data = make(map[string]string, len(m.GetData())) + for k, v := range m.GetData() { + + target.Data[k] = v + + } + } + + if h, ok := interface{}(m.GetMetadata()).(clone.Cloner); ok { + target.Metadata = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.Metadata) + } else { + target.Metadata = proto.Clone(m.GetMetadata()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.Metadata) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/artifact.pb.go b/pkg/api/gloo.solo.io/v1/artifact.pb.go index 890e2b0da..5f92320b2 100644 --- a/pkg/api/gloo.solo.io/v1/artifact.pb.go +++ b/pkg/api/gloo.solo.io/v1/artifact.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/artifact.proto @@ -9,8 +9,8 @@ package v1 import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -24,40 +24,32 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -// -//@solo-kit:resource.short_name=art -//@solo-kit:resource.plural_name=artifacts +// @solo-kit:resource.short_name=art +// @solo-kit:resource.plural_name=artifacts // -//Gloo Artifacts are used by Gloo to store small bits of binary or file data. +// Gloo Artifacts are used by Gloo to store small bits of binary or file data. // -//Certain options such as the gRPC option read and write artifacts to one of Gloo's configured -//storage layer. +// Certain options such as the gRPC option read and write artifacts to one of Gloo's configured +// storage layer. // -//Artifacts can be backed by files on disk, Kubernetes ConfigMaps, and Consul Key/Value pairs. +// Artifacts can be backed by files on disk, Kubernetes ConfigMaps, and Consul Key/Value pairs. // -//Supported artifact backends can be selected in Gloo's boostrap options. +// Supported artifact backends can be selected in Gloo's boostrap options. type Artifact struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Raw data data being stored - Data map[string]string `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Data map[string]string `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Metadata contains the object metadata for this resource - Metadata *core.Metadata `protobuf:"bytes,7,opt,name=metadata,proto3" json:"metadata,omitempty"` + Metadata *core.Metadata `protobuf:"bytes,7,opt,name=metadata,proto3" json:"metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Artifact) Reset() { *x = Artifact{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Artifact) String() string { @@ -68,7 +60,7 @@ func (*Artifact) ProtoMessage() {} func (x *Artifact) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -99,7 +91,7 @@ func (x *Artifact) GetMetadata() *core.Metadata { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_rawDesc = string([]byte{ 0x0a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -112,7 +104,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_rawDesc = 0x6f, 0x74, 0x6f, 0x1a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcd, 0x01, 0x0a, 0x08, 0x41, 0x72, 0x74, 0x69, 0x66, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc5, 0x01, 0x0a, 0x08, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x12, 0x34, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, @@ -123,29 +115,29 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_rawDesc = 0x09, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x1e, 0x82, 0xf1, 0x04, 0x05, 0x0a, 0x03, 0x61, 0x72, - 0x74, 0x82, 0xf1, 0x04, 0x0b, 0x12, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, - 0x82, 0xf1, 0x04, 0x02, 0x28, 0x01, 0x42, 0x3a, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x16, 0x82, 0xf1, 0x04, 0x12, 0x0a, 0x03, 0x61, 0x72, + 0x74, 0x12, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x28, 0x01, 0x42, 0x3e, + 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0xc0, 0xf5, - 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_goTypes = []any{ (*Artifact)(nil), // 0: gloo.solo.io.Artifact nil, // 1: gloo.solo.io.Artifact.DataEntry (*core.Metadata)(nil), // 2: core.solo.io.Metadata @@ -165,25 +157,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_init() { if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Artifact); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_rawDesc)), NumEnums: 0, NumMessages: 2, NumExtensions: 0, @@ -194,7 +172,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_init() { MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_artifact_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/circuit_breaker.pb.hash.go b/pkg/api/gloo.solo.io/v1/circuit_breaker.pb.hash.go deleted file mode 100644 index fc5711928..000000000 --- a/pkg/api/gloo.solo.io/v1/circuit_breaker.pb.hash.go +++ /dev/null @@ -1,98 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/circuit_breaker.proto - -package v1 - -import ( - "encoding/binary" - "errors" - "fmt" - "hash" - "hash/fnv" - - "github.com/mitchellh/hashstructure" - safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = new(hash.Hash64) - _ = fnv.New64 - _ = hashstructure.Hash - _ = new(safe_hasher.SafeHasher) -) - -// Hash function -func (m *CircuitBreakerConfig) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.CircuitBreakerConfig")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetMaxConnections()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMaxConnections(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetMaxPendingRequests()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMaxPendingRequests(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetMaxRequests()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMaxRequests(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetMaxRetries()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMaxRetries(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} diff --git a/pkg/api/gloo.solo.io/v1/circuit_breaker/circuit_breaker.pb.clone.go b/pkg/api/gloo.solo.io/v1/circuit_breaker/circuit_breaker.pb.clone.go new file mode 100644 index 000000000..2a68b7a76 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/circuit_breaker/circuit_breaker.pb.clone.go @@ -0,0 +1,65 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/circuit_breaker/circuit_breaker.proto + +package circuit_breaker + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *CircuitBreakerConfig) Clone() proto.Message { + var target *CircuitBreakerConfig + if m == nil { + return target + } + target = &CircuitBreakerConfig{} + + if h, ok := interface{}(m.GetMaxConnections()).(clone.Cloner); ok { + target.MaxConnections = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxConnections = proto.Clone(m.GetMaxConnections()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetMaxPendingRequests()).(clone.Cloner); ok { + target.MaxPendingRequests = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxPendingRequests = proto.Clone(m.GetMaxPendingRequests()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetMaxRequests()).(clone.Cloner); ok { + target.MaxRequests = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxRequests = proto.Clone(m.GetMaxRequests()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetMaxRetries()).(clone.Cloner); ok { + target.MaxRetries = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxRetries = proto.Clone(m.GetMaxRetries()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + target.TrackRemaining = m.GetTrackRemaining() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/circuit_breaker.pb.equal.go b/pkg/api/gloo.solo.io/v1/circuit_breaker/circuit_breaker.pb.equal.go similarity index 93% rename from pkg/api/gloo.solo.io/v1/circuit_breaker.pb.equal.go rename to pkg/api/gloo.solo.io/v1/circuit_breaker/circuit_breaker.pb.equal.go index 6d4edead7..36ac21285 100644 --- a/pkg/api/gloo.solo.io/v1/circuit_breaker.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/circuit_breaker/circuit_breaker.pb.equal.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/circuit_breaker.proto +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/circuit_breaker/circuit_breaker.proto -package v1 +package circuit_breaker import ( "bytes" @@ -86,5 +86,9 @@ func (m *CircuitBreakerConfig) Equal(that interface{}) bool { } } + if m.GetTrackRemaining() != target.GetTrackRemaining() { + return false + } + return true } diff --git a/pkg/api/gloo.solo.io/v1/circuit_breaker.pb.go b/pkg/api/gloo.solo.io/v1/circuit_breaker/circuit_breaker.pb.go similarity index 60% rename from pkg/api/gloo.solo.io/v1/circuit_breaker.pb.go rename to pkg/api/gloo.solo.io/v1/circuit_breaker/circuit_breaker.pb.go index 064573eef..2bfd7e4fc 100644 --- a/pkg/api/gloo.solo.io/v1/circuit_breaker.pb.go +++ b/pkg/api/gloo.solo.io/v1/circuit_breaker/circuit_breaker.pb.go @@ -1,20 +1,20 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 -// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/circuit_breaker.proto +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/circuit_breaker/circuit_breaker.proto -package v1 +package circuit_breaker import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -24,31 +24,25 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // CircuitBreakerConfig contains the options for customizing circuit breaking behavior. // See the [envoy docs](https://www.envoyproxy.io/docs/envoy/v1.14.1/api-v2/api/v2/cluster/circuit_breaker.proto#envoy-api-msg-cluster-circuitbreakers) // for the meaning of these values. type CircuitBreakerConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - MaxConnections *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=max_connections,json=maxConnections,proto3" json:"max_connections,omitempty"` - MaxPendingRequests *wrappers.UInt32Value `protobuf:"bytes,2,opt,name=max_pending_requests,json=maxPendingRequests,proto3" json:"max_pending_requests,omitempty"` - MaxRequests *wrappers.UInt32Value `protobuf:"bytes,3,opt,name=max_requests,json=maxRequests,proto3" json:"max_requests,omitempty"` - MaxRetries *wrappers.UInt32Value `protobuf:"bytes,4,opt,name=max_retries,json=maxRetries,proto3" json:"max_retries,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + MaxConnections *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=max_connections,json=maxConnections,proto3" json:"max_connections,omitempty"` + MaxPendingRequests *wrapperspb.UInt32Value `protobuf:"bytes,2,opt,name=max_pending_requests,json=maxPendingRequests,proto3" json:"max_pending_requests,omitempty"` + MaxRequests *wrapperspb.UInt32Value `protobuf:"bytes,3,opt,name=max_requests,json=maxRequests,proto3" json:"max_requests,omitempty"` + MaxRetries *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=max_retries,json=maxRetries,proto3" json:"max_retries,omitempty"` + TrackRemaining bool `protobuf:"varint,5,opt,name=track_remaining,json=trackRemaining,proto3" json:"track_remaining,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CircuitBreakerConfig) Reset() { *x = CircuitBreakerConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CircuitBreakerConfig) String() string { @@ -58,8 +52,8 @@ func (x *CircuitBreakerConfig) String() string { func (*CircuitBreakerConfig) ProtoMessage() {} func (x *CircuitBreakerConfig) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_msgTypes[0] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -71,49 +65,57 @@ func (x *CircuitBreakerConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use CircuitBreakerConfig.ProtoReflect.Descriptor instead. func (*CircuitBreakerConfig) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_rawDescGZIP(), []int{0} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_rawDescGZIP(), []int{0} } -func (x *CircuitBreakerConfig) GetMaxConnections() *wrappers.UInt32Value { +func (x *CircuitBreakerConfig) GetMaxConnections() *wrapperspb.UInt32Value { if x != nil { return x.MaxConnections } return nil } -func (x *CircuitBreakerConfig) GetMaxPendingRequests() *wrappers.UInt32Value { +func (x *CircuitBreakerConfig) GetMaxPendingRequests() *wrapperspb.UInt32Value { if x != nil { return x.MaxPendingRequests } return nil } -func (x *CircuitBreakerConfig) GetMaxRequests() *wrappers.UInt32Value { +func (x *CircuitBreakerConfig) GetMaxRequests() *wrapperspb.UInt32Value { if x != nil { return x.MaxRequests } return nil } -func (x *CircuitBreakerConfig) GetMaxRetries() *wrappers.UInt32Value { +func (x *CircuitBreakerConfig) GetMaxRetries() *wrapperspb.UInt32Value { if x != nil { return x.MaxRetries } return nil } -var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto protoreflect.FileDescriptor +func (x *CircuitBreakerConfig) GetTrackRemaining() bool { + if x != nil { + return x.TrackRemaining + } + return false +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_rawDesc = []byte{ - 0x0a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_rawDesc = string([]byte{ + 0x0a, 0x53, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x2f, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, - 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xad, 0x02, 0x0a, 0x14, 0x43, 0x69, 0x72, 0x63, + 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd6, 0x02, 0x0a, 0x14, 0x43, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x45, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, @@ -132,31 +134,35 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_raw 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6d, 0x61, 0x78, - 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x42, 0x3e, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0xc0, - 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x63, 0x6b, + 0x5f, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, + 0x42, 0x52, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x44, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x5f, 0x62, 0x72, 0x65, + 0x61, 0x6b, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_rawDescData []byte ) -func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_rawDescGZIP() []byte { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_rawDescData) +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_rawDesc))) }) - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_rawDescData + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_goTypes = []interface{}{ - (*CircuitBreakerConfig)(nil), // 0: gloo.solo.io.CircuitBreakerConfig - (*wrappers.UInt32Value)(nil), // 1: google.protobuf.UInt32Value +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_goTypes = []any{ + (*CircuitBreakerConfig)(nil), // 0: gloo.solo.io.CircuitBreakerConfig + (*wrapperspb.UInt32Value)(nil), // 1: google.protobuf.UInt32Value } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_depIdxs = []int32{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_depIdxs = []int32{ 1, // 0: gloo.solo.io.CircuitBreakerConfig.max_connections:type_name -> google.protobuf.UInt32Value 1, // 1: gloo.solo.io.CircuitBreakerConfig.max_pending_requests:type_name -> google.protobuf.UInt32Value 1, // 2: gloo.solo.io.CircuitBreakerConfig.max_requests:type_name -> google.protobuf.UInt32Value @@ -168,41 +174,28 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_dep 0, // [0:4] is the sub-list for field type_name } -func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_init() } -func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_init() { - if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto != nil { +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CircuitBreakerConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, NumServices: 0, }, - GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_goTypes, - DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_depIdxs, - MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_msgTypes, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_msgTypes, }.Build() - File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_rawDesc = nil - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_goTypes = nil - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_depIdxs = nil + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_circuit_breaker_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/circuit_breaker/circuit_breaker.pb.hash.go b/pkg/api/gloo.solo.io/v1/circuit_breaker/circuit_breaker.pb.hash.go new file mode 100644 index 000000000..23127e476 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/circuit_breaker/circuit_breaker.pb.hash.go @@ -0,0 +1,131 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/circuit_breaker/circuit_breaker.proto + +package circuit_breaker + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *CircuitBreakerConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/circuit_breaker.CircuitBreakerConfig")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxConnections()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxConnections")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxConnections(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxConnections")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxPendingRequests()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxPendingRequests")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxPendingRequests(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxPendingRequests")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxRequests()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxRequests")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxRequests(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxRequests")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxRetries()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxRetries")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxRetries(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxRetries")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetTrackRemaining()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/circuit_breaker/circuit_breaker.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/circuit_breaker/circuit_breaker.pb.uniquehash.go new file mode 100644 index 000000000..e6b6b0842 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/circuit_breaker/circuit_breaker.pb.uniquehash.go @@ -0,0 +1,135 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/circuit_breaker/circuit_breaker.proto + +package circuit_breaker + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *CircuitBreakerConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/circuit_breaker.CircuitBreakerConfig")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxConnections()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxConnections")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxConnections(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxConnections")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxPendingRequests()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxPendingRequests")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxPendingRequests(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxPendingRequests")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxRequests()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxRequests")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxRequests(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxRequests")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxRetries()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxRetries")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxRetries(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxRetries")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("TrackRemaining")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetTrackRemaining()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/clients.go b/pkg/api/gloo.solo.io/v1/clients.go index 481c5b3c8..f6657735b 100644 --- a/pkg/api/gloo.solo.io/v1/clients.go +++ b/pkg/api/gloo.solo.io/v1/clients.go @@ -55,7 +55,7 @@ type clientSet struct { func NewClientsetFromConfig(cfg *rest.Config) (Clientset, error) { scheme := scheme.Scheme - if err := AddToScheme(scheme); err != nil { + if err := SchemeBuilder.AddToScheme(scheme); err != nil { return nil, err } client, err := client.New(cfg, client.Options{ @@ -129,10 +129,10 @@ type SettingsWriter interface { type SettingsStatusWriter interface { // Update updates the fields corresponding to the status subresource for the // given Settings object. - UpdateSettingsStatus(ctx context.Context, obj *Settings, opts ...client.UpdateOption) error + UpdateSettingsStatus(ctx context.Context, obj *Settings, opts ...client.SubResourceUpdateOption) error // Patch patches the given Settings object's subresource. - PatchSettingsStatus(ctx context.Context, obj *Settings, patch client.Patch, opts ...client.PatchOption) error + PatchSettingsStatus(ctx context.Context, obj *Settings, patch client.Patch, opts ...client.SubResourcePatchOption) error } // Client knows how to perform CRUD operations on Settingss. @@ -203,11 +203,11 @@ func (c *settingsClient) UpsertSettings(ctx context.Context, obj *Settings, tran return err } -func (c *settingsClient) UpdateSettingsStatus(ctx context.Context, obj *Settings, opts ...client.UpdateOption) error { +func (c *settingsClient) UpdateSettingsStatus(ctx context.Context, obj *Settings, opts ...client.SubResourceUpdateOption) error { return c.client.Status().Update(ctx, obj, opts...) } -func (c *settingsClient) PatchSettingsStatus(ctx context.Context, obj *Settings, patch client.Patch, opts ...client.PatchOption) error { +func (c *settingsClient) PatchSettingsStatus(ctx context.Context, obj *Settings, patch client.Patch, opts ...client.SubResourcePatchOption) error { return c.client.Status().Patch(ctx, obj, patch, opts...) } @@ -271,10 +271,10 @@ type UpstreamWriter interface { type UpstreamStatusWriter interface { // Update updates the fields corresponding to the status subresource for the // given Upstream object. - UpdateUpstreamStatus(ctx context.Context, obj *Upstream, opts ...client.UpdateOption) error + UpdateUpstreamStatus(ctx context.Context, obj *Upstream, opts ...client.SubResourceUpdateOption) error // Patch patches the given Upstream object's subresource. - PatchUpstreamStatus(ctx context.Context, obj *Upstream, patch client.Patch, opts ...client.PatchOption) error + PatchUpstreamStatus(ctx context.Context, obj *Upstream, patch client.Patch, opts ...client.SubResourcePatchOption) error } // Client knows how to perform CRUD operations on Upstreams. @@ -345,11 +345,11 @@ func (c *upstreamClient) UpsertUpstream(ctx context.Context, obj *Upstream, tran return err } -func (c *upstreamClient) UpdateUpstreamStatus(ctx context.Context, obj *Upstream, opts ...client.UpdateOption) error { +func (c *upstreamClient) UpdateUpstreamStatus(ctx context.Context, obj *Upstream, opts ...client.SubResourceUpdateOption) error { return c.client.Status().Update(ctx, obj, opts...) } -func (c *upstreamClient) PatchUpstreamStatus(ctx context.Context, obj *Upstream, patch client.Patch, opts ...client.PatchOption) error { +func (c *upstreamClient) PatchUpstreamStatus(ctx context.Context, obj *Upstream, patch client.Patch, opts ...client.SubResourcePatchOption) error { return c.client.Status().Patch(ctx, obj, patch, opts...) } @@ -413,10 +413,10 @@ type UpstreamGroupWriter interface { type UpstreamGroupStatusWriter interface { // Update updates the fields corresponding to the status subresource for the // given UpstreamGroup object. - UpdateUpstreamGroupStatus(ctx context.Context, obj *UpstreamGroup, opts ...client.UpdateOption) error + UpdateUpstreamGroupStatus(ctx context.Context, obj *UpstreamGroup, opts ...client.SubResourceUpdateOption) error // Patch patches the given UpstreamGroup object's subresource. - PatchUpstreamGroupStatus(ctx context.Context, obj *UpstreamGroup, patch client.Patch, opts ...client.PatchOption) error + PatchUpstreamGroupStatus(ctx context.Context, obj *UpstreamGroup, patch client.Patch, opts ...client.SubResourcePatchOption) error } // Client knows how to perform CRUD operations on UpstreamGroups. @@ -487,11 +487,11 @@ func (c *upstreamGroupClient) UpsertUpstreamGroup(ctx context.Context, obj *Upst return err } -func (c *upstreamGroupClient) UpdateUpstreamGroupStatus(ctx context.Context, obj *UpstreamGroup, opts ...client.UpdateOption) error { +func (c *upstreamGroupClient) UpdateUpstreamGroupStatus(ctx context.Context, obj *UpstreamGroup, opts ...client.SubResourceUpdateOption) error { return c.client.Status().Update(ctx, obj, opts...) } -func (c *upstreamGroupClient) PatchUpstreamGroupStatus(ctx context.Context, obj *UpstreamGroup, patch client.Patch, opts ...client.PatchOption) error { +func (c *upstreamGroupClient) PatchUpstreamGroupStatus(ctx context.Context, obj *UpstreamGroup, patch client.Patch, opts ...client.SubResourcePatchOption) error { return c.client.Status().Patch(ctx, obj, patch, opts...) } @@ -555,10 +555,10 @@ type ProxyWriter interface { type ProxyStatusWriter interface { // Update updates the fields corresponding to the status subresource for the // given Proxy object. - UpdateProxyStatus(ctx context.Context, obj *Proxy, opts ...client.UpdateOption) error + UpdateProxyStatus(ctx context.Context, obj *Proxy, opts ...client.SubResourceUpdateOption) error // Patch patches the given Proxy object's subresource. - PatchProxyStatus(ctx context.Context, obj *Proxy, patch client.Patch, opts ...client.PatchOption) error + PatchProxyStatus(ctx context.Context, obj *Proxy, patch client.Patch, opts ...client.SubResourcePatchOption) error } // Client knows how to perform CRUD operations on Proxys. @@ -629,11 +629,11 @@ func (c *proxyClient) UpsertProxy(ctx context.Context, obj *Proxy, transitionFun return err } -func (c *proxyClient) UpdateProxyStatus(ctx context.Context, obj *Proxy, opts ...client.UpdateOption) error { +func (c *proxyClient) UpdateProxyStatus(ctx context.Context, obj *Proxy, opts ...client.SubResourceUpdateOption) error { return c.client.Status().Update(ctx, obj, opts...) } -func (c *proxyClient) PatchProxyStatus(ctx context.Context, obj *Proxy, patch client.Patch, opts ...client.PatchOption) error { +func (c *proxyClient) PatchProxyStatus(ctx context.Context, obj *Proxy, patch client.Patch, opts ...client.SubResourcePatchOption) error { return c.client.Status().Patch(ctx, obj, patch, opts...) } diff --git a/pkg/api/gloo.solo.io/v1/connection.pb.clone.go b/pkg/api/gloo.solo.io/v1/connection.pb.clone.go new file mode 100644 index 000000000..7db4fa8e1 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/connection.pb.clone.go @@ -0,0 +1,100 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/connection.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_protocol "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/protocol" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *ConnectionConfig) Clone() proto.Message { + var target *ConnectionConfig + if m == nil { + return target + } + target = &ConnectionConfig{} + + target.MaxRequestsPerConnection = m.GetMaxRequestsPerConnection() + + if h, ok := interface{}(m.GetConnectTimeout()).(clone.Cloner); ok { + target.ConnectTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.ConnectTimeout = proto.Clone(m.GetConnectTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetTcpKeepalive()).(clone.Cloner); ok { + target.TcpKeepalive = h.Clone().(*ConnectionConfig_TcpKeepAlive) + } else { + target.TcpKeepalive = proto.Clone(m.GetTcpKeepalive()).(*ConnectionConfig_TcpKeepAlive) + } + + if h, ok := interface{}(m.GetPerConnectionBufferLimitBytes()).(clone.Cloner); ok { + target.PerConnectionBufferLimitBytes = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.PerConnectionBufferLimitBytes = proto.Clone(m.GetPerConnectionBufferLimitBytes()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetCommonHttpProtocolOptions()).(clone.Cloner); ok { + target.CommonHttpProtocolOptions = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_protocol.HttpProtocolOptions) + } else { + target.CommonHttpProtocolOptions = proto.Clone(m.GetCommonHttpProtocolOptions()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_protocol.HttpProtocolOptions) + } + + if h, ok := interface{}(m.GetHttp1ProtocolOptions()).(clone.Cloner); ok { + target.Http1ProtocolOptions = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_protocol.Http1ProtocolOptions) + } else { + target.Http1ProtocolOptions = proto.Clone(m.GetHttp1ProtocolOptions()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_protocol.Http1ProtocolOptions) + } + + return target +} + +// Clone function +func (m *ConnectionConfig_TcpKeepAlive) Clone() proto.Message { + var target *ConnectionConfig_TcpKeepAlive + if m == nil { + return target + } + target = &ConnectionConfig_TcpKeepAlive{} + + target.KeepaliveProbes = m.GetKeepaliveProbes() + + if h, ok := interface{}(m.GetKeepaliveTime()).(clone.Cloner); ok { + target.KeepaliveTime = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.KeepaliveTime = proto.Clone(m.GetKeepaliveTime()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetKeepaliveInterval()).(clone.Cloner); ok { + target.KeepaliveInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.KeepaliveInterval = proto.Clone(m.GetKeepaliveInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/connection.pb.equal.go b/pkg/api/gloo.solo.io/v1/connection.pb.equal.go index b14618fe1..a52e616c5 100644 --- a/pkg/api/gloo.solo.io/v1/connection.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/connection.pb.equal.go @@ -90,6 +90,16 @@ func (m *ConnectionConfig) Equal(that interface{}) bool { } } + if h, ok := interface{}(m.GetHttp1ProtocolOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetHttp1ProtocolOptions()) { + return false + } + } else { + if !proto.Equal(m.GetHttp1ProtocolOptions(), target.GetHttp1ProtocolOptions()) { + return false + } + } + return true } @@ -140,55 +150,3 @@ func (m *ConnectionConfig_TcpKeepAlive) Equal(that interface{}) bool { return true } - -// Equal function -func (m *ConnectionConfig_HttpProtocolOptions) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ConnectionConfig_HttpProtocolOptions) - if !ok { - that2, ok := that.(ConnectionConfig_HttpProtocolOptions) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetIdleTimeout()).(equality.Equalizer); ok { - if !h.Equal(target.GetIdleTimeout()) { - return false - } - } else { - if !proto.Equal(m.GetIdleTimeout(), target.GetIdleTimeout()) { - return false - } - } - - if m.GetMaxHeadersCount() != target.GetMaxHeadersCount() { - return false - } - - if h, ok := interface{}(m.GetMaxStreamDuration()).(equality.Equalizer); ok { - if !h.Equal(target.GetMaxStreamDuration()) { - return false - } - } else { - if !proto.Equal(m.GetMaxStreamDuration(), target.GetMaxStreamDuration()) { - return false - } - } - - if m.GetHeadersWithUnderscoresAction() != target.GetHeadersWithUnderscoresAction() { - return false - } - - return true -} diff --git a/pkg/api/gloo.solo.io/v1/connection.pb.go b/pkg/api/gloo.solo.io/v1/connection.pb.go index 1f19638e7..4dd80164e 100644 --- a/pkg/api/gloo.solo.io/v1/connection.pb.go +++ b/pkg/api/gloo.solo.io/v1/connection.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/connection.proto @@ -9,13 +9,14 @@ package v1 import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - duration "github.com/golang/protobuf/ptypes/duration" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" + protocol "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/protocol" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -25,98 +26,32 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -// Action to take when Envoy receives client request with header names containing underscore -// characters. -// Underscore character is allowed in header names by the RFC-7230 and this behavior is implemented -// as a security measure due to systems that treat '_' and '-' as interchangeable. Envoy by default allows client request headers with underscore -// characters. -type ConnectionConfig_HttpProtocolOptions_HeadersWithUnderscoresAction int32 - -const ( - // Allow headers with underscores. This is the default behavior. - ConnectionConfig_HttpProtocolOptions_ALLOW ConnectionConfig_HttpProtocolOptions_HeadersWithUnderscoresAction = 0 - // Reject client request. HTTP/1 requests are rejected with the 400 status. HTTP/2 requests - // end with the stream reset. The "httpN.requests_rejected_with_underscores_in_headers" counter - // is incremented for each rejected request. - ConnectionConfig_HttpProtocolOptions_REJECT_REQUEST ConnectionConfig_HttpProtocolOptions_HeadersWithUnderscoresAction = 1 - // Drop the header with name containing underscores. The header is dropped before the filter chain is - // invoked and as such filters will not see dropped headers. The - // "httpN.dropped_headers_with_underscores" is incremented for each dropped header. - ConnectionConfig_HttpProtocolOptions_DROP_HEADER ConnectionConfig_HttpProtocolOptions_HeadersWithUnderscoresAction = 2 -) - -// Enum value maps for ConnectionConfig_HttpProtocolOptions_HeadersWithUnderscoresAction. -var ( - ConnectionConfig_HttpProtocolOptions_HeadersWithUnderscoresAction_name = map[int32]string{ - 0: "ALLOW", - 1: "REJECT_REQUEST", - 2: "DROP_HEADER", - } - ConnectionConfig_HttpProtocolOptions_HeadersWithUnderscoresAction_value = map[string]int32{ - "ALLOW": 0, - "REJECT_REQUEST": 1, - "DROP_HEADER": 2, - } -) - -func (x ConnectionConfig_HttpProtocolOptions_HeadersWithUnderscoresAction) Enum() *ConnectionConfig_HttpProtocolOptions_HeadersWithUnderscoresAction { - p := new(ConnectionConfig_HttpProtocolOptions_HeadersWithUnderscoresAction) - *p = x - return p -} - -func (x ConnectionConfig_HttpProtocolOptions_HeadersWithUnderscoresAction) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ConnectionConfig_HttpProtocolOptions_HeadersWithUnderscoresAction) Descriptor() protoreflect.EnumDescriptor { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_enumTypes[0].Descriptor() -} - -func (ConnectionConfig_HttpProtocolOptions_HeadersWithUnderscoresAction) Type() protoreflect.EnumType { - return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_enumTypes[0] -} - -func (x ConnectionConfig_HttpProtocolOptions_HeadersWithUnderscoresAction) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use ConnectionConfig_HttpProtocolOptions_HeadersWithUnderscoresAction.Descriptor instead. -func (ConnectionConfig_HttpProtocolOptions_HeadersWithUnderscoresAction) EnumDescriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_rawDescGZIP(), []int{0, 1, 0} -} - // Fine tune the settings for connections to an upstream type ConnectionConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Maximum requests for a single upstream connection (unspecified or zero = no limit) MaxRequestsPerConnection uint32 `protobuf:"varint,1,opt,name=max_requests_per_connection,json=maxRequestsPerConnection,proto3" json:"max_requests_per_connection,omitempty"` // The timeout for new network connections to hosts in the cluster - ConnectTimeout *duration.Duration `protobuf:"bytes,2,opt,name=connect_timeout,json=connectTimeout,proto3" json:"connect_timeout,omitempty"` + ConnectTimeout *durationpb.Duration `protobuf:"bytes,2,opt,name=connect_timeout,json=connectTimeout,proto3" json:"connect_timeout,omitempty"` // Configure OS-level tcp keepalive checks TcpKeepalive *ConnectionConfig_TcpKeepAlive `protobuf:"bytes,3,opt,name=tcp_keepalive,json=tcpKeepalive,proto3" json:"tcp_keepalive,omitempty"` // Soft limit on size of the cluster’s connections read and write buffers. If unspecified, an implementation defined default is applied (1MiB). // For more info, see the [envoy docs](https://www.envoyproxy.io/docs/envoy/v1.14.1/api-v2/api/v2/cluster.proto#cluster) - PerConnectionBufferLimitBytes *wrappers.UInt32Value `protobuf:"bytes,4,opt,name=per_connection_buffer_limit_bytes,json=perConnectionBufferLimitBytes,proto3" json:"per_connection_buffer_limit_bytes,omitempty"` + PerConnectionBufferLimitBytes *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=per_connection_buffer_limit_bytes,json=perConnectionBufferLimitBytes,proto3" json:"per_connection_buffer_limit_bytes,omitempty"` // Additional options when handling HTTP requests upstream. These options will be applicable to // both HTTP1 and HTTP2 requests. - CommonHttpProtocolOptions *ConnectionConfig_HttpProtocolOptions `protobuf:"bytes,5,opt,name=common_http_protocol_options,json=commonHttpProtocolOptions,proto3" json:"common_http_protocol_options,omitempty"` + CommonHttpProtocolOptions *protocol.HttpProtocolOptions `protobuf:"bytes,5,opt,name=common_http_protocol_options,json=commonHttpProtocolOptions,proto3" json:"common_http_protocol_options,omitempty"` + // Additional Options when handling HTTP requests upstream. These options will be applicable only to HTTP1 requests. + Http1ProtocolOptions *protocol.Http1ProtocolOptions `protobuf:"bytes,6,opt,name=http1_protocol_options,json=http1ProtocolOptions,proto3" json:"http1_protocol_options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ConnectionConfig) Reset() { *x = ConnectionConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ConnectionConfig) String() string { @@ -127,7 +62,7 @@ func (*ConnectionConfig) ProtoMessage() {} func (x *ConnectionConfig) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -149,7 +84,7 @@ func (x *ConnectionConfig) GetMaxRequestsPerConnection() uint32 { return 0 } -func (x *ConnectionConfig) GetConnectTimeout() *duration.Duration { +func (x *ConnectionConfig) GetConnectTimeout() *durationpb.Duration { if x != nil { return x.ConnectTimeout } @@ -163,42 +98,46 @@ func (x *ConnectionConfig) GetTcpKeepalive() *ConnectionConfig_TcpKeepAlive { return nil } -func (x *ConnectionConfig) GetPerConnectionBufferLimitBytes() *wrappers.UInt32Value { +func (x *ConnectionConfig) GetPerConnectionBufferLimitBytes() *wrapperspb.UInt32Value { if x != nil { return x.PerConnectionBufferLimitBytes } return nil } -func (x *ConnectionConfig) GetCommonHttpProtocolOptions() *ConnectionConfig_HttpProtocolOptions { +func (x *ConnectionConfig) GetCommonHttpProtocolOptions() *protocol.HttpProtocolOptions { if x != nil { return x.CommonHttpProtocolOptions } return nil } +func (x *ConnectionConfig) GetHttp1ProtocolOptions() *protocol.Http1ProtocolOptions { + if x != nil { + return x.Http1ProtocolOptions + } + return nil +} + // If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives. -// see more info here: https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/core/address.proto#envoy-api-msg-core-tcpkeepalive +// see more info here: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/address.proto#config-core-v3-tcpkeepalive type ConnectionConfig_TcpKeepAlive struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Maximum number of keepalive probes to send without response before deciding the connection is dead. KeepaliveProbes uint32 `protobuf:"varint,1,opt,name=keepalive_probes,json=keepaliveProbes,proto3" json:"keepalive_probes,omitempty"` // The number of seconds a connection needs to be idle before keep-alive probes start being sent. This is rounded up to the second. - KeepaliveTime *duration.Duration `protobuf:"bytes,2,opt,name=keepalive_time,json=keepaliveTime,proto3" json:"keepalive_time,omitempty"` + KeepaliveTime *durationpb.Duration `protobuf:"bytes,2,opt,name=keepalive_time,json=keepaliveTime,proto3" json:"keepalive_time,omitempty"` // The number of seconds between keep-alive probes. This is rounded up to the second. - KeepaliveInterval *duration.Duration `protobuf:"bytes,3,opt,name=keepalive_interval,json=keepaliveInterval,proto3" json:"keepalive_interval,omitempty"` + KeepaliveInterval *durationpb.Duration `protobuf:"bytes,3,opt,name=keepalive_interval,json=keepaliveInterval,proto3" json:"keepalive_interval,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ConnectionConfig_TcpKeepAlive) Reset() { *x = ConnectionConfig_TcpKeepAlive{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ConnectionConfig_TcpKeepAlive) String() string { @@ -209,7 +148,7 @@ func (*ConnectionConfig_TcpKeepAlive) ProtoMessage() {} func (x *ConnectionConfig_TcpKeepAlive) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -231,236 +170,127 @@ func (x *ConnectionConfig_TcpKeepAlive) GetKeepaliveProbes() uint32 { return 0 } -func (x *ConnectionConfig_TcpKeepAlive) GetKeepaliveTime() *duration.Duration { +func (x *ConnectionConfig_TcpKeepAlive) GetKeepaliveTime() *durationpb.Duration { if x != nil { return x.KeepaliveTime } return nil } -func (x *ConnectionConfig_TcpKeepAlive) GetKeepaliveInterval() *duration.Duration { +func (x *ConnectionConfig_TcpKeepAlive) GetKeepaliveInterval() *durationpb.Duration { if x != nil { return x.KeepaliveInterval } return nil } -type ConnectionConfig_HttpProtocolOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The idle timeout for connections. The idle timeout is defined as the - // period in which there are no active requests. When the - // idle timeout is reached the connection will be closed. If the connection is an HTTP/2 - // downstream connection a drain sequence will occur prior to closing the connection, see - // :ref:`drain_timeout - // `. - // Note that request based timeouts mean that HTTP/2 PINGs will not keep the connection alive. - // If not specified, this defaults to 1 hour. To disable idle timeouts explicitly set this to 0. - // - // .. warning:: - // Disabling this timeout has a highly likelihood of yielding connection leaks due to lost TCP - // FIN packets, etc. - IdleTimeout *duration.Duration `protobuf:"bytes,1,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"` - // The maximum number of headers. If unconfigured, the default - // maximum number of request headers allowed is 100. Requests that exceed this limit will receive - // a 431 response for HTTP/1.x and cause a stream reset for HTTP/2. - MaxHeadersCount uint32 `protobuf:"varint,2,opt,name=max_headers_count,json=maxHeadersCount,proto3" json:"max_headers_count,omitempty"` - // Total duration to keep alive an HTTP request/response stream. If the time limit is reached the stream will be - // reset independent of any other timeouts. If not specified, this value is not set. - MaxStreamDuration *duration.Duration `protobuf:"bytes,3,opt,name=max_stream_duration,json=maxStreamDuration,proto3" json:"max_stream_duration,omitempty"` - // Action to take when a client request with a header name containing underscore characters is received. - // If this setting is not specified, the value defaults to ALLOW. - // Note: upstream responses are not affected by this setting. - HeadersWithUnderscoresAction ConnectionConfig_HttpProtocolOptions_HeadersWithUnderscoresAction `protobuf:"varint,4,opt,name=headers_with_underscores_action,json=headersWithUnderscoresAction,proto3,enum=gloo.solo.io.ConnectionConfig_HttpProtocolOptions_HeadersWithUnderscoresAction" json:"headers_with_underscores_action,omitempty"` -} - -func (x *ConnectionConfig_HttpProtocolOptions) Reset() { - *x = ConnectionConfig_HttpProtocolOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ConnectionConfig_HttpProtocolOptions) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ConnectionConfig_HttpProtocolOptions) ProtoMessage() {} - -func (x *ConnectionConfig_HttpProtocolOptions) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ConnectionConfig_HttpProtocolOptions.ProtoReflect.Descriptor instead. -func (*ConnectionConfig_HttpProtocolOptions) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_rawDescGZIP(), []int{0, 1} -} - -func (x *ConnectionConfig_HttpProtocolOptions) GetIdleTimeout() *duration.Duration { - if x != nil { - return x.IdleTimeout - } - return nil -} - -func (x *ConnectionConfig_HttpProtocolOptions) GetMaxHeadersCount() uint32 { - if x != nil { - return x.MaxHeadersCount - } - return 0 -} - -func (x *ConnectionConfig_HttpProtocolOptions) GetMaxStreamDuration() *duration.Duration { - if x != nil { - return x.MaxStreamDuration - } - return nil -} - -func (x *ConnectionConfig_HttpProtocolOptions) GetHeadersWithUnderscoresAction() ConnectionConfig_HttpProtocolOptions_HeadersWithUnderscoresAction { - if x != nil { - return x.HeadersWithUnderscoresAction - } - return ConnectionConfig_HttpProtocolOptions_ALLOW -} - var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_rawDesc = string([]byte{ 0x0a, 0x3e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x12, 0x0c, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x1e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, - 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xc2, 0x08, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3d, 0x0a, 0x1b, 0x6d, 0x61, 0x78, 0x5f, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x18, 0x6d, 0x61, - 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x50, 0x0a, 0x0d, 0x74, 0x63, - 0x70, 0x5f, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x54, 0x63, 0x70, 0x4b, 0x65, 0x65, 0x70, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x52, 0x0c, - 0x74, 0x63, 0x70, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x12, 0x66, 0x0a, 0x21, - 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, - 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1d, 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42, - 0x79, 0x74, 0x65, 0x73, 0x12, 0x73, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x68, - 0x74, 0x74, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x19, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x48, 0x74, 0x74, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xc5, 0x01, 0x0a, 0x0c, 0x54, 0x63, - 0x70, 0x4b, 0x65, 0x65, 0x70, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6b, 0x65, - 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x50, - 0x72, 0x6f, 0x62, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x0e, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, - 0x76, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x12, 0x0c, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x4d, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, + 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, + 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0xf7, 0x05, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3d, 0x0a, 0x1b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x18, 0x6d, 0x61, 0x78, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x50, 0x0a, 0x0d, 0x74, 0x63, 0x70, + 0x5f, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x54, 0x63, 0x70, 0x4b, 0x65, 0x65, 0x70, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x52, 0x0c, 0x74, + 0x63, 0x70, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x12, 0x66, 0x0a, 0x21, 0x70, + 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1d, 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x12, 0x73, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x68, 0x74, + 0x74, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x19, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x48, 0x74, 0x74, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x69, 0x0a, 0x16, 0x68, 0x74, 0x74, 0x70, + 0x31, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x31, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x14, 0x68, + 0x74, 0x74, 0x70, 0x31, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x1a, 0xc5, 0x01, 0x0a, 0x0c, 0x54, 0x63, 0x70, 0x4b, 0x65, 0x65, 0x70, 0x41, + 0x6c, 0x69, 0x76, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, + 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, + 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x12, + 0x40, 0x0a, 0x0e, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0d, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x48, 0x0a, 0x12, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, - 0x69, 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x12, 0x6b, 0x65, 0x65, 0x70, 0x61, - 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, - 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x1a, 0xb3, 0x03, 0x0a, 0x13, 0x48, 0x74, 0x74, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x69, 0x64, 0x6c, - 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x64, 0x6c, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x6d, 0x61, 0x78, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x96, - 0x01, 0x0a, 0x1f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, - 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, - 0x72, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1c, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72, 0x65, - 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4e, 0x0a, 0x1c, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72, 0x65, - 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x4c, 0x4c, 0x4f, 0x57, - 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x51, - 0x55, 0x45, 0x53, 0x54, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x48, - 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x02, 0x42, 0x3e, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, + 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x42, 0xb8, 0xf5, 0x04, + 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0xc0, - 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_goTypes = []interface{}{ - (ConnectionConfig_HttpProtocolOptions_HeadersWithUnderscoresAction)(0), // 0: gloo.solo.io.ConnectionConfig.HttpProtocolOptions.HeadersWithUnderscoresAction - (*ConnectionConfig)(nil), // 1: gloo.solo.io.ConnectionConfig - (*ConnectionConfig_TcpKeepAlive)(nil), // 2: gloo.solo.io.ConnectionConfig.TcpKeepAlive - (*ConnectionConfig_HttpProtocolOptions)(nil), // 3: gloo.solo.io.ConnectionConfig.HttpProtocolOptions - (*duration.Duration)(nil), // 4: google.protobuf.Duration - (*wrappers.UInt32Value)(nil), // 5: google.protobuf.UInt32Value +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_goTypes = []any{ + (*ConnectionConfig)(nil), // 0: gloo.solo.io.ConnectionConfig + (*ConnectionConfig_TcpKeepAlive)(nil), // 1: gloo.solo.io.ConnectionConfig.TcpKeepAlive + (*durationpb.Duration)(nil), // 2: google.protobuf.Duration + (*wrapperspb.UInt32Value)(nil), // 3: google.protobuf.UInt32Value + (*protocol.HttpProtocolOptions)(nil), // 4: protocol.options.gloo.solo.io.HttpProtocolOptions + (*protocol.Http1ProtocolOptions)(nil), // 5: protocol.options.gloo.solo.io.Http1ProtocolOptions } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_depIdxs = []int32{ - 4, // 0: gloo.solo.io.ConnectionConfig.connect_timeout:type_name -> google.protobuf.Duration - 2, // 1: gloo.solo.io.ConnectionConfig.tcp_keepalive:type_name -> gloo.solo.io.ConnectionConfig.TcpKeepAlive - 5, // 2: gloo.solo.io.ConnectionConfig.per_connection_buffer_limit_bytes:type_name -> google.protobuf.UInt32Value - 3, // 3: gloo.solo.io.ConnectionConfig.common_http_protocol_options:type_name -> gloo.solo.io.ConnectionConfig.HttpProtocolOptions - 4, // 4: gloo.solo.io.ConnectionConfig.TcpKeepAlive.keepalive_time:type_name -> google.protobuf.Duration - 4, // 5: gloo.solo.io.ConnectionConfig.TcpKeepAlive.keepalive_interval:type_name -> google.protobuf.Duration - 4, // 6: gloo.solo.io.ConnectionConfig.HttpProtocolOptions.idle_timeout:type_name -> google.protobuf.Duration - 4, // 7: gloo.solo.io.ConnectionConfig.HttpProtocolOptions.max_stream_duration:type_name -> google.protobuf.Duration - 0, // 8: gloo.solo.io.ConnectionConfig.HttpProtocolOptions.headers_with_underscores_action:type_name -> gloo.solo.io.ConnectionConfig.HttpProtocolOptions.HeadersWithUnderscoresAction - 9, // [9:9] is the sub-list for method output_type - 9, // [9:9] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 2, // 0: gloo.solo.io.ConnectionConfig.connect_timeout:type_name -> google.protobuf.Duration + 1, // 1: gloo.solo.io.ConnectionConfig.tcp_keepalive:type_name -> gloo.solo.io.ConnectionConfig.TcpKeepAlive + 3, // 2: gloo.solo.io.ConnectionConfig.per_connection_buffer_limit_bytes:type_name -> google.protobuf.UInt32Value + 4, // 3: gloo.solo.io.ConnectionConfig.common_http_protocol_options:type_name -> protocol.options.gloo.solo.io.HttpProtocolOptions + 5, // 4: gloo.solo.io.ConnectionConfig.http1_protocol_options:type_name -> protocol.options.gloo.solo.io.Http1ProtocolOptions + 2, // 5: gloo.solo.io.ConnectionConfig.TcpKeepAlive.keepalive_time:type_name -> google.protobuf.Duration + 2, // 6: gloo.solo.io.ConnectionConfig.TcpKeepAlive.keepalive_interval:type_name -> google.protobuf.Duration + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_init() } @@ -468,61 +298,21 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_init() if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConnectionConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConnectionConfig_TcpKeepAlive); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConnectionConfig_HttpProtocolOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_rawDesc, - NumEnums: 1, - NumMessages: 3, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_rawDesc)), + NumEnums: 0, + NumMessages: 2, NumExtensions: 0, NumServices: 0, }, GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_goTypes, DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_depIdxs, - EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_enumTypes, MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/connection.pb.hash.go b/pkg/api/gloo.solo.io/v1/connection.pb.hash.go index bae71339f..26624f785 100644 --- a/pkg/api/gloo.solo.io/v1/connection.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/connection.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ConnectionConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -44,105 +48,100 @@ func (m *ConnectionConfig) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetConnectTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectTimeout")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConnectTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConnectTimeout(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ConnectTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetTcpKeepalive()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpKeepalive")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTcpKeepalive(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTcpKeepalive(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TcpKeepalive")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetPerConnectionBufferLimitBytes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PerConnectionBufferLimitBytes")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPerConnectionBufferLimitBytes(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPerConnectionBufferLimitBytes(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PerConnectionBufferLimitBytes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetCommonHttpProtocolOptions()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { + if _, err = hasher.Write([]byte("CommonHttpProtocolOptions")); err != nil { return 0, err } - } else { - if val, err := hashstructure.Hash(m.GetCommonHttpProtocolOptions(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *ConnectionConfig_TcpKeepAlive) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ConnectionConfig_TcpKeepAlive")); err != nil { - return 0, err - } - - err = binary.Write(hasher, binary.LittleEndian, m.GetKeepaliveProbes()) - if err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetKeepaliveTime()).(safe_hasher.SafeHasher); ok { if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetKeepaliveTime(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCommonHttpProtocolOptions(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("CommonHttpProtocolOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - if h, ok := interface{}(m.GetKeepaliveInterval()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetHttp1ProtocolOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Http1ProtocolOptions")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetKeepaliveInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHttp1ProtocolOptions(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Http1ProtocolOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -152,7 +151,11 @@ func (m *ConnectionConfig_TcpKeepAlive) Hash(hasher hash.Hash64) (uint64, error) } // Hash function -func (m *ConnectionConfig_HttpProtocolOptions) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ConnectionConfig_TcpKeepAlive) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -160,47 +163,54 @@ func (m *ConnectionConfig_HttpProtocolOptions) Hash(hasher hash.Hash64) (uint64, hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ConnectionConfig_HttpProtocolOptions")); err != nil { + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ConnectionConfig_TcpKeepAlive")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetKeepaliveProbes()) + if err != nil { return 0, err } - if h, ok := interface{}(m.GetIdleTimeout()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetKeepaliveTime()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("KeepaliveTime")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetIdleTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetKeepaliveTime(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("KeepaliveTime")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - err = binary.Write(hasher, binary.LittleEndian, m.GetMaxHeadersCount()) - if err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetMaxStreamDuration()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetKeepaliveInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("KeepaliveInterval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMaxStreamDuration(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetKeepaliveInterval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("KeepaliveInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - err = binary.Write(hasher, binary.LittleEndian, m.GetHeadersWithUnderscoresAction()) - if err != nil { - return 0, err - } - return hasher.Sum64(), nil } diff --git a/pkg/api/gloo.solo.io/v1/connection.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/connection.pb.uniquehash.go new file mode 100644 index 000000000..3ed1a2f3b --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/connection.pb.uniquehash.go @@ -0,0 +1,222 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/connection.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ConnectionConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ConnectionConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MaxRequestsPerConnection")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMaxRequestsPerConnection()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetConnectTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConnectTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConnectTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTcpKeepalive()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpKeepalive")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTcpKeepalive(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TcpKeepalive")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPerConnectionBufferLimitBytes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PerConnectionBufferLimitBytes")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPerConnectionBufferLimitBytes(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PerConnectionBufferLimitBytes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCommonHttpProtocolOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CommonHttpProtocolOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCommonHttpProtocolOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CommonHttpProtocolOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHttp1ProtocolOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Http1ProtocolOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttp1ProtocolOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Http1ProtocolOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ConnectionConfig_TcpKeepAlive) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ConnectionConfig_TcpKeepAlive")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("KeepaliveProbes")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetKeepaliveProbes()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetKeepaliveTime()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("KeepaliveTime")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetKeepaliveTime(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("KeepaliveTime")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetKeepaliveInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("KeepaliveInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetKeepaliveInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("KeepaliveInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/controller/mocks/event_handlers.go b/pkg/api/gloo.solo.io/v1/controller/mocks/event_handlers.go index 5ce7e1fd3..e6a23cbc3 100644 --- a/pkg/api/gloo.solo.io/v1/controller/mocks/event_handlers.go +++ b/pkg/api/gloo.solo.io/v1/controller/mocks/event_handlers.go @@ -14,30 +14,30 @@ import ( predicate "sigs.k8s.io/controller-runtime/pkg/predicate" ) -// MockSettingsEventHandler is a mock of SettingsEventHandler interface +// MockSettingsEventHandler is a mock of SettingsEventHandler interface. type MockSettingsEventHandler struct { ctrl *gomock.Controller recorder *MockSettingsEventHandlerMockRecorder } -// MockSettingsEventHandlerMockRecorder is the mock recorder for MockSettingsEventHandler +// MockSettingsEventHandlerMockRecorder is the mock recorder for MockSettingsEventHandler. type MockSettingsEventHandlerMockRecorder struct { mock *MockSettingsEventHandler } -// NewMockSettingsEventHandler creates a new mock instance +// NewMockSettingsEventHandler creates a new mock instance. func NewMockSettingsEventHandler(ctrl *gomock.Controller) *MockSettingsEventHandler { mock := &MockSettingsEventHandler{ctrl: ctrl} mock.recorder = &MockSettingsEventHandlerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockSettingsEventHandler) EXPECT() *MockSettingsEventHandlerMockRecorder { return m.recorder } -// CreateSettings mocks base method +// CreateSettings mocks base method. func (m *MockSettingsEventHandler) CreateSettings(obj *v1.Settings) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "CreateSettings", obj) @@ -45,27 +45,13 @@ func (m *MockSettingsEventHandler) CreateSettings(obj *v1.Settings) error { return ret0 } -// CreateSettings indicates an expected call of CreateSettings +// CreateSettings indicates an expected call of CreateSettings. func (mr *MockSettingsEventHandlerMockRecorder) CreateSettings(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateSettings", reflect.TypeOf((*MockSettingsEventHandler)(nil).CreateSettings), obj) } -// UpdateSettings mocks base method -func (m *MockSettingsEventHandler) UpdateSettings(old, new *v1.Settings) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateSettings", old, new) - ret0, _ := ret[0].(error) - return ret0 -} - -// UpdateSettings indicates an expected call of UpdateSettings -func (mr *MockSettingsEventHandlerMockRecorder) UpdateSettings(old, new interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateSettings", reflect.TypeOf((*MockSettingsEventHandler)(nil).UpdateSettings), old, new) -} - -// DeleteSettings mocks base method +// DeleteSettings mocks base method. func (m *MockSettingsEventHandler) DeleteSettings(obj *v1.Settings) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "DeleteSettings", obj) @@ -73,13 +59,13 @@ func (m *MockSettingsEventHandler) DeleteSettings(obj *v1.Settings) error { return ret0 } -// DeleteSettings indicates an expected call of DeleteSettings +// DeleteSettings indicates an expected call of DeleteSettings. func (mr *MockSettingsEventHandlerMockRecorder) DeleteSettings(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteSettings", reflect.TypeOf((*MockSettingsEventHandler)(nil).DeleteSettings), obj) } -// GenericSettings mocks base method +// GenericSettings mocks base method. func (m *MockSettingsEventHandler) GenericSettings(obj *v1.Settings) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GenericSettings", obj) @@ -87,36 +73,50 @@ func (m *MockSettingsEventHandler) GenericSettings(obj *v1.Settings) error { return ret0 } -// GenericSettings indicates an expected call of GenericSettings +// GenericSettings indicates an expected call of GenericSettings. func (mr *MockSettingsEventHandlerMockRecorder) GenericSettings(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericSettings", reflect.TypeOf((*MockSettingsEventHandler)(nil).GenericSettings), obj) } -// MockSettingsEventWatcher is a mock of SettingsEventWatcher interface +// UpdateSettings mocks base method. +func (m *MockSettingsEventHandler) UpdateSettings(old, new *v1.Settings) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateSettings", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateSettings indicates an expected call of UpdateSettings. +func (mr *MockSettingsEventHandlerMockRecorder) UpdateSettings(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateSettings", reflect.TypeOf((*MockSettingsEventHandler)(nil).UpdateSettings), old, new) +} + +// MockSettingsEventWatcher is a mock of SettingsEventWatcher interface. type MockSettingsEventWatcher struct { ctrl *gomock.Controller recorder *MockSettingsEventWatcherMockRecorder } -// MockSettingsEventWatcherMockRecorder is the mock recorder for MockSettingsEventWatcher +// MockSettingsEventWatcherMockRecorder is the mock recorder for MockSettingsEventWatcher. type MockSettingsEventWatcherMockRecorder struct { mock *MockSettingsEventWatcher } -// NewMockSettingsEventWatcher creates a new mock instance +// NewMockSettingsEventWatcher creates a new mock instance. func NewMockSettingsEventWatcher(ctrl *gomock.Controller) *MockSettingsEventWatcher { mock := &MockSettingsEventWatcher{ctrl: ctrl} mock.recorder = &MockSettingsEventWatcherMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockSettingsEventWatcher) EXPECT() *MockSettingsEventWatcherMockRecorder { return m.recorder } -// AddEventHandler mocks base method +// AddEventHandler mocks base method. func (m *MockSettingsEventWatcher) AddEventHandler(ctx context.Context, h controller.SettingsEventHandler, predicates ...predicate.Predicate) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, h} @@ -128,37 +128,37 @@ func (m *MockSettingsEventWatcher) AddEventHandler(ctx context.Context, h contro return ret0 } -// AddEventHandler indicates an expected call of AddEventHandler +// AddEventHandler indicates an expected call of AddEventHandler. func (mr *MockSettingsEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, h}, predicates...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockSettingsEventWatcher)(nil).AddEventHandler), varargs...) } -// MockUpstreamEventHandler is a mock of UpstreamEventHandler interface +// MockUpstreamEventHandler is a mock of UpstreamEventHandler interface. type MockUpstreamEventHandler struct { ctrl *gomock.Controller recorder *MockUpstreamEventHandlerMockRecorder } -// MockUpstreamEventHandlerMockRecorder is the mock recorder for MockUpstreamEventHandler +// MockUpstreamEventHandlerMockRecorder is the mock recorder for MockUpstreamEventHandler. type MockUpstreamEventHandlerMockRecorder struct { mock *MockUpstreamEventHandler } -// NewMockUpstreamEventHandler creates a new mock instance +// NewMockUpstreamEventHandler creates a new mock instance. func NewMockUpstreamEventHandler(ctrl *gomock.Controller) *MockUpstreamEventHandler { mock := &MockUpstreamEventHandler{ctrl: ctrl} mock.recorder = &MockUpstreamEventHandlerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockUpstreamEventHandler) EXPECT() *MockUpstreamEventHandlerMockRecorder { return m.recorder } -// CreateUpstream mocks base method +// CreateUpstream mocks base method. func (m *MockUpstreamEventHandler) CreateUpstream(obj *v1.Upstream) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "CreateUpstream", obj) @@ -166,27 +166,13 @@ func (m *MockUpstreamEventHandler) CreateUpstream(obj *v1.Upstream) error { return ret0 } -// CreateUpstream indicates an expected call of CreateUpstream +// CreateUpstream indicates an expected call of CreateUpstream. func (mr *MockUpstreamEventHandlerMockRecorder) CreateUpstream(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateUpstream", reflect.TypeOf((*MockUpstreamEventHandler)(nil).CreateUpstream), obj) } -// UpdateUpstream mocks base method -func (m *MockUpstreamEventHandler) UpdateUpstream(old, new *v1.Upstream) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateUpstream", old, new) - ret0, _ := ret[0].(error) - return ret0 -} - -// UpdateUpstream indicates an expected call of UpdateUpstream -func (mr *MockUpstreamEventHandlerMockRecorder) UpdateUpstream(old, new interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUpstream", reflect.TypeOf((*MockUpstreamEventHandler)(nil).UpdateUpstream), old, new) -} - -// DeleteUpstream mocks base method +// DeleteUpstream mocks base method. func (m *MockUpstreamEventHandler) DeleteUpstream(obj *v1.Upstream) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "DeleteUpstream", obj) @@ -194,13 +180,13 @@ func (m *MockUpstreamEventHandler) DeleteUpstream(obj *v1.Upstream) error { return ret0 } -// DeleteUpstream indicates an expected call of DeleteUpstream +// DeleteUpstream indicates an expected call of DeleteUpstream. func (mr *MockUpstreamEventHandlerMockRecorder) DeleteUpstream(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteUpstream", reflect.TypeOf((*MockUpstreamEventHandler)(nil).DeleteUpstream), obj) } -// GenericUpstream mocks base method +// GenericUpstream mocks base method. func (m *MockUpstreamEventHandler) GenericUpstream(obj *v1.Upstream) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GenericUpstream", obj) @@ -208,36 +194,50 @@ func (m *MockUpstreamEventHandler) GenericUpstream(obj *v1.Upstream) error { return ret0 } -// GenericUpstream indicates an expected call of GenericUpstream +// GenericUpstream indicates an expected call of GenericUpstream. func (mr *MockUpstreamEventHandlerMockRecorder) GenericUpstream(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericUpstream", reflect.TypeOf((*MockUpstreamEventHandler)(nil).GenericUpstream), obj) } -// MockUpstreamEventWatcher is a mock of UpstreamEventWatcher interface +// UpdateUpstream mocks base method. +func (m *MockUpstreamEventHandler) UpdateUpstream(old, new *v1.Upstream) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateUpstream", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateUpstream indicates an expected call of UpdateUpstream. +func (mr *MockUpstreamEventHandlerMockRecorder) UpdateUpstream(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUpstream", reflect.TypeOf((*MockUpstreamEventHandler)(nil).UpdateUpstream), old, new) +} + +// MockUpstreamEventWatcher is a mock of UpstreamEventWatcher interface. type MockUpstreamEventWatcher struct { ctrl *gomock.Controller recorder *MockUpstreamEventWatcherMockRecorder } -// MockUpstreamEventWatcherMockRecorder is the mock recorder for MockUpstreamEventWatcher +// MockUpstreamEventWatcherMockRecorder is the mock recorder for MockUpstreamEventWatcher. type MockUpstreamEventWatcherMockRecorder struct { mock *MockUpstreamEventWatcher } -// NewMockUpstreamEventWatcher creates a new mock instance +// NewMockUpstreamEventWatcher creates a new mock instance. func NewMockUpstreamEventWatcher(ctrl *gomock.Controller) *MockUpstreamEventWatcher { mock := &MockUpstreamEventWatcher{ctrl: ctrl} mock.recorder = &MockUpstreamEventWatcherMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockUpstreamEventWatcher) EXPECT() *MockUpstreamEventWatcherMockRecorder { return m.recorder } -// AddEventHandler mocks base method +// AddEventHandler mocks base method. func (m *MockUpstreamEventWatcher) AddEventHandler(ctx context.Context, h controller.UpstreamEventHandler, predicates ...predicate.Predicate) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, h} @@ -249,37 +249,37 @@ func (m *MockUpstreamEventWatcher) AddEventHandler(ctx context.Context, h contro return ret0 } -// AddEventHandler indicates an expected call of AddEventHandler +// AddEventHandler indicates an expected call of AddEventHandler. func (mr *MockUpstreamEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, h}, predicates...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockUpstreamEventWatcher)(nil).AddEventHandler), varargs...) } -// MockUpstreamGroupEventHandler is a mock of UpstreamGroupEventHandler interface +// MockUpstreamGroupEventHandler is a mock of UpstreamGroupEventHandler interface. type MockUpstreamGroupEventHandler struct { ctrl *gomock.Controller recorder *MockUpstreamGroupEventHandlerMockRecorder } -// MockUpstreamGroupEventHandlerMockRecorder is the mock recorder for MockUpstreamGroupEventHandler +// MockUpstreamGroupEventHandlerMockRecorder is the mock recorder for MockUpstreamGroupEventHandler. type MockUpstreamGroupEventHandlerMockRecorder struct { mock *MockUpstreamGroupEventHandler } -// NewMockUpstreamGroupEventHandler creates a new mock instance +// NewMockUpstreamGroupEventHandler creates a new mock instance. func NewMockUpstreamGroupEventHandler(ctrl *gomock.Controller) *MockUpstreamGroupEventHandler { mock := &MockUpstreamGroupEventHandler{ctrl: ctrl} mock.recorder = &MockUpstreamGroupEventHandlerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockUpstreamGroupEventHandler) EXPECT() *MockUpstreamGroupEventHandlerMockRecorder { return m.recorder } -// CreateUpstreamGroup mocks base method +// CreateUpstreamGroup mocks base method. func (m *MockUpstreamGroupEventHandler) CreateUpstreamGroup(obj *v1.UpstreamGroup) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "CreateUpstreamGroup", obj) @@ -287,27 +287,13 @@ func (m *MockUpstreamGroupEventHandler) CreateUpstreamGroup(obj *v1.UpstreamGrou return ret0 } -// CreateUpstreamGroup indicates an expected call of CreateUpstreamGroup +// CreateUpstreamGroup indicates an expected call of CreateUpstreamGroup. func (mr *MockUpstreamGroupEventHandlerMockRecorder) CreateUpstreamGroup(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupEventHandler)(nil).CreateUpstreamGroup), obj) } -// UpdateUpstreamGroup mocks base method -func (m *MockUpstreamGroupEventHandler) UpdateUpstreamGroup(old, new *v1.UpstreamGroup) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateUpstreamGroup", old, new) - ret0, _ := ret[0].(error) - return ret0 -} - -// UpdateUpstreamGroup indicates an expected call of UpdateUpstreamGroup -func (mr *MockUpstreamGroupEventHandlerMockRecorder) UpdateUpstreamGroup(old, new interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupEventHandler)(nil).UpdateUpstreamGroup), old, new) -} - -// DeleteUpstreamGroup mocks base method +// DeleteUpstreamGroup mocks base method. func (m *MockUpstreamGroupEventHandler) DeleteUpstreamGroup(obj *v1.UpstreamGroup) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "DeleteUpstreamGroup", obj) @@ -315,13 +301,13 @@ func (m *MockUpstreamGroupEventHandler) DeleteUpstreamGroup(obj *v1.UpstreamGrou return ret0 } -// DeleteUpstreamGroup indicates an expected call of DeleteUpstreamGroup +// DeleteUpstreamGroup indicates an expected call of DeleteUpstreamGroup. func (mr *MockUpstreamGroupEventHandlerMockRecorder) DeleteUpstreamGroup(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupEventHandler)(nil).DeleteUpstreamGroup), obj) } -// GenericUpstreamGroup mocks base method +// GenericUpstreamGroup mocks base method. func (m *MockUpstreamGroupEventHandler) GenericUpstreamGroup(obj *v1.UpstreamGroup) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GenericUpstreamGroup", obj) @@ -329,36 +315,50 @@ func (m *MockUpstreamGroupEventHandler) GenericUpstreamGroup(obj *v1.UpstreamGro return ret0 } -// GenericUpstreamGroup indicates an expected call of GenericUpstreamGroup +// GenericUpstreamGroup indicates an expected call of GenericUpstreamGroup. func (mr *MockUpstreamGroupEventHandlerMockRecorder) GenericUpstreamGroup(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupEventHandler)(nil).GenericUpstreamGroup), obj) } -// MockUpstreamGroupEventWatcher is a mock of UpstreamGroupEventWatcher interface +// UpdateUpstreamGroup mocks base method. +func (m *MockUpstreamGroupEventHandler) UpdateUpstreamGroup(old, new *v1.UpstreamGroup) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateUpstreamGroup", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateUpstreamGroup indicates an expected call of UpdateUpstreamGroup. +func (mr *MockUpstreamGroupEventHandlerMockRecorder) UpdateUpstreamGroup(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupEventHandler)(nil).UpdateUpstreamGroup), old, new) +} + +// MockUpstreamGroupEventWatcher is a mock of UpstreamGroupEventWatcher interface. type MockUpstreamGroupEventWatcher struct { ctrl *gomock.Controller recorder *MockUpstreamGroupEventWatcherMockRecorder } -// MockUpstreamGroupEventWatcherMockRecorder is the mock recorder for MockUpstreamGroupEventWatcher +// MockUpstreamGroupEventWatcherMockRecorder is the mock recorder for MockUpstreamGroupEventWatcher. type MockUpstreamGroupEventWatcherMockRecorder struct { mock *MockUpstreamGroupEventWatcher } -// NewMockUpstreamGroupEventWatcher creates a new mock instance +// NewMockUpstreamGroupEventWatcher creates a new mock instance. func NewMockUpstreamGroupEventWatcher(ctrl *gomock.Controller) *MockUpstreamGroupEventWatcher { mock := &MockUpstreamGroupEventWatcher{ctrl: ctrl} mock.recorder = &MockUpstreamGroupEventWatcherMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockUpstreamGroupEventWatcher) EXPECT() *MockUpstreamGroupEventWatcherMockRecorder { return m.recorder } -// AddEventHandler mocks base method +// AddEventHandler mocks base method. func (m *MockUpstreamGroupEventWatcher) AddEventHandler(ctx context.Context, h controller.UpstreamGroupEventHandler, predicates ...predicate.Predicate) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, h} @@ -370,37 +370,37 @@ func (m *MockUpstreamGroupEventWatcher) AddEventHandler(ctx context.Context, h c return ret0 } -// AddEventHandler indicates an expected call of AddEventHandler +// AddEventHandler indicates an expected call of AddEventHandler. func (mr *MockUpstreamGroupEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, h}, predicates...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockUpstreamGroupEventWatcher)(nil).AddEventHandler), varargs...) } -// MockProxyEventHandler is a mock of ProxyEventHandler interface +// MockProxyEventHandler is a mock of ProxyEventHandler interface. type MockProxyEventHandler struct { ctrl *gomock.Controller recorder *MockProxyEventHandlerMockRecorder } -// MockProxyEventHandlerMockRecorder is the mock recorder for MockProxyEventHandler +// MockProxyEventHandlerMockRecorder is the mock recorder for MockProxyEventHandler. type MockProxyEventHandlerMockRecorder struct { mock *MockProxyEventHandler } -// NewMockProxyEventHandler creates a new mock instance +// NewMockProxyEventHandler creates a new mock instance. func NewMockProxyEventHandler(ctrl *gomock.Controller) *MockProxyEventHandler { mock := &MockProxyEventHandler{ctrl: ctrl} mock.recorder = &MockProxyEventHandlerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockProxyEventHandler) EXPECT() *MockProxyEventHandlerMockRecorder { return m.recorder } -// CreateProxy mocks base method +// CreateProxy mocks base method. func (m *MockProxyEventHandler) CreateProxy(obj *v1.Proxy) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "CreateProxy", obj) @@ -408,27 +408,13 @@ func (m *MockProxyEventHandler) CreateProxy(obj *v1.Proxy) error { return ret0 } -// CreateProxy indicates an expected call of CreateProxy +// CreateProxy indicates an expected call of CreateProxy. func (mr *MockProxyEventHandlerMockRecorder) CreateProxy(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateProxy", reflect.TypeOf((*MockProxyEventHandler)(nil).CreateProxy), obj) } -// UpdateProxy mocks base method -func (m *MockProxyEventHandler) UpdateProxy(old, new *v1.Proxy) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateProxy", old, new) - ret0, _ := ret[0].(error) - return ret0 -} - -// UpdateProxy indicates an expected call of UpdateProxy -func (mr *MockProxyEventHandlerMockRecorder) UpdateProxy(old, new interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateProxy", reflect.TypeOf((*MockProxyEventHandler)(nil).UpdateProxy), old, new) -} - -// DeleteProxy mocks base method +// DeleteProxy mocks base method. func (m *MockProxyEventHandler) DeleteProxy(obj *v1.Proxy) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "DeleteProxy", obj) @@ -436,13 +422,13 @@ func (m *MockProxyEventHandler) DeleteProxy(obj *v1.Proxy) error { return ret0 } -// DeleteProxy indicates an expected call of DeleteProxy +// DeleteProxy indicates an expected call of DeleteProxy. func (mr *MockProxyEventHandlerMockRecorder) DeleteProxy(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteProxy", reflect.TypeOf((*MockProxyEventHandler)(nil).DeleteProxy), obj) } -// GenericProxy mocks base method +// GenericProxy mocks base method. func (m *MockProxyEventHandler) GenericProxy(obj *v1.Proxy) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GenericProxy", obj) @@ -450,36 +436,50 @@ func (m *MockProxyEventHandler) GenericProxy(obj *v1.Proxy) error { return ret0 } -// GenericProxy indicates an expected call of GenericProxy +// GenericProxy indicates an expected call of GenericProxy. func (mr *MockProxyEventHandlerMockRecorder) GenericProxy(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericProxy", reflect.TypeOf((*MockProxyEventHandler)(nil).GenericProxy), obj) } -// MockProxyEventWatcher is a mock of ProxyEventWatcher interface +// UpdateProxy mocks base method. +func (m *MockProxyEventHandler) UpdateProxy(old, new *v1.Proxy) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateProxy", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateProxy indicates an expected call of UpdateProxy. +func (mr *MockProxyEventHandlerMockRecorder) UpdateProxy(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateProxy", reflect.TypeOf((*MockProxyEventHandler)(nil).UpdateProxy), old, new) +} + +// MockProxyEventWatcher is a mock of ProxyEventWatcher interface. type MockProxyEventWatcher struct { ctrl *gomock.Controller recorder *MockProxyEventWatcherMockRecorder } -// MockProxyEventWatcherMockRecorder is the mock recorder for MockProxyEventWatcher +// MockProxyEventWatcherMockRecorder is the mock recorder for MockProxyEventWatcher. type MockProxyEventWatcherMockRecorder struct { mock *MockProxyEventWatcher } -// NewMockProxyEventWatcher creates a new mock instance +// NewMockProxyEventWatcher creates a new mock instance. func NewMockProxyEventWatcher(ctrl *gomock.Controller) *MockProxyEventWatcher { mock := &MockProxyEventWatcher{ctrl: ctrl} mock.recorder = &MockProxyEventWatcherMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockProxyEventWatcher) EXPECT() *MockProxyEventWatcherMockRecorder { return m.recorder } -// AddEventHandler mocks base method +// AddEventHandler mocks base method. func (m *MockProxyEventWatcher) AddEventHandler(ctx context.Context, h controller.ProxyEventHandler, predicates ...predicate.Predicate) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, h} @@ -491,7 +491,7 @@ func (m *MockProxyEventWatcher) AddEventHandler(ctx context.Context, h controlle return ret0 } -// AddEventHandler indicates an expected call of AddEventHandler +// AddEventHandler indicates an expected call of AddEventHandler. func (mr *MockProxyEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, h}, predicates...) diff --git a/pkg/api/gloo.solo.io/v1/controller/mocks/multicluster_reconcilers.go b/pkg/api/gloo.solo.io/v1/controller/mocks/multicluster_reconcilers.go index 9544d6468..a9f8bb052 100644 --- a/pkg/api/gloo.solo.io/v1/controller/mocks/multicluster_reconcilers.go +++ b/pkg/api/gloo.solo.io/v1/controller/mocks/multicluster_reconcilers.go @@ -15,30 +15,30 @@ import ( predicate "sigs.k8s.io/controller-runtime/pkg/predicate" ) -// MockMulticlusterSettingsReconciler is a mock of MulticlusterSettingsReconciler interface +// MockMulticlusterSettingsReconciler is a mock of MulticlusterSettingsReconciler interface. type MockMulticlusterSettingsReconciler struct { ctrl *gomock.Controller recorder *MockMulticlusterSettingsReconcilerMockRecorder } -// MockMulticlusterSettingsReconcilerMockRecorder is the mock recorder for MockMulticlusterSettingsReconciler +// MockMulticlusterSettingsReconcilerMockRecorder is the mock recorder for MockMulticlusterSettingsReconciler. type MockMulticlusterSettingsReconcilerMockRecorder struct { mock *MockMulticlusterSettingsReconciler } -// NewMockMulticlusterSettingsReconciler creates a new mock instance +// NewMockMulticlusterSettingsReconciler creates a new mock instance. func NewMockMulticlusterSettingsReconciler(ctrl *gomock.Controller) *MockMulticlusterSettingsReconciler { mock := &MockMulticlusterSettingsReconciler{ctrl: ctrl} mock.recorder = &MockMulticlusterSettingsReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterSettingsReconciler) EXPECT() *MockMulticlusterSettingsReconcilerMockRecorder { return m.recorder } -// ReconcileSettings mocks base method +// ReconcileSettings mocks base method. func (m *MockMulticlusterSettingsReconciler) ReconcileSettings(clusterName string, obj *v1.Settings) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileSettings", clusterName, obj) @@ -47,36 +47,36 @@ func (m *MockMulticlusterSettingsReconciler) ReconcileSettings(clusterName strin return ret0, ret1 } -// ReconcileSettings indicates an expected call of ReconcileSettings +// ReconcileSettings indicates an expected call of ReconcileSettings. func (mr *MockMulticlusterSettingsReconcilerMockRecorder) ReconcileSettings(clusterName, obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileSettings", reflect.TypeOf((*MockMulticlusterSettingsReconciler)(nil).ReconcileSettings), clusterName, obj) } -// MockMulticlusterSettingsDeletionReconciler is a mock of MulticlusterSettingsDeletionReconciler interface +// MockMulticlusterSettingsDeletionReconciler is a mock of MulticlusterSettingsDeletionReconciler interface. type MockMulticlusterSettingsDeletionReconciler struct { ctrl *gomock.Controller recorder *MockMulticlusterSettingsDeletionReconcilerMockRecorder } -// MockMulticlusterSettingsDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterSettingsDeletionReconciler +// MockMulticlusterSettingsDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterSettingsDeletionReconciler. type MockMulticlusterSettingsDeletionReconcilerMockRecorder struct { mock *MockMulticlusterSettingsDeletionReconciler } -// NewMockMulticlusterSettingsDeletionReconciler creates a new mock instance +// NewMockMulticlusterSettingsDeletionReconciler creates a new mock instance. func NewMockMulticlusterSettingsDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterSettingsDeletionReconciler { mock := &MockMulticlusterSettingsDeletionReconciler{ctrl: ctrl} mock.recorder = &MockMulticlusterSettingsDeletionReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterSettingsDeletionReconciler) EXPECT() *MockMulticlusterSettingsDeletionReconcilerMockRecorder { return m.recorder } -// ReconcileSettingsDeletion mocks base method +// ReconcileSettingsDeletion mocks base method. func (m *MockMulticlusterSettingsDeletionReconciler) ReconcileSettingsDeletion(clusterName string, req reconcile.Request) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileSettingsDeletion", clusterName, req) @@ -84,36 +84,36 @@ func (m *MockMulticlusterSettingsDeletionReconciler) ReconcileSettingsDeletion(c return ret0 } -// ReconcileSettingsDeletion indicates an expected call of ReconcileSettingsDeletion +// ReconcileSettingsDeletion indicates an expected call of ReconcileSettingsDeletion. func (mr *MockMulticlusterSettingsDeletionReconcilerMockRecorder) ReconcileSettingsDeletion(clusterName, req interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileSettingsDeletion", reflect.TypeOf((*MockMulticlusterSettingsDeletionReconciler)(nil).ReconcileSettingsDeletion), clusterName, req) } -// MockMulticlusterSettingsReconcileLoop is a mock of MulticlusterSettingsReconcileLoop interface +// MockMulticlusterSettingsReconcileLoop is a mock of MulticlusterSettingsReconcileLoop interface. type MockMulticlusterSettingsReconcileLoop struct { ctrl *gomock.Controller recorder *MockMulticlusterSettingsReconcileLoopMockRecorder } -// MockMulticlusterSettingsReconcileLoopMockRecorder is the mock recorder for MockMulticlusterSettingsReconcileLoop +// MockMulticlusterSettingsReconcileLoopMockRecorder is the mock recorder for MockMulticlusterSettingsReconcileLoop. type MockMulticlusterSettingsReconcileLoopMockRecorder struct { mock *MockMulticlusterSettingsReconcileLoop } -// NewMockMulticlusterSettingsReconcileLoop creates a new mock instance +// NewMockMulticlusterSettingsReconcileLoop creates a new mock instance. func NewMockMulticlusterSettingsReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterSettingsReconcileLoop { mock := &MockMulticlusterSettingsReconcileLoop{ctrl: ctrl} mock.recorder = &MockMulticlusterSettingsReconcileLoopMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterSettingsReconcileLoop) EXPECT() *MockMulticlusterSettingsReconcileLoopMockRecorder { return m.recorder } -// AddMulticlusterSettingsReconciler mocks base method +// AddMulticlusterSettingsReconciler mocks base method. func (m *MockMulticlusterSettingsReconcileLoop) AddMulticlusterSettingsReconciler(ctx context.Context, rec controller.MulticlusterSettingsReconciler, predicates ...predicate.Predicate) { m.ctrl.T.Helper() varargs := []interface{}{ctx, rec} @@ -123,37 +123,37 @@ func (m *MockMulticlusterSettingsReconcileLoop) AddMulticlusterSettingsReconcile m.ctrl.Call(m, "AddMulticlusterSettingsReconciler", varargs...) } -// AddMulticlusterSettingsReconciler indicates an expected call of AddMulticlusterSettingsReconciler +// AddMulticlusterSettingsReconciler indicates an expected call of AddMulticlusterSettingsReconciler. func (mr *MockMulticlusterSettingsReconcileLoopMockRecorder) AddMulticlusterSettingsReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, rec}, predicates...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterSettingsReconciler", reflect.TypeOf((*MockMulticlusterSettingsReconcileLoop)(nil).AddMulticlusterSettingsReconciler), varargs...) } -// MockMulticlusterUpstreamReconciler is a mock of MulticlusterUpstreamReconciler interface +// MockMulticlusterUpstreamReconciler is a mock of MulticlusterUpstreamReconciler interface. type MockMulticlusterUpstreamReconciler struct { ctrl *gomock.Controller recorder *MockMulticlusterUpstreamReconcilerMockRecorder } -// MockMulticlusterUpstreamReconcilerMockRecorder is the mock recorder for MockMulticlusterUpstreamReconciler +// MockMulticlusterUpstreamReconcilerMockRecorder is the mock recorder for MockMulticlusterUpstreamReconciler. type MockMulticlusterUpstreamReconcilerMockRecorder struct { mock *MockMulticlusterUpstreamReconciler } -// NewMockMulticlusterUpstreamReconciler creates a new mock instance +// NewMockMulticlusterUpstreamReconciler creates a new mock instance. func NewMockMulticlusterUpstreamReconciler(ctrl *gomock.Controller) *MockMulticlusterUpstreamReconciler { mock := &MockMulticlusterUpstreamReconciler{ctrl: ctrl} mock.recorder = &MockMulticlusterUpstreamReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterUpstreamReconciler) EXPECT() *MockMulticlusterUpstreamReconcilerMockRecorder { return m.recorder } -// ReconcileUpstream mocks base method +// ReconcileUpstream mocks base method. func (m *MockMulticlusterUpstreamReconciler) ReconcileUpstream(clusterName string, obj *v1.Upstream) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileUpstream", clusterName, obj) @@ -162,36 +162,36 @@ func (m *MockMulticlusterUpstreamReconciler) ReconcileUpstream(clusterName strin return ret0, ret1 } -// ReconcileUpstream indicates an expected call of ReconcileUpstream +// ReconcileUpstream indicates an expected call of ReconcileUpstream. func (mr *MockMulticlusterUpstreamReconcilerMockRecorder) ReconcileUpstream(clusterName, obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileUpstream", reflect.TypeOf((*MockMulticlusterUpstreamReconciler)(nil).ReconcileUpstream), clusterName, obj) } -// MockMulticlusterUpstreamDeletionReconciler is a mock of MulticlusterUpstreamDeletionReconciler interface +// MockMulticlusterUpstreamDeletionReconciler is a mock of MulticlusterUpstreamDeletionReconciler interface. type MockMulticlusterUpstreamDeletionReconciler struct { ctrl *gomock.Controller recorder *MockMulticlusterUpstreamDeletionReconcilerMockRecorder } -// MockMulticlusterUpstreamDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterUpstreamDeletionReconciler +// MockMulticlusterUpstreamDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterUpstreamDeletionReconciler. type MockMulticlusterUpstreamDeletionReconcilerMockRecorder struct { mock *MockMulticlusterUpstreamDeletionReconciler } -// NewMockMulticlusterUpstreamDeletionReconciler creates a new mock instance +// NewMockMulticlusterUpstreamDeletionReconciler creates a new mock instance. func NewMockMulticlusterUpstreamDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterUpstreamDeletionReconciler { mock := &MockMulticlusterUpstreamDeletionReconciler{ctrl: ctrl} mock.recorder = &MockMulticlusterUpstreamDeletionReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterUpstreamDeletionReconciler) EXPECT() *MockMulticlusterUpstreamDeletionReconcilerMockRecorder { return m.recorder } -// ReconcileUpstreamDeletion mocks base method +// ReconcileUpstreamDeletion mocks base method. func (m *MockMulticlusterUpstreamDeletionReconciler) ReconcileUpstreamDeletion(clusterName string, req reconcile.Request) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileUpstreamDeletion", clusterName, req) @@ -199,36 +199,36 @@ func (m *MockMulticlusterUpstreamDeletionReconciler) ReconcileUpstreamDeletion(c return ret0 } -// ReconcileUpstreamDeletion indicates an expected call of ReconcileUpstreamDeletion +// ReconcileUpstreamDeletion indicates an expected call of ReconcileUpstreamDeletion. func (mr *MockMulticlusterUpstreamDeletionReconcilerMockRecorder) ReconcileUpstreamDeletion(clusterName, req interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileUpstreamDeletion", reflect.TypeOf((*MockMulticlusterUpstreamDeletionReconciler)(nil).ReconcileUpstreamDeletion), clusterName, req) } -// MockMulticlusterUpstreamReconcileLoop is a mock of MulticlusterUpstreamReconcileLoop interface +// MockMulticlusterUpstreamReconcileLoop is a mock of MulticlusterUpstreamReconcileLoop interface. type MockMulticlusterUpstreamReconcileLoop struct { ctrl *gomock.Controller recorder *MockMulticlusterUpstreamReconcileLoopMockRecorder } -// MockMulticlusterUpstreamReconcileLoopMockRecorder is the mock recorder for MockMulticlusterUpstreamReconcileLoop +// MockMulticlusterUpstreamReconcileLoopMockRecorder is the mock recorder for MockMulticlusterUpstreamReconcileLoop. type MockMulticlusterUpstreamReconcileLoopMockRecorder struct { mock *MockMulticlusterUpstreamReconcileLoop } -// NewMockMulticlusterUpstreamReconcileLoop creates a new mock instance +// NewMockMulticlusterUpstreamReconcileLoop creates a new mock instance. func NewMockMulticlusterUpstreamReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterUpstreamReconcileLoop { mock := &MockMulticlusterUpstreamReconcileLoop{ctrl: ctrl} mock.recorder = &MockMulticlusterUpstreamReconcileLoopMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterUpstreamReconcileLoop) EXPECT() *MockMulticlusterUpstreamReconcileLoopMockRecorder { return m.recorder } -// AddMulticlusterUpstreamReconciler mocks base method +// AddMulticlusterUpstreamReconciler mocks base method. func (m *MockMulticlusterUpstreamReconcileLoop) AddMulticlusterUpstreamReconciler(ctx context.Context, rec controller.MulticlusterUpstreamReconciler, predicates ...predicate.Predicate) { m.ctrl.T.Helper() varargs := []interface{}{ctx, rec} @@ -238,37 +238,37 @@ func (m *MockMulticlusterUpstreamReconcileLoop) AddMulticlusterUpstreamReconcile m.ctrl.Call(m, "AddMulticlusterUpstreamReconciler", varargs...) } -// AddMulticlusterUpstreamReconciler indicates an expected call of AddMulticlusterUpstreamReconciler +// AddMulticlusterUpstreamReconciler indicates an expected call of AddMulticlusterUpstreamReconciler. func (mr *MockMulticlusterUpstreamReconcileLoopMockRecorder) AddMulticlusterUpstreamReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, rec}, predicates...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterUpstreamReconciler", reflect.TypeOf((*MockMulticlusterUpstreamReconcileLoop)(nil).AddMulticlusterUpstreamReconciler), varargs...) } -// MockMulticlusterUpstreamGroupReconciler is a mock of MulticlusterUpstreamGroupReconciler interface +// MockMulticlusterUpstreamGroupReconciler is a mock of MulticlusterUpstreamGroupReconciler interface. type MockMulticlusterUpstreamGroupReconciler struct { ctrl *gomock.Controller recorder *MockMulticlusterUpstreamGroupReconcilerMockRecorder } -// MockMulticlusterUpstreamGroupReconcilerMockRecorder is the mock recorder for MockMulticlusterUpstreamGroupReconciler +// MockMulticlusterUpstreamGroupReconcilerMockRecorder is the mock recorder for MockMulticlusterUpstreamGroupReconciler. type MockMulticlusterUpstreamGroupReconcilerMockRecorder struct { mock *MockMulticlusterUpstreamGroupReconciler } -// NewMockMulticlusterUpstreamGroupReconciler creates a new mock instance +// NewMockMulticlusterUpstreamGroupReconciler creates a new mock instance. func NewMockMulticlusterUpstreamGroupReconciler(ctrl *gomock.Controller) *MockMulticlusterUpstreamGroupReconciler { mock := &MockMulticlusterUpstreamGroupReconciler{ctrl: ctrl} mock.recorder = &MockMulticlusterUpstreamGroupReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterUpstreamGroupReconciler) EXPECT() *MockMulticlusterUpstreamGroupReconcilerMockRecorder { return m.recorder } -// ReconcileUpstreamGroup mocks base method +// ReconcileUpstreamGroup mocks base method. func (m *MockMulticlusterUpstreamGroupReconciler) ReconcileUpstreamGroup(clusterName string, obj *v1.UpstreamGroup) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileUpstreamGroup", clusterName, obj) @@ -277,36 +277,36 @@ func (m *MockMulticlusterUpstreamGroupReconciler) ReconcileUpstreamGroup(cluster return ret0, ret1 } -// ReconcileUpstreamGroup indicates an expected call of ReconcileUpstreamGroup +// ReconcileUpstreamGroup indicates an expected call of ReconcileUpstreamGroup. func (mr *MockMulticlusterUpstreamGroupReconcilerMockRecorder) ReconcileUpstreamGroup(clusterName, obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileUpstreamGroup", reflect.TypeOf((*MockMulticlusterUpstreamGroupReconciler)(nil).ReconcileUpstreamGroup), clusterName, obj) } -// MockMulticlusterUpstreamGroupDeletionReconciler is a mock of MulticlusterUpstreamGroupDeletionReconciler interface +// MockMulticlusterUpstreamGroupDeletionReconciler is a mock of MulticlusterUpstreamGroupDeletionReconciler interface. type MockMulticlusterUpstreamGroupDeletionReconciler struct { ctrl *gomock.Controller recorder *MockMulticlusterUpstreamGroupDeletionReconcilerMockRecorder } -// MockMulticlusterUpstreamGroupDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterUpstreamGroupDeletionReconciler +// MockMulticlusterUpstreamGroupDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterUpstreamGroupDeletionReconciler. type MockMulticlusterUpstreamGroupDeletionReconcilerMockRecorder struct { mock *MockMulticlusterUpstreamGroupDeletionReconciler } -// NewMockMulticlusterUpstreamGroupDeletionReconciler creates a new mock instance +// NewMockMulticlusterUpstreamGroupDeletionReconciler creates a new mock instance. func NewMockMulticlusterUpstreamGroupDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterUpstreamGroupDeletionReconciler { mock := &MockMulticlusterUpstreamGroupDeletionReconciler{ctrl: ctrl} mock.recorder = &MockMulticlusterUpstreamGroupDeletionReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterUpstreamGroupDeletionReconciler) EXPECT() *MockMulticlusterUpstreamGroupDeletionReconcilerMockRecorder { return m.recorder } -// ReconcileUpstreamGroupDeletion mocks base method +// ReconcileUpstreamGroupDeletion mocks base method. func (m *MockMulticlusterUpstreamGroupDeletionReconciler) ReconcileUpstreamGroupDeletion(clusterName string, req reconcile.Request) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileUpstreamGroupDeletion", clusterName, req) @@ -314,36 +314,36 @@ func (m *MockMulticlusterUpstreamGroupDeletionReconciler) ReconcileUpstreamGroup return ret0 } -// ReconcileUpstreamGroupDeletion indicates an expected call of ReconcileUpstreamGroupDeletion +// ReconcileUpstreamGroupDeletion indicates an expected call of ReconcileUpstreamGroupDeletion. func (mr *MockMulticlusterUpstreamGroupDeletionReconcilerMockRecorder) ReconcileUpstreamGroupDeletion(clusterName, req interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileUpstreamGroupDeletion", reflect.TypeOf((*MockMulticlusterUpstreamGroupDeletionReconciler)(nil).ReconcileUpstreamGroupDeletion), clusterName, req) } -// MockMulticlusterUpstreamGroupReconcileLoop is a mock of MulticlusterUpstreamGroupReconcileLoop interface +// MockMulticlusterUpstreamGroupReconcileLoop is a mock of MulticlusterUpstreamGroupReconcileLoop interface. type MockMulticlusterUpstreamGroupReconcileLoop struct { ctrl *gomock.Controller recorder *MockMulticlusterUpstreamGroupReconcileLoopMockRecorder } -// MockMulticlusterUpstreamGroupReconcileLoopMockRecorder is the mock recorder for MockMulticlusterUpstreamGroupReconcileLoop +// MockMulticlusterUpstreamGroupReconcileLoopMockRecorder is the mock recorder for MockMulticlusterUpstreamGroupReconcileLoop. type MockMulticlusterUpstreamGroupReconcileLoopMockRecorder struct { mock *MockMulticlusterUpstreamGroupReconcileLoop } -// NewMockMulticlusterUpstreamGroupReconcileLoop creates a new mock instance +// NewMockMulticlusterUpstreamGroupReconcileLoop creates a new mock instance. func NewMockMulticlusterUpstreamGroupReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterUpstreamGroupReconcileLoop { mock := &MockMulticlusterUpstreamGroupReconcileLoop{ctrl: ctrl} mock.recorder = &MockMulticlusterUpstreamGroupReconcileLoopMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterUpstreamGroupReconcileLoop) EXPECT() *MockMulticlusterUpstreamGroupReconcileLoopMockRecorder { return m.recorder } -// AddMulticlusterUpstreamGroupReconciler mocks base method +// AddMulticlusterUpstreamGroupReconciler mocks base method. func (m *MockMulticlusterUpstreamGroupReconcileLoop) AddMulticlusterUpstreamGroupReconciler(ctx context.Context, rec controller.MulticlusterUpstreamGroupReconciler, predicates ...predicate.Predicate) { m.ctrl.T.Helper() varargs := []interface{}{ctx, rec} @@ -353,37 +353,37 @@ func (m *MockMulticlusterUpstreamGroupReconcileLoop) AddMulticlusterUpstreamGrou m.ctrl.Call(m, "AddMulticlusterUpstreamGroupReconciler", varargs...) } -// AddMulticlusterUpstreamGroupReconciler indicates an expected call of AddMulticlusterUpstreamGroupReconciler +// AddMulticlusterUpstreamGroupReconciler indicates an expected call of AddMulticlusterUpstreamGroupReconciler. func (mr *MockMulticlusterUpstreamGroupReconcileLoopMockRecorder) AddMulticlusterUpstreamGroupReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, rec}, predicates...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterUpstreamGroupReconciler", reflect.TypeOf((*MockMulticlusterUpstreamGroupReconcileLoop)(nil).AddMulticlusterUpstreamGroupReconciler), varargs...) } -// MockMulticlusterProxyReconciler is a mock of MulticlusterProxyReconciler interface +// MockMulticlusterProxyReconciler is a mock of MulticlusterProxyReconciler interface. type MockMulticlusterProxyReconciler struct { ctrl *gomock.Controller recorder *MockMulticlusterProxyReconcilerMockRecorder } -// MockMulticlusterProxyReconcilerMockRecorder is the mock recorder for MockMulticlusterProxyReconciler +// MockMulticlusterProxyReconcilerMockRecorder is the mock recorder for MockMulticlusterProxyReconciler. type MockMulticlusterProxyReconcilerMockRecorder struct { mock *MockMulticlusterProxyReconciler } -// NewMockMulticlusterProxyReconciler creates a new mock instance +// NewMockMulticlusterProxyReconciler creates a new mock instance. func NewMockMulticlusterProxyReconciler(ctrl *gomock.Controller) *MockMulticlusterProxyReconciler { mock := &MockMulticlusterProxyReconciler{ctrl: ctrl} mock.recorder = &MockMulticlusterProxyReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterProxyReconciler) EXPECT() *MockMulticlusterProxyReconcilerMockRecorder { return m.recorder } -// ReconcileProxy mocks base method +// ReconcileProxy mocks base method. func (m *MockMulticlusterProxyReconciler) ReconcileProxy(clusterName string, obj *v1.Proxy) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileProxy", clusterName, obj) @@ -392,36 +392,36 @@ func (m *MockMulticlusterProxyReconciler) ReconcileProxy(clusterName string, obj return ret0, ret1 } -// ReconcileProxy indicates an expected call of ReconcileProxy +// ReconcileProxy indicates an expected call of ReconcileProxy. func (mr *MockMulticlusterProxyReconcilerMockRecorder) ReconcileProxy(clusterName, obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileProxy", reflect.TypeOf((*MockMulticlusterProxyReconciler)(nil).ReconcileProxy), clusterName, obj) } -// MockMulticlusterProxyDeletionReconciler is a mock of MulticlusterProxyDeletionReconciler interface +// MockMulticlusterProxyDeletionReconciler is a mock of MulticlusterProxyDeletionReconciler interface. type MockMulticlusterProxyDeletionReconciler struct { ctrl *gomock.Controller recorder *MockMulticlusterProxyDeletionReconcilerMockRecorder } -// MockMulticlusterProxyDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterProxyDeletionReconciler +// MockMulticlusterProxyDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterProxyDeletionReconciler. type MockMulticlusterProxyDeletionReconcilerMockRecorder struct { mock *MockMulticlusterProxyDeletionReconciler } -// NewMockMulticlusterProxyDeletionReconciler creates a new mock instance +// NewMockMulticlusterProxyDeletionReconciler creates a new mock instance. func NewMockMulticlusterProxyDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterProxyDeletionReconciler { mock := &MockMulticlusterProxyDeletionReconciler{ctrl: ctrl} mock.recorder = &MockMulticlusterProxyDeletionReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterProxyDeletionReconciler) EXPECT() *MockMulticlusterProxyDeletionReconcilerMockRecorder { return m.recorder } -// ReconcileProxyDeletion mocks base method +// ReconcileProxyDeletion mocks base method. func (m *MockMulticlusterProxyDeletionReconciler) ReconcileProxyDeletion(clusterName string, req reconcile.Request) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileProxyDeletion", clusterName, req) @@ -429,36 +429,36 @@ func (m *MockMulticlusterProxyDeletionReconciler) ReconcileProxyDeletion(cluster return ret0 } -// ReconcileProxyDeletion indicates an expected call of ReconcileProxyDeletion +// ReconcileProxyDeletion indicates an expected call of ReconcileProxyDeletion. func (mr *MockMulticlusterProxyDeletionReconcilerMockRecorder) ReconcileProxyDeletion(clusterName, req interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileProxyDeletion", reflect.TypeOf((*MockMulticlusterProxyDeletionReconciler)(nil).ReconcileProxyDeletion), clusterName, req) } -// MockMulticlusterProxyReconcileLoop is a mock of MulticlusterProxyReconcileLoop interface +// MockMulticlusterProxyReconcileLoop is a mock of MulticlusterProxyReconcileLoop interface. type MockMulticlusterProxyReconcileLoop struct { ctrl *gomock.Controller recorder *MockMulticlusterProxyReconcileLoopMockRecorder } -// MockMulticlusterProxyReconcileLoopMockRecorder is the mock recorder for MockMulticlusterProxyReconcileLoop +// MockMulticlusterProxyReconcileLoopMockRecorder is the mock recorder for MockMulticlusterProxyReconcileLoop. type MockMulticlusterProxyReconcileLoopMockRecorder struct { mock *MockMulticlusterProxyReconcileLoop } -// NewMockMulticlusterProxyReconcileLoop creates a new mock instance +// NewMockMulticlusterProxyReconcileLoop creates a new mock instance. func NewMockMulticlusterProxyReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterProxyReconcileLoop { mock := &MockMulticlusterProxyReconcileLoop{ctrl: ctrl} mock.recorder = &MockMulticlusterProxyReconcileLoopMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterProxyReconcileLoop) EXPECT() *MockMulticlusterProxyReconcileLoopMockRecorder { return m.recorder } -// AddMulticlusterProxyReconciler mocks base method +// AddMulticlusterProxyReconciler mocks base method. func (m *MockMulticlusterProxyReconcileLoop) AddMulticlusterProxyReconciler(ctx context.Context, rec controller.MulticlusterProxyReconciler, predicates ...predicate.Predicate) { m.ctrl.T.Helper() varargs := []interface{}{ctx, rec} @@ -468,7 +468,7 @@ func (m *MockMulticlusterProxyReconcileLoop) AddMulticlusterProxyReconciler(ctx m.ctrl.Call(m, "AddMulticlusterProxyReconciler", varargs...) } -// AddMulticlusterProxyReconciler indicates an expected call of AddMulticlusterProxyReconciler +// AddMulticlusterProxyReconciler indicates an expected call of AddMulticlusterProxyReconciler. func (mr *MockMulticlusterProxyReconcileLoopMockRecorder) AddMulticlusterProxyReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, rec}, predicates...) diff --git a/pkg/api/gloo.solo.io/v1/controller/mocks/reconcilers.go b/pkg/api/gloo.solo.io/v1/controller/mocks/reconcilers.go index c406a6a6f..9c17f8ab6 100644 --- a/pkg/api/gloo.solo.io/v1/controller/mocks/reconcilers.go +++ b/pkg/api/gloo.solo.io/v1/controller/mocks/reconcilers.go @@ -15,30 +15,30 @@ import ( predicate "sigs.k8s.io/controller-runtime/pkg/predicate" ) -// MockSettingsReconciler is a mock of SettingsReconciler interface +// MockSettingsReconciler is a mock of SettingsReconciler interface. type MockSettingsReconciler struct { ctrl *gomock.Controller recorder *MockSettingsReconcilerMockRecorder } -// MockSettingsReconcilerMockRecorder is the mock recorder for MockSettingsReconciler +// MockSettingsReconcilerMockRecorder is the mock recorder for MockSettingsReconciler. type MockSettingsReconcilerMockRecorder struct { mock *MockSettingsReconciler } -// NewMockSettingsReconciler creates a new mock instance +// NewMockSettingsReconciler creates a new mock instance. func NewMockSettingsReconciler(ctrl *gomock.Controller) *MockSettingsReconciler { mock := &MockSettingsReconciler{ctrl: ctrl} mock.recorder = &MockSettingsReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockSettingsReconciler) EXPECT() *MockSettingsReconcilerMockRecorder { return m.recorder } -// ReconcileSettings mocks base method +// ReconcileSettings mocks base method. func (m *MockSettingsReconciler) ReconcileSettings(obj *v1.Settings) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileSettings", obj) @@ -47,36 +47,36 @@ func (m *MockSettingsReconciler) ReconcileSettings(obj *v1.Settings) (reconcile. return ret0, ret1 } -// ReconcileSettings indicates an expected call of ReconcileSettings +// ReconcileSettings indicates an expected call of ReconcileSettings. func (mr *MockSettingsReconcilerMockRecorder) ReconcileSettings(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileSettings", reflect.TypeOf((*MockSettingsReconciler)(nil).ReconcileSettings), obj) } -// MockSettingsDeletionReconciler is a mock of SettingsDeletionReconciler interface +// MockSettingsDeletionReconciler is a mock of SettingsDeletionReconciler interface. type MockSettingsDeletionReconciler struct { ctrl *gomock.Controller recorder *MockSettingsDeletionReconcilerMockRecorder } -// MockSettingsDeletionReconcilerMockRecorder is the mock recorder for MockSettingsDeletionReconciler +// MockSettingsDeletionReconcilerMockRecorder is the mock recorder for MockSettingsDeletionReconciler. type MockSettingsDeletionReconcilerMockRecorder struct { mock *MockSettingsDeletionReconciler } -// NewMockSettingsDeletionReconciler creates a new mock instance +// NewMockSettingsDeletionReconciler creates a new mock instance. func NewMockSettingsDeletionReconciler(ctrl *gomock.Controller) *MockSettingsDeletionReconciler { mock := &MockSettingsDeletionReconciler{ctrl: ctrl} mock.recorder = &MockSettingsDeletionReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockSettingsDeletionReconciler) EXPECT() *MockSettingsDeletionReconcilerMockRecorder { return m.recorder } -// ReconcileSettingsDeletion mocks base method +// ReconcileSettingsDeletion mocks base method. func (m *MockSettingsDeletionReconciler) ReconcileSettingsDeletion(req reconcile.Request) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileSettingsDeletion", req) @@ -84,36 +84,50 @@ func (m *MockSettingsDeletionReconciler) ReconcileSettingsDeletion(req reconcile return ret0 } -// ReconcileSettingsDeletion indicates an expected call of ReconcileSettingsDeletion +// ReconcileSettingsDeletion indicates an expected call of ReconcileSettingsDeletion. func (mr *MockSettingsDeletionReconcilerMockRecorder) ReconcileSettingsDeletion(req interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileSettingsDeletion", reflect.TypeOf((*MockSettingsDeletionReconciler)(nil).ReconcileSettingsDeletion), req) } -// MockSettingsFinalizer is a mock of SettingsFinalizer interface +// MockSettingsFinalizer is a mock of SettingsFinalizer interface. type MockSettingsFinalizer struct { ctrl *gomock.Controller recorder *MockSettingsFinalizerMockRecorder } -// MockSettingsFinalizerMockRecorder is the mock recorder for MockSettingsFinalizer +// MockSettingsFinalizerMockRecorder is the mock recorder for MockSettingsFinalizer. type MockSettingsFinalizerMockRecorder struct { mock *MockSettingsFinalizer } -// NewMockSettingsFinalizer creates a new mock instance +// NewMockSettingsFinalizer creates a new mock instance. func NewMockSettingsFinalizer(ctrl *gomock.Controller) *MockSettingsFinalizer { mock := &MockSettingsFinalizer{ctrl: ctrl} mock.recorder = &MockSettingsFinalizerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockSettingsFinalizer) EXPECT() *MockSettingsFinalizerMockRecorder { return m.recorder } -// ReconcileSettings mocks base method +// FinalizeSettings mocks base method. +func (m *MockSettingsFinalizer) FinalizeSettings(obj *v1.Settings) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeSettings", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeSettings indicates an expected call of FinalizeSettings. +func (mr *MockSettingsFinalizerMockRecorder) FinalizeSettings(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeSettings", reflect.TypeOf((*MockSettingsFinalizer)(nil).FinalizeSettings), obj) +} + +// ReconcileSettings mocks base method. func (m *MockSettingsFinalizer) ReconcileSettings(obj *v1.Settings) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileSettings", obj) @@ -122,13 +136,13 @@ func (m *MockSettingsFinalizer) ReconcileSettings(obj *v1.Settings) (reconcile.R return ret0, ret1 } -// ReconcileSettings indicates an expected call of ReconcileSettings +// ReconcileSettings indicates an expected call of ReconcileSettings. func (mr *MockSettingsFinalizerMockRecorder) ReconcileSettings(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileSettings", reflect.TypeOf((*MockSettingsFinalizer)(nil).ReconcileSettings), obj) } -// SettingsFinalizerName mocks base method +// SettingsFinalizerName mocks base method. func (m *MockSettingsFinalizer) SettingsFinalizerName() string { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "SettingsFinalizerName") @@ -136,50 +150,36 @@ func (m *MockSettingsFinalizer) SettingsFinalizerName() string { return ret0 } -// SettingsFinalizerName indicates an expected call of SettingsFinalizerName +// SettingsFinalizerName indicates an expected call of SettingsFinalizerName. func (mr *MockSettingsFinalizerMockRecorder) SettingsFinalizerName() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SettingsFinalizerName", reflect.TypeOf((*MockSettingsFinalizer)(nil).SettingsFinalizerName)) } -// FinalizeSettings mocks base method -func (m *MockSettingsFinalizer) FinalizeSettings(obj *v1.Settings) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "FinalizeSettings", obj) - ret0, _ := ret[0].(error) - return ret0 -} - -// FinalizeSettings indicates an expected call of FinalizeSettings -func (mr *MockSettingsFinalizerMockRecorder) FinalizeSettings(obj interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeSettings", reflect.TypeOf((*MockSettingsFinalizer)(nil).FinalizeSettings), obj) -} - -// MockSettingsReconcileLoop is a mock of SettingsReconcileLoop interface +// MockSettingsReconcileLoop is a mock of SettingsReconcileLoop interface. type MockSettingsReconcileLoop struct { ctrl *gomock.Controller recorder *MockSettingsReconcileLoopMockRecorder } -// MockSettingsReconcileLoopMockRecorder is the mock recorder for MockSettingsReconcileLoop +// MockSettingsReconcileLoopMockRecorder is the mock recorder for MockSettingsReconcileLoop. type MockSettingsReconcileLoopMockRecorder struct { mock *MockSettingsReconcileLoop } -// NewMockSettingsReconcileLoop creates a new mock instance +// NewMockSettingsReconcileLoop creates a new mock instance. func NewMockSettingsReconcileLoop(ctrl *gomock.Controller) *MockSettingsReconcileLoop { mock := &MockSettingsReconcileLoop{ctrl: ctrl} mock.recorder = &MockSettingsReconcileLoopMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockSettingsReconcileLoop) EXPECT() *MockSettingsReconcileLoopMockRecorder { return m.recorder } -// RunSettingsReconciler mocks base method +// RunSettingsReconciler mocks base method. func (m *MockSettingsReconcileLoop) RunSettingsReconciler(ctx context.Context, rec controller.SettingsReconciler, predicates ...predicate.Predicate) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, rec} @@ -191,37 +191,37 @@ func (m *MockSettingsReconcileLoop) RunSettingsReconciler(ctx context.Context, r return ret0 } -// RunSettingsReconciler indicates an expected call of RunSettingsReconciler +// RunSettingsReconciler indicates an expected call of RunSettingsReconciler. func (mr *MockSettingsReconcileLoopMockRecorder) RunSettingsReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, rec}, predicates...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunSettingsReconciler", reflect.TypeOf((*MockSettingsReconcileLoop)(nil).RunSettingsReconciler), varargs...) } -// MockUpstreamReconciler is a mock of UpstreamReconciler interface +// MockUpstreamReconciler is a mock of UpstreamReconciler interface. type MockUpstreamReconciler struct { ctrl *gomock.Controller recorder *MockUpstreamReconcilerMockRecorder } -// MockUpstreamReconcilerMockRecorder is the mock recorder for MockUpstreamReconciler +// MockUpstreamReconcilerMockRecorder is the mock recorder for MockUpstreamReconciler. type MockUpstreamReconcilerMockRecorder struct { mock *MockUpstreamReconciler } -// NewMockUpstreamReconciler creates a new mock instance +// NewMockUpstreamReconciler creates a new mock instance. func NewMockUpstreamReconciler(ctrl *gomock.Controller) *MockUpstreamReconciler { mock := &MockUpstreamReconciler{ctrl: ctrl} mock.recorder = &MockUpstreamReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockUpstreamReconciler) EXPECT() *MockUpstreamReconcilerMockRecorder { return m.recorder } -// ReconcileUpstream mocks base method +// ReconcileUpstream mocks base method. func (m *MockUpstreamReconciler) ReconcileUpstream(obj *v1.Upstream) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileUpstream", obj) @@ -230,36 +230,36 @@ func (m *MockUpstreamReconciler) ReconcileUpstream(obj *v1.Upstream) (reconcile. return ret0, ret1 } -// ReconcileUpstream indicates an expected call of ReconcileUpstream +// ReconcileUpstream indicates an expected call of ReconcileUpstream. func (mr *MockUpstreamReconcilerMockRecorder) ReconcileUpstream(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileUpstream", reflect.TypeOf((*MockUpstreamReconciler)(nil).ReconcileUpstream), obj) } -// MockUpstreamDeletionReconciler is a mock of UpstreamDeletionReconciler interface +// MockUpstreamDeletionReconciler is a mock of UpstreamDeletionReconciler interface. type MockUpstreamDeletionReconciler struct { ctrl *gomock.Controller recorder *MockUpstreamDeletionReconcilerMockRecorder } -// MockUpstreamDeletionReconcilerMockRecorder is the mock recorder for MockUpstreamDeletionReconciler +// MockUpstreamDeletionReconcilerMockRecorder is the mock recorder for MockUpstreamDeletionReconciler. type MockUpstreamDeletionReconcilerMockRecorder struct { mock *MockUpstreamDeletionReconciler } -// NewMockUpstreamDeletionReconciler creates a new mock instance +// NewMockUpstreamDeletionReconciler creates a new mock instance. func NewMockUpstreamDeletionReconciler(ctrl *gomock.Controller) *MockUpstreamDeletionReconciler { mock := &MockUpstreamDeletionReconciler{ctrl: ctrl} mock.recorder = &MockUpstreamDeletionReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockUpstreamDeletionReconciler) EXPECT() *MockUpstreamDeletionReconcilerMockRecorder { return m.recorder } -// ReconcileUpstreamDeletion mocks base method +// ReconcileUpstreamDeletion mocks base method. func (m *MockUpstreamDeletionReconciler) ReconcileUpstreamDeletion(req reconcile.Request) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileUpstreamDeletion", req) @@ -267,36 +267,50 @@ func (m *MockUpstreamDeletionReconciler) ReconcileUpstreamDeletion(req reconcile return ret0 } -// ReconcileUpstreamDeletion indicates an expected call of ReconcileUpstreamDeletion +// ReconcileUpstreamDeletion indicates an expected call of ReconcileUpstreamDeletion. func (mr *MockUpstreamDeletionReconcilerMockRecorder) ReconcileUpstreamDeletion(req interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileUpstreamDeletion", reflect.TypeOf((*MockUpstreamDeletionReconciler)(nil).ReconcileUpstreamDeletion), req) } -// MockUpstreamFinalizer is a mock of UpstreamFinalizer interface +// MockUpstreamFinalizer is a mock of UpstreamFinalizer interface. type MockUpstreamFinalizer struct { ctrl *gomock.Controller recorder *MockUpstreamFinalizerMockRecorder } -// MockUpstreamFinalizerMockRecorder is the mock recorder for MockUpstreamFinalizer +// MockUpstreamFinalizerMockRecorder is the mock recorder for MockUpstreamFinalizer. type MockUpstreamFinalizerMockRecorder struct { mock *MockUpstreamFinalizer } -// NewMockUpstreamFinalizer creates a new mock instance +// NewMockUpstreamFinalizer creates a new mock instance. func NewMockUpstreamFinalizer(ctrl *gomock.Controller) *MockUpstreamFinalizer { mock := &MockUpstreamFinalizer{ctrl: ctrl} mock.recorder = &MockUpstreamFinalizerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockUpstreamFinalizer) EXPECT() *MockUpstreamFinalizerMockRecorder { return m.recorder } -// ReconcileUpstream mocks base method +// FinalizeUpstream mocks base method. +func (m *MockUpstreamFinalizer) FinalizeUpstream(obj *v1.Upstream) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeUpstream", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeUpstream indicates an expected call of FinalizeUpstream. +func (mr *MockUpstreamFinalizerMockRecorder) FinalizeUpstream(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeUpstream", reflect.TypeOf((*MockUpstreamFinalizer)(nil).FinalizeUpstream), obj) +} + +// ReconcileUpstream mocks base method. func (m *MockUpstreamFinalizer) ReconcileUpstream(obj *v1.Upstream) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileUpstream", obj) @@ -305,13 +319,13 @@ func (m *MockUpstreamFinalizer) ReconcileUpstream(obj *v1.Upstream) (reconcile.R return ret0, ret1 } -// ReconcileUpstream indicates an expected call of ReconcileUpstream +// ReconcileUpstream indicates an expected call of ReconcileUpstream. func (mr *MockUpstreamFinalizerMockRecorder) ReconcileUpstream(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileUpstream", reflect.TypeOf((*MockUpstreamFinalizer)(nil).ReconcileUpstream), obj) } -// UpstreamFinalizerName mocks base method +// UpstreamFinalizerName mocks base method. func (m *MockUpstreamFinalizer) UpstreamFinalizerName() string { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "UpstreamFinalizerName") @@ -319,50 +333,36 @@ func (m *MockUpstreamFinalizer) UpstreamFinalizerName() string { return ret0 } -// UpstreamFinalizerName indicates an expected call of UpstreamFinalizerName +// UpstreamFinalizerName indicates an expected call of UpstreamFinalizerName. func (mr *MockUpstreamFinalizerMockRecorder) UpstreamFinalizerName() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpstreamFinalizerName", reflect.TypeOf((*MockUpstreamFinalizer)(nil).UpstreamFinalizerName)) } -// FinalizeUpstream mocks base method -func (m *MockUpstreamFinalizer) FinalizeUpstream(obj *v1.Upstream) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "FinalizeUpstream", obj) - ret0, _ := ret[0].(error) - return ret0 -} - -// FinalizeUpstream indicates an expected call of FinalizeUpstream -func (mr *MockUpstreamFinalizerMockRecorder) FinalizeUpstream(obj interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeUpstream", reflect.TypeOf((*MockUpstreamFinalizer)(nil).FinalizeUpstream), obj) -} - -// MockUpstreamReconcileLoop is a mock of UpstreamReconcileLoop interface +// MockUpstreamReconcileLoop is a mock of UpstreamReconcileLoop interface. type MockUpstreamReconcileLoop struct { ctrl *gomock.Controller recorder *MockUpstreamReconcileLoopMockRecorder } -// MockUpstreamReconcileLoopMockRecorder is the mock recorder for MockUpstreamReconcileLoop +// MockUpstreamReconcileLoopMockRecorder is the mock recorder for MockUpstreamReconcileLoop. type MockUpstreamReconcileLoopMockRecorder struct { mock *MockUpstreamReconcileLoop } -// NewMockUpstreamReconcileLoop creates a new mock instance +// NewMockUpstreamReconcileLoop creates a new mock instance. func NewMockUpstreamReconcileLoop(ctrl *gomock.Controller) *MockUpstreamReconcileLoop { mock := &MockUpstreamReconcileLoop{ctrl: ctrl} mock.recorder = &MockUpstreamReconcileLoopMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockUpstreamReconcileLoop) EXPECT() *MockUpstreamReconcileLoopMockRecorder { return m.recorder } -// RunUpstreamReconciler mocks base method +// RunUpstreamReconciler mocks base method. func (m *MockUpstreamReconcileLoop) RunUpstreamReconciler(ctx context.Context, rec controller.UpstreamReconciler, predicates ...predicate.Predicate) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, rec} @@ -374,37 +374,37 @@ func (m *MockUpstreamReconcileLoop) RunUpstreamReconciler(ctx context.Context, r return ret0 } -// RunUpstreamReconciler indicates an expected call of RunUpstreamReconciler +// RunUpstreamReconciler indicates an expected call of RunUpstreamReconciler. func (mr *MockUpstreamReconcileLoopMockRecorder) RunUpstreamReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, rec}, predicates...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunUpstreamReconciler", reflect.TypeOf((*MockUpstreamReconcileLoop)(nil).RunUpstreamReconciler), varargs...) } -// MockUpstreamGroupReconciler is a mock of UpstreamGroupReconciler interface +// MockUpstreamGroupReconciler is a mock of UpstreamGroupReconciler interface. type MockUpstreamGroupReconciler struct { ctrl *gomock.Controller recorder *MockUpstreamGroupReconcilerMockRecorder } -// MockUpstreamGroupReconcilerMockRecorder is the mock recorder for MockUpstreamGroupReconciler +// MockUpstreamGroupReconcilerMockRecorder is the mock recorder for MockUpstreamGroupReconciler. type MockUpstreamGroupReconcilerMockRecorder struct { mock *MockUpstreamGroupReconciler } -// NewMockUpstreamGroupReconciler creates a new mock instance +// NewMockUpstreamGroupReconciler creates a new mock instance. func NewMockUpstreamGroupReconciler(ctrl *gomock.Controller) *MockUpstreamGroupReconciler { mock := &MockUpstreamGroupReconciler{ctrl: ctrl} mock.recorder = &MockUpstreamGroupReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockUpstreamGroupReconciler) EXPECT() *MockUpstreamGroupReconcilerMockRecorder { return m.recorder } -// ReconcileUpstreamGroup mocks base method +// ReconcileUpstreamGroup mocks base method. func (m *MockUpstreamGroupReconciler) ReconcileUpstreamGroup(obj *v1.UpstreamGroup) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileUpstreamGroup", obj) @@ -413,36 +413,36 @@ func (m *MockUpstreamGroupReconciler) ReconcileUpstreamGroup(obj *v1.UpstreamGro return ret0, ret1 } -// ReconcileUpstreamGroup indicates an expected call of ReconcileUpstreamGroup +// ReconcileUpstreamGroup indicates an expected call of ReconcileUpstreamGroup. func (mr *MockUpstreamGroupReconcilerMockRecorder) ReconcileUpstreamGroup(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupReconciler)(nil).ReconcileUpstreamGroup), obj) } -// MockUpstreamGroupDeletionReconciler is a mock of UpstreamGroupDeletionReconciler interface +// MockUpstreamGroupDeletionReconciler is a mock of UpstreamGroupDeletionReconciler interface. type MockUpstreamGroupDeletionReconciler struct { ctrl *gomock.Controller recorder *MockUpstreamGroupDeletionReconcilerMockRecorder } -// MockUpstreamGroupDeletionReconcilerMockRecorder is the mock recorder for MockUpstreamGroupDeletionReconciler +// MockUpstreamGroupDeletionReconcilerMockRecorder is the mock recorder for MockUpstreamGroupDeletionReconciler. type MockUpstreamGroupDeletionReconcilerMockRecorder struct { mock *MockUpstreamGroupDeletionReconciler } -// NewMockUpstreamGroupDeletionReconciler creates a new mock instance +// NewMockUpstreamGroupDeletionReconciler creates a new mock instance. func NewMockUpstreamGroupDeletionReconciler(ctrl *gomock.Controller) *MockUpstreamGroupDeletionReconciler { mock := &MockUpstreamGroupDeletionReconciler{ctrl: ctrl} mock.recorder = &MockUpstreamGroupDeletionReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockUpstreamGroupDeletionReconciler) EXPECT() *MockUpstreamGroupDeletionReconcilerMockRecorder { return m.recorder } -// ReconcileUpstreamGroupDeletion mocks base method +// ReconcileUpstreamGroupDeletion mocks base method. func (m *MockUpstreamGroupDeletionReconciler) ReconcileUpstreamGroupDeletion(req reconcile.Request) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileUpstreamGroupDeletion", req) @@ -450,36 +450,50 @@ func (m *MockUpstreamGroupDeletionReconciler) ReconcileUpstreamGroupDeletion(req return ret0 } -// ReconcileUpstreamGroupDeletion indicates an expected call of ReconcileUpstreamGroupDeletion +// ReconcileUpstreamGroupDeletion indicates an expected call of ReconcileUpstreamGroupDeletion. func (mr *MockUpstreamGroupDeletionReconcilerMockRecorder) ReconcileUpstreamGroupDeletion(req interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileUpstreamGroupDeletion", reflect.TypeOf((*MockUpstreamGroupDeletionReconciler)(nil).ReconcileUpstreamGroupDeletion), req) } -// MockUpstreamGroupFinalizer is a mock of UpstreamGroupFinalizer interface +// MockUpstreamGroupFinalizer is a mock of UpstreamGroupFinalizer interface. type MockUpstreamGroupFinalizer struct { ctrl *gomock.Controller recorder *MockUpstreamGroupFinalizerMockRecorder } -// MockUpstreamGroupFinalizerMockRecorder is the mock recorder for MockUpstreamGroupFinalizer +// MockUpstreamGroupFinalizerMockRecorder is the mock recorder for MockUpstreamGroupFinalizer. type MockUpstreamGroupFinalizerMockRecorder struct { mock *MockUpstreamGroupFinalizer } -// NewMockUpstreamGroupFinalizer creates a new mock instance +// NewMockUpstreamGroupFinalizer creates a new mock instance. func NewMockUpstreamGroupFinalizer(ctrl *gomock.Controller) *MockUpstreamGroupFinalizer { mock := &MockUpstreamGroupFinalizer{ctrl: ctrl} mock.recorder = &MockUpstreamGroupFinalizerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockUpstreamGroupFinalizer) EXPECT() *MockUpstreamGroupFinalizerMockRecorder { return m.recorder } -// ReconcileUpstreamGroup mocks base method +// FinalizeUpstreamGroup mocks base method. +func (m *MockUpstreamGroupFinalizer) FinalizeUpstreamGroup(obj *v1.UpstreamGroup) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeUpstreamGroup", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeUpstreamGroup indicates an expected call of FinalizeUpstreamGroup. +func (mr *MockUpstreamGroupFinalizerMockRecorder) FinalizeUpstreamGroup(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupFinalizer)(nil).FinalizeUpstreamGroup), obj) +} + +// ReconcileUpstreamGroup mocks base method. func (m *MockUpstreamGroupFinalizer) ReconcileUpstreamGroup(obj *v1.UpstreamGroup) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileUpstreamGroup", obj) @@ -488,13 +502,13 @@ func (m *MockUpstreamGroupFinalizer) ReconcileUpstreamGroup(obj *v1.UpstreamGrou return ret0, ret1 } -// ReconcileUpstreamGroup indicates an expected call of ReconcileUpstreamGroup +// ReconcileUpstreamGroup indicates an expected call of ReconcileUpstreamGroup. func (mr *MockUpstreamGroupFinalizerMockRecorder) ReconcileUpstreamGroup(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupFinalizer)(nil).ReconcileUpstreamGroup), obj) } -// UpstreamGroupFinalizerName mocks base method +// UpstreamGroupFinalizerName mocks base method. func (m *MockUpstreamGroupFinalizer) UpstreamGroupFinalizerName() string { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "UpstreamGroupFinalizerName") @@ -502,50 +516,36 @@ func (m *MockUpstreamGroupFinalizer) UpstreamGroupFinalizerName() string { return ret0 } -// UpstreamGroupFinalizerName indicates an expected call of UpstreamGroupFinalizerName +// UpstreamGroupFinalizerName indicates an expected call of UpstreamGroupFinalizerName. func (mr *MockUpstreamGroupFinalizerMockRecorder) UpstreamGroupFinalizerName() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpstreamGroupFinalizerName", reflect.TypeOf((*MockUpstreamGroupFinalizer)(nil).UpstreamGroupFinalizerName)) } -// FinalizeUpstreamGroup mocks base method -func (m *MockUpstreamGroupFinalizer) FinalizeUpstreamGroup(obj *v1.UpstreamGroup) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "FinalizeUpstreamGroup", obj) - ret0, _ := ret[0].(error) - return ret0 -} - -// FinalizeUpstreamGroup indicates an expected call of FinalizeUpstreamGroup -func (mr *MockUpstreamGroupFinalizerMockRecorder) FinalizeUpstreamGroup(obj interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupFinalizer)(nil).FinalizeUpstreamGroup), obj) -} - -// MockUpstreamGroupReconcileLoop is a mock of UpstreamGroupReconcileLoop interface +// MockUpstreamGroupReconcileLoop is a mock of UpstreamGroupReconcileLoop interface. type MockUpstreamGroupReconcileLoop struct { ctrl *gomock.Controller recorder *MockUpstreamGroupReconcileLoopMockRecorder } -// MockUpstreamGroupReconcileLoopMockRecorder is the mock recorder for MockUpstreamGroupReconcileLoop +// MockUpstreamGroupReconcileLoopMockRecorder is the mock recorder for MockUpstreamGroupReconcileLoop. type MockUpstreamGroupReconcileLoopMockRecorder struct { mock *MockUpstreamGroupReconcileLoop } -// NewMockUpstreamGroupReconcileLoop creates a new mock instance +// NewMockUpstreamGroupReconcileLoop creates a new mock instance. func NewMockUpstreamGroupReconcileLoop(ctrl *gomock.Controller) *MockUpstreamGroupReconcileLoop { mock := &MockUpstreamGroupReconcileLoop{ctrl: ctrl} mock.recorder = &MockUpstreamGroupReconcileLoopMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockUpstreamGroupReconcileLoop) EXPECT() *MockUpstreamGroupReconcileLoopMockRecorder { return m.recorder } -// RunUpstreamGroupReconciler mocks base method +// RunUpstreamGroupReconciler mocks base method. func (m *MockUpstreamGroupReconcileLoop) RunUpstreamGroupReconciler(ctx context.Context, rec controller.UpstreamGroupReconciler, predicates ...predicate.Predicate) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, rec} @@ -557,37 +557,37 @@ func (m *MockUpstreamGroupReconcileLoop) RunUpstreamGroupReconciler(ctx context. return ret0 } -// RunUpstreamGroupReconciler indicates an expected call of RunUpstreamGroupReconciler +// RunUpstreamGroupReconciler indicates an expected call of RunUpstreamGroupReconciler. func (mr *MockUpstreamGroupReconcileLoopMockRecorder) RunUpstreamGroupReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, rec}, predicates...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunUpstreamGroupReconciler", reflect.TypeOf((*MockUpstreamGroupReconcileLoop)(nil).RunUpstreamGroupReconciler), varargs...) } -// MockProxyReconciler is a mock of ProxyReconciler interface +// MockProxyReconciler is a mock of ProxyReconciler interface. type MockProxyReconciler struct { ctrl *gomock.Controller recorder *MockProxyReconcilerMockRecorder } -// MockProxyReconcilerMockRecorder is the mock recorder for MockProxyReconciler +// MockProxyReconcilerMockRecorder is the mock recorder for MockProxyReconciler. type MockProxyReconcilerMockRecorder struct { mock *MockProxyReconciler } -// NewMockProxyReconciler creates a new mock instance +// NewMockProxyReconciler creates a new mock instance. func NewMockProxyReconciler(ctrl *gomock.Controller) *MockProxyReconciler { mock := &MockProxyReconciler{ctrl: ctrl} mock.recorder = &MockProxyReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockProxyReconciler) EXPECT() *MockProxyReconcilerMockRecorder { return m.recorder } -// ReconcileProxy mocks base method +// ReconcileProxy mocks base method. func (m *MockProxyReconciler) ReconcileProxy(obj *v1.Proxy) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileProxy", obj) @@ -596,36 +596,36 @@ func (m *MockProxyReconciler) ReconcileProxy(obj *v1.Proxy) (reconcile.Result, e return ret0, ret1 } -// ReconcileProxy indicates an expected call of ReconcileProxy +// ReconcileProxy indicates an expected call of ReconcileProxy. func (mr *MockProxyReconcilerMockRecorder) ReconcileProxy(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileProxy", reflect.TypeOf((*MockProxyReconciler)(nil).ReconcileProxy), obj) } -// MockProxyDeletionReconciler is a mock of ProxyDeletionReconciler interface +// MockProxyDeletionReconciler is a mock of ProxyDeletionReconciler interface. type MockProxyDeletionReconciler struct { ctrl *gomock.Controller recorder *MockProxyDeletionReconcilerMockRecorder } -// MockProxyDeletionReconcilerMockRecorder is the mock recorder for MockProxyDeletionReconciler +// MockProxyDeletionReconcilerMockRecorder is the mock recorder for MockProxyDeletionReconciler. type MockProxyDeletionReconcilerMockRecorder struct { mock *MockProxyDeletionReconciler } -// NewMockProxyDeletionReconciler creates a new mock instance +// NewMockProxyDeletionReconciler creates a new mock instance. func NewMockProxyDeletionReconciler(ctrl *gomock.Controller) *MockProxyDeletionReconciler { mock := &MockProxyDeletionReconciler{ctrl: ctrl} mock.recorder = &MockProxyDeletionReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockProxyDeletionReconciler) EXPECT() *MockProxyDeletionReconcilerMockRecorder { return m.recorder } -// ReconcileProxyDeletion mocks base method +// ReconcileProxyDeletion mocks base method. func (m *MockProxyDeletionReconciler) ReconcileProxyDeletion(req reconcile.Request) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileProxyDeletion", req) @@ -633,51 +633,50 @@ func (m *MockProxyDeletionReconciler) ReconcileProxyDeletion(req reconcile.Reque return ret0 } -// ReconcileProxyDeletion indicates an expected call of ReconcileProxyDeletion +// ReconcileProxyDeletion indicates an expected call of ReconcileProxyDeletion. func (mr *MockProxyDeletionReconcilerMockRecorder) ReconcileProxyDeletion(req interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileProxyDeletion", reflect.TypeOf((*MockProxyDeletionReconciler)(nil).ReconcileProxyDeletion), req) } -// MockProxyFinalizer is a mock of ProxyFinalizer interface +// MockProxyFinalizer is a mock of ProxyFinalizer interface. type MockProxyFinalizer struct { ctrl *gomock.Controller recorder *MockProxyFinalizerMockRecorder } -// MockProxyFinalizerMockRecorder is the mock recorder for MockProxyFinalizer +// MockProxyFinalizerMockRecorder is the mock recorder for MockProxyFinalizer. type MockProxyFinalizerMockRecorder struct { mock *MockProxyFinalizer } -// NewMockProxyFinalizer creates a new mock instance +// NewMockProxyFinalizer creates a new mock instance. func NewMockProxyFinalizer(ctrl *gomock.Controller) *MockProxyFinalizer { mock := &MockProxyFinalizer{ctrl: ctrl} mock.recorder = &MockProxyFinalizerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockProxyFinalizer) EXPECT() *MockProxyFinalizerMockRecorder { return m.recorder } -// ReconcileProxy mocks base method -func (m *MockProxyFinalizer) ReconcileProxy(obj *v1.Proxy) (reconcile.Result, error) { +// FinalizeProxy mocks base method. +func (m *MockProxyFinalizer) FinalizeProxy(obj *v1.Proxy) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ReconcileProxy", obj) - ret0, _ := ret[0].(reconcile.Result) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "FinalizeProxy", obj) + ret0, _ := ret[0].(error) + return ret0 } -// ReconcileProxy indicates an expected call of ReconcileProxy -func (mr *MockProxyFinalizerMockRecorder) ReconcileProxy(obj interface{}) *gomock.Call { +// FinalizeProxy indicates an expected call of FinalizeProxy. +func (mr *MockProxyFinalizerMockRecorder) FinalizeProxy(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileProxy", reflect.TypeOf((*MockProxyFinalizer)(nil).ReconcileProxy), obj) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeProxy", reflect.TypeOf((*MockProxyFinalizer)(nil).FinalizeProxy), obj) } -// ProxyFinalizerName mocks base method +// ProxyFinalizerName mocks base method. func (m *MockProxyFinalizer) ProxyFinalizerName() string { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ProxyFinalizerName") @@ -685,50 +684,51 @@ func (m *MockProxyFinalizer) ProxyFinalizerName() string { return ret0 } -// ProxyFinalizerName indicates an expected call of ProxyFinalizerName +// ProxyFinalizerName indicates an expected call of ProxyFinalizerName. func (mr *MockProxyFinalizerMockRecorder) ProxyFinalizerName() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProxyFinalizerName", reflect.TypeOf((*MockProxyFinalizer)(nil).ProxyFinalizerName)) } -// FinalizeProxy mocks base method -func (m *MockProxyFinalizer) FinalizeProxy(obj *v1.Proxy) error { +// ReconcileProxy mocks base method. +func (m *MockProxyFinalizer) ReconcileProxy(obj *v1.Proxy) (reconcile.Result, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "FinalizeProxy", obj) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "ReconcileProxy", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// FinalizeProxy indicates an expected call of FinalizeProxy -func (mr *MockProxyFinalizerMockRecorder) FinalizeProxy(obj interface{}) *gomock.Call { +// ReconcileProxy indicates an expected call of ReconcileProxy. +func (mr *MockProxyFinalizerMockRecorder) ReconcileProxy(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeProxy", reflect.TypeOf((*MockProxyFinalizer)(nil).FinalizeProxy), obj) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileProxy", reflect.TypeOf((*MockProxyFinalizer)(nil).ReconcileProxy), obj) } -// MockProxyReconcileLoop is a mock of ProxyReconcileLoop interface +// MockProxyReconcileLoop is a mock of ProxyReconcileLoop interface. type MockProxyReconcileLoop struct { ctrl *gomock.Controller recorder *MockProxyReconcileLoopMockRecorder } -// MockProxyReconcileLoopMockRecorder is the mock recorder for MockProxyReconcileLoop +// MockProxyReconcileLoopMockRecorder is the mock recorder for MockProxyReconcileLoop. type MockProxyReconcileLoopMockRecorder struct { mock *MockProxyReconcileLoop } -// NewMockProxyReconcileLoop creates a new mock instance +// NewMockProxyReconcileLoop creates a new mock instance. func NewMockProxyReconcileLoop(ctrl *gomock.Controller) *MockProxyReconcileLoop { mock := &MockProxyReconcileLoop{ctrl: ctrl} mock.recorder = &MockProxyReconcileLoopMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockProxyReconcileLoop) EXPECT() *MockProxyReconcileLoopMockRecorder { return m.recorder } -// RunProxyReconciler mocks base method +// RunProxyReconciler mocks base method. func (m *MockProxyReconcileLoop) RunProxyReconciler(ctx context.Context, rec controller.ProxyReconciler, predicates ...predicate.Predicate) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, rec} @@ -740,7 +740,7 @@ func (m *MockProxyReconcileLoop) RunProxyReconciler(ctx context.Context, rec con return ret0 } -// RunProxyReconciler indicates an expected call of RunProxyReconciler +// RunProxyReconciler indicates an expected call of RunProxyReconciler. func (mr *MockProxyReconcileLoopMockRecorder) RunProxyReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, rec}, predicates...) diff --git a/pkg/api/gloo.solo.io/v1/core/matchers/matchers.pb.clone.go b/pkg/api/gloo.solo.io/v1/core/matchers/matchers.pb.clone.go new file mode 100644 index 000000000..2932a96ba --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/core/matchers/matchers.pb.clone.go @@ -0,0 +1,161 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/core/matchers/matchers.proto + +package matchers + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *Matcher) Clone() proto.Message { + var target *Matcher + if m == nil { + return target + } + target = &Matcher{} + + if h, ok := interface{}(m.GetCaseSensitive()).(clone.Cloner); ok { + target.CaseSensitive = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.CaseSensitive = proto.Clone(m.GetCaseSensitive()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if m.GetHeaders() != nil { + target.Headers = make([]*HeaderMatcher, len(m.GetHeaders())) + for idx, v := range m.GetHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Headers[idx] = h.Clone().(*HeaderMatcher) + } else { + target.Headers[idx] = proto.Clone(v).(*HeaderMatcher) + } + + } + } + + if m.GetQueryParameters() != nil { + target.QueryParameters = make([]*QueryParameterMatcher, len(m.GetQueryParameters())) + for idx, v := range m.GetQueryParameters() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.QueryParameters[idx] = h.Clone().(*QueryParameterMatcher) + } else { + target.QueryParameters[idx] = proto.Clone(v).(*QueryParameterMatcher) + } + + } + } + + if m.GetMethods() != nil { + target.Methods = make([]string, len(m.GetMethods())) + for idx, v := range m.GetMethods() { + + target.Methods[idx] = v + + } + } + + switch m.PathSpecifier.(type) { + + case *Matcher_Prefix: + + target.PathSpecifier = &Matcher_Prefix{ + Prefix: m.GetPrefix(), + } + + case *Matcher_Exact: + + target.PathSpecifier = &Matcher_Exact{ + Exact: m.GetExact(), + } + + case *Matcher_Regex: + + target.PathSpecifier = &Matcher_Regex{ + Regex: m.GetRegex(), + } + + case *Matcher_ConnectMatcher_: + + if h, ok := interface{}(m.GetConnectMatcher()).(clone.Cloner); ok { + target.PathSpecifier = &Matcher_ConnectMatcher_{ + ConnectMatcher: h.Clone().(*Matcher_ConnectMatcher), + } + } else { + target.PathSpecifier = &Matcher_ConnectMatcher_{ + ConnectMatcher: proto.Clone(m.GetConnectMatcher()).(*Matcher_ConnectMatcher), + } + } + + } + + return target +} + +// Clone function +func (m *HeaderMatcher) Clone() proto.Message { + var target *HeaderMatcher + if m == nil { + return target + } + target = &HeaderMatcher{} + + target.Name = m.GetName() + + target.Value = m.GetValue() + + target.Regex = m.GetRegex() + + target.InvertMatch = m.GetInvertMatch() + + return target +} + +// Clone function +func (m *QueryParameterMatcher) Clone() proto.Message { + var target *QueryParameterMatcher + if m == nil { + return target + } + target = &QueryParameterMatcher{} + + target.Name = m.GetName() + + target.Value = m.GetValue() + + target.Regex = m.GetRegex() + + return target +} + +// Clone function +func (m *Matcher_ConnectMatcher) Clone() proto.Message { + var target *Matcher_ConnectMatcher + if m == nil { + return target + } + target = &Matcher_ConnectMatcher{} + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/core/matchers/matchers.pb.equal.go b/pkg/api/gloo.solo.io/v1/core/matchers/matchers.pb.equal.go index 36d38b716..a3596a4f4 100644 --- a/pkg/api/gloo.solo.io/v1/core/matchers/matchers.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/core/matchers/matchers.pb.equal.go @@ -104,23 +104,52 @@ func (m *Matcher) Equal(that interface{}) bool { switch m.PathSpecifier.(type) { case *Matcher_Prefix: + if _, ok := target.PathSpecifier.(*Matcher_Prefix); !ok { + return false + } if strings.Compare(m.GetPrefix(), target.GetPrefix()) != 0 { return false } case *Matcher_Exact: + if _, ok := target.PathSpecifier.(*Matcher_Exact); !ok { + return false + } if strings.Compare(m.GetExact(), target.GetExact()) != 0 { return false } case *Matcher_Regex: + if _, ok := target.PathSpecifier.(*Matcher_Regex); !ok { + return false + } if strings.Compare(m.GetRegex(), target.GetRegex()) != 0 { return false } + case *Matcher_ConnectMatcher_: + if _, ok := target.PathSpecifier.(*Matcher_ConnectMatcher_); !ok { + return false + } + + if h, ok := interface{}(m.GetConnectMatcher()).(equality.Equalizer); ok { + if !h.Equal(target.GetConnectMatcher()) { + return false + } + } else { + if !proto.Equal(m.GetConnectMatcher(), target.GetConnectMatcher()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.PathSpecifier != target.PathSpecifier { + return false + } } return true @@ -201,3 +230,27 @@ func (m *QueryParameterMatcher) Equal(that interface{}) bool { return true } + +// Equal function +func (m *Matcher_ConnectMatcher) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Matcher_ConnectMatcher) + if !ok { + that2, ok := that.(Matcher_ConnectMatcher) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/core/matchers/matchers.pb.go b/pkg/api/gloo.solo.io/v1/core/matchers/matchers.pb.go index 4e64d728d..4bf8cc400 100644 --- a/pkg/api/gloo.solo.io/v1/core/matchers/matchers.pb.go +++ b/pkg/api/gloo.solo.io/v1/core/matchers/matchers.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/core/matchers/matchers.proto @@ -9,12 +9,12 @@ package matchers import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -24,23 +24,18 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Parameters for matching routes to requests received by a Gloo-managed proxy type Matcher struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to PathSpecifier: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to PathSpecifier: + // // *Matcher_Prefix // *Matcher_Exact // *Matcher_Regex + // *Matcher_ConnectMatcher_ PathSpecifier isMatcher_PathSpecifier `protobuf_oneof:"path_specifier"` // Indicates that prefix/path matching should be case sensitive. The default is true. - CaseSensitive *wrappers.BoolValue `protobuf:"bytes,4,opt,name=case_sensitive,json=caseSensitive,proto3" json:"case_sensitive,omitempty"` + CaseSensitive *wrapperspb.BoolValue `protobuf:"bytes,4,opt,name=case_sensitive,json=caseSensitive,proto3" json:"case_sensitive,omitempty"` // Specifies a set of headers that the route should match on. The router will // check the request’s headers against all the specified headers in the route // config. A match will happen if all the headers in the route are present in @@ -54,16 +49,16 @@ type Matcher struct { // query string for a match to occur. QueryParameters []*QueryParameterMatcher `protobuf:"bytes,7,rep,name=query_parameters,json=queryParameters,proto3" json:"query_parameters,omitempty"` // HTTP Method/Verb(s) to match on. If none specified, the matcher will ignore the HTTP Method - Methods []string `protobuf:"bytes,8,rep,name=methods,proto3" json:"methods,omitempty"` + Methods []string `protobuf:"bytes,8,rep,name=methods,proto3" json:"methods,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Matcher) Reset() { *x = Matcher{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Matcher) String() string { @@ -74,7 +69,7 @@ func (*Matcher) ProtoMessage() {} func (x *Matcher) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -89,35 +84,50 @@ func (*Matcher) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_rawDescGZIP(), []int{0} } -func (m *Matcher) GetPathSpecifier() isMatcher_PathSpecifier { - if m != nil { - return m.PathSpecifier +func (x *Matcher) GetPathSpecifier() isMatcher_PathSpecifier { + if x != nil { + return x.PathSpecifier } return nil } func (x *Matcher) GetPrefix() string { - if x, ok := x.GetPathSpecifier().(*Matcher_Prefix); ok { - return x.Prefix + if x != nil { + if x, ok := x.PathSpecifier.(*Matcher_Prefix); ok { + return x.Prefix + } } return "" } func (x *Matcher) GetExact() string { - if x, ok := x.GetPathSpecifier().(*Matcher_Exact); ok { - return x.Exact + if x != nil { + if x, ok := x.PathSpecifier.(*Matcher_Exact); ok { + return x.Exact + } } return "" } func (x *Matcher) GetRegex() string { - if x, ok := x.GetPathSpecifier().(*Matcher_Regex); ok { - return x.Regex + if x != nil { + if x, ok := x.PathSpecifier.(*Matcher_Regex); ok { + return x.Regex + } } return "" } -func (x *Matcher) GetCaseSensitive() *wrappers.BoolValue { +func (x *Matcher) GetConnectMatcher() *Matcher_ConnectMatcher { + if x != nil { + if x, ok := x.PathSpecifier.(*Matcher_ConnectMatcher_); ok { + return x.ConnectMatcher + } + } + return nil +} + +func (x *Matcher) GetCaseSensitive() *wrapperspb.BoolValue { if x != nil { return x.CaseSensitive } @@ -165,8 +175,7 @@ type Matcher_Regex struct { // If specified, the route is a regular expression rule meaning that the // regex must match the *:path* header once the query string is removed. The entire path // (without the query string) must match the regex. The rule will not match if only a - // sub-sequence of the *:path* header matches the regex. The regex grammar is defined `here - // `_. + // sub-sequence of the *:path* header matches the regex. The regex grammar is defined [here](http://en.cppreference.com/w/cpp/regex/ecmascript). // // Examples:
// @@ -177,23 +186,34 @@ type Matcher_Regex struct { // // Note that the complexity of the regex is constrained by the regex engine's "program size" setting. // If your regex is too complex, you may need to adjust the `regexMaxProgramSize` field - // in the `GlooOptions` section of your `Settings` resource + // in the `GlooOptions` section of your `Settings` resource (The gloo default is 1024) Regex string `protobuf:"bytes,3,opt,name=regex,proto3,oneof"` } +type Matcher_ConnectMatcher_ struct { + // If this is used as the matcher, the matcher will only match CONNECT requests. + // Note that this will not match HTTP/2 upgrade-style CONNECT requests + // (WebSocket and the like) as they are normalized in Envoy as HTTP/1.1 style + // upgrades. + // This is the only way to match CONNECT requests for HTTP/1.1. For HTTP/2, + // where CONNECT requests may have a path, the path matchers will work if + // there is a path present. + // Note that CONNECT support is currently considered alpha in Envoy. + ConnectMatcher *Matcher_ConnectMatcher `protobuf:"bytes,9,opt,name=connect_matcher,json=connectMatcher,proto3,oneof"` +} + func (*Matcher_Prefix) isMatcher_PathSpecifier() {} func (*Matcher_Exact) isMatcher_PathSpecifier() {} func (*Matcher_Regex) isMatcher_PathSpecifier() {} +func (*Matcher_ConnectMatcher_) isMatcher_PathSpecifier() {} + // Internally, Gloo always uses the HTTP/2 *:authority* header to represent the HTTP/1 *Host* header. // Thus, if attempting to match on *Host*, match on *:authority* instead. type HeaderMatcher struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the name of the header in the request. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Specifies the value of the header. If the value is absent a request that @@ -206,17 +226,17 @@ type HeaderMatcher struct { // Examples: // * name=foo, invert_match=true: matches if no header named `foo` is present // * name=foo, value=bar, invert_match=true: matches if no header named `foo` with value `bar` is present - // * name=foo, value=``\d{3}``, regex=true, invert_match=true: matches if no header named `foo` with a value consisting of three integers is present - InvertMatch bool `protobuf:"varint,4,opt,name=invert_match,json=invertMatch,proto3" json:"invert_match,omitempty"` + // * name=foo, value=`\d{3}`, regex=true, invert_match=true: matches if no header named `foo` with a value consisting of three integers is present + InvertMatch bool `protobuf:"varint,4,opt,name=invert_match,json=invertMatch,proto3" json:"invert_match,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HeaderMatcher) Reset() { *x = HeaderMatcher{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HeaderMatcher) String() string { @@ -227,7 +247,7 @@ func (*HeaderMatcher) ProtoMessage() {} func (x *HeaderMatcher) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -273,10 +293,7 @@ func (x *HeaderMatcher) GetInvertMatch() bool { // Query parameter matching treats the query string of a request's :path header // as an ampersand-separated list of keys and/or key=value elements. type QueryParameterMatcher struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the name of a key that must be present in the requested // *path*'s query string. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` @@ -288,16 +305,16 @@ type QueryParameterMatcher struct { // Defaults to false. The entire query parameter value (i.e., the part to // the right of the equals sign in "key=value") must match the regex. // E.g., the regex "\d+$" will match "123" but not "a123" or "123a". - Regex bool `protobuf:"varint,3,opt,name=regex,proto3" json:"regex,omitempty"` + Regex bool `protobuf:"varint,3,opt,name=regex,proto3" json:"regex,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *QueryParameterMatcher) Reset() { *x = QueryParameterMatcher{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *QueryParameterMatcher) String() string { @@ -308,7 +325,7 @@ func (*QueryParameterMatcher) ProtoMessage() {} func (x *QueryParameterMatcher) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -344,9 +361,45 @@ func (x *QueryParameterMatcher) GetRegex() bool { return false } +type Matcher_ConnectMatcher struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Matcher_ConnectMatcher) Reset() { + *x = Matcher_ConnectMatcher{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Matcher_ConnectMatcher) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Matcher_ConnectMatcher) ProtoMessage() {} + +func (x *Matcher_ConnectMatcher) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Matcher_ConnectMatcher.ProtoReflect.Descriptor instead. +func (*Matcher_ConnectMatcher) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_rawDescGZIP(), []int{0, 0} +} + var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_rawDesc = string([]byte{ 0x0a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -356,78 +409,87 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_pr 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe5, 0x02, 0x0a, + 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd6, 0x03, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x72, 0x65, 0x67, - 0x65, 0x78, 0x12, 0x41, 0x0a, 0x0e, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65, 0x6e, 0x73, 0x69, - 0x74, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, - 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x63, 0x61, 0x73, 0x65, 0x53, 0x65, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x43, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, - 0x73, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, - 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x5c, 0x0a, 0x10, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x07, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x0f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x22, 0x72, 0x0a, 0x0d, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, - 0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x76, - 0x65, 0x72, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x57, 0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, - 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, - 0x65, 0x67, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, - 0x78, 0x42, 0x4c, 0x5a, 0x42, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, - 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x65, 0x78, 0x12, 0x5d, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, + 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x48, + 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x72, 0x12, 0x41, 0x0a, 0x0e, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, + 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x63, 0x61, 0x73, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, + 0x74, 0x69, 0x76, 0x65, 0x12, 0x43, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, + 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x5c, 0x0a, 0x10, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x0f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x73, 0x1a, 0x10, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x72, 0x42, 0x10, 0x0a, 0x0e, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x72, 0x0a, 0x0d, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x74, + 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, + 0x76, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x57, 0x0a, 0x15, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x67, + 0x65, 0x78, 0x42, 0x50, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, + 0x5a, 0x42, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x72, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_goTypes = []interface{}{ - (*Matcher)(nil), // 0: matchers.core.gloo.solo.io.Matcher - (*HeaderMatcher)(nil), // 1: matchers.core.gloo.solo.io.HeaderMatcher - (*QueryParameterMatcher)(nil), // 2: matchers.core.gloo.solo.io.QueryParameterMatcher - (*wrappers.BoolValue)(nil), // 3: google.protobuf.BoolValue +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_goTypes = []any{ + (*Matcher)(nil), // 0: matchers.core.gloo.solo.io.Matcher + (*HeaderMatcher)(nil), // 1: matchers.core.gloo.solo.io.HeaderMatcher + (*QueryParameterMatcher)(nil), // 2: matchers.core.gloo.solo.io.QueryParameterMatcher + (*Matcher_ConnectMatcher)(nil), // 3: matchers.core.gloo.solo.io.Matcher.ConnectMatcher + (*wrapperspb.BoolValue)(nil), // 4: google.protobuf.BoolValue } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_depIdxs = []int32{ - 3, // 0: matchers.core.gloo.solo.io.Matcher.case_sensitive:type_name -> google.protobuf.BoolValue - 1, // 1: matchers.core.gloo.solo.io.Matcher.headers:type_name -> matchers.core.gloo.solo.io.HeaderMatcher - 2, // 2: matchers.core.gloo.solo.io.Matcher.query_parameters:type_name -> matchers.core.gloo.solo.io.QueryParameterMatcher - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name + 3, // 0: matchers.core.gloo.solo.io.Matcher.connect_matcher:type_name -> matchers.core.gloo.solo.io.Matcher.ConnectMatcher + 4, // 1: matchers.core.gloo.solo.io.Matcher.case_sensitive:type_name -> google.protobuf.BoolValue + 1, // 2: matchers.core.gloo.solo.io.Matcher.headers:type_name -> matchers.core.gloo.solo.io.HeaderMatcher + 2, // 3: matchers.core.gloo.solo.io.Matcher.query_parameters:type_name -> matchers.core.gloo.solo.io.QueryParameterMatcher + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_init() } @@ -435,56 +497,19 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_p if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Matcher); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HeaderMatcher); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryParameterMatcher); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_msgTypes[0].OneofWrappers = []any{ (*Matcher_Prefix)(nil), (*Matcher_Exact)(nil), (*Matcher_Regex)(nil), + (*Matcher_ConnectMatcher_)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_rawDesc)), NumEnums: 0, - NumMessages: 3, + NumMessages: 4, NumExtensions: 0, NumServices: 0, }, @@ -493,7 +518,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_p MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_matchers_matchers_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/core/matchers/matchers.pb.hash.go b/pkg/api/gloo.solo.io/v1/core/matchers/matchers.pb.hash.go index 9baaec5ca..ac4d4589b 100644 --- a/pkg/api/gloo.solo.io/v1/core/matchers/matchers.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/core/matchers/matchers.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Matcher) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,14 +43,20 @@ func (m *Matcher) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetCaseSensitive()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CaseSensitive")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCaseSensitive(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCaseSensitive(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("CaseSensitive")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -55,14 +65,20 @@ func (m *Matcher) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetHeaders() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -73,14 +89,20 @@ func (m *Matcher) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetQueryParameters() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -116,12 +138,38 @@ func (m *Matcher) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + case *Matcher_ConnectMatcher_: + + if h, ok := interface{}(m.GetConnectMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectMatcher")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConnectMatcher(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConnectMatcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + } return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HeaderMatcher) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -156,6 +204,10 @@ func (m *HeaderMatcher) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *QueryParameterMatcher) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -183,3 +235,23 @@ func (m *QueryParameterMatcher) Hash(hasher hash.Hash64) (uint64, error) { return hasher.Sum64(), nil } + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Matcher_ConnectMatcher) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("matchers.core.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/core/matchers.Matcher_ConnectMatcher")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/core/matchers/matchers.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/core/matchers/matchers.pb.uniquehash.go new file mode 100644 index 000000000..f7b216869 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/core/matchers/matchers.pb.uniquehash.go @@ -0,0 +1,306 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/core/matchers/matchers.proto + +package matchers + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Matcher) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("matchers.core.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/core/matchers.Matcher")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCaseSensitive()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CaseSensitive")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCaseSensitive(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CaseSensitive")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + for i, v := range m.GetHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("QueryParameters")); err != nil { + return 0, err + } + for i, v := range m.GetQueryParameters() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("Methods")); err != nil { + return 0, err + } + for i, v := range m.GetMethods() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + switch m.PathSpecifier.(type) { + + case *Matcher_Prefix: + + if _, err = hasher.Write([]byte("Prefix")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPrefix())); err != nil { + return 0, err + } + + case *Matcher_Exact: + + if _, err = hasher.Write([]byte("Exact")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetExact())); err != nil { + return 0, err + } + + case *Matcher_Regex: + + if _, err = hasher.Write([]byte("Regex")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRegex())); err != nil { + return 0, err + } + + case *Matcher_ConnectMatcher_: + + if h, ok := interface{}(m.GetConnectMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectMatcher")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConnectMatcher(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConnectMatcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HeaderMatcher) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("matchers.core.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/core/matchers.HeaderMatcher")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetValue())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Regex")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRegex()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("InvertMatch")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetInvertMatch()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *QueryParameterMatcher) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("matchers.core.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/core/matchers.QueryParameterMatcher")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetValue())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Regex")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRegex()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Matcher_ConnectMatcher) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("matchers.core.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/core/matchers.Matcher_ConnectMatcher")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/core/selectors/selectors.pb.clone.go b/pkg/api/gloo.solo.io/v1/core/selectors/selectors.pb.clone.go new file mode 100644 index 000000000..71bb447be --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/core/selectors/selectors.pb.clone.go @@ -0,0 +1,92 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/core/selectors/selectors.proto + +package selectors + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *Selector) Clone() proto.Message { + var target *Selector + if m == nil { + return target + } + target = &Selector{} + + if m.GetNamespaces() != nil { + target.Namespaces = make([]string, len(m.GetNamespaces())) + for idx, v := range m.GetNamespaces() { + + target.Namespaces[idx] = v + + } + } + + if m.GetLabels() != nil { + target.Labels = make(map[string]string, len(m.GetLabels())) + for k, v := range m.GetLabels() { + + target.Labels[k] = v + + } + } + + if m.GetExpressions() != nil { + target.Expressions = make([]*Selector_Expression, len(m.GetExpressions())) + for idx, v := range m.GetExpressions() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Expressions[idx] = h.Clone().(*Selector_Expression) + } else { + target.Expressions[idx] = proto.Clone(v).(*Selector_Expression) + } + + } + } + + return target +} + +// Clone function +func (m *Selector_Expression) Clone() proto.Message { + var target *Selector_Expression + if m == nil { + return target + } + target = &Selector_Expression{} + + target.Key = m.GetKey() + + target.Operator = m.GetOperator() + + if m.GetValues() != nil { + target.Values = make([]string, len(m.GetValues())) + for idx, v := range m.GetValues() { + + target.Values[idx] = v + + } + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/core/selectors/selectors.pb.equal.go b/pkg/api/gloo.solo.io/v1/core/selectors/selectors.pb.equal.go new file mode 100644 index 000000000..1f83f9a5e --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/core/selectors/selectors.pb.equal.go @@ -0,0 +1,132 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/core/selectors/selectors.proto + +package selectors + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *Selector) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Selector) + if !ok { + that2, ok := that.(Selector) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetNamespaces()) != len(target.GetNamespaces()) { + return false + } + for idx, v := range m.GetNamespaces() { + + if strings.Compare(v, target.GetNamespaces()[idx]) != 0 { + return false + } + + } + + if len(m.GetLabels()) != len(target.GetLabels()) { + return false + } + for k, v := range m.GetLabels() { + + if strings.Compare(v, target.GetLabels()[k]) != 0 { + return false + } + + } + + if len(m.GetExpressions()) != len(target.GetExpressions()) { + return false + } + for idx, v := range m.GetExpressions() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetExpressions()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetExpressions()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *Selector_Expression) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Selector_Expression) + if !ok { + that2, ok := that.(Selector_Expression) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetKey(), target.GetKey()) != 0 { + return false + } + + if m.GetOperator() != target.GetOperator() { + return false + } + + if len(m.GetValues()) != len(target.GetValues()) { + return false + } + for idx, v := range m.GetValues() { + + if strings.Compare(v, target.GetValues()[idx]) != 0 { + return false + } + + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/core/selectors/selectors.pb.go b/pkg/api/gloo.solo.io/v1/core/selectors/selectors.pb.go new file mode 100644 index 000000000..d72f7ff48 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/core/selectors/selectors.pb.go @@ -0,0 +1,335 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/core/selectors/selectors.proto + +package selectors + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Selector expression operator, while the set-based syntax differs from Kubernetes (kubernetes: `key: !mylabel`, gloo: `key: mylabel, operator: "!"` | kubernetes: `key: mylabel`, gloo: `key: mylabel, operator: exists`), the functionality remains the same. +type Selector_Expression_Operator int32 + +const ( + // = + Selector_Expression_Equals Selector_Expression_Operator = 0 + // == + Selector_Expression_DoubleEquals Selector_Expression_Operator = 1 + // != + Selector_Expression_NotEquals Selector_Expression_Operator = 2 + // in + Selector_Expression_In Selector_Expression_Operator = 3 + // notin + Selector_Expression_NotIn Selector_Expression_Operator = 4 + // exists + Selector_Expression_Exists Selector_Expression_Operator = 5 + // ! + Selector_Expression_DoesNotExist Selector_Expression_Operator = 6 + // gt + Selector_Expression_GreaterThan Selector_Expression_Operator = 7 + // lt + Selector_Expression_LessThan Selector_Expression_Operator = 8 +) + +// Enum value maps for Selector_Expression_Operator. +var ( + Selector_Expression_Operator_name = map[int32]string{ + 0: "Equals", + 1: "DoubleEquals", + 2: "NotEquals", + 3: "In", + 4: "NotIn", + 5: "Exists", + 6: "DoesNotExist", + 7: "GreaterThan", + 8: "LessThan", + } + Selector_Expression_Operator_value = map[string]int32{ + "Equals": 0, + "DoubleEquals": 1, + "NotEquals": 2, + "In": 3, + "NotIn": 4, + "Exists": 5, + "DoesNotExist": 6, + "GreaterThan": 7, + "LessThan": 8, + } +) + +func (x Selector_Expression_Operator) Enum() *Selector_Expression_Operator { + p := new(Selector_Expression_Operator) + *p = x + return p +} + +func (x Selector_Expression_Operator) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Selector_Expression_Operator) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_enumTypes[0].Descriptor() +} + +func (Selector_Expression_Operator) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_enumTypes[0] +} + +func (x Selector_Expression_Operator) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Selector_Expression_Operator.Descriptor instead. +func (Selector_Expression_Operator) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_rawDescGZIP(), []int{0, 1, 0} +} + +type Selector struct { + state protoimpl.MessageState `protogen:"open.v1"` + Namespaces []string `protobuf:"bytes,1,rep,name=namespaces,proto3" json:"namespaces,omitempty"` + Labels map[string]string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Expressions allow for more flexible Route Tables label matching, such as equality-based requirements, set-based requirements, or a combination of both. + // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#equality-based-requirement + Expressions []*Selector_Expression `protobuf:"bytes,3,rep,name=expressions,proto3" json:"expressions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Selector) Reset() { + *x = Selector{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Selector) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Selector) ProtoMessage() {} + +func (x *Selector) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Selector.ProtoReflect.Descriptor instead. +func (*Selector) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_rawDescGZIP(), []int{0} +} + +func (x *Selector) GetNamespaces() []string { + if x != nil { + return x.Namespaces + } + return nil +} + +func (x *Selector) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *Selector) GetExpressions() []*Selector_Expression { + if x != nil { + return x.Expressions + } + return nil +} + +type Selector_Expression struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Kubernetes label key, must conform to Kubernetes syntax requirements + // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + // The operator can only be in, notin, =, ==, !=, exists, ! (DoesNotExist), gt (GreaterThan), lt (LessThan). + Operator Selector_Expression_Operator `protobuf:"varint,2,opt,name=operator,proto3,enum=selectors.core.gloo.solo.io.Selector_Expression_Operator" json:"operator,omitempty"` + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Selector_Expression) Reset() { + *x = Selector_Expression{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Selector_Expression) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Selector_Expression) ProtoMessage() {} + +func (x *Selector_Expression) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Selector_Expression.ProtoReflect.Descriptor instead. +func (*Selector_Expression) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *Selector_Expression) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *Selector_Expression) GetOperator() Selector_Expression_Operator { + if x != nil { + return x.Operator + } + return Selector_Expression_Equals +} + +func (x *Selector_Expression) GetValues() []string { + if x != nil { + return x.Values + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_rawDesc = string([]byte{ + 0x0a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1b, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0x9e, 0x04, 0x0a, 0x08, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x06, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x52, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, + 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x97, 0x02, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x55, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x10, 0x00, 0x12, + 0x10, 0x0a, 0x0c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x10, + 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x6f, 0x74, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x10, 0x02, + 0x12, 0x06, 0x0a, 0x02, 0x49, 0x6e, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x4e, 0x6f, 0x74, 0x49, + 0x6e, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x10, 0x05, 0x12, + 0x10, 0x0a, 0x0c, 0x44, 0x6f, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, + 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, + 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x65, 0x73, 0x73, 0x54, 0x68, 0x61, 0x6e, 0x10, 0x08, + 0x42, 0x51, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x43, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_goTypes = []any{ + (Selector_Expression_Operator)(0), // 0: selectors.core.gloo.solo.io.Selector.Expression.Operator + (*Selector)(nil), // 1: selectors.core.gloo.solo.io.Selector + nil, // 2: selectors.core.gloo.solo.io.Selector.LabelsEntry + (*Selector_Expression)(nil), // 3: selectors.core.gloo.solo.io.Selector.Expression +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_depIdxs = []int32{ + 2, // 0: selectors.core.gloo.solo.io.Selector.labels:type_name -> selectors.core.gloo.solo.io.Selector.LabelsEntry + 3, // 1: selectors.core.gloo.solo.io.Selector.expressions:type_name -> selectors.core.gloo.solo.io.Selector.Expression + 0, // 2: selectors.core.gloo.solo.io.Selector.Expression.operator:type_name -> selectors.core.gloo.solo.io.Selector.Expression.Operator + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name +} + +func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_init() } +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_rawDesc)), + NumEnums: 1, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_enumTypes, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_core_selectors_selectors_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/core/selectors/selectors.pb.hash.go b/pkg/api/gloo.solo.io/v1/core/selectors/selectors.pb.hash.go new file mode 100644 index 000000000..ed7fdab2c --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/core/selectors/selectors.pb.hash.go @@ -0,0 +1,138 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/core/selectors/selectors.proto + +package selectors + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Selector) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("selectors.core.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/core/selectors.Selector")); err != nil { + return 0, err + } + + for _, v := range m.GetNamespaces() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetLabels() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + for _, v := range m.GetExpressions() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Selector_Expression) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("selectors.core.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/core/selectors.Selector_Expression")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetOperator()) + if err != nil { + return 0, err + } + + for _, v := range m.GetValues() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/core/selectors/selectors.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/core/selectors/selectors.pb.uniquehash.go new file mode 100644 index 000000000..a7d9cb3e4 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/core/selectors/selectors.pb.uniquehash.go @@ -0,0 +1,174 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/core/selectors/selectors.proto + +package selectors + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Selector) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("selectors.core.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/core/selectors.Selector")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Namespaces")); err != nil { + return 0, err + } + for i, v := range m.GetNamespaces() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetLabels() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("Expressions")); err != nil { + return 0, err + } + for i, v := range m.GetExpressions() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Selector_Expression) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("selectors.core.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/core/selectors.Selector_Expression")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Operator")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetOperator()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Values")); err != nil { + return 0, err + } + for i, v := range m.GetValues() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/destination_spec.pb.clone.go b/pkg/api/gloo.solo.io/v1/destination_spec.pb.clone.go new file mode 100644 index 000000000..738474f0e --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/destination_spec.pb.clone.go @@ -0,0 +1,97 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/destination_spec.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_aws "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/aws" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_azure "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/azure" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_grpc "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/grpc" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_rest "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/rest" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *DestinationSpec) Clone() proto.Message { + var target *DestinationSpec + if m == nil { + return target + } + target = &DestinationSpec{} + + switch m.DestinationType.(type) { + + case *DestinationSpec_Aws: + + if h, ok := interface{}(m.GetAws()).(clone.Cloner); ok { + target.DestinationType = &DestinationSpec_Aws{ + Aws: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_aws.DestinationSpec), + } + } else { + target.DestinationType = &DestinationSpec_Aws{ + Aws: proto.Clone(m.GetAws()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_aws.DestinationSpec), + } + } + + case *DestinationSpec_Azure: + + if h, ok := interface{}(m.GetAzure()).(clone.Cloner); ok { + target.DestinationType = &DestinationSpec_Azure{ + Azure: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_azure.DestinationSpec), + } + } else { + target.DestinationType = &DestinationSpec_Azure{ + Azure: proto.Clone(m.GetAzure()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_azure.DestinationSpec), + } + } + + case *DestinationSpec_Rest: + + if h, ok := interface{}(m.GetRest()).(clone.Cloner); ok { + target.DestinationType = &DestinationSpec_Rest{ + Rest: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_rest.DestinationSpec), + } + } else { + target.DestinationType = &DestinationSpec_Rest{ + Rest: proto.Clone(m.GetRest()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_rest.DestinationSpec), + } + } + + case *DestinationSpec_Grpc: + + if h, ok := interface{}(m.GetGrpc()).(clone.Cloner); ok { + target.DestinationType = &DestinationSpec_Grpc{ + Grpc: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_grpc.DestinationSpec), + } + } else { + target.DestinationType = &DestinationSpec_Grpc{ + Grpc: proto.Clone(m.GetGrpc()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_grpc.DestinationSpec), + } + } + + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/destination_spec.pb.equal.go b/pkg/api/gloo.solo.io/v1/destination_spec.pb.equal.go new file mode 100644 index 000000000..b6a65c381 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/destination_spec.pb.equal.go @@ -0,0 +1,119 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/destination_spec.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *DestinationSpec) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*DestinationSpec) + if !ok { + that2, ok := that.(DestinationSpec) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + switch m.DestinationType.(type) { + + case *DestinationSpec_Aws: + if _, ok := target.DestinationType.(*DestinationSpec_Aws); !ok { + return false + } + + if h, ok := interface{}(m.GetAws()).(equality.Equalizer); ok { + if !h.Equal(target.GetAws()) { + return false + } + } else { + if !proto.Equal(m.GetAws(), target.GetAws()) { + return false + } + } + + case *DestinationSpec_Azure: + if _, ok := target.DestinationType.(*DestinationSpec_Azure); !ok { + return false + } + + if h, ok := interface{}(m.GetAzure()).(equality.Equalizer); ok { + if !h.Equal(target.GetAzure()) { + return false + } + } else { + if !proto.Equal(m.GetAzure(), target.GetAzure()) { + return false + } + } + + case *DestinationSpec_Rest: + if _, ok := target.DestinationType.(*DestinationSpec_Rest); !ok { + return false + } + + if h, ok := interface{}(m.GetRest()).(equality.Equalizer); ok { + if !h.Equal(target.GetRest()) { + return false + } + } else { + if !proto.Equal(m.GetRest(), target.GetRest()) { + return false + } + } + + case *DestinationSpec_Grpc: + if _, ok := target.DestinationType.(*DestinationSpec_Grpc); !ok { + return false + } + + if h, ok := interface{}(m.GetGrpc()).(equality.Equalizer); ok { + if !h.Equal(target.GetGrpc()) { + return false + } + } else { + if !proto.Equal(m.GetGrpc(), target.GetGrpc()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.DestinationType != target.DestinationType { + return false + } + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/destination_spec.pb.go b/pkg/api/gloo.solo.io/v1/destination_spec.pb.go new file mode 100644 index 000000000..e5273296c --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/destination_spec.pb.go @@ -0,0 +1,261 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/destination_spec.proto + +package v1 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + aws "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/aws" + azure "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/azure" + grpc "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/grpc" + rest "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/rest" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Configuration for Destinations that are tied to the UpstreamSpec or ServiceSpec on that destination +type DestinationSpec struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Note to developers: new DestinationSpecs must be added to this oneof field + // to be usable by Gloo. + // + // Types that are valid to be assigned to DestinationType: + // + // *DestinationSpec_Aws + // *DestinationSpec_Azure + // *DestinationSpec_Rest + // *DestinationSpec_Grpc + DestinationType isDestinationSpec_DestinationType `protobuf_oneof:"destination_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DestinationSpec) Reset() { + *x = DestinationSpec{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DestinationSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DestinationSpec) ProtoMessage() {} + +func (x *DestinationSpec) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DestinationSpec.ProtoReflect.Descriptor instead. +func (*DestinationSpec) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_rawDescGZIP(), []int{0} +} + +func (x *DestinationSpec) GetDestinationType() isDestinationSpec_DestinationType { + if x != nil { + return x.DestinationType + } + return nil +} + +func (x *DestinationSpec) GetAws() *aws.DestinationSpec { + if x != nil { + if x, ok := x.DestinationType.(*DestinationSpec_Aws); ok { + return x.Aws + } + } + return nil +} + +func (x *DestinationSpec) GetAzure() *azure.DestinationSpec { + if x != nil { + if x, ok := x.DestinationType.(*DestinationSpec_Azure); ok { + return x.Azure + } + } + return nil +} + +func (x *DestinationSpec) GetRest() *rest.DestinationSpec { + if x != nil { + if x, ok := x.DestinationType.(*DestinationSpec_Rest); ok { + return x.Rest + } + } + return nil +} + +func (x *DestinationSpec) GetGrpc() *grpc.DestinationSpec { + if x != nil { + if x, ok := x.DestinationType.(*DestinationSpec_Grpc); ok { + return x.Grpc + } + } + return nil +} + +type isDestinationSpec_DestinationType interface { + isDestinationSpec_DestinationType() +} + +type DestinationSpec_Aws struct { + Aws *aws.DestinationSpec `protobuf:"bytes,1,opt,name=aws,proto3,oneof"` +} + +type DestinationSpec_Azure struct { + Azure *azure.DestinationSpec `protobuf:"bytes,2,opt,name=azure,proto3,oneof"` +} + +type DestinationSpec_Rest struct { + Rest *rest.DestinationSpec `protobuf:"bytes,3,opt,name=rest,proto3,oneof"` +} + +type DestinationSpec_Grpc struct { + Grpc *grpc.DestinationSpec `protobuf:"bytes,4,opt,name=grpc,proto3,oneof"` +} + +func (*DestinationSpec_Aws) isDestinationSpec_DestinationType() {} + +func (*DestinationSpec_Azure) isDestinationSpec_DestinationType() {} + +func (*DestinationSpec_Rest) isDestinationSpec_DestinationType() {} + +func (*DestinationSpec_Grpc) isDestinationSpec_DestinationType() {} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_rawDesc = string([]byte{ + 0x0a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, + 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x61, 0x77, 0x73, 0x2f, 0x61, 0x77, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x47, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x2f, 0x61, 0x7a, 0x75, 0x72, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x65, + 0x73, 0x74, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xad, 0x02, 0x0a, 0x0f, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3d, 0x0a, 0x03, 0x61, 0x77, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x77, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, + 0x48, 0x00, 0x52, 0x03, 0x61, 0x77, 0x73, 0x12, 0x43, 0x0a, 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x12, 0x40, 0x0a, 0x04, + 0x72, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x72, 0x65, 0x73, + 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x04, 0x72, 0x65, 0x73, 0x74, 0x12, 0x40, + 0x0a, 0x04, 0x67, 0x72, 0x70, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x04, 0x67, 0x72, 0x70, 0x63, + 0x42, 0x12, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x42, 0x42, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, + 0x04, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_goTypes = []any{ + (*DestinationSpec)(nil), // 0: gloo.solo.io.DestinationSpec + (*aws.DestinationSpec)(nil), // 1: aws.options.gloo.solo.io.DestinationSpec + (*azure.DestinationSpec)(nil), // 2: azure.options.gloo.solo.io.DestinationSpec + (*rest.DestinationSpec)(nil), // 3: rest.options.gloo.solo.io.DestinationSpec + (*grpc.DestinationSpec)(nil), // 4: grpc.options.gloo.solo.io.DestinationSpec +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_depIdxs = []int32{ + 1, // 0: gloo.solo.io.DestinationSpec.aws:type_name -> aws.options.gloo.solo.io.DestinationSpec + 2, // 1: gloo.solo.io.DestinationSpec.azure:type_name -> azure.options.gloo.solo.io.DestinationSpec + 3, // 2: gloo.solo.io.DestinationSpec.rest:type_name -> rest.options.gloo.solo.io.DestinationSpec + 4, // 3: gloo.solo.io.DestinationSpec.grpc:type_name -> grpc.options.gloo.solo.io.DestinationSpec + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_init() } +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_msgTypes[0].OneofWrappers = []any{ + (*DestinationSpec_Aws)(nil), + (*DestinationSpec_Azure)(nil), + (*DestinationSpec_Rest)(nil), + (*DestinationSpec_Grpc)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/destination_spec.pb.hash.go b/pkg/api/gloo.solo.io/v1/destination_spec.pb.hash.go new file mode 100644 index 000000000..19036bef2 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/destination_spec.pb.hash.go @@ -0,0 +1,138 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/destination_spec.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *DestinationSpec) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.DestinationSpec")); err != nil { + return 0, err + } + + switch m.DestinationType.(type) { + + case *DestinationSpec_Aws: + + if h, ok := interface{}(m.GetAws()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Aws")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAws(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Aws")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *DestinationSpec_Azure: + + if h, ok := interface{}(m.GetAzure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAzure(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *DestinationSpec_Rest: + + if h, ok := interface{}(m.GetRest()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Rest")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRest(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Rest")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *DestinationSpec_Grpc: + + if h, ok := interface{}(m.GetGrpc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Grpc")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpc(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Grpc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/destination_spec.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/destination_spec.pb.uniquehash.go new file mode 100644 index 000000000..bd818f8af --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/destination_spec.pb.uniquehash.go @@ -0,0 +1,139 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/destination_spec.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DestinationSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.DestinationSpec")); err != nil { + return 0, err + } + + switch m.DestinationType.(type) { + + case *DestinationSpec_Aws: + + if h, ok := interface{}(m.GetAws()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Aws")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAws(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Aws")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *DestinationSpec_Azure: + + if h, ok := interface{}(m.GetAzure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAzure(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *DestinationSpec_Rest: + + if h, ok := interface{}(m.GetRest()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Rest")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRest(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Rest")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *DestinationSpec_Grpc: + + if h, ok := interface{}(m.GetGrpc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Grpc")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpc(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Grpc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/endpoint.pb.clone.go b/pkg/api/gloo.solo.io/v1/endpoint.pb.clone.go new file mode 100644 index 000000000..49c0f7f75 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/endpoint.pb.clone.go @@ -0,0 +1,83 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/endpoint.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *Endpoint) Clone() proto.Message { + var target *Endpoint + if m == nil { + return target + } + target = &Endpoint{} + + if m.GetUpstreams() != nil { + target.Upstreams = make([]*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef, len(m.GetUpstreams())) + for idx, v := range m.GetUpstreams() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Upstreams[idx] = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.Upstreams[idx] = proto.Clone(v).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + } + } + + target.Address = m.GetAddress() + + target.Port = m.GetPort() + + target.Hostname = m.GetHostname() + + if h, ok := interface{}(m.GetHealthCheck()).(clone.Cloner); ok { + target.HealthCheck = h.Clone().(*HealthCheckConfig) + } else { + target.HealthCheck = proto.Clone(m.GetHealthCheck()).(*HealthCheckConfig) + } + + if h, ok := interface{}(m.GetMetadata()).(clone.Cloner); ok { + target.Metadata = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.Metadata) + } else { + target.Metadata = proto.Clone(m.GetMetadata()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.Metadata) + } + + return target +} + +// Clone function +func (m *HealthCheckConfig) Clone() proto.Message { + var target *HealthCheckConfig + if m == nil { + return target + } + target = &HealthCheckConfig{} + + target.Hostname = m.GetHostname() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/endpoint.pb.go b/pkg/api/gloo.solo.io/v1/endpoint.pb.go index 0ea42b767..35206ed02 100644 --- a/pkg/api/gloo.solo.io/v1/endpoint.pb.go +++ b/pkg/api/gloo.solo.io/v1/endpoint.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/endpoint.proto @@ -9,8 +9,8 @@ package v1 import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -24,18 +24,9 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -// -// -//Endpoints represent dynamically discovered address/ports where an upstream service is listening +// Endpoints represent dynamically discovered address/ports where an upstream service is listening type Endpoint struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // List of the upstreams the endpoint belongs to Upstreams []*core.ResourceRef `protobuf:"bytes,1,rep,name=upstreams,proto3" json:"upstreams,omitempty"` // Address of the endpoint (ip or hostname) @@ -47,16 +38,16 @@ type Endpoint struct { // configuration for health checking the endpoint. HealthCheck *HealthCheckConfig `protobuf:"bytes,5,opt,name=health_check,json=healthCheck,proto3" json:"health_check,omitempty"` // Metadata contains the object metadata for this resource - Metadata *core.Metadata `protobuf:"bytes,7,opt,name=metadata,proto3" json:"metadata,omitempty"` + Metadata *core.Metadata `protobuf:"bytes,7,opt,name=metadata,proto3" json:"metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Endpoint) Reset() { *x = Endpoint{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Endpoint) String() string { @@ -67,7 +58,7 @@ func (*Endpoint) ProtoMessage() {} func (x *Endpoint) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -125,21 +116,18 @@ func (x *Endpoint) GetMetadata() *core.Metadata { } type HealthCheckConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // hostname to use for the endpoint health checks if provided. - Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"` + Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HealthCheckConfig) Reset() { *x = HealthCheckConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HealthCheckConfig) String() string { @@ -150,7 +138,7 @@ func (*HealthCheckConfig) ProtoMessage() {} func (x *HealthCheckConfig) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -174,7 +162,7 @@ func (x *HealthCheckConfig) GetHostname() string { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_rawDesc = string([]byte{ 0x0a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -190,7 +178,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_rawDesc = 0x6f, 0x1a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa4, 0x02, 0x0a, 0x08, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9c, 0x02, 0x0a, 0x08, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, @@ -206,33 +194,32 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_rawDesc = 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x32, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x1d, 0x82, 0xf1, - 0x04, 0x04, 0x0a, 0x02, 0x65, 0x70, 0x82, 0xf1, 0x04, 0x0b, 0x12, 0x09, 0x65, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x82, 0xf1, 0x04, 0x02, 0x28, 0x01, 0x22, 0x2f, 0x0a, 0x11, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x3e, 0x5a, 0x34, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2f, 0x76, 0x31, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} + 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x15, 0x82, 0xf1, + 0x04, 0x11, 0x0a, 0x02, 0x65, 0x70, 0x12, 0x09, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x28, 0x01, 0x22, 0x2f, 0x0a, 0x11, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, + 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x42, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, + 0x04, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_goTypes = []any{ (*Endpoint)(nil), // 0: gloo.solo.io.Endpoint (*HealthCheckConfig)(nil), // 1: gloo.solo.io.HealthCheckConfig (*core.ResourceRef)(nil), // 2: core.solo.io.ResourceRef @@ -254,37 +241,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_init() { if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Endpoint); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheckConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_rawDesc)), NumEnums: 0, NumMessages: 2, NumExtensions: 0, @@ -295,7 +256,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_init() { MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_endpoint_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/endpoint.pb.hash.go b/pkg/api/gloo.solo.io/v1/endpoint.pb.hash.go index c66afbc7b..e4d63baba 100644 --- a/pkg/api/gloo.solo.io/v1/endpoint.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/endpoint.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Endpoint) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -41,14 +45,20 @@ func (m *Endpoint) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetUpstreams() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -70,28 +80,40 @@ func (m *Endpoint) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetHealthCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HealthCheck")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHealthCheck(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHealthCheck(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HealthCheck")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -101,6 +123,10 @@ func (m *Endpoint) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HealthCheckConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/v1/endpoint.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/endpoint.pb.uniquehash.go new file mode 100644 index 000000000..824df9ef3 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/endpoint.pb.uniquehash.go @@ -0,0 +1,165 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/endpoint.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Endpoint) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.Endpoint")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Upstreams")); err != nil { + return 0, err + } + for i, v := range m.GetUpstreams() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("Address")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAddress())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Port")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPort()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Hostname")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHostname())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHealthCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HealthCheck")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHealthCheck(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HealthCheck")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HealthCheckConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.HealthCheckConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Hostname")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHostname())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/ai/ai.pb.clone.go b/pkg/api/gloo.solo.io/v1/enterprise/options/ai/ai.pb.clone.go new file mode 100644 index 000000000..0d4e69bd8 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/ai/ai.pb.clone.go @@ -0,0 +1,1319 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/ai/ai.proto + +package ai + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *SingleAuthToken) Clone() proto.Message { + var target *SingleAuthToken + if m == nil { + return target + } + target = &SingleAuthToken{} + + switch m.AuthTokenSource.(type) { + + case *SingleAuthToken_Inline: + + target.AuthTokenSource = &SingleAuthToken_Inline{ + Inline: m.GetInline(), + } + + case *SingleAuthToken_SecretRef: + + if h, ok := interface{}(m.GetSecretRef()).(clone.Cloner); ok { + target.AuthTokenSource = &SingleAuthToken_SecretRef{ + SecretRef: h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } else { + target.AuthTokenSource = &SingleAuthToken_SecretRef{ + SecretRef: proto.Clone(m.GetSecretRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } + + case *SingleAuthToken_Passthrough_: + + if h, ok := interface{}(m.GetPassthrough()).(clone.Cloner); ok { + target.AuthTokenSource = &SingleAuthToken_Passthrough_{ + Passthrough: h.Clone().(*SingleAuthToken_Passthrough), + } + } else { + target.AuthTokenSource = &SingleAuthToken_Passthrough_{ + Passthrough: proto.Clone(m.GetPassthrough()).(*SingleAuthToken_Passthrough), + } + } + + } + + return target +} + +// Clone function +func (m *UpstreamSpec) Clone() proto.Message { + var target *UpstreamSpec + if m == nil { + return target + } + target = &UpstreamSpec{} + + switch m.Llm.(type) { + + case *UpstreamSpec_Openai: + + if h, ok := interface{}(m.GetOpenai()).(clone.Cloner); ok { + target.Llm = &UpstreamSpec_Openai{ + Openai: h.Clone().(*UpstreamSpec_OpenAI), + } + } else { + target.Llm = &UpstreamSpec_Openai{ + Openai: proto.Clone(m.GetOpenai()).(*UpstreamSpec_OpenAI), + } + } + + case *UpstreamSpec_Mistral_: + + if h, ok := interface{}(m.GetMistral()).(clone.Cloner); ok { + target.Llm = &UpstreamSpec_Mistral_{ + Mistral: h.Clone().(*UpstreamSpec_Mistral), + } + } else { + target.Llm = &UpstreamSpec_Mistral_{ + Mistral: proto.Clone(m.GetMistral()).(*UpstreamSpec_Mistral), + } + } + + case *UpstreamSpec_Anthropic_: + + if h, ok := interface{}(m.GetAnthropic()).(clone.Cloner); ok { + target.Llm = &UpstreamSpec_Anthropic_{ + Anthropic: h.Clone().(*UpstreamSpec_Anthropic), + } + } else { + target.Llm = &UpstreamSpec_Anthropic_{ + Anthropic: proto.Clone(m.GetAnthropic()).(*UpstreamSpec_Anthropic), + } + } + + case *UpstreamSpec_AzureOpenai: + + if h, ok := interface{}(m.GetAzureOpenai()).(clone.Cloner); ok { + target.Llm = &UpstreamSpec_AzureOpenai{ + AzureOpenai: h.Clone().(*UpstreamSpec_AzureOpenAI), + } + } else { + target.Llm = &UpstreamSpec_AzureOpenai{ + AzureOpenai: proto.Clone(m.GetAzureOpenai()).(*UpstreamSpec_AzureOpenAI), + } + } + + case *UpstreamSpec_Multi: + + if h, ok := interface{}(m.GetMulti()).(clone.Cloner); ok { + target.Llm = &UpstreamSpec_Multi{ + Multi: h.Clone().(*UpstreamSpec_MultiPool), + } + } else { + target.Llm = &UpstreamSpec_Multi{ + Multi: proto.Clone(m.GetMulti()).(*UpstreamSpec_MultiPool), + } + } + + case *UpstreamSpec_Gemini_: + + if h, ok := interface{}(m.GetGemini()).(clone.Cloner); ok { + target.Llm = &UpstreamSpec_Gemini_{ + Gemini: h.Clone().(*UpstreamSpec_Gemini), + } + } else { + target.Llm = &UpstreamSpec_Gemini_{ + Gemini: proto.Clone(m.GetGemini()).(*UpstreamSpec_Gemini), + } + } + + case *UpstreamSpec_VertexAi: + + if h, ok := interface{}(m.GetVertexAi()).(clone.Cloner); ok { + target.Llm = &UpstreamSpec_VertexAi{ + VertexAi: h.Clone().(*UpstreamSpec_VertexAI), + } + } else { + target.Llm = &UpstreamSpec_VertexAi{ + VertexAi: proto.Clone(m.GetVertexAi()).(*UpstreamSpec_VertexAI), + } + } + + case *UpstreamSpec_Bedrock_: + + if h, ok := interface{}(m.GetBedrock()).(clone.Cloner); ok { + target.Llm = &UpstreamSpec_Bedrock_{ + Bedrock: h.Clone().(*UpstreamSpec_Bedrock), + } + } else { + target.Llm = &UpstreamSpec_Bedrock_{ + Bedrock: proto.Clone(m.GetBedrock()).(*UpstreamSpec_Bedrock), + } + } + + } + + return target +} + +// Clone function +func (m *RouteSettings) Clone() proto.Message { + var target *RouteSettings + if m == nil { + return target + } + target = &RouteSettings{} + + if h, ok := interface{}(m.GetPromptEnrichment()).(clone.Cloner); ok { + target.PromptEnrichment = h.Clone().(*AIPromptEnrichment) + } else { + target.PromptEnrichment = proto.Clone(m.GetPromptEnrichment()).(*AIPromptEnrichment) + } + + if h, ok := interface{}(m.GetPromptGuard()).(clone.Cloner); ok { + target.PromptGuard = h.Clone().(*AIPromptGuard) + } else { + target.PromptGuard = proto.Clone(m.GetPromptGuard()).(*AIPromptGuard) + } + + if h, ok := interface{}(m.GetRag()).(clone.Cloner); ok { + target.Rag = h.Clone().(*RAG) + } else { + target.Rag = proto.Clone(m.GetRag()).(*RAG) + } + + if h, ok := interface{}(m.GetSemanticCache()).(clone.Cloner); ok { + target.SemanticCache = h.Clone().(*SemanticCache) + } else { + target.SemanticCache = proto.Clone(m.GetSemanticCache()).(*SemanticCache) + } + + if m.GetDefaults() != nil { + target.Defaults = make([]*FieldDefault, len(m.GetDefaults())) + for idx, v := range m.GetDefaults() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Defaults[idx] = h.Clone().(*FieldDefault) + } else { + target.Defaults[idx] = proto.Clone(v).(*FieldDefault) + } + + } + } + + target.RouteType = m.GetRouteType() + + return target +} + +// Clone function +func (m *FieldDefault) Clone() proto.Message { + var target *FieldDefault + if m == nil { + return target + } + target = &FieldDefault{} + + target.Field = m.GetField() + + if h, ok := interface{}(m.GetValue()).(clone.Cloner); ok { + target.Value = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Value) + } else { + target.Value = proto.Clone(m.GetValue()).(*google_golang_org_protobuf_types_known_structpb.Value) + } + + target.Override = m.GetOverride() + + return target +} + +// Clone function +func (m *Postgres) Clone() proto.Message { + var target *Postgres + if m == nil { + return target + } + target = &Postgres{} + + target.ConnectionString = m.GetConnectionString() + + target.CollectionName = m.GetCollectionName() + + return target +} + +// Clone function +func (m *Embedding) Clone() proto.Message { + var target *Embedding + if m == nil { + return target + } + target = &Embedding{} + + switch m.Embedding.(type) { + + case *Embedding_Openai: + + if h, ok := interface{}(m.GetOpenai()).(clone.Cloner); ok { + target.Embedding = &Embedding_Openai{ + Openai: h.Clone().(*Embedding_OpenAI), + } + } else { + target.Embedding = &Embedding_Openai{ + Openai: proto.Clone(m.GetOpenai()).(*Embedding_OpenAI), + } + } + + case *Embedding_AzureOpenai: + + if h, ok := interface{}(m.GetAzureOpenai()).(clone.Cloner); ok { + target.Embedding = &Embedding_AzureOpenai{ + AzureOpenai: h.Clone().(*Embedding_AzureOpenAI), + } + } else { + target.Embedding = &Embedding_AzureOpenai{ + AzureOpenai: proto.Clone(m.GetAzureOpenai()).(*Embedding_AzureOpenAI), + } + } + + } + + return target +} + +// Clone function +func (m *SemanticCache) Clone() proto.Message { + var target *SemanticCache + if m == nil { + return target + } + target = &SemanticCache{} + + if h, ok := interface{}(m.GetDatastore()).(clone.Cloner); ok { + target.Datastore = h.Clone().(*SemanticCache_DataStore) + } else { + target.Datastore = proto.Clone(m.GetDatastore()).(*SemanticCache_DataStore) + } + + if h, ok := interface{}(m.GetEmbedding()).(clone.Cloner); ok { + target.Embedding = h.Clone().(*Embedding) + } else { + target.Embedding = proto.Clone(m.GetEmbedding()).(*Embedding) + } + + target.Ttl = m.GetTtl() + + target.Mode = m.GetMode() + + target.DistanceThreshold = m.GetDistanceThreshold() + + return target +} + +// Clone function +func (m *RAG) Clone() proto.Message { + var target *RAG + if m == nil { + return target + } + target = &RAG{} + + if h, ok := interface{}(m.GetDatastore()).(clone.Cloner); ok { + target.Datastore = h.Clone().(*RAG_DataStore) + } else { + target.Datastore = proto.Clone(m.GetDatastore()).(*RAG_DataStore) + } + + if h, ok := interface{}(m.GetEmbedding()).(clone.Cloner); ok { + target.Embedding = h.Clone().(*Embedding) + } else { + target.Embedding = proto.Clone(m.GetEmbedding()).(*Embedding) + } + + target.PromptTemplate = m.GetPromptTemplate() + + return target +} + +// Clone function +func (m *AIPromptEnrichment) Clone() proto.Message { + var target *AIPromptEnrichment + if m == nil { + return target + } + target = &AIPromptEnrichment{} + + if m.GetPrepend() != nil { + target.Prepend = make([]*AIPromptEnrichment_Message, len(m.GetPrepend())) + for idx, v := range m.GetPrepend() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Prepend[idx] = h.Clone().(*AIPromptEnrichment_Message) + } else { + target.Prepend[idx] = proto.Clone(v).(*AIPromptEnrichment_Message) + } + + } + } + + if m.GetAppend() != nil { + target.Append = make([]*AIPromptEnrichment_Message, len(m.GetAppend())) + for idx, v := range m.GetAppend() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Append[idx] = h.Clone().(*AIPromptEnrichment_Message) + } else { + target.Append[idx] = proto.Clone(v).(*AIPromptEnrichment_Message) + } + + } + } + + return target +} + +// Clone function +func (m *AIPromptGuard) Clone() proto.Message { + var target *AIPromptGuard + if m == nil { + return target + } + target = &AIPromptGuard{} + + if h, ok := interface{}(m.GetRequest()).(clone.Cloner); ok { + target.Request = h.Clone().(*AIPromptGuard_Request) + } else { + target.Request = proto.Clone(m.GetRequest()).(*AIPromptGuard_Request) + } + + if h, ok := interface{}(m.GetResponse()).(clone.Cloner); ok { + target.Response = h.Clone().(*AIPromptGuard_Response) + } else { + target.Response = proto.Clone(m.GetResponse()).(*AIPromptGuard_Response) + } + + return target +} + +// Clone function +func (m *SingleAuthToken_Passthrough) Clone() proto.Message { + var target *SingleAuthToken_Passthrough + if m == nil { + return target + } + target = &SingleAuthToken_Passthrough{} + + return target +} + +// Clone function +func (m *UpstreamSpec_PathOverride) Clone() proto.Message { + var target *UpstreamSpec_PathOverride + if m == nil { + return target + } + target = &UpstreamSpec_PathOverride{} + + switch m.OverrideType.(type) { + + case *UpstreamSpec_PathOverride_FullPath: + + target.OverrideType = &UpstreamSpec_PathOverride_FullPath{ + FullPath: m.GetFullPath(), + } + + case *UpstreamSpec_PathOverride_BasePath: + + target.OverrideType = &UpstreamSpec_PathOverride_BasePath{ + BasePath: m.GetBasePath(), + } + + } + + return target +} + +// Clone function +func (m *UpstreamSpec_CustomHost) Clone() proto.Message { + var target *UpstreamSpec_CustomHost + if m == nil { + return target + } + target = &UpstreamSpec_CustomHost{} + + target.Host = m.GetHost() + + target.Port = m.GetPort() + + if h, ok := interface{}(m.GetHostname()).(clone.Cloner); ok { + target.Hostname = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.Hostname = proto.Clone(m.GetHostname()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + if h, ok := interface{}(m.GetPathOverride()).(clone.Cloner); ok { + target.PathOverride = h.Clone().(*UpstreamSpec_PathOverride) + } else { + target.PathOverride = proto.Clone(m.GetPathOverride()).(*UpstreamSpec_PathOverride) + } + + return target +} + +// Clone function +func (m *UpstreamSpec_OpenAI) Clone() proto.Message { + var target *UpstreamSpec_OpenAI + if m == nil { + return target + } + target = &UpstreamSpec_OpenAI{} + + if h, ok := interface{}(m.GetAuthToken()).(clone.Cloner); ok { + target.AuthToken = h.Clone().(*SingleAuthToken) + } else { + target.AuthToken = proto.Clone(m.GetAuthToken()).(*SingleAuthToken) + } + + if h, ok := interface{}(m.GetCustomHost()).(clone.Cloner); ok { + target.CustomHost = h.Clone().(*UpstreamSpec_CustomHost) + } else { + target.CustomHost = proto.Clone(m.GetCustomHost()).(*UpstreamSpec_CustomHost) + } + + target.Model = m.GetModel() + + return target +} + +// Clone function +func (m *UpstreamSpec_AzureOpenAI) Clone() proto.Message { + var target *UpstreamSpec_AzureOpenAI + if m == nil { + return target + } + target = &UpstreamSpec_AzureOpenAI{} + + target.Endpoint = m.GetEndpoint() + + target.DeploymentName = m.GetDeploymentName() + + target.ApiVersion = m.GetApiVersion() + + if h, ok := interface{}(m.GetCustomHost()).(clone.Cloner); ok { + target.CustomHost = h.Clone().(*UpstreamSpec_CustomHost) + } else { + target.CustomHost = proto.Clone(m.GetCustomHost()).(*UpstreamSpec_CustomHost) + } + + switch m.AuthTokenSource.(type) { + + case *UpstreamSpec_AzureOpenAI_AuthToken: + + if h, ok := interface{}(m.GetAuthToken()).(clone.Cloner); ok { + target.AuthTokenSource = &UpstreamSpec_AzureOpenAI_AuthToken{ + AuthToken: h.Clone().(*SingleAuthToken), + } + } else { + target.AuthTokenSource = &UpstreamSpec_AzureOpenAI_AuthToken{ + AuthToken: proto.Clone(m.GetAuthToken()).(*SingleAuthToken), + } + } + + } + + return target +} + +// Clone function +func (m *UpstreamSpec_Gemini) Clone() proto.Message { + var target *UpstreamSpec_Gemini + if m == nil { + return target + } + target = &UpstreamSpec_Gemini{} + + target.Model = m.GetModel() + + target.ApiVersion = m.GetApiVersion() + + if h, ok := interface{}(m.GetCustomHost()).(clone.Cloner); ok { + target.CustomHost = h.Clone().(*UpstreamSpec_CustomHost) + } else { + target.CustomHost = proto.Clone(m.GetCustomHost()).(*UpstreamSpec_CustomHost) + } + + switch m.AuthTokenSource.(type) { + + case *UpstreamSpec_Gemini_AuthToken: + + if h, ok := interface{}(m.GetAuthToken()).(clone.Cloner); ok { + target.AuthTokenSource = &UpstreamSpec_Gemini_AuthToken{ + AuthToken: h.Clone().(*SingleAuthToken), + } + } else { + target.AuthTokenSource = &UpstreamSpec_Gemini_AuthToken{ + AuthToken: proto.Clone(m.GetAuthToken()).(*SingleAuthToken), + } + } + + } + + return target +} + +// Clone function +func (m *UpstreamSpec_VertexAI) Clone() proto.Message { + var target *UpstreamSpec_VertexAI + if m == nil { + return target + } + target = &UpstreamSpec_VertexAI{} + + target.Model = m.GetModel() + + target.ApiVersion = m.GetApiVersion() + + target.ProjectId = m.GetProjectId() + + target.Location = m.GetLocation() + + target.ModelPath = m.GetModelPath() + + target.Publisher = m.GetPublisher() + + target.JsonSchema = m.GetJsonSchema() + + if h, ok := interface{}(m.GetCustomHost()).(clone.Cloner); ok { + target.CustomHost = h.Clone().(*UpstreamSpec_CustomHost) + } else { + target.CustomHost = proto.Clone(m.GetCustomHost()).(*UpstreamSpec_CustomHost) + } + + switch m.AuthTokenSource.(type) { + + case *UpstreamSpec_VertexAI_AuthToken: + + if h, ok := interface{}(m.GetAuthToken()).(clone.Cloner); ok { + target.AuthTokenSource = &UpstreamSpec_VertexAI_AuthToken{ + AuthToken: h.Clone().(*SingleAuthToken), + } + } else { + target.AuthTokenSource = &UpstreamSpec_VertexAI_AuthToken{ + AuthToken: proto.Clone(m.GetAuthToken()).(*SingleAuthToken), + } + } + + } + + return target +} + +// Clone function +func (m *UpstreamSpec_Mistral) Clone() proto.Message { + var target *UpstreamSpec_Mistral + if m == nil { + return target + } + target = &UpstreamSpec_Mistral{} + + if h, ok := interface{}(m.GetAuthToken()).(clone.Cloner); ok { + target.AuthToken = h.Clone().(*SingleAuthToken) + } else { + target.AuthToken = proto.Clone(m.GetAuthToken()).(*SingleAuthToken) + } + + if h, ok := interface{}(m.GetCustomHost()).(clone.Cloner); ok { + target.CustomHost = h.Clone().(*UpstreamSpec_CustomHost) + } else { + target.CustomHost = proto.Clone(m.GetCustomHost()).(*UpstreamSpec_CustomHost) + } + + target.Model = m.GetModel() + + return target +} + +// Clone function +func (m *UpstreamSpec_Anthropic) Clone() proto.Message { + var target *UpstreamSpec_Anthropic + if m == nil { + return target + } + target = &UpstreamSpec_Anthropic{} + + if h, ok := interface{}(m.GetAuthToken()).(clone.Cloner); ok { + target.AuthToken = h.Clone().(*SingleAuthToken) + } else { + target.AuthToken = proto.Clone(m.GetAuthToken()).(*SingleAuthToken) + } + + if h, ok := interface{}(m.GetCustomHost()).(clone.Cloner); ok { + target.CustomHost = h.Clone().(*UpstreamSpec_CustomHost) + } else { + target.CustomHost = proto.Clone(m.GetCustomHost()).(*UpstreamSpec_CustomHost) + } + + target.Version = m.GetVersion() + + target.Model = m.GetModel() + + return target +} + +// Clone function +func (m *UpstreamSpec_Bedrock) Clone() proto.Message { + var target *UpstreamSpec_Bedrock + if m == nil { + return target + } + target = &UpstreamSpec_Bedrock{} + + if h, ok := interface{}(m.GetCredentialProvider()).(clone.Cloner); ok { + target.CredentialProvider = h.Clone().(*UpstreamSpec_AwsCredentialProvider) + } else { + target.CredentialProvider = proto.Clone(m.GetCredentialProvider()).(*UpstreamSpec_AwsCredentialProvider) + } + + if h, ok := interface{}(m.GetCustomHost()).(clone.Cloner); ok { + target.CustomHost = h.Clone().(*UpstreamSpec_CustomHost) + } else { + target.CustomHost = proto.Clone(m.GetCustomHost()).(*UpstreamSpec_CustomHost) + } + + target.Model = m.GetModel() + + target.Region = m.GetRegion() + + return target +} + +// Clone function +func (m *UpstreamSpec_AwsCredentialProvider) Clone() proto.Message { + var target *UpstreamSpec_AwsCredentialProvider + if m == nil { + return target + } + target = &UpstreamSpec_AwsCredentialProvider{} + + switch m.AuthTokenSource.(type) { + + case *UpstreamSpec_AwsCredentialProvider_SecretRef: + + if h, ok := interface{}(m.GetSecretRef()).(clone.Cloner); ok { + target.AuthTokenSource = &UpstreamSpec_AwsCredentialProvider_SecretRef{ + SecretRef: h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } else { + target.AuthTokenSource = &UpstreamSpec_AwsCredentialProvider_SecretRef{ + SecretRef: proto.Clone(m.GetSecretRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } + + case *UpstreamSpec_AwsCredentialProvider_Inline: + + if h, ok := interface{}(m.GetInline()).(clone.Cloner); ok { + target.AuthTokenSource = &UpstreamSpec_AwsCredentialProvider_Inline{ + Inline: h.Clone().(*UpstreamSpec_AWSInline), + } + } else { + target.AuthTokenSource = &UpstreamSpec_AwsCredentialProvider_Inline{ + Inline: proto.Clone(m.GetInline()).(*UpstreamSpec_AWSInline), + } + } + + } + + return target +} + +// Clone function +func (m *UpstreamSpec_AWSInline) Clone() proto.Message { + var target *UpstreamSpec_AWSInline + if m == nil { + return target + } + target = &UpstreamSpec_AWSInline{} + + target.AccessKeyId = m.GetAccessKeyId() + + target.SecretAccessKey = m.GetSecretAccessKey() + + target.SessionToken = m.GetSessionToken() + + return target +} + +// Clone function +func (m *UpstreamSpec_MultiPool) Clone() proto.Message { + var target *UpstreamSpec_MultiPool + if m == nil { + return target + } + target = &UpstreamSpec_MultiPool{} + + if m.GetPriorities() != nil { + target.Priorities = make([]*UpstreamSpec_MultiPool_Priority, len(m.GetPriorities())) + for idx, v := range m.GetPriorities() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Priorities[idx] = h.Clone().(*UpstreamSpec_MultiPool_Priority) + } else { + target.Priorities[idx] = proto.Clone(v).(*UpstreamSpec_MultiPool_Priority) + } + + } + } + + return target +} + +// Clone function +func (m *UpstreamSpec_MultiPool_Backend) Clone() proto.Message { + var target *UpstreamSpec_MultiPool_Backend + if m == nil { + return target + } + target = &UpstreamSpec_MultiPool_Backend{} + + switch m.Llm.(type) { + + case *UpstreamSpec_MultiPool_Backend_Openai: + + if h, ok := interface{}(m.GetOpenai()).(clone.Cloner); ok { + target.Llm = &UpstreamSpec_MultiPool_Backend_Openai{ + Openai: h.Clone().(*UpstreamSpec_OpenAI), + } + } else { + target.Llm = &UpstreamSpec_MultiPool_Backend_Openai{ + Openai: proto.Clone(m.GetOpenai()).(*UpstreamSpec_OpenAI), + } + } + + case *UpstreamSpec_MultiPool_Backend_Mistral: + + if h, ok := interface{}(m.GetMistral()).(clone.Cloner); ok { + target.Llm = &UpstreamSpec_MultiPool_Backend_Mistral{ + Mistral: h.Clone().(*UpstreamSpec_Mistral), + } + } else { + target.Llm = &UpstreamSpec_MultiPool_Backend_Mistral{ + Mistral: proto.Clone(m.GetMistral()).(*UpstreamSpec_Mistral), + } + } + + case *UpstreamSpec_MultiPool_Backend_Anthropic: + + if h, ok := interface{}(m.GetAnthropic()).(clone.Cloner); ok { + target.Llm = &UpstreamSpec_MultiPool_Backend_Anthropic{ + Anthropic: h.Clone().(*UpstreamSpec_Anthropic), + } + } else { + target.Llm = &UpstreamSpec_MultiPool_Backend_Anthropic{ + Anthropic: proto.Clone(m.GetAnthropic()).(*UpstreamSpec_Anthropic), + } + } + + case *UpstreamSpec_MultiPool_Backend_AzureOpenai: + + if h, ok := interface{}(m.GetAzureOpenai()).(clone.Cloner); ok { + target.Llm = &UpstreamSpec_MultiPool_Backend_AzureOpenai{ + AzureOpenai: h.Clone().(*UpstreamSpec_AzureOpenAI), + } + } else { + target.Llm = &UpstreamSpec_MultiPool_Backend_AzureOpenai{ + AzureOpenai: proto.Clone(m.GetAzureOpenai()).(*UpstreamSpec_AzureOpenAI), + } + } + + case *UpstreamSpec_MultiPool_Backend_Gemini: + + if h, ok := interface{}(m.GetGemini()).(clone.Cloner); ok { + target.Llm = &UpstreamSpec_MultiPool_Backend_Gemini{ + Gemini: h.Clone().(*UpstreamSpec_Gemini), + } + } else { + target.Llm = &UpstreamSpec_MultiPool_Backend_Gemini{ + Gemini: proto.Clone(m.GetGemini()).(*UpstreamSpec_Gemini), + } + } + + case *UpstreamSpec_MultiPool_Backend_VertexAi: + + if h, ok := interface{}(m.GetVertexAi()).(clone.Cloner); ok { + target.Llm = &UpstreamSpec_MultiPool_Backend_VertexAi{ + VertexAi: h.Clone().(*UpstreamSpec_VertexAI), + } + } else { + target.Llm = &UpstreamSpec_MultiPool_Backend_VertexAi{ + VertexAi: proto.Clone(m.GetVertexAi()).(*UpstreamSpec_VertexAI), + } + } + + case *UpstreamSpec_MultiPool_Backend_Bedrock: + + if h, ok := interface{}(m.GetBedrock()).(clone.Cloner); ok { + target.Llm = &UpstreamSpec_MultiPool_Backend_Bedrock{ + Bedrock: h.Clone().(*UpstreamSpec_Bedrock), + } + } else { + target.Llm = &UpstreamSpec_MultiPool_Backend_Bedrock{ + Bedrock: proto.Clone(m.GetBedrock()).(*UpstreamSpec_Bedrock), + } + } + + } + + return target +} + +// Clone function +func (m *UpstreamSpec_MultiPool_Priority) Clone() proto.Message { + var target *UpstreamSpec_MultiPool_Priority + if m == nil { + return target + } + target = &UpstreamSpec_MultiPool_Priority{} + + if m.GetPool() != nil { + target.Pool = make([]*UpstreamSpec_MultiPool_Backend, len(m.GetPool())) + for idx, v := range m.GetPool() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Pool[idx] = h.Clone().(*UpstreamSpec_MultiPool_Backend) + } else { + target.Pool[idx] = proto.Clone(v).(*UpstreamSpec_MultiPool_Backend) + } + + } + } + + return target +} + +// Clone function +func (m *Embedding_OpenAI) Clone() proto.Message { + var target *Embedding_OpenAI + if m == nil { + return target + } + target = &Embedding_OpenAI{} + + switch m.AuthTokenSource.(type) { + + case *Embedding_OpenAI_AuthToken: + + if h, ok := interface{}(m.GetAuthToken()).(clone.Cloner); ok { + target.AuthTokenSource = &Embedding_OpenAI_AuthToken{ + AuthToken: h.Clone().(*SingleAuthToken), + } + } else { + target.AuthTokenSource = &Embedding_OpenAI_AuthToken{ + AuthToken: proto.Clone(m.GetAuthToken()).(*SingleAuthToken), + } + } + + } + + return target +} + +// Clone function +func (m *Embedding_AzureOpenAI) Clone() proto.Message { + var target *Embedding_AzureOpenAI + if m == nil { + return target + } + target = &Embedding_AzureOpenAI{} + + target.ApiVersion = m.GetApiVersion() + + target.Endpoint = m.GetEndpoint() + + target.DeploymentName = m.GetDeploymentName() + + switch m.AuthTokenSource.(type) { + + case *Embedding_AzureOpenAI_AuthToken: + + if h, ok := interface{}(m.GetAuthToken()).(clone.Cloner); ok { + target.AuthTokenSource = &Embedding_AzureOpenAI_AuthToken{ + AuthToken: h.Clone().(*SingleAuthToken), + } + } else { + target.AuthTokenSource = &Embedding_AzureOpenAI_AuthToken{ + AuthToken: proto.Clone(m.GetAuthToken()).(*SingleAuthToken), + } + } + + } + + return target +} + +// Clone function +func (m *SemanticCache_Redis) Clone() proto.Message { + var target *SemanticCache_Redis + if m == nil { + return target + } + target = &SemanticCache_Redis{} + + target.ConnectionString = m.GetConnectionString() + + target.ScoreThreshold = m.GetScoreThreshold() + + return target +} + +// Clone function +func (m *SemanticCache_Weaviate) Clone() proto.Message { + var target *SemanticCache_Weaviate + if m == nil { + return target + } + target = &SemanticCache_Weaviate{} + + target.Host = m.GetHost() + + target.HttpPort = m.GetHttpPort() + + target.GrpcPort = m.GetGrpcPort() + + target.Insecure = m.GetInsecure() + + return target +} + +// Clone function +func (m *SemanticCache_DataStore) Clone() proto.Message { + var target *SemanticCache_DataStore + if m == nil { + return target + } + target = &SemanticCache_DataStore{} + + switch m.Datastore.(type) { + + case *SemanticCache_DataStore_Redis: + + if h, ok := interface{}(m.GetRedis()).(clone.Cloner); ok { + target.Datastore = &SemanticCache_DataStore_Redis{ + Redis: h.Clone().(*SemanticCache_Redis), + } + } else { + target.Datastore = &SemanticCache_DataStore_Redis{ + Redis: proto.Clone(m.GetRedis()).(*SemanticCache_Redis), + } + } + + case *SemanticCache_DataStore_Weaviate: + + if h, ok := interface{}(m.GetWeaviate()).(clone.Cloner); ok { + target.Datastore = &SemanticCache_DataStore_Weaviate{ + Weaviate: h.Clone().(*SemanticCache_Weaviate), + } + } else { + target.Datastore = &SemanticCache_DataStore_Weaviate{ + Weaviate: proto.Clone(m.GetWeaviate()).(*SemanticCache_Weaviate), + } + } + + } + + return target +} + +// Clone function +func (m *RAG_DataStore) Clone() proto.Message { + var target *RAG_DataStore + if m == nil { + return target + } + target = &RAG_DataStore{} + + switch m.Datastore.(type) { + + case *RAG_DataStore_Postgres: + + if h, ok := interface{}(m.GetPostgres()).(clone.Cloner); ok { + target.Datastore = &RAG_DataStore_Postgres{ + Postgres: h.Clone().(*Postgres), + } + } else { + target.Datastore = &RAG_DataStore_Postgres{ + Postgres: proto.Clone(m.GetPostgres()).(*Postgres), + } + } + + } + + return target +} + +// Clone function +func (m *AIPromptEnrichment_Message) Clone() proto.Message { + var target *AIPromptEnrichment_Message + if m == nil { + return target + } + target = &AIPromptEnrichment_Message{} + + target.Role = m.GetRole() + + target.Content = m.GetContent() + + return target +} + +// Clone function +func (m *AIPromptGuard_Regex) Clone() proto.Message { + var target *AIPromptGuard_Regex + if m == nil { + return target + } + target = &AIPromptGuard_Regex{} + + if m.GetMatches() != nil { + target.Matches = make([]*AIPromptGuard_Regex_RegexMatch, len(m.GetMatches())) + for idx, v := range m.GetMatches() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Matches[idx] = h.Clone().(*AIPromptGuard_Regex_RegexMatch) + } else { + target.Matches[idx] = proto.Clone(v).(*AIPromptGuard_Regex_RegexMatch) + } + + } + } + + if m.GetBuiltins() != nil { + target.Builtins = make([]AIPromptGuard_Regex_BuiltIn, len(m.GetBuiltins())) + for idx, v := range m.GetBuiltins() { + + target.Builtins[idx] = v + + } + } + + target.Action = m.GetAction() + + return target +} + +// Clone function +func (m *AIPromptGuard_Webhook) Clone() proto.Message { + var target *AIPromptGuard_Webhook + if m == nil { + return target + } + target = &AIPromptGuard_Webhook{} + + target.Host = m.GetHost() + + target.Port = m.GetPort() + + if m.GetForwardHeaders() != nil { + target.ForwardHeaders = make([]*AIPromptGuard_Webhook_HeaderMatch, len(m.GetForwardHeaders())) + for idx, v := range m.GetForwardHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ForwardHeaders[idx] = h.Clone().(*AIPromptGuard_Webhook_HeaderMatch) + } else { + target.ForwardHeaders[idx] = proto.Clone(v).(*AIPromptGuard_Webhook_HeaderMatch) + } + + } + } + + return target +} + +// Clone function +func (m *AIPromptGuard_Moderation) Clone() proto.Message { + var target *AIPromptGuard_Moderation + if m == nil { + return target + } + target = &AIPromptGuard_Moderation{} + + switch m.Moderation.(type) { + + case *AIPromptGuard_Moderation_Openai: + + if h, ok := interface{}(m.GetOpenai()).(clone.Cloner); ok { + target.Moderation = &AIPromptGuard_Moderation_Openai{ + Openai: h.Clone().(*AIPromptGuard_Moderation_OpenAI), + } + } else { + target.Moderation = &AIPromptGuard_Moderation_Openai{ + Openai: proto.Clone(m.GetOpenai()).(*AIPromptGuard_Moderation_OpenAI), + } + } + + } + + return target +} + +// Clone function +func (m *AIPromptGuard_Request) Clone() proto.Message { + var target *AIPromptGuard_Request + if m == nil { + return target + } + target = &AIPromptGuard_Request{} + + if h, ok := interface{}(m.GetCustomResponse()).(clone.Cloner); ok { + target.CustomResponse = h.Clone().(*AIPromptGuard_Request_CustomResponse) + } else { + target.CustomResponse = proto.Clone(m.GetCustomResponse()).(*AIPromptGuard_Request_CustomResponse) + } + + if h, ok := interface{}(m.GetRegex()).(clone.Cloner); ok { + target.Regex = h.Clone().(*AIPromptGuard_Regex) + } else { + target.Regex = proto.Clone(m.GetRegex()).(*AIPromptGuard_Regex) + } + + if h, ok := interface{}(m.GetWebhook()).(clone.Cloner); ok { + target.Webhook = h.Clone().(*AIPromptGuard_Webhook) + } else { + target.Webhook = proto.Clone(m.GetWebhook()).(*AIPromptGuard_Webhook) + } + + if h, ok := interface{}(m.GetModeration()).(clone.Cloner); ok { + target.Moderation = h.Clone().(*AIPromptGuard_Moderation) + } else { + target.Moderation = proto.Clone(m.GetModeration()).(*AIPromptGuard_Moderation) + } + + return target +} + +// Clone function +func (m *AIPromptGuard_Response) Clone() proto.Message { + var target *AIPromptGuard_Response + if m == nil { + return target + } + target = &AIPromptGuard_Response{} + + if h, ok := interface{}(m.GetRegex()).(clone.Cloner); ok { + target.Regex = h.Clone().(*AIPromptGuard_Regex) + } else { + target.Regex = proto.Clone(m.GetRegex()).(*AIPromptGuard_Regex) + } + + if h, ok := interface{}(m.GetWebhook()).(clone.Cloner); ok { + target.Webhook = h.Clone().(*AIPromptGuard_Webhook) + } else { + target.Webhook = proto.Clone(m.GetWebhook()).(*AIPromptGuard_Webhook) + } + + return target +} + +// Clone function +func (m *AIPromptGuard_Regex_RegexMatch) Clone() proto.Message { + var target *AIPromptGuard_Regex_RegexMatch + if m == nil { + return target + } + target = &AIPromptGuard_Regex_RegexMatch{} + + target.Pattern = m.GetPattern() + + target.Name = m.GetName() + + return target +} + +// Clone function +func (m *AIPromptGuard_Webhook_HeaderMatch) Clone() proto.Message { + var target *AIPromptGuard_Webhook_HeaderMatch + if m == nil { + return target + } + target = &AIPromptGuard_Webhook_HeaderMatch{} + + target.Key = m.GetKey() + + target.MatchType = m.GetMatchType() + + return target +} + +// Clone function +func (m *AIPromptGuard_Moderation_OpenAI) Clone() proto.Message { + var target *AIPromptGuard_Moderation_OpenAI + if m == nil { + return target + } + target = &AIPromptGuard_Moderation_OpenAI{} + + target.Model = m.GetModel() + + switch m.AuthTokenSource.(type) { + + case *AIPromptGuard_Moderation_OpenAI_AuthToken: + + if h, ok := interface{}(m.GetAuthToken()).(clone.Cloner); ok { + target.AuthTokenSource = &AIPromptGuard_Moderation_OpenAI_AuthToken{ + AuthToken: h.Clone().(*SingleAuthToken), + } + } else { + target.AuthTokenSource = &AIPromptGuard_Moderation_OpenAI_AuthToken{ + AuthToken: proto.Clone(m.GetAuthToken()).(*SingleAuthToken), + } + } + + } + + return target +} + +// Clone function +func (m *AIPromptGuard_Request_CustomResponse) Clone() proto.Message { + var target *AIPromptGuard_Request_CustomResponse + if m == nil { + return target + } + target = &AIPromptGuard_Request_CustomResponse{} + + target.Message = m.GetMessage() + + target.StatusCode = m.GetStatusCode() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/ai/ai.pb.equal.go b/pkg/api/gloo.solo.io/v1/enterprise/options/ai/ai.pb.equal.go new file mode 100644 index 000000000..822ed0ca9 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/ai/ai.pb.equal.go @@ -0,0 +1,2279 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/ai/ai.proto + +package ai + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *SingleAuthToken) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*SingleAuthToken) + if !ok { + that2, ok := that.(SingleAuthToken) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + switch m.AuthTokenSource.(type) { + + case *SingleAuthToken_Inline: + if _, ok := target.AuthTokenSource.(*SingleAuthToken_Inline); !ok { + return false + } + + if strings.Compare(m.GetInline(), target.GetInline()) != 0 { + return false + } + + case *SingleAuthToken_SecretRef: + if _, ok := target.AuthTokenSource.(*SingleAuthToken_SecretRef); !ok { + return false + } + + if h, ok := interface{}(m.GetSecretRef()).(equality.Equalizer); ok { + if !h.Equal(target.GetSecretRef()) { + return false + } + } else { + if !proto.Equal(m.GetSecretRef(), target.GetSecretRef()) { + return false + } + } + + case *SingleAuthToken_Passthrough_: + if _, ok := target.AuthTokenSource.(*SingleAuthToken_Passthrough_); !ok { + return false + } + + if h, ok := interface{}(m.GetPassthrough()).(equality.Equalizer); ok { + if !h.Equal(target.GetPassthrough()) { + return false + } + } else { + if !proto.Equal(m.GetPassthrough(), target.GetPassthrough()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.AuthTokenSource != target.AuthTokenSource { + return false + } + } + + return true +} + +// Equal function +func (m *UpstreamSpec) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*UpstreamSpec) + if !ok { + that2, ok := that.(UpstreamSpec) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + switch m.Llm.(type) { + + case *UpstreamSpec_Openai: + if _, ok := target.Llm.(*UpstreamSpec_Openai); !ok { + return false + } + + if h, ok := interface{}(m.GetOpenai()).(equality.Equalizer); ok { + if !h.Equal(target.GetOpenai()) { + return false + } + } else { + if !proto.Equal(m.GetOpenai(), target.GetOpenai()) { + return false + } + } + + case *UpstreamSpec_Mistral_: + if _, ok := target.Llm.(*UpstreamSpec_Mistral_); !ok { + return false + } + + if h, ok := interface{}(m.GetMistral()).(equality.Equalizer); ok { + if !h.Equal(target.GetMistral()) { + return false + } + } else { + if !proto.Equal(m.GetMistral(), target.GetMistral()) { + return false + } + } + + case *UpstreamSpec_Anthropic_: + if _, ok := target.Llm.(*UpstreamSpec_Anthropic_); !ok { + return false + } + + if h, ok := interface{}(m.GetAnthropic()).(equality.Equalizer); ok { + if !h.Equal(target.GetAnthropic()) { + return false + } + } else { + if !proto.Equal(m.GetAnthropic(), target.GetAnthropic()) { + return false + } + } + + case *UpstreamSpec_AzureOpenai: + if _, ok := target.Llm.(*UpstreamSpec_AzureOpenai); !ok { + return false + } + + if h, ok := interface{}(m.GetAzureOpenai()).(equality.Equalizer); ok { + if !h.Equal(target.GetAzureOpenai()) { + return false + } + } else { + if !proto.Equal(m.GetAzureOpenai(), target.GetAzureOpenai()) { + return false + } + } + + case *UpstreamSpec_Multi: + if _, ok := target.Llm.(*UpstreamSpec_Multi); !ok { + return false + } + + if h, ok := interface{}(m.GetMulti()).(equality.Equalizer); ok { + if !h.Equal(target.GetMulti()) { + return false + } + } else { + if !proto.Equal(m.GetMulti(), target.GetMulti()) { + return false + } + } + + case *UpstreamSpec_Gemini_: + if _, ok := target.Llm.(*UpstreamSpec_Gemini_); !ok { + return false + } + + if h, ok := interface{}(m.GetGemini()).(equality.Equalizer); ok { + if !h.Equal(target.GetGemini()) { + return false + } + } else { + if !proto.Equal(m.GetGemini(), target.GetGemini()) { + return false + } + } + + case *UpstreamSpec_VertexAi: + if _, ok := target.Llm.(*UpstreamSpec_VertexAi); !ok { + return false + } + + if h, ok := interface{}(m.GetVertexAi()).(equality.Equalizer); ok { + if !h.Equal(target.GetVertexAi()) { + return false + } + } else { + if !proto.Equal(m.GetVertexAi(), target.GetVertexAi()) { + return false + } + } + + case *UpstreamSpec_Bedrock_: + if _, ok := target.Llm.(*UpstreamSpec_Bedrock_); !ok { + return false + } + + if h, ok := interface{}(m.GetBedrock()).(equality.Equalizer); ok { + if !h.Equal(target.GetBedrock()) { + return false + } + } else { + if !proto.Equal(m.GetBedrock(), target.GetBedrock()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.Llm != target.Llm { + return false + } + } + + return true +} + +// Equal function +func (m *RouteSettings) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RouteSettings) + if !ok { + that2, ok := that.(RouteSettings) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetPromptEnrichment()).(equality.Equalizer); ok { + if !h.Equal(target.GetPromptEnrichment()) { + return false + } + } else { + if !proto.Equal(m.GetPromptEnrichment(), target.GetPromptEnrichment()) { + return false + } + } + + if h, ok := interface{}(m.GetPromptGuard()).(equality.Equalizer); ok { + if !h.Equal(target.GetPromptGuard()) { + return false + } + } else { + if !proto.Equal(m.GetPromptGuard(), target.GetPromptGuard()) { + return false + } + } + + if h, ok := interface{}(m.GetRag()).(equality.Equalizer); ok { + if !h.Equal(target.GetRag()) { + return false + } + } else { + if !proto.Equal(m.GetRag(), target.GetRag()) { + return false + } + } + + if h, ok := interface{}(m.GetSemanticCache()).(equality.Equalizer); ok { + if !h.Equal(target.GetSemanticCache()) { + return false + } + } else { + if !proto.Equal(m.GetSemanticCache(), target.GetSemanticCache()) { + return false + } + } + + if len(m.GetDefaults()) != len(target.GetDefaults()) { + return false + } + for idx, v := range m.GetDefaults() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetDefaults()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetDefaults()[idx]) { + return false + } + } + + } + + if m.GetRouteType() != target.GetRouteType() { + return false + } + + return true +} + +// Equal function +func (m *FieldDefault) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*FieldDefault) + if !ok { + that2, ok := that.(FieldDefault) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetField(), target.GetField()) != 0 { + return false + } + + if h, ok := interface{}(m.GetValue()).(equality.Equalizer); ok { + if !h.Equal(target.GetValue()) { + return false + } + } else { + if !proto.Equal(m.GetValue(), target.GetValue()) { + return false + } + } + + if m.GetOverride() != target.GetOverride() { + return false + } + + return true +} + +// Equal function +func (m *Postgres) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Postgres) + if !ok { + that2, ok := that.(Postgres) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetConnectionString(), target.GetConnectionString()) != 0 { + return false + } + + if strings.Compare(m.GetCollectionName(), target.GetCollectionName()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *Embedding) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Embedding) + if !ok { + that2, ok := that.(Embedding) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + switch m.Embedding.(type) { + + case *Embedding_Openai: + if _, ok := target.Embedding.(*Embedding_Openai); !ok { + return false + } + + if h, ok := interface{}(m.GetOpenai()).(equality.Equalizer); ok { + if !h.Equal(target.GetOpenai()) { + return false + } + } else { + if !proto.Equal(m.GetOpenai(), target.GetOpenai()) { + return false + } + } + + case *Embedding_AzureOpenai: + if _, ok := target.Embedding.(*Embedding_AzureOpenai); !ok { + return false + } + + if h, ok := interface{}(m.GetAzureOpenai()).(equality.Equalizer); ok { + if !h.Equal(target.GetAzureOpenai()) { + return false + } + } else { + if !proto.Equal(m.GetAzureOpenai(), target.GetAzureOpenai()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.Embedding != target.Embedding { + return false + } + } + + return true +} + +// Equal function +func (m *SemanticCache) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*SemanticCache) + if !ok { + that2, ok := that.(SemanticCache) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetDatastore()).(equality.Equalizer); ok { + if !h.Equal(target.GetDatastore()) { + return false + } + } else { + if !proto.Equal(m.GetDatastore(), target.GetDatastore()) { + return false + } + } + + if h, ok := interface{}(m.GetEmbedding()).(equality.Equalizer); ok { + if !h.Equal(target.GetEmbedding()) { + return false + } + } else { + if !proto.Equal(m.GetEmbedding(), target.GetEmbedding()) { + return false + } + } + + if m.GetTtl() != target.GetTtl() { + return false + } + + if m.GetMode() != target.GetMode() { + return false + } + + if m.GetDistanceThreshold() != target.GetDistanceThreshold() { + return false + } + + return true +} + +// Equal function +func (m *RAG) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RAG) + if !ok { + that2, ok := that.(RAG) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetDatastore()).(equality.Equalizer); ok { + if !h.Equal(target.GetDatastore()) { + return false + } + } else { + if !proto.Equal(m.GetDatastore(), target.GetDatastore()) { + return false + } + } + + if h, ok := interface{}(m.GetEmbedding()).(equality.Equalizer); ok { + if !h.Equal(target.GetEmbedding()) { + return false + } + } else { + if !proto.Equal(m.GetEmbedding(), target.GetEmbedding()) { + return false + } + } + + if strings.Compare(m.GetPromptTemplate(), target.GetPromptTemplate()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *AIPromptEnrichment) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AIPromptEnrichment) + if !ok { + that2, ok := that.(AIPromptEnrichment) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetPrepend()) != len(target.GetPrepend()) { + return false + } + for idx, v := range m.GetPrepend() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetPrepend()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetPrepend()[idx]) { + return false + } + } + + } + + if len(m.GetAppend()) != len(target.GetAppend()) { + return false + } + for idx, v := range m.GetAppend() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetAppend()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetAppend()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *AIPromptGuard) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AIPromptGuard) + if !ok { + that2, ok := that.(AIPromptGuard) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetRequest()).(equality.Equalizer); ok { + if !h.Equal(target.GetRequest()) { + return false + } + } else { + if !proto.Equal(m.GetRequest(), target.GetRequest()) { + return false + } + } + + if h, ok := interface{}(m.GetResponse()).(equality.Equalizer); ok { + if !h.Equal(target.GetResponse()) { + return false + } + } else { + if !proto.Equal(m.GetResponse(), target.GetResponse()) { + return false + } + } + + return true +} + +// Equal function +func (m *SingleAuthToken_Passthrough) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*SingleAuthToken_Passthrough) + if !ok { + that2, ok := that.(SingleAuthToken_Passthrough) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *UpstreamSpec_PathOverride) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*UpstreamSpec_PathOverride) + if !ok { + that2, ok := that.(UpstreamSpec_PathOverride) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + switch m.OverrideType.(type) { + + case *UpstreamSpec_PathOverride_FullPath: + if _, ok := target.OverrideType.(*UpstreamSpec_PathOverride_FullPath); !ok { + return false + } + + if strings.Compare(m.GetFullPath(), target.GetFullPath()) != 0 { + return false + } + + case *UpstreamSpec_PathOverride_BasePath: + if _, ok := target.OverrideType.(*UpstreamSpec_PathOverride_BasePath); !ok { + return false + } + + if strings.Compare(m.GetBasePath(), target.GetBasePath()) != 0 { + return false + } + + default: + // m is nil but target is not nil + if m.OverrideType != target.OverrideType { + return false + } + } + + return true +} + +// Equal function +func (m *UpstreamSpec_CustomHost) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*UpstreamSpec_CustomHost) + if !ok { + that2, ok := that.(UpstreamSpec_CustomHost) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetHost(), target.GetHost()) != 0 { + return false + } + + if m.GetPort() != target.GetPort() { + return false + } + + if h, ok := interface{}(m.GetHostname()).(equality.Equalizer); ok { + if !h.Equal(target.GetHostname()) { + return false + } + } else { + if !proto.Equal(m.GetHostname(), target.GetHostname()) { + return false + } + } + + if h, ok := interface{}(m.GetPathOverride()).(equality.Equalizer); ok { + if !h.Equal(target.GetPathOverride()) { + return false + } + } else { + if !proto.Equal(m.GetPathOverride(), target.GetPathOverride()) { + return false + } + } + + return true +} + +// Equal function +func (m *UpstreamSpec_OpenAI) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*UpstreamSpec_OpenAI) + if !ok { + that2, ok := that.(UpstreamSpec_OpenAI) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetAuthToken()).(equality.Equalizer); ok { + if !h.Equal(target.GetAuthToken()) { + return false + } + } else { + if !proto.Equal(m.GetAuthToken(), target.GetAuthToken()) { + return false + } + } + + if h, ok := interface{}(m.GetCustomHost()).(equality.Equalizer); ok { + if !h.Equal(target.GetCustomHost()) { + return false + } + } else { + if !proto.Equal(m.GetCustomHost(), target.GetCustomHost()) { + return false + } + } + + if strings.Compare(m.GetModel(), target.GetModel()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *UpstreamSpec_AzureOpenAI) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*UpstreamSpec_AzureOpenAI) + if !ok { + that2, ok := that.(UpstreamSpec_AzureOpenAI) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetEndpoint(), target.GetEndpoint()) != 0 { + return false + } + + if strings.Compare(m.GetDeploymentName(), target.GetDeploymentName()) != 0 { + return false + } + + if strings.Compare(m.GetApiVersion(), target.GetApiVersion()) != 0 { + return false + } + + if h, ok := interface{}(m.GetCustomHost()).(equality.Equalizer); ok { + if !h.Equal(target.GetCustomHost()) { + return false + } + } else { + if !proto.Equal(m.GetCustomHost(), target.GetCustomHost()) { + return false + } + } + + switch m.AuthTokenSource.(type) { + + case *UpstreamSpec_AzureOpenAI_AuthToken: + if _, ok := target.AuthTokenSource.(*UpstreamSpec_AzureOpenAI_AuthToken); !ok { + return false + } + + if h, ok := interface{}(m.GetAuthToken()).(equality.Equalizer); ok { + if !h.Equal(target.GetAuthToken()) { + return false + } + } else { + if !proto.Equal(m.GetAuthToken(), target.GetAuthToken()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.AuthTokenSource != target.AuthTokenSource { + return false + } + } + + return true +} + +// Equal function +func (m *UpstreamSpec_Gemini) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*UpstreamSpec_Gemini) + if !ok { + that2, ok := that.(UpstreamSpec_Gemini) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetModel(), target.GetModel()) != 0 { + return false + } + + if strings.Compare(m.GetApiVersion(), target.GetApiVersion()) != 0 { + return false + } + + if h, ok := interface{}(m.GetCustomHost()).(equality.Equalizer); ok { + if !h.Equal(target.GetCustomHost()) { + return false + } + } else { + if !proto.Equal(m.GetCustomHost(), target.GetCustomHost()) { + return false + } + } + + switch m.AuthTokenSource.(type) { + + case *UpstreamSpec_Gemini_AuthToken: + if _, ok := target.AuthTokenSource.(*UpstreamSpec_Gemini_AuthToken); !ok { + return false + } + + if h, ok := interface{}(m.GetAuthToken()).(equality.Equalizer); ok { + if !h.Equal(target.GetAuthToken()) { + return false + } + } else { + if !proto.Equal(m.GetAuthToken(), target.GetAuthToken()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.AuthTokenSource != target.AuthTokenSource { + return false + } + } + + return true +} + +// Equal function +func (m *UpstreamSpec_VertexAI) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*UpstreamSpec_VertexAI) + if !ok { + that2, ok := that.(UpstreamSpec_VertexAI) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetModel(), target.GetModel()) != 0 { + return false + } + + if strings.Compare(m.GetApiVersion(), target.GetApiVersion()) != 0 { + return false + } + + if strings.Compare(m.GetProjectId(), target.GetProjectId()) != 0 { + return false + } + + if strings.Compare(m.GetLocation(), target.GetLocation()) != 0 { + return false + } + + if strings.Compare(m.GetModelPath(), target.GetModelPath()) != 0 { + return false + } + + if m.GetPublisher() != target.GetPublisher() { + return false + } + + if m.GetJsonSchema() != target.GetJsonSchema() { + return false + } + + if h, ok := interface{}(m.GetCustomHost()).(equality.Equalizer); ok { + if !h.Equal(target.GetCustomHost()) { + return false + } + } else { + if !proto.Equal(m.GetCustomHost(), target.GetCustomHost()) { + return false + } + } + + switch m.AuthTokenSource.(type) { + + case *UpstreamSpec_VertexAI_AuthToken: + if _, ok := target.AuthTokenSource.(*UpstreamSpec_VertexAI_AuthToken); !ok { + return false + } + + if h, ok := interface{}(m.GetAuthToken()).(equality.Equalizer); ok { + if !h.Equal(target.GetAuthToken()) { + return false + } + } else { + if !proto.Equal(m.GetAuthToken(), target.GetAuthToken()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.AuthTokenSource != target.AuthTokenSource { + return false + } + } + + return true +} + +// Equal function +func (m *UpstreamSpec_Mistral) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*UpstreamSpec_Mistral) + if !ok { + that2, ok := that.(UpstreamSpec_Mistral) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetAuthToken()).(equality.Equalizer); ok { + if !h.Equal(target.GetAuthToken()) { + return false + } + } else { + if !proto.Equal(m.GetAuthToken(), target.GetAuthToken()) { + return false + } + } + + if h, ok := interface{}(m.GetCustomHost()).(equality.Equalizer); ok { + if !h.Equal(target.GetCustomHost()) { + return false + } + } else { + if !proto.Equal(m.GetCustomHost(), target.GetCustomHost()) { + return false + } + } + + if strings.Compare(m.GetModel(), target.GetModel()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *UpstreamSpec_Anthropic) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*UpstreamSpec_Anthropic) + if !ok { + that2, ok := that.(UpstreamSpec_Anthropic) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetAuthToken()).(equality.Equalizer); ok { + if !h.Equal(target.GetAuthToken()) { + return false + } + } else { + if !proto.Equal(m.GetAuthToken(), target.GetAuthToken()) { + return false + } + } + + if h, ok := interface{}(m.GetCustomHost()).(equality.Equalizer); ok { + if !h.Equal(target.GetCustomHost()) { + return false + } + } else { + if !proto.Equal(m.GetCustomHost(), target.GetCustomHost()) { + return false + } + } + + if strings.Compare(m.GetVersion(), target.GetVersion()) != 0 { + return false + } + + if strings.Compare(m.GetModel(), target.GetModel()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *UpstreamSpec_Bedrock) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*UpstreamSpec_Bedrock) + if !ok { + that2, ok := that.(UpstreamSpec_Bedrock) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetCredentialProvider()).(equality.Equalizer); ok { + if !h.Equal(target.GetCredentialProvider()) { + return false + } + } else { + if !proto.Equal(m.GetCredentialProvider(), target.GetCredentialProvider()) { + return false + } + } + + if h, ok := interface{}(m.GetCustomHost()).(equality.Equalizer); ok { + if !h.Equal(target.GetCustomHost()) { + return false + } + } else { + if !proto.Equal(m.GetCustomHost(), target.GetCustomHost()) { + return false + } + } + + if strings.Compare(m.GetModel(), target.GetModel()) != 0 { + return false + } + + if strings.Compare(m.GetRegion(), target.GetRegion()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *UpstreamSpec_AwsCredentialProvider) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*UpstreamSpec_AwsCredentialProvider) + if !ok { + that2, ok := that.(UpstreamSpec_AwsCredentialProvider) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + switch m.AuthTokenSource.(type) { + + case *UpstreamSpec_AwsCredentialProvider_SecretRef: + if _, ok := target.AuthTokenSource.(*UpstreamSpec_AwsCredentialProvider_SecretRef); !ok { + return false + } + + if h, ok := interface{}(m.GetSecretRef()).(equality.Equalizer); ok { + if !h.Equal(target.GetSecretRef()) { + return false + } + } else { + if !proto.Equal(m.GetSecretRef(), target.GetSecretRef()) { + return false + } + } + + case *UpstreamSpec_AwsCredentialProvider_Inline: + if _, ok := target.AuthTokenSource.(*UpstreamSpec_AwsCredentialProvider_Inline); !ok { + return false + } + + if h, ok := interface{}(m.GetInline()).(equality.Equalizer); ok { + if !h.Equal(target.GetInline()) { + return false + } + } else { + if !proto.Equal(m.GetInline(), target.GetInline()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.AuthTokenSource != target.AuthTokenSource { + return false + } + } + + return true +} + +// Equal function +func (m *UpstreamSpec_AWSInline) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*UpstreamSpec_AWSInline) + if !ok { + that2, ok := that.(UpstreamSpec_AWSInline) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetAccessKeyId(), target.GetAccessKeyId()) != 0 { + return false + } + + if strings.Compare(m.GetSecretAccessKey(), target.GetSecretAccessKey()) != 0 { + return false + } + + if strings.Compare(m.GetSessionToken(), target.GetSessionToken()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *UpstreamSpec_MultiPool) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*UpstreamSpec_MultiPool) + if !ok { + that2, ok := that.(UpstreamSpec_MultiPool) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetPriorities()) != len(target.GetPriorities()) { + return false + } + for idx, v := range m.GetPriorities() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetPriorities()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetPriorities()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *UpstreamSpec_MultiPool_Backend) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*UpstreamSpec_MultiPool_Backend) + if !ok { + that2, ok := that.(UpstreamSpec_MultiPool_Backend) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + switch m.Llm.(type) { + + case *UpstreamSpec_MultiPool_Backend_Openai: + if _, ok := target.Llm.(*UpstreamSpec_MultiPool_Backend_Openai); !ok { + return false + } + + if h, ok := interface{}(m.GetOpenai()).(equality.Equalizer); ok { + if !h.Equal(target.GetOpenai()) { + return false + } + } else { + if !proto.Equal(m.GetOpenai(), target.GetOpenai()) { + return false + } + } + + case *UpstreamSpec_MultiPool_Backend_Mistral: + if _, ok := target.Llm.(*UpstreamSpec_MultiPool_Backend_Mistral); !ok { + return false + } + + if h, ok := interface{}(m.GetMistral()).(equality.Equalizer); ok { + if !h.Equal(target.GetMistral()) { + return false + } + } else { + if !proto.Equal(m.GetMistral(), target.GetMistral()) { + return false + } + } + + case *UpstreamSpec_MultiPool_Backend_Anthropic: + if _, ok := target.Llm.(*UpstreamSpec_MultiPool_Backend_Anthropic); !ok { + return false + } + + if h, ok := interface{}(m.GetAnthropic()).(equality.Equalizer); ok { + if !h.Equal(target.GetAnthropic()) { + return false + } + } else { + if !proto.Equal(m.GetAnthropic(), target.GetAnthropic()) { + return false + } + } + + case *UpstreamSpec_MultiPool_Backend_AzureOpenai: + if _, ok := target.Llm.(*UpstreamSpec_MultiPool_Backend_AzureOpenai); !ok { + return false + } + + if h, ok := interface{}(m.GetAzureOpenai()).(equality.Equalizer); ok { + if !h.Equal(target.GetAzureOpenai()) { + return false + } + } else { + if !proto.Equal(m.GetAzureOpenai(), target.GetAzureOpenai()) { + return false + } + } + + case *UpstreamSpec_MultiPool_Backend_Gemini: + if _, ok := target.Llm.(*UpstreamSpec_MultiPool_Backend_Gemini); !ok { + return false + } + + if h, ok := interface{}(m.GetGemini()).(equality.Equalizer); ok { + if !h.Equal(target.GetGemini()) { + return false + } + } else { + if !proto.Equal(m.GetGemini(), target.GetGemini()) { + return false + } + } + + case *UpstreamSpec_MultiPool_Backend_VertexAi: + if _, ok := target.Llm.(*UpstreamSpec_MultiPool_Backend_VertexAi); !ok { + return false + } + + if h, ok := interface{}(m.GetVertexAi()).(equality.Equalizer); ok { + if !h.Equal(target.GetVertexAi()) { + return false + } + } else { + if !proto.Equal(m.GetVertexAi(), target.GetVertexAi()) { + return false + } + } + + case *UpstreamSpec_MultiPool_Backend_Bedrock: + if _, ok := target.Llm.(*UpstreamSpec_MultiPool_Backend_Bedrock); !ok { + return false + } + + if h, ok := interface{}(m.GetBedrock()).(equality.Equalizer); ok { + if !h.Equal(target.GetBedrock()) { + return false + } + } else { + if !proto.Equal(m.GetBedrock(), target.GetBedrock()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.Llm != target.Llm { + return false + } + } + + return true +} + +// Equal function +func (m *UpstreamSpec_MultiPool_Priority) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*UpstreamSpec_MultiPool_Priority) + if !ok { + that2, ok := that.(UpstreamSpec_MultiPool_Priority) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetPool()) != len(target.GetPool()) { + return false + } + for idx, v := range m.GetPool() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetPool()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetPool()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *Embedding_OpenAI) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Embedding_OpenAI) + if !ok { + that2, ok := that.(Embedding_OpenAI) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + switch m.AuthTokenSource.(type) { + + case *Embedding_OpenAI_AuthToken: + if _, ok := target.AuthTokenSource.(*Embedding_OpenAI_AuthToken); !ok { + return false + } + + if h, ok := interface{}(m.GetAuthToken()).(equality.Equalizer); ok { + if !h.Equal(target.GetAuthToken()) { + return false + } + } else { + if !proto.Equal(m.GetAuthToken(), target.GetAuthToken()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.AuthTokenSource != target.AuthTokenSource { + return false + } + } + + return true +} + +// Equal function +func (m *Embedding_AzureOpenAI) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Embedding_AzureOpenAI) + if !ok { + that2, ok := that.(Embedding_AzureOpenAI) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetApiVersion(), target.GetApiVersion()) != 0 { + return false + } + + if strings.Compare(m.GetEndpoint(), target.GetEndpoint()) != 0 { + return false + } + + if strings.Compare(m.GetDeploymentName(), target.GetDeploymentName()) != 0 { + return false + } + + switch m.AuthTokenSource.(type) { + + case *Embedding_AzureOpenAI_AuthToken: + if _, ok := target.AuthTokenSource.(*Embedding_AzureOpenAI_AuthToken); !ok { + return false + } + + if h, ok := interface{}(m.GetAuthToken()).(equality.Equalizer); ok { + if !h.Equal(target.GetAuthToken()) { + return false + } + } else { + if !proto.Equal(m.GetAuthToken(), target.GetAuthToken()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.AuthTokenSource != target.AuthTokenSource { + return false + } + } + + return true +} + +// Equal function +func (m *SemanticCache_Redis) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*SemanticCache_Redis) + if !ok { + that2, ok := that.(SemanticCache_Redis) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetConnectionString(), target.GetConnectionString()) != 0 { + return false + } + + if m.GetScoreThreshold() != target.GetScoreThreshold() { + return false + } + + return true +} + +// Equal function +func (m *SemanticCache_Weaviate) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*SemanticCache_Weaviate) + if !ok { + that2, ok := that.(SemanticCache_Weaviate) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetHost(), target.GetHost()) != 0 { + return false + } + + if m.GetHttpPort() != target.GetHttpPort() { + return false + } + + if m.GetGrpcPort() != target.GetGrpcPort() { + return false + } + + if m.GetInsecure() != target.GetInsecure() { + return false + } + + return true +} + +// Equal function +func (m *SemanticCache_DataStore) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*SemanticCache_DataStore) + if !ok { + that2, ok := that.(SemanticCache_DataStore) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + switch m.Datastore.(type) { + + case *SemanticCache_DataStore_Redis: + if _, ok := target.Datastore.(*SemanticCache_DataStore_Redis); !ok { + return false + } + + if h, ok := interface{}(m.GetRedis()).(equality.Equalizer); ok { + if !h.Equal(target.GetRedis()) { + return false + } + } else { + if !proto.Equal(m.GetRedis(), target.GetRedis()) { + return false + } + } + + case *SemanticCache_DataStore_Weaviate: + if _, ok := target.Datastore.(*SemanticCache_DataStore_Weaviate); !ok { + return false + } + + if h, ok := interface{}(m.GetWeaviate()).(equality.Equalizer); ok { + if !h.Equal(target.GetWeaviate()) { + return false + } + } else { + if !proto.Equal(m.GetWeaviate(), target.GetWeaviate()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.Datastore != target.Datastore { + return false + } + } + + return true +} + +// Equal function +func (m *RAG_DataStore) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RAG_DataStore) + if !ok { + that2, ok := that.(RAG_DataStore) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + switch m.Datastore.(type) { + + case *RAG_DataStore_Postgres: + if _, ok := target.Datastore.(*RAG_DataStore_Postgres); !ok { + return false + } + + if h, ok := interface{}(m.GetPostgres()).(equality.Equalizer); ok { + if !h.Equal(target.GetPostgres()) { + return false + } + } else { + if !proto.Equal(m.GetPostgres(), target.GetPostgres()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.Datastore != target.Datastore { + return false + } + } + + return true +} + +// Equal function +func (m *AIPromptEnrichment_Message) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AIPromptEnrichment_Message) + if !ok { + that2, ok := that.(AIPromptEnrichment_Message) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetRole(), target.GetRole()) != 0 { + return false + } + + if strings.Compare(m.GetContent(), target.GetContent()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *AIPromptGuard_Regex) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AIPromptGuard_Regex) + if !ok { + that2, ok := that.(AIPromptGuard_Regex) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetMatches()) != len(target.GetMatches()) { + return false + } + for idx, v := range m.GetMatches() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetMatches()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetMatches()[idx]) { + return false + } + } + + } + + if len(m.GetBuiltins()) != len(target.GetBuiltins()) { + return false + } + for idx, v := range m.GetBuiltins() { + + if v != target.GetBuiltins()[idx] { + return false + } + + } + + if m.GetAction() != target.GetAction() { + return false + } + + return true +} + +// Equal function +func (m *AIPromptGuard_Webhook) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AIPromptGuard_Webhook) + if !ok { + that2, ok := that.(AIPromptGuard_Webhook) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetHost(), target.GetHost()) != 0 { + return false + } + + if m.GetPort() != target.GetPort() { + return false + } + + if len(m.GetForwardHeaders()) != len(target.GetForwardHeaders()) { + return false + } + for idx, v := range m.GetForwardHeaders() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetForwardHeaders()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetForwardHeaders()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *AIPromptGuard_Moderation) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AIPromptGuard_Moderation) + if !ok { + that2, ok := that.(AIPromptGuard_Moderation) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + switch m.Moderation.(type) { + + case *AIPromptGuard_Moderation_Openai: + if _, ok := target.Moderation.(*AIPromptGuard_Moderation_Openai); !ok { + return false + } + + if h, ok := interface{}(m.GetOpenai()).(equality.Equalizer); ok { + if !h.Equal(target.GetOpenai()) { + return false + } + } else { + if !proto.Equal(m.GetOpenai(), target.GetOpenai()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.Moderation != target.Moderation { + return false + } + } + + return true +} + +// Equal function +func (m *AIPromptGuard_Request) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AIPromptGuard_Request) + if !ok { + that2, ok := that.(AIPromptGuard_Request) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetCustomResponse()).(equality.Equalizer); ok { + if !h.Equal(target.GetCustomResponse()) { + return false + } + } else { + if !proto.Equal(m.GetCustomResponse(), target.GetCustomResponse()) { + return false + } + } + + if h, ok := interface{}(m.GetRegex()).(equality.Equalizer); ok { + if !h.Equal(target.GetRegex()) { + return false + } + } else { + if !proto.Equal(m.GetRegex(), target.GetRegex()) { + return false + } + } + + if h, ok := interface{}(m.GetWebhook()).(equality.Equalizer); ok { + if !h.Equal(target.GetWebhook()) { + return false + } + } else { + if !proto.Equal(m.GetWebhook(), target.GetWebhook()) { + return false + } + } + + if h, ok := interface{}(m.GetModeration()).(equality.Equalizer); ok { + if !h.Equal(target.GetModeration()) { + return false + } + } else { + if !proto.Equal(m.GetModeration(), target.GetModeration()) { + return false + } + } + + return true +} + +// Equal function +func (m *AIPromptGuard_Response) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AIPromptGuard_Response) + if !ok { + that2, ok := that.(AIPromptGuard_Response) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetRegex()).(equality.Equalizer); ok { + if !h.Equal(target.GetRegex()) { + return false + } + } else { + if !proto.Equal(m.GetRegex(), target.GetRegex()) { + return false + } + } + + if h, ok := interface{}(m.GetWebhook()).(equality.Equalizer); ok { + if !h.Equal(target.GetWebhook()) { + return false + } + } else { + if !proto.Equal(m.GetWebhook(), target.GetWebhook()) { + return false + } + } + + return true +} + +// Equal function +func (m *AIPromptGuard_Regex_RegexMatch) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AIPromptGuard_Regex_RegexMatch) + if !ok { + that2, ok := that.(AIPromptGuard_Regex_RegexMatch) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetPattern(), target.GetPattern()) != 0 { + return false + } + + if strings.Compare(m.GetName(), target.GetName()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *AIPromptGuard_Webhook_HeaderMatch) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AIPromptGuard_Webhook_HeaderMatch) + if !ok { + that2, ok := that.(AIPromptGuard_Webhook_HeaderMatch) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetKey(), target.GetKey()) != 0 { + return false + } + + if m.GetMatchType() != target.GetMatchType() { + return false + } + + return true +} + +// Equal function +func (m *AIPromptGuard_Moderation_OpenAI) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AIPromptGuard_Moderation_OpenAI) + if !ok { + that2, ok := that.(AIPromptGuard_Moderation_OpenAI) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetModel(), target.GetModel()) != 0 { + return false + } + + switch m.AuthTokenSource.(type) { + + case *AIPromptGuard_Moderation_OpenAI_AuthToken: + if _, ok := target.AuthTokenSource.(*AIPromptGuard_Moderation_OpenAI_AuthToken); !ok { + return false + } + + if h, ok := interface{}(m.GetAuthToken()).(equality.Equalizer); ok { + if !h.Equal(target.GetAuthToken()) { + return false + } + } else { + if !proto.Equal(m.GetAuthToken(), target.GetAuthToken()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.AuthTokenSource != target.AuthTokenSource { + return false + } + } + + return true +} + +// Equal function +func (m *AIPromptGuard_Request_CustomResponse) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AIPromptGuard_Request_CustomResponse) + if !ok { + that2, ok := that.(AIPromptGuard_Request_CustomResponse) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetMessage(), target.GetMessage()) != 0 { + return false + } + + if m.GetStatusCode() != target.GetStatusCode() { + return false + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/ai/ai.pb.go b/pkg/api/gloo.solo.io/v1/enterprise/options/ai/ai.pb.go new file mode 100644 index 000000000..7b4ff24c9 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/ai/ai.pb.go @@ -0,0 +1,4761 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/ai/ai.proto + +package ai + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type ApiJsonSchema int32 + +const ( + ApiJsonSchema_NOT_SET ApiJsonSchema = 0 + ApiJsonSchema_ANTHROPIC ApiJsonSchema = 1 + ApiJsonSchema_GEMINI ApiJsonSchema = 2 + ApiJsonSchema_OPENAI ApiJsonSchema = 3 +) + +// Enum value maps for ApiJsonSchema. +var ( + ApiJsonSchema_name = map[int32]string{ + 0: "NOT_SET", + 1: "ANTHROPIC", + 2: "GEMINI", + 3: "OPENAI", + } + ApiJsonSchema_value = map[string]int32{ + "NOT_SET": 0, + "ANTHROPIC": 1, + "GEMINI": 2, + "OPENAI": 3, + } +) + +func (x ApiJsonSchema) Enum() *ApiJsonSchema { + p := new(ApiJsonSchema) + *p = x + return p +} + +func (x ApiJsonSchema) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ApiJsonSchema) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_enumTypes[0].Descriptor() +} + +func (ApiJsonSchema) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_enumTypes[0] +} + +func (x ApiJsonSchema) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ApiJsonSchema.Descriptor instead. +func (ApiJsonSchema) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{0} +} + +// The type of publisher model to use. Currently, only Google is supported. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type UpstreamSpec_VertexAI_Publisher int32 + +const ( + UpstreamSpec_VertexAI_GOOGLE UpstreamSpec_VertexAI_Publisher = 0 +) + +// Enum value maps for UpstreamSpec_VertexAI_Publisher. +var ( + UpstreamSpec_VertexAI_Publisher_name = map[int32]string{ + 0: "GOOGLE", + } + UpstreamSpec_VertexAI_Publisher_value = map[string]int32{ + "GOOGLE": 0, + } +) + +func (x UpstreamSpec_VertexAI_Publisher) Enum() *UpstreamSpec_VertexAI_Publisher { + p := new(UpstreamSpec_VertexAI_Publisher) + *p = x + return p +} + +func (x UpstreamSpec_VertexAI_Publisher) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (UpstreamSpec_VertexAI_Publisher) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_enumTypes[1].Descriptor() +} + +func (UpstreamSpec_VertexAI_Publisher) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_enumTypes[1] +} + +func (x UpstreamSpec_VertexAI_Publisher) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use UpstreamSpec_VertexAI_Publisher.Descriptor instead. +func (UpstreamSpec_VertexAI_Publisher) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{1, 5, 0} +} + +// The type of route to the LLM provider API. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type RouteSettings_RouteType int32 + +const ( + // The LLM generates the full response before responding to a client. + RouteSettings_CHAT RouteSettings_RouteType = 0 + // Stream responses to a client, which allows the LLM to stream out tokens as they are generated. + RouteSettings_CHAT_STREAMING RouteSettings_RouteType = 1 +) + +// Enum value maps for RouteSettings_RouteType. +var ( + RouteSettings_RouteType_name = map[int32]string{ + 0: "CHAT", + 1: "CHAT_STREAMING", + } + RouteSettings_RouteType_value = map[string]int32{ + "CHAT": 0, + "CHAT_STREAMING": 1, + } +) + +func (x RouteSettings_RouteType) Enum() *RouteSettings_RouteType { + p := new(RouteSettings_RouteType) + *p = x + return p +} + +func (x RouteSettings_RouteType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RouteSettings_RouteType) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_enumTypes[2].Descriptor() +} + +func (RouteSettings_RouteType) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_enumTypes[2] +} + +func (x RouteSettings_RouteType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use RouteSettings_RouteType.Descriptor instead. +func (RouteSettings_RouteType) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{2, 0} +} + +// The caching mode to use for the request and response lifecycle. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type SemanticCache_Mode int32 + +const ( + // Read and write to the cache as a part of the request and response lifecycle. + SemanticCache_READ_WRITE SemanticCache_Mode = 0 + // Only read from the cache, and do not write to it. + // Data is written to the cache outside of the request and response cycle. + SemanticCache_READ_ONLY SemanticCache_Mode = 1 +) + +// Enum value maps for SemanticCache_Mode. +var ( + SemanticCache_Mode_name = map[int32]string{ + 0: "READ_WRITE", + 1: "READ_ONLY", + } + SemanticCache_Mode_value = map[string]int32{ + "READ_WRITE": 0, + "READ_ONLY": 1, + } +) + +func (x SemanticCache_Mode) Enum() *SemanticCache_Mode { + p := new(SemanticCache_Mode) + *p = x + return p +} + +func (x SemanticCache_Mode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SemanticCache_Mode) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_enumTypes[3].Descriptor() +} + +func (SemanticCache_Mode) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_enumTypes[3] +} + +func (x SemanticCache_Mode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SemanticCache_Mode.Descriptor instead. +func (SemanticCache_Mode) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{6, 0} +} + +// Built-in regex patterns for specific types of strings in prompts. +// For example, if you specify `CREDIT_CARD`, any credit card numbers +// in the request or response are matched. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type AIPromptGuard_Regex_BuiltIn int32 + +const ( + // Default regex matching for Social Security numbers. + AIPromptGuard_Regex_SSN AIPromptGuard_Regex_BuiltIn = 0 + // Default regex matching for credit card numbers. + AIPromptGuard_Regex_CREDIT_CARD AIPromptGuard_Regex_BuiltIn = 1 + // Default regex matching for phone numbers. + AIPromptGuard_Regex_PHONE_NUMBER AIPromptGuard_Regex_BuiltIn = 2 + // Default regex matching for email addresses. + AIPromptGuard_Regex_EMAIL AIPromptGuard_Regex_BuiltIn = 3 +) + +// Enum value maps for AIPromptGuard_Regex_BuiltIn. +var ( + AIPromptGuard_Regex_BuiltIn_name = map[int32]string{ + 0: "SSN", + 1: "CREDIT_CARD", + 2: "PHONE_NUMBER", + 3: "EMAIL", + } + AIPromptGuard_Regex_BuiltIn_value = map[string]int32{ + "SSN": 0, + "CREDIT_CARD": 1, + "PHONE_NUMBER": 2, + "EMAIL": 3, + } +) + +func (x AIPromptGuard_Regex_BuiltIn) Enum() *AIPromptGuard_Regex_BuiltIn { + p := new(AIPromptGuard_Regex_BuiltIn) + *p = x + return p +} + +func (x AIPromptGuard_Regex_BuiltIn) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AIPromptGuard_Regex_BuiltIn) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_enumTypes[4].Descriptor() +} + +func (AIPromptGuard_Regex_BuiltIn) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_enumTypes[4] +} + +func (x AIPromptGuard_Regex_BuiltIn) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AIPromptGuard_Regex_BuiltIn.Descriptor instead. +func (AIPromptGuard_Regex_BuiltIn) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{9, 0, 0} +} + +// The action to take if a regex pattern is matched in a request or response. +// This setting applies only to request matches. Response matches are always masked by default. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type AIPromptGuard_Regex_Action int32 + +const ( + // Mask the matched data in the request. + AIPromptGuard_Regex_MASK AIPromptGuard_Regex_Action = 0 + // Reject the request if the regex matches content in the request. + AIPromptGuard_Regex_REJECT AIPromptGuard_Regex_Action = 1 +) + +// Enum value maps for AIPromptGuard_Regex_Action. +var ( + AIPromptGuard_Regex_Action_name = map[int32]string{ + 0: "MASK", + 1: "REJECT", + } + AIPromptGuard_Regex_Action_value = map[string]int32{ + "MASK": 0, + "REJECT": 1, + } +) + +func (x AIPromptGuard_Regex_Action) Enum() *AIPromptGuard_Regex_Action { + p := new(AIPromptGuard_Regex_Action) + *p = x + return p +} + +func (x AIPromptGuard_Regex_Action) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AIPromptGuard_Regex_Action) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_enumTypes[5].Descriptor() +} + +func (AIPromptGuard_Regex_Action) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_enumTypes[5] +} + +func (x AIPromptGuard_Regex_Action) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AIPromptGuard_Regex_Action.Descriptor instead. +func (AIPromptGuard_Regex_Action) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{9, 0, 1} +} + +// The header string match type. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type AIPromptGuard_Webhook_HeaderMatch_MatchType int32 + +const ( + // The string must match exactly the specified string. + AIPromptGuard_Webhook_HeaderMatch_EXACT AIPromptGuard_Webhook_HeaderMatch_MatchType = 0 + // The string must have the specified prefix. + AIPromptGuard_Webhook_HeaderMatch_PREFIX AIPromptGuard_Webhook_HeaderMatch_MatchType = 1 + // The string must have the specified suffix. + AIPromptGuard_Webhook_HeaderMatch_SUFFIX AIPromptGuard_Webhook_HeaderMatch_MatchType = 2 + // The header string must contain the specified string. + AIPromptGuard_Webhook_HeaderMatch_CONTAINS AIPromptGuard_Webhook_HeaderMatch_MatchType = 3 + // The string must match the specified [RE2-style regular expression](https://github.com/google/re2/wiki/) pattern. + AIPromptGuard_Webhook_HeaderMatch_REGEX AIPromptGuard_Webhook_HeaderMatch_MatchType = 4 +) + +// Enum value maps for AIPromptGuard_Webhook_HeaderMatch_MatchType. +var ( + AIPromptGuard_Webhook_HeaderMatch_MatchType_name = map[int32]string{ + 0: "EXACT", + 1: "PREFIX", + 2: "SUFFIX", + 3: "CONTAINS", + 4: "REGEX", + } + AIPromptGuard_Webhook_HeaderMatch_MatchType_value = map[string]int32{ + "EXACT": 0, + "PREFIX": 1, + "SUFFIX": 2, + "CONTAINS": 3, + "REGEX": 4, + } +) + +func (x AIPromptGuard_Webhook_HeaderMatch_MatchType) Enum() *AIPromptGuard_Webhook_HeaderMatch_MatchType { + p := new(AIPromptGuard_Webhook_HeaderMatch_MatchType) + *p = x + return p +} + +func (x AIPromptGuard_Webhook_HeaderMatch_MatchType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AIPromptGuard_Webhook_HeaderMatch_MatchType) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_enumTypes[6].Descriptor() +} + +func (AIPromptGuard_Webhook_HeaderMatch_MatchType) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_enumTypes[6] +} + +func (x AIPromptGuard_Webhook_HeaderMatch_MatchType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AIPromptGuard_Webhook_HeaderMatch_MatchType.Descriptor instead. +func (AIPromptGuard_Webhook_HeaderMatch_MatchType) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{9, 1, 0, 0} +} + +// The authorization token that the AI gateway uses to access the LLM provider API. +// This token is automatically sent in a request header, depending on the LLM provider. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type SingleAuthToken struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to AuthTokenSource: + // + // *SingleAuthToken_Inline + // *SingleAuthToken_SecretRef + // *SingleAuthToken_Passthrough_ + AuthTokenSource isSingleAuthToken_AuthTokenSource `protobuf_oneof:"auth_token_source"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SingleAuthToken) Reset() { + *x = SingleAuthToken{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SingleAuthToken) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SingleAuthToken) ProtoMessage() {} + +func (x *SingleAuthToken) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SingleAuthToken.ProtoReflect.Descriptor instead. +func (*SingleAuthToken) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{0} +} + +func (x *SingleAuthToken) GetAuthTokenSource() isSingleAuthToken_AuthTokenSource { + if x != nil { + return x.AuthTokenSource + } + return nil +} + +func (x *SingleAuthToken) GetInline() string { + if x != nil { + if x, ok := x.AuthTokenSource.(*SingleAuthToken_Inline); ok { + return x.Inline + } + } + return "" +} + +func (x *SingleAuthToken) GetSecretRef() *core.ResourceRef { + if x != nil { + if x, ok := x.AuthTokenSource.(*SingleAuthToken_SecretRef); ok { + return x.SecretRef + } + } + return nil +} + +func (x *SingleAuthToken) GetPassthrough() *SingleAuthToken_Passthrough { + if x != nil { + if x, ok := x.AuthTokenSource.(*SingleAuthToken_Passthrough_); ok { + return x.Passthrough + } + } + return nil +} + +type isSingleAuthToken_AuthTokenSource interface { + isSingleAuthToken_AuthTokenSource() +} + +type SingleAuthToken_Inline struct { + // Provide the token directly in the configuration for the Upstream. + // This option is the least secure. Only use this option for quick tests such as trying out AI Gateway. + Inline string `protobuf:"bytes,1,opt,name=inline,proto3,oneof"` +} + +type SingleAuthToken_SecretRef struct { + // Store the API key in a Kubernetes secret in the same namespace as the Upstream. + // Then, refer to the secret in the Upstream configuration. This option is more secure than an inline token, + // because the API key is encoded and you can restrict access to secrets through RBAC rules. + // You might use this option in proofs of concept, controlled development and staging environments, + // or well-controlled prod environments that use secrets. + SecretRef *core.ResourceRef `protobuf:"bytes,2,opt,name=secret_ref,json=secretRef,proto3,oneof"` +} + +type SingleAuthToken_Passthrough_ struct { + // Passthrough the existing token. This token can either + // come directly from the client, or be generated by an OIDC flow + // early in the request lifecycle. This option is useful for + // backends which have federated identity setup and can re-use + // the token from the client. + // Currently, this token must exist in the `Authorization` header. + Passthrough *SingleAuthToken_Passthrough `protobuf:"bytes,3,opt,name=passthrough,proto3,oneof"` +} + +func (*SingleAuthToken_Inline) isSingleAuthToken_AuthTokenSource() {} + +func (*SingleAuthToken_SecretRef) isSingleAuthToken_AuthTokenSource() {} + +func (*SingleAuthToken_Passthrough_) isSingleAuthToken_AuthTokenSource() {} + +// When you deploy the Gloo AI Gateway, you can use the `spec.ai` section of the Upstream resource +// to represent a backend for a logical Large Language Model (LLM) provider. +// This section configures the LLM provider that the AI Gateway routes requests to, +// and how the gateway should authenticate with the provider. +// Note that other Gloo AI Gateway LLM features, such as prompt guards +// and prompt enrichment, are configured at the route level in the +// [`spec.options.ai` section of the RouteOptions resource](#routesettings). +// +// To get started, see [About Gloo AI Gateway](https://docs.solo.io/gateway/latest/ai/overview/). +// For more information about the Upstream resource, see the +// [API reference]({{% versioned_link_path fromRoot="/reference/api/github.com/solo-io/solo-apis/api/gloo/gloo/v1/upstream.proto.sk/" %}}). +// +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type UpstreamSpec struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Llm: + // + // *UpstreamSpec_Openai + // *UpstreamSpec_Mistral_ + // *UpstreamSpec_Anthropic_ + // *UpstreamSpec_AzureOpenai + // *UpstreamSpec_Multi + // *UpstreamSpec_Gemini_ + // *UpstreamSpec_VertexAi + // *UpstreamSpec_Bedrock_ + Llm isUpstreamSpec_Llm `protobuf_oneof:"llm"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamSpec) Reset() { + *x = UpstreamSpec{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamSpec) ProtoMessage() {} + +func (x *UpstreamSpec) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpstreamSpec.ProtoReflect.Descriptor instead. +func (*UpstreamSpec) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{1} +} + +func (x *UpstreamSpec) GetLlm() isUpstreamSpec_Llm { + if x != nil { + return x.Llm + } + return nil +} + +func (x *UpstreamSpec) GetOpenai() *UpstreamSpec_OpenAI { + if x != nil { + if x, ok := x.Llm.(*UpstreamSpec_Openai); ok { + return x.Openai + } + } + return nil +} + +func (x *UpstreamSpec) GetMistral() *UpstreamSpec_Mistral { + if x != nil { + if x, ok := x.Llm.(*UpstreamSpec_Mistral_); ok { + return x.Mistral + } + } + return nil +} + +func (x *UpstreamSpec) GetAnthropic() *UpstreamSpec_Anthropic { + if x != nil { + if x, ok := x.Llm.(*UpstreamSpec_Anthropic_); ok { + return x.Anthropic + } + } + return nil +} + +func (x *UpstreamSpec) GetAzureOpenai() *UpstreamSpec_AzureOpenAI { + if x != nil { + if x, ok := x.Llm.(*UpstreamSpec_AzureOpenai); ok { + return x.AzureOpenai + } + } + return nil +} + +func (x *UpstreamSpec) GetMulti() *UpstreamSpec_MultiPool { + if x != nil { + if x, ok := x.Llm.(*UpstreamSpec_Multi); ok { + return x.Multi + } + } + return nil +} + +func (x *UpstreamSpec) GetGemini() *UpstreamSpec_Gemini { + if x != nil { + if x, ok := x.Llm.(*UpstreamSpec_Gemini_); ok { + return x.Gemini + } + } + return nil +} + +func (x *UpstreamSpec) GetVertexAi() *UpstreamSpec_VertexAI { + if x != nil { + if x, ok := x.Llm.(*UpstreamSpec_VertexAi); ok { + return x.VertexAi + } + } + return nil +} + +func (x *UpstreamSpec) GetBedrock() *UpstreamSpec_Bedrock { + if x != nil { + if x, ok := x.Llm.(*UpstreamSpec_Bedrock_); ok { + return x.Bedrock + } + } + return nil +} + +type isUpstreamSpec_Llm interface { + isUpstreamSpec_Llm() +} + +type UpstreamSpec_Openai struct { + // Configure an [OpenAI](https://platform.openai.com/docs/overview) backend. + Openai *UpstreamSpec_OpenAI `protobuf:"bytes,1,opt,name=openai,proto3,oneof"` +} + +type UpstreamSpec_Mistral_ struct { + // Configure a [Mistral AI](https://docs.mistral.ai/getting-started/quickstart/) backend. + Mistral *UpstreamSpec_Mistral `protobuf:"bytes,2,opt,name=mistral,proto3,oneof"` +} + +type UpstreamSpec_Anthropic_ struct { + // Configure an [Anthropic](https://docs.anthropic.com/en/release-notes/api) backend. + Anthropic *UpstreamSpec_Anthropic `protobuf:"bytes,3,opt,name=anthropic,proto3,oneof"` +} + +type UpstreamSpec_AzureOpenai struct { + // Configure an [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/) backend. + AzureOpenai *UpstreamSpec_AzureOpenAI `protobuf:"bytes,4,opt,name=azure_openai,json=azureOpenai,proto3,oneof"` +} + +type UpstreamSpec_Multi struct { + // Configure backends for multiple LLM providers in one logical endpoint. + Multi *UpstreamSpec_MultiPool `protobuf:"bytes,5,opt,name=multi,proto3,oneof"` +} + +type UpstreamSpec_Gemini_ struct { + // Configure a [Gemini](https://ai.google.dev/gemini-api/docs) backend. + Gemini *UpstreamSpec_Gemini `protobuf:"bytes,6,opt,name=gemini,proto3,oneof"` +} + +type UpstreamSpec_VertexAi struct { + // Configure a [Vertex AI](https://cloud.google.com/vertex-ai/docs) backend. + VertexAi *UpstreamSpec_VertexAI `protobuf:"bytes,7,opt,name=vertex_ai,json=vertexAi,proto3,oneof"` +} + +type UpstreamSpec_Bedrock_ struct { + // Configure a [Bedrock](https://aws.amazon.com/bedrock/) backend. + Bedrock *UpstreamSpec_Bedrock `protobuf:"bytes,8,opt,name=bedrock,proto3,oneof"` +} + +func (*UpstreamSpec_Openai) isUpstreamSpec_Llm() {} + +func (*UpstreamSpec_Mistral_) isUpstreamSpec_Llm() {} + +func (*UpstreamSpec_Anthropic_) isUpstreamSpec_Llm() {} + +func (*UpstreamSpec_AzureOpenai) isUpstreamSpec_Llm() {} + +func (*UpstreamSpec_Multi) isUpstreamSpec_Llm() {} + +func (*UpstreamSpec_Gemini_) isUpstreamSpec_Llm() {} + +func (*UpstreamSpec_VertexAi) isUpstreamSpec_Llm() {} + +func (*UpstreamSpec_Bedrock_) isUpstreamSpec_Llm() {} + +// When you deploy the Gloo AI Gateway, you can use the `spec.options.ai` section +// of the RouteOptions resource to configure the behavior of the LLM provider +// on the level of individual routes. These route settings, such as prompt enrichment, +// retrieval augmented generation (RAG), and semantic caching, are applicable only +// for routes that send requests to an LLM provider backend. +// +// For more information about the RouteOptions resource, see the +// [API reference]({{% versioned_link_path fromRoot="/reference/api/github.com/solo-io/solo-apis/api/gloo/gloo/v1/route_options.proto.sk/" %}}). +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type RouteSettings struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Enrich requests sent to the LLM provider by appending and prepending system prompts. + // This can be configured only for LLM providers that use the `CHAT` API route type. + PromptEnrichment *AIPromptEnrichment `protobuf:"bytes,1,opt,name=prompt_enrichment,json=promptEnrichment,proto3" json:"prompt_enrichment,omitempty"` + // Set up prompt guards to block unwanted requests to the LLM provider and mask sensitive data. + // Prompt guards can be used to reject requests based on the content of the prompt, as well as + // mask responses based on the content of the response. + PromptGuard *AIPromptGuard `protobuf:"bytes,2,opt,name=prompt_guard,json=promptGuard,proto3" json:"prompt_guard,omitempty"` + // [Retrieval augmented generation (RAG)](https://research.ibm.com/blog/retrieval-augmented-generation-RAG) + // is a technique of providing relevant context by retrieving relevant data from one or more + // context datasets and augmenting the prompt with the retrieved information. + // This can be used to improve the quality of the generated text. + Rag *RAG `protobuf:"bytes,3,opt,name=rag,proto3" json:"rag,omitempty"` + // Cache previous model responses to provide faster responses to similar requests in the future. + // Results might vary depending on the embedding mechanism used, as well + // as the similarity threshold set. + SemanticCache *SemanticCache `protobuf:"bytes,4,opt,name=semantic_cache,json=semanticCache,proto3" json:"semantic_cache,omitempty"` + // Provide defaults to merge with user input fields. + // Defaults do _not_ override the user input fields, unless you explicitly set `override` to `true`. + Defaults []*FieldDefault `protobuf:"bytes,5,rep,name=defaults,proto3" json:"defaults,omitempty"` + // The type of route to the LLM provider API. Currently, `CHAT` and `CHAT_STREAMING` are supported. + RouteType RouteSettings_RouteType `protobuf:"varint,6,opt,name=route_type,json=routeType,proto3,enum=ai.options.gloo.solo.io.RouteSettings_RouteType" json:"route_type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RouteSettings) Reset() { + *x = RouteSettings{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RouteSettings) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RouteSettings) ProtoMessage() {} + +func (x *RouteSettings) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RouteSettings.ProtoReflect.Descriptor instead. +func (*RouteSettings) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{2} +} + +func (x *RouteSettings) GetPromptEnrichment() *AIPromptEnrichment { + if x != nil { + return x.PromptEnrichment + } + return nil +} + +func (x *RouteSettings) GetPromptGuard() *AIPromptGuard { + if x != nil { + return x.PromptGuard + } + return nil +} + +func (x *RouteSettings) GetRag() *RAG { + if x != nil { + return x.Rag + } + return nil +} + +func (x *RouteSettings) GetSemanticCache() *SemanticCache { + if x != nil { + return x.SemanticCache + } + return nil +} + +func (x *RouteSettings) GetDefaults() []*FieldDefault { + if x != nil { + return x.Defaults + } + return nil +} + +func (x *RouteSettings) GetRouteType() RouteSettings_RouteType { + if x != nil { + return x.RouteType + } + return RouteSettings_CHAT +} + +// Provide defaults to merge with user input fields. +// Defaults do _not_ override the user input fields, unless you explicitly set `override` to `true`. +// +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +// +// Example overriding the system field for Anthropic: +// ```yaml +// # Anthropic doesn't support a system chat type +// defaults: +// - field: "system" +// value: "answer all questions in french" +// +// ``` +// +// Example setting the temperature and overriding `max_tokens`: +// ```yaml +// defaults: +// - field: "temperature" +// value: 0.5 +// - field: "max_tokens" +// value: 100 +// +// ``` +type FieldDefault struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The name of the field. + Field string `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"` + // The field default value, which can be any JSON Data Type. + Value *structpb.Value `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + // Whether to override the field's value if it already exists. + // Defaults to false. + Override bool `protobuf:"varint,3,opt,name=override,proto3" json:"override,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FieldDefault) Reset() { + *x = FieldDefault{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FieldDefault) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FieldDefault) ProtoMessage() {} + +func (x *FieldDefault) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FieldDefault.ProtoReflect.Descriptor instead. +func (*FieldDefault) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{3} +} + +func (x *FieldDefault) GetField() string { + if x != nil { + return x.Field + } + return "" +} + +func (x *FieldDefault) GetValue() *structpb.Value { + if x != nil { + return x.Value + } + return nil +} + +func (x *FieldDefault) GetOverride() bool { + if x != nil { + return x.Override + } + return false +} + +// Configuration settings for a Postgres datastore. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type Postgres struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Connection string to the Postgres database. For example, to use a vector database + // deployed to your cluster, your connection string might look similar to + // `postgresql+psycopg://gloo:gloo@vector-db.default.svc.cluster.local:5432/gloo`. + ConnectionString string `protobuf:"bytes,1,opt,name=connection_string,json=connectionString,proto3" json:"connection_string,omitempty"` + // Name of the collection table to use. + CollectionName string `protobuf:"bytes,2,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Postgres) Reset() { + *x = Postgres{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Postgres) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Postgres) ProtoMessage() {} + +func (x *Postgres) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Postgres.ProtoReflect.Descriptor instead. +func (*Postgres) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{4} +} + +func (x *Postgres) GetConnectionString() string { + if x != nil { + return x.ConnectionString + } + return "" +} + +func (x *Postgres) GetCollectionName() string { + if x != nil { + return x.CollectionName + } + return "" +} + +// Configuration of the API used to generate the embedding. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type Embedding struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Configuration for the backend LLM provider authentication token. + // + // Types that are valid to be assigned to Embedding: + // + // *Embedding_Openai + // *Embedding_AzureOpenai + Embedding isEmbedding_Embedding `protobuf_oneof:"embedding"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Embedding) Reset() { + *x = Embedding{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Embedding) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Embedding) ProtoMessage() {} + +func (x *Embedding) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Embedding.ProtoReflect.Descriptor instead. +func (*Embedding) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{5} +} + +func (x *Embedding) GetEmbedding() isEmbedding_Embedding { + if x != nil { + return x.Embedding + } + return nil +} + +func (x *Embedding) GetOpenai() *Embedding_OpenAI { + if x != nil { + if x, ok := x.Embedding.(*Embedding_Openai); ok { + return x.Openai + } + } + return nil +} + +func (x *Embedding) GetAzureOpenai() *Embedding_AzureOpenAI { + if x != nil { + if x, ok := x.Embedding.(*Embedding_AzureOpenai); ok { + return x.AzureOpenai + } + } + return nil +} + +type isEmbedding_Embedding interface { + isEmbedding_Embedding() +} + +type Embedding_Openai struct { + // Embedding settings for the OpenAI provider. + Openai *Embedding_OpenAI `protobuf:"bytes,1,opt,name=openai,proto3,oneof"` +} + +type Embedding_AzureOpenai struct { + // Embedding settings for the Azure OpenAI provider. + AzureOpenai *Embedding_AzureOpenAI `protobuf:"bytes,2,opt,name=azure_openai,json=azureOpenai,proto3,oneof"` +} + +func (*Embedding_Openai) isEmbedding_Embedding() {} + +func (*Embedding_AzureOpenai) isEmbedding_Embedding() {} + +// Cache previous model responses to provide faster responses to similar requests in the future. +// Results might vary depending on the embedding mechanism used, as well +// as the similarity threshold set. Semantic caching reduces the number of requests +// to the LLM provider, improves the response time, and reduces costs. +// +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +// +// Example configuring a route to use a `redis` datastore and OpenAI for RAG: +// ```yaml +// semanticCache: +// +// datastore: +// redis: +// connectionString: redis://172.17.0.1:6379 +// embedding: +// openai: +// authToken: +// secretRef: +// name: openai-secret +// namespace: gloo-system +// +// ``` +type SemanticCache struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Data store from which to cache the request and response pairs. + Datastore *SemanticCache_DataStore `protobuf:"bytes,1,opt,name=datastore,proto3" json:"datastore,omitempty"` + // Model to use to retrieve the embedding mechanism. + Embedding *Embedding `protobuf:"bytes,2,opt,name=embedding,proto3" json:"embedding,omitempty"` + // Time before data in the cache is considered expired. + Ttl uint32 `protobuf:"varint,3,opt,name=ttl,proto3" json:"ttl,omitempty"` + // The caching mode to use for the request and response lifecycle. Supported values include `READ_WRITE` or `READ_ONLY`. + Mode SemanticCache_Mode `protobuf:"varint,4,opt,name=mode,proto3,enum=ai.options.gloo.solo.io.SemanticCache_Mode" json:"mode,omitempty"` + // Distance score threshold value between 0.0 and 1.0 that determines how similar + // two queries must be in order to return a cached result. + // The lower the number, the more similar the queries must be for a cache hit. + // + // +kubebuilder:validation:Minimum=0 + // +kubebuilder:validation:Maximum=1 + DistanceThreshold float32 `protobuf:"fixed32,5,opt,name=distance_threshold,json=distanceThreshold,proto3" json:"distance_threshold,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SemanticCache) Reset() { + *x = SemanticCache{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SemanticCache) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SemanticCache) ProtoMessage() {} + +func (x *SemanticCache) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SemanticCache.ProtoReflect.Descriptor instead. +func (*SemanticCache) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{6} +} + +func (x *SemanticCache) GetDatastore() *SemanticCache_DataStore { + if x != nil { + return x.Datastore + } + return nil +} + +func (x *SemanticCache) GetEmbedding() *Embedding { + if x != nil { + return x.Embedding + } + return nil +} + +func (x *SemanticCache) GetTtl() uint32 { + if x != nil { + return x.Ttl + } + return 0 +} + +func (x *SemanticCache) GetMode() SemanticCache_Mode { + if x != nil { + return x.Mode + } + return SemanticCache_READ_WRITE +} + +func (x *SemanticCache) GetDistanceThreshold() float32 { + if x != nil { + return x.DistanceThreshold + } + return 0 +} + +// [Retrieval augmented generation (RAG)](https://research.ibm.com/blog/retrieval-augmented-generation-RAG) +// is a technique of providing relevant context by retrieving relevant data from one or more +// context datasets and augmenting the prompt with the retrieved information. +// This can be used to improve the quality of the generated text. +// +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +// +// {{% notice note %}} +// The same embedding mechanism that was used for the initial +// creation of the context datasets must be used for the prompt. +// {{% /notice %}} +// +// Example configuring a route to use a `postgres` datastore and OpenAI for RAG: +// ```yaml +// rag: +// +// datastore: +// postgres: +// connectionString: postgresql+psycopg://gloo:gloo@172.17.0.1:6024/gloo +// collectionName: default +// embedding: +// openai: +// authToken: +// secretRef: +// name: openai-secret +// namespace: gloo-system +// +// ``` +// +// {{% notice tip %}} +// For an extended example that includes deploying a vector database with a context dataset, +// check out the [Retrieval augmented generation (RAG) tutorial](https://docs.solo.io/gateway/main/ai/tutorials/rag/). +// {{% /notice %}} +type RAG struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Data store from which to fetch the context embeddings. + Datastore *RAG_DataStore `protobuf:"bytes,1,opt,name=datastore,proto3" json:"datastore,omitempty"` + // Model to use to retrieve the context embeddings. + Embedding *Embedding `protobuf:"bytes,2,opt,name=embedding,proto3" json:"embedding,omitempty"` + // Template to use to embed the returned context. + PromptTemplate string `protobuf:"bytes,3,opt,name=prompt_template,json=promptTemplate,proto3" json:"prompt_template,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RAG) Reset() { + *x = RAG{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RAG) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RAG) ProtoMessage() {} + +func (x *RAG) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RAG.ProtoReflect.Descriptor instead. +func (*RAG) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{7} +} + +func (x *RAG) GetDatastore() *RAG_DataStore { + if x != nil { + return x.Datastore + } + return nil +} + +func (x *RAG) GetEmbedding() *Embedding { + if x != nil { + return x.Embedding + } + return nil +} + +func (x *RAG) GetPromptTemplate() string { + if x != nil { + return x.PromptTemplate + } + return "" +} + +// Enrich requests sent to the LLM provider by appending and prepending system prompts. +// This can be configured only for LLM providers that use the CHAT API type. +// +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +// Prompt enrichment allows you to add additional context to the prompt before sending it to the model. +// Unlike RAG or other dynamic context methods, prompt enrichment is static and is applied to every request. +// +// **Note**: Some providers, including Anthropic, do not support SYSTEM role messages, and instead have a dedicated +// system field in the input JSON. In this case, use the [`defaults` setting](#fielddefault) to set the system field. +// +// The following example prepends a system prompt of `Answer all questions in French.` +// and appends `Describe the painting as if you were a famous art critic from the 17th century.` +// to each request that is sent to the `openai` HTTPRoute. +// ```yaml +// apiVersion: gateway.solo.io/v1 +// kind: RouteOption +// metadata: +// +// name: openai-opt +// namespace: gloo-system +// +// spec: +// +// targetRefs: +// - group: gateway.networking.k8s.io +// kind: HTTPRoute +// name: openai +// options: +// ai: +// promptEnrichment: +// prepend: +// - role: SYSTEM +// content: "Answer all questions in French." +// append: +// - role: USER +// content: "Describe the painting as if you were a famous art critic from the 17th century." +// +// ``` +type AIPromptEnrichment struct { + state protoimpl.MessageState `protogen:"open.v1"` + // A list of messages to be prepended to the prompt sent by the client. + Prepend []*AIPromptEnrichment_Message `protobuf:"bytes,2,rep,name=prepend,proto3" json:"prepend,omitempty"` + // A list of messages to be appended to the prompt sent by the client. + Append []*AIPromptEnrichment_Message `protobuf:"bytes,3,rep,name=append,proto3" json:"append,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AIPromptEnrichment) Reset() { + *x = AIPromptEnrichment{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AIPromptEnrichment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AIPromptEnrichment) ProtoMessage() {} + +func (x *AIPromptEnrichment) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AIPromptEnrichment.ProtoReflect.Descriptor instead. +func (*AIPromptEnrichment) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{8} +} + +func (x *AIPromptEnrichment) GetPrepend() []*AIPromptEnrichment_Message { + if x != nil { + return x.Prepend + } + return nil +} + +func (x *AIPromptEnrichment) GetAppend() []*AIPromptEnrichment_Message { + if x != nil { + return x.Append + } + return nil +} + +// Set up prompt guards to block unwanted requests to the LLM provider and mask sensitive data. +// Prompt guards can be used to reject requests based on the content of the prompt, as well as +// mask responses based on the content of the response. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +// +// This example rejects any request prompts that contain +// the string "credit card", and masks any credit card numbers in the response. +// ```yaml +// promptGuard: +// +// request: +// customResponse: +// message: "Rejected due to inappropriate content" +// regex: +// action: REJECT +// matches: +// - pattern: "credit card" +// name: "CC" +// response: +// regex: +// builtins: +// - CREDIT_CARD +// action: MASK +// +// ``` +type AIPromptGuard struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Prompt guards to apply to requests sent by the client. + Request *AIPromptGuard_Request `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"` + // Prompt guards to apply to responses returned by the LLM provider. + Response *AIPromptGuard_Response `protobuf:"bytes,2,opt,name=response,proto3" json:"response,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AIPromptGuard) Reset() { + *x = AIPromptGuard{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AIPromptGuard) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AIPromptGuard) ProtoMessage() {} + +func (x *AIPromptGuard) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AIPromptGuard.ProtoReflect.Descriptor instead. +func (*AIPromptGuard) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{9} +} + +func (x *AIPromptGuard) GetRequest() *AIPromptGuard_Request { + if x != nil { + return x.Request + } + return nil +} + +func (x *AIPromptGuard) GetResponse() *AIPromptGuard_Response { + if x != nil { + return x.Response + } + return nil +} + +// Configuration for passthrough of the existing token. +// Currently, specifying an empty object (`passthrough: {}`) +// indicates that passthrough will be used for auth. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type SingleAuthToken_Passthrough struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SingleAuthToken_Passthrough) Reset() { + *x = SingleAuthToken_Passthrough{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SingleAuthToken_Passthrough) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SingleAuthToken_Passthrough) ProtoMessage() {} + +func (x *SingleAuthToken_Passthrough) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SingleAuthToken_Passthrough.ProtoReflect.Descriptor instead. +func (*SingleAuthToken_Passthrough) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{0, 0} +} + +// Override the path used to send requests to the LLM provider. For example, you might need to go through a proxy +// and, as such, have a different path than the default for the LLM provider. +type UpstreamSpec_PathOverride struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to OverrideType: + // + // *UpstreamSpec_PathOverride_FullPath + // *UpstreamSpec_PathOverride_BasePath + OverrideType isUpstreamSpec_PathOverride_OverrideType `protobuf_oneof:"override_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamSpec_PathOverride) Reset() { + *x = UpstreamSpec_PathOverride{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamSpec_PathOverride) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamSpec_PathOverride) ProtoMessage() {} + +func (x *UpstreamSpec_PathOverride) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpstreamSpec_PathOverride.ProtoReflect.Descriptor instead. +func (*UpstreamSpec_PathOverride) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *UpstreamSpec_PathOverride) GetOverrideType() isUpstreamSpec_PathOverride_OverrideType { + if x != nil { + return x.OverrideType + } + return nil +} + +func (x *UpstreamSpec_PathOverride) GetFullPath() string { + if x != nil { + if x, ok := x.OverrideType.(*UpstreamSpec_PathOverride_FullPath); ok { + return x.FullPath + } + } + return "" +} + +func (x *UpstreamSpec_PathOverride) GetBasePath() string { + if x != nil { + if x, ok := x.OverrideType.(*UpstreamSpec_PathOverride_BasePath); ok { + return x.BasePath + } + } + return "" +} + +type isUpstreamSpec_PathOverride_OverrideType interface { + isUpstreamSpec_PathOverride_OverrideType() +} + +type UpstreamSpec_PathOverride_FullPath struct { + // Override the complete path and query parameters(if any) for the Chat request that is sent to the LLM provider. + // Any query parameters in this setting are preserved and sent to the LLM provider. The query parameters in the original request + // will be removed when this option is used. + // For the OpenAI platform API passthrough feature (such as to endpoints like `/v1/embeddings`), this setting is ignored. + // Instead, use the base_path setting. + FullPath string `protobuf:"bytes,1,opt,name=full_path,json=fullPath,proto3,oneof"` +} + +type UpstreamSpec_PathOverride_BasePath struct { + // Instead of replacing the full path, prepend this base_path to the request path that is sent to the LLM provider. + // The OpenAI platform API passthrough feature supports customizing the base path, as such, you might use this setting if your provider + // is a proxy to OpenAI or otherwise supports the OpenAI API on a different path. + // For example, you can change the expected path of requests to the `/v1/*` APIs to `/openai/v1/*` APIs by setting the base path to `/openai`. + BasePath string `protobuf:"bytes,2,opt,name=base_path,json=basePath,proto3,oneof"` +} + +func (*UpstreamSpec_PathOverride_FullPath) isUpstreamSpec_PathOverride_OverrideType() {} + +func (*UpstreamSpec_PathOverride_BasePath) isUpstreamSpec_PathOverride_OverrideType() {} + +// Send requests to a custom host and port, such as to proxy the request and customize the chat completion path, +// or to use a different backend that is API-compliant with the upstream version. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type UpstreamSpec_CustomHost struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Custom host or IP address to send the traffic requests to. + Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` + // Custom port to send the traffic requests to. + Port uint32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` + // Optional: hostname used to set the SNI (if is secure connection) and the host request header. + // If hostname is not set, host will be used instead + Hostname *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=hostname,proto3" json:"hostname,omitempty"` + // Optional: override of the request path and query parameters to the custom host + PathOverride *UpstreamSpec_PathOverride `protobuf:"bytes,4,opt,name=path_override,json=pathOverride,proto3" json:"path_override,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamSpec_CustomHost) Reset() { + *x = UpstreamSpec_CustomHost{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamSpec_CustomHost) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamSpec_CustomHost) ProtoMessage() {} + +func (x *UpstreamSpec_CustomHost) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpstreamSpec_CustomHost.ProtoReflect.Descriptor instead. +func (*UpstreamSpec_CustomHost) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{1, 1} +} + +func (x *UpstreamSpec_CustomHost) GetHost() string { + if x != nil { + return x.Host + } + return "" +} + +func (x *UpstreamSpec_CustomHost) GetPort() uint32 { + if x != nil { + return x.Port + } + return 0 +} + +func (x *UpstreamSpec_CustomHost) GetHostname() *wrapperspb.StringValue { + if x != nil { + return x.Hostname + } + return nil +} + +func (x *UpstreamSpec_CustomHost) GetPathOverride() *UpstreamSpec_PathOverride { + if x != nil { + return x.PathOverride + } + return nil +} + +// Settings for the [OpenAI](https://platform.openai.com/docs/overview) LLM provider. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type UpstreamSpec_OpenAI struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The authorization token that the AI gateway uses to access the OpenAI API. + // This token is automatically sent in the `Authorization` header of the + // request and prefixed with `Bearer`. + AuthToken *SingleAuthToken `protobuf:"bytes,1,opt,name=auth_token,json=authToken,proto3" json:"auth_token,omitempty"` + // Optional: Send requests to a custom host and port or configure custom path override or hostname + CustomHost *UpstreamSpec_CustomHost `protobuf:"bytes,2,opt,name=custom_host,json=customHost,proto3" json:"custom_host,omitempty"` + // Optional: Override the model name, such as `gpt-4o-mini`. + // If unset, the model name is taken from the request. + // This setting can be useful when setting up model failover within the same LLM provider. + Model string `protobuf:"bytes,3,opt,name=model,proto3" json:"model,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamSpec_OpenAI) Reset() { + *x = UpstreamSpec_OpenAI{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamSpec_OpenAI) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamSpec_OpenAI) ProtoMessage() {} + +func (x *UpstreamSpec_OpenAI) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpstreamSpec_OpenAI.ProtoReflect.Descriptor instead. +func (*UpstreamSpec_OpenAI) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{1, 2} +} + +func (x *UpstreamSpec_OpenAI) GetAuthToken() *SingleAuthToken { + if x != nil { + return x.AuthToken + } + return nil +} + +func (x *UpstreamSpec_OpenAI) GetCustomHost() *UpstreamSpec_CustomHost { + if x != nil { + return x.CustomHost + } + return nil +} + +func (x *UpstreamSpec_OpenAI) GetModel() string { + if x != nil { + return x.Model + } + return "" +} + +// Settings for the [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/) LLM provider. +// To find the values for the endpoint, deployment name, and API version, you can check the fields of an API request, such as +// `https://{endpoint}/openai/deployments/{deployment_name}/chat/completions?api-version={api_version}`. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type UpstreamSpec_AzureOpenAI struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The authorization token that the AI gateway uses to access the Azure OpenAI API. + // This token is automatically sent in the `api-key` header of the request. + // + // Types that are valid to be assigned to AuthTokenSource: + // + // *UpstreamSpec_AzureOpenAI_AuthToken + AuthTokenSource isUpstreamSpec_AzureOpenAI_AuthTokenSource `protobuf_oneof:"auth_token_source"` + // The endpoint for the Azure OpenAI API to use, such as `my-endpoint.openai.azure.com`. + // If the scheme is included, it is stripped. + Endpoint string `protobuf:"bytes,2,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + // The name of the Azure OpenAI model deployment to use. + // For more information, see the [Azure OpenAI model docs](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models). + DeploymentName string `protobuf:"bytes,3,opt,name=deployment_name,json=deploymentName,proto3" json:"deployment_name,omitempty"` + // The version of the Azure OpenAI API to use. + // For more information, see the [Azure OpenAI API version reference](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#api-specs). + ApiVersion string `protobuf:"bytes,4,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"` + // Optional: Send requests to a custom host and port or configure custom path override or hostname + CustomHost *UpstreamSpec_CustomHost `protobuf:"bytes,5,opt,name=custom_host,json=customHost,proto3" json:"custom_host,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamSpec_AzureOpenAI) Reset() { + *x = UpstreamSpec_AzureOpenAI{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamSpec_AzureOpenAI) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamSpec_AzureOpenAI) ProtoMessage() {} + +func (x *UpstreamSpec_AzureOpenAI) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpstreamSpec_AzureOpenAI.ProtoReflect.Descriptor instead. +func (*UpstreamSpec_AzureOpenAI) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{1, 3} +} + +func (x *UpstreamSpec_AzureOpenAI) GetAuthTokenSource() isUpstreamSpec_AzureOpenAI_AuthTokenSource { + if x != nil { + return x.AuthTokenSource + } + return nil +} + +func (x *UpstreamSpec_AzureOpenAI) GetAuthToken() *SingleAuthToken { + if x != nil { + if x, ok := x.AuthTokenSource.(*UpstreamSpec_AzureOpenAI_AuthToken); ok { + return x.AuthToken + } + } + return nil +} + +func (x *UpstreamSpec_AzureOpenAI) GetEndpoint() string { + if x != nil { + return x.Endpoint + } + return "" +} + +func (x *UpstreamSpec_AzureOpenAI) GetDeploymentName() string { + if x != nil { + return x.DeploymentName + } + return "" +} + +func (x *UpstreamSpec_AzureOpenAI) GetApiVersion() string { + if x != nil { + return x.ApiVersion + } + return "" +} + +func (x *UpstreamSpec_AzureOpenAI) GetCustomHost() *UpstreamSpec_CustomHost { + if x != nil { + return x.CustomHost + } + return nil +} + +type isUpstreamSpec_AzureOpenAI_AuthTokenSource interface { + isUpstreamSpec_AzureOpenAI_AuthTokenSource() +} + +type UpstreamSpec_AzureOpenAI_AuthToken struct { + // The authorization token that the AI gateway uses to access the Azure OpenAI API. + // This token is automatically sent in the `api-key` header of the request. + AuthToken *SingleAuthToken `protobuf:"bytes,1,opt,name=auth_token,json=authToken,proto3,oneof"` // use AD or other workload identity mechanism +} + +func (*UpstreamSpec_AzureOpenAI_AuthToken) isUpstreamSpec_AzureOpenAI_AuthTokenSource() {} + +// Settings for the [Gemini](https://ai.google.dev/gemini-api/docs) LLM provider. +// To find the values for the model and API version, you can check the fields of an API request, such as +// `https://generativelanguage.googleapis.com/{version}/models/{model}:generateContent?key={api_key}`. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type UpstreamSpec_Gemini struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The authorization token that the AI gateway uses to access the Gemini API. + // This token is automatically sent in the `x-goog-api-key` header of the request. + // + // Types that are valid to be assigned to AuthTokenSource: + // + // *UpstreamSpec_Gemini_AuthToken + AuthTokenSource isUpstreamSpec_Gemini_AuthTokenSource `protobuf_oneof:"auth_token_source"` + // The Gemini model to use. + // For more information, see the [Gemini models docs](https://ai.google.dev/gemini-api/docs/models/gemini). + Model string `protobuf:"bytes,2,opt,name=model,proto3" json:"model,omitempty"` + // The version of the Gemini API to use. + // For more information, see the [Gemini API version docs](https://ai.google.dev/gemini-api/docs/api-versions). + ApiVersion string `protobuf:"bytes,3,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"` + // Optional: Send requests to a custom host and port or configure custom path override or hostname + CustomHost *UpstreamSpec_CustomHost `protobuf:"bytes,4,opt,name=custom_host,json=customHost,proto3" json:"custom_host,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamSpec_Gemini) Reset() { + *x = UpstreamSpec_Gemini{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamSpec_Gemini) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamSpec_Gemini) ProtoMessage() {} + +func (x *UpstreamSpec_Gemini) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpstreamSpec_Gemini.ProtoReflect.Descriptor instead. +func (*UpstreamSpec_Gemini) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{1, 4} +} + +func (x *UpstreamSpec_Gemini) GetAuthTokenSource() isUpstreamSpec_Gemini_AuthTokenSource { + if x != nil { + return x.AuthTokenSource + } + return nil +} + +func (x *UpstreamSpec_Gemini) GetAuthToken() *SingleAuthToken { + if x != nil { + if x, ok := x.AuthTokenSource.(*UpstreamSpec_Gemini_AuthToken); ok { + return x.AuthToken + } + } + return nil +} + +func (x *UpstreamSpec_Gemini) GetModel() string { + if x != nil { + return x.Model + } + return "" +} + +func (x *UpstreamSpec_Gemini) GetApiVersion() string { + if x != nil { + return x.ApiVersion + } + return "" +} + +func (x *UpstreamSpec_Gemini) GetCustomHost() *UpstreamSpec_CustomHost { + if x != nil { + return x.CustomHost + } + return nil +} + +type isUpstreamSpec_Gemini_AuthTokenSource interface { + isUpstreamSpec_Gemini_AuthTokenSource() +} + +type UpstreamSpec_Gemini_AuthToken struct { + // The authorization token that the AI gateway uses to access the Gemini API. + // This token is automatically sent in the `x-goog-api-key` header of the request. + AuthToken *SingleAuthToken `protobuf:"bytes,1,opt,name=auth_token,json=authToken,proto3,oneof"` // TODO: use oauth +} + +func (*UpstreamSpec_Gemini_AuthToken) isUpstreamSpec_Gemini_AuthTokenSource() {} + +// Settings for the [Vertex AI](https://cloud.google.com/vertex-ai/docs) LLM provider. +// To find the values for the project ID, project location, and publisher, you can check the fields of an API request, such as +// `https://{LOCATION}-aiplatform.googleapis.com/{VERSION}/projects/{PROJECT_ID}/locations/{LOCATION}/publishers/{PROVIDER}/`. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type UpstreamSpec_VertexAI struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The authorization token that the AI gateway uses to access the Vertex AI API. + // This token is automatically sent in the `key` header of the request. + // + // Types that are valid to be assigned to AuthTokenSource: + // + // *UpstreamSpec_VertexAI_AuthToken + AuthTokenSource isUpstreamSpec_VertexAI_AuthTokenSource `protobuf_oneof:"auth_token_source"` + // The Vertex AI model to use. + // For more information, see the [Vertex AI model docs](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models). + Model string `protobuf:"bytes,2,opt,name=model,proto3" json:"model,omitempty"` + // The version of the Vertex AI API to use. + // For more information, see the [Vertex AI API reference](https://cloud.google.com/vertex-ai/docs/reference#versions). + ApiVersion string `protobuf:"bytes,3,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"` + // The ID of the Google Cloud Project that you use for the Vertex AI. + ProjectId string `protobuf:"bytes,4,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + // The location of the Google Cloud Project that you use for the Vertex AI. + Location string `protobuf:"bytes,5,opt,name=location,proto3" json:"location,omitempty"` + // Optional: The model path to route to. Defaults to the Gemini model path, `generateContent`. + ModelPath string `protobuf:"bytes,6,opt,name=model_path,json=modelPath,proto3" json:"model_path,omitempty"` + // The type of publisher model to use. Currently, only Google is supported. + Publisher UpstreamSpec_VertexAI_Publisher `protobuf:"varint,7,opt,name=publisher,proto3,enum=ai.options.gloo.solo.io.UpstreamSpec_VertexAI_Publisher" json:"publisher,omitempty"` + // Optional: Specify the API json schema the model uses, default to GEMINI if not set + JsonSchema ApiJsonSchema `protobuf:"varint,8,opt,name=json_schema,json=jsonSchema,proto3,enum=ai.options.gloo.solo.io.ApiJsonSchema" json:"json_schema,omitempty"` + // Optional: Send requests to a custom host and port or configure custom path override or hostname + CustomHost *UpstreamSpec_CustomHost `protobuf:"bytes,9,opt,name=custom_host,json=customHost,proto3" json:"custom_host,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamSpec_VertexAI) Reset() { + *x = UpstreamSpec_VertexAI{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamSpec_VertexAI) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamSpec_VertexAI) ProtoMessage() {} + +func (x *UpstreamSpec_VertexAI) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpstreamSpec_VertexAI.ProtoReflect.Descriptor instead. +func (*UpstreamSpec_VertexAI) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{1, 5} +} + +func (x *UpstreamSpec_VertexAI) GetAuthTokenSource() isUpstreamSpec_VertexAI_AuthTokenSource { + if x != nil { + return x.AuthTokenSource + } + return nil +} + +func (x *UpstreamSpec_VertexAI) GetAuthToken() *SingleAuthToken { + if x != nil { + if x, ok := x.AuthTokenSource.(*UpstreamSpec_VertexAI_AuthToken); ok { + return x.AuthToken + } + } + return nil +} + +func (x *UpstreamSpec_VertexAI) GetModel() string { + if x != nil { + return x.Model + } + return "" +} + +func (x *UpstreamSpec_VertexAI) GetApiVersion() string { + if x != nil { + return x.ApiVersion + } + return "" +} + +func (x *UpstreamSpec_VertexAI) GetProjectId() string { + if x != nil { + return x.ProjectId + } + return "" +} + +func (x *UpstreamSpec_VertexAI) GetLocation() string { + if x != nil { + return x.Location + } + return "" +} + +func (x *UpstreamSpec_VertexAI) GetModelPath() string { + if x != nil { + return x.ModelPath + } + return "" +} + +func (x *UpstreamSpec_VertexAI) GetPublisher() UpstreamSpec_VertexAI_Publisher { + if x != nil { + return x.Publisher + } + return UpstreamSpec_VertexAI_GOOGLE +} + +func (x *UpstreamSpec_VertexAI) GetJsonSchema() ApiJsonSchema { + if x != nil { + return x.JsonSchema + } + return ApiJsonSchema_NOT_SET +} + +func (x *UpstreamSpec_VertexAI) GetCustomHost() *UpstreamSpec_CustomHost { + if x != nil { + return x.CustomHost + } + return nil +} + +type isUpstreamSpec_VertexAI_AuthTokenSource interface { + isUpstreamSpec_VertexAI_AuthTokenSource() +} + +type UpstreamSpec_VertexAI_AuthToken struct { + // The authorization token that the AI gateway uses to access the Vertex AI API. + // This token is automatically sent in the `key` header of the request. + AuthToken *SingleAuthToken `protobuf:"bytes,1,opt,name=auth_token,json=authToken,proto3,oneof"` // TODO: use oauth +} + +func (*UpstreamSpec_VertexAI_AuthToken) isUpstreamSpec_VertexAI_AuthTokenSource() {} + +// Settings for the [Mistral AI](https://docs.mistral.ai/getting-started/quickstart/) LLM provider. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type UpstreamSpec_Mistral struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The authorization token that the AI gateway uses to access the OpenAI API. + // This token is automatically sent in the `Authorization` header of the + // request and prefixed with `Bearer`. + AuthToken *SingleAuthToken `protobuf:"bytes,1,opt,name=auth_token,json=authToken,proto3" json:"auth_token,omitempty"` + // Optional: Send requests to a custom host and port or configure custom path override or hostname + CustomHost *UpstreamSpec_CustomHost `protobuf:"bytes,2,opt,name=custom_host,json=customHost,proto3" json:"custom_host,omitempty"` + // Optional: Override the model name. + // If unset, the model name is taken from the request. + // This setting can be useful when testing model failover scenarios. + Model string `protobuf:"bytes,3,opt,name=model,proto3" json:"model,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamSpec_Mistral) Reset() { + *x = UpstreamSpec_Mistral{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamSpec_Mistral) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamSpec_Mistral) ProtoMessage() {} + +func (x *UpstreamSpec_Mistral) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpstreamSpec_Mistral.ProtoReflect.Descriptor instead. +func (*UpstreamSpec_Mistral) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{1, 6} +} + +func (x *UpstreamSpec_Mistral) GetAuthToken() *SingleAuthToken { + if x != nil { + return x.AuthToken + } + return nil +} + +func (x *UpstreamSpec_Mistral) GetCustomHost() *UpstreamSpec_CustomHost { + if x != nil { + return x.CustomHost + } + return nil +} + +func (x *UpstreamSpec_Mistral) GetModel() string { + if x != nil { + return x.Model + } + return "" +} + +// Settings for the [Anthropic](https://docs.anthropic.com/en/release-notes/api) LLM provider. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type UpstreamSpec_Anthropic struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The authorization token that the AI gateway uses to access the Anthropic API. + // This token is automatically sent in the `x-api-key` header of the request. + AuthToken *SingleAuthToken `protobuf:"bytes,1,opt,name=auth_token,json=authToken,proto3" json:"auth_token,omitempty"` + // Optional: Send requests to a custom host and port or configure custom path override or hostname + CustomHost *UpstreamSpec_CustomHost `protobuf:"bytes,2,opt,name=custom_host,json=customHost,proto3" json:"custom_host,omitempty"` + // Optional: The version string used to override the `anthropic-version` header to pass to the Anthropic API. + // Note: This does not control the api version (eg `/v1`) in the url. + // For more information, see the [Anthropic API versioning docs](https://docs.anthropic.com/en/api/versioning). + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + // Optional: Override the model name. + // If unset, the model name is taken from the request. + // This setting can be useful when testing model failover scenarios. + Model string `protobuf:"bytes,4,opt,name=model,proto3" json:"model,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamSpec_Anthropic) Reset() { + *x = UpstreamSpec_Anthropic{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamSpec_Anthropic) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamSpec_Anthropic) ProtoMessage() {} + +func (x *UpstreamSpec_Anthropic) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpstreamSpec_Anthropic.ProtoReflect.Descriptor instead. +func (*UpstreamSpec_Anthropic) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{1, 7} +} + +func (x *UpstreamSpec_Anthropic) GetAuthToken() *SingleAuthToken { + if x != nil { + return x.AuthToken + } + return nil +} + +func (x *UpstreamSpec_Anthropic) GetCustomHost() *UpstreamSpec_CustomHost { + if x != nil { + return x.CustomHost + } + return nil +} + +func (x *UpstreamSpec_Anthropic) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *UpstreamSpec_Anthropic) GetModel() string { + if x != nil { + return x.Model + } + return "" +} + +// Settings for the Bedrock LLM provider +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type UpstreamSpec_Bedrock struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The authorization config used to access authenticated AWS Bedrock services. + CredentialProvider *UpstreamSpec_AwsCredentialProvider `protobuf:"bytes,1,opt,name=credential_provider,json=credentialProvider,proto3" json:"credential_provider,omitempty"` + // Optional: Send requests to a custom host and port or configure custom path override or hostname + // Note: For AWS Bedrock, if custom_host is set, host_rewrite will be used to override the Host header before signing the request + CustomHost *UpstreamSpec_CustomHost `protobuf:"bytes,2,opt,name=custom_host,json=customHost,proto3" json:"custom_host,omitempty"` + // Required: model string. + // + // The model field is the supported model id published by AWS. See + Model string `protobuf:"bytes,3,opt,name=model,proto3" json:"model,omitempty"` + // Required: region string. + // + // The region is a string for the standard AWS region for the service that hosts the HTTP endpoint. The `AWS_SIGV4` signing algorithm is currently used by default. + // For more regions, see the AWS docs + // + // Example: us-west-2 + // + // NOTE: Multiple regions are not currently supported. + Region string `protobuf:"bytes,4,opt,name=region,proto3" json:"region,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamSpec_Bedrock) Reset() { + *x = UpstreamSpec_Bedrock{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamSpec_Bedrock) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamSpec_Bedrock) ProtoMessage() {} + +func (x *UpstreamSpec_Bedrock) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpstreamSpec_Bedrock.ProtoReflect.Descriptor instead. +func (*UpstreamSpec_Bedrock) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{1, 8} +} + +func (x *UpstreamSpec_Bedrock) GetCredentialProvider() *UpstreamSpec_AwsCredentialProvider { + if x != nil { + return x.CredentialProvider + } + return nil +} + +func (x *UpstreamSpec_Bedrock) GetCustomHost() *UpstreamSpec_CustomHost { + if x != nil { + return x.CustomHost + } + return nil +} + +func (x *UpstreamSpec_Bedrock) GetModel() string { + if x != nil { + return x.Model + } + return "" +} + +func (x *UpstreamSpec_Bedrock) GetRegion() string { + if x != nil { + return x.Region + } + return "" +} + +// AwsCredentialProvider provider for signing the request. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type UpstreamSpec_AwsCredentialProvider struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to AuthTokenSource: + // + // *UpstreamSpec_AwsCredentialProvider_SecretRef + // *UpstreamSpec_AwsCredentialProvider_Inline + AuthTokenSource isUpstreamSpec_AwsCredentialProvider_AuthTokenSource `protobuf_oneof:"auth_token_source"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamSpec_AwsCredentialProvider) Reset() { + *x = UpstreamSpec_AwsCredentialProvider{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamSpec_AwsCredentialProvider) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamSpec_AwsCredentialProvider) ProtoMessage() {} + +func (x *UpstreamSpec_AwsCredentialProvider) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpstreamSpec_AwsCredentialProvider.ProtoReflect.Descriptor instead. +func (*UpstreamSpec_AwsCredentialProvider) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{1, 9} +} + +func (x *UpstreamSpec_AwsCredentialProvider) GetAuthTokenSource() isUpstreamSpec_AwsCredentialProvider_AuthTokenSource { + if x != nil { + return x.AuthTokenSource + } + return nil +} + +func (x *UpstreamSpec_AwsCredentialProvider) GetSecretRef() *core.ResourceRef { + if x != nil { + if x, ok := x.AuthTokenSource.(*UpstreamSpec_AwsCredentialProvider_SecretRef); ok { + return x.SecretRef + } + } + return nil +} + +func (x *UpstreamSpec_AwsCredentialProvider) GetInline() *UpstreamSpec_AWSInline { + if x != nil { + if x, ok := x.AuthTokenSource.(*UpstreamSpec_AwsCredentialProvider_Inline); ok { + return x.Inline + } + } + return nil +} + +type isUpstreamSpec_AwsCredentialProvider_AuthTokenSource interface { + isUpstreamSpec_AwsCredentialProvider_AuthTokenSource() +} + +type UpstreamSpec_AwsCredentialProvider_SecretRef struct { + // Store the “AWS_ACCESS_KEY_ID“, “AWS_SECRET_ACCESS_KEY“, and the optional “AWS_SESSION_TOKEN“ in a Kubernetes secret in + // the same namespace as the Upstream. Then, refer to the secret in the Upstream configuration. + SecretRef *core.ResourceRef `protobuf:"bytes,1,opt,name=secret_ref,json=secretRef,proto3,oneof"` +} + +type UpstreamSpec_AwsCredentialProvider_Inline struct { + // Uses inlined AWS credentials for“AWS_ACCESS_KEY_ID“, “AWS_SECRET_ACCESS_KEY“, and the optional “AWS_SESSION_TOKEN“. + Inline *UpstreamSpec_AWSInline `protobuf:"bytes,2,opt,name=inline,proto3,oneof"` +} + +func (*UpstreamSpec_AwsCredentialProvider_SecretRef) isUpstreamSpec_AwsCredentialProvider_AuthTokenSource() { +} + +func (*UpstreamSpec_AwsCredentialProvider_Inline) isUpstreamSpec_AwsCredentialProvider_AuthTokenSource() { +} + +// Configuration to use an inline AWS credential. This is an equivalent to setting the well-known +// environment variables “AWS_ACCESS_KEY_ID“, “AWS_SECRET_ACCESS_KEY“, and the optional “AWS_SESSION_TOKEN“. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type UpstreamSpec_AWSInline struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The AWS access key ID, which identifies the user and account. + AccessKeyId string `protobuf:"bytes,1,opt,name=access_key_id,json=accessKeyId,proto3" json:"access_key_id,omitempty"` + // The AWS secret access key, which is used to sign the request. + SecretAccessKey string `protobuf:"bytes,2,opt,name=secret_access_key,json=secretAccessKey,proto3" json:"secret_access_key,omitempty"` + // The AWS session token. This value is required only when using temporary credentials, such as from STS or an assumed role. + SessionToken string `protobuf:"bytes,3,opt,name=session_token,json=sessionToken,proto3" json:"session_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamSpec_AWSInline) Reset() { + *x = UpstreamSpec_AWSInline{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamSpec_AWSInline) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamSpec_AWSInline) ProtoMessage() {} + +func (x *UpstreamSpec_AWSInline) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpstreamSpec_AWSInline.ProtoReflect.Descriptor instead. +func (*UpstreamSpec_AWSInline) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{1, 10} +} + +func (x *UpstreamSpec_AWSInline) GetAccessKeyId() string { + if x != nil { + return x.AccessKeyId + } + return "" +} + +func (x *UpstreamSpec_AWSInline) GetSecretAccessKey() string { + if x != nil { + return x.SecretAccessKey + } + return "" +} + +func (x *UpstreamSpec_AWSInline) GetSessionToken() string { + if x != nil { + return x.SessionToken + } + return "" +} + +// Configure backends for multiple hosts or models from the same provider in one Upstream resource. +// This method can be useful for creating one logical endpoint that is backed +// by multiple hosts or models. +// +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +// +// In the `priorities` section, the order of `pool` entries defines the priority of the backend endpoints. +// The `pool` entries can either define a list of backends or a single backend. +// Note: Only two levels of nesting are permitted. Any nested entries after the second level are ignored. +// +// ```yaml +// multi: +// +// priorities: +// - pool: +// - azureOpenai: +// deploymentName: gpt-4o-mini +// apiVersion: 2024-02-15-preview +// endpoint: ai-gateway.openai.azure.com +// authToken: +// secretRef: +// name: azure-secret +// namespace: gloo-system +// - pool: +// - azureOpenai: +// deploymentName: gpt-4o-mini-2 +// apiVersion: 2024-02-15-preview +// endpoint: ai-gateway-2.openai.azure.com +// authToken: +// secretRef: +// name: azure-secret-2 +// namespace: gloo-system +// +// ``` +type UpstreamSpec_MultiPool struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The order of `pool` entries within this section defines the priority of the backend endpoints. + Priorities []*UpstreamSpec_MultiPool_Priority `protobuf:"bytes,1,rep,name=priorities,proto3" json:"priorities,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamSpec_MultiPool) Reset() { + *x = UpstreamSpec_MultiPool{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamSpec_MultiPool) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamSpec_MultiPool) ProtoMessage() {} + +func (x *UpstreamSpec_MultiPool) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpstreamSpec_MultiPool.ProtoReflect.Descriptor instead. +func (*UpstreamSpec_MultiPool) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{1, 11} +} + +func (x *UpstreamSpec_MultiPool) GetPriorities() []*UpstreamSpec_MultiPool_Priority { + if x != nil { + return x.Priorities + } + return nil +} + +// An entry represeting an LLM provider backend that the AI Gateway routes requests to. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type UpstreamSpec_MultiPool_Backend struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Llm: + // + // *UpstreamSpec_MultiPool_Backend_Openai + // *UpstreamSpec_MultiPool_Backend_Mistral + // *UpstreamSpec_MultiPool_Backend_Anthropic + // *UpstreamSpec_MultiPool_Backend_AzureOpenai + // *UpstreamSpec_MultiPool_Backend_Gemini + // *UpstreamSpec_MultiPool_Backend_VertexAi + // *UpstreamSpec_MultiPool_Backend_Bedrock + Llm isUpstreamSpec_MultiPool_Backend_Llm `protobuf_oneof:"llm"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamSpec_MultiPool_Backend) Reset() { + *x = UpstreamSpec_MultiPool_Backend{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamSpec_MultiPool_Backend) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamSpec_MultiPool_Backend) ProtoMessage() {} + +func (x *UpstreamSpec_MultiPool_Backend) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpstreamSpec_MultiPool_Backend.ProtoReflect.Descriptor instead. +func (*UpstreamSpec_MultiPool_Backend) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{1, 11, 0} +} + +func (x *UpstreamSpec_MultiPool_Backend) GetLlm() isUpstreamSpec_MultiPool_Backend_Llm { + if x != nil { + return x.Llm + } + return nil +} + +func (x *UpstreamSpec_MultiPool_Backend) GetOpenai() *UpstreamSpec_OpenAI { + if x != nil { + if x, ok := x.Llm.(*UpstreamSpec_MultiPool_Backend_Openai); ok { + return x.Openai + } + } + return nil +} + +func (x *UpstreamSpec_MultiPool_Backend) GetMistral() *UpstreamSpec_Mistral { + if x != nil { + if x, ok := x.Llm.(*UpstreamSpec_MultiPool_Backend_Mistral); ok { + return x.Mistral + } + } + return nil +} + +func (x *UpstreamSpec_MultiPool_Backend) GetAnthropic() *UpstreamSpec_Anthropic { + if x != nil { + if x, ok := x.Llm.(*UpstreamSpec_MultiPool_Backend_Anthropic); ok { + return x.Anthropic + } + } + return nil +} + +func (x *UpstreamSpec_MultiPool_Backend) GetAzureOpenai() *UpstreamSpec_AzureOpenAI { + if x != nil { + if x, ok := x.Llm.(*UpstreamSpec_MultiPool_Backend_AzureOpenai); ok { + return x.AzureOpenai + } + } + return nil +} + +func (x *UpstreamSpec_MultiPool_Backend) GetGemini() *UpstreamSpec_Gemini { + if x != nil { + if x, ok := x.Llm.(*UpstreamSpec_MultiPool_Backend_Gemini); ok { + return x.Gemini + } + } + return nil +} + +func (x *UpstreamSpec_MultiPool_Backend) GetVertexAi() *UpstreamSpec_VertexAI { + if x != nil { + if x, ok := x.Llm.(*UpstreamSpec_MultiPool_Backend_VertexAi); ok { + return x.VertexAi + } + } + return nil +} + +func (x *UpstreamSpec_MultiPool_Backend) GetBedrock() *UpstreamSpec_Bedrock { + if x != nil { + if x, ok := x.Llm.(*UpstreamSpec_MultiPool_Backend_Bedrock); ok { + return x.Bedrock + } + } + return nil +} + +type isUpstreamSpec_MultiPool_Backend_Llm interface { + isUpstreamSpec_MultiPool_Backend_Llm() +} + +type UpstreamSpec_MultiPool_Backend_Openai struct { + // Configure an [OpenAI](https://platform.openai.com/docs/overview) backend. + Openai *UpstreamSpec_OpenAI `protobuf:"bytes,1,opt,name=openai,proto3,oneof"` +} + +type UpstreamSpec_MultiPool_Backend_Mistral struct { + // Configure a [Mistral AI](https://docs.mistral.ai/getting-started/quickstart/) backend. + Mistral *UpstreamSpec_Mistral `protobuf:"bytes,2,opt,name=mistral,proto3,oneof"` +} + +type UpstreamSpec_MultiPool_Backend_Anthropic struct { + // Configure an [Anthropic](https://docs.anthropic.com/en/release-notes/api) backend. + Anthropic *UpstreamSpec_Anthropic `protobuf:"bytes,3,opt,name=anthropic,proto3,oneof"` +} + +type UpstreamSpec_MultiPool_Backend_AzureOpenai struct { + // Configure an [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/) backend. + AzureOpenai *UpstreamSpec_AzureOpenAI `protobuf:"bytes,4,opt,name=azure_openai,json=azureOpenai,proto3,oneof"` +} + +type UpstreamSpec_MultiPool_Backend_Gemini struct { + // Configure a [Gemini](https://ai.google.dev/gemini-api/docs) backend. + Gemini *UpstreamSpec_Gemini `protobuf:"bytes,5,opt,name=gemini,proto3,oneof"` +} + +type UpstreamSpec_MultiPool_Backend_VertexAi struct { + // Configure a [Vertex AI](https://cloud.google.com/vertex-ai/docs) backend. + VertexAi *UpstreamSpec_VertexAI `protobuf:"bytes,6,opt,name=vertex_ai,json=vertexAi,proto3,oneof"` +} + +type UpstreamSpec_MultiPool_Backend_Bedrock struct { + // Configure a [Bedrock](https://aws.amazon.com/bedrock/) backend. + Bedrock *UpstreamSpec_Bedrock `protobuf:"bytes,7,opt,name=bedrock,proto3,oneof"` +} + +func (*UpstreamSpec_MultiPool_Backend_Openai) isUpstreamSpec_MultiPool_Backend_Llm() {} + +func (*UpstreamSpec_MultiPool_Backend_Mistral) isUpstreamSpec_MultiPool_Backend_Llm() {} + +func (*UpstreamSpec_MultiPool_Backend_Anthropic) isUpstreamSpec_MultiPool_Backend_Llm() {} + +func (*UpstreamSpec_MultiPool_Backend_AzureOpenai) isUpstreamSpec_MultiPool_Backend_Llm() {} + +func (*UpstreamSpec_MultiPool_Backend_Gemini) isUpstreamSpec_MultiPool_Backend_Llm() {} + +func (*UpstreamSpec_MultiPool_Backend_VertexAi) isUpstreamSpec_MultiPool_Backend_Llm() {} + +func (*UpstreamSpec_MultiPool_Backend_Bedrock) isUpstreamSpec_MultiPool_Backend_Llm() {} + +// The order of `pool` entries within this section defines the priority of the backend endpoints. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type UpstreamSpec_MultiPool_Priority struct { + state protoimpl.MessageState `protogen:"open.v1"` + // A list of LLM provider backends within a single endpoint pool entry. + Pool []*UpstreamSpec_MultiPool_Backend `protobuf:"bytes,1,rep,name=pool,proto3" json:"pool,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamSpec_MultiPool_Priority) Reset() { + *x = UpstreamSpec_MultiPool_Priority{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamSpec_MultiPool_Priority) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamSpec_MultiPool_Priority) ProtoMessage() {} + +func (x *UpstreamSpec_MultiPool_Priority) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpstreamSpec_MultiPool_Priority.ProtoReflect.Descriptor instead. +func (*UpstreamSpec_MultiPool_Priority) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{1, 11, 1} +} + +func (x *UpstreamSpec_MultiPool_Priority) GetPool() []*UpstreamSpec_MultiPool_Backend { + if x != nil { + return x.Pool + } + return nil +} + +// Embedding settings for the OpenAI provider. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type Embedding_OpenAI struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to AuthTokenSource: + // + // *Embedding_OpenAI_AuthToken + AuthTokenSource isEmbedding_OpenAI_AuthTokenSource `protobuf_oneof:"auth_token_source"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Embedding_OpenAI) Reset() { + *x = Embedding_OpenAI{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Embedding_OpenAI) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Embedding_OpenAI) ProtoMessage() {} + +func (x *Embedding_OpenAI) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Embedding_OpenAI.ProtoReflect.Descriptor instead. +func (*Embedding_OpenAI) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{5, 0} +} + +func (x *Embedding_OpenAI) GetAuthTokenSource() isEmbedding_OpenAI_AuthTokenSource { + if x != nil { + return x.AuthTokenSource + } + return nil +} + +func (x *Embedding_OpenAI) GetAuthToken() *SingleAuthToken { + if x != nil { + if x, ok := x.AuthTokenSource.(*Embedding_OpenAI_AuthToken); ok { + return x.AuthToken + } + } + return nil +} + +type isEmbedding_OpenAI_AuthTokenSource interface { + isEmbedding_OpenAI_AuthTokenSource() +} + +type Embedding_OpenAI_AuthToken struct { + // The authorization token that the AI gateway uses to access the OpenAI API. + // This token is automatically sent in the `Authorization` header of the + // request and prefixed with `Bearer`. + AuthToken *SingleAuthToken `protobuf:"bytes,1,opt,name=auth_token,json=authToken,proto3,oneof"` +} + +func (*Embedding_OpenAI_AuthToken) isEmbedding_OpenAI_AuthTokenSource() {} + +// Embedding settings for the Azure OpenAI provider. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type Embedding_AzureOpenAI struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to AuthTokenSource: + // + // *Embedding_AzureOpenAI_AuthToken + AuthTokenSource isEmbedding_AzureOpenAI_AuthTokenSource `protobuf_oneof:"auth_token_source"` + // The version of the Azure OpenAI API to use. + // For more information, see the [Azure OpenAI API version reference](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#api-specs). + ApiVersion string `protobuf:"bytes,2,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"` + // The endpoint for the Azure OpenAI API to use, such as `my-endpoint.openai.azure.com`. + // If the scheme is not included, it is added. + Endpoint string `protobuf:"bytes,3,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + // The name of the Azure OpenAI model deployment to use. + // For more information, see the [Azure OpenAI model docs](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models). + DeploymentName string `protobuf:"bytes,4,opt,name=deployment_name,json=deploymentName,proto3" json:"deployment_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Embedding_AzureOpenAI) Reset() { + *x = Embedding_AzureOpenAI{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Embedding_AzureOpenAI) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Embedding_AzureOpenAI) ProtoMessage() {} + +func (x *Embedding_AzureOpenAI) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Embedding_AzureOpenAI.ProtoReflect.Descriptor instead. +func (*Embedding_AzureOpenAI) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{5, 1} +} + +func (x *Embedding_AzureOpenAI) GetAuthTokenSource() isEmbedding_AzureOpenAI_AuthTokenSource { + if x != nil { + return x.AuthTokenSource + } + return nil +} + +func (x *Embedding_AzureOpenAI) GetAuthToken() *SingleAuthToken { + if x != nil { + if x, ok := x.AuthTokenSource.(*Embedding_AzureOpenAI_AuthToken); ok { + return x.AuthToken + } + } + return nil +} + +func (x *Embedding_AzureOpenAI) GetApiVersion() string { + if x != nil { + return x.ApiVersion + } + return "" +} + +func (x *Embedding_AzureOpenAI) GetEndpoint() string { + if x != nil { + return x.Endpoint + } + return "" +} + +func (x *Embedding_AzureOpenAI) GetDeploymentName() string { + if x != nil { + return x.DeploymentName + } + return "" +} + +type isEmbedding_AzureOpenAI_AuthTokenSource interface { + isEmbedding_AzureOpenAI_AuthTokenSource() +} + +type Embedding_AzureOpenAI_AuthToken struct { + // The authorization token that the AI gateway uses to access the Azure OpenAI API. + // This token is automatically sent in the `api-key` header of the request. + AuthToken *SingleAuthToken `protobuf:"bytes,1,opt,name=auth_token,json=authToken,proto3,oneof"` +} + +func (*Embedding_AzureOpenAI_AuthToken) isEmbedding_AzureOpenAI_AuthTokenSource() {} + +// Settings for a Redis database. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type SemanticCache_Redis struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Connection string to the Redis database, such as `redis://172.17.0.1:6379`. + ConnectionString string `protobuf:"bytes,1,opt,name=connection_string,json=connectionString,proto3" json:"connection_string,omitempty"` + // Similarity score threshold value between 0.0 and 1.0 that determines how similar + // two queries must be in order to return a cached result. + // The lower the number, the more similar the queries must be for a cache hit. + // + // +kubebuilder:validation:Minimum=0 + // +kubebuilder:validation:Maximum=1 + // Deprecated: Prefer setting the distance threshold in the RouteOptions.SemanticCache resource. + ScoreThreshold float32 `protobuf:"fixed32,2,opt,name=score_threshold,json=scoreThreshold,proto3" json:"score_threshold,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SemanticCache_Redis) Reset() { + *x = SemanticCache_Redis{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SemanticCache_Redis) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SemanticCache_Redis) ProtoMessage() {} + +func (x *SemanticCache_Redis) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SemanticCache_Redis.ProtoReflect.Descriptor instead. +func (*SemanticCache_Redis) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{6, 0} +} + +func (x *SemanticCache_Redis) GetConnectionString() string { + if x != nil { + return x.ConnectionString + } + return "" +} + +func (x *SemanticCache_Redis) GetScoreThreshold() float32 { + if x != nil { + return x.ScoreThreshold + } + return 0 +} + +// Settings for a Weaviate database. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type SemanticCache_Weaviate struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Connection string to the Weaviate database. + // Do not include the scheme. For example, the format + // `weaviate.my-ns.svc.cluster.local` is correct. The format + // `http://weaviate.my-ns.svc.cluster.local`, which includes the scheme, is incorrect. + Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` + // HTTP port to use. If unset, defaults to `8080`. + HttpPort uint32 `protobuf:"varint,2,opt,name=http_port,json=httpPort,proto3" json:"http_port,omitempty"` + // GRPC port to use. If unset, defaults to `50051`. + GrpcPort uint32 `protobuf:"varint,3,opt,name=grpc_port,json=grpcPort,proto3" json:"grpc_port,omitempty"` + // Whether to use a secure connection. Defaults to `true`. + Insecure bool `protobuf:"varint,4,opt,name=insecure,proto3" json:"insecure,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SemanticCache_Weaviate) Reset() { + *x = SemanticCache_Weaviate{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SemanticCache_Weaviate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SemanticCache_Weaviate) ProtoMessage() {} + +func (x *SemanticCache_Weaviate) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SemanticCache_Weaviate.ProtoReflect.Descriptor instead. +func (*SemanticCache_Weaviate) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{6, 1} +} + +func (x *SemanticCache_Weaviate) GetHost() string { + if x != nil { + return x.Host + } + return "" +} + +func (x *SemanticCache_Weaviate) GetHttpPort() uint32 { + if x != nil { + return x.HttpPort + } + return 0 +} + +func (x *SemanticCache_Weaviate) GetGrpcPort() uint32 { + if x != nil { + return x.GrpcPort + } + return 0 +} + +func (x *SemanticCache_Weaviate) GetInsecure() bool { + if x != nil { + return x.Insecure + } + return false +} + +// Data store from which to cache the request and response pairs. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type SemanticCache_DataStore struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Datastore: + // + // *SemanticCache_DataStore_Redis + // *SemanticCache_DataStore_Weaviate + Datastore isSemanticCache_DataStore_Datastore `protobuf_oneof:"datastore"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SemanticCache_DataStore) Reset() { + *x = SemanticCache_DataStore{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SemanticCache_DataStore) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SemanticCache_DataStore) ProtoMessage() {} + +func (x *SemanticCache_DataStore) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[29] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SemanticCache_DataStore.ProtoReflect.Descriptor instead. +func (*SemanticCache_DataStore) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{6, 2} +} + +func (x *SemanticCache_DataStore) GetDatastore() isSemanticCache_DataStore_Datastore { + if x != nil { + return x.Datastore + } + return nil +} + +func (x *SemanticCache_DataStore) GetRedis() *SemanticCache_Redis { + if x != nil { + if x, ok := x.Datastore.(*SemanticCache_DataStore_Redis); ok { + return x.Redis + } + } + return nil +} + +func (x *SemanticCache_DataStore) GetWeaviate() *SemanticCache_Weaviate { + if x != nil { + if x, ok := x.Datastore.(*SemanticCache_DataStore_Weaviate); ok { + return x.Weaviate + } + } + return nil +} + +type isSemanticCache_DataStore_Datastore interface { + isSemanticCache_DataStore_Datastore() +} + +type SemanticCache_DataStore_Redis struct { + // Settings for a Redis database. + Redis *SemanticCache_Redis `protobuf:"bytes,1,opt,name=redis,proto3,oneof"` +} + +type SemanticCache_DataStore_Weaviate struct { + // Settings for a Weaviate database. + Weaviate *SemanticCache_Weaviate `protobuf:"bytes,2,opt,name=weaviate,proto3,oneof"` +} + +func (*SemanticCache_DataStore_Redis) isSemanticCache_DataStore_Datastore() {} + +func (*SemanticCache_DataStore_Weaviate) isSemanticCache_DataStore_Datastore() {} + +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type RAG_DataStore struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Datastore: + // + // *RAG_DataStore_Postgres + Datastore isRAG_DataStore_Datastore `protobuf_oneof:"datastore"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RAG_DataStore) Reset() { + *x = RAG_DataStore{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RAG_DataStore) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RAG_DataStore) ProtoMessage() {} + +func (x *RAG_DataStore) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[30] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RAG_DataStore.ProtoReflect.Descriptor instead. +func (*RAG_DataStore) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{7, 0} +} + +func (x *RAG_DataStore) GetDatastore() isRAG_DataStore_Datastore { + if x != nil { + return x.Datastore + } + return nil +} + +func (x *RAG_DataStore) GetPostgres() *Postgres { + if x != nil { + if x, ok := x.Datastore.(*RAG_DataStore_Postgres); ok { + return x.Postgres + } + } + return nil +} + +type isRAG_DataStore_Datastore interface { + isRAG_DataStore_Datastore() +} + +type RAG_DataStore_Postgres struct { + // Configuration settings for a Postgres datastore. + Postgres *Postgres `protobuf:"bytes,1,opt,name=postgres,proto3,oneof"` +} + +func (*RAG_DataStore_Postgres) isRAG_DataStore_Datastore() {} + +// An entry for a message to prepend or append to each prompt. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type AIPromptEnrichment_Message struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Role of the message. The available roles depend on the backend + // LLM provider model, such as `SYSTEM` or `USER` in the OpenAI API. + Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + // String content of the message. + Content string `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AIPromptEnrichment_Message) Reset() { + *x = AIPromptEnrichment_Message{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AIPromptEnrichment_Message) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AIPromptEnrichment_Message) ProtoMessage() {} + +func (x *AIPromptEnrichment_Message) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[31] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AIPromptEnrichment_Message.ProtoReflect.Descriptor instead. +func (*AIPromptEnrichment_Message) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{8, 0} +} + +func (x *AIPromptEnrichment_Message) GetRole() string { + if x != nil { + return x.Role + } + return "" +} + +func (x *AIPromptEnrichment_Message) GetContent() string { + if x != nil { + return x.Content + } + return "" +} + +// Regular expression (regex) matching for prompt guards and data masking. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type AIPromptGuard_Regex struct { + state protoimpl.MessageState `protogen:"open.v1"` + // A list of regex patterns to match against the request or response. + // Matches and built-ins are additive. + Matches []*AIPromptGuard_Regex_RegexMatch `protobuf:"bytes,1,rep,name=matches,proto3" json:"matches,omitempty"` + // A list of built-in regex patterns to match against the request or response. + // Matches and built-ins are additive. + Builtins []AIPromptGuard_Regex_BuiltIn `protobuf:"varint,2,rep,packed,name=builtins,proto3,enum=ai.options.gloo.solo.io.AIPromptGuard_Regex_BuiltIn" json:"builtins,omitempty"` + // The action to take if a regex pattern is matched in a request or response. + // This setting applies only to request matches. Response matches are always masked by default. + Action AIPromptGuard_Regex_Action `protobuf:"varint,3,opt,name=action,proto3,enum=ai.options.gloo.solo.io.AIPromptGuard_Regex_Action" json:"action,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AIPromptGuard_Regex) Reset() { + *x = AIPromptGuard_Regex{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AIPromptGuard_Regex) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AIPromptGuard_Regex) ProtoMessage() {} + +func (x *AIPromptGuard_Regex) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[32] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AIPromptGuard_Regex.ProtoReflect.Descriptor instead. +func (*AIPromptGuard_Regex) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{9, 0} +} + +func (x *AIPromptGuard_Regex) GetMatches() []*AIPromptGuard_Regex_RegexMatch { + if x != nil { + return x.Matches + } + return nil +} + +func (x *AIPromptGuard_Regex) GetBuiltins() []AIPromptGuard_Regex_BuiltIn { + if x != nil { + return x.Builtins + } + return nil +} + +func (x *AIPromptGuard_Regex) GetAction() AIPromptGuard_Regex_Action { + if x != nil { + return x.Action + } + return AIPromptGuard_Regex_MASK +} + +// Configure a webhook to forward requests or responses to for prompt guarding. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type AIPromptGuard_Webhook struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Host to send the traffic to. + Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` + // Port to send the traffic to + Port uint32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` + // Headers to forward with the request to the webhook. + ForwardHeaders []*AIPromptGuard_Webhook_HeaderMatch `protobuf:"bytes,3,rep,name=forwardHeaders,proto3" json:"forwardHeaders,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AIPromptGuard_Webhook) Reset() { + *x = AIPromptGuard_Webhook{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AIPromptGuard_Webhook) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AIPromptGuard_Webhook) ProtoMessage() {} + +func (x *AIPromptGuard_Webhook) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[33] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AIPromptGuard_Webhook.ProtoReflect.Descriptor instead. +func (*AIPromptGuard_Webhook) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{9, 1} +} + +func (x *AIPromptGuard_Webhook) GetHost() string { + if x != nil { + return x.Host + } + return "" +} + +func (x *AIPromptGuard_Webhook) GetPort() uint32 { + if x != nil { + return x.Port + } + return 0 +} + +func (x *AIPromptGuard_Webhook) GetForwardHeaders() []*AIPromptGuard_Webhook_HeaderMatch { + if x != nil { + return x.ForwardHeaders + } + return nil +} + +// Pass prompt data through an external moderation model endpoint, +// which compares the request prompt input to predefined content rules. +// Any requests that are routed through Gloo AI Gateway pass through the +// moderation model that you specify. If the content is identified as harmful +// according to the model's content rules, the request is automatically rejected. +// +// You can configure an moderation endpoint either as a standalone prompt guard setting +// or in addition to other request and response guard settings. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type AIPromptGuard_Moderation struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Pass prompt data through an external moderation model endpoint, + // which compares the request prompt input to predefined content rules. + // + // Types that are valid to be assigned to Moderation: + // + // *AIPromptGuard_Moderation_Openai + Moderation isAIPromptGuard_Moderation_Moderation `protobuf_oneof:"moderation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AIPromptGuard_Moderation) Reset() { + *x = AIPromptGuard_Moderation{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AIPromptGuard_Moderation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AIPromptGuard_Moderation) ProtoMessage() {} + +func (x *AIPromptGuard_Moderation) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[34] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AIPromptGuard_Moderation.ProtoReflect.Descriptor instead. +func (*AIPromptGuard_Moderation) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{9, 2} +} + +func (x *AIPromptGuard_Moderation) GetModeration() isAIPromptGuard_Moderation_Moderation { + if x != nil { + return x.Moderation + } + return nil +} + +func (x *AIPromptGuard_Moderation) GetOpenai() *AIPromptGuard_Moderation_OpenAI { + if x != nil { + if x, ok := x.Moderation.(*AIPromptGuard_Moderation_Openai); ok { + return x.Openai + } + } + return nil +} + +type isAIPromptGuard_Moderation_Moderation interface { + isAIPromptGuard_Moderation_Moderation() +} + +type AIPromptGuard_Moderation_Openai struct { + // Configure an OpenAI moderation endpoint. + Openai *AIPromptGuard_Moderation_OpenAI `protobuf:"bytes,1,opt,name=openai,proto3,oneof"` +} + +func (*AIPromptGuard_Moderation_Openai) isAIPromptGuard_Moderation_Moderation() {} + +// Prompt guards to apply to requests sent by the client. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type AIPromptGuard_Request struct { + state protoimpl.MessageState `protogen:"open.v1"` + // A custom response message to return to the client. If not specified, defaults to + // "The request was rejected due to inappropriate content". + CustomResponse *AIPromptGuard_Request_CustomResponse `protobuf:"bytes,1,opt,name=custom_response,json=customResponse,proto3" json:"custom_response,omitempty"` + // Regular expression (regex) matching for prompt guards and data masking. + Regex *AIPromptGuard_Regex `protobuf:"bytes,2,opt,name=regex,proto3" json:"regex,omitempty"` + // Configure a webhook to forward requests to for prompt guarding. + Webhook *AIPromptGuard_Webhook `protobuf:"bytes,3,opt,name=webhook,proto3" json:"webhook,omitempty"` + // Pass prompt data through an external moderation model endpoint, + // which compares the request prompt input to predefined content rules. + Moderation *AIPromptGuard_Moderation `protobuf:"bytes,4,opt,name=moderation,proto3" json:"moderation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AIPromptGuard_Request) Reset() { + *x = AIPromptGuard_Request{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AIPromptGuard_Request) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AIPromptGuard_Request) ProtoMessage() {} + +func (x *AIPromptGuard_Request) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[35] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AIPromptGuard_Request.ProtoReflect.Descriptor instead. +func (*AIPromptGuard_Request) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{9, 3} +} + +func (x *AIPromptGuard_Request) GetCustomResponse() *AIPromptGuard_Request_CustomResponse { + if x != nil { + return x.CustomResponse + } + return nil +} + +func (x *AIPromptGuard_Request) GetRegex() *AIPromptGuard_Regex { + if x != nil { + return x.Regex + } + return nil +} + +func (x *AIPromptGuard_Request) GetWebhook() *AIPromptGuard_Webhook { + if x != nil { + return x.Webhook + } + return nil +} + +func (x *AIPromptGuard_Request) GetModeration() *AIPromptGuard_Moderation { + if x != nil { + return x.Moderation + } + return nil +} + +// Prompt guards to apply to responses returned by the LLM provider. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type AIPromptGuard_Response struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Regular expression (regex) matching for prompt guards and data masking. + Regex *AIPromptGuard_Regex `protobuf:"bytes,1,opt,name=regex,proto3" json:"regex,omitempty"` + // Configure a webhook to forward responses to for prompt guarding. + Webhook *AIPromptGuard_Webhook `protobuf:"bytes,2,opt,name=webhook,proto3" json:"webhook,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AIPromptGuard_Response) Reset() { + *x = AIPromptGuard_Response{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AIPromptGuard_Response) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AIPromptGuard_Response) ProtoMessage() {} + +func (x *AIPromptGuard_Response) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[36] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AIPromptGuard_Response.ProtoReflect.Descriptor instead. +func (*AIPromptGuard_Response) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{9, 4} +} + +func (x *AIPromptGuard_Response) GetRegex() *AIPromptGuard_Regex { + if x != nil { + return x.Regex + } + return nil +} + +func (x *AIPromptGuard_Response) GetWebhook() *AIPromptGuard_Webhook { + if x != nil { + return x.Webhook + } + return nil +} + +// Regular expression (regex) matching for prompt guards and data masking. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type AIPromptGuard_Regex_RegexMatch struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The regex pattern to match against the request or response. + Pattern string `protobuf:"bytes,1,opt,name=pattern,proto3" json:"pattern,omitempty"` + // An optional name for this match, which can be used for debugging purposes. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AIPromptGuard_Regex_RegexMatch) Reset() { + *x = AIPromptGuard_Regex_RegexMatch{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AIPromptGuard_Regex_RegexMatch) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AIPromptGuard_Regex_RegexMatch) ProtoMessage() {} + +func (x *AIPromptGuard_Regex_RegexMatch) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[37] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AIPromptGuard_Regex_RegexMatch.ProtoReflect.Descriptor instead. +func (*AIPromptGuard_Regex_RegexMatch) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{9, 0, 0} +} + +func (x *AIPromptGuard_Regex_RegexMatch) GetPattern() string { + if x != nil { + return x.Pattern + } + return "" +} + +func (x *AIPromptGuard_Regex_RegexMatch) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Describes how to match a given string in HTTP headers. Match is case-sensitive. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type AIPromptGuard_Webhook_HeaderMatch struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The header key string to match against. + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + // The type of match to use. + MatchType AIPromptGuard_Webhook_HeaderMatch_MatchType `protobuf:"varint,2,opt,name=match_type,json=matchType,proto3,enum=ai.options.gloo.solo.io.AIPromptGuard_Webhook_HeaderMatch_MatchType" json:"match_type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AIPromptGuard_Webhook_HeaderMatch) Reset() { + *x = AIPromptGuard_Webhook_HeaderMatch{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AIPromptGuard_Webhook_HeaderMatch) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AIPromptGuard_Webhook_HeaderMatch) ProtoMessage() {} + +func (x *AIPromptGuard_Webhook_HeaderMatch) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[38] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AIPromptGuard_Webhook_HeaderMatch.ProtoReflect.Descriptor instead. +func (*AIPromptGuard_Webhook_HeaderMatch) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{9, 1, 0} +} + +func (x *AIPromptGuard_Webhook_HeaderMatch) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *AIPromptGuard_Webhook_HeaderMatch) GetMatchType() AIPromptGuard_Webhook_HeaderMatch_MatchType { + if x != nil { + return x.MatchType + } + return AIPromptGuard_Webhook_HeaderMatch_EXACT +} + +// Configure an OpenAI moderation endpoint. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type AIPromptGuard_Moderation_OpenAI struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The name of the OpenAI moderation model to use. Defaults to + // [`omni-moderation-latest`](https://platform.openai.com/docs/guides/moderation). + Model string `protobuf:"bytes,1,opt,name=model,proto3" json:"model,omitempty"` + // The authorization token that the AI gateway uses + // to access the OpenAI moderation model. + // + // Types that are valid to be assigned to AuthTokenSource: + // + // *AIPromptGuard_Moderation_OpenAI_AuthToken + AuthTokenSource isAIPromptGuard_Moderation_OpenAI_AuthTokenSource `protobuf_oneof:"auth_token_source"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AIPromptGuard_Moderation_OpenAI) Reset() { + *x = AIPromptGuard_Moderation_OpenAI{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AIPromptGuard_Moderation_OpenAI) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AIPromptGuard_Moderation_OpenAI) ProtoMessage() {} + +func (x *AIPromptGuard_Moderation_OpenAI) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[39] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AIPromptGuard_Moderation_OpenAI.ProtoReflect.Descriptor instead. +func (*AIPromptGuard_Moderation_OpenAI) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{9, 2, 0} +} + +func (x *AIPromptGuard_Moderation_OpenAI) GetModel() string { + if x != nil { + return x.Model + } + return "" +} + +func (x *AIPromptGuard_Moderation_OpenAI) GetAuthTokenSource() isAIPromptGuard_Moderation_OpenAI_AuthTokenSource { + if x != nil { + return x.AuthTokenSource + } + return nil +} + +func (x *AIPromptGuard_Moderation_OpenAI) GetAuthToken() *SingleAuthToken { + if x != nil { + if x, ok := x.AuthTokenSource.(*AIPromptGuard_Moderation_OpenAI_AuthToken); ok { + return x.AuthToken + } + } + return nil +} + +type isAIPromptGuard_Moderation_OpenAI_AuthTokenSource interface { + isAIPromptGuard_Moderation_OpenAI_AuthTokenSource() +} + +type AIPromptGuard_Moderation_OpenAI_AuthToken struct { + // The authorization token that the AI gateway uses + // to access the OpenAI moderation model. + AuthToken *SingleAuthToken `protobuf:"bytes,2,opt,name=auth_token,json=authToken,proto3,oneof"` +} + +func (*AIPromptGuard_Moderation_OpenAI_AuthToken) isAIPromptGuard_Moderation_OpenAI_AuthTokenSource() { +} + +// A custom response to return to the client if request content +// is matched against a regex pattern and the action is `REJECT`. +// {{% notice note %}} +// The AI API is supported only in [Gloo Gateway (Kubernetes Gateway API)](https://docs.solo.io/gateway/main/ai/). It is not supported with the Gloo Edge API. +// {{% /notice %}} +type AIPromptGuard_Request_CustomResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // A custom response message to return to the client. If not specified, defaults to + // "The request was rejected due to inappropriate content". + Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` + // The status code to return to the client. + StatusCode uint32 `protobuf:"varint,2,opt,name=status_code,json=statusCode,proto3" json:"status_code,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AIPromptGuard_Request_CustomResponse) Reset() { + *x = AIPromptGuard_Request_CustomResponse{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AIPromptGuard_Request_CustomResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AIPromptGuard_Request_CustomResponse) ProtoMessage() {} + +func (x *AIPromptGuard_Request_CustomResponse) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[40] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AIPromptGuard_Request_CustomResponse.ProtoReflect.Descriptor instead. +func (*AIPromptGuard_Request_CustomResponse) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP(), []int{9, 3, 0} +} + +func (x *AIPromptGuard_Request_CustomResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *AIPromptGuard_Request_CustomResponse) GetStatusCode() uint32 { + if x != nil { + return x.StatusCode + } + return 0 +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDesc = string([]byte{ + 0x0a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x61, 0x69, 0x2f, 0x61, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, + 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, + 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe5, 0x01, 0x0a, 0x0f, 0x53, 0x69, 0x6e, 0x67, + 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x18, 0x0a, 0x06, 0x69, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x69, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, + 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x52, 0x65, 0x66, 0x48, 0x00, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, + 0x66, 0x12, 0x58, 0x0a, 0x0b, 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x2e, 0x50, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x48, 0x00, 0x52, 0x0b, + 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x1a, 0x0d, 0x0a, 0x0b, 0x50, + 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x42, 0x13, 0x0a, 0x11, 0x61, 0x75, + 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, + 0xc9, 0x1e, 0x0a, 0x0c, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, + 0x12, 0x46, 0x0a, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2c, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x49, 0x48, 0x00, + 0x52, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x12, 0x49, 0x0a, 0x07, 0x6d, 0x69, 0x73, 0x74, + 0x72, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x69, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, + 0x2e, 0x4d, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x69, 0x73, 0x74, + 0x72, 0x61, 0x6c, 0x12, 0x4f, 0x0a, 0x09, 0x61, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x41, 0x6e, + 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x48, 0x00, 0x52, 0x09, 0x61, 0x6e, 0x74, 0x68, 0x72, + 0x6f, 0x70, 0x69, 0x63, 0x12, 0x56, 0x0a, 0x0c, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x61, 0x69, 0x2e, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, + 0x63, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x49, 0x48, 0x00, 0x52, + 0x0b, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x4f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x12, 0x47, 0x0a, 0x05, + 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x61, 0x69, + 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, + 0x65, 0x63, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x50, 0x6f, 0x6f, 0x6c, 0x48, 0x00, 0x52, 0x05, + 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x12, 0x46, 0x0a, 0x06, 0x67, 0x65, 0x6d, 0x69, 0x6e, 0x69, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x47, 0x65, 0x6d, + 0x69, 0x6e, 0x69, 0x48, 0x00, 0x52, 0x06, 0x67, 0x65, 0x6d, 0x69, 0x6e, 0x69, 0x12, 0x4d, 0x0a, + 0x09, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x61, 0x69, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2e, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x41, 0x49, + 0x48, 0x00, 0x52, 0x08, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x41, 0x69, 0x12, 0x49, 0x0a, 0x07, + 0x62, 0x65, 0x64, 0x72, 0x6f, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, + 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x53, 0x70, 0x65, 0x63, 0x2e, 0x42, 0x65, 0x64, 0x72, 0x6f, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x07, + 0x62, 0x65, 0x64, 0x72, 0x6f, 0x63, 0x6b, 0x1a, 0x5d, 0x0a, 0x0c, 0x50, 0x61, 0x74, 0x68, 0x4f, + 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x66, 0x75, 0x6c, 0x6c, 0x5f, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x66, 0x75, + 0x6c, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x09, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x70, + 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x62, 0x61, 0x73, + 0x65, 0x50, 0x61, 0x74, 0x68, 0x42, 0x0f, 0x0a, 0x0d, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, + 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x1a, 0xc7, 0x01, 0x0a, 0x0a, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x38, 0x0a, + 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x68, + 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x57, 0x0a, 0x0d, 0x70, 0x61, 0x74, 0x68, 0x5f, + 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, + 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, + 0x64, 0x65, 0x52, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, + 0x1a, 0xba, 0x01, 0x0a, 0x06, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x49, 0x12, 0x47, 0x0a, 0x0a, 0x61, + 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x28, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, + 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x51, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x68, + 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x61, 0x69, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, + 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x0a, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x1a, 0xa6, 0x02, + 0x0a, 0x0b, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x49, 0x12, 0x49, 0x0a, + 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x69, 0x6e, 0x67, + 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x61, + 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, + 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x51, + 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x73, + 0x74, 0x42, 0x13, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0xf2, 0x01, 0x0a, 0x06, 0x47, 0x65, 0x6d, 0x69, 0x6e, + 0x69, 0x12, 0x49, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, + 0x00, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x51, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x68, 0x6f, + 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x2e, + 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x48, 0x6f, 0x73, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x88, 0x04, 0x0a, 0x08, + 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x41, 0x49, 0x12, 0x49, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, + 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, + 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x69, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x70, + 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x50, 0x61, 0x74, 0x68, 0x12, 0x56, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, + 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x56, + 0x65, 0x72, 0x74, 0x65, 0x78, 0x41, 0x49, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, + 0x72, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x0b, + 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x26, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x70, 0x69, 0x4a, + 0x73, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x0a, 0x6a, 0x73, 0x6f, 0x6e, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x51, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, + 0x68, 0x6f, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x61, 0x69, 0x2e, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, + 0x63, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x0a, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x73, 0x74, 0x22, 0x17, 0x0a, 0x09, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x4f, 0x4f, 0x47, 0x4c, 0x45, 0x10, + 0x00, 0x42, 0x13, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0xbb, 0x01, 0x0a, 0x07, 0x4d, 0x69, 0x73, 0x74, 0x72, + 0x61, 0x6c, 0x12, 0x47, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x51, 0x0a, 0x0b, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x30, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, + 0x73, 0x74, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x1a, 0xd7, 0x01, 0x0a, 0x09, 0x41, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, + 0x69, 0x63, 0x12, 0x47, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x51, 0x0a, 0x0b, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x30, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, + 0x73, 0x74, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x1a, 0xf8, + 0x01, 0x0a, 0x07, 0x42, 0x65, 0x64, 0x72, 0x6f, 0x63, 0x6b, 0x12, 0x6c, 0x0a, 0x13, 0x63, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x41, + 0x77, 0x73, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x52, 0x12, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x51, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, + 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x73, 0x74, 0x52, + 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x1a, 0xb3, 0x01, 0x0a, 0x15, 0x41, 0x77, + 0x73, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, + 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, + 0x65, 0x66, 0x48, 0x00, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, + 0x49, 0x0a, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2f, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, + 0x48, 0x00, 0x52, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x61, 0x75, + 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, + 0x80, 0x01, 0x0a, 0x09, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x22, 0x0a, + 0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x49, + 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x23, 0x0a, + 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x1a, 0xef, 0x05, 0x0a, 0x09, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x50, 0x6f, 0x6f, 0x6c, + 0x12, 0x58, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, + 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x75, 0x6c, 0x74, + 0x69, 0x50, 0x6f, 0x6f, 0x6c, 0x2e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x0a, + 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x1a, 0xae, 0x04, 0x0a, 0x07, 0x42, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x46, 0x0a, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x69, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x41, 0x49, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x12, 0x49, + 0x0a, 0x07, 0x6d, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x48, 0x00, + 0x52, 0x07, 0x6d, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x12, 0x4f, 0x0a, 0x09, 0x61, 0x6e, 0x74, + 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x61, + 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, + 0x70, 0x65, 0x63, 0x2e, 0x41, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x48, 0x00, 0x52, + 0x09, 0x61, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x56, 0x0a, 0x0c, 0x61, 0x7a, + 0x75, 0x72, 0x65, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x31, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x4f, 0x70, 0x65, + 0x6e, 0x41, 0x49, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x4f, 0x70, 0x65, 0x6e, + 0x61, 0x69, 0x12, 0x46, 0x0a, 0x06, 0x67, 0x65, 0x6d, 0x69, 0x6e, 0x69, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x47, 0x65, 0x6d, 0x69, 0x6e, 0x69, + 0x48, 0x00, 0x52, 0x06, 0x67, 0x65, 0x6d, 0x69, 0x6e, 0x69, 0x12, 0x4d, 0x0a, 0x09, 0x76, 0x65, + 0x72, 0x74, 0x65, 0x78, 0x5f, 0x61, 0x69, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, + 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x53, 0x70, 0x65, 0x63, 0x2e, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x41, 0x49, 0x48, 0x00, 0x52, + 0x08, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x41, 0x69, 0x12, 0x49, 0x0a, 0x07, 0x62, 0x65, 0x64, + 0x72, 0x6f, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x69, 0x2e, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, + 0x63, 0x2e, 0x42, 0x65, 0x64, 0x72, 0x6f, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x07, 0x62, 0x65, 0x64, + 0x72, 0x6f, 0x63, 0x6b, 0x42, 0x05, 0x0a, 0x03, 0x6c, 0x6c, 0x6d, 0x1a, 0x57, 0x0a, 0x08, 0x50, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x4b, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x50, 0x6f, 0x6f, 0x6c, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x52, 0x04, + 0x70, 0x6f, 0x6f, 0x6c, 0x42, 0x05, 0x0a, 0x03, 0x6c, 0x6c, 0x6d, 0x22, 0xf2, 0x03, 0x0a, 0x0d, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x58, 0x0a, + 0x11, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x41, 0x49, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x45, 0x6e, 0x72, 0x69, 0x63, + 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x45, 0x6e, 0x72, + 0x69, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x6d, 0x70, + 0x74, 0x5f, 0x67, 0x75, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x49, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, + 0x47, 0x75, 0x61, 0x72, 0x64, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x47, 0x75, 0x61, + 0x72, 0x64, 0x12, 0x2e, 0x0a, 0x03, 0x72, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x41, 0x47, 0x52, 0x03, 0x72, + 0x61, 0x67, 0x12, 0x4d, 0x0a, 0x0e, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x5f, 0x63, + 0x61, 0x63, 0x68, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x69, 0x2e, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x43, 0x61, 0x63, + 0x68, 0x65, 0x52, 0x0d, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x43, 0x61, 0x63, 0x68, + 0x65, 0x12, 0x41, 0x0a, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x08, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x72, 0x6f, 0x75, 0x74, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x29, 0x0a, 0x09, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x48, 0x41, 0x54, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, + 0x43, 0x48, 0x41, 0x54, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x49, 0x4e, 0x47, 0x10, 0x01, + 0x22, 0x6e, 0x0a, 0x0c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, + 0x22, 0x60, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x11, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, + 0x6d, 0x65, 0x22, 0xf2, 0x03, 0x0a, 0x09, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, + 0x12, 0x43, 0x0a, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x29, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, + 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x49, 0x48, 0x00, 0x52, 0x06, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x69, 0x12, 0x53, 0x0a, 0x0c, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x69, + 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x2e, + 0x41, 0x7a, 0x75, 0x72, 0x65, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x49, 0x48, 0x00, 0x52, 0x0b, 0x61, + 0x7a, 0x75, 0x72, 0x65, 0x4f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x1a, 0x68, 0x0a, 0x06, 0x4f, 0x70, + 0x65, 0x6e, 0x41, 0x49, 0x12, 0x49, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, + 0x13, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x1a, 0xd3, 0x01, 0x0a, 0x0b, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x4f, 0x70, + 0x65, 0x6e, 0x41, 0x49, 0x12, 0x49, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, + 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x65, 0x6d, + 0x62, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x22, 0xcf, 0x05, 0x0a, 0x0d, 0x53, 0x65, 0x6d, 0x61, + 0x6e, 0x74, 0x69, 0x63, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x4e, 0x0a, 0x09, 0x64, 0x61, 0x74, + 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x61, + 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x09, + 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x40, 0x0a, 0x09, 0x65, 0x6d, 0x62, + 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, + 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, + 0x52, 0x09, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x74, + 0x74, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, 0x3f, 0x0a, + 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x69, + 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x2d, + 0x0a, 0x12, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, + 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x64, 0x69, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x1a, 0x5d, 0x0a, + 0x05, 0x52, 0x65, 0x64, 0x69, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0e, 0x73, 0x63, + 0x6f, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x1a, 0x74, 0x0a, 0x08, + 0x57, 0x65, 0x61, 0x76, 0x69, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, + 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x08, 0x68, 0x74, 0x74, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x72, 0x70, + 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x72, + 0x70, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x65, 0x1a, 0xad, 0x01, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, + 0x12, 0x44, 0x0a, 0x05, 0x72, 0x65, 0x64, 0x69, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2c, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x6d, 0x61, 0x6e, 0x74, + 0x69, 0x63, 0x43, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x73, 0x48, 0x00, 0x52, + 0x05, 0x72, 0x65, 0x64, 0x69, 0x73, 0x12, 0x4d, 0x0a, 0x08, 0x77, 0x65, 0x61, 0x76, 0x69, 0x61, + 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x43, 0x61, 0x63, 0x68, 0x65, + 0x2e, 0x57, 0x65, 0x61, 0x76, 0x69, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x08, 0x77, 0x65, 0x61, + 0x76, 0x69, 0x61, 0x74, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x22, 0x25, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x45, + 0x41, 0x44, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, + 0x41, 0x44, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x22, 0x91, 0x02, 0x0a, 0x03, 0x52, 0x41, + 0x47, 0x12, 0x44, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, + 0x41, 0x47, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x09, 0x64, 0x61, + 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x40, 0x0a, 0x09, 0x65, 0x6d, 0x62, 0x65, 0x64, + 0x64, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x69, 0x2e, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x09, + 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x6f, + 0x6d, 0x70, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x1a, 0x59, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, + 0x3f, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6f, 0x73, 0x74, + 0x67, 0x72, 0x65, 0x73, 0x48, 0x00, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, + 0x42, 0x0b, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, 0xe9, 0x01, + 0x0a, 0x12, 0x41, 0x49, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x45, 0x6e, 0x72, 0x69, 0x63, 0x68, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x41, 0x49, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x45, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x6d, 0x65, + 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x70, 0x72, 0x65, 0x70, + 0x65, 0x6e, 0x64, 0x12, 0x4b, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x49, + 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x45, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, + 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, + 0x1a, 0x37, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, + 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0xd6, 0x0d, 0x0a, 0x0d, 0x41, 0x49, + 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x47, 0x75, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, + 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x49, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x47, + 0x75, 0x61, 0x72, 0x64, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x41, 0x49, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x47, 0x75, 0x61, 0x72, 0x64, 0x2e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x1a, 0x97, 0x03, 0x0a, 0x05, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x51, 0x0a, 0x07, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, + 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x49, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, + 0x47, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x2e, 0x52, 0x65, 0x67, 0x65, + 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, + 0x50, 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0e, 0x32, 0x34, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x49, 0x50, 0x72, + 0x6f, 0x6d, 0x70, 0x74, 0x47, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x2e, + 0x42, 0x75, 0x69, 0x6c, 0x74, 0x49, 0x6e, 0x52, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, + 0x73, 0x12, 0x4b, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x33, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x49, 0x50, 0x72, + 0x6f, 0x6d, 0x70, 0x74, 0x47, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x2e, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x3a, + 0x0a, 0x0a, 0x52, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x40, 0x0a, 0x07, 0x42, 0x75, + 0x69, 0x6c, 0x74, 0x49, 0x6e, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x53, 0x4e, 0x10, 0x00, 0x12, 0x0f, + 0x0a, 0x0b, 0x43, 0x52, 0x45, 0x44, 0x49, 0x54, 0x5f, 0x43, 0x41, 0x52, 0x44, 0x10, 0x01, 0x12, + 0x10, 0x0a, 0x0c, 0x50, 0x48, 0x4f, 0x4e, 0x45, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, + 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0x10, 0x03, 0x22, 0x1e, 0x0a, 0x06, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x41, 0x53, 0x4b, 0x10, 0x00, + 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x01, 0x1a, 0xe5, 0x02, 0x0a, + 0x07, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, + 0x12, 0x62, 0x0a, 0x0e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x41, 0x49, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x47, 0x75, 0x61, 0x72, 0x64, + 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x0e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x1a, 0xcd, 0x01, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x63, 0x0a, 0x0a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x44, 0x2e, 0x61, 0x69, 0x2e, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x49, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x47, 0x75, 0x61, + 0x72, 0x64, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x09, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x22, 0x47, 0x0a, 0x09, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x58, 0x41, 0x43, + 0x54, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x10, 0x01, 0x12, + 0x0a, 0x0a, 0x06, 0x53, 0x55, 0x46, 0x46, 0x49, 0x58, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x43, + 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x53, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x45, 0x47, + 0x45, 0x58, 0x10, 0x04, 0x1a, 0xee, 0x01, 0x0a, 0x0a, 0x4d, 0x6f, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x49, + 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x47, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x4d, 0x6f, 0x64, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x49, 0x48, 0x00, 0x52, + 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x1a, 0x7e, 0x0a, 0x06, 0x4f, 0x70, 0x65, 0x6e, 0x41, + 0x49, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x49, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x69, + 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x9f, 0x03, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x66, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x61, 0x69, 0x2e, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x49, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x47, 0x75, 0x61, + 0x72, 0x64, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x05, 0x72, 0x65, 0x67, + 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x41, 0x49, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x47, 0x75, 0x61, 0x72, 0x64, + 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x48, 0x0a, + 0x07, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, + 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x49, 0x50, 0x72, 0x6f, 0x6d, 0x70, + 0x74, 0x47, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x07, + 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x51, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x61, 0x69, + 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x49, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x47, 0x75, + 0x61, 0x72, 0x64, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, + 0x6d, 0x6f, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x4b, 0x0a, 0x0e, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x1a, 0x98, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x69, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x49, + 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x47, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x52, 0x65, 0x67, 0x65, + 0x78, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x48, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x69, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x49, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x47, 0x75, 0x61, 0x72, + 0x64, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x07, 0x77, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x2a, 0x43, 0x0a, 0x0d, 0x41, 0x70, 0x69, 0x4a, 0x73, 0x6f, 0x6e, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x00, + 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x4e, 0x54, 0x48, 0x52, 0x4f, 0x50, 0x49, 0x43, 0x10, 0x01, 0x12, + 0x0a, 0x0a, 0x06, 0x47, 0x45, 0x4d, 0x49, 0x4e, 0x49, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x4f, + 0x50, 0x45, 0x4e, 0x41, 0x49, 0x10, 0x03, 0x42, 0x58, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, + 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, + 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_enumTypes = make([]protoimpl.EnumInfo, 7) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes = make([]protoimpl.MessageInfo, 41) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_goTypes = []any{ + (ApiJsonSchema)(0), // 0: ai.options.gloo.solo.io.ApiJsonSchema + (UpstreamSpec_VertexAI_Publisher)(0), // 1: ai.options.gloo.solo.io.UpstreamSpec.VertexAI.Publisher + (RouteSettings_RouteType)(0), // 2: ai.options.gloo.solo.io.RouteSettings.RouteType + (SemanticCache_Mode)(0), // 3: ai.options.gloo.solo.io.SemanticCache.Mode + (AIPromptGuard_Regex_BuiltIn)(0), // 4: ai.options.gloo.solo.io.AIPromptGuard.Regex.BuiltIn + (AIPromptGuard_Regex_Action)(0), // 5: ai.options.gloo.solo.io.AIPromptGuard.Regex.Action + (AIPromptGuard_Webhook_HeaderMatch_MatchType)(0), // 6: ai.options.gloo.solo.io.AIPromptGuard.Webhook.HeaderMatch.MatchType + (*SingleAuthToken)(nil), // 7: ai.options.gloo.solo.io.SingleAuthToken + (*UpstreamSpec)(nil), // 8: ai.options.gloo.solo.io.UpstreamSpec + (*RouteSettings)(nil), // 9: ai.options.gloo.solo.io.RouteSettings + (*FieldDefault)(nil), // 10: ai.options.gloo.solo.io.FieldDefault + (*Postgres)(nil), // 11: ai.options.gloo.solo.io.Postgres + (*Embedding)(nil), // 12: ai.options.gloo.solo.io.Embedding + (*SemanticCache)(nil), // 13: ai.options.gloo.solo.io.SemanticCache + (*RAG)(nil), // 14: ai.options.gloo.solo.io.RAG + (*AIPromptEnrichment)(nil), // 15: ai.options.gloo.solo.io.AIPromptEnrichment + (*AIPromptGuard)(nil), // 16: ai.options.gloo.solo.io.AIPromptGuard + (*SingleAuthToken_Passthrough)(nil), // 17: ai.options.gloo.solo.io.SingleAuthToken.Passthrough + (*UpstreamSpec_PathOverride)(nil), // 18: ai.options.gloo.solo.io.UpstreamSpec.PathOverride + (*UpstreamSpec_CustomHost)(nil), // 19: ai.options.gloo.solo.io.UpstreamSpec.CustomHost + (*UpstreamSpec_OpenAI)(nil), // 20: ai.options.gloo.solo.io.UpstreamSpec.OpenAI + (*UpstreamSpec_AzureOpenAI)(nil), // 21: ai.options.gloo.solo.io.UpstreamSpec.AzureOpenAI + (*UpstreamSpec_Gemini)(nil), // 22: ai.options.gloo.solo.io.UpstreamSpec.Gemini + (*UpstreamSpec_VertexAI)(nil), // 23: ai.options.gloo.solo.io.UpstreamSpec.VertexAI + (*UpstreamSpec_Mistral)(nil), // 24: ai.options.gloo.solo.io.UpstreamSpec.Mistral + (*UpstreamSpec_Anthropic)(nil), // 25: ai.options.gloo.solo.io.UpstreamSpec.Anthropic + (*UpstreamSpec_Bedrock)(nil), // 26: ai.options.gloo.solo.io.UpstreamSpec.Bedrock + (*UpstreamSpec_AwsCredentialProvider)(nil), // 27: ai.options.gloo.solo.io.UpstreamSpec.AwsCredentialProvider + (*UpstreamSpec_AWSInline)(nil), // 28: ai.options.gloo.solo.io.UpstreamSpec.AWSInline + (*UpstreamSpec_MultiPool)(nil), // 29: ai.options.gloo.solo.io.UpstreamSpec.MultiPool + (*UpstreamSpec_MultiPool_Backend)(nil), // 30: ai.options.gloo.solo.io.UpstreamSpec.MultiPool.Backend + (*UpstreamSpec_MultiPool_Priority)(nil), // 31: ai.options.gloo.solo.io.UpstreamSpec.MultiPool.Priority + (*Embedding_OpenAI)(nil), // 32: ai.options.gloo.solo.io.Embedding.OpenAI + (*Embedding_AzureOpenAI)(nil), // 33: ai.options.gloo.solo.io.Embedding.AzureOpenAI + (*SemanticCache_Redis)(nil), // 34: ai.options.gloo.solo.io.SemanticCache.Redis + (*SemanticCache_Weaviate)(nil), // 35: ai.options.gloo.solo.io.SemanticCache.Weaviate + (*SemanticCache_DataStore)(nil), // 36: ai.options.gloo.solo.io.SemanticCache.DataStore + (*RAG_DataStore)(nil), // 37: ai.options.gloo.solo.io.RAG.DataStore + (*AIPromptEnrichment_Message)(nil), // 38: ai.options.gloo.solo.io.AIPromptEnrichment.Message + (*AIPromptGuard_Regex)(nil), // 39: ai.options.gloo.solo.io.AIPromptGuard.Regex + (*AIPromptGuard_Webhook)(nil), // 40: ai.options.gloo.solo.io.AIPromptGuard.Webhook + (*AIPromptGuard_Moderation)(nil), // 41: ai.options.gloo.solo.io.AIPromptGuard.Moderation + (*AIPromptGuard_Request)(nil), // 42: ai.options.gloo.solo.io.AIPromptGuard.Request + (*AIPromptGuard_Response)(nil), // 43: ai.options.gloo.solo.io.AIPromptGuard.Response + (*AIPromptGuard_Regex_RegexMatch)(nil), // 44: ai.options.gloo.solo.io.AIPromptGuard.Regex.RegexMatch + (*AIPromptGuard_Webhook_HeaderMatch)(nil), // 45: ai.options.gloo.solo.io.AIPromptGuard.Webhook.HeaderMatch + (*AIPromptGuard_Moderation_OpenAI)(nil), // 46: ai.options.gloo.solo.io.AIPromptGuard.Moderation.OpenAI + (*AIPromptGuard_Request_CustomResponse)(nil), // 47: ai.options.gloo.solo.io.AIPromptGuard.Request.CustomResponse + (*core.ResourceRef)(nil), // 48: core.solo.io.ResourceRef + (*structpb.Value)(nil), // 49: google.protobuf.Value + (*wrapperspb.StringValue)(nil), // 50: google.protobuf.StringValue +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_depIdxs = []int32{ + 48, // 0: ai.options.gloo.solo.io.SingleAuthToken.secret_ref:type_name -> core.solo.io.ResourceRef + 17, // 1: ai.options.gloo.solo.io.SingleAuthToken.passthrough:type_name -> ai.options.gloo.solo.io.SingleAuthToken.Passthrough + 20, // 2: ai.options.gloo.solo.io.UpstreamSpec.openai:type_name -> ai.options.gloo.solo.io.UpstreamSpec.OpenAI + 24, // 3: ai.options.gloo.solo.io.UpstreamSpec.mistral:type_name -> ai.options.gloo.solo.io.UpstreamSpec.Mistral + 25, // 4: ai.options.gloo.solo.io.UpstreamSpec.anthropic:type_name -> ai.options.gloo.solo.io.UpstreamSpec.Anthropic + 21, // 5: ai.options.gloo.solo.io.UpstreamSpec.azure_openai:type_name -> ai.options.gloo.solo.io.UpstreamSpec.AzureOpenAI + 29, // 6: ai.options.gloo.solo.io.UpstreamSpec.multi:type_name -> ai.options.gloo.solo.io.UpstreamSpec.MultiPool + 22, // 7: ai.options.gloo.solo.io.UpstreamSpec.gemini:type_name -> ai.options.gloo.solo.io.UpstreamSpec.Gemini + 23, // 8: ai.options.gloo.solo.io.UpstreamSpec.vertex_ai:type_name -> ai.options.gloo.solo.io.UpstreamSpec.VertexAI + 26, // 9: ai.options.gloo.solo.io.UpstreamSpec.bedrock:type_name -> ai.options.gloo.solo.io.UpstreamSpec.Bedrock + 15, // 10: ai.options.gloo.solo.io.RouteSettings.prompt_enrichment:type_name -> ai.options.gloo.solo.io.AIPromptEnrichment + 16, // 11: ai.options.gloo.solo.io.RouteSettings.prompt_guard:type_name -> ai.options.gloo.solo.io.AIPromptGuard + 14, // 12: ai.options.gloo.solo.io.RouteSettings.rag:type_name -> ai.options.gloo.solo.io.RAG + 13, // 13: ai.options.gloo.solo.io.RouteSettings.semantic_cache:type_name -> ai.options.gloo.solo.io.SemanticCache + 10, // 14: ai.options.gloo.solo.io.RouteSettings.defaults:type_name -> ai.options.gloo.solo.io.FieldDefault + 2, // 15: ai.options.gloo.solo.io.RouteSettings.route_type:type_name -> ai.options.gloo.solo.io.RouteSettings.RouteType + 49, // 16: ai.options.gloo.solo.io.FieldDefault.value:type_name -> google.protobuf.Value + 32, // 17: ai.options.gloo.solo.io.Embedding.openai:type_name -> ai.options.gloo.solo.io.Embedding.OpenAI + 33, // 18: ai.options.gloo.solo.io.Embedding.azure_openai:type_name -> ai.options.gloo.solo.io.Embedding.AzureOpenAI + 36, // 19: ai.options.gloo.solo.io.SemanticCache.datastore:type_name -> ai.options.gloo.solo.io.SemanticCache.DataStore + 12, // 20: ai.options.gloo.solo.io.SemanticCache.embedding:type_name -> ai.options.gloo.solo.io.Embedding + 3, // 21: ai.options.gloo.solo.io.SemanticCache.mode:type_name -> ai.options.gloo.solo.io.SemanticCache.Mode + 37, // 22: ai.options.gloo.solo.io.RAG.datastore:type_name -> ai.options.gloo.solo.io.RAG.DataStore + 12, // 23: ai.options.gloo.solo.io.RAG.embedding:type_name -> ai.options.gloo.solo.io.Embedding + 38, // 24: ai.options.gloo.solo.io.AIPromptEnrichment.prepend:type_name -> ai.options.gloo.solo.io.AIPromptEnrichment.Message + 38, // 25: ai.options.gloo.solo.io.AIPromptEnrichment.append:type_name -> ai.options.gloo.solo.io.AIPromptEnrichment.Message + 42, // 26: ai.options.gloo.solo.io.AIPromptGuard.request:type_name -> ai.options.gloo.solo.io.AIPromptGuard.Request + 43, // 27: ai.options.gloo.solo.io.AIPromptGuard.response:type_name -> ai.options.gloo.solo.io.AIPromptGuard.Response + 50, // 28: ai.options.gloo.solo.io.UpstreamSpec.CustomHost.hostname:type_name -> google.protobuf.StringValue + 18, // 29: ai.options.gloo.solo.io.UpstreamSpec.CustomHost.path_override:type_name -> ai.options.gloo.solo.io.UpstreamSpec.PathOverride + 7, // 30: ai.options.gloo.solo.io.UpstreamSpec.OpenAI.auth_token:type_name -> ai.options.gloo.solo.io.SingleAuthToken + 19, // 31: ai.options.gloo.solo.io.UpstreamSpec.OpenAI.custom_host:type_name -> ai.options.gloo.solo.io.UpstreamSpec.CustomHost + 7, // 32: ai.options.gloo.solo.io.UpstreamSpec.AzureOpenAI.auth_token:type_name -> ai.options.gloo.solo.io.SingleAuthToken + 19, // 33: ai.options.gloo.solo.io.UpstreamSpec.AzureOpenAI.custom_host:type_name -> ai.options.gloo.solo.io.UpstreamSpec.CustomHost + 7, // 34: ai.options.gloo.solo.io.UpstreamSpec.Gemini.auth_token:type_name -> ai.options.gloo.solo.io.SingleAuthToken + 19, // 35: ai.options.gloo.solo.io.UpstreamSpec.Gemini.custom_host:type_name -> ai.options.gloo.solo.io.UpstreamSpec.CustomHost + 7, // 36: ai.options.gloo.solo.io.UpstreamSpec.VertexAI.auth_token:type_name -> ai.options.gloo.solo.io.SingleAuthToken + 1, // 37: ai.options.gloo.solo.io.UpstreamSpec.VertexAI.publisher:type_name -> ai.options.gloo.solo.io.UpstreamSpec.VertexAI.Publisher + 0, // 38: ai.options.gloo.solo.io.UpstreamSpec.VertexAI.json_schema:type_name -> ai.options.gloo.solo.io.ApiJsonSchema + 19, // 39: ai.options.gloo.solo.io.UpstreamSpec.VertexAI.custom_host:type_name -> ai.options.gloo.solo.io.UpstreamSpec.CustomHost + 7, // 40: ai.options.gloo.solo.io.UpstreamSpec.Mistral.auth_token:type_name -> ai.options.gloo.solo.io.SingleAuthToken + 19, // 41: ai.options.gloo.solo.io.UpstreamSpec.Mistral.custom_host:type_name -> ai.options.gloo.solo.io.UpstreamSpec.CustomHost + 7, // 42: ai.options.gloo.solo.io.UpstreamSpec.Anthropic.auth_token:type_name -> ai.options.gloo.solo.io.SingleAuthToken + 19, // 43: ai.options.gloo.solo.io.UpstreamSpec.Anthropic.custom_host:type_name -> ai.options.gloo.solo.io.UpstreamSpec.CustomHost + 27, // 44: ai.options.gloo.solo.io.UpstreamSpec.Bedrock.credential_provider:type_name -> ai.options.gloo.solo.io.UpstreamSpec.AwsCredentialProvider + 19, // 45: ai.options.gloo.solo.io.UpstreamSpec.Bedrock.custom_host:type_name -> ai.options.gloo.solo.io.UpstreamSpec.CustomHost + 48, // 46: ai.options.gloo.solo.io.UpstreamSpec.AwsCredentialProvider.secret_ref:type_name -> core.solo.io.ResourceRef + 28, // 47: ai.options.gloo.solo.io.UpstreamSpec.AwsCredentialProvider.inline:type_name -> ai.options.gloo.solo.io.UpstreamSpec.AWSInline + 31, // 48: ai.options.gloo.solo.io.UpstreamSpec.MultiPool.priorities:type_name -> ai.options.gloo.solo.io.UpstreamSpec.MultiPool.Priority + 20, // 49: ai.options.gloo.solo.io.UpstreamSpec.MultiPool.Backend.openai:type_name -> ai.options.gloo.solo.io.UpstreamSpec.OpenAI + 24, // 50: ai.options.gloo.solo.io.UpstreamSpec.MultiPool.Backend.mistral:type_name -> ai.options.gloo.solo.io.UpstreamSpec.Mistral + 25, // 51: ai.options.gloo.solo.io.UpstreamSpec.MultiPool.Backend.anthropic:type_name -> ai.options.gloo.solo.io.UpstreamSpec.Anthropic + 21, // 52: ai.options.gloo.solo.io.UpstreamSpec.MultiPool.Backend.azure_openai:type_name -> ai.options.gloo.solo.io.UpstreamSpec.AzureOpenAI + 22, // 53: ai.options.gloo.solo.io.UpstreamSpec.MultiPool.Backend.gemini:type_name -> ai.options.gloo.solo.io.UpstreamSpec.Gemini + 23, // 54: ai.options.gloo.solo.io.UpstreamSpec.MultiPool.Backend.vertex_ai:type_name -> ai.options.gloo.solo.io.UpstreamSpec.VertexAI + 26, // 55: ai.options.gloo.solo.io.UpstreamSpec.MultiPool.Backend.bedrock:type_name -> ai.options.gloo.solo.io.UpstreamSpec.Bedrock + 30, // 56: ai.options.gloo.solo.io.UpstreamSpec.MultiPool.Priority.pool:type_name -> ai.options.gloo.solo.io.UpstreamSpec.MultiPool.Backend + 7, // 57: ai.options.gloo.solo.io.Embedding.OpenAI.auth_token:type_name -> ai.options.gloo.solo.io.SingleAuthToken + 7, // 58: ai.options.gloo.solo.io.Embedding.AzureOpenAI.auth_token:type_name -> ai.options.gloo.solo.io.SingleAuthToken + 34, // 59: ai.options.gloo.solo.io.SemanticCache.DataStore.redis:type_name -> ai.options.gloo.solo.io.SemanticCache.Redis + 35, // 60: ai.options.gloo.solo.io.SemanticCache.DataStore.weaviate:type_name -> ai.options.gloo.solo.io.SemanticCache.Weaviate + 11, // 61: ai.options.gloo.solo.io.RAG.DataStore.postgres:type_name -> ai.options.gloo.solo.io.Postgres + 44, // 62: ai.options.gloo.solo.io.AIPromptGuard.Regex.matches:type_name -> ai.options.gloo.solo.io.AIPromptGuard.Regex.RegexMatch + 4, // 63: ai.options.gloo.solo.io.AIPromptGuard.Regex.builtins:type_name -> ai.options.gloo.solo.io.AIPromptGuard.Regex.BuiltIn + 5, // 64: ai.options.gloo.solo.io.AIPromptGuard.Regex.action:type_name -> ai.options.gloo.solo.io.AIPromptGuard.Regex.Action + 45, // 65: ai.options.gloo.solo.io.AIPromptGuard.Webhook.forwardHeaders:type_name -> ai.options.gloo.solo.io.AIPromptGuard.Webhook.HeaderMatch + 46, // 66: ai.options.gloo.solo.io.AIPromptGuard.Moderation.openai:type_name -> ai.options.gloo.solo.io.AIPromptGuard.Moderation.OpenAI + 47, // 67: ai.options.gloo.solo.io.AIPromptGuard.Request.custom_response:type_name -> ai.options.gloo.solo.io.AIPromptGuard.Request.CustomResponse + 39, // 68: ai.options.gloo.solo.io.AIPromptGuard.Request.regex:type_name -> ai.options.gloo.solo.io.AIPromptGuard.Regex + 40, // 69: ai.options.gloo.solo.io.AIPromptGuard.Request.webhook:type_name -> ai.options.gloo.solo.io.AIPromptGuard.Webhook + 41, // 70: ai.options.gloo.solo.io.AIPromptGuard.Request.moderation:type_name -> ai.options.gloo.solo.io.AIPromptGuard.Moderation + 39, // 71: ai.options.gloo.solo.io.AIPromptGuard.Response.regex:type_name -> ai.options.gloo.solo.io.AIPromptGuard.Regex + 40, // 72: ai.options.gloo.solo.io.AIPromptGuard.Response.webhook:type_name -> ai.options.gloo.solo.io.AIPromptGuard.Webhook + 6, // 73: ai.options.gloo.solo.io.AIPromptGuard.Webhook.HeaderMatch.match_type:type_name -> ai.options.gloo.solo.io.AIPromptGuard.Webhook.HeaderMatch.MatchType + 7, // 74: ai.options.gloo.solo.io.AIPromptGuard.Moderation.OpenAI.auth_token:type_name -> ai.options.gloo.solo.io.SingleAuthToken + 75, // [75:75] is the sub-list for method output_type + 75, // [75:75] is the sub-list for method input_type + 75, // [75:75] is the sub-list for extension type_name + 75, // [75:75] is the sub-list for extension extendee + 0, // [0:75] is the sub-list for field type_name +} + +func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_init() } +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[0].OneofWrappers = []any{ + (*SingleAuthToken_Inline)(nil), + (*SingleAuthToken_SecretRef)(nil), + (*SingleAuthToken_Passthrough_)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[1].OneofWrappers = []any{ + (*UpstreamSpec_Openai)(nil), + (*UpstreamSpec_Mistral_)(nil), + (*UpstreamSpec_Anthropic_)(nil), + (*UpstreamSpec_AzureOpenai)(nil), + (*UpstreamSpec_Multi)(nil), + (*UpstreamSpec_Gemini_)(nil), + (*UpstreamSpec_VertexAi)(nil), + (*UpstreamSpec_Bedrock_)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[5].OneofWrappers = []any{ + (*Embedding_Openai)(nil), + (*Embedding_AzureOpenai)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[11].OneofWrappers = []any{ + (*UpstreamSpec_PathOverride_FullPath)(nil), + (*UpstreamSpec_PathOverride_BasePath)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[14].OneofWrappers = []any{ + (*UpstreamSpec_AzureOpenAI_AuthToken)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[15].OneofWrappers = []any{ + (*UpstreamSpec_Gemini_AuthToken)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[16].OneofWrappers = []any{ + (*UpstreamSpec_VertexAI_AuthToken)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[20].OneofWrappers = []any{ + (*UpstreamSpec_AwsCredentialProvider_SecretRef)(nil), + (*UpstreamSpec_AwsCredentialProvider_Inline)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[23].OneofWrappers = []any{ + (*UpstreamSpec_MultiPool_Backend_Openai)(nil), + (*UpstreamSpec_MultiPool_Backend_Mistral)(nil), + (*UpstreamSpec_MultiPool_Backend_Anthropic)(nil), + (*UpstreamSpec_MultiPool_Backend_AzureOpenai)(nil), + (*UpstreamSpec_MultiPool_Backend_Gemini)(nil), + (*UpstreamSpec_MultiPool_Backend_VertexAi)(nil), + (*UpstreamSpec_MultiPool_Backend_Bedrock)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[25].OneofWrappers = []any{ + (*Embedding_OpenAI_AuthToken)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[26].OneofWrappers = []any{ + (*Embedding_AzureOpenAI_AuthToken)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[29].OneofWrappers = []any{ + (*SemanticCache_DataStore_Redis)(nil), + (*SemanticCache_DataStore_Weaviate)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[30].OneofWrappers = []any{ + (*RAG_DataStore_Postgres)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[34].OneofWrappers = []any{ + (*AIPromptGuard_Moderation_Openai)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes[39].OneofWrappers = []any{ + (*AIPromptGuard_Moderation_OpenAI_AuthToken)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_rawDesc)), + NumEnums: 7, + NumMessages: 41, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_enumTypes, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ai_ai_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/ai/ai.pb.hash.go b/pkg/api/gloo.solo.io/v1/enterprise/options/ai/ai.pb.hash.go new file mode 100644 index 000000000..d23ecda5b --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/ai/ai.pb.hash.go @@ -0,0 +1,2611 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/ai/ai.proto + +package ai + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SingleAuthToken) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.SingleAuthToken")); err != nil { + return 0, err + } + + switch m.AuthTokenSource.(type) { + + case *SingleAuthToken_Inline: + + if _, err = hasher.Write([]byte(m.GetInline())); err != nil { + return 0, err + } + + case *SingleAuthToken_SecretRef: + + if h, ok := interface{}(m.GetSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *SingleAuthToken_Passthrough_: + + if h, ok := interface{}(m.GetPassthrough()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Passthrough")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPassthrough(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Passthrough")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec")); err != nil { + return 0, err + } + + switch m.Llm.(type) { + + case *UpstreamSpec_Openai: + + if h, ok := interface{}(m.GetOpenai()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Openai")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOpenai(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Openai")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_Mistral_: + + if h, ok := interface{}(m.GetMistral()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Mistral")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMistral(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Mistral")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_Anthropic_: + + if h, ok := interface{}(m.GetAnthropic()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Anthropic")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAnthropic(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Anthropic")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_AzureOpenai: + + if h, ok := interface{}(m.GetAzureOpenai()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AzureOpenai")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAzureOpenai(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AzureOpenai")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_Multi: + + if h, ok := interface{}(m.GetMulti()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Multi")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMulti(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Multi")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_Gemini_: + + if h, ok := interface{}(m.GetGemini()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Gemini")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGemini(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Gemini")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_VertexAi: + + if h, ok := interface{}(m.GetVertexAi()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("VertexAi")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetVertexAi(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("VertexAi")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_Bedrock_: + + if h, ok := interface{}(m.GetBedrock()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Bedrock")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBedrock(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Bedrock")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RouteSettings) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.RouteSettings")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPromptEnrichment()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PromptEnrichment")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPromptEnrichment(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PromptEnrichment")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPromptGuard()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PromptGuard")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPromptGuard(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PromptGuard")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRag()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Rag")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRag(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Rag")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetSemanticCache()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SemanticCache")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSemanticCache(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SemanticCache")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetDefaults() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetRouteType()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *FieldDefault) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.FieldDefault")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetField())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValue(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetOverride()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Postgres) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.Postgres")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetConnectionString())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetCollectionName())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Embedding) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.Embedding")); err != nil { + return 0, err + } + + switch m.Embedding.(type) { + + case *Embedding_Openai: + + if h, ok := interface{}(m.GetOpenai()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Openai")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOpenai(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Openai")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Embedding_AzureOpenai: + + if h, ok := interface{}(m.GetAzureOpenai()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AzureOpenai")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAzureOpenai(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AzureOpenai")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SemanticCache) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.SemanticCache")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDatastore()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Datastore")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDatastore(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Datastore")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEmbedding()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Embedding")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEmbedding(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Embedding")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetTtl()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetMode()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetDistanceThreshold()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RAG) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.RAG")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDatastore()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Datastore")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDatastore(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Datastore")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEmbedding()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Embedding")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEmbedding(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Embedding")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetPromptTemplate())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AIPromptEnrichment) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptEnrichment")); err != nil { + return 0, err + } + + for _, v := range m.GetPrepend() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + for _, v := range m.GetAppend() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AIPromptGuard) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptGuard")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRequest()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Request")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequest(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Request")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetResponse()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Response")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponse(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Response")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SingleAuthToken_Passthrough) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.SingleAuthToken_Passthrough")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UpstreamSpec_PathOverride) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_PathOverride")); err != nil { + return 0, err + } + + switch m.OverrideType.(type) { + + case *UpstreamSpec_PathOverride_FullPath: + + if _, err = hasher.Write([]byte(m.GetFullPath())); err != nil { + return 0, err + } + + case *UpstreamSpec_PathOverride_BasePath: + + if _, err = hasher.Write([]byte(m.GetBasePath())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UpstreamSpec_CustomHost) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_CustomHost")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetHost())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetPort()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHostname()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Hostname")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHostname(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Hostname")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPathOverride()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PathOverride")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPathOverride(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PathOverride")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UpstreamSpec_OpenAI) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_OpenAI")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAuthToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuthToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCustomHost()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCustomHost(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetModel())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UpstreamSpec_AzureOpenAI) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_AzureOpenAI")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetEndpoint())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetDeploymentName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetApiVersion())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCustomHost()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCustomHost(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.AuthTokenSource.(type) { + + case *UpstreamSpec_AzureOpenAI_AuthToken: + + if h, ok := interface{}(m.GetAuthToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuthToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UpstreamSpec_Gemini) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_Gemini")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetModel())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetApiVersion())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCustomHost()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCustomHost(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.AuthTokenSource.(type) { + + case *UpstreamSpec_Gemini_AuthToken: + + if h, ok := interface{}(m.GetAuthToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuthToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UpstreamSpec_VertexAI) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_VertexAI")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetModel())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetApiVersion())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetProjectId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetLocation())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetModelPath())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetPublisher()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetJsonSchema()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCustomHost()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCustomHost(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.AuthTokenSource.(type) { + + case *UpstreamSpec_VertexAI_AuthToken: + + if h, ok := interface{}(m.GetAuthToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuthToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UpstreamSpec_Mistral) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_Mistral")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAuthToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuthToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCustomHost()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCustomHost(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetModel())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UpstreamSpec_Anthropic) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_Anthropic")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAuthToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuthToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCustomHost()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCustomHost(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetVersion())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetModel())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UpstreamSpec_Bedrock) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_Bedrock")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCredentialProvider()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CredentialProvider")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCredentialProvider(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CredentialProvider")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCustomHost()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCustomHost(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetModel())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetRegion())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UpstreamSpec_AwsCredentialProvider) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_AwsCredentialProvider")); err != nil { + return 0, err + } + + switch m.AuthTokenSource.(type) { + + case *UpstreamSpec_AwsCredentialProvider_SecretRef: + + if h, ok := interface{}(m.GetSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_AwsCredentialProvider_Inline: + + if h, ok := interface{}(m.GetInline()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Inline")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInline(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Inline")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UpstreamSpec_AWSInline) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_AWSInline")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetAccessKeyId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetSecretAccessKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetSessionToken())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UpstreamSpec_MultiPool) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_MultiPool")); err != nil { + return 0, err + } + + for _, v := range m.GetPriorities() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UpstreamSpec_MultiPool_Backend) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_MultiPool_Backend")); err != nil { + return 0, err + } + + switch m.Llm.(type) { + + case *UpstreamSpec_MultiPool_Backend_Openai: + + if h, ok := interface{}(m.GetOpenai()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Openai")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOpenai(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Openai")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_MultiPool_Backend_Mistral: + + if h, ok := interface{}(m.GetMistral()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Mistral")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMistral(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Mistral")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_MultiPool_Backend_Anthropic: + + if h, ok := interface{}(m.GetAnthropic()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Anthropic")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAnthropic(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Anthropic")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_MultiPool_Backend_AzureOpenai: + + if h, ok := interface{}(m.GetAzureOpenai()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AzureOpenai")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAzureOpenai(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AzureOpenai")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_MultiPool_Backend_Gemini: + + if h, ok := interface{}(m.GetGemini()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Gemini")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGemini(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Gemini")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_MultiPool_Backend_VertexAi: + + if h, ok := interface{}(m.GetVertexAi()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("VertexAi")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetVertexAi(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("VertexAi")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_MultiPool_Backend_Bedrock: + + if h, ok := interface{}(m.GetBedrock()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Bedrock")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBedrock(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Bedrock")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UpstreamSpec_MultiPool_Priority) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_MultiPool_Priority")); err != nil { + return 0, err + } + + for _, v := range m.GetPool() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Embedding_OpenAI) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.Embedding_OpenAI")); err != nil { + return 0, err + } + + switch m.AuthTokenSource.(type) { + + case *Embedding_OpenAI_AuthToken: + + if h, ok := interface{}(m.GetAuthToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuthToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Embedding_AzureOpenAI) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.Embedding_AzureOpenAI")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetApiVersion())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetEndpoint())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetDeploymentName())); err != nil { + return 0, err + } + + switch m.AuthTokenSource.(type) { + + case *Embedding_AzureOpenAI_AuthToken: + + if h, ok := interface{}(m.GetAuthToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuthToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SemanticCache_Redis) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.SemanticCache_Redis")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetConnectionString())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetScoreThreshold()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SemanticCache_Weaviate) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.SemanticCache_Weaviate")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetHost())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetHttpPort()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetGrpcPort()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetInsecure()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SemanticCache_DataStore) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.SemanticCache_DataStore")); err != nil { + return 0, err + } + + switch m.Datastore.(type) { + + case *SemanticCache_DataStore_Redis: + + if h, ok := interface{}(m.GetRedis()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Redis")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRedis(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Redis")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *SemanticCache_DataStore_Weaviate: + + if h, ok := interface{}(m.GetWeaviate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Weaviate")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWeaviate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Weaviate")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RAG_DataStore) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.RAG_DataStore")); err != nil { + return 0, err + } + + switch m.Datastore.(type) { + + case *RAG_DataStore_Postgres: + + if h, ok := interface{}(m.GetPostgres()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Postgres")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPostgres(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Postgres")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AIPromptEnrichment_Message) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptEnrichment_Message")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetRole())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetContent())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AIPromptGuard_Regex) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptGuard_Regex")); err != nil { + return 0, err + } + + for _, v := range m.GetMatches() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + for _, v := range m.GetBuiltins() { + + err = binary.Write(hasher, binary.LittleEndian, v) + if err != nil { + return 0, err + } + + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetAction()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AIPromptGuard_Webhook) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptGuard_Webhook")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetHost())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetPort()) + if err != nil { + return 0, err + } + + for _, v := range m.GetForwardHeaders() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AIPromptGuard_Moderation) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptGuard_Moderation")); err != nil { + return 0, err + } + + switch m.Moderation.(type) { + + case *AIPromptGuard_Moderation_Openai: + + if h, ok := interface{}(m.GetOpenai()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Openai")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOpenai(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Openai")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AIPromptGuard_Request) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptGuard_Request")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCustomResponse()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomResponse")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCustomResponse(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CustomResponse")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRegex()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Regex")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRegex(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Regex")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetWebhook()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Webhook")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWebhook(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Webhook")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetModeration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Moderation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetModeration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Moderation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AIPromptGuard_Response) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptGuard_Response")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRegex()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Regex")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRegex(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Regex")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetWebhook()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Webhook")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWebhook(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Webhook")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AIPromptGuard_Regex_RegexMatch) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptGuard_Regex_RegexMatch")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetPattern())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AIPromptGuard_Webhook_HeaderMatch) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptGuard_Webhook_HeaderMatch")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetMatchType()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AIPromptGuard_Moderation_OpenAI) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptGuard_Moderation_OpenAI")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetModel())); err != nil { + return 0, err + } + + switch m.AuthTokenSource.(type) { + + case *AIPromptGuard_Moderation_OpenAI_AuthToken: + + if h, ok := interface{}(m.GetAuthToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuthToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AIPromptGuard_Request_CustomResponse) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptGuard_Request_CustomResponse")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetMessage())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetStatusCode()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/ai/ai.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/enterprise/options/ai/ai.pb.uniquehash.go new file mode 100644 index 000000000..6edb88cb7 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/ai/ai.pb.uniquehash.go @@ -0,0 +1,2791 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/ai/ai.proto + +package ai + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SingleAuthToken) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.SingleAuthToken")); err != nil { + return 0, err + } + + switch m.AuthTokenSource.(type) { + + case *SingleAuthToken_Inline: + + if _, err = hasher.Write([]byte("Inline")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetInline())); err != nil { + return 0, err + } + + case *SingleAuthToken_SecretRef: + + if h, ok := interface{}(m.GetSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *SingleAuthToken_Passthrough_: + + if h, ok := interface{}(m.GetPassthrough()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Passthrough")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPassthrough(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Passthrough")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec")); err != nil { + return 0, err + } + + switch m.Llm.(type) { + + case *UpstreamSpec_Openai: + + if h, ok := interface{}(m.GetOpenai()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Openai")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOpenai(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Openai")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_Mistral_: + + if h, ok := interface{}(m.GetMistral()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Mistral")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMistral(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Mistral")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_Anthropic_: + + if h, ok := interface{}(m.GetAnthropic()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Anthropic")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAnthropic(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Anthropic")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_AzureOpenai: + + if h, ok := interface{}(m.GetAzureOpenai()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AzureOpenai")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAzureOpenai(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AzureOpenai")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_Multi: + + if h, ok := interface{}(m.GetMulti()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Multi")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMulti(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Multi")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_Gemini_: + + if h, ok := interface{}(m.GetGemini()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Gemini")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGemini(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Gemini")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_VertexAi: + + if h, ok := interface{}(m.GetVertexAi()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("VertexAi")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetVertexAi(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("VertexAi")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_Bedrock_: + + if h, ok := interface{}(m.GetBedrock()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Bedrock")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBedrock(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Bedrock")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteSettings) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.RouteSettings")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPromptEnrichment()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PromptEnrichment")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPromptEnrichment(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PromptEnrichment")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPromptGuard()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PromptGuard")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPromptGuard(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PromptGuard")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRag()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Rag")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRag(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Rag")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetSemanticCache()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SemanticCache")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSemanticCache(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SemanticCache")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Defaults")); err != nil { + return 0, err + } + for i, v := range m.GetDefaults() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("RouteType")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRouteType()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FieldDefault) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.FieldDefault")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Field")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetField())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValue(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Override")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetOverride()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Postgres) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.Postgres")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ConnectionString")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetConnectionString())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CollectionName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCollectionName())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Embedding) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.Embedding")); err != nil { + return 0, err + } + + switch m.Embedding.(type) { + + case *Embedding_Openai: + + if h, ok := interface{}(m.GetOpenai()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Openai")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOpenai(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Openai")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Embedding_AzureOpenai: + + if h, ok := interface{}(m.GetAzureOpenai()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AzureOpenai")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAzureOpenai(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AzureOpenai")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SemanticCache) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.SemanticCache")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDatastore()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Datastore")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDatastore(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Datastore")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEmbedding()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Embedding")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEmbedding(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Embedding")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Ttl")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetTtl()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Mode")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMode()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DistanceThreshold")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDistanceThreshold()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RAG) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.RAG")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDatastore()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Datastore")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDatastore(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Datastore")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEmbedding()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Embedding")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEmbedding(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Embedding")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("PromptTemplate")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPromptTemplate())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AIPromptEnrichment) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptEnrichment")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Prepend")); err != nil { + return 0, err + } + for i, v := range m.GetPrepend() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("Append")); err != nil { + return 0, err + } + for i, v := range m.GetAppend() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AIPromptGuard) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptGuard")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRequest()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Request")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequest(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Request")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetResponse()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Response")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponse(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Response")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SingleAuthToken_Passthrough) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.SingleAuthToken_Passthrough")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec_PathOverride) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_PathOverride")); err != nil { + return 0, err + } + + switch m.OverrideType.(type) { + + case *UpstreamSpec_PathOverride_FullPath: + + if _, err = hasher.Write([]byte("FullPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetFullPath())); err != nil { + return 0, err + } + + case *UpstreamSpec_PathOverride_BasePath: + + if _, err = hasher.Write([]byte("BasePath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetBasePath())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec_CustomHost) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_CustomHost")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Host")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHost())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Port")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPort()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHostname()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Hostname")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHostname(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Hostname")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPathOverride()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PathOverride")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPathOverride(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PathOverride")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec_OpenAI) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_OpenAI")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAuthToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuthToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCustomHost()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCustomHost(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Model")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetModel())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec_AzureOpenAI) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_AzureOpenAI")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Endpoint")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetEndpoint())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DeploymentName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDeploymentName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ApiVersion")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetApiVersion())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCustomHost()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCustomHost(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.AuthTokenSource.(type) { + + case *UpstreamSpec_AzureOpenAI_AuthToken: + + if h, ok := interface{}(m.GetAuthToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuthToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec_Gemini) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_Gemini")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Model")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetModel())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ApiVersion")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetApiVersion())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCustomHost()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCustomHost(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.AuthTokenSource.(type) { + + case *UpstreamSpec_Gemini_AuthToken: + + if h, ok := interface{}(m.GetAuthToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuthToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec_VertexAI) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_VertexAI")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Model")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetModel())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ApiVersion")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetApiVersion())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ProjectId")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetProjectId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Location")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetLocation())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ModelPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetModelPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Publisher")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPublisher()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("JsonSchema")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetJsonSchema()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCustomHost()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCustomHost(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.AuthTokenSource.(type) { + + case *UpstreamSpec_VertexAI_AuthToken: + + if h, ok := interface{}(m.GetAuthToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuthToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec_Mistral) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_Mistral")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAuthToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuthToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCustomHost()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCustomHost(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Model")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetModel())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec_Anthropic) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_Anthropic")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAuthToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuthToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCustomHost()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCustomHost(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Version")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetVersion())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Model")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetModel())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec_Bedrock) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_Bedrock")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCredentialProvider()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CredentialProvider")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCredentialProvider(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CredentialProvider")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCustomHost()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCustomHost(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CustomHost")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Model")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetModel())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Region")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRegion())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec_AwsCredentialProvider) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_AwsCredentialProvider")); err != nil { + return 0, err + } + + switch m.AuthTokenSource.(type) { + + case *UpstreamSpec_AwsCredentialProvider_SecretRef: + + if h, ok := interface{}(m.GetSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_AwsCredentialProvider_Inline: + + if h, ok := interface{}(m.GetInline()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Inline")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInline(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Inline")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec_AWSInline) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_AWSInline")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AccessKeyId")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAccessKeyId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SecretAccessKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSecretAccessKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SessionToken")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSessionToken())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec_MultiPool) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_MultiPool")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Priorities")); err != nil { + return 0, err + } + for i, v := range m.GetPriorities() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec_MultiPool_Backend) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_MultiPool_Backend")); err != nil { + return 0, err + } + + switch m.Llm.(type) { + + case *UpstreamSpec_MultiPool_Backend_Openai: + + if h, ok := interface{}(m.GetOpenai()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Openai")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOpenai(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Openai")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_MultiPool_Backend_Mistral: + + if h, ok := interface{}(m.GetMistral()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Mistral")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMistral(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Mistral")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_MultiPool_Backend_Anthropic: + + if h, ok := interface{}(m.GetAnthropic()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Anthropic")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAnthropic(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Anthropic")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_MultiPool_Backend_AzureOpenai: + + if h, ok := interface{}(m.GetAzureOpenai()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AzureOpenai")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAzureOpenai(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AzureOpenai")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_MultiPool_Backend_Gemini: + + if h, ok := interface{}(m.GetGemini()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Gemini")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGemini(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Gemini")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_MultiPool_Backend_VertexAi: + + if h, ok := interface{}(m.GetVertexAi()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("VertexAi")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetVertexAi(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("VertexAi")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_MultiPool_Backend_Bedrock: + + if h, ok := interface{}(m.GetBedrock()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Bedrock")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBedrock(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Bedrock")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec_MultiPool_Priority) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.UpstreamSpec_MultiPool_Priority")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Pool")); err != nil { + return 0, err + } + for i, v := range m.GetPool() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Embedding_OpenAI) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.Embedding_OpenAI")); err != nil { + return 0, err + } + + switch m.AuthTokenSource.(type) { + + case *Embedding_OpenAI_AuthToken: + + if h, ok := interface{}(m.GetAuthToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuthToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Embedding_AzureOpenAI) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.Embedding_AzureOpenAI")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ApiVersion")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetApiVersion())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Endpoint")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetEndpoint())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DeploymentName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDeploymentName())); err != nil { + return 0, err + } + + switch m.AuthTokenSource.(type) { + + case *Embedding_AzureOpenAI_AuthToken: + + if h, ok := interface{}(m.GetAuthToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuthToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SemanticCache_Redis) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.SemanticCache_Redis")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ConnectionString")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetConnectionString())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ScoreThreshold")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetScoreThreshold()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SemanticCache_Weaviate) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.SemanticCache_Weaviate")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Host")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHost())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("HttpPort")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetHttpPort()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("GrpcPort")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetGrpcPort()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Insecure")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetInsecure()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SemanticCache_DataStore) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.SemanticCache_DataStore")); err != nil { + return 0, err + } + + switch m.Datastore.(type) { + + case *SemanticCache_DataStore_Redis: + + if h, ok := interface{}(m.GetRedis()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Redis")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRedis(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Redis")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *SemanticCache_DataStore_Weaviate: + + if h, ok := interface{}(m.GetWeaviate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Weaviate")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWeaviate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Weaviate")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RAG_DataStore) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.RAG_DataStore")); err != nil { + return 0, err + } + + switch m.Datastore.(type) { + + case *RAG_DataStore_Postgres: + + if h, ok := interface{}(m.GetPostgres()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Postgres")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPostgres(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Postgres")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AIPromptEnrichment_Message) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptEnrichment_Message")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Role")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRole())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Content")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetContent())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AIPromptGuard_Regex) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptGuard_Regex")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Matches")); err != nil { + return 0, err + } + for i, v := range m.GetMatches() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("Builtins")); err != nil { + return 0, err + } + for i, v := range m.GetBuiltins() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, v) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("Action")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAction()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AIPromptGuard_Webhook) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptGuard_Webhook")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Host")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHost())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Port")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPort()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ForwardHeaders")); err != nil { + return 0, err + } + for i, v := range m.GetForwardHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AIPromptGuard_Moderation) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptGuard_Moderation")); err != nil { + return 0, err + } + + switch m.Moderation.(type) { + + case *AIPromptGuard_Moderation_Openai: + + if h, ok := interface{}(m.GetOpenai()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Openai")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOpenai(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Openai")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AIPromptGuard_Request) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptGuard_Request")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCustomResponse()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomResponse")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCustomResponse(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CustomResponse")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRegex()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Regex")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRegex(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Regex")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetWebhook()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Webhook")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWebhook(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Webhook")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetModeration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Moderation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetModeration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Moderation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AIPromptGuard_Response) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptGuard_Response")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRegex()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Regex")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRegex(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Regex")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetWebhook()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Webhook")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWebhook(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Webhook")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AIPromptGuard_Regex_RegexMatch) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptGuard_Regex_RegexMatch")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Pattern")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPattern())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AIPromptGuard_Webhook_HeaderMatch) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptGuard_Webhook_HeaderMatch")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MatchType")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMatchType()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AIPromptGuard_Moderation_OpenAI) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptGuard_Moderation_OpenAI")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Model")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetModel())); err != nil { + return 0, err + } + + switch m.AuthTokenSource.(type) { + + case *AIPromptGuard_Moderation_OpenAI_AuthToken: + + if h, ok := interface{}(m.GetAuthToken()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuthToken(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuthToken")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AIPromptGuard_Request_CustomResponse) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ai.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai.AIPromptGuard_Request_CustomResponse")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Message")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetMessage())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("StatusCode")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetStatusCode()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/caching/caching.pb.clone.go b/pkg/api/gloo.solo.io/v1/enterprise/options/caching/caching.pb.clone.go new file mode 100644 index 000000000..3b9d9ed48 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/caching/caching.pb.clone.go @@ -0,0 +1,76 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/caching/caching.proto + +package caching + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *Settings) Clone() proto.Message { + var target *Settings + if m == nil { + return target + } + target = &Settings{} + + if h, ok := interface{}(m.GetCachingServiceRef()).(clone.Cloner); ok { + target.CachingServiceRef = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.CachingServiceRef = proto.Clone(m.GetCachingServiceRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + if m.GetAllowedVaryHeaders() != nil { + target.AllowedVaryHeaders = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.StringMatcher, len(m.GetAllowedVaryHeaders())) + for idx, v := range m.GetAllowedVaryHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.AllowedVaryHeaders[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.StringMatcher) + } else { + target.AllowedVaryHeaders[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.StringMatcher) + } + + } + } + + if h, ok := interface{}(m.GetTimeout()).(clone.Cloner); ok { + target.Timeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.Timeout = proto.Clone(m.GetTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetMaxPayloadSize()).(clone.Cloner); ok { + target.MaxPayloadSize = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxPayloadSize = proto.Clone(m.GetMaxPayloadSize()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/caching/caching.pb.equal.go b/pkg/api/gloo.solo.io/v1/enterprise/options/caching/caching.pb.equal.go new file mode 100644 index 000000000..01048b292 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/caching/caching.pb.equal.go @@ -0,0 +1,97 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/caching/caching.proto + +package caching + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *Settings) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Settings) + if !ok { + that2, ok := that.(Settings) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetCachingServiceRef()).(equality.Equalizer); ok { + if !h.Equal(target.GetCachingServiceRef()) { + return false + } + } else { + if !proto.Equal(m.GetCachingServiceRef(), target.GetCachingServiceRef()) { + return false + } + } + + if len(m.GetAllowedVaryHeaders()) != len(target.GetAllowedVaryHeaders()) { + return false + } + for idx, v := range m.GetAllowedVaryHeaders() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetAllowedVaryHeaders()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetAllowedVaryHeaders()[idx]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetTimeout()).(equality.Equalizer); ok { + if !h.Equal(target.GetTimeout()) { + return false + } + } else { + if !proto.Equal(m.GetTimeout(), target.GetTimeout()) { + return false + } + } + + if h, ok := interface{}(m.GetMaxPayloadSize()).(equality.Equalizer); ok { + if !h.Equal(target.GetMaxPayloadSize()) { + return false + } + } else { + if !proto.Equal(m.GetMaxPayloadSize(), target.GetMaxPayloadSize()) { + return false + } + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/caching/caching.pb.go b/pkg/api/gloo.solo.io/v1/enterprise/options/caching/caching.pb.go new file mode 100644 index 000000000..dc8d89932 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/caching/caching.pb.go @@ -0,0 +1,213 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/caching/caching.proto + +package caching + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3" + core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type Settings struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The basic reference for the service. Details name and namespace. + CachingServiceRef *core.ResourceRef `protobuf:"bytes,1,opt,name=caching_service_ref,json=cachingServiceRef,proto3" json:"caching_service_ref,omitempty"` + // A list of string matchers that state what headers are allowed to vary + // and still be cached. Per upstream envoy allowed vary headers. + AllowedVaryHeaders []*v3.StringMatcher `protobuf:"bytes,2,rep,name=allowed_vary_headers,json=allowedVaryHeaders,proto3" json:"allowed_vary_headers,omitempty"` + // Connection timeout for retrieval from an sync cache + Timeout *durationpb.Duration `protobuf:"bytes,3,opt,name=timeout,proto3" json:"timeout,omitempty"` + // Max payload size to cache. If unset defaults to a reasonable value. + // If explicitly set to 0 will prevent anything with a body from + // being cached. + MaxPayloadSize *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=max_payload_size,json=maxPayloadSize,proto3" json:"max_payload_size,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Settings) Reset() { + *x = Settings{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Settings) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Settings) ProtoMessage() {} + +func (x *Settings) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Settings.ProtoReflect.Descriptor instead. +func (*Settings) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_rawDescGZIP(), []int{0} +} + +func (x *Settings) GetCachingServiceRef() *core.ResourceRef { + if x != nil { + return x.CachingServiceRef + } + return nil +} + +func (x *Settings) GetAllowedVaryHeaders() []*v3.StringMatcher { + if x != nil { + return x.AllowedVaryHeaders + } + return nil +} + +func (x *Settings) GetTimeout() *durationpb.Duration { + if x != nil { + return x.Timeout + } + return nil +} + +func (x *Settings) GetMaxPayloadSize() *wrapperspb.UInt32Value { + if x != nil { + return x.MaxPayloadSize + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_rawDesc = string([]byte{ + 0x0a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x63, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x67, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2f, 0x76, + 0x33, 0x2f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, + 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, + 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0xb2, 0x02, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x49, 0x0a, + 0x13, 0x63, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x11, 0x63, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x66, 0x12, 0x5e, 0x0a, 0x14, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x72, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x72, 0x52, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x56, 0x61, 0x72, + 0x79, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x46, 0x0a, + 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x5d, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, + 0xf5, 0x04, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_goTypes = []any{ + (*Settings)(nil), // 0: caching.options.gloo.solo.io.Settings + (*core.ResourceRef)(nil), // 1: core.solo.io.ResourceRef + (*v3.StringMatcher)(nil), // 2: solo.io.envoy.type.matcher.v3.StringMatcher + (*durationpb.Duration)(nil), // 3: google.protobuf.Duration + (*wrapperspb.UInt32Value)(nil), // 4: google.protobuf.UInt32Value +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_depIdxs = []int32{ + 1, // 0: caching.options.gloo.solo.io.Settings.caching_service_ref:type_name -> core.solo.io.ResourceRef + 2, // 1: caching.options.gloo.solo.io.Settings.allowed_vary_headers:type_name -> solo.io.envoy.type.matcher.v3.StringMatcher + 3, // 2: caching.options.gloo.solo.io.Settings.timeout:type_name -> google.protobuf.Duration + 4, // 3: caching.options.gloo.solo.io.Settings.max_payload_size:type_name -> google.protobuf.UInt32Value + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_caching_caching_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/caching/caching.pb.hash.go b/pkg/api/gloo.solo.io/v1/enterprise/options/caching/caching.pb.hash.go new file mode 100644 index 000000000..56b2cc65c --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/caching/caching.pb.hash.go @@ -0,0 +1,130 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/caching/caching.proto + +package caching + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Settings) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("caching.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/caching.Settings")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCachingServiceRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CachingServiceRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCachingServiceRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CachingServiceRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetAllowedVaryHeaders() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxPayloadSize()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxPayloadSize")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxPayloadSize(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxPayloadSize")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/caching/caching.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/enterprise/options/caching/caching.pb.uniquehash.go new file mode 100644 index 000000000..95b85a8f4 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/caching/caching.pb.uniquehash.go @@ -0,0 +1,137 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/caching/caching.proto + +package caching + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Settings) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("caching.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/caching.Settings")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCachingServiceRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CachingServiceRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCachingServiceRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CachingServiceRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("AllowedVaryHeaders")); err != nil { + return 0, err + } + for i, v := range m.GetAllowedVaryHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxPayloadSize()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxPayloadSize")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxPayloadSize(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxPayloadSize")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/dlp/dlp.pb.clone.go b/pkg/api/gloo.solo.io/v1/enterprise/options/dlp/dlp.pb.clone.go new file mode 100644 index 000000000..c72fe0143 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/dlp/dlp.pb.clone.go @@ -0,0 +1,207 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/dlp/dlp.proto + +package dlp + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_transformation_ee "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation_ee" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_core_matchers "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/core/matchers" + + github_com_solo_io_solo_kit_pkg_api_external_envoy_type "github.com/solo-io/solo-kit/pkg/api/external/envoy/type" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *FilterConfig) Clone() proto.Message { + var target *FilterConfig + if m == nil { + return target + } + target = &FilterConfig{} + + if m.GetDlpRules() != nil { + target.DlpRules = make([]*DlpRule, len(m.GetDlpRules())) + for idx, v := range m.GetDlpRules() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.DlpRules[idx] = h.Clone().(*DlpRule) + } else { + target.DlpRules[idx] = proto.Clone(v).(*DlpRule) + } + + } + } + + target.EnabledFor = m.GetEnabledFor() + + return target +} + +// Clone function +func (m *DlpRule) Clone() proto.Message { + var target *DlpRule + if m == nil { + return target + } + target = &DlpRule{} + + if h, ok := interface{}(m.GetMatcher()).(clone.Cloner); ok { + target.Matcher = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_core_matchers.Matcher) + } else { + target.Matcher = proto.Clone(m.GetMatcher()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_core_matchers.Matcher) + } + + if m.GetActions() != nil { + target.Actions = make([]*Action, len(m.GetActions())) + for idx, v := range m.GetActions() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Actions[idx] = h.Clone().(*Action) + } else { + target.Actions[idx] = proto.Clone(v).(*Action) + } + + } + } + + return target +} + +// Clone function +func (m *Config) Clone() proto.Message { + var target *Config + if m == nil { + return target + } + target = &Config{} + + if m.GetActions() != nil { + target.Actions = make([]*Action, len(m.GetActions())) + for idx, v := range m.GetActions() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Actions[idx] = h.Clone().(*Action) + } else { + target.Actions[idx] = proto.Clone(v).(*Action) + } + + } + } + + target.EnabledFor = m.GetEnabledFor() + + return target +} + +// Clone function +func (m *Action) Clone() proto.Message { + var target *Action + if m == nil { + return target + } + target = &Action{} + + target.ActionType = m.GetActionType() + + if h, ok := interface{}(m.GetCustomAction()).(clone.Cloner); ok { + target.CustomAction = h.Clone().(*CustomAction) + } else { + target.CustomAction = proto.Clone(m.GetCustomAction()).(*CustomAction) + } + + if h, ok := interface{}(m.GetKeyValueAction()).(clone.Cloner); ok { + target.KeyValueAction = h.Clone().(*KeyValueAction) + } else { + target.KeyValueAction = proto.Clone(m.GetKeyValueAction()).(*KeyValueAction) + } + + target.Shadow = m.GetShadow() + + return target +} + +// Clone function +func (m *CustomAction) Clone() proto.Message { + var target *CustomAction + if m == nil { + return target + } + target = &CustomAction{} + + target.Name = m.GetName() + + if m.GetRegex() != nil { + target.Regex = make([]string, len(m.GetRegex())) + for idx, v := range m.GetRegex() { + + target.Regex[idx] = v + + } + } + + target.MaskChar = m.GetMaskChar() + + if h, ok := interface{}(m.GetPercent()).(clone.Cloner); ok { + target.Percent = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_type.Percent) + } else { + target.Percent = proto.Clone(m.GetPercent()).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_type.Percent) + } + + if m.GetRegexActions() != nil { + target.RegexActions = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_transformation_ee.RegexAction, len(m.GetRegexActions())) + for idx, v := range m.GetRegexActions() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RegexActions[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_transformation_ee.RegexAction) + } else { + target.RegexActions[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_transformation_ee.RegexAction) + } + + } + } + + return target +} + +// Clone function +func (m *KeyValueAction) Clone() proto.Message { + var target *KeyValueAction + if m == nil { + return target + } + target = &KeyValueAction{} + + target.Name = m.GetName() + + target.MaskChar = m.GetMaskChar() + + if h, ok := interface{}(m.GetPercent()).(clone.Cloner); ok { + target.Percent = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_type.Percent) + } else { + target.Percent = proto.Clone(m.GetPercent()).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_type.Percent) + } + + target.KeyToMask = m.GetKeyToMask() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/dlp/dlp.pb.equal.go b/pkg/api/gloo.solo.io/v1/enterprise/options/dlp/dlp.pb.equal.go index a94b040d0..de61997fc 100644 --- a/pkg/api/gloo.solo.io/v1/enterprise/options/dlp/dlp.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/dlp/dlp.pb.equal.go @@ -201,6 +201,16 @@ func (m *Action) Equal(that interface{}) bool { } } + if h, ok := interface{}(m.GetKeyValueAction()).(equality.Equalizer); ok { + if !h.Equal(target.GetKeyValueAction()) { + return false + } + } else { + if !proto.Equal(m.GetKeyValueAction(), target.GetKeyValueAction()) { + return false + } + } + if m.GetShadow() != target.GetShadow() { return false } @@ -258,5 +268,68 @@ func (m *CustomAction) Equal(that interface{}) bool { } } + if len(m.GetRegexActions()) != len(target.GetRegexActions()) { + return false + } + for idx, v := range m.GetRegexActions() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetRegexActions()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetRegexActions()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *KeyValueAction) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*KeyValueAction) + if !ok { + that2, ok := that.(KeyValueAction) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetName(), target.GetName()) != 0 { + return false + } + + if strings.Compare(m.GetMaskChar(), target.GetMaskChar()) != 0 { + return false + } + + if h, ok := interface{}(m.GetPercent()).(equality.Equalizer); ok { + if !h.Equal(target.GetPercent()) { + return false + } + } else { + if !proto.Equal(m.GetPercent(), target.GetPercent()) { + return false + } + } + + if strings.Compare(m.GetKeyToMask(), target.GetKeyToMask()) != 0 { + return false + } + return true } diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/dlp/dlp.pb.go b/pkg/api/gloo.solo.io/v1/enterprise/options/dlp/dlp.pb.go index 868819ab4..54ad34953 100644 --- a/pkg/api/gloo.solo.io/v1/enterprise/options/dlp/dlp.pb.go +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/dlp/dlp.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/dlp/dlp.proto @@ -9,9 +9,11 @@ package dlp import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" + _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/solo-io/protoc-gen-ext/extproto" + transformation_ee "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation_ee" matchers "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/core/matchers" _type "github.com/solo-io/solo-kit/pkg/api/external/envoy/type" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -25,10 +27,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type FilterConfig_EnableFor int32 const ( @@ -133,82 +131,89 @@ func (Config_EnableFor) EnumDescriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_rawDescGZIP(), []int{2, 0} } +// The following pre-made action types map to subgroup 1 of the listed regex patterns: // -//The following pre-made action types map to the following regex matchers: -// -//SSN: -//- '(?!\D)[0-9]{9}(?=\D|$)' -//- '(?!\D)[0-9]{3}\-[0-9]{2}\-[0-9]{4}(?=\D|$)' -//- '(?!\D)[0-9]{3}\ [0-9]{2}\ [0-9]{4}(?=\D|$)' +// SSN: +// - '(?:^|\D)([0-9]{9})(?:\D|$)' +// - '(?:^|\D)([0-9]{3}\-[0-9]{2}\-[0-9]{4})(?:\D|$)' +// - '(?:^|\D)([0-9]{3}\ [0-9]{2}\ [0-9]{4})(?:\D|$)' // -//MASTERCARD: -//- '(?!\D)5[1-5][0-9]{2}(\ |\-|)[0-9]{4}(\ |\-|)[0-9]{4}(\ |\-|)[0-9]{4}(?=\D|$)' +// MASTERCARD: +// - '(?:^|\D)(5[1-5][0-9]{2}(?:\ |\-|)[0-9]{4}(?:\ |\-|)[0-9]{4}(?:\ |\-|)[0-9]{4})(?:\D|$)' // -//VISA: -//- '(?!\D)4[0-9]{3}(\ |\-|)[0-9]{4}(\ |\-|)[0-9]{4}(\ |\-|)[0-9]{4}(?=\D|$)' +// VISA: +// - '(?:^|\D)(4[0-9]{3}(?:\ |\-|)[0-9]{4}(?:\ |\-|)[0-9]{4}(?:\ |\-|)[0-9]{4})(?:\D|$)' // -//AMEX: -//- '(?!\D)(34|37)[0-9]{2}(\ |\-|)[0-9]{6}(\ |\-|)[0-9]{5}(?=\D|$)' +// AMEX: +// - '(?:^|\D)((?:34|37)[0-9]{2}(?:\ |\-|)[0-9]{6}(?:\ |\-|)[0-9]{5})(?:\D|$)' // -//DISCOVER: -//- '(?!\D)6011(\ |\-|)[0-9]{4}(\ |\-|)[0-9]{4}(\ |\-|)[0-9]{4}(?=\D|$)' +// DISCOVER: +// - '(?:^|\D)(6011(?:\ |\-|)[0-9]{4}(?:\ |\-|)[0-9]{4}(?:\ |\-|)[0-9]{4})(?:\D|$)' // -//JCB: -//- '(?!\D)3[0-9]{3}(\ |\-|)[0-9]{4}(\ |\-|)[0-9]{4}(\ |\-|)[0-9]{4}(?=\D|$)' -//- '(?!\D)(2131|1800)[0-9]{11}(?=\D|$)' +// JCB: +// - '(?:^|\D)(3[0-9]{3}(?:\ |\-|)[0-9]{4}(?:\ |\-|)[0-9]{4}(?:\ |\-|)[0-9]{4})(?:\D|$)' +// - '(?:^|\D)((?:2131|1800)[0-9]{11})(?:\D|$)' // -//DINERS_CLUB: -//- '(?!\D)30[0-5][0-9](\ |\-|)[0-9]{6}(\ |\-|)[0-9]{4}(?=\D|$)' -//- '(?!\D)(36|38)[0-9]{2}(\ |\-|)[0-9]{6}(\ |\-|)[0-9]{4}(?=\D|$)' +// DINERS_CLUB: +// - '(?:^|\D)(30[0-5][0-9](?:\ |\-|)[0-9]{6}(?:\ |\-|)[0-9]{4})(?:\D|$)' +// - '(?:^|\D)((?:36|38)[0-9]{2}(?:\ |\-|)[0-9]{6}(?:\ |\-|)[0-9]{4})(?:\D|$)' // -//CREDIT_CARD_TRACKERS: -//- '[1-9][0-9]{2}\-[0-9]{2}\-[0-9]{4}\^\d' -//- '(?!\D)\%?[Bb]\d{13,19}\^[\-\/\.\w\s]{2,26}\^[0-9][0-9][01][0-9][0-9]{3}' -//- '(?!\D)\;\d{13,19}\=(\d{3}|)(\d{4}|\=)' +// CREDIT_CARD_TRACKERS: +// - '([1-9][0-9]{2}\-[0-9]{2}\-[0-9]{4}\^\d)' +// - '(?:^|\D)(\%?[Bb]\d{13,19}\^[\-\/\.\w\s]{2,26}\^[0-9][0-9][01][0-9][0-9]{3})' +// - '(?:^|\D)(\;\d{13,19}\=(?:\d{3}|)(?:\d{4}|\=))' // -//ALL_CREDIT_CARDS: -//- (All credit card related regexes from above) +// ALL_CREDIT_CARDS: +// - (All credit card related regexes from above) // +// ALL_CREDIT_CARDS_COMBINED: +// - Same as ALL_CREDIT_CARDS but using a single action instead of multiple which should be marginally faster type Action_ActionType int32 const ( - Action_CUSTOM Action_ActionType = 0 - Action_SSN Action_ActionType = 1 - Action_MASTERCARD Action_ActionType = 2 - Action_VISA Action_ActionType = 3 - Action_AMEX Action_ActionType = 4 - Action_DISCOVER Action_ActionType = 5 - Action_JCB Action_ActionType = 6 - Action_DINERS_CLUB Action_ActionType = 7 - Action_CREDIT_CARD_TRACKERS Action_ActionType = 8 - Action_ALL_CREDIT_CARDS Action_ActionType = 9 + Action_CUSTOM Action_ActionType = 0 + Action_SSN Action_ActionType = 1 + Action_MASTERCARD Action_ActionType = 2 + Action_VISA Action_ActionType = 3 + Action_AMEX Action_ActionType = 4 + Action_DISCOVER Action_ActionType = 5 + Action_JCB Action_ActionType = 6 + Action_DINERS_CLUB Action_ActionType = 7 + Action_CREDIT_CARD_TRACKERS Action_ActionType = 8 + Action_ALL_CREDIT_CARDS Action_ActionType = 9 + Action_KEYVALUE Action_ActionType = 10 + Action_ALL_CREDIT_CARDS_COMBINED Action_ActionType = 11 ) // Enum value maps for Action_ActionType. var ( Action_ActionType_name = map[int32]string{ - 0: "CUSTOM", - 1: "SSN", - 2: "MASTERCARD", - 3: "VISA", - 4: "AMEX", - 5: "DISCOVER", - 6: "JCB", - 7: "DINERS_CLUB", - 8: "CREDIT_CARD_TRACKERS", - 9: "ALL_CREDIT_CARDS", + 0: "CUSTOM", + 1: "SSN", + 2: "MASTERCARD", + 3: "VISA", + 4: "AMEX", + 5: "DISCOVER", + 6: "JCB", + 7: "DINERS_CLUB", + 8: "CREDIT_CARD_TRACKERS", + 9: "ALL_CREDIT_CARDS", + 10: "KEYVALUE", + 11: "ALL_CREDIT_CARDS_COMBINED", } Action_ActionType_value = map[string]int32{ - "CUSTOM": 0, - "SSN": 1, - "MASTERCARD": 2, - "VISA": 3, - "AMEX": 4, - "DISCOVER": 5, - "JCB": 6, - "DINERS_CLUB": 7, - "CREDIT_CARD_TRACKERS": 8, - "ALL_CREDIT_CARDS": 9, + "CUSTOM": 0, + "SSN": 1, + "MASTERCARD": 2, + "VISA": 3, + "AMEX": 4, + "DISCOVER": 5, + "JCB": 6, + "DINERS_CLUB": 7, + "CREDIT_CARD_TRACKERS": 8, + "ALL_CREDIT_CARDS": 9, + "KEYVALUE": 10, + "ALL_CREDIT_CARDS_COMBINED": 11, } ) @@ -241,25 +246,22 @@ func (Action_ActionType) EnumDescriptor() ([]byte, []int) { // Listener level config for dlp filter type FilterConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The list of transformation, matcher pairs. // The first rule which matches will be applied. DlpRules []*DlpRule `protobuf:"bytes,1,rep,name=dlp_rules,json=dlpRules,proto3" json:"dlp_rules,omitempty"` // Whether responses, access logs, or both should be masked by the applied actions. // If not defined, masking will only be enabled for responses bodies. - EnabledFor FilterConfig_EnableFor `protobuf:"varint,2,opt,name=enabled_for,json=enabledFor,proto3,enum=dlp.options.gloo.solo.io.FilterConfig_EnableFor" json:"enabled_for,omitempty"` + EnabledFor FilterConfig_EnableFor `protobuf:"varint,2,opt,name=enabled_for,json=enabledFor,proto3,enum=dlp.options.gloo.solo.io.FilterConfig_EnableFor" json:"enabled_for,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FilterConfig) Reset() { *x = FilterConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FilterConfig) String() string { @@ -270,7 +272,7 @@ func (*FilterConfig) ProtoMessage() {} func (x *FilterConfig) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -302,25 +304,22 @@ func (x *FilterConfig) GetEnabledFor() FilterConfig_EnableFor { // Rule which applies a given set of actions to a matching route. // The route matching functions exactly the same as the envoy routes in the virtual host. type DlpRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Matcher by which to determine if the given transformation should be applied // if omitted, will it match all (i.e., default to / prefix matcher) Matcher *matchers.Matcher `protobuf:"bytes,1,opt,name=matcher,proto3" json:"matcher,omitempty"` // List of data loss prevention actions to be applied. // These actions will be applied in order, one at a time. - Actions []*Action `protobuf:"bytes,2,rep,name=actions,proto3" json:"actions,omitempty"` + Actions []*Action `protobuf:"bytes,2,rep,name=actions,proto3" json:"actions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DlpRule) Reset() { *x = DlpRule{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DlpRule) String() string { @@ -331,7 +330,7 @@ func (*DlpRule) ProtoMessage() {} func (x *DlpRule) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -360,31 +359,27 @@ func (x *DlpRule) GetActions() []*Action { return nil } +// Route/Vhost level config for dlp filter // -//Route/Vhost level config for dlp filter -// -//If a config is present on the route or vhost level it will completely overwrite the -//listener level config. +// If a config is present on the route or vhost level it will completely overwrite the +// listener level config. type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // List of data loss prevention actions to be applied. // These actions will be applied in order, one at a time. Actions []*Action `protobuf:"bytes,1,rep,name=actions,proto3" json:"actions,omitempty"` // Whether responses, access logs, or both should be masked by the applied actions. // If not defined, masking will only be enabled for responses bodies. - EnabledFor Config_EnableFor `protobuf:"varint,2,opt,name=enabled_for,json=enabledFor,proto3,enum=dlp.options.gloo.solo.io.Config_EnableFor" json:"enabled_for,omitempty"` + EnabledFor Config_EnableFor `protobuf:"varint,2,opt,name=enabled_for,json=enabledFor,proto3,enum=dlp.options.gloo.solo.io.Config_EnableFor" json:"enabled_for,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Config) Reset() { *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Config) String() string { @@ -395,7 +390,7 @@ func (*Config) ProtoMessage() {} func (x *Config) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -424,54 +419,52 @@ func (x *Config) GetEnabledFor() Config_EnableFor { return Config_RESPONSE_BODY } +// A single action meant to mask sensitive data. +// The action type represents a set of pre configured actions, +// as well as the ability to create custom actions. +// These actions can also be shadowed, a shadowed action will be recorded +// in the statistics, and debug logs, but not actually committed in the response body. // -//A single action meant to mask sensitive data. -//The action type represents a set of pre configured actions, -//as well as the ability to create custom actions. -//These actions can also be shadowed, a shadowed action will be recorded -//in the statistics, and debug logs, but not actually committed in the response body. -// -//To use a pre-made action simply set the action type to anything other than `CUSTOM` +// To use a pre-made action simply set the action type to anything other than `CUSTOM` // -//``` yaml -//actionType: VISA -//``` -// -//To create a custom action set the custom action field. The default enum value -//is custom, so that can be left empty. -// -//``` yaml -//customAction: -//name: test -//regex: -//- "hello" -//- "world" -//maskChar: Y -//percent: 60 -//``` +// ``` yaml +// actionType: VISA +// ``` // +// To create a custom action set the custom action field. The default enum value +// is custom, so that can be left empty. // +// ``` yaml +// customAction: +// name: test +// regex: +// - "hello" +// - "world" +// maskChar: Y +// percent: 60 +// ``` type Action struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The action type to implement. ActionType Action_ActionType `protobuf:"varint,1,opt,name=action_type,json=actionType,proto3,enum=dlp.options.gloo.solo.io.Action_ActionType" json:"action_type,omitempty"` // The custom user action to be applied. // This field will only be used if the custom action type is specified above. CustomAction *CustomAction `protobuf:"bytes,2,opt,name=custom_action,json=customAction,proto3" json:"custom_action,omitempty"` + // The key/value action to be applied. + // This field will only be used if the KEYVALUE action type is specified above + // will only affect access logs and response headers, not response bodies + KeyValueAction *KeyValueAction `protobuf:"bytes,4,opt,name=key_value_action,json=keyValueAction,proto3" json:"key_value_action,omitempty"` // Shadow represents whether the action should be taken, or just recorded. - Shadow bool `protobuf:"varint,3,opt,name=shadow,proto3" json:"shadow,omitempty"` + Shadow bool `protobuf:"varint,3,opt,name=shadow,proto3" json:"shadow,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Action) Reset() { *x = Action{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Action) String() string { @@ -482,7 +475,7 @@ func (*Action) ProtoMessage() {} func (x *Action) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -511,6 +504,13 @@ func (x *Action) GetCustomAction() *CustomAction { return nil } +func (x *Action) GetKeyValueAction() *KeyValueAction { + if x != nil { + return x.KeyValueAction + } + return nil +} + func (x *Action) GetShadow() bool { if x != nil { return x.Shadow @@ -518,38 +518,35 @@ func (x *Action) GetShadow() bool { return false } +// A user defined custom action to carry out on the response body. // -//A user defined custom action to carry out on the response body. -// -//The list of regex strings are applied in order. So for instance, if there is a response body with the content: -//`hello world` +// The list of regex strings are applied in order. So for instance, if there is a response body with the content: +// `hello world` // -//And there is a custom action -//``` yaml -//customAction: -//name: test -//regex: -//- "hello" -//- "world" -//maskChar: Y -//percent: 60 -//``` +// And there is a custom action +// ``` yaml +// customAction: +// name: test +// regex: +// - "hello" +// - "world" +// maskChar: Y +// percent: 60 +// ``` // -//the result would be: -//`YYYlo YYYld` -// -//If the mask_char, and percent were left to default, the result would be: -//`XXXXo XXXXd` +// the result would be: +// `YYYlo YYYld` // +// If the mask_char, and percent were left to default, the result would be: +// `XXXXo XXXXd` type CustomAction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the custom action. // This name is used for logging and debugging purposes. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // The list of regex strings which will be applied in order. + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/dlp/dlp.proto. Regex []string `protobuf:"bytes,2,rep,name=regex,proto3" json:"regex,omitempty"` // The masking character for the sensitive data. // default value: X @@ -558,15 +555,20 @@ type CustomAction struct { // default value: 75% // rounds ratio (percent/100) by std::round http://www.cplusplus.com/reference/cmath/round/ Percent *_type.Percent `protobuf:"bytes,4,opt,name=percent,proto3" json:"percent,omitempty"` + // List of regexes to apply to the response body to match data which should be + // masked. They will be applied iteratively in the order which they are + // specified. If this field and `regex` are both provided, all the regexes will + // be applied iteratively in the order provided, starting with the ones from `regex` + RegexActions []*transformation_ee.RegexAction `protobuf:"bytes,5,rep,name=regex_actions,json=regexActions,proto3" json:"regex_actions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CustomAction) Reset() { *x = CustomAction{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CustomAction) String() string { @@ -577,7 +579,7 @@ func (*CustomAction) ProtoMessage() {} func (x *CustomAction) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -599,6 +601,7 @@ func (x *CustomAction) GetName() string { return "" } +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/dlp/dlp.proto. func (x *CustomAction) GetRegex() []string { if x != nil { return x.Regex @@ -620,141 +623,263 @@ func (x *CustomAction) GetPercent() *_type.Percent { return nil } +func (x *CustomAction) GetRegexActions() []*transformation_ee.RegexAction { + if x != nil { + return x.RegexActions + } + return nil +} + +type KeyValueAction struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The name of the key/value action. + // This name is used for logging and debugging purposes. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // The masking character for the sensitive data. + // default value: X + MaskChar string `protobuf:"bytes,2,opt,name=mask_char,json=maskChar,proto3" json:"mask_char,omitempty"` + // The percent of the string which will be masked by the mask_char + // default value: 75% + // rounds ratio (percent/100) by std::round http://www.cplusplus.com/reference/cmath/round/ + Percent *_type.Percent `protobuf:"bytes,3,opt,name=percent,proto3" json:"percent,omitempty"` + // The key for which corresponding header names/dynamic metadata values should be censored + // Must be specified + KeyToMask string `protobuf:"bytes,4,opt,name=key_to_mask,json=keyToMask,proto3" json:"key_to_mask,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *KeyValueAction) Reset() { + *x = KeyValueAction{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *KeyValueAction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*KeyValueAction) ProtoMessage() {} + +func (x *KeyValueAction) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use KeyValueAction.ProtoReflect.Descriptor instead. +func (*KeyValueAction) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_rawDescGZIP(), []int{5} +} + +func (x *KeyValueAction) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *KeyValueAction) GetMaskChar() string { + if x != nil { + return x.MaskChar + } + return "" +} + +func (x *KeyValueAction) GetPercent() *_type.Percent { + if x != nil { + return x.Percent + } + return nil +} + +func (x *KeyValueAction) GetKeyToMask() string { + if x != nil { + return x.KeyToMask + } + return "" +} + var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_rawDesc = string([]byte{ 0x0a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x64, 0x6c, 0x70, 0x2f, 0x64, 0x6c, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x64, 0x6c, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x4a, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, - 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x70, 0x65, 0x72, 0x63, - 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdb, 0x01, - 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3e, - 0x0a, 0x09, 0x64, 0x6c, 0x70, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x6c, 0x70, - 0x52, 0x75, 0x6c, 0x65, 0x52, 0x08, 0x64, 0x6c, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x51, - 0x0a, 0x0b, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x52, 0x0a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x46, 0x6f, - 0x72, 0x22, 0x38, 0x0a, 0x09, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x12, 0x11, - 0x0a, 0x0d, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x5f, 0x42, 0x4f, 0x44, 0x59, 0x10, - 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, - 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x22, 0x84, 0x01, 0x0a, 0x07, - 0x44, 0x6c, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x3d, 0x0a, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x65, 0x72, 0x73, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x6f, 0x70, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, + 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, + 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, + 0x74, 0x79, 0x70, 0x65, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x6b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0xdb, 0x01, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x6c, 0x70, 0x5f, 0x72, 0x75, 0x6c, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0xcb, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3a, 0x0a, - 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4b, 0x0a, 0x0b, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x52, 0x0a, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x22, 0x38, 0x0a, 0x09, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x46, 0x6f, 0x72, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x5f, - 0x42, 0x4f, 0x44, 0x59, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, - 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x02, - 0x22, 0xdb, 0x02, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0b, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x2b, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4b, 0x0a, 0x0d, 0x63, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x22, 0x9d, - 0x01, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, - 0x06, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x53, 0x4e, - 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x43, 0x41, 0x52, 0x44, - 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x56, 0x49, 0x53, 0x41, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, - 0x41, 0x4d, 0x45, 0x58, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, - 0x45, 0x52, 0x10, 0x05, 0x12, 0x07, 0x0a, 0x03, 0x4a, 0x43, 0x42, 0x10, 0x06, 0x12, 0x0f, 0x0a, - 0x0b, 0x44, 0x49, 0x4e, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x4c, 0x55, 0x42, 0x10, 0x07, 0x12, 0x18, - 0x0a, 0x14, 0x43, 0x52, 0x45, 0x44, 0x49, 0x54, 0x5f, 0x43, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x52, - 0x41, 0x43, 0x4b, 0x45, 0x52, 0x53, 0x10, 0x08, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x4c, 0x4c, 0x5f, - 0x43, 0x52, 0x45, 0x44, 0x49, 0x54, 0x5f, 0x43, 0x41, 0x52, 0x44, 0x53, 0x10, 0x09, 0x22, 0x8c, - 0x01, 0x0a, 0x0c, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x73, - 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, - 0x73, 0x6b, 0x43, 0x68, 0x61, 0x72, 0x12, 0x35, 0x0a, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x50, 0x65, 0x72, - 0x63, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x55, 0x5a, - 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, - 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, - 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x64, 0x6c, 0x70, 0xc0, 0xf5, 0x04, 0x01, - 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x69, 0x6f, 0x2e, 0x44, 0x6c, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x08, 0x64, 0x6c, 0x70, 0x52, + 0x75, 0x6c, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x0b, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, + 0x66, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x64, 0x6c, 0x70, 0x2e, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x52, 0x0a, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x22, 0x38, 0x0a, 0x09, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x46, 0x6f, 0x72, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, + 0x5f, 0x42, 0x4f, 0x44, 0x59, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x43, 0x43, 0x45, 0x53, + 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4c, 0x4c, 0x10, + 0x02, 0x22, 0x84, 0x01, 0x0a, 0x07, 0x44, 0x6c, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x3d, 0x0a, + 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, + 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x07, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x64, 0x6c, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xcb, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x3a, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x4b, 0x0a, 0x0b, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6f, 0x72, + 0x52, 0x0a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x22, 0x38, 0x0a, 0x09, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, + 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x5f, 0x42, 0x4f, 0x44, 0x59, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, + 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x01, 0x12, 0x07, 0x0a, + 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x22, 0xdc, 0x03, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x4c, 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x4b, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x10, + 0x6b, 0x65, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0e, 0x6b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x22, 0xca, 0x01, 0x0a, 0x0a, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x55, 0x53, 0x54, 0x4f, + 0x4d, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x53, 0x4e, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, + 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x43, 0x41, 0x52, 0x44, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, + 0x56, 0x49, 0x53, 0x41, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x4d, 0x45, 0x58, 0x10, 0x04, + 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x05, 0x12, 0x07, + 0x0a, 0x03, 0x4a, 0x43, 0x42, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x49, 0x4e, 0x45, 0x52, + 0x53, 0x5f, 0x43, 0x4c, 0x55, 0x42, 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x52, 0x45, 0x44, + 0x49, 0x54, 0x5f, 0x43, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x45, 0x52, 0x53, + 0x10, 0x08, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x4c, 0x4c, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x49, 0x54, + 0x5f, 0x43, 0x41, 0x52, 0x44, 0x53, 0x10, 0x09, 0x12, 0x0c, 0x0a, 0x08, 0x4b, 0x45, 0x59, 0x56, + 0x41, 0x4c, 0x55, 0x45, 0x10, 0x0a, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x4c, 0x4c, 0x5f, 0x43, 0x52, + 0x45, 0x44, 0x49, 0x54, 0x5f, 0x43, 0x41, 0x52, 0x44, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x42, 0x49, + 0x4e, 0x45, 0x44, 0x10, 0x0b, 0x22, 0xf1, 0x01, 0x0a, 0x0c, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x05, 0x72, 0x65, + 0x67, 0x65, 0x78, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x05, 0x72, + 0x65, 0x67, 0x65, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x68, 0x61, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x73, 0x6b, 0x43, 0x68, 0x61, + 0x72, 0x12, 0x35, 0x0a, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, + 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x5f, 0x0a, 0x0d, 0x72, 0x65, 0x67, 0x65, + 0x78, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x3a, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x65, 0x2e, 0x76, 0x32, 0x2e, + 0x52, 0x65, 0x67, 0x65, 0x78, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x72, 0x65, 0x67, + 0x65, 0x78, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x98, 0x01, 0x0a, 0x0e, 0x4b, 0x65, + 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x73, 0x6b, 0x43, 0x68, 0x61, 0x72, 0x12, 0x35, 0x0a, + 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, + 0x79, 0x70, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x70, 0x65, 0x72, + 0x63, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0b, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, + 0x61, 0x73, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x54, 0x6f, + 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x59, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, + 0x04, 0x01, 0x5a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, + 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x64, 0x6c, 0x70, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes = make([]protoimpl.MessageInfo, 5) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_goTypes = []interface{}{ - (FilterConfig_EnableFor)(0), // 0: dlp.options.gloo.solo.io.FilterConfig.EnableFor - (Config_EnableFor)(0), // 1: dlp.options.gloo.solo.io.Config.EnableFor - (Action_ActionType)(0), // 2: dlp.options.gloo.solo.io.Action.ActionType - (*FilterConfig)(nil), // 3: dlp.options.gloo.solo.io.FilterConfig - (*DlpRule)(nil), // 4: dlp.options.gloo.solo.io.DlpRule - (*Config)(nil), // 5: dlp.options.gloo.solo.io.Config - (*Action)(nil), // 6: dlp.options.gloo.solo.io.Action - (*CustomAction)(nil), // 7: dlp.options.gloo.solo.io.CustomAction - (*matchers.Matcher)(nil), // 8: matchers.core.gloo.solo.io.Matcher - (*_type.Percent)(nil), // 9: solo.io.envoy.type.Percent +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_goTypes = []any{ + (FilterConfig_EnableFor)(0), // 0: dlp.options.gloo.solo.io.FilterConfig.EnableFor + (Config_EnableFor)(0), // 1: dlp.options.gloo.solo.io.Config.EnableFor + (Action_ActionType)(0), // 2: dlp.options.gloo.solo.io.Action.ActionType + (*FilterConfig)(nil), // 3: dlp.options.gloo.solo.io.FilterConfig + (*DlpRule)(nil), // 4: dlp.options.gloo.solo.io.DlpRule + (*Config)(nil), // 5: dlp.options.gloo.solo.io.Config + (*Action)(nil), // 6: dlp.options.gloo.solo.io.Action + (*CustomAction)(nil), // 7: dlp.options.gloo.solo.io.CustomAction + (*KeyValueAction)(nil), // 8: dlp.options.gloo.solo.io.KeyValueAction + (*matchers.Matcher)(nil), // 9: matchers.core.gloo.solo.io.Matcher + (*_type.Percent)(nil), // 10: solo.io.envoy.type.Percent + (*transformation_ee.RegexAction)(nil), // 11: envoy.config.filter.http.transformation_ee.v2.RegexAction } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_depIdxs = []int32{ - 4, // 0: dlp.options.gloo.solo.io.FilterConfig.dlp_rules:type_name -> dlp.options.gloo.solo.io.DlpRule - 0, // 1: dlp.options.gloo.solo.io.FilterConfig.enabled_for:type_name -> dlp.options.gloo.solo.io.FilterConfig.EnableFor - 8, // 2: dlp.options.gloo.solo.io.DlpRule.matcher:type_name -> matchers.core.gloo.solo.io.Matcher - 6, // 3: dlp.options.gloo.solo.io.DlpRule.actions:type_name -> dlp.options.gloo.solo.io.Action - 6, // 4: dlp.options.gloo.solo.io.Config.actions:type_name -> dlp.options.gloo.solo.io.Action - 1, // 5: dlp.options.gloo.solo.io.Config.enabled_for:type_name -> dlp.options.gloo.solo.io.Config.EnableFor - 2, // 6: dlp.options.gloo.solo.io.Action.action_type:type_name -> dlp.options.gloo.solo.io.Action.ActionType - 7, // 7: dlp.options.gloo.solo.io.Action.custom_action:type_name -> dlp.options.gloo.solo.io.CustomAction - 9, // 8: dlp.options.gloo.solo.io.CustomAction.percent:type_name -> solo.io.envoy.type.Percent - 9, // [9:9] is the sub-list for method output_type - 9, // [9:9] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 4, // 0: dlp.options.gloo.solo.io.FilterConfig.dlp_rules:type_name -> dlp.options.gloo.solo.io.DlpRule + 0, // 1: dlp.options.gloo.solo.io.FilterConfig.enabled_for:type_name -> dlp.options.gloo.solo.io.FilterConfig.EnableFor + 9, // 2: dlp.options.gloo.solo.io.DlpRule.matcher:type_name -> matchers.core.gloo.solo.io.Matcher + 6, // 3: dlp.options.gloo.solo.io.DlpRule.actions:type_name -> dlp.options.gloo.solo.io.Action + 6, // 4: dlp.options.gloo.solo.io.Config.actions:type_name -> dlp.options.gloo.solo.io.Action + 1, // 5: dlp.options.gloo.solo.io.Config.enabled_for:type_name -> dlp.options.gloo.solo.io.Config.EnableFor + 2, // 6: dlp.options.gloo.solo.io.Action.action_type:type_name -> dlp.options.gloo.solo.io.Action.ActionType + 7, // 7: dlp.options.gloo.solo.io.Action.custom_action:type_name -> dlp.options.gloo.solo.io.CustomAction + 8, // 8: dlp.options.gloo.solo.io.Action.key_value_action:type_name -> dlp.options.gloo.solo.io.KeyValueAction + 10, // 9: dlp.options.gloo.solo.io.CustomAction.percent:type_name -> solo.io.envoy.type.Percent + 11, // 10: dlp.options.gloo.solo.io.CustomAction.regex_actions:type_name -> envoy.config.filter.http.transformation_ee.v2.RegexAction + 10, // 11: dlp.options.gloo.solo.io.KeyValueAction.percent:type_name -> solo.io.envoy.type.Percent + 12, // [12:12] is the sub-list for method output_type + 12, // [12:12] is the sub-list for method input_type + 12, // [12:12] is the sub-list for extension type_name + 12, // [12:12] is the sub-list for extension extendee + 0, // [0:12] is the sub-list for field type_name } func init() { @@ -764,75 +889,13 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_d if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FilterConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DlpRule); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Config); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Action); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CustomAction); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_rawDesc)), NumEnums: 3, - NumMessages: 5, + NumMessages: 6, NumExtensions: 0, NumServices: 0, }, @@ -842,7 +905,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_d MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_dlp_dlp_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/dlp/dlp.pb.hash.go b/pkg/api/gloo.solo.io/v1/enterprise/options/dlp/dlp.pb.hash.go index 41e6ec690..fc79d96f6 100644 --- a/pkg/api/gloo.solo.io/v1/enterprise/options/dlp/dlp.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/dlp/dlp.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FilterConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -41,14 +45,20 @@ func (m *FilterConfig) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetDlpRules() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -65,6 +75,10 @@ func (m *FilterConfig) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *DlpRule) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -78,14 +92,20 @@ func (m *DlpRule) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMatcher(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMatcher(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -94,14 +114,20 @@ func (m *DlpRule) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetActions() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -113,6 +139,10 @@ func (m *DlpRule) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Config) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -128,14 +158,20 @@ func (m *Config) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetActions() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -152,6 +188,10 @@ func (m *Config) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Action) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -170,14 +210,40 @@ func (m *Action) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetCustomAction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomAction")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCustomAction(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CustomAction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetKeyValueAction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("KeyValueAction")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCustomAction(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetKeyValueAction(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("KeyValueAction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -192,6 +258,10 @@ func (m *Action) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *CustomAction) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -221,18 +291,100 @@ func (m *CustomAction) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetPercent()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Percent")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPercent(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPercent(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Percent")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } + for _, v := range m.GetRegexActions() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *KeyValueAction) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dlp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/dlp.KeyValueAction")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetMaskChar())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPercent()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Percent")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPercent(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Percent")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetKeyToMask())); err != nil { + return 0, err + } + return hasher.Sum64(), nil } diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/dlp/dlp.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/enterprise/options/dlp/dlp.pb.uniquehash.go new file mode 100644 index 000000000..f6ed2ed2f --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/dlp/dlp.pb.uniquehash.go @@ -0,0 +1,446 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/dlp/dlp.proto + +package dlp + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FilterConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dlp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/dlp.FilterConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DlpRules")); err != nil { + return 0, err + } + for i, v := range m.GetDlpRules() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("EnabledFor")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetEnabledFor()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DlpRule) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dlp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/dlp.DlpRule")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMatcher(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Actions")); err != nil { + return 0, err + } + for i, v := range m.GetActions() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Config) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dlp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/dlp.Config")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Actions")); err != nil { + return 0, err + } + for i, v := range m.GetActions() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("EnabledFor")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetEnabledFor()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Action) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dlp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/dlp.Action")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ActionType")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetActionType()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCustomAction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CustomAction")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCustomAction(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CustomAction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetKeyValueAction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("KeyValueAction")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetKeyValueAction(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("KeyValueAction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Shadow")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetShadow()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *CustomAction) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dlp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/dlp.CustomAction")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Regex")); err != nil { + return 0, err + } + for i, v := range m.GetRegex() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("MaskChar")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetMaskChar())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPercent()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Percent")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPercent(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Percent")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RegexActions")); err != nil { + return 0, err + } + for i, v := range m.GetRegexActions() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *KeyValueAction) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dlp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/dlp.KeyValueAction")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MaskChar")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetMaskChar())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPercent()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Percent")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPercent(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Percent")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("KeyToMask")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKeyToMask())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/extproc/extproc.pb.clone.go b/pkg/api/gloo.solo.io/v1/enterprise/options/extproc/extproc.pb.clone.go new file mode 100644 index 000000000..4d3a179a1 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/extproc/extproc.pb.clone.go @@ -0,0 +1,344 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extproc/extproc.proto + +package extproc + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_common_mutation_rules_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_ext_proc_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/ext_proc/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_filters "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/filters" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *Settings) Clone() proto.Message { + var target *Settings + if m == nil { + return target + } + target = &Settings{} + + if h, ok := interface{}(m.GetGrpcService()).(clone.Cloner); ok { + target.GrpcService = h.Clone().(*GrpcService) + } else { + target.GrpcService = proto.Clone(m.GetGrpcService()).(*GrpcService) + } + + if h, ok := interface{}(m.GetFilterStage()).(clone.Cloner); ok { + target.FilterStage = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_filters.FilterStage) + } else { + target.FilterStage = proto.Clone(m.GetFilterStage()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_filters.FilterStage) + } + + if h, ok := interface{}(m.GetFailureModeAllow()).(clone.Cloner); ok { + target.FailureModeAllow = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.FailureModeAllow = proto.Clone(m.GetFailureModeAllow()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetProcessingMode()).(clone.Cloner); ok { + target.ProcessingMode = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_ext_proc_v3.ProcessingMode) + } else { + target.ProcessingMode = proto.Clone(m.GetProcessingMode()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_ext_proc_v3.ProcessingMode) + } + + if h, ok := interface{}(m.GetAsyncMode()).(clone.Cloner); ok { + target.AsyncMode = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.AsyncMode = proto.Clone(m.GetAsyncMode()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if m.GetRequestAttributes() != nil { + target.RequestAttributes = make([]string, len(m.GetRequestAttributes())) + for idx, v := range m.GetRequestAttributes() { + + target.RequestAttributes[idx] = v + + } + } + + if m.GetResponseAttributes() != nil { + target.ResponseAttributes = make([]string, len(m.GetResponseAttributes())) + for idx, v := range m.GetResponseAttributes() { + + target.ResponseAttributes[idx] = v + + } + } + + if h, ok := interface{}(m.GetMessageTimeout()).(clone.Cloner); ok { + target.MessageTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.MessageTimeout = proto.Clone(m.GetMessageTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetStatPrefix()).(clone.Cloner); ok { + target.StatPrefix = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.StatPrefix = proto.Clone(m.GetStatPrefix()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + if h, ok := interface{}(m.GetMutationRules()).(clone.Cloner); ok { + target.MutationRules = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_common_mutation_rules_v3.HeaderMutationRules) + } else { + target.MutationRules = proto.Clone(m.GetMutationRules()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_common_mutation_rules_v3.HeaderMutationRules) + } + + if h, ok := interface{}(m.GetMaxMessageTimeout()).(clone.Cloner); ok { + target.MaxMessageTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.MaxMessageTimeout = proto.Clone(m.GetMaxMessageTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetDisableClearRouteCache()).(clone.Cloner); ok { + target.DisableClearRouteCache = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.DisableClearRouteCache = proto.Clone(m.GetDisableClearRouteCache()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetForwardRules()).(clone.Cloner); ok { + target.ForwardRules = h.Clone().(*HeaderForwardingRules) + } else { + target.ForwardRules = proto.Clone(m.GetForwardRules()).(*HeaderForwardingRules) + } + + if h, ok := interface{}(m.GetFilterMetadata()).(clone.Cloner); ok { + target.FilterMetadata = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.FilterMetadata = proto.Clone(m.GetFilterMetadata()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + if h, ok := interface{}(m.GetAllowModeOverride()).(clone.Cloner); ok { + target.AllowModeOverride = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.AllowModeOverride = proto.Clone(m.GetAllowModeOverride()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if m.GetMetadataContextNamespaces() != nil { + target.MetadataContextNamespaces = make([]string, len(m.GetMetadataContextNamespaces())) + for idx, v := range m.GetMetadataContextNamespaces() { + + target.MetadataContextNamespaces[idx] = v + + } + } + + if m.GetTypedMetadataContextNamespaces() != nil { + target.TypedMetadataContextNamespaces = make([]string, len(m.GetTypedMetadataContextNamespaces())) + for idx, v := range m.GetTypedMetadataContextNamespaces() { + + target.TypedMetadataContextNamespaces[idx] = v + + } + } + + return target +} + +// Clone function +func (m *RouteSettings) Clone() proto.Message { + var target *RouteSettings + if m == nil { + return target + } + target = &RouteSettings{} + + switch m.Override.(type) { + + case *RouteSettings_Disabled: + + if h, ok := interface{}(m.GetDisabled()).(clone.Cloner); ok { + target.Override = &RouteSettings_Disabled{ + Disabled: h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue), + } + } else { + target.Override = &RouteSettings_Disabled{ + Disabled: proto.Clone(m.GetDisabled()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue), + } + } + + case *RouteSettings_Overrides: + + if h, ok := interface{}(m.GetOverrides()).(clone.Cloner); ok { + target.Override = &RouteSettings_Overrides{ + Overrides: h.Clone().(*Overrides), + } + } else { + target.Override = &RouteSettings_Overrides{ + Overrides: proto.Clone(m.GetOverrides()).(*Overrides), + } + } + + } + + return target +} + +// Clone function +func (m *GrpcService) Clone() proto.Message { + var target *GrpcService + if m == nil { + return target + } + target = &GrpcService{} + + if h, ok := interface{}(m.GetExtProcServerRef()).(clone.Cloner); ok { + target.ExtProcServerRef = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.ExtProcServerRef = proto.Clone(m.GetExtProcServerRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + if h, ok := interface{}(m.GetAuthority()).(clone.Cloner); ok { + target.Authority = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.Authority = proto.Clone(m.GetAuthority()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + if h, ok := interface{}(m.GetRetryPolicy()).(clone.Cloner); ok { + target.RetryPolicy = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.RetryPolicy) + } else { + target.RetryPolicy = proto.Clone(m.GetRetryPolicy()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.RetryPolicy) + } + + if h, ok := interface{}(m.GetTimeout()).(clone.Cloner); ok { + target.Timeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.Timeout = proto.Clone(m.GetTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if m.GetInitialMetadata() != nil { + target.InitialMetadata = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValue, len(m.GetInitialMetadata())) + for idx, v := range m.GetInitialMetadata() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.InitialMetadata[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValue) + } else { + target.InitialMetadata[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.HeaderValue) + } + + } + } + + return target +} + +// Clone function +func (m *Overrides) Clone() proto.Message { + var target *Overrides + if m == nil { + return target + } + target = &Overrides{} + + if h, ok := interface{}(m.GetProcessingMode()).(clone.Cloner); ok { + target.ProcessingMode = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_ext_proc_v3.ProcessingMode) + } else { + target.ProcessingMode = proto.Clone(m.GetProcessingMode()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_ext_proc_v3.ProcessingMode) + } + + if h, ok := interface{}(m.GetAsyncMode()).(clone.Cloner); ok { + target.AsyncMode = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.AsyncMode = proto.Clone(m.GetAsyncMode()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if m.GetRequestAttributes() != nil { + target.RequestAttributes = make([]string, len(m.GetRequestAttributes())) + for idx, v := range m.GetRequestAttributes() { + + target.RequestAttributes[idx] = v + + } + } + + if m.GetResponseAttributes() != nil { + target.ResponseAttributes = make([]string, len(m.GetResponseAttributes())) + for idx, v := range m.GetResponseAttributes() { + + target.ResponseAttributes[idx] = v + + } + } + + if h, ok := interface{}(m.GetGrpcService()).(clone.Cloner); ok { + target.GrpcService = h.Clone().(*GrpcService) + } else { + target.GrpcService = proto.Clone(m.GetGrpcService()).(*GrpcService) + } + + if m.GetMetadataContextNamespaces() != nil { + target.MetadataContextNamespaces = make([]string, len(m.GetMetadataContextNamespaces())) + for idx, v := range m.GetMetadataContextNamespaces() { + + target.MetadataContextNamespaces[idx] = v + + } + } + + if m.GetTypedMetadataContextNamespaces() != nil { + target.TypedMetadataContextNamespaces = make([]string, len(m.GetTypedMetadataContextNamespaces())) + for idx, v := range m.GetTypedMetadataContextNamespaces() { + + target.TypedMetadataContextNamespaces[idx] = v + + } + } + + return target +} + +// Clone function +func (m *HeaderForwardingRules) Clone() proto.Message { + var target *HeaderForwardingRules + if m == nil { + return target + } + target = &HeaderForwardingRules{} + + if h, ok := interface{}(m.GetAllowedHeaders()).(clone.Cloner); ok { + target.AllowedHeaders = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.ListStringMatcher) + } else { + target.AllowedHeaders = proto.Clone(m.GetAllowedHeaders()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.ListStringMatcher) + } + + if h, ok := interface{}(m.GetDisallowedHeaders()).(clone.Cloner); ok { + target.DisallowedHeaders = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.ListStringMatcher) + } else { + target.DisallowedHeaders = proto.Clone(m.GetDisallowedHeaders()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.ListStringMatcher) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/extproc/extproc.pb.equal.go b/pkg/api/gloo.solo.io/v1/enterprise/options/extproc/extproc.pb.equal.go new file mode 100644 index 000000000..f09f0fe5c --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/extproc/extproc.pb.equal.go @@ -0,0 +1,510 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extproc/extproc.proto + +package extproc + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *Settings) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Settings) + if !ok { + that2, ok := that.(Settings) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetGrpcService()).(equality.Equalizer); ok { + if !h.Equal(target.GetGrpcService()) { + return false + } + } else { + if !proto.Equal(m.GetGrpcService(), target.GetGrpcService()) { + return false + } + } + + if h, ok := interface{}(m.GetFilterStage()).(equality.Equalizer); ok { + if !h.Equal(target.GetFilterStage()) { + return false + } + } else { + if !proto.Equal(m.GetFilterStage(), target.GetFilterStage()) { + return false + } + } + + if h, ok := interface{}(m.GetFailureModeAllow()).(equality.Equalizer); ok { + if !h.Equal(target.GetFailureModeAllow()) { + return false + } + } else { + if !proto.Equal(m.GetFailureModeAllow(), target.GetFailureModeAllow()) { + return false + } + } + + if h, ok := interface{}(m.GetProcessingMode()).(equality.Equalizer); ok { + if !h.Equal(target.GetProcessingMode()) { + return false + } + } else { + if !proto.Equal(m.GetProcessingMode(), target.GetProcessingMode()) { + return false + } + } + + if h, ok := interface{}(m.GetAsyncMode()).(equality.Equalizer); ok { + if !h.Equal(target.GetAsyncMode()) { + return false + } + } else { + if !proto.Equal(m.GetAsyncMode(), target.GetAsyncMode()) { + return false + } + } + + if len(m.GetRequestAttributes()) != len(target.GetRequestAttributes()) { + return false + } + for idx, v := range m.GetRequestAttributes() { + + if strings.Compare(v, target.GetRequestAttributes()[idx]) != 0 { + return false + } + + } + + if len(m.GetResponseAttributes()) != len(target.GetResponseAttributes()) { + return false + } + for idx, v := range m.GetResponseAttributes() { + + if strings.Compare(v, target.GetResponseAttributes()[idx]) != 0 { + return false + } + + } + + if h, ok := interface{}(m.GetMessageTimeout()).(equality.Equalizer); ok { + if !h.Equal(target.GetMessageTimeout()) { + return false + } + } else { + if !proto.Equal(m.GetMessageTimeout(), target.GetMessageTimeout()) { + return false + } + } + + if h, ok := interface{}(m.GetStatPrefix()).(equality.Equalizer); ok { + if !h.Equal(target.GetStatPrefix()) { + return false + } + } else { + if !proto.Equal(m.GetStatPrefix(), target.GetStatPrefix()) { + return false + } + } + + if h, ok := interface{}(m.GetMutationRules()).(equality.Equalizer); ok { + if !h.Equal(target.GetMutationRules()) { + return false + } + } else { + if !proto.Equal(m.GetMutationRules(), target.GetMutationRules()) { + return false + } + } + + if h, ok := interface{}(m.GetMaxMessageTimeout()).(equality.Equalizer); ok { + if !h.Equal(target.GetMaxMessageTimeout()) { + return false + } + } else { + if !proto.Equal(m.GetMaxMessageTimeout(), target.GetMaxMessageTimeout()) { + return false + } + } + + if h, ok := interface{}(m.GetDisableClearRouteCache()).(equality.Equalizer); ok { + if !h.Equal(target.GetDisableClearRouteCache()) { + return false + } + } else { + if !proto.Equal(m.GetDisableClearRouteCache(), target.GetDisableClearRouteCache()) { + return false + } + } + + if h, ok := interface{}(m.GetForwardRules()).(equality.Equalizer); ok { + if !h.Equal(target.GetForwardRules()) { + return false + } + } else { + if !proto.Equal(m.GetForwardRules(), target.GetForwardRules()) { + return false + } + } + + if h, ok := interface{}(m.GetFilterMetadata()).(equality.Equalizer); ok { + if !h.Equal(target.GetFilterMetadata()) { + return false + } + } else { + if !proto.Equal(m.GetFilterMetadata(), target.GetFilterMetadata()) { + return false + } + } + + if h, ok := interface{}(m.GetAllowModeOverride()).(equality.Equalizer); ok { + if !h.Equal(target.GetAllowModeOverride()) { + return false + } + } else { + if !proto.Equal(m.GetAllowModeOverride(), target.GetAllowModeOverride()) { + return false + } + } + + if len(m.GetMetadataContextNamespaces()) != len(target.GetMetadataContextNamespaces()) { + return false + } + for idx, v := range m.GetMetadataContextNamespaces() { + + if strings.Compare(v, target.GetMetadataContextNamespaces()[idx]) != 0 { + return false + } + + } + + if len(m.GetTypedMetadataContextNamespaces()) != len(target.GetTypedMetadataContextNamespaces()) { + return false + } + for idx, v := range m.GetTypedMetadataContextNamespaces() { + + if strings.Compare(v, target.GetTypedMetadataContextNamespaces()[idx]) != 0 { + return false + } + + } + + return true +} + +// Equal function +func (m *RouteSettings) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RouteSettings) + if !ok { + that2, ok := that.(RouteSettings) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + switch m.Override.(type) { + + case *RouteSettings_Disabled: + if _, ok := target.Override.(*RouteSettings_Disabled); !ok { + return false + } + + if h, ok := interface{}(m.GetDisabled()).(equality.Equalizer); ok { + if !h.Equal(target.GetDisabled()) { + return false + } + } else { + if !proto.Equal(m.GetDisabled(), target.GetDisabled()) { + return false + } + } + + case *RouteSettings_Overrides: + if _, ok := target.Override.(*RouteSettings_Overrides); !ok { + return false + } + + if h, ok := interface{}(m.GetOverrides()).(equality.Equalizer); ok { + if !h.Equal(target.GetOverrides()) { + return false + } + } else { + if !proto.Equal(m.GetOverrides(), target.GetOverrides()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.Override != target.Override { + return false + } + } + + return true +} + +// Equal function +func (m *GrpcService) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*GrpcService) + if !ok { + that2, ok := that.(GrpcService) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetExtProcServerRef()).(equality.Equalizer); ok { + if !h.Equal(target.GetExtProcServerRef()) { + return false + } + } else { + if !proto.Equal(m.GetExtProcServerRef(), target.GetExtProcServerRef()) { + return false + } + } + + if h, ok := interface{}(m.GetAuthority()).(equality.Equalizer); ok { + if !h.Equal(target.GetAuthority()) { + return false + } + } else { + if !proto.Equal(m.GetAuthority(), target.GetAuthority()) { + return false + } + } + + if h, ok := interface{}(m.GetRetryPolicy()).(equality.Equalizer); ok { + if !h.Equal(target.GetRetryPolicy()) { + return false + } + } else { + if !proto.Equal(m.GetRetryPolicy(), target.GetRetryPolicy()) { + return false + } + } + + if h, ok := interface{}(m.GetTimeout()).(equality.Equalizer); ok { + if !h.Equal(target.GetTimeout()) { + return false + } + } else { + if !proto.Equal(m.GetTimeout(), target.GetTimeout()) { + return false + } + } + + if len(m.GetInitialMetadata()) != len(target.GetInitialMetadata()) { + return false + } + for idx, v := range m.GetInitialMetadata() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetInitialMetadata()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetInitialMetadata()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *Overrides) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Overrides) + if !ok { + that2, ok := that.(Overrides) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetProcessingMode()).(equality.Equalizer); ok { + if !h.Equal(target.GetProcessingMode()) { + return false + } + } else { + if !proto.Equal(m.GetProcessingMode(), target.GetProcessingMode()) { + return false + } + } + + if h, ok := interface{}(m.GetAsyncMode()).(equality.Equalizer); ok { + if !h.Equal(target.GetAsyncMode()) { + return false + } + } else { + if !proto.Equal(m.GetAsyncMode(), target.GetAsyncMode()) { + return false + } + } + + if len(m.GetRequestAttributes()) != len(target.GetRequestAttributes()) { + return false + } + for idx, v := range m.GetRequestAttributes() { + + if strings.Compare(v, target.GetRequestAttributes()[idx]) != 0 { + return false + } + + } + + if len(m.GetResponseAttributes()) != len(target.GetResponseAttributes()) { + return false + } + for idx, v := range m.GetResponseAttributes() { + + if strings.Compare(v, target.GetResponseAttributes()[idx]) != 0 { + return false + } + + } + + if h, ok := interface{}(m.GetGrpcService()).(equality.Equalizer); ok { + if !h.Equal(target.GetGrpcService()) { + return false + } + } else { + if !proto.Equal(m.GetGrpcService(), target.GetGrpcService()) { + return false + } + } + + if len(m.GetMetadataContextNamespaces()) != len(target.GetMetadataContextNamespaces()) { + return false + } + for idx, v := range m.GetMetadataContextNamespaces() { + + if strings.Compare(v, target.GetMetadataContextNamespaces()[idx]) != 0 { + return false + } + + } + + if len(m.GetTypedMetadataContextNamespaces()) != len(target.GetTypedMetadataContextNamespaces()) { + return false + } + for idx, v := range m.GetTypedMetadataContextNamespaces() { + + if strings.Compare(v, target.GetTypedMetadataContextNamespaces()[idx]) != 0 { + return false + } + + } + + return true +} + +// Equal function +func (m *HeaderForwardingRules) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HeaderForwardingRules) + if !ok { + that2, ok := that.(HeaderForwardingRules) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetAllowedHeaders()).(equality.Equalizer); ok { + if !h.Equal(target.GetAllowedHeaders()) { + return false + } + } else { + if !proto.Equal(m.GetAllowedHeaders(), target.GetAllowedHeaders()) { + return false + } + } + + if h, ok := interface{}(m.GetDisallowedHeaders()).(equality.Equalizer); ok { + if !h.Equal(target.GetDisallowedHeaders()) { + return false + } + } else { + if !proto.Equal(m.GetDisallowedHeaders(), target.GetDisallowedHeaders()) { + return false + } + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/extproc/extproc.pb.go b/pkg/api/gloo.solo.io/v1/enterprise/options/extproc/extproc.pb.go new file mode 100644 index 000000000..4e5a8f5c4 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/extproc/extproc.pb.go @@ -0,0 +1,947 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extproc/extproc.proto + +package extproc + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/envoyproxy/protoc-gen-validate/validate" + _ "github.com/solo-io/protoc-gen-ext/extproto" + v31 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3" + v32 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/ext_proc/v3" + v33 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3" + filters "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/filters" + core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + structpb "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Enterprise-only: Configuration for Envoy's [External Processing Filter](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/ext_proc_filter). +// The External Processing filter allows for calling out to an external gRPC service at a specified +// point within a HTTP filter chain. The external service may access and modify various parts of the +// request or response, and may terminate processing. +// Envoy's External Processing Filter is considered a work in progress and has an unknown security posture. +// Users should take care to understand the risks of using this extension before proceeding. +type Settings struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Required. Configuration for the gRPC service that the filter will communicate with. + GrpcService *GrpcService `protobuf:"bytes,1,opt,name=grpc_service,json=grpcService,proto3" json:"grpc_service,omitempty"` + // Required. Where in the HTTP filter chain to insert the filter. + FilterStage *filters.FilterStage `protobuf:"bytes,2,opt,name=filter_stage,json=filterStage,proto3" json:"filter_stage,omitempty"` + // By default, if the gRPC stream cannot be established, or if it is closed + // prematurely with an error, the filter will fail. Specifically, if the + // response headers have not yet been delivered, then it will return a 500 + // error downstream. If they have been delivered, then instead the HTTP stream to the + // downstream client will be reset. + // With this parameter set to true, however, then if the gRPC stream is prematurely closed + // or could not be opened, processing continues without error. + FailureModeAllow *wrapperspb.BoolValue `protobuf:"bytes,3,opt,name=failure_mode_allow,json=failureModeAllow,proto3" json:"failure_mode_allow,omitempty"` + // Specifies default options for how HTTP headers, trailers, and bodies are + // sent. + ProcessingMode *v3.ProcessingMode `protobuf:"bytes,4,opt,name=processing_mode,json=processingMode,proto3" json:"processing_mode,omitempty"` + // NOT CURRENTLY IMPLEMENTED. + // If true, send each part of the HTTP request or response specified by ProcessingMode + // asynchronously -- in other words, send the message on the gRPC stream and then continue + // filter processing. If false, which is the default, suspend filter execution after + // each message is sent to the remote service and wait up to "message_timeout" + // for a reply. + AsyncMode *wrapperspb.BoolValue `protobuf:"bytes,5,opt,name=async_mode,json=asyncMode,proto3" json:"async_mode,omitempty"` + // NOT CURRENTLY IMPLEMENTED. + // Envoy provides a number of [attributes](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes#arch-overview-attributes) + // for expressive policies. Each attribute name provided in this field will be + // matched against that list and populated in the request_headers message. + // See the [request attribute documentation](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes#request-attributes) + // for the list of supported attributes and their types. + RequestAttributes []string `protobuf:"bytes,6,rep,name=request_attributes,json=requestAttributes,proto3" json:"request_attributes,omitempty"` + // NOT CURRENTLY IMPLEMENTED. + // Envoy provides a number of [attributes](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes#arch-overview-attributes) + // for expressive policies. Each attribute name provided in this field will be + // matched against that list and populated in the response_headers message. + // See the [response attribute documentation](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes#response-attributes) + // for the list of supported attributes and their types. + ResponseAttributes []string `protobuf:"bytes,7,rep,name=response_attributes,json=responseAttributes,proto3" json:"response_attributes,omitempty"` + // Specifies the timeout for each individual message sent on the stream + // when the filter is running in synchronous mode. Whenever the proxy sends + // a message on the stream that requires a response, it will reset this timer, + // and will stop processing and return an error (subject to the processing mode) + // if the timer expires before a matching response is received. There is no + // timeout when the filter is running in asynchronous mode. Value must be at + // least 0 seconds, and less than or equal to 3600 seconds. Zero is a valid + // value which means the timer will be triggered immediately. If not + // configured, default is 200 milliseconds. + MessageTimeout *durationpb.Duration `protobuf:"bytes,8,opt,name=message_timeout,json=messageTimeout,proto3" json:"message_timeout,omitempty"` + // Optional additional prefix to use when emitting statistics. This allows distinguishing + // between statistics emitted by multiple *ext_proc* filters in an HTTP filter chain. + StatPrefix *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=stat_prefix,json=statPrefix,proto3" json:"stat_prefix,omitempty"` + // Rules that determine what modifications an external processing server may + // make to message headers. If not set, all headers may be modified except + // for "host", ":authority", ":scheme", ":method", and headers that start + // with the header prefix set via + // [header_prefix](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/bootstrap/v3/bootstrap.proto#envoy-v3-api-field-config-bootstrap-v3-bootstrap-header-prefix) + // (which is usually "x-envoy"). + // Note that changing headers such as "host" or ":authority" may not in itself + // change Envoy's routing decision, as routes can be cached. To also force the + // route to be recomputed, set the + // [clear_route_cache](https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/ext_proc/v3/external_processor.proto#envoy-v3-api-field-service-ext-proc-v3-commonresponse-clear-route-cache) + // field to true in the same response. + MutationRules *v31.HeaderMutationRules `protobuf:"bytes,10,opt,name=mutation_rules,json=mutationRules,proto3" json:"mutation_rules,omitempty"` + // Specify the upper bound of + // [override_message_timeout](https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/ext_proc/v3/external_processor.proto#envoy-v3-api-field-service-ext-proc-v3-processingresponse-override-message-timeout). + // If not specified, by default it is 0, which will effectively disable the `override_message_timeout` API. + // Value must be greater than or equal to the `messageTimeout` and less than or equal to 3600 seconds. + MaxMessageTimeout *durationpb.Duration `protobuf:"bytes,11,opt,name=max_message_timeout,json=maxMessageTimeout,proto3" json:"max_message_timeout,omitempty"` + // Prevents clearing the route-cache when the + // [clear_route_cache](https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/ext_proc/v3/external_processor.proto#envoy-v3-api-field-service-ext-proc-v3-commonresponse-clear-route-cache) + // field is set in an external processor response. + DisableClearRouteCache *wrapperspb.BoolValue `protobuf:"bytes,12,opt,name=disable_clear_route_cache,json=disableClearRouteCache,proto3" json:"disable_clear_route_cache,omitempty"` + // Allow headers matching the `forward_rules` to be forwarded to the external processing server. + // If not set, all headers are forwarded to the external processing server. + ForwardRules *HeaderForwardingRules `protobuf:"bytes,13,opt,name=forward_rules,json=forwardRules,proto3" json:"forward_rules,omitempty"` + // Additional metadata to be added to the filter state for logging purposes. The metadata + // will be added to StreamInfo's filter state under the namespace corresponding to the + // ext_proc filter name. + FilterMetadata *structpb.Struct `protobuf:"bytes,14,opt,name=filter_metadata,json=filterMetadata,proto3" json:"filter_metadata,omitempty"` + // If `allow_mode_override` is set to true, the filter config [processing_mode](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/ext_proc/v3/ext_proc.proto#envoy-v3-api-field-extensions-filters-http-ext-proc-v3-externalprocessor-processing-mode) + // can be overridden by the response message from the external processing server + // [mode_override](https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/ext_proc/v3/external_processor.proto#envoy-v3-api-field-service-ext-proc-v3-processingresponse-mode-override). + // If not set, `mode_override` API in the response message will be ignored. + AllowModeOverride *wrapperspb.BoolValue `protobuf:"bytes,15,opt,name=allow_mode_override,json=allowModeOverride,proto3" json:"allow_mode_override,omitempty"` + // Specifies a list of metadata namespaces whose values, if present, will be passed to the + // ext_proc service as an opaque *protobuf::Struct*. + MetadataContextNamespaces []string `protobuf:"bytes,16,rep,name=metadata_context_namespaces,json=metadataContextNamespaces,proto3" json:"metadata_context_namespaces,omitempty"` + // Specifies a list of metadata namespaces whose values, if present, will be passed to the + // ext_proc service. typed_filter_metadata is passed as an `protobuf::Any`. + // + // It works in a way similar to `metadata_context_namespaces` but allows envoy and external processing server to share the protobuf message definition + // in order to do a safe parsing. + TypedMetadataContextNamespaces []string `protobuf:"bytes,17,rep,name=typed_metadata_context_namespaces,json=typedMetadataContextNamespaces,proto3" json:"typed_metadata_context_namespaces,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Settings) Reset() { + *x = Settings{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Settings) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Settings) ProtoMessage() {} + +func (x *Settings) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Settings.ProtoReflect.Descriptor instead. +func (*Settings) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_rawDescGZIP(), []int{0} +} + +func (x *Settings) GetGrpcService() *GrpcService { + if x != nil { + return x.GrpcService + } + return nil +} + +func (x *Settings) GetFilterStage() *filters.FilterStage { + if x != nil { + return x.FilterStage + } + return nil +} + +func (x *Settings) GetFailureModeAllow() *wrapperspb.BoolValue { + if x != nil { + return x.FailureModeAllow + } + return nil +} + +func (x *Settings) GetProcessingMode() *v3.ProcessingMode { + if x != nil { + return x.ProcessingMode + } + return nil +} + +func (x *Settings) GetAsyncMode() *wrapperspb.BoolValue { + if x != nil { + return x.AsyncMode + } + return nil +} + +func (x *Settings) GetRequestAttributes() []string { + if x != nil { + return x.RequestAttributes + } + return nil +} + +func (x *Settings) GetResponseAttributes() []string { + if x != nil { + return x.ResponseAttributes + } + return nil +} + +func (x *Settings) GetMessageTimeout() *durationpb.Duration { + if x != nil { + return x.MessageTimeout + } + return nil +} + +func (x *Settings) GetStatPrefix() *wrapperspb.StringValue { + if x != nil { + return x.StatPrefix + } + return nil +} + +func (x *Settings) GetMutationRules() *v31.HeaderMutationRules { + if x != nil { + return x.MutationRules + } + return nil +} + +func (x *Settings) GetMaxMessageTimeout() *durationpb.Duration { + if x != nil { + return x.MaxMessageTimeout + } + return nil +} + +func (x *Settings) GetDisableClearRouteCache() *wrapperspb.BoolValue { + if x != nil { + return x.DisableClearRouteCache + } + return nil +} + +func (x *Settings) GetForwardRules() *HeaderForwardingRules { + if x != nil { + return x.ForwardRules + } + return nil +} + +func (x *Settings) GetFilterMetadata() *structpb.Struct { + if x != nil { + return x.FilterMetadata + } + return nil +} + +func (x *Settings) GetAllowModeOverride() *wrapperspb.BoolValue { + if x != nil { + return x.AllowModeOverride + } + return nil +} + +func (x *Settings) GetMetadataContextNamespaces() []string { + if x != nil { + return x.MetadataContextNamespaces + } + return nil +} + +func (x *Settings) GetTypedMetadataContextNamespaces() []string { + if x != nil { + return x.TypedMetadataContextNamespaces + } + return nil +} + +// External processor settings that can be configured on a virtual host or route. +type RouteSettings struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Override: + // + // *RouteSettings_Disabled + // *RouteSettings_Overrides + Override isRouteSettings_Override `protobuf_oneof:"override"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RouteSettings) Reset() { + *x = RouteSettings{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RouteSettings) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RouteSettings) ProtoMessage() {} + +func (x *RouteSettings) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RouteSettings.ProtoReflect.Descriptor instead. +func (*RouteSettings) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_rawDescGZIP(), []int{1} +} + +func (x *RouteSettings) GetOverride() isRouteSettings_Override { + if x != nil { + return x.Override + } + return nil +} + +func (x *RouteSettings) GetDisabled() *wrapperspb.BoolValue { + if x != nil { + if x, ok := x.Override.(*RouteSettings_Disabled); ok { + return x.Disabled + } + } + return nil +} + +func (x *RouteSettings) GetOverrides() *Overrides { + if x != nil { + if x, ok := x.Override.(*RouteSettings_Overrides); ok { + return x.Overrides + } + } + return nil +} + +type isRouteSettings_Override interface { + isRouteSettings_Override() +} + +type RouteSettings_Disabled struct { + // Set to true to disable the External Processing filter for this virtual host or route. + // Setting this value to false is not supported. + Disabled *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=disabled,proto3,oneof"` +} + +type RouteSettings_Overrides struct { + // Override specific configuration for this virtual host or route. + // If a route specifies overrides, it will override the disabled flag of its parent virtual host. + Overrides *Overrides `protobuf:"bytes,2,opt,name=overrides,proto3,oneof"` +} + +func (*RouteSettings_Disabled) isRouteSettings_Override() {} + +func (*RouteSettings_Overrides) isRouteSettings_Override() {} + +type GrpcService struct { + state protoimpl.MessageState `protogen:"open.v1"` + // A reference to the Upstream representing the external processor gRPC server. + // See https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/ext_proc/v3/external_processor.proto + // for details. + ExtProcServerRef *core.ResourceRef `protobuf:"bytes,1,opt,name=ext_proc_server_ref,json=extProcServerRef,proto3" json:"ext_proc_server_ref,omitempty"` + // The `:authority` header in the grpc request. If this field is not set, the authority header value will be the + // cluster name. + // Note that this authority does not override the SNI. The SNI is provided by the transport socket of the cluster. + Authority *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=authority,proto3" json:"authority,omitempty"` + // Indicates the retry policy for re-establishing the gRPC stream + // This field is optional. If max interval is not provided, it will be set to ten times the provided base interval. + // Currently only supported for xDS gRPC streams. + // If not set, xDS gRPC streams default base interval:500ms, maximum interval:30s will be applied. + RetryPolicy *v32.RetryPolicy `protobuf:"bytes,3,opt,name=retry_policy,json=retryPolicy,proto3" json:"retry_policy,omitempty"` + // The timeout for the gRPC request. This is the timeout for a specific request. + Timeout *durationpb.Duration `protobuf:"bytes,4,opt,name=timeout,proto3" json:"timeout,omitempty"` + // Additional metadata to include in streams initiated to the GrpcService. This can be used for + // scenarios in which additional ad hoc authorization headers (e.g. `x-foo-bar: baz-key`) are to + // be injected. For more information, including details on header value syntax, see the + // documentation on [custom request headers](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers#config-http-conn-man-headers-custom-request-headers). + InitialMetadata []*v32.HeaderValue `protobuf:"bytes,5,rep,name=initial_metadata,json=initialMetadata,proto3" json:"initial_metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GrpcService) Reset() { + *x = GrpcService{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GrpcService) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GrpcService) ProtoMessage() {} + +func (x *GrpcService) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GrpcService.ProtoReflect.Descriptor instead. +func (*GrpcService) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_rawDescGZIP(), []int{2} +} + +func (x *GrpcService) GetExtProcServerRef() *core.ResourceRef { + if x != nil { + return x.ExtProcServerRef + } + return nil +} + +func (x *GrpcService) GetAuthority() *wrapperspb.StringValue { + if x != nil { + return x.Authority + } + return nil +} + +func (x *GrpcService) GetRetryPolicy() *v32.RetryPolicy { + if x != nil { + return x.RetryPolicy + } + return nil +} + +func (x *GrpcService) GetTimeout() *durationpb.Duration { + if x != nil { + return x.Timeout + } + return nil +} + +func (x *GrpcService) GetInitialMetadata() []*v32.HeaderValue { + if x != nil { + return x.InitialMetadata + } + return nil +} + +type Overrides struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Set a different processing mode for this virtual host or route than the default. + ProcessingMode *v3.ProcessingMode `protobuf:"bytes,1,opt,name=processing_mode,json=processingMode,proto3" json:"processing_mode,omitempty"` + // NOT CURRENTLY IMPLEMENTED. + // Set a different asynchronous processing option than the default. + AsyncMode *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=async_mode,json=asyncMode,proto3" json:"async_mode,omitempty"` + // NOT FINALIZED UPSTREAM use at your own upgrade risk + // Set different optional attributes than the default setting of the + // `request_attributes` field. + RequestAttributes []string `protobuf:"bytes,3,rep,name=request_attributes,json=requestAttributes,proto3" json:"request_attributes,omitempty"` + // NOT FINALIZED UPSTREAM use at your own upgrade risk + // Set different optional properties than the default setting of the + // `response_attributes` field. + ResponseAttributes []string `protobuf:"bytes,4,rep,name=response_attributes,json=responseAttributes,proto3" json:"response_attributes,omitempty"` + // Set a different gRPC service for this virtual host or route than the default. + GrpcService *GrpcService `protobuf:"bytes,5,opt,name=grpc_service,json=grpcService,proto3" json:"grpc_service,omitempty"` + // Specifies a list of metadata namespaces whose values, if present, will be passed to the + // ext_proc service as an opaque *protobuf::Struct*. + MetadataContextNamespaces []string `protobuf:"bytes,6,rep,name=metadata_context_namespaces,json=metadataContextNamespaces,proto3" json:"metadata_context_namespaces,omitempty"` + // Specifies a list of metadata namespaces whose values, if present, will be passed to the + // ext_proc service. typed_filter_metadata is passed as an `protobuf::Any`. + // + // It works in a way similar to `metadata_context_namespaces` but allows envoy and external processing server to share the protobuf message definition + // in order to do a safe parsing. + TypedMetadataContextNamespaces []string `protobuf:"bytes,7,rep,name=typed_metadata_context_namespaces,json=typedMetadataContextNamespaces,proto3" json:"typed_metadata_context_namespaces,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Overrides) Reset() { + *x = Overrides{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Overrides) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Overrides) ProtoMessage() {} + +func (x *Overrides) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Overrides.ProtoReflect.Descriptor instead. +func (*Overrides) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_rawDescGZIP(), []int{3} +} + +func (x *Overrides) GetProcessingMode() *v3.ProcessingMode { + if x != nil { + return x.ProcessingMode + } + return nil +} + +func (x *Overrides) GetAsyncMode() *wrapperspb.BoolValue { + if x != nil { + return x.AsyncMode + } + return nil +} + +func (x *Overrides) GetRequestAttributes() []string { + if x != nil { + return x.RequestAttributes + } + return nil +} + +func (x *Overrides) GetResponseAttributes() []string { + if x != nil { + return x.ResponseAttributes + } + return nil +} + +func (x *Overrides) GetGrpcService() *GrpcService { + if x != nil { + return x.GrpcService + } + return nil +} + +func (x *Overrides) GetMetadataContextNamespaces() []string { + if x != nil { + return x.MetadataContextNamespaces + } + return nil +} + +func (x *Overrides) GetTypedMetadataContextNamespaces() []string { + if x != nil { + return x.TypedMetadataContextNamespaces + } + return nil +} + +// The HeaderForwardingRules structure specifies what headers are +// allowed to be forwarded to the external processing server. +// See https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/ext_proc/v3/ext_proc.proto#extensions-filters-http-ext-proc-v3-headerforwardingrules +// for details. +type HeaderForwardingRules struct { + state protoimpl.MessageState `protogen:"open.v1"` + // If set, specifically allow any header in this list to be forwarded to the external + // processing server. This can be overridden by the below `disallowed_headers`. + AllowedHeaders *v33.ListStringMatcher `protobuf:"bytes,1,opt,name=allowed_headers,json=allowedHeaders,proto3" json:"allowed_headers,omitempty"` + // If set, specifically disallow any header in this list to be forwarded to the external + // processing server. This overrides the above `allowed_headers` if a header matches both. + // NOT CURRENTLY IMPLEMENTED. + DisallowedHeaders *v33.ListStringMatcher `protobuf:"bytes,2,opt,name=disallowed_headers,json=disallowedHeaders,proto3" json:"disallowed_headers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HeaderForwardingRules) Reset() { + *x = HeaderForwardingRules{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HeaderForwardingRules) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HeaderForwardingRules) ProtoMessage() {} + +func (x *HeaderForwardingRules) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HeaderForwardingRules.ProtoReflect.Descriptor instead. +func (*HeaderForwardingRules) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_rawDescGZIP(), []int{4} +} + +func (x *HeaderForwardingRules) GetAllowedHeaders() *v33.ListStringMatcher { + if x != nil { + return x.AllowedHeaders + } + return nil +} + +func (x *HeaderForwardingRules) GetDisallowedHeaders() *v33.ListStringMatcher { + if x != nil { + return x.DisallowedHeaders + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_rawDesc = string([]byte{ + 0x0a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x63, 0x2f, 0x65, 0x78, 0x74, 0x70, 0x72, + 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, + 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x42, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, + 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x6e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6d, + 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x76, 0x33, + 0x2f, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x53, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x2f, + 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x73, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x65, 0x78, + 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2f, 0x76, 0x33, 0x2f, 0x73, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x90, 0x0a, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x12, 0x4c, 0x0a, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x78, 0x74, 0x70, 0x72, + 0x6f, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x0b, 0x67, 0x72, 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0x44, 0x0a, 0x0c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x48, 0x0a, 0x12, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, + 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, + 0x12, 0x6a, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, + 0x70, 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, + 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0e, 0x70, 0x72, + 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x0a, + 0x61, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x61, 0x73, + 0x79, 0x6e, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x12, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0xfa, 0x42, 0x0a, + 0xaa, 0x01, 0x07, 0x22, 0x03, 0x08, 0x90, 0x1c, 0x32, 0x00, 0x52, 0x0e, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x73, 0x74, + 0x61, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x73, + 0x74, 0x61, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x69, 0x0a, 0x0e, 0x6d, 0x75, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x42, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x76, + 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x0d, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x75, 0x6c, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0xfa, 0x42, + 0x0a, 0xaa, 0x01, 0x07, 0x22, 0x03, 0x08, 0x90, 0x1c, 0x32, 0x00, 0x52, 0x11, 0x6d, 0x61, 0x78, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x55, + 0x0a, 0x19, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x16, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x58, 0x0a, 0x0d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x65, + 0x78, 0x74, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, + 0x73, 0x52, 0x0c, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, + 0x40, 0x0a, 0x0f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x52, 0x0e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x4a, 0x0a, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, + 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x4d, 0x6f, 0x64, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x3e, 0x0a, + 0x1b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x10, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x19, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x49, 0x0a, + 0x21, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x09, 0x52, 0x1e, 0x74, 0x79, 0x70, 0x65, 0x64, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x22, 0x9e, 0x01, 0x0a, 0x0d, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x38, 0x0a, 0x08, 0x64, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, + 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, + 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, + 0x48, 0x00, 0x52, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x42, 0x0a, 0x0a, + 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0xec, 0x02, 0x0a, 0x0b, 0x47, 0x72, + 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x13, 0x65, 0x78, 0x74, + 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x66, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, + 0x66, 0x52, 0x10, 0x65, 0x78, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x52, 0x65, 0x66, 0x12, 0x3a, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, + 0x4c, 0x0a, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x52, 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x33, 0x0a, + 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x12, 0x54, 0x0a, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xeb, 0x03, 0x0a, 0x09, 0x4f, 0x76, 0x65, + 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, 0x6a, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x41, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, + 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x4d, 0x6f, + 0x64, 0x65, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x09, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, + 0x12, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x13, + 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x4c, 0x0a, + 0x0c, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x0b, + 0x67, 0x72, 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x1b, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x19, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x21, 0x74, + 0x79, 0x70, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x1e, 0x74, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x22, 0xd3, 0x01, 0x0a, 0x15, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x73, + 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x0e, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x65, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x5f, 0x0a, 0x12, 0x64, + 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x11, 0x64, 0x69, 0x73, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x42, 0x5d, 0xb8, 0xf5, + 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, + 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_goTypes = []any{ + (*Settings)(nil), // 0: extproc.options.gloo.solo.io.Settings + (*RouteSettings)(nil), // 1: extproc.options.gloo.solo.io.RouteSettings + (*GrpcService)(nil), // 2: extproc.options.gloo.solo.io.GrpcService + (*Overrides)(nil), // 3: extproc.options.gloo.solo.io.Overrides + (*HeaderForwardingRules)(nil), // 4: extproc.options.gloo.solo.io.HeaderForwardingRules + (*filters.FilterStage)(nil), // 5: filters.gloo.solo.io.FilterStage + (*wrapperspb.BoolValue)(nil), // 6: google.protobuf.BoolValue + (*v3.ProcessingMode)(nil), // 7: solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode + (*durationpb.Duration)(nil), // 8: google.protobuf.Duration + (*wrapperspb.StringValue)(nil), // 9: google.protobuf.StringValue + (*v31.HeaderMutationRules)(nil), // 10: solo.io.envoy.config.common.mutation_rules.v3.HeaderMutationRules + (*structpb.Struct)(nil), // 11: google.protobuf.Struct + (*core.ResourceRef)(nil), // 12: core.solo.io.ResourceRef + (*v32.RetryPolicy)(nil), // 13: solo.io.envoy.config.core.v3.RetryPolicy + (*v32.HeaderValue)(nil), // 14: solo.io.envoy.config.core.v3.HeaderValue + (*v33.ListStringMatcher)(nil), // 15: solo.io.envoy.type.matcher.v3.ListStringMatcher +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_depIdxs = []int32{ + 2, // 0: extproc.options.gloo.solo.io.Settings.grpc_service:type_name -> extproc.options.gloo.solo.io.GrpcService + 5, // 1: extproc.options.gloo.solo.io.Settings.filter_stage:type_name -> filters.gloo.solo.io.FilterStage + 6, // 2: extproc.options.gloo.solo.io.Settings.failure_mode_allow:type_name -> google.protobuf.BoolValue + 7, // 3: extproc.options.gloo.solo.io.Settings.processing_mode:type_name -> solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode + 6, // 4: extproc.options.gloo.solo.io.Settings.async_mode:type_name -> google.protobuf.BoolValue + 8, // 5: extproc.options.gloo.solo.io.Settings.message_timeout:type_name -> google.protobuf.Duration + 9, // 6: extproc.options.gloo.solo.io.Settings.stat_prefix:type_name -> google.protobuf.StringValue + 10, // 7: extproc.options.gloo.solo.io.Settings.mutation_rules:type_name -> solo.io.envoy.config.common.mutation_rules.v3.HeaderMutationRules + 8, // 8: extproc.options.gloo.solo.io.Settings.max_message_timeout:type_name -> google.protobuf.Duration + 6, // 9: extproc.options.gloo.solo.io.Settings.disable_clear_route_cache:type_name -> google.protobuf.BoolValue + 4, // 10: extproc.options.gloo.solo.io.Settings.forward_rules:type_name -> extproc.options.gloo.solo.io.HeaderForwardingRules + 11, // 11: extproc.options.gloo.solo.io.Settings.filter_metadata:type_name -> google.protobuf.Struct + 6, // 12: extproc.options.gloo.solo.io.Settings.allow_mode_override:type_name -> google.protobuf.BoolValue + 6, // 13: extproc.options.gloo.solo.io.RouteSettings.disabled:type_name -> google.protobuf.BoolValue + 3, // 14: extproc.options.gloo.solo.io.RouteSettings.overrides:type_name -> extproc.options.gloo.solo.io.Overrides + 12, // 15: extproc.options.gloo.solo.io.GrpcService.ext_proc_server_ref:type_name -> core.solo.io.ResourceRef + 9, // 16: extproc.options.gloo.solo.io.GrpcService.authority:type_name -> google.protobuf.StringValue + 13, // 17: extproc.options.gloo.solo.io.GrpcService.retry_policy:type_name -> solo.io.envoy.config.core.v3.RetryPolicy + 8, // 18: extproc.options.gloo.solo.io.GrpcService.timeout:type_name -> google.protobuf.Duration + 14, // 19: extproc.options.gloo.solo.io.GrpcService.initial_metadata:type_name -> solo.io.envoy.config.core.v3.HeaderValue + 7, // 20: extproc.options.gloo.solo.io.Overrides.processing_mode:type_name -> solo.io.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode + 6, // 21: extproc.options.gloo.solo.io.Overrides.async_mode:type_name -> google.protobuf.BoolValue + 2, // 22: extproc.options.gloo.solo.io.Overrides.grpc_service:type_name -> extproc.options.gloo.solo.io.GrpcService + 15, // 23: extproc.options.gloo.solo.io.HeaderForwardingRules.allowed_headers:type_name -> solo.io.envoy.type.matcher.v3.ListStringMatcher + 15, // 24: extproc.options.gloo.solo.io.HeaderForwardingRules.disallowed_headers:type_name -> solo.io.envoy.type.matcher.v3.ListStringMatcher + 25, // [25:25] is the sub-list for method output_type + 25, // [25:25] is the sub-list for method input_type + 25, // [25:25] is the sub-list for extension type_name + 25, // [25:25] is the sub-list for extension extendee + 0, // [0:25] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_msgTypes[1].OneofWrappers = []any{ + (*RouteSettings_Disabled)(nil), + (*RouteSettings_Overrides)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_rawDesc)), + NumEnums: 0, + NumMessages: 5, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_extproc_extproc_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/extproc/extproc.pb.hash.go b/pkg/api/gloo.solo.io/v1/enterprise/options/extproc/extproc.pb.hash.go new file mode 100644 index 000000000..894e67a2e --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/extproc/extproc.pb.hash.go @@ -0,0 +1,702 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extproc/extproc.proto + +package extproc + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Settings) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("extproc.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/extproc.Settings")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetGrpcService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcService(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFilterStage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FilterStage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFilterStage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FilterStage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFailureModeAllow()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FailureModeAllow")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFailureModeAllow(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FailureModeAllow")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetProcessingMode()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProcessingMode")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProcessingMode(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ProcessingMode")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAsyncMode()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AsyncMode")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAsyncMode(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AsyncMode")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetRequestAttributes() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + for _, v := range m.GetResponseAttributes() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetMessageTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MessageTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMessageTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MessageTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetStatPrefix()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("StatPrefix")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStatPrefix(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("StatPrefix")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMutationRules()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MutationRules")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMutationRules(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MutationRules")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxMessageTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxMessageTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxMessageTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxMessageTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDisableClearRouteCache()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisableClearRouteCache")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisableClearRouteCache(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisableClearRouteCache")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetForwardRules()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ForwardRules")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetForwardRules(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ForwardRules")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFilterMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FilterMetadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFilterMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FilterMetadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAllowModeOverride()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowModeOverride")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAllowModeOverride(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AllowModeOverride")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetMetadataContextNamespaces() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + for _, v := range m.GetTypedMetadataContextNamespaces() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RouteSettings) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("extproc.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/extproc.RouteSettings")); err != nil { + return 0, err + } + + switch m.Override.(type) { + + case *RouteSettings_Disabled: + + if h, ok := interface{}(m.GetDisabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Disabled")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisabled(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Disabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteSettings_Overrides: + + if h, ok := interface{}(m.GetOverrides()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Overrides")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOverrides(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Overrides")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *GrpcService) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("extproc.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/extproc.GrpcService")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetExtProcServerRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ExtProcServerRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtProcServerRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ExtProcServerRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAuthority()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Authority")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuthority(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Authority")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRetryPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetryPolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetInitialMetadata() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Overrides) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("extproc.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/extproc.Overrides")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetProcessingMode()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProcessingMode")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProcessingMode(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ProcessingMode")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAsyncMode()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AsyncMode")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAsyncMode(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AsyncMode")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetRequestAttributes() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + for _, v := range m.GetResponseAttributes() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetGrpcService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcService(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetMetadataContextNamespaces() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + for _, v := range m.GetTypedMetadataContextNamespaces() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HeaderForwardingRules) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("extproc.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/extproc.HeaderForwardingRules")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAllowedHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowedHeaders")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAllowedHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AllowedHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDisallowedHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisallowedHeaders")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisallowedHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisallowedHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/extproc/extproc.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/enterprise/options/extproc/extproc.pb.uniquehash.go new file mode 100644 index 000000000..5f4fc0188 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/extproc/extproc.pb.uniquehash.go @@ -0,0 +1,777 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/extproc/extproc.proto + +package extproc + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Settings) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("extproc.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/extproc.Settings")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetGrpcService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcService(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFilterStage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FilterStage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFilterStage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FilterStage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFailureModeAllow()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FailureModeAllow")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFailureModeAllow(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FailureModeAllow")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetProcessingMode()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProcessingMode")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProcessingMode(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ProcessingMode")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAsyncMode()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AsyncMode")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAsyncMode(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AsyncMode")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RequestAttributes")); err != nil { + return 0, err + } + for i, v := range m.GetRequestAttributes() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("ResponseAttributes")); err != nil { + return 0, err + } + for i, v := range m.GetResponseAttributes() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetMessageTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MessageTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMessageTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MessageTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetStatPrefix()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("StatPrefix")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStatPrefix(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("StatPrefix")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMutationRules()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MutationRules")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMutationRules(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MutationRules")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxMessageTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxMessageTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxMessageTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxMessageTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDisableClearRouteCache()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisableClearRouteCache")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisableClearRouteCache(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisableClearRouteCache")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetForwardRules()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ForwardRules")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetForwardRules(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ForwardRules")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFilterMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FilterMetadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFilterMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FilterMetadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAllowModeOverride()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowModeOverride")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAllowModeOverride(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AllowModeOverride")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("MetadataContextNamespaces")); err != nil { + return 0, err + } + for i, v := range m.GetMetadataContextNamespaces() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("TypedMetadataContextNamespaces")); err != nil { + return 0, err + } + for i, v := range m.GetTypedMetadataContextNamespaces() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteSettings) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("extproc.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/extproc.RouteSettings")); err != nil { + return 0, err + } + + switch m.Override.(type) { + + case *RouteSettings_Disabled: + + if h, ok := interface{}(m.GetDisabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Disabled")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisabled(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Disabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteSettings_Overrides: + + if h, ok := interface{}(m.GetOverrides()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Overrides")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOverrides(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Overrides")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcService) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("extproc.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/extproc.GrpcService")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetExtProcServerRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ExtProcServerRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtProcServerRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ExtProcServerRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAuthority()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Authority")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuthority(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Authority")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRetryPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetryPolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RetryPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("InitialMetadata")); err != nil { + return 0, err + } + for i, v := range m.GetInitialMetadata() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Overrides) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("extproc.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/extproc.Overrides")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetProcessingMode()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProcessingMode")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProcessingMode(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ProcessingMode")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAsyncMode()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AsyncMode")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAsyncMode(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AsyncMode")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RequestAttributes")); err != nil { + return 0, err + } + for i, v := range m.GetRequestAttributes() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("ResponseAttributes")); err != nil { + return 0, err + } + for i, v := range m.GetResponseAttributes() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetGrpcService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcService(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("MetadataContextNamespaces")); err != nil { + return 0, err + } + for i, v := range m.GetMetadataContextNamespaces() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("TypedMetadataContextNamespaces")); err != nil { + return 0, err + } + for i, v := range m.GetTypedMetadataContextNamespaces() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HeaderForwardingRules) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("extproc.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/extproc.HeaderForwardingRules")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAllowedHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowedHeaders")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAllowedHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AllowedHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDisallowedHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisallowedHeaders")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisallowedHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisallowedHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/gcp/gcp.pb.clone.go b/pkg/api/gloo.solo.io/v1/enterprise/options/gcp/gcp.pb.clone.go new file mode 100644 index 000000000..30f7a96ba --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/gcp/gcp.pb.clone.go @@ -0,0 +1,41 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/gcp/gcp.proto + +package gcp + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *UpstreamSpec) Clone() proto.Message { + var target *UpstreamSpec + if m == nil { + return target + } + target = &UpstreamSpec{} + + target.Host = m.GetHost() + + target.Audience = m.GetAudience() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/gcp/gcp.pb.equal.go b/pkg/api/gloo.solo.io/v1/enterprise/options/gcp/gcp.pb.equal.go new file mode 100644 index 000000000..bdec4c9a7 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/gcp/gcp.pb.equal.go @@ -0,0 +1,58 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/gcp/gcp.proto + +package gcp + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *UpstreamSpec) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*UpstreamSpec) + if !ok { + that2, ok := that.(UpstreamSpec) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetHost(), target.GetHost()) != 0 { + return false + } + + if strings.Compare(m.GetAudience(), target.GetAudience()) != 0 { + return false + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/gcp/gcp.pb.go b/pkg/api/gloo.solo.io/v1/enterprise/options/gcp/gcp.pb.go new file mode 100644 index 000000000..403775b69 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/gcp/gcp.pb.go @@ -0,0 +1,154 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/gcp/gcp.proto + +package gcp + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Enterprise-only: Configuration to enable GCP authentication for upstreams. +type UpstreamSpec struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Required. host of the GCP service to be connected to + Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` + // Optional override for the audience used to fetch the token from the GCP metadata server. + // By default it will use the URL of the service + Audience string `protobuf:"bytes,2,opt,name=audience,proto3" json:"audience,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamSpec) Reset() { + *x = UpstreamSpec{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamSpec) ProtoMessage() {} + +func (x *UpstreamSpec) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpstreamSpec.ProtoReflect.Descriptor instead. +func (*UpstreamSpec) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_rawDescGZIP(), []int{0} +} + +func (x *UpstreamSpec) GetHost() string { + if x != nil { + return x.Host + } + return "" +} + +func (x *UpstreamSpec) GetAudience() string { + if x != nil { + return x.Audience + } + return "" +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_rawDesc = string([]byte{ + 0x0a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x67, 0x63, 0x70, 0x2f, 0x67, 0x63, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x18, 0x67, 0x63, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3e, + 0x0a, 0x0c, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, + 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, + 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x59, + 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x4b, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, + 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x63, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_goTypes = []any{ + (*UpstreamSpec)(nil), // 0: gcp.options.gloo.solo.io.UpstreamSpec +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_gcp_gcp_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/gcp/gcp.pb.hash.go b/pkg/api/gloo.solo.io/v1/enterprise/options/gcp/gcp.pb.hash.go new file mode 100644 index 000000000..2b48c0837 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/gcp/gcp.pb.hash.go @@ -0,0 +1,54 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/gcp/gcp.proto + +package gcp + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gcp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/gcp.UpstreamSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetHost())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetAudience())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/gcp/gcp.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/enterprise/options/gcp/gcp.pb.uniquehash.go new file mode 100644 index 000000000..dcbba0b3a --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/gcp/gcp.pb.uniquehash.go @@ -0,0 +1,61 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/gcp/gcp.proto + +package gcp + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gcp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/gcp.UpstreamSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Host")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHost())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Audience")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAudience())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/jwt/jwt.pb.clone.go b/pkg/api/gloo.solo.io/v1/enterprise/options/jwt/jwt.pb.clone.go new file mode 100644 index 000000000..a07072be7 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/jwt/jwt.pb.clone.go @@ -0,0 +1,349 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/jwt/jwt.proto + +package jwt + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_jwt_authn_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/jwt_authn/v3" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *JwtStagedVhostExtension) Clone() proto.Message { + var target *JwtStagedVhostExtension + if m == nil { + return target + } + target = &JwtStagedVhostExtension{} + + if h, ok := interface{}(m.GetBeforeExtAuth()).(clone.Cloner); ok { + target.BeforeExtAuth = h.Clone().(*VhostExtension) + } else { + target.BeforeExtAuth = proto.Clone(m.GetBeforeExtAuth()).(*VhostExtension) + } + + if h, ok := interface{}(m.GetAfterExtAuth()).(clone.Cloner); ok { + target.AfterExtAuth = h.Clone().(*VhostExtension) + } else { + target.AfterExtAuth = proto.Clone(m.GetAfterExtAuth()).(*VhostExtension) + } + + return target +} + +// Clone function +func (m *JwtStagedRouteProvidersExtension) Clone() proto.Message { + var target *JwtStagedRouteProvidersExtension + if m == nil { + return target + } + target = &JwtStagedRouteProvidersExtension{} + + if h, ok := interface{}(m.GetBeforeExtAuth()).(clone.Cloner); ok { + target.BeforeExtAuth = h.Clone().(*VhostExtension) + } else { + target.BeforeExtAuth = proto.Clone(m.GetBeforeExtAuth()).(*VhostExtension) + } + + if h, ok := interface{}(m.GetAfterExtAuth()).(clone.Cloner); ok { + target.AfterExtAuth = h.Clone().(*VhostExtension) + } else { + target.AfterExtAuth = proto.Clone(m.GetAfterExtAuth()).(*VhostExtension) + } + + return target +} + +// Clone function +func (m *JwtStagedRouteExtension) Clone() proto.Message { + var target *JwtStagedRouteExtension + if m == nil { + return target + } + target = &JwtStagedRouteExtension{} + + if h, ok := interface{}(m.GetBeforeExtAuth()).(clone.Cloner); ok { + target.BeforeExtAuth = h.Clone().(*RouteExtension) + } else { + target.BeforeExtAuth = proto.Clone(m.GetBeforeExtAuth()).(*RouteExtension) + } + + if h, ok := interface{}(m.GetAfterExtAuth()).(clone.Cloner); ok { + target.AfterExtAuth = h.Clone().(*RouteExtension) + } else { + target.AfterExtAuth = proto.Clone(m.GetAfterExtAuth()).(*RouteExtension) + } + + return target +} + +// Clone function +func (m *VhostExtension) Clone() proto.Message { + var target *VhostExtension + if m == nil { + return target + } + target = &VhostExtension{} + + if m.GetProviders() != nil { + target.Providers = make(map[string]*Provider, len(m.GetProviders())) + for k, v := range m.GetProviders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Providers[k] = h.Clone().(*Provider) + } else { + target.Providers[k] = proto.Clone(v).(*Provider) + } + + } + } + + target.AllowMissingOrFailedJwt = m.GetAllowMissingOrFailedJwt() + + target.ValidationPolicy = m.GetValidationPolicy() + + return target +} + +// Clone function +func (m *RouteExtension) Clone() proto.Message { + var target *RouteExtension + if m == nil { + return target + } + target = &RouteExtension{} + + target.Disable = m.GetDisable() + + return target +} + +// Clone function +func (m *Provider) Clone() proto.Message { + var target *Provider + if m == nil { + return target + } + target = &Provider{} + + if h, ok := interface{}(m.GetJwks()).(clone.Cloner); ok { + target.Jwks = h.Clone().(*Jwks) + } else { + target.Jwks = proto.Clone(m.GetJwks()).(*Jwks) + } + + if m.GetAudiences() != nil { + target.Audiences = make([]string, len(m.GetAudiences())) + for idx, v := range m.GetAudiences() { + + target.Audiences[idx] = v + + } + } + + target.Issuer = m.GetIssuer() + + if h, ok := interface{}(m.GetTokenSource()).(clone.Cloner); ok { + target.TokenSource = h.Clone().(*TokenSource) + } else { + target.TokenSource = proto.Clone(m.GetTokenSource()).(*TokenSource) + } + + target.KeepToken = m.GetKeepToken() + + if m.GetClaimsToHeaders() != nil { + target.ClaimsToHeaders = make([]*ClaimToHeader, len(m.GetClaimsToHeaders())) + for idx, v := range m.GetClaimsToHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ClaimsToHeaders[idx] = h.Clone().(*ClaimToHeader) + } else { + target.ClaimsToHeaders[idx] = proto.Clone(v).(*ClaimToHeader) + } + + } + } + + if h, ok := interface{}(m.GetClockSkewSeconds()).(clone.Cloner); ok { + target.ClockSkewSeconds = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.ClockSkewSeconds = proto.Clone(m.GetClockSkewSeconds()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + target.AttachFailedStatusToMetadata = m.GetAttachFailedStatusToMetadata() + + return target +} + +// Clone function +func (m *Jwks) Clone() proto.Message { + var target *Jwks + if m == nil { + return target + } + target = &Jwks{} + + switch m.Jwks.(type) { + + case *Jwks_Remote: + + if h, ok := interface{}(m.GetRemote()).(clone.Cloner); ok { + target.Jwks = &Jwks_Remote{ + Remote: h.Clone().(*RemoteJwks), + } + } else { + target.Jwks = &Jwks_Remote{ + Remote: proto.Clone(m.GetRemote()).(*RemoteJwks), + } + } + + case *Jwks_Local: + + if h, ok := interface{}(m.GetLocal()).(clone.Cloner); ok { + target.Jwks = &Jwks_Local{ + Local: h.Clone().(*LocalJwks), + } + } else { + target.Jwks = &Jwks_Local{ + Local: proto.Clone(m.GetLocal()).(*LocalJwks), + } + } + + } + + return target +} + +// Clone function +func (m *RemoteJwks) Clone() proto.Message { + var target *RemoteJwks + if m == nil { + return target + } + target = &RemoteJwks{} + + target.Url = m.GetUrl() + + if h, ok := interface{}(m.GetUpstreamRef()).(clone.Cloner); ok { + target.UpstreamRef = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.UpstreamRef = proto.Clone(m.GetUpstreamRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + if h, ok := interface{}(m.GetCacheDuration()).(clone.Cloner); ok { + target.CacheDuration = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.CacheDuration = proto.Clone(m.GetCacheDuration()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetAsyncFetch()).(clone.Cloner); ok { + target.AsyncFetch = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_jwt_authn_v3.JwksAsyncFetch) + } else { + target.AsyncFetch = proto.Clone(m.GetAsyncFetch()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_jwt_authn_v3.JwksAsyncFetch) + } + + return target +} + +// Clone function +func (m *LocalJwks) Clone() proto.Message { + var target *LocalJwks + if m == nil { + return target + } + target = &LocalJwks{} + + target.Key = m.GetKey() + + return target +} + +// Clone function +func (m *TokenSource) Clone() proto.Message { + var target *TokenSource + if m == nil { + return target + } + target = &TokenSource{} + + if m.GetHeaders() != nil { + target.Headers = make([]*TokenSource_HeaderSource, len(m.GetHeaders())) + for idx, v := range m.GetHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Headers[idx] = h.Clone().(*TokenSource_HeaderSource) + } else { + target.Headers[idx] = proto.Clone(v).(*TokenSource_HeaderSource) + } + + } + } + + if m.GetQueryParams() != nil { + target.QueryParams = make([]string, len(m.GetQueryParams())) + for idx, v := range m.GetQueryParams() { + + target.QueryParams[idx] = v + + } + } + + return target +} + +// Clone function +func (m *ClaimToHeader) Clone() proto.Message { + var target *ClaimToHeader + if m == nil { + return target + } + target = &ClaimToHeader{} + + target.Claim = m.GetClaim() + + target.Header = m.GetHeader() + + target.Append = m.GetAppend() + + return target +} + +// Clone function +func (m *TokenSource_HeaderSource) Clone() proto.Message { + var target *TokenSource_HeaderSource + if m == nil { + return target + } + target = &TokenSource_HeaderSource{} + + target.Header = m.GetHeader() + + target.Prefix = m.GetPrefix() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/jwt/jwt.pb.equal.go b/pkg/api/gloo.solo.io/v1/enterprise/options/jwt/jwt.pb.equal.go index 81c98a1fc..64d878bfd 100644 --- a/pkg/api/gloo.solo.io/v1/enterprise/options/jwt/jwt.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/jwt/jwt.pb.equal.go @@ -69,6 +69,50 @@ func (m *JwtStagedVhostExtension) Equal(that interface{}) bool { return true } +// Equal function +func (m *JwtStagedRouteProvidersExtension) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*JwtStagedRouteProvidersExtension) + if !ok { + that2, ok := that.(JwtStagedRouteProvidersExtension) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetBeforeExtAuth()).(equality.Equalizer); ok { + if !h.Equal(target.GetBeforeExtAuth()) { + return false + } + } else { + if !proto.Equal(m.GetBeforeExtAuth(), target.GetBeforeExtAuth()) { + return false + } + } + + if h, ok := interface{}(m.GetAfterExtAuth()).(equality.Equalizer); ok { + if !h.Equal(target.GetAfterExtAuth()) { + return false + } + } else { + if !proto.Equal(m.GetAfterExtAuth(), target.GetAfterExtAuth()) { + return false + } + } + + return true +} + // Equal function func (m *JwtStagedRouteExtension) Equal(that interface{}) bool { if that == nil { @@ -155,6 +199,10 @@ func (m *VhostExtension) Equal(that interface{}) bool { return false } + if m.GetValidationPolicy() != target.GetValidationPolicy() { + return false + } + return true } @@ -263,6 +311,20 @@ func (m *Provider) Equal(that interface{}) bool { } + if h, ok := interface{}(m.GetClockSkewSeconds()).(equality.Equalizer); ok { + if !h.Equal(target.GetClockSkewSeconds()) { + return false + } + } else { + if !proto.Equal(m.GetClockSkewSeconds(), target.GetClockSkewSeconds()) { + return false + } + } + + if strings.Compare(m.GetAttachFailedStatusToMetadata(), target.GetAttachFailedStatusToMetadata()) != 0 { + return false + } + return true } @@ -290,6 +352,9 @@ func (m *Jwks) Equal(that interface{}) bool { switch m.Jwks.(type) { case *Jwks_Remote: + if _, ok := target.Jwks.(*Jwks_Remote); !ok { + return false + } if h, ok := interface{}(m.GetRemote()).(equality.Equalizer); ok { if !h.Equal(target.GetRemote()) { @@ -302,6 +367,9 @@ func (m *Jwks) Equal(that interface{}) bool { } case *Jwks_Local: + if _, ok := target.Jwks.(*Jwks_Local); !ok { + return false + } if h, ok := interface{}(m.GetLocal()).(equality.Equalizer); ok { if !h.Equal(target.GetLocal()) { @@ -313,6 +381,11 @@ func (m *Jwks) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.Jwks != target.Jwks { + return false + } } return true @@ -363,6 +436,16 @@ func (m *RemoteJwks) Equal(that interface{}) bool { } } + if h, ok := interface{}(m.GetAsyncFetch()).(equality.Equalizer); ok { + if !h.Equal(target.GetAsyncFetch()) { + return false + } + } else { + if !proto.Equal(m.GetAsyncFetch(), target.GetAsyncFetch()) { + return false + } + } + return true } diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/jwt/jwt.pb.go b/pkg/api/gloo.solo.io/v1/enterprise/options/jwt/jwt.pb.go index 5b3198234..30ec7ac09 100644 --- a/pkg/api/gloo.solo.io/v1/enterprise/options/jwt/jwt.pb.go +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/jwt/jwt.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/jwt/jwt.proto @@ -9,13 +9,15 @@ package jwt import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - duration "github.com/golang/protobuf/ptypes/duration" _ "github.com/solo-io/protoc-gen-ext/extproto" + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/jwt_authn/v3" core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -25,28 +27,82 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 +type VhostExtension_ValidationPolicy int32 -type JwtStagedVhostExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +const ( + // Default value. Allow only requests that authenticate with a valid JWT to succeed. + // Note that the `allowMissingOrFailed=true` setting takes precedence. In such a case, even if you explicitly set `validationPolicy=REQUIRE_VALID`, this field is ignored. + VhostExtension_REQUIRE_VALID VhostExtension_ValidationPolicy = 0 + // Allow requests to succeed even if JWT authentication is missing, but fail when an invalid JWT token is presented. + // You might use this setting when later steps depend on input from the JWT. + // For example, you might add claims from the JWT to request headers with the claimsToHeaders field. + // As such, you may want to make sure that any provided JWT is valid. If not, the request fails, + // which informs the requester that their JWT is not valid. + // Requests without a JWT, however, still succeed and skip JWT validation. + VhostExtension_ALLOW_MISSING VhostExtension_ValidationPolicy = 1 + // Allow requests to succeed even when a JWT is missing or JWT verification fails. + // For example, you might apply multiple policies to your routes so that requests can authenticate with either a + // JWT or another method such as external auth. Use this value + // to allow a failed JWT auth request to pass through to the other authentication method. + VhostExtension_ALLOW_MISSING_OR_FAILED VhostExtension_ValidationPolicy = 2 +) +// Enum value maps for VhostExtension_ValidationPolicy. +var ( + VhostExtension_ValidationPolicy_name = map[int32]string{ + 0: "REQUIRE_VALID", + 1: "ALLOW_MISSING", + 2: "ALLOW_MISSING_OR_FAILED", + } + VhostExtension_ValidationPolicy_value = map[string]int32{ + "REQUIRE_VALID": 0, + "ALLOW_MISSING": 1, + "ALLOW_MISSING_OR_FAILED": 2, + } +) + +func (x VhostExtension_ValidationPolicy) Enum() *VhostExtension_ValidationPolicy { + p := new(VhostExtension_ValidationPolicy) + *p = x + return p +} + +func (x VhostExtension_ValidationPolicy) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (VhostExtension_ValidationPolicy) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_enumTypes[0].Descriptor() +} + +func (VhostExtension_ValidationPolicy) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_enumTypes[0] +} + +func (x VhostExtension_ValidationPolicy) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use VhostExtension_ValidationPolicy.Descriptor instead. +func (VhostExtension_ValidationPolicy) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP(), []int{3, 0} +} + +type JwtStagedVhostExtension struct { + state protoimpl.MessageState `protogen:"open.v1"` // JWT Virtual host config for the JWT filter that runs before the extauth filter. BeforeExtAuth *VhostExtension `protobuf:"bytes,1,opt,name=before_ext_auth,json=beforeExtAuth,proto3" json:"before_ext_auth,omitempty"` // JWT Virtual host config for the JWT filter that runs after the extauth filter. - AfterExtAuth *VhostExtension `protobuf:"bytes,2,opt,name=after_ext_auth,json=afterExtAuth,proto3" json:"after_ext_auth,omitempty"` + AfterExtAuth *VhostExtension `protobuf:"bytes,2,opt,name=after_ext_auth,json=afterExtAuth,proto3" json:"after_ext_auth,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JwtStagedVhostExtension) Reset() { *x = JwtStagedVhostExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JwtStagedVhostExtension) String() string { @@ -57,7 +113,7 @@ func (*JwtStagedVhostExtension) ProtoMessage() {} func (x *JwtStagedVhostExtension) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -86,24 +142,75 @@ func (x *JwtStagedVhostExtension) GetAfterExtAuth() *VhostExtension { return nil } -type JwtStagedRouteExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type JwtStagedRouteProvidersExtension struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Per-route JWT config for the JWT filter that runs before the extauth filter. + BeforeExtAuth *VhostExtension `protobuf:"bytes,1,opt,name=before_ext_auth,json=beforeExtAuth,proto3" json:"before_ext_auth,omitempty"` + // Per-route JWT config for the JWT filter that runs before the extauth filter. + AfterExtAuth *VhostExtension `protobuf:"bytes,2,opt,name=after_ext_auth,json=afterExtAuth,proto3" json:"after_ext_auth,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JwtStagedRouteProvidersExtension) Reset() { + *x = JwtStagedRouteProvidersExtension{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JwtStagedRouteProvidersExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JwtStagedRouteProvidersExtension) ProtoMessage() {} + +func (x *JwtStagedRouteProvidersExtension) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} - // JWT route config for the JWT filter that runs after the extauth filter. +// Deprecated: Use JwtStagedRouteProvidersExtension.ProtoReflect.Descriptor instead. +func (*JwtStagedRouteProvidersExtension) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP(), []int{1} +} + +func (x *JwtStagedRouteProvidersExtension) GetBeforeExtAuth() *VhostExtension { + if x != nil { + return x.BeforeExtAuth + } + return nil +} + +func (x *JwtStagedRouteProvidersExtension) GetAfterExtAuth() *VhostExtension { + if x != nil { + return x.AfterExtAuth + } + return nil +} + +type JwtStagedRouteExtension struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Per-route JWT config for the JWT filter that runs before the extauth filter. BeforeExtAuth *RouteExtension `protobuf:"bytes,1,opt,name=before_ext_auth,json=beforeExtAuth,proto3" json:"before_ext_auth,omitempty"` - // JWT route config for the JWT filter that runs after the extauth filter. - AfterExtAuth *RouteExtension `protobuf:"bytes,2,opt,name=after_ext_auth,json=afterExtAuth,proto3" json:"after_ext_auth,omitempty"` + // Per-route JWT config for the JWT filter that runs before the extauth filter. + AfterExtAuth *RouteExtension `protobuf:"bytes,2,opt,name=after_ext_auth,json=afterExtAuth,proto3" json:"after_ext_auth,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JwtStagedRouteExtension) Reset() { *x = JwtStagedRouteExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JwtStagedRouteExtension) String() string { @@ -113,8 +220,8 @@ func (x *JwtStagedRouteExtension) String() string { func (*JwtStagedRouteExtension) ProtoMessage() {} func (x *JwtStagedRouteExtension) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[2] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -126,7 +233,7 @@ func (x *JwtStagedRouteExtension) ProtoReflect() protoreflect.Message { // Deprecated: Use JwtStagedRouteExtension.ProtoReflect.Descriptor instead. func (*JwtStagedRouteExtension) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP(), []int{1} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP(), []int{2} } func (x *JwtStagedRouteExtension) GetBeforeExtAuth() *RouteExtension { @@ -144,26 +251,29 @@ func (x *JwtStagedRouteExtension) GetAfterExtAuth() *RouteExtension { } type VhostExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Map of JWT provider name to Provider. // If specified, multiple providers will be `OR`-ed together and will allow validation to any of the providers. - Providers map[string]*Provider `protobuf:"bytes,4,rep,name=providers,proto3" json:"providers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Providers map[string]*Provider `protobuf:"bytes,4,rep,name=providers,proto3" json:"providers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Allow pass through of JWT requests for this virtual host, even if JWT token is missing or JWT auth failed. // If this is false (default false), requests that fail JWT authentication will fail authorization immediately. // For example, if a request requires either JWT auth OR another auth method, this can be enabled to allow a failed JWT auth request to pass through to the other auth method. + // Deprecated: use validation_policy instead. + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/jwt/jwt.proto. AllowMissingOrFailedJwt bool `protobuf:"varint,2,opt,name=allow_missing_or_failed_jwt,json=allowMissingOrFailedJwt,proto3" json:"allow_missing_or_failed_jwt,omitempty"` + // Optional: Configure how JWT validation works, with the flexibility to handle requests with missing or invalid JWTs. + // By default, after applying JWT policy to a route, only requests that authenticate with a valid JWT succeed. + ValidationPolicy VhostExtension_ValidationPolicy `protobuf:"varint,3,opt,name=validation_policy,json=validationPolicy,proto3,enum=jwt.options.gloo.solo.io.VhostExtension_ValidationPolicy" json:"validation_policy,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VhostExtension) Reset() { *x = VhostExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VhostExtension) String() string { @@ -173,8 +283,8 @@ func (x *VhostExtension) String() string { func (*VhostExtension) ProtoMessage() {} func (x *VhostExtension) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[3] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -186,7 +296,7 @@ func (x *VhostExtension) ProtoReflect() protoreflect.Message { // Deprecated: Use VhostExtension.ProtoReflect.Descriptor instead. func (*VhostExtension) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP(), []int{2} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP(), []int{3} } func (x *VhostExtension) GetProviders() map[string]*Provider { @@ -196,6 +306,7 @@ func (x *VhostExtension) GetProviders() map[string]*Provider { return nil } +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/jwt/jwt.proto. func (x *VhostExtension) GetAllowMissingOrFailedJwt() bool { if x != nil { return x.AllowMissingOrFailedJwt @@ -203,22 +314,26 @@ func (x *VhostExtension) GetAllowMissingOrFailedJwt() bool { return false } -type RouteExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *VhostExtension) GetValidationPolicy() VhostExtension_ValidationPolicy { + if x != nil { + return x.ValidationPolicy + } + return VhostExtension_REQUIRE_VALID +} +type RouteExtension struct { + state protoimpl.MessageState `protogen:"open.v1"` // Disable JWT checks on this route. - Disable bool `protobuf:"varint,1,opt,name=disable,proto3" json:"disable,omitempty"` + Disable bool `protobuf:"varint,1,opt,name=disable,proto3" json:"disable,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteExtension) Reset() { *x = RouteExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteExtension) String() string { @@ -228,8 +343,8 @@ func (x *RouteExtension) String() string { func (*RouteExtension) ProtoMessage() {} func (x *RouteExtension) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[4] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -241,7 +356,7 @@ func (x *RouteExtension) ProtoReflect() protoreflect.Message { // Deprecated: Use RouteExtension.ProtoReflect.Descriptor instead. func (*RouteExtension) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP(), []int{3} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP(), []int{4} } func (x *RouteExtension) GetDisable() bool { @@ -252,10 +367,7 @@ func (x *RouteExtension) GetDisable() bool { } type Provider struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The source for the keys to validate JWTs. Jwks *Jwks `protobuf:"bytes,1,opt,name=jwks,proto3" json:"jwks,omitempty"` // An incoming JWT must have an 'aud' claim and it must be in this list. @@ -268,15 +380,24 @@ type Provider struct { KeepToken bool `protobuf:"varint,5,opt,name=keep_token,json=keepToken,proto3" json:"keep_token,omitempty"` // What claims should be copied to upstream headers. ClaimsToHeaders []*ClaimToHeader `protobuf:"bytes,6,rep,name=claims_to_headers,json=claimsToHeaders,proto3" json:"claims_to_headers,omitempty"` + // Optional: ClockSkewSeconds is used to verify time constraints, such as `exp` and `npf`. Default is 60s + ClockSkewSeconds *wrapperspb.UInt32Value `protobuf:"bytes,8,opt,name=clock_skew_seconds,json=clockSkewSeconds,proto3" json:"clock_skew_seconds,omitempty"` + // Optional: When this field is set, the specified value is used as the key in DynamicMetadata to store the JWT failure status code and message under that key. If the value is empty (i.e., ""), it is ignored. + // This field is particularly useful when logging the failure status. + // + // For example, if the value of `attach_failed_status_to_metadata` is 'custom_auth_failure_status' then + // the failure status can be accessed in the access log as '%DYNAMIC_METADATA(envoy.filters.http.jwt_authn:custom_auth_failure_status)' + // Note: status code and message can be individually accessed as '%DYNAMIC_METADATA(envoy.filters.http.jwt_authn:custom_auth_failure_status.code)' and '%DYNAMIC_METADATA(envoy.filters.http.jwt_authn:custom_auth_failure_status.message)' respectively. + AttachFailedStatusToMetadata string `protobuf:"bytes,9,opt,name=attach_failed_status_to_metadata,json=attachFailedStatusToMetadata,proto3" json:"attach_failed_status_to_metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Provider) Reset() { *x = Provider{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Provider) String() string { @@ -286,8 +407,8 @@ func (x *Provider) String() string { func (*Provider) ProtoMessage() {} func (x *Provider) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[5] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -299,7 +420,7 @@ func (x *Provider) ProtoReflect() protoreflect.Message { // Deprecated: Use Provider.ProtoReflect.Descriptor instead. func (*Provider) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP(), []int{4} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP(), []int{5} } func (x *Provider) GetJwks() *Jwks { @@ -344,24 +465,36 @@ func (x *Provider) GetClaimsToHeaders() []*ClaimToHeader { return nil } -type Jwks struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *Provider) GetClockSkewSeconds() *wrapperspb.UInt32Value { + if x != nil { + return x.ClockSkewSeconds + } + return nil +} - // Types that are assignable to Jwks: +func (x *Provider) GetAttachFailedStatusToMetadata() string { + if x != nil { + return x.AttachFailedStatusToMetadata + } + return "" +} + +type Jwks struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Jwks: + // // *Jwks_Remote // *Jwks_Local - Jwks isJwks_Jwks `protobuf_oneof:"jwks"` + Jwks isJwks_Jwks `protobuf_oneof:"jwks"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Jwks) Reset() { *x = Jwks{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Jwks) String() string { @@ -371,8 +504,8 @@ func (x *Jwks) String() string { func (*Jwks) ProtoMessage() {} func (x *Jwks) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[6] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -384,26 +517,30 @@ func (x *Jwks) ProtoReflect() protoreflect.Message { // Deprecated: Use Jwks.ProtoReflect.Descriptor instead. func (*Jwks) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP(), []int{5} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP(), []int{6} } -func (m *Jwks) GetJwks() isJwks_Jwks { - if m != nil { - return m.Jwks +func (x *Jwks) GetJwks() isJwks_Jwks { + if x != nil { + return x.Jwks } return nil } func (x *Jwks) GetRemote() *RemoteJwks { - if x, ok := x.GetJwks().(*Jwks_Remote); ok { - return x.Remote + if x != nil { + if x, ok := x.Jwks.(*Jwks_Remote); ok { + return x.Remote + } } return nil } func (x *Jwks) GetLocal() *LocalJwks { - if x, ok := x.GetJwks().(*Jwks_Local); ok { - return x.Local + if x != nil { + if x, ok := x.Jwks.(*Jwks_Local); ok { + return x.Local + } } return nil } @@ -427,27 +564,42 @@ func (*Jwks_Remote) isJwks_Jwks() {} func (*Jwks_Local) isJwks_Jwks() {} type RemoteJwks struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The url used when accessing the upstream for Json Web Key Set. // This is used to set the host and path in the request Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` // The Upstream representing the Json Web Key Set server + // + // Note: Setting this to an upstream using an HTTP tunnel (`httpProxyHostname`) + // requires also using that upstream in a route. UpstreamRef *core.ResourceRef `protobuf:"bytes,2,opt,name=upstream_ref,json=upstreamRef,proto3" json:"upstream_ref,omitempty"` // Duration after which the cached JWKS should be expired. // If not specified, default cache duration is 5 minutes. - CacheDuration *duration.Duration `protobuf:"bytes,4,opt,name=cache_duration,json=cacheDuration,proto3" json:"cache_duration,omitempty"` + CacheDuration *durationpb.Duration `protobuf:"bytes,4,opt,name=cache_duration,json=cacheDuration,proto3" json:"cache_duration,omitempty"` + // Fetch Jwks asynchronously in the main thread before the listener is activated. + // Fetched Jwks can be used by all worker threads. + // + // If this feature is not enabled: + // + // - The Jwks is fetched on-demand when the requests come. During the fetching, first + // few requests are paused until the Jwks is fetched. + // - Each worker thread fetches its own Jwks since Jwks cache is per worker thread. + // + // If this feature is enabled: + // + // - Fetched Jwks is done in the main thread before the listener is activated. Its fetched + // Jwks can be used by all worker threads. Each worker thread doesn't need to fetch its own. + // - Jwks is ready when the requests come, not need to wait for the Jwks fetching. + AsyncFetch *v3.JwksAsyncFetch `protobuf:"bytes,3,opt,name=async_fetch,json=asyncFetch,proto3" json:"async_fetch,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RemoteJwks) Reset() { *x = RemoteJwks{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoteJwks) String() string { @@ -457,8 +609,8 @@ func (x *RemoteJwks) String() string { func (*RemoteJwks) ProtoMessage() {} func (x *RemoteJwks) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[7] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -470,7 +622,7 @@ func (x *RemoteJwks) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoteJwks.ProtoReflect.Descriptor instead. func (*RemoteJwks) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP(), []int{6} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP(), []int{7} } func (x *RemoteJwks) GetUrl() string { @@ -487,29 +639,33 @@ func (x *RemoteJwks) GetUpstreamRef() *core.ResourceRef { return nil } -func (x *RemoteJwks) GetCacheDuration() *duration.Duration { +func (x *RemoteJwks) GetCacheDuration() *durationpb.Duration { if x != nil { return x.CacheDuration } return nil } -type LocalJwks struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *RemoteJwks) GetAsyncFetch() *v3.JwksAsyncFetch { + if x != nil { + return x.AsyncFetch + } + return nil +} +type LocalJwks struct { + state protoimpl.MessageState `protogen:"open.v1"` // Inline key. this can be json web key, key-set or PEM format. - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LocalJwks) Reset() { *x = LocalJwks{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LocalJwks) String() string { @@ -519,8 +675,8 @@ func (x *LocalJwks) String() string { func (*LocalJwks) ProtoMessage() {} func (x *LocalJwks) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[8] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -532,7 +688,7 @@ func (x *LocalJwks) ProtoReflect() protoreflect.Message { // Deprecated: Use LocalJwks.ProtoReflect.Descriptor instead. func (*LocalJwks) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP(), []int{7} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP(), []int{8} } func (x *LocalJwks) GetKey() string { @@ -544,23 +700,20 @@ func (x *LocalJwks) GetKey() string { // Describes the location of a JWT token type TokenSource struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Try to retrieve token from these headers Headers []*TokenSource_HeaderSource `protobuf:"bytes,1,rep,name=headers,proto3" json:"headers,omitempty"` // Try to retrieve token from these query params - QueryParams []string `protobuf:"bytes,2,rep,name=query_params,json=queryParams,proto3" json:"query_params,omitempty"` + QueryParams []string `protobuf:"bytes,2,rep,name=query_params,json=queryParams,proto3" json:"query_params,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TokenSource) Reset() { *x = TokenSource{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TokenSource) String() string { @@ -570,8 +723,8 @@ func (x *TokenSource) String() string { func (*TokenSource) ProtoMessage() {} func (x *TokenSource) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[9] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -583,7 +736,7 @@ func (x *TokenSource) ProtoReflect() protoreflect.Message { // Deprecated: Use TokenSource.ProtoReflect.Descriptor instead. func (*TokenSource) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP(), []int{8} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP(), []int{9} } func (x *TokenSource) GetHeaders() []*TokenSource_HeaderSource { @@ -602,25 +755,22 @@ func (x *TokenSource) GetQueryParams() []string { // Allows copying verified claims to headers sent upstream type ClaimToHeader struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Claim name. for example, "sub" Claim string `protobuf:"bytes,1,opt,name=claim,proto3" json:"claim,omitempty"` // The header the claim will be copied to. for example, "x-sub". Header string `protobuf:"bytes,2,opt,name=header,proto3" json:"header,omitempty"` // If the header exists, append to it (true), or overwrite it (false). - Append bool `protobuf:"varint,4,opt,name=append,proto3" json:"append,omitempty"` + Append bool `protobuf:"varint,4,opt,name=append,proto3" json:"append,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ClaimToHeader) Reset() { *x = ClaimToHeader{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ClaimToHeader) String() string { @@ -630,8 +780,8 @@ func (x *ClaimToHeader) String() string { func (*ClaimToHeader) ProtoMessage() {} func (x *ClaimToHeader) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[10] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -643,7 +793,7 @@ func (x *ClaimToHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use ClaimToHeader.ProtoReflect.Descriptor instead. func (*ClaimToHeader) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP(), []int{9} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP(), []int{10} } func (x *ClaimToHeader) GetClaim() string { @@ -669,23 +819,20 @@ func (x *ClaimToHeader) GetAppend() bool { // Describes how to retrieve a JWT from a header type TokenSource_HeaderSource struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the header. for example, "authorization" Header string `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // Prefix before the token. for example, "Bearer " - Prefix string `protobuf:"bytes,2,opt,name=prefix,proto3" json:"prefix,omitempty"` + Prefix string `protobuf:"bytes,2,opt,name=prefix,proto3" json:"prefix,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TokenSource_HeaderSource) Reset() { *x = TokenSource_HeaderSource{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TokenSource_HeaderSource) String() string { @@ -695,8 +842,8 @@ func (x *TokenSource_HeaderSource) String() string { func (*TokenSource_HeaderSource) ProtoMessage() {} func (x *TokenSource_HeaderSource) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[12] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -708,7 +855,7 @@ func (x *TokenSource_HeaderSource) ProtoReflect() protoreflect.Message { // Deprecated: Use TokenSource_HeaderSource.ProtoReflect.Descriptor instead. func (*TokenSource_HeaderSource) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP(), []int{8, 0} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP(), []int{9, 0} } func (x *TokenSource_HeaderSource) GetHeader() string { @@ -727,7 +874,7 @@ func (x *TokenSource_HeaderSource) GetPrefix() string { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDesc = string([]byte{ 0x0a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -737,92 +884,141 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jw 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, - 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbb, 0x01, 0x0a, - 0x17, 0x4a, 0x77, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x64, 0x56, 0x68, 0x6f, 0x73, 0x74, 0x45, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x0f, 0x62, 0x65, 0x66, 0x6f, - 0x72, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x28, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x68, 0x6f, - 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x62, 0x65, 0x66, - 0x6f, 0x72, 0x65, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x12, 0x4e, 0x0a, 0x0e, 0x61, 0x66, - 0x74, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x68, - 0x6f, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x66, - 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x22, 0xbb, 0x01, 0x0a, 0x17, 0x4a, - 0x77, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x0f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, - 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x62, 0x65, 0x66, 0x6f, 0x72, - 0x65, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x12, 0x4e, 0x0a, 0x0e, 0x61, 0x66, 0x74, 0x65, - 0x72, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x28, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, - 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x66, 0x74, 0x65, - 0x72, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x22, 0x87, 0x02, 0x0a, 0x0e, 0x56, 0x68, 0x6f, - 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x09, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, + 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x6b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x6a, 0x77, 0x74, 0x5f, + 0x61, 0x75, 0x74, 0x68, 0x6e, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, + 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbb, 0x01, 0x0a, 0x17, 0x4a, 0x77, + 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x64, 0x56, 0x68, 0x6f, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x0f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x5f, + 0x65, 0x78, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x68, 0x6f, 0x73, 0x74, 0x45, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x73, 0x12, 0x3c, 0x0a, 0x1b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x72, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x6a, 0x77, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x69, - 0x73, 0x73, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4a, 0x77, 0x74, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, + 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x12, 0x4e, 0x0a, 0x0e, 0x61, 0x66, 0x74, 0x65, 0x72, + 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x28, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x68, 0x6f, 0x73, 0x74, + 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x66, 0x74, 0x65, 0x72, + 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x22, 0xc4, 0x01, 0x0a, 0x20, 0x4a, 0x77, 0x74, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x73, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x0f, + 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x56, 0x68, 0x6f, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x0d, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x12, 0x4e, + 0x0a, 0x0e, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x56, 0x68, 0x6f, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x0c, 0x61, 0x66, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x22, 0xbb, + 0x01, 0x0a, 0x17, 0x4a, 0x77, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, + 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x0f, 0x62, 0x65, + 0x66, 0x6f, 0x72, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x62, + 0x65, 0x66, 0x6f, 0x72, 0x65, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x12, 0x4e, 0x0a, 0x0e, + 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0c, + 0x61, 0x66, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x22, 0xca, 0x03, 0x0a, + 0x0e, 0x56, 0x68, 0x6f, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x55, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x68, + 0x6f, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x40, 0x0a, 0x1b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x72, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, + 0x64, 0x5f, 0x6a, 0x77, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, + 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x46, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4a, 0x77, 0x74, 0x12, 0x66, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, + 0x68, 0x6f, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x10, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x60, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x38, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x2a, 0x0a, 0x0e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x22, 0xb2, - 0x02, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x04, 0x6a, - 0x77, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6a, 0x77, 0x74, 0x2e, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4a, 0x77, 0x6b, 0x73, 0x52, 0x04, 0x6a, 0x77, 0x6b, 0x73, 0x12, - 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x16, 0x0a, - 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, - 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6a, 0x77, - 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, - 0x1d, 0x0a, 0x0a, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x09, 0x6b, 0x65, 0x65, 0x70, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x53, - 0x0a, 0x11, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6a, 0x77, 0x74, 0x2e, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x52, 0x0f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x73, 0x22, 0x8b, 0x01, 0x0a, 0x04, 0x4a, 0x77, 0x6b, 0x73, 0x12, 0x3e, 0x0a, 0x06, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6a, - 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4a, 0x77, - 0x6b, 0x73, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x05, - 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6a, 0x77, - 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4a, 0x77, 0x6b, 0x73, - 0x48, 0x00, 0x52, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x06, 0x0a, 0x04, 0x6a, 0x77, 0x6b, - 0x73, 0x22, 0x9e, 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4a, 0x77, 0x6b, 0x73, - 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, - 0x72, 0x6c, 0x12, 0x3c, 0x0a, 0x0c, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x72, - 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x52, 0x65, 0x66, 0x52, 0x0b, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, - 0x12, 0x40, 0x0a, 0x0e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x1d, 0x0a, 0x09, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4a, 0x77, 0x6b, 0x73, 0x12, + 0x38, 0x01, 0x22, 0x55, 0x0a, 0x10, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, + 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x4c, 0x4c, + 0x4f, 0x57, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, + 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x4f, 0x52, + 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x22, 0x2a, 0x0a, 0x0e, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x22, 0xc6, 0x03, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x12, 0x32, 0x0a, 0x04, 0x6a, 0x77, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4a, 0x77, 0x6b, 0x73, + 0x52, 0x04, 0x6a, 0x77, 0x6b, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, + 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x64, 0x69, 0x65, + 0x6e, 0x63, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x0c, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6b, 0x65, 0x65, 0x70, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x53, 0x0a, 0x11, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x5f, + 0x74, 0x6f, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6c, 0x61, 0x69, + 0x6d, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x0f, 0x63, 0x6c, 0x61, 0x69, 0x6d, + 0x73, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x4a, 0x0a, 0x12, 0x63, 0x6c, + 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6b, 0x65, 0x77, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x6b, 0x65, 0x77, 0x53, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x46, 0x0a, 0x20, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, + 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x74, + 0x6f, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x1c, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x54, 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x8b, + 0x01, 0x0a, 0x04, 0x4a, 0x77, 0x6b, 0x73, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4a, 0x77, 0x6b, 0x73, 0x48, 0x00, 0x52, + 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4a, 0x77, 0x6b, 0x73, 0x48, 0x00, 0x52, 0x05, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x06, 0x0a, 0x04, 0x6a, 0x77, 0x6b, 0x73, 0x22, 0x83, 0x02, 0x0a, + 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4a, 0x77, 0x6b, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, + 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x3c, 0x0a, + 0x0c, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x0b, + 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x12, 0x40, 0x0a, 0x0e, 0x63, + 0x61, 0x63, 0x68, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, + 0x63, 0x61, 0x63, 0x68, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x63, 0x0a, + 0x0b, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x66, 0x65, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6a, 0x77, 0x74, 0x5f, 0x61, + 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x77, 0x6b, 0x73, 0x41, 0x73, 0x79, 0x6e, + 0x63, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x0a, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x65, 0x74, + 0x63, 0x68, 0x22, 0x1d, 0x0a, 0x09, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4a, 0x77, 0x6b, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0xbe, 0x01, 0x0a, 0x0b, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x4c, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, @@ -841,64 +1037,74 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jw 0x28, 0x09, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x42, 0x55, 0x5a, 0x4b, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, - 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6a, 0x77, 0x74, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x08, 0x52, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x42, 0x59, 0xb8, 0xf5, 0x04, 0x01, 0xc0, + 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x6a, 0x77, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes = make([]protoimpl.MessageInfo, 12) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_goTypes = []interface{}{ - (*JwtStagedVhostExtension)(nil), // 0: jwt.options.gloo.solo.io.JwtStagedVhostExtension - (*JwtStagedRouteExtension)(nil), // 1: jwt.options.gloo.solo.io.JwtStagedRouteExtension - (*VhostExtension)(nil), // 2: jwt.options.gloo.solo.io.VhostExtension - (*RouteExtension)(nil), // 3: jwt.options.gloo.solo.io.RouteExtension - (*Provider)(nil), // 4: jwt.options.gloo.solo.io.Provider - (*Jwks)(nil), // 5: jwt.options.gloo.solo.io.Jwks - (*RemoteJwks)(nil), // 6: jwt.options.gloo.solo.io.RemoteJwks - (*LocalJwks)(nil), // 7: jwt.options.gloo.solo.io.LocalJwks - (*TokenSource)(nil), // 8: jwt.options.gloo.solo.io.TokenSource - (*ClaimToHeader)(nil), // 9: jwt.options.gloo.solo.io.ClaimToHeader - nil, // 10: jwt.options.gloo.solo.io.VhostExtension.ProvidersEntry - (*TokenSource_HeaderSource)(nil), // 11: jwt.options.gloo.solo.io.TokenSource.HeaderSource - (*core.ResourceRef)(nil), // 12: core.solo.io.ResourceRef - (*duration.Duration)(nil), // 13: google.protobuf.Duration +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_goTypes = []any{ + (VhostExtension_ValidationPolicy)(0), // 0: jwt.options.gloo.solo.io.VhostExtension.ValidationPolicy + (*JwtStagedVhostExtension)(nil), // 1: jwt.options.gloo.solo.io.JwtStagedVhostExtension + (*JwtStagedRouteProvidersExtension)(nil), // 2: jwt.options.gloo.solo.io.JwtStagedRouteProvidersExtension + (*JwtStagedRouteExtension)(nil), // 3: jwt.options.gloo.solo.io.JwtStagedRouteExtension + (*VhostExtension)(nil), // 4: jwt.options.gloo.solo.io.VhostExtension + (*RouteExtension)(nil), // 5: jwt.options.gloo.solo.io.RouteExtension + (*Provider)(nil), // 6: jwt.options.gloo.solo.io.Provider + (*Jwks)(nil), // 7: jwt.options.gloo.solo.io.Jwks + (*RemoteJwks)(nil), // 8: jwt.options.gloo.solo.io.RemoteJwks + (*LocalJwks)(nil), // 9: jwt.options.gloo.solo.io.LocalJwks + (*TokenSource)(nil), // 10: jwt.options.gloo.solo.io.TokenSource + (*ClaimToHeader)(nil), // 11: jwt.options.gloo.solo.io.ClaimToHeader + nil, // 12: jwt.options.gloo.solo.io.VhostExtension.ProvidersEntry + (*TokenSource_HeaderSource)(nil), // 13: jwt.options.gloo.solo.io.TokenSource.HeaderSource + (*wrapperspb.UInt32Value)(nil), // 14: google.protobuf.UInt32Value + (*core.ResourceRef)(nil), // 15: core.solo.io.ResourceRef + (*durationpb.Duration)(nil), // 16: google.protobuf.Duration + (*v3.JwksAsyncFetch)(nil), // 17: solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwksAsyncFetch } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_depIdxs = []int32{ - 2, // 0: jwt.options.gloo.solo.io.JwtStagedVhostExtension.before_ext_auth:type_name -> jwt.options.gloo.solo.io.VhostExtension - 2, // 1: jwt.options.gloo.solo.io.JwtStagedVhostExtension.after_ext_auth:type_name -> jwt.options.gloo.solo.io.VhostExtension - 3, // 2: jwt.options.gloo.solo.io.JwtStagedRouteExtension.before_ext_auth:type_name -> jwt.options.gloo.solo.io.RouteExtension - 3, // 3: jwt.options.gloo.solo.io.JwtStagedRouteExtension.after_ext_auth:type_name -> jwt.options.gloo.solo.io.RouteExtension - 10, // 4: jwt.options.gloo.solo.io.VhostExtension.providers:type_name -> jwt.options.gloo.solo.io.VhostExtension.ProvidersEntry - 5, // 5: jwt.options.gloo.solo.io.Provider.jwks:type_name -> jwt.options.gloo.solo.io.Jwks - 8, // 6: jwt.options.gloo.solo.io.Provider.token_source:type_name -> jwt.options.gloo.solo.io.TokenSource - 9, // 7: jwt.options.gloo.solo.io.Provider.claims_to_headers:type_name -> jwt.options.gloo.solo.io.ClaimToHeader - 6, // 8: jwt.options.gloo.solo.io.Jwks.remote:type_name -> jwt.options.gloo.solo.io.RemoteJwks - 7, // 9: jwt.options.gloo.solo.io.Jwks.local:type_name -> jwt.options.gloo.solo.io.LocalJwks - 12, // 10: jwt.options.gloo.solo.io.RemoteJwks.upstream_ref:type_name -> core.solo.io.ResourceRef - 13, // 11: jwt.options.gloo.solo.io.RemoteJwks.cache_duration:type_name -> google.protobuf.Duration - 11, // 12: jwt.options.gloo.solo.io.TokenSource.headers:type_name -> jwt.options.gloo.solo.io.TokenSource.HeaderSource - 4, // 13: jwt.options.gloo.solo.io.VhostExtension.ProvidersEntry.value:type_name -> jwt.options.gloo.solo.io.Provider - 14, // [14:14] is the sub-list for method output_type - 14, // [14:14] is the sub-list for method input_type - 14, // [14:14] is the sub-list for extension type_name - 14, // [14:14] is the sub-list for extension extendee - 0, // [0:14] is the sub-list for field type_name + 4, // 0: jwt.options.gloo.solo.io.JwtStagedVhostExtension.before_ext_auth:type_name -> jwt.options.gloo.solo.io.VhostExtension + 4, // 1: jwt.options.gloo.solo.io.JwtStagedVhostExtension.after_ext_auth:type_name -> jwt.options.gloo.solo.io.VhostExtension + 4, // 2: jwt.options.gloo.solo.io.JwtStagedRouteProvidersExtension.before_ext_auth:type_name -> jwt.options.gloo.solo.io.VhostExtension + 4, // 3: jwt.options.gloo.solo.io.JwtStagedRouteProvidersExtension.after_ext_auth:type_name -> jwt.options.gloo.solo.io.VhostExtension + 5, // 4: jwt.options.gloo.solo.io.JwtStagedRouteExtension.before_ext_auth:type_name -> jwt.options.gloo.solo.io.RouteExtension + 5, // 5: jwt.options.gloo.solo.io.JwtStagedRouteExtension.after_ext_auth:type_name -> jwt.options.gloo.solo.io.RouteExtension + 12, // 6: jwt.options.gloo.solo.io.VhostExtension.providers:type_name -> jwt.options.gloo.solo.io.VhostExtension.ProvidersEntry + 0, // 7: jwt.options.gloo.solo.io.VhostExtension.validation_policy:type_name -> jwt.options.gloo.solo.io.VhostExtension.ValidationPolicy + 7, // 8: jwt.options.gloo.solo.io.Provider.jwks:type_name -> jwt.options.gloo.solo.io.Jwks + 10, // 9: jwt.options.gloo.solo.io.Provider.token_source:type_name -> jwt.options.gloo.solo.io.TokenSource + 11, // 10: jwt.options.gloo.solo.io.Provider.claims_to_headers:type_name -> jwt.options.gloo.solo.io.ClaimToHeader + 14, // 11: jwt.options.gloo.solo.io.Provider.clock_skew_seconds:type_name -> google.protobuf.UInt32Value + 8, // 12: jwt.options.gloo.solo.io.Jwks.remote:type_name -> jwt.options.gloo.solo.io.RemoteJwks + 9, // 13: jwt.options.gloo.solo.io.Jwks.local:type_name -> jwt.options.gloo.solo.io.LocalJwks + 15, // 14: jwt.options.gloo.solo.io.RemoteJwks.upstream_ref:type_name -> core.solo.io.ResourceRef + 16, // 15: jwt.options.gloo.solo.io.RemoteJwks.cache_duration:type_name -> google.protobuf.Duration + 17, // 16: jwt.options.gloo.solo.io.RemoteJwks.async_fetch:type_name -> solo.io.envoy.extensions.filters.http.jwt_authn.v3.JwksAsyncFetch + 13, // 17: jwt.options.gloo.solo.io.TokenSource.headers:type_name -> jwt.options.gloo.solo.io.TokenSource.HeaderSource + 6, // 18: jwt.options.gloo.solo.io.VhostExtension.ProvidersEntry.value:type_name -> jwt.options.gloo.solo.io.Provider + 19, // [19:19] is the sub-list for method output_type + 19, // [19:19] is the sub-list for method input_type + 19, // [19:19] is the sub-list for extension type_name + 19, // [19:19] is the sub-list for extension extendee + 0, // [0:19] is the sub-list for field type_name } func init() { @@ -908,141 +1114,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_j if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JwtStagedVhostExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JwtStagedRouteExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VhostExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Provider); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Jwks); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoteJwks); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LocalJwks); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TokenSource); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClaimToHeader); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TokenSource_HeaderSource); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[5].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes[6].OneofWrappers = []any{ (*Jwks_Remote)(nil), (*Jwks_Local)(nil), } @@ -1050,18 +1122,18 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_j out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDesc, - NumEnums: 0, - NumMessages: 12, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDesc)), + NumEnums: 1, + NumMessages: 13, NumExtensions: 0, NumServices: 0, }, GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_goTypes, DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_enumTypes, MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_jwt_jwt_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/jwt/jwt.pb.hash.go b/pkg/api/gloo.solo.io/v1/enterprise/options/jwt/jwt.pb.hash.go index d2789319d..ed8554c78 100644 --- a/pkg/api/gloo.solo.io/v1/enterprise/options/jwt/jwt.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/jwt/jwt.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *JwtStagedVhostExtension) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,28 +43,100 @@ func (m *JwtStagedVhostExtension) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetBeforeExtAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BeforeExtAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBeforeExtAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BeforeExtAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAfterExtAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AfterExtAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAfterExtAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AfterExtAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *JwtStagedRouteProvidersExtension) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("jwt.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/jwt.JwtStagedRouteProvidersExtension")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetBeforeExtAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BeforeExtAuth")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetBeforeExtAuth(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetBeforeExtAuth(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("BeforeExtAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetAfterExtAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AfterExtAuth")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAfterExtAuth(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAfterExtAuth(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AfterExtAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -70,6 +146,10 @@ func (m *JwtStagedVhostExtension) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *JwtStagedRouteExtension) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -83,28 +163,40 @@ func (m *JwtStagedRouteExtension) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetBeforeExtAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BeforeExtAuth")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetBeforeExtAuth(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetBeforeExtAuth(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("BeforeExtAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetAfterExtAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AfterExtAuth")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAfterExtAuth(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAfterExtAuth(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AfterExtAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -114,6 +206,10 @@ func (m *JwtStagedRouteExtension) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *VhostExtension) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -133,14 +229,20 @@ func (m *VhostExtension) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -164,10 +266,19 @@ func (m *VhostExtension) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + err = binary.Write(hasher, binary.LittleEndian, m.GetValidationPolicy()) + if err != nil { + return 0, err + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteExtension) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -189,6 +300,10 @@ func (m *RouteExtension) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Provider) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -202,14 +317,20 @@ func (m *Provider) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetJwks()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Jwks")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetJwks(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetJwks(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Jwks")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -228,14 +349,20 @@ func (m *Provider) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetTokenSource()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TokenSource")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTokenSource(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTokenSource(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TokenSource")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -249,14 +376,20 @@ func (m *Provider) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetClaimsToHeaders() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -264,10 +397,38 @@ func (m *Provider) Hash(hasher hash.Hash64) (uint64, error) { } + if h, ok := interface{}(m.GetClockSkewSeconds()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClockSkewSeconds")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetClockSkewSeconds(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ClockSkewSeconds")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetAttachFailedStatusToMetadata())); err != nil { + return 0, err + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Jwks) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -285,14 +446,20 @@ func (m *Jwks) Hash(hasher hash.Hash64) (uint64, error) { case *Jwks_Remote: if h, ok := interface{}(m.GetRemote()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Remote")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRemote(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRemote(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Remote")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -301,14 +468,20 @@ func (m *Jwks) Hash(hasher hash.Hash64) (uint64, error) { case *Jwks_Local: if h, ok := interface{}(m.GetLocal()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Local")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetLocal(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetLocal(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Local")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -320,6 +493,10 @@ func (m *Jwks) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RemoteJwks) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -337,28 +514,60 @@ func (m *RemoteJwks) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetUpstreamRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UpstreamRef")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetUpstreamRef(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetUpstreamRef(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("UpstreamRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetCacheDuration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CacheDuration")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCacheDuration(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCacheDuration(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("CacheDuration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAsyncFetch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AsyncFetch")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAsyncFetch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AsyncFetch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -368,6 +577,10 @@ func (m *RemoteJwks) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *LocalJwks) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -388,6 +601,10 @@ func (m *LocalJwks) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *TokenSource) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -403,14 +620,20 @@ func (m *TokenSource) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetHeaders() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -430,6 +653,10 @@ func (m *TokenSource) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ClaimToHeader) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -459,6 +686,10 @@ func (m *ClaimToHeader) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *TokenSource_HeaderSource) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/jwt/jwt.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/enterprise/options/jwt/jwt.pb.uniquehash.go new file mode 100644 index 000000000..b602bfe88 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/jwt/jwt.pb.uniquehash.go @@ -0,0 +1,776 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/jwt/jwt.proto + +package jwt + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *JwtStagedVhostExtension) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("jwt.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/jwt.JwtStagedVhostExtension")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetBeforeExtAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BeforeExtAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBeforeExtAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BeforeExtAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAfterExtAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AfterExtAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAfterExtAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AfterExtAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *JwtStagedRouteProvidersExtension) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("jwt.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/jwt.JwtStagedRouteProvidersExtension")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetBeforeExtAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BeforeExtAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBeforeExtAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BeforeExtAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAfterExtAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AfterExtAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAfterExtAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AfterExtAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *JwtStagedRouteExtension) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("jwt.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/jwt.JwtStagedRouteExtension")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetBeforeExtAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BeforeExtAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBeforeExtAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BeforeExtAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAfterExtAuth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AfterExtAuth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAfterExtAuth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AfterExtAuth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *VhostExtension) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("jwt.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/jwt.VhostExtension")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetProviders() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("AllowMissingOrFailedJwt")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAllowMissingOrFailedJwt()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ValidationPolicy")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetValidationPolicy()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteExtension) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("jwt.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/jwt.RouteExtension")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Disable")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDisable()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Provider) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("jwt.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/jwt.Provider")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetJwks()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Jwks")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJwks(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Jwks")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Audiences")); err != nil { + return 0, err + } + for i, v := range m.GetAudiences() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("Issuer")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetIssuer())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTokenSource()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TokenSource")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTokenSource(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TokenSource")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("KeepToken")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetKeepToken()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClaimsToHeaders")); err != nil { + return 0, err + } + for i, v := range m.GetClaimsToHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetClockSkewSeconds()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClockSkewSeconds")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetClockSkewSeconds(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ClockSkewSeconds")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("AttachFailedStatusToMetadata")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAttachFailedStatusToMetadata())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Jwks) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("jwt.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/jwt.Jwks")); err != nil { + return 0, err + } + + switch m.Jwks.(type) { + + case *Jwks_Remote: + + if h, ok := interface{}(m.GetRemote()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Remote")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRemote(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Remote")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Jwks_Local: + + if h, ok := interface{}(m.GetLocal()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Local")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLocal(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Local")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RemoteJwks) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("jwt.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/jwt.RemoteJwks")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Url")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUrl())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetUpstreamRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UpstreamRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUpstreamRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UpstreamRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCacheDuration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CacheDuration")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCacheDuration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CacheDuration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAsyncFetch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AsyncFetch")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAsyncFetch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AsyncFetch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *LocalJwks) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("jwt.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/jwt.LocalJwks")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TokenSource) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("jwt.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/jwt.TokenSource")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + for i, v := range m.GetHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("QueryParams")); err != nil { + return 0, err + } + for i, v := range m.GetQueryParams() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ClaimToHeader) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("jwt.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/jwt.ClaimToHeader")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Claim")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClaim())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHeader())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Append")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAppend()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TokenSource_HeaderSource) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("jwt.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/jwt.TokenSource_HeaderSource")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHeader())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Prefix")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPrefix())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit/ratelimit.pb.clone.go b/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit/ratelimit.pb.clone.go new file mode 100644 index 000000000..7cb89a714 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit/ratelimit.pb.clone.go @@ -0,0 +1,253 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/ratelimit/ratelimit.proto + +package ratelimit + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_local_ratelimit "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/local_ratelimit" + + github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1 "github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *IngressRateLimit) Clone() proto.Message { + var target *IngressRateLimit + if m == nil { + return target + } + target = &IngressRateLimit{} + + if h, ok := interface{}(m.GetAuthorizedLimits()).(clone.Cloner); ok { + target.AuthorizedLimits = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1.RateLimit) + } else { + target.AuthorizedLimits = proto.Clone(m.GetAuthorizedLimits()).(*github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1.RateLimit) + } + + if h, ok := interface{}(m.GetAnonymousLimits()).(clone.Cloner); ok { + target.AnonymousLimits = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1.RateLimit) + } else { + target.AnonymousLimits = proto.Clone(m.GetAnonymousLimits()).(*github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1.RateLimit) + } + + return target +} + +// Clone function +func (m *Settings) Clone() proto.Message { + var target *Settings + if m == nil { + return target + } + target = &Settings{} + + if h, ok := interface{}(m.GetRatelimitServerRef()).(clone.Cloner); ok { + target.RatelimitServerRef = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.RatelimitServerRef = proto.Clone(m.GetRatelimitServerRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + if h, ok := interface{}(m.GetRequestTimeout()).(clone.Cloner); ok { + target.RequestTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.RequestTimeout = proto.Clone(m.GetRequestTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + target.DenyOnFail = m.GetDenyOnFail() + + target.EnableXRatelimitHeaders = m.GetEnableXRatelimitHeaders() + + target.RateLimitBeforeAuth = m.GetRateLimitBeforeAuth() + + switch m.ServiceType.(type) { + + case *Settings_GrpcService: + + if h, ok := interface{}(m.GetGrpcService()).(clone.Cloner); ok { + target.ServiceType = &Settings_GrpcService{ + GrpcService: h.Clone().(*GrpcService), + } + } else { + target.ServiceType = &Settings_GrpcService{ + GrpcService: proto.Clone(m.GetGrpcService()).(*GrpcService), + } + } + + } + + return target +} + +// Clone function +func (m *GrpcService) Clone() proto.Message { + var target *GrpcService + if m == nil { + return target + } + target = &GrpcService{} + + target.Authority = m.GetAuthority() + + return target +} + +// Clone function +func (m *ServiceSettings) Clone() proto.Message { + var target *ServiceSettings + if m == nil { + return target + } + target = &ServiceSettings{} + + if m.GetDescriptors() != nil { + target.Descriptors = make([]*github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1.Descriptor, len(m.GetDescriptors())) + for idx, v := range m.GetDescriptors() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Descriptors[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1.Descriptor) + } else { + target.Descriptors[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1.Descriptor) + } + + } + } + + if m.GetSetDescriptors() != nil { + target.SetDescriptors = make([]*github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1.SetDescriptor, len(m.GetSetDescriptors())) + for idx, v := range m.GetSetDescriptors() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SetDescriptors[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1.SetDescriptor) + } else { + target.SetDescriptors[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1.SetDescriptor) + } + + } + } + + return target +} + +// Clone function +func (m *RateLimitConfigRefs) Clone() proto.Message { + var target *RateLimitConfigRefs + if m == nil { + return target + } + target = &RateLimitConfigRefs{} + + if m.GetRefs() != nil { + target.Refs = make([]*RateLimitConfigRef, len(m.GetRefs())) + for idx, v := range m.GetRefs() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Refs[idx] = h.Clone().(*RateLimitConfigRef) + } else { + target.Refs[idx] = proto.Clone(v).(*RateLimitConfigRef) + } + + } + } + + return target +} + +// Clone function +func (m *RateLimitConfigRef) Clone() proto.Message { + var target *RateLimitConfigRef + if m == nil { + return target + } + target = &RateLimitConfigRef{} + + target.Name = m.GetName() + + target.Namespace = m.GetNamespace() + + return target +} + +// Clone function +func (m *RateLimitVhostExtension) Clone() proto.Message { + var target *RateLimitVhostExtension + if m == nil { + return target + } + target = &RateLimitVhostExtension{} + + if m.GetRateLimits() != nil { + target.RateLimits = make([]*github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1.RateLimitActions, len(m.GetRateLimits())) + for idx, v := range m.GetRateLimits() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RateLimits[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1.RateLimitActions) + } else { + target.RateLimits[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1.RateLimitActions) + } + + } + } + + if h, ok := interface{}(m.GetLocalRatelimit()).(clone.Cloner); ok { + target.LocalRatelimit = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_local_ratelimit.TokenBucket) + } else { + target.LocalRatelimit = proto.Clone(m.GetLocalRatelimit()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_local_ratelimit.TokenBucket) + } + + return target +} + +// Clone function +func (m *RateLimitRouteExtension) Clone() proto.Message { + var target *RateLimitRouteExtension + if m == nil { + return target + } + target = &RateLimitRouteExtension{} + + target.IncludeVhRateLimits = m.GetIncludeVhRateLimits() + + if m.GetRateLimits() != nil { + target.RateLimits = make([]*github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1.RateLimitActions, len(m.GetRateLimits())) + for idx, v := range m.GetRateLimits() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RateLimits[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1.RateLimitActions) + } else { + target.RateLimits[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1.RateLimitActions) + } + + } + } + + if h, ok := interface{}(m.GetLocalRatelimit()).(clone.Cloner); ok { + target.LocalRatelimit = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_local_ratelimit.TokenBucket) + } else { + target.LocalRatelimit = proto.Clone(m.GetLocalRatelimit()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_local_ratelimit.TokenBucket) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit/ratelimit.pb.equal.go b/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit/ratelimit.pb.equal.go index be3281edf..52c077f2d 100644 --- a/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit/ratelimit.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit/ratelimit.pb.equal.go @@ -114,10 +114,66 @@ func (m *Settings) Equal(that interface{}) bool { return false } + if m.GetEnableXRatelimitHeaders() != target.GetEnableXRatelimitHeaders() { + return false + } + if m.GetRateLimitBeforeAuth() != target.GetRateLimitBeforeAuth() { return false } + switch m.ServiceType.(type) { + + case *Settings_GrpcService: + if _, ok := target.ServiceType.(*Settings_GrpcService); !ok { + return false + } + + if h, ok := interface{}(m.GetGrpcService()).(equality.Equalizer); ok { + if !h.Equal(target.GetGrpcService()) { + return false + } + } else { + if !proto.Equal(m.GetGrpcService(), target.GetGrpcService()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.ServiceType != target.ServiceType { + return false + } + } + + return true +} + +// Equal function +func (m *GrpcService) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*GrpcService) + if !ok { + that2, ok := that.(GrpcService) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetAuthority(), target.GetAuthority()) != 0 { + return false + } + return true } @@ -290,6 +346,16 @@ func (m *RateLimitVhostExtension) Equal(that interface{}) bool { } + if h, ok := interface{}(m.GetLocalRatelimit()).(equality.Equalizer); ok { + if !h.Equal(target.GetLocalRatelimit()) { + return false + } + } else { + if !proto.Equal(m.GetLocalRatelimit(), target.GetLocalRatelimit()) { + return false + } + } + return true } @@ -335,5 +401,15 @@ func (m *RateLimitRouteExtension) Equal(that interface{}) bool { } + if h, ok := interface{}(m.GetLocalRatelimit()).(equality.Equalizer); ok { + if !h.Equal(target.GetLocalRatelimit()) { + return false + } + } else { + if !proto.Equal(m.GetLocalRatelimit(), target.GetLocalRatelimit()) { + return false + } + } + return true } diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit/ratelimit.pb.go b/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit/ratelimit.pb.go index 818de185e..e30f28df0 100644 --- a/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit/ratelimit.pb.go +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit/ratelimit.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/ratelimit/ratelimit.proto @@ -9,15 +9,16 @@ package ratelimit import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - duration "github.com/golang/protobuf/ptypes/duration" - _ "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" + local_ratelimit "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/local_ratelimit" v1alpha1 "github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1" core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + _ "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -27,27 +28,20 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Basic rate-limiting API type IngressRateLimit struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - AuthorizedLimits *v1alpha1.RateLimit `protobuf:"bytes,1,opt,name=authorized_limits,json=authorizedLimits,proto3" json:"authorized_limits,omitempty"` - AnonymousLimits *v1alpha1.RateLimit `protobuf:"bytes,2,opt,name=anonymous_limits,json=anonymousLimits,proto3" json:"anonymous_limits,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + AuthorizedLimits *v1alpha1.RateLimit `protobuf:"bytes,1,opt,name=authorized_limits,json=authorizedLimits,proto3" json:"authorized_limits,omitempty"` + AnonymousLimits *v1alpha1.RateLimit `protobuf:"bytes,2,opt,name=anonymous_limits,json=anonymousLimits,proto3" json:"anonymous_limits,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *IngressRateLimit) Reset() { *x = IngressRateLimit{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *IngressRateLimit) String() string { @@ -58,7 +52,7 @@ func (*IngressRateLimit) ProtoMessage() {} func (x *IngressRateLimit) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -88,25 +82,29 @@ func (x *IngressRateLimit) GetAnonymousLimits() *v1alpha1.RateLimit { } type Settings struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RatelimitServerRef *core.ResourceRef `protobuf:"bytes,1,opt,name=ratelimit_server_ref,json=ratelimitServerRef,proto3" json:"ratelimit_server_ref,omitempty"` - RequestTimeout *duration.Duration `protobuf:"bytes,2,opt,name=request_timeout,json=requestTimeout,proto3" json:"request_timeout,omitempty"` - DenyOnFail bool `protobuf:"varint,3,opt,name=deny_on_fail,json=denyOnFail,proto3" json:"deny_on_fail,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + RatelimitServerRef *core.ResourceRef `protobuf:"bytes,1,opt,name=ratelimit_server_ref,json=ratelimitServerRef,proto3" json:"ratelimit_server_ref,omitempty"` + RequestTimeout *durationpb.Duration `protobuf:"bytes,2,opt,name=request_timeout,json=requestTimeout,proto3" json:"request_timeout,omitempty"` + DenyOnFail bool `protobuf:"varint,3,opt,name=deny_on_fail,json=denyOnFail,proto3" json:"deny_on_fail,omitempty"` + // Set this to true to return Envoy's X-RateLimit headers to the downstream. + // reference docs here: https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/ratelimit/v3/rate_limit.proto.html#envoy-v3-api-field-extensions-filters-http-ratelimit-v3-ratelimit-enable-x-ratelimit-headers + EnableXRatelimitHeaders bool `protobuf:"varint,4,opt,name=enable_x_ratelimit_headers,json=enableXRatelimitHeaders,proto3" json:"enable_x_ratelimit_headers,omitempty"` // Set this is set to true if you would like to rate limit traffic before applying external auth to it. // *Note*: When this is true, you will lose some features like being able to rate limit a request based on its auth state RateLimitBeforeAuth bool `protobuf:"varint,9,opt,name=rate_limit_before_auth,json=rateLimitBeforeAuth,proto3" json:"rate_limit_before_auth,omitempty"` + // Types that are valid to be assigned to ServiceType: + // + // *Settings_GrpcService + ServiceType isSettings_ServiceType `protobuf_oneof:"service_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Settings) Reset() { *x = Settings{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Settings) String() string { @@ -117,7 +115,7 @@ func (*Settings) ProtoMessage() {} func (x *Settings) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -139,7 +137,7 @@ func (x *Settings) GetRatelimitServerRef() *core.ResourceRef { return nil } -func (x *Settings) GetRequestTimeout() *duration.Duration { +func (x *Settings) GetRequestTimeout() *durationpb.Duration { if x != nil { return x.RequestTimeout } @@ -153,6 +151,13 @@ func (x *Settings) GetDenyOnFail() bool { return false } +func (x *Settings) GetEnableXRatelimitHeaders() bool { + if x != nil { + return x.EnableXRatelimitHeaders + } + return false +} + func (x *Settings) GetRateLimitBeforeAuth() bool { if x != nil { return x.RateLimitBeforeAuth @@ -160,38 +165,107 @@ func (x *Settings) GetRateLimitBeforeAuth() bool { return false } +func (x *Settings) GetServiceType() isSettings_ServiceType { + if x != nil { + return x.ServiceType + } + return nil +} + +func (x *Settings) GetGrpcService() *GrpcService { + if x != nil { + if x, ok := x.ServiceType.(*Settings_GrpcService); ok { + return x.GrpcService + } + } + return nil +} + +type isSettings_ServiceType interface { + isSettings_ServiceType() +} + +type Settings_GrpcService struct { + // Optional gRPC settings used when calling the ratelimit server. + GrpcService *GrpcService `protobuf:"bytes,10,opt,name=grpc_service,json=grpcService,proto3,oneof"` +} + +func (*Settings_GrpcService) isSettings_ServiceType() {} + +type GrpcService struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Set the authority header when calling the gRPC service. + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GrpcService) Reset() { + *x = GrpcService{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GrpcService) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GrpcService) ProtoMessage() {} + +func (x *GrpcService) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GrpcService.ProtoReflect.Descriptor instead. +func (*GrpcService) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDescGZIP(), []int{2} +} + +func (x *GrpcService) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + // API based on Envoy's rate-limit service API. (reference here: https://github.com/lyft/ratelimit#configuration) // Sample configuration below: // // descriptors: -//- key: account_id -// descriptors: -// - key: plan -// value: BASIC -// rateLimit: -// requestsPerUnit: 1 -// unit: MINUTE -// - key: plan -// value: PLUS -// rateLimit: -// requestsPerUnit: 20 -// unit: MINUTE +// - key: account_id +// descriptors: +// - key: plan +// value: BASIC +// rateLimit: +// requestsPerUnit: 1 +// unit: MINUTE +// - key: plan +// value: PLUS +// rateLimit: +// requestsPerUnit: 20 +// unit: MINUTE type ServiceSettings struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Descriptors []*v1alpha1.Descriptor `protobuf:"bytes,1,rep,name=descriptors,proto3" json:"descriptors,omitempty"` SetDescriptors []*v1alpha1.SetDescriptor `protobuf:"bytes,2,rep,name=set_descriptors,json=setDescriptors,proto3" json:"set_descriptors,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ServiceSettings) Reset() { *x = ServiceSettings{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ServiceSettings) String() string { @@ -201,8 +275,8 @@ func (x *ServiceSettings) String() string { func (*ServiceSettings) ProtoMessage() {} func (x *ServiceSettings) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[3] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -214,7 +288,7 @@ func (x *ServiceSettings) ProtoReflect() protoreflect.Message { // Deprecated: Use ServiceSettings.ProtoReflect.Descriptor instead. func (*ServiceSettings) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDescGZIP(), []int{2} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDescGZIP(), []int{3} } func (x *ServiceSettings) GetDescriptors() []*v1alpha1.Descriptor { @@ -234,20 +308,17 @@ func (x *ServiceSettings) GetSetDescriptors() []*v1alpha1.SetDescriptor { // A list of references to `RateLimitConfig` resources. // Each resource represents a rate limit policy that will be independently enforced. type RateLimitConfigRefs struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Refs []*RateLimitConfigRef `protobuf:"bytes,1,rep,name=refs,proto3" json:"refs,omitempty"` unknownFields protoimpl.UnknownFields - - Refs []*RateLimitConfigRef `protobuf:"bytes,1,rep,name=refs,proto3" json:"refs,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RateLimitConfigRefs) Reset() { *x = RateLimitConfigRefs{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimitConfigRefs) String() string { @@ -257,8 +328,8 @@ func (x *RateLimitConfigRefs) String() string { func (*RateLimitConfigRefs) ProtoMessage() {} func (x *RateLimitConfigRefs) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[4] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -270,7 +341,7 @@ func (x *RateLimitConfigRefs) ProtoReflect() protoreflect.Message { // Deprecated: Use RateLimitConfigRefs.ProtoReflect.Descriptor instead. func (*RateLimitConfigRefs) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDescGZIP(), []int{3} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDescGZIP(), []int{4} } func (x *RateLimitConfigRefs) GetRefs() []*RateLimitConfigRef { @@ -282,21 +353,18 @@ func (x *RateLimitConfigRefs) GetRefs() []*RateLimitConfigRef { // A reference to a `RateLimitConfig` resource. type RateLimitConfigRef struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RateLimitConfigRef) Reset() { *x = RateLimitConfigRef{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimitConfigRef) String() string { @@ -306,8 +374,8 @@ func (x *RateLimitConfigRef) String() string { func (*RateLimitConfigRef) ProtoMessage() {} func (x *RateLimitConfigRef) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[5] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -319,7 +387,7 @@ func (x *RateLimitConfigRef) ProtoReflect() protoreflect.Message { // Deprecated: Use RateLimitConfigRef.ProtoReflect.Descriptor instead. func (*RateLimitConfigRef) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDescGZIP(), []int{4} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDescGZIP(), []int{5} } func (x *RateLimitConfigRef) GetName() string { @@ -341,22 +409,25 @@ func (x *RateLimitConfigRef) GetNamespace() string { // specify the server configuration via the appropriate field in the Gloo `Settings` resource. If you are // running a custom rate limit server you need to configure it yourself. type RateLimitVhostExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Define individual rate limits here. Each rate limit will be evaluated, if any rate limit // would be throttled, the entire request returns a 429 (gets throttled) RateLimits []*v1alpha1.RateLimitActions `protobuf:"bytes,1,rep,name=rate_limits,json=rateLimits,proto3" json:"rate_limits,omitempty"` + // The token bucket configuration to use for local rate limiting requests. + // These options provide the ability to locally rate limit the connections in envoy. Each request processed by the filter consumes a single token. + // If the token is available, the request will be allowed. If no tokens are available, the request will receive the configured rate limit status. + // This overrides any local rate limit configured on the gateway and requests to this vHost do not count against requests to the gateway's http local rate limit. + // All routes that are part of this vHost will share this rate limit unless explicity configured with another limit. + LocalRatelimit *local_ratelimit.TokenBucket `protobuf:"bytes,2,opt,name=local_ratelimit,json=localRatelimit,proto3" json:"local_ratelimit,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimitVhostExtension) Reset() { *x = RateLimitVhostExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimitVhostExtension) String() string { @@ -366,8 +437,8 @@ func (x *RateLimitVhostExtension) String() string { func (*RateLimitVhostExtension) ProtoMessage() {} func (x *RateLimitVhostExtension) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[6] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -379,7 +450,7 @@ func (x *RateLimitVhostExtension) ProtoReflect() protoreflect.Message { // Deprecated: Use RateLimitVhostExtension.ProtoReflect.Descriptor instead. func (*RateLimitVhostExtension) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDescGZIP(), []int{5} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDescGZIP(), []int{6} } func (x *RateLimitVhostExtension) GetRateLimits() []*v1alpha1.RateLimitActions { @@ -389,29 +460,38 @@ func (x *RateLimitVhostExtension) GetRateLimits() []*v1alpha1.RateLimitActions { return nil } +func (x *RateLimitVhostExtension) GetLocalRatelimit() *local_ratelimit.TokenBucket { + if x != nil { + return x.LocalRatelimit + } + return nil +} + // Use this field if you want to inline the Envoy rate limits for this Route. // Note that this does not configure the rate limit server. If you are running Gloo Enterprise, you need to // specify the server configuration via the appropriate field in the Gloo `Settings` resource. If you are // running a custom rate limit server you need to configure it yourself. type RateLimitRouteExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Whether or not to include rate limits as defined on the VirtualHost in addition to rate limits on the Route. IncludeVhRateLimits bool `protobuf:"varint,1,opt,name=include_vh_rate_limits,json=includeVhRateLimits,proto3" json:"include_vh_rate_limits,omitempty"` // Define individual rate limits here. Each rate limit will be evaluated, if any rate limit // would be throttled, the entire request returns a 429 (gets throttled) RateLimits []*v1alpha1.RateLimitActions `protobuf:"bytes,2,rep,name=rate_limits,json=rateLimits,proto3" json:"rate_limits,omitempty"` + // The token bucket configuration to use for local rate limiting requests. + // These options provide the ability to locally rate limit the connections in envoy. Each request processed by the filter consumes a single token. + // If the token is available, the request will be allowed. If no tokens are available, the request will receive the configured rate limit status. + // This overrides any local rate limit configured on the vHost or gateway and requests to this route do not count against requests to the vHost or gateway's http local rate limit. + LocalRatelimit *local_ratelimit.TokenBucket `protobuf:"bytes,3,opt,name=local_ratelimit,json=localRatelimit,proto3" json:"local_ratelimit,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimitRouteExtension) Reset() { *x = RateLimitRouteExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimitRouteExtension) String() string { @@ -421,8 +501,8 @@ func (x *RateLimitRouteExtension) String() string { func (*RateLimitRouteExtension) ProtoMessage() {} func (x *RateLimitRouteExtension) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[7] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -434,7 +514,7 @@ func (x *RateLimitRouteExtension) ProtoReflect() protoreflect.Message { // Deprecated: Use RateLimitRouteExtension.ProtoReflect.Descriptor instead. func (*RateLimitRouteExtension) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDescGZIP(), []int{6} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDescGZIP(), []int{7} } func (x *RateLimitRouteExtension) GetIncludeVhRateLimits() bool { @@ -451,9 +531,16 @@ func (x *RateLimitRouteExtension) GetRateLimits() []*v1alpha1.RateLimitActions { return nil } +func (x *RateLimitRouteExtension) GetLocalRatelimit() *local_ratelimit.TokenBucket { + if x != nil { + return x.LocalRatelimit + } + return nil +} + var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDesc = string([]byte{ 0x0a, 0x5a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -466,129 +553,165 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rateli 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x61, 0x74, 0x65, 0x2d, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, - 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xae, 0x01, 0x0a, 0x10, 0x49, 0x6e, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x4d, 0x0a, 0x11, 0x61, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, - 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x10, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x65, 0x64, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x10, 0x61, 0x6e, - 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, - 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x0f, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, - 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x22, 0xf2, 0x01, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4b, 0x0a, 0x14, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x12, 0x72, - 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, - 0x66, 0x12, 0x42, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x64, 0x65, 0x6e, 0x79, 0x5f, 0x6f, 0x6e, - 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x6e, - 0x79, 0x4f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x12, 0x33, 0x0a, 0x16, 0x72, 0x61, 0x74, 0x65, 0x5f, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x75, 0x74, - 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x22, 0xa5, 0x01, 0x0a, - 0x0f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x12, 0x43, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x4d, 0x0a, 0x0f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x5b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0xae, 0x01, 0x0a, 0x10, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, + 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x4d, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x10, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, + 0x64, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x10, 0x61, 0x6e, 0x6f, 0x6e, 0x79, + 0x6d, 0x6f, 0x75, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x52, 0x0f, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x73, 0x22, 0x91, 0x03, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x12, 0x4b, 0x0a, 0x14, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x12, 0x72, 0x61, 0x74, 0x65, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x66, 0x12, 0x42, + 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x64, 0x65, 0x6e, 0x79, 0x5f, 0x6f, 0x6e, 0x5f, 0x66, 0x61, + 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x6e, 0x79, 0x4f, 0x6e, + 0x46, 0x61, 0x69, 0x6c, 0x12, 0x3b, 0x0a, 0x1a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x78, + 0x5f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x58, 0x52, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x12, 0x33, 0x0a, 0x16, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, + 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x13, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x65, 0x66, 0x6f, + 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x12, 0x50, 0x0a, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x72, + 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x72, + 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x67, 0x72, 0x70, + 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x2b, 0x0a, 0x0b, 0x47, 0x72, 0x70, 0x63, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0xa5, 0x01, 0x0a, 0x0f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x43, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x6f, 0x72, 0x52, 0x0e, 0x73, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x6f, 0x72, 0x73, 0x22, 0x5d, 0x0a, 0x13, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x66, 0x73, 0x12, 0x46, 0x0a, 0x04, 0x72, - 0x65, 0x66, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x72, 0x61, 0x74, 0x65, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, + 0x72, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x4d, + 0x0a, 0x0f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x53, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x0e, 0x73, + 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x5d, 0x0a, + 0x13, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x65, 0x66, 0x73, 0x12, 0x46, 0x0a, 0x04, 0x72, 0x65, 0x66, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x65, 0x66, 0x52, 0x04, 0x72, 0x65, 0x66, 0x73, 0x22, 0x46, 0x0a, 0x12, + 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x66, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x22, 0xbf, 0x01, 0x0a, 0x17, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x56, 0x68, 0x6f, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x48, 0x0a, 0x0b, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, + 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, + 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x5a, 0x0a, 0x0f, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x66, 0x52, 0x04, 0x72, - 0x65, 0x66, 0x73, 0x22, 0x46, 0x0a, 0x12, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x66, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x63, 0x0a, 0x17, 0x52, - 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x56, 0x68, 0x6f, 0x73, 0x74, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x0b, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, 0x61, - 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, - 0x22, 0x98, 0x01, 0x0a, 0x17, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x16, - 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x76, 0x68, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x56, 0x68, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x73, 0x12, 0x48, 0x0a, 0x0b, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, - 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x0a, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x5b, 0x5a, 0x51, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, - 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, 0x74, + 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xf4, 0x01, 0x0a, 0x17, 0x52, 0x61, 0x74, 0x65, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x16, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x76, 0x68, + 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x56, 0x68, 0x52, 0x61, 0x74, + 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x48, 0x0a, 0x0b, 0x72, 0x61, 0x74, 0x65, 0x5f, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, + 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x73, 0x12, 0x5a, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x0e, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x5f, 0xb8, + 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x51, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, + 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes = make([]protoimpl.MessageInfo, 7) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_goTypes = []interface{}{ - (*IngressRateLimit)(nil), // 0: ratelimit.options.gloo.solo.io.IngressRateLimit - (*Settings)(nil), // 1: ratelimit.options.gloo.solo.io.Settings - (*ServiceSettings)(nil), // 2: ratelimit.options.gloo.solo.io.ServiceSettings - (*RateLimitConfigRefs)(nil), // 3: ratelimit.options.gloo.solo.io.RateLimitConfigRefs - (*RateLimitConfigRef)(nil), // 4: ratelimit.options.gloo.solo.io.RateLimitConfigRef - (*RateLimitVhostExtension)(nil), // 5: ratelimit.options.gloo.solo.io.RateLimitVhostExtension - (*RateLimitRouteExtension)(nil), // 6: ratelimit.options.gloo.solo.io.RateLimitRouteExtension - (*v1alpha1.RateLimit)(nil), // 7: ratelimit.api.solo.io.RateLimit - (*core.ResourceRef)(nil), // 8: core.solo.io.ResourceRef - (*duration.Duration)(nil), // 9: google.protobuf.Duration - (*v1alpha1.Descriptor)(nil), // 10: ratelimit.api.solo.io.Descriptor - (*v1alpha1.SetDescriptor)(nil), // 11: ratelimit.api.solo.io.SetDescriptor - (*v1alpha1.RateLimitActions)(nil), // 12: ratelimit.api.solo.io.RateLimitActions +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_goTypes = []any{ + (*IngressRateLimit)(nil), // 0: ratelimit.options.gloo.solo.io.IngressRateLimit + (*Settings)(nil), // 1: ratelimit.options.gloo.solo.io.Settings + (*GrpcService)(nil), // 2: ratelimit.options.gloo.solo.io.GrpcService + (*ServiceSettings)(nil), // 3: ratelimit.options.gloo.solo.io.ServiceSettings + (*RateLimitConfigRefs)(nil), // 4: ratelimit.options.gloo.solo.io.RateLimitConfigRefs + (*RateLimitConfigRef)(nil), // 5: ratelimit.options.gloo.solo.io.RateLimitConfigRef + (*RateLimitVhostExtension)(nil), // 6: ratelimit.options.gloo.solo.io.RateLimitVhostExtension + (*RateLimitRouteExtension)(nil), // 7: ratelimit.options.gloo.solo.io.RateLimitRouteExtension + (*v1alpha1.RateLimit)(nil), // 8: ratelimit.api.solo.io.RateLimit + (*core.ResourceRef)(nil), // 9: core.solo.io.ResourceRef + (*durationpb.Duration)(nil), // 10: google.protobuf.Duration + (*v1alpha1.Descriptor)(nil), // 11: ratelimit.api.solo.io.Descriptor + (*v1alpha1.SetDescriptor)(nil), // 12: ratelimit.api.solo.io.SetDescriptor + (*v1alpha1.RateLimitActions)(nil), // 13: ratelimit.api.solo.io.RateLimitActions + (*local_ratelimit.TokenBucket)(nil), // 14: local_ratelimit.options.gloo.solo.io.TokenBucket } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_depIdxs = []int32{ - 7, // 0: ratelimit.options.gloo.solo.io.IngressRateLimit.authorized_limits:type_name -> ratelimit.api.solo.io.RateLimit - 7, // 1: ratelimit.options.gloo.solo.io.IngressRateLimit.anonymous_limits:type_name -> ratelimit.api.solo.io.RateLimit - 8, // 2: ratelimit.options.gloo.solo.io.Settings.ratelimit_server_ref:type_name -> core.solo.io.ResourceRef - 9, // 3: ratelimit.options.gloo.solo.io.Settings.request_timeout:type_name -> google.protobuf.Duration - 10, // 4: ratelimit.options.gloo.solo.io.ServiceSettings.descriptors:type_name -> ratelimit.api.solo.io.Descriptor - 11, // 5: ratelimit.options.gloo.solo.io.ServiceSettings.set_descriptors:type_name -> ratelimit.api.solo.io.SetDescriptor - 4, // 6: ratelimit.options.gloo.solo.io.RateLimitConfigRefs.refs:type_name -> ratelimit.options.gloo.solo.io.RateLimitConfigRef - 12, // 7: ratelimit.options.gloo.solo.io.RateLimitVhostExtension.rate_limits:type_name -> ratelimit.api.solo.io.RateLimitActions - 12, // 8: ratelimit.options.gloo.solo.io.RateLimitRouteExtension.rate_limits:type_name -> ratelimit.api.solo.io.RateLimitActions - 9, // [9:9] is the sub-list for method output_type - 9, // [9:9] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 8, // 0: ratelimit.options.gloo.solo.io.IngressRateLimit.authorized_limits:type_name -> ratelimit.api.solo.io.RateLimit + 8, // 1: ratelimit.options.gloo.solo.io.IngressRateLimit.anonymous_limits:type_name -> ratelimit.api.solo.io.RateLimit + 9, // 2: ratelimit.options.gloo.solo.io.Settings.ratelimit_server_ref:type_name -> core.solo.io.ResourceRef + 10, // 3: ratelimit.options.gloo.solo.io.Settings.request_timeout:type_name -> google.protobuf.Duration + 2, // 4: ratelimit.options.gloo.solo.io.Settings.grpc_service:type_name -> ratelimit.options.gloo.solo.io.GrpcService + 11, // 5: ratelimit.options.gloo.solo.io.ServiceSettings.descriptors:type_name -> ratelimit.api.solo.io.Descriptor + 12, // 6: ratelimit.options.gloo.solo.io.ServiceSettings.set_descriptors:type_name -> ratelimit.api.solo.io.SetDescriptor + 5, // 7: ratelimit.options.gloo.solo.io.RateLimitConfigRefs.refs:type_name -> ratelimit.options.gloo.solo.io.RateLimitConfigRef + 13, // 8: ratelimit.options.gloo.solo.io.RateLimitVhostExtension.rate_limits:type_name -> ratelimit.api.solo.io.RateLimitActions + 14, // 9: ratelimit.options.gloo.solo.io.RateLimitVhostExtension.local_ratelimit:type_name -> local_ratelimit.options.gloo.solo.io.TokenBucket + 13, // 10: ratelimit.options.gloo.solo.io.RateLimitRouteExtension.rate_limits:type_name -> ratelimit.api.solo.io.RateLimitActions + 14, // 11: ratelimit.options.gloo.solo.io.RateLimitRouteExtension.local_ratelimit:type_name -> local_ratelimit.options.gloo.solo.io.TokenBucket + 12, // [12:12] is the sub-list for method output_type + 12, // [12:12] is the sub-list for method input_type + 12, // [12:12] is the sub-list for extension type_name + 12, // [12:12] is the sub-list for extension extendee + 0, // [0:12] is the sub-list for field type_name } func init() { @@ -598,99 +721,16 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratel if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IngressRateLimit); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Settings); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ServiceSettings); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimitConfigRefs); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimitConfigRef); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimitVhostExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimitRouteExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes[1].OneofWrappers = []any{ + (*Settings_GrpcService)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDesc)), NumEnums: 0, - NumMessages: 7, + NumMessages: 8, NumExtensions: 0, NumServices: 0, }, @@ -699,7 +739,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratel MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_ratelimit_ratelimit_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit/ratelimit.pb.hash.go b/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit/ratelimit.pb.hash.go index a1209be16..26494946f 100644 --- a/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit/ratelimit.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit/ratelimit.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *IngressRateLimit) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,28 +43,40 @@ func (m *IngressRateLimit) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetAuthorizedLimits()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuthorizedLimits")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAuthorizedLimits(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAuthorizedLimits(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AuthorizedLimits")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetAnonymousLimits()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AnonymousLimits")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAnonymousLimits(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAnonymousLimits(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AnonymousLimits")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -70,6 +86,10 @@ func (m *IngressRateLimit) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Settings) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -83,28 +103,40 @@ func (m *Settings) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetRatelimitServerRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RatelimitServerRef")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRatelimitServerRef(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRatelimitServerRef(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RatelimitServerRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetRequestTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTimeout")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRequestTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRequestTimeout(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RequestTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -115,15 +147,74 @@ func (m *Settings) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + err = binary.Write(hasher, binary.LittleEndian, m.GetEnableXRatelimitHeaders()) + if err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRateLimitBeforeAuth()) if err != nil { return 0, err } + switch m.ServiceType.(type) { + + case *Settings_GrpcService: + + if h, ok := interface{}(m.GetGrpcService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcService(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *GrpcService) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit.GrpcService")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetAuthority())); err != nil { + return 0, err + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ServiceSettings) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -139,14 +230,20 @@ func (m *ServiceSettings) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetDescriptors() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -157,14 +254,20 @@ func (m *ServiceSettings) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetSetDescriptors() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -176,6 +279,10 @@ func (m *ServiceSettings) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimitConfigRefs) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -191,14 +298,20 @@ func (m *RateLimitConfigRefs) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRefs() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -210,6 +323,10 @@ func (m *RateLimitConfigRefs) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimitConfigRef) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -234,6 +351,10 @@ func (m *RateLimitConfigRef) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimitVhostExtension) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -249,14 +370,20 @@ func (m *RateLimitVhostExtension) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRateLimits() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -264,10 +391,34 @@ func (m *RateLimitVhostExtension) Hash(hasher hash.Hash64) (uint64, error) { } + if h, ok := interface{}(m.GetLocalRatelimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LocalRatelimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLocalRatelimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LocalRatelimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimitRouteExtension) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -288,14 +439,20 @@ func (m *RateLimitRouteExtension) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRateLimits() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -303,5 +460,25 @@ func (m *RateLimitRouteExtension) Hash(hasher hash.Hash64) (uint64, error) { } + if h, ok := interface{}(m.GetLocalRatelimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LocalRatelimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLocalRatelimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LocalRatelimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + return hasher.Sum64(), nil } diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit/ratelimit.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit/ratelimit.pb.uniquehash.go new file mode 100644 index 000000000..a199a9a4c --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit/ratelimit.pb.uniquehash.go @@ -0,0 +1,529 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/ratelimit/ratelimit.proto + +package ratelimit + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *IngressRateLimit) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit.IngressRateLimit")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAuthorizedLimits()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuthorizedLimits")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuthorizedLimits(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuthorizedLimits")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAnonymousLimits()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AnonymousLimits")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAnonymousLimits(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AnonymousLimits")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Settings) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit.Settings")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRatelimitServerRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RatelimitServerRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRatelimitServerRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RatelimitServerRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRequestTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("DenyOnFail")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDenyOnFail()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("EnableXRatelimitHeaders")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetEnableXRatelimitHeaders()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RateLimitBeforeAuth")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRateLimitBeforeAuth()) + if err != nil { + return 0, err + } + + switch m.ServiceType.(type) { + + case *Settings_GrpcService: + + if h, ok := interface{}(m.GetGrpcService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcService(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcService) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit.GrpcService")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Authority")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAuthority())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ServiceSettings) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit.ServiceSettings")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Descriptors")); err != nil { + return 0, err + } + for i, v := range m.GetDescriptors() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("SetDescriptors")); err != nil { + return 0, err + } + for i, v := range m.GetSetDescriptors() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimitConfigRefs) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit.RateLimitConfigRefs")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Refs")); err != nil { + return 0, err + } + for i, v := range m.GetRefs() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimitConfigRef) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit.RateLimitConfigRef")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Namespace")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetNamespace())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimitVhostExtension) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit.RateLimitVhostExtension")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RateLimits")); err != nil { + return 0, err + } + for i, v := range m.GetRateLimits() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetLocalRatelimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LocalRatelimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLocalRatelimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LocalRatelimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimitRouteExtension) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit.RateLimitRouteExtension")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("IncludeVhRateLimits")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetIncludeVhRateLimits()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RateLimits")); err != nil { + return 0, err + } + for i, v := range m.GetRateLimits() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetLocalRatelimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LocalRatelimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLocalRatelimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LocalRatelimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/rbac/rbac.pb.clone.go b/pkg/api/gloo.solo.io/v1/enterprise/options/rbac/rbac.pb.clone.go new file mode 100644 index 000000000..60967ca3e --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/rbac/rbac.pb.clone.go @@ -0,0 +1,160 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/rbac/rbac.proto + +package rbac + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *Settings) Clone() proto.Message { + var target *Settings + if m == nil { + return target + } + target = &Settings{} + + target.RequireRbac = m.GetRequireRbac() + + return target +} + +// Clone function +func (m *ExtensionSettings) Clone() proto.Message { + var target *ExtensionSettings + if m == nil { + return target + } + target = &ExtensionSettings{} + + target.Disable = m.GetDisable() + + if m.GetPolicies() != nil { + target.Policies = make(map[string]*Policy, len(m.GetPolicies())) + for k, v := range m.GetPolicies() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Policies[k] = h.Clone().(*Policy) + } else { + target.Policies[k] = proto.Clone(v).(*Policy) + } + + } + } + + return target +} + +// Clone function +func (m *Policy) Clone() proto.Message { + var target *Policy + if m == nil { + return target + } + target = &Policy{} + + if m.GetPrincipals() != nil { + target.Principals = make([]*Principal, len(m.GetPrincipals())) + for idx, v := range m.GetPrincipals() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Principals[idx] = h.Clone().(*Principal) + } else { + target.Principals[idx] = proto.Clone(v).(*Principal) + } + + } + } + + if h, ok := interface{}(m.GetPermissions()).(clone.Cloner); ok { + target.Permissions = h.Clone().(*Permissions) + } else { + target.Permissions = proto.Clone(m.GetPermissions()).(*Permissions) + } + + target.NestedClaimDelimiter = m.GetNestedClaimDelimiter() + + return target +} + +// Clone function +func (m *Principal) Clone() proto.Message { + var target *Principal + if m == nil { + return target + } + target = &Principal{} + + if h, ok := interface{}(m.GetJwtPrincipal()).(clone.Cloner); ok { + target.JwtPrincipal = h.Clone().(*JWTPrincipal) + } else { + target.JwtPrincipal = proto.Clone(m.GetJwtPrincipal()).(*JWTPrincipal) + } + + return target +} + +// Clone function +func (m *JWTPrincipal) Clone() proto.Message { + var target *JWTPrincipal + if m == nil { + return target + } + target = &JWTPrincipal{} + + if m.GetClaims() != nil { + target.Claims = make(map[string]string, len(m.GetClaims())) + for k, v := range m.GetClaims() { + + target.Claims[k] = v + + } + } + + target.Provider = m.GetProvider() + + target.Matcher = m.GetMatcher() + + return target +} + +// Clone function +func (m *Permissions) Clone() proto.Message { + var target *Permissions + if m == nil { + return target + } + target = &Permissions{} + + target.PathPrefix = m.GetPathPrefix() + + if m.GetMethods() != nil { + target.Methods = make([]string, len(m.GetMethods())) + for idx, v := range m.GetMethods() { + + target.Methods[idx] = v + + } + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/rbac/rbac.pb.equal.go b/pkg/api/gloo.solo.io/v1/enterprise/options/rbac/rbac.pb.equal.go index e1bde3e86..0758af153 100644 --- a/pkg/api/gloo.solo.io/v1/enterprise/options/rbac/rbac.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/rbac/rbac.pb.equal.go @@ -146,6 +146,10 @@ func (m *Policy) Equal(that interface{}) bool { } } + if strings.Compare(m.GetNestedClaimDelimiter(), target.GetNestedClaimDelimiter()) != 0 { + return false + } + return true } @@ -219,6 +223,10 @@ func (m *JWTPrincipal) Equal(that interface{}) bool { return false } + if m.GetMatcher() != target.GetMatcher() { + return false + } + return true } diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/rbac/rbac.pb.go b/pkg/api/gloo.solo.io/v1/enterprise/options/rbac/rbac.pb.go index 715df31cb..007af41a9 100644 --- a/pkg/api/gloo.solo.io/v1/enterprise/options/rbac/rbac.pb.go +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/rbac/rbac.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/rbac/rbac.proto @@ -9,8 +9,8 @@ package rbac import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -23,27 +23,77 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 +// Used to specify how claims should be matched to the value. +type JWTPrincipal_ClaimMatcher int32 + +const ( + // The JWT claim value is a string that exactly matches the value. + JWTPrincipal_EXACT_STRING JWTPrincipal_ClaimMatcher = 0 + // The JWT claim value is a boolean that matches the value. + JWTPrincipal_BOOLEAN JWTPrincipal_ClaimMatcher = 1 + // The JWT claim value is a list that contains a string that exactly matches the value. + JWTPrincipal_LIST_CONTAINS JWTPrincipal_ClaimMatcher = 2 + // The JWT claim value is a glob pattern that matches the value. + JWTPrincipal_GLOB_MATCH JWTPrincipal_ClaimMatcher = 3 +) + +// Enum value maps for JWTPrincipal_ClaimMatcher. +var ( + JWTPrincipal_ClaimMatcher_name = map[int32]string{ + 0: "EXACT_STRING", + 1: "BOOLEAN", + 2: "LIST_CONTAINS", + 3: "GLOB_MATCH", + } + JWTPrincipal_ClaimMatcher_value = map[string]int32{ + "EXACT_STRING": 0, + "BOOLEAN": 1, + "LIST_CONTAINS": 2, + "GLOB_MATCH": 3, + } +) + +func (x JWTPrincipal_ClaimMatcher) Enum() *JWTPrincipal_ClaimMatcher { + p := new(JWTPrincipal_ClaimMatcher) + *p = x + return p +} + +func (x JWTPrincipal_ClaimMatcher) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (JWTPrincipal_ClaimMatcher) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_enumTypes[0].Descriptor() +} + +func (JWTPrincipal_ClaimMatcher) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_enumTypes[0] +} + +func (x JWTPrincipal_ClaimMatcher) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use JWTPrincipal_ClaimMatcher.Descriptor instead. +func (JWTPrincipal_ClaimMatcher) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_rawDescGZIP(), []int{4, 0} +} // Global RBAC settings type Settings struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Require RBAC for all virtual hosts. A vhost without an RBAC policy set will fallback to a deny-all policy. - RequireRbac bool `protobuf:"varint,1,opt,name=require_rbac,json=requireRbac,proto3" json:"require_rbac,omitempty"` + RequireRbac bool `protobuf:"varint,1,opt,name=require_rbac,json=requireRbac,proto3" json:"require_rbac,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Settings) Reset() { *x = Settings{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Settings) String() string { @@ -54,7 +104,7 @@ func (*Settings) ProtoMessage() {} func (x *Settings) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -78,24 +128,21 @@ func (x *Settings) GetRequireRbac() bool { // RBAC settings for Virtual Hosts and Routes type ExtensionSettings struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Disable RBAC checks on this resource (default false). This is useful to allow access to static resources/login page without RBAC checks. // If provided on a route, all route settings override any vhost settings Disable bool `protobuf:"varint,1,opt,name=disable,proto3" json:"disable,omitempty"` // Named policies to apply. - Policies map[string]*Policy `protobuf:"bytes,2,rep,name=policies,proto3" json:"policies,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Policies map[string]*Policy `protobuf:"bytes,2,rep,name=policies,proto3" json:"policies,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExtensionSettings) Reset() { *x = ExtensionSettings{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExtensionSettings) String() string { @@ -106,7 +153,7 @@ func (*ExtensionSettings) ProtoMessage() {} func (x *ExtensionSettings) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -136,23 +183,25 @@ func (x *ExtensionSettings) GetPolicies() map[string]*Policy { } type Policy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Principals in this policy. Principals []*Principal `protobuf:"bytes,1,rep,name=principals,proto3" json:"principals,omitempty"` // Permissions granted to the principals. Permissions *Permissions `protobuf:"bytes,2,opt,name=permissions,proto3" json:"permissions,omitempty"` + // The delimiter to use when specifying nested claim names within principals. + // Default is an empty string, which disables nested claim functionality. + // This is commonly set to `.`, allowing for nested claim names of the form + // `parent.child.grandchild` + NestedClaimDelimiter string `protobuf:"bytes,3,opt,name=nested_claim_delimiter,json=nestedClaimDelimiter,proto3" json:"nested_claim_delimiter,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Policy) Reset() { *x = Policy{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Policy) String() string { @@ -163,7 +212,7 @@ func (*Policy) ProtoMessage() {} func (x *Policy) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -192,22 +241,26 @@ func (x *Policy) GetPermissions() *Permissions { return nil } +func (x *Policy) GetNestedClaimDelimiter() string { + if x != nil { + return x.NestedClaimDelimiter + } + return "" +} + // An RBAC principal - the identity entity (usually a user or a service account). type Principal struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + JwtPrincipal *JWTPrincipal `protobuf:"bytes,1,opt,name=jwt_principal,json=jwtPrincipal,proto3" json:"jwt_principal,omitempty"` unknownFields protoimpl.UnknownFields - - JwtPrincipal *JWTPrincipal `protobuf:"bytes,1,opt,name=jwt_principal,json=jwtPrincipal,proto3" json:"jwt_principal,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Principal) Reset() { *x = Principal{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Principal) String() string { @@ -218,7 +271,7 @@ func (*Principal) ProtoMessage() {} func (x *Principal) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -242,25 +295,25 @@ func (x *Principal) GetJwtPrincipal() *JWTPrincipal { // A JWT principal. To use this, JWT option MUST be enabled. type JWTPrincipal struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Set of claims that make up this principal. Commonly, the 'iss' and 'sub' or 'email' claims are used. - // all claims must be present on the JWT. - Claims map[string]string `protobuf:"bytes,1,rep,name=claims,proto3" json:"claims,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // If you specify the path for a nested claim, such as 'parent.child.foo', you must also specify + // a non-empty string value for the `nested_claim_delimiter` field in the Policy. + Claims map[string]string `protobuf:"bytes,1,rep,name=claims,proto3" json:"claims,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Verify that the JWT came from a specific provider. This usually can be left empty // and a provider will be chosen automatically. Provider string `protobuf:"bytes,2,opt,name=provider,proto3" json:"provider,omitempty"` + // The matcher to use when evaluating this principal. By default, exact string comparison (EXACT_STRING) is used. + Matcher JWTPrincipal_ClaimMatcher `protobuf:"varint,3,opt,name=matcher,proto3,enum=rbac.options.gloo.solo.io.JWTPrincipal_ClaimMatcher" json:"matcher,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JWTPrincipal) Reset() { *x = JWTPrincipal{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JWTPrincipal) String() string { @@ -271,7 +324,7 @@ func (*JWTPrincipal) ProtoMessage() {} func (x *JWTPrincipal) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -300,26 +353,30 @@ func (x *JWTPrincipal) GetProvider() string { return "" } +func (x *JWTPrincipal) GetMatcher() JWTPrincipal_ClaimMatcher { + if x != nil { + return x.Matcher + } + return JWTPrincipal_EXACT_STRING +} + // What permissions should be granted. An empty field means allow-all. // If more than one field is added, all of them need to match. type Permissions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Paths that have this prefix will be allowed. PathPrefix string `protobuf:"bytes,1,opt,name=path_prefix,json=pathPrefix,proto3" json:"path_prefix,omitempty"` // What http methods (GET, POST, ...) are allowed. - Methods []string `protobuf:"bytes,2,rep,name=methods,proto3" json:"methods,omitempty"` + Methods []string `protobuf:"bytes,2,rep,name=methods,proto3" json:"methods,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Permissions) Reset() { *x = Permissions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Permissions) String() string { @@ -330,7 +387,7 @@ func (*Permissions) ProtoMessage() {} func (x *Permissions) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -361,7 +418,7 @@ func (x *Permissions) GetMethods() []string { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_rawDesc = string([]byte{ 0x0a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -387,7 +444,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_r 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x98, 0x01, 0x0a, 0x06, 0x50, 0x6f, 0x6c, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xce, 0x01, 0x0a, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x44, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, @@ -397,71 +454,88 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_r 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x22, 0x59, 0x0a, 0x09, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, - 0x12, 0x4c, 0x0a, 0x0d, 0x6a, 0x77, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x4a, 0x57, 0x54, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, - 0x52, 0x0c, 0x6a, 0x77, 0x74, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x22, 0xb2, - 0x01, 0x0a, 0x0c, 0x4a, 0x57, 0x54, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x12, - 0x4b, 0x0a, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x33, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6c, + 0x61, 0x69, 0x6d, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x14, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x22, 0x59, 0x0a, 0x09, 0x50, 0x72, 0x69, + 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x12, 0x4c, 0x0a, 0x0d, 0x6a, 0x77, 0x74, 0x5f, 0x70, 0x72, + 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x72, 0x62, 0x61, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4a, 0x57, 0x54, 0x50, 0x72, 0x69, + 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x52, 0x0c, 0x6a, 0x77, 0x74, 0x50, 0x72, 0x69, 0x6e, 0x63, + 0x69, 0x70, 0x61, 0x6c, 0x22, 0xd4, 0x02, 0x0a, 0x0c, 0x4a, 0x57, 0x54, 0x50, 0x72, 0x69, 0x6e, + 0x63, 0x69, 0x70, 0x61, 0x6c, 0x12, 0x4b, 0x0a, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x4a, 0x57, 0x54, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x2e, 0x43, + 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6c, 0x61, 0x69, + 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x4e, + 0x0a, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x34, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4a, 0x57, 0x54, 0x50, - 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6c, 0x61, 0x69, - 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0x48, 0x0a, 0x0b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, - 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x74, 0x68, 0x50, 0x72, 0x65, - 0x66, 0x69, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x42, 0x56, 0x5a, - 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, - 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, - 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x62, 0x61, 0x63, 0xc0, 0xf5, 0x04, - 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x1a, 0x39, + 0x0a, 0x0b, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x50, 0x0a, 0x0c, 0x43, 0x6c, 0x61, + 0x69, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x58, 0x41, + 0x43, 0x54, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x42, + 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x49, 0x53, 0x54, + 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x53, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x47, + 0x4c, 0x4f, 0x42, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x03, 0x22, 0x48, 0x0a, 0x0b, 0x50, + 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, + 0x74, 0x68, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x70, 0x61, 0x74, 0x68, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x6d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x73, 0x42, 0x5a, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, + 0xf5, 0x04, 0x01, 0x5a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x62, 0x61, + 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_rawDescData } +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes = make([]protoimpl.MessageInfo, 8) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_goTypes = []interface{}{ - (*Settings)(nil), // 0: rbac.options.gloo.solo.io.Settings - (*ExtensionSettings)(nil), // 1: rbac.options.gloo.solo.io.ExtensionSettings - (*Policy)(nil), // 2: rbac.options.gloo.solo.io.Policy - (*Principal)(nil), // 3: rbac.options.gloo.solo.io.Principal - (*JWTPrincipal)(nil), // 4: rbac.options.gloo.solo.io.JWTPrincipal - (*Permissions)(nil), // 5: rbac.options.gloo.solo.io.Permissions - nil, // 6: rbac.options.gloo.solo.io.ExtensionSettings.PoliciesEntry - nil, // 7: rbac.options.gloo.solo.io.JWTPrincipal.ClaimsEntry +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_goTypes = []any{ + (JWTPrincipal_ClaimMatcher)(0), // 0: rbac.options.gloo.solo.io.JWTPrincipal.ClaimMatcher + (*Settings)(nil), // 1: rbac.options.gloo.solo.io.Settings + (*ExtensionSettings)(nil), // 2: rbac.options.gloo.solo.io.ExtensionSettings + (*Policy)(nil), // 3: rbac.options.gloo.solo.io.Policy + (*Principal)(nil), // 4: rbac.options.gloo.solo.io.Principal + (*JWTPrincipal)(nil), // 5: rbac.options.gloo.solo.io.JWTPrincipal + (*Permissions)(nil), // 6: rbac.options.gloo.solo.io.Permissions + nil, // 7: rbac.options.gloo.solo.io.ExtensionSettings.PoliciesEntry + nil, // 8: rbac.options.gloo.solo.io.JWTPrincipal.ClaimsEntry } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_depIdxs = []int32{ - 6, // 0: rbac.options.gloo.solo.io.ExtensionSettings.policies:type_name -> rbac.options.gloo.solo.io.ExtensionSettings.PoliciesEntry - 3, // 1: rbac.options.gloo.solo.io.Policy.principals:type_name -> rbac.options.gloo.solo.io.Principal - 5, // 2: rbac.options.gloo.solo.io.Policy.permissions:type_name -> rbac.options.gloo.solo.io.Permissions - 4, // 3: rbac.options.gloo.solo.io.Principal.jwt_principal:type_name -> rbac.options.gloo.solo.io.JWTPrincipal - 7, // 4: rbac.options.gloo.solo.io.JWTPrincipal.claims:type_name -> rbac.options.gloo.solo.io.JWTPrincipal.ClaimsEntry - 2, // 5: rbac.options.gloo.solo.io.ExtensionSettings.PoliciesEntry.value:type_name -> rbac.options.gloo.solo.io.Policy - 6, // [6:6] is the sub-list for method output_type - 6, // [6:6] is the sub-list for method input_type - 6, // [6:6] is the sub-list for extension type_name - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name + 7, // 0: rbac.options.gloo.solo.io.ExtensionSettings.policies:type_name -> rbac.options.gloo.solo.io.ExtensionSettings.PoliciesEntry + 4, // 1: rbac.options.gloo.solo.io.Policy.principals:type_name -> rbac.options.gloo.solo.io.Principal + 6, // 2: rbac.options.gloo.solo.io.Policy.permissions:type_name -> rbac.options.gloo.solo.io.Permissions + 5, // 3: rbac.options.gloo.solo.io.Principal.jwt_principal:type_name -> rbac.options.gloo.solo.io.JWTPrincipal + 8, // 4: rbac.options.gloo.solo.io.JWTPrincipal.claims:type_name -> rbac.options.gloo.solo.io.JWTPrincipal.ClaimsEntry + 0, // 5: rbac.options.gloo.solo.io.JWTPrincipal.matcher:type_name -> rbac.options.gloo.solo.io.JWTPrincipal.ClaimMatcher + 3, // 6: rbac.options.gloo.solo.io.ExtensionSettings.PoliciesEntry.value:type_name -> rbac.options.gloo.solo.io.Policy + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { @@ -471,96 +545,22 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_ if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Settings); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtensionSettings); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Policy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Principal); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JWTPrincipal); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Permissions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_rawDesc, - NumEnums: 0, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_rawDesc)), + NumEnums: 1, NumMessages: 8, NumExtensions: 0, NumServices: 0, }, GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_goTypes, DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_enumTypes, MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_rbac_rbac_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/rbac/rbac.pb.hash.go b/pkg/api/gloo.solo.io/v1/enterprise/options/rbac/rbac.pb.hash.go index d42d1d096..6f707da2d 100644 --- a/pkg/api/gloo.solo.io/v1/enterprise/options/rbac/rbac.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/rbac/rbac.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Settings) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -47,6 +51,10 @@ func (m *Settings) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ExtensionSettings) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -71,14 +79,20 @@ func (m *ExtensionSettings) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -101,6 +115,10 @@ func (m *ExtensionSettings) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Policy) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -116,14 +134,20 @@ func (m *Policy) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetPrincipals() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -132,23 +156,37 @@ func (m *Policy) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetPermissions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Permissions")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPermissions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPermissions(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Permissions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } + if _, err = hasher.Write([]byte(m.GetNestedClaimDelimiter())); err != nil { + return 0, err + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Principal) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -162,14 +200,20 @@ func (m *Principal) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetJwtPrincipal()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("JwtPrincipal")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetJwtPrincipal(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetJwtPrincipal(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("JwtPrincipal")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -179,6 +223,10 @@ func (m *Principal) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *JWTPrincipal) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -218,10 +266,19 @@ func (m *JWTPrincipal) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + err = binary.Write(hasher, binary.LittleEndian, m.GetMatcher()) + if err != nil { + return 0, err + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Permissions) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/rbac/rbac.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/enterprise/options/rbac/rbac.pb.uniquehash.go new file mode 100644 index 000000000..68f65ad8a --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/rbac/rbac.pb.uniquehash.go @@ -0,0 +1,345 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/rbac/rbac.proto + +package rbac + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Settings) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("rbac.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/rbac.Settings")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RequireRbac")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRequireRbac()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExtensionSettings) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("rbac.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/rbac.ExtensionSettings")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Disable")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDisable()) + if err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetPolicies() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Policy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("rbac.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/rbac.Policy")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Principals")); err != nil { + return 0, err + } + for i, v := range m.GetPrincipals() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetPermissions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Permissions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPermissions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Permissions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("NestedClaimDelimiter")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetNestedClaimDelimiter())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Principal) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("rbac.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/rbac.Principal")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetJwtPrincipal()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("JwtPrincipal")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJwtPrincipal(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("JwtPrincipal")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *JWTPrincipal) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("rbac.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/rbac.JWTPrincipal")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetClaims() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("Provider")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetProvider())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMatcher()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Permissions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("rbac.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/rbac.Permissions")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("PathPrefix")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPathPrefix())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Methods")); err != nil { + return 0, err + } + for i, v := range m.GetMethods() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/stateful_session/stateful_session.pb.go b/pkg/api/gloo.solo.io/v1/enterprise/options/stateful_session/stateful_session.pb.go new file mode 100644 index 000000000..3e9f0ee96 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/stateful_session/stateful_session.pb.go @@ -0,0 +1,399 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/stateful_session/stateful_session.proto + +package stateful_session + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/envoyproxy/protoc-gen-validate/validate" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This configures the Envoy [Stateful Session](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/stateful_session_filter) filter for a listener +type StatefulSession struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to SessionState: + // + // *StatefulSession_CookieBased + // *StatefulSession_HeaderBased + SessionState isStatefulSession_SessionState `protobuf_oneof:"SessionState"` + // If set to True, the HTTP request must be routed to the requested destination. If the requested destination is not available, Envoy returns 503. Defaults to False. + Strict bool `protobuf:"varint,3,opt,name=strict,proto3" json:"strict,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StatefulSession) Reset() { + *x = StatefulSession{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StatefulSession) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StatefulSession) ProtoMessage() {} + +func (x *StatefulSession) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StatefulSession.ProtoReflect.Descriptor instead. +func (*StatefulSession) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_rawDescGZIP(), []int{0} +} + +func (x *StatefulSession) GetSessionState() isStatefulSession_SessionState { + if x != nil { + return x.SessionState + } + return nil +} + +func (x *StatefulSession) GetCookieBased() *CookieBasedSessionState { + if x != nil { + if x, ok := x.SessionState.(*StatefulSession_CookieBased); ok { + return x.CookieBased + } + } + return nil +} + +func (x *StatefulSession) GetHeaderBased() *HeaderBasedSessionState { + if x != nil { + if x, ok := x.SessionState.(*StatefulSession_HeaderBased); ok { + return x.HeaderBased + } + } + return nil +} + +func (x *StatefulSession) GetStrict() bool { + if x != nil { + return x.Strict + } + return false +} + +type isStatefulSession_SessionState interface { + isStatefulSession_SessionState() +} + +type StatefulSession_CookieBased struct { + // Configure a cookie based session state - https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/http/stateful_session/cookie/v3/cookie.proto#envoy-v3-api-msg-extensions-http-stateful-session-cookie-v3-cookiebasedsessionstate + // Exactly one of `cookie_based` or `header_based` must be set. + CookieBased *CookieBasedSessionState `protobuf:"bytes,1,opt,name=cookie_based,json=cookieBased,proto3,oneof"` +} + +type StatefulSession_HeaderBased struct { + // Configure a header based session state - https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/http/stateful_session/cookie/v3/cookie.proto#envoy-v3-api-msg-extensions-http-stateful-session-cookie-v3-cookiebasedsessionstate + // Exactly one of `cookie_based` or `header_based` must be set. + HeaderBased *HeaderBasedSessionState `protobuf:"bytes,2,opt,name=header_based,json=headerBased,proto3,oneof"` +} + +func (*StatefulSession_CookieBased) isStatefulSession_SessionState() {} + +func (*StatefulSession_HeaderBased) isStatefulSession_SessionState() {} + +// Configuration for the [cookie-based session state](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/http/stateful_session/cookie/v3/cookie.proto#envoy-v3-api-msg-extensions-http-stateful-session-cookie-v3-cookiebasedsessionstate) filter +type CookieBasedSessionState struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Required, the cookie configuration used to track session state. + Cookie *CookieBasedSessionState_Cookie `protobuf:"bytes,1,opt,name=cookie,proto3" json:"cookie,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CookieBasedSessionState) Reset() { + *x = CookieBasedSessionState{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CookieBasedSessionState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CookieBasedSessionState) ProtoMessage() {} + +func (x *CookieBasedSessionState) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CookieBasedSessionState.ProtoReflect.Descriptor instead. +func (*CookieBasedSessionState) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_rawDescGZIP(), []int{1} +} + +func (x *CookieBasedSessionState) GetCookie() *CookieBasedSessionState_Cookie { + if x != nil { + return x.Cookie + } + return nil +} + +// Configuration for the [header-based session state](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/http/stateful_session/header/v3/header.proto#extension-envoy-http-stateful-session-header) filter +type HeaderBasedSessionState struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Required, the header used to track session state. + HeaderName string `protobuf:"bytes,1,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HeaderBasedSessionState) Reset() { + *x = HeaderBasedSessionState{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HeaderBasedSessionState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HeaderBasedSessionState) ProtoMessage() {} + +func (x *HeaderBasedSessionState) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HeaderBasedSessionState.ProtoReflect.Descriptor instead. +func (*HeaderBasedSessionState) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_rawDescGZIP(), []int{2} +} + +func (x *HeaderBasedSessionState) GetHeaderName() string { + if x != nil { + return x.HeaderName + } + return "" +} + +type CookieBasedSessionState_Cookie struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Required, the name that will be used to obtain cookie value from downstream HTTP request or generate new cookie for downstream. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Path of cookie. This will be used to set the path of a new cookie when it is generated. If no path is specified here, no path will be set for the cookie. + Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` + // Duration of cookie. This will be used to set the expiry time of a new cookie when it is generated. Set this to 0s to use a session cookie and disable cookie expiration. + Ttl *durationpb.Duration `protobuf:"bytes,3,opt,name=ttl,proto3" json:"ttl,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CookieBasedSessionState_Cookie) Reset() { + *x = CookieBasedSessionState_Cookie{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CookieBasedSessionState_Cookie) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CookieBasedSessionState_Cookie) ProtoMessage() {} + +func (x *CookieBasedSessionState_Cookie) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CookieBasedSessionState_Cookie.ProtoReflect.Descriptor instead. +func (*CookieBasedSessionState_Cookie) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *CookieBasedSessionState_Cookie) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CookieBasedSessionState_Cookie) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *CookieBasedSessionState_Cookie) GetTtl() *durationpb.Duration { + if x != nil { + return x.Ttl + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_rawDesc = string([]byte{ + 0x0a, 0x68, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x5f, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x5f, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x25, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x66, 0x75, 0x6c, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x88, 0x02, 0x0a, 0x0f, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x63, + 0x0a, 0x0c, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x5f, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x6f, + 0x6b, 0x69, 0x65, 0x42, 0x61, 0x73, 0x65, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x42, 0x61, + 0x73, 0x65, 0x64, 0x12, 0x63, 0x0a, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x61, + 0x73, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x66, 0x75, 0x6c, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x61, 0x73, 0x65, 0x64, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x42, 0x61, 0x73, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, + 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, + 0x42, 0x13, 0x0a, 0x0c, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0xf7, 0x01, 0x0a, 0x17, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, + 0x42, 0x61, 0x73, 0x65, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x67, 0x0a, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x45, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x5f, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, + 0x42, 0x61, 0x73, 0x65, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x2e, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x1a, 0x73, 0x0a, 0x06, 0x43, 0x6f, + 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x1c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x37, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, + 0xfa, 0x42, 0x07, 0xaa, 0x01, 0x04, 0x08, 0x01, 0x32, 0x00, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x22, + 0x44, 0x0a, 0x17, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x61, 0x73, 0x65, 0x64, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x0b, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x5a, 0x5a, 0x58, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_goTypes = []any{ + (*StatefulSession)(nil), // 0: stateful_session.options.gloo.solo.io.StatefulSession + (*CookieBasedSessionState)(nil), // 1: stateful_session.options.gloo.solo.io.CookieBasedSessionState + (*HeaderBasedSessionState)(nil), // 2: stateful_session.options.gloo.solo.io.HeaderBasedSessionState + (*CookieBasedSessionState_Cookie)(nil), // 3: stateful_session.options.gloo.solo.io.CookieBasedSessionState.Cookie + (*durationpb.Duration)(nil), // 4: google.protobuf.Duration +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_depIdxs = []int32{ + 1, // 0: stateful_session.options.gloo.solo.io.StatefulSession.cookie_based:type_name -> stateful_session.options.gloo.solo.io.CookieBasedSessionState + 2, // 1: stateful_session.options.gloo.solo.io.StatefulSession.header_based:type_name -> stateful_session.options.gloo.solo.io.HeaderBasedSessionState + 3, // 2: stateful_session.options.gloo.solo.io.CookieBasedSessionState.cookie:type_name -> stateful_session.options.gloo.solo.io.CookieBasedSessionState.Cookie + 4, // 3: stateful_session.options.gloo.solo.io.CookieBasedSessionState.Cookie.ttl:type_name -> google.protobuf.Duration + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_msgTypes[0].OneofWrappers = []any{ + (*StatefulSession_CookieBased)(nil), + (*StatefulSession_HeaderBased)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_rawDesc)), + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_stateful_session_stateful_session_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/waf/waf.pb.clone.go b/pkg/api/gloo.solo.io/v1/enterprise/options/waf/waf.pb.clone.go new file mode 100644 index 000000000..f053d23ef --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/waf/waf.pb.clone.go @@ -0,0 +1,140 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/waf/waf.proto + +package waf + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_waf "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/waf" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *Settings) Clone() proto.Message { + var target *Settings + if m == nil { + return target + } + target = &Settings{} + + target.Disabled = m.GetDisabled() + + target.CustomInterventionMessage = m.GetCustomInterventionMessage() + + if h, ok := interface{}(m.GetCoreRuleSet()).(clone.Cloner); ok { + target.CoreRuleSet = h.Clone().(*CoreRuleSet) + } else { + target.CoreRuleSet = proto.Clone(m.GetCoreRuleSet()).(*CoreRuleSet) + } + + if m.GetRuleSets() != nil { + target.RuleSets = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_waf.RuleSet, len(m.GetRuleSets())) + for idx, v := range m.GetRuleSets() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RuleSets[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_waf.RuleSet) + } else { + target.RuleSets[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_waf.RuleSet) + } + + } + } + + if m.GetConfigMapRuleSets() != nil { + target.ConfigMapRuleSets = make([]*RuleSetFromConfigMap, len(m.GetConfigMapRuleSets())) + for idx, v := range m.GetConfigMapRuleSets() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ConfigMapRuleSets[idx] = h.Clone().(*RuleSetFromConfigMap) + } else { + target.ConfigMapRuleSets[idx] = proto.Clone(v).(*RuleSetFromConfigMap) + } + + } + } + + if h, ok := interface{}(m.GetAuditLogging()).(clone.Cloner); ok { + target.AuditLogging = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_waf.AuditLogging) + } else { + target.AuditLogging = proto.Clone(m.GetAuditLogging()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_waf.AuditLogging) + } + + target.RequestHeadersOnly = m.GetRequestHeadersOnly() + + target.ResponseHeadersOnly = m.GetResponseHeadersOnly() + + return target +} + +// Clone function +func (m *RuleSetFromConfigMap) Clone() proto.Message { + var target *RuleSetFromConfigMap + if m == nil { + return target + } + target = &RuleSetFromConfigMap{} + + if h, ok := interface{}(m.GetConfigMapRef()).(clone.Cloner); ok { + target.ConfigMapRef = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.ConfigMapRef = proto.Clone(m.GetConfigMapRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + if m.GetDataMapKeys() != nil { + target.DataMapKeys = make([]string, len(m.GetDataMapKeys())) + for idx, v := range m.GetDataMapKeys() { + + target.DataMapKeys[idx] = v + + } + } + + return target +} + +// Clone function +func (m *CoreRuleSet) Clone() proto.Message { + var target *CoreRuleSet + if m == nil { + return target + } + target = &CoreRuleSet{} + + switch m.CustomSettingsType.(type) { + + case *CoreRuleSet_CustomSettingsString: + + target.CustomSettingsType = &CoreRuleSet_CustomSettingsString{ + CustomSettingsString: m.GetCustomSettingsString(), + } + + case *CoreRuleSet_CustomSettingsFile: + + target.CustomSettingsType = &CoreRuleSet_CustomSettingsFile{ + CustomSettingsFile: m.GetCustomSettingsFile(), + } + + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/waf/waf.pb.equal.go b/pkg/api/gloo.solo.io/v1/enterprise/options/waf/waf.pb.equal.go index a9bf5e8b9..bc4338e77 100644 --- a/pkg/api/gloo.solo.io/v1/enterprise/options/waf/waf.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/waf/waf.pb.equal.go @@ -81,6 +81,23 @@ func (m *Settings) Equal(that interface{}) bool { } + if len(m.GetConfigMapRuleSets()) != len(target.GetConfigMapRuleSets()) { + return false + } + for idx, v := range m.GetConfigMapRuleSets() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetConfigMapRuleSets()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetConfigMapRuleSets()[idx]) { + return false + } + } + + } + if h, ok := interface{}(m.GetAuditLogging()).(equality.Equalizer); ok { if !h.Equal(target.GetAuditLogging()) { return false @@ -102,6 +119,51 @@ func (m *Settings) Equal(that interface{}) bool { return true } +// Equal function +func (m *RuleSetFromConfigMap) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RuleSetFromConfigMap) + if !ok { + that2, ok := that.(RuleSetFromConfigMap) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetConfigMapRef()).(equality.Equalizer); ok { + if !h.Equal(target.GetConfigMapRef()) { + return false + } + } else { + if !proto.Equal(m.GetConfigMapRef(), target.GetConfigMapRef()) { + return false + } + } + + if len(m.GetDataMapKeys()) != len(target.GetDataMapKeys()) { + return false + } + for idx, v := range m.GetDataMapKeys() { + + if strings.Compare(v, target.GetDataMapKeys()[idx]) != 0 { + return false + } + + } + + return true +} + // Equal function func (m *CoreRuleSet) Equal(that interface{}) bool { if that == nil { @@ -126,17 +188,28 @@ func (m *CoreRuleSet) Equal(that interface{}) bool { switch m.CustomSettingsType.(type) { case *CoreRuleSet_CustomSettingsString: + if _, ok := target.CustomSettingsType.(*CoreRuleSet_CustomSettingsString); !ok { + return false + } if strings.Compare(m.GetCustomSettingsString(), target.GetCustomSettingsString()) != 0 { return false } case *CoreRuleSet_CustomSettingsFile: + if _, ok := target.CustomSettingsType.(*CoreRuleSet_CustomSettingsFile); !ok { + return false + } if strings.Compare(m.GetCustomSettingsFile(), target.GetCustomSettingsFile()) != 0 { return false } + default: + // m is nil but target is not nil + if m.CustomSettingsType != target.CustomSettingsType { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/waf/waf.pb.go b/pkg/api/gloo.solo.io/v1/enterprise/options/waf/waf.pb.go index 18f80d3df..c0f195766 100644 --- a/pkg/api/gloo.solo.io/v1/enterprise/options/waf/waf.pb.go +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/waf/waf.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/waf/waf.proto @@ -9,10 +9,11 @@ package waf import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" waf "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/waf" + core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) @@ -24,15 +25,8 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Settings struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Disable waf on this resource (if omitted defaults to false). // If a route/virtual host is configured with WAF, you must explicitly disable its WAF, // i.e., it will not inherit the disabled status of its parent @@ -42,23 +36,28 @@ type Settings struct { // Add OWASP core rule set // if nil will not be added CoreRuleSet *CoreRuleSet `protobuf:"bytes,3,opt,name=core_rule_set,json=coreRuleSet,proto3" json:"core_rule_set,omitempty"` - // Custom rule sets rules to add + // Custom rule sets to add. Any subsequent changes to the rules in these files are not automatically updated. To update rules from files, version and update the file name. + // If you want dynamically updated rules, use the `configMapRuleSets` option instead. RuleSets []*waf.RuleSet `protobuf:"bytes,4,rep,name=rule_sets,json=ruleSets,proto3" json:"rule_sets,omitempty"` + // Kubernetes configmaps with the rule sets that you want to use. + // The rules must be in the value of the key-value mappings in the `data` field of the configmap. + // Subsequent updates to the configmap values are dynamically updated in the configuration. + ConfigMapRuleSets []*RuleSetFromConfigMap `protobuf:"bytes,8,rep,name=config_map_rule_sets,json=configMapRuleSets,proto3" json:"config_map_rule_sets,omitempty"` // Audit Log settings AuditLogging *waf.AuditLogging `protobuf:"bytes,5,opt,name=audit_logging,json=auditLogging,proto3" json:"audit_logging,omitempty"` // Only process request headers, not buffering the request body RequestHeadersOnly bool `protobuf:"varint,6,opt,name=request_headers_only,json=requestHeadersOnly,proto3" json:"request_headers_only,omitempty"` // Only process response headers, not buffering the response body ResponseHeadersOnly bool `protobuf:"varint,7,opt,name=response_headers_only,json=responseHeadersOnly,proto3" json:"response_headers_only,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Settings) Reset() { *x = Settings{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Settings) String() string { @@ -69,7 +68,7 @@ func (*Settings) ProtoMessage() {} func (x *Settings) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -112,6 +111,13 @@ func (x *Settings) GetRuleSets() []*waf.RuleSet { return nil } +func (x *Settings) GetConfigMapRuleSets() []*RuleSetFromConfigMap { + if x != nil { + return x.ConfigMapRuleSets + } + return nil +} + func (x *Settings) GetAuditLogging() *waf.AuditLogging { if x != nil { return x.AuditLogging @@ -133,28 +139,83 @@ func (x *Settings) GetResponseHeadersOnly() bool { return false } -type CoreRuleSet struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type RuleSetFromConfigMap struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The Kubernetes configmap that has the rule sets as values in the `data` section. + ConfigMapRef *core.ResourceRef `protobuf:"bytes,1,opt,name=config_map_ref,json=configMapRef,proto3" json:"config_map_ref,omitempty"` + // The ConfigMap might have multiple key-value pairs in the `data` section, such as when you create the ConfigMap from multiple files. Each value in a key-value pair may contain 0 or more rules. + // You can use the `dataMapKey` field to select which keys to use, and the order you want them applied. + // If this field is included, only the rules from the specified keys are applied, in the specified order. Any rules contained in the value of keys not included are ignored. + // If this field is not included, all of the keys in the `data` section of the ConfigMap are sorted alphabetically, and all of the rules are included in the resulting order. The order of key-value pairs might differ from the order in which they appear in the ConfigMap (note, the rules within each mapping stay in the same order as they appear in the ConfigMap). + DataMapKeys []string `protobuf:"bytes,2,rep,name=data_map_keys,json=dataMapKeys,proto3" json:"data_map_keys,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} +func (x *RuleSetFromConfigMap) Reset() { + *x = RuleSetFromConfigMap{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RuleSetFromConfigMap) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RuleSetFromConfigMap) ProtoMessage() {} + +func (x *RuleSetFromConfigMap) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RuleSetFromConfigMap.ProtoReflect.Descriptor instead. +func (*RuleSetFromConfigMap) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_rawDescGZIP(), []int{1} +} + +func (x *RuleSetFromConfigMap) GetConfigMapRef() *core.ResourceRef { + if x != nil { + return x.ConfigMapRef + } + return nil +} + +func (x *RuleSetFromConfigMap) GetDataMapKeys() []string { + if x != nil { + return x.DataMapKeys + } + return nil +} + +type CoreRuleSet struct { + state protoimpl.MessageState `protogen:"open.v1"` // Optional custom settings for the OWASP core rule set. // For an example on the configuration options see: https://github.com/SpiderLabs/owasp-modsecurity-crs/blob/v3.2/dev/crs-setup.conf.example // The same rules apply to these options as do to the `RuleSet`s. The file option is better if possible. // - // Types that are assignable to CustomSettingsType: + // Types that are valid to be assigned to CustomSettingsType: + // // *CoreRuleSet_CustomSettingsString // *CoreRuleSet_CustomSettingsFile CustomSettingsType isCoreRuleSet_CustomSettingsType `protobuf_oneof:"CustomSettingsType"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CoreRuleSet) Reset() { *x = CoreRuleSet{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CoreRuleSet) String() string { @@ -164,8 +225,8 @@ func (x *CoreRuleSet) String() string { func (*CoreRuleSet) ProtoMessage() {} func (x *CoreRuleSet) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_msgTypes[2] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -177,26 +238,30 @@ func (x *CoreRuleSet) ProtoReflect() protoreflect.Message { // Deprecated: Use CoreRuleSet.ProtoReflect.Descriptor instead. func (*CoreRuleSet) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_rawDescGZIP(), []int{1} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_rawDescGZIP(), []int{2} } -func (m *CoreRuleSet) GetCustomSettingsType() isCoreRuleSet_CustomSettingsType { - if m != nil { - return m.CustomSettingsType +func (x *CoreRuleSet) GetCustomSettingsType() isCoreRuleSet_CustomSettingsType { + if x != nil { + return x.CustomSettingsType } return nil } func (x *CoreRuleSet) GetCustomSettingsString() string { - if x, ok := x.GetCustomSettingsType().(*CoreRuleSet_CustomSettingsString); ok { - return x.CustomSettingsString + if x != nil { + if x, ok := x.CustomSettingsType.(*CoreRuleSet_CustomSettingsString); ok { + return x.CustomSettingsString + } } return "" } func (x *CoreRuleSet) GetCustomSettingsFile() string { - if x, ok := x.GetCustomSettingsType().(*CoreRuleSet_CustomSettingsFile); ok { - return x.CustomSettingsFile + if x != nil { + if x, ok := x.CustomSettingsType.(*CoreRuleSet_CustomSettingsFile); ok { + return x.CustomSettingsFile + } } return "" } @@ -211,7 +276,7 @@ type CoreRuleSet_CustomSettingsString struct { } type CoreRuleSet_CustomSettingsFile struct { - // String representing the core rule set custom config options + // String representing a file location with core rule set custom config options CustomSettingsFile string `protobuf:"bytes,3,opt,name=custom_settings_file,json=customSettingsFile,proto3,oneof"` } @@ -221,7 +286,7 @@ func (*CoreRuleSet_CustomSettingsFile) isCoreRuleSet_CustomSettingsType() {} var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_rawDesc = string([]byte{ 0x0a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -233,82 +298,103 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_wa 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x77, 0x61, 0x66, 0x2f, 0x77, 0x61, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, - 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xc2, 0x03, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, - 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3e, 0x0a, 0x1b, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x65, 0x6e, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x19, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x65, 0x6e, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x49, 0x0a, 0x0d, 0x63, - 0x6f, 0x72, 0x65, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x61, 0x66, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, - 0x72, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x52, - 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x12, 0x4d, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x73, - 0x65, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x6e, 0x76, 0x6f, - 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, - 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6d, 0x6f, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, - 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x72, 0x75, 0x6c, - 0x65, 0x53, 0x65, 0x74, 0x73, 0x12, 0x5a, 0x0a, 0x0d, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, 0x6c, - 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x65, - 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6d, 0x6f, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x67, - 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x61, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, - 0x67, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x12, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4f, - 0x6e, 0x6c, 0x79, 0x12, 0x32, 0x0a, 0x15, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x13, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x8f, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x72, 0x65, - 0x52, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x12, 0x36, 0x0a, 0x16, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x14, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, - 0x32, 0x0a, 0x14, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x12, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x46, - 0x69, 0x6c, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x54, 0x79, 0x70, 0x65, 0x42, 0x55, 0x5a, 0x4b, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, - 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x77, 0x61, 0x66, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, + 0x2f, 0x77, 0x61, 0x66, 0x2f, 0x77, 0x61, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, + 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0xa3, 0x04, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1a, 0x0a, + 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3e, 0x0a, 0x1b, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x65, 0x6e, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x49, 0x0a, 0x0d, 0x63, 0x6f, 0x72, + 0x65, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x77, 0x61, 0x66, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x72, 0x65, + 0x52, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x75, 0x6c, + 0x65, 0x53, 0x65, 0x74, 0x12, 0x4d, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x74, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, + 0x74, 0x70, 0x2e, 0x6d, 0x6f, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x76, + 0x32, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x53, + 0x65, 0x74, 0x73, 0x12, 0x5f, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, + 0x70, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2e, 0x2e, 0x77, 0x61, 0x66, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x75, 0x6c, + 0x65, 0x53, 0x65, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, + 0x70, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x75, 0x6c, 0x65, + 0x53, 0x65, 0x74, 0x73, 0x12, 0x5a, 0x0a, 0x0d, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, 0x6c, 0x6f, + 0x67, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6d, 0x6f, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x69, + 0x6e, 0x67, 0x52, 0x0c, 0x61, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, + 0x12, 0x30, 0x0a, 0x14, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4f, 0x6e, + 0x6c, 0x79, 0x12, 0x32, 0x0a, 0x15, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x13, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x7b, 0x0a, 0x14, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x65, + 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x3f, + 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x72, 0x65, 0x66, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, + 0x66, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x66, 0x12, + 0x22, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x4b, + 0x65, 0x79, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x75, 0x6c, 0x65, + 0x53, 0x65, 0x74, 0x12, 0x36, 0x0a, 0x16, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x14, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x32, 0x0a, 0x14, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x66, + 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x12, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x42, + 0x14, 0x0a, 0x12, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x54, 0x79, 0x70, 0x65, 0x42, 0x59, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, + 0xf5, 0x04, 0x01, 0x5a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x77, 0x61, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_goTypes = []interface{}{ - (*Settings)(nil), // 0: waf.options.gloo.solo.io.Settings - (*CoreRuleSet)(nil), // 1: waf.options.gloo.solo.io.CoreRuleSet - (*waf.RuleSet)(nil), // 2: envoy.config.filter.http.modsecurity.v2.RuleSet - (*waf.AuditLogging)(nil), // 3: envoy.config.filter.http.modsecurity.v2.AuditLogging +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_goTypes = []any{ + (*Settings)(nil), // 0: waf.options.gloo.solo.io.Settings + (*RuleSetFromConfigMap)(nil), // 1: waf.options.gloo.solo.io.RuleSetFromConfigMap + (*CoreRuleSet)(nil), // 2: waf.options.gloo.solo.io.CoreRuleSet + (*waf.RuleSet)(nil), // 3: envoy.config.filter.http.modsecurity.v2.RuleSet + (*waf.AuditLogging)(nil), // 4: envoy.config.filter.http.modsecurity.v2.AuditLogging + (*core.ResourceRef)(nil), // 5: core.solo.io.ResourceRef } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_depIdxs = []int32{ - 1, // 0: waf.options.gloo.solo.io.Settings.core_rule_set:type_name -> waf.options.gloo.solo.io.CoreRuleSet - 2, // 1: waf.options.gloo.solo.io.Settings.rule_sets:type_name -> envoy.config.filter.http.modsecurity.v2.RuleSet - 3, // 2: waf.options.gloo.solo.io.Settings.audit_logging:type_name -> envoy.config.filter.http.modsecurity.v2.AuditLogging - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name + 2, // 0: waf.options.gloo.solo.io.Settings.core_rule_set:type_name -> waf.options.gloo.solo.io.CoreRuleSet + 3, // 1: waf.options.gloo.solo.io.Settings.rule_sets:type_name -> envoy.config.filter.http.modsecurity.v2.RuleSet + 1, // 2: waf.options.gloo.solo.io.Settings.config_map_rule_sets:type_name -> waf.options.gloo.solo.io.RuleSetFromConfigMap + 4, // 3: waf.options.gloo.solo.io.Settings.audit_logging:type_name -> envoy.config.filter.http.modsecurity.v2.AuditLogging + 5, // 4: waf.options.gloo.solo.io.RuleSetFromConfigMap.config_map_ref:type_name -> core.solo.io.ResourceRef + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name } func init() { @@ -318,33 +404,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_w if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Settings); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CoreRuleSet); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_msgTypes[1].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_msgTypes[2].OneofWrappers = []any{ (*CoreRuleSet_CustomSettingsString)(nil), (*CoreRuleSet_CustomSettingsFile)(nil), } @@ -352,9 +412,9 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_w out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_rawDesc)), NumEnums: 0, - NumMessages: 2, + NumMessages: 3, NumExtensions: 0, NumServices: 0, }, @@ -363,7 +423,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_w MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_waf_waf_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/waf/waf.pb.hash.go b/pkg/api/gloo.solo.io/v1/enterprise/options/waf/waf.pb.hash.go index 11449a8c7..2c1278561 100644 --- a/pkg/api/gloo.solo.io/v1/enterprise/options/waf/waf.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/waf/waf.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Settings) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -48,14 +52,20 @@ func (m *Settings) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetCoreRuleSet()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CoreRuleSet")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCoreRuleSet(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCoreRuleSet(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("CoreRuleSet")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -64,14 +74,44 @@ func (m *Settings) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRuleSets() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + for _, v := range m.GetConfigMapRuleSets() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -80,14 +120,20 @@ func (m *Settings) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetAuditLogging()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuditLogging")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAuditLogging(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAuditLogging(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AuditLogging")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -107,6 +153,58 @@ func (m *Settings) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RuleSetFromConfigMap) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("waf.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/waf.RuleSetFromConfigMap")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetConfigMapRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConfigMapRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConfigMapRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConfigMapRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetDataMapKeys() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *CoreRuleSet) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/waf/waf.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/enterprise/options/waf/waf.pb.uniquehash.go new file mode 100644 index 000000000..afb932386 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/waf/waf.pb.uniquehash.go @@ -0,0 +1,275 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/waf/waf.proto + +package waf + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Settings) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("waf.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/waf.Settings")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Disabled")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDisabled()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CustomInterventionMessage")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCustomInterventionMessage())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCoreRuleSet()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CoreRuleSet")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCoreRuleSet(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CoreRuleSet")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RuleSets")); err != nil { + return 0, err + } + for i, v := range m.GetRuleSets() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("ConfigMapRuleSets")); err != nil { + return 0, err + } + for i, v := range m.GetConfigMapRuleSets() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetAuditLogging()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AuditLogging")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAuditLogging(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AuditLogging")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RequestHeadersOnly")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRequestHeadersOnly()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ResponseHeadersOnly")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetResponseHeadersOnly()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RuleSetFromConfigMap) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("waf.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/waf.RuleSetFromConfigMap")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetConfigMapRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConfigMapRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConfigMapRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConfigMapRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("DataMapKeys")); err != nil { + return 0, err + } + for i, v := range m.GetDataMapKeys() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *CoreRuleSet) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("waf.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/waf.CoreRuleSet")); err != nil { + return 0, err + } + + switch m.CustomSettingsType.(type) { + + case *CoreRuleSet_CustomSettingsString: + + if _, err = hasher.Write([]byte("CustomSettingsString")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCustomSettingsString())); err != nil { + return 0, err + } + + case *CoreRuleSet_CustomSettingsFile: + + if _, err = hasher.Write([]byte("CustomSettingsFile")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCustomSettingsFile())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/ratelimit.pb.clone.go b/pkg/api/gloo.solo.io/v1/enterprise/ratelimit.pb.clone.go new file mode 100644 index 000000000..1c7910e70 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/ratelimit.pb.clone.go @@ -0,0 +1,67 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/ratelimit.proto + +package enterprise + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1 "github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *RateLimitConfig) Clone() proto.Message { + var target *RateLimitConfig + if m == nil { + return target + } + target = &RateLimitConfig{} + + target.Domain = m.GetDomain() + + if m.GetDescriptors() != nil { + target.Descriptors = make([]*github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1.Descriptor, len(m.GetDescriptors())) + for idx, v := range m.GetDescriptors() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Descriptors[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1.Descriptor) + } else { + target.Descriptors[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1.Descriptor) + } + + } + } + + if m.GetSetDescriptors() != nil { + target.SetDescriptors = make([]*github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1.SetDescriptor, len(m.GetSetDescriptors())) + for idx, v := range m.GetSetDescriptors() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SetDescriptors[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1.SetDescriptor) + } else { + target.SetDescriptors[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_ratelimit_solo_io_v1alpha1.SetDescriptor) + } + + } + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/enterprise/ratelimit.pb.go b/pkg/api/gloo.solo.io/v1/enterprise/ratelimit.pb.go index 07b3b231f..6dd72b7b6 100644 --- a/pkg/api/gloo.solo.io/v1/enterprise/ratelimit.pb.go +++ b/pkg/api/gloo.solo.io/v1/enterprise/ratelimit.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/ratelimit.proto @@ -10,11 +10,11 @@ import ( context "context" reflect "reflect" sync "sync" + unsafe "unsafe" - v2 "github.com/envoyproxy/go-control-plane/envoy/api/v2" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" v1alpha1 "github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1" + v2 "github.com/solo-io/solo-kit/pkg/api/external/envoy/api/v2" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" @@ -30,31 +30,23 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -// -//@solo-kit:xds-service=RateLimitDiscoveryService -//@solo-kit:resource.no_references +// @solo-kit:xds-service=RateLimitDiscoveryService +// @solo-kit:resource.no_references type RateLimitConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @solo-kit:resource.name Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain,omitempty"` Descriptors []*v1alpha1.Descriptor `protobuf:"bytes,2,rep,name=descriptors,proto3" json:"descriptors,omitempty"` SetDescriptors []*v1alpha1.SetDescriptor `protobuf:"bytes,3,rep,name=set_descriptors,json=setDescriptors,proto3" json:"set_descriptors,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimitConfig) Reset() { *x = RateLimitConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimitConfig) String() string { @@ -65,7 +57,7 @@ func (*RateLimitConfig) ProtoMessage() {} func (x *RateLimitConfig) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -103,7 +95,7 @@ func (x *RateLimitConfig) GetSetDescriptors() []*v1alpha1.SetDescriptor { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_rawDesc = string([]byte{ 0x0a, 0x48, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -154,30 +146,30 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_prot 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x22, 0x22, 0x1d, 0x2f, 0x76, 0x32, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, - 0x72, 0x79, 0x3a, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x3a, 0x01, 0x2a, 0x42, 0x49, 0x5a, 0x3f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x22, 0x1d, 0x2f, 0x76, 0x32, 0x2f, 0x64, 0x69, 0x73, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x79, 0x3a, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x4d, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, + 0xf5, 0x04, 0x01, 0x5a, 0x3f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x73, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_goTypes = []any{ (*RateLimitConfig)(nil), // 0: glooe.solo.io.RateLimitConfig (*v1alpha1.Descriptor)(nil), // 1: ratelimit.api.solo.io.Descriptor (*v1alpha1.SetDescriptor)(nil), // 2: ratelimit.api.solo.io.SetDescriptor @@ -207,25 +199,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_pro if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimitConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, @@ -236,7 +214,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_pro MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_ratelimit_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/enterprise/ratelimit.pb.hash.go b/pkg/api/gloo.solo.io/v1/enterprise/ratelimit.pb.hash.go index 0f9524ee3..400e251e3 100644 --- a/pkg/api/gloo.solo.io/v1/enterprise/ratelimit.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/enterprise/ratelimit.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimitConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -45,14 +49,20 @@ func (m *RateLimitConfig) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetDescriptors() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -63,14 +73,20 @@ func (m *RateLimitConfig) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetSetDescriptors() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/v1/enterprise/ratelimit.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/enterprise/ratelimit.pb.uniquehash.go new file mode 100644 index 000000000..1655f4686 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/enterprise/ratelimit.pb.uniquehash.go @@ -0,0 +1,114 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/ratelimit.proto + +package enterprise + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimitConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("glooe.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise.RateLimitConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Domain")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDomain())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Descriptors")); err != nil { + return 0, err + } + for i, v := range m.GetDescriptors() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("SetDescriptors")); err != nil { + return 0, err + } + for i, v := range m.GetSetDescriptors() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/extensions.pb.clone.go b/pkg/api/gloo.solo.io/v1/extensions.pb.clone.go new file mode 100644 index 000000000..6ce365a7e --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/extensions.pb.clone.go @@ -0,0 +1,69 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/extensions.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *Extensions) Clone() proto.Message { + var target *Extensions + if m == nil { + return target + } + target = &Extensions{} + + if m.GetConfigs() != nil { + target.Configs = make(map[string]*google_golang_org_protobuf_types_known_structpb.Struct, len(m.GetConfigs())) + for k, v := range m.GetConfigs() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Configs[k] = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Configs[k] = proto.Clone(v).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + } + } + + return target +} + +// Clone function +func (m *Extension) Clone() proto.Message { + var target *Extension + if m == nil { + return target + } + target = &Extension{} + + if h, ok := interface{}(m.GetConfig()).(clone.Cloner); ok { + target.Config = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Config = proto.Clone(m.GetConfig()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/extensions.pb.go b/pkg/api/gloo.solo.io/v1/extensions.pb.go index 32155957b..3c43f881e 100644 --- a/pkg/api/gloo.solo.io/v1/extensions.pb.go +++ b/pkg/api/gloo.solo.io/v1/extensions.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/extensions.proto @@ -9,12 +9,12 @@ package v1 import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - _struct "github.com/golang/protobuf/ptypes/struct" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" ) const ( @@ -24,25 +24,18 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Extensions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Configs map[string]*structpb.Struct `protobuf:"bytes,1,rep,name=configs,proto3" json:"configs,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - Configs map[string]*_struct.Struct `protobuf:"bytes,1,rep,name=configs,proto3" json:"configs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *Extensions) Reset() { *x = Extensions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Extensions) String() string { @@ -53,7 +46,7 @@ func (*Extensions) ProtoMessage() {} func (x *Extensions) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -68,7 +61,7 @@ func (*Extensions) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_rawDescGZIP(), []int{0} } -func (x *Extensions) GetConfigs() map[string]*_struct.Struct { +func (x *Extensions) GetConfigs() map[string]*structpb.Struct { if x != nil { return x.Configs } @@ -76,20 +69,17 @@ func (x *Extensions) GetConfigs() map[string]*_struct.Struct { } type Extension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Config *structpb.Struct `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` unknownFields protoimpl.UnknownFields - - Config *_struct.Struct `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Extension) Reset() { *x = Extension{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Extension) String() string { @@ -100,7 +90,7 @@ func (*Extension) ProtoMessage() {} func (x *Extension) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -115,7 +105,7 @@ func (*Extension) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_rawDescGZIP(), []int{1} } -func (x *Extension) GetConfig() *_struct.Struct { +func (x *Extension) GetConfig() *structpb.Struct { if x != nil { return x.Config } @@ -124,7 +114,7 @@ func (x *Extension) GetConfig() *_struct.Struct { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_rawDesc = string([]byte{ 0x0a, 0x3e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -147,31 +137,31 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_rawDesc 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x42, 0x3e, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, - 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0xc0, 0xf5, 0x04, 0x01, 0xb8, - 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x66, 0x69, 0x67, 0x42, 0x42, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, + 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_goTypes = []interface{}{ - (*Extensions)(nil), // 0: gloo.solo.io.Extensions - (*Extension)(nil), // 1: gloo.solo.io.Extension - nil, // 2: gloo.solo.io.Extensions.ConfigsEntry - (*_struct.Struct)(nil), // 3: google.protobuf.Struct +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_goTypes = []any{ + (*Extensions)(nil), // 0: gloo.solo.io.Extensions + (*Extension)(nil), // 1: gloo.solo.io.Extension + nil, // 2: gloo.solo.io.Extensions.ConfigsEntry + (*structpb.Struct)(nil), // 3: google.protobuf.Struct } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_depIdxs = []int32{ 2, // 0: gloo.solo.io.Extensions.configs:type_name -> gloo.solo.io.Extensions.ConfigsEntry @@ -189,37 +179,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_init() if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Extensions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Extension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_rawDesc)), NumEnums: 0, NumMessages: 3, NumExtensions: 0, @@ -230,7 +194,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_init() MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/extensions.pb.hash.go b/pkg/api/gloo.solo.io/v1/extensions.pb.hash.go index 7d9a8e818..d9f96297e 100644 --- a/pkg/api/gloo.solo.io/v1/extensions.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/extensions.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Extensions) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -45,14 +49,20 @@ func (m *Extensions) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -75,6 +85,10 @@ func (m *Extensions) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Extension) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -88,14 +102,20 @@ func (m *Extension) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/v1/extensions.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/extensions.pb.uniquehash.go new file mode 100644 index 000000000..9badd89b6 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/extensions.pb.uniquehash.go @@ -0,0 +1,128 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/extensions.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Extensions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.Extensions")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetConfigs() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Extension) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.Extension")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/failover.pb.clone.go b/pkg/api/gloo.solo.io/v1/failover.pb.clone.go new file mode 100644 index 000000000..34064dbb4 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/failover.pb.clone.go @@ -0,0 +1,221 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/failover.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *Failover) Clone() proto.Message { + var target *Failover + if m == nil { + return target + } + target = &Failover{} + + if m.GetPrioritizedLocalities() != nil { + target.PrioritizedLocalities = make([]*Failover_PrioritizedLocality, len(m.GetPrioritizedLocalities())) + for idx, v := range m.GetPrioritizedLocalities() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.PrioritizedLocalities[idx] = h.Clone().(*Failover_PrioritizedLocality) + } else { + target.PrioritizedLocalities[idx] = proto.Clone(v).(*Failover_PrioritizedLocality) + } + + } + } + + if h, ok := interface{}(m.GetPolicy()).(clone.Cloner); ok { + target.Policy = h.Clone().(*Failover_Policy) + } else { + target.Policy = proto.Clone(m.GetPolicy()).(*Failover_Policy) + } + + return target +} + +// Clone function +func (m *LocalityLbEndpoints) Clone() proto.Message { + var target *LocalityLbEndpoints + if m == nil { + return target + } + target = &LocalityLbEndpoints{} + + if h, ok := interface{}(m.GetLocality()).(clone.Cloner); ok { + target.Locality = h.Clone().(*Locality) + } else { + target.Locality = proto.Clone(m.GetLocality()).(*Locality) + } + + if m.GetLbEndpoints() != nil { + target.LbEndpoints = make([]*LbEndpoint, len(m.GetLbEndpoints())) + for idx, v := range m.GetLbEndpoints() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.LbEndpoints[idx] = h.Clone().(*LbEndpoint) + } else { + target.LbEndpoints[idx] = proto.Clone(v).(*LbEndpoint) + } + + } + } + + if h, ok := interface{}(m.GetLoadBalancingWeight()).(clone.Cloner); ok { + target.LoadBalancingWeight = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.LoadBalancingWeight = proto.Clone(m.GetLoadBalancingWeight()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + return target +} + +// Clone function +func (m *LbEndpoint) Clone() proto.Message { + var target *LbEndpoint + if m == nil { + return target + } + target = &LbEndpoint{} + + target.Address = m.GetAddress() + + target.Port = m.GetPort() + + if h, ok := interface{}(m.GetHealthCheckConfig()).(clone.Cloner); ok { + target.HealthCheckConfig = h.Clone().(*LbEndpoint_HealthCheckConfig) + } else { + target.HealthCheckConfig = proto.Clone(m.GetHealthCheckConfig()).(*LbEndpoint_HealthCheckConfig) + } + + if h, ok := interface{}(m.GetUpstreamSslConfig()).(clone.Cloner); ok { + target.UpstreamSslConfig = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.UpstreamSslConfig) + } else { + target.UpstreamSslConfig = proto.Clone(m.GetUpstreamSslConfig()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.UpstreamSslConfig) + } + + if h, ok := interface{}(m.GetLoadBalancingWeight()).(clone.Cloner); ok { + target.LoadBalancingWeight = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.LoadBalancingWeight = proto.Clone(m.GetLoadBalancingWeight()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if m.GetMetadata() != nil { + target.Metadata = make(map[string]*google_golang_org_protobuf_types_known_structpb.Struct, len(m.GetMetadata())) + for k, v := range m.GetMetadata() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Metadata[k] = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Metadata[k] = proto.Clone(v).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + } + } + + return target +} + +// Clone function +func (m *Locality) Clone() proto.Message { + var target *Locality + if m == nil { + return target + } + target = &Locality{} + + target.Region = m.GetRegion() + + target.Zone = m.GetZone() + + target.SubZone = m.GetSubZone() + + return target +} + +// Clone function +func (m *Failover_PrioritizedLocality) Clone() proto.Message { + var target *Failover_PrioritizedLocality + if m == nil { + return target + } + target = &Failover_PrioritizedLocality{} + + if m.GetLocalityEndpoints() != nil { + target.LocalityEndpoints = make([]*LocalityLbEndpoints, len(m.GetLocalityEndpoints())) + for idx, v := range m.GetLocalityEndpoints() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.LocalityEndpoints[idx] = h.Clone().(*LocalityLbEndpoints) + } else { + target.LocalityEndpoints[idx] = proto.Clone(v).(*LocalityLbEndpoints) + } + + } + } + + return target +} + +// Clone function +func (m *Failover_Policy) Clone() proto.Message { + var target *Failover_Policy + if m == nil { + return target + } + target = &Failover_Policy{} + + if h, ok := interface{}(m.GetOverprovisioningFactor()).(clone.Cloner); ok { + target.OverprovisioningFactor = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.OverprovisioningFactor = proto.Clone(m.GetOverprovisioningFactor()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + return target +} + +// Clone function +func (m *LbEndpoint_HealthCheckConfig) Clone() proto.Message { + var target *LbEndpoint_HealthCheckConfig + if m == nil { + return target + } + target = &LbEndpoint_HealthCheckConfig{} + + target.PortValue = m.GetPortValue() + + target.Hostname = m.GetHostname() + + target.Path = m.GetPath() + + target.Method = m.GetMethod() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/failover.pb.equal.go b/pkg/api/gloo.solo.io/v1/failover.pb.equal.go index afd501628..abb004a4f 100644 --- a/pkg/api/gloo.solo.io/v1/failover.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/failover.pb.equal.go @@ -63,6 +63,16 @@ func (m *Failover) Equal(that interface{}) bool { } + if h, ok := interface{}(m.GetPolicy()).(equality.Equalizer); ok { + if !h.Equal(target.GetPolicy()) { + return false + } + } else { + if !proto.Equal(m.GetPolicy(), target.GetPolicy()) { + return false + } + } + return true } @@ -186,6 +196,23 @@ func (m *LbEndpoint) Equal(that interface{}) bool { } } + if len(m.GetMetadata()) != len(target.GetMetadata()) { + return false + } + for k, v := range m.GetMetadata() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetMetadata()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetMetadata()[k]) { + return false + } + } + + } + return true } @@ -266,6 +293,40 @@ func (m *Failover_PrioritizedLocality) Equal(that interface{}) bool { return true } +// Equal function +func (m *Failover_Policy) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Failover_Policy) + if !ok { + that2, ok := that.(Failover_Policy) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetOverprovisioningFactor()).(equality.Equalizer); ok { + if !h.Equal(target.GetOverprovisioningFactor()) { + return false + } + } else { + if !proto.Equal(m.GetOverprovisioningFactor(), target.GetOverprovisioningFactor()) { + return false + } + } + + return true +} + // Equal function func (m *LbEndpoint_HealthCheckConfig) Equal(that interface{}) bool { if that == nil { diff --git a/pkg/api/gloo.solo.io/v1/failover.pb.go b/pkg/api/gloo.solo.io/v1/failover.pb.go index c32051585..d8e2583b4 100644 --- a/pkg/api/gloo.solo.io/v1/failover.pb.go +++ b/pkg/api/gloo.solo.io/v1/failover.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/failover.proto @@ -9,13 +9,15 @@ package v1 import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" + ssl "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -25,42 +27,34 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -// -// -//Failover configuration for an upstream. -// -//Failover allows for optional fallback endpoints in the case that the primary set of endpoints is deemed -//unhealthy. As failover requires knowledge of the health of each set of endpoints, active or passive -//health checks must be configured on an upstream using failover in order for it to work properly. +// Failover configuration for an upstream. // -//Failover closely resembles the Envoy config which this is translated to, with one notable exception. -//The priorities are not defined on the `LocalityLbEndpoints` but rather inferred from the list of -//`PrioritizedLocality`. More information on envoy prioritization can be found -//[here](https://www.envoyproxy.io/docs/envoy/v1.14.1/intro/arch_overview/upstream/load_balancing/priority#arch-overview-load-balancing-priority-levels). -//In practice this means that the priority of a given set of `LocalityLbEndpoints` is determined by its index in -//the list, first being `0` through `n-1`. +// Failover allows for optional fallback endpoints in the case that the primary set of endpoints is deemed +// unhealthy. As failover requires knowledge of the health of each set of endpoints, active or passive +// health checks must be configured on an upstream using failover in order for it to work properly. // +// Failover closely resembles the Envoy config which this is translated to, with one notable exception. +// The priorities are not defined on the `LocalityLbEndpoints` but rather inferred from the list of +// `PrioritizedLocality`. More information on envoy prioritization can be found +// [here](https://www.envoyproxy.io/docs/envoy/v1.14.1/intro/arch_overview/upstream/load_balancing/priority#arch-overview-load-balancing-priority-levels). +// In practice this means that the priority of a given set of `LocalityLbEndpoints` is determined by its index in +// the list, first being `0` through `n-1`. type Failover struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // PrioritizedLocality is an implicitly prioritized list of lists of `LocalityLbEndpoints`. The priority of each // list of `LocalityLbEndpoints` is determined by its index in the list. PrioritizedLocalities []*Failover_PrioritizedLocality `protobuf:"bytes,1,rep,name=prioritized_localities,json=prioritizedLocalities,proto3" json:"prioritized_localities,omitempty"` + // Load balancing policy settings. + Policy *Failover_Policy `protobuf:"bytes,2,opt,name=policy,proto3" json:"policy,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Failover) Reset() { *x = Failover{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Failover) String() string { @@ -71,7 +65,7 @@ func (*Failover) ProtoMessage() {} func (x *Failover) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -93,15 +87,19 @@ func (x *Failover) GetPrioritizedLocalities() []*Failover_PrioritizedLocality { return nil } +func (x *Failover) GetPolicy() *Failover_Policy { + if x != nil { + return x.Policy + } + return nil +} + // A group of endpoints belonging to a Locality. // One can have multiple LocalityLbEndpoints for a locality, but this is // generally only done if the different groups need to have different load // balancing weights or different priorities. type LocalityLbEndpoints struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Identifies where the parent upstream hosts run. Locality *Locality `protobuf:"bytes,1,opt,name=locality,proto3" json:"locality,omitempty"` // The group of endpoints belonging to the locality specified. @@ -113,16 +111,16 @@ type LocalityLbEndpoints struct { // localities at the same priority level to produce the effective percentage // of traffic for the locality. // To enable locality weighted load balancing, load_balancer_config.locality_weighted_lb_config must be set as well - LoadBalancingWeight *wrappers.UInt32Value `protobuf:"bytes,3,opt,name=load_balancing_weight,json=loadBalancingWeight,proto3" json:"load_balancing_weight,omitempty"` + LoadBalancingWeight *wrapperspb.UInt32Value `protobuf:"bytes,3,opt,name=load_balancing_weight,json=loadBalancingWeight,proto3" json:"load_balancing_weight,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LocalityLbEndpoints) Reset() { *x = LocalityLbEndpoints{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LocalityLbEndpoints) String() string { @@ -133,7 +131,7 @@ func (*LocalityLbEndpoints) ProtoMessage() {} func (x *LocalityLbEndpoints) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -162,7 +160,7 @@ func (x *LocalityLbEndpoints) GetLbEndpoints() []*LbEndpoint { return nil } -func (x *LocalityLbEndpoints) GetLoadBalancingWeight() *wrappers.UInt32Value { +func (x *LocalityLbEndpoints) GetLoadBalancingWeight() *wrapperspb.UInt32Value { if x != nil { return x.LoadBalancingWeight } @@ -171,10 +169,7 @@ func (x *LocalityLbEndpoints) GetLoadBalancingWeight() *wrappers.UInt32Value { // An Endpoint that Envoy can route traffic to. type LbEndpoint struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Address (hostname or IP) Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` // Port the instance is listening on @@ -183,7 +178,7 @@ type LbEndpoint struct { // health checker to contact the health checked host. // This takes into effect only for upstreams with active health checking enabled HealthCheckConfig *LbEndpoint_HealthCheckConfig `protobuf:"bytes,3,opt,name=health_check_config,json=healthCheckConfig,proto3" json:"health_check_config,omitempty"` - UpstreamSslConfig *UpstreamSslConfig `protobuf:"bytes,4,opt,name=upstream_ssl_config,json=upstreamSslConfig,proto3" json:"upstream_ssl_config,omitempty"` + UpstreamSslConfig *ssl.UpstreamSslConfig `protobuf:"bytes,4,opt,name=upstream_ssl_config,json=upstreamSslConfig,proto3" json:"upstream_ssl_config,omitempty"` // The optional load balancing weight of the upstream host; at least 1. // Envoy uses the load balancing weight in some of the built in load // balancers. The load balancing weight for an endpoint is divided by the sum @@ -192,16 +187,22 @@ type LbEndpoint struct { // weighted by the endpoint's locality's load balancing weight from // LocalityLbEndpoints. If unspecified, each host is presumed to have equal // weight in a locality. - LoadBalancingWeight *wrappers.UInt32Value `protobuf:"bytes,5,opt,name=load_balancing_weight,json=loadBalancingWeight,proto3" json:"load_balancing_weight,omitempty"` + LoadBalancingWeight *wrapperspb.UInt32Value `protobuf:"bytes,5,opt,name=load_balancing_weight,json=loadBalancingWeight,proto3" json:"load_balancing_weight,omitempty"` + // Additional metadata to add to the endpoint. This metadata can be used in upstream HTTP filters + // or other specific Envoy configurations. + // The following keys are added by Gloo Edge and are ignored if set: + // - "envoy.transport_socket_match" + // - "io.solo.health_checkers.advanced_http" + Metadata map[string]*structpb.Struct `protobuf:"bytes,6,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LbEndpoint) Reset() { *x = LbEndpoint{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LbEndpoint) String() string { @@ -212,7 +213,7 @@ func (*LbEndpoint) ProtoMessage() {} func (x *LbEndpoint) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -248,47 +249,50 @@ func (x *LbEndpoint) GetHealthCheckConfig() *LbEndpoint_HealthCheckConfig { return nil } -func (x *LbEndpoint) GetUpstreamSslConfig() *UpstreamSslConfig { +func (x *LbEndpoint) GetUpstreamSslConfig() *ssl.UpstreamSslConfig { if x != nil { return x.UpstreamSslConfig } return nil } -func (x *LbEndpoint) GetLoadBalancingWeight() *wrappers.UInt32Value { +func (x *LbEndpoint) GetLoadBalancingWeight() *wrapperspb.UInt32Value { if x != nil { return x.LoadBalancingWeight } return nil } +func (x *LbEndpoint) GetMetadata() map[string]*structpb.Struct { + if x != nil { + return x.Metadata + } + return nil +} + // Identifies location of where either Envoy runs or where upstream hosts run. type Locality struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Region this zone belongs to. Region string `protobuf:"bytes,1,opt,name=region,proto3" json:"region,omitempty"` // Defines the local service zone where Envoy is running. The meaning of zone - // is context dependent, e.g. `Availability Zone (AZ) - // `_ - // on AWS, `Zone `_ on + // is context dependent, e.g. [Availability Zone (AZ)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html) + // on AWS, [Zone](https://cloud.google.com/compute/docs/regions-zones/) on // GCP, etc. Zone string `protobuf:"bytes,2,opt,name=zone,proto3" json:"zone,omitempty"` // When used for locality of upstream hosts, this field further splits zone // into smaller chunks of sub-zones so they can be load balanced // independently. - SubZone string `protobuf:"bytes,3,opt,name=sub_zone,json=subZone,proto3" json:"sub_zone,omitempty"` + SubZone string `protobuf:"bytes,3,opt,name=sub_zone,json=subZone,proto3" json:"sub_zone,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Locality) Reset() { *x = Locality{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Locality) String() string { @@ -299,7 +303,7 @@ func (*Locality) ProtoMessage() {} func (x *Locality) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -336,20 +340,17 @@ func (x *Locality) GetSubZone() string { } type Failover_PrioritizedLocality struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` LocalityEndpoints []*LocalityLbEndpoints `protobuf:"bytes,2,rep,name=locality_endpoints,json=localityEndpoints,proto3" json:"locality_endpoints,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Failover_PrioritizedLocality) Reset() { *x = Failover_PrioritizedLocality{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Failover_PrioritizedLocality) String() string { @@ -360,7 +361,7 @@ func (*Failover_PrioritizedLocality) ProtoMessage() {} func (x *Failover_PrioritizedLocality) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -382,12 +383,67 @@ func (x *Failover_PrioritizedLocality) GetLocalityEndpoints() []*LocalityLbEndpo return nil } +type Failover_Policy struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Priority levels and localities are considered overprovisioned with this + // factor (in percentage). This means that we don't consider a priority + // level or locality unhealthy until the fraction of healthy hosts + // multiplied by the overprovisioning factor drops below 100. + // With the default value 140(1.4), Envoy doesn't consider a priority level + // or a locality unhealthy until their percentage of healthy hosts drops + // below 72%. For example: + // + // .. code-block:: json + // + // { "overprovisioning_factor": 100 } + // + // Read more at priority levels and + // localities. + OverprovisioningFactor *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=overprovisioning_factor,json=overprovisioningFactor,proto3" json:"overprovisioning_factor,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Failover_Policy) Reset() { + *x = Failover_Policy{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Failover_Policy) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Failover_Policy) ProtoMessage() {} + +func (x *Failover_Policy) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Failover_Policy.ProtoReflect.Descriptor instead. +func (*Failover_Policy) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *Failover_Policy) GetOverprovisioningFactor() *wrapperspb.UInt32Value { + if x != nil { + return x.OverprovisioningFactor + } + return nil +} + // The optional health check configuration. type LbEndpoint_HealthCheckConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Optional alternative health check port value. // // By default the health check address port of an upstream host is the same @@ -402,16 +458,16 @@ type LbEndpoint_HealthCheckConfig struct { // Default is empty path. Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` // Method to use when health checking this failover endpoint. Defaults to `GET`. - Method string `protobuf:"bytes,4,opt,name=method,proto3" json:"method,omitempty"` + Method string `protobuf:"bytes,4,opt,name=method,proto3" json:"method,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LbEndpoint_HealthCheckConfig) Reset() { *x = LbEndpoint_HealthCheckConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LbEndpoint_HealthCheckConfig) String() string { @@ -421,8 +477,8 @@ func (x *LbEndpoint_HealthCheckConfig) String() string { func (*LbEndpoint_HealthCheckConfig) ProtoMessage() {} func (x *LbEndpoint_HealthCheckConfig) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[6] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -467,7 +523,7 @@ func (x *LbEndpoint_HealthCheckConfig) GetMethod() string { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_rawDesc = string([]byte{ 0x0a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -476,116 +532,145 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_rawDesc = 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, - 0x73, 0x73, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xd6, 0x01, 0x0a, 0x08, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x12, - 0x61, 0x0a, 0x16, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6c, - 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, - 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x69, - 0x7a, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x15, 0x70, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x69, - 0x65, 0x73, 0x1a, 0x67, 0x0a, 0x13, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x7a, 0x65, - 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x50, 0x0a, 0x12, 0x6c, 0x6f, 0x63, - 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x62, 0x45, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, - 0x74, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0xd8, 0x01, 0x0a, 0x13, - 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x62, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x12, 0x32, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x08, 0x6c, - 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x3b, 0x0a, 0x0c, 0x6c, 0x62, 0x5f, 0x65, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x62, 0x45, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0b, 0x6c, 0x62, 0x45, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x15, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x13, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, - 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xbe, 0x03, 0x0a, 0x0a, 0x4c, 0x62, 0x45, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, - 0x6f, 0x72, 0x74, 0x12, 0x5a, 0x0a, 0x13, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2a, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x4c, 0x62, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, - 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x11, 0x68, 0x65, - 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x4f, 0x0a, 0x13, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x73, 0x6c, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x11, 0x75, - 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x59, 0x0a, 0x15, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, - 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3b, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x73, + 0x6c, 0x2f, 0x73, 0x73, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf7, 0x02, 0x0a, 0x08, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, + 0x72, 0x12, 0x61, 0x0a, 0x16, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x64, + 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, + 0x74, 0x69, 0x7a, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x15, 0x70, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x67, 0x0a, 0x13, 0x50, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, + 0x74, 0x79, 0x12, 0x50, 0x0a, 0x12, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x65, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x6f, + 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x62, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x1a, 0x68, 0x0a, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x5e, + 0x0a, 0x17, 0x6f, 0x76, 0x65, 0x72, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, + 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x2a, 0x02, 0x28, 0x01, 0x52, 0x13, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x1a, 0x7a, 0x0a, 0x11, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, - 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x51, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x6c, - 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x7a, - 0x6f, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, - 0x19, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x5a, 0x6f, 0x6e, 0x65, 0x42, 0x3e, 0x5a, 0x34, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, - 0x76, 0x31, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} + 0x42, 0x04, 0x2a, 0x02, 0x20, 0x00, 0x52, 0x16, 0x6f, 0x76, 0x65, 0x72, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xd8, + 0x01, 0x0a, 0x13, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x62, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x32, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, + 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x3b, 0x0a, 0x0c, 0x6c, 0x62, + 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x4c, 0x62, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0b, 0x6c, 0x62, 0x45, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x15, 0x6c, 0x6f, 0x61, 0x64, 0x5f, + 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x69, 0x6e, 0x67, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xd8, 0x04, 0x0a, 0x0a, 0x4c, 0x62, + 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x5a, 0x0a, 0x13, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x4c, 0x62, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x48, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x11, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x4f, 0x0a, 0x13, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x73, + 0x73, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, + 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x11, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x59, 0x0a, 0x15, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x28, 0x01, 0x52, 0x13, 0x6c, 0x6f, 0x61, 0x64, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x42, + 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x4c, 0x62, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x1a, 0x7a, 0x0a, 0x11, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x70, 0x6f, 0x72, + 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x1a, 0x54, + 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x51, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x19, 0x0a, 0x08, + 0x73, 0x75, 0x62, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x73, 0x75, 0x62, 0x5a, 0x6f, 0x6e, 0x65, 0x42, 0x42, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, + 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes = make([]protoimpl.MessageInfo, 6) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_goTypes = []any{ (*Failover)(nil), // 0: gloo.solo.io.Failover (*LocalityLbEndpoints)(nil), // 1: gloo.solo.io.LocalityLbEndpoints (*LbEndpoint)(nil), // 2: gloo.solo.io.LbEndpoint (*Locality)(nil), // 3: gloo.solo.io.Locality (*Failover_PrioritizedLocality)(nil), // 4: gloo.solo.io.Failover.PrioritizedLocality - (*LbEndpoint_HealthCheckConfig)(nil), // 5: gloo.solo.io.LbEndpoint.HealthCheckConfig - (*wrappers.UInt32Value)(nil), // 6: google.protobuf.UInt32Value - (*UpstreamSslConfig)(nil), // 7: gloo.solo.io.UpstreamSslConfig + (*Failover_Policy)(nil), // 5: gloo.solo.io.Failover.Policy + (*LbEndpoint_HealthCheckConfig)(nil), // 6: gloo.solo.io.LbEndpoint.HealthCheckConfig + nil, // 7: gloo.solo.io.LbEndpoint.MetadataEntry + (*wrapperspb.UInt32Value)(nil), // 8: google.protobuf.UInt32Value + (*ssl.UpstreamSslConfig)(nil), // 9: gloo.solo.io.UpstreamSslConfig + (*structpb.Struct)(nil), // 10: google.protobuf.Struct } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_depIdxs = []int32{ - 4, // 0: gloo.solo.io.Failover.prioritized_localities:type_name -> gloo.solo.io.Failover.PrioritizedLocality - 3, // 1: gloo.solo.io.LocalityLbEndpoints.locality:type_name -> gloo.solo.io.Locality - 2, // 2: gloo.solo.io.LocalityLbEndpoints.lb_endpoints:type_name -> gloo.solo.io.LbEndpoint - 6, // 3: gloo.solo.io.LocalityLbEndpoints.load_balancing_weight:type_name -> google.protobuf.UInt32Value - 5, // 4: gloo.solo.io.LbEndpoint.health_check_config:type_name -> gloo.solo.io.LbEndpoint.HealthCheckConfig - 7, // 5: gloo.solo.io.LbEndpoint.upstream_ssl_config:type_name -> gloo.solo.io.UpstreamSslConfig - 6, // 6: gloo.solo.io.LbEndpoint.load_balancing_weight:type_name -> google.protobuf.UInt32Value - 1, // 7: gloo.solo.io.Failover.PrioritizedLocality.locality_endpoints:type_name -> gloo.solo.io.LocalityLbEndpoints - 8, // [8:8] is the sub-list for method output_type - 8, // [8:8] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name + 4, // 0: gloo.solo.io.Failover.prioritized_localities:type_name -> gloo.solo.io.Failover.PrioritizedLocality + 5, // 1: gloo.solo.io.Failover.policy:type_name -> gloo.solo.io.Failover.Policy + 3, // 2: gloo.solo.io.LocalityLbEndpoints.locality:type_name -> gloo.solo.io.Locality + 2, // 3: gloo.solo.io.LocalityLbEndpoints.lb_endpoints:type_name -> gloo.solo.io.LbEndpoint + 8, // 4: gloo.solo.io.LocalityLbEndpoints.load_balancing_weight:type_name -> google.protobuf.UInt32Value + 6, // 5: gloo.solo.io.LbEndpoint.health_check_config:type_name -> gloo.solo.io.LbEndpoint.HealthCheckConfig + 9, // 6: gloo.solo.io.LbEndpoint.upstream_ssl_config:type_name -> gloo.solo.io.UpstreamSslConfig + 8, // 7: gloo.solo.io.LbEndpoint.load_balancing_weight:type_name -> google.protobuf.UInt32Value + 7, // 8: gloo.solo.io.LbEndpoint.metadata:type_name -> gloo.solo.io.LbEndpoint.MetadataEntry + 1, // 9: gloo.solo.io.Failover.PrioritizedLocality.locality_endpoints:type_name -> gloo.solo.io.LocalityLbEndpoints + 8, // 10: gloo.solo.io.Failover.Policy.overprovisioning_factor:type_name -> google.protobuf.UInt32Value + 10, // 11: gloo.solo.io.LbEndpoint.MetadataEntry.value:type_name -> google.protobuf.Struct + 12, // [12:12] is the sub-list for method output_type + 12, // [12:12] is the sub-list for method input_type + 12, // [12:12] is the sub-list for extension type_name + 12, // [12:12] is the sub-list for extension extendee + 0, // [0:12] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_init() } @@ -593,88 +678,13 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_init() { if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto != nil { return } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_init() - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Failover); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LocalityLbEndpoints); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LbEndpoint); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Locality); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Failover_PrioritizedLocality); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LbEndpoint_HealthCheckConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_rawDesc)), NumEnums: 0, - NumMessages: 6, + NumMessages: 8, NumExtensions: 0, NumServices: 0, }, @@ -683,7 +693,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_init() { MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/failover.pb.hash.go b/pkg/api/gloo.solo.io/v1/failover.pb.hash.go index 02305d1b8..478496956 100644 --- a/pkg/api/gloo.solo.io/v1/failover.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/failover.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Failover) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -41,14 +45,20 @@ func (m *Failover) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetPrioritizedLocalities() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -56,10 +66,34 @@ func (m *Failover) Hash(hasher hash.Hash64) (uint64, error) { } + if h, ok := interface{}(m.GetPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Policy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Policy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *LocalityLbEndpoints) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -73,14 +107,20 @@ func (m *LocalityLbEndpoints) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetLocality()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Locality")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetLocality(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetLocality(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Locality")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -89,14 +129,20 @@ func (m *LocalityLbEndpoints) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetLbEndpoints() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -105,14 +151,20 @@ func (m *LocalityLbEndpoints) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetLoadBalancingWeight()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LoadBalancingWeight")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetLoadBalancingWeight(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetLoadBalancingWeight(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("LoadBalancingWeight")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -122,6 +174,10 @@ func (m *LocalityLbEndpoints) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *LbEndpoint) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -144,51 +200,112 @@ func (m *LbEndpoint) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetHealthCheckConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HealthCheckConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHealthCheckConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHealthCheckConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HealthCheckConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetUpstreamSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UpstreamSslConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetUpstreamSslConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetUpstreamSslConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("UpstreamSslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetLoadBalancingWeight()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LoadBalancingWeight")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetLoadBalancingWeight(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetLoadBalancingWeight(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("LoadBalancingWeight")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetMetadata() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Locality) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -217,6 +334,10 @@ func (m *Locality) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Failover_PrioritizedLocality) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -232,14 +353,20 @@ func (m *Failover_PrioritizedLocality) Hash(hasher hash.Hash64) (uint64, error) for _, v := range m.GetLocalityEndpoints() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -251,6 +378,50 @@ func (m *Failover_PrioritizedLocality) Hash(hasher hash.Hash64) (uint64, error) } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Failover_Policy) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.Failover_Policy")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetOverprovisioningFactor()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OverprovisioningFactor")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOverprovisioningFactor(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OverprovisioningFactor")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *LbEndpoint_HealthCheckConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/v1/failover.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/failover.pb.uniquehash.go new file mode 100644 index 000000000..15cbd983b --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/failover.pb.uniquehash.go @@ -0,0 +1,498 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/failover.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Failover) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.Failover")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("PrioritizedLocalities")); err != nil { + return 0, err + } + for i, v := range m.GetPrioritizedLocalities() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Policy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Policy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *LocalityLbEndpoints) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.LocalityLbEndpoints")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetLocality()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Locality")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLocality(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Locality")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("LbEndpoints")); err != nil { + return 0, err + } + for i, v := range m.GetLbEndpoints() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetLoadBalancingWeight()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LoadBalancingWeight")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLoadBalancingWeight(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LoadBalancingWeight")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *LbEndpoint) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.LbEndpoint")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Address")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAddress())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Port")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPort()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHealthCheckConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HealthCheckConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHealthCheckConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HealthCheckConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetUpstreamSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UpstreamSslConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUpstreamSslConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UpstreamSslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetLoadBalancingWeight()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LoadBalancingWeight")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLoadBalancingWeight(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LoadBalancingWeight")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetMetadata() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Locality) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.Locality")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Region")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRegion())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Zone")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetZone())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SubZone")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSubZone())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Failover_PrioritizedLocality) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.Failover_PrioritizedLocality")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("LocalityEndpoints")); err != nil { + return 0, err + } + for i, v := range m.GetLocalityEndpoints() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Failover_Policy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.Failover_Policy")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetOverprovisioningFactor()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OverprovisioningFactor")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOverprovisioningFactor(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OverprovisioningFactor")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *LbEndpoint_HealthCheckConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.LbEndpoint_HealthCheckConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("PortValue")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPortValue()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Hostname")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHostname())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Method")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetMethod())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/filters/stages.pb.clone.go b/pkg/api/gloo.solo.io/v1/filters/stages.pb.clone.go new file mode 100644 index 000000000..5e666ded9 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/filters/stages.pb.clone.go @@ -0,0 +1,41 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/filters/stages.proto + +package filters + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *FilterStage) Clone() proto.Message { + var target *FilterStage + if m == nil { + return target + } + target = &FilterStage{} + + target.Stage = m.GetStage() + + target.Predicate = m.GetPredicate() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/filters/stages.pb.equal.go b/pkg/api/gloo.solo.io/v1/filters/stages.pb.equal.go new file mode 100644 index 000000000..fb508462c --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/filters/stages.pb.equal.go @@ -0,0 +1,58 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/filters/stages.proto + +package filters + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *FilterStage) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*FilterStage) + if !ok { + that2, ok := that.(FilterStage) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetStage() != target.GetStage() { + return false + } + + if m.GetPredicate() != target.GetPredicate() { + return false + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/filters/stages.pb.go b/pkg/api/gloo.solo.io/v1/filters/stages.pb.go new file mode 100644 index 000000000..ec1413755 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/filters/stages.pb.go @@ -0,0 +1,292 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/filters/stages.proto + +package filters + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// List of filter stages which can be selected for a HTTP filter. +type FilterStage_Stage int32 + +const ( + FilterStage_FaultStage FilterStage_Stage = 0 + FilterStage_CorsStage FilterStage_Stage = 1 + FilterStage_WafStage FilterStage_Stage = 2 + FilterStage_AuthNStage FilterStage_Stage = 3 + FilterStage_AuthZStage FilterStage_Stage = 4 + FilterStage_RateLimitStage FilterStage_Stage = 5 + FilterStage_AcceptedStage FilterStage_Stage = 6 + FilterStage_OutAuthStage FilterStage_Stage = 7 + FilterStage_RouteStage FilterStage_Stage = 8 +) + +// Enum value maps for FilterStage_Stage. +var ( + FilterStage_Stage_name = map[int32]string{ + 0: "FaultStage", + 1: "CorsStage", + 2: "WafStage", + 3: "AuthNStage", + 4: "AuthZStage", + 5: "RateLimitStage", + 6: "AcceptedStage", + 7: "OutAuthStage", + 8: "RouteStage", + } + FilterStage_Stage_value = map[string]int32{ + "FaultStage": 0, + "CorsStage": 1, + "WafStage": 2, + "AuthNStage": 3, + "AuthZStage": 4, + "RateLimitStage": 5, + "AcceptedStage": 6, + "OutAuthStage": 7, + "RouteStage": 8, + } +) + +func (x FilterStage_Stage) Enum() *FilterStage_Stage { + p := new(FilterStage_Stage) + *p = x + return p +} + +func (x FilterStage_Stage) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FilterStage_Stage) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_enumTypes[0].Descriptor() +} + +func (FilterStage_Stage) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_enumTypes[0] +} + +func (x FilterStage_Stage) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FilterStage_Stage.Descriptor instead. +func (FilterStage_Stage) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_rawDescGZIP(), []int{0, 0} +} + +// Desired placement of the HTTP filter relative to the stage. The default is `During`. +type FilterStage_Predicate int32 + +const ( + FilterStage_During FilterStage_Predicate = 0 + FilterStage_Before FilterStage_Predicate = 1 + FilterStage_After FilterStage_Predicate = 2 +) + +// Enum value maps for FilterStage_Predicate. +var ( + FilterStage_Predicate_name = map[int32]string{ + 0: "During", + 1: "Before", + 2: "After", + } + FilterStage_Predicate_value = map[string]int32{ + "During": 0, + "Before": 1, + "After": 2, + } +) + +func (x FilterStage_Predicate) Enum() *FilterStage_Predicate { + p := new(FilterStage_Predicate) + *p = x + return p +} + +func (x FilterStage_Predicate) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FilterStage_Predicate) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_enumTypes[1].Descriptor() +} + +func (FilterStage_Predicate) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_enumTypes[1] +} + +func (x FilterStage_Predicate) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FilterStage_Predicate.Descriptor instead. +func (FilterStage_Predicate) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_rawDescGZIP(), []int{0, 1} +} + +// FilterStage allows configuration of where in a filter chain a given HTTP filter is inserted, +// relative to one of the pre-defined stages. +type FilterStage struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Stage of the filter chain in which the selected filter should be added. + Stage FilterStage_Stage `protobuf:"varint,1,opt,name=stage,proto3,enum=filters.gloo.solo.io.FilterStage_Stage" json:"stage,omitempty"` + // How this filter should be placed relative to the stage. + Predicate FilterStage_Predicate `protobuf:"varint,2,opt,name=predicate,proto3,enum=filters.gloo.solo.io.FilterStage_Predicate" json:"predicate,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FilterStage) Reset() { + *x = FilterStage{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FilterStage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FilterStage) ProtoMessage() {} + +func (x *FilterStage) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FilterStage.ProtoReflect.Descriptor instead. +func (*FilterStage) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_rawDescGZIP(), []int{0} +} + +func (x *FilterStage) GetStage() FilterStage_Stage { + if x != nil { + return x.Stage + } + return FilterStage_FaultStage +} + +func (x *FilterStage) GetPredicate() FilterStage_Predicate { + if x != nil { + return x.Predicate + } + return FilterStage_During +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_rawDesc = string([]byte{ + 0x0a, 0x42, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe7, + 0x02, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x3d, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x67, 0x65, + 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x49, 0x0a, + 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2b, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, + 0x61, 0x67, 0x65, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x09, 0x70, + 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x9d, 0x01, 0x0a, 0x05, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, + 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x6f, 0x72, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x10, + 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x57, 0x61, 0x66, 0x53, 0x74, 0x61, 0x67, 0x65, 0x10, 0x02, 0x12, + 0x0e, 0x0a, 0x0a, 0x41, 0x75, 0x74, 0x68, 0x4e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x10, 0x03, 0x12, + 0x0e, 0x0a, 0x0a, 0x41, 0x75, 0x74, 0x68, 0x5a, 0x53, 0x74, 0x61, 0x67, 0x65, 0x10, 0x04, 0x12, + 0x12, 0x0a, 0x0e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x61, 0x67, + 0x65, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x41, 0x75, 0x74, + 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x10, 0x07, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x6f, 0x75, 0x74, + 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x10, 0x08, 0x22, 0x2e, 0x0a, 0x09, 0x50, 0x72, 0x65, 0x64, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x10, + 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x10, 0x01, 0x12, 0x09, 0x0a, + 0x05, 0x41, 0x66, 0x74, 0x65, 0x72, 0x10, 0x02, 0x42, 0x4a, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, + 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_goTypes = []any{ + (FilterStage_Stage)(0), // 0: filters.gloo.solo.io.FilterStage.Stage + (FilterStage_Predicate)(0), // 1: filters.gloo.solo.io.FilterStage.Predicate + (*FilterStage)(nil), // 2: filters.gloo.solo.io.FilterStage +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_depIdxs = []int32{ + 0, // 0: filters.gloo.solo.io.FilterStage.stage:type_name -> filters.gloo.solo.io.FilterStage.Stage + 1, // 1: filters.gloo.solo.io.FilterStage.predicate:type_name -> filters.gloo.solo.io.FilterStage.Predicate + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_init() } +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_rawDesc)), + NumEnums: 2, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_enumTypes, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_filters_stages_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/filters/stages.pb.hash.go b/pkg/api/gloo.solo.io/v1/filters/stages.pb.hash.go new file mode 100644 index 000000000..78ac1651d --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/filters/stages.pb.hash.go @@ -0,0 +1,56 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/filters/stages.proto + +package filters + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *FilterStage) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("filters.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/filters.FilterStage")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetStage()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetPredicate()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/filters/stages.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/filters/stages.pb.uniquehash.go new file mode 100644 index 000000000..c4e12da3c --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/filters/stages.pb.uniquehash.go @@ -0,0 +1,63 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/filters/stages.proto + +package filters + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FilterStage) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("filters.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/filters.FilterStage")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Stage")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetStage()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Predicate")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPredicate()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/gloo_json.gen.go b/pkg/api/gloo.solo.io/v1/gloo_json.gen.go new file mode 100644 index 000000000..d7e3bae0b --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/gloo_json.gen.go @@ -0,0 +1,211 @@ +// Code generated by skv2. DO NOT EDIT. + +// Generated json marshal and unmarshal functions + +package v1 + +import ( + bytes "bytes" + fmt "fmt" + math "math" + + jsonpb "github.com/golang/protobuf/jsonpb" + proto "github.com/golang/protobuf/proto" + skv2jsonpb "github.com/solo-io/skv2/pkg/kube_jsonpb" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +var ( + marshaller = &skv2jsonpb.Marshaler{EnumsAsInts: true} + unmarshaller = &jsonpb.Unmarshaler{ + AllowUnknownFields: true, + } +) + +// MarshalJSON is a custom marshaler for SettingsSpec +func (this *SettingsSpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for SettingsSpec +func (this *SettingsSpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for SettingsStatus +func (this *SettingsStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for SettingsStatus +func (this *SettingsStatus) UnmarshalJSON(b []byte) error { + // First try to unmarshal directly into SettingsStatus + temp := &SettingsStatus{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), temp); err == nil { + // Check if the unmarshaled result has meaningful content + // If it has non-empty fields, use it; otherwise fall back to NamespacedStatuses + if temp.GetReason() != "" || temp.GetReportedBy() != "" { + *this = *temp + return nil + } + } + + // Fall back to unmarshaling into SettingsNamespacedStatuses + namespacedStatuses := SettingsNamespacedStatuses{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), &namespacedStatuses); err != nil { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) + } + + for _, status := range namespacedStatuses.GetStatuses() { + // take the first status + if status != nil { + status.DeepCopyInto(this) + return nil + } + } + return nil +} + +// MarshalJSON is a custom marshaler for UpstreamSpec +func (this *UpstreamSpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for UpstreamSpec +func (this *UpstreamSpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for UpstreamStatus +func (this *UpstreamStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for UpstreamStatus +func (this *UpstreamStatus) UnmarshalJSON(b []byte) error { + // First try to unmarshal directly into UpstreamStatus + temp := &UpstreamStatus{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), temp); err == nil { + // Check if the unmarshaled result has meaningful content + // If it has non-empty fields, use it; otherwise fall back to NamespacedStatuses + if temp.GetReason() != "" || temp.GetReportedBy() != "" { + *this = *temp + return nil + } + } + + // Fall back to unmarshaling into UpstreamNamespacedStatuses + namespacedStatuses := UpstreamNamespacedStatuses{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), &namespacedStatuses); err != nil { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) + } + + for _, status := range namespacedStatuses.GetStatuses() { + // take the first status + if status != nil { + status.DeepCopyInto(this) + return nil + } + } + return nil +} + +// MarshalJSON is a custom marshaler for UpstreamGroupSpec +func (this *UpstreamGroupSpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for UpstreamGroupSpec +func (this *UpstreamGroupSpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for UpstreamGroupStatus +func (this *UpstreamGroupStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for UpstreamGroupStatus +func (this *UpstreamGroupStatus) UnmarshalJSON(b []byte) error { + // First try to unmarshal directly into UpstreamGroupStatus + temp := &UpstreamGroupStatus{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), temp); err == nil { + // Check if the unmarshaled result has meaningful content + // If it has non-empty fields, use it; otherwise fall back to NamespacedStatuses + if temp.GetReason() != "" || temp.GetReportedBy() != "" { + *this = *temp + return nil + } + } + + // Fall back to unmarshaling into UpstreamGroupNamespacedStatuses + namespacedStatuses := UpstreamGroupNamespacedStatuses{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), &namespacedStatuses); err != nil { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) + } + + for _, status := range namespacedStatuses.GetStatuses() { + // take the first status + if status != nil { + status.DeepCopyInto(this) + return nil + } + } + return nil +} + +// MarshalJSON is a custom marshaler for ProxySpec +func (this *ProxySpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for ProxySpec +func (this *ProxySpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for ProxyStatus +func (this *ProxyStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for ProxyStatus +func (this *ProxyStatus) UnmarshalJSON(b []byte) error { + // First try to unmarshal directly into ProxyStatus + temp := &ProxyStatus{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), temp); err == nil { + // Check if the unmarshaled result has meaningful content + // If it has non-empty fields, use it; otherwise fall back to NamespacedStatuses + if temp.GetReason() != "" || temp.GetReportedBy() != "" { + *this = *temp + return nil + } + } + + // Fall back to unmarshaling into ProxyNamespacedStatuses + namespacedStatuses := ProxyNamespacedStatuses{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), &namespacedStatuses); err != nil { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) + } + + for _, status := range namespacedStatuses.GetStatuses() { + // take the first status + if status != nil { + status.DeepCopyInto(this) + return nil + } + } + return nil +} diff --git a/pkg/api/gloo.solo.io/v1/gloosnapshot/snap.pb.clone.go b/pkg/api/gloo.solo.io/v1/gloosnapshot/snap.pb.clone.go new file mode 100644 index 000000000..cb1acf3dd --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/gloosnapshot/snap.pb.clone.go @@ -0,0 +1,26 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/gloosnapshot/snap.proto + +package gloosnapshot + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) diff --git a/pkg/api/gloo.solo.io/v1/gloosnapshot/snap.pb.equal.go b/pkg/api/gloo.solo.io/v1/gloosnapshot/snap.pb.equal.go new file mode 100644 index 000000000..ca0278455 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/gloosnapshot/snap.pb.equal.go @@ -0,0 +1,26 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/gloosnapshot/snap.proto + +package gloosnapshot + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) diff --git a/pkg/api/gloo.solo.io/v1/gloosnapshot/snap.pb.go b/pkg/api/gloo.solo.io/v1/gloosnapshot/snap.pb.go new file mode 100644 index 000000000..075581300 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/gloosnapshot/snap.pb.go @@ -0,0 +1,73 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/gloosnapshot/snap.proto + +package gloosnapshot + +import ( + reflect "reflect" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_gloosnapshot_snap_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_gloosnapshot_snap_proto_rawDesc = string([]byte{ + 0x0a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2f, 0x73, 0x6e, 0x61, + 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x19, 0x67, 0x6c, 0x6f, 0x6f, 0x73, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x4f, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, + 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x73, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_gloosnapshot_snap_proto_goTypes = []any{} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_gloosnapshot_snap_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_gloosnapshot_snap_proto_init() } +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_gloosnapshot_snap_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_gloosnapshot_snap_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_gloosnapshot_snap_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_gloosnapshot_snap_proto_rawDesc)), + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_gloosnapshot_snap_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_gloosnapshot_snap_proto_depIdxs, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_gloosnapshot_snap_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_gloosnapshot_snap_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_gloosnapshot_snap_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/gloosnapshot/snap.pb.hash.go b/pkg/api/gloo.solo.io/v1/gloosnapshot/snap.pb.hash.go new file mode 100644 index 000000000..a3d704822 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/gloosnapshot/snap.pb.hash.go @@ -0,0 +1,26 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/gloosnapshot/snap.proto + +package gloosnapshot + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) diff --git a/pkg/api/gloo.solo.io/v1/gloosnapshot/snap.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/gloosnapshot/snap.pb.uniquehash.go new file mode 100644 index 000000000..ba0800429 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/gloosnapshot/snap.pb.uniquehash.go @@ -0,0 +1,28 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/gloosnapshot/snap.proto + +package gloosnapshot + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) diff --git a/pkg/api/gloo.solo.io/v1/http_listener_options.pb.clone.go b/pkg/api/gloo.solo.io/v1/http_listener_options.pb.clone.go new file mode 100644 index 000000000..3a3c5eab7 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/http_listener_options.pb.clone.go @@ -0,0 +1,261 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/http_listener_options.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_filter_http_gzip_v2 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/filter/http/gzip/v2" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_buffer_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_csrf_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_proxylatency "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/proxylatency" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_caching "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/caching" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_dlp "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/dlp" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_extproc "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/extproc" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_stateful_session "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/stateful_session" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_waf "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/waf" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_connection_limit "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/connection_limit" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_dynamic_forward_proxy "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_grpc_json "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/grpc_json" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_grpc_web "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/grpc_web" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_hcm "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/hcm" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_header_validation "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/header_validation" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_healthcheck "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/healthcheck" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_local_ratelimit "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/local_ratelimit" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_router "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/router" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_tap "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tap" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_wasm "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/wasm" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *HttpListenerOptions) Clone() proto.Message { + var target *HttpListenerOptions + if m == nil { + return target + } + target = &HttpListenerOptions{} + + if h, ok := interface{}(m.GetGrpcWeb()).(clone.Cloner); ok { + target.GrpcWeb = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_grpc_web.GrpcWeb) + } else { + target.GrpcWeb = proto.Clone(m.GetGrpcWeb()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_grpc_web.GrpcWeb) + } + + if h, ok := interface{}(m.GetHttpConnectionManagerSettings()).(clone.Cloner); ok { + target.HttpConnectionManagerSettings = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_hcm.HttpConnectionManagerSettings) + } else { + target.HttpConnectionManagerSettings = proto.Clone(m.GetHttpConnectionManagerSettings()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_hcm.HttpConnectionManagerSettings) + } + + if h, ok := interface{}(m.GetHealthCheck()).(clone.Cloner); ok { + target.HealthCheck = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_healthcheck.HealthCheck) + } else { + target.HealthCheck = proto.Clone(m.GetHealthCheck()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_healthcheck.HealthCheck) + } + + if h, ok := interface{}(m.GetExtensions()).(clone.Cloner); ok { + target.Extensions = h.Clone().(*Extensions) + } else { + target.Extensions = proto.Clone(m.GetExtensions()).(*Extensions) + } + + if h, ok := interface{}(m.GetWaf()).(clone.Cloner); ok { + target.Waf = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_waf.Settings) + } else { + target.Waf = proto.Clone(m.GetWaf()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_waf.Settings) + } + + if h, ok := interface{}(m.GetDlp()).(clone.Cloner); ok { + target.Dlp = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_dlp.FilterConfig) + } else { + target.Dlp = proto.Clone(m.GetDlp()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_dlp.FilterConfig) + } + + if h, ok := interface{}(m.GetWasm()).(clone.Cloner); ok { + target.Wasm = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_wasm.PluginSource) + } else { + target.Wasm = proto.Clone(m.GetWasm()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_wasm.PluginSource) + } + + if h, ok := interface{}(m.GetExtauth()).(clone.Cloner); ok { + target.Extauth = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1.Settings) + } else { + target.Extauth = proto.Clone(m.GetExtauth()).(*github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1.Settings) + } + + if h, ok := interface{}(m.GetRatelimitServer()).(clone.Cloner); ok { + target.RatelimitServer = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.Settings) + } else { + target.RatelimitServer = proto.Clone(m.GetRatelimitServer()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.Settings) + } + + if h, ok := interface{}(m.GetCaching()).(clone.Cloner); ok { + target.Caching = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_caching.Settings) + } else { + target.Caching = proto.Clone(m.GetCaching()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_caching.Settings) + } + + if h, ok := interface{}(m.GetGzip()).(clone.Cloner); ok { + target.Gzip = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_filter_http_gzip_v2.Gzip) + } else { + target.Gzip = proto.Clone(m.GetGzip()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_filter_http_gzip_v2.Gzip) + } + + if h, ok := interface{}(m.GetProxyLatency()).(clone.Cloner); ok { + target.ProxyLatency = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_proxylatency.ProxyLatency) + } else { + target.ProxyLatency = proto.Clone(m.GetProxyLatency()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_proxylatency.ProxyLatency) + } + + if h, ok := interface{}(m.GetBuffer()).(clone.Cloner); ok { + target.Buffer = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_buffer_v3.Buffer) + } else { + target.Buffer = proto.Clone(m.GetBuffer()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_buffer_v3.Buffer) + } + + if h, ok := interface{}(m.GetCsrf()).(clone.Cloner); ok { + target.Csrf = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_csrf_v3.CsrfPolicy) + } else { + target.Csrf = proto.Clone(m.GetCsrf()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_csrf_v3.CsrfPolicy) + } + + if h, ok := interface{}(m.GetGrpcJsonTranscoder()).(clone.Cloner); ok { + target.GrpcJsonTranscoder = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_grpc_json.GrpcJsonTranscoder) + } else { + target.GrpcJsonTranscoder = proto.Clone(m.GetGrpcJsonTranscoder()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_grpc_json.GrpcJsonTranscoder) + } + + if h, ok := interface{}(m.GetSanitizeClusterHeader()).(clone.Cloner); ok { + target.SanitizeClusterHeader = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.SanitizeClusterHeader = proto.Clone(m.GetSanitizeClusterHeader()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetLeftmostXffAddress()).(clone.Cloner); ok { + target.LeftmostXffAddress = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.LeftmostXffAddress = proto.Clone(m.GetLeftmostXffAddress()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetDynamicForwardProxy()).(clone.Cloner); ok { + target.DynamicForwardProxy = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_dynamic_forward_proxy.FilterConfig) + } else { + target.DynamicForwardProxy = proto.Clone(m.GetDynamicForwardProxy()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_dynamic_forward_proxy.FilterConfig) + } + + if h, ok := interface{}(m.GetConnectionLimit()).(clone.Cloner); ok { + target.ConnectionLimit = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_connection_limit.ConnectionLimit) + } else { + target.ConnectionLimit = proto.Clone(m.GetConnectionLimit()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_connection_limit.ConnectionLimit) + } + + if h, ok := interface{}(m.GetNetworkLocalRatelimit()).(clone.Cloner); ok { + target.NetworkLocalRatelimit = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_local_ratelimit.TokenBucket) + } else { + target.NetworkLocalRatelimit = proto.Clone(m.GetNetworkLocalRatelimit()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_local_ratelimit.TokenBucket) + } + + if h, ok := interface{}(m.GetHttpLocalRatelimit()).(clone.Cloner); ok { + target.HttpLocalRatelimit = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_local_ratelimit.Settings) + } else { + target.HttpLocalRatelimit = proto.Clone(m.GetHttpLocalRatelimit()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_local_ratelimit.Settings) + } + + if h, ok := interface{}(m.GetRouter()).(clone.Cloner); ok { + target.Router = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_router.Router) + } else { + target.Router = proto.Clone(m.GetRouter()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_router.Router) + } + + if h, ok := interface{}(m.GetTap()).(clone.Cloner); ok { + target.Tap = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_tap.Tap) + } else { + target.Tap = proto.Clone(m.GetTap()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_tap.Tap) + } + + if h, ok := interface{}(m.GetStatefulSession()).(clone.Cloner); ok { + target.StatefulSession = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_stateful_session.StatefulSession) + } else { + target.StatefulSession = proto.Clone(m.GetStatefulSession()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_stateful_session.StatefulSession) + } + + if h, ok := interface{}(m.GetHeaderValidationSettings()).(clone.Cloner); ok { + target.HeaderValidationSettings = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_header_validation.HeaderValidationSettings) + } else { + target.HeaderValidationSettings = proto.Clone(m.GetHeaderValidationSettings()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_header_validation.HeaderValidationSettings) + } + + switch m.ExtProcConfig.(type) { + + case *HttpListenerOptions_DisableExtProc: + + if h, ok := interface{}(m.GetDisableExtProc()).(clone.Cloner); ok { + target.ExtProcConfig = &HttpListenerOptions_DisableExtProc{ + DisableExtProc: h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue), + } + } else { + target.ExtProcConfig = &HttpListenerOptions_DisableExtProc{ + DisableExtProc: proto.Clone(m.GetDisableExtProc()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue), + } + } + + case *HttpListenerOptions_ExtProc: + + if h, ok := interface{}(m.GetExtProc()).(clone.Cloner); ok { + target.ExtProcConfig = &HttpListenerOptions_ExtProc{ + ExtProc: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_extproc.Settings), + } + } else { + target.ExtProcConfig = &HttpListenerOptions_ExtProc{ + ExtProc: proto.Clone(m.GetExtProc()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_extproc.Settings), + } + } + + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/http_listener_options.pb.equal.go b/pkg/api/gloo.solo.io/v1/http_listener_options.pb.equal.go new file mode 100644 index 000000000..c6e3c3470 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/http_listener_options.pb.equal.go @@ -0,0 +1,339 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/http_listener_options.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *HttpListenerOptions) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HttpListenerOptions) + if !ok { + that2, ok := that.(HttpListenerOptions) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetGrpcWeb()).(equality.Equalizer); ok { + if !h.Equal(target.GetGrpcWeb()) { + return false + } + } else { + if !proto.Equal(m.GetGrpcWeb(), target.GetGrpcWeb()) { + return false + } + } + + if h, ok := interface{}(m.GetHttpConnectionManagerSettings()).(equality.Equalizer); ok { + if !h.Equal(target.GetHttpConnectionManagerSettings()) { + return false + } + } else { + if !proto.Equal(m.GetHttpConnectionManagerSettings(), target.GetHttpConnectionManagerSettings()) { + return false + } + } + + if h, ok := interface{}(m.GetHealthCheck()).(equality.Equalizer); ok { + if !h.Equal(target.GetHealthCheck()) { + return false + } + } else { + if !proto.Equal(m.GetHealthCheck(), target.GetHealthCheck()) { + return false + } + } + + if h, ok := interface{}(m.GetExtensions()).(equality.Equalizer); ok { + if !h.Equal(target.GetExtensions()) { + return false + } + } else { + if !proto.Equal(m.GetExtensions(), target.GetExtensions()) { + return false + } + } + + if h, ok := interface{}(m.GetWaf()).(equality.Equalizer); ok { + if !h.Equal(target.GetWaf()) { + return false + } + } else { + if !proto.Equal(m.GetWaf(), target.GetWaf()) { + return false + } + } + + if h, ok := interface{}(m.GetDlp()).(equality.Equalizer); ok { + if !h.Equal(target.GetDlp()) { + return false + } + } else { + if !proto.Equal(m.GetDlp(), target.GetDlp()) { + return false + } + } + + if h, ok := interface{}(m.GetWasm()).(equality.Equalizer); ok { + if !h.Equal(target.GetWasm()) { + return false + } + } else { + if !proto.Equal(m.GetWasm(), target.GetWasm()) { + return false + } + } + + if h, ok := interface{}(m.GetExtauth()).(equality.Equalizer); ok { + if !h.Equal(target.GetExtauth()) { + return false + } + } else { + if !proto.Equal(m.GetExtauth(), target.GetExtauth()) { + return false + } + } + + if h, ok := interface{}(m.GetRatelimitServer()).(equality.Equalizer); ok { + if !h.Equal(target.GetRatelimitServer()) { + return false + } + } else { + if !proto.Equal(m.GetRatelimitServer(), target.GetRatelimitServer()) { + return false + } + } + + if h, ok := interface{}(m.GetCaching()).(equality.Equalizer); ok { + if !h.Equal(target.GetCaching()) { + return false + } + } else { + if !proto.Equal(m.GetCaching(), target.GetCaching()) { + return false + } + } + + if h, ok := interface{}(m.GetGzip()).(equality.Equalizer); ok { + if !h.Equal(target.GetGzip()) { + return false + } + } else { + if !proto.Equal(m.GetGzip(), target.GetGzip()) { + return false + } + } + + if h, ok := interface{}(m.GetProxyLatency()).(equality.Equalizer); ok { + if !h.Equal(target.GetProxyLatency()) { + return false + } + } else { + if !proto.Equal(m.GetProxyLatency(), target.GetProxyLatency()) { + return false + } + } + + if h, ok := interface{}(m.GetBuffer()).(equality.Equalizer); ok { + if !h.Equal(target.GetBuffer()) { + return false + } + } else { + if !proto.Equal(m.GetBuffer(), target.GetBuffer()) { + return false + } + } + + if h, ok := interface{}(m.GetCsrf()).(equality.Equalizer); ok { + if !h.Equal(target.GetCsrf()) { + return false + } + } else { + if !proto.Equal(m.GetCsrf(), target.GetCsrf()) { + return false + } + } + + if h, ok := interface{}(m.GetGrpcJsonTranscoder()).(equality.Equalizer); ok { + if !h.Equal(target.GetGrpcJsonTranscoder()) { + return false + } + } else { + if !proto.Equal(m.GetGrpcJsonTranscoder(), target.GetGrpcJsonTranscoder()) { + return false + } + } + + if h, ok := interface{}(m.GetSanitizeClusterHeader()).(equality.Equalizer); ok { + if !h.Equal(target.GetSanitizeClusterHeader()) { + return false + } + } else { + if !proto.Equal(m.GetSanitizeClusterHeader(), target.GetSanitizeClusterHeader()) { + return false + } + } + + if h, ok := interface{}(m.GetLeftmostXffAddress()).(equality.Equalizer); ok { + if !h.Equal(target.GetLeftmostXffAddress()) { + return false + } + } else { + if !proto.Equal(m.GetLeftmostXffAddress(), target.GetLeftmostXffAddress()) { + return false + } + } + + if h, ok := interface{}(m.GetDynamicForwardProxy()).(equality.Equalizer); ok { + if !h.Equal(target.GetDynamicForwardProxy()) { + return false + } + } else { + if !proto.Equal(m.GetDynamicForwardProxy(), target.GetDynamicForwardProxy()) { + return false + } + } + + if h, ok := interface{}(m.GetConnectionLimit()).(equality.Equalizer); ok { + if !h.Equal(target.GetConnectionLimit()) { + return false + } + } else { + if !proto.Equal(m.GetConnectionLimit(), target.GetConnectionLimit()) { + return false + } + } + + if h, ok := interface{}(m.GetNetworkLocalRatelimit()).(equality.Equalizer); ok { + if !h.Equal(target.GetNetworkLocalRatelimit()) { + return false + } + } else { + if !proto.Equal(m.GetNetworkLocalRatelimit(), target.GetNetworkLocalRatelimit()) { + return false + } + } + + if h, ok := interface{}(m.GetHttpLocalRatelimit()).(equality.Equalizer); ok { + if !h.Equal(target.GetHttpLocalRatelimit()) { + return false + } + } else { + if !proto.Equal(m.GetHttpLocalRatelimit(), target.GetHttpLocalRatelimit()) { + return false + } + } + + if h, ok := interface{}(m.GetRouter()).(equality.Equalizer); ok { + if !h.Equal(target.GetRouter()) { + return false + } + } else { + if !proto.Equal(m.GetRouter(), target.GetRouter()) { + return false + } + } + + if h, ok := interface{}(m.GetTap()).(equality.Equalizer); ok { + if !h.Equal(target.GetTap()) { + return false + } + } else { + if !proto.Equal(m.GetTap(), target.GetTap()) { + return false + } + } + + if h, ok := interface{}(m.GetStatefulSession()).(equality.Equalizer); ok { + if !h.Equal(target.GetStatefulSession()) { + return false + } + } else { + if !proto.Equal(m.GetStatefulSession(), target.GetStatefulSession()) { + return false + } + } + + if h, ok := interface{}(m.GetHeaderValidationSettings()).(equality.Equalizer); ok { + if !h.Equal(target.GetHeaderValidationSettings()) { + return false + } + } else { + if !proto.Equal(m.GetHeaderValidationSettings(), target.GetHeaderValidationSettings()) { + return false + } + } + + switch m.ExtProcConfig.(type) { + + case *HttpListenerOptions_DisableExtProc: + if _, ok := target.ExtProcConfig.(*HttpListenerOptions_DisableExtProc); !ok { + return false + } + + if h, ok := interface{}(m.GetDisableExtProc()).(equality.Equalizer); ok { + if !h.Equal(target.GetDisableExtProc()) { + return false + } + } else { + if !proto.Equal(m.GetDisableExtProc(), target.GetDisableExtProc()) { + return false + } + } + + case *HttpListenerOptions_ExtProc: + if _, ok := target.ExtProcConfig.(*HttpListenerOptions_ExtProc); !ok { + return false + } + + if h, ok := interface{}(m.GetExtProc()).(equality.Equalizer); ok { + if !h.Equal(target.GetExtProc()) { + return false + } + } else { + if !proto.Equal(m.GetExtProc(), target.GetExtProc()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.ExtProcConfig != target.ExtProcConfig { + return false + } + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/http_listener_options.pb.go b/pkg/api/gloo.solo.io/v1/http_listener_options.pb.go new file mode 100644 index 000000000..970ab5c47 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/http_listener_options.pb.go @@ -0,0 +1,786 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/http_listener_options.proto + +package v1 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + v1 "github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1" + v2 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/filter/http/gzip/v2" + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3" + v31 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3" + proxylatency "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/proxylatency" + caching "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/caching" + dlp "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/dlp" + extproc "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/extproc" + ratelimit "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit" + stateful_session "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/stateful_session" + waf "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/waf" + connection_limit "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/connection_limit" + dynamic_forward_proxy "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy" + grpc_json "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/grpc_json" + grpc_web "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/grpc_web" + hcm "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/hcm" + header_validation "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/header_validation" + healthcheck "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/healthcheck" + local_ratelimit "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/local_ratelimit" + router "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/router" + tap "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tap" + wasm "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/wasm" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Optional, feature-specific configuration that lives on http listeners +type HttpListenerOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + GrpcWeb *grpc_web.GrpcWeb `protobuf:"bytes,1,opt,name=grpc_web,json=grpcWeb,proto3" json:"grpc_web,omitempty"` + HttpConnectionManagerSettings *hcm.HttpConnectionManagerSettings `protobuf:"bytes,2,opt,name=http_connection_manager_settings,json=httpConnectionManagerSettings,proto3" json:"http_connection_manager_settings,omitempty"` + // enable [Envoy health checks](https://www.envoyproxy.io/docs/envoy/v1.7.0/api-v2/config/filter/http/health_check/v2/health_check.proto) on this listener + HealthCheck *healthcheck.HealthCheck `protobuf:"bytes,4,opt,name=health_check,json=healthCheck,proto3" json:"health_check,omitempty"` + // Extensions will be passed along from Listeners, Gateways, VirtualServices, Routes, and Route tables to the + // underlying Proxy, making them useful for controllers, validation tools, etc. which interact with kubernetes yaml. + // + // Some sample use cases: + // * controllers, deployment pipelines, helm charts, etc. which wish to use extensions as a kind of opaque metadata. + // * In the future, Gloo may support gRPC-based plugins which communicate with the Gloo translator out-of-process. + // Opaque Extensions enables development of out-of-process plugins without requiring recompiling & redeploying Gloo's API. + Extensions *Extensions `protobuf:"bytes,3,opt,name=extensions,proto3" json:"extensions,omitempty"` + // Enterprise-only: Config for Web Application Firewall (WAF), supporting + // the popular ModSecurity 3.0 ruleset + Waf *waf.Settings `protobuf:"bytes,5,opt,name=waf,proto3" json:"waf,omitempty"` + // Enterprise-only: Config for data loss prevention + Dlp *dlp.FilterConfig `protobuf:"bytes,6,opt,name=dlp,proto3" json:"dlp,omitempty"` + // Enterprise-only: WASM related configuration [experimental!] + Wasm *wasm.PluginSource `protobuf:"bytes,7,opt,name=wasm,proto3" json:"wasm,omitempty"` + // Enterprise-only: External auth related settings + Extauth *v1.Settings `protobuf:"bytes,10,opt,name=extauth,proto3" json:"extauth,omitempty"` + // Enterprise-only: Settings for the rate limiting server itself + RatelimitServer *ratelimit.Settings `protobuf:"bytes,11,opt,name=ratelimit_server,json=ratelimitServer,proto3" json:"ratelimit_server,omitempty"` + // Enterprise-only: Settings for the cache server itself + // Deprecated: The caching filter is deprecated and planned to be removed in Gloo Gateway version 1.21. + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/http_listener_options.proto. + Caching *caching.Settings `protobuf:"bytes,17,opt,name=caching,proto3" json:"caching,omitempty"` + // Types that are valid to be assigned to ExtProcConfig: + // + // *HttpListenerOptions_DisableExtProc + // *HttpListenerOptions_ExtProc + ExtProcConfig isHttpListenerOptions_ExtProcConfig `protobuf_oneof:"ext_proc_config"` + // Gzip is an HTTP option which enables Gloo to compress + // data returned from an upstream service upon client request. + // Compression is useful in situations where large payloads need to be transmitted without compromising the response time. + // Example: + // ``` + // gzip: + // + // contentType: + // - "application/json" + // compressionLevel: BEST + // + // ``` + Gzip *v2.Gzip `protobuf:"bytes,8,opt,name=gzip,proto3" json:"gzip,omitempty"` + // Enterprise-only: Proxy latency + ProxyLatency *proxylatency.ProxyLatency `protobuf:"bytes,9,opt,name=proxy_latency,json=proxyLatency,proto3" json:"proxy_latency,omitempty"` + // Buffer can be used to set the maximum request size + // that the filter will buffer before the connection + // manager will stop buffering and return a 413 response. + Buffer *v3.Buffer `protobuf:"bytes,12,opt,name=buffer,proto3" json:"buffer,omitempty"` + // Csrf can be used to set percent of requests for which the CSRF filter is enabled, enable shadow-only mode + // where policies will be evaluated and tracked, but not enforced and add additional source origins + // that will be allowed in addition to the destination origin. + // For more, see https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/filter/http/csrf/v2/csrf.proto + Csrf *v31.CsrfPolicy `protobuf:"bytes,15,opt,name=csrf,proto3" json:"csrf,omitempty"` + // Exposed envoy config for the gRPC to JSON transcoding filter, + // envoy.filters.http.grpc_json_transcoder. + // For more, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/grpc_json_transcoder/v3/transcoder.proto + GrpcJsonTranscoder *grpc_json.GrpcJsonTranscoder `protobuf:"bytes,13,opt,name=grpc_json_transcoder,json=grpcJsonTranscoder,proto3" json:"grpc_json_transcoder,omitempty"` + // Enterprise-only: If using the HTTP header specified by cluster_header to direct traffic to a cluster, + // this option will sanitize that header from downstream traffic. + // Defaults to false + SanitizeClusterHeader *wrapperspb.BoolValue `protobuf:"bytes,14,opt,name=sanitize_cluster_header,json=sanitizeClusterHeader,proto3" json:"sanitize_cluster_header,omitempty"` + // Enterprise-only: Setting this value to true will grab the leftmost IP address from + // the x-forwarded-for header and set it as the downstream address. + // It is worth noting that the x-forwarded-for header can be tampered with by clients + // and should therefore be sanitized by any preceding proxies / load balancers if this option is to be used. + LeftmostXffAddress *wrapperspb.BoolValue `protobuf:"bytes,16,opt,name=leftmost_xff_address,json=leftmostXffAddress,proto3" json:"leftmost_xff_address,omitempty"` + DynamicForwardProxy *dynamic_forward_proxy.FilterConfig `protobuf:"bytes,28,opt,name=dynamic_forward_proxy,json=dynamicForwardProxy,proto3" json:"dynamic_forward_proxy,omitempty"` + // ConnectionLimit can be used to limit the number of active connections per gateway. Useful for resource protection as well as DoS prevention. + ConnectionLimit *connection_limit.ConnectionLimit `protobuf:"bytes,29,opt,name=connection_limit,json=connectionLimit,proto3" json:"connection_limit,omitempty"` + // NetworkLocalRatelimit can be used to rate limit the connections per gateway at the L4 layer and works pre-auth. + // It uses envoy's own local rate limit filter to do so, without the need for an external rate limit server to be set up. + NetworkLocalRatelimit *local_ratelimit.TokenBucket `protobuf:"bytes,32,opt,name=network_local_ratelimit,json=networkLocalRatelimit,proto3" json:"network_local_ratelimit,omitempty"` + // HttpLocalRatelimit can be used to rate limit the number of requests per gateway and works pre-auth. + // Unlike the NetworkLocalRatelimit, this works as part of the HCM (ie: L7 layer). + // All virtual host and routes that are part of this gateway will share this rate limit unless explicity configured with another limit. + // It uses envoy's own local rate limit filter to do so, without the need for an external rate limit server to be set up. + HttpLocalRatelimit *local_ratelimit.Settings `protobuf:"bytes,33,opt,name=http_local_ratelimit,json=httpLocalRatelimit,proto3" json:"http_local_ratelimit,omitempty"` + // Router is an extension of the envoy http filters + // Maps to https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/router/v3/router.proto + Router *router.Router `protobuf:"bytes,18,opt,name=router,proto3" json:"router,omitempty"` + // Enterprise only: Tap filter settings (experimental). + Tap *tap.Tap `protobuf:"bytes,34,opt,name=tap,proto3" json:"tap,omitempty"` + // Enterprise only: Listener-level stateful session settings + StatefulSession *stateful_session.StatefulSession `protobuf:"bytes,35,opt,name=stateful_session,json=statefulSession,proto3" json:"stateful_session,omitempty"` + // Header validation settings - fields in this message can be used to + // determine whether requests should be rejected based on the contents of + // the header. + HeaderValidationSettings *header_validation.HeaderValidationSettings `protobuf:"bytes,36,opt,name=header_validation_settings,json=headerValidationSettings,proto3" json:"header_validation_settings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HttpListenerOptions) Reset() { + *x = HttpListenerOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HttpListenerOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HttpListenerOptions) ProtoMessage() {} + +func (x *HttpListenerOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HttpListenerOptions.ProtoReflect.Descriptor instead. +func (*HttpListenerOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_rawDescGZIP(), []int{0} +} + +func (x *HttpListenerOptions) GetGrpcWeb() *grpc_web.GrpcWeb { + if x != nil { + return x.GrpcWeb + } + return nil +} + +func (x *HttpListenerOptions) GetHttpConnectionManagerSettings() *hcm.HttpConnectionManagerSettings { + if x != nil { + return x.HttpConnectionManagerSettings + } + return nil +} + +func (x *HttpListenerOptions) GetHealthCheck() *healthcheck.HealthCheck { + if x != nil { + return x.HealthCheck + } + return nil +} + +func (x *HttpListenerOptions) GetExtensions() *Extensions { + if x != nil { + return x.Extensions + } + return nil +} + +func (x *HttpListenerOptions) GetWaf() *waf.Settings { + if x != nil { + return x.Waf + } + return nil +} + +func (x *HttpListenerOptions) GetDlp() *dlp.FilterConfig { + if x != nil { + return x.Dlp + } + return nil +} + +func (x *HttpListenerOptions) GetWasm() *wasm.PluginSource { + if x != nil { + return x.Wasm + } + return nil +} + +func (x *HttpListenerOptions) GetExtauth() *v1.Settings { + if x != nil { + return x.Extauth + } + return nil +} + +func (x *HttpListenerOptions) GetRatelimitServer() *ratelimit.Settings { + if x != nil { + return x.RatelimitServer + } + return nil +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/http_listener_options.proto. +func (x *HttpListenerOptions) GetCaching() *caching.Settings { + if x != nil { + return x.Caching + } + return nil +} + +func (x *HttpListenerOptions) GetExtProcConfig() isHttpListenerOptions_ExtProcConfig { + if x != nil { + return x.ExtProcConfig + } + return nil +} + +func (x *HttpListenerOptions) GetDisableExtProc() *wrapperspb.BoolValue { + if x != nil { + if x, ok := x.ExtProcConfig.(*HttpListenerOptions_DisableExtProc); ok { + return x.DisableExtProc + } + } + return nil +} + +func (x *HttpListenerOptions) GetExtProc() *extproc.Settings { + if x != nil { + if x, ok := x.ExtProcConfig.(*HttpListenerOptions_ExtProc); ok { + return x.ExtProc + } + } + return nil +} + +func (x *HttpListenerOptions) GetGzip() *v2.Gzip { + if x != nil { + return x.Gzip + } + return nil +} + +func (x *HttpListenerOptions) GetProxyLatency() *proxylatency.ProxyLatency { + if x != nil { + return x.ProxyLatency + } + return nil +} + +func (x *HttpListenerOptions) GetBuffer() *v3.Buffer { + if x != nil { + return x.Buffer + } + return nil +} + +func (x *HttpListenerOptions) GetCsrf() *v31.CsrfPolicy { + if x != nil { + return x.Csrf + } + return nil +} + +func (x *HttpListenerOptions) GetGrpcJsonTranscoder() *grpc_json.GrpcJsonTranscoder { + if x != nil { + return x.GrpcJsonTranscoder + } + return nil +} + +func (x *HttpListenerOptions) GetSanitizeClusterHeader() *wrapperspb.BoolValue { + if x != nil { + return x.SanitizeClusterHeader + } + return nil +} + +func (x *HttpListenerOptions) GetLeftmostXffAddress() *wrapperspb.BoolValue { + if x != nil { + return x.LeftmostXffAddress + } + return nil +} + +func (x *HttpListenerOptions) GetDynamicForwardProxy() *dynamic_forward_proxy.FilterConfig { + if x != nil { + return x.DynamicForwardProxy + } + return nil +} + +func (x *HttpListenerOptions) GetConnectionLimit() *connection_limit.ConnectionLimit { + if x != nil { + return x.ConnectionLimit + } + return nil +} + +func (x *HttpListenerOptions) GetNetworkLocalRatelimit() *local_ratelimit.TokenBucket { + if x != nil { + return x.NetworkLocalRatelimit + } + return nil +} + +func (x *HttpListenerOptions) GetHttpLocalRatelimit() *local_ratelimit.Settings { + if x != nil { + return x.HttpLocalRatelimit + } + return nil +} + +func (x *HttpListenerOptions) GetRouter() *router.Router { + if x != nil { + return x.Router + } + return nil +} + +func (x *HttpListenerOptions) GetTap() *tap.Tap { + if x != nil { + return x.Tap + } + return nil +} + +func (x *HttpListenerOptions) GetStatefulSession() *stateful_session.StatefulSession { + if x != nil { + return x.StatefulSession + } + return nil +} + +func (x *HttpListenerOptions) GetHeaderValidationSettings() *header_validation.HeaderValidationSettings { + if x != nil { + return x.HeaderValidationSettings + } + return nil +} + +type isHttpListenerOptions_ExtProcConfig interface { + isHttpListenerOptions_ExtProcConfig() +} + +type HttpListenerOptions_DisableExtProc struct { + // Enterprise-only: Set to true to disable the External Processing filter for this listener. + // This can be overridden by child VirtualHostOptions or RouteOptions. + DisableExtProc *wrapperspb.BoolValue `protobuf:"bytes,30,opt,name=disable_ext_proc,json=disableExtProc,proto3,oneof"` +} + +type HttpListenerOptions_ExtProc struct { + // Enterprise-only: External Processing filter settings for the listener. This can be used to + // override the defaults from the global settings (via shallow merge). Some of the settings + // on the listener can be overridden by child VirtualHostOptions or RouteOptions. + ExtProc *extproc.Settings `protobuf:"bytes,31,opt,name=ext_proc,json=extProc,proto3,oneof"` +} + +func (*HttpListenerOptions_DisableExtProc) isHttpListenerOptions_ExtProcConfig() {} + +func (*HttpListenerOptions_ExtProc) isHttpListenerOptions_ExtProcConfig() {} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_rawDesc = string([]byte{ + 0x0a, 0x49, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x68, 0x74, 0x74, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x5f, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4d, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x77, 0x65, 0x62, 0x2f, 0x67, 0x72, + 0x70, 0x63, 0x5f, 0x77, 0x65, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x63, 0x6d, 0x2f, 0x68, 0x63, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x53, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, + 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x77, 0x61, 0x66, 0x2f, 0x77, 0x61, 0x66, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x64, 0x6c, 0x70, 0x2f, 0x64, 0x6c, 0x70, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x77, 0x61, + 0x73, 0x6d, 0x2f, 0x77, 0x61, 0x73, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4a, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x5a, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, + 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x61, 0x74, 0x65, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, + 0x63, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x56, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x63, 0x2f, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x63, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x5f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2f, 0x68, + 0x74, 0x74, 0x70, 0x2f, 0x67, 0x7a, 0x69, 0x70, 0x2f, 0x76, 0x32, 0x2f, 0x67, 0x7a, 0x69, 0x70, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x64, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x72, 0x6f, + 0x78, 0x79, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x6c, + 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x68, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, + 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2f, 0x76, 0x33, 0x2f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x64, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x63, 0x73, 0x72, 0x66, 0x2f, 0x76, + 0x33, 0x2f, 0x63, 0x73, 0x72, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4f, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x67, 0x72, + 0x70, 0x63, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x67, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x66, 0x6f, 0x72, + 0x77, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x64, 0x79, 0x6e, 0x61, 0x6d, + 0x69, 0x63, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x5d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2f, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x5b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x49, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, + 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, + 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4e, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x74, 0x61, 0x70, 0x2f, 0x74, 0x61, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x68, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x5f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, + 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa3, 0x11, 0x0a, 0x13, 0x48, 0x74, 0x74, + 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x41, 0x0a, 0x08, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x77, 0x65, 0x62, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x77, 0x65, 0x62, 0x2e, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x57, 0x65, 0x62, 0x52, 0x07, 0x67, 0x72, 0x70, 0x63, + 0x57, 0x65, 0x62, 0x12, 0x80, 0x01, 0x0a, 0x20, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x5f, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, + 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x1d, 0x68, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x50, 0x0a, 0x0c, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x68, + 0x65, 0x61, 0x6c, 0x74, 0x68, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x0b, 0x68, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x03, 0x77, 0x61, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x77, 0x61, 0x66, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x52, 0x03, 0x77, 0x61, 0x66, 0x12, 0x38, 0x0a, 0x03, 0x64, 0x6c, 0x70, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x64, + 0x6c, 0x70, 0x12, 0x3b, 0x0a, 0x04, 0x77, 0x61, 0x73, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x77, 0x61, 0x73, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x04, 0x77, 0x61, 0x73, 0x6d, 0x12, + 0x3b, 0x0a, 0x07, 0x65, 0x78, 0x74, 0x61, 0x75, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x52, 0x07, 0x65, 0x78, 0x74, 0x61, 0x75, 0x74, 0x68, 0x12, 0x53, 0x0a, 0x10, + 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x52, 0x0f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x12, 0x44, 0x0a, 0x07, 0x63, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x11, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, + 0x63, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x12, 0x46, 0x0a, 0x10, 0x64, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x18, 0x1e, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, + 0x0e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x12, + 0x43, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x18, 0x1f, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x00, 0x52, 0x07, 0x65, 0x78, 0x74, + 0x50, 0x72, 0x6f, 0x63, 0x12, 0x42, 0x0a, 0x04, 0x67, 0x7a, 0x69, 0x70, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x67, 0x7a, 0x69, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x7a, + 0x69, 0x70, 0x52, 0x04, 0x67, 0x7a, 0x69, 0x70, 0x12, 0x5b, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x36, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, + 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, + 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x4c, 0x61, + 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x4f, 0x0a, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x62, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x52, 0x06, + 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x04, 0x63, 0x73, 0x72, 0x66, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x63, 0x73, 0x72, + 0x66, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x73, 0x72, 0x66, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, + 0x04, 0x63, 0x73, 0x72, 0x66, 0x12, 0x64, 0x0a, 0x14, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6a, 0x73, + 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x2e, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4a, 0x73, 0x6f, 0x6e, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x52, 0x12, 0x67, 0x72, 0x70, 0x63, 0x4a, 0x73, 0x6f, + 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x17, 0x73, + 0x61, 0x6e, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, + 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x73, 0x61, 0x6e, 0x69, 0x74, 0x69, + 0x7a, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, + 0x4c, 0x0a, 0x14, 0x6c, 0x65, 0x66, 0x74, 0x6d, 0x6f, 0x73, 0x74, 0x5f, 0x78, 0x66, 0x66, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x6c, 0x65, 0x66, 0x74, 0x6d, + 0x6f, 0x73, 0x74, 0x58, 0x66, 0x66, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x5a, 0x0a, + 0x15, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, + 0x66, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x13, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x46, 0x6f, 0x72, + 0x77, 0x61, 0x72, 0x64, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x61, 0x0a, 0x10, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x1d, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x0f, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x69, 0x0a, 0x17, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x61, + 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, + 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x52, 0x15, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, + 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x60, 0x0a, 0x14, 0x68, 0x74, 0x74, 0x70, 0x5f, + 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x61, + 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x12, 0x68, 0x74, 0x74, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x6c, + 0x52, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x06, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, + 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x03, 0x74, 0x61, 0x70, 0x18, 0x22, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x61, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x54, 0x61, 0x70, 0x52, 0x03, 0x74, 0x61, 0x70, 0x12, 0x61, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x66, 0x75, 0x6c, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x23, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x5f, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x66, 0x75, 0x6c, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x7e, 0x0a, 0x1a, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x40, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x52, 0x18, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x65, + 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x42, + 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x34, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, + 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_goTypes = []any{ + (*HttpListenerOptions)(nil), // 0: gloo.solo.io.HttpListenerOptions + (*grpc_web.GrpcWeb)(nil), // 1: grpc_web.options.gloo.solo.io.GrpcWeb + (*hcm.HttpConnectionManagerSettings)(nil), // 2: hcm.options.gloo.solo.io.HttpConnectionManagerSettings + (*healthcheck.HealthCheck)(nil), // 3: healthcheck.options.gloo.solo.io.HealthCheck + (*Extensions)(nil), // 4: gloo.solo.io.Extensions + (*waf.Settings)(nil), // 5: waf.options.gloo.solo.io.Settings + (*dlp.FilterConfig)(nil), // 6: dlp.options.gloo.solo.io.FilterConfig + (*wasm.PluginSource)(nil), // 7: wasm.options.gloo.solo.io.PluginSource + (*v1.Settings)(nil), // 8: enterprise.gloo.solo.io.Settings + (*ratelimit.Settings)(nil), // 9: ratelimit.options.gloo.solo.io.Settings + (*caching.Settings)(nil), // 10: caching.options.gloo.solo.io.Settings + (*wrapperspb.BoolValue)(nil), // 11: google.protobuf.BoolValue + (*extproc.Settings)(nil), // 12: extproc.options.gloo.solo.io.Settings + (*v2.Gzip)(nil), // 13: solo.io.envoy.config.filter.http.gzip.v2.Gzip + (*proxylatency.ProxyLatency)(nil), // 14: envoy.config.filter.http.proxylatency.v2.ProxyLatency + (*v3.Buffer)(nil), // 15: solo.io.envoy.extensions.filters.http.buffer.v3.Buffer + (*v31.CsrfPolicy)(nil), // 16: solo.io.envoy.extensions.filters.http.csrf.v3.CsrfPolicy + (*grpc_json.GrpcJsonTranscoder)(nil), // 17: grpc_json.options.gloo.solo.io.GrpcJsonTranscoder + (*dynamic_forward_proxy.FilterConfig)(nil), // 18: dfp.options.gloo.solo.io.FilterConfig + (*connection_limit.ConnectionLimit)(nil), // 19: connection_limit.options.gloo.solo.io.ConnectionLimit + (*local_ratelimit.TokenBucket)(nil), // 20: local_ratelimit.options.gloo.solo.io.TokenBucket + (*local_ratelimit.Settings)(nil), // 21: local_ratelimit.options.gloo.solo.io.Settings + (*router.Router)(nil), // 22: gloo.solo.io.Router + (*tap.Tap)(nil), // 23: tap.options.gloo.solo.io.Tap + (*stateful_session.StatefulSession)(nil), // 24: stateful_session.options.gloo.solo.io.StatefulSession + (*header_validation.HeaderValidationSettings)(nil), // 25: header_validation.options.gloo.solo.io.HeaderValidationSettings +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_depIdxs = []int32{ + 1, // 0: gloo.solo.io.HttpListenerOptions.grpc_web:type_name -> grpc_web.options.gloo.solo.io.GrpcWeb + 2, // 1: gloo.solo.io.HttpListenerOptions.http_connection_manager_settings:type_name -> hcm.options.gloo.solo.io.HttpConnectionManagerSettings + 3, // 2: gloo.solo.io.HttpListenerOptions.health_check:type_name -> healthcheck.options.gloo.solo.io.HealthCheck + 4, // 3: gloo.solo.io.HttpListenerOptions.extensions:type_name -> gloo.solo.io.Extensions + 5, // 4: gloo.solo.io.HttpListenerOptions.waf:type_name -> waf.options.gloo.solo.io.Settings + 6, // 5: gloo.solo.io.HttpListenerOptions.dlp:type_name -> dlp.options.gloo.solo.io.FilterConfig + 7, // 6: gloo.solo.io.HttpListenerOptions.wasm:type_name -> wasm.options.gloo.solo.io.PluginSource + 8, // 7: gloo.solo.io.HttpListenerOptions.extauth:type_name -> enterprise.gloo.solo.io.Settings + 9, // 8: gloo.solo.io.HttpListenerOptions.ratelimit_server:type_name -> ratelimit.options.gloo.solo.io.Settings + 10, // 9: gloo.solo.io.HttpListenerOptions.caching:type_name -> caching.options.gloo.solo.io.Settings + 11, // 10: gloo.solo.io.HttpListenerOptions.disable_ext_proc:type_name -> google.protobuf.BoolValue + 12, // 11: gloo.solo.io.HttpListenerOptions.ext_proc:type_name -> extproc.options.gloo.solo.io.Settings + 13, // 12: gloo.solo.io.HttpListenerOptions.gzip:type_name -> solo.io.envoy.config.filter.http.gzip.v2.Gzip + 14, // 13: gloo.solo.io.HttpListenerOptions.proxy_latency:type_name -> envoy.config.filter.http.proxylatency.v2.ProxyLatency + 15, // 14: gloo.solo.io.HttpListenerOptions.buffer:type_name -> solo.io.envoy.extensions.filters.http.buffer.v3.Buffer + 16, // 15: gloo.solo.io.HttpListenerOptions.csrf:type_name -> solo.io.envoy.extensions.filters.http.csrf.v3.CsrfPolicy + 17, // 16: gloo.solo.io.HttpListenerOptions.grpc_json_transcoder:type_name -> grpc_json.options.gloo.solo.io.GrpcJsonTranscoder + 11, // 17: gloo.solo.io.HttpListenerOptions.sanitize_cluster_header:type_name -> google.protobuf.BoolValue + 11, // 18: gloo.solo.io.HttpListenerOptions.leftmost_xff_address:type_name -> google.protobuf.BoolValue + 18, // 19: gloo.solo.io.HttpListenerOptions.dynamic_forward_proxy:type_name -> dfp.options.gloo.solo.io.FilterConfig + 19, // 20: gloo.solo.io.HttpListenerOptions.connection_limit:type_name -> connection_limit.options.gloo.solo.io.ConnectionLimit + 20, // 21: gloo.solo.io.HttpListenerOptions.network_local_ratelimit:type_name -> local_ratelimit.options.gloo.solo.io.TokenBucket + 21, // 22: gloo.solo.io.HttpListenerOptions.http_local_ratelimit:type_name -> local_ratelimit.options.gloo.solo.io.Settings + 22, // 23: gloo.solo.io.HttpListenerOptions.router:type_name -> gloo.solo.io.Router + 23, // 24: gloo.solo.io.HttpListenerOptions.tap:type_name -> tap.options.gloo.solo.io.Tap + 24, // 25: gloo.solo.io.HttpListenerOptions.stateful_session:type_name -> stateful_session.options.gloo.solo.io.StatefulSession + 25, // 26: gloo.solo.io.HttpListenerOptions.header_validation_settings:type_name -> header_validation.options.gloo.solo.io.HeaderValidationSettings + 27, // [27:27] is the sub-list for method output_type + 27, // [27:27] is the sub-list for method input_type + 27, // [27:27] is the sub-list for extension type_name + 27, // [27:27] is the sub-list for extension extendee + 0, // [0:27] is the sub-list for field type_name +} + +func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_init() } +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_init() + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_msgTypes[0].OneofWrappers = []any{ + (*HttpListenerOptions_DisableExtProc)(nil), + (*HttpListenerOptions_ExtProc)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/http_listener_options.pb.hash.go b/pkg/api/gloo.solo.io/v1/http_listener_options.pb.hash.go new file mode 100644 index 000000000..716434559 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/http_listener_options.pb.hash.go @@ -0,0 +1,594 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/http_listener_options.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HttpListenerOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.HttpListenerOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetGrpcWeb()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcWeb")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcWeb(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcWeb")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHttpConnectionManagerSettings()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpConnectionManagerSettings")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpConnectionManagerSettings(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpConnectionManagerSettings")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHealthCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HealthCheck")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHealthCheck(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HealthCheck")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtensions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtensions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetWaf()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Waf")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWaf(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Waf")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDlp()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Dlp")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDlp(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Dlp")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetWasm()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Wasm")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWasm(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Wasm")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtauth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extauth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtauth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Extauth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRatelimitServer()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RatelimitServer")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRatelimitServer(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RatelimitServer")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCaching()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Caching")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCaching(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Caching")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetGzip()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Gzip")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGzip(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Gzip")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetProxyLatency()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProxyLatency")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProxyLatency(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ProxyLatency")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetBuffer()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Buffer")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBuffer(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Buffer")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCsrf()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Csrf")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCsrf(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Csrf")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetGrpcJsonTranscoder()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcJsonTranscoder")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcJsonTranscoder(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcJsonTranscoder")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetSanitizeClusterHeader()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SanitizeClusterHeader")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSanitizeClusterHeader(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SanitizeClusterHeader")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetLeftmostXffAddress()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LeftmostXffAddress")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLeftmostXffAddress(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LeftmostXffAddress")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDynamicForwardProxy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DynamicForwardProxy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDynamicForwardProxy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DynamicForwardProxy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetConnectionLimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectionLimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConnectionLimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConnectionLimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetNetworkLocalRatelimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("NetworkLocalRatelimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetNetworkLocalRatelimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("NetworkLocalRatelimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHttpLocalRatelimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpLocalRatelimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpLocalRatelimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpLocalRatelimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRouter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Router")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRouter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Router")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTap()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Tap")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTap(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Tap")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetStatefulSession()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("StatefulSession")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStatefulSession(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("StatefulSession")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHeaderValidationSettings()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderValidationSettings")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaderValidationSettings(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HeaderValidationSettings")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.ExtProcConfig.(type) { + + case *HttpListenerOptions_DisableExtProc: + + if h, ok := interface{}(m.GetDisableExtProc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisableExtProc")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisableExtProc(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisableExtProc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *HttpListenerOptions_ExtProc: + + if h, ok := interface{}(m.GetExtProc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ExtProc")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtProc(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ExtProc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/http_listener_options.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/http_listener_options.pb.uniquehash.go new file mode 100644 index 000000000..8821d8694 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/http_listener_options.pb.uniquehash.go @@ -0,0 +1,595 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/http_listener_options.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HttpListenerOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.HttpListenerOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetGrpcWeb()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcWeb")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcWeb(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcWeb")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHttpConnectionManagerSettings()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpConnectionManagerSettings")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpConnectionManagerSettings(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpConnectionManagerSettings")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHealthCheck()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HealthCheck")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHealthCheck(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HealthCheck")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtensions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtensions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetWaf()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Waf")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWaf(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Waf")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDlp()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Dlp")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDlp(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Dlp")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetWasm()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Wasm")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWasm(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Wasm")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtauth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extauth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtauth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Extauth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRatelimitServer()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RatelimitServer")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRatelimitServer(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RatelimitServer")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCaching()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Caching")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCaching(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Caching")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetGzip()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Gzip")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGzip(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Gzip")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetProxyLatency()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProxyLatency")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProxyLatency(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ProxyLatency")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetBuffer()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Buffer")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBuffer(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Buffer")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCsrf()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Csrf")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCsrf(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Csrf")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetGrpcJsonTranscoder()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcJsonTranscoder")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcJsonTranscoder(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcJsonTranscoder")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetSanitizeClusterHeader()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SanitizeClusterHeader")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSanitizeClusterHeader(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SanitizeClusterHeader")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetLeftmostXffAddress()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LeftmostXffAddress")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLeftmostXffAddress(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LeftmostXffAddress")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDynamicForwardProxy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DynamicForwardProxy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDynamicForwardProxy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DynamicForwardProxy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetConnectionLimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectionLimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConnectionLimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConnectionLimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetNetworkLocalRatelimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("NetworkLocalRatelimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetNetworkLocalRatelimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("NetworkLocalRatelimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHttpLocalRatelimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpLocalRatelimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpLocalRatelimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpLocalRatelimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRouter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Router")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRouter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Router")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTap()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Tap")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTap(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Tap")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetStatefulSession()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("StatefulSession")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStatefulSession(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("StatefulSession")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHeaderValidationSettings()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderValidationSettings")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaderValidationSettings(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HeaderValidationSettings")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.ExtProcConfig.(type) { + + case *HttpListenerOptions_DisableExtProc: + + if h, ok := interface{}(m.GetDisableExtProc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisableExtProc")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisableExtProc(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisableExtProc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *HttpListenerOptions_ExtProc: + + if h, ok := interface{}(m.GetExtProc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ExtProc")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtProc(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ExtProc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/json.gen.go b/pkg/api/gloo.solo.io/v1/json.gen.go deleted file mode 100644 index e1c280128..000000000 --- a/pkg/api/gloo.solo.io/v1/json.gen.go +++ /dev/null @@ -1,113 +0,0 @@ -// Code generated by skv2. DO NOT EDIT. - -// Generated json marshal and unmarshal functions - -package v1 - -import ( - bytes "bytes" - fmt "fmt" - math "math" - - jsonpb "github.com/golang/protobuf/jsonpb" - proto "github.com/golang/protobuf/proto" - skv2jsonpb "github.com/solo-io/skv2/pkg/kube_jsonpb" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -var ( - marshaller = &skv2jsonpb.Marshaler{EnumsAsInts: true} - unmarshaller = &jsonpb.Unmarshaler{} -) - -// MarshalJSON is a custom marshaler for SettingsSpec -func (this *SettingsSpec) MarshalJSON() ([]byte, error) { - str, err := marshaller.MarshalToString(this) - return []byte(str), err -} - -// UnmarshalJSON is a custom unmarshaler for SettingsSpec -func (this *SettingsSpec) UnmarshalJSON(b []byte) error { - return unmarshaller.Unmarshal(bytes.NewReader(b), this) -} - -// MarshalJSON is a custom marshaler for SettingsStatus -func (this *SettingsStatus) MarshalJSON() ([]byte, error) { - str, err := marshaller.MarshalToString(this) - return []byte(str), err -} - -// UnmarshalJSON is a custom unmarshaler for SettingsStatus -func (this *SettingsStatus) UnmarshalJSON(b []byte) error { - return unmarshaller.Unmarshal(bytes.NewReader(b), this) -} - -// MarshalJSON is a custom marshaler for UpstreamSpec -func (this *UpstreamSpec) MarshalJSON() ([]byte, error) { - str, err := marshaller.MarshalToString(this) - return []byte(str), err -} - -// UnmarshalJSON is a custom unmarshaler for UpstreamSpec -func (this *UpstreamSpec) UnmarshalJSON(b []byte) error { - return unmarshaller.Unmarshal(bytes.NewReader(b), this) -} - -// MarshalJSON is a custom marshaler for UpstreamStatus -func (this *UpstreamStatus) MarshalJSON() ([]byte, error) { - str, err := marshaller.MarshalToString(this) - return []byte(str), err -} - -// UnmarshalJSON is a custom unmarshaler for UpstreamStatus -func (this *UpstreamStatus) UnmarshalJSON(b []byte) error { - return unmarshaller.Unmarshal(bytes.NewReader(b), this) -} - -// MarshalJSON is a custom marshaler for UpstreamGroupSpec -func (this *UpstreamGroupSpec) MarshalJSON() ([]byte, error) { - str, err := marshaller.MarshalToString(this) - return []byte(str), err -} - -// UnmarshalJSON is a custom unmarshaler for UpstreamGroupSpec -func (this *UpstreamGroupSpec) UnmarshalJSON(b []byte) error { - return unmarshaller.Unmarshal(bytes.NewReader(b), this) -} - -// MarshalJSON is a custom marshaler for UpstreamGroupStatus -func (this *UpstreamGroupStatus) MarshalJSON() ([]byte, error) { - str, err := marshaller.MarshalToString(this) - return []byte(str), err -} - -// UnmarshalJSON is a custom unmarshaler for UpstreamGroupStatus -func (this *UpstreamGroupStatus) UnmarshalJSON(b []byte) error { - return unmarshaller.Unmarshal(bytes.NewReader(b), this) -} - -// MarshalJSON is a custom marshaler for ProxySpec -func (this *ProxySpec) MarshalJSON() ([]byte, error) { - str, err := marshaller.MarshalToString(this) - return []byte(str), err -} - -// UnmarshalJSON is a custom unmarshaler for ProxySpec -func (this *ProxySpec) UnmarshalJSON(b []byte) error { - return unmarshaller.Unmarshal(bytes.NewReader(b), this) -} - -// MarshalJSON is a custom marshaler for ProxyStatus -func (this *ProxyStatus) MarshalJSON() ([]byte, error) { - str, err := marshaller.MarshalToString(this) - return []byte(str), err -} - -// UnmarshalJSON is a custom unmarshaler for ProxyStatus -func (this *ProxyStatus) UnmarshalJSON(b []byte) error { - return unmarshaller.Unmarshal(bytes.NewReader(b), this) -} diff --git a/pkg/api/gloo.solo.io/v1/listener_options.pb.clone.go b/pkg/api/gloo.solo.io/v1/listener_options.pb.clone.go new file mode 100644 index 000000000..cbd93df2d --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/listener_options.pb.clone.go @@ -0,0 +1,128 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/listener_options.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_als "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_proxy_protocol "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/proxy_protocol" + + github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core "github.com/solo-io/solo-kit/pkg/api/external/envoy/api/v2/core" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *ListenerOptions) Clone() proto.Message { + var target *ListenerOptions + if m == nil { + return target + } + target = &ListenerOptions{} + + if h, ok := interface{}(m.GetAccessLoggingService()).(clone.Cloner); ok { + target.AccessLoggingService = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_als.AccessLoggingService) + } else { + target.AccessLoggingService = proto.Clone(m.GetAccessLoggingService()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_als.AccessLoggingService) + } + + if h, ok := interface{}(m.GetExtensions()).(clone.Cloner); ok { + target.Extensions = h.Clone().(*Extensions) + } else { + target.Extensions = proto.Clone(m.GetExtensions()).(*Extensions) + } + + if h, ok := interface{}(m.GetPerConnectionBufferLimitBytes()).(clone.Cloner); ok { + target.PerConnectionBufferLimitBytes = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.PerConnectionBufferLimitBytes = proto.Clone(m.GetPerConnectionBufferLimitBytes()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if m.GetSocketOptions() != nil { + target.SocketOptions = make([]*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.SocketOption, len(m.GetSocketOptions())) + for idx, v := range m.GetSocketOptions() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SocketOptions[idx] = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.SocketOption) + } else { + target.SocketOptions[idx] = proto.Clone(v).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.SocketOption) + } + + } + } + + if h, ok := interface{}(m.GetProxyProtocol()).(clone.Cloner); ok { + target.ProxyProtocol = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_proxy_protocol.ProxyProtocol) + } else { + target.ProxyProtocol = proto.Clone(m.GetProxyProtocol()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_proxy_protocol.ProxyProtocol) + } + + if h, ok := interface{}(m.GetConnectionBalanceConfig()).(clone.Cloner); ok { + target.ConnectionBalanceConfig = h.Clone().(*ConnectionBalanceConfig) + } else { + target.ConnectionBalanceConfig = proto.Clone(m.GetConnectionBalanceConfig()).(*ConnectionBalanceConfig) + } + + if h, ok := interface{}(m.GetListenerAccessLoggingService()).(clone.Cloner); ok { + target.ListenerAccessLoggingService = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_als.AccessLoggingService) + } else { + target.ListenerAccessLoggingService = proto.Clone(m.GetListenerAccessLoggingService()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_als.AccessLoggingService) + } + + if h, ok := interface{}(m.GetTcpStats()).(clone.Cloner); ok { + target.TcpStats = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.TcpStats = proto.Clone(m.GetTcpStats()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *ConnectionBalanceConfig) Clone() proto.Message { + var target *ConnectionBalanceConfig + if m == nil { + return target + } + target = &ConnectionBalanceConfig{} + + if h, ok := interface{}(m.GetExactBalance()).(clone.Cloner); ok { + target.ExactBalance = h.Clone().(*ConnectionBalanceConfig_ExactBalance) + } else { + target.ExactBalance = proto.Clone(m.GetExactBalance()).(*ConnectionBalanceConfig_ExactBalance) + } + + return target +} + +// Clone function +func (m *ConnectionBalanceConfig_ExactBalance) Clone() proto.Message { + var target *ConnectionBalanceConfig_ExactBalance + if m == nil { + return target + } + target = &ConnectionBalanceConfig_ExactBalance{} + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/listener_options.pb.equal.go b/pkg/api/gloo.solo.io/v1/listener_options.pb.equal.go new file mode 100644 index 000000000..e9cced90e --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/listener_options.pb.equal.go @@ -0,0 +1,195 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/listener_options.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *ListenerOptions) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ListenerOptions) + if !ok { + that2, ok := that.(ListenerOptions) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetAccessLoggingService()).(equality.Equalizer); ok { + if !h.Equal(target.GetAccessLoggingService()) { + return false + } + } else { + if !proto.Equal(m.GetAccessLoggingService(), target.GetAccessLoggingService()) { + return false + } + } + + if h, ok := interface{}(m.GetExtensions()).(equality.Equalizer); ok { + if !h.Equal(target.GetExtensions()) { + return false + } + } else { + if !proto.Equal(m.GetExtensions(), target.GetExtensions()) { + return false + } + } + + if h, ok := interface{}(m.GetPerConnectionBufferLimitBytes()).(equality.Equalizer); ok { + if !h.Equal(target.GetPerConnectionBufferLimitBytes()) { + return false + } + } else { + if !proto.Equal(m.GetPerConnectionBufferLimitBytes(), target.GetPerConnectionBufferLimitBytes()) { + return false + } + } + + if len(m.GetSocketOptions()) != len(target.GetSocketOptions()) { + return false + } + for idx, v := range m.GetSocketOptions() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetSocketOptions()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetSocketOptions()[idx]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetProxyProtocol()).(equality.Equalizer); ok { + if !h.Equal(target.GetProxyProtocol()) { + return false + } + } else { + if !proto.Equal(m.GetProxyProtocol(), target.GetProxyProtocol()) { + return false + } + } + + if h, ok := interface{}(m.GetConnectionBalanceConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetConnectionBalanceConfig()) { + return false + } + } else { + if !proto.Equal(m.GetConnectionBalanceConfig(), target.GetConnectionBalanceConfig()) { + return false + } + } + + if h, ok := interface{}(m.GetListenerAccessLoggingService()).(equality.Equalizer); ok { + if !h.Equal(target.GetListenerAccessLoggingService()) { + return false + } + } else { + if !proto.Equal(m.GetListenerAccessLoggingService(), target.GetListenerAccessLoggingService()) { + return false + } + } + + if h, ok := interface{}(m.GetTcpStats()).(equality.Equalizer); ok { + if !h.Equal(target.GetTcpStats()) { + return false + } + } else { + if !proto.Equal(m.GetTcpStats(), target.GetTcpStats()) { + return false + } + } + + return true +} + +// Equal function +func (m *ConnectionBalanceConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ConnectionBalanceConfig) + if !ok { + that2, ok := that.(ConnectionBalanceConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetExactBalance()).(equality.Equalizer); ok { + if !h.Equal(target.GetExactBalance()) { + return false + } + } else { + if !proto.Equal(m.GetExactBalance(), target.GetExactBalance()) { + return false + } + } + + return true +} + +// Equal function +func (m *ConnectionBalanceConfig_ExactBalance) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ConnectionBalanceConfig_ExactBalance) + if !ok { + that2, ok := that.(ConnectionBalanceConfig_ExactBalance) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/listener_options.pb.go b/pkg/api/gloo.solo.io/v1/listener_options.pb.go new file mode 100644 index 000000000..483ca79ad --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/listener_options.pb.go @@ -0,0 +1,397 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/listener_options.proto + +package v1 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + als "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als" + proxy_protocol "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/proxy_protocol" + core "github.com/solo-io/solo-kit/pkg/api/external/envoy/api/v2/core" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Optional, feature-specific configuration that lives on gateways. +// Each ListenerOption object contains configuration for a specific feature. +// Note to developers: new Listener plugins must be added to this struct +// to be usable by Gloo. (plugins currently need to be compiled into Gloo) +type ListenerOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Configuration for access logging in a filter like the HttpConnectionManager. + AccessLoggingService *als.AccessLoggingService `protobuf:"bytes,1,opt,name=access_logging_service,json=accessLoggingService,proto3" json:"access_logging_service,omitempty"` + // Extensions will be passed along from Listeners, Gateways, VirtualServices, Routes, and Route tables to the + // underlying Proxy, making them useful for controllers, validation tools, etc. which interact with kubernetes yaml. + // + // Some sample use cases: + // * controllers, deployment pipelines, helm charts, etc. which wish to use extensions as a kind of opaque metadata. + // * In the future, Gloo may support gRPC-based plugins which communicate with the Gloo translator out-of-process. + // Opaque Extensions enables development of out-of-process plugins without requiring recompiling & redeploying Gloo's API. + Extensions *Extensions `protobuf:"bytes,2,opt,name=extensions,proto3" json:"extensions,omitempty"` + // Soft limit on size of the listener's new connection read and write buffers. If unspecified, defaults to 1MiB + // For more info, check out the [Envoy docs](https://www.envoyproxy.io/docs/envoy/v1.14.1/api-v2/api/v2/listener.proto) + PerConnectionBufferLimitBytes *wrapperspb.UInt32Value `protobuf:"bytes,3,opt,name=per_connection_buffer_limit_bytes,json=perConnectionBufferLimitBytes,proto3" json:"per_connection_buffer_limit_bytes,omitempty"` + // Additional socket options that may not be present in Envoy source code or + // precompiled binaries. + SocketOptions []*core.SocketOption `protobuf:"bytes,4,rep,name=socket_options,json=socketOptions,proto3" json:"socket_options,omitempty"` + // Enable ProxyProtocol support for this listener. + ProxyProtocol *proxy_protocol.ProxyProtocol `protobuf:"bytes,5,opt,name=proxy_protocol,json=proxyProtocol,proto3" json:"proxy_protocol,omitempty"` + // Configuration for listener connection balancing. + ConnectionBalanceConfig *ConnectionBalanceConfig `protobuf:"bytes,6,opt,name=connection_balance_config,json=connectionBalanceConfig,proto3" json:"connection_balance_config,omitempty"` + // If enabled this sets up an early access logging service for the listener. + // Added initially to support listener level logging for HTTP listeners. + // For more info see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/listener/v3/listener.proto#envoy-v3-api-field-config-listener-v3-listener-access-log + ListenerAccessLoggingService *als.AccessLoggingService `protobuf:"bytes,7,opt,name=listener_access_logging_service,json=listenerAccessLoggingService,proto3" json:"listener_access_logging_service,omitempty"` + // If true, will wrap all filter chains in the listener with a TCP stats transport socket, which is a + // passthrough listener that can report low-level Linux TCP stats, useful for diagnosis + // and triage. + TcpStats *wrapperspb.BoolValue `protobuf:"bytes,8,opt,name=tcp_stats,json=tcpStats,proto3" json:"tcp_stats,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListenerOptions) Reset() { + *x = ListenerOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListenerOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListenerOptions) ProtoMessage() {} + +func (x *ListenerOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListenerOptions.ProtoReflect.Descriptor instead. +func (*ListenerOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_rawDescGZIP(), []int{0} +} + +func (x *ListenerOptions) GetAccessLoggingService() *als.AccessLoggingService { + if x != nil { + return x.AccessLoggingService + } + return nil +} + +func (x *ListenerOptions) GetExtensions() *Extensions { + if x != nil { + return x.Extensions + } + return nil +} + +func (x *ListenerOptions) GetPerConnectionBufferLimitBytes() *wrapperspb.UInt32Value { + if x != nil { + return x.PerConnectionBufferLimitBytes + } + return nil +} + +func (x *ListenerOptions) GetSocketOptions() []*core.SocketOption { + if x != nil { + return x.SocketOptions + } + return nil +} + +func (x *ListenerOptions) GetProxyProtocol() *proxy_protocol.ProxyProtocol { + if x != nil { + return x.ProxyProtocol + } + return nil +} + +func (x *ListenerOptions) GetConnectionBalanceConfig() *ConnectionBalanceConfig { + if x != nil { + return x.ConnectionBalanceConfig + } + return nil +} + +func (x *ListenerOptions) GetListenerAccessLoggingService() *als.AccessLoggingService { + if x != nil { + return x.ListenerAccessLoggingService + } + return nil +} + +func (x *ListenerOptions) GetTcpStats() *wrapperspb.BoolValue { + if x != nil { + return x.TcpStats + } + return nil +} + +// Configuration for listener connection balancing. +type ConnectionBalanceConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + ExactBalance *ConnectionBalanceConfig_ExactBalance `protobuf:"bytes,1,opt,name=exact_balance,json=exactBalance,proto3" json:"exact_balance,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ConnectionBalanceConfig) Reset() { + *x = ConnectionBalanceConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ConnectionBalanceConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConnectionBalanceConfig) ProtoMessage() {} + +func (x *ConnectionBalanceConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConnectionBalanceConfig.ProtoReflect.Descriptor instead. +func (*ConnectionBalanceConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_rawDescGZIP(), []int{1} +} + +func (x *ConnectionBalanceConfig) GetExactBalance() *ConnectionBalanceConfig_ExactBalance { + if x != nil { + return x.ExactBalance + } + return nil +} + +// A connection balancer implementation that does exact balancing. This means that a lock is +// held during balancing so that connection counts are nearly exactly balanced between worker +// threads. This is "nearly" exact in the sense that a connection might close in parallel thus +// making the counts incorrect, but this should be rectified on the next accept. This balancer +// sacrifices accept throughput for accuracy and should be used when there are a small number of +// connections that rarely cycle (e.g., service mesh gRPC egress). +type ConnectionBalanceConfig_ExactBalance struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ConnectionBalanceConfig_ExactBalance) Reset() { + *x = ConnectionBalanceConfig_ExactBalance{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ConnectionBalanceConfig_ExactBalance) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConnectionBalanceConfig_ExactBalance) ProtoMessage() {} + +func (x *ConnectionBalanceConfig_ExactBalance) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConnectionBalanceConfig_ExactBalance.ProtoReflect.Descriptor instead. +func (*ConnectionBalanceConfig_ExactBalance) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_rawDescGZIP(), []int{1, 0} +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_rawDesc = string([]byte{ + 0x0a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, + 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, + 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x59, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x70, + 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, + 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6c, 0x73, 0x2f, 0x61, + 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, + 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd7, 0x05, 0x0a, 0x0f, 0x4c, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x64, 0x0a, 0x16, + 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, + 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, + 0x67, 0x67, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x14, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x66, 0x0a, 0x21, + 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, + 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1d, 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x0e, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x70, + 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, + 0x61, 0x0a, 0x19, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x17, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x75, 0x0a, 0x1f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x5f, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x6c, + 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, + 0x67, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x1c, 0x6c, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x65, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x67, 0x69, + 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x74, 0x63, 0x70, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, + 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x74, 0x63, 0x70, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x22, 0x82, 0x01, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x57, + 0x0a, 0x0d, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x78, 0x61, + 0x63, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0c, 0x65, 0x78, 0x61, 0x63, 0x74, + 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0x0e, 0x0a, 0x0c, 0x45, 0x78, 0x61, 0x63, 0x74, + 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x42, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, + 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_goTypes = []any{ + (*ListenerOptions)(nil), // 0: gloo.solo.io.ListenerOptions + (*ConnectionBalanceConfig)(nil), // 1: gloo.solo.io.ConnectionBalanceConfig + (*ConnectionBalanceConfig_ExactBalance)(nil), // 2: gloo.solo.io.ConnectionBalanceConfig.ExactBalance + (*als.AccessLoggingService)(nil), // 3: als.options.gloo.solo.io.AccessLoggingService + (*Extensions)(nil), // 4: gloo.solo.io.Extensions + (*wrapperspb.UInt32Value)(nil), // 5: google.protobuf.UInt32Value + (*core.SocketOption)(nil), // 6: solo.io.envoy.api.v2.core.SocketOption + (*proxy_protocol.ProxyProtocol)(nil), // 7: proxy_protocol.options.gloo.solo.io.ProxyProtocol + (*wrapperspb.BoolValue)(nil), // 8: google.protobuf.BoolValue +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_depIdxs = []int32{ + 3, // 0: gloo.solo.io.ListenerOptions.access_logging_service:type_name -> als.options.gloo.solo.io.AccessLoggingService + 4, // 1: gloo.solo.io.ListenerOptions.extensions:type_name -> gloo.solo.io.Extensions + 5, // 2: gloo.solo.io.ListenerOptions.per_connection_buffer_limit_bytes:type_name -> google.protobuf.UInt32Value + 6, // 3: gloo.solo.io.ListenerOptions.socket_options:type_name -> solo.io.envoy.api.v2.core.SocketOption + 7, // 4: gloo.solo.io.ListenerOptions.proxy_protocol:type_name -> proxy_protocol.options.gloo.solo.io.ProxyProtocol + 1, // 5: gloo.solo.io.ListenerOptions.connection_balance_config:type_name -> gloo.solo.io.ConnectionBalanceConfig + 3, // 6: gloo.solo.io.ListenerOptions.listener_access_logging_service:type_name -> als.options.gloo.solo.io.AccessLoggingService + 8, // 7: gloo.solo.io.ListenerOptions.tcp_stats:type_name -> google.protobuf.BoolValue + 2, // 8: gloo.solo.io.ConnectionBalanceConfig.exact_balance:type_name -> gloo.solo.io.ConnectionBalanceConfig.ExactBalance + 9, // [9:9] is the sub-list for method output_type + 9, // [9:9] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name +} + +func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_init() } +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_rawDesc)), + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/listener_options.pb.hash.go b/pkg/api/gloo.solo.io/v1/listener_options.pb.hash.go new file mode 100644 index 000000000..54318665e --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/listener_options.pb.hash.go @@ -0,0 +1,270 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/listener_options.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ListenerOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ListenerOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAccessLoggingService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AccessLoggingService")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAccessLoggingService(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AccessLoggingService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtensions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtensions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPerConnectionBufferLimitBytes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PerConnectionBufferLimitBytes")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPerConnectionBufferLimitBytes(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PerConnectionBufferLimitBytes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetSocketOptions() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetProxyProtocol()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProxyProtocol")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProxyProtocol(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ProxyProtocol")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetConnectionBalanceConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectionBalanceConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConnectionBalanceConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConnectionBalanceConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetListenerAccessLoggingService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ListenerAccessLoggingService")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetListenerAccessLoggingService(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ListenerAccessLoggingService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTcpStats()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpStats")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTcpStats(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TcpStats")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ConnectionBalanceConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ConnectionBalanceConfig")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetExactBalance()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ExactBalance")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExactBalance(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ExactBalance")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ConnectionBalanceConfig_ExactBalance) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ConnectionBalanceConfig_ExactBalance")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/listener_options.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/listener_options.pb.uniquehash.go new file mode 100644 index 000000000..6a68b5820 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/listener_options.pb.uniquehash.go @@ -0,0 +1,275 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/listener_options.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ListenerOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ListenerOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAccessLoggingService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AccessLoggingService")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAccessLoggingService(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AccessLoggingService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtensions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtensions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPerConnectionBufferLimitBytes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PerConnectionBufferLimitBytes")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPerConnectionBufferLimitBytes(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PerConnectionBufferLimitBytes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("SocketOptions")); err != nil { + return 0, err + } + for i, v := range m.GetSocketOptions() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetProxyProtocol()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProxyProtocol")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProxyProtocol(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ProxyProtocol")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetConnectionBalanceConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectionBalanceConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConnectionBalanceConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConnectionBalanceConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetListenerAccessLoggingService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ListenerAccessLoggingService")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetListenerAccessLoggingService(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ListenerAccessLoggingService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTcpStats()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpStats")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTcpStats(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TcpStats")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ConnectionBalanceConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ConnectionBalanceConfig")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetExactBalance()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ExactBalance")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExactBalance(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ExactBalance")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ConnectionBalanceConfig_ExactBalance) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ConnectionBalanceConfig_ExactBalance")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/load_balancer.pb.clone.go b/pkg/api/gloo.solo.io/v1/load_balancer.pb.clone.go new file mode 100644 index 000000000..6078437e7 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/load_balancer.pb.clone.go @@ -0,0 +1,262 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/load_balancer.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_emptypb "google.golang.org/protobuf/types/known/emptypb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *LoadBalancerConfig) Clone() proto.Message { + var target *LoadBalancerConfig + if m == nil { + return target + } + target = &LoadBalancerConfig{} + + if h, ok := interface{}(m.GetHealthyPanicThreshold()).(clone.Cloner); ok { + target.HealthyPanicThreshold = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.DoubleValue) + } else { + target.HealthyPanicThreshold = proto.Clone(m.GetHealthyPanicThreshold()).(*google_golang_org_protobuf_types_known_wrapperspb.DoubleValue) + } + + if h, ok := interface{}(m.GetUpdateMergeWindow()).(clone.Cloner); ok { + target.UpdateMergeWindow = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.UpdateMergeWindow = proto.Clone(m.GetUpdateMergeWindow()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetUseHostnameForHashing()).(clone.Cloner); ok { + target.UseHostnameForHashing = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.UseHostnameForHashing = proto.Clone(m.GetUseHostnameForHashing()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + target.CloseConnectionsOnHostSetChange = m.GetCloseConnectionsOnHostSetChange() + + switch m.Type.(type) { + + case *LoadBalancerConfig_RoundRobin_: + + if h, ok := interface{}(m.GetRoundRobin()).(clone.Cloner); ok { + target.Type = &LoadBalancerConfig_RoundRobin_{ + RoundRobin: h.Clone().(*LoadBalancerConfig_RoundRobin), + } + } else { + target.Type = &LoadBalancerConfig_RoundRobin_{ + RoundRobin: proto.Clone(m.GetRoundRobin()).(*LoadBalancerConfig_RoundRobin), + } + } + + case *LoadBalancerConfig_LeastRequest_: + + if h, ok := interface{}(m.GetLeastRequest()).(clone.Cloner); ok { + target.Type = &LoadBalancerConfig_LeastRequest_{ + LeastRequest: h.Clone().(*LoadBalancerConfig_LeastRequest), + } + } else { + target.Type = &LoadBalancerConfig_LeastRequest_{ + LeastRequest: proto.Clone(m.GetLeastRequest()).(*LoadBalancerConfig_LeastRequest), + } + } + + case *LoadBalancerConfig_Random_: + + if h, ok := interface{}(m.GetRandom()).(clone.Cloner); ok { + target.Type = &LoadBalancerConfig_Random_{ + Random: h.Clone().(*LoadBalancerConfig_Random), + } + } else { + target.Type = &LoadBalancerConfig_Random_{ + Random: proto.Clone(m.GetRandom()).(*LoadBalancerConfig_Random), + } + } + + case *LoadBalancerConfig_RingHash_: + + if h, ok := interface{}(m.GetRingHash()).(clone.Cloner); ok { + target.Type = &LoadBalancerConfig_RingHash_{ + RingHash: h.Clone().(*LoadBalancerConfig_RingHash), + } + } else { + target.Type = &LoadBalancerConfig_RingHash_{ + RingHash: proto.Clone(m.GetRingHash()).(*LoadBalancerConfig_RingHash), + } + } + + case *LoadBalancerConfig_Maglev_: + + if h, ok := interface{}(m.GetMaglev()).(clone.Cloner); ok { + target.Type = &LoadBalancerConfig_Maglev_{ + Maglev: h.Clone().(*LoadBalancerConfig_Maglev), + } + } else { + target.Type = &LoadBalancerConfig_Maglev_{ + Maglev: proto.Clone(m.GetMaglev()).(*LoadBalancerConfig_Maglev), + } + } + + } + + switch m.LocalityConfig.(type) { + + case *LoadBalancerConfig_LocalityWeightedLbConfig: + + if h, ok := interface{}(m.GetLocalityWeightedLbConfig()).(clone.Cloner); ok { + target.LocalityConfig = &LoadBalancerConfig_LocalityWeightedLbConfig{ + LocalityWeightedLbConfig: h.Clone().(*google_golang_org_protobuf_types_known_emptypb.Empty), + } + } else { + target.LocalityConfig = &LoadBalancerConfig_LocalityWeightedLbConfig{ + LocalityWeightedLbConfig: proto.Clone(m.GetLocalityWeightedLbConfig()).(*google_golang_org_protobuf_types_known_emptypb.Empty), + } + } + + } + + return target +} + +// Clone function +func (m *LoadBalancerConfig_RoundRobin) Clone() proto.Message { + var target *LoadBalancerConfig_RoundRobin + if m == nil { + return target + } + target = &LoadBalancerConfig_RoundRobin{} + + if h, ok := interface{}(m.GetSlowStartConfig()).(clone.Cloner); ok { + target.SlowStartConfig = h.Clone().(*LoadBalancerConfig_SlowStartConfig) + } else { + target.SlowStartConfig = proto.Clone(m.GetSlowStartConfig()).(*LoadBalancerConfig_SlowStartConfig) + } + + return target +} + +// Clone function +func (m *LoadBalancerConfig_LeastRequest) Clone() proto.Message { + var target *LoadBalancerConfig_LeastRequest + if m == nil { + return target + } + target = &LoadBalancerConfig_LeastRequest{} + + target.ChoiceCount = m.GetChoiceCount() + + if h, ok := interface{}(m.GetSlowStartConfig()).(clone.Cloner); ok { + target.SlowStartConfig = h.Clone().(*LoadBalancerConfig_SlowStartConfig) + } else { + target.SlowStartConfig = proto.Clone(m.GetSlowStartConfig()).(*LoadBalancerConfig_SlowStartConfig) + } + + return target +} + +// Clone function +func (m *LoadBalancerConfig_Random) Clone() proto.Message { + var target *LoadBalancerConfig_Random + if m == nil { + return target + } + target = &LoadBalancerConfig_Random{} + + return target +} + +// Clone function +func (m *LoadBalancerConfig_RingHashConfig) Clone() proto.Message { + var target *LoadBalancerConfig_RingHashConfig + if m == nil { + return target + } + target = &LoadBalancerConfig_RingHashConfig{} + + target.MinimumRingSize = m.GetMinimumRingSize() + + target.MaximumRingSize = m.GetMaximumRingSize() + + return target +} + +// Clone function +func (m *LoadBalancerConfig_RingHash) Clone() proto.Message { + var target *LoadBalancerConfig_RingHash + if m == nil { + return target + } + target = &LoadBalancerConfig_RingHash{} + + if h, ok := interface{}(m.GetRingHashConfig()).(clone.Cloner); ok { + target.RingHashConfig = h.Clone().(*LoadBalancerConfig_RingHashConfig) + } else { + target.RingHashConfig = proto.Clone(m.GetRingHashConfig()).(*LoadBalancerConfig_RingHashConfig) + } + + return target +} + +// Clone function +func (m *LoadBalancerConfig_Maglev) Clone() proto.Message { + var target *LoadBalancerConfig_Maglev + if m == nil { + return target + } + target = &LoadBalancerConfig_Maglev{} + + return target +} + +// Clone function +func (m *LoadBalancerConfig_SlowStartConfig) Clone() proto.Message { + var target *LoadBalancerConfig_SlowStartConfig + if m == nil { + return target + } + target = &LoadBalancerConfig_SlowStartConfig{} + + if h, ok := interface{}(m.GetSlowStartWindow()).(clone.Cloner); ok { + target.SlowStartWindow = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.SlowStartWindow = proto.Clone(m.GetSlowStartWindow()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetAggression()).(clone.Cloner); ok { + target.Aggression = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.DoubleValue) + } else { + target.Aggression = proto.Clone(m.GetAggression()).(*google_golang_org_protobuf_types_known_wrapperspb.DoubleValue) + } + + if h, ok := interface{}(m.GetMinWeightPercent()).(clone.Cloner); ok { + target.MinWeightPercent = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.DoubleValue) + } else { + target.MinWeightPercent = proto.Clone(m.GetMinWeightPercent()).(*google_golang_org_protobuf_types_known_wrapperspb.DoubleValue) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/load_balancer.pb.equal.go b/pkg/api/gloo.solo.io/v1/load_balancer.pb.equal.go index e4922a31c..7b3f32b70 100644 --- a/pkg/api/gloo.solo.io/v1/load_balancer.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/load_balancer.pb.equal.go @@ -66,9 +66,26 @@ func (m *LoadBalancerConfig) Equal(that interface{}) bool { } } + if h, ok := interface{}(m.GetUseHostnameForHashing()).(equality.Equalizer); ok { + if !h.Equal(target.GetUseHostnameForHashing()) { + return false + } + } else { + if !proto.Equal(m.GetUseHostnameForHashing(), target.GetUseHostnameForHashing()) { + return false + } + } + + if m.GetCloseConnectionsOnHostSetChange() != target.GetCloseConnectionsOnHostSetChange() { + return false + } + switch m.Type.(type) { case *LoadBalancerConfig_RoundRobin_: + if _, ok := target.Type.(*LoadBalancerConfig_RoundRobin_); !ok { + return false + } if h, ok := interface{}(m.GetRoundRobin()).(equality.Equalizer); ok { if !h.Equal(target.GetRoundRobin()) { @@ -81,6 +98,9 @@ func (m *LoadBalancerConfig) Equal(that interface{}) bool { } case *LoadBalancerConfig_LeastRequest_: + if _, ok := target.Type.(*LoadBalancerConfig_LeastRequest_); !ok { + return false + } if h, ok := interface{}(m.GetLeastRequest()).(equality.Equalizer); ok { if !h.Equal(target.GetLeastRequest()) { @@ -93,6 +113,9 @@ func (m *LoadBalancerConfig) Equal(that interface{}) bool { } case *LoadBalancerConfig_Random_: + if _, ok := target.Type.(*LoadBalancerConfig_Random_); !ok { + return false + } if h, ok := interface{}(m.GetRandom()).(equality.Equalizer); ok { if !h.Equal(target.GetRandom()) { @@ -105,6 +128,9 @@ func (m *LoadBalancerConfig) Equal(that interface{}) bool { } case *LoadBalancerConfig_RingHash_: + if _, ok := target.Type.(*LoadBalancerConfig_RingHash_); !ok { + return false + } if h, ok := interface{}(m.GetRingHash()).(equality.Equalizer); ok { if !h.Equal(target.GetRingHash()) { @@ -117,6 +143,9 @@ func (m *LoadBalancerConfig) Equal(that interface{}) bool { } case *LoadBalancerConfig_Maglev_: + if _, ok := target.Type.(*LoadBalancerConfig_Maglev_); !ok { + return false + } if h, ok := interface{}(m.GetMaglev()).(equality.Equalizer); ok { if !h.Equal(target.GetMaglev()) { @@ -128,11 +157,19 @@ func (m *LoadBalancerConfig) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.Type != target.Type { + return false + } } switch m.LocalityConfig.(type) { case *LoadBalancerConfig_LocalityWeightedLbConfig: + if _, ok := target.LocalityConfig.(*LoadBalancerConfig_LocalityWeightedLbConfig); !ok { + return false + } if h, ok := interface{}(m.GetLocalityWeightedLbConfig()).(equality.Equalizer); ok { if !h.Equal(target.GetLocalityWeightedLbConfig()) { @@ -144,6 +181,11 @@ func (m *LoadBalancerConfig) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.LocalityConfig != target.LocalityConfig { + return false + } } return true @@ -170,6 +212,16 @@ func (m *LoadBalancerConfig_RoundRobin) Equal(that interface{}) bool { return false } + if h, ok := interface{}(m.GetSlowStartConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetSlowStartConfig()) { + return false + } + } else { + if !proto.Equal(m.GetSlowStartConfig(), target.GetSlowStartConfig()) { + return false + } + } + return true } @@ -198,6 +250,16 @@ func (m *LoadBalancerConfig_LeastRequest) Equal(that interface{}) bool { return false } + if h, ok := interface{}(m.GetSlowStartConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetSlowStartConfig()) { + return false + } + } else { + if !proto.Equal(m.GetSlowStartConfig(), target.GetSlowStartConfig()) { + return false + } + } + return true } @@ -314,3 +376,57 @@ func (m *LoadBalancerConfig_Maglev) Equal(that interface{}) bool { return true } + +// Equal function +func (m *LoadBalancerConfig_SlowStartConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*LoadBalancerConfig_SlowStartConfig) + if !ok { + that2, ok := that.(LoadBalancerConfig_SlowStartConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetSlowStartWindow()).(equality.Equalizer); ok { + if !h.Equal(target.GetSlowStartWindow()) { + return false + } + } else { + if !proto.Equal(m.GetSlowStartWindow(), target.GetSlowStartWindow()) { + return false + } + } + + if h, ok := interface{}(m.GetAggression()).(equality.Equalizer); ok { + if !h.Equal(target.GetAggression()) { + return false + } + } else { + if !proto.Equal(m.GetAggression(), target.GetAggression()) { + return false + } + } + + if h, ok := interface{}(m.GetMinWeightPercent()).(equality.Equalizer); ok { + if !h.Equal(target.GetMinWeightPercent()) { + return false + } + } else { + if !proto.Equal(m.GetMinWeightPercent(), target.GetMinWeightPercent()) { + return false + } + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/load_balancer.pb.go b/pkg/api/gloo.solo.io/v1/load_balancer.pb.go index e5e1e023f..c83930b40 100644 --- a/pkg/api/gloo.solo.io/v1/load_balancer.pb.go +++ b/pkg/api/gloo.solo.io/v1/load_balancer.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/load_balancer.proto @@ -9,14 +9,14 @@ package v1 import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - duration "github.com/golang/protobuf/ptypes/duration" - empty "github.com/golang/protobuf/ptypes/empty" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + emptypb "google.golang.org/protobuf/types/known/emptypb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -26,44 +26,51 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -// LoadBalancerConfig is the settings for the load balancer used to send request to the Upstream -// endpoints. +// LoadBalancerConfig is the settings for the load balancer used to send requests to the Upstream endpoints. type LoadBalancerConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Configures envoy's panic threshold Percent between 0-100. Once the number of non health hosts // reaches this percentage, envoy disregards health information. // see more info [here](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_balancing/panic_threshold.html). - HealthyPanicThreshold *wrappers.DoubleValue `protobuf:"bytes,1,opt,name=healthy_panic_threshold,json=healthyPanicThreshold,proto3" json:"healthy_panic_threshold,omitempty"` + HealthyPanicThreshold *wrapperspb.DoubleValue `protobuf:"bytes,1,opt,name=healthy_panic_threshold,json=healthyPanicThreshold,proto3" json:"healthy_panic_threshold,omitempty"` // This allows batch updates of endpoints health/weight/metadata that happen during a time window. // this help lower cpu usage when endpoint change rate is high. defaults to 1 second. // Set to 0 to disable and have changes applied immediately. - UpdateMergeWindow *duration.Duration `protobuf:"bytes,2,opt,name=update_merge_window,json=updateMergeWindow,proto3" json:"update_merge_window,omitempty"` - // Types that are assignable to Type: + UpdateMergeWindow *durationpb.Duration `protobuf:"bytes,2,opt,name=update_merge_window,json=updateMergeWindow,proto3" json:"update_merge_window,omitempty"` + // Types that are valid to be assigned to Type: + // // *LoadBalancerConfig_RoundRobin_ // *LoadBalancerConfig_LeastRequest_ // *LoadBalancerConfig_Random_ // *LoadBalancerConfig_RingHash_ // *LoadBalancerConfig_Maglev_ Type isLoadBalancerConfig_Type `protobuf_oneof:"type"` - // Types that are assignable to LocalityConfig: + // Types that are valid to be assigned to LocalityConfig: + // // *LoadBalancerConfig_LocalityWeightedLbConfig LocalityConfig isLoadBalancerConfig_LocalityConfig `protobuf_oneof:"locality_config"` + // Default: false, If set to true, the hostname will be used for hashing when using maglev for example, useful when using multiple host in the upstreams that resolve to the same IP. + UseHostnameForHashing *wrapperspb.BoolValue `protobuf:"bytes,9,opt,name=use_hostname_for_hashing,json=useHostnameForHashing,proto3" json:"use_hostname_for_hashing,omitempty"` + // If set to true, the load balancer will drain connections when the host set changes. + // + // Ring Hash or Maglev can be used to ensure that clients with the same key + // are routed to the same upstream host. + // Distruptions can cause new connections with the same key as existing connections + // to be routed to different hosts. + // Enabling this feature will cause the load balancer to drain existing connections + // when the host set changes, ensuring that new connections with the same key are + // consistently routed to the same host. + // Connections are not immediately closed, but are allowed to drain. + CloseConnectionsOnHostSetChange bool `protobuf:"varint,10,opt,name=close_connections_on_host_set_change,json=closeConnectionsOnHostSetChange,proto3" json:"close_connections_on_host_set_change,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LoadBalancerConfig) Reset() { *x = LoadBalancerConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LoadBalancerConfig) String() string { @@ -74,7 +81,7 @@ func (*LoadBalancerConfig) ProtoMessage() {} func (x *LoadBalancerConfig) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -89,82 +96,108 @@ func (*LoadBalancerConfig) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDescGZIP(), []int{0} } -func (x *LoadBalancerConfig) GetHealthyPanicThreshold() *wrappers.DoubleValue { +func (x *LoadBalancerConfig) GetHealthyPanicThreshold() *wrapperspb.DoubleValue { if x != nil { return x.HealthyPanicThreshold } return nil } -func (x *LoadBalancerConfig) GetUpdateMergeWindow() *duration.Duration { +func (x *LoadBalancerConfig) GetUpdateMergeWindow() *durationpb.Duration { if x != nil { return x.UpdateMergeWindow } return nil } -func (m *LoadBalancerConfig) GetType() isLoadBalancerConfig_Type { - if m != nil { - return m.Type +func (x *LoadBalancerConfig) GetType() isLoadBalancerConfig_Type { + if x != nil { + return x.Type } return nil } func (x *LoadBalancerConfig) GetRoundRobin() *LoadBalancerConfig_RoundRobin { - if x, ok := x.GetType().(*LoadBalancerConfig_RoundRobin_); ok { - return x.RoundRobin + if x != nil { + if x, ok := x.Type.(*LoadBalancerConfig_RoundRobin_); ok { + return x.RoundRobin + } } return nil } func (x *LoadBalancerConfig) GetLeastRequest() *LoadBalancerConfig_LeastRequest { - if x, ok := x.GetType().(*LoadBalancerConfig_LeastRequest_); ok { - return x.LeastRequest + if x != nil { + if x, ok := x.Type.(*LoadBalancerConfig_LeastRequest_); ok { + return x.LeastRequest + } } return nil } func (x *LoadBalancerConfig) GetRandom() *LoadBalancerConfig_Random { - if x, ok := x.GetType().(*LoadBalancerConfig_Random_); ok { - return x.Random + if x != nil { + if x, ok := x.Type.(*LoadBalancerConfig_Random_); ok { + return x.Random + } } return nil } func (x *LoadBalancerConfig) GetRingHash() *LoadBalancerConfig_RingHash { - if x, ok := x.GetType().(*LoadBalancerConfig_RingHash_); ok { - return x.RingHash + if x != nil { + if x, ok := x.Type.(*LoadBalancerConfig_RingHash_); ok { + return x.RingHash + } } return nil } func (x *LoadBalancerConfig) GetMaglev() *LoadBalancerConfig_Maglev { - if x, ok := x.GetType().(*LoadBalancerConfig_Maglev_); ok { - return x.Maglev + if x != nil { + if x, ok := x.Type.(*LoadBalancerConfig_Maglev_); ok { + return x.Maglev + } } return nil } -func (m *LoadBalancerConfig) GetLocalityConfig() isLoadBalancerConfig_LocalityConfig { - if m != nil { - return m.LocalityConfig +func (x *LoadBalancerConfig) GetLocalityConfig() isLoadBalancerConfig_LocalityConfig { + if x != nil { + return x.LocalityConfig } return nil } -func (x *LoadBalancerConfig) GetLocalityWeightedLbConfig() *empty.Empty { - if x, ok := x.GetLocalityConfig().(*LoadBalancerConfig_LocalityWeightedLbConfig); ok { - return x.LocalityWeightedLbConfig +func (x *LoadBalancerConfig) GetLocalityWeightedLbConfig() *emptypb.Empty { + if x != nil { + if x, ok := x.LocalityConfig.(*LoadBalancerConfig_LocalityWeightedLbConfig); ok { + return x.LocalityWeightedLbConfig + } } return nil } +func (x *LoadBalancerConfig) GetUseHostnameForHashing() *wrapperspb.BoolValue { + if x != nil { + return x.UseHostnameForHashing + } + return nil +} + +func (x *LoadBalancerConfig) GetCloseConnectionsOnHostSetChange() bool { + if x != nil { + return x.CloseConnectionsOnHostSetChange + } + return false +} + type isLoadBalancerConfig_Type interface { isLoadBalancerConfig_Type() } type LoadBalancerConfig_RoundRobin_ struct { - // Use round robin for load balancing. + // Use round robin for load balancing. Round robin is the default load balancing method. RoundRobin *LoadBalancerConfig_RoundRobin `protobuf:"bytes,3,opt,name=round_robin,json=roundRobin,proto3,oneof"` } @@ -207,24 +240,24 @@ type LoadBalancerConfig_LocalityWeightedLbConfig struct { // https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_balancing/locality_weight#locality-weighted-load-balancing // Locality weighted load balancing enables weighting assignments across different zones and geographical locations by using explicit weights. // This field is required to enable locality weighted load balancing - LocalityWeightedLbConfig *empty.Empty `protobuf:"bytes,8,opt,name=locality_weighted_lb_config,json=localityWeightedLbConfig,proto3,oneof"` + LocalityWeightedLbConfig *emptypb.Empty `protobuf:"bytes,8,opt,name=locality_weighted_lb_config,json=localityWeightedLbConfig,proto3,oneof"` } func (*LoadBalancerConfig_LocalityWeightedLbConfig) isLoadBalancerConfig_LocalityConfig() {} type LoadBalancerConfig_RoundRobin struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + state protoimpl.MessageState `protogen:"open.v1"` + // Configuration for slow start mode. If this configuration is not set, slow start will not be not enabled. + SlowStartConfig *LoadBalancerConfig_SlowStartConfig `protobuf:"bytes,1,opt,name=slow_start_config,json=slowStartConfig,proto3" json:"slow_start_config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LoadBalancerConfig_RoundRobin) Reset() { *x = LoadBalancerConfig_RoundRobin{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LoadBalancerConfig_RoundRobin) String() string { @@ -235,7 +268,7 @@ func (*LoadBalancerConfig_RoundRobin) ProtoMessage() {} func (x *LoadBalancerConfig_RoundRobin) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -250,22 +283,28 @@ func (*LoadBalancerConfig_RoundRobin) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDescGZIP(), []int{0, 0} } -type LoadBalancerConfig_LeastRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *LoadBalancerConfig_RoundRobin) GetSlowStartConfig() *LoadBalancerConfig_SlowStartConfig { + if x != nil { + return x.SlowStartConfig + } + return nil +} +type LoadBalancerConfig_LeastRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // How many choices to take into account. defaults to 2. ChoiceCount uint32 `protobuf:"varint,1,opt,name=choice_count,json=choiceCount,proto3" json:"choice_count,omitempty"` + // Configuration for slow start mode. If this configuration is not set, slow start will not be not enabled. + SlowStartConfig *LoadBalancerConfig_SlowStartConfig `protobuf:"bytes,2,opt,name=slow_start_config,json=slowStartConfig,proto3" json:"slow_start_config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LoadBalancerConfig_LeastRequest) Reset() { *x = LoadBalancerConfig_LeastRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LoadBalancerConfig_LeastRequest) String() string { @@ -276,7 +315,7 @@ func (*LoadBalancerConfig_LeastRequest) ProtoMessage() {} func (x *LoadBalancerConfig_LeastRequest) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -298,19 +337,24 @@ func (x *LoadBalancerConfig_LeastRequest) GetChoiceCount() uint32 { return 0 } +func (x *LoadBalancerConfig_LeastRequest) GetSlowStartConfig() *LoadBalancerConfig_SlowStartConfig { + if x != nil { + return x.SlowStartConfig + } + return nil +} + type LoadBalancerConfig_Random struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LoadBalancerConfig_Random) Reset() { *x = LoadBalancerConfig_Random{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LoadBalancerConfig_Random) String() string { @@ -321,7 +365,7 @@ func (*LoadBalancerConfig_Random) ProtoMessage() {} func (x *LoadBalancerConfig_Random) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -338,10 +382,7 @@ func (*LoadBalancerConfig_Random) Descriptor() ([]byte, []int) { // Customizes the parameters used in the hashing algorithm to refine performance or resource usage. type LoadBalancerConfig_RingHashConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Minimum hash ring size. The larger the ring is (that is, the more hashes there are for each provided host) // the better the request distribution will reflect the desired weights. Defaults to 1024 entries, and limited // to 8M entries. @@ -349,15 +390,15 @@ type LoadBalancerConfig_RingHashConfig struct { // Maximum hash ring size. Defaults to 8M entries, and limited to 8M entries, but can be lowered to further // constrain resource use. MaximumRingSize uint64 `protobuf:"varint,2,opt,name=maximum_ring_size,json=maximumRingSize,proto3" json:"maximum_ring_size,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LoadBalancerConfig_RingHashConfig) Reset() { *x = LoadBalancerConfig_RingHashConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LoadBalancerConfig_RingHashConfig) String() string { @@ -368,7 +409,7 @@ func (*LoadBalancerConfig_RingHashConfig) ProtoMessage() {} func (x *LoadBalancerConfig_RingHashConfig) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -398,21 +439,18 @@ func (x *LoadBalancerConfig_RingHashConfig) GetMaximumRingSize() uint64 { } type LoadBalancerConfig_RingHash struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Optional, customizes the parameters used in the hashing algorithm RingHashConfig *LoadBalancerConfig_RingHashConfig `protobuf:"bytes,1,opt,name=ring_hash_config,json=ringHashConfig,proto3" json:"ring_hash_config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LoadBalancerConfig_RingHash) Reset() { *x = LoadBalancerConfig_RingHash{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LoadBalancerConfig_RingHash) String() string { @@ -423,7 +461,7 @@ func (*LoadBalancerConfig_RingHash) ProtoMessage() {} func (x *LoadBalancerConfig_RingHash) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -446,18 +484,16 @@ func (x *LoadBalancerConfig_RingHash) GetRingHashConfig() *LoadBalancerConfig_Ri } type LoadBalancerConfig_Maglev struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LoadBalancerConfig_Maglev) Reset() { *x = LoadBalancerConfig_Maglev{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LoadBalancerConfig_Maglev) String() string { @@ -468,7 +504,7 @@ func (*LoadBalancerConfig_Maglev) ProtoMessage() {} func (x *LoadBalancerConfig_Maglev) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -483,9 +519,87 @@ func (*LoadBalancerConfig_Maglev) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDescGZIP(), []int{0, 5} } +type LoadBalancerConfig_SlowStartConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Represents the size of slow start window. + // If set, the newly created host remains in slow start mode starting from its creation time + // for the duration of slow start window. + SlowStartWindow *durationpb.Duration `protobuf:"bytes,1,opt,name=slow_start_window,json=slowStartWindow,proto3" json:"slow_start_window,omitempty"` + // This parameter controls the speed of traffic increase over the slow start window. Defaults to 1.0, + // so that endpoint would get linearly increasing amount of traffic. + // When increasing the value for this parameter, the speed of traffic ramp-up increases non-linearly. + // The value of aggression parameter should be greater than 0.0. + // By tuning the parameter, is possible to achieve polynomial or exponential shape of ramp-up curve. + // + // During slow start window, effective weight of an endpoint would be scaled with time factor and aggression: + // `new_weight = weight * max(min_weight_percent, time_factor ^ (1 / aggression))`, + // where `time_factor=(time_since_start_seconds / slow_start_time_seconds)`. + // + // As time progresses, more and more traffic would be sent to endpoint, which is in slow start window. + // Once host exits slow start, time_factor and aggression no longer affect its weight. + Aggression *wrapperspb.DoubleValue `protobuf:"bytes,2,opt,name=aggression,proto3" json:"aggression,omitempty"` + // Configures the minimum percentage of origin weight that avoids too small new weight, + // which may cause endpoints in slow start mode receive no traffic in slow start window. + // If not specified, the default is 10%. + MinWeightPercent *wrapperspb.DoubleValue `protobuf:"bytes,3,opt,name=min_weight_percent,json=minWeightPercent,proto3" json:"min_weight_percent,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LoadBalancerConfig_SlowStartConfig) Reset() { + *x = LoadBalancerConfig_SlowStartConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LoadBalancerConfig_SlowStartConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LoadBalancerConfig_SlowStartConfig) ProtoMessage() {} + +func (x *LoadBalancerConfig_SlowStartConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LoadBalancerConfig_SlowStartConfig.ProtoReflect.Descriptor instead. +func (*LoadBalancerConfig_SlowStartConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDescGZIP(), []int{0, 6} +} + +func (x *LoadBalancerConfig_SlowStartConfig) GetSlowStartWindow() *durationpb.Duration { + if x != nil { + return x.SlowStartWindow + } + return nil +} + +func (x *LoadBalancerConfig_SlowStartConfig) GetAggression() *wrapperspb.DoubleValue { + if x != nil { + return x.Aggression + } + return nil +} + +func (x *LoadBalancerConfig_SlowStartConfig) GetMinWeightPercent() *wrapperspb.DoubleValue { + if x != nil { + return x.MinWeightPercent + } + return nil +} + var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDesc = string([]byte{ 0x0a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -498,7 +612,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDe 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xc5, 0x07, 0x0a, 0x12, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, + 0x74, 0x6f, 0x22, 0x8b, 0x0c, 0x0a, 0x12, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x54, 0x0a, 0x17, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x5f, 0x70, 0x61, 0x6e, 0x69, 0x63, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, @@ -538,74 +652,118 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDe 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x01, 0x52, 0x18, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, - 0x64, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x0c, 0x0a, 0x0a, 0x52, 0x6f, 0x75, - 0x6e, 0x64, 0x52, 0x6f, 0x62, 0x69, 0x6e, 0x1a, 0x31, 0x0a, 0x0c, 0x4c, 0x65, 0x61, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x08, 0x0a, 0x06, 0x52, 0x61, - 0x6e, 0x64, 0x6f, 0x6d, 0x1a, 0x68, 0x0a, 0x0e, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, - 0x6d, 0x5f, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x69, 0x6e, 0x67, 0x53, 0x69, - 0x7a, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x72, 0x69, - 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6d, - 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x65, - 0x0a, 0x08, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x12, 0x59, 0x0a, 0x10, 0x72, 0x69, - 0x6e, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x08, 0x0a, 0x06, 0x4d, 0x61, 0x67, 0x6c, 0x65, 0x76, 0x42, - 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, - 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x3e, 0x5a, 0x34, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, - 0x76, 0x31, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} + 0x64, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x53, 0x0a, 0x18, 0x75, 0x73, 0x65, + 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x68, 0x61, + 0x73, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, + 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x75, 0x73, 0x65, 0x48, 0x6f, 0x73, 0x74, + 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x6f, 0x72, 0x48, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x12, 0x4d, + 0x0a, 0x24, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x5f, 0x6f, 0x6e, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x5f, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1f, 0x63, 0x6c, + 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4f, 0x6e, + 0x48, 0x6f, 0x73, 0x74, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x1a, 0x6a, 0x0a, + 0x0a, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f, 0x62, 0x69, 0x6e, 0x12, 0x5c, 0x0a, 0x11, 0x73, + 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, 0x73, 0x6c, 0x6f, 0x77, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x8f, 0x01, 0x0a, 0x0c, 0x4c, 0x65, + 0x61, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0b, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x5c, 0x0a, + 0x11, 0x73, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x6c, 0x6f, 0x77, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, 0x73, 0x6c, 0x6f, 0x77, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x08, 0x0a, 0x06, 0x52, + 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x1a, 0x68, 0x0a, 0x0e, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, + 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x69, 0x6d, + 0x75, 0x6d, 0x5f, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x69, 0x6e, 0x67, 0x53, + 0x69, 0x7a, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x72, + 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, + 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x1a, + 0x65, 0x0a, 0x08, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x12, 0x59, 0x0a, 0x10, 0x72, + 0x69, 0x6e, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, + 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x08, 0x0a, 0x06, 0x4d, 0x61, 0x67, 0x6c, 0x65, 0x76, + 0x1a, 0xe2, 0x01, 0x0a, 0x0f, 0x53, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x45, 0x0a, 0x11, 0x73, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x73, 0x6c, 0x6f, 0x77, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x3c, 0x0a, 0x0a, 0x61, + 0x67, 0x67, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x61, + 0x67, 0x67, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x12, 0x6d, 0x69, 0x6e, + 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x50, 0x65, + 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x42, 0x11, 0x0a, + 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x42, 0x42, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x34, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes = make([]protoimpl.MessageInfo, 7) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_goTypes = []interface{}{ - (*LoadBalancerConfig)(nil), // 0: gloo.solo.io.LoadBalancerConfig - (*LoadBalancerConfig_RoundRobin)(nil), // 1: gloo.solo.io.LoadBalancerConfig.RoundRobin - (*LoadBalancerConfig_LeastRequest)(nil), // 2: gloo.solo.io.LoadBalancerConfig.LeastRequest - (*LoadBalancerConfig_Random)(nil), // 3: gloo.solo.io.LoadBalancerConfig.Random - (*LoadBalancerConfig_RingHashConfig)(nil), // 4: gloo.solo.io.LoadBalancerConfig.RingHashConfig - (*LoadBalancerConfig_RingHash)(nil), // 5: gloo.solo.io.LoadBalancerConfig.RingHash - (*LoadBalancerConfig_Maglev)(nil), // 6: gloo.solo.io.LoadBalancerConfig.Maglev - (*wrappers.DoubleValue)(nil), // 7: google.protobuf.DoubleValue - (*duration.Duration)(nil), // 8: google.protobuf.Duration - (*empty.Empty)(nil), // 9: google.protobuf.Empty +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_goTypes = []any{ + (*LoadBalancerConfig)(nil), // 0: gloo.solo.io.LoadBalancerConfig + (*LoadBalancerConfig_RoundRobin)(nil), // 1: gloo.solo.io.LoadBalancerConfig.RoundRobin + (*LoadBalancerConfig_LeastRequest)(nil), // 2: gloo.solo.io.LoadBalancerConfig.LeastRequest + (*LoadBalancerConfig_Random)(nil), // 3: gloo.solo.io.LoadBalancerConfig.Random + (*LoadBalancerConfig_RingHashConfig)(nil), // 4: gloo.solo.io.LoadBalancerConfig.RingHashConfig + (*LoadBalancerConfig_RingHash)(nil), // 5: gloo.solo.io.LoadBalancerConfig.RingHash + (*LoadBalancerConfig_Maglev)(nil), // 6: gloo.solo.io.LoadBalancerConfig.Maglev + (*LoadBalancerConfig_SlowStartConfig)(nil), // 7: gloo.solo.io.LoadBalancerConfig.SlowStartConfig + (*wrapperspb.DoubleValue)(nil), // 8: google.protobuf.DoubleValue + (*durationpb.Duration)(nil), // 9: google.protobuf.Duration + (*emptypb.Empty)(nil), // 10: google.protobuf.Empty + (*wrapperspb.BoolValue)(nil), // 11: google.protobuf.BoolValue } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_depIdxs = []int32{ - 7, // 0: gloo.solo.io.LoadBalancerConfig.healthy_panic_threshold:type_name -> google.protobuf.DoubleValue - 8, // 1: gloo.solo.io.LoadBalancerConfig.update_merge_window:type_name -> google.protobuf.Duration - 1, // 2: gloo.solo.io.LoadBalancerConfig.round_robin:type_name -> gloo.solo.io.LoadBalancerConfig.RoundRobin - 2, // 3: gloo.solo.io.LoadBalancerConfig.least_request:type_name -> gloo.solo.io.LoadBalancerConfig.LeastRequest - 3, // 4: gloo.solo.io.LoadBalancerConfig.random:type_name -> gloo.solo.io.LoadBalancerConfig.Random - 5, // 5: gloo.solo.io.LoadBalancerConfig.ring_hash:type_name -> gloo.solo.io.LoadBalancerConfig.RingHash - 6, // 6: gloo.solo.io.LoadBalancerConfig.maglev:type_name -> gloo.solo.io.LoadBalancerConfig.Maglev - 9, // 7: gloo.solo.io.LoadBalancerConfig.locality_weighted_lb_config:type_name -> google.protobuf.Empty - 4, // 8: gloo.solo.io.LoadBalancerConfig.RingHash.ring_hash_config:type_name -> gloo.solo.io.LoadBalancerConfig.RingHashConfig - 9, // [9:9] is the sub-list for method output_type - 9, // [9:9] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 8, // 0: gloo.solo.io.LoadBalancerConfig.healthy_panic_threshold:type_name -> google.protobuf.DoubleValue + 9, // 1: gloo.solo.io.LoadBalancerConfig.update_merge_window:type_name -> google.protobuf.Duration + 1, // 2: gloo.solo.io.LoadBalancerConfig.round_robin:type_name -> gloo.solo.io.LoadBalancerConfig.RoundRobin + 2, // 3: gloo.solo.io.LoadBalancerConfig.least_request:type_name -> gloo.solo.io.LoadBalancerConfig.LeastRequest + 3, // 4: gloo.solo.io.LoadBalancerConfig.random:type_name -> gloo.solo.io.LoadBalancerConfig.Random + 5, // 5: gloo.solo.io.LoadBalancerConfig.ring_hash:type_name -> gloo.solo.io.LoadBalancerConfig.RingHash + 6, // 6: gloo.solo.io.LoadBalancerConfig.maglev:type_name -> gloo.solo.io.LoadBalancerConfig.Maglev + 10, // 7: gloo.solo.io.LoadBalancerConfig.locality_weighted_lb_config:type_name -> google.protobuf.Empty + 11, // 8: gloo.solo.io.LoadBalancerConfig.use_hostname_for_hashing:type_name -> google.protobuf.BoolValue + 7, // 9: gloo.solo.io.LoadBalancerConfig.RoundRobin.slow_start_config:type_name -> gloo.solo.io.LoadBalancerConfig.SlowStartConfig + 7, // 10: gloo.solo.io.LoadBalancerConfig.LeastRequest.slow_start_config:type_name -> gloo.solo.io.LoadBalancerConfig.SlowStartConfig + 4, // 11: gloo.solo.io.LoadBalancerConfig.RingHash.ring_hash_config:type_name -> gloo.solo.io.LoadBalancerConfig.RingHashConfig + 9, // 12: gloo.solo.io.LoadBalancerConfig.SlowStartConfig.slow_start_window:type_name -> google.protobuf.Duration + 8, // 13: gloo.solo.io.LoadBalancerConfig.SlowStartConfig.aggression:type_name -> google.protobuf.DoubleValue + 8, // 14: gloo.solo.io.LoadBalancerConfig.SlowStartConfig.min_weight_percent:type_name -> google.protobuf.DoubleValue + 15, // [15:15] is the sub-list for method output_type + 15, // [15:15] is the sub-list for method input_type + 15, // [15:15] is the sub-list for extension type_name + 15, // [15:15] is the sub-list for extension extendee + 0, // [0:15] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_init() } @@ -613,93 +771,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_init if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoadBalancerConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoadBalancerConfig_RoundRobin); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoadBalancerConfig_LeastRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoadBalancerConfig_Random); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoadBalancerConfig_RingHashConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoadBalancerConfig_RingHash); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoadBalancerConfig_Maglev); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes[0].OneofWrappers = []any{ (*LoadBalancerConfig_RoundRobin_)(nil), (*LoadBalancerConfig_LeastRequest_)(nil), (*LoadBalancerConfig_Random_)(nil), @@ -711,9 +783,9 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_init out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDesc)), NumEnums: 0, - NumMessages: 7, + NumMessages: 8, NumExtensions: 0, NumServices: 0, }, @@ -722,7 +794,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_init MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/load_balancer.pb.hash.go b/pkg/api/gloo.solo.io/v1/load_balancer.pb.hash.go index fb1dbcd00..2a1278398 100644 --- a/pkg/api/gloo.solo.io/v1/load_balancer.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/load_balancer.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *LoadBalancerConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,46 +43,89 @@ func (m *LoadBalancerConfig) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetHealthyPanicThreshold()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HealthyPanicThreshold")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHealthyPanicThreshold(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHealthyPanicThreshold(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HealthyPanicThreshold")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetUpdateMergeWindow()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UpdateMergeWindow")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUpdateMergeWindow(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UpdateMergeWindow")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetUseHostnameForHashing()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UseHostnameForHashing")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetUpdateMergeWindow(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetUseHostnameForHashing(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("UseHostnameForHashing")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } + err = binary.Write(hasher, binary.LittleEndian, m.GetCloseConnectionsOnHostSetChange()) + if err != nil { + return 0, err + } + switch m.Type.(type) { case *LoadBalancerConfig_RoundRobin_: if h, ok := interface{}(m.GetRoundRobin()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RoundRobin")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRoundRobin(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRoundRobin(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RoundRobin")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -87,14 +134,20 @@ func (m *LoadBalancerConfig) Hash(hasher hash.Hash64) (uint64, error) { case *LoadBalancerConfig_LeastRequest_: if h, ok := interface{}(m.GetLeastRequest()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LeastRequest")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetLeastRequest(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetLeastRequest(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("LeastRequest")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -103,14 +156,20 @@ func (m *LoadBalancerConfig) Hash(hasher hash.Hash64) (uint64, error) { case *LoadBalancerConfig_Random_: if h, ok := interface{}(m.GetRandom()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Random")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRandom(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRandom(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Random")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -119,14 +178,20 @@ func (m *LoadBalancerConfig) Hash(hasher hash.Hash64) (uint64, error) { case *LoadBalancerConfig_RingHash_: if h, ok := interface{}(m.GetRingHash()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RingHash")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRingHash(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRingHash(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RingHash")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -135,14 +200,20 @@ func (m *LoadBalancerConfig) Hash(hasher hash.Hash64) (uint64, error) { case *LoadBalancerConfig_Maglev_: if h, ok := interface{}(m.GetMaglev()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Maglev")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMaglev(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMaglev(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Maglev")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -155,14 +226,20 @@ func (m *LoadBalancerConfig) Hash(hasher hash.Hash64) (uint64, error) { case *LoadBalancerConfig_LocalityWeightedLbConfig: if h, ok := interface{}(m.GetLocalityWeightedLbConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LocalityWeightedLbConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetLocalityWeightedLbConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetLocalityWeightedLbConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("LocalityWeightedLbConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -174,6 +251,10 @@ func (m *LoadBalancerConfig) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *LoadBalancerConfig_RoundRobin) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -186,10 +267,34 @@ func (m *LoadBalancerConfig_RoundRobin) Hash(hasher hash.Hash64) (uint64, error) return 0, err } + if h, ok := interface{}(m.GetSlowStartConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SlowStartConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSlowStartConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SlowStartConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *LoadBalancerConfig_LeastRequest) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -207,10 +312,34 @@ func (m *LoadBalancerConfig_LeastRequest) Hash(hasher hash.Hash64) (uint64, erro return 0, err } + if h, ok := interface{}(m.GetSlowStartConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SlowStartConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSlowStartConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SlowStartConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *LoadBalancerConfig_Random) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -227,6 +356,10 @@ func (m *LoadBalancerConfig_Random) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *LoadBalancerConfig_RingHashConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -253,6 +386,10 @@ func (m *LoadBalancerConfig_RingHashConfig) Hash(hasher hash.Hash64) (uint64, er } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *LoadBalancerConfig_RingHash) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -266,14 +403,20 @@ func (m *LoadBalancerConfig_RingHash) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetRingHashConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RingHashConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRingHashConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRingHashConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RingHashConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -283,6 +426,10 @@ func (m *LoadBalancerConfig_RingHash) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *LoadBalancerConfig_Maglev) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -297,3 +444,83 @@ func (m *LoadBalancerConfig_Maglev) Hash(hasher hash.Hash64) (uint64, error) { return hasher.Sum64(), nil } + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *LoadBalancerConfig_SlowStartConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.LoadBalancerConfig_SlowStartConfig")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSlowStartWindow()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SlowStartWindow")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSlowStartWindow(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SlowStartWindow")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAggression()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Aggression")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAggression(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Aggression")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMinWeightPercent()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MinWeightPercent")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMinWeightPercent(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MinWeightPercent")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/load_balancer.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/load_balancer.pb.uniquehash.go new file mode 100644 index 000000000..ee65790f7 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/load_balancer.pb.uniquehash.go @@ -0,0 +1,532 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/load_balancer.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *LoadBalancerConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.LoadBalancerConfig")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHealthyPanicThreshold()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HealthyPanicThreshold")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHealthyPanicThreshold(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HealthyPanicThreshold")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetUpdateMergeWindow()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UpdateMergeWindow")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUpdateMergeWindow(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UpdateMergeWindow")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetUseHostnameForHashing()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UseHostnameForHashing")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUseHostnameForHashing(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UseHostnameForHashing")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("CloseConnectionsOnHostSetChange")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetCloseConnectionsOnHostSetChange()) + if err != nil { + return 0, err + } + + switch m.Type.(type) { + + case *LoadBalancerConfig_RoundRobin_: + + if h, ok := interface{}(m.GetRoundRobin()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RoundRobin")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRoundRobin(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RoundRobin")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *LoadBalancerConfig_LeastRequest_: + + if h, ok := interface{}(m.GetLeastRequest()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LeastRequest")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLeastRequest(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LeastRequest")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *LoadBalancerConfig_Random_: + + if h, ok := interface{}(m.GetRandom()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Random")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRandom(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Random")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *LoadBalancerConfig_RingHash_: + + if h, ok := interface{}(m.GetRingHash()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RingHash")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRingHash(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RingHash")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *LoadBalancerConfig_Maglev_: + + if h, ok := interface{}(m.GetMaglev()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Maglev")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaglev(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Maglev")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.LocalityConfig.(type) { + + case *LoadBalancerConfig_LocalityWeightedLbConfig: + + if h, ok := interface{}(m.GetLocalityWeightedLbConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LocalityWeightedLbConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLocalityWeightedLbConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LocalityWeightedLbConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *LoadBalancerConfig_RoundRobin) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.LoadBalancerConfig_RoundRobin")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSlowStartConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SlowStartConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSlowStartConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SlowStartConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *LoadBalancerConfig_LeastRequest) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.LoadBalancerConfig_LeastRequest")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ChoiceCount")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetChoiceCount()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSlowStartConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SlowStartConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSlowStartConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SlowStartConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *LoadBalancerConfig_Random) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.LoadBalancerConfig_Random")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *LoadBalancerConfig_RingHashConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.LoadBalancerConfig_RingHashConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MinimumRingSize")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMinimumRingSize()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MaximumRingSize")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMaximumRingSize()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *LoadBalancerConfig_RingHash) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.LoadBalancerConfig_RingHash")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRingHashConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RingHashConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRingHashConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RingHashConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *LoadBalancerConfig_Maglev) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.LoadBalancerConfig_Maglev")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *LoadBalancerConfig_SlowStartConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.LoadBalancerConfig_SlowStartConfig")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSlowStartWindow()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SlowStartWindow")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSlowStartWindow(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SlowStartWindow")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAggression()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Aggression")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAggression(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Aggression")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMinWeightPercent()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MinWeightPercent")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMinWeightPercent(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MinWeightPercent")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/mocks/clients.go b/pkg/api/gloo.solo.io/v1/mocks/clients.go index c3b36d39b..f4c9011ab 100644 --- a/pkg/api/gloo.solo.io/v1/mocks/clients.go +++ b/pkg/api/gloo.solo.io/v1/mocks/clients.go @@ -13,30 +13,30 @@ import ( client "sigs.k8s.io/controller-runtime/pkg/client" ) -// MockMulticlusterClientset is a mock of MulticlusterClientset interface +// MockMulticlusterClientset is a mock of MulticlusterClientset interface. type MockMulticlusterClientset struct { ctrl *gomock.Controller recorder *MockMulticlusterClientsetMockRecorder } -// MockMulticlusterClientsetMockRecorder is the mock recorder for MockMulticlusterClientset +// MockMulticlusterClientsetMockRecorder is the mock recorder for MockMulticlusterClientset. type MockMulticlusterClientsetMockRecorder struct { mock *MockMulticlusterClientset } -// NewMockMulticlusterClientset creates a new mock instance +// NewMockMulticlusterClientset creates a new mock instance. func NewMockMulticlusterClientset(ctrl *gomock.Controller) *MockMulticlusterClientset { mock := &MockMulticlusterClientset{ctrl: ctrl} mock.recorder = &MockMulticlusterClientsetMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterClientset) EXPECT() *MockMulticlusterClientsetMockRecorder { return m.recorder } -// Cluster mocks base method +// Cluster mocks base method. func (m *MockMulticlusterClientset) Cluster(cluster string) (v1.Clientset, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Cluster", cluster) @@ -45,64 +45,64 @@ func (m *MockMulticlusterClientset) Cluster(cluster string) (v1.Clientset, error return ret0, ret1 } -// Cluster indicates an expected call of Cluster +// Cluster indicates an expected call of Cluster. func (mr *MockMulticlusterClientsetMockRecorder) Cluster(cluster interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterClientset)(nil).Cluster), cluster) } -// MockClientset is a mock of Clientset interface +// MockClientset is a mock of Clientset interface. type MockClientset struct { ctrl *gomock.Controller recorder *MockClientsetMockRecorder } -// MockClientsetMockRecorder is the mock recorder for MockClientset +// MockClientsetMockRecorder is the mock recorder for MockClientset. type MockClientsetMockRecorder struct { mock *MockClientset } -// NewMockClientset creates a new mock instance +// NewMockClientset creates a new mock instance. func NewMockClientset(ctrl *gomock.Controller) *MockClientset { mock := &MockClientset{ctrl: ctrl} mock.recorder = &MockClientsetMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockClientset) EXPECT() *MockClientsetMockRecorder { return m.recorder } -// Settings mocks base method -func (m *MockClientset) Settings() v1.SettingsClient { +// Proxies mocks base method. +func (m *MockClientset) Proxies() v1.ProxyClient { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Settings") - ret0, _ := ret[0].(v1.SettingsClient) + ret := m.ctrl.Call(m, "Proxies") + ret0, _ := ret[0].(v1.ProxyClient) return ret0 } -// Settings indicates an expected call of Settings -func (mr *MockClientsetMockRecorder) Settings() *gomock.Call { +// Proxies indicates an expected call of Proxies. +func (mr *MockClientsetMockRecorder) Proxies() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Settings", reflect.TypeOf((*MockClientset)(nil).Settings)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Proxies", reflect.TypeOf((*MockClientset)(nil).Proxies)) } -// Upstreams mocks base method -func (m *MockClientset) Upstreams() v1.UpstreamClient { +// Settings mocks base method. +func (m *MockClientset) Settings() v1.SettingsClient { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Upstreams") - ret0, _ := ret[0].(v1.UpstreamClient) + ret := m.ctrl.Call(m, "Settings") + ret0, _ := ret[0].(v1.SettingsClient) return ret0 } -// Upstreams indicates an expected call of Upstreams -func (mr *MockClientsetMockRecorder) Upstreams() *gomock.Call { +// Settings indicates an expected call of Settings. +func (mr *MockClientsetMockRecorder) Settings() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Upstreams", reflect.TypeOf((*MockClientset)(nil).Upstreams)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Settings", reflect.TypeOf((*MockClientset)(nil).Settings)) } -// UpstreamGroups mocks base method +// UpstreamGroups mocks base method. func (m *MockClientset) UpstreamGroups() v1.UpstreamGroupClient { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "UpstreamGroups") @@ -110,50 +110,50 @@ func (m *MockClientset) UpstreamGroups() v1.UpstreamGroupClient { return ret0 } -// UpstreamGroups indicates an expected call of UpstreamGroups +// UpstreamGroups indicates an expected call of UpstreamGroups. func (mr *MockClientsetMockRecorder) UpstreamGroups() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpstreamGroups", reflect.TypeOf((*MockClientset)(nil).UpstreamGroups)) } -// Proxies mocks base method -func (m *MockClientset) Proxies() v1.ProxyClient { +// Upstreams mocks base method. +func (m *MockClientset) Upstreams() v1.UpstreamClient { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Proxies") - ret0, _ := ret[0].(v1.ProxyClient) + ret := m.ctrl.Call(m, "Upstreams") + ret0, _ := ret[0].(v1.UpstreamClient) return ret0 } -// Proxies indicates an expected call of Proxies -func (mr *MockClientsetMockRecorder) Proxies() *gomock.Call { +// Upstreams indicates an expected call of Upstreams. +func (mr *MockClientsetMockRecorder) Upstreams() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Proxies", reflect.TypeOf((*MockClientset)(nil).Proxies)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Upstreams", reflect.TypeOf((*MockClientset)(nil).Upstreams)) } -// MockSettingsReader is a mock of SettingsReader interface +// MockSettingsReader is a mock of SettingsReader interface. type MockSettingsReader struct { ctrl *gomock.Controller recorder *MockSettingsReaderMockRecorder } -// MockSettingsReaderMockRecorder is the mock recorder for MockSettingsReader +// MockSettingsReaderMockRecorder is the mock recorder for MockSettingsReader. type MockSettingsReaderMockRecorder struct { mock *MockSettingsReader } -// NewMockSettingsReader creates a new mock instance +// NewMockSettingsReader creates a new mock instance. func NewMockSettingsReader(ctrl *gomock.Controller) *MockSettingsReader { mock := &MockSettingsReader{ctrl: ctrl} mock.recorder = &MockSettingsReaderMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockSettingsReader) EXPECT() *MockSettingsReaderMockRecorder { return m.recorder } -// GetSettings mocks base method +// GetSettings mocks base method. func (m *MockSettingsReader) GetSettings(ctx context.Context, key client.ObjectKey) (*v1.Settings, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetSettings", ctx, key) @@ -162,13 +162,13 @@ func (m *MockSettingsReader) GetSettings(ctx context.Context, key client.ObjectK return ret0, ret1 } -// GetSettings indicates an expected call of GetSettings +// GetSettings indicates an expected call of GetSettings. func (mr *MockSettingsReaderMockRecorder) GetSettings(ctx, key interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSettings", reflect.TypeOf((*MockSettingsReader)(nil).GetSettings), ctx, key) } -// ListSettings mocks base method +// ListSettings mocks base method. func (m *MockSettingsReader) ListSettings(ctx context.Context, opts ...client.ListOption) (*v1.SettingsList, error) { m.ctrl.T.Helper() varargs := []interface{}{ctx} @@ -181,37 +181,37 @@ func (m *MockSettingsReader) ListSettings(ctx context.Context, opts ...client.Li return ret0, ret1 } -// ListSettings indicates an expected call of ListSettings +// ListSettings indicates an expected call of ListSettings. func (mr *MockSettingsReaderMockRecorder) ListSettings(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSettings", reflect.TypeOf((*MockSettingsReader)(nil).ListSettings), varargs...) } -// MockSettingsWriter is a mock of SettingsWriter interface +// MockSettingsWriter is a mock of SettingsWriter interface. type MockSettingsWriter struct { ctrl *gomock.Controller recorder *MockSettingsWriterMockRecorder } -// MockSettingsWriterMockRecorder is the mock recorder for MockSettingsWriter +// MockSettingsWriterMockRecorder is the mock recorder for MockSettingsWriter. type MockSettingsWriterMockRecorder struct { mock *MockSettingsWriter } -// NewMockSettingsWriter creates a new mock instance +// NewMockSettingsWriter creates a new mock instance. func NewMockSettingsWriter(ctrl *gomock.Controller) *MockSettingsWriter { mock := &MockSettingsWriter{ctrl: ctrl} mock.recorder = &MockSettingsWriterMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockSettingsWriter) EXPECT() *MockSettingsWriterMockRecorder { return m.recorder } -// CreateSettings mocks base method +// CreateSettings mocks base method. func (m *MockSettingsWriter) CreateSettings(ctx context.Context, obj *v1.Settings, opts ...client.CreateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} @@ -223,52 +223,52 @@ func (m *MockSettingsWriter) CreateSettings(ctx context.Context, obj *v1.Setting return ret0 } -// CreateSettings indicates an expected call of CreateSettings +// CreateSettings indicates an expected call of CreateSettings. func (mr *MockSettingsWriterMockRecorder) CreateSettings(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateSettings", reflect.TypeOf((*MockSettingsWriter)(nil).CreateSettings), varargs...) } -// DeleteSettings mocks base method -func (m *MockSettingsWriter) DeleteSettings(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { +// DeleteAllOfSettings mocks base method. +func (m *MockSettingsWriter) DeleteAllOfSettings(ctx context.Context, opts ...client.DeleteAllOfOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, key} + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteSettings", varargs...) + ret := m.ctrl.Call(m, "DeleteAllOfSettings", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteSettings indicates an expected call of DeleteSettings -func (mr *MockSettingsWriterMockRecorder) DeleteSettings(ctx, key interface{}, opts ...interface{}) *gomock.Call { +// DeleteAllOfSettings indicates an expected call of DeleteAllOfSettings. +func (mr *MockSettingsWriterMockRecorder) DeleteAllOfSettings(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, key}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteSettings", reflect.TypeOf((*MockSettingsWriter)(nil).DeleteSettings), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfSettings", reflect.TypeOf((*MockSettingsWriter)(nil).DeleteAllOfSettings), varargs...) } -// UpdateSettings mocks base method -func (m *MockSettingsWriter) UpdateSettings(ctx context.Context, obj *v1.Settings, opts ...client.UpdateOption) error { +// DeleteSettings mocks base method. +func (m *MockSettingsWriter) DeleteSettings(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx, key} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateSettings", varargs...) + ret := m.ctrl.Call(m, "DeleteSettings", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateSettings indicates an expected call of UpdateSettings -func (mr *MockSettingsWriterMockRecorder) UpdateSettings(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// DeleteSettings indicates an expected call of DeleteSettings. +func (mr *MockSettingsWriterMockRecorder) DeleteSettings(ctx, key interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateSettings", reflect.TypeOf((*MockSettingsWriter)(nil).UpdateSettings), varargs...) + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteSettings", reflect.TypeOf((*MockSettingsWriter)(nil).DeleteSettings), varargs...) } -// PatchSettings mocks base method +// PatchSettings mocks base method. func (m *MockSettingsWriter) PatchSettings(ctx context.Context, obj *v1.Settings, patch client.Patch, opts ...client.PatchOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj, patch} @@ -280,33 +280,33 @@ func (m *MockSettingsWriter) PatchSettings(ctx context.Context, obj *v1.Settings return ret0 } -// PatchSettings indicates an expected call of PatchSettings +// PatchSettings indicates an expected call of PatchSettings. func (mr *MockSettingsWriterMockRecorder) PatchSettings(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj, patch}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchSettings", reflect.TypeOf((*MockSettingsWriter)(nil).PatchSettings), varargs...) } -// DeleteAllOfSettings mocks base method -func (m *MockSettingsWriter) DeleteAllOfSettings(ctx context.Context, opts ...client.DeleteAllOfOption) error { +// UpdateSettings mocks base method. +func (m *MockSettingsWriter) UpdateSettings(ctx context.Context, obj *v1.Settings, opts ...client.UpdateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteAllOfSettings", varargs...) + ret := m.ctrl.Call(m, "UpdateSettings", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteAllOfSettings indicates an expected call of DeleteAllOfSettings -func (mr *MockSettingsWriterMockRecorder) DeleteAllOfSettings(ctx interface{}, opts ...interface{}) *gomock.Call { +// UpdateSettings indicates an expected call of UpdateSettings. +func (mr *MockSettingsWriterMockRecorder) UpdateSettings(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfSettings", reflect.TypeOf((*MockSettingsWriter)(nil).DeleteAllOfSettings), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateSettings", reflect.TypeOf((*MockSettingsWriter)(nil).UpdateSettings), varargs...) } -// UpsertSettings mocks base method +// UpsertSettings mocks base method. func (m *MockSettingsWriter) UpsertSettings(ctx context.Context, obj *v1.Settings, transitionFuncs ...v1.SettingsTransitionFunction) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} @@ -318,152 +318,136 @@ func (m *MockSettingsWriter) UpsertSettings(ctx context.Context, obj *v1.Setting return ret0 } -// UpsertSettings indicates an expected call of UpsertSettings +// UpsertSettings indicates an expected call of UpsertSettings. func (mr *MockSettingsWriterMockRecorder) UpsertSettings(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, transitionFuncs...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertSettings", reflect.TypeOf((*MockSettingsWriter)(nil).UpsertSettings), varargs...) } -// MockSettingsStatusWriter is a mock of SettingsStatusWriter interface +// MockSettingsStatusWriter is a mock of SettingsStatusWriter interface. type MockSettingsStatusWriter struct { ctrl *gomock.Controller recorder *MockSettingsStatusWriterMockRecorder } -// MockSettingsStatusWriterMockRecorder is the mock recorder for MockSettingsStatusWriter +// MockSettingsStatusWriterMockRecorder is the mock recorder for MockSettingsStatusWriter. type MockSettingsStatusWriterMockRecorder struct { mock *MockSettingsStatusWriter } -// NewMockSettingsStatusWriter creates a new mock instance +// NewMockSettingsStatusWriter creates a new mock instance. func NewMockSettingsStatusWriter(ctrl *gomock.Controller) *MockSettingsStatusWriter { mock := &MockSettingsStatusWriter{ctrl: ctrl} mock.recorder = &MockSettingsStatusWriterMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockSettingsStatusWriter) EXPECT() *MockSettingsStatusWriterMockRecorder { return m.recorder } -// UpdateSettingsStatus mocks base method -func (m *MockSettingsStatusWriter) UpdateSettingsStatus(ctx context.Context, obj *v1.Settings, opts ...client.UpdateOption) error { +// PatchSettingsStatus mocks base method. +func (m *MockSettingsStatusWriter) PatchSettingsStatus(ctx context.Context, obj *v1.Settings, patch client.Patch, opts ...client.SubResourcePatchOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateSettingsStatus", varargs...) + ret := m.ctrl.Call(m, "PatchSettingsStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateSettingsStatus indicates an expected call of UpdateSettingsStatus -func (mr *MockSettingsStatusWriterMockRecorder) UpdateSettingsStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// PatchSettingsStatus indicates an expected call of PatchSettingsStatus. +func (mr *MockSettingsStatusWriterMockRecorder) PatchSettingsStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateSettingsStatus", reflect.TypeOf((*MockSettingsStatusWriter)(nil).UpdateSettingsStatus), varargs...) + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchSettingsStatus", reflect.TypeOf((*MockSettingsStatusWriter)(nil).PatchSettingsStatus), varargs...) } -// PatchSettingsStatus mocks base method -func (m *MockSettingsStatusWriter) PatchSettingsStatus(ctx context.Context, obj *v1.Settings, patch client.Patch, opts ...client.PatchOption) error { +// UpdateSettingsStatus mocks base method. +func (m *MockSettingsStatusWriter) UpdateSettingsStatus(ctx context.Context, obj *v1.Settings, opts ...client.SubResourceUpdateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj, patch} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchSettingsStatus", varargs...) + ret := m.ctrl.Call(m, "UpdateSettingsStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchSettingsStatus indicates an expected call of PatchSettingsStatus -func (mr *MockSettingsStatusWriterMockRecorder) PatchSettingsStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// UpdateSettingsStatus indicates an expected call of UpdateSettingsStatus. +func (mr *MockSettingsStatusWriterMockRecorder) UpdateSettingsStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchSettingsStatus", reflect.TypeOf((*MockSettingsStatusWriter)(nil).PatchSettingsStatus), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateSettingsStatus", reflect.TypeOf((*MockSettingsStatusWriter)(nil).UpdateSettingsStatus), varargs...) } -// MockSettingsClient is a mock of SettingsClient interface +// MockSettingsClient is a mock of SettingsClient interface. type MockSettingsClient struct { ctrl *gomock.Controller recorder *MockSettingsClientMockRecorder } -// MockSettingsClientMockRecorder is the mock recorder for MockSettingsClient +// MockSettingsClientMockRecorder is the mock recorder for MockSettingsClient. type MockSettingsClientMockRecorder struct { mock *MockSettingsClient } -// NewMockSettingsClient creates a new mock instance +// NewMockSettingsClient creates a new mock instance. func NewMockSettingsClient(ctrl *gomock.Controller) *MockSettingsClient { mock := &MockSettingsClient{ctrl: ctrl} mock.recorder = &MockSettingsClientMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockSettingsClient) EXPECT() *MockSettingsClientMockRecorder { return m.recorder } -// GetSettings mocks base method -func (m *MockSettingsClient) GetSettings(ctx context.Context, key client.ObjectKey) (*v1.Settings, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetSettings", ctx, key) - ret0, _ := ret[0].(*v1.Settings) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetSettings indicates an expected call of GetSettings -func (mr *MockSettingsClientMockRecorder) GetSettings(ctx, key interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSettings", reflect.TypeOf((*MockSettingsClient)(nil).GetSettings), ctx, key) -} - -// ListSettings mocks base method -func (m *MockSettingsClient) ListSettings(ctx context.Context, opts ...client.ListOption) (*v1.SettingsList, error) { +// CreateSettings mocks base method. +func (m *MockSettingsClient) CreateSettings(ctx context.Context, obj *v1.Settings, opts ...client.CreateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "ListSettings", varargs...) - ret0, _ := ret[0].(*v1.SettingsList) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "CreateSettings", varargs...) + ret0, _ := ret[0].(error) + return ret0 } -// ListSettings indicates an expected call of ListSettings -func (mr *MockSettingsClientMockRecorder) ListSettings(ctx interface{}, opts ...interface{}) *gomock.Call { +// CreateSettings indicates an expected call of CreateSettings. +func (mr *MockSettingsClientMockRecorder) CreateSettings(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSettings", reflect.TypeOf((*MockSettingsClient)(nil).ListSettings), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateSettings", reflect.TypeOf((*MockSettingsClient)(nil).CreateSettings), varargs...) } -// CreateSettings mocks base method -func (m *MockSettingsClient) CreateSettings(ctx context.Context, obj *v1.Settings, opts ...client.CreateOption) error { +// DeleteAllOfSettings mocks base method. +func (m *MockSettingsClient) DeleteAllOfSettings(ctx context.Context, opts ...client.DeleteAllOfOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "CreateSettings", varargs...) + ret := m.ctrl.Call(m, "DeleteAllOfSettings", varargs...) ret0, _ := ret[0].(error) return ret0 } -// CreateSettings indicates an expected call of CreateSettings -func (mr *MockSettingsClientMockRecorder) CreateSettings(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// DeleteAllOfSettings indicates an expected call of DeleteAllOfSettings. +func (mr *MockSettingsClientMockRecorder) DeleteAllOfSettings(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateSettings", reflect.TypeOf((*MockSettingsClient)(nil).CreateSettings), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfSettings", reflect.TypeOf((*MockSettingsClient)(nil).DeleteAllOfSettings), varargs...) } -// DeleteSettings mocks base method +// DeleteSettings mocks base method. func (m *MockSettingsClient) DeleteSettings(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, key} @@ -475,33 +459,49 @@ func (m *MockSettingsClient) DeleteSettings(ctx context.Context, key client.Obje return ret0 } -// DeleteSettings indicates an expected call of DeleteSettings +// DeleteSettings indicates an expected call of DeleteSettings. func (mr *MockSettingsClientMockRecorder) DeleteSettings(ctx, key interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, key}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteSettings", reflect.TypeOf((*MockSettingsClient)(nil).DeleteSettings), varargs...) } -// UpdateSettings mocks base method -func (m *MockSettingsClient) UpdateSettings(ctx context.Context, obj *v1.Settings, opts ...client.UpdateOption) error { +// GetSettings mocks base method. +func (m *MockSettingsClient) GetSettings(ctx context.Context, key client.ObjectKey) (*v1.Settings, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + ret := m.ctrl.Call(m, "GetSettings", ctx, key) + ret0, _ := ret[0].(*v1.Settings) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetSettings indicates an expected call of GetSettings. +func (mr *MockSettingsClientMockRecorder) GetSettings(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSettings", reflect.TypeOf((*MockSettingsClient)(nil).GetSettings), ctx, key) +} + +// ListSettings mocks base method. +func (m *MockSettingsClient) ListSettings(ctx context.Context, opts ...client.ListOption) (*v1.SettingsList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateSettings", varargs...) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "ListSettings", varargs...) + ret0, _ := ret[0].(*v1.SettingsList) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// UpdateSettings indicates an expected call of UpdateSettings -func (mr *MockSettingsClientMockRecorder) UpdateSettings(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// ListSettings indicates an expected call of ListSettings. +func (mr *MockSettingsClientMockRecorder) ListSettings(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateSettings", reflect.TypeOf((*MockSettingsClient)(nil).UpdateSettings), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSettings", reflect.TypeOf((*MockSettingsClient)(nil).ListSettings), varargs...) } -// PatchSettings mocks base method +// PatchSettings mocks base method. func (m *MockSettingsClient) PatchSettings(ctx context.Context, obj *v1.Settings, patch client.Patch, opts ...client.PatchOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj, patch} @@ -513,53 +513,53 @@ func (m *MockSettingsClient) PatchSettings(ctx context.Context, obj *v1.Settings return ret0 } -// PatchSettings indicates an expected call of PatchSettings +// PatchSettings indicates an expected call of PatchSettings. func (mr *MockSettingsClientMockRecorder) PatchSettings(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj, patch}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchSettings", reflect.TypeOf((*MockSettingsClient)(nil).PatchSettings), varargs...) } -// DeleteAllOfSettings mocks base method -func (m *MockSettingsClient) DeleteAllOfSettings(ctx context.Context, opts ...client.DeleteAllOfOption) error { +// PatchSettingsStatus mocks base method. +func (m *MockSettingsClient) PatchSettingsStatus(ctx context.Context, obj *v1.Settings, patch client.Patch, opts ...client.SubResourcePatchOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteAllOfSettings", varargs...) + ret := m.ctrl.Call(m, "PatchSettingsStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteAllOfSettings indicates an expected call of DeleteAllOfSettings -func (mr *MockSettingsClientMockRecorder) DeleteAllOfSettings(ctx interface{}, opts ...interface{}) *gomock.Call { +// PatchSettingsStatus indicates an expected call of PatchSettingsStatus. +func (mr *MockSettingsClientMockRecorder) PatchSettingsStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfSettings", reflect.TypeOf((*MockSettingsClient)(nil).DeleteAllOfSettings), varargs...) + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchSettingsStatus", reflect.TypeOf((*MockSettingsClient)(nil).PatchSettingsStatus), varargs...) } -// UpsertSettings mocks base method -func (m *MockSettingsClient) UpsertSettings(ctx context.Context, obj *v1.Settings, transitionFuncs ...v1.SettingsTransitionFunction) error { +// UpdateSettings mocks base method. +func (m *MockSettingsClient) UpdateSettings(ctx context.Context, obj *v1.Settings, opts ...client.UpdateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} - for _, a := range transitionFuncs { + for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpsertSettings", varargs...) + ret := m.ctrl.Call(m, "UpdateSettings", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpsertSettings indicates an expected call of UpsertSettings -func (mr *MockSettingsClientMockRecorder) UpsertSettings(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { +// UpdateSettings indicates an expected call of UpdateSettings. +func (mr *MockSettingsClientMockRecorder) UpdateSettings(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, transitionFuncs...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertSettings", reflect.TypeOf((*MockSettingsClient)(nil).UpsertSettings), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateSettings", reflect.TypeOf((*MockSettingsClient)(nil).UpdateSettings), varargs...) } -// UpdateSettingsStatus mocks base method -func (m *MockSettingsClient) UpdateSettingsStatus(ctx context.Context, obj *v1.Settings, opts ...client.UpdateOption) error { +// UpdateSettingsStatus mocks base method. +func (m *MockSettingsClient) UpdateSettingsStatus(ctx context.Context, obj *v1.Settings, opts ...client.SubResourceUpdateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} for _, a := range opts { @@ -570,56 +570,56 @@ func (m *MockSettingsClient) UpdateSettingsStatus(ctx context.Context, obj *v1.S return ret0 } -// UpdateSettingsStatus indicates an expected call of UpdateSettingsStatus +// UpdateSettingsStatus indicates an expected call of UpdateSettingsStatus. func (mr *MockSettingsClientMockRecorder) UpdateSettingsStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateSettingsStatus", reflect.TypeOf((*MockSettingsClient)(nil).UpdateSettingsStatus), varargs...) } -// PatchSettingsStatus mocks base method -func (m *MockSettingsClient) PatchSettingsStatus(ctx context.Context, obj *v1.Settings, patch client.Patch, opts ...client.PatchOption) error { +// UpsertSettings mocks base method. +func (m *MockSettingsClient) UpsertSettings(ctx context.Context, obj *v1.Settings, transitionFuncs ...v1.SettingsTransitionFunction) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj, patch} - for _, a := range opts { + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchSettingsStatus", varargs...) + ret := m.ctrl.Call(m, "UpsertSettings", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchSettingsStatus indicates an expected call of PatchSettingsStatus -func (mr *MockSettingsClientMockRecorder) PatchSettingsStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// UpsertSettings indicates an expected call of UpsertSettings. +func (mr *MockSettingsClientMockRecorder) UpsertSettings(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchSettingsStatus", reflect.TypeOf((*MockSettingsClient)(nil).PatchSettingsStatus), varargs...) + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertSettings", reflect.TypeOf((*MockSettingsClient)(nil).UpsertSettings), varargs...) } -// MockMulticlusterSettingsClient is a mock of MulticlusterSettingsClient interface +// MockMulticlusterSettingsClient is a mock of MulticlusterSettingsClient interface. type MockMulticlusterSettingsClient struct { ctrl *gomock.Controller recorder *MockMulticlusterSettingsClientMockRecorder } -// MockMulticlusterSettingsClientMockRecorder is the mock recorder for MockMulticlusterSettingsClient +// MockMulticlusterSettingsClientMockRecorder is the mock recorder for MockMulticlusterSettingsClient. type MockMulticlusterSettingsClientMockRecorder struct { mock *MockMulticlusterSettingsClient } -// NewMockMulticlusterSettingsClient creates a new mock instance +// NewMockMulticlusterSettingsClient creates a new mock instance. func NewMockMulticlusterSettingsClient(ctrl *gomock.Controller) *MockMulticlusterSettingsClient { mock := &MockMulticlusterSettingsClient{ctrl: ctrl} mock.recorder = &MockMulticlusterSettingsClientMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterSettingsClient) EXPECT() *MockMulticlusterSettingsClientMockRecorder { return m.recorder } -// Cluster mocks base method +// Cluster mocks base method. func (m *MockMulticlusterSettingsClient) Cluster(cluster string) (v1.SettingsClient, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Cluster", cluster) @@ -628,36 +628,36 @@ func (m *MockMulticlusterSettingsClient) Cluster(cluster string) (v1.SettingsCli return ret0, ret1 } -// Cluster indicates an expected call of Cluster +// Cluster indicates an expected call of Cluster. func (mr *MockMulticlusterSettingsClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterSettingsClient)(nil).Cluster), cluster) } -// MockUpstreamReader is a mock of UpstreamReader interface +// MockUpstreamReader is a mock of UpstreamReader interface. type MockUpstreamReader struct { ctrl *gomock.Controller recorder *MockUpstreamReaderMockRecorder } -// MockUpstreamReaderMockRecorder is the mock recorder for MockUpstreamReader +// MockUpstreamReaderMockRecorder is the mock recorder for MockUpstreamReader. type MockUpstreamReaderMockRecorder struct { mock *MockUpstreamReader } -// NewMockUpstreamReader creates a new mock instance +// NewMockUpstreamReader creates a new mock instance. func NewMockUpstreamReader(ctrl *gomock.Controller) *MockUpstreamReader { mock := &MockUpstreamReader{ctrl: ctrl} mock.recorder = &MockUpstreamReaderMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockUpstreamReader) EXPECT() *MockUpstreamReaderMockRecorder { return m.recorder } -// GetUpstream mocks base method +// GetUpstream mocks base method. func (m *MockUpstreamReader) GetUpstream(ctx context.Context, key client.ObjectKey) (*v1.Upstream, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetUpstream", ctx, key) @@ -666,13 +666,13 @@ func (m *MockUpstreamReader) GetUpstream(ctx context.Context, key client.ObjectK return ret0, ret1 } -// GetUpstream indicates an expected call of GetUpstream +// GetUpstream indicates an expected call of GetUpstream. func (mr *MockUpstreamReaderMockRecorder) GetUpstream(ctx, key interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUpstream", reflect.TypeOf((*MockUpstreamReader)(nil).GetUpstream), ctx, key) } -// ListUpstream mocks base method +// ListUpstream mocks base method. func (m *MockUpstreamReader) ListUpstream(ctx context.Context, opts ...client.ListOption) (*v1.UpstreamList, error) { m.ctrl.T.Helper() varargs := []interface{}{ctx} @@ -685,37 +685,37 @@ func (m *MockUpstreamReader) ListUpstream(ctx context.Context, opts ...client.Li return ret0, ret1 } -// ListUpstream indicates an expected call of ListUpstream +// ListUpstream indicates an expected call of ListUpstream. func (mr *MockUpstreamReaderMockRecorder) ListUpstream(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListUpstream", reflect.TypeOf((*MockUpstreamReader)(nil).ListUpstream), varargs...) } -// MockUpstreamWriter is a mock of UpstreamWriter interface +// MockUpstreamWriter is a mock of UpstreamWriter interface. type MockUpstreamWriter struct { ctrl *gomock.Controller recorder *MockUpstreamWriterMockRecorder } -// MockUpstreamWriterMockRecorder is the mock recorder for MockUpstreamWriter +// MockUpstreamWriterMockRecorder is the mock recorder for MockUpstreamWriter. type MockUpstreamWriterMockRecorder struct { mock *MockUpstreamWriter } -// NewMockUpstreamWriter creates a new mock instance +// NewMockUpstreamWriter creates a new mock instance. func NewMockUpstreamWriter(ctrl *gomock.Controller) *MockUpstreamWriter { mock := &MockUpstreamWriter{ctrl: ctrl} mock.recorder = &MockUpstreamWriterMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockUpstreamWriter) EXPECT() *MockUpstreamWriterMockRecorder { return m.recorder } -// CreateUpstream mocks base method +// CreateUpstream mocks base method. func (m *MockUpstreamWriter) CreateUpstream(ctx context.Context, obj *v1.Upstream, opts ...client.CreateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} @@ -727,52 +727,52 @@ func (m *MockUpstreamWriter) CreateUpstream(ctx context.Context, obj *v1.Upstrea return ret0 } -// CreateUpstream indicates an expected call of CreateUpstream +// CreateUpstream indicates an expected call of CreateUpstream. func (mr *MockUpstreamWriterMockRecorder) CreateUpstream(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateUpstream", reflect.TypeOf((*MockUpstreamWriter)(nil).CreateUpstream), varargs...) } -// DeleteUpstream mocks base method -func (m *MockUpstreamWriter) DeleteUpstream(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { +// DeleteAllOfUpstream mocks base method. +func (m *MockUpstreamWriter) DeleteAllOfUpstream(ctx context.Context, opts ...client.DeleteAllOfOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, key} + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteUpstream", varargs...) + ret := m.ctrl.Call(m, "DeleteAllOfUpstream", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteUpstream indicates an expected call of DeleteUpstream -func (mr *MockUpstreamWriterMockRecorder) DeleteUpstream(ctx, key interface{}, opts ...interface{}) *gomock.Call { +// DeleteAllOfUpstream indicates an expected call of DeleteAllOfUpstream. +func (mr *MockUpstreamWriterMockRecorder) DeleteAllOfUpstream(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, key}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteUpstream", reflect.TypeOf((*MockUpstreamWriter)(nil).DeleteUpstream), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfUpstream", reflect.TypeOf((*MockUpstreamWriter)(nil).DeleteAllOfUpstream), varargs...) } -// UpdateUpstream mocks base method -func (m *MockUpstreamWriter) UpdateUpstream(ctx context.Context, obj *v1.Upstream, opts ...client.UpdateOption) error { +// DeleteUpstream mocks base method. +func (m *MockUpstreamWriter) DeleteUpstream(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx, key} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateUpstream", varargs...) + ret := m.ctrl.Call(m, "DeleteUpstream", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateUpstream indicates an expected call of UpdateUpstream -func (mr *MockUpstreamWriterMockRecorder) UpdateUpstream(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// DeleteUpstream indicates an expected call of DeleteUpstream. +func (mr *MockUpstreamWriterMockRecorder) DeleteUpstream(ctx, key interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUpstream", reflect.TypeOf((*MockUpstreamWriter)(nil).UpdateUpstream), varargs...) + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteUpstream", reflect.TypeOf((*MockUpstreamWriter)(nil).DeleteUpstream), varargs...) } -// PatchUpstream mocks base method +// PatchUpstream mocks base method. func (m *MockUpstreamWriter) PatchUpstream(ctx context.Context, obj *v1.Upstream, patch client.Patch, opts ...client.PatchOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj, patch} @@ -784,33 +784,33 @@ func (m *MockUpstreamWriter) PatchUpstream(ctx context.Context, obj *v1.Upstream return ret0 } -// PatchUpstream indicates an expected call of PatchUpstream +// PatchUpstream indicates an expected call of PatchUpstream. func (mr *MockUpstreamWriterMockRecorder) PatchUpstream(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj, patch}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchUpstream", reflect.TypeOf((*MockUpstreamWriter)(nil).PatchUpstream), varargs...) } -// DeleteAllOfUpstream mocks base method -func (m *MockUpstreamWriter) DeleteAllOfUpstream(ctx context.Context, opts ...client.DeleteAllOfOption) error { +// UpdateUpstream mocks base method. +func (m *MockUpstreamWriter) UpdateUpstream(ctx context.Context, obj *v1.Upstream, opts ...client.UpdateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteAllOfUpstream", varargs...) + ret := m.ctrl.Call(m, "UpdateUpstream", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteAllOfUpstream indicates an expected call of DeleteAllOfUpstream -func (mr *MockUpstreamWriterMockRecorder) DeleteAllOfUpstream(ctx interface{}, opts ...interface{}) *gomock.Call { +// UpdateUpstream indicates an expected call of UpdateUpstream. +func (mr *MockUpstreamWriterMockRecorder) UpdateUpstream(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfUpstream", reflect.TypeOf((*MockUpstreamWriter)(nil).DeleteAllOfUpstream), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUpstream", reflect.TypeOf((*MockUpstreamWriter)(nil).UpdateUpstream), varargs...) } -// UpsertUpstream mocks base method +// UpsertUpstream mocks base method. func (m *MockUpstreamWriter) UpsertUpstream(ctx context.Context, obj *v1.Upstream, transitionFuncs ...v1.UpstreamTransitionFunction) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} @@ -822,152 +822,136 @@ func (m *MockUpstreamWriter) UpsertUpstream(ctx context.Context, obj *v1.Upstrea return ret0 } -// UpsertUpstream indicates an expected call of UpsertUpstream +// UpsertUpstream indicates an expected call of UpsertUpstream. func (mr *MockUpstreamWriterMockRecorder) UpsertUpstream(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, transitionFuncs...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertUpstream", reflect.TypeOf((*MockUpstreamWriter)(nil).UpsertUpstream), varargs...) } -// MockUpstreamStatusWriter is a mock of UpstreamStatusWriter interface +// MockUpstreamStatusWriter is a mock of UpstreamStatusWriter interface. type MockUpstreamStatusWriter struct { ctrl *gomock.Controller recorder *MockUpstreamStatusWriterMockRecorder } -// MockUpstreamStatusWriterMockRecorder is the mock recorder for MockUpstreamStatusWriter +// MockUpstreamStatusWriterMockRecorder is the mock recorder for MockUpstreamStatusWriter. type MockUpstreamStatusWriterMockRecorder struct { mock *MockUpstreamStatusWriter } -// NewMockUpstreamStatusWriter creates a new mock instance +// NewMockUpstreamStatusWriter creates a new mock instance. func NewMockUpstreamStatusWriter(ctrl *gomock.Controller) *MockUpstreamStatusWriter { mock := &MockUpstreamStatusWriter{ctrl: ctrl} mock.recorder = &MockUpstreamStatusWriterMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockUpstreamStatusWriter) EXPECT() *MockUpstreamStatusWriterMockRecorder { return m.recorder } -// UpdateUpstreamStatus mocks base method -func (m *MockUpstreamStatusWriter) UpdateUpstreamStatus(ctx context.Context, obj *v1.Upstream, opts ...client.UpdateOption) error { +// PatchUpstreamStatus mocks base method. +func (m *MockUpstreamStatusWriter) PatchUpstreamStatus(ctx context.Context, obj *v1.Upstream, patch client.Patch, opts ...client.SubResourcePatchOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateUpstreamStatus", varargs...) + ret := m.ctrl.Call(m, "PatchUpstreamStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateUpstreamStatus indicates an expected call of UpdateUpstreamStatus -func (mr *MockUpstreamStatusWriterMockRecorder) UpdateUpstreamStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// PatchUpstreamStatus indicates an expected call of PatchUpstreamStatus. +func (mr *MockUpstreamStatusWriterMockRecorder) PatchUpstreamStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUpstreamStatus", reflect.TypeOf((*MockUpstreamStatusWriter)(nil).UpdateUpstreamStatus), varargs...) + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchUpstreamStatus", reflect.TypeOf((*MockUpstreamStatusWriter)(nil).PatchUpstreamStatus), varargs...) } -// PatchUpstreamStatus mocks base method -func (m *MockUpstreamStatusWriter) PatchUpstreamStatus(ctx context.Context, obj *v1.Upstream, patch client.Patch, opts ...client.PatchOption) error { +// UpdateUpstreamStatus mocks base method. +func (m *MockUpstreamStatusWriter) UpdateUpstreamStatus(ctx context.Context, obj *v1.Upstream, opts ...client.SubResourceUpdateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj, patch} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchUpstreamStatus", varargs...) + ret := m.ctrl.Call(m, "UpdateUpstreamStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchUpstreamStatus indicates an expected call of PatchUpstreamStatus -func (mr *MockUpstreamStatusWriterMockRecorder) PatchUpstreamStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// UpdateUpstreamStatus indicates an expected call of UpdateUpstreamStatus. +func (mr *MockUpstreamStatusWriterMockRecorder) UpdateUpstreamStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchUpstreamStatus", reflect.TypeOf((*MockUpstreamStatusWriter)(nil).PatchUpstreamStatus), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUpstreamStatus", reflect.TypeOf((*MockUpstreamStatusWriter)(nil).UpdateUpstreamStatus), varargs...) } -// MockUpstreamClient is a mock of UpstreamClient interface +// MockUpstreamClient is a mock of UpstreamClient interface. type MockUpstreamClient struct { ctrl *gomock.Controller recorder *MockUpstreamClientMockRecorder } -// MockUpstreamClientMockRecorder is the mock recorder for MockUpstreamClient +// MockUpstreamClientMockRecorder is the mock recorder for MockUpstreamClient. type MockUpstreamClientMockRecorder struct { mock *MockUpstreamClient } -// NewMockUpstreamClient creates a new mock instance +// NewMockUpstreamClient creates a new mock instance. func NewMockUpstreamClient(ctrl *gomock.Controller) *MockUpstreamClient { mock := &MockUpstreamClient{ctrl: ctrl} mock.recorder = &MockUpstreamClientMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockUpstreamClient) EXPECT() *MockUpstreamClientMockRecorder { return m.recorder } -// GetUpstream mocks base method -func (m *MockUpstreamClient) GetUpstream(ctx context.Context, key client.ObjectKey) (*v1.Upstream, error) { +// CreateUpstream mocks base method. +func (m *MockUpstreamClient) CreateUpstream(ctx context.Context, obj *v1.Upstream, opts ...client.CreateOption) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetUpstream", ctx, key) - ret0, _ := ret[0].(*v1.Upstream) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetUpstream indicates an expected call of GetUpstream -func (mr *MockUpstreamClientMockRecorder) GetUpstream(ctx, key interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUpstream", reflect.TypeOf((*MockUpstreamClient)(nil).GetUpstream), ctx, key) -} - -// ListUpstream mocks base method -func (m *MockUpstreamClient) ListUpstream(ctx context.Context, opts ...client.ListOption) (*v1.UpstreamList, error) { - m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "ListUpstream", varargs...) - ret0, _ := ret[0].(*v1.UpstreamList) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "CreateUpstream", varargs...) + ret0, _ := ret[0].(error) + return ret0 } -// ListUpstream indicates an expected call of ListUpstream -func (mr *MockUpstreamClientMockRecorder) ListUpstream(ctx interface{}, opts ...interface{}) *gomock.Call { +// CreateUpstream indicates an expected call of CreateUpstream. +func (mr *MockUpstreamClientMockRecorder) CreateUpstream(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListUpstream", reflect.TypeOf((*MockUpstreamClient)(nil).ListUpstream), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateUpstream", reflect.TypeOf((*MockUpstreamClient)(nil).CreateUpstream), varargs...) } -// CreateUpstream mocks base method -func (m *MockUpstreamClient) CreateUpstream(ctx context.Context, obj *v1.Upstream, opts ...client.CreateOption) error { +// DeleteAllOfUpstream mocks base method. +func (m *MockUpstreamClient) DeleteAllOfUpstream(ctx context.Context, opts ...client.DeleteAllOfOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "CreateUpstream", varargs...) + ret := m.ctrl.Call(m, "DeleteAllOfUpstream", varargs...) ret0, _ := ret[0].(error) return ret0 } -// CreateUpstream indicates an expected call of CreateUpstream -func (mr *MockUpstreamClientMockRecorder) CreateUpstream(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// DeleteAllOfUpstream indicates an expected call of DeleteAllOfUpstream. +func (mr *MockUpstreamClientMockRecorder) DeleteAllOfUpstream(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateUpstream", reflect.TypeOf((*MockUpstreamClient)(nil).CreateUpstream), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfUpstream", reflect.TypeOf((*MockUpstreamClient)(nil).DeleteAllOfUpstream), varargs...) } -// DeleteUpstream mocks base method +// DeleteUpstream mocks base method. func (m *MockUpstreamClient) DeleteUpstream(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, key} @@ -979,33 +963,49 @@ func (m *MockUpstreamClient) DeleteUpstream(ctx context.Context, key client.Obje return ret0 } -// DeleteUpstream indicates an expected call of DeleteUpstream +// DeleteUpstream indicates an expected call of DeleteUpstream. func (mr *MockUpstreamClientMockRecorder) DeleteUpstream(ctx, key interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, key}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteUpstream", reflect.TypeOf((*MockUpstreamClient)(nil).DeleteUpstream), varargs...) } -// UpdateUpstream mocks base method -func (m *MockUpstreamClient) UpdateUpstream(ctx context.Context, obj *v1.Upstream, opts ...client.UpdateOption) error { +// GetUpstream mocks base method. +func (m *MockUpstreamClient) GetUpstream(ctx context.Context, key client.ObjectKey) (*v1.Upstream, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + ret := m.ctrl.Call(m, "GetUpstream", ctx, key) + ret0, _ := ret[0].(*v1.Upstream) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetUpstream indicates an expected call of GetUpstream. +func (mr *MockUpstreamClientMockRecorder) GetUpstream(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUpstream", reflect.TypeOf((*MockUpstreamClient)(nil).GetUpstream), ctx, key) +} + +// ListUpstream mocks base method. +func (m *MockUpstreamClient) ListUpstream(ctx context.Context, opts ...client.ListOption) (*v1.UpstreamList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateUpstream", varargs...) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "ListUpstream", varargs...) + ret0, _ := ret[0].(*v1.UpstreamList) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// UpdateUpstream indicates an expected call of UpdateUpstream -func (mr *MockUpstreamClientMockRecorder) UpdateUpstream(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// ListUpstream indicates an expected call of ListUpstream. +func (mr *MockUpstreamClientMockRecorder) ListUpstream(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUpstream", reflect.TypeOf((*MockUpstreamClient)(nil).UpdateUpstream), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListUpstream", reflect.TypeOf((*MockUpstreamClient)(nil).ListUpstream), varargs...) } -// PatchUpstream mocks base method +// PatchUpstream mocks base method. func (m *MockUpstreamClient) PatchUpstream(ctx context.Context, obj *v1.Upstream, patch client.Patch, opts ...client.PatchOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj, patch} @@ -1017,53 +1017,53 @@ func (m *MockUpstreamClient) PatchUpstream(ctx context.Context, obj *v1.Upstream return ret0 } -// PatchUpstream indicates an expected call of PatchUpstream +// PatchUpstream indicates an expected call of PatchUpstream. func (mr *MockUpstreamClientMockRecorder) PatchUpstream(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj, patch}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchUpstream", reflect.TypeOf((*MockUpstreamClient)(nil).PatchUpstream), varargs...) } -// DeleteAllOfUpstream mocks base method -func (m *MockUpstreamClient) DeleteAllOfUpstream(ctx context.Context, opts ...client.DeleteAllOfOption) error { +// PatchUpstreamStatus mocks base method. +func (m *MockUpstreamClient) PatchUpstreamStatus(ctx context.Context, obj *v1.Upstream, patch client.Patch, opts ...client.SubResourcePatchOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteAllOfUpstream", varargs...) + ret := m.ctrl.Call(m, "PatchUpstreamStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteAllOfUpstream indicates an expected call of DeleteAllOfUpstream -func (mr *MockUpstreamClientMockRecorder) DeleteAllOfUpstream(ctx interface{}, opts ...interface{}) *gomock.Call { +// PatchUpstreamStatus indicates an expected call of PatchUpstreamStatus. +func (mr *MockUpstreamClientMockRecorder) PatchUpstreamStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfUpstream", reflect.TypeOf((*MockUpstreamClient)(nil).DeleteAllOfUpstream), varargs...) + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchUpstreamStatus", reflect.TypeOf((*MockUpstreamClient)(nil).PatchUpstreamStatus), varargs...) } -// UpsertUpstream mocks base method -func (m *MockUpstreamClient) UpsertUpstream(ctx context.Context, obj *v1.Upstream, transitionFuncs ...v1.UpstreamTransitionFunction) error { +// UpdateUpstream mocks base method. +func (m *MockUpstreamClient) UpdateUpstream(ctx context.Context, obj *v1.Upstream, opts ...client.UpdateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} - for _, a := range transitionFuncs { + for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpsertUpstream", varargs...) + ret := m.ctrl.Call(m, "UpdateUpstream", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpsertUpstream indicates an expected call of UpsertUpstream -func (mr *MockUpstreamClientMockRecorder) UpsertUpstream(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { +// UpdateUpstream indicates an expected call of UpdateUpstream. +func (mr *MockUpstreamClientMockRecorder) UpdateUpstream(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, transitionFuncs...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertUpstream", reflect.TypeOf((*MockUpstreamClient)(nil).UpsertUpstream), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUpstream", reflect.TypeOf((*MockUpstreamClient)(nil).UpdateUpstream), varargs...) } -// UpdateUpstreamStatus mocks base method -func (m *MockUpstreamClient) UpdateUpstreamStatus(ctx context.Context, obj *v1.Upstream, opts ...client.UpdateOption) error { +// UpdateUpstreamStatus mocks base method. +func (m *MockUpstreamClient) UpdateUpstreamStatus(ctx context.Context, obj *v1.Upstream, opts ...client.SubResourceUpdateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} for _, a := range opts { @@ -1074,56 +1074,56 @@ func (m *MockUpstreamClient) UpdateUpstreamStatus(ctx context.Context, obj *v1.U return ret0 } -// UpdateUpstreamStatus indicates an expected call of UpdateUpstreamStatus +// UpdateUpstreamStatus indicates an expected call of UpdateUpstreamStatus. func (mr *MockUpstreamClientMockRecorder) UpdateUpstreamStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUpstreamStatus", reflect.TypeOf((*MockUpstreamClient)(nil).UpdateUpstreamStatus), varargs...) } -// PatchUpstreamStatus mocks base method -func (m *MockUpstreamClient) PatchUpstreamStatus(ctx context.Context, obj *v1.Upstream, patch client.Patch, opts ...client.PatchOption) error { +// UpsertUpstream mocks base method. +func (m *MockUpstreamClient) UpsertUpstream(ctx context.Context, obj *v1.Upstream, transitionFuncs ...v1.UpstreamTransitionFunction) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj, patch} - for _, a := range opts { + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchUpstreamStatus", varargs...) + ret := m.ctrl.Call(m, "UpsertUpstream", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchUpstreamStatus indicates an expected call of PatchUpstreamStatus -func (mr *MockUpstreamClientMockRecorder) PatchUpstreamStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// UpsertUpstream indicates an expected call of UpsertUpstream. +func (mr *MockUpstreamClientMockRecorder) UpsertUpstream(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchUpstreamStatus", reflect.TypeOf((*MockUpstreamClient)(nil).PatchUpstreamStatus), varargs...) + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertUpstream", reflect.TypeOf((*MockUpstreamClient)(nil).UpsertUpstream), varargs...) } -// MockMulticlusterUpstreamClient is a mock of MulticlusterUpstreamClient interface +// MockMulticlusterUpstreamClient is a mock of MulticlusterUpstreamClient interface. type MockMulticlusterUpstreamClient struct { ctrl *gomock.Controller recorder *MockMulticlusterUpstreamClientMockRecorder } -// MockMulticlusterUpstreamClientMockRecorder is the mock recorder for MockMulticlusterUpstreamClient +// MockMulticlusterUpstreamClientMockRecorder is the mock recorder for MockMulticlusterUpstreamClient. type MockMulticlusterUpstreamClientMockRecorder struct { mock *MockMulticlusterUpstreamClient } -// NewMockMulticlusterUpstreamClient creates a new mock instance +// NewMockMulticlusterUpstreamClient creates a new mock instance. func NewMockMulticlusterUpstreamClient(ctrl *gomock.Controller) *MockMulticlusterUpstreamClient { mock := &MockMulticlusterUpstreamClient{ctrl: ctrl} mock.recorder = &MockMulticlusterUpstreamClientMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterUpstreamClient) EXPECT() *MockMulticlusterUpstreamClientMockRecorder { return m.recorder } -// Cluster mocks base method +// Cluster mocks base method. func (m *MockMulticlusterUpstreamClient) Cluster(cluster string) (v1.UpstreamClient, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Cluster", cluster) @@ -1132,36 +1132,36 @@ func (m *MockMulticlusterUpstreamClient) Cluster(cluster string) (v1.UpstreamCli return ret0, ret1 } -// Cluster indicates an expected call of Cluster +// Cluster indicates an expected call of Cluster. func (mr *MockMulticlusterUpstreamClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterUpstreamClient)(nil).Cluster), cluster) } -// MockUpstreamGroupReader is a mock of UpstreamGroupReader interface +// MockUpstreamGroupReader is a mock of UpstreamGroupReader interface. type MockUpstreamGroupReader struct { ctrl *gomock.Controller recorder *MockUpstreamGroupReaderMockRecorder } -// MockUpstreamGroupReaderMockRecorder is the mock recorder for MockUpstreamGroupReader +// MockUpstreamGroupReaderMockRecorder is the mock recorder for MockUpstreamGroupReader. type MockUpstreamGroupReaderMockRecorder struct { mock *MockUpstreamGroupReader } -// NewMockUpstreamGroupReader creates a new mock instance +// NewMockUpstreamGroupReader creates a new mock instance. func NewMockUpstreamGroupReader(ctrl *gomock.Controller) *MockUpstreamGroupReader { mock := &MockUpstreamGroupReader{ctrl: ctrl} mock.recorder = &MockUpstreamGroupReaderMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockUpstreamGroupReader) EXPECT() *MockUpstreamGroupReaderMockRecorder { return m.recorder } -// GetUpstreamGroup mocks base method +// GetUpstreamGroup mocks base method. func (m *MockUpstreamGroupReader) GetUpstreamGroup(ctx context.Context, key client.ObjectKey) (*v1.UpstreamGroup, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetUpstreamGroup", ctx, key) @@ -1170,13 +1170,13 @@ func (m *MockUpstreamGroupReader) GetUpstreamGroup(ctx context.Context, key clie return ret0, ret1 } -// GetUpstreamGroup indicates an expected call of GetUpstreamGroup +// GetUpstreamGroup indicates an expected call of GetUpstreamGroup. func (mr *MockUpstreamGroupReaderMockRecorder) GetUpstreamGroup(ctx, key interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupReader)(nil).GetUpstreamGroup), ctx, key) } -// ListUpstreamGroup mocks base method +// ListUpstreamGroup mocks base method. func (m *MockUpstreamGroupReader) ListUpstreamGroup(ctx context.Context, opts ...client.ListOption) (*v1.UpstreamGroupList, error) { m.ctrl.T.Helper() varargs := []interface{}{ctx} @@ -1189,37 +1189,37 @@ func (m *MockUpstreamGroupReader) ListUpstreamGroup(ctx context.Context, opts .. return ret0, ret1 } -// ListUpstreamGroup indicates an expected call of ListUpstreamGroup +// ListUpstreamGroup indicates an expected call of ListUpstreamGroup. func (mr *MockUpstreamGroupReaderMockRecorder) ListUpstreamGroup(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupReader)(nil).ListUpstreamGroup), varargs...) } -// MockUpstreamGroupWriter is a mock of UpstreamGroupWriter interface +// MockUpstreamGroupWriter is a mock of UpstreamGroupWriter interface. type MockUpstreamGroupWriter struct { ctrl *gomock.Controller recorder *MockUpstreamGroupWriterMockRecorder } -// MockUpstreamGroupWriterMockRecorder is the mock recorder for MockUpstreamGroupWriter +// MockUpstreamGroupWriterMockRecorder is the mock recorder for MockUpstreamGroupWriter. type MockUpstreamGroupWriterMockRecorder struct { mock *MockUpstreamGroupWriter } -// NewMockUpstreamGroupWriter creates a new mock instance +// NewMockUpstreamGroupWriter creates a new mock instance. func NewMockUpstreamGroupWriter(ctrl *gomock.Controller) *MockUpstreamGroupWriter { mock := &MockUpstreamGroupWriter{ctrl: ctrl} mock.recorder = &MockUpstreamGroupWriterMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockUpstreamGroupWriter) EXPECT() *MockUpstreamGroupWriterMockRecorder { return m.recorder } -// CreateUpstreamGroup mocks base method +// CreateUpstreamGroup mocks base method. func (m *MockUpstreamGroupWriter) CreateUpstreamGroup(ctx context.Context, obj *v1.UpstreamGroup, opts ...client.CreateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} @@ -1231,52 +1231,52 @@ func (m *MockUpstreamGroupWriter) CreateUpstreamGroup(ctx context.Context, obj * return ret0 } -// CreateUpstreamGroup indicates an expected call of CreateUpstreamGroup +// CreateUpstreamGroup indicates an expected call of CreateUpstreamGroup. func (mr *MockUpstreamGroupWriterMockRecorder) CreateUpstreamGroup(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupWriter)(nil).CreateUpstreamGroup), varargs...) } -// DeleteUpstreamGroup mocks base method -func (m *MockUpstreamGroupWriter) DeleteUpstreamGroup(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { +// DeleteAllOfUpstreamGroup mocks base method. +func (m *MockUpstreamGroupWriter) DeleteAllOfUpstreamGroup(ctx context.Context, opts ...client.DeleteAllOfOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, key} + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteUpstreamGroup", varargs...) + ret := m.ctrl.Call(m, "DeleteAllOfUpstreamGroup", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteUpstreamGroup indicates an expected call of DeleteUpstreamGroup -func (mr *MockUpstreamGroupWriterMockRecorder) DeleteUpstreamGroup(ctx, key interface{}, opts ...interface{}) *gomock.Call { +// DeleteAllOfUpstreamGroup indicates an expected call of DeleteAllOfUpstreamGroup. +func (mr *MockUpstreamGroupWriterMockRecorder) DeleteAllOfUpstreamGroup(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, key}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupWriter)(nil).DeleteUpstreamGroup), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupWriter)(nil).DeleteAllOfUpstreamGroup), varargs...) } -// UpdateUpstreamGroup mocks base method -func (m *MockUpstreamGroupWriter) UpdateUpstreamGroup(ctx context.Context, obj *v1.UpstreamGroup, opts ...client.UpdateOption) error { +// DeleteUpstreamGroup mocks base method. +func (m *MockUpstreamGroupWriter) DeleteUpstreamGroup(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx, key} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateUpstreamGroup", varargs...) + ret := m.ctrl.Call(m, "DeleteUpstreamGroup", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateUpstreamGroup indicates an expected call of UpdateUpstreamGroup -func (mr *MockUpstreamGroupWriterMockRecorder) UpdateUpstreamGroup(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// DeleteUpstreamGroup indicates an expected call of DeleteUpstreamGroup. +func (mr *MockUpstreamGroupWriterMockRecorder) DeleteUpstreamGroup(ctx, key interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupWriter)(nil).UpdateUpstreamGroup), varargs...) + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupWriter)(nil).DeleteUpstreamGroup), varargs...) } -// PatchUpstreamGroup mocks base method +// PatchUpstreamGroup mocks base method. func (m *MockUpstreamGroupWriter) PatchUpstreamGroup(ctx context.Context, obj *v1.UpstreamGroup, patch client.Patch, opts ...client.PatchOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj, patch} @@ -1288,33 +1288,33 @@ func (m *MockUpstreamGroupWriter) PatchUpstreamGroup(ctx context.Context, obj *v return ret0 } -// PatchUpstreamGroup indicates an expected call of PatchUpstreamGroup +// PatchUpstreamGroup indicates an expected call of PatchUpstreamGroup. func (mr *MockUpstreamGroupWriterMockRecorder) PatchUpstreamGroup(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj, patch}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupWriter)(nil).PatchUpstreamGroup), varargs...) } -// DeleteAllOfUpstreamGroup mocks base method -func (m *MockUpstreamGroupWriter) DeleteAllOfUpstreamGroup(ctx context.Context, opts ...client.DeleteAllOfOption) error { +// UpdateUpstreamGroup mocks base method. +func (m *MockUpstreamGroupWriter) UpdateUpstreamGroup(ctx context.Context, obj *v1.UpstreamGroup, opts ...client.UpdateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteAllOfUpstreamGroup", varargs...) + ret := m.ctrl.Call(m, "UpdateUpstreamGroup", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteAllOfUpstreamGroup indicates an expected call of DeleteAllOfUpstreamGroup -func (mr *MockUpstreamGroupWriterMockRecorder) DeleteAllOfUpstreamGroup(ctx interface{}, opts ...interface{}) *gomock.Call { +// UpdateUpstreamGroup indicates an expected call of UpdateUpstreamGroup. +func (mr *MockUpstreamGroupWriterMockRecorder) UpdateUpstreamGroup(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupWriter)(nil).DeleteAllOfUpstreamGroup), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupWriter)(nil).UpdateUpstreamGroup), varargs...) } -// UpsertUpstreamGroup mocks base method +// UpsertUpstreamGroup mocks base method. func (m *MockUpstreamGroupWriter) UpsertUpstreamGroup(ctx context.Context, obj *v1.UpstreamGroup, transitionFuncs ...v1.UpstreamGroupTransitionFunction) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} @@ -1326,152 +1326,136 @@ func (m *MockUpstreamGroupWriter) UpsertUpstreamGroup(ctx context.Context, obj * return ret0 } -// UpsertUpstreamGroup indicates an expected call of UpsertUpstreamGroup +// UpsertUpstreamGroup indicates an expected call of UpsertUpstreamGroup. func (mr *MockUpstreamGroupWriterMockRecorder) UpsertUpstreamGroup(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, transitionFuncs...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupWriter)(nil).UpsertUpstreamGroup), varargs...) } -// MockUpstreamGroupStatusWriter is a mock of UpstreamGroupStatusWriter interface +// MockUpstreamGroupStatusWriter is a mock of UpstreamGroupStatusWriter interface. type MockUpstreamGroupStatusWriter struct { ctrl *gomock.Controller recorder *MockUpstreamGroupStatusWriterMockRecorder } -// MockUpstreamGroupStatusWriterMockRecorder is the mock recorder for MockUpstreamGroupStatusWriter +// MockUpstreamGroupStatusWriterMockRecorder is the mock recorder for MockUpstreamGroupStatusWriter. type MockUpstreamGroupStatusWriterMockRecorder struct { mock *MockUpstreamGroupStatusWriter } -// NewMockUpstreamGroupStatusWriter creates a new mock instance +// NewMockUpstreamGroupStatusWriter creates a new mock instance. func NewMockUpstreamGroupStatusWriter(ctrl *gomock.Controller) *MockUpstreamGroupStatusWriter { mock := &MockUpstreamGroupStatusWriter{ctrl: ctrl} mock.recorder = &MockUpstreamGroupStatusWriterMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockUpstreamGroupStatusWriter) EXPECT() *MockUpstreamGroupStatusWriterMockRecorder { return m.recorder } -// UpdateUpstreamGroupStatus mocks base method -func (m *MockUpstreamGroupStatusWriter) UpdateUpstreamGroupStatus(ctx context.Context, obj *v1.UpstreamGroup, opts ...client.UpdateOption) error { +// PatchUpstreamGroupStatus mocks base method. +func (m *MockUpstreamGroupStatusWriter) PatchUpstreamGroupStatus(ctx context.Context, obj *v1.UpstreamGroup, patch client.Patch, opts ...client.SubResourcePatchOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateUpstreamGroupStatus", varargs...) + ret := m.ctrl.Call(m, "PatchUpstreamGroupStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateUpstreamGroupStatus indicates an expected call of UpdateUpstreamGroupStatus -func (mr *MockUpstreamGroupStatusWriterMockRecorder) UpdateUpstreamGroupStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// PatchUpstreamGroupStatus indicates an expected call of PatchUpstreamGroupStatus. +func (mr *MockUpstreamGroupStatusWriterMockRecorder) PatchUpstreamGroupStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUpstreamGroupStatus", reflect.TypeOf((*MockUpstreamGroupStatusWriter)(nil).UpdateUpstreamGroupStatus), varargs...) + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchUpstreamGroupStatus", reflect.TypeOf((*MockUpstreamGroupStatusWriter)(nil).PatchUpstreamGroupStatus), varargs...) } -// PatchUpstreamGroupStatus mocks base method -func (m *MockUpstreamGroupStatusWriter) PatchUpstreamGroupStatus(ctx context.Context, obj *v1.UpstreamGroup, patch client.Patch, opts ...client.PatchOption) error { +// UpdateUpstreamGroupStatus mocks base method. +func (m *MockUpstreamGroupStatusWriter) UpdateUpstreamGroupStatus(ctx context.Context, obj *v1.UpstreamGroup, opts ...client.SubResourceUpdateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj, patch} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchUpstreamGroupStatus", varargs...) + ret := m.ctrl.Call(m, "UpdateUpstreamGroupStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchUpstreamGroupStatus indicates an expected call of PatchUpstreamGroupStatus -func (mr *MockUpstreamGroupStatusWriterMockRecorder) PatchUpstreamGroupStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// UpdateUpstreamGroupStatus indicates an expected call of UpdateUpstreamGroupStatus. +func (mr *MockUpstreamGroupStatusWriterMockRecorder) UpdateUpstreamGroupStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchUpstreamGroupStatus", reflect.TypeOf((*MockUpstreamGroupStatusWriter)(nil).PatchUpstreamGroupStatus), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUpstreamGroupStatus", reflect.TypeOf((*MockUpstreamGroupStatusWriter)(nil).UpdateUpstreamGroupStatus), varargs...) } -// MockUpstreamGroupClient is a mock of UpstreamGroupClient interface +// MockUpstreamGroupClient is a mock of UpstreamGroupClient interface. type MockUpstreamGroupClient struct { ctrl *gomock.Controller recorder *MockUpstreamGroupClientMockRecorder } -// MockUpstreamGroupClientMockRecorder is the mock recorder for MockUpstreamGroupClient +// MockUpstreamGroupClientMockRecorder is the mock recorder for MockUpstreamGroupClient. type MockUpstreamGroupClientMockRecorder struct { mock *MockUpstreamGroupClient } -// NewMockUpstreamGroupClient creates a new mock instance +// NewMockUpstreamGroupClient creates a new mock instance. func NewMockUpstreamGroupClient(ctrl *gomock.Controller) *MockUpstreamGroupClient { mock := &MockUpstreamGroupClient{ctrl: ctrl} mock.recorder = &MockUpstreamGroupClientMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockUpstreamGroupClient) EXPECT() *MockUpstreamGroupClientMockRecorder { return m.recorder } -// GetUpstreamGroup mocks base method -func (m *MockUpstreamGroupClient) GetUpstreamGroup(ctx context.Context, key client.ObjectKey) (*v1.UpstreamGroup, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetUpstreamGroup", ctx, key) - ret0, _ := ret[0].(*v1.UpstreamGroup) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetUpstreamGroup indicates an expected call of GetUpstreamGroup -func (mr *MockUpstreamGroupClientMockRecorder) GetUpstreamGroup(ctx, key interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupClient)(nil).GetUpstreamGroup), ctx, key) -} - -// ListUpstreamGroup mocks base method -func (m *MockUpstreamGroupClient) ListUpstreamGroup(ctx context.Context, opts ...client.ListOption) (*v1.UpstreamGroupList, error) { +// CreateUpstreamGroup mocks base method. +func (m *MockUpstreamGroupClient) CreateUpstreamGroup(ctx context.Context, obj *v1.UpstreamGroup, opts ...client.CreateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "ListUpstreamGroup", varargs...) - ret0, _ := ret[0].(*v1.UpstreamGroupList) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "CreateUpstreamGroup", varargs...) + ret0, _ := ret[0].(error) + return ret0 } -// ListUpstreamGroup indicates an expected call of ListUpstreamGroup -func (mr *MockUpstreamGroupClientMockRecorder) ListUpstreamGroup(ctx interface{}, opts ...interface{}) *gomock.Call { +// CreateUpstreamGroup indicates an expected call of CreateUpstreamGroup. +func (mr *MockUpstreamGroupClientMockRecorder) CreateUpstreamGroup(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupClient)(nil).ListUpstreamGroup), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupClient)(nil).CreateUpstreamGroup), varargs...) } -// CreateUpstreamGroup mocks base method -func (m *MockUpstreamGroupClient) CreateUpstreamGroup(ctx context.Context, obj *v1.UpstreamGroup, opts ...client.CreateOption) error { +// DeleteAllOfUpstreamGroup mocks base method. +func (m *MockUpstreamGroupClient) DeleteAllOfUpstreamGroup(ctx context.Context, opts ...client.DeleteAllOfOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "CreateUpstreamGroup", varargs...) + ret := m.ctrl.Call(m, "DeleteAllOfUpstreamGroup", varargs...) ret0, _ := ret[0].(error) return ret0 } -// CreateUpstreamGroup indicates an expected call of CreateUpstreamGroup -func (mr *MockUpstreamGroupClientMockRecorder) CreateUpstreamGroup(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// DeleteAllOfUpstreamGroup indicates an expected call of DeleteAllOfUpstreamGroup. +func (mr *MockUpstreamGroupClientMockRecorder) DeleteAllOfUpstreamGroup(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupClient)(nil).CreateUpstreamGroup), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupClient)(nil).DeleteAllOfUpstreamGroup), varargs...) } -// DeleteUpstreamGroup mocks base method +// DeleteUpstreamGroup mocks base method. func (m *MockUpstreamGroupClient) DeleteUpstreamGroup(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, key} @@ -1483,33 +1467,49 @@ func (m *MockUpstreamGroupClient) DeleteUpstreamGroup(ctx context.Context, key c return ret0 } -// DeleteUpstreamGroup indicates an expected call of DeleteUpstreamGroup +// DeleteUpstreamGroup indicates an expected call of DeleteUpstreamGroup. func (mr *MockUpstreamGroupClientMockRecorder) DeleteUpstreamGroup(ctx, key interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, key}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupClient)(nil).DeleteUpstreamGroup), varargs...) } -// UpdateUpstreamGroup mocks base method -func (m *MockUpstreamGroupClient) UpdateUpstreamGroup(ctx context.Context, obj *v1.UpstreamGroup, opts ...client.UpdateOption) error { +// GetUpstreamGroup mocks base method. +func (m *MockUpstreamGroupClient) GetUpstreamGroup(ctx context.Context, key client.ObjectKey) (*v1.UpstreamGroup, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + ret := m.ctrl.Call(m, "GetUpstreamGroup", ctx, key) + ret0, _ := ret[0].(*v1.UpstreamGroup) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetUpstreamGroup indicates an expected call of GetUpstreamGroup. +func (mr *MockUpstreamGroupClientMockRecorder) GetUpstreamGroup(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupClient)(nil).GetUpstreamGroup), ctx, key) +} + +// ListUpstreamGroup mocks base method. +func (m *MockUpstreamGroupClient) ListUpstreamGroup(ctx context.Context, opts ...client.ListOption) (*v1.UpstreamGroupList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateUpstreamGroup", varargs...) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "ListUpstreamGroup", varargs...) + ret0, _ := ret[0].(*v1.UpstreamGroupList) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// UpdateUpstreamGroup indicates an expected call of UpdateUpstreamGroup -func (mr *MockUpstreamGroupClientMockRecorder) UpdateUpstreamGroup(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// ListUpstreamGroup indicates an expected call of ListUpstreamGroup. +func (mr *MockUpstreamGroupClientMockRecorder) ListUpstreamGroup(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupClient)(nil).UpdateUpstreamGroup), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupClient)(nil).ListUpstreamGroup), varargs...) } -// PatchUpstreamGroup mocks base method +// PatchUpstreamGroup mocks base method. func (m *MockUpstreamGroupClient) PatchUpstreamGroup(ctx context.Context, obj *v1.UpstreamGroup, patch client.Patch, opts ...client.PatchOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj, patch} @@ -1521,53 +1521,53 @@ func (m *MockUpstreamGroupClient) PatchUpstreamGroup(ctx context.Context, obj *v return ret0 } -// PatchUpstreamGroup indicates an expected call of PatchUpstreamGroup +// PatchUpstreamGroup indicates an expected call of PatchUpstreamGroup. func (mr *MockUpstreamGroupClientMockRecorder) PatchUpstreamGroup(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj, patch}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupClient)(nil).PatchUpstreamGroup), varargs...) } -// DeleteAllOfUpstreamGroup mocks base method -func (m *MockUpstreamGroupClient) DeleteAllOfUpstreamGroup(ctx context.Context, opts ...client.DeleteAllOfOption) error { +// PatchUpstreamGroupStatus mocks base method. +func (m *MockUpstreamGroupClient) PatchUpstreamGroupStatus(ctx context.Context, obj *v1.UpstreamGroup, patch client.Patch, opts ...client.SubResourcePatchOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteAllOfUpstreamGroup", varargs...) + ret := m.ctrl.Call(m, "PatchUpstreamGroupStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteAllOfUpstreamGroup indicates an expected call of DeleteAllOfUpstreamGroup -func (mr *MockUpstreamGroupClientMockRecorder) DeleteAllOfUpstreamGroup(ctx interface{}, opts ...interface{}) *gomock.Call { +// PatchUpstreamGroupStatus indicates an expected call of PatchUpstreamGroupStatus. +func (mr *MockUpstreamGroupClientMockRecorder) PatchUpstreamGroupStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupClient)(nil).DeleteAllOfUpstreamGroup), varargs...) + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchUpstreamGroupStatus", reflect.TypeOf((*MockUpstreamGroupClient)(nil).PatchUpstreamGroupStatus), varargs...) } -// UpsertUpstreamGroup mocks base method -func (m *MockUpstreamGroupClient) UpsertUpstreamGroup(ctx context.Context, obj *v1.UpstreamGroup, transitionFuncs ...v1.UpstreamGroupTransitionFunction) error { +// UpdateUpstreamGroup mocks base method. +func (m *MockUpstreamGroupClient) UpdateUpstreamGroup(ctx context.Context, obj *v1.UpstreamGroup, opts ...client.UpdateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} - for _, a := range transitionFuncs { + for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpsertUpstreamGroup", varargs...) + ret := m.ctrl.Call(m, "UpdateUpstreamGroup", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpsertUpstreamGroup indicates an expected call of UpsertUpstreamGroup -func (mr *MockUpstreamGroupClientMockRecorder) UpsertUpstreamGroup(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { +// UpdateUpstreamGroup indicates an expected call of UpdateUpstreamGroup. +func (mr *MockUpstreamGroupClientMockRecorder) UpdateUpstreamGroup(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, transitionFuncs...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupClient)(nil).UpsertUpstreamGroup), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupClient)(nil).UpdateUpstreamGroup), varargs...) } -// UpdateUpstreamGroupStatus mocks base method -func (m *MockUpstreamGroupClient) UpdateUpstreamGroupStatus(ctx context.Context, obj *v1.UpstreamGroup, opts ...client.UpdateOption) error { +// UpdateUpstreamGroupStatus mocks base method. +func (m *MockUpstreamGroupClient) UpdateUpstreamGroupStatus(ctx context.Context, obj *v1.UpstreamGroup, opts ...client.SubResourceUpdateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} for _, a := range opts { @@ -1578,56 +1578,56 @@ func (m *MockUpstreamGroupClient) UpdateUpstreamGroupStatus(ctx context.Context, return ret0 } -// UpdateUpstreamGroupStatus indicates an expected call of UpdateUpstreamGroupStatus +// UpdateUpstreamGroupStatus indicates an expected call of UpdateUpstreamGroupStatus. func (mr *MockUpstreamGroupClientMockRecorder) UpdateUpstreamGroupStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUpstreamGroupStatus", reflect.TypeOf((*MockUpstreamGroupClient)(nil).UpdateUpstreamGroupStatus), varargs...) } -// PatchUpstreamGroupStatus mocks base method -func (m *MockUpstreamGroupClient) PatchUpstreamGroupStatus(ctx context.Context, obj *v1.UpstreamGroup, patch client.Patch, opts ...client.PatchOption) error { +// UpsertUpstreamGroup mocks base method. +func (m *MockUpstreamGroupClient) UpsertUpstreamGroup(ctx context.Context, obj *v1.UpstreamGroup, transitionFuncs ...v1.UpstreamGroupTransitionFunction) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj, patch} - for _, a := range opts { + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchUpstreamGroupStatus", varargs...) + ret := m.ctrl.Call(m, "UpsertUpstreamGroup", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchUpstreamGroupStatus indicates an expected call of PatchUpstreamGroupStatus -func (mr *MockUpstreamGroupClientMockRecorder) PatchUpstreamGroupStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// UpsertUpstreamGroup indicates an expected call of UpsertUpstreamGroup. +func (mr *MockUpstreamGroupClientMockRecorder) UpsertUpstreamGroup(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchUpstreamGroupStatus", reflect.TypeOf((*MockUpstreamGroupClient)(nil).PatchUpstreamGroupStatus), varargs...) + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertUpstreamGroup", reflect.TypeOf((*MockUpstreamGroupClient)(nil).UpsertUpstreamGroup), varargs...) } -// MockMulticlusterUpstreamGroupClient is a mock of MulticlusterUpstreamGroupClient interface +// MockMulticlusterUpstreamGroupClient is a mock of MulticlusterUpstreamGroupClient interface. type MockMulticlusterUpstreamGroupClient struct { ctrl *gomock.Controller recorder *MockMulticlusterUpstreamGroupClientMockRecorder } -// MockMulticlusterUpstreamGroupClientMockRecorder is the mock recorder for MockMulticlusterUpstreamGroupClient +// MockMulticlusterUpstreamGroupClientMockRecorder is the mock recorder for MockMulticlusterUpstreamGroupClient. type MockMulticlusterUpstreamGroupClientMockRecorder struct { mock *MockMulticlusterUpstreamGroupClient } -// NewMockMulticlusterUpstreamGroupClient creates a new mock instance +// NewMockMulticlusterUpstreamGroupClient creates a new mock instance. func NewMockMulticlusterUpstreamGroupClient(ctrl *gomock.Controller) *MockMulticlusterUpstreamGroupClient { mock := &MockMulticlusterUpstreamGroupClient{ctrl: ctrl} mock.recorder = &MockMulticlusterUpstreamGroupClientMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterUpstreamGroupClient) EXPECT() *MockMulticlusterUpstreamGroupClientMockRecorder { return m.recorder } -// Cluster mocks base method +// Cluster mocks base method. func (m *MockMulticlusterUpstreamGroupClient) Cluster(cluster string) (v1.UpstreamGroupClient, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Cluster", cluster) @@ -1636,36 +1636,36 @@ func (m *MockMulticlusterUpstreamGroupClient) Cluster(cluster string) (v1.Upstre return ret0, ret1 } -// Cluster indicates an expected call of Cluster +// Cluster indicates an expected call of Cluster. func (mr *MockMulticlusterUpstreamGroupClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterUpstreamGroupClient)(nil).Cluster), cluster) } -// MockProxyReader is a mock of ProxyReader interface +// MockProxyReader is a mock of ProxyReader interface. type MockProxyReader struct { ctrl *gomock.Controller recorder *MockProxyReaderMockRecorder } -// MockProxyReaderMockRecorder is the mock recorder for MockProxyReader +// MockProxyReaderMockRecorder is the mock recorder for MockProxyReader. type MockProxyReaderMockRecorder struct { mock *MockProxyReader } -// NewMockProxyReader creates a new mock instance +// NewMockProxyReader creates a new mock instance. func NewMockProxyReader(ctrl *gomock.Controller) *MockProxyReader { mock := &MockProxyReader{ctrl: ctrl} mock.recorder = &MockProxyReaderMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockProxyReader) EXPECT() *MockProxyReaderMockRecorder { return m.recorder } -// GetProxy mocks base method +// GetProxy mocks base method. func (m *MockProxyReader) GetProxy(ctx context.Context, key client.ObjectKey) (*v1.Proxy, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetProxy", ctx, key) @@ -1674,13 +1674,13 @@ func (m *MockProxyReader) GetProxy(ctx context.Context, key client.ObjectKey) (* return ret0, ret1 } -// GetProxy indicates an expected call of GetProxy +// GetProxy indicates an expected call of GetProxy. func (mr *MockProxyReaderMockRecorder) GetProxy(ctx, key interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetProxy", reflect.TypeOf((*MockProxyReader)(nil).GetProxy), ctx, key) } -// ListProxy mocks base method +// ListProxy mocks base method. func (m *MockProxyReader) ListProxy(ctx context.Context, opts ...client.ListOption) (*v1.ProxyList, error) { m.ctrl.T.Helper() varargs := []interface{}{ctx} @@ -1693,37 +1693,37 @@ func (m *MockProxyReader) ListProxy(ctx context.Context, opts ...client.ListOpti return ret0, ret1 } -// ListProxy indicates an expected call of ListProxy +// ListProxy indicates an expected call of ListProxy. func (mr *MockProxyReaderMockRecorder) ListProxy(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListProxy", reflect.TypeOf((*MockProxyReader)(nil).ListProxy), varargs...) } -// MockProxyWriter is a mock of ProxyWriter interface +// MockProxyWriter is a mock of ProxyWriter interface. type MockProxyWriter struct { ctrl *gomock.Controller recorder *MockProxyWriterMockRecorder } -// MockProxyWriterMockRecorder is the mock recorder for MockProxyWriter +// MockProxyWriterMockRecorder is the mock recorder for MockProxyWriter. type MockProxyWriterMockRecorder struct { mock *MockProxyWriter } -// NewMockProxyWriter creates a new mock instance +// NewMockProxyWriter creates a new mock instance. func NewMockProxyWriter(ctrl *gomock.Controller) *MockProxyWriter { mock := &MockProxyWriter{ctrl: ctrl} mock.recorder = &MockProxyWriterMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockProxyWriter) EXPECT() *MockProxyWriterMockRecorder { return m.recorder } -// CreateProxy mocks base method +// CreateProxy mocks base method. func (m *MockProxyWriter) CreateProxy(ctx context.Context, obj *v1.Proxy, opts ...client.CreateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} @@ -1735,52 +1735,52 @@ func (m *MockProxyWriter) CreateProxy(ctx context.Context, obj *v1.Proxy, opts . return ret0 } -// CreateProxy indicates an expected call of CreateProxy +// CreateProxy indicates an expected call of CreateProxy. func (mr *MockProxyWriterMockRecorder) CreateProxy(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateProxy", reflect.TypeOf((*MockProxyWriter)(nil).CreateProxy), varargs...) } -// DeleteProxy mocks base method -func (m *MockProxyWriter) DeleteProxy(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { +// DeleteAllOfProxy mocks base method. +func (m *MockProxyWriter) DeleteAllOfProxy(ctx context.Context, opts ...client.DeleteAllOfOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, key} + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteProxy", varargs...) + ret := m.ctrl.Call(m, "DeleteAllOfProxy", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteProxy indicates an expected call of DeleteProxy -func (mr *MockProxyWriterMockRecorder) DeleteProxy(ctx, key interface{}, opts ...interface{}) *gomock.Call { +// DeleteAllOfProxy indicates an expected call of DeleteAllOfProxy. +func (mr *MockProxyWriterMockRecorder) DeleteAllOfProxy(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, key}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteProxy", reflect.TypeOf((*MockProxyWriter)(nil).DeleteProxy), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfProxy", reflect.TypeOf((*MockProxyWriter)(nil).DeleteAllOfProxy), varargs...) } -// UpdateProxy mocks base method -func (m *MockProxyWriter) UpdateProxy(ctx context.Context, obj *v1.Proxy, opts ...client.UpdateOption) error { +// DeleteProxy mocks base method. +func (m *MockProxyWriter) DeleteProxy(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx, key} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateProxy", varargs...) + ret := m.ctrl.Call(m, "DeleteProxy", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateProxy indicates an expected call of UpdateProxy -func (mr *MockProxyWriterMockRecorder) UpdateProxy(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// DeleteProxy indicates an expected call of DeleteProxy. +func (mr *MockProxyWriterMockRecorder) DeleteProxy(ctx, key interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateProxy", reflect.TypeOf((*MockProxyWriter)(nil).UpdateProxy), varargs...) + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteProxy", reflect.TypeOf((*MockProxyWriter)(nil).DeleteProxy), varargs...) } -// PatchProxy mocks base method +// PatchProxy mocks base method. func (m *MockProxyWriter) PatchProxy(ctx context.Context, obj *v1.Proxy, patch client.Patch, opts ...client.PatchOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj, patch} @@ -1792,33 +1792,33 @@ func (m *MockProxyWriter) PatchProxy(ctx context.Context, obj *v1.Proxy, patch c return ret0 } -// PatchProxy indicates an expected call of PatchProxy +// PatchProxy indicates an expected call of PatchProxy. func (mr *MockProxyWriterMockRecorder) PatchProxy(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj, patch}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchProxy", reflect.TypeOf((*MockProxyWriter)(nil).PatchProxy), varargs...) } -// DeleteAllOfProxy mocks base method -func (m *MockProxyWriter) DeleteAllOfProxy(ctx context.Context, opts ...client.DeleteAllOfOption) error { +// UpdateProxy mocks base method. +func (m *MockProxyWriter) UpdateProxy(ctx context.Context, obj *v1.Proxy, opts ...client.UpdateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteAllOfProxy", varargs...) + ret := m.ctrl.Call(m, "UpdateProxy", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteAllOfProxy indicates an expected call of DeleteAllOfProxy -func (mr *MockProxyWriterMockRecorder) DeleteAllOfProxy(ctx interface{}, opts ...interface{}) *gomock.Call { +// UpdateProxy indicates an expected call of UpdateProxy. +func (mr *MockProxyWriterMockRecorder) UpdateProxy(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfProxy", reflect.TypeOf((*MockProxyWriter)(nil).DeleteAllOfProxy), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateProxy", reflect.TypeOf((*MockProxyWriter)(nil).UpdateProxy), varargs...) } -// UpsertProxy mocks base method +// UpsertProxy mocks base method. func (m *MockProxyWriter) UpsertProxy(ctx context.Context, obj *v1.Proxy, transitionFuncs ...v1.ProxyTransitionFunction) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} @@ -1830,152 +1830,136 @@ func (m *MockProxyWriter) UpsertProxy(ctx context.Context, obj *v1.Proxy, transi return ret0 } -// UpsertProxy indicates an expected call of UpsertProxy +// UpsertProxy indicates an expected call of UpsertProxy. func (mr *MockProxyWriterMockRecorder) UpsertProxy(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, transitionFuncs...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertProxy", reflect.TypeOf((*MockProxyWriter)(nil).UpsertProxy), varargs...) } -// MockProxyStatusWriter is a mock of ProxyStatusWriter interface +// MockProxyStatusWriter is a mock of ProxyStatusWriter interface. type MockProxyStatusWriter struct { ctrl *gomock.Controller recorder *MockProxyStatusWriterMockRecorder } -// MockProxyStatusWriterMockRecorder is the mock recorder for MockProxyStatusWriter +// MockProxyStatusWriterMockRecorder is the mock recorder for MockProxyStatusWriter. type MockProxyStatusWriterMockRecorder struct { mock *MockProxyStatusWriter } -// NewMockProxyStatusWriter creates a new mock instance +// NewMockProxyStatusWriter creates a new mock instance. func NewMockProxyStatusWriter(ctrl *gomock.Controller) *MockProxyStatusWriter { mock := &MockProxyStatusWriter{ctrl: ctrl} mock.recorder = &MockProxyStatusWriterMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockProxyStatusWriter) EXPECT() *MockProxyStatusWriterMockRecorder { return m.recorder } -// UpdateProxyStatus mocks base method -func (m *MockProxyStatusWriter) UpdateProxyStatus(ctx context.Context, obj *v1.Proxy, opts ...client.UpdateOption) error { +// PatchProxyStatus mocks base method. +func (m *MockProxyStatusWriter) PatchProxyStatus(ctx context.Context, obj *v1.Proxy, patch client.Patch, opts ...client.SubResourcePatchOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateProxyStatus", varargs...) + ret := m.ctrl.Call(m, "PatchProxyStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateProxyStatus indicates an expected call of UpdateProxyStatus -func (mr *MockProxyStatusWriterMockRecorder) UpdateProxyStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// PatchProxyStatus indicates an expected call of PatchProxyStatus. +func (mr *MockProxyStatusWriterMockRecorder) PatchProxyStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateProxyStatus", reflect.TypeOf((*MockProxyStatusWriter)(nil).UpdateProxyStatus), varargs...) + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchProxyStatus", reflect.TypeOf((*MockProxyStatusWriter)(nil).PatchProxyStatus), varargs...) } -// PatchProxyStatus mocks base method -func (m *MockProxyStatusWriter) PatchProxyStatus(ctx context.Context, obj *v1.Proxy, patch client.Patch, opts ...client.PatchOption) error { +// UpdateProxyStatus mocks base method. +func (m *MockProxyStatusWriter) UpdateProxyStatus(ctx context.Context, obj *v1.Proxy, opts ...client.SubResourceUpdateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj, patch} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchProxyStatus", varargs...) + ret := m.ctrl.Call(m, "UpdateProxyStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchProxyStatus indicates an expected call of PatchProxyStatus -func (mr *MockProxyStatusWriterMockRecorder) PatchProxyStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// UpdateProxyStatus indicates an expected call of UpdateProxyStatus. +func (mr *MockProxyStatusWriterMockRecorder) UpdateProxyStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchProxyStatus", reflect.TypeOf((*MockProxyStatusWriter)(nil).PatchProxyStatus), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateProxyStatus", reflect.TypeOf((*MockProxyStatusWriter)(nil).UpdateProxyStatus), varargs...) } -// MockProxyClient is a mock of ProxyClient interface +// MockProxyClient is a mock of ProxyClient interface. type MockProxyClient struct { ctrl *gomock.Controller recorder *MockProxyClientMockRecorder } -// MockProxyClientMockRecorder is the mock recorder for MockProxyClient +// MockProxyClientMockRecorder is the mock recorder for MockProxyClient. type MockProxyClientMockRecorder struct { mock *MockProxyClient } -// NewMockProxyClient creates a new mock instance +// NewMockProxyClient creates a new mock instance. func NewMockProxyClient(ctrl *gomock.Controller) *MockProxyClient { mock := &MockProxyClient{ctrl: ctrl} mock.recorder = &MockProxyClientMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockProxyClient) EXPECT() *MockProxyClientMockRecorder { return m.recorder } -// GetProxy mocks base method -func (m *MockProxyClient) GetProxy(ctx context.Context, key client.ObjectKey) (*v1.Proxy, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetProxy", ctx, key) - ret0, _ := ret[0].(*v1.Proxy) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetProxy indicates an expected call of GetProxy -func (mr *MockProxyClientMockRecorder) GetProxy(ctx, key interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetProxy", reflect.TypeOf((*MockProxyClient)(nil).GetProxy), ctx, key) -} - -// ListProxy mocks base method -func (m *MockProxyClient) ListProxy(ctx context.Context, opts ...client.ListOption) (*v1.ProxyList, error) { +// CreateProxy mocks base method. +func (m *MockProxyClient) CreateProxy(ctx context.Context, obj *v1.Proxy, opts ...client.CreateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "ListProxy", varargs...) - ret0, _ := ret[0].(*v1.ProxyList) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "CreateProxy", varargs...) + ret0, _ := ret[0].(error) + return ret0 } -// ListProxy indicates an expected call of ListProxy -func (mr *MockProxyClientMockRecorder) ListProxy(ctx interface{}, opts ...interface{}) *gomock.Call { +// CreateProxy indicates an expected call of CreateProxy. +func (mr *MockProxyClientMockRecorder) CreateProxy(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListProxy", reflect.TypeOf((*MockProxyClient)(nil).ListProxy), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateProxy", reflect.TypeOf((*MockProxyClient)(nil).CreateProxy), varargs...) } -// CreateProxy mocks base method -func (m *MockProxyClient) CreateProxy(ctx context.Context, obj *v1.Proxy, opts ...client.CreateOption) error { +// DeleteAllOfProxy mocks base method. +func (m *MockProxyClient) DeleteAllOfProxy(ctx context.Context, opts ...client.DeleteAllOfOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "CreateProxy", varargs...) + ret := m.ctrl.Call(m, "DeleteAllOfProxy", varargs...) ret0, _ := ret[0].(error) return ret0 } -// CreateProxy indicates an expected call of CreateProxy -func (mr *MockProxyClientMockRecorder) CreateProxy(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// DeleteAllOfProxy indicates an expected call of DeleteAllOfProxy. +func (mr *MockProxyClientMockRecorder) DeleteAllOfProxy(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateProxy", reflect.TypeOf((*MockProxyClient)(nil).CreateProxy), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfProxy", reflect.TypeOf((*MockProxyClient)(nil).DeleteAllOfProxy), varargs...) } -// DeleteProxy mocks base method +// DeleteProxy mocks base method. func (m *MockProxyClient) DeleteProxy(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, key} @@ -1987,33 +1971,49 @@ func (m *MockProxyClient) DeleteProxy(ctx context.Context, key client.ObjectKey, return ret0 } -// DeleteProxy indicates an expected call of DeleteProxy +// DeleteProxy indicates an expected call of DeleteProxy. func (mr *MockProxyClientMockRecorder) DeleteProxy(ctx, key interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, key}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteProxy", reflect.TypeOf((*MockProxyClient)(nil).DeleteProxy), varargs...) } -// UpdateProxy mocks base method -func (m *MockProxyClient) UpdateProxy(ctx context.Context, obj *v1.Proxy, opts ...client.UpdateOption) error { +// GetProxy mocks base method. +func (m *MockProxyClient) GetProxy(ctx context.Context, key client.ObjectKey) (*v1.Proxy, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + ret := m.ctrl.Call(m, "GetProxy", ctx, key) + ret0, _ := ret[0].(*v1.Proxy) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetProxy indicates an expected call of GetProxy. +func (mr *MockProxyClientMockRecorder) GetProxy(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetProxy", reflect.TypeOf((*MockProxyClient)(nil).GetProxy), ctx, key) +} + +// ListProxy mocks base method. +func (m *MockProxyClient) ListProxy(ctx context.Context, opts ...client.ListOption) (*v1.ProxyList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateProxy", varargs...) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "ListProxy", varargs...) + ret0, _ := ret[0].(*v1.ProxyList) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// UpdateProxy indicates an expected call of UpdateProxy -func (mr *MockProxyClientMockRecorder) UpdateProxy(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// ListProxy indicates an expected call of ListProxy. +func (mr *MockProxyClientMockRecorder) ListProxy(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateProxy", reflect.TypeOf((*MockProxyClient)(nil).UpdateProxy), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListProxy", reflect.TypeOf((*MockProxyClient)(nil).ListProxy), varargs...) } -// PatchProxy mocks base method +// PatchProxy mocks base method. func (m *MockProxyClient) PatchProxy(ctx context.Context, obj *v1.Proxy, patch client.Patch, opts ...client.PatchOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj, patch} @@ -2025,53 +2025,53 @@ func (m *MockProxyClient) PatchProxy(ctx context.Context, obj *v1.Proxy, patch c return ret0 } -// PatchProxy indicates an expected call of PatchProxy +// PatchProxy indicates an expected call of PatchProxy. func (mr *MockProxyClientMockRecorder) PatchProxy(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj, patch}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchProxy", reflect.TypeOf((*MockProxyClient)(nil).PatchProxy), varargs...) } -// DeleteAllOfProxy mocks base method -func (m *MockProxyClient) DeleteAllOfProxy(ctx context.Context, opts ...client.DeleteAllOfOption) error { +// PatchProxyStatus mocks base method. +func (m *MockProxyClient) PatchProxyStatus(ctx context.Context, obj *v1.Proxy, patch client.Patch, opts ...client.SubResourcePatchOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteAllOfProxy", varargs...) + ret := m.ctrl.Call(m, "PatchProxyStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteAllOfProxy indicates an expected call of DeleteAllOfProxy -func (mr *MockProxyClientMockRecorder) DeleteAllOfProxy(ctx interface{}, opts ...interface{}) *gomock.Call { +// PatchProxyStatus indicates an expected call of PatchProxyStatus. +func (mr *MockProxyClientMockRecorder) PatchProxyStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfProxy", reflect.TypeOf((*MockProxyClient)(nil).DeleteAllOfProxy), varargs...) + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchProxyStatus", reflect.TypeOf((*MockProxyClient)(nil).PatchProxyStatus), varargs...) } -// UpsertProxy mocks base method -func (m *MockProxyClient) UpsertProxy(ctx context.Context, obj *v1.Proxy, transitionFuncs ...v1.ProxyTransitionFunction) error { +// UpdateProxy mocks base method. +func (m *MockProxyClient) UpdateProxy(ctx context.Context, obj *v1.Proxy, opts ...client.UpdateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} - for _, a := range transitionFuncs { + for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpsertProxy", varargs...) + ret := m.ctrl.Call(m, "UpdateProxy", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpsertProxy indicates an expected call of UpsertProxy -func (mr *MockProxyClientMockRecorder) UpsertProxy(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { +// UpdateProxy indicates an expected call of UpdateProxy. +func (mr *MockProxyClientMockRecorder) UpdateProxy(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, transitionFuncs...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertProxy", reflect.TypeOf((*MockProxyClient)(nil).UpsertProxy), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateProxy", reflect.TypeOf((*MockProxyClient)(nil).UpdateProxy), varargs...) } -// UpdateProxyStatus mocks base method -func (m *MockProxyClient) UpdateProxyStatus(ctx context.Context, obj *v1.Proxy, opts ...client.UpdateOption) error { +// UpdateProxyStatus mocks base method. +func (m *MockProxyClient) UpdateProxyStatus(ctx context.Context, obj *v1.Proxy, opts ...client.SubResourceUpdateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} for _, a := range opts { @@ -2082,56 +2082,56 @@ func (m *MockProxyClient) UpdateProxyStatus(ctx context.Context, obj *v1.Proxy, return ret0 } -// UpdateProxyStatus indicates an expected call of UpdateProxyStatus +// UpdateProxyStatus indicates an expected call of UpdateProxyStatus. func (mr *MockProxyClientMockRecorder) UpdateProxyStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateProxyStatus", reflect.TypeOf((*MockProxyClient)(nil).UpdateProxyStatus), varargs...) } -// PatchProxyStatus mocks base method -func (m *MockProxyClient) PatchProxyStatus(ctx context.Context, obj *v1.Proxy, patch client.Patch, opts ...client.PatchOption) error { +// UpsertProxy mocks base method. +func (m *MockProxyClient) UpsertProxy(ctx context.Context, obj *v1.Proxy, transitionFuncs ...v1.ProxyTransitionFunction) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj, patch} - for _, a := range opts { + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchProxyStatus", varargs...) + ret := m.ctrl.Call(m, "UpsertProxy", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchProxyStatus indicates an expected call of PatchProxyStatus -func (mr *MockProxyClientMockRecorder) PatchProxyStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// UpsertProxy indicates an expected call of UpsertProxy. +func (mr *MockProxyClientMockRecorder) UpsertProxy(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchProxyStatus", reflect.TypeOf((*MockProxyClient)(nil).PatchProxyStatus), varargs...) + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertProxy", reflect.TypeOf((*MockProxyClient)(nil).UpsertProxy), varargs...) } -// MockMulticlusterProxyClient is a mock of MulticlusterProxyClient interface +// MockMulticlusterProxyClient is a mock of MulticlusterProxyClient interface. type MockMulticlusterProxyClient struct { ctrl *gomock.Controller recorder *MockMulticlusterProxyClientMockRecorder } -// MockMulticlusterProxyClientMockRecorder is the mock recorder for MockMulticlusterProxyClient +// MockMulticlusterProxyClientMockRecorder is the mock recorder for MockMulticlusterProxyClient. type MockMulticlusterProxyClientMockRecorder struct { mock *MockMulticlusterProxyClient } -// NewMockMulticlusterProxyClient creates a new mock instance +// NewMockMulticlusterProxyClient creates a new mock instance. func NewMockMulticlusterProxyClient(ctrl *gomock.Controller) *MockMulticlusterProxyClient { mock := &MockMulticlusterProxyClient{ctrl: ctrl} mock.recorder = &MockMulticlusterProxyClientMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterProxyClient) EXPECT() *MockMulticlusterProxyClientMockRecorder { return m.recorder } -// Cluster mocks base method +// Cluster mocks base method. func (m *MockMulticlusterProxyClient) Cluster(cluster string) (v1.ProxyClient, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Cluster", cluster) @@ -2140,7 +2140,7 @@ func (m *MockMulticlusterProxyClient) Cluster(cluster string) (v1.ProxyClient, e return ret0, ret1 } -// Cluster indicates an expected call of Cluster +// Cluster indicates an expected call of Cluster. func (mr *MockMulticlusterProxyClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterProxyClient)(nil).Cluster), cluster) diff --git a/pkg/api/gloo.solo.io/v1/options.pb.equal.go b/pkg/api/gloo.solo.io/v1/options.pb.equal.go deleted file mode 100644 index 75b1cb01b..000000000 --- a/pkg/api/gloo.solo.io/v1/options.pb.equal.go +++ /dev/null @@ -1,1095 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options.proto - -package v1 - -import ( - "bytes" - "encoding/binary" - "errors" - "fmt" - "strings" - - "github.com/golang/protobuf/proto" - equality "github.com/solo-io/protoc-gen-ext/pkg/equality" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = bytes.Compare - _ = strings.Compare - _ = equality.Equalizer(nil) - _ = proto.Message(nil) -) - -// Equal function -func (m *ListenerOptions) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*ListenerOptions) - if !ok { - that2, ok := that.(ListenerOptions) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetAccessLoggingService()).(equality.Equalizer); ok { - if !h.Equal(target.GetAccessLoggingService()) { - return false - } - } else { - if !proto.Equal(m.GetAccessLoggingService(), target.GetAccessLoggingService()) { - return false - } - } - - if h, ok := interface{}(m.GetExtensions()).(equality.Equalizer); ok { - if !h.Equal(target.GetExtensions()) { - return false - } - } else { - if !proto.Equal(m.GetExtensions(), target.GetExtensions()) { - return false - } - } - - if h, ok := interface{}(m.GetPerConnectionBufferLimitBytes()).(equality.Equalizer); ok { - if !h.Equal(target.GetPerConnectionBufferLimitBytes()) { - return false - } - } else { - if !proto.Equal(m.GetPerConnectionBufferLimitBytes(), target.GetPerConnectionBufferLimitBytes()) { - return false - } - } - - if len(m.GetSocketOptions()) != len(target.GetSocketOptions()) { - return false - } - for idx, v := range m.GetSocketOptions() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetSocketOptions()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetSocketOptions()[idx]) { - return false - } - } - - } - - return true -} - -// Equal function -func (m *RouteConfigurationOptions) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*RouteConfigurationOptions) - if !ok { - that2, ok := that.(RouteConfigurationOptions) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetMaxDirectResponseBodySizeBytes()).(equality.Equalizer); ok { - if !h.Equal(target.GetMaxDirectResponseBodySizeBytes()) { - return false - } - } else { - if !proto.Equal(m.GetMaxDirectResponseBodySizeBytes(), target.GetMaxDirectResponseBodySizeBytes()) { - return false - } - } - - return true -} - -// Equal function -func (m *HttpListenerOptions) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*HttpListenerOptions) - if !ok { - that2, ok := that.(HttpListenerOptions) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetGrpcWeb()).(equality.Equalizer); ok { - if !h.Equal(target.GetGrpcWeb()) { - return false - } - } else { - if !proto.Equal(m.GetGrpcWeb(), target.GetGrpcWeb()) { - return false - } - } - - if h, ok := interface{}(m.GetHttpConnectionManagerSettings()).(equality.Equalizer); ok { - if !h.Equal(target.GetHttpConnectionManagerSettings()) { - return false - } - } else { - if !proto.Equal(m.GetHttpConnectionManagerSettings(), target.GetHttpConnectionManagerSettings()) { - return false - } - } - - if h, ok := interface{}(m.GetHealthCheck()).(equality.Equalizer); ok { - if !h.Equal(target.GetHealthCheck()) { - return false - } - } else { - if !proto.Equal(m.GetHealthCheck(), target.GetHealthCheck()) { - return false - } - } - - if h, ok := interface{}(m.GetExtensions()).(equality.Equalizer); ok { - if !h.Equal(target.GetExtensions()) { - return false - } - } else { - if !proto.Equal(m.GetExtensions(), target.GetExtensions()) { - return false - } - } - - if h, ok := interface{}(m.GetWaf()).(equality.Equalizer); ok { - if !h.Equal(target.GetWaf()) { - return false - } - } else { - if !proto.Equal(m.GetWaf(), target.GetWaf()) { - return false - } - } - - if h, ok := interface{}(m.GetDlp()).(equality.Equalizer); ok { - if !h.Equal(target.GetDlp()) { - return false - } - } else { - if !proto.Equal(m.GetDlp(), target.GetDlp()) { - return false - } - } - - if h, ok := interface{}(m.GetWasm()).(equality.Equalizer); ok { - if !h.Equal(target.GetWasm()) { - return false - } - } else { - if !proto.Equal(m.GetWasm(), target.GetWasm()) { - return false - } - } - - if h, ok := interface{}(m.GetExtauth()).(equality.Equalizer); ok { - if !h.Equal(target.GetExtauth()) { - return false - } - } else { - if !proto.Equal(m.GetExtauth(), target.GetExtauth()) { - return false - } - } - - if h, ok := interface{}(m.GetRatelimitServer()).(equality.Equalizer); ok { - if !h.Equal(target.GetRatelimitServer()) { - return false - } - } else { - if !proto.Equal(m.GetRatelimitServer(), target.GetRatelimitServer()) { - return false - } - } - - if h, ok := interface{}(m.GetGzip()).(equality.Equalizer); ok { - if !h.Equal(target.GetGzip()) { - return false - } - } else { - if !proto.Equal(m.GetGzip(), target.GetGzip()) { - return false - } - } - - if h, ok := interface{}(m.GetProxyLatency()).(equality.Equalizer); ok { - if !h.Equal(target.GetProxyLatency()) { - return false - } - } else { - if !proto.Equal(m.GetProxyLatency(), target.GetProxyLatency()) { - return false - } - } - - if h, ok := interface{}(m.GetBuffer()).(equality.Equalizer); ok { - if !h.Equal(target.GetBuffer()) { - return false - } - } else { - if !proto.Equal(m.GetBuffer(), target.GetBuffer()) { - return false - } - } - - if h, ok := interface{}(m.GetCsrf()).(equality.Equalizer); ok { - if !h.Equal(target.GetCsrf()) { - return false - } - } else { - if !proto.Equal(m.GetCsrf(), target.GetCsrf()) { - return false - } - } - - if h, ok := interface{}(m.GetGrpcJsonTranscoder()).(equality.Equalizer); ok { - if !h.Equal(target.GetGrpcJsonTranscoder()) { - return false - } - } else { - if !proto.Equal(m.GetGrpcJsonTranscoder(), target.GetGrpcJsonTranscoder()) { - return false - } - } - - if h, ok := interface{}(m.GetSanitizeClusterHeader()).(equality.Equalizer); ok { - if !h.Equal(target.GetSanitizeClusterHeader()) { - return false - } - } else { - if !proto.Equal(m.GetSanitizeClusterHeader(), target.GetSanitizeClusterHeader()) { - return false - } - } - - if h, ok := interface{}(m.GetLeftmostXffAddress()).(equality.Equalizer); ok { - if !h.Equal(target.GetLeftmostXffAddress()) { - return false - } - } else { - if !proto.Equal(m.GetLeftmostXffAddress(), target.GetLeftmostXffAddress()) { - return false - } - } - - return true -} - -// Equal function -func (m *TcpListenerOptions) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*TcpListenerOptions) - if !ok { - that2, ok := that.(TcpListenerOptions) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetTcpProxySettings()).(equality.Equalizer); ok { - if !h.Equal(target.GetTcpProxySettings()) { - return false - } - } else { - if !proto.Equal(m.GetTcpProxySettings(), target.GetTcpProxySettings()) { - return false - } - } - - return true -} - -// Equal function -func (m *VirtualHostOptions) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*VirtualHostOptions) - if !ok { - that2, ok := that.(VirtualHostOptions) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetExtensions()).(equality.Equalizer); ok { - if !h.Equal(target.GetExtensions()) { - return false - } - } else { - if !proto.Equal(m.GetExtensions(), target.GetExtensions()) { - return false - } - } - - if h, ok := interface{}(m.GetRetries()).(equality.Equalizer); ok { - if !h.Equal(target.GetRetries()) { - return false - } - } else { - if !proto.Equal(m.GetRetries(), target.GetRetries()) { - return false - } - } - - if h, ok := interface{}(m.GetStats()).(equality.Equalizer); ok { - if !h.Equal(target.GetStats()) { - return false - } - } else { - if !proto.Equal(m.GetStats(), target.GetStats()) { - return false - } - } - - if h, ok := interface{}(m.GetHeaderManipulation()).(equality.Equalizer); ok { - if !h.Equal(target.GetHeaderManipulation()) { - return false - } - } else { - if !proto.Equal(m.GetHeaderManipulation(), target.GetHeaderManipulation()) { - return false - } - } - - if h, ok := interface{}(m.GetCors()).(equality.Equalizer); ok { - if !h.Equal(target.GetCors()) { - return false - } - } else { - if !proto.Equal(m.GetCors(), target.GetCors()) { - return false - } - } - - if h, ok := interface{}(m.GetTransformations()).(equality.Equalizer); ok { - if !h.Equal(target.GetTransformations()) { - return false - } - } else { - if !proto.Equal(m.GetTransformations(), target.GetTransformations()) { - return false - } - } - - if h, ok := interface{}(m.GetRatelimitBasic()).(equality.Equalizer); ok { - if !h.Equal(target.GetRatelimitBasic()) { - return false - } - } else { - if !proto.Equal(m.GetRatelimitBasic(), target.GetRatelimitBasic()) { - return false - } - } - - if h, ok := interface{}(m.GetWaf()).(equality.Equalizer); ok { - if !h.Equal(target.GetWaf()) { - return false - } - } else { - if !proto.Equal(m.GetWaf(), target.GetWaf()) { - return false - } - } - - if h, ok := interface{}(m.GetRbac()).(equality.Equalizer); ok { - if !h.Equal(target.GetRbac()) { - return false - } - } else { - if !proto.Equal(m.GetRbac(), target.GetRbac()) { - return false - } - } - - if h, ok := interface{}(m.GetExtauth()).(equality.Equalizer); ok { - if !h.Equal(target.GetExtauth()) { - return false - } - } else { - if !proto.Equal(m.GetExtauth(), target.GetExtauth()) { - return false - } - } - - if h, ok := interface{}(m.GetDlp()).(equality.Equalizer); ok { - if !h.Equal(target.GetDlp()) { - return false - } - } else { - if !proto.Equal(m.GetDlp(), target.GetDlp()) { - return false - } - } - - if h, ok := interface{}(m.GetBufferPerRoute()).(equality.Equalizer); ok { - if !h.Equal(target.GetBufferPerRoute()) { - return false - } - } else { - if !proto.Equal(m.GetBufferPerRoute(), target.GetBufferPerRoute()) { - return false - } - } - - if h, ok := interface{}(m.GetCsrf()).(equality.Equalizer); ok { - if !h.Equal(target.GetCsrf()) { - return false - } - } else { - if !proto.Equal(m.GetCsrf(), target.GetCsrf()) { - return false - } - } - - if h, ok := interface{}(m.GetIncludeRequestAttemptCount()).(equality.Equalizer); ok { - if !h.Equal(target.GetIncludeRequestAttemptCount()) { - return false - } - } else { - if !proto.Equal(m.GetIncludeRequestAttemptCount(), target.GetIncludeRequestAttemptCount()) { - return false - } - } - - if h, ok := interface{}(m.GetIncludeAttemptCountInResponse()).(equality.Equalizer); ok { - if !h.Equal(target.GetIncludeAttemptCountInResponse()) { - return false - } - } else { - if !proto.Equal(m.GetIncludeAttemptCountInResponse(), target.GetIncludeAttemptCountInResponse()) { - return false - } - } - - if h, ok := interface{}(m.GetStagedTransformations()).(equality.Equalizer); ok { - if !h.Equal(target.GetStagedTransformations()) { - return false - } - } else { - if !proto.Equal(m.GetStagedTransformations(), target.GetStagedTransformations()) { - return false - } - } - - switch m.RateLimitConfigType.(type) { - - case *VirtualHostOptions_Ratelimit: - - if h, ok := interface{}(m.GetRatelimit()).(equality.Equalizer); ok { - if !h.Equal(target.GetRatelimit()) { - return false - } - } else { - if !proto.Equal(m.GetRatelimit(), target.GetRatelimit()) { - return false - } - } - - case *VirtualHostOptions_RateLimitConfigs: - - if h, ok := interface{}(m.GetRateLimitConfigs()).(equality.Equalizer); ok { - if !h.Equal(target.GetRateLimitConfigs()) { - return false - } - } else { - if !proto.Equal(m.GetRateLimitConfigs(), target.GetRateLimitConfigs()) { - return false - } - } - - } - - switch m.JwtConfig.(type) { - - case *VirtualHostOptions_Jwt: - - if h, ok := interface{}(m.GetJwt()).(equality.Equalizer); ok { - if !h.Equal(target.GetJwt()) { - return false - } - } else { - if !proto.Equal(m.GetJwt(), target.GetJwt()) { - return false - } - } - - case *VirtualHostOptions_JwtStaged: - - if h, ok := interface{}(m.GetJwtStaged()).(equality.Equalizer); ok { - if !h.Equal(target.GetJwtStaged()) { - return false - } - } else { - if !proto.Equal(m.GetJwtStaged(), target.GetJwtStaged()) { - return false - } - } - - } - - return true -} - -// Equal function -func (m *RouteOptions) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*RouteOptions) - if !ok { - that2, ok := that.(RouteOptions) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetTransformations()).(equality.Equalizer); ok { - if !h.Equal(target.GetTransformations()) { - return false - } - } else { - if !proto.Equal(m.GetTransformations(), target.GetTransformations()) { - return false - } - } - - if h, ok := interface{}(m.GetFaults()).(equality.Equalizer); ok { - if !h.Equal(target.GetFaults()) { - return false - } - } else { - if !proto.Equal(m.GetFaults(), target.GetFaults()) { - return false - } - } - - if h, ok := interface{}(m.GetPrefixRewrite()).(equality.Equalizer); ok { - if !h.Equal(target.GetPrefixRewrite()) { - return false - } - } else { - if !proto.Equal(m.GetPrefixRewrite(), target.GetPrefixRewrite()) { - return false - } - } - - if h, ok := interface{}(m.GetTimeout()).(equality.Equalizer); ok { - if !h.Equal(target.GetTimeout()) { - return false - } - } else { - if !proto.Equal(m.GetTimeout(), target.GetTimeout()) { - return false - } - } - - if h, ok := interface{}(m.GetRetries()).(equality.Equalizer); ok { - if !h.Equal(target.GetRetries()) { - return false - } - } else { - if !proto.Equal(m.GetRetries(), target.GetRetries()) { - return false - } - } - - if h, ok := interface{}(m.GetExtensions()).(equality.Equalizer); ok { - if !h.Equal(target.GetExtensions()) { - return false - } - } else { - if !proto.Equal(m.GetExtensions(), target.GetExtensions()) { - return false - } - } - - if h, ok := interface{}(m.GetTracing()).(equality.Equalizer); ok { - if !h.Equal(target.GetTracing()) { - return false - } - } else { - if !proto.Equal(m.GetTracing(), target.GetTracing()) { - return false - } - } - - if h, ok := interface{}(m.GetShadowing()).(equality.Equalizer); ok { - if !h.Equal(target.GetShadowing()) { - return false - } - } else { - if !proto.Equal(m.GetShadowing(), target.GetShadowing()) { - return false - } - } - - if h, ok := interface{}(m.GetHeaderManipulation()).(equality.Equalizer); ok { - if !h.Equal(target.GetHeaderManipulation()) { - return false - } - } else { - if !proto.Equal(m.GetHeaderManipulation(), target.GetHeaderManipulation()) { - return false - } - } - - if h, ok := interface{}(m.GetCors()).(equality.Equalizer); ok { - if !h.Equal(target.GetCors()) { - return false - } - } else { - if !proto.Equal(m.GetCors(), target.GetCors()) { - return false - } - } - - if h, ok := interface{}(m.GetLbHash()).(equality.Equalizer); ok { - if !h.Equal(target.GetLbHash()) { - return false - } - } else { - if !proto.Equal(m.GetLbHash(), target.GetLbHash()) { - return false - } - } - - if len(m.GetUpgrades()) != len(target.GetUpgrades()) { - return false - } - for idx, v := range m.GetUpgrades() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetUpgrades()[idx]) { - return false - } - } else { - if !proto.Equal(v, target.GetUpgrades()[idx]) { - return false - } - } - - } - - if h, ok := interface{}(m.GetRatelimitBasic()).(equality.Equalizer); ok { - if !h.Equal(target.GetRatelimitBasic()) { - return false - } - } else { - if !proto.Equal(m.GetRatelimitBasic(), target.GetRatelimitBasic()) { - return false - } - } - - if h, ok := interface{}(m.GetWaf()).(equality.Equalizer); ok { - if !h.Equal(target.GetWaf()) { - return false - } - } else { - if !proto.Equal(m.GetWaf(), target.GetWaf()) { - return false - } - } - - if h, ok := interface{}(m.GetRbac()).(equality.Equalizer); ok { - if !h.Equal(target.GetRbac()) { - return false - } - } else { - if !proto.Equal(m.GetRbac(), target.GetRbac()) { - return false - } - } - - if h, ok := interface{}(m.GetExtauth()).(equality.Equalizer); ok { - if !h.Equal(target.GetExtauth()) { - return false - } - } else { - if !proto.Equal(m.GetExtauth(), target.GetExtauth()) { - return false - } - } - - if h, ok := interface{}(m.GetDlp()).(equality.Equalizer); ok { - if !h.Equal(target.GetDlp()) { - return false - } - } else { - if !proto.Equal(m.GetDlp(), target.GetDlp()) { - return false - } - } - - if h, ok := interface{}(m.GetBufferPerRoute()).(equality.Equalizer); ok { - if !h.Equal(target.GetBufferPerRoute()) { - return false - } - } else { - if !proto.Equal(m.GetBufferPerRoute(), target.GetBufferPerRoute()) { - return false - } - } - - if h, ok := interface{}(m.GetCsrf()).(equality.Equalizer); ok { - if !h.Equal(target.GetCsrf()) { - return false - } - } else { - if !proto.Equal(m.GetCsrf(), target.GetCsrf()) { - return false - } - } - - if h, ok := interface{}(m.GetStagedTransformations()).(equality.Equalizer); ok { - if !h.Equal(target.GetStagedTransformations()) { - return false - } - } else { - if !proto.Equal(m.GetStagedTransformations(), target.GetStagedTransformations()) { - return false - } - } - - if len(m.GetEnvoyMetadata()) != len(target.GetEnvoyMetadata()) { - return false - } - for k, v := range m.GetEnvoyMetadata() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetEnvoyMetadata()[k]) { - return false - } - } else { - if !proto.Equal(v, target.GetEnvoyMetadata()[k]) { - return false - } - } - - } - - if h, ok := interface{}(m.GetRegexRewrite()).(equality.Equalizer); ok { - if !h.Equal(target.GetRegexRewrite()) { - return false - } - } else { - if !proto.Equal(m.GetRegexRewrite(), target.GetRegexRewrite()) { - return false - } - } - - switch m.HostRewriteType.(type) { - - case *RouteOptions_HostRewrite: - - if strings.Compare(m.GetHostRewrite(), target.GetHostRewrite()) != 0 { - return false - } - - case *RouteOptions_AutoHostRewrite: - - if h, ok := interface{}(m.GetAutoHostRewrite()).(equality.Equalizer); ok { - if !h.Equal(target.GetAutoHostRewrite()) { - return false - } - } else { - if !proto.Equal(m.GetAutoHostRewrite(), target.GetAutoHostRewrite()) { - return false - } - } - - } - - switch m.RateLimitConfigType.(type) { - - case *RouteOptions_Ratelimit: - - if h, ok := interface{}(m.GetRatelimit()).(equality.Equalizer); ok { - if !h.Equal(target.GetRatelimit()) { - return false - } - } else { - if !proto.Equal(m.GetRatelimit(), target.GetRatelimit()) { - return false - } - } - - case *RouteOptions_RateLimitConfigs: - - if h, ok := interface{}(m.GetRateLimitConfigs()).(equality.Equalizer); ok { - if !h.Equal(target.GetRateLimitConfigs()) { - return false - } - } else { - if !proto.Equal(m.GetRateLimitConfigs(), target.GetRateLimitConfigs()) { - return false - } - } - - } - - switch m.JwtConfig.(type) { - - case *RouteOptions_Jwt: - - if h, ok := interface{}(m.GetJwt()).(equality.Equalizer); ok { - if !h.Equal(target.GetJwt()) { - return false - } - } else { - if !proto.Equal(m.GetJwt(), target.GetJwt()) { - return false - } - } - - case *RouteOptions_JwtStaged: - - if h, ok := interface{}(m.GetJwtStaged()).(equality.Equalizer); ok { - if !h.Equal(target.GetJwtStaged()) { - return false - } - } else { - if !proto.Equal(m.GetJwtStaged(), target.GetJwtStaged()) { - return false - } - } - - } - - return true -} - -// Equal function -func (m *DestinationSpec) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*DestinationSpec) - if !ok { - that2, ok := that.(DestinationSpec) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - switch m.DestinationType.(type) { - - case *DestinationSpec_Aws: - - if h, ok := interface{}(m.GetAws()).(equality.Equalizer); ok { - if !h.Equal(target.GetAws()) { - return false - } - } else { - if !proto.Equal(m.GetAws(), target.GetAws()) { - return false - } - } - - case *DestinationSpec_Azure: - - if h, ok := interface{}(m.GetAzure()).(equality.Equalizer); ok { - if !h.Equal(target.GetAzure()) { - return false - } - } else { - if !proto.Equal(m.GetAzure(), target.GetAzure()) { - return false - } - } - - case *DestinationSpec_Rest: - - if h, ok := interface{}(m.GetRest()).(equality.Equalizer); ok { - if !h.Equal(target.GetRest()) { - return false - } - } else { - if !proto.Equal(m.GetRest(), target.GetRest()) { - return false - } - } - - case *DestinationSpec_Grpc: - - if h, ok := interface{}(m.GetGrpc()).(equality.Equalizer); ok { - if !h.Equal(target.GetGrpc()) { - return false - } - } else { - if !proto.Equal(m.GetGrpc(), target.GetGrpc()) { - return false - } - } - - } - - return true -} - -// Equal function -func (m *WeightedDestinationOptions) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*WeightedDestinationOptions) - if !ok { - that2, ok := that.(WeightedDestinationOptions) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if h, ok := interface{}(m.GetHeaderManipulation()).(equality.Equalizer); ok { - if !h.Equal(target.GetHeaderManipulation()) { - return false - } - } else { - if !proto.Equal(m.GetHeaderManipulation(), target.GetHeaderManipulation()) { - return false - } - } - - if h, ok := interface{}(m.GetTransformations()).(equality.Equalizer); ok { - if !h.Equal(target.GetTransformations()) { - return false - } - } else { - if !proto.Equal(m.GetTransformations(), target.GetTransformations()) { - return false - } - } - - if h, ok := interface{}(m.GetExtensions()).(equality.Equalizer); ok { - if !h.Equal(target.GetExtensions()) { - return false - } - } else { - if !proto.Equal(m.GetExtensions(), target.GetExtensions()) { - return false - } - } - - if h, ok := interface{}(m.GetExtauth()).(equality.Equalizer); ok { - if !h.Equal(target.GetExtauth()) { - return false - } - } else { - if !proto.Equal(m.GetExtauth(), target.GetExtauth()) { - return false - } - } - - if h, ok := interface{}(m.GetBufferPerRoute()).(equality.Equalizer); ok { - if !h.Equal(target.GetBufferPerRoute()) { - return false - } - } else { - if !proto.Equal(m.GetBufferPerRoute(), target.GetBufferPerRoute()) { - return false - } - } - - if h, ok := interface{}(m.GetCsrf()).(equality.Equalizer); ok { - if !h.Equal(target.GetCsrf()) { - return false - } - } else { - if !proto.Equal(m.GetCsrf(), target.GetCsrf()) { - return false - } - } - - if h, ok := interface{}(m.GetStagedTransformations()).(equality.Equalizer); ok { - if !h.Equal(target.GetStagedTransformations()) { - return false - } - } else { - if !proto.Equal(m.GetStagedTransformations(), target.GetStagedTransformations()) { - return false - } - } - - return true -} diff --git a/pkg/api/gloo.solo.io/v1/options.pb.go b/pkg/api/gloo.solo.io/v1/options.pb.go deleted file mode 100644 index 856bfa100..000000000 --- a/pkg/api/gloo.solo.io/v1/options.pb.go +++ /dev/null @@ -1,2369 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.6.1 -// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options.proto - -package v1 - -import ( - reflect "reflect" - sync "sync" - - proto "github.com/golang/protobuf/proto" - duration "github.com/golang/protobuf/ptypes/duration" - _struct "github.com/golang/protobuf/ptypes/struct" - wrappers "github.com/golang/protobuf/ptypes/wrappers" - _ "github.com/solo-io/protoc-gen-ext/extproto" - v1 "github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1" - v2 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/filter/http/gzip/v2" - v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3" - v31 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3" - proxylatency "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/proxylatency" - v32 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3" - dlp "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/dlp" - jwt "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/jwt" - ratelimit "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit" - rbac "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/rbac" - waf "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/waf" - als "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als" - aws "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/aws" - azure "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/azure" - cors "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/cors" - faultinjection "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/faultinjection" - grpc "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/grpc" - grpc_json "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/grpc_json" - grpc_web "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/grpc_web" - hcm "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/hcm" - headers "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/headers" - healthcheck "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/healthcheck" - lbhash "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/lbhash" - protocol_upgrade "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/protocol_upgrade" - rest "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/rest" - retries "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/retries" - shadowing "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/shadowing" - stats "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/stats" - tcp "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tcp" - tracing "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tracing" - transformation "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation" - wasm "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/wasm" - core "github.com/solo-io/solo-kit/pkg/api/external/envoy/api/v2/core" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -// Optional, feature-specific configuration that lives on gateways. -// Each ListenerOption object contains configuration for a specific feature. -// Note to developers: new Listener plugins must be added to this struct -// to be usable by Gloo. (plugins currently need to be compiled into Gloo) -type ListenerOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - AccessLoggingService *als.AccessLoggingService `protobuf:"bytes,1,opt,name=access_logging_service,json=accessLoggingService,proto3" json:"access_logging_service,omitempty"` - // Extensions will be passed along from Listeners, Gateways, VirtualServices, Routes, and Route tables to the - // underlying Proxy, making them useful for controllers, validation tools, etc. which interact with kubernetes yaml. - // - // Some sample use cases: - // * controllers, deployment pipelines, helm charts, etc. which wish to use extensions as a kind of opaque metadata. - // * In the future, Gloo may support gRPC-based plugins which communicate with the Gloo translator out-of-process. - // Opaque Extensions enables development of out-of-process plugins without requiring recompiling & redeploying Gloo's API. - Extensions *Extensions `protobuf:"bytes,2,opt,name=extensions,proto3" json:"extensions,omitempty"` - // Soft limit on size of the listener's new connection read and write buffers. If unspecified, defaults to 1MiB - // For more info, check out the [Envoy docs](https://www.envoyproxy.io/docs/envoy/v1.14.1/api-v2/api/v2/listener.proto) - PerConnectionBufferLimitBytes *wrappers.UInt32Value `protobuf:"bytes,3,opt,name=per_connection_buffer_limit_bytes,json=perConnectionBufferLimitBytes,proto3" json:"per_connection_buffer_limit_bytes,omitempty"` - // Additional socket options that may not be present in Envoy source code or - // precompiled binaries. - SocketOptions []*core.SocketOption `protobuf:"bytes,4,rep,name=socket_options,json=socketOptions,proto3" json:"socket_options,omitempty"` -} - -func (x *ListenerOptions) Reset() { - *x = ListenerOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListenerOptions) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListenerOptions) ProtoMessage() {} - -func (x *ListenerOptions) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListenerOptions.ProtoReflect.Descriptor instead. -func (*ListenerOptions) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_rawDescGZIP(), []int{0} -} - -func (x *ListenerOptions) GetAccessLoggingService() *als.AccessLoggingService { - if x != nil { - return x.AccessLoggingService - } - return nil -} - -func (x *ListenerOptions) GetExtensions() *Extensions { - if x != nil { - return x.Extensions - } - return nil -} - -func (x *ListenerOptions) GetPerConnectionBufferLimitBytes() *wrappers.UInt32Value { - if x != nil { - return x.PerConnectionBufferLimitBytes - } - return nil -} - -func (x *ListenerOptions) GetSocketOptions() []*core.SocketOption { - if x != nil { - return x.SocketOptions - } - return nil -} - -type RouteConfigurationOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The maximum bytes of the response direct response body size. If not specified the default is 4096. - // Please refer to the [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto#envoy-v3-api-field-config-route-v3-routeconfiguration-max-direct-response-body-size-bytes) - // for more details about the `max_direct_response_body_size_bytes` attribute. - MaxDirectResponseBodySizeBytes *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=max_direct_response_body_size_bytes,json=maxDirectResponseBodySizeBytes,proto3" json:"max_direct_response_body_size_bytes,omitempty"` -} - -func (x *RouteConfigurationOptions) Reset() { - *x = RouteConfigurationOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RouteConfigurationOptions) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RouteConfigurationOptions) ProtoMessage() {} - -func (x *RouteConfigurationOptions) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RouteConfigurationOptions.ProtoReflect.Descriptor instead. -func (*RouteConfigurationOptions) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_rawDescGZIP(), []int{1} -} - -func (x *RouteConfigurationOptions) GetMaxDirectResponseBodySizeBytes() *wrappers.UInt32Value { - if x != nil { - return x.MaxDirectResponseBodySizeBytes - } - return nil -} - -// Optional, feature-specific configuration that lives on http listeners -type HttpListenerOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GrpcWeb *grpc_web.GrpcWeb `protobuf:"bytes,1,opt,name=grpc_web,json=grpcWeb,proto3" json:"grpc_web,omitempty"` - HttpConnectionManagerSettings *hcm.HttpConnectionManagerSettings `protobuf:"bytes,2,opt,name=http_connection_manager_settings,json=httpConnectionManagerSettings,proto3" json:"http_connection_manager_settings,omitempty"` - // enable [Envoy health checks](https://www.envoyproxy.io/docs/envoy/v1.7.0/api-v2/config/filter/http/health_check/v2/health_check.proto) on this listener - HealthCheck *healthcheck.HealthCheck `protobuf:"bytes,4,opt,name=health_check,json=healthCheck,proto3" json:"health_check,omitempty"` - // Extensions will be passed along from Listeners, Gateways, VirtualServices, Routes, and Route tables to the - // underlying Proxy, making them useful for controllers, validation tools, etc. which interact with kubernetes yaml. - // - // Some sample use cases: - // * controllers, deployment pipelines, helm charts, etc. which wish to use extensions as a kind of opaque metadata. - // * In the future, Gloo may support gRPC-based plugins which communicate with the Gloo translator out-of-process. - // Opaque Extensions enables development of out-of-process plugins without requiring recompiling & redeploying Gloo's API. - Extensions *Extensions `protobuf:"bytes,3,opt,name=extensions,proto3" json:"extensions,omitempty"` - // Enterprise-only: Config for Web Application Firewall (WAF), supporting - // the popular ModSecurity 3.0 ruleset - Waf *waf.Settings `protobuf:"bytes,5,opt,name=waf,proto3" json:"waf,omitempty"` - // Enterprise-only: Config for data loss prevention - Dlp *dlp.FilterConfig `protobuf:"bytes,6,opt,name=dlp,proto3" json:"dlp,omitempty"` - // Enterprise-only: WASM related configuration [experimental!] - Wasm *wasm.PluginSource `protobuf:"bytes,7,opt,name=wasm,proto3" json:"wasm,omitempty"` - // Enterprise-only: External auth related settings - Extauth *v1.Settings `protobuf:"bytes,10,opt,name=extauth,proto3" json:"extauth,omitempty"` - // Enterprise-only: Settings for the rate limiting server itself - RatelimitServer *ratelimit.Settings `protobuf:"bytes,11,opt,name=ratelimit_server,json=ratelimitServer,proto3" json:"ratelimit_server,omitempty"` - // Gzip is an HTTP option which enables Gloo to compress - // data returned from an upstream service upon client request. - // Compression is useful in situations where large payloads need to be transmitted without compromising the response time. - // Example: - // ``` - // gzip: - // contentType: - // - "application/json" - // compressionLevel: BEST - // ``` - Gzip *v2.Gzip `protobuf:"bytes,8,opt,name=gzip,proto3" json:"gzip,omitempty"` - // Enterprise-only: Proxy latency - ProxyLatency *proxylatency.ProxyLatency `protobuf:"bytes,9,opt,name=proxy_latency,json=proxyLatency,proto3" json:"proxy_latency,omitempty"` - // Buffer can be used to set the maximum request size - // that the filter will buffer before the connection - // manager will stop buffering and return a 413 response. - Buffer *v3.Buffer `protobuf:"bytes,12,opt,name=buffer,proto3" json:"buffer,omitempty"` - // Csrf can be used to set percent of requests for which the CSRF filter is enabled, enable shadow-only mode - // where policies will be evaluated and tracked, but not enforced and add additional source origins - // that will be allowed in addition to the destination origin. - // For more, see https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/filter/http/csrf/v2/csrf.proto - Csrf *v31.CsrfPolicy `protobuf:"bytes,15,opt,name=csrf,proto3" json:"csrf,omitempty"` - // Exposed envoy config for the gRPC to JSON transcoding filter, - // envoy.filters.http.grpc_json_transcoder. - // For more, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/grpc_json_transcoder/v3/transcoder.proto - GrpcJsonTranscoder *grpc_json.GrpcJsonTranscoder `protobuf:"bytes,13,opt,name=grpc_json_transcoder,json=grpcJsonTranscoder,proto3" json:"grpc_json_transcoder,omitempty"` - // Enterprise-only: If using the HTTP header specified by cluster_header to direct traffic to a cluster, - // this option will sanitize that header from downstream traffic. - // Defaults to false - SanitizeClusterHeader *wrappers.BoolValue `protobuf:"bytes,14,opt,name=sanitize_cluster_header,json=sanitizeClusterHeader,proto3" json:"sanitize_cluster_header,omitempty"` - // Enterprise-only: Setting this value to true will grab the leftmost IP address from - // the x-forwarded-for header and set it as the downstream address. - // It is worth noting that the x-forwarded-for header can be tampered with by clients - // and should therefore be sanitized by any preceding proxies / load balancers if this option is to be used. - LeftmostXffAddress *wrappers.BoolValue `protobuf:"bytes,16,opt,name=leftmost_xff_address,json=leftmostXffAddress,proto3" json:"leftmost_xff_address,omitempty"` -} - -func (x *HttpListenerOptions) Reset() { - *x = HttpListenerOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HttpListenerOptions) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HttpListenerOptions) ProtoMessage() {} - -func (x *HttpListenerOptions) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use HttpListenerOptions.ProtoReflect.Descriptor instead. -func (*HttpListenerOptions) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_rawDescGZIP(), []int{2} -} - -func (x *HttpListenerOptions) GetGrpcWeb() *grpc_web.GrpcWeb { - if x != nil { - return x.GrpcWeb - } - return nil -} - -func (x *HttpListenerOptions) GetHttpConnectionManagerSettings() *hcm.HttpConnectionManagerSettings { - if x != nil { - return x.HttpConnectionManagerSettings - } - return nil -} - -func (x *HttpListenerOptions) GetHealthCheck() *healthcheck.HealthCheck { - if x != nil { - return x.HealthCheck - } - return nil -} - -func (x *HttpListenerOptions) GetExtensions() *Extensions { - if x != nil { - return x.Extensions - } - return nil -} - -func (x *HttpListenerOptions) GetWaf() *waf.Settings { - if x != nil { - return x.Waf - } - return nil -} - -func (x *HttpListenerOptions) GetDlp() *dlp.FilterConfig { - if x != nil { - return x.Dlp - } - return nil -} - -func (x *HttpListenerOptions) GetWasm() *wasm.PluginSource { - if x != nil { - return x.Wasm - } - return nil -} - -func (x *HttpListenerOptions) GetExtauth() *v1.Settings { - if x != nil { - return x.Extauth - } - return nil -} - -func (x *HttpListenerOptions) GetRatelimitServer() *ratelimit.Settings { - if x != nil { - return x.RatelimitServer - } - return nil -} - -func (x *HttpListenerOptions) GetGzip() *v2.Gzip { - if x != nil { - return x.Gzip - } - return nil -} - -func (x *HttpListenerOptions) GetProxyLatency() *proxylatency.ProxyLatency { - if x != nil { - return x.ProxyLatency - } - return nil -} - -func (x *HttpListenerOptions) GetBuffer() *v3.Buffer { - if x != nil { - return x.Buffer - } - return nil -} - -func (x *HttpListenerOptions) GetCsrf() *v31.CsrfPolicy { - if x != nil { - return x.Csrf - } - return nil -} - -func (x *HttpListenerOptions) GetGrpcJsonTranscoder() *grpc_json.GrpcJsonTranscoder { - if x != nil { - return x.GrpcJsonTranscoder - } - return nil -} - -func (x *HttpListenerOptions) GetSanitizeClusterHeader() *wrappers.BoolValue { - if x != nil { - return x.SanitizeClusterHeader - } - return nil -} - -func (x *HttpListenerOptions) GetLeftmostXffAddress() *wrappers.BoolValue { - if x != nil { - return x.LeftmostXffAddress - } - return nil -} - -// Optional, feature-specific configuration that lives on tcp listeners -type TcpListenerOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TcpProxySettings *tcp.TcpProxySettings `protobuf:"bytes,3,opt,name=tcp_proxy_settings,json=tcpProxySettings,proto3" json:"tcp_proxy_settings,omitempty"` -} - -func (x *TcpListenerOptions) Reset() { - *x = TcpListenerOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *TcpListenerOptions) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TcpListenerOptions) ProtoMessage() {} - -func (x *TcpListenerOptions) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TcpListenerOptions.ProtoReflect.Descriptor instead. -func (*TcpListenerOptions) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_rawDescGZIP(), []int{3} -} - -func (x *TcpListenerOptions) GetTcpProxySettings() *tcp.TcpProxySettings { - if x != nil { - return x.TcpProxySettings - } - return nil -} - -// Optional, feature-specific configuration that lives on virtual hosts. -// Each VirtualHostOptions object contains configuration for a specific feature. -// Note to developers: new Virtual Host plugins must be added to this struct -// to be usable by Gloo. (plugins currently need to be compiled into Gloo) -type VirtualHostOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Extensions will be passed along from Listeners, Gateways, VirtualServices, Routes, and Route tables to the - // underlying Proxy, making them useful for controllers, validation tools, etc. which interact with kubernetes yaml. - // - // Some sample use cases: - // * controllers, deployment pipelines, helm charts, etc. which wish to use extensions as a kind of opaque metadata. - // * In the future, Gloo may support gRPC-based plugins which communicate with the Gloo translator out-of-process. - // Opaque Extensions enables development of out-of-process plugins without requiring recompiling & redeploying Gloo's API. - Extensions *Extensions `protobuf:"bytes,1,opt,name=extensions,proto3" json:"extensions,omitempty"` - Retries *retries.RetryPolicy `protobuf:"bytes,5,opt,name=retries,proto3" json:"retries,omitempty"` - Stats *stats.Stats `protobuf:"bytes,10,opt,name=stats,proto3" json:"stats,omitempty"` - // Append/Remove headers on Requests or Responses on all routes contained in this Virtual Host - HeaderManipulation *headers.HeaderManipulation `protobuf:"bytes,2,opt,name=header_manipulation,json=headerManipulation,proto3" json:"header_manipulation,omitempty"` - // Defines a CORS policy for the virtual host - // If a CORS policy is also defined on the route matched by the request, the policies are merged. - Cors *cors.CorsPolicy `protobuf:"bytes,3,opt,name=cors,proto3" json:"cors,omitempty"` - // Transformations to apply. Note: this field is superseded by `staged_transformations`. - // If `staged_transformations.regular` is set, this field will be ignored. - // - // Deprecated: Do not use. - Transformations *transformation.Transformations `protobuf:"bytes,4,opt,name=transformations,proto3" json:"transformations,omitempty"` - // Enterprise-only: Config for GlooE rate-limiting using simplified (gloo-specific) API - RatelimitBasic *ratelimit.IngressRateLimit `protobuf:"bytes,6,opt,name=ratelimit_basic,json=ratelimitBasic,proto3" json:"ratelimit_basic,omitempty"` - // Types that are assignable to RateLimitConfigType: - // *VirtualHostOptions_Ratelimit - // *VirtualHostOptions_RateLimitConfigs - RateLimitConfigType isVirtualHostOptions_RateLimitConfigType `protobuf_oneof:"rate_limit_config_type"` - // Enterprise-only: Config for Web Application Firewall (WAF), supporting - // the popular ModSecurity 3.0 ruleset - Waf *waf.Settings `protobuf:"bytes,8,opt,name=waf,proto3" json:"waf,omitempty"` - // Types that are assignable to JwtConfig: - // *VirtualHostOptions_Jwt - // *VirtualHostOptions_JwtStaged - JwtConfig isVirtualHostOptions_JwtConfig `protobuf_oneof:"jwt_config"` - // Enterprise-only: Config for RBAC (currently only supports RBAC based on JWT claims) - Rbac *rbac.ExtensionSettings `protobuf:"bytes,11,opt,name=rbac,proto3" json:"rbac,omitempty"` - // Enterprise-only: Authentication configuration - Extauth *v1.ExtAuthExtension `protobuf:"bytes,12,opt,name=extauth,proto3" json:"extauth,omitempty"` - // Enterprise-only: Config for data loss prevention - Dlp *dlp.Config `protobuf:"bytes,13,opt,name=dlp,proto3" json:"dlp,omitempty"` - // BufferPerRoute can be used to set the maximum request size - // that the filter will buffer before the connection - // manager will stop buffering and return a 413 response. - // Note: If you have not set a global config (at the gateway level), this - // override will not do anything by itself. - BufferPerRoute *v3.BufferPerRoute `protobuf:"bytes,14,opt,name=buffer_per_route,json=bufferPerRoute,proto3" json:"buffer_per_route,omitempty"` - // Csrf can be used to set percent of requests for which the CSRF filter is enabled, enable shadow-only mode - // where policies will be evaluated and tracked, but not enforced and add additional source origins - // that will be allowed in addition to the destination origin. - // For more, see https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/filter/http/csrf/v2/csrf.proto - Csrf *v31.CsrfPolicy `protobuf:"bytes,18,opt,name=csrf,proto3" json:"csrf,omitempty"` - // IncludeRequestAttemptCount decides whether the x-envoy-attempt-count header - // should be included in the upstream request. - // Setting this option will cause it to override any existing header value, - // so in the case of two Envoys on the request path with this option enabled, - // the upstream will see the attempt count as perceived by the second Envoy. - // Defaults to false. - IncludeRequestAttemptCount *wrappers.BoolValue `protobuf:"bytes,15,opt,name=include_request_attempt_count,json=includeRequestAttemptCount,proto3" json:"include_request_attempt_count,omitempty"` - // IncludeAttemptCountInResponse decides whether the x-envoy-attempt-count header - // should be included in the downstream response. - // Setting this option will cause the router to override any existing header value, - // so in the case of two Envoys on the request path with this option enabled, - // the downstream will see the attempt count as perceived by the Envoy closest upstream from itself. - // Defaults to false. - IncludeAttemptCountInResponse *wrappers.BoolValue `protobuf:"bytes,16,opt,name=include_attempt_count_in_response,json=includeAttemptCountInResponse,proto3" json:"include_attempt_count_in_response,omitempty"` - // Early transformations stage. These transformations run before most other options are processed. - // If the `regular` field is set in here, the `transformations` field is ignored. - StagedTransformations *transformation.TransformationStages `protobuf:"bytes,17,opt,name=staged_transformations,json=stagedTransformations,proto3" json:"staged_transformations,omitempty"` -} - -func (x *VirtualHostOptions) Reset() { - *x = VirtualHostOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *VirtualHostOptions) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VirtualHostOptions) ProtoMessage() {} - -func (x *VirtualHostOptions) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use VirtualHostOptions.ProtoReflect.Descriptor instead. -func (*VirtualHostOptions) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_rawDescGZIP(), []int{4} -} - -func (x *VirtualHostOptions) GetExtensions() *Extensions { - if x != nil { - return x.Extensions - } - return nil -} - -func (x *VirtualHostOptions) GetRetries() *retries.RetryPolicy { - if x != nil { - return x.Retries - } - return nil -} - -func (x *VirtualHostOptions) GetStats() *stats.Stats { - if x != nil { - return x.Stats - } - return nil -} - -func (x *VirtualHostOptions) GetHeaderManipulation() *headers.HeaderManipulation { - if x != nil { - return x.HeaderManipulation - } - return nil -} - -func (x *VirtualHostOptions) GetCors() *cors.CorsPolicy { - if x != nil { - return x.Cors - } - return nil -} - -// Deprecated: Do not use. -func (x *VirtualHostOptions) GetTransformations() *transformation.Transformations { - if x != nil { - return x.Transformations - } - return nil -} - -func (x *VirtualHostOptions) GetRatelimitBasic() *ratelimit.IngressRateLimit { - if x != nil { - return x.RatelimitBasic - } - return nil -} - -func (m *VirtualHostOptions) GetRateLimitConfigType() isVirtualHostOptions_RateLimitConfigType { - if m != nil { - return m.RateLimitConfigType - } - return nil -} - -func (x *VirtualHostOptions) GetRatelimit() *ratelimit.RateLimitVhostExtension { - if x, ok := x.GetRateLimitConfigType().(*VirtualHostOptions_Ratelimit); ok { - return x.Ratelimit - } - return nil -} - -func (x *VirtualHostOptions) GetRateLimitConfigs() *ratelimit.RateLimitConfigRefs { - if x, ok := x.GetRateLimitConfigType().(*VirtualHostOptions_RateLimitConfigs); ok { - return x.RateLimitConfigs - } - return nil -} - -func (x *VirtualHostOptions) GetWaf() *waf.Settings { - if x != nil { - return x.Waf - } - return nil -} - -func (m *VirtualHostOptions) GetJwtConfig() isVirtualHostOptions_JwtConfig { - if m != nil { - return m.JwtConfig - } - return nil -} - -// Deprecated: Do not use. -func (x *VirtualHostOptions) GetJwt() *jwt.VhostExtension { - if x, ok := x.GetJwtConfig().(*VirtualHostOptions_Jwt); ok { - return x.Jwt - } - return nil -} - -func (x *VirtualHostOptions) GetJwtStaged() *jwt.JwtStagedVhostExtension { - if x, ok := x.GetJwtConfig().(*VirtualHostOptions_JwtStaged); ok { - return x.JwtStaged - } - return nil -} - -func (x *VirtualHostOptions) GetRbac() *rbac.ExtensionSettings { - if x != nil { - return x.Rbac - } - return nil -} - -func (x *VirtualHostOptions) GetExtauth() *v1.ExtAuthExtension { - if x != nil { - return x.Extauth - } - return nil -} - -func (x *VirtualHostOptions) GetDlp() *dlp.Config { - if x != nil { - return x.Dlp - } - return nil -} - -func (x *VirtualHostOptions) GetBufferPerRoute() *v3.BufferPerRoute { - if x != nil { - return x.BufferPerRoute - } - return nil -} - -func (x *VirtualHostOptions) GetCsrf() *v31.CsrfPolicy { - if x != nil { - return x.Csrf - } - return nil -} - -func (x *VirtualHostOptions) GetIncludeRequestAttemptCount() *wrappers.BoolValue { - if x != nil { - return x.IncludeRequestAttemptCount - } - return nil -} - -func (x *VirtualHostOptions) GetIncludeAttemptCountInResponse() *wrappers.BoolValue { - if x != nil { - return x.IncludeAttemptCountInResponse - } - return nil -} - -func (x *VirtualHostOptions) GetStagedTransformations() *transformation.TransformationStages { - if x != nil { - return x.StagedTransformations - } - return nil -} - -type isVirtualHostOptions_RateLimitConfigType interface { - isVirtualHostOptions_RateLimitConfigType() -} - -type VirtualHostOptions_Ratelimit struct { - // Enterprise-only: Partial config for GlooE rate-limiting based on Envoy's rate-limit service; - // supports Envoy's rate-limit service API. (reference here: https://github.com/lyft/ratelimit#configuration) - // Configure rate-limit *actions* here, which define how request characteristics get translated into - // descriptors used by the rate-limit service for rate-limiting. Configure rate-limit *descriptors* and - // their associated limits on the Gloo settings. - // Only one of `ratelimit` or `rate_limit_configs` can be set. - Ratelimit *ratelimit.RateLimitVhostExtension `protobuf:"bytes,70,opt,name=ratelimit,proto3,oneof"` -} - -type VirtualHostOptions_RateLimitConfigs struct { - // References to RateLimitConfig resources. This is used to configure the GlooE rate limit server. - // Only one of `ratelimit` or `rate_limit_configs` can be set. - RateLimitConfigs *ratelimit.RateLimitConfigRefs `protobuf:"bytes,71,opt,name=rate_limit_configs,json=rateLimitConfigs,proto3,oneof"` -} - -func (*VirtualHostOptions_Ratelimit) isVirtualHostOptions_RateLimitConfigType() {} - -func (*VirtualHostOptions_RateLimitConfigs) isVirtualHostOptions_RateLimitConfigType() {} - -type isVirtualHostOptions_JwtConfig interface { - isVirtualHostOptions_JwtConfig() -} - -type VirtualHostOptions_Jwt struct { - // Enterprise-only: Config for reading and verifying JWTs. Copy verifiable information from JWTs into other - // headers to make routing decisions or combine with RBAC for fine-grained access control. - // This has been deprecated in favor of staged jwt. The same configuration can be achieved through staged jwt - // using AfterExtAuth. - // - // Deprecated: Do not use. - Jwt *jwt.VhostExtension `protobuf:"bytes,9,opt,name=jwt,proto3,oneof"` -} - -type VirtualHostOptions_JwtStaged struct { - // Enterprise-only: Config for reading and verifying JWTs. Copy verifiable information from JWTs into other - // headers to make routing decisions or combine with RBAC for fine-grained access control. - // JWT configuration has stages "BeforeExtAuth" and "AfterExtAuth". BeforeExtAuth JWT - // validation runs before the external authentication service. This is useful when JWT - // is used in conjunction with other auth mechanisms specified in the [boolean expression Extauth API](https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto.sk/#authconfig). - // AfterExtAuth validation runs after external authentication service, which is useful for verifying - // JWTs obtained during extauth (e.g. oauth/oidc) - JwtStaged *jwt.JwtStagedVhostExtension `protobuf:"bytes,19,opt,name=jwt_staged,json=jwtStaged,proto3,oneof"` -} - -func (*VirtualHostOptions_Jwt) isVirtualHostOptions_JwtConfig() {} - -func (*VirtualHostOptions_JwtStaged) isVirtualHostOptions_JwtConfig() {} - -// Optional, feature-specific configuration that lives on routes. -// Each RouteOptions object contains configuration for a specific feature. -// Note to developers: new Route plugins must be added to this struct -// to be usable by Gloo. (plugins currently need to be compiled into Gloo) -type RouteOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Transformations to apply. Note: this field is superseded by `staged_transformations`. - // If `staged_transformations.regular` is set, this field will be ignored. - // - // Deprecated: Do not use. - Transformations *transformation.Transformations `protobuf:"bytes,1,opt,name=transformations,proto3" json:"transformations,omitempty"` - Faults *faultinjection.RouteFaults `protobuf:"bytes,2,opt,name=faults,proto3" json:"faults,omitempty"` - // For requests matched on this route, rewrite the HTTP request path to the provided value before forwarding upstream - PrefixRewrite *wrappers.StringValue `protobuf:"bytes,3,opt,name=prefix_rewrite,json=prefixRewrite,proto3" json:"prefix_rewrite,omitempty"` - // Specifies the upstream timeout for the route. If not specified, the default is 15s. This spans between the point - // at which the entire downstream request (i.e. end-of-stream) has been processed and when the upstream response has - // been completely processed. A value of 0 will disable the route’s timeout. - Timeout *duration.Duration `protobuf:"bytes,4,opt,name=timeout,proto3" json:"timeout,omitempty"` - Retries *retries.RetryPolicy `protobuf:"bytes,5,opt,name=retries,proto3" json:"retries,omitempty"` - // Extensions will be passed along from Listeners, Gateways, VirtualServices, Routes, and Route tables to the - // underlying Proxy, making them useful for controllers, validation tools, etc. which interact with kubernetes yaml. - // - // Some sample use cases: - // * controllers, deployment pipelines, helm charts, etc. which wish to use extensions as a kind of opaque metadata. - // * In the future, Gloo may support gRPC-based plugins which communicate with the Gloo translator out-of-process. - // Opaque Extensions enables development of out-of-process plugins without requiring recompiling & redeploying Gloo's API. - Extensions *Extensions `protobuf:"bytes,6,opt,name=extensions,proto3" json:"extensions,omitempty"` - // Defines route-specific tracing configuration. - // See here for additional information on Envoy's tracing capabilities: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/observability/tracing.html - // See here for additional information about configuring tracing with Gloo: https://gloo.solo.io/observability/tracing/ - Tracing *tracing.RouteTracingSettings `protobuf:"bytes,7,opt,name=tracing,proto3" json:"tracing,omitempty"` - // Specifies traffic shadowing configuration for the route. - // See here for additional information on Envoy's shadowing capabilities: https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/route/route.proto#envoy-api-msg-route-routeaction-requestmirrorpolicy - Shadowing *shadowing.RouteShadowing `protobuf:"bytes,8,opt,name=shadowing,proto3" json:"shadowing,omitempty"` - // Append/Remove headers on Requests or Responses on this Route - HeaderManipulation *headers.HeaderManipulation `protobuf:"bytes,9,opt,name=header_manipulation,json=headerManipulation,proto3" json:"header_manipulation,omitempty"` - // For requests matched on this route, rewrite the Host header before forwarding upstream - // - // Types that are assignable to HostRewriteType: - // *RouteOptions_HostRewrite - // *RouteOptions_AutoHostRewrite - HostRewriteType isRouteOptions_HostRewriteType `protobuf_oneof:"host_rewrite_type"` - // Defines a CORS policy for the route - // If a CORS policy is also defined on the route's virtual host, the policies are merged. - Cors *cors.CorsPolicy `protobuf:"bytes,11,opt,name=cors,proto3" json:"cors,omitempty"` - // For routes served by a hashing load balancer, this defines the input to the hash key - // Gloo configures Envoy with the first available RouteActionHashConfig among the following ordered list of providers: - // - route, upstream, virtual service - LbHash *lbhash.RouteActionHashConfig `protobuf:"bytes,12,opt,name=lb_hash,json=lbHash,proto3" json:"lb_hash,omitempty"` - // Route configuration for protocol upgrade requests. - Upgrades []*protocol_upgrade.ProtocolUpgradeConfig `protobuf:"bytes,21,rep,name=upgrades,proto3" json:"upgrades,omitempty"` - // Enterprise-only: Config for GlooE rate-limiting using simplified (gloo-specific) API - RatelimitBasic *ratelimit.IngressRateLimit `protobuf:"bytes,13,opt,name=ratelimit_basic,json=ratelimitBasic,proto3" json:"ratelimit_basic,omitempty"` - // Types that are assignable to RateLimitConfigType: - // *RouteOptions_Ratelimit - // *RouteOptions_RateLimitConfigs - RateLimitConfigType isRouteOptions_RateLimitConfigType `protobuf_oneof:"rate_limit_config_type"` - // Enterprise-only: Config for Web Application Firewall (WAF), supporting - // the popular ModSecurity 3.0 ruleset - Waf *waf.Settings `protobuf:"bytes,15,opt,name=waf,proto3" json:"waf,omitempty"` - // Types that are assignable to JwtConfig: - // *RouteOptions_Jwt - // *RouteOptions_JwtStaged - JwtConfig isRouteOptions_JwtConfig `protobuf_oneof:"jwt_config"` - // Enterprise-only: Config for RBAC (currently only supports RBAC based on JWT claims) - Rbac *rbac.ExtensionSettings `protobuf:"bytes,17,opt,name=rbac,proto3" json:"rbac,omitempty"` - // Enterprise-only: Authentication configuration - Extauth *v1.ExtAuthExtension `protobuf:"bytes,18,opt,name=extauth,proto3" json:"extauth,omitempty"` - // Enterprise-only: Config for data loss prevention - Dlp *dlp.Config `protobuf:"bytes,20,opt,name=dlp,proto3" json:"dlp,omitempty"` - // BufferPerRoute can be used to set the maximum request size - // that the filter will buffer before the connection - // manager will stop buffering and return a 413 response. - // Note: If you have not set a global config (at the gateway level), this - // override will not do anything by itself. - BufferPerRoute *v3.BufferPerRoute `protobuf:"bytes,22,opt,name=buffer_per_route,json=bufferPerRoute,proto3" json:"buffer_per_route,omitempty"` - // Csrf can be used to set percent of requests for which the CSRF filter is enabled, enable shadow-only mode - // where policies will be evaluated and tracked, but not enforced and add additional source origins - // that will be allowed in addition to the destination origin. - // For more, see https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/filter/http/csrf/v2/csrf.proto - Csrf *v31.CsrfPolicy `protobuf:"bytes,24,opt,name=csrf,proto3" json:"csrf,omitempty"` - // Early transformations stage. These transformations run before most other options are processed. - // If the `regular` field is set in here, the `transformations` field is ignored. - StagedTransformations *transformation.TransformationStages `protobuf:"bytes,23,opt,name=staged_transformations,json=stagedTransformations,proto3" json:"staged_transformations,omitempty"` - // This field can be used to provide additional information about the route. This metadata can be consumed - // by the Envoy filters that process requests that match the route. For more info about metadata, see - // [here](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/data_sharing_between_filters#metadata). - // - // The value of this field will be propagated to the `metadata` attribute of the corresponding Envoy route. - // Please refer to the [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#config-route-v3-route) - // for more details about the `metadata` attribute. - EnvoyMetadata map[string]*_struct.Struct `protobuf:"bytes,26,rep,name=envoy_metadata,json=envoyMetadata,proto3" json:"envoy_metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // For requests matched on this route, rewrite the HTTP request path according to the provided regex pattern before forwarding upstream - // Please refer to the [Envoy documentation](https://www.envoyproxy.io/docs/envoy/v1.14.1/api-v3/config/route/v3/route_components.proto#envoy-v3-api-field-config-route-v3-routeaction-regex-rewrite) - // for more details about the `regex_rewrite` attribute - RegexRewrite *v32.RegexMatchAndSubstitute `protobuf:"bytes,27,opt,name=regex_rewrite,json=regexRewrite,proto3" json:"regex_rewrite,omitempty"` -} - -func (x *RouteOptions) Reset() { - *x = RouteOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RouteOptions) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RouteOptions) ProtoMessage() {} - -func (x *RouteOptions) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RouteOptions.ProtoReflect.Descriptor instead. -func (*RouteOptions) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_rawDescGZIP(), []int{5} -} - -// Deprecated: Do not use. -func (x *RouteOptions) GetTransformations() *transformation.Transformations { - if x != nil { - return x.Transformations - } - return nil -} - -func (x *RouteOptions) GetFaults() *faultinjection.RouteFaults { - if x != nil { - return x.Faults - } - return nil -} - -func (x *RouteOptions) GetPrefixRewrite() *wrappers.StringValue { - if x != nil { - return x.PrefixRewrite - } - return nil -} - -func (x *RouteOptions) GetTimeout() *duration.Duration { - if x != nil { - return x.Timeout - } - return nil -} - -func (x *RouteOptions) GetRetries() *retries.RetryPolicy { - if x != nil { - return x.Retries - } - return nil -} - -func (x *RouteOptions) GetExtensions() *Extensions { - if x != nil { - return x.Extensions - } - return nil -} - -func (x *RouteOptions) GetTracing() *tracing.RouteTracingSettings { - if x != nil { - return x.Tracing - } - return nil -} - -func (x *RouteOptions) GetShadowing() *shadowing.RouteShadowing { - if x != nil { - return x.Shadowing - } - return nil -} - -func (x *RouteOptions) GetHeaderManipulation() *headers.HeaderManipulation { - if x != nil { - return x.HeaderManipulation - } - return nil -} - -func (m *RouteOptions) GetHostRewriteType() isRouteOptions_HostRewriteType { - if m != nil { - return m.HostRewriteType - } - return nil -} - -func (x *RouteOptions) GetHostRewrite() string { - if x, ok := x.GetHostRewriteType().(*RouteOptions_HostRewrite); ok { - return x.HostRewrite - } - return "" -} - -func (x *RouteOptions) GetAutoHostRewrite() *wrappers.BoolValue { - if x, ok := x.GetHostRewriteType().(*RouteOptions_AutoHostRewrite); ok { - return x.AutoHostRewrite - } - return nil -} - -func (x *RouteOptions) GetCors() *cors.CorsPolicy { - if x != nil { - return x.Cors - } - return nil -} - -func (x *RouteOptions) GetLbHash() *lbhash.RouteActionHashConfig { - if x != nil { - return x.LbHash - } - return nil -} - -func (x *RouteOptions) GetUpgrades() []*protocol_upgrade.ProtocolUpgradeConfig { - if x != nil { - return x.Upgrades - } - return nil -} - -func (x *RouteOptions) GetRatelimitBasic() *ratelimit.IngressRateLimit { - if x != nil { - return x.RatelimitBasic - } - return nil -} - -func (m *RouteOptions) GetRateLimitConfigType() isRouteOptions_RateLimitConfigType { - if m != nil { - return m.RateLimitConfigType - } - return nil -} - -func (x *RouteOptions) GetRatelimit() *ratelimit.RateLimitRouteExtension { - if x, ok := x.GetRateLimitConfigType().(*RouteOptions_Ratelimit); ok { - return x.Ratelimit - } - return nil -} - -func (x *RouteOptions) GetRateLimitConfigs() *ratelimit.RateLimitConfigRefs { - if x, ok := x.GetRateLimitConfigType().(*RouteOptions_RateLimitConfigs); ok { - return x.RateLimitConfigs - } - return nil -} - -func (x *RouteOptions) GetWaf() *waf.Settings { - if x != nil { - return x.Waf - } - return nil -} - -func (m *RouteOptions) GetJwtConfig() isRouteOptions_JwtConfig { - if m != nil { - return m.JwtConfig - } - return nil -} - -// Deprecated: Do not use. -func (x *RouteOptions) GetJwt() *jwt.RouteExtension { - if x, ok := x.GetJwtConfig().(*RouteOptions_Jwt); ok { - return x.Jwt - } - return nil -} - -func (x *RouteOptions) GetJwtStaged() *jwt.JwtStagedRouteExtension { - if x, ok := x.GetJwtConfig().(*RouteOptions_JwtStaged); ok { - return x.JwtStaged - } - return nil -} - -func (x *RouteOptions) GetRbac() *rbac.ExtensionSettings { - if x != nil { - return x.Rbac - } - return nil -} - -func (x *RouteOptions) GetExtauth() *v1.ExtAuthExtension { - if x != nil { - return x.Extauth - } - return nil -} - -func (x *RouteOptions) GetDlp() *dlp.Config { - if x != nil { - return x.Dlp - } - return nil -} - -func (x *RouteOptions) GetBufferPerRoute() *v3.BufferPerRoute { - if x != nil { - return x.BufferPerRoute - } - return nil -} - -func (x *RouteOptions) GetCsrf() *v31.CsrfPolicy { - if x != nil { - return x.Csrf - } - return nil -} - -func (x *RouteOptions) GetStagedTransformations() *transformation.TransformationStages { - if x != nil { - return x.StagedTransformations - } - return nil -} - -func (x *RouteOptions) GetEnvoyMetadata() map[string]*_struct.Struct { - if x != nil { - return x.EnvoyMetadata - } - return nil -} - -func (x *RouteOptions) GetRegexRewrite() *v32.RegexMatchAndSubstitute { - if x != nil { - return x.RegexRewrite - } - return nil -} - -type isRouteOptions_HostRewriteType interface { - isRouteOptions_HostRewriteType() -} - -type RouteOptions_HostRewrite struct { - // Indicates that during forwarding, the host header will be swapped with this value. - HostRewrite string `protobuf:"bytes,10,opt,name=host_rewrite,json=hostRewrite,proto3,oneof"` -} - -type RouteOptions_AutoHostRewrite struct { - // Enable/Disable auto host re-write. - // Indicates that the host header will be swapped with the hostname of the upstream host. - // This setting is only honored for upstreams that use DNS resolution (i.e., their generated Envoy cluster is - // of type STRICT_DNS or LOGICAL_DNS -- think aws, azure, or static upstreams with hostnames) - AutoHostRewrite *wrappers.BoolValue `protobuf:"bytes,19,opt,name=auto_host_rewrite,json=autoHostRewrite,proto3,oneof"` -} - -func (*RouteOptions_HostRewrite) isRouteOptions_HostRewriteType() {} - -func (*RouteOptions_AutoHostRewrite) isRouteOptions_HostRewriteType() {} - -type isRouteOptions_RateLimitConfigType interface { - isRouteOptions_RateLimitConfigType() -} - -type RouteOptions_Ratelimit struct { - // Enterprise-only: Partial config for GlooE rate-limiting based on Envoy's rate-limit service; - // supports Envoy's rate-limit service API. (reference here: https://github.com/lyft/ratelimit#configuration) - // Configure rate-limit *actions* here, which define how request characteristics get translated into - // descriptors used by the rate-limit service for rate-limiting. Configure rate-limit *descriptors* and - // their associated limits on the Gloo settings. - // Only one of `ratelimit` or `rate_limit_configs` can be set. - Ratelimit *ratelimit.RateLimitRouteExtension `protobuf:"bytes,140,opt,name=ratelimit,proto3,oneof"` -} - -type RouteOptions_RateLimitConfigs struct { - // References to RateLimitConfig resources. This is used to configure the GlooE rate limit server. - // Only one of `ratelimit` or `rate_limit_configs` can be set. - RateLimitConfigs *ratelimit.RateLimitConfigRefs `protobuf:"bytes,141,opt,name=rate_limit_configs,json=rateLimitConfigs,proto3,oneof"` -} - -func (*RouteOptions_Ratelimit) isRouteOptions_RateLimitConfigType() {} - -func (*RouteOptions_RateLimitConfigs) isRouteOptions_RateLimitConfigType() {} - -type isRouteOptions_JwtConfig interface { - isRouteOptions_JwtConfig() -} - -type RouteOptions_Jwt struct { - // Enterprise-only: Config for reading and verifying JWTs. Copy verifiable information from JWTs into other - // headers to make routing decisions or combine with RBAC for fine-grained access control. - // This has been deprecated in favor of staged jwt. The same configuration can be achieved through staged jwt - // using AfterExtAuth. - // - // Deprecated: Do not use. - Jwt *jwt.RouteExtension `protobuf:"bytes,16,opt,name=jwt,proto3,oneof"` -} - -type RouteOptions_JwtStaged struct { - // Enterprise-only: Config for reading and verifying JWTs. Copy verifiable information from JWTs into other - // headers to make routing decisions or combine with RBAC for fine-grained access control. - // JWT configuration has stages "BeforeExtAuth" and "AfterExtAuth". BeforeExtAuth JWT - // validation runs before the external authentication service. This is useful when JWT - // is used in conjunction with other auth mechanisms specified in the [boolean expression Extauth API](https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto.sk/#authconfig). - // AfterExtAuth validation runs after external authentication service, which is useful for verifying - // JWTs obtained during extauth (e.g. oauth/oidc) - JwtStaged *jwt.JwtStagedRouteExtension `protobuf:"bytes,25,opt,name=jwt_staged,json=jwtStaged,proto3,oneof"` -} - -func (*RouteOptions_Jwt) isRouteOptions_JwtConfig() {} - -func (*RouteOptions_JwtStaged) isRouteOptions_JwtConfig() {} - -// Configuration for Destinations that are tied to the UpstreamSpec or ServiceSpec on that destination -type DestinationSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Note to developers: new DestinationSpecs must be added to this oneof field - // to be usable by Gloo. - // - // Types that are assignable to DestinationType: - // *DestinationSpec_Aws - // *DestinationSpec_Azure - // *DestinationSpec_Rest - // *DestinationSpec_Grpc - DestinationType isDestinationSpec_DestinationType `protobuf_oneof:"destination_type"` -} - -func (x *DestinationSpec) Reset() { - *x = DestinationSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DestinationSpec) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DestinationSpec) ProtoMessage() {} - -func (x *DestinationSpec) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DestinationSpec.ProtoReflect.Descriptor instead. -func (*DestinationSpec) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_rawDescGZIP(), []int{6} -} - -func (m *DestinationSpec) GetDestinationType() isDestinationSpec_DestinationType { - if m != nil { - return m.DestinationType - } - return nil -} - -func (x *DestinationSpec) GetAws() *aws.DestinationSpec { - if x, ok := x.GetDestinationType().(*DestinationSpec_Aws); ok { - return x.Aws - } - return nil -} - -func (x *DestinationSpec) GetAzure() *azure.DestinationSpec { - if x, ok := x.GetDestinationType().(*DestinationSpec_Azure); ok { - return x.Azure - } - return nil -} - -func (x *DestinationSpec) GetRest() *rest.DestinationSpec { - if x, ok := x.GetDestinationType().(*DestinationSpec_Rest); ok { - return x.Rest - } - return nil -} - -func (x *DestinationSpec) GetGrpc() *grpc.DestinationSpec { - if x, ok := x.GetDestinationType().(*DestinationSpec_Grpc); ok { - return x.Grpc - } - return nil -} - -type isDestinationSpec_DestinationType interface { - isDestinationSpec_DestinationType() -} - -type DestinationSpec_Aws struct { - Aws *aws.DestinationSpec `protobuf:"bytes,1,opt,name=aws,proto3,oneof"` -} - -type DestinationSpec_Azure struct { - Azure *azure.DestinationSpec `protobuf:"bytes,2,opt,name=azure,proto3,oneof"` -} - -type DestinationSpec_Rest struct { - Rest *rest.DestinationSpec `protobuf:"bytes,3,opt,name=rest,proto3,oneof"` -} - -type DestinationSpec_Grpc struct { - Grpc *grpc.DestinationSpec `protobuf:"bytes,4,opt,name=grpc,proto3,oneof"` -} - -func (*DestinationSpec_Aws) isDestinationSpec_DestinationType() {} - -func (*DestinationSpec_Azure) isDestinationSpec_DestinationType() {} - -func (*DestinationSpec_Rest) isDestinationSpec_DestinationType() {} - -func (*DestinationSpec_Grpc) isDestinationSpec_DestinationType() {} - -// Optional, feature-specific configuration that is applied when a specific weighted destination -// is selected for routing. -type WeightedDestinationOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Append/Remove headers on Requests or Responses to/from this Weighted Destination - HeaderManipulation *headers.HeaderManipulation `protobuf:"bytes,1,opt,name=header_manipulation,json=headerManipulation,proto3" json:"header_manipulation,omitempty"` - // Transformations to apply. Note: this field is superseded by `staged_transformations`. - // If `staged_transformations.regular` is set, this field will be ignored. - // - // Deprecated: Do not use. - Transformations *transformation.Transformations `protobuf:"bytes,2,opt,name=transformations,proto3" json:"transformations,omitempty"` - // Extensions will be passed along from Listeners, Gateways, VirtualServices, Routes, and Route tables to the - // underlying Proxy, making them useful for controllers, validation tools, etc. which interact with kubernetes yaml. - // - // Some sample use cases: - // * controllers, deployment pipelines, helm charts, etc. which wish to use extensions as a kind of opaque metadata. - // * In the future, Gloo may support gRPC-based plugins which communicate with the Gloo translator out-of-process. - // Opaque Extensions enables development of out-of-process plugins without requiring recompiling & redeploying Gloo's API. - Extensions *Extensions `protobuf:"bytes,3,opt,name=extensions,proto3" json:"extensions,omitempty"` - // Enterprise-only: Authentication configuration - Extauth *v1.ExtAuthExtension `protobuf:"bytes,4,opt,name=extauth,proto3" json:"extauth,omitempty"` - // BufferPerRoute can be used to set the maximum request size - // that the filter will buffer before the connection - // manager will stop buffering and return a 413 response. - // Note: If you have not set a global config (at the gateway level), this - // override will not do anything by itself. - BufferPerRoute *v3.BufferPerRoute `protobuf:"bytes,5,opt,name=buffer_per_route,json=bufferPerRoute,proto3" json:"buffer_per_route,omitempty"` - // Csrf can be used to set percent of requests for which the CSRF filter is enabled, enable shadow-only mode - // where policies will be evaluated and tracked, but not enforced and add additional source origins - // that will be allowed in addition to the destination origin. - // For more, see https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/filter/http/csrf/v2/csrf.proto - Csrf *v31.CsrfPolicy `protobuf:"bytes,7,opt,name=csrf,proto3" json:"csrf,omitempty"` - // Early transformations stage. These transformations run before most other options are processed. - // If the `regular` field is set in here, the `transformations` field is ignored. - StagedTransformations *transformation.TransformationStages `protobuf:"bytes,6,opt,name=staged_transformations,json=stagedTransformations,proto3" json:"staged_transformations,omitempty"` -} - -func (x *WeightedDestinationOptions) Reset() { - *x = WeightedDestinationOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *WeightedDestinationOptions) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WeightedDestinationOptions) ProtoMessage() {} - -func (x *WeightedDestinationOptions) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WeightedDestinationOptions.ProtoReflect.Descriptor instead. -func (*WeightedDestinationOptions) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_rawDescGZIP(), []int{7} -} - -func (x *WeightedDestinationOptions) GetHeaderManipulation() *headers.HeaderManipulation { - if x != nil { - return x.HeaderManipulation - } - return nil -} - -// Deprecated: Do not use. -func (x *WeightedDestinationOptions) GetTransformations() *transformation.Transformations { - if x != nil { - return x.Transformations - } - return nil -} - -func (x *WeightedDestinationOptions) GetExtensions() *Extensions { - if x != nil { - return x.Extensions - } - return nil -} - -func (x *WeightedDestinationOptions) GetExtauth() *v1.ExtAuthExtension { - if x != nil { - return x.Extauth - } - return nil -} - -func (x *WeightedDestinationOptions) GetBufferPerRoute() *v3.BufferPerRoute { - if x != nil { - return x.BufferPerRoute - } - return nil -} - -func (x *WeightedDestinationOptions) GetCsrf() *v31.CsrfPolicy { - if x != nil { - return x.Csrf - } - return nil -} - -func (x *WeightedDestinationOptions) GetStagedTransformations() *transformation.TransformationStages { - if x != nil { - return x.StagedTransformations - } - return nil -} - -var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto protoreflect.FileDescriptor - -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_rawDesc = []byte{ - 0x0a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, - 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, - 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x6f, 0x72, 0x73, 0x2f, 0x63, 0x6f, 0x72, 0x73, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, - 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, - 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x65, 0x73, 0x74, - 0x2f, 0x72, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, - 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, - 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6c, 0x73, 0x2f, 0x61, 0x6c, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, - 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, - 0x72, 0x70, 0x63, 0x5f, 0x77, 0x65, 0x62, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x77, 0x65, 0x62, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, - 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x72, - 0x70, 0x63, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6a, 0x73, 0x6f, - 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, - 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, - 0x63, 0x6d, 0x2f, 0x68, 0x63, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x49, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, - 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x6c, 0x62, 0x68, 0x61, 0x73, 0x68, 0x2f, 0x6c, 0x62, 0x68, 0x61, 0x73, - 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, - 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, - 0x68, 0x61, 0x64, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x2f, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x69, - 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, - 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x74, 0x63, 0x70, 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4b, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, - 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2f, 0x74, 0x72, 0x61, - 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4b, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, - 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, - 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x69, 0x6e, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, - 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x77, 0x73, 0x2f, 0x61, 0x77, 0x73, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, - 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, - 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x77, 0x61, 0x73, 0x6d, - 0x2f, 0x77, 0x61, 0x73, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x47, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, - 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x2f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x53, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, - 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, - 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x5d, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, - 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, - 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, - 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x64, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, - 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, - 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x68, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x68, 0x74, 0x74, - 0x70, 0x2f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2f, 0x76, 0x33, 0x2f, 0x62, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x64, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, - 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, - 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x63, 0x73, 0x72, 0x66, - 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x73, 0x72, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x5f, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x67, 0x7a, 0x69, - 0x70, 0x2f, 0x76, 0x32, 0x2f, 0x67, 0x7a, 0x69, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x55, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2f, 0x76, 0x33, 0x2f, 0x72, 0x65, 0x67, 0x65, 0x78, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, - 0x2f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, - 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6a, 0x77, 0x74, 0x2f, 0x6a, 0x77, 0x74, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x5a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, - 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2f, 0x72, - 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x50, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x72, 0x62, 0x61, 0x63, 0x2f, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x77, 0x61, 0x66, 0x2f, 0x77, 0x61, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x64, 0x6c, 0x70, 0x2f, 0x64, 0x6c, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x59, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x78, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x32, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, - 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x73, - 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xe9, 0x02, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x64, 0x0a, 0x16, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x5f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x14, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, - 0x67, 0x67, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x38, 0x0a, 0x0a, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x66, 0x0a, 0x21, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x1d, 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x4e, - 0x0a, 0x0e, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0d, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x86, - 0x01, 0x0a, 0x19, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x69, 0x0a, 0x23, - 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, - 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1e, 0x6d, 0x61, 0x78, 0x44, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x53, 0x69, - 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xef, 0x09, 0x0a, 0x13, 0x48, 0x74, 0x74, 0x70, - 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x41, 0x0a, 0x08, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x77, 0x65, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x77, 0x65, 0x62, 0x2e, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x57, 0x65, 0x62, 0x52, 0x07, 0x67, 0x72, 0x70, 0x63, 0x57, - 0x65, 0x62, 0x12, 0x80, 0x01, 0x0a, 0x20, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x5f, 0x73, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, - 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x1d, 0x68, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x50, 0x0a, 0x0c, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x68, 0x65, - 0x61, 0x6c, 0x74, 0x68, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x0b, 0x68, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x34, 0x0a, 0x03, 0x77, 0x61, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x77, 0x61, 0x66, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x52, 0x03, 0x77, 0x61, 0x66, 0x12, 0x38, 0x0a, 0x03, 0x64, 0x6c, 0x70, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x64, 0x6c, - 0x70, 0x12, 0x3b, 0x0a, 0x04, 0x77, 0x61, 0x73, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x27, 0x2e, 0x77, 0x61, 0x73, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x04, 0x77, 0x61, 0x73, 0x6d, 0x12, 0x3b, - 0x0a, 0x07, 0x65, 0x78, 0x74, 0x61, 0x75, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x52, 0x07, 0x65, 0x78, 0x74, 0x61, 0x75, 0x74, 0x68, 0x12, 0x53, 0x0a, 0x10, 0x72, - 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, - 0x0f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x12, 0x42, 0x0a, 0x04, 0x67, 0x7a, 0x69, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, - 0x70, 0x2e, 0x67, 0x7a, 0x69, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x7a, 0x69, 0x70, 0x52, 0x04, - 0x67, 0x7a, 0x69, 0x70, 0x12, 0x5b, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x6c, 0x61, - 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x6e, - 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x6c, 0x61, 0x74, 0x65, - 0x6e, 0x63, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x4c, 0x61, 0x74, 0x65, - 0x6e, 0x63, 0x79, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, - 0x79, 0x12, 0x4f, 0x0a, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, - 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, - 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x52, 0x06, 0x62, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x04, 0x63, 0x73, 0x72, 0x66, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x39, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, - 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x63, 0x73, 0x72, 0x66, 0x2e, 0x76, 0x33, - 0x2e, 0x43, 0x73, 0x72, 0x66, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x04, 0x63, 0x73, 0x72, - 0x66, 0x12, 0x64, 0x0a, 0x14, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4a, 0x73, 0x6f, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, - 0x64, 0x65, 0x72, 0x52, 0x12, 0x67, 0x72, 0x70, 0x63, 0x4a, 0x73, 0x6f, 0x6e, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x17, 0x73, 0x61, 0x6e, 0x69, 0x74, - 0x69, 0x7a, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x73, 0x61, 0x6e, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x4c, 0x0a, 0x14, 0x6c, - 0x65, 0x66, 0x74, 0x6d, 0x6f, 0x73, 0x74, 0x5f, 0x78, 0x66, 0x66, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x6c, 0x65, 0x66, 0x74, 0x6d, 0x6f, 0x73, 0x74, 0x58, - 0x66, 0x66, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x6e, 0x0a, 0x12, 0x54, 0x63, 0x70, - 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x58, 0x0a, 0x12, 0x74, 0x63, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x63, - 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x63, 0x70, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x10, 0x74, 0x63, 0x70, 0x50, 0x72, 0x6f, 0x78, - 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x87, 0x0d, 0x0a, 0x12, 0x56, 0x69, - 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x43, 0x0a, 0x07, 0x72, 0x65, - 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x72, 0x65, - 0x74, 0x72, 0x69, 0x65, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, - 0x37, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x12, 0x61, 0x0a, 0x13, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x69, 0x70, - 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, - 0x61, 0x6e, 0x69, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x04, 0x63, - 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6f, 0x72, 0x73, - 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x52, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x12, 0x62, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x34, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x0f, 0x72, 0x61, - 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x61, 0x73, 0x69, 0x63, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x61, 0x74, 0x65, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x0e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x42, 0x61, 0x73, 0x69, 0x63, 0x12, 0x57, 0x0a, 0x09, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x18, 0x46, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x56, 0x68, 0x6f, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x09, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x63, - 0x0a, 0x12, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x73, 0x18, 0x47, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x72, 0x61, 0x74, - 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x66, 0x73, 0x48, - 0x00, 0x52, 0x10, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x73, 0x12, 0x34, 0x0a, 0x03, 0x77, 0x61, 0x66, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x77, 0x61, 0x66, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x52, 0x03, 0x77, 0x61, 0x66, 0x12, 0x40, 0x0a, 0x03, 0x6a, 0x77, 0x74, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x56, 0x68, 0x6f, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x42, 0x02, 0x18, 0x01, 0x48, 0x01, 0x52, 0x03, 0x6a, 0x77, 0x74, 0x12, 0x52, 0x0a, 0x0a, 0x6a, - 0x77, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x31, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4a, 0x77, 0x74, 0x53, 0x74, - 0x61, 0x67, 0x65, 0x64, 0x56, 0x68, 0x6f, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x09, 0x6a, 0x77, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x64, 0x12, - 0x40, 0x0a, 0x04, 0x72, 0x62, 0x61, 0x63, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, - 0x72, 0x62, 0x61, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x04, 0x72, 0x62, 0x61, - 0x63, 0x12, 0x43, 0x0a, 0x07, 0x65, 0x78, 0x74, 0x61, 0x75, 0x74, 0x68, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, - 0x41, 0x75, 0x74, 0x68, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x65, - 0x78, 0x74, 0x61, 0x75, 0x74, 0x68, 0x12, 0x32, 0x0a, 0x03, 0x64, 0x6c, 0x70, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x64, 0x6c, 0x70, 0x12, 0x69, 0x0a, 0x10, 0x62, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, - 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x62, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x65, 0x72, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x0e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x65, 0x72, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x4d, 0x0a, 0x04, 0x63, 0x73, 0x72, 0x66, 0x18, 0x12, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, - 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x63, 0x73, 0x72, 0x66, - 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x73, 0x72, 0x66, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x04, - 0x63, 0x73, 0x72, 0x66, 0x12, 0x5d, 0x0a, 0x1d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, - 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x64, 0x0a, 0x21, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x61, - 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x5f, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1d, 0x69, 0x6e, 0x63, 0x6c, - 0x75, 0x64, 0x65, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x49, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x16, 0x73, 0x74, 0x61, - 0x67, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, - 0x61, 0x67, 0x65, 0x73, 0x52, 0x15, 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x72, - 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x6a, 0x77, 0x74, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x22, 0x95, 0x12, 0x0a, 0x0c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x62, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, 0x0a, 0x06, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x46, 0x61, 0x75, 0x6c, 0x74, - 0x73, 0x52, 0x06, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0e, 0x70, 0x72, 0x65, - 0x66, 0x69, 0x78, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x33, - 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x12, 0x43, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2e, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, - 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x4c, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, - 0x12, 0x4c, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x2e, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, - 0x69, 0x6e, 0x67, 0x52, 0x09, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x12, 0x61, - 0x0a, 0x13, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x70, 0x75, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x4d, 0x61, 0x6e, 0x69, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x69, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x23, 0x0a, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, - 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x68, 0x6f, 0x73, 0x74, 0x52, - 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x68, - 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, - 0x0f, 0x61, 0x75, 0x74, 0x6f, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, - 0x12, 0x39, 0x0a, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x63, 0x6f, 0x72, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x72, 0x73, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x12, 0x4b, 0x0a, 0x07, 0x6c, - 0x62, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6c, - 0x62, 0x68, 0x61, 0x73, 0x68, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x06, 0x6c, 0x62, 0x48, 0x61, 0x73, 0x68, 0x12, 0x58, 0x0a, 0x08, 0x75, 0x70, 0x67, 0x72, - 0x61, 0x64, 0x65, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x2e, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, - 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, - 0x65, 0x73, 0x12, 0x59, 0x0a, 0x0f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, - 0x62, 0x61, 0x73, 0x69, 0x63, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x72, 0x61, - 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x49, 0x6e, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x0e, 0x72, - 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x61, 0x73, 0x69, 0x63, 0x12, 0x58, 0x0a, - 0x09, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x8c, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x37, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, - 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x09, 0x72, 0x61, - 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x64, 0x0a, 0x12, 0x72, 0x61, 0x74, 0x65, 0x5f, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x8d, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x66, 0x73, 0x48, 0x01, 0x52, 0x10, 0x72, 0x61, 0x74, - 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x34, 0x0a, - 0x03, 0x77, 0x61, 0x66, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x61, 0x66, - 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x03, - 0x77, 0x61, 0x66, 0x12, 0x40, 0x0a, 0x03, 0x6a, 0x77, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x28, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, - 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, 0x48, 0x02, - 0x52, 0x03, 0x6a, 0x77, 0x74, 0x12, 0x52, 0x0a, 0x0a, 0x6a, 0x77, 0x74, 0x5f, 0x73, 0x74, 0x61, - 0x67, 0x65, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6a, 0x77, 0x74, 0x2e, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4a, 0x77, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x64, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x09, - 0x6a, 0x77, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x04, 0x72, 0x62, 0x61, - 0x63, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x04, 0x72, 0x62, 0x61, 0x63, 0x12, 0x43, 0x0a, 0x07, 0x65, - 0x78, 0x74, 0x61, 0x75, 0x74, 0x68, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x45, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x65, 0x78, 0x74, 0x61, 0x75, 0x74, 0x68, - 0x12, 0x32, 0x0a, 0x03, 0x64, 0x6c, 0x70, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x64, 0x6c, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x03, 0x64, 0x6c, 0x70, 0x12, 0x69, 0x0a, 0x10, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, - 0x65, 0x72, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2e, 0x76, 0x33, - 0x2e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, - 0x0e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, - 0x4d, 0x0a, 0x04, 0x63, 0x73, 0x72, 0x66, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, - 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x63, 0x73, 0x72, 0x66, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x73, - 0x72, 0x66, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x04, 0x63, 0x73, 0x72, 0x66, 0x12, 0x70, - 0x0a, 0x16, 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, - 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x15, 0x73, 0x74, 0x61, 0x67, 0x65, - 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5b, 0x0a, 0x0d, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, - 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, - 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, - 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x6e, 0x64, 0x53, 0x75, 0x62, 0x73, 0x74, - 0x69, 0x74, 0x75, 0x74, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x67, 0x65, 0x78, 0x52, 0x65, 0x77, 0x72, - 0x69, 0x74, 0x65, 0x1a, 0x59, 0x0a, 0x12, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x13, - 0x0a, 0x11, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0c, 0x0a, - 0x0a, 0x6a, 0x77, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xad, 0x02, 0x0a, 0x0f, - 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, - 0x3d, 0x0a, 0x03, 0x61, 0x77, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, - 0x77, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x03, 0x61, 0x77, 0x73, 0x12, 0x43, - 0x0a, 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, - 0x61, 0x7a, 0x75, 0x72, 0x65, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x05, 0x61, 0x7a, - 0x75, 0x72, 0x65, 0x12, 0x40, 0x0a, 0x04, 0x72, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2a, 0x2e, 0x72, 0x65, 0x73, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x65, - 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, - 0x04, 0x72, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x67, 0x72, 0x70, 0x63, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x48, - 0x00, 0x52, 0x04, 0x67, 0x72, 0x70, 0x63, 0x42, 0x12, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x8e, 0x05, 0x0a, 0x1a, - 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x61, 0x0a, 0x13, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x6e, - 0x69, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x4d, 0x61, 0x6e, 0x69, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x62, 0x0a, - 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x02, 0x18, 0x01, - 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x43, 0x0a, 0x07, 0x65, - 0x78, 0x74, 0x61, 0x75, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x45, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x65, 0x78, 0x74, 0x61, 0x75, 0x74, 0x68, - 0x12, 0x69, 0x0a, 0x10, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x72, - 0x6f, 0x75, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, - 0x74, 0x70, 0x2e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x50, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x0e, 0x62, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x50, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x4d, 0x0a, 0x04, 0x63, - 0x73, 0x72, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, - 0x70, 0x2e, 0x63, 0x73, 0x72, 0x66, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x73, 0x72, 0x66, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x52, 0x04, 0x63, 0x73, 0x72, 0x66, 0x12, 0x70, 0x0a, 0x16, 0x73, 0x74, - 0x61, 0x67, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x15, 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x3e, 0x5a, 0x34, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2f, 0x76, 0x31, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_rawDesc -) - -func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_rawDescGZIP() []byte { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_rawDescData) - }) - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_rawDescData -} - -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes = make([]protoimpl.MessageInfo, 9) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_goTypes = []interface{}{ - (*ListenerOptions)(nil), // 0: gloo.solo.io.ListenerOptions - (*RouteConfigurationOptions)(nil), // 1: gloo.solo.io.RouteConfigurationOptions - (*HttpListenerOptions)(nil), // 2: gloo.solo.io.HttpListenerOptions - (*TcpListenerOptions)(nil), // 3: gloo.solo.io.TcpListenerOptions - (*VirtualHostOptions)(nil), // 4: gloo.solo.io.VirtualHostOptions - (*RouteOptions)(nil), // 5: gloo.solo.io.RouteOptions - (*DestinationSpec)(nil), // 6: gloo.solo.io.DestinationSpec - (*WeightedDestinationOptions)(nil), // 7: gloo.solo.io.WeightedDestinationOptions - nil, // 8: gloo.solo.io.RouteOptions.EnvoyMetadataEntry - (*als.AccessLoggingService)(nil), // 9: als.options.gloo.solo.io.AccessLoggingService - (*Extensions)(nil), // 10: gloo.solo.io.Extensions - (*wrappers.UInt32Value)(nil), // 11: google.protobuf.UInt32Value - (*core.SocketOption)(nil), // 12: solo.io.envoy.api.v2.core.SocketOption - (*grpc_web.GrpcWeb)(nil), // 13: grpc_web.options.gloo.solo.io.GrpcWeb - (*hcm.HttpConnectionManagerSettings)(nil), // 14: hcm.options.gloo.solo.io.HttpConnectionManagerSettings - (*healthcheck.HealthCheck)(nil), // 15: healthcheck.options.gloo.solo.io.HealthCheck - (*waf.Settings)(nil), // 16: waf.options.gloo.solo.io.Settings - (*dlp.FilterConfig)(nil), // 17: dlp.options.gloo.solo.io.FilterConfig - (*wasm.PluginSource)(nil), // 18: wasm.options.gloo.solo.io.PluginSource - (*v1.Settings)(nil), // 19: enterprise.gloo.solo.io.Settings - (*ratelimit.Settings)(nil), // 20: ratelimit.options.gloo.solo.io.Settings - (*v2.Gzip)(nil), // 21: solo.io.envoy.config.filter.http.gzip.v2.Gzip - (*proxylatency.ProxyLatency)(nil), // 22: envoy.config.filter.http.proxylatency.v2.ProxyLatency - (*v3.Buffer)(nil), // 23: solo.io.envoy.extensions.filters.http.buffer.v3.Buffer - (*v31.CsrfPolicy)(nil), // 24: solo.io.envoy.extensions.filters.http.csrf.v3.CsrfPolicy - (*grpc_json.GrpcJsonTranscoder)(nil), // 25: grpc_json.options.gloo.solo.io.GrpcJsonTranscoder - (*wrappers.BoolValue)(nil), // 26: google.protobuf.BoolValue - (*tcp.TcpProxySettings)(nil), // 27: tcp.options.gloo.solo.io.TcpProxySettings - (*retries.RetryPolicy)(nil), // 28: retries.options.gloo.solo.io.RetryPolicy - (*stats.Stats)(nil), // 29: stats.options.gloo.solo.io.Stats - (*headers.HeaderManipulation)(nil), // 30: headers.options.gloo.solo.io.HeaderManipulation - (*cors.CorsPolicy)(nil), // 31: cors.options.gloo.solo.io.CorsPolicy - (*transformation.Transformations)(nil), // 32: transformation.options.gloo.solo.io.Transformations - (*ratelimit.IngressRateLimit)(nil), // 33: ratelimit.options.gloo.solo.io.IngressRateLimit - (*ratelimit.RateLimitVhostExtension)(nil), // 34: ratelimit.options.gloo.solo.io.RateLimitVhostExtension - (*ratelimit.RateLimitConfigRefs)(nil), // 35: ratelimit.options.gloo.solo.io.RateLimitConfigRefs - (*jwt.VhostExtension)(nil), // 36: jwt.options.gloo.solo.io.VhostExtension - (*jwt.JwtStagedVhostExtension)(nil), // 37: jwt.options.gloo.solo.io.JwtStagedVhostExtension - (*rbac.ExtensionSettings)(nil), // 38: rbac.options.gloo.solo.io.ExtensionSettings - (*v1.ExtAuthExtension)(nil), // 39: enterprise.gloo.solo.io.ExtAuthExtension - (*dlp.Config)(nil), // 40: dlp.options.gloo.solo.io.Config - (*v3.BufferPerRoute)(nil), // 41: solo.io.envoy.extensions.filters.http.buffer.v3.BufferPerRoute - (*transformation.TransformationStages)(nil), // 42: transformation.options.gloo.solo.io.TransformationStages - (*faultinjection.RouteFaults)(nil), // 43: fault.options.gloo.solo.io.RouteFaults - (*wrappers.StringValue)(nil), // 44: google.protobuf.StringValue - (*duration.Duration)(nil), // 45: google.protobuf.Duration - (*tracing.RouteTracingSettings)(nil), // 46: tracing.options.gloo.solo.io.RouteTracingSettings - (*shadowing.RouteShadowing)(nil), // 47: shadowing.options.gloo.solo.io.RouteShadowing - (*lbhash.RouteActionHashConfig)(nil), // 48: lbhash.options.gloo.solo.io.RouteActionHashConfig - (*protocol_upgrade.ProtocolUpgradeConfig)(nil), // 49: protocol_upgrade.options.gloo.solo.io.ProtocolUpgradeConfig - (*ratelimit.RateLimitRouteExtension)(nil), // 50: ratelimit.options.gloo.solo.io.RateLimitRouteExtension - (*jwt.RouteExtension)(nil), // 51: jwt.options.gloo.solo.io.RouteExtension - (*jwt.JwtStagedRouteExtension)(nil), // 52: jwt.options.gloo.solo.io.JwtStagedRouteExtension - (*v32.RegexMatchAndSubstitute)(nil), // 53: solo.io.envoy.type.matcher.v3.RegexMatchAndSubstitute - (*aws.DestinationSpec)(nil), // 54: aws.options.gloo.solo.io.DestinationSpec - (*azure.DestinationSpec)(nil), // 55: azure.options.gloo.solo.io.DestinationSpec - (*rest.DestinationSpec)(nil), // 56: rest.options.gloo.solo.io.DestinationSpec - (*grpc.DestinationSpec)(nil), // 57: grpc.options.gloo.solo.io.DestinationSpec - (*_struct.Struct)(nil), // 58: google.protobuf.Struct -} -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_depIdxs = []int32{ - 9, // 0: gloo.solo.io.ListenerOptions.access_logging_service:type_name -> als.options.gloo.solo.io.AccessLoggingService - 10, // 1: gloo.solo.io.ListenerOptions.extensions:type_name -> gloo.solo.io.Extensions - 11, // 2: gloo.solo.io.ListenerOptions.per_connection_buffer_limit_bytes:type_name -> google.protobuf.UInt32Value - 12, // 3: gloo.solo.io.ListenerOptions.socket_options:type_name -> solo.io.envoy.api.v2.core.SocketOption - 11, // 4: gloo.solo.io.RouteConfigurationOptions.max_direct_response_body_size_bytes:type_name -> google.protobuf.UInt32Value - 13, // 5: gloo.solo.io.HttpListenerOptions.grpc_web:type_name -> grpc_web.options.gloo.solo.io.GrpcWeb - 14, // 6: gloo.solo.io.HttpListenerOptions.http_connection_manager_settings:type_name -> hcm.options.gloo.solo.io.HttpConnectionManagerSettings - 15, // 7: gloo.solo.io.HttpListenerOptions.health_check:type_name -> healthcheck.options.gloo.solo.io.HealthCheck - 10, // 8: gloo.solo.io.HttpListenerOptions.extensions:type_name -> gloo.solo.io.Extensions - 16, // 9: gloo.solo.io.HttpListenerOptions.waf:type_name -> waf.options.gloo.solo.io.Settings - 17, // 10: gloo.solo.io.HttpListenerOptions.dlp:type_name -> dlp.options.gloo.solo.io.FilterConfig - 18, // 11: gloo.solo.io.HttpListenerOptions.wasm:type_name -> wasm.options.gloo.solo.io.PluginSource - 19, // 12: gloo.solo.io.HttpListenerOptions.extauth:type_name -> enterprise.gloo.solo.io.Settings - 20, // 13: gloo.solo.io.HttpListenerOptions.ratelimit_server:type_name -> ratelimit.options.gloo.solo.io.Settings - 21, // 14: gloo.solo.io.HttpListenerOptions.gzip:type_name -> solo.io.envoy.config.filter.http.gzip.v2.Gzip - 22, // 15: gloo.solo.io.HttpListenerOptions.proxy_latency:type_name -> envoy.config.filter.http.proxylatency.v2.ProxyLatency - 23, // 16: gloo.solo.io.HttpListenerOptions.buffer:type_name -> solo.io.envoy.extensions.filters.http.buffer.v3.Buffer - 24, // 17: gloo.solo.io.HttpListenerOptions.csrf:type_name -> solo.io.envoy.extensions.filters.http.csrf.v3.CsrfPolicy - 25, // 18: gloo.solo.io.HttpListenerOptions.grpc_json_transcoder:type_name -> grpc_json.options.gloo.solo.io.GrpcJsonTranscoder - 26, // 19: gloo.solo.io.HttpListenerOptions.sanitize_cluster_header:type_name -> google.protobuf.BoolValue - 26, // 20: gloo.solo.io.HttpListenerOptions.leftmost_xff_address:type_name -> google.protobuf.BoolValue - 27, // 21: gloo.solo.io.TcpListenerOptions.tcp_proxy_settings:type_name -> tcp.options.gloo.solo.io.TcpProxySettings - 10, // 22: gloo.solo.io.VirtualHostOptions.extensions:type_name -> gloo.solo.io.Extensions - 28, // 23: gloo.solo.io.VirtualHostOptions.retries:type_name -> retries.options.gloo.solo.io.RetryPolicy - 29, // 24: gloo.solo.io.VirtualHostOptions.stats:type_name -> stats.options.gloo.solo.io.Stats - 30, // 25: gloo.solo.io.VirtualHostOptions.header_manipulation:type_name -> headers.options.gloo.solo.io.HeaderManipulation - 31, // 26: gloo.solo.io.VirtualHostOptions.cors:type_name -> cors.options.gloo.solo.io.CorsPolicy - 32, // 27: gloo.solo.io.VirtualHostOptions.transformations:type_name -> transformation.options.gloo.solo.io.Transformations - 33, // 28: gloo.solo.io.VirtualHostOptions.ratelimit_basic:type_name -> ratelimit.options.gloo.solo.io.IngressRateLimit - 34, // 29: gloo.solo.io.VirtualHostOptions.ratelimit:type_name -> ratelimit.options.gloo.solo.io.RateLimitVhostExtension - 35, // 30: gloo.solo.io.VirtualHostOptions.rate_limit_configs:type_name -> ratelimit.options.gloo.solo.io.RateLimitConfigRefs - 16, // 31: gloo.solo.io.VirtualHostOptions.waf:type_name -> waf.options.gloo.solo.io.Settings - 36, // 32: gloo.solo.io.VirtualHostOptions.jwt:type_name -> jwt.options.gloo.solo.io.VhostExtension - 37, // 33: gloo.solo.io.VirtualHostOptions.jwt_staged:type_name -> jwt.options.gloo.solo.io.JwtStagedVhostExtension - 38, // 34: gloo.solo.io.VirtualHostOptions.rbac:type_name -> rbac.options.gloo.solo.io.ExtensionSettings - 39, // 35: gloo.solo.io.VirtualHostOptions.extauth:type_name -> enterprise.gloo.solo.io.ExtAuthExtension - 40, // 36: gloo.solo.io.VirtualHostOptions.dlp:type_name -> dlp.options.gloo.solo.io.Config - 41, // 37: gloo.solo.io.VirtualHostOptions.buffer_per_route:type_name -> solo.io.envoy.extensions.filters.http.buffer.v3.BufferPerRoute - 24, // 38: gloo.solo.io.VirtualHostOptions.csrf:type_name -> solo.io.envoy.extensions.filters.http.csrf.v3.CsrfPolicy - 26, // 39: gloo.solo.io.VirtualHostOptions.include_request_attempt_count:type_name -> google.protobuf.BoolValue - 26, // 40: gloo.solo.io.VirtualHostOptions.include_attempt_count_in_response:type_name -> google.protobuf.BoolValue - 42, // 41: gloo.solo.io.VirtualHostOptions.staged_transformations:type_name -> transformation.options.gloo.solo.io.TransformationStages - 32, // 42: gloo.solo.io.RouteOptions.transformations:type_name -> transformation.options.gloo.solo.io.Transformations - 43, // 43: gloo.solo.io.RouteOptions.faults:type_name -> fault.options.gloo.solo.io.RouteFaults - 44, // 44: gloo.solo.io.RouteOptions.prefix_rewrite:type_name -> google.protobuf.StringValue - 45, // 45: gloo.solo.io.RouteOptions.timeout:type_name -> google.protobuf.Duration - 28, // 46: gloo.solo.io.RouteOptions.retries:type_name -> retries.options.gloo.solo.io.RetryPolicy - 10, // 47: gloo.solo.io.RouteOptions.extensions:type_name -> gloo.solo.io.Extensions - 46, // 48: gloo.solo.io.RouteOptions.tracing:type_name -> tracing.options.gloo.solo.io.RouteTracingSettings - 47, // 49: gloo.solo.io.RouteOptions.shadowing:type_name -> shadowing.options.gloo.solo.io.RouteShadowing - 30, // 50: gloo.solo.io.RouteOptions.header_manipulation:type_name -> headers.options.gloo.solo.io.HeaderManipulation - 26, // 51: gloo.solo.io.RouteOptions.auto_host_rewrite:type_name -> google.protobuf.BoolValue - 31, // 52: gloo.solo.io.RouteOptions.cors:type_name -> cors.options.gloo.solo.io.CorsPolicy - 48, // 53: gloo.solo.io.RouteOptions.lb_hash:type_name -> lbhash.options.gloo.solo.io.RouteActionHashConfig - 49, // 54: gloo.solo.io.RouteOptions.upgrades:type_name -> protocol_upgrade.options.gloo.solo.io.ProtocolUpgradeConfig - 33, // 55: gloo.solo.io.RouteOptions.ratelimit_basic:type_name -> ratelimit.options.gloo.solo.io.IngressRateLimit - 50, // 56: gloo.solo.io.RouteOptions.ratelimit:type_name -> ratelimit.options.gloo.solo.io.RateLimitRouteExtension - 35, // 57: gloo.solo.io.RouteOptions.rate_limit_configs:type_name -> ratelimit.options.gloo.solo.io.RateLimitConfigRefs - 16, // 58: gloo.solo.io.RouteOptions.waf:type_name -> waf.options.gloo.solo.io.Settings - 51, // 59: gloo.solo.io.RouteOptions.jwt:type_name -> jwt.options.gloo.solo.io.RouteExtension - 52, // 60: gloo.solo.io.RouteOptions.jwt_staged:type_name -> jwt.options.gloo.solo.io.JwtStagedRouteExtension - 38, // 61: gloo.solo.io.RouteOptions.rbac:type_name -> rbac.options.gloo.solo.io.ExtensionSettings - 39, // 62: gloo.solo.io.RouteOptions.extauth:type_name -> enterprise.gloo.solo.io.ExtAuthExtension - 40, // 63: gloo.solo.io.RouteOptions.dlp:type_name -> dlp.options.gloo.solo.io.Config - 41, // 64: gloo.solo.io.RouteOptions.buffer_per_route:type_name -> solo.io.envoy.extensions.filters.http.buffer.v3.BufferPerRoute - 24, // 65: gloo.solo.io.RouteOptions.csrf:type_name -> solo.io.envoy.extensions.filters.http.csrf.v3.CsrfPolicy - 42, // 66: gloo.solo.io.RouteOptions.staged_transformations:type_name -> transformation.options.gloo.solo.io.TransformationStages - 8, // 67: gloo.solo.io.RouteOptions.envoy_metadata:type_name -> gloo.solo.io.RouteOptions.EnvoyMetadataEntry - 53, // 68: gloo.solo.io.RouteOptions.regex_rewrite:type_name -> solo.io.envoy.type.matcher.v3.RegexMatchAndSubstitute - 54, // 69: gloo.solo.io.DestinationSpec.aws:type_name -> aws.options.gloo.solo.io.DestinationSpec - 55, // 70: gloo.solo.io.DestinationSpec.azure:type_name -> azure.options.gloo.solo.io.DestinationSpec - 56, // 71: gloo.solo.io.DestinationSpec.rest:type_name -> rest.options.gloo.solo.io.DestinationSpec - 57, // 72: gloo.solo.io.DestinationSpec.grpc:type_name -> grpc.options.gloo.solo.io.DestinationSpec - 30, // 73: gloo.solo.io.WeightedDestinationOptions.header_manipulation:type_name -> headers.options.gloo.solo.io.HeaderManipulation - 32, // 74: gloo.solo.io.WeightedDestinationOptions.transformations:type_name -> transformation.options.gloo.solo.io.Transformations - 10, // 75: gloo.solo.io.WeightedDestinationOptions.extensions:type_name -> gloo.solo.io.Extensions - 39, // 76: gloo.solo.io.WeightedDestinationOptions.extauth:type_name -> enterprise.gloo.solo.io.ExtAuthExtension - 41, // 77: gloo.solo.io.WeightedDestinationOptions.buffer_per_route:type_name -> solo.io.envoy.extensions.filters.http.buffer.v3.BufferPerRoute - 24, // 78: gloo.solo.io.WeightedDestinationOptions.csrf:type_name -> solo.io.envoy.extensions.filters.http.csrf.v3.CsrfPolicy - 42, // 79: gloo.solo.io.WeightedDestinationOptions.staged_transformations:type_name -> transformation.options.gloo.solo.io.TransformationStages - 58, // 80: gloo.solo.io.RouteOptions.EnvoyMetadataEntry.value:type_name -> google.protobuf.Struct - 81, // [81:81] is the sub-list for method output_type - 81, // [81:81] is the sub-list for method input_type - 81, // [81:81] is the sub-list for extension type_name - 81, // [81:81] is the sub-list for extension extendee - 0, // [0:81] is the sub-list for field type_name -} - -func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_init() } -func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_init() { - if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto != nil { - return - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_init() - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListenerOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteConfigurationOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HttpListenerOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TcpListenerOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VirtualHostOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DestinationSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WeightedDestinationOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[4].OneofWrappers = []interface{}{ - (*VirtualHostOptions_Ratelimit)(nil), - (*VirtualHostOptions_RateLimitConfigs)(nil), - (*VirtualHostOptions_Jwt)(nil), - (*VirtualHostOptions_JwtStaged)(nil), - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[5].OneofWrappers = []interface{}{ - (*RouteOptions_HostRewrite)(nil), - (*RouteOptions_AutoHostRewrite)(nil), - (*RouteOptions_Ratelimit)(nil), - (*RouteOptions_RateLimitConfigs)(nil), - (*RouteOptions_Jwt)(nil), - (*RouteOptions_JwtStaged)(nil), - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes[6].OneofWrappers = []interface{}{ - (*DestinationSpec_Aws)(nil), - (*DestinationSpec_Azure)(nil), - (*DestinationSpec_Rest)(nil), - (*DestinationSpec_Grpc)(nil), - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_rawDesc, - NumEnums: 0, - NumMessages: 9, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_goTypes, - DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_depIdxs, - MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_msgTypes, - }.Build() - File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_rawDesc = nil - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_goTypes = nil - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_depIdxs = nil -} diff --git a/pkg/api/gloo.solo.io/v1/options.pb.hash.go b/pkg/api/gloo.solo.io/v1/options.pb.hash.go deleted file mode 100644 index baa06e31a..000000000 --- a/pkg/api/gloo.solo.io/v1/options.pb.hash.go +++ /dev/null @@ -1,1357 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options.proto - -package v1 - -import ( - "encoding/binary" - "errors" - "fmt" - "hash" - "hash/fnv" - - "github.com/mitchellh/hashstructure" - safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = new(hash.Hash64) - _ = fnv.New64 - _ = hashstructure.Hash - _ = new(safe_hasher.SafeHasher) -) - -// Hash function -func (m *ListenerOptions) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ListenerOptions")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetAccessLoggingService()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetAccessLoggingService(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetExtensions()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetExtensions(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetPerConnectionBufferLimitBytes()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetPerConnectionBufferLimitBytes(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - for _, v := range m.GetSocketOptions() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *RouteConfigurationOptions) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.RouteConfigurationOptions")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetMaxDirectResponseBodySizeBytes()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMaxDirectResponseBodySizeBytes(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *HttpListenerOptions) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.HttpListenerOptions")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetGrpcWeb()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetGrpcWeb(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetHttpConnectionManagerSettings()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetHttpConnectionManagerSettings(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetHealthCheck()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetHealthCheck(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetExtensions()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetExtensions(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetWaf()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetWaf(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetDlp()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetDlp(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetWasm()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetWasm(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetExtauth()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetExtauth(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetRatelimitServer()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetRatelimitServer(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetGzip()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetGzip(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetProxyLatency()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetProxyLatency(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetBuffer()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetBuffer(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetCsrf()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetCsrf(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetGrpcJsonTranscoder()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetGrpcJsonTranscoder(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetSanitizeClusterHeader()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSanitizeClusterHeader(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetLeftmostXffAddress()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetLeftmostXffAddress(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *TcpListenerOptions) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.TcpListenerOptions")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetTcpProxySettings()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetTcpProxySettings(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *VirtualHostOptions) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.VirtualHostOptions")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetExtensions()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetExtensions(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetRetries()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetRetries(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetStats()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetStats(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetHeaderManipulation()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetHeaderManipulation(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetCors()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetCors(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetTransformations()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetTransformations(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetRatelimitBasic()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetRatelimitBasic(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetWaf()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetWaf(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetRbac()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetRbac(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetExtauth()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetExtauth(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetDlp()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetDlp(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetBufferPerRoute()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetBufferPerRoute(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetCsrf()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetCsrf(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetIncludeRequestAttemptCount()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetIncludeRequestAttemptCount(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetIncludeAttemptCountInResponse()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetIncludeAttemptCountInResponse(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetStagedTransformations()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetStagedTransformations(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - switch m.RateLimitConfigType.(type) { - - case *VirtualHostOptions_Ratelimit: - - if h, ok := interface{}(m.GetRatelimit()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetRatelimit(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - case *VirtualHostOptions_RateLimitConfigs: - - if h, ok := interface{}(m.GetRateLimitConfigs()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetRateLimitConfigs(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - switch m.JwtConfig.(type) { - - case *VirtualHostOptions_Jwt: - - if h, ok := interface{}(m.GetJwt()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetJwt(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - case *VirtualHostOptions_JwtStaged: - - if h, ok := interface{}(m.GetJwtStaged()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetJwtStaged(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *RouteOptions) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.RouteOptions")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetTransformations()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetTransformations(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetFaults()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetFaults(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetPrefixRewrite()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetPrefixRewrite(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetRetries()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetRetries(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetExtensions()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetExtensions(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetTracing()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetTracing(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetShadowing()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetShadowing(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetHeaderManipulation()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetHeaderManipulation(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetCors()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetCors(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetLbHash()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetLbHash(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - for _, v := range m.GetUpgrades() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - if h, ok := interface{}(m.GetRatelimitBasic()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetRatelimitBasic(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetWaf()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetWaf(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetRbac()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetRbac(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetExtauth()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetExtauth(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetDlp()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetDlp(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetBufferPerRoute()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetBufferPerRoute(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetCsrf()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetCsrf(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetStagedTransformations()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetStagedTransformations(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - { - var result uint64 - innerHash := fnv.New64() - for k, v := range m.GetEnvoyMetadata() { - innerHash.Reset() - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(innerHash); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if _, err = innerHash.Write([]byte(k)); err != nil { - return 0, err - } - - result = result ^ innerHash.Sum64() - } - err = binary.Write(hasher, binary.LittleEndian, result) - if err != nil { - return 0, err - } - - } - - if h, ok := interface{}(m.GetRegexRewrite()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetRegexRewrite(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - switch m.HostRewriteType.(type) { - - case *RouteOptions_HostRewrite: - - if _, err = hasher.Write([]byte(m.GetHostRewrite())); err != nil { - return 0, err - } - - case *RouteOptions_AutoHostRewrite: - - if h, ok := interface{}(m.GetAutoHostRewrite()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetAutoHostRewrite(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - switch m.RateLimitConfigType.(type) { - - case *RouteOptions_Ratelimit: - - if h, ok := interface{}(m.GetRatelimit()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetRatelimit(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - case *RouteOptions_RateLimitConfigs: - - if h, ok := interface{}(m.GetRateLimitConfigs()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetRateLimitConfigs(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - switch m.JwtConfig.(type) { - - case *RouteOptions_Jwt: - - if h, ok := interface{}(m.GetJwt()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetJwt(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - case *RouteOptions_JwtStaged: - - if h, ok := interface{}(m.GetJwtStaged()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetJwtStaged(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *DestinationSpec) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.DestinationSpec")); err != nil { - return 0, err - } - - switch m.DestinationType.(type) { - - case *DestinationSpec_Aws: - - if h, ok := interface{}(m.GetAws()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetAws(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - case *DestinationSpec_Azure: - - if h, ok := interface{}(m.GetAzure()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetAzure(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - case *DestinationSpec_Rest: - - if h, ok := interface{}(m.GetRest()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetRest(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - case *DestinationSpec_Grpc: - - if h, ok := interface{}(m.GetGrpc()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetGrpc(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *WeightedDestinationOptions) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.WeightedDestinationOptions")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetHeaderManipulation()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetHeaderManipulation(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetTransformations()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetTransformations(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetExtensions()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetExtensions(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetExtauth()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetExtauth(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetBufferPerRoute()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetBufferPerRoute(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetCsrf()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetCsrf(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if h, ok := interface{}(m.GetStagedTransformations()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetStagedTransformations(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} diff --git a/pkg/api/gloo.solo.io/v1/options/advanced_http/advanced_http.pb.go b/pkg/api/gloo.solo.io/v1/options/advanced_http/advanced_http.pb.go index 16c35e326..85c322177 100644 --- a/pkg/api/gloo.solo.io/v1/options/advanced_http/advanced_http.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/advanced_http/advanced_http.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/advanced_http/advanced_http.proto @@ -9,13 +9,12 @@ package advanced_http import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - empty "github.com/golang/protobuf/ptypes/empty" - _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/udpa/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" ) const ( @@ -25,10 +24,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type HealthCheckResult int32 const ( @@ -82,24 +77,21 @@ func (HealthCheckResult) EnumDescriptor() ([]byte, []int) { } type ResponseAssertions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // A bunch of match rules, the first match wins out and short-circuits ResponseMatchers []*ResponseMatcher `protobuf:"bytes,1,rep,name=response_matchers,json=responseMatchers,proto3" json:"response_matchers,omitempty"` // The default health response if none of the response health checks were matches. // If omitted, defaults to unhealthy. NoMatchHealth HealthCheckResult `protobuf:"varint,2,opt,name=no_match_health,json=noMatchHealth,proto3,enum=advancedhttp.options.gloo.solo.io.HealthCheckResult" json:"no_match_health,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResponseAssertions) Reset() { *x = ResponseAssertions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ResponseAssertions) String() string { @@ -110,7 +102,7 @@ func (*ResponseAssertions) ProtoMessage() {} func (x *ResponseAssertions) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -141,24 +133,21 @@ func (x *ResponseAssertions) GetNoMatchHealth() HealthCheckResult { // Defines a transformation template. type ResponseMatcher struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Defines the parameters to determine a single match ResponseMatch *ResponseMatch `protobuf:"bytes,1,opt,name=response_match,json=responseMatch,proto3" json:"response_match,omitempty"` // The health response if this response_match is a match. // If omitted, defaults to healthy - MatchHealth HealthCheckResult `protobuf:"varint,2,opt,name=match_health,json=matchHealth,proto3,enum=advancedhttp.options.gloo.solo.io.HealthCheckResult" json:"match_health,omitempty"` + MatchHealth HealthCheckResult `protobuf:"varint,2,opt,name=match_health,json=matchHealth,proto3,enum=advancedhttp.options.gloo.solo.io.HealthCheckResult" json:"match_health,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResponseMatcher) Reset() { *x = ResponseMatcher{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ResponseMatcher) String() string { @@ -169,7 +158,7 @@ func (*ResponseMatcher) ProtoMessage() {} func (x *ResponseMatcher) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -200,10 +189,7 @@ func (x *ResponseMatcher) GetMatchHealth() HealthCheckResult { // ResponseMatches can be used to extract information from the request/response. type ResponseMatch struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Configuration to get the json key. // Treats the body as raw text if omitted. JsonKey *JsonKey `protobuf:"bytes,1,opt,name=json_key,json=jsonKey,proto3" json:"json_key,omitempty"` @@ -212,23 +198,24 @@ type ResponseMatch struct { IgnoreErrorOnParse bool `protobuf:"varint,2,opt,name=ignore_error_on_parse,json=ignoreErrorOnParse,proto3" json:"ignore_error_on_parse,omitempty"` // The source of the extraction // - // Types that are assignable to Source: + // Types that are valid to be assigned to Source: + // // *ResponseMatch_Header // *ResponseMatch_Body Source isResponseMatch_Source `protobuf_oneof:"source"` // Only strings matching this regular expression will be considered a match. // The most simple value for this field is '.*', which matches the // whole source. The field is required. - Regex string `protobuf:"bytes,5,opt,name=regex,proto3" json:"regex,omitempty"` + Regex string `protobuf:"bytes,5,opt,name=regex,proto3" json:"regex,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResponseMatch) Reset() { *x = ResponseMatch{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ResponseMatch) String() string { @@ -239,7 +226,7 @@ func (*ResponseMatch) ProtoMessage() {} func (x *ResponseMatch) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -268,23 +255,27 @@ func (x *ResponseMatch) GetIgnoreErrorOnParse() bool { return false } -func (m *ResponseMatch) GetSource() isResponseMatch_Source { - if m != nil { - return m.Source +func (x *ResponseMatch) GetSource() isResponseMatch_Source { + if x != nil { + return x.Source } return nil } func (x *ResponseMatch) GetHeader() string { - if x, ok := x.GetSource().(*ResponseMatch_Header); ok { - return x.Header + if x != nil { + if x, ok := x.Source.(*ResponseMatch_Header); ok { + return x.Header + } } return "" } -func (x *ResponseMatch) GetBody() *empty.Empty { - if x, ok := x.GetSource().(*ResponseMatch_Body); ok { - return x.Body +func (x *ResponseMatch) GetBody() *emptypb.Empty { + if x != nil { + if x, ok := x.Source.(*ResponseMatch_Body); ok { + return x.Body + } } return nil } @@ -307,7 +298,7 @@ type ResponseMatch_Header struct { type ResponseMatch_Body struct { // Extract information from the request/response body - Body *empty.Empty `protobuf:"bytes,4,opt,name=body,proto3,oneof"` + Body *emptypb.Empty `protobuf:"bytes,4,opt,name=body,proto3,oneof"` } func (*ResponseMatch_Header) isResponseMatch_Source() {} @@ -315,21 +306,18 @@ func (*ResponseMatch_Header) isResponseMatch_Source() {} func (*ResponseMatch_Body) isResponseMatch_Source() {} type JsonKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The path to retrieve the Value. - Path []*JsonKey_PathSegment `protobuf:"bytes,2,rep,name=path,proto3" json:"path,omitempty"` + Path []*JsonKey_PathSegment `protobuf:"bytes,2,rep,name=path,proto3" json:"path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JsonKey) Reset() { *x = JsonKey{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JsonKey) String() string { @@ -340,7 +328,7 @@ func (*JsonKey) ProtoMessage() {} func (x *JsonKey) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -364,22 +352,20 @@ func (x *JsonKey) GetPath() []*JsonKey_PathSegment { // Specifies the segment in a path to retrieve value. type JsonKey_PathSegment struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Segment: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Segment: + // // *JsonKey_PathSegment_Key - Segment isJsonKey_PathSegment_Segment `protobuf_oneof:"segment"` + Segment isJsonKey_PathSegment_Segment `protobuf_oneof:"segment"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JsonKey_PathSegment) Reset() { *x = JsonKey_PathSegment{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JsonKey_PathSegment) String() string { @@ -390,7 +376,7 @@ func (*JsonKey_PathSegment) ProtoMessage() {} func (x *JsonKey_PathSegment) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -405,16 +391,18 @@ func (*JsonKey_PathSegment) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_rawDescGZIP(), []int{3, 0} } -func (m *JsonKey_PathSegment) GetSegment() isJsonKey_PathSegment_Segment { - if m != nil { - return m.Segment +func (x *JsonKey_PathSegment) GetSegment() isJsonKey_PathSegment_Segment { + if x != nil { + return x.Segment } return nil } func (x *JsonKey_PathSegment) GetKey() string { - if x, ok := x.GetSegment().(*JsonKey_PathSegment_Key); ok { - return x.Key + if x != nil { + if x, ok := x.Segment.(*JsonKey_PathSegment_Key); ok { + return x.Key + } } return "" } @@ -433,7 +421,7 @@ func (*JsonKey_PathSegment_Key) isJsonKey_PathSegment_Segment() {} var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_rawDesc = string([]byte{ 0x0a, 0x57, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -441,102 +429,100 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_adv 0x5f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x21, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x1d, 0x75, 0x64, - 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, - 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0xd3, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x73, - 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5f, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x68, 0x74, - 0x74, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x10, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, 0x5c, 0x0a, 0x0f, 0x6e, 0x6f, 0x5f, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x68, 0x74, 0x74, - 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0d, 0x6e, 0x6f, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x22, 0xc3, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x57, 0x0a, 0x0e, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x68, 0x74, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, + 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xd3, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, + 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5f, 0x0a, 0x11, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x68, + 0x74, 0x74, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x10, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, 0x5c, 0x0a, 0x0f, 0x6e, 0x6f, + 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x12, 0x57, 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x68, 0x65, - 0x61, 0x6c, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x61, 0x64, 0x76, - 0x61, 0x6e, 0x63, 0x65, 0x64, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x22, 0xf1, 0x01, - 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, - 0x45, 0x0a, 0x08, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x68, 0x74, 0x74, 0x70, - 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x52, 0x07, 0x6a, - 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x31, 0x0a, 0x15, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, - 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x4f, 0x6e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x06, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, 0x64, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x07, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x54, 0x0a, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x61, 0x64, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0d, 0x6e, 0x6f, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x22, 0xc3, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x57, 0x0a, 0x0e, + 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x68, + 0x74, 0x74, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x57, 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x68, + 0x65, 0x61, 0x6c, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x67, 0x6d, - 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x1a, 0x3a, 0x0a, 0x0b, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, - 0x0e, 0x0a, 0x07, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x2a, - 0x4a, 0x0a, 0x11, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x10, - 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x10, 0x01, 0x12, 0x0c, - 0x0a, 0x08, 0x64, 0x65, 0x67, 0x72, 0x61, 0x64, 0x65, 0x64, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, - 0x75, 0x6e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x10, 0x03, 0x42, 0x98, 0x01, 0x0a, 0x3a, - 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, - 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, - 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, - 0x65, 0x64, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x32, 0x42, 0x0c, 0x41, 0x64, 0x76, 0x61, - 0x6e, 0x63, 0x65, 0x64, 0x48, 0x74, 0x74, 0x70, 0x50, 0x01, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, - 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, - 0x64, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x22, 0xf1, + 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x12, 0x45, 0x0a, 0x08, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x68, 0x74, 0x74, + 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x52, 0x07, + 0x6a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x31, 0x0a, 0x15, 0x69, 0x67, 0x6e, 0x6f, 0x72, + 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x4f, 0x6e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x06, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, + 0x64, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x07, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x54, + 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x61, + 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x67, + 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x04, + 0x70, 0x61, 0x74, 0x68, 0x1a, 0x3a, 0x0a, 0x0b, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x67, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x42, 0x0e, 0x0a, 0x07, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x03, 0xf8, 0x42, 0x01, + 0x2a, 0x4a, 0x0a, 0x11, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x10, 0x01, 0x12, + 0x0c, 0x0a, 0x08, 0x64, 0x65, 0x67, 0x72, 0x61, 0x64, 0x65, 0x64, 0x10, 0x02, 0x12, 0x0d, 0x0a, + 0x09, 0x75, 0x6e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x10, 0x03, 0x42, 0x98, 0x01, 0x0a, + 0x3a, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x68, 0x65, 0x61, 0x6c, + 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x76, 0x61, 0x6e, + 0x63, 0x65, 0x64, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x32, 0x42, 0x0c, 0x41, 0x64, 0x76, + 0x61, 0x6e, 0x63, 0x65, 0x64, 0x48, 0x74, 0x74, 0x70, 0x50, 0x01, 0x5a, 0x4a, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, + 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, + 0x65, 0x64, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes = make([]protoimpl.MessageInfo, 5) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_goTypes = []any{ (HealthCheckResult)(0), // 0: advancedhttp.options.gloo.solo.io.HealthCheckResult (*ResponseAssertions)(nil), // 1: advancedhttp.options.gloo.solo.io.ResponseAssertions (*ResponseMatcher)(nil), // 2: advancedhttp.options.gloo.solo.io.ResponseMatcher (*ResponseMatch)(nil), // 3: advancedhttp.options.gloo.solo.io.ResponseMatch (*JsonKey)(nil), // 4: advancedhttp.options.gloo.solo.io.JsonKey (*JsonKey_PathSegment)(nil), // 5: advancedhttp.options.gloo.solo.io.JsonKey.PathSegment - (*empty.Empty)(nil), // 6: google.protobuf.Empty + (*emptypb.Empty)(nil), // 6: google.protobuf.Empty } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_depIdxs = []int32{ 2, // 0: advancedhttp.options.gloo.solo.io.ResponseAssertions.response_matchers:type_name -> advancedhttp.options.gloo.solo.io.ResponseMatcher @@ -560,80 +546,18 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_ad if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResponseAssertions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResponseMatcher); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResponseMatch); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JsonKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JsonKey_PathSegment); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[2].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[2].OneofWrappers = []any{ (*ResponseMatch_Header)(nil), (*ResponseMatch_Body)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[4].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes[4].OneofWrappers = []any{ (*JsonKey_PathSegment_Key)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_rawDesc)), NumEnums: 1, NumMessages: 5, NumExtensions: 0, @@ -645,7 +569,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_ad MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_advanced_http_advanced_http_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/als/als.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/als/als.pb.clone.go new file mode 100644 index 000000000..f36a7ed72 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/als/als.pb.clone.go @@ -0,0 +1,643 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/als/als.proto + +package als + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_route_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl" + + go_opentelemetry_io_proto_otlp_common_v1 "go.opentelemetry.io/proto/otlp/common/v1" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *AccessLoggingService) Clone() proto.Message { + var target *AccessLoggingService + if m == nil { + return target + } + target = &AccessLoggingService{} + + if m.GetAccessLog() != nil { + target.AccessLog = make([]*AccessLog, len(m.GetAccessLog())) + for idx, v := range m.GetAccessLog() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.AccessLog[idx] = h.Clone().(*AccessLog) + } else { + target.AccessLog[idx] = proto.Clone(v).(*AccessLog) + } + + } + } + + return target +} + +// Clone function +func (m *AccessLog) Clone() proto.Message { + var target *AccessLog + if m == nil { + return target + } + target = &AccessLog{} + + if h, ok := interface{}(m.GetFilter()).(clone.Cloner); ok { + target.Filter = h.Clone().(*AccessLogFilter) + } else { + target.Filter = proto.Clone(m.GetFilter()).(*AccessLogFilter) + } + + switch m.OutputDestination.(type) { + + case *AccessLog_FileSink: + + if h, ok := interface{}(m.GetFileSink()).(clone.Cloner); ok { + target.OutputDestination = &AccessLog_FileSink{ + FileSink: h.Clone().(*FileSink), + } + } else { + target.OutputDestination = &AccessLog_FileSink{ + FileSink: proto.Clone(m.GetFileSink()).(*FileSink), + } + } + + case *AccessLog_GrpcService: + + if h, ok := interface{}(m.GetGrpcService()).(clone.Cloner); ok { + target.OutputDestination = &AccessLog_GrpcService{ + GrpcService: h.Clone().(*GrpcService), + } + } else { + target.OutputDestination = &AccessLog_GrpcService{ + GrpcService: proto.Clone(m.GetGrpcService()).(*GrpcService), + } + } + + case *AccessLog_OpenTelemetryService: + + if h, ok := interface{}(m.GetOpenTelemetryService()).(clone.Cloner); ok { + target.OutputDestination = &AccessLog_OpenTelemetryService{ + OpenTelemetryService: h.Clone().(*OpenTelemetryService), + } + } else { + target.OutputDestination = &AccessLog_OpenTelemetryService{ + OpenTelemetryService: proto.Clone(m.GetOpenTelemetryService()).(*OpenTelemetryService), + } + } + + } + + return target +} + +// Clone function +func (m *FileSink) Clone() proto.Message { + var target *FileSink + if m == nil { + return target + } + target = &FileSink{} + + target.Path = m.GetPath() + + switch m.OutputFormat.(type) { + + case *FileSink_StringFormat: + + target.OutputFormat = &FileSink_StringFormat{ + StringFormat: m.GetStringFormat(), + } + + case *FileSink_JsonFormat: + + if h, ok := interface{}(m.GetJsonFormat()).(clone.Cloner); ok { + target.OutputFormat = &FileSink_JsonFormat{ + JsonFormat: h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct), + } + } else { + target.OutputFormat = &FileSink_JsonFormat{ + JsonFormat: proto.Clone(m.GetJsonFormat()).(*google_golang_org_protobuf_types_known_structpb.Struct), + } + } + + } + + return target +} + +// Clone function +func (m *GrpcService) Clone() proto.Message { + var target *GrpcService + if m == nil { + return target + } + target = &GrpcService{} + + target.LogName = m.GetLogName() + + if m.GetAdditionalRequestHeadersToLog() != nil { + target.AdditionalRequestHeadersToLog = make([]string, len(m.GetAdditionalRequestHeadersToLog())) + for idx, v := range m.GetAdditionalRequestHeadersToLog() { + + target.AdditionalRequestHeadersToLog[idx] = v + + } + } + + if m.GetAdditionalResponseHeadersToLog() != nil { + target.AdditionalResponseHeadersToLog = make([]string, len(m.GetAdditionalResponseHeadersToLog())) + for idx, v := range m.GetAdditionalResponseHeadersToLog() { + + target.AdditionalResponseHeadersToLog[idx] = v + + } + } + + if m.GetAdditionalResponseTrailersToLog() != nil { + target.AdditionalResponseTrailersToLog = make([]string, len(m.GetAdditionalResponseTrailersToLog())) + for idx, v := range m.GetAdditionalResponseTrailersToLog() { + + target.AdditionalResponseTrailersToLog[idx] = v + + } + } + + if m.GetFilterStateObjectsToLog() != nil { + target.FilterStateObjectsToLog = make([]string, len(m.GetFilterStateObjectsToLog())) + for idx, v := range m.GetFilterStateObjectsToLog() { + + target.FilterStateObjectsToLog[idx] = v + + } + } + + switch m.ServiceRef.(type) { + + case *GrpcService_StaticClusterName: + + target.ServiceRef = &GrpcService_StaticClusterName{ + StaticClusterName: m.GetStaticClusterName(), + } + + } + + return target +} + +// Clone function +func (m *OpenTelemetryGrpcCollector) Clone() proto.Message { + var target *OpenTelemetryGrpcCollector + if m == nil { + return target + } + target = &OpenTelemetryGrpcCollector{} + + target.Endpoint = m.GetEndpoint() + + target.Authority = m.GetAuthority() + + if m.GetHeaders() != nil { + target.Headers = make(map[string]string, len(m.GetHeaders())) + for k, v := range m.GetHeaders() { + + target.Headers[k] = v + + } + } + + target.Insecure = m.GetInsecure() + + if h, ok := interface{}(m.GetSslConfig()).(clone.Cloner); ok { + target.SslConfig = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.UpstreamSslConfig) + } else { + target.SslConfig = proto.Clone(m.GetSslConfig()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.UpstreamSslConfig) + } + + if h, ok := interface{}(m.GetTimeout()).(clone.Cloner); ok { + target.Timeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.Timeout = proto.Clone(m.GetTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + return target +} + +// Clone function +func (m *OpenTelemetryService) Clone() proto.Message { + var target *OpenTelemetryService + if m == nil { + return target + } + target = &OpenTelemetryService{} + + target.LogName = m.GetLogName() + + if m.GetFilterStateObjectsToLog() != nil { + target.FilterStateObjectsToLog = make([]string, len(m.GetFilterStateObjectsToLog())) + for idx, v := range m.GetFilterStateObjectsToLog() { + + target.FilterStateObjectsToLog[idx] = v + + } + } + + target.DisableBuiltinLabels = m.GetDisableBuiltinLabels() + + if h, ok := interface{}(m.GetBody()).(clone.Cloner); ok { + target.Body = h.Clone().(*go_opentelemetry_io_proto_otlp_common_v1.AnyValue) + } else { + target.Body = proto.Clone(m.GetBody()).(*go_opentelemetry_io_proto_otlp_common_v1.AnyValue) + } + + if h, ok := interface{}(m.GetAttributes()).(clone.Cloner); ok { + target.Attributes = h.Clone().(*go_opentelemetry_io_proto_otlp_common_v1.KeyValueList) + } else { + target.Attributes = proto.Clone(m.GetAttributes()).(*go_opentelemetry_io_proto_otlp_common_v1.KeyValueList) + } + + switch m.Destination.(type) { + + case *OpenTelemetryService_Collector: + + if h, ok := interface{}(m.GetCollector()).(clone.Cloner); ok { + target.Destination = &OpenTelemetryService_Collector{ + Collector: h.Clone().(*OpenTelemetryGrpcCollector), + } + } else { + target.Destination = &OpenTelemetryService_Collector{ + Collector: proto.Clone(m.GetCollector()).(*OpenTelemetryGrpcCollector), + } + } + + } + + return target +} + +// Clone function +func (m *AccessLogFilter) Clone() proto.Message { + var target *AccessLogFilter + if m == nil { + return target + } + target = &AccessLogFilter{} + + switch m.FilterSpecifier.(type) { + + case *AccessLogFilter_StatusCodeFilter: + + if h, ok := interface{}(m.GetStatusCodeFilter()).(clone.Cloner); ok { + target.FilterSpecifier = &AccessLogFilter_StatusCodeFilter{ + StatusCodeFilter: h.Clone().(*StatusCodeFilter), + } + } else { + target.FilterSpecifier = &AccessLogFilter_StatusCodeFilter{ + StatusCodeFilter: proto.Clone(m.GetStatusCodeFilter()).(*StatusCodeFilter), + } + } + + case *AccessLogFilter_DurationFilter: + + if h, ok := interface{}(m.GetDurationFilter()).(clone.Cloner); ok { + target.FilterSpecifier = &AccessLogFilter_DurationFilter{ + DurationFilter: h.Clone().(*DurationFilter), + } + } else { + target.FilterSpecifier = &AccessLogFilter_DurationFilter{ + DurationFilter: proto.Clone(m.GetDurationFilter()).(*DurationFilter), + } + } + + case *AccessLogFilter_NotHealthCheckFilter: + + if h, ok := interface{}(m.GetNotHealthCheckFilter()).(clone.Cloner); ok { + target.FilterSpecifier = &AccessLogFilter_NotHealthCheckFilter{ + NotHealthCheckFilter: h.Clone().(*NotHealthCheckFilter), + } + } else { + target.FilterSpecifier = &AccessLogFilter_NotHealthCheckFilter{ + NotHealthCheckFilter: proto.Clone(m.GetNotHealthCheckFilter()).(*NotHealthCheckFilter), + } + } + + case *AccessLogFilter_TraceableFilter: + + if h, ok := interface{}(m.GetTraceableFilter()).(clone.Cloner); ok { + target.FilterSpecifier = &AccessLogFilter_TraceableFilter{ + TraceableFilter: h.Clone().(*TraceableFilter), + } + } else { + target.FilterSpecifier = &AccessLogFilter_TraceableFilter{ + TraceableFilter: proto.Clone(m.GetTraceableFilter()).(*TraceableFilter), + } + } + + case *AccessLogFilter_RuntimeFilter: + + if h, ok := interface{}(m.GetRuntimeFilter()).(clone.Cloner); ok { + target.FilterSpecifier = &AccessLogFilter_RuntimeFilter{ + RuntimeFilter: h.Clone().(*RuntimeFilter), + } + } else { + target.FilterSpecifier = &AccessLogFilter_RuntimeFilter{ + RuntimeFilter: proto.Clone(m.GetRuntimeFilter()).(*RuntimeFilter), + } + } + + case *AccessLogFilter_AndFilter: + + if h, ok := interface{}(m.GetAndFilter()).(clone.Cloner); ok { + target.FilterSpecifier = &AccessLogFilter_AndFilter{ + AndFilter: h.Clone().(*AndFilter), + } + } else { + target.FilterSpecifier = &AccessLogFilter_AndFilter{ + AndFilter: proto.Clone(m.GetAndFilter()).(*AndFilter), + } + } + + case *AccessLogFilter_OrFilter: + + if h, ok := interface{}(m.GetOrFilter()).(clone.Cloner); ok { + target.FilterSpecifier = &AccessLogFilter_OrFilter{ + OrFilter: h.Clone().(*OrFilter), + } + } else { + target.FilterSpecifier = &AccessLogFilter_OrFilter{ + OrFilter: proto.Clone(m.GetOrFilter()).(*OrFilter), + } + } + + case *AccessLogFilter_HeaderFilter: + + if h, ok := interface{}(m.GetHeaderFilter()).(clone.Cloner); ok { + target.FilterSpecifier = &AccessLogFilter_HeaderFilter{ + HeaderFilter: h.Clone().(*HeaderFilter), + } + } else { + target.FilterSpecifier = &AccessLogFilter_HeaderFilter{ + HeaderFilter: proto.Clone(m.GetHeaderFilter()).(*HeaderFilter), + } + } + + case *AccessLogFilter_ResponseFlagFilter: + + if h, ok := interface{}(m.GetResponseFlagFilter()).(clone.Cloner); ok { + target.FilterSpecifier = &AccessLogFilter_ResponseFlagFilter{ + ResponseFlagFilter: h.Clone().(*ResponseFlagFilter), + } + } else { + target.FilterSpecifier = &AccessLogFilter_ResponseFlagFilter{ + ResponseFlagFilter: proto.Clone(m.GetResponseFlagFilter()).(*ResponseFlagFilter), + } + } + + case *AccessLogFilter_GrpcStatusFilter: + + if h, ok := interface{}(m.GetGrpcStatusFilter()).(clone.Cloner); ok { + target.FilterSpecifier = &AccessLogFilter_GrpcStatusFilter{ + GrpcStatusFilter: h.Clone().(*GrpcStatusFilter), + } + } else { + target.FilterSpecifier = &AccessLogFilter_GrpcStatusFilter{ + GrpcStatusFilter: proto.Clone(m.GetGrpcStatusFilter()).(*GrpcStatusFilter), + } + } + + } + + return target +} + +// Clone function +func (m *ComparisonFilter) Clone() proto.Message { + var target *ComparisonFilter + if m == nil { + return target + } + target = &ComparisonFilter{} + + target.Op = m.GetOp() + + if h, ok := interface{}(m.GetValue()).(clone.Cloner); ok { + target.Value = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.RuntimeUInt32) + } else { + target.Value = proto.Clone(m.GetValue()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.RuntimeUInt32) + } + + return target +} + +// Clone function +func (m *StatusCodeFilter) Clone() proto.Message { + var target *StatusCodeFilter + if m == nil { + return target + } + target = &StatusCodeFilter{} + + if h, ok := interface{}(m.GetComparison()).(clone.Cloner); ok { + target.Comparison = h.Clone().(*ComparisonFilter) + } else { + target.Comparison = proto.Clone(m.GetComparison()).(*ComparisonFilter) + } + + return target +} + +// Clone function +func (m *DurationFilter) Clone() proto.Message { + var target *DurationFilter + if m == nil { + return target + } + target = &DurationFilter{} + + if h, ok := interface{}(m.GetComparison()).(clone.Cloner); ok { + target.Comparison = h.Clone().(*ComparisonFilter) + } else { + target.Comparison = proto.Clone(m.GetComparison()).(*ComparisonFilter) + } + + return target +} + +// Clone function +func (m *NotHealthCheckFilter) Clone() proto.Message { + var target *NotHealthCheckFilter + if m == nil { + return target + } + target = &NotHealthCheckFilter{} + + return target +} + +// Clone function +func (m *TraceableFilter) Clone() proto.Message { + var target *TraceableFilter + if m == nil { + return target + } + target = &TraceableFilter{} + + return target +} + +// Clone function +func (m *RuntimeFilter) Clone() proto.Message { + var target *RuntimeFilter + if m == nil { + return target + } + target = &RuntimeFilter{} + + target.RuntimeKey = m.GetRuntimeKey() + + if h, ok := interface{}(m.GetPercentSampled()).(clone.Cloner); ok { + target.PercentSampled = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3.FractionalPercent) + } else { + target.PercentSampled = proto.Clone(m.GetPercentSampled()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_v3.FractionalPercent) + } + + target.UseIndependentRandomness = m.GetUseIndependentRandomness() + + return target +} + +// Clone function +func (m *AndFilter) Clone() proto.Message { + var target *AndFilter + if m == nil { + return target + } + target = &AndFilter{} + + if m.GetFilters() != nil { + target.Filters = make([]*AccessLogFilter, len(m.GetFilters())) + for idx, v := range m.GetFilters() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Filters[idx] = h.Clone().(*AccessLogFilter) + } else { + target.Filters[idx] = proto.Clone(v).(*AccessLogFilter) + } + + } + } + + return target +} + +// Clone function +func (m *OrFilter) Clone() proto.Message { + var target *OrFilter + if m == nil { + return target + } + target = &OrFilter{} + + if m.GetFilters() != nil { + target.Filters = make([]*AccessLogFilter, len(m.GetFilters())) + for idx, v := range m.GetFilters() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Filters[idx] = h.Clone().(*AccessLogFilter) + } else { + target.Filters[idx] = proto.Clone(v).(*AccessLogFilter) + } + + } + } + + return target +} + +// Clone function +func (m *HeaderFilter) Clone() proto.Message { + var target *HeaderFilter + if m == nil { + return target + } + target = &HeaderFilter{} + + if h, ok := interface{}(m.GetHeader()).(clone.Cloner); ok { + target.Header = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_route_v3.HeaderMatcher) + } else { + target.Header = proto.Clone(m.GetHeader()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_route_v3.HeaderMatcher) + } + + return target +} + +// Clone function +func (m *ResponseFlagFilter) Clone() proto.Message { + var target *ResponseFlagFilter + if m == nil { + return target + } + target = &ResponseFlagFilter{} + + if m.GetFlags() != nil { + target.Flags = make([]string, len(m.GetFlags())) + for idx, v := range m.GetFlags() { + + target.Flags[idx] = v + + } + } + + return target +} + +// Clone function +func (m *GrpcStatusFilter) Clone() proto.Message { + var target *GrpcStatusFilter + if m == nil { + return target + } + target = &GrpcStatusFilter{} + + if m.GetStatuses() != nil { + target.Statuses = make([]GrpcStatusFilter_Status, len(m.GetStatuses())) + for idx, v := range m.GetStatuses() { + + target.Statuses[idx] = v + + } + } + + target.Exclude = m.GetExclude() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/als/als.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/als/als.pb.equal.go index 32e20ad8a..ab4172e23 100644 --- a/pkg/api/gloo.solo.io/v1/options/als/als.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/options/als/als.pb.equal.go @@ -87,9 +87,22 @@ func (m *AccessLog) Equal(that interface{}) bool { return false } + if h, ok := interface{}(m.GetFilter()).(equality.Equalizer); ok { + if !h.Equal(target.GetFilter()) { + return false + } + } else { + if !proto.Equal(m.GetFilter(), target.GetFilter()) { + return false + } + } + switch m.OutputDestination.(type) { case *AccessLog_FileSink: + if _, ok := target.OutputDestination.(*AccessLog_FileSink); !ok { + return false + } if h, ok := interface{}(m.GetFileSink()).(equality.Equalizer); ok { if !h.Equal(target.GetFileSink()) { @@ -102,6 +115,9 @@ func (m *AccessLog) Equal(that interface{}) bool { } case *AccessLog_GrpcService: + if _, ok := target.OutputDestination.(*AccessLog_GrpcService); !ok { + return false + } if h, ok := interface{}(m.GetGrpcService()).(equality.Equalizer); ok { if !h.Equal(target.GetGrpcService()) { @@ -113,6 +129,26 @@ func (m *AccessLog) Equal(that interface{}) bool { } } + case *AccessLog_OpenTelemetryService: + if _, ok := target.OutputDestination.(*AccessLog_OpenTelemetryService); !ok { + return false + } + + if h, ok := interface{}(m.GetOpenTelemetryService()).(equality.Equalizer); ok { + if !h.Equal(target.GetOpenTelemetryService()) { + return false + } + } else { + if !proto.Equal(m.GetOpenTelemetryService(), target.GetOpenTelemetryService()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.OutputDestination != target.OutputDestination { + return false + } } return true @@ -146,12 +182,18 @@ func (m *FileSink) Equal(that interface{}) bool { switch m.OutputFormat.(type) { case *FileSink_StringFormat: + if _, ok := target.OutputFormat.(*FileSink_StringFormat); !ok { + return false + } if strings.Compare(m.GetStringFormat(), target.GetStringFormat()) != 0 { return false } case *FileSink_JsonFormat: + if _, ok := target.OutputFormat.(*FileSink_JsonFormat); !ok { + return false + } if h, ok := interface{}(m.GetJsonFormat()).(equality.Equalizer); ok { if !h.Equal(target.GetJsonFormat()) { @@ -163,6 +205,11 @@ func (m *FileSink) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.OutputFormat != target.OutputFormat { + return false + } } return true @@ -226,14 +273,756 @@ func (m *GrpcService) Equal(that interface{}) bool { } + if len(m.GetFilterStateObjectsToLog()) != len(target.GetFilterStateObjectsToLog()) { + return false + } + for idx, v := range m.GetFilterStateObjectsToLog() { + + if strings.Compare(v, target.GetFilterStateObjectsToLog()[idx]) != 0 { + return false + } + + } + switch m.ServiceRef.(type) { case *GrpcService_StaticClusterName: + if _, ok := target.ServiceRef.(*GrpcService_StaticClusterName); !ok { + return false + } if strings.Compare(m.GetStaticClusterName(), target.GetStaticClusterName()) != 0 { return false } + default: + // m is nil but target is not nil + if m.ServiceRef != target.ServiceRef { + return false + } + } + + return true +} + +// Equal function +func (m *OpenTelemetryGrpcCollector) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*OpenTelemetryGrpcCollector) + if !ok { + that2, ok := that.(OpenTelemetryGrpcCollector) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetEndpoint(), target.GetEndpoint()) != 0 { + return false + } + + if strings.Compare(m.GetAuthority(), target.GetAuthority()) != 0 { + return false + } + + if len(m.GetHeaders()) != len(target.GetHeaders()) { + return false + } + for k, v := range m.GetHeaders() { + + if strings.Compare(v, target.GetHeaders()[k]) != 0 { + return false + } + + } + + if m.GetInsecure() != target.GetInsecure() { + return false + } + + if h, ok := interface{}(m.GetSslConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetSslConfig()) { + return false + } + } else { + if !proto.Equal(m.GetSslConfig(), target.GetSslConfig()) { + return false + } + } + + if h, ok := interface{}(m.GetTimeout()).(equality.Equalizer); ok { + if !h.Equal(target.GetTimeout()) { + return false + } + } else { + if !proto.Equal(m.GetTimeout(), target.GetTimeout()) { + return false + } + } + + return true +} + +// Equal function +func (m *OpenTelemetryService) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*OpenTelemetryService) + if !ok { + that2, ok := that.(OpenTelemetryService) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetLogName(), target.GetLogName()) != 0 { + return false + } + + if len(m.GetFilterStateObjectsToLog()) != len(target.GetFilterStateObjectsToLog()) { + return false + } + for idx, v := range m.GetFilterStateObjectsToLog() { + + if strings.Compare(v, target.GetFilterStateObjectsToLog()[idx]) != 0 { + return false + } + + } + + if m.GetDisableBuiltinLabels() != target.GetDisableBuiltinLabels() { + return false + } + + if h, ok := interface{}(m.GetBody()).(equality.Equalizer); ok { + if !h.Equal(target.GetBody()) { + return false + } + } else { + if !proto.Equal(m.GetBody(), target.GetBody()) { + return false + } + } + + if h, ok := interface{}(m.GetAttributes()).(equality.Equalizer); ok { + if !h.Equal(target.GetAttributes()) { + return false + } + } else { + if !proto.Equal(m.GetAttributes(), target.GetAttributes()) { + return false + } + } + + switch m.Destination.(type) { + + case *OpenTelemetryService_Collector: + if _, ok := target.Destination.(*OpenTelemetryService_Collector); !ok { + return false + } + + if h, ok := interface{}(m.GetCollector()).(equality.Equalizer); ok { + if !h.Equal(target.GetCollector()) { + return false + } + } else { + if !proto.Equal(m.GetCollector(), target.GetCollector()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.Destination != target.Destination { + return false + } + } + + return true +} + +// Equal function +func (m *AccessLogFilter) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AccessLogFilter) + if !ok { + that2, ok := that.(AccessLogFilter) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + switch m.FilterSpecifier.(type) { + + case *AccessLogFilter_StatusCodeFilter: + if _, ok := target.FilterSpecifier.(*AccessLogFilter_StatusCodeFilter); !ok { + return false + } + + if h, ok := interface{}(m.GetStatusCodeFilter()).(equality.Equalizer); ok { + if !h.Equal(target.GetStatusCodeFilter()) { + return false + } + } else { + if !proto.Equal(m.GetStatusCodeFilter(), target.GetStatusCodeFilter()) { + return false + } + } + + case *AccessLogFilter_DurationFilter: + if _, ok := target.FilterSpecifier.(*AccessLogFilter_DurationFilter); !ok { + return false + } + + if h, ok := interface{}(m.GetDurationFilter()).(equality.Equalizer); ok { + if !h.Equal(target.GetDurationFilter()) { + return false + } + } else { + if !proto.Equal(m.GetDurationFilter(), target.GetDurationFilter()) { + return false + } + } + + case *AccessLogFilter_NotHealthCheckFilter: + if _, ok := target.FilterSpecifier.(*AccessLogFilter_NotHealthCheckFilter); !ok { + return false + } + + if h, ok := interface{}(m.GetNotHealthCheckFilter()).(equality.Equalizer); ok { + if !h.Equal(target.GetNotHealthCheckFilter()) { + return false + } + } else { + if !proto.Equal(m.GetNotHealthCheckFilter(), target.GetNotHealthCheckFilter()) { + return false + } + } + + case *AccessLogFilter_TraceableFilter: + if _, ok := target.FilterSpecifier.(*AccessLogFilter_TraceableFilter); !ok { + return false + } + + if h, ok := interface{}(m.GetTraceableFilter()).(equality.Equalizer); ok { + if !h.Equal(target.GetTraceableFilter()) { + return false + } + } else { + if !proto.Equal(m.GetTraceableFilter(), target.GetTraceableFilter()) { + return false + } + } + + case *AccessLogFilter_RuntimeFilter: + if _, ok := target.FilterSpecifier.(*AccessLogFilter_RuntimeFilter); !ok { + return false + } + + if h, ok := interface{}(m.GetRuntimeFilter()).(equality.Equalizer); ok { + if !h.Equal(target.GetRuntimeFilter()) { + return false + } + } else { + if !proto.Equal(m.GetRuntimeFilter(), target.GetRuntimeFilter()) { + return false + } + } + + case *AccessLogFilter_AndFilter: + if _, ok := target.FilterSpecifier.(*AccessLogFilter_AndFilter); !ok { + return false + } + + if h, ok := interface{}(m.GetAndFilter()).(equality.Equalizer); ok { + if !h.Equal(target.GetAndFilter()) { + return false + } + } else { + if !proto.Equal(m.GetAndFilter(), target.GetAndFilter()) { + return false + } + } + + case *AccessLogFilter_OrFilter: + if _, ok := target.FilterSpecifier.(*AccessLogFilter_OrFilter); !ok { + return false + } + + if h, ok := interface{}(m.GetOrFilter()).(equality.Equalizer); ok { + if !h.Equal(target.GetOrFilter()) { + return false + } + } else { + if !proto.Equal(m.GetOrFilter(), target.GetOrFilter()) { + return false + } + } + + case *AccessLogFilter_HeaderFilter: + if _, ok := target.FilterSpecifier.(*AccessLogFilter_HeaderFilter); !ok { + return false + } + + if h, ok := interface{}(m.GetHeaderFilter()).(equality.Equalizer); ok { + if !h.Equal(target.GetHeaderFilter()) { + return false + } + } else { + if !proto.Equal(m.GetHeaderFilter(), target.GetHeaderFilter()) { + return false + } + } + + case *AccessLogFilter_ResponseFlagFilter: + if _, ok := target.FilterSpecifier.(*AccessLogFilter_ResponseFlagFilter); !ok { + return false + } + + if h, ok := interface{}(m.GetResponseFlagFilter()).(equality.Equalizer); ok { + if !h.Equal(target.GetResponseFlagFilter()) { + return false + } + } else { + if !proto.Equal(m.GetResponseFlagFilter(), target.GetResponseFlagFilter()) { + return false + } + } + + case *AccessLogFilter_GrpcStatusFilter: + if _, ok := target.FilterSpecifier.(*AccessLogFilter_GrpcStatusFilter); !ok { + return false + } + + if h, ok := interface{}(m.GetGrpcStatusFilter()).(equality.Equalizer); ok { + if !h.Equal(target.GetGrpcStatusFilter()) { + return false + } + } else { + if !proto.Equal(m.GetGrpcStatusFilter(), target.GetGrpcStatusFilter()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.FilterSpecifier != target.FilterSpecifier { + return false + } + } + + return true +} + +// Equal function +func (m *ComparisonFilter) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ComparisonFilter) + if !ok { + that2, ok := that.(ComparisonFilter) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetOp() != target.GetOp() { + return false + } + + if h, ok := interface{}(m.GetValue()).(equality.Equalizer); ok { + if !h.Equal(target.GetValue()) { + return false + } + } else { + if !proto.Equal(m.GetValue(), target.GetValue()) { + return false + } + } + + return true +} + +// Equal function +func (m *StatusCodeFilter) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*StatusCodeFilter) + if !ok { + that2, ok := that.(StatusCodeFilter) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetComparison()).(equality.Equalizer); ok { + if !h.Equal(target.GetComparison()) { + return false + } + } else { + if !proto.Equal(m.GetComparison(), target.GetComparison()) { + return false + } + } + + return true +} + +// Equal function +func (m *DurationFilter) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*DurationFilter) + if !ok { + that2, ok := that.(DurationFilter) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetComparison()).(equality.Equalizer); ok { + if !h.Equal(target.GetComparison()) { + return false + } + } else { + if !proto.Equal(m.GetComparison(), target.GetComparison()) { + return false + } + } + + return true +} + +// Equal function +func (m *NotHealthCheckFilter) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*NotHealthCheckFilter) + if !ok { + that2, ok := that.(NotHealthCheckFilter) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *TraceableFilter) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*TraceableFilter) + if !ok { + that2, ok := that.(TraceableFilter) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *RuntimeFilter) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RuntimeFilter) + if !ok { + that2, ok := that.(RuntimeFilter) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetRuntimeKey(), target.GetRuntimeKey()) != 0 { + return false + } + + if h, ok := interface{}(m.GetPercentSampled()).(equality.Equalizer); ok { + if !h.Equal(target.GetPercentSampled()) { + return false + } + } else { + if !proto.Equal(m.GetPercentSampled(), target.GetPercentSampled()) { + return false + } + } + + if m.GetUseIndependentRandomness() != target.GetUseIndependentRandomness() { + return false + } + + return true +} + +// Equal function +func (m *AndFilter) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AndFilter) + if !ok { + that2, ok := that.(AndFilter) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetFilters()) != len(target.GetFilters()) { + return false + } + for idx, v := range m.GetFilters() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetFilters()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetFilters()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *OrFilter) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*OrFilter) + if !ok { + that2, ok := that.(OrFilter) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetFilters()) != len(target.GetFilters()) { + return false + } + for idx, v := range m.GetFilters() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetFilters()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetFilters()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *HeaderFilter) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HeaderFilter) + if !ok { + that2, ok := that.(HeaderFilter) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetHeader()).(equality.Equalizer); ok { + if !h.Equal(target.GetHeader()) { + return false + } + } else { + if !proto.Equal(m.GetHeader(), target.GetHeader()) { + return false + } + } + + return true +} + +// Equal function +func (m *ResponseFlagFilter) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ResponseFlagFilter) + if !ok { + that2, ok := that.(ResponseFlagFilter) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetFlags()) != len(target.GetFlags()) { + return false + } + for idx, v := range m.GetFlags() { + + if strings.Compare(v, target.GetFlags()[idx]) != 0 { + return false + } + + } + + return true +} + +// Equal function +func (m *GrpcStatusFilter) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*GrpcStatusFilter) + if !ok { + that2, ok := that.(GrpcStatusFilter) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetStatuses()) != len(target.GetStatuses()) { + return false + } + for idx, v := range m.GetStatuses() { + + if v != target.GetStatuses()[idx] { + return false + } + + } + + if m.GetExclude() != target.GetExclude() { + return false } return true diff --git a/pkg/api/gloo.solo.io/v1/options/als/als.pb.go b/pkg/api/gloo.solo.io/v1/options/als/als.pb.go index 1dd5cfac9..18046c87d 100644 --- a/pkg/api/gloo.solo.io/v1/options/als/als.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/als/als.pb.go @@ -1,6 +1,9 @@ +// Mostly taken from https://github.com/envoyproxy/envoy/blob/317efa53c6add02fa9533fc8f93f10f590077dca/api/envoy/config/accesslog/v3/accesslog.proto +// because we are passing through the filter settings and therefore using the same message definitions + // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/als/als.proto @@ -9,13 +12,20 @@ package als import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - _struct "github.com/golang/protobuf/ptypes/struct" + _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/solo-io/protoc-gen-ext/extproto" + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + v32 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/route/v3" + v31 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/v3" + ssl "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl" _ "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + v1 "go.opentelemetry.io/proto/otlp/common/v1" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + structpb "google.golang.org/protobuf/types/known/structpb" ) const ( @@ -25,27 +35,163 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 +type ComparisonFilter_Op int32 + +const ( + // = + ComparisonFilter_EQ ComparisonFilter_Op = 0 + // >= + ComparisonFilter_GE ComparisonFilter_Op = 1 + // <= + ComparisonFilter_LE ComparisonFilter_Op = 2 +) + +// Enum value maps for ComparisonFilter_Op. +var ( + ComparisonFilter_Op_name = map[int32]string{ + 0: "EQ", + 1: "GE", + 2: "LE", + } + ComparisonFilter_Op_value = map[string]int32{ + "EQ": 0, + "GE": 1, + "LE": 2, + } +) + +func (x ComparisonFilter_Op) Enum() *ComparisonFilter_Op { + p := new(ComparisonFilter_Op) + *p = x + return p +} + +func (x ComparisonFilter_Op) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ComparisonFilter_Op) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_enumTypes[0].Descriptor() +} + +func (ComparisonFilter_Op) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_enumTypes[0] +} + +func (x ComparisonFilter_Op) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ComparisonFilter_Op.Descriptor instead. +func (ComparisonFilter_Op) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescGZIP(), []int{7, 0} +} + +type GrpcStatusFilter_Status int32 + +const ( + GrpcStatusFilter_OK GrpcStatusFilter_Status = 0 + GrpcStatusFilter_CANCELED GrpcStatusFilter_Status = 1 + GrpcStatusFilter_UNKNOWN GrpcStatusFilter_Status = 2 + GrpcStatusFilter_INVALID_ARGUMENT GrpcStatusFilter_Status = 3 + GrpcStatusFilter_DEADLINE_EXCEEDED GrpcStatusFilter_Status = 4 + GrpcStatusFilter_NOT_FOUND GrpcStatusFilter_Status = 5 + GrpcStatusFilter_ALREADY_EXISTS GrpcStatusFilter_Status = 6 + GrpcStatusFilter_PERMISSION_DENIED GrpcStatusFilter_Status = 7 + GrpcStatusFilter_RESOURCE_EXHAUSTED GrpcStatusFilter_Status = 8 + GrpcStatusFilter_FAILED_PRECONDITION GrpcStatusFilter_Status = 9 + GrpcStatusFilter_ABORTED GrpcStatusFilter_Status = 10 + GrpcStatusFilter_OUT_OF_RANGE GrpcStatusFilter_Status = 11 + GrpcStatusFilter_UNIMPLEMENTED GrpcStatusFilter_Status = 12 + GrpcStatusFilter_INTERNAL GrpcStatusFilter_Status = 13 + GrpcStatusFilter_UNAVAILABLE GrpcStatusFilter_Status = 14 + GrpcStatusFilter_DATA_LOSS GrpcStatusFilter_Status = 15 + GrpcStatusFilter_UNAUTHENTICATED GrpcStatusFilter_Status = 16 +) + +// Enum value maps for GrpcStatusFilter_Status. +var ( + GrpcStatusFilter_Status_name = map[int32]string{ + 0: "OK", + 1: "CANCELED", + 2: "UNKNOWN", + 3: "INVALID_ARGUMENT", + 4: "DEADLINE_EXCEEDED", + 5: "NOT_FOUND", + 6: "ALREADY_EXISTS", + 7: "PERMISSION_DENIED", + 8: "RESOURCE_EXHAUSTED", + 9: "FAILED_PRECONDITION", + 10: "ABORTED", + 11: "OUT_OF_RANGE", + 12: "UNIMPLEMENTED", + 13: "INTERNAL", + 14: "UNAVAILABLE", + 15: "DATA_LOSS", + 16: "UNAUTHENTICATED", + } + GrpcStatusFilter_Status_value = map[string]int32{ + "OK": 0, + "CANCELED": 1, + "UNKNOWN": 2, + "INVALID_ARGUMENT": 3, + "DEADLINE_EXCEEDED": 4, + "NOT_FOUND": 5, + "ALREADY_EXISTS": 6, + "PERMISSION_DENIED": 7, + "RESOURCE_EXHAUSTED": 8, + "FAILED_PRECONDITION": 9, + "ABORTED": 10, + "OUT_OF_RANGE": 11, + "UNIMPLEMENTED": 12, + "INTERNAL": 13, + "UNAVAILABLE": 14, + "DATA_LOSS": 15, + "UNAUTHENTICATED": 16, + } +) + +func (x GrpcStatusFilter_Status) Enum() *GrpcStatusFilter_Status { + p := new(GrpcStatusFilter_Status) + *p = x + return p +} + +func (x GrpcStatusFilter_Status) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GrpcStatusFilter_Status) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_enumTypes[1].Descriptor() +} + +func (GrpcStatusFilter_Status) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_enumTypes[1] +} + +func (x GrpcStatusFilter_Status) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GrpcStatusFilter_Status.Descriptor instead. +func (GrpcStatusFilter_Status) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescGZIP(), []int{17, 0} +} // Contains various settings for Envoy's access logging service. -// See here for more information: https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/filter/accesslog/v2/accesslog.proto#envoy-api-msg-config-filter-accesslog-v2-accesslog +// See here for more information: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/accesslog/v3/accesslog.proto type AccessLoggingService struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + AccessLog []*AccessLog `protobuf:"bytes,1,rep,name=access_log,json=accessLog,proto3" json:"access_log,omitempty"` unknownFields protoimpl.UnknownFields - - AccessLog []*AccessLog `protobuf:"bytes,1,rep,name=access_log,json=accessLog,proto3" json:"access_log,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AccessLoggingService) Reset() { *x = AccessLoggingService{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AccessLoggingService) String() string { @@ -56,7 +202,7 @@ func (*AccessLoggingService) ProtoMessage() {} func (x *AccessLoggingService) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -79,25 +225,25 @@ func (x *AccessLoggingService) GetAccessLog() []*AccessLog { } type AccessLog struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // type of Access Logging service to implement // - // Types that are assignable to OutputDestination: + // Types that are valid to be assigned to OutputDestination: + // // *AccessLog_FileSink // *AccessLog_GrpcService + // *AccessLog_OpenTelemetryService OutputDestination isAccessLog_OutputDestination `protobuf_oneof:"OutputDestination"` + Filter *AccessLogFilter `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AccessLog) Reset() { *x = AccessLog{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AccessLog) String() string { @@ -108,7 +254,7 @@ func (*AccessLog) ProtoMessage() {} func (x *AccessLog) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -123,23 +269,43 @@ func (*AccessLog) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescGZIP(), []int{1} } -func (m *AccessLog) GetOutputDestination() isAccessLog_OutputDestination { - if m != nil { - return m.OutputDestination +func (x *AccessLog) GetOutputDestination() isAccessLog_OutputDestination { + if x != nil { + return x.OutputDestination } return nil } func (x *AccessLog) GetFileSink() *FileSink { - if x, ok := x.GetOutputDestination().(*AccessLog_FileSink); ok { - return x.FileSink + if x != nil { + if x, ok := x.OutputDestination.(*AccessLog_FileSink); ok { + return x.FileSink + } } return nil } func (x *AccessLog) GetGrpcService() *GrpcService { - if x, ok := x.GetOutputDestination().(*AccessLog_GrpcService); ok { - return x.GrpcService + if x != nil { + if x, ok := x.OutputDestination.(*AccessLog_GrpcService); ok { + return x.GrpcService + } + } + return nil +} + +func (x *AccessLog) GetOpenTelemetryService() *OpenTelemetryService { + if x != nil { + if x, ok := x.OutputDestination.(*AccessLog_OpenTelemetryService); ok { + return x.OpenTelemetryService + } + } + return nil +} + +func (x *AccessLog) GetFilter() *AccessLogFilter { + if x != nil { + return x.Filter } return nil } @@ -158,32 +324,37 @@ type AccessLog_GrpcService struct { GrpcService *GrpcService `protobuf:"bytes,3,opt,name=grpc_service,json=grpcService,proto3,oneof"` } +type AccessLog_OpenTelemetryService struct { + // Send access logs to OpenTelemetry service + OpenTelemetryService *OpenTelemetryService `protobuf:"bytes,5,opt,name=open_telemetry_service,json=openTelemetryService,proto3,oneof"` +} + func (*AccessLog_FileSink) isAccessLog_OutputDestination() {} func (*AccessLog_GrpcService) isAccessLog_OutputDestination() {} -type FileSink struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (*AccessLog_OpenTelemetryService) isAccessLog_OutputDestination() {} +type FileSink struct { + state protoimpl.MessageState `protogen:"open.v1"` // the file path to which the file access logging service will sink Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` // the format which the logs should be outputted by // - // Types that are assignable to OutputFormat: + // Types that are valid to be assigned to OutputFormat: + // // *FileSink_StringFormat // *FileSink_JsonFormat - OutputFormat isFileSink_OutputFormat `protobuf_oneof:"output_format"` + OutputFormat isFileSink_OutputFormat `protobuf_oneof:"output_format"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FileSink) Reset() { *x = FileSink{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FileSink) String() string { @@ -194,7 +365,7 @@ func (*FileSink) ProtoMessage() {} func (x *FileSink) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -216,23 +387,27 @@ func (x *FileSink) GetPath() string { return "" } -func (m *FileSink) GetOutputFormat() isFileSink_OutputFormat { - if m != nil { - return m.OutputFormat +func (x *FileSink) GetOutputFormat() isFileSink_OutputFormat { + if x != nil { + return x.OutputFormat } return nil } func (x *FileSink) GetStringFormat() string { - if x, ok := x.GetOutputFormat().(*FileSink_StringFormat); ok { - return x.StringFormat + if x != nil { + if x, ok := x.OutputFormat.(*FileSink_StringFormat); ok { + return x.StringFormat + } } return "" } -func (x *FileSink) GetJsonFormat() *_struct.Struct { - if x, ok := x.GetOutputFormat().(*FileSink_JsonFormat); ok { - return x.JsonFormat +func (x *FileSink) GetJsonFormat() *structpb.Struct { + if x != nil { + if x, ok := x.OutputFormat.(*FileSink_JsonFormat); ok { + return x.JsonFormat + } } return nil } @@ -250,7 +425,7 @@ type FileSink_StringFormat struct { type FileSink_JsonFormat struct { // the format object by which to envoy will emit the logs in a structured way. // https://www.envoyproxy.io/docs/envoy/v1.14.1/configuration/observability/access_log#format-dictionaries - JsonFormat *_struct.Struct `protobuf:"bytes,3,opt,name=json_format,json=jsonFormat,proto3,oneof"` + JsonFormat *structpb.Struct `protobuf:"bytes,3,opt,name=json_format,json=jsonFormat,proto3,oneof"` } func (*FileSink_StringFormat) isFileSink_OutputFormat() {} @@ -258,29 +433,30 @@ func (*FileSink_StringFormat) isFileSink_OutputFormat() {} func (*FileSink_JsonFormat) isFileSink_OutputFormat() {} type GrpcService struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // name of log stream LogName string `protobuf:"bytes,1,opt,name=log_name,json=logName,proto3" json:"log_name,omitempty"` // The static cluster defined in bootstrap config to route to // - // Types that are assignable to ServiceRef: + // Types that are valid to be assigned to ServiceRef: + // // *GrpcService_StaticClusterName ServiceRef isGrpcService_ServiceRef `protobuf_oneof:"service_ref"` AdditionalRequestHeadersToLog []string `protobuf:"bytes,4,rep,name=additional_request_headers_to_log,json=additionalRequestHeadersToLog,proto3" json:"additional_request_headers_to_log,omitempty"` AdditionalResponseHeadersToLog []string `protobuf:"bytes,5,rep,name=additional_response_headers_to_log,json=additionalResponseHeadersToLog,proto3" json:"additional_response_headers_to_log,omitempty"` AdditionalResponseTrailersToLog []string `protobuf:"bytes,6,rep,name=additional_response_trailers_to_log,json=additionalResponseTrailersToLog,proto3" json:"additional_response_trailers_to_log,omitempty"` + // Additional filter state objects to log in filter_state_objects. Logger will call FilterState::Object::serializeAsProto to serialize the filter state object. + // See https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/access_loggers/grpc/v3/als.proto#extensions-access-loggers-grpc-v3-commongrpcaccesslogconfig + FilterStateObjectsToLog []string `protobuf:"bytes,7,rep,name=filter_state_objects_to_log,json=filterStateObjectsToLog,proto3" json:"filter_state_objects_to_log,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GrpcService) Reset() { *x = GrpcService{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GrpcService) String() string { @@ -291,7 +467,7 @@ func (*GrpcService) ProtoMessage() {} func (x *GrpcService) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -313,16 +489,18 @@ func (x *GrpcService) GetLogName() string { return "" } -func (m *GrpcService) GetServiceRef() isGrpcService_ServiceRef { - if m != nil { - return m.ServiceRef +func (x *GrpcService) GetServiceRef() isGrpcService_ServiceRef { + if x != nil { + return x.ServiceRef } return nil } func (x *GrpcService) GetStaticClusterName() string { - if x, ok := x.GetServiceRef().(*GrpcService_StaticClusterName); ok { - return x.StaticClusterName + if x != nil { + if x, ok := x.ServiceRef.(*GrpcService_StaticClusterName); ok { + return x.StaticClusterName + } } return "" } @@ -348,6 +526,13 @@ func (x *GrpcService) GetAdditionalResponseTrailersToLog() []string { return nil } +func (x *GrpcService) GetFilterStateObjectsToLog() []string { + if x != nil { + return x.FilterStateObjectsToLog + } + return nil +} + type isGrpcService_ServiceRef interface { isGrpcService_ServiceRef() } @@ -358,190 +543,1459 @@ type GrpcService_StaticClusterName struct { func (*GrpcService_StaticClusterName) isGrpcService_ServiceRef() {} -var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto protoreflect.FileDescriptor +type OpenTelemetryGrpcCollector struct { + state protoimpl.MessageState `protogen:"open.v1"` + // host and port of the OpenTelemetry collector + Endpoint string `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + // authority to use when connecting to the OpenTelemetry collector + Authority string `protobuf:"bytes,2,opt,name=authority,proto3" json:"authority,omitempty"` + // headers to use when connecting to the OpenTelemetry collector + Headers map[string]string `protobuf:"bytes,3,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // if true, the connection to the OpenTelemetry collector will be insecure + // (i.e. no TLS). + Insecure bool `protobuf:"varint,4,opt,name=insecure,proto3" json:"insecure,omitempty"` + // ssl config to use when connecting to the OpenTelemetry collector, + // if insecure is true, this will be ignored + SslConfig *ssl.UpstreamSslConfig `protobuf:"bytes,5,opt,name=ssl_config,json=sslConfig,proto3" json:"ssl_config,omitempty"` + // timeout to use when connecting to the OpenTelemetry collector + Timeout *durationpb.Duration `protobuf:"bytes,6,opt,name=timeout,proto3" json:"timeout,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDesc = []byte{ - 0x0a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6c, 0x73, 0x2f, 0x61, 0x6c, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x61, 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, - 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0x5a, 0x0a, 0x14, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x42, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x6c, - 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, - 0x52, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x22, 0xaf, 0x01, 0x0a, 0x09, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x12, 0x41, 0x0a, 0x09, 0x66, 0x69, 0x6c, - 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, - 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x6e, 0x6b, - 0x48, 0x00, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x6e, 0x6b, 0x12, 0x4a, 0x0a, 0x0c, - 0x67, 0x72, 0x70, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x72, - 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x67, 0x72, 0x70, - 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x4f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x92, 0x01, - 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x25, - 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x3a, 0x0a, 0x0b, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x6a, 0x73, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x22, 0xcd, 0x02, 0x0a, 0x0b, 0x47, 0x72, 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, - 0x13, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x11, 0x73, 0x74, - 0x61, 0x74, 0x69, 0x63, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x48, 0x0a, 0x21, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, - 0x5f, 0x6c, 0x6f, 0x67, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x1d, 0x61, 0x64, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x4c, 0x6f, 0x67, 0x12, 0x4a, 0x0a, 0x22, 0x61, 0x64, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x67, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x1e, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x54, 0x6f, 0x4c, 0x6f, 0x67, 0x12, 0x4c, 0x0a, 0x23, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x72, 0x61, - 0x69, 0x6c, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x67, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x1f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x54, 0x6f, - 0x4c, 0x6f, 0x67, 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x72, - 0x65, 0x66, 0x42, 0x4a, 0x5a, 0x40, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, - 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x61, 0x6c, 0x73, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +func (x *OpenTelemetryGrpcCollector) Reset() { + *x = OpenTelemetryGrpcCollector{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -var ( - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDesc -) +func (x *OpenTelemetryGrpcCollector) String() string { + return protoimpl.X.MessageStringOf(x) +} -func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescGZIP() []byte { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescData) - }) - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescData +func (*OpenTelemetryGrpcCollector) ProtoMessage() {} + +func (x *OpenTelemetryGrpcCollector) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_goTypes = []interface{}{ - (*AccessLoggingService)(nil), // 0: als.options.gloo.solo.io.AccessLoggingService - (*AccessLog)(nil), // 1: als.options.gloo.solo.io.AccessLog - (*FileSink)(nil), // 2: als.options.gloo.solo.io.FileSink - (*GrpcService)(nil), // 3: als.options.gloo.solo.io.GrpcService - (*_struct.Struct)(nil), // 4: google.protobuf.Struct +// Deprecated: Use OpenTelemetryGrpcCollector.ProtoReflect.Descriptor instead. +func (*OpenTelemetryGrpcCollector) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescGZIP(), []int{4} } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_depIdxs = []int32{ - 1, // 0: als.options.gloo.solo.io.AccessLoggingService.access_log:type_name -> als.options.gloo.solo.io.AccessLog - 2, // 1: als.options.gloo.solo.io.AccessLog.file_sink:type_name -> als.options.gloo.solo.io.FileSink - 3, // 2: als.options.gloo.solo.io.AccessLog.grpc_service:type_name -> als.options.gloo.solo.io.GrpcService - 4, // 3: als.options.gloo.solo.io.FileSink.json_format:type_name -> google.protobuf.Struct - 4, // [4:4] is the sub-list for method output_type - 4, // [4:4] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + +func (x *OpenTelemetryGrpcCollector) GetEndpoint() string { + if x != nil { + return x.Endpoint + } + return "" } -func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_init() } -func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_init() { - if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto != nil { - return +func (x *OpenTelemetryGrpcCollector) GetAuthority() string { + if x != nil { + return x.Authority } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccessLoggingService); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccessLog); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FileSink); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GrpcService); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[1].OneofWrappers = []interface{}{ - (*AccessLog_FileSink)(nil), - (*AccessLog_GrpcService)(nil), + return "" +} + +func (x *OpenTelemetryGrpcCollector) GetHeaders() map[string]string { + if x != nil { + return x.Headers } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[2].OneofWrappers = []interface{}{ - (*FileSink_StringFormat)(nil), - (*FileSink_JsonFormat)(nil), + return nil +} + +func (x *OpenTelemetryGrpcCollector) GetInsecure() bool { + if x != nil { + return x.Insecure } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[3].OneofWrappers = []interface{}{ - (*GrpcService_StaticClusterName)(nil), + return false +} + +func (x *OpenTelemetryGrpcCollector) GetSslConfig() *ssl.UpstreamSslConfig { + if x != nil { + return x.SslConfig + } + return nil +} + +func (x *OpenTelemetryGrpcCollector) GetTimeout() *durationpb.Duration { + if x != nil { + return x.Timeout + } + return nil +} + +type OpenTelemetryService struct { + state protoimpl.MessageState `protogen:"open.v1"` + // name of log stream + LogName string `protobuf:"bytes,1,opt,name=log_name,json=logName,proto3" json:"log_name,omitempty"` + // The destination to ship logs to + // This is a oneof field, so we can easily add other destinations in the future + // without breaking the API. + // + // Types that are valid to be assigned to Destination: + // + // *OpenTelemetryService_Collector + Destination isOpenTelemetryService_Destination `protobuf_oneof:"destination"` + // Additional filter state objects to log in filter_state_objects. Logger will call FilterState::Object::serializeAsProto to serialize the filter state object. + // See https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/access_loggers/grpc/v3/als.proto#extensions-access-loggers-grpc-v3-commongrpcaccesslogconfig + FilterStateObjectsToLog []string `protobuf:"bytes,3,rep,name=filter_state_objects_to_log,json=filterStateObjectsToLog,proto3" json:"filter_state_objects_to_log,omitempty"` + // If true, Envoy logger will not generate built-in resource labels like log_name, + // zone_name, cluster_name, node_name + DisableBuiltinLabels bool `protobuf:"varint,4,opt,name=disable_builtin_labels,json=disableBuiltinLabels,proto3" json:"disable_builtin_labels,omitempty"` + // The body of the log record. Supported formats include human-readable + // string messages, including multiline, that describe the event in free form, or + // structured data composed of arrays and maps of other values. For more + // information about the format, see the [OpenTelementry `common.proto`](https://github.com/open-telemetry/opentelemetry-proto/blob/main/opentelemetry/proto/common/v1/common.proto). + // + //

Examples: + //
  • {"int_value": 1}
  • + //
  • {"string_value": "hello world"}
  • + //
  • {"kvlist_value": {"values": [{"key": "k1", "value": {"int_value": 1}}, {"key": "k2", "value": {"string_value": "v2"}}]}}
  • + //
  • {"array_value": {"values": [{"int_value": 1}, {"string_value": "hello world"}]}}
+ Body *v1.AnyValue `protobuf:"bytes,5,opt,name=body,proto3" json:"body,omitempty"` + // Optional: Additional attributes that describe the specific event occurrence. + // Attribute keys must be unique to each attribute. For more + // information about the format, see the [OpenTelementry `common.proto`](https://github.com/open-telemetry/opentelemetry-proto/blob/main/opentelemetry/proto/common/v1/common.proto). + // + //

Examples: + //
  • {"values": [{"key": "k1", "value": {"int_value": 1}}, {"key": "k2", "value": {"string_value": "v2"}}]}
  • + //
  • {"values": [{"key": "k1", "values": {kvlist_value: {values: [{"key": "k2", "value": {"int_value": 1}}, {"key": "k3", "value": {"string_value": "v2"}}]}}}]}
  • + //
  • {"values": [{"key": "k1", "value": {"int_value": 1}}, {"key": "k2", "value": {"string_value": "v2"}}]}
+ Attributes *v1.KeyValueList `protobuf:"bytes,6,opt,name=attributes,proto3" json:"attributes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OpenTelemetryService) Reset() { + *x = OpenTelemetryService{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OpenTelemetryService) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OpenTelemetryService) ProtoMessage() {} + +func (x *OpenTelemetryService) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OpenTelemetryService.ProtoReflect.Descriptor instead. +func (*OpenTelemetryService) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescGZIP(), []int{5} +} + +func (x *OpenTelemetryService) GetLogName() string { + if x != nil { + return x.LogName + } + return "" +} + +func (x *OpenTelemetryService) GetDestination() isOpenTelemetryService_Destination { + if x != nil { + return x.Destination + } + return nil +} + +func (x *OpenTelemetryService) GetCollector() *OpenTelemetryGrpcCollector { + if x != nil { + if x, ok := x.Destination.(*OpenTelemetryService_Collector); ok { + return x.Collector + } + } + return nil +} + +func (x *OpenTelemetryService) GetFilterStateObjectsToLog() []string { + if x != nil { + return x.FilterStateObjectsToLog + } + return nil +} + +func (x *OpenTelemetryService) GetDisableBuiltinLabels() bool { + if x != nil { + return x.DisableBuiltinLabels + } + return false +} + +func (x *OpenTelemetryService) GetBody() *v1.AnyValue { + if x != nil { + return x.Body + } + return nil +} + +func (x *OpenTelemetryService) GetAttributes() *v1.KeyValueList { + if x != nil { + return x.Attributes + } + return nil +} + +type isOpenTelemetryService_Destination interface { + isOpenTelemetryService_Destination() +} + +type OpenTelemetryService_Collector struct { + Collector *OpenTelemetryGrpcCollector `protobuf:"bytes,2,opt,name=collector,proto3,oneof"` +} + +func (*OpenTelemetryService_Collector) isOpenTelemetryService_Destination() {} + +type AccessLogFilter struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to FilterSpecifier: + // + // *AccessLogFilter_StatusCodeFilter + // *AccessLogFilter_DurationFilter + // *AccessLogFilter_NotHealthCheckFilter + // *AccessLogFilter_TraceableFilter + // *AccessLogFilter_RuntimeFilter + // *AccessLogFilter_AndFilter + // *AccessLogFilter_OrFilter + // *AccessLogFilter_HeaderFilter + // *AccessLogFilter_ResponseFlagFilter + // *AccessLogFilter_GrpcStatusFilter + FilterSpecifier isAccessLogFilter_FilterSpecifier `protobuf_oneof:"filter_specifier"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AccessLogFilter) Reset() { + *x = AccessLogFilter{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AccessLogFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AccessLogFilter) ProtoMessage() {} + +func (x *AccessLogFilter) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AccessLogFilter.ProtoReflect.Descriptor instead. +func (*AccessLogFilter) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescGZIP(), []int{6} +} + +func (x *AccessLogFilter) GetFilterSpecifier() isAccessLogFilter_FilterSpecifier { + if x != nil { + return x.FilterSpecifier + } + return nil +} + +func (x *AccessLogFilter) GetStatusCodeFilter() *StatusCodeFilter { + if x != nil { + if x, ok := x.FilterSpecifier.(*AccessLogFilter_StatusCodeFilter); ok { + return x.StatusCodeFilter + } + } + return nil +} + +func (x *AccessLogFilter) GetDurationFilter() *DurationFilter { + if x != nil { + if x, ok := x.FilterSpecifier.(*AccessLogFilter_DurationFilter); ok { + return x.DurationFilter + } + } + return nil +} + +func (x *AccessLogFilter) GetNotHealthCheckFilter() *NotHealthCheckFilter { + if x != nil { + if x, ok := x.FilterSpecifier.(*AccessLogFilter_NotHealthCheckFilter); ok { + return x.NotHealthCheckFilter + } + } + return nil +} + +func (x *AccessLogFilter) GetTraceableFilter() *TraceableFilter { + if x != nil { + if x, ok := x.FilterSpecifier.(*AccessLogFilter_TraceableFilter); ok { + return x.TraceableFilter + } + } + return nil +} + +func (x *AccessLogFilter) GetRuntimeFilter() *RuntimeFilter { + if x != nil { + if x, ok := x.FilterSpecifier.(*AccessLogFilter_RuntimeFilter); ok { + return x.RuntimeFilter + } + } + return nil +} + +func (x *AccessLogFilter) GetAndFilter() *AndFilter { + if x != nil { + if x, ok := x.FilterSpecifier.(*AccessLogFilter_AndFilter); ok { + return x.AndFilter + } + } + return nil +} + +func (x *AccessLogFilter) GetOrFilter() *OrFilter { + if x != nil { + if x, ok := x.FilterSpecifier.(*AccessLogFilter_OrFilter); ok { + return x.OrFilter + } + } + return nil +} + +func (x *AccessLogFilter) GetHeaderFilter() *HeaderFilter { + if x != nil { + if x, ok := x.FilterSpecifier.(*AccessLogFilter_HeaderFilter); ok { + return x.HeaderFilter + } + } + return nil +} + +func (x *AccessLogFilter) GetResponseFlagFilter() *ResponseFlagFilter { + if x != nil { + if x, ok := x.FilterSpecifier.(*AccessLogFilter_ResponseFlagFilter); ok { + return x.ResponseFlagFilter + } + } + return nil +} + +func (x *AccessLogFilter) GetGrpcStatusFilter() *GrpcStatusFilter { + if x != nil { + if x, ok := x.FilterSpecifier.(*AccessLogFilter_GrpcStatusFilter); ok { + return x.GrpcStatusFilter + } + } + return nil +} + +type isAccessLogFilter_FilterSpecifier interface { + isAccessLogFilter_FilterSpecifier() +} + +type AccessLogFilter_StatusCodeFilter struct { + // Status code filter. + StatusCodeFilter *StatusCodeFilter `protobuf:"bytes,1,opt,name=status_code_filter,json=statusCodeFilter,proto3,oneof"` +} + +type AccessLogFilter_DurationFilter struct { + // Duration filter. + DurationFilter *DurationFilter `protobuf:"bytes,2,opt,name=duration_filter,json=durationFilter,proto3,oneof"` +} + +type AccessLogFilter_NotHealthCheckFilter struct { + // Not health check filter. + NotHealthCheckFilter *NotHealthCheckFilter `protobuf:"bytes,3,opt,name=not_health_check_filter,json=notHealthCheckFilter,proto3,oneof"` +} + +type AccessLogFilter_TraceableFilter struct { + // Traceable filter. + TraceableFilter *TraceableFilter `protobuf:"bytes,4,opt,name=traceable_filter,json=traceableFilter,proto3,oneof"` +} + +type AccessLogFilter_RuntimeFilter struct { + // Runtime filter. + RuntimeFilter *RuntimeFilter `protobuf:"bytes,5,opt,name=runtime_filter,json=runtimeFilter,proto3,oneof"` +} + +type AccessLogFilter_AndFilter struct { + // And filter. + AndFilter *AndFilter `protobuf:"bytes,6,opt,name=and_filter,json=andFilter,proto3,oneof"` +} + +type AccessLogFilter_OrFilter struct { + // Or filter. + OrFilter *OrFilter `protobuf:"bytes,7,opt,name=or_filter,json=orFilter,proto3,oneof"` +} + +type AccessLogFilter_HeaderFilter struct { + // Header filter. + HeaderFilter *HeaderFilter `protobuf:"bytes,8,opt,name=header_filter,json=headerFilter,proto3,oneof"` +} + +type AccessLogFilter_ResponseFlagFilter struct { + // Response flag filter. + ResponseFlagFilter *ResponseFlagFilter `protobuf:"bytes,9,opt,name=response_flag_filter,json=responseFlagFilter,proto3,oneof"` +} + +type AccessLogFilter_GrpcStatusFilter struct { + // gRPC status filter. + GrpcStatusFilter *GrpcStatusFilter `protobuf:"bytes,10,opt,name=grpc_status_filter,json=grpcStatusFilter,proto3,oneof"` +} + +func (*AccessLogFilter_StatusCodeFilter) isAccessLogFilter_FilterSpecifier() {} + +func (*AccessLogFilter_DurationFilter) isAccessLogFilter_FilterSpecifier() {} + +func (*AccessLogFilter_NotHealthCheckFilter) isAccessLogFilter_FilterSpecifier() {} + +func (*AccessLogFilter_TraceableFilter) isAccessLogFilter_FilterSpecifier() {} + +func (*AccessLogFilter_RuntimeFilter) isAccessLogFilter_FilterSpecifier() {} + +func (*AccessLogFilter_AndFilter) isAccessLogFilter_FilterSpecifier() {} + +func (*AccessLogFilter_OrFilter) isAccessLogFilter_FilterSpecifier() {} + +func (*AccessLogFilter_HeaderFilter) isAccessLogFilter_FilterSpecifier() {} + +func (*AccessLogFilter_ResponseFlagFilter) isAccessLogFilter_FilterSpecifier() {} + +func (*AccessLogFilter_GrpcStatusFilter) isAccessLogFilter_FilterSpecifier() {} + +// Filter on an integer comparison. +type ComparisonFilter struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Comparison operator. + Op ComparisonFilter_Op `protobuf:"varint,1,opt,name=op,proto3,enum=als.options.gloo.solo.io.ComparisonFilter_Op" json:"op,omitempty"` + // Value to compare against. Note that the `defaultValue` field must be defined unless + // the `runtimeKey` matches a key that is defined in Envoy's [runtime configuration layer](https://www.envoyproxy.io/docs/envoy/v1.30.0/configuration/operations/runtime#config-runtime-bootstrap). + // Gloo Gateway does not include a key by default. To specify a key-value pair, use the + // [gatewayProxies.NAME.customStaticLayer]({{< versioned_link_path fromRoot="/reference/helm_chart_values/" >}}) + // Helm value or set the key at runtime by using the gateway proxy admin interface. + Value *v3.RuntimeUInt32 `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ComparisonFilter) Reset() { + *x = ComparisonFilter{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ComparisonFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ComparisonFilter) ProtoMessage() {} + +func (x *ComparisonFilter) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ComparisonFilter.ProtoReflect.Descriptor instead. +func (*ComparisonFilter) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescGZIP(), []int{7} +} + +func (x *ComparisonFilter) GetOp() ComparisonFilter_Op { + if x != nil { + return x.Op + } + return ComparisonFilter_EQ +} + +func (x *ComparisonFilter) GetValue() *v3.RuntimeUInt32 { + if x != nil { + return x.Value + } + return nil +} + +// Filters on HTTP response/status code. +type StatusCodeFilter struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Comparison. + Comparison *ComparisonFilter `protobuf:"bytes,1,opt,name=comparison,proto3" json:"comparison,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StatusCodeFilter) Reset() { + *x = StatusCodeFilter{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StatusCodeFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StatusCodeFilter) ProtoMessage() {} + +func (x *StatusCodeFilter) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StatusCodeFilter.ProtoReflect.Descriptor instead. +func (*StatusCodeFilter) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescGZIP(), []int{8} +} + +func (x *StatusCodeFilter) GetComparison() *ComparisonFilter { + if x != nil { + return x.Comparison + } + return nil +} + +// Filters on total request duration in milliseconds. +type DurationFilter struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Comparison. + Comparison *ComparisonFilter `protobuf:"bytes,1,opt,name=comparison,proto3" json:"comparison,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DurationFilter) Reset() { + *x = DurationFilter{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DurationFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DurationFilter) ProtoMessage() {} + +func (x *DurationFilter) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DurationFilter.ProtoReflect.Descriptor instead. +func (*DurationFilter) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescGZIP(), []int{9} +} + +func (x *DurationFilter) GetComparison() *ComparisonFilter { + if x != nil { + return x.Comparison + } + return nil +} + +// Filters for requests that are not health check requests. A health check +// request is marked by the health check filter. +type NotHealthCheckFilter struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NotHealthCheckFilter) Reset() { + *x = NotHealthCheckFilter{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NotHealthCheckFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NotHealthCheckFilter) ProtoMessage() {} + +func (x *NotHealthCheckFilter) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NotHealthCheckFilter.ProtoReflect.Descriptor instead. +func (*NotHealthCheckFilter) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescGZIP(), []int{10} +} + +// Filters for requests that are traceable. See the tracing overview for more +// information on how a request becomes traceable. +type TraceableFilter struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TraceableFilter) Reset() { + *x = TraceableFilter{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TraceableFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TraceableFilter) ProtoMessage() {} + +func (x *TraceableFilter) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TraceableFilter.ProtoReflect.Descriptor instead. +func (*TraceableFilter) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescGZIP(), []int{11} +} + +// Filters for random sampling of requests. +type RuntimeFilter struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Runtime key to get an optional overridden numerator for use in the + // `percent_sampled` field. If found in runtime, this value will replace the + // default numerator. + RuntimeKey string `protobuf:"bytes,1,opt,name=runtime_key,json=runtimeKey,proto3" json:"runtime_key,omitempty"` + // The default sampling percentage. If not specified, defaults to 0% with + // denominator of 100. + PercentSampled *v31.FractionalPercent `protobuf:"bytes,2,opt,name=percent_sampled,json=percentSampled,proto3" json:"percent_sampled,omitempty"` + // By default, sampling pivots on the header + // :ref:`x-request-id` being + // present. If :ref:`x-request-id` + // is present, the filter will consistently sample across multiple hosts based + // on the runtime key value and the value extracted from + // :ref:`x-request-id`. If it is + // missing, or `use_independent_randomness` is set to true, the filter will + // randomly sample based on the runtime key value alone. + // `use_independent_randomness` can be used for logging kill switches within + // complex nested :ref:`AndFilter + // ` and :ref:`OrFilter + // ` blocks that are easier to + // reason about from a probability perspective (i.e., setting to true will + // cause the filter to behave like an independent random variable when + // composed within logical operator filters). + UseIndependentRandomness bool `protobuf:"varint,3,opt,name=use_independent_randomness,json=useIndependentRandomness,proto3" json:"use_independent_randomness,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RuntimeFilter) Reset() { + *x = RuntimeFilter{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RuntimeFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RuntimeFilter) ProtoMessage() {} + +func (x *RuntimeFilter) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RuntimeFilter.ProtoReflect.Descriptor instead. +func (*RuntimeFilter) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescGZIP(), []int{12} +} + +func (x *RuntimeFilter) GetRuntimeKey() string { + if x != nil { + return x.RuntimeKey + } + return "" +} + +func (x *RuntimeFilter) GetPercentSampled() *v31.FractionalPercent { + if x != nil { + return x.PercentSampled + } + return nil +} + +func (x *RuntimeFilter) GetUseIndependentRandomness() bool { + if x != nil { + return x.UseIndependentRandomness + } + return false +} + +// Performs a logical “and” operation on the result of each filter in filters. +// Filters are evaluated sequentially and if one of them returns false, the +// filter returns false immediately. +type AndFilter struct { + state protoimpl.MessageState `protogen:"open.v1"` + Filters []*AccessLogFilter `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AndFilter) Reset() { + *x = AndFilter{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AndFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AndFilter) ProtoMessage() {} + +func (x *AndFilter) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AndFilter.ProtoReflect.Descriptor instead. +func (*AndFilter) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescGZIP(), []int{13} +} + +func (x *AndFilter) GetFilters() []*AccessLogFilter { + if x != nil { + return x.Filters + } + return nil +} + +// Performs a logical “or” operation on the result of each individual filter. +// Filters are evaluated sequentially and if one of them returns true, the +// filter returns true immediately. +type OrFilter struct { + state protoimpl.MessageState `protogen:"open.v1"` + Filters []*AccessLogFilter `protobuf:"bytes,2,rep,name=filters,proto3" json:"filters,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OrFilter) Reset() { + *x = OrFilter{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OrFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OrFilter) ProtoMessage() {} + +func (x *OrFilter) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OrFilter.ProtoReflect.Descriptor instead. +func (*OrFilter) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescGZIP(), []int{14} +} + +func (x *OrFilter) GetFilters() []*AccessLogFilter { + if x != nil { + return x.Filters + } + return nil +} + +// Filters requests based on the presence or value of a request header. +type HeaderFilter struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Only requests with a header which matches the specified HeaderMatcher will + // pass the filter check. + Header *v32.HeaderMatcher `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HeaderFilter) Reset() { + *x = HeaderFilter{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HeaderFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HeaderFilter) ProtoMessage() {} + +func (x *HeaderFilter) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HeaderFilter.ProtoReflect.Descriptor instead. +func (*HeaderFilter) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescGZIP(), []int{15} +} + +func (x *HeaderFilter) GetHeader() *v32.HeaderMatcher { + if x != nil { + return x.Header + } + return nil +} + +// Filters requests that received responses with an Envoy response flag set. +// A list of the response flags can be found +// in the access log formatter +// :ref:`documentation`. +type ResponseFlagFilter struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Only responses with the any of the flags listed in this field will be + // logged. This field is optional. If it is not specified, then any response + // flag will pass the filter check. + Flags []string `protobuf:"bytes,1,rep,name=flags,proto3" json:"flags,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResponseFlagFilter) Reset() { + *x = ResponseFlagFilter{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResponseFlagFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResponseFlagFilter) ProtoMessage() {} + +func (x *ResponseFlagFilter) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResponseFlagFilter.ProtoReflect.Descriptor instead. +func (*ResponseFlagFilter) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescGZIP(), []int{16} +} + +func (x *ResponseFlagFilter) GetFlags() []string { + if x != nil { + return x.Flags + } + return nil +} + +// Filters gRPC requests based on their response status. If a gRPC status is not +// provided, the filter will infer the status from the HTTP status code. +type GrpcStatusFilter struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Logs only responses that have any one of the gRPC statuses in this field. + Statuses []GrpcStatusFilter_Status `protobuf:"varint,1,rep,packed,name=statuses,proto3,enum=als.options.gloo.solo.io.GrpcStatusFilter_Status" json:"statuses,omitempty"` + // If included and set to true, the filter will instead block all responses + // with a gRPC status or inferred gRPC status enumerated in statuses, and + // allow all other responses. + Exclude bool `protobuf:"varint,2,opt,name=exclude,proto3" json:"exclude,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GrpcStatusFilter) Reset() { + *x = GrpcStatusFilter{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GrpcStatusFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GrpcStatusFilter) ProtoMessage() {} + +func (x *GrpcStatusFilter) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GrpcStatusFilter.ProtoReflect.Descriptor instead. +func (*GrpcStatusFilter) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescGZIP(), []int{17} +} + +func (x *GrpcStatusFilter) GetStatuses() []GrpcStatusFilter_Status { + if x != nil { + return x.Statuses + } + return nil +} + +func (x *GrpcStatusFilter) GetExclude() bool { + if x != nil { + return x.Exclude + } + return false +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDesc = string([]byte{ + 0x0a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6c, 0x73, 0x2f, 0x61, 0x6c, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x61, 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, + 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3b, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x73, 0x6c, 0x2f, 0x73, 0x73, + 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x53, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, + 0x33, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4f, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x76, 0x33, 0x2f, + 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x60, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, + 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x58, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, + 0x72, 0x79, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x5a, 0x0a, 0x14, 0x41, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x42, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x52, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x4c, 0x6f, 0x67, 0x22, 0xda, 0x02, 0x0a, 0x09, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, + 0x67, 0x12, 0x41, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x6e, 0x6b, 0x48, 0x00, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, + 0x53, 0x69, 0x6e, 0x6b, 0x12, 0x4a, 0x0a, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x6c, 0x73, + 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x48, 0x00, 0x52, 0x0b, 0x67, 0x72, 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0x66, 0x0a, 0x16, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, + 0x72, 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2e, 0x2e, 0x61, 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x48, 0x00, 0x52, 0x14, 0x6f, 0x70, 0x65, 0x6e, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, + 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x6c, 0x73, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x13, 0x0a, 0x11, 0x4f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x92, 0x01, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x6e, 0x6b, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, + 0x68, 0x12, 0x25, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x3a, 0x0a, 0x0b, 0x6a, 0x73, 0x6f, 0x6e, + 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x6a, 0x73, 0x6f, 0x6e, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x8b, 0x03, 0x0a, 0x0b, 0x47, 0x72, 0x70, 0x63, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x11, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x21, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x67, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x1d, 0x61, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x4c, 0x6f, 0x67, 0x12, 0x4a, 0x0a, 0x22, + 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, + 0x6f, 0x67, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x1e, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x54, 0x6f, 0x4c, 0x6f, 0x67, 0x12, 0x4c, 0x0a, 0x23, 0x61, 0x64, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, + 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x67, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x1f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, + 0x73, 0x54, 0x6f, 0x4c, 0x6f, 0x67, 0x12, 0x3c, 0x0a, 0x1b, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x74, + 0x6f, 0x5f, 0x6c, 0x6f, 0x67, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x54, + 0x6f, 0x4c, 0x6f, 0x67, 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x72, 0x65, 0x66, 0x22, 0x80, 0x03, 0x0a, 0x1a, 0x4f, 0x70, 0x65, 0x6e, 0x54, 0x65, 0x6c, 0x65, + 0x6d, 0x65, 0x74, 0x72, 0x79, 0x47, 0x72, 0x70, 0x63, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1c, + 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x5b, 0x0a, 0x07, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, + 0x61, 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x54, 0x65, 0x6c, + 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x47, 0x72, 0x70, 0x63, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x6e, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x73, 0x73, 0x6c, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x94, 0x03, 0x0a, 0x14, 0x4f, 0x70, 0x65, 0x6e, 0x54, + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x09, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, + 0x61, 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x54, 0x65, 0x6c, + 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x47, 0x72, 0x70, 0x63, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x12, 0x3c, 0x0a, 0x1b, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x67, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x54, 0x6f, 0x4c, 0x6f, 0x67, 0x12, 0x34, + 0x0a, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, + 0x6e, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x12, 0x3b, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, + 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x62, 0x6f, 0x64, + 0x79, 0x12, 0x4b, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x6c, 0x65, + 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x0d, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x84, 0x07, + 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x12, 0x5a, 0x0a, 0x12, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, + 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x61, 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, + 0x6f, 0x64, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x10, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x53, 0x0a, + 0x0f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x48, 0x00, 0x52, 0x0e, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x12, 0x67, 0x0a, 0x17, 0x6e, 0x6f, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4e, + 0x6f, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x14, 0x6e, 0x6f, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x56, 0x0a, 0x10, 0x74, + 0x72, 0x61, 0x63, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x48, 0x00, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x12, 0x50, 0x0a, 0x0e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x6c, + 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x0a, 0x61, 0x6e, 0x64, 0x5f, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x6c, 0x73, 0x2e, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x6e, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, + 0x52, 0x09, 0x61, 0x6e, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x09, 0x6f, + 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x61, 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x72, 0x46, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x48, 0x00, 0x52, 0x08, 0x6f, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x4d, + 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, + 0x0c, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x60, 0x0a, + 0x14, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x6c, + 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x46, + 0x6c, 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x12, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, + 0x5a, 0x0a, 0x12, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x6c, + 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x10, 0x67, 0x72, 0x70, 0x63, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x17, 0x0a, 0x10, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, + 0x03, 0xf8, 0x42, 0x01, 0x22, 0xc6, 0x01, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, + 0x73, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x02, 0x6f, 0x70, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x61, 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x2e, 0x4f, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x02, + 0x6f, 0x70, 0x12, 0x4b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, + 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0x1c, 0x0a, 0x02, 0x4f, 0x70, 0x12, 0x06, 0x0a, 0x02, 0x45, 0x51, 0x10, 0x00, 0x12, 0x06, 0x0a, + 0x02, 0x47, 0x45, 0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, 0x4c, 0x45, 0x10, 0x02, 0x22, 0x68, 0x0a, + 0x10, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x12, 0x54, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6d, + 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x22, 0x66, 0x0a, 0x0e, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x54, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, + 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x61, 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, + 0x73, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x22, + 0x16, 0x0a, 0x14, 0x4e, 0x6f, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x11, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x63, 0x65, + 0x61, 0x62, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xca, 0x01, 0x0a, 0x0d, 0x52, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x0b, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x51, 0x0a, 0x0f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x28, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x70, 0x65, 0x72, 0x63, 0x65, + 0x6e, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x1a, 0x75, 0x73, 0x65, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x61, 0x6e, + 0x64, 0x6f, 0x6d, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x75, + 0x73, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x6e, + 0x64, 0x6f, 0x6d, 0x6e, 0x65, 0x73, 0x73, 0x22, 0x5a, 0x0a, 0x09, 0x41, 0x6e, 0x64, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x02, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x73, 0x22, 0x59, 0x0a, 0x08, 0x4f, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, + 0x4d, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x29, 0x2e, 0x61, 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x92, 0x01, 0x02, 0x08, 0x02, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x22, 0x5e, + 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x4e, + 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0xae, + 0x01, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x97, 0x01, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x80, 0x01, 0xfa, 0x42, 0x7d, 0x92, 0x01, 0x7a, 0x22, 0x78, + 0x72, 0x76, 0x52, 0x02, 0x4c, 0x48, 0x52, 0x02, 0x55, 0x48, 0x52, 0x02, 0x55, 0x54, 0x52, 0x02, + 0x4c, 0x52, 0x52, 0x02, 0x55, 0x52, 0x52, 0x02, 0x55, 0x46, 0x52, 0x02, 0x55, 0x43, 0x52, 0x02, + 0x55, 0x4f, 0x52, 0x02, 0x4e, 0x52, 0x52, 0x02, 0x44, 0x49, 0x52, 0x02, 0x46, 0x49, 0x52, 0x02, + 0x52, 0x4c, 0x52, 0x04, 0x55, 0x41, 0x45, 0x58, 0x52, 0x04, 0x52, 0x4c, 0x53, 0x45, 0x52, 0x02, + 0x44, 0x43, 0x52, 0x03, 0x55, 0x52, 0x58, 0x52, 0x02, 0x53, 0x49, 0x52, 0x02, 0x49, 0x48, 0x52, + 0x03, 0x44, 0x50, 0x45, 0x52, 0x05, 0x55, 0x4d, 0x53, 0x44, 0x52, 0x52, 0x04, 0x52, 0x46, 0x43, + 0x46, 0x52, 0x04, 0x4e, 0x46, 0x43, 0x46, 0x52, 0x02, 0x44, 0x54, 0x52, 0x03, 0x55, 0x50, 0x45, + 0x52, 0x02, 0x4e, 0x43, 0x52, 0x02, 0x4f, 0x4d, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x22, + 0xc5, 0x03, 0x0a, 0x10, 0x47, 0x72, 0x70, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0x5c, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x61, 0x6c, 0x73, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x46, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x92, 0x01, + 0x07, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x22, 0xb8, 0x02, 0x0a, + 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, + 0x0c, 0x0a, 0x08, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, + 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x4e, + 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x41, 0x52, 0x47, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x03, + 0x12, 0x15, 0x0a, 0x11, 0x44, 0x45, 0x41, 0x44, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x45, 0x58, 0x43, + 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, + 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x4c, 0x52, 0x45, 0x41, 0x44, + 0x59, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x45, + 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, + 0x07, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x45, 0x58, + 0x48, 0x41, 0x55, 0x53, 0x54, 0x45, 0x44, 0x10, 0x08, 0x12, 0x17, 0x0a, 0x13, 0x46, 0x41, 0x49, + 0x4c, 0x45, 0x44, 0x5f, 0x50, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x09, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x42, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x0a, 0x12, + 0x10, 0x0a, 0x0c, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, + 0x0b, 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x4e, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, + 0x45, 0x44, 0x10, 0x0c, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, + 0x10, 0x0d, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, + 0x45, 0x10, 0x0e, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x4c, 0x4f, 0x53, 0x53, + 0x10, 0x0f, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x41, 0x55, 0x54, 0x48, 0x45, 0x4e, 0x54, 0x49, + 0x43, 0x41, 0x54, 0x45, 0x44, 0x10, 0x10, 0x42, 0x4e, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, + 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x40, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6c, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes = make([]protoimpl.MessageInfo, 19) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_goTypes = []any{ + (ComparisonFilter_Op)(0), // 0: als.options.gloo.solo.io.ComparisonFilter.Op + (GrpcStatusFilter_Status)(0), // 1: als.options.gloo.solo.io.GrpcStatusFilter.Status + (*AccessLoggingService)(nil), // 2: als.options.gloo.solo.io.AccessLoggingService + (*AccessLog)(nil), // 3: als.options.gloo.solo.io.AccessLog + (*FileSink)(nil), // 4: als.options.gloo.solo.io.FileSink + (*GrpcService)(nil), // 5: als.options.gloo.solo.io.GrpcService + (*OpenTelemetryGrpcCollector)(nil), // 6: als.options.gloo.solo.io.OpenTelemetryGrpcCollector + (*OpenTelemetryService)(nil), // 7: als.options.gloo.solo.io.OpenTelemetryService + (*AccessLogFilter)(nil), // 8: als.options.gloo.solo.io.AccessLogFilter + (*ComparisonFilter)(nil), // 9: als.options.gloo.solo.io.ComparisonFilter + (*StatusCodeFilter)(nil), // 10: als.options.gloo.solo.io.StatusCodeFilter + (*DurationFilter)(nil), // 11: als.options.gloo.solo.io.DurationFilter + (*NotHealthCheckFilter)(nil), // 12: als.options.gloo.solo.io.NotHealthCheckFilter + (*TraceableFilter)(nil), // 13: als.options.gloo.solo.io.TraceableFilter + (*RuntimeFilter)(nil), // 14: als.options.gloo.solo.io.RuntimeFilter + (*AndFilter)(nil), // 15: als.options.gloo.solo.io.AndFilter + (*OrFilter)(nil), // 16: als.options.gloo.solo.io.OrFilter + (*HeaderFilter)(nil), // 17: als.options.gloo.solo.io.HeaderFilter + (*ResponseFlagFilter)(nil), // 18: als.options.gloo.solo.io.ResponseFlagFilter + (*GrpcStatusFilter)(nil), // 19: als.options.gloo.solo.io.GrpcStatusFilter + nil, // 20: als.options.gloo.solo.io.OpenTelemetryGrpcCollector.HeadersEntry + (*structpb.Struct)(nil), // 21: google.protobuf.Struct + (*ssl.UpstreamSslConfig)(nil), // 22: gloo.solo.io.UpstreamSslConfig + (*durationpb.Duration)(nil), // 23: google.protobuf.Duration + (*v1.AnyValue)(nil), // 24: opentelemetry.proto.common.v1.AnyValue + (*v1.KeyValueList)(nil), // 25: opentelemetry.proto.common.v1.KeyValueList + (*v3.RuntimeUInt32)(nil), // 26: solo.io.envoy.config.core.v3.RuntimeUInt32 + (*v31.FractionalPercent)(nil), // 27: solo.io.envoy.type.v3.FractionalPercent + (*v32.HeaderMatcher)(nil), // 28: solo.io.envoy.config.route.v3.HeaderMatcher +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_depIdxs = []int32{ + 3, // 0: als.options.gloo.solo.io.AccessLoggingService.access_log:type_name -> als.options.gloo.solo.io.AccessLog + 4, // 1: als.options.gloo.solo.io.AccessLog.file_sink:type_name -> als.options.gloo.solo.io.FileSink + 5, // 2: als.options.gloo.solo.io.AccessLog.grpc_service:type_name -> als.options.gloo.solo.io.GrpcService + 7, // 3: als.options.gloo.solo.io.AccessLog.open_telemetry_service:type_name -> als.options.gloo.solo.io.OpenTelemetryService + 8, // 4: als.options.gloo.solo.io.AccessLog.filter:type_name -> als.options.gloo.solo.io.AccessLogFilter + 21, // 5: als.options.gloo.solo.io.FileSink.json_format:type_name -> google.protobuf.Struct + 20, // 6: als.options.gloo.solo.io.OpenTelemetryGrpcCollector.headers:type_name -> als.options.gloo.solo.io.OpenTelemetryGrpcCollector.HeadersEntry + 22, // 7: als.options.gloo.solo.io.OpenTelemetryGrpcCollector.ssl_config:type_name -> gloo.solo.io.UpstreamSslConfig + 23, // 8: als.options.gloo.solo.io.OpenTelemetryGrpcCollector.timeout:type_name -> google.protobuf.Duration + 6, // 9: als.options.gloo.solo.io.OpenTelemetryService.collector:type_name -> als.options.gloo.solo.io.OpenTelemetryGrpcCollector + 24, // 10: als.options.gloo.solo.io.OpenTelemetryService.body:type_name -> opentelemetry.proto.common.v1.AnyValue + 25, // 11: als.options.gloo.solo.io.OpenTelemetryService.attributes:type_name -> opentelemetry.proto.common.v1.KeyValueList + 10, // 12: als.options.gloo.solo.io.AccessLogFilter.status_code_filter:type_name -> als.options.gloo.solo.io.StatusCodeFilter + 11, // 13: als.options.gloo.solo.io.AccessLogFilter.duration_filter:type_name -> als.options.gloo.solo.io.DurationFilter + 12, // 14: als.options.gloo.solo.io.AccessLogFilter.not_health_check_filter:type_name -> als.options.gloo.solo.io.NotHealthCheckFilter + 13, // 15: als.options.gloo.solo.io.AccessLogFilter.traceable_filter:type_name -> als.options.gloo.solo.io.TraceableFilter + 14, // 16: als.options.gloo.solo.io.AccessLogFilter.runtime_filter:type_name -> als.options.gloo.solo.io.RuntimeFilter + 15, // 17: als.options.gloo.solo.io.AccessLogFilter.and_filter:type_name -> als.options.gloo.solo.io.AndFilter + 16, // 18: als.options.gloo.solo.io.AccessLogFilter.or_filter:type_name -> als.options.gloo.solo.io.OrFilter + 17, // 19: als.options.gloo.solo.io.AccessLogFilter.header_filter:type_name -> als.options.gloo.solo.io.HeaderFilter + 18, // 20: als.options.gloo.solo.io.AccessLogFilter.response_flag_filter:type_name -> als.options.gloo.solo.io.ResponseFlagFilter + 19, // 21: als.options.gloo.solo.io.AccessLogFilter.grpc_status_filter:type_name -> als.options.gloo.solo.io.GrpcStatusFilter + 0, // 22: als.options.gloo.solo.io.ComparisonFilter.op:type_name -> als.options.gloo.solo.io.ComparisonFilter.Op + 26, // 23: als.options.gloo.solo.io.ComparisonFilter.value:type_name -> solo.io.envoy.config.core.v3.RuntimeUInt32 + 9, // 24: als.options.gloo.solo.io.StatusCodeFilter.comparison:type_name -> als.options.gloo.solo.io.ComparisonFilter + 9, // 25: als.options.gloo.solo.io.DurationFilter.comparison:type_name -> als.options.gloo.solo.io.ComparisonFilter + 27, // 26: als.options.gloo.solo.io.RuntimeFilter.percent_sampled:type_name -> solo.io.envoy.type.v3.FractionalPercent + 8, // 27: als.options.gloo.solo.io.AndFilter.filters:type_name -> als.options.gloo.solo.io.AccessLogFilter + 8, // 28: als.options.gloo.solo.io.OrFilter.filters:type_name -> als.options.gloo.solo.io.AccessLogFilter + 28, // 29: als.options.gloo.solo.io.HeaderFilter.header:type_name -> solo.io.envoy.config.route.v3.HeaderMatcher + 1, // 30: als.options.gloo.solo.io.GrpcStatusFilter.statuses:type_name -> als.options.gloo.solo.io.GrpcStatusFilter.Status + 31, // [31:31] is the sub-list for method output_type + 31, // [31:31] is the sub-list for method input_type + 31, // [31:31] is the sub-list for extension type_name + 31, // [31:31] is the sub-list for extension extendee + 0, // [0:31] is the sub-list for field type_name +} + +func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_init() } +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[1].OneofWrappers = []any{ + (*AccessLog_FileSink)(nil), + (*AccessLog_GrpcService)(nil), + (*AccessLog_OpenTelemetryService)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[2].OneofWrappers = []any{ + (*FileSink_StringFormat)(nil), + (*FileSink_JsonFormat)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[3].OneofWrappers = []any{ + (*GrpcService_StaticClusterName)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[5].OneofWrappers = []any{ + (*OpenTelemetryService_Collector)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes[6].OneofWrappers = []any{ + (*AccessLogFilter_StatusCodeFilter)(nil), + (*AccessLogFilter_DurationFilter)(nil), + (*AccessLogFilter_NotHealthCheckFilter)(nil), + (*AccessLogFilter_TraceableFilter)(nil), + (*AccessLogFilter_RuntimeFilter)(nil), + (*AccessLogFilter_AndFilter)(nil), + (*AccessLogFilter_OrFilter)(nil), + (*AccessLogFilter_HeaderFilter)(nil), + (*AccessLogFilter_ResponseFlagFilter)(nil), + (*AccessLogFilter_GrpcStatusFilter)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDesc, - NumEnums: 0, - NumMessages: 4, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDesc)), + NumEnums: 2, + NumMessages: 19, NumExtensions: 0, NumServices: 0, }, GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_goTypes, DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_enumTypes, MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_als_als_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/als/als.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/als/als.pb.hash.go index 7ea532889..f611ac031 100644 --- a/pkg/api/gloo.solo.io/v1/options/als/als.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/als/als.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *AccessLoggingService) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -41,14 +45,20 @@ func (m *AccessLoggingService) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetAccessLog() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -60,6 +70,10 @@ func (m *AccessLoggingService) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *AccessLog) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -72,19 +86,45 @@ func (m *AccessLog) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + if h, ok := interface{}(m.GetFilter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Filter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFilter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Filter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + switch m.OutputDestination.(type) { case *AccessLog_FileSink: if h, ok := interface{}(m.GetFileSink()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FileSink")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetFileSink(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetFileSink(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("FileSink")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -93,14 +133,42 @@ func (m *AccessLog) Hash(hasher hash.Hash64) (uint64, error) { case *AccessLog_GrpcService: if h, ok := interface{}(m.GetGrpcService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcService(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessLog_OpenTelemetryService: + + if h, ok := interface{}(m.GetOpenTelemetryService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OpenTelemetryService")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetGrpcService(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOpenTelemetryService(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("OpenTelemetryService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -112,6 +180,10 @@ func (m *AccessLog) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FileSink) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -139,14 +211,20 @@ func (m *FileSink) Hash(hasher hash.Hash64) (uint64, error) { case *FileSink_JsonFormat: if h, ok := interface{}(m.GetJsonFormat()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("JsonFormat")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetJsonFormat(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetJsonFormat(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("JsonFormat")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -158,6 +236,10 @@ func (m *FileSink) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GrpcService) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -198,6 +280,14 @@ func (m *GrpcService) Hash(hasher hash.Hash64) (uint64, error) { } + for _, v := range m.GetFilterStateObjectsToLog() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + switch m.ServiceRef.(type) { case *GrpcService_StaticClusterName: @@ -210,3 +300,850 @@ func (m *GrpcService) Hash(hasher hash.Hash64) (uint64, error) { return hasher.Sum64(), nil } + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *OpenTelemetryGrpcCollector) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.OpenTelemetryGrpcCollector")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetEndpoint())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetAuthority())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetHeaders() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetInsecure()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *OpenTelemetryService) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.OpenTelemetryService")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetLogName())); err != nil { + return 0, err + } + + for _, v := range m.GetFilterStateObjectsToLog() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetDisableBuiltinLabels()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAttributes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Attributes")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAttributes(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Attributes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.Destination.(type) { + + case *OpenTelemetryService_Collector: + + if h, ok := interface{}(m.GetCollector()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Collector")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCollector(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Collector")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AccessLogFilter) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.AccessLogFilter")); err != nil { + return 0, err + } + + switch m.FilterSpecifier.(type) { + + case *AccessLogFilter_StatusCodeFilter: + + if h, ok := interface{}(m.GetStatusCodeFilter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("StatusCodeFilter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStatusCodeFilter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("StatusCodeFilter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessLogFilter_DurationFilter: + + if h, ok := interface{}(m.GetDurationFilter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DurationFilter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDurationFilter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DurationFilter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessLogFilter_NotHealthCheckFilter: + + if h, ok := interface{}(m.GetNotHealthCheckFilter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("NotHealthCheckFilter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetNotHealthCheckFilter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("NotHealthCheckFilter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessLogFilter_TraceableFilter: + + if h, ok := interface{}(m.GetTraceableFilter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TraceableFilter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTraceableFilter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TraceableFilter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessLogFilter_RuntimeFilter: + + if h, ok := interface{}(m.GetRuntimeFilter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RuntimeFilter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRuntimeFilter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RuntimeFilter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessLogFilter_AndFilter: + + if h, ok := interface{}(m.GetAndFilter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AndFilter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAndFilter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AndFilter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessLogFilter_OrFilter: + + if h, ok := interface{}(m.GetOrFilter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OrFilter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOrFilter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OrFilter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessLogFilter_HeaderFilter: + + if h, ok := interface{}(m.GetHeaderFilter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderFilter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaderFilter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HeaderFilter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessLogFilter_ResponseFlagFilter: + + if h, ok := interface{}(m.GetResponseFlagFilter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseFlagFilter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseFlagFilter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseFlagFilter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessLogFilter_GrpcStatusFilter: + + if h, ok := interface{}(m.GetGrpcStatusFilter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcStatusFilter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcStatusFilter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcStatusFilter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ComparisonFilter) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.ComparisonFilter")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetOp()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValue(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *StatusCodeFilter) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.StatusCodeFilter")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetComparison()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Comparison")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetComparison(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Comparison")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *DurationFilter) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.DurationFilter")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetComparison()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Comparison")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetComparison(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Comparison")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *NotHealthCheckFilter) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.NotHealthCheckFilter")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *TraceableFilter) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.TraceableFilter")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RuntimeFilter) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.RuntimeFilter")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetRuntimeKey())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPercentSampled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PercentSampled")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPercentSampled(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PercentSampled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetUseIndependentRandomness()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AndFilter) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.AndFilter")); err != nil { + return 0, err + } + + for _, v := range m.GetFilters() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *OrFilter) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.OrFilter")); err != nil { + return 0, err + } + + for _, v := range m.GetFilters() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HeaderFilter) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.HeaderFilter")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHeader()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeader(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ResponseFlagFilter) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.ResponseFlagFilter")); err != nil { + return 0, err + } + + for _, v := range m.GetFlags() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *GrpcStatusFilter) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.GrpcStatusFilter")); err != nil { + return 0, err + } + + for _, v := range m.GetStatuses() { + + err = binary.Write(hasher, binary.LittleEndian, v) + if err != nil { + return 0, err + } + + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetExclude()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/als/als.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/als/als.pb.uniquehash.go new file mode 100644 index 000000000..ded1c4f2c --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/als/als.pb.uniquehash.go @@ -0,0 +1,1259 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/als/als.proto + +package als + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AccessLoggingService) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.AccessLoggingService")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AccessLog")); err != nil { + return 0, err + } + for i, v := range m.GetAccessLog() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AccessLog) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.AccessLog")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetFilter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Filter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFilter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Filter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.OutputDestination.(type) { + + case *AccessLog_FileSink: + + if h, ok := interface{}(m.GetFileSink()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FileSink")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFileSink(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FileSink")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessLog_GrpcService: + + if h, ok := interface{}(m.GetGrpcService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcService(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessLog_OpenTelemetryService: + + if h, ok := interface{}(m.GetOpenTelemetryService()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OpenTelemetryService")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOpenTelemetryService(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OpenTelemetryService")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FileSink) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.FileSink")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPath())); err != nil { + return 0, err + } + + switch m.OutputFormat.(type) { + + case *FileSink_StringFormat: + + if _, err = hasher.Write([]byte("StringFormat")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetStringFormat())); err != nil { + return 0, err + } + + case *FileSink_JsonFormat: + + if h, ok := interface{}(m.GetJsonFormat()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("JsonFormat")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJsonFormat(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("JsonFormat")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcService) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.GrpcService")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("LogName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetLogName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AdditionalRequestHeadersToLog")); err != nil { + return 0, err + } + for i, v := range m.GetAdditionalRequestHeadersToLog() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("AdditionalResponseHeadersToLog")); err != nil { + return 0, err + } + for i, v := range m.GetAdditionalResponseHeadersToLog() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("AdditionalResponseTrailersToLog")); err != nil { + return 0, err + } + for i, v := range m.GetAdditionalResponseTrailersToLog() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("FilterStateObjectsToLog")); err != nil { + return 0, err + } + for i, v := range m.GetFilterStateObjectsToLog() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + switch m.ServiceRef.(type) { + + case *GrpcService_StaticClusterName: + + if _, err = hasher.Write([]byte("StaticClusterName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetStaticClusterName())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *OpenTelemetryGrpcCollector) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.OpenTelemetryGrpcCollector")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Endpoint")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetEndpoint())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Authority")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAuthority())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetHeaders() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("Insecure")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetInsecure()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *OpenTelemetryService) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.OpenTelemetryService")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("LogName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetLogName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("FilterStateObjectsToLog")); err != nil { + return 0, err + } + for i, v := range m.GetFilterStateObjectsToLog() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("DisableBuiltinLabels")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDisableBuiltinLabels()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAttributes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Attributes")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAttributes(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Attributes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.Destination.(type) { + + case *OpenTelemetryService_Collector: + + if h, ok := interface{}(m.GetCollector()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Collector")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCollector(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Collector")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AccessLogFilter) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.AccessLogFilter")); err != nil { + return 0, err + } + + switch m.FilterSpecifier.(type) { + + case *AccessLogFilter_StatusCodeFilter: + + if h, ok := interface{}(m.GetStatusCodeFilter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("StatusCodeFilter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStatusCodeFilter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("StatusCodeFilter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessLogFilter_DurationFilter: + + if h, ok := interface{}(m.GetDurationFilter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DurationFilter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDurationFilter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DurationFilter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessLogFilter_NotHealthCheckFilter: + + if h, ok := interface{}(m.GetNotHealthCheckFilter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("NotHealthCheckFilter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetNotHealthCheckFilter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("NotHealthCheckFilter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessLogFilter_TraceableFilter: + + if h, ok := interface{}(m.GetTraceableFilter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TraceableFilter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTraceableFilter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TraceableFilter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessLogFilter_RuntimeFilter: + + if h, ok := interface{}(m.GetRuntimeFilter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RuntimeFilter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRuntimeFilter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RuntimeFilter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessLogFilter_AndFilter: + + if h, ok := interface{}(m.GetAndFilter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AndFilter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAndFilter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AndFilter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessLogFilter_OrFilter: + + if h, ok := interface{}(m.GetOrFilter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OrFilter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOrFilter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OrFilter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessLogFilter_HeaderFilter: + + if h, ok := interface{}(m.GetHeaderFilter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderFilter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaderFilter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HeaderFilter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessLogFilter_ResponseFlagFilter: + + if h, ok := interface{}(m.GetResponseFlagFilter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseFlagFilter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseFlagFilter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseFlagFilter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *AccessLogFilter_GrpcStatusFilter: + + if h, ok := interface{}(m.GetGrpcStatusFilter()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcStatusFilter")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcStatusFilter(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcStatusFilter")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ComparisonFilter) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.ComparisonFilter")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Op")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetOp()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValue(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *StatusCodeFilter) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.StatusCodeFilter")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetComparison()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Comparison")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetComparison(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Comparison")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DurationFilter) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.DurationFilter")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetComparison()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Comparison")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetComparison(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Comparison")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *NotHealthCheckFilter) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.NotHealthCheckFilter")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TraceableFilter) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.TraceableFilter")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RuntimeFilter) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.RuntimeFilter")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RuntimeKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRuntimeKey())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPercentSampled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PercentSampled")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPercentSampled(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PercentSampled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("UseIndependentRandomness")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetUseIndependentRandomness()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AndFilter) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.AndFilter")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Filters")); err != nil { + return 0, err + } + for i, v := range m.GetFilters() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *OrFilter) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.OrFilter")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Filters")); err != nil { + return 0, err + } + for i, v := range m.GetFilters() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HeaderFilter) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.HeaderFilter")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHeader()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeader(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ResponseFlagFilter) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.ResponseFlagFilter")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Flags")); err != nil { + return 0, err + } + for i, v := range m.GetFlags() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcStatusFilter) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("als.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/als.GrpcStatusFilter")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Statuses")); err != nil { + return 0, err + } + for i, v := range m.GetStatuses() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, v) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("Exclude")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetExclude()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/aws/aws.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/aws/aws.pb.clone.go new file mode 100644 index 000000000..1b632b375 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/aws/aws.pb.clone.go @@ -0,0 +1,114 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/aws/aws.proto + +package aws + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *UpstreamSpec) Clone() proto.Message { + var target *UpstreamSpec + if m == nil { + return target + } + target = &UpstreamSpec{} + + target.Region = m.GetRegion() + + if h, ok := interface{}(m.GetSecretRef()).(clone.Cloner); ok { + target.SecretRef = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.SecretRef = proto.Clone(m.GetSecretRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + if m.GetLambdaFunctions() != nil { + target.LambdaFunctions = make([]*LambdaFunctionSpec, len(m.GetLambdaFunctions())) + for idx, v := range m.GetLambdaFunctions() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.LambdaFunctions[idx] = h.Clone().(*LambdaFunctionSpec) + } else { + target.LambdaFunctions[idx] = proto.Clone(v).(*LambdaFunctionSpec) + } + + } + } + + target.RoleArn = m.GetRoleArn() + + target.AwsAccountId = m.GetAwsAccountId() + + target.DisableRoleChaining = m.GetDisableRoleChaining() + + if h, ok := interface{}(m.GetDestinationOverrides()).(clone.Cloner); ok { + target.DestinationOverrides = h.Clone().(*DestinationSpec) + } else { + target.DestinationOverrides = proto.Clone(m.GetDestinationOverrides()).(*DestinationSpec) + } + + return target +} + +// Clone function +func (m *LambdaFunctionSpec) Clone() proto.Message { + var target *LambdaFunctionSpec + if m == nil { + return target + } + target = &LambdaFunctionSpec{} + + target.LogicalName = m.GetLogicalName() + + target.LambdaFunctionName = m.GetLambdaFunctionName() + + target.Qualifier = m.GetQualifier() + + return target +} + +// Clone function +func (m *DestinationSpec) Clone() proto.Message { + var target *DestinationSpec + if m == nil { + return target + } + target = &DestinationSpec{} + + target.LogicalName = m.GetLogicalName() + + target.InvocationStyle = m.GetInvocationStyle() + + target.RequestTransformation = m.GetRequestTransformation() + + target.ResponseTransformation = m.GetResponseTransformation() + + target.UnwrapAsAlb = m.GetUnwrapAsAlb() + + target.UnwrapAsApiGateway = m.GetUnwrapAsApiGateway() + + target.WrapAsApiGateway = m.GetWrapAsApiGateway() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/aws/aws.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/aws/aws.pb.equal.go index c8e14e05c..b3c3282cf 100644 --- a/pkg/api/gloo.solo.io/v1/options/aws/aws.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/options/aws/aws.pb.equal.go @@ -81,6 +81,24 @@ func (m *UpstreamSpec) Equal(that interface{}) bool { return false } + if strings.Compare(m.GetAwsAccountId(), target.GetAwsAccountId()) != 0 { + return false + } + + if m.GetDisableRoleChaining() != target.GetDisableRoleChaining() { + return false + } + + if h, ok := interface{}(m.GetDestinationOverrides()).(equality.Equalizer); ok { + if !h.Equal(target.GetDestinationOverrides()) { + return false + } + } else { + if !proto.Equal(m.GetDestinationOverrides(), target.GetDestinationOverrides()) { + return false + } + } + return true } @@ -149,9 +167,25 @@ func (m *DestinationSpec) Equal(that interface{}) bool { return false } + if m.GetRequestTransformation() != target.GetRequestTransformation() { + return false + } + if m.GetResponseTransformation() != target.GetResponseTransformation() { return false } + if m.GetUnwrapAsAlb() != target.GetUnwrapAsAlb() { + return false + } + + if m.GetUnwrapAsApiGateway() != target.GetUnwrapAsApiGateway() { + return false + } + + if m.GetWrapAsApiGateway() != target.GetWrapAsApiGateway() { + return false + } + return true } diff --git a/pkg/api/gloo.solo.io/v1/options/aws/aws.pb.go b/pkg/api/gloo.solo.io/v1/options/aws/aws.pb.go index 9499d53a1..bb4f036b0 100644 --- a/pkg/api/gloo.solo.io/v1/options/aws/aws.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/aws/aws.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/aws/aws.proto @@ -9,8 +9,8 @@ package aws import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -24,10 +24,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type DestinationSpec_InvocationStyle int32 const ( @@ -78,20 +74,18 @@ func (DestinationSpec_InvocationStyle) EnumDescriptor() ([]byte, []int) { // AWS Upstreams represent a collection of Lambda Functions for a particular AWS Account (IAM Role or User account) // in a particular region type UpstreamSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The AWS Region where the desired Lambda Functions exist Region string `protobuf:"bytes,1,opt,name=region,proto3" json:"region,omitempty"` - // A [Gloo Secret Ref](https://gloo.solo.io/introduction/concepts/#Secrets) to an AWS Secret + // A [Gloo Secret Ref](https://docs.solo.io/gloo-edge/latest/reference/cli/glooctl_create_secret_aws/) to an AWS Secret // AWS Secrets can be created with `glooctl secret create aws ...` // If the secret is created manually, it must conform to the following structure: - // ``` - // access_key: - // secret_key: - // session_token: <(optional) aws session token> - // ``` + // + // ``` + // access_key: + // secret_key: + // session_token: <(optional) aws session token> + // ``` SecretRef *core.ResourceRef `protobuf:"bytes,2,opt,name=secret_ref,json=secretRef,proto3" json:"secret_ref,omitempty"` // The list of Lambda Functions contained within this region. // This list will be automatically populated by Gloo if discovery is enabled for AWS Lambda Functions @@ -101,15 +95,22 @@ type UpstreamSpec struct { // This option will only be respected if STS credentials are enabled. // To enable STS credential fetching see Settings.Gloo.AwsOptions in settings.proto. RoleArn string `protobuf:"bytes,4,opt,name=role_arn,json=roleArn,proto3" json:"role_arn,omitempty"` + // (Optional): The AWS Account ID to use while calling if using resource based access + AwsAccountId string `protobuf:"bytes,5,opt,name=aws_account_id,json=awsAccountId,proto3" json:"aws_account_id,omitempty"` + // Optional override to disable role chaining; + DisableRoleChaining bool `protobuf:"varint,6,opt,name=disable_role_chaining,json=disableRoleChaining,proto3" json:"disable_role_chaining,omitempty"` + // Specifies AWS DestinationSpec configuration overrides for any route targeting this upstream. + // Note that the route in question must have an AWS DestinationSpec to be affected and this will only set things that are non-falsey as overrides. + DestinationOverrides *DestinationSpec `protobuf:"bytes,7,opt,name=destination_overrides,json=destinationOverrides,proto3" json:"destination_overrides,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpstreamSpec) Reset() { *x = UpstreamSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpstreamSpec) String() string { @@ -120,7 +121,7 @@ func (*UpstreamSpec) ProtoMessage() {} func (x *UpstreamSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -163,14 +164,32 @@ func (x *UpstreamSpec) GetRoleArn() string { return "" } +func (x *UpstreamSpec) GetAwsAccountId() string { + if x != nil { + return x.AwsAccountId + } + return "" +} + +func (x *UpstreamSpec) GetDisableRoleChaining() bool { + if x != nil { + return x.DisableRoleChaining + } + return false +} + +func (x *UpstreamSpec) GetDestinationOverrides() *DestinationSpec { + if x != nil { + return x.DestinationOverrides + } + return nil +} + // Each Lambda Function Spec contains data necessary for Gloo to invoke Lambda functions: // - name of the function // - qualifier for the function type LambdaFunctionSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // the logical name gloo should associate with this function. if left empty, it will default to // lambda_function_name+qualifier LogicalName string `protobuf:"bytes,1,opt,name=logical_name,json=logicalName,proto3" json:"logical_name,omitempty"` @@ -178,16 +197,16 @@ type LambdaFunctionSpec struct { LambdaFunctionName string `protobuf:"bytes,2,opt,name=lambda_function_name,json=lambdaFunctionName,proto3" json:"lambda_function_name,omitempty"` // The Qualifier for the Lambda Function. Qualifiers act as a kind of version // for Lambda Functions. See https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html for more info. - Qualifier string `protobuf:"bytes,3,opt,name=qualifier,proto3" json:"qualifier,omitempty"` + Qualifier string `protobuf:"bytes,3,opt,name=qualifier,proto3" json:"qualifier,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LambdaFunctionSpec) Reset() { *x = LambdaFunctionSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LambdaFunctionSpec) String() string { @@ -198,7 +217,7 @@ func (*LambdaFunctionSpec) ProtoMessage() {} func (x *LambdaFunctionSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -235,26 +254,44 @@ func (x *LambdaFunctionSpec) GetQualifier() string { } // Each Lambda Function Spec contains data necessary for Gloo to invoke Lambda functions +// [#next-free-field: 8] type DestinationSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The Logical Name of the LambdaFunctionSpec to be invoked. LogicalName string `protobuf:"bytes,1,opt,name=logical_name,json=logicalName,proto3" json:"logical_name,omitempty"` // Can be either Sync or Async. InvocationStyle DestinationSpec_InvocationStyle `protobuf:"varint,2,opt,name=invocation_style,json=invocationStyle,proto3,enum=aws.options.gloo.solo.io.DestinationSpec_InvocationStyle" json:"invocation_style,omitempty"` - // de-jsonify response bodies returned from aws lambda + // Include headers, multi-value headers, querystring, querystring parameters, multi-value querystring parameters, request path, and request method in the event payload sent to aws lambda + // Only one of `requestTransformation` or `wrapAsApiGateway` should be provided. + RequestTransformation bool `protobuf:"varint,6,opt,name=request_transformation,json=requestTransformation,proto3" json:"request_transformation,omitempty"` + // Deprecated. Use unwrapAsApiGateway + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/aws/aws.proto. ResponseTransformation bool `protobuf:"varint,5,opt,name=response_transformation,json=responseTransformation,proto3" json:"response_transformation,omitempty"` + // Unwrap the response as if the proxy was an ALB. + // Intended to ease migration when previously using ALB to invoke Lambdas. + // For further information see below link for the expected format when true. + // https://docs.aws.amazon.com/elasticloadbalancing/latest/application/lambda-functions.html + // Only one of `unwrapAsAlb` or `unwrapAsApiGateway` may be provided. + UnwrapAsAlb bool `protobuf:"varint,7,opt,name=unwrap_as_alb,json=unwrapAsAlb,proto3" json:"unwrap_as_alb,omitempty"` + // Unwrap the response as if the proxy was an AWS API Gateway. + // Intended to ease migration when previously using API Gateway to invoke Lambdas. + // Only one of `unwrapAsAlb` or `unwrapAsApiGateway` may be provided. + UnwrapAsApiGateway bool `protobuf:"varint,8,opt,name=unwrap_as_api_gateway,json=unwrapAsApiGateway,proto3" json:"unwrap_as_api_gateway,omitempty"` + // Enterprise-Only + // Wrap the request into AWS API Gateway event format. + // Intended to ease migration when previously using API Gateway to invoke Lambdas. + // Only one of `requestTransformation` or `wrapAsApiGateway` should be provided. + WrapAsApiGateway bool `protobuf:"varint,9,opt,name=wrap_as_api_gateway,json=wrapAsApiGateway,proto3" json:"wrap_as_api_gateway,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DestinationSpec) Reset() { *x = DestinationSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DestinationSpec) String() string { @@ -265,7 +302,7 @@ func (*DestinationSpec) ProtoMessage() {} func (x *DestinationSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -294,6 +331,14 @@ func (x *DestinationSpec) GetInvocationStyle() DestinationSpec_InvocationStyle { return DestinationSpec_SYNC } +func (x *DestinationSpec) GetRequestTransformation() bool { + if x != nil { + return x.RequestTransformation + } + return false +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/aws/aws.proto. func (x *DestinationSpec) GetResponseTransformation() bool { if x != nil { return x.ResponseTransformation @@ -301,9 +346,30 @@ func (x *DestinationSpec) GetResponseTransformation() bool { return false } +func (x *DestinationSpec) GetUnwrapAsAlb() bool { + if x != nil { + return x.UnwrapAsAlb + } + return false +} + +func (x *DestinationSpec) GetUnwrapAsApiGateway() bool { + if x != nil { + return x.UnwrapAsApiGateway + } + return false +} + +func (x *DestinationSpec) GetWrapAsApiGateway() bool { + if x != nil { + return x.WrapAsApiGateway + } + return false +} + var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_rawDesc = string([]byte{ 0x0a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -314,7 +380,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_raw 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0xd4, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, + 0x6f, 0x22, 0x8e, 0x03, 0x0a, 0x0c, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, @@ -327,54 +393,78 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_raw 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0f, 0x6c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x41, 0x72, 0x6e, 0x22, 0x87, 0x01, 0x0a, 0x12, 0x4c, 0x61, 0x6d, - 0x62, 0x64, 0x61, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, - 0x21, 0x0a, 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x5f, 0x66, 0x75, 0x6e, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x12, 0x6c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x22, 0xfb, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, - 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x6f, - 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x64, 0x0a, 0x10, 0x69, 0x6e, 0x76, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x61, 0x77, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x49, - 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x0f, - 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, - 0x37, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x16, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x26, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x53, - 0x59, 0x4e, 0x43, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x01, - 0x42, 0x4a, 0x5a, 0x40, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x61, 0x77, 0x73, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} + 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x41, 0x72, 0x6e, 0x12, 0x24, 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x61, 0x77, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x32, + 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x63, + 0x68, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x69, + 0x6e, 0x67, 0x12, 0x5e, 0x0a, 0x15, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x77, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x14, 0x64, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, + 0x65, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x12, 0x4c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x6f, 0x67, + 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, + 0x6c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6c, 0x61, 0x6d, 0x62, + 0x64, 0x61, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0xbc, 0x03, 0x0a, + 0x0f, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, + 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x64, 0x0a, 0x10, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, + 0x61, 0x77, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x0f, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x35, 0x0a, 0x16, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x3b, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x16, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, + 0x0d, 0x75, 0x6e, 0x77, 0x72, 0x61, 0x70, 0x5f, 0x61, 0x73, 0x5f, 0x61, 0x6c, 0x62, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x6e, 0x77, 0x72, 0x61, 0x70, 0x41, 0x73, 0x41, 0x6c, + 0x62, 0x12, 0x31, 0x0a, 0x15, 0x75, 0x6e, 0x77, 0x72, 0x61, 0x70, 0x5f, 0x61, 0x73, 0x5f, 0x61, + 0x70, 0x69, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x12, 0x75, 0x6e, 0x77, 0x72, 0x61, 0x70, 0x41, 0x73, 0x41, 0x70, 0x69, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x12, 0x2d, 0x0a, 0x13, 0x77, 0x72, 0x61, 0x70, 0x5f, 0x61, 0x73, 0x5f, + 0x61, 0x70, 0x69, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x10, 0x77, 0x72, 0x61, 0x70, 0x41, 0x73, 0x41, 0x70, 0x69, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x22, 0x26, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x00, + 0x12, 0x09, 0x0a, 0x05, 0x41, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x01, 0x42, 0x4e, 0xb8, 0xf5, 0x04, + 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x40, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x77, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_goTypes = []any{ (DestinationSpec_InvocationStyle)(0), // 0: aws.options.gloo.solo.io.DestinationSpec.InvocationStyle (*UpstreamSpec)(nil), // 1: aws.options.gloo.solo.io.UpstreamSpec (*LambdaFunctionSpec)(nil), // 2: aws.options.gloo.solo.io.LambdaFunctionSpec @@ -384,12 +474,13 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_goT var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_depIdxs = []int32{ 4, // 0: aws.options.gloo.solo.io.UpstreamSpec.secret_ref:type_name -> core.solo.io.ResourceRef 2, // 1: aws.options.gloo.solo.io.UpstreamSpec.lambda_functions:type_name -> aws.options.gloo.solo.io.LambdaFunctionSpec - 0, // 2: aws.options.gloo.solo.io.DestinationSpec.invocation_style:type_name -> aws.options.gloo.solo.io.DestinationSpec.InvocationStyle - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name + 3, // 2: aws.options.gloo.solo.io.UpstreamSpec.destination_overrides:type_name -> aws.options.gloo.solo.io.DestinationSpec + 0, // 3: aws.options.gloo.solo.io.DestinationSpec.invocation_style:type_name -> aws.options.gloo.solo.io.DestinationSpec.InvocationStyle + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_init() } @@ -397,49 +488,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_in if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpstreamSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LambdaFunctionSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DestinationSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_rawDesc)), NumEnums: 1, NumMessages: 3, NumExtensions: 0, @@ -451,7 +504,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_in MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_aws_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/aws/aws.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/aws/aws.pb.hash.go index baa7eaf3e..257ee17bc 100644 --- a/pkg/api/gloo.solo.io/v1/options/aws/aws.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/aws/aws.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -43,14 +47,20 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -59,14 +69,20 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetLambdaFunctions() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -78,10 +94,43 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + if _, err = hasher.Write([]byte(m.GetAwsAccountId())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetDisableRoleChaining()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDestinationOverrides()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DestinationOverrides")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDestinationOverrides(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DestinationOverrides")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *LambdaFunctionSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -110,6 +159,10 @@ func (m *LambdaFunctionSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *DestinationSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -131,10 +184,30 @@ func (m *DestinationSpec) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + err = binary.Write(hasher, binary.LittleEndian, m.GetRequestTransformation()) + if err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetResponseTransformation()) if err != nil { return 0, err } + err = binary.Write(hasher, binary.LittleEndian, m.GetUnwrapAsAlb()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetUnwrapAsApiGateway()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetWrapAsApiGateway()) + if err != nil { + return 0, err + } + return hasher.Sum64(), nil } diff --git a/pkg/api/gloo.solo.io/v1/options/aws/aws.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/aws/aws.pb.uniquehash.go new file mode 100644 index 000000000..720ec462a --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/aws/aws.pb.uniquehash.go @@ -0,0 +1,260 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/aws/aws.proto + +package aws + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("aws.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/aws.UpstreamSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Region")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRegion())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("LambdaFunctions")); err != nil { + return 0, err + } + for i, v := range m.GetLambdaFunctions() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("RoleArn")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRoleArn())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AwsAccountId")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAwsAccountId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DisableRoleChaining")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDisableRoleChaining()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDestinationOverrides()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DestinationOverrides")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDestinationOverrides(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DestinationOverrides")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *LambdaFunctionSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("aws.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/aws.LambdaFunctionSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("LogicalName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetLogicalName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("LambdaFunctionName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetLambdaFunctionName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Qualifier")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetQualifier())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DestinationSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("aws.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/aws.DestinationSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("LogicalName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetLogicalName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("InvocationStyle")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetInvocationStyle()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RequestTransformation")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRequestTransformation()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetResponseTransformation()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("UnwrapAsAlb")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetUnwrapAsAlb()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("UnwrapAsApiGateway")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetUnwrapAsApiGateway()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("WrapAsApiGateway")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetWrapAsApiGateway()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/aws/ec2/aws_ec2.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/aws/ec2/aws_ec2.pb.clone.go new file mode 100644 index 000000000..1981df630 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/aws/ec2/aws_ec2.pb.clone.go @@ -0,0 +1,114 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/aws/ec2/aws_ec2.proto + +package ec2 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *UpstreamSpec) Clone() proto.Message { + var target *UpstreamSpec + if m == nil { + return target + } + target = &UpstreamSpec{} + + target.Region = m.GetRegion() + + if h, ok := interface{}(m.GetSecretRef()).(clone.Cloner); ok { + target.SecretRef = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.SecretRef = proto.Clone(m.GetSecretRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + target.RoleArn = m.GetRoleArn() + + if m.GetFilters() != nil { + target.Filters = make([]*TagFilter, len(m.GetFilters())) + for idx, v := range m.GetFilters() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Filters[idx] = h.Clone().(*TagFilter) + } else { + target.Filters[idx] = proto.Clone(v).(*TagFilter) + } + + } + } + + target.PublicIp = m.GetPublicIp() + + target.Port = m.GetPort() + + return target +} + +// Clone function +func (m *TagFilter) Clone() proto.Message { + var target *TagFilter + if m == nil { + return target + } + target = &TagFilter{} + + switch m.Spec.(type) { + + case *TagFilter_Key: + + target.Spec = &TagFilter_Key{ + Key: m.GetKey(), + } + + case *TagFilter_KvPair_: + + if h, ok := interface{}(m.GetKvPair()).(clone.Cloner); ok { + target.Spec = &TagFilter_KvPair_{ + KvPair: h.Clone().(*TagFilter_KvPair), + } + } else { + target.Spec = &TagFilter_KvPair_{ + KvPair: proto.Clone(m.GetKvPair()).(*TagFilter_KvPair), + } + } + + } + + return target +} + +// Clone function +func (m *TagFilter_KvPair) Clone() proto.Message { + var target *TagFilter_KvPair + if m == nil { + return target + } + target = &TagFilter_KvPair{} + + target.Key = m.GetKey() + + target.Value = m.GetValue() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/aws/ec2/aws_ec2.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/aws/ec2/aws_ec2.pb.equal.go index 73e202c11..efd286387 100644 --- a/pkg/api/gloo.solo.io/v1/options/aws/ec2/aws_ec2.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/options/aws/ec2/aws_ec2.pb.equal.go @@ -116,12 +116,18 @@ func (m *TagFilter) Equal(that interface{}) bool { switch m.Spec.(type) { case *TagFilter_Key: + if _, ok := target.Spec.(*TagFilter_Key); !ok { + return false + } if strings.Compare(m.GetKey(), target.GetKey()) != 0 { return false } case *TagFilter_KvPair_: + if _, ok := target.Spec.(*TagFilter_KvPair_); !ok { + return false + } if h, ok := interface{}(m.GetKvPair()).(equality.Equalizer); ok { if !h.Equal(target.GetKvPair()) { @@ -133,6 +139,11 @@ func (m *TagFilter) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.Spec != target.Spec { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/v1/options/aws/ec2/aws_ec2.pb.go b/pkg/api/gloo.solo.io/v1/options/aws/ec2/aws_ec2.pb.go index df1fa8e80..2403a4f57 100644 --- a/pkg/api/gloo.solo.io/v1/options/aws/ec2/aws_ec2.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/aws/ec2/aws_ec2.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/aws/ec2/aws_ec2.proto @@ -9,8 +9,8 @@ package ec2 import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -24,18 +24,11 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Upstream Spec for AWS Lambda Upstreams // AWS Upstreams represent a collection of Lambda Functions for a particular AWS Account (IAM Role or User account) // in a particular region type UpstreamSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The AWS Region where the desired EC2 instances exist Region string `protobuf:"bytes,1,opt,name=region,proto3" json:"region,omitempty"` // Optional, if not set, Gloo will try to use the default AWS secret specified by environment variables. @@ -43,13 +36,15 @@ type UpstreamSpec struct { // The environment variables used to indicate the AWS account can be: // - for the access key: "AWS_ACCESS_KEY_ID" or "AWS_ACCESS_KEY" // - for the secret: "AWS_SECRET_ACCESS_KEY" or "AWS_SECRET_KEY" - // If set, a [Gloo Secret Ref](https://gloo.solo.io/introduction/concepts/#Secrets) to an AWS Secret + // If set, a [Gloo Secret Ref](https://docs.solo.io/gloo-edge/latest/reference/cli/glooctl_create_secret_aws/) to an AWS Secret // AWS Secrets can be created with `glooctl secret create aws ...` // If the secret is created manually, it must conform to the following structure: - // ``` - // access_key: - // secret_key: - // ``` + // + // ``` + // access_key: + // secret_key: + // ``` + // // Gloo will create an EC2 API client with this credential. You may choose to use a credential with limited access // in conjunction with a list of Roles, specified by their Amazon Resource Number (ARN). SecretRef *core.ResourceRef `protobuf:"bytes,2,opt,name=secret_ref,json=secretRef,proto3" json:"secret_ref,omitempty"` @@ -64,17 +59,17 @@ type UpstreamSpec struct { Filters []*TagFilter `protobuf:"bytes,3,rep,name=filters,proto3" json:"filters,omitempty"` // If set, will use the EC2 public IP address. Defaults to the private IP address. PublicIp bool `protobuf:"varint,4,opt,name=public_ip,json=publicIp,proto3" json:"public_ip,omitempty"` - // If set, will use this port on EC2 instances. Defaults to port 80. - Port uint32 `protobuf:"varint,5,opt,name=port,proto3" json:"port,omitempty"` + // If set, will use this port on EC2 instances. Defaults to 0. + Port uint32 `protobuf:"varint,5,opt,name=port,proto3" json:"port,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpstreamSpec) Reset() { *x = UpstreamSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpstreamSpec) String() string { @@ -85,7 +80,7 @@ func (*UpstreamSpec) ProtoMessage() {} func (x *UpstreamSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -143,23 +138,21 @@ func (x *UpstreamSpec) GetPort() uint32 { } type TagFilter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Spec: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Spec: + // // *TagFilter_Key // *TagFilter_KvPair_ - Spec isTagFilter_Spec `protobuf_oneof:"spec"` + Spec isTagFilter_Spec `protobuf_oneof:"spec"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TagFilter) Reset() { *x = TagFilter{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TagFilter) String() string { @@ -170,7 +163,7 @@ func (*TagFilter) ProtoMessage() {} func (x *TagFilter) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -185,23 +178,27 @@ func (*TagFilter) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_rawDescGZIP(), []int{1} } -func (m *TagFilter) GetSpec() isTagFilter_Spec { - if m != nil { - return m.Spec +func (x *TagFilter) GetSpec() isTagFilter_Spec { + if x != nil { + return x.Spec } return nil } func (x *TagFilter) GetKey() string { - if x, ok := x.GetSpec().(*TagFilter_Key); ok { - return x.Key + if x != nil { + if x, ok := x.Spec.(*TagFilter_Key); ok { + return x.Key + } } return "" } func (x *TagFilter) GetKvPair() *TagFilter_KvPair { - if x, ok := x.GetSpec().(*TagFilter_KvPair_); ok { - return x.KvPair + if x != nil { + if x, ok := x.Spec.(*TagFilter_KvPair_); ok { + return x.KvPair + } } return nil } @@ -226,23 +223,20 @@ func (*TagFilter_Key) isTagFilter_Spec() {} func (*TagFilter_KvPair_) isTagFilter_Spec() {} type TagFilter_KvPair struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // keys are not case-sensitive, as with AWS Condition Keys Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // values are case-sensitive - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TagFilter_KvPair) Reset() { *x = TagFilter_KvPair{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TagFilter_KvPair) String() string { @@ -253,7 +247,7 @@ func (*TagFilter_KvPair) ProtoMessage() {} func (x *TagFilter_KvPair) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -284,7 +278,7 @@ func (x *TagFilter_KvPair) GetValue() string { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_rawDesc = string([]byte{ 0x0a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -321,28 +315,29 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_p 0x4b, 0x76, 0x50, 0x61, 0x69, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, - 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x42, 0x4e, 0x5a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x77, 0x73, 0x2f, 0x65, 0x63, 0x32, 0xc0, 0xf5, - 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x42, 0x52, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, + 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x61, 0x77, 0x73, 0x2f, 0x65, 0x63, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_goTypes = []any{ (*UpstreamSpec)(nil), // 0: aws_ec2.options.gloo.solo.io.UpstreamSpec (*TagFilter)(nil), // 1: aws_ec2.options.gloo.solo.io.TagFilter (*TagFilter_KvPair)(nil), // 2: aws_ec2.options.gloo.solo.io.TagFilter.KvPair @@ -364,45 +359,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_ if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpstreamSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TagFilter); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TagFilter_KvPair); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_msgTypes[1].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_msgTypes[1].OneofWrappers = []any{ (*TagFilter_Key)(nil), (*TagFilter_KvPair_)(nil), } @@ -410,7 +367,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_ out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_rawDesc)), NumEnums: 0, NumMessages: 3, NumExtensions: 0, @@ -421,7 +378,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_ MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_aws_ec2_aws_ec2_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/aws/ec2/aws_ec2.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/aws/ec2/aws_ec2.pb.hash.go index 514052a1a..e80ceb336 100644 --- a/pkg/api/gloo.solo.io/v1/options/aws/ec2/aws_ec2.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/aws/ec2/aws_ec2.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -43,14 +47,20 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -63,14 +73,20 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetFilters() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -92,6 +108,10 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *TagFilter) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -115,14 +135,20 @@ func (m *TagFilter) Hash(hasher hash.Hash64) (uint64, error) { case *TagFilter_KvPair_: if h, ok := interface{}(m.GetKvPair()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("KvPair")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetKvPair(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetKvPair(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("KvPair")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -134,6 +160,10 @@ func (m *TagFilter) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *TagFilter_KvPair) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/v1/options/aws/ec2/aws_ec2.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/aws/ec2/aws_ec2.pb.uniquehash.go new file mode 100644 index 000000000..0a2dfee94 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/aws/ec2/aws_ec2.pb.uniquehash.go @@ -0,0 +1,214 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/aws/ec2/aws_ec2.proto + +package ec2 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("aws_ec2.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/aws/ec2.UpstreamSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Region")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRegion())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RoleArn")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRoleArn())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Filters")); err != nil { + return 0, err + } + for i, v := range m.GetFilters() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("PublicIp")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPublicIp()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Port")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPort()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TagFilter) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("aws_ec2.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/aws/ec2.TagFilter")); err != nil { + return 0, err + } + + switch m.Spec.(type) { + + case *TagFilter_Key: + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + case *TagFilter_KvPair_: + + if h, ok := interface{}(m.GetKvPair()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("KvPair")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetKvPair(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("KvPair")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TagFilter_KvPair) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("aws_ec2.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/aws/ec2.TagFilter_KvPair")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetValue())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/azure/azure.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/azure/azure.pb.clone.go new file mode 100644 index 000000000..c7c92db6b --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/azure/azure.pb.clone.go @@ -0,0 +1,88 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/azure/azure.proto + +package azure + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *UpstreamSpec) Clone() proto.Message { + var target *UpstreamSpec + if m == nil { + return target + } + target = &UpstreamSpec{} + + target.FunctionAppName = m.GetFunctionAppName() + + if h, ok := interface{}(m.GetSecretRef()).(clone.Cloner); ok { + target.SecretRef = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.SecretRef = proto.Clone(m.GetSecretRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + if m.GetFunctions() != nil { + target.Functions = make([]*UpstreamSpec_FunctionSpec, len(m.GetFunctions())) + for idx, v := range m.GetFunctions() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Functions[idx] = h.Clone().(*UpstreamSpec_FunctionSpec) + } else { + target.Functions[idx] = proto.Clone(v).(*UpstreamSpec_FunctionSpec) + } + + } + } + + return target +} + +// Clone function +func (m *DestinationSpec) Clone() proto.Message { + var target *DestinationSpec + if m == nil { + return target + } + target = &DestinationSpec{} + + target.FunctionName = m.GetFunctionName() + + return target +} + +// Clone function +func (m *UpstreamSpec_FunctionSpec) Clone() proto.Message { + var target *UpstreamSpec_FunctionSpec + if m == nil { + return target + } + target = &UpstreamSpec_FunctionSpec{} + + target.FunctionName = m.GetFunctionName() + + target.AuthLevel = m.GetAuthLevel() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/azure/azure.pb.go b/pkg/api/gloo.solo.io/v1/options/azure/azure.pb.go index 01079649b..1a15cc871 100644 --- a/pkg/api/gloo.solo.io/v1/options/azure/azure.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/azure/azure.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/azure/azure.proto @@ -9,8 +9,8 @@ package azure import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -24,10 +24,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type UpstreamSpec_FunctionSpec_AuthLevel int32 const ( @@ -81,26 +77,22 @@ func (UpstreamSpec_FunctionSpec_AuthLevel) EnumDescriptor() ([]byte, []int) { // Azure Upstreams represent a collection of Azure Functions for a particular Azure Account // within a particular Function App type UpstreamSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The Name of the Azure Function App where the functions are grouped FunctionAppName string `protobuf:"bytes,1,opt,name=function_app_name,json=functionAppName,proto3" json:"function_app_name,omitempty"` - // A [Gloo Secret Ref](https://gloo.solo.io/introduction/concepts/#Secrets) to an [Azure Publish Profile JSON file](https://azure.microsoft.com/en-us/downloads/publishing-profile-overview/). - // {{ hide_not_implemented "Azure Secrets can be created with `glooctl secret create azure ...`" }} + // A [Gloo Secret Ref](https://docs.solo.io/gloo-edge/latest/reference/cli/glooctl_create_secret_azure/) to an [Azure Publish Profile JSON file](https://azure.microsoft.com/en-us/downloads/publishing-profile-overview/). // Note that this secret is not required unless Function Discovery is enabled - SecretRef *core.ResourceRef `protobuf:"bytes,2,opt,name=secret_ref,json=secretRef,proto3" json:"secret_ref,omitempty"` - Functions []*UpstreamSpec_FunctionSpec `protobuf:"bytes,3,rep,name=functions,proto3" json:"functions,omitempty"` + SecretRef *core.ResourceRef `protobuf:"bytes,2,opt,name=secret_ref,json=secretRef,proto3" json:"secret_ref,omitempty"` + Functions []*UpstreamSpec_FunctionSpec `protobuf:"bytes,3,rep,name=functions,proto3" json:"functions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpstreamSpec) Reset() { *x = UpstreamSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpstreamSpec) String() string { @@ -111,7 +103,7 @@ func (*UpstreamSpec) ProtoMessage() {} func (x *UpstreamSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -148,21 +140,18 @@ func (x *UpstreamSpec) GetFunctions() []*UpstreamSpec_FunctionSpec { } type DestinationSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The Function Name of the FunctionSpec to be invoked. - FunctionName string `protobuf:"bytes,1,opt,name=function_name,json=functionName,proto3" json:"function_name,omitempty"` + FunctionName string `protobuf:"bytes,1,opt,name=function_name,json=functionName,proto3" json:"function_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DestinationSpec) Reset() { *x = DestinationSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DestinationSpec) String() string { @@ -173,7 +162,7 @@ func (*DestinationSpec) ProtoMessage() {} func (x *DestinationSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -198,24 +187,21 @@ func (x *DestinationSpec) GetFunctionName() string { // Function Spec for Functions on Azure Functions Upstreams // The Function Spec contains data necessary for Gloo to invoke Azure functions type UpstreamSpec_FunctionSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The Name of the Azure Function as it appears in the Azure Functions Portal FunctionName string `protobuf:"bytes,1,opt,name=function_name,json=functionName,proto3" json:"function_name,omitempty"` // Auth Level can bve either "anonymous" "function" or "admin" // See https://vincentlauzon.com/2017/12/04/azure-functions-http-authorization-levels/ for more details - AuthLevel UpstreamSpec_FunctionSpec_AuthLevel `protobuf:"varint,2,opt,name=auth_level,json=authLevel,proto3,enum=azure.options.gloo.solo.io.UpstreamSpec_FunctionSpec_AuthLevel" json:"auth_level,omitempty"` + AuthLevel UpstreamSpec_FunctionSpec_AuthLevel `protobuf:"varint,2,opt,name=auth_level,json=authLevel,proto3,enum=azure.options.gloo.solo.io.UpstreamSpec_FunctionSpec_AuthLevel" json:"auth_level,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpstreamSpec_FunctionSpec) Reset() { *x = UpstreamSpec_FunctionSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpstreamSpec_FunctionSpec) String() string { @@ -226,7 +212,7 @@ func (*UpstreamSpec_FunctionSpec) ProtoMessage() {} func (x *UpstreamSpec_FunctionSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -257,7 +243,7 @@ func (x *UpstreamSpec_FunctionSpec) GetAuthLevel() UpstreamSpec_FunctionSpec_Aut var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_rawDesc = string([]byte{ 0x0a, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -297,29 +283,29 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto 0x0a, 0x0f, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x4c, 0x5a, 0x42, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0xc0, 0xf5, 0x04, 0x01, - 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x50, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, + 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x42, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_goTypes = []any{ (UpstreamSpec_FunctionSpec_AuthLevel)(0), // 0: azure.options.gloo.solo.io.UpstreamSpec.FunctionSpec.AuthLevel (*UpstreamSpec)(nil), // 1: azure.options.gloo.solo.io.UpstreamSpec (*DestinationSpec)(nil), // 2: azure.options.gloo.solo.io.DestinationSpec @@ -342,49 +328,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_prot if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpstreamSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DestinationSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpstreamSpec_FunctionSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_rawDesc)), NumEnums: 1, NumMessages: 3, NumExtensions: 0, @@ -396,7 +344,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_prot MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_azure_azure_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/azure/azure.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/azure/azure.pb.hash.go index 43636e31b..31c93afbd 100644 --- a/pkg/api/gloo.solo.io/v1/options/azure/azure.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/azure/azure.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -43,14 +47,20 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -59,14 +69,20 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetFunctions() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -78,6 +94,10 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *DestinationSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -98,6 +118,10 @@ func (m *DestinationSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *UpstreamSpec_FunctionSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/v1/options/azure/azure.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/azure/azure.pb.uniquehash.go new file mode 100644 index 000000000..6347f4a11 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/azure/azure.pb.uniquehash.go @@ -0,0 +1,164 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/azure/azure.proto + +package azure + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("azure.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/azure.UpstreamSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("FunctionAppName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetFunctionAppName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Functions")); err != nil { + return 0, err + } + for i, v := range m.GetFunctions() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DestinationSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("azure.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/azure.DestinationSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("FunctionName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetFunctionName())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec_FunctionSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("azure.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/azure.UpstreamSpec_FunctionSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("FunctionName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetFunctionName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AuthLevel")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAuthLevel()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/connection_limit/connection_limit.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/connection_limit/connection_limit.pb.clone.go new file mode 100644 index 000000000..336fae83a --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/connection_limit/connection_limit.pb.clone.go @@ -0,0 +1,53 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/connection_limit/connection_limit.proto + +package connection_limit + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *ConnectionLimit) Clone() proto.Message { + var target *ConnectionLimit + if m == nil { + return target + } + target = &ConnectionLimit{} + + if h, ok := interface{}(m.GetMaxActiveConnections()).(clone.Cloner); ok { + target.MaxActiveConnections = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxActiveConnections = proto.Clone(m.GetMaxActiveConnections()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetDelayBeforeClose()).(clone.Cloner); ok { + target.DelayBeforeClose = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.DelayBeforeClose = proto.Clone(m.GetDelayBeforeClose()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/connection_limit/connection_limit.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/connection_limit/connection_limit.pb.equal.go new file mode 100644 index 000000000..bdbd690d1 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/connection_limit/connection_limit.pb.equal.go @@ -0,0 +1,70 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/connection_limit/connection_limit.proto + +package connection_limit + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *ConnectionLimit) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ConnectionLimit) + if !ok { + that2, ok := that.(ConnectionLimit) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetMaxActiveConnections()).(equality.Equalizer); ok { + if !h.Equal(target.GetMaxActiveConnections()) { + return false + } + } else { + if !proto.Equal(m.GetMaxActiveConnections(), target.GetMaxActiveConnections()) { + return false + } + } + + if h, ok := interface{}(m.GetDelayBeforeClose()).(equality.Equalizer); ok { + if !h.Equal(target.GetDelayBeforeClose()) { + return false + } + } else { + if !proto.Equal(m.GetDelayBeforeClose(), target.GetDelayBeforeClose()) { + return false + } + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/options/connection_limit/connection_limit.pb.go b/pkg/api/gloo.solo.io/v1/options/connection_limit/connection_limit.pb.go new file mode 100644 index 000000000..7f90c9e37 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/connection_limit/connection_limit.pb.go @@ -0,0 +1,181 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/connection_limit/connection_limit.proto + +package connection_limit + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + _ "github.com/solo-io/solo-kit/pkg/api/external/envoy/api/v2/core" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// These options provide the ability to limit the active connections in envoy. +// Ref. https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/network_filters/connection_limit_filter +type ConnectionLimit struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The maximum number of active connections for this gateway. When this limit is reached, any incoming connection + // will be closed after delay duration. + // Must be greater than or equal to one. + MaxActiveConnections *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=max_active_connections,json=maxActiveConnections,proto3" json:"max_active_connections,omitempty"` + // The time to wait before a connection is dropped. Useful for DoS prevention. + // Defaults to zero and the connection will be closed immediately. + DelayBeforeClose *durationpb.Duration `protobuf:"bytes,2,opt,name=delay_before_close,json=delayBeforeClose,proto3" json:"delay_before_close,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ConnectionLimit) Reset() { + *x = ConnectionLimit{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ConnectionLimit) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConnectionLimit) ProtoMessage() {} + +func (x *ConnectionLimit) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConnectionLimit.ProtoReflect.Descriptor instead. +func (*ConnectionLimit) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_rawDescGZIP(), []int{0} +} + +func (x *ConnectionLimit) GetMaxActiveConnections() *wrapperspb.UInt32Value { + if x != nil { + return x.MaxActiveConnections + } + return nil +} + +func (x *ConnectionLimit) GetDelayBeforeClose() *durationpb.Duration { + if x != nil { + return x.DelayBeforeClose + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_rawDesc = string([]byte{ + 0x0a, 0x5d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x25, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x32, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0xae, 0x01, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x52, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x14, 0x6d, 0x61, 0x78, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x47, 0x0a, 0x12, 0x64, 0x65, 0x6c, + 0x61, 0x79, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x10, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x43, 0x6c, 0x6f, + 0x73, 0x65, 0x42, 0x5b, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, + 0x5a, 0x4d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_goTypes = []any{ + (*ConnectionLimit)(nil), // 0: connection_limit.options.gloo.solo.io.ConnectionLimit + (*wrapperspb.UInt32Value)(nil), // 1: google.protobuf.UInt32Value + (*durationpb.Duration)(nil), // 2: google.protobuf.Duration +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_depIdxs = []int32{ + 1, // 0: connection_limit.options.gloo.solo.io.ConnectionLimit.max_active_connections:type_name -> google.protobuf.UInt32Value + 2, // 1: connection_limit.options.gloo.solo.io.ConnectionLimit.delay_before_close:type_name -> google.protobuf.Duration + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_connection_limit_connection_limit_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/connection_limit/connection_limit.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/connection_limit/connection_limit.pb.hash.go new file mode 100644 index 000000000..65a473096 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/connection_limit/connection_limit.pb.hash.go @@ -0,0 +1,86 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/connection_limit/connection_limit.proto + +package connection_limit + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ConnectionLimit) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("connection_limit.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/connection_limit.ConnectionLimit")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxActiveConnections()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxActiveConnections")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxActiveConnections(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxActiveConnections")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDelayBeforeClose()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DelayBeforeClose")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDelayBeforeClose(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DelayBeforeClose")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/connection_limit/connection_limit.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/connection_limit/connection_limit.pb.uniquehash.go new file mode 100644 index 000000000..37caa7b9e --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/connection_limit/connection_limit.pb.uniquehash.go @@ -0,0 +1,87 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/connection_limit/connection_limit.proto + +package connection_limit + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ConnectionLimit) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("connection_limit.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/connection_limit.ConnectionLimit")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxActiveConnections()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxActiveConnections")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxActiveConnections(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxActiveConnections")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDelayBeforeClose()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DelayBeforeClose")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDelayBeforeClose(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DelayBeforeClose")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/consul/consul.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/consul/consul.pb.clone.go new file mode 100644 index 000000000..21dd9584d --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/consul/consul.pb.clone.go @@ -0,0 +1,102 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/consul/consul.proto + +package consul + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *UpstreamSpec) Clone() proto.Message { + var target *UpstreamSpec + if m == nil { + return target + } + target = &UpstreamSpec{} + + target.ServiceName = m.GetServiceName() + + if m.GetServiceTags() != nil { + target.ServiceTags = make([]string, len(m.GetServiceTags())) + for idx, v := range m.GetServiceTags() { + + target.ServiceTags[idx] = v + + } + } + + if m.GetSubsetTags() != nil { + target.SubsetTags = make([]string, len(m.GetSubsetTags())) + for idx, v := range m.GetSubsetTags() { + + target.SubsetTags[idx] = v + + } + } + + if m.GetInstanceTags() != nil { + target.InstanceTags = make([]string, len(m.GetInstanceTags())) + for idx, v := range m.GetInstanceTags() { + + target.InstanceTags[idx] = v + + } + } + + if m.GetInstanceBlacklistTags() != nil { + target.InstanceBlacklistTags = make([]string, len(m.GetInstanceBlacklistTags())) + for idx, v := range m.GetInstanceBlacklistTags() { + + target.InstanceBlacklistTags[idx] = v + + } + } + + if h, ok := interface{}(m.GetServiceSpec()).(clone.Cloner); ok { + target.ServiceSpec = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options.ServiceSpec) + } else { + target.ServiceSpec = proto.Clone(m.GetServiceSpec()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options.ServiceSpec) + } + + target.ConsistencyMode = m.GetConsistencyMode() + + if h, ok := interface{}(m.GetQueryOptions()).(clone.Cloner); ok { + target.QueryOptions = h.Clone().(*QueryOptions) + } else { + target.QueryOptions = proto.Clone(m.GetQueryOptions()).(*QueryOptions) + } + + target.ConnectEnabled = m.GetConnectEnabled() + + if m.GetDataCenters() != nil { + target.DataCenters = make([]string, len(m.GetDataCenters())) + for idx, v := range m.GetDataCenters() { + + target.DataCenters[idx] = v + + } + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/consul/consul.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/consul/consul.pb.equal.go index 65ee666b1..c309dd002 100644 --- a/pkg/api/gloo.solo.io/v1/options/consul/consul.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/options/consul/consul.pb.equal.go @@ -104,6 +104,20 @@ func (m *UpstreamSpec) Equal(that interface{}) bool { } } + if m.GetConsistencyMode() != target.GetConsistencyMode() { + return false + } + + if h, ok := interface{}(m.GetQueryOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetQueryOptions()) { + return false + } + } else { + if !proto.Equal(m.GetQueryOptions(), target.GetQueryOptions()) { + return false + } + } + if m.GetConnectEnabled() != target.GetConnectEnabled() { return false } diff --git a/pkg/api/gloo.solo.io/v1/options/consul/consul.pb.go b/pkg/api/gloo.solo.io/v1/options/consul/consul.pb.go index 923931a51..13638279d 100644 --- a/pkg/api/gloo.solo.io/v1/options/consul/consul.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/consul/consul.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/consul/consul.proto @@ -9,8 +9,8 @@ package consul import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" options "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -24,20 +24,13 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Upstream Spec for Consul Upstreams // consul Upstreams represent a set of one or more addressable pods for a consul Service // the Gloo consul Upstream maps to a single service port. Because consul Services support multiple ports, // Gloo requires that a different upstream be created for each port // consul Upstreams are typically generated automatically by Gloo from the consul API type UpstreamSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the Consul Service ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` // Deprecated: This field was renamed to subset_tags. If subset_tags is used, this field is @@ -57,19 +50,26 @@ type UpstreamSpec struct { InstanceBlacklistTags []string `protobuf:"bytes,8,rep,name=instance_blacklist_tags,json=instanceBlacklistTags,proto3" json:"instance_blacklist_tags,omitempty"` // An optional Service Spec describing the service listening at this address ServiceSpec *options.ServiceSpec `protobuf:"bytes,3,opt,name=service_spec,json=serviceSpec,proto3" json:"service_spec,omitempty"` + // Sets the consistency mode. The default is DefaultMode. + // + // Note: Gloo handles staleness well (as it runs update loops ~ once/second) but makes many requests + // to get consul endpoints so users may want to opt into stale reads once the implications are understood. + ConsistencyMode ConsulConsistencyModes `protobuf:"varint,9,opt,name=consistencyMode,proto3,enum=consul.options.gloo.solo.io.ConsulConsistencyModes" json:"consistencyMode,omitempty"` + // QueryOptions are the query options to use for all Consul queries. + QueryOptions *QueryOptions `protobuf:"bytes,10,opt,name=query_options,json=queryOptions,proto3" json:"query_options,omitempty"` // Is this consul service connect enabled. ConnectEnabled bool `protobuf:"varint,4,opt,name=connect_enabled,json=connectEnabled,proto3" json:"connect_enabled,omitempty"` // The data centers in which the service instance represented by this upstream is registered. - DataCenters []string `protobuf:"bytes,5,rep,name=data_centers,json=dataCenters,proto3" json:"data_centers,omitempty"` + DataCenters []string `protobuf:"bytes,5,rep,name=data_centers,json=dataCenters,proto3" json:"data_centers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpstreamSpec) Reset() { *x = UpstreamSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpstreamSpec) String() string { @@ -80,7 +80,7 @@ func (*UpstreamSpec) ProtoMessage() {} func (x *UpstreamSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -137,6 +137,20 @@ func (x *UpstreamSpec) GetServiceSpec() *options.ServiceSpec { return nil } +func (x *UpstreamSpec) GetConsistencyMode() ConsulConsistencyModes { + if x != nil { + return x.ConsistencyMode + } + return ConsulConsistencyModes_DefaultMode +} + +func (x *UpstreamSpec) GetQueryOptions() *QueryOptions { + if x != nil { + return x.QueryOptions + } + return nil +} + func (x *UpstreamSpec) GetConnectEnabled() bool { if x != nil { return x.ConnectEnabled @@ -153,7 +167,7 @@ func (x *UpstreamSpec) GetDataCenters() []string { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_rawDesc = string([]byte{ 0x0a, 0x49, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -166,61 +180,81 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_pro 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe4, 0x02, 0x0a, 0x0c, 0x55, 0x70, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x61, 0x67, 0x73, 0x12, 0x1f, 0x0a, - 0x0b, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x23, - 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, - 0x61, 0x67, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, - 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x6c, - 0x61, 0x63, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x44, 0x0a, 0x0c, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x53, 0x70, 0x65, 0x63, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, - 0x63, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x61, - 0x74, 0x61, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x42, 0x4d, 0x5a, - 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, - 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x6f, - 0x6e, 0x73, 0x75, 0x6c, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x6f, + 0x6e, 0x73, 0x75, 0x6c, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x93, 0x04, 0x0a, 0x0c, 0x55, 0x70, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x61, 0x67, 0x73, 0x12, + 0x1f, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x54, 0x61, 0x67, 0x73, + 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x61, 0x67, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x54, 0x61, 0x67, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x73, + 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x44, 0x0a, + 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, + 0x70, 0x65, 0x63, 0x12, 0x5d, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x63, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x63, + 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, + 0x6c, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x6f, 0x64, 0x65, + 0x73, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x4e, 0x0a, 0x0d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x6e, 0x73, + 0x75, 0x6c, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, + 0x61, 0x74, 0x61, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x42, 0x51, + 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x43, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, + 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, + 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_goTypes = []any{ (*UpstreamSpec)(nil), // 0: consul.options.gloo.solo.io.UpstreamSpec (*options.ServiceSpec)(nil), // 1: options.gloo.solo.io.ServiceSpec + (ConsulConsistencyModes)(0), // 2: consul.options.gloo.solo.io.ConsulConsistencyModes + (*QueryOptions)(nil), // 3: consul.options.gloo.solo.io.QueryOptions } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_depIdxs = []int32{ 1, // 0: consul.options.gloo.solo.io.UpstreamSpec.service_spec:type_name -> options.gloo.solo.io.ServiceSpec - 1, // [1:1] is the sub-list for method output_type - 1, // [1:1] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name + 2, // 1: consul.options.gloo.solo.io.UpstreamSpec.consistencyMode:type_name -> consul.options.gloo.solo.io.ConsulConsistencyModes + 3, // 2: consul.options.gloo.solo.io.UpstreamSpec.query_options:type_name -> consul.options.gloo.solo.io.QueryOptions + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_init() } @@ -228,25 +262,12 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_pr if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpstreamSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_init() type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, @@ -257,7 +278,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_pr MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_consul_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/consul/consul.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/consul/consul.pb.hash.go index decfb6bf6..0b89639a5 100644 --- a/pkg/api/gloo.solo.io/v1/options/consul/consul.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/consul/consul.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -75,14 +79,45 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetServiceSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServiceSpec")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetServiceSpec(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetServiceSpec(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ServiceSpec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetConsistencyMode()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetQueryOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("QueryOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetQueryOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("QueryOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/v1/options/consul/consul.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/consul/consul.pb.uniquehash.go new file mode 100644 index 000000000..b93574cc8 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/consul/consul.pb.uniquehash.go @@ -0,0 +1,195 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/consul/consul.proto + +package consul + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("consul.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/consul.UpstreamSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ServiceName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetServiceName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ServiceTags")); err != nil { + return 0, err + } + for i, v := range m.GetServiceTags() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("SubsetTags")); err != nil { + return 0, err + } + for i, v := range m.GetSubsetTags() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("InstanceTags")); err != nil { + return 0, err + } + for i, v := range m.GetInstanceTags() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("InstanceBlacklistTags")); err != nil { + return 0, err + } + for i, v := range m.GetInstanceBlacklistTags() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetServiceSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServiceSpec")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetServiceSpec(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ServiceSpec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("ConsistencyMode")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetConsistencyMode()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetQueryOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("QueryOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetQueryOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("QueryOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("ConnectEnabled")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetConnectEnabled()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DataCenters")); err != nil { + return 0, err + } + for i, v := range m.GetDataCenters() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/consul/query_options.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/consul/query_options.pb.clone.go new file mode 100644 index 000000000..d2b1754cb --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/consul/query_options.pb.clone.go @@ -0,0 +1,45 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/consul/query_options.proto + +package consul + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *QueryOptions) Clone() proto.Message { + var target *QueryOptions + if m == nil { + return target + } + target = &QueryOptions{} + + if h, ok := interface{}(m.GetUseCache()).(clone.Cloner); ok { + target.UseCache = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.UseCache = proto.Clone(m.GetUseCache()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/consul/query_options.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/consul/query_options.pb.equal.go new file mode 100644 index 000000000..08fc5f475 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/consul/query_options.pb.equal.go @@ -0,0 +1,60 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/consul/query_options.proto + +package consul + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *QueryOptions) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*QueryOptions) + if !ok { + that2, ok := that.(QueryOptions) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetUseCache()).(equality.Equalizer); ok { + if !h.Equal(target.GetUseCache()) { + return false + } + } else { + if !proto.Equal(m.GetUseCache(), target.GetUseCache()) { + return false + } + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/options/consul/query_options.pb.go b/pkg/api/gloo.solo.io/v1/options/consul/query_options.pb.go new file mode 100644 index 000000000..0d53d7216 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/consul/query_options.pb.go @@ -0,0 +1,253 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/consul/query_options.proto + +package consul + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/known/durationpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// These are the same consistency modes offered by Consul. For more information please review https://www.consul.io/api-docs/features/consistency. +// and https://pkg.go.dev/github.com/hashicorp/consul/api#QueryOptions. +// +// Note: Gloo handles staleness well (as it runs update loops ~ once/second) but makes many requests +// to get consul endpoints so users may want to opt into stale reads once the implications are understood. +type ConsulConsistencyModes int32 + +const ( + // default - Consul HTTP API queries use default mode by default. + // It is strongly consistent in almost all cases. However, there is a small + // window in which a new leader may be elected during which the old leader may + // respond with stale values. The trade-off is fast reads but potentially stale + // values. The condition resulting in stale reads is hard to trigger, and most + // clients should not need to worry about this case. Also, note that this race + // condition only applies to reads, not writes. + // + // For more, see https://www.consul.io/api-docs/features/consistency#consul-http-api-queries + ConsulConsistencyModes_DefaultMode ConsulConsistencyModes = 0 + // AllowStale allows any Consul server (non-leader) to service + // a read. This allows for lower latency and higher throughput + // + // stale - Consul DNS queries use stale mode by default. This mode allows any + // server to handle the read regardless of whether it is the leader. The trade-off + // is very fast and scalable reads with a higher likelihood of stale values. Results + // are generally consistent to within 50 milliseconds of the leader, though there is + // no upper limit on this staleness. Since this mode allows reads without a leader, a + // cluster that is unavailable (no quorum) can still respond to queries. + // + // Gloo handles staleness well (as it runs update loops ~ once/second) so users may want + // to opt into this. + ConsulConsistencyModes_StaleMode ConsulConsistencyModes = 1 + // RequireConsistent forces the read to be fully consistent. + // This is more expensive but prevents ever performing a stale + // read. + // + // consistent - This mode is strongly consistent without caveats. It requires that a + // leader verify with a quorum of peers that it is still leader. This introduces an + // additional round-trip to all server nodes. The trade-off is increased latency due + // to an extra round trip. Most clients should not use this unless they cannot tolerate + // a stale read. + // + // Gloo handles staleness well (as it runs update loops ~ once/second) so users may want + // to strongly consider their requirements before enabling this. + ConsulConsistencyModes_ConsistentMode ConsulConsistencyModes = 2 +) + +// Enum value maps for ConsulConsistencyModes. +var ( + ConsulConsistencyModes_name = map[int32]string{ + 0: "DefaultMode", + 1: "StaleMode", + 2: "ConsistentMode", + } + ConsulConsistencyModes_value = map[string]int32{ + "DefaultMode": 0, + "StaleMode": 1, + "ConsistentMode": 2, + } +) + +func (x ConsulConsistencyModes) Enum() *ConsulConsistencyModes { + p := new(ConsulConsistencyModes) + *p = x + return p +} + +func (x ConsulConsistencyModes) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ConsulConsistencyModes) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_enumTypes[0].Descriptor() +} + +func (ConsulConsistencyModes) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_enumTypes[0] +} + +func (x ConsulConsistencyModes) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ConsulConsistencyModes.Descriptor instead. +func (ConsulConsistencyModes) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_rawDescGZIP(), []int{0} +} + +// somewhat mirrors client query options struct in consul catalog api +// only has options that we know we want configurable at both upstream and settings-wide discovery levels +type QueryOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + // UseCache requests that the agent cache results locally. See + // https://www.consul.io/api/features/caching.html for more details on the + // semantics. + // + // Defaults to true. + // opts users into background refresh caching https://www.consul.io/api-docs/features/caching#background-refresh-caching + UseCache *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=use_cache,json=useCache,proto3" json:"use_cache,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *QueryOptions) Reset() { + *x = QueryOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *QueryOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryOptions) ProtoMessage() {} + +func (x *QueryOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QueryOptions.ProtoReflect.Descriptor instead. +func (*QueryOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_rawDescGZIP(), []int{0} +} + +func (x *QueryOptions) GetUseCache() *wrapperspb.BoolValue { + if x != nil { + return x.UseCache + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_rawDesc = string([]byte{ + 0x0a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x1b, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, + 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0x47, 0x0a, 0x0c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x08, 0x75, 0x73, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x2a, 0x4c, 0x0a, 0x16, + 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, + 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x6c, 0x65, + 0x4d, 0x6f, 0x64, 0x65, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x10, 0x02, 0x42, 0x51, 0xb8, 0xf5, 0x04, 0x01, + 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_goTypes = []any{ + (ConsulConsistencyModes)(0), // 0: consul.options.gloo.solo.io.ConsulConsistencyModes + (*QueryOptions)(nil), // 1: consul.options.gloo.solo.io.QueryOptions + (*wrapperspb.BoolValue)(nil), // 2: google.protobuf.BoolValue +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_depIdxs = []int32{ + 2, // 0: consul.options.gloo.solo.io.QueryOptions.use_cache:type_name -> google.protobuf.BoolValue + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_rawDesc)), + NumEnums: 1, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_enumTypes, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_consul_query_options_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/consul/query_options.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/consul/query_options.pb.hash.go new file mode 100644 index 000000000..fbae5fab4 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/consul/query_options.pb.hash.go @@ -0,0 +1,66 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/consul/query_options.proto + +package consul + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *QueryOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("consul.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/consul.QueryOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetUseCache()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UseCache")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUseCache(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UseCache")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/consul/query_options.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/consul/query_options.pb.uniquehash.go new file mode 100644 index 000000000..6974fb2e8 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/consul/query_options.pb.uniquehash.go @@ -0,0 +1,67 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/consul/query_options.proto + +package consul + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *QueryOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("consul.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/consul.QueryOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetUseCache()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UseCache")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUseCache(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UseCache")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/cors/cors.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/cors/cors.pb.clone.go new file mode 100644 index 000000000..273ed2a15 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/cors/cors.pb.clone.go @@ -0,0 +1,101 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/cors/cors.proto + +package cors + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *CorsPolicy) Clone() proto.Message { + var target *CorsPolicy + if m == nil { + return target + } + target = &CorsPolicy{} + + if m.GetAllowOrigin() != nil { + target.AllowOrigin = make([]string, len(m.GetAllowOrigin())) + for idx, v := range m.GetAllowOrigin() { + + target.AllowOrigin[idx] = v + + } + } + + if m.GetAllowOriginRegex() != nil { + target.AllowOriginRegex = make([]string, len(m.GetAllowOriginRegex())) + for idx, v := range m.GetAllowOriginRegex() { + + target.AllowOriginRegex[idx] = v + + } + } + + if m.GetAllowMethods() != nil { + target.AllowMethods = make([]string, len(m.GetAllowMethods())) + for idx, v := range m.GetAllowMethods() { + + target.AllowMethods[idx] = v + + } + } + + if m.GetAllowHeaders() != nil { + target.AllowHeaders = make([]string, len(m.GetAllowHeaders())) + for idx, v := range m.GetAllowHeaders() { + + target.AllowHeaders[idx] = v + + } + } + + if m.GetExposeHeaders() != nil { + target.ExposeHeaders = make([]string, len(m.GetExposeHeaders())) + for idx, v := range m.GetExposeHeaders() { + + target.ExposeHeaders[idx] = v + + } + } + + target.MaxAge = m.GetMaxAge() + + target.AllowCredentials = m.GetAllowCredentials() + + target.DisableForRoute = m.GetDisableForRoute() + + return target +} + +// Clone function +func (m *CorsPolicyMergeSettings) Clone() proto.Message { + var target *CorsPolicyMergeSettings + if m == nil { + return target + } + target = &CorsPolicyMergeSettings{} + + target.ExposeHeaders = m.GetExposeHeaders() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/cors/cors.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/cors/cors.pb.equal.go index acd5729c3..1cc67d9d2 100644 --- a/pkg/api/gloo.solo.io/v1/options/cors/cors.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/options/cors/cors.pb.equal.go @@ -115,3 +115,31 @@ func (m *CorsPolicy) Equal(that interface{}) bool { return true } + +// Equal function +func (m *CorsPolicyMergeSettings) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*CorsPolicyMergeSettings) + if !ok { + that2, ok := that.(CorsPolicyMergeSettings) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetExposeHeaders() != target.GetExposeHeaders() { + return false + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/options/cors/cors.pb.go b/pkg/api/gloo.solo.io/v1/options/cors/cors.pb.go index ac92e0e80..50d7d66c7 100644 --- a/pkg/api/gloo.solo.io/v1/options/cors/cors.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/cors/cors.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/cors/cors.proto @@ -9,8 +9,8 @@ package cors import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -23,16 +23,58 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 +type CorsPolicyMergeSettings_MergeStrategy int32 + +const ( + // Follow the default Envoy behavior, which is for Route settings to override VirtualHost settings if non-nil. + CorsPolicyMergeSettings_DEFAULT CorsPolicyMergeSettings_MergeStrategy = 0 + // When a CORS policy is present on both VirtualHost and Route CORS policy, merge the settings. The merge is done + // by concatenating for list fields and by ORing for boolean fields. + CorsPolicyMergeSettings_UNION CorsPolicyMergeSettings_MergeStrategy = 1 +) + +// Enum value maps for CorsPolicyMergeSettings_MergeStrategy. +var ( + CorsPolicyMergeSettings_MergeStrategy_name = map[int32]string{ + 0: "DEFAULT", + 1: "UNION", + } + CorsPolicyMergeSettings_MergeStrategy_value = map[string]int32{ + "DEFAULT": 0, + "UNION": 1, + } +) + +func (x CorsPolicyMergeSettings_MergeStrategy) Enum() *CorsPolicyMergeSettings_MergeStrategy { + p := new(CorsPolicyMergeSettings_MergeStrategy) + *p = x + return p +} + +func (x CorsPolicyMergeSettings_MergeStrategy) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CorsPolicyMergeSettings_MergeStrategy) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_enumTypes[0].Descriptor() +} + +func (CorsPolicyMergeSettings_MergeStrategy) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_enumTypes[0] +} + +func (x CorsPolicyMergeSettings_MergeStrategy) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CorsPolicyMergeSettings_MergeStrategy.Descriptor instead. +func (CorsPolicyMergeSettings_MergeStrategy) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_rawDescGZIP(), []int{1, 0} +} // CorsPolicy defines Cross-Origin Resource Sharing for a virtual service. type CorsPolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the origins that will be allowed to make CORS requests. // // An origin is allowed if either allow_origin or allow_origin_regex match. @@ -55,15 +97,15 @@ type CorsPolicy struct { // Optional, only applies to route-specific CORS Policies, defaults to false. // If set, the CORS Policy (specified on the virtual host) will be disabled for this route. DisableForRoute bool `protobuf:"varint,8,opt,name=disable_for_route,json=disableForRoute,proto3" json:"disable_for_route,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CorsPolicy) Reset() { *x = CorsPolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CorsPolicy) String() string { @@ -74,7 +116,7 @@ func (*CorsPolicy) ProtoMessage() {} func (x *CorsPolicy) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -145,9 +187,56 @@ func (x *CorsPolicy) GetDisableForRoute() bool { return false } +// Settings to determine how to merge CORS settings when present on both the VirtualHost and Route. +// This option can be useful when different user personas or teams share ownership of a VirtualService. +// For example, you might not want CORS settings on each route to override the virtual host settings, but instead merge them with a `UNION` strategy. +type CorsPolicyMergeSettings struct { + state protoimpl.MessageState `protogen:"open.v1"` + ExposeHeaders CorsPolicyMergeSettings_MergeStrategy `protobuf:"varint,5,opt,name=expose_headers,json=exposeHeaders,proto3,enum=cors.options.gloo.solo.io.CorsPolicyMergeSettings_MergeStrategy" json:"expose_headers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CorsPolicyMergeSettings) Reset() { + *x = CorsPolicyMergeSettings{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CorsPolicyMergeSettings) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CorsPolicyMergeSettings) ProtoMessage() {} + +func (x *CorsPolicyMergeSettings) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CorsPolicyMergeSettings.ProtoReflect.Descriptor instead. +func (*CorsPolicyMergeSettings) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_rawDescGZIP(), []int{1} +} + +func (x *CorsPolicyMergeSettings) GetExposeHeaders() CorsPolicyMergeSettings_MergeStrategy { + if x != nil { + return x.ExposeHeaders + } + return CorsPolicyMergeSettings_DEFAULT +} + var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_rawDesc = string([]byte{ 0x0a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -175,36 +264,51 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_r 0x6f, 0x77, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x46, 0x6f, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x42, 0x4b, 0x5a, 0x41, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, - 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x6f, 0x72, 0x73, 0xb8, 0xf5, - 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x65, 0x46, 0x6f, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x22, 0xab, 0x01, 0x0a, 0x17, 0x43, 0x6f, + 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x67, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x5f, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x40, 0x2e, + 0x63, 0x6f, 0x72, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x72, 0x73, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, + 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x27, + 0x0a, 0x0d, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, + 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, + 0x55, 0x4e, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x42, 0x4f, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, + 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x6f, 0x72, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_goTypes = []interface{}{ - (*CorsPolicy)(nil), // 0: cors.options.gloo.solo.io.CorsPolicy +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_goTypes = []any{ + (CorsPolicyMergeSettings_MergeStrategy)(0), // 0: cors.options.gloo.solo.io.CorsPolicyMergeSettings.MergeStrategy + (*CorsPolicy)(nil), // 1: cors.options.gloo.solo.io.CorsPolicy + (*CorsPolicyMergeSettings)(nil), // 2: cors.options.gloo.solo.io.CorsPolicyMergeSettings } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name + 0, // 0: cors.options.gloo.solo.io.CorsPolicyMergeSettings.expose_headers:type_name -> cors.options.gloo.solo.io.CorsPolicyMergeSettings.MergeStrategy + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_init() } @@ -212,36 +316,22 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_ if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CorsPolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_rawDesc)), + NumEnums: 1, + NumMessages: 2, NumExtensions: 0, NumServices: 0, }, GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_goTypes, DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_enumTypes, MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_cors_cors_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/cors/cors.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/cors/cors.pb.hash.go index 37092e3c1..bbbdcf8ce 100644 --- a/pkg/api/gloo.solo.io/v1/options/cors/cors.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/cors/cors.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *CorsPolicy) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -94,3 +98,28 @@ func (m *CorsPolicy) Hash(hasher hash.Hash64) (uint64, error) { return hasher.Sum64(), nil } + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *CorsPolicyMergeSettings) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("cors.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/cors.CorsPolicyMergeSettings")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetExposeHeaders()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/cors/cors.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/cors/cors.pb.uniquehash.go new file mode 100644 index 000000000..bc7ff93f4 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/cors/cors.pb.uniquehash.go @@ -0,0 +1,182 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/cors/cors.proto + +package cors + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *CorsPolicy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("cors.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/cors.CorsPolicy")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AllowOrigin")); err != nil { + return 0, err + } + for i, v := range m.GetAllowOrigin() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("AllowOriginRegex")); err != nil { + return 0, err + } + for i, v := range m.GetAllowOriginRegex() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("AllowMethods")); err != nil { + return 0, err + } + for i, v := range m.GetAllowMethods() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("AllowHeaders")); err != nil { + return 0, err + } + for i, v := range m.GetAllowHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("ExposeHeaders")); err != nil { + return 0, err + } + for i, v := range m.GetExposeHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("MaxAge")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetMaxAge())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AllowCredentials")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAllowCredentials()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DisableForRoute")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDisableForRoute()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *CorsPolicyMergeSettings) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("cors.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/cors.CorsPolicyMergeSettings")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ExposeHeaders")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetExposeHeaders()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.pb.clone.go new file mode 100644 index 000000000..4a01a1d5c --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.pb.clone.go @@ -0,0 +1,280 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.proto + +package dynamic_forward_proxy + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_circuit_breaker "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/circuit_breaker" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *FilterConfig) Clone() proto.Message { + var target *FilterConfig + if m == nil { + return target + } + target = &FilterConfig{} + + if h, ok := interface{}(m.GetDnsCacheConfig()).(clone.Cloner); ok { + target.DnsCacheConfig = h.Clone().(*DnsCacheConfig) + } else { + target.DnsCacheConfig = proto.Clone(m.GetDnsCacheConfig()).(*DnsCacheConfig) + } + + target.SaveUpstreamAddress = m.GetSaveUpstreamAddress() + + if h, ok := interface{}(m.GetSslConfig()).(clone.Cloner); ok { + target.SslConfig = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.UpstreamSslConfig) + } else { + target.SslConfig = proto.Clone(m.GetSslConfig()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.UpstreamSslConfig) + } + + if h, ok := interface{}(m.GetCircuitBreakers()).(clone.Cloner); ok { + target.CircuitBreakers = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_circuit_breaker.CircuitBreakerConfig) + } else { + target.CircuitBreakers = proto.Clone(m.GetCircuitBreakers()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_circuit_breaker.CircuitBreakerConfig) + } + + return target +} + +// Clone function +func (m *DnsCacheCircuitBreakers) Clone() proto.Message { + var target *DnsCacheCircuitBreakers + if m == nil { + return target + } + target = &DnsCacheCircuitBreakers{} + + if h, ok := interface{}(m.GetMaxPendingRequests()).(clone.Cloner); ok { + target.MaxPendingRequests = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxPendingRequests = proto.Clone(m.GetMaxPendingRequests()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + return target +} + +// Clone function +func (m *DnsCacheConfig) Clone() proto.Message { + var target *DnsCacheConfig + if m == nil { + return target + } + target = &DnsCacheConfig{} + + target.DnsLookupFamily = m.GetDnsLookupFamily() + + if h, ok := interface{}(m.GetDnsRefreshRate()).(clone.Cloner); ok { + target.DnsRefreshRate = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.DnsRefreshRate = proto.Clone(m.GetDnsRefreshRate()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetHostTtl()).(clone.Cloner); ok { + target.HostTtl = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.HostTtl = proto.Clone(m.GetHostTtl()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetMaxHosts()).(clone.Cloner); ok { + target.MaxHosts = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxHosts = proto.Clone(m.GetMaxHosts()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetDnsFailureRefreshRate()).(clone.Cloner); ok { + target.DnsFailureRefreshRate = h.Clone().(*RefreshRate) + } else { + target.DnsFailureRefreshRate = proto.Clone(m.GetDnsFailureRefreshRate()).(*RefreshRate) + } + + if h, ok := interface{}(m.GetDnsCacheCircuitBreaker()).(clone.Cloner); ok { + target.DnsCacheCircuitBreaker = h.Clone().(*DnsCacheCircuitBreakers) + } else { + target.DnsCacheCircuitBreaker = proto.Clone(m.GetDnsCacheCircuitBreaker()).(*DnsCacheCircuitBreakers) + } + + if m.GetPreresolveHostnames() != nil { + target.PreresolveHostnames = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.SocketAddress, len(m.GetPreresolveHostnames())) + for idx, v := range m.GetPreresolveHostnames() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.PreresolveHostnames[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.SocketAddress) + } else { + target.PreresolveHostnames[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.SocketAddress) + } + + } + } + + if h, ok := interface{}(m.GetDnsQueryTimeout()).(clone.Cloner); ok { + target.DnsQueryTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.DnsQueryTimeout = proto.Clone(m.GetDnsQueryTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + switch m.DnsCacheType.(type) { + + case *DnsCacheConfig_CaresDns: + + if h, ok := interface{}(m.GetCaresDns()).(clone.Cloner); ok { + target.DnsCacheType = &DnsCacheConfig_CaresDns{ + CaresDns: h.Clone().(*CaresDnsResolverConfig), + } + } else { + target.DnsCacheType = &DnsCacheConfig_CaresDns{ + CaresDns: proto.Clone(m.GetCaresDns()).(*CaresDnsResolverConfig), + } + } + + case *DnsCacheConfig_AppleDns: + + if h, ok := interface{}(m.GetAppleDns()).(clone.Cloner); ok { + target.DnsCacheType = &DnsCacheConfig_AppleDns{ + AppleDns: h.Clone().(*AppleDnsResolverConfig), + } + } else { + target.DnsCacheType = &DnsCacheConfig_AppleDns{ + AppleDns: proto.Clone(m.GetAppleDns()).(*AppleDnsResolverConfig), + } + } + + } + + return target +} + +// Clone function +func (m *RefreshRate) Clone() proto.Message { + var target *RefreshRate + if m == nil { + return target + } + target = &RefreshRate{} + + if h, ok := interface{}(m.GetBaseInterval()).(clone.Cloner); ok { + target.BaseInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.BaseInterval = proto.Clone(m.GetBaseInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetMaxInterval()).(clone.Cloner); ok { + target.MaxInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.MaxInterval = proto.Clone(m.GetMaxInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + return target +} + +// Clone function +func (m *PerRouteConfig) Clone() proto.Message { + var target *PerRouteConfig + if m == nil { + return target + } + target = &PerRouteConfig{} + + switch m.HostRewriteSpecifier.(type) { + + case *PerRouteConfig_HostRewrite: + + target.HostRewriteSpecifier = &PerRouteConfig_HostRewrite{ + HostRewrite: m.GetHostRewrite(), + } + + case *PerRouteConfig_AutoHostRewriteHeader: + + target.HostRewriteSpecifier = &PerRouteConfig_AutoHostRewriteHeader{ + AutoHostRewriteHeader: m.GetAutoHostRewriteHeader(), + } + + } + + return target +} + +// Clone function +func (m *DnsResolverOptions) Clone() proto.Message { + var target *DnsResolverOptions + if m == nil { + return target + } + target = &DnsResolverOptions{} + + target.UseTcpForDnsLookups = m.GetUseTcpForDnsLookups() + + target.NoDefaultSearchDomain = m.GetNoDefaultSearchDomain() + + return target +} + +// Clone function +func (m *CaresDnsResolverConfig) Clone() proto.Message { + var target *CaresDnsResolverConfig + if m == nil { + return target + } + target = &CaresDnsResolverConfig{} + + if m.GetResolvers() != nil { + target.Resolvers = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.Address, len(m.GetResolvers())) + for idx, v := range m.GetResolvers() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Resolvers[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.Address) + } else { + target.Resolvers[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.Address) + } + + } + } + + if h, ok := interface{}(m.GetDnsResolverOptions()).(clone.Cloner); ok { + target.DnsResolverOptions = h.Clone().(*DnsResolverOptions) + } else { + target.DnsResolverOptions = proto.Clone(m.GetDnsResolverOptions()).(*DnsResolverOptions) + } + + return target +} + +// Clone function +func (m *AppleDnsResolverConfig) Clone() proto.Message { + var target *AppleDnsResolverConfig + if m == nil { + return target + } + target = &AppleDnsResolverConfig{} + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.pb.equal.go new file mode 100644 index 000000000..b9569a532 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.pb.equal.go @@ -0,0 +1,464 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.proto + +package dynamic_forward_proxy + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *FilterConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*FilterConfig) + if !ok { + that2, ok := that.(FilterConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetDnsCacheConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetDnsCacheConfig()) { + return false + } + } else { + if !proto.Equal(m.GetDnsCacheConfig(), target.GetDnsCacheConfig()) { + return false + } + } + + if m.GetSaveUpstreamAddress() != target.GetSaveUpstreamAddress() { + return false + } + + if h, ok := interface{}(m.GetSslConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetSslConfig()) { + return false + } + } else { + if !proto.Equal(m.GetSslConfig(), target.GetSslConfig()) { + return false + } + } + + if h, ok := interface{}(m.GetCircuitBreakers()).(equality.Equalizer); ok { + if !h.Equal(target.GetCircuitBreakers()) { + return false + } + } else { + if !proto.Equal(m.GetCircuitBreakers(), target.GetCircuitBreakers()) { + return false + } + } + + return true +} + +// Equal function +func (m *DnsCacheCircuitBreakers) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*DnsCacheCircuitBreakers) + if !ok { + that2, ok := that.(DnsCacheCircuitBreakers) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetMaxPendingRequests()).(equality.Equalizer); ok { + if !h.Equal(target.GetMaxPendingRequests()) { + return false + } + } else { + if !proto.Equal(m.GetMaxPendingRequests(), target.GetMaxPendingRequests()) { + return false + } + } + + return true +} + +// Equal function +func (m *DnsCacheConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*DnsCacheConfig) + if !ok { + that2, ok := that.(DnsCacheConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetDnsLookupFamily() != target.GetDnsLookupFamily() { + return false + } + + if h, ok := interface{}(m.GetDnsRefreshRate()).(equality.Equalizer); ok { + if !h.Equal(target.GetDnsRefreshRate()) { + return false + } + } else { + if !proto.Equal(m.GetDnsRefreshRate(), target.GetDnsRefreshRate()) { + return false + } + } + + if h, ok := interface{}(m.GetHostTtl()).(equality.Equalizer); ok { + if !h.Equal(target.GetHostTtl()) { + return false + } + } else { + if !proto.Equal(m.GetHostTtl(), target.GetHostTtl()) { + return false + } + } + + if h, ok := interface{}(m.GetMaxHosts()).(equality.Equalizer); ok { + if !h.Equal(target.GetMaxHosts()) { + return false + } + } else { + if !proto.Equal(m.GetMaxHosts(), target.GetMaxHosts()) { + return false + } + } + + if h, ok := interface{}(m.GetDnsFailureRefreshRate()).(equality.Equalizer); ok { + if !h.Equal(target.GetDnsFailureRefreshRate()) { + return false + } + } else { + if !proto.Equal(m.GetDnsFailureRefreshRate(), target.GetDnsFailureRefreshRate()) { + return false + } + } + + if h, ok := interface{}(m.GetDnsCacheCircuitBreaker()).(equality.Equalizer); ok { + if !h.Equal(target.GetDnsCacheCircuitBreaker()) { + return false + } + } else { + if !proto.Equal(m.GetDnsCacheCircuitBreaker(), target.GetDnsCacheCircuitBreaker()) { + return false + } + } + + if len(m.GetPreresolveHostnames()) != len(target.GetPreresolveHostnames()) { + return false + } + for idx, v := range m.GetPreresolveHostnames() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetPreresolveHostnames()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetPreresolveHostnames()[idx]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetDnsQueryTimeout()).(equality.Equalizer); ok { + if !h.Equal(target.GetDnsQueryTimeout()) { + return false + } + } else { + if !proto.Equal(m.GetDnsQueryTimeout(), target.GetDnsQueryTimeout()) { + return false + } + } + + switch m.DnsCacheType.(type) { + + case *DnsCacheConfig_CaresDns: + if _, ok := target.DnsCacheType.(*DnsCacheConfig_CaresDns); !ok { + return false + } + + if h, ok := interface{}(m.GetCaresDns()).(equality.Equalizer); ok { + if !h.Equal(target.GetCaresDns()) { + return false + } + } else { + if !proto.Equal(m.GetCaresDns(), target.GetCaresDns()) { + return false + } + } + + case *DnsCacheConfig_AppleDns: + if _, ok := target.DnsCacheType.(*DnsCacheConfig_AppleDns); !ok { + return false + } + + if h, ok := interface{}(m.GetAppleDns()).(equality.Equalizer); ok { + if !h.Equal(target.GetAppleDns()) { + return false + } + } else { + if !proto.Equal(m.GetAppleDns(), target.GetAppleDns()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.DnsCacheType != target.DnsCacheType { + return false + } + } + + return true +} + +// Equal function +func (m *RefreshRate) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RefreshRate) + if !ok { + that2, ok := that.(RefreshRate) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetBaseInterval()).(equality.Equalizer); ok { + if !h.Equal(target.GetBaseInterval()) { + return false + } + } else { + if !proto.Equal(m.GetBaseInterval(), target.GetBaseInterval()) { + return false + } + } + + if h, ok := interface{}(m.GetMaxInterval()).(equality.Equalizer); ok { + if !h.Equal(target.GetMaxInterval()) { + return false + } + } else { + if !proto.Equal(m.GetMaxInterval(), target.GetMaxInterval()) { + return false + } + } + + return true +} + +// Equal function +func (m *PerRouteConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*PerRouteConfig) + if !ok { + that2, ok := that.(PerRouteConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + switch m.HostRewriteSpecifier.(type) { + + case *PerRouteConfig_HostRewrite: + if _, ok := target.HostRewriteSpecifier.(*PerRouteConfig_HostRewrite); !ok { + return false + } + + if strings.Compare(m.GetHostRewrite(), target.GetHostRewrite()) != 0 { + return false + } + + case *PerRouteConfig_AutoHostRewriteHeader: + if _, ok := target.HostRewriteSpecifier.(*PerRouteConfig_AutoHostRewriteHeader); !ok { + return false + } + + if strings.Compare(m.GetAutoHostRewriteHeader(), target.GetAutoHostRewriteHeader()) != 0 { + return false + } + + default: + // m is nil but target is not nil + if m.HostRewriteSpecifier != target.HostRewriteSpecifier { + return false + } + } + + return true +} + +// Equal function +func (m *DnsResolverOptions) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*DnsResolverOptions) + if !ok { + that2, ok := that.(DnsResolverOptions) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetUseTcpForDnsLookups() != target.GetUseTcpForDnsLookups() { + return false + } + + if m.GetNoDefaultSearchDomain() != target.GetNoDefaultSearchDomain() { + return false + } + + return true +} + +// Equal function +func (m *CaresDnsResolverConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*CaresDnsResolverConfig) + if !ok { + that2, ok := that.(CaresDnsResolverConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetResolvers()) != len(target.GetResolvers()) { + return false + } + for idx, v := range m.GetResolvers() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetResolvers()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetResolvers()[idx]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetDnsResolverOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetDnsResolverOptions()) { + return false + } + } else { + if !proto.Equal(m.GetDnsResolverOptions(), target.GetDnsResolverOptions()) { + return false + } + } + + return true +} + +// Equal function +func (m *AppleDnsResolverConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AppleDnsResolverConfig) + if !ok { + that2, ok := that.(AppleDnsResolverConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.pb.go b/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.pb.go new file mode 100644 index 000000000..04228213a --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.pb.go @@ -0,0 +1,1004 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.proto + +package dynamic_forward_proxy + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/envoyproxy/protoc-gen-validate/validate" + _ "github.com/solo-io/protoc-gen-ext/extproto" + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + circuit_breaker "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/circuit_breaker" + ssl "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// When V4_ONLY is selected, the DNS resolver will only perform a lookup for +// addresses in the IPv4 family. If V6_ONLY is selected, the DNS resolver will +// only perform a lookup for addresses in the IPv6 family. If AUTO is +// specified, the DNS resolver will first perform a lookup for addresses in +// the IPv6 family and fallback to a lookup for addresses in the IPv4 family. +// This is semantically equivalent to a non-existent V6_PREFERRED option. +// AUTO is a legacy name that is more opaque than +// necessary and will be deprecated in favor of V6_PREFERRED in a future major version of the API. +// If V4_PREFERRED is specified, the DNS resolver will first perform a lookup for addresses in the +// IPv4 family and fallback to a lookup for addresses in the IPv6 family. i.e., the callback +// target will only get v6 addresses if there were NO v4 addresses to return. +// If ALL is specified, the DNS resolver will perform a lookup for both IPv4 and IPv6 families, +// and return all resolved addresses. +// For cluster types other than +// :ref:`STRICT_DNS` and +// :ref:`LOGICAL_DNS`, +// this setting is +// ignored. +// [#next-major-version: deprecate AUTO in favor of a V6_PREFERRED option.] +type DnsLookupFamily int32 + +const ( + DnsLookupFamily_V4_PREFERRED DnsLookupFamily = 0 + DnsLookupFamily_V4_ONLY DnsLookupFamily = 1 + DnsLookupFamily_V6_ONLY DnsLookupFamily = 2 + DnsLookupFamily_AUTO DnsLookupFamily = 3 + DnsLookupFamily_ALL DnsLookupFamily = 4 +) + +// Enum value maps for DnsLookupFamily. +var ( + DnsLookupFamily_name = map[int32]string{ + 0: "V4_PREFERRED", + 1: "V4_ONLY", + 2: "V6_ONLY", + 3: "AUTO", + 4: "ALL", + } + DnsLookupFamily_value = map[string]int32{ + "V4_PREFERRED": 0, + "V4_ONLY": 1, + "V6_ONLY": 2, + "AUTO": 3, + "ALL": 4, + } +) + +func (x DnsLookupFamily) Enum() *DnsLookupFamily { + p := new(DnsLookupFamily) + *p = x + return p +} + +func (x DnsLookupFamily) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DnsLookupFamily) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_enumTypes[0].Descriptor() +} + +func (DnsLookupFamily) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_enumTypes[0] +} + +func (x DnsLookupFamily) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DnsLookupFamily.Descriptor instead. +func (DnsLookupFamily) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_rawDescGZIP(), []int{0} +} + +// Configuration for the dynamic forward proxy HTTP filter. See the :ref:`architecture overview +// ` for more information. +// [#extension: envoy.filters.http.dynamic_forward_proxy] +type FilterConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The DNS cache configuration that the filter will attach to. Note this configuration must + // match that of associated :ref:`dynamic forward proxy cluster configuration + // `. + DnsCacheConfig *DnsCacheConfig `protobuf:"bytes,1,opt,name=dns_cache_config,json=dnsCacheConfig,proto3" json:"dns_cache_config,omitempty"` + // When this flag is set, the filter will add the resolved upstream address in the filter + // state. The state should be saved with key + // `envoy.stream.upstream_address` (See + // :repo:`upstream_address.h`). + SaveUpstreamAddress bool `protobuf:"varint,2,opt,name=save_upstream_address,json=saveUpstreamAddress,proto3" json:"save_upstream_address,omitempty"` + // If provided, the autogenerated dynamic forward proxy cluster will use TLS when connecting to upstream hosts and verify the certificate chain + SslConfig *ssl.UpstreamSslConfig `protobuf:"bytes,3,opt,name=ssl_config,json=sslConfig,proto3" json:"ssl_config,omitempty"` + // Circuit breakers for this proxy. if not set, the defaults ones from the Gloo settings will be used. + // if those are not set, [envoy's defaults](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/circuit_breaker.proto#envoy-api-msg-cluster-circuitbreakers) + // will be used. + CircuitBreakers *circuit_breaker.CircuitBreakerConfig `protobuf:"bytes,4,opt,name=circuit_breakers,json=circuitBreakers,proto3" json:"circuit_breakers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FilterConfig) Reset() { + *x = FilterConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FilterConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FilterConfig) ProtoMessage() {} + +func (x *FilterConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FilterConfig.ProtoReflect.Descriptor instead. +func (*FilterConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_rawDescGZIP(), []int{0} +} + +func (x *FilterConfig) GetDnsCacheConfig() *DnsCacheConfig { + if x != nil { + return x.DnsCacheConfig + } + return nil +} + +func (x *FilterConfig) GetSaveUpstreamAddress() bool { + if x != nil { + return x.SaveUpstreamAddress + } + return false +} + +func (x *FilterConfig) GetSslConfig() *ssl.UpstreamSslConfig { + if x != nil { + return x.SslConfig + } + return nil +} + +func (x *FilterConfig) GetCircuitBreakers() *circuit_breaker.CircuitBreakerConfig { + if x != nil { + return x.CircuitBreakers + } + return nil +} + +// Configuration of circuit breakers for resolver. +type DnsCacheCircuitBreakers struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The maximum number of pending requests that Envoy will allow to the + // resolver. If not specified, the default is 1024. + MaxPendingRequests *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=max_pending_requests,json=maxPendingRequests,proto3" json:"max_pending_requests,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DnsCacheCircuitBreakers) Reset() { + *x = DnsCacheCircuitBreakers{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DnsCacheCircuitBreakers) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DnsCacheCircuitBreakers) ProtoMessage() {} + +func (x *DnsCacheCircuitBreakers) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DnsCacheCircuitBreakers.ProtoReflect.Descriptor instead. +func (*DnsCacheCircuitBreakers) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_rawDescGZIP(), []int{1} +} + +func (x *DnsCacheCircuitBreakers) GetMaxPendingRequests() *wrapperspb.UInt32Value { + if x != nil { + return x.MaxPendingRequests + } + return nil +} + +// Configuration for the dynamic forward proxy DNS cache. See the :ref:`architecture overview +// ` for more information. +// [#next-free-field: 14] +type DnsCacheConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The DNS lookup family to use during resolution. + // + // [#comment:TODO(mattklein123): Figure out how to support IPv4/IPv6 "happy eyeballs" mode. The + // way this might work is a new lookup family which returns both IPv4 and IPv6 addresses, and + // then configures a host to have a primary and fall back address. With this, we could very + // likely build a "happy eyeballs" connection pool which would race the primary / fall back + // address and return the one that wins. This same method could potentially also be used for + // QUIC to TCP fall back.] + DnsLookupFamily DnsLookupFamily `protobuf:"varint,2,opt,name=dns_lookup_family,json=dnsLookupFamily,proto3,enum=dfp.options.gloo.solo.io.DnsLookupFamily" json:"dns_lookup_family,omitempty"` + // The DNS refresh rate for unresolved DNS hosts. If not specified defaults to 60s. + // + // The refresh rate is rounded to the closest millisecond, and must be at least 1ms. + // + // Once a host has been resolved, the refresh rate will be the DNS TTL, capped + // at a minimum of 5s. + DnsRefreshRate *durationpb.Duration `protobuf:"bytes,3,opt,name=dns_refresh_rate,json=dnsRefreshRate,proto3" json:"dns_refresh_rate,omitempty"` + // The TTL for hosts that are unused. Hosts that have not been used in the configured time + // interval will be purged. If not specified defaults to 5m. + // + // **Note**: + // + // The TTL is only checked at the time of DNS refresh, as specified by *dns_refresh_rate*. This + // means that if the configured TTL is shorter than the refresh rate the host may not be removed + // immediately. + // + // **Note**: + // + // The TTL has no relation to DNS TTL and is only used to control Envoy's resource usage. + HostTtl *durationpb.Duration `protobuf:"bytes,4,opt,name=host_ttl,json=hostTtl,proto3" json:"host_ttl,omitempty"` + // The maximum number of hosts that the cache will hold. If not specified defaults to 1024. + // + // **Note**: + // + // The implementation is approximate and enforced independently on each worker thread, thus + // it is possible for the maximum hosts in the cache to go slightly above the configured + // value depending on timing. This is similar to how other circuit breakers work. + MaxHosts *wrapperspb.UInt32Value `protobuf:"bytes,5,opt,name=max_hosts,json=maxHosts,proto3" json:"max_hosts,omitempty"` + // If the DNS failure refresh rate is specified, + // this is used as the cache's DNS refresh rate when DNS requests are failing. If this setting is + // not specified, the failure refresh rate defaults to the dns_refresh_rate. + DnsFailureRefreshRate *RefreshRate `protobuf:"bytes,6,opt,name=dns_failure_refresh_rate,json=dnsFailureRefreshRate,proto3" json:"dns_failure_refresh_rate,omitempty"` + // The config of circuit breakers for resolver. It provides a configurable threshold. + // Envoy will use dns cache circuit breakers with default settings even if this value is not set. + DnsCacheCircuitBreaker *DnsCacheCircuitBreakers `protobuf:"bytes,7,opt,name=dns_cache_circuit_breaker,json=dnsCacheCircuitBreaker,proto3" json:"dns_cache_circuit_breaker,omitempty"` + // Types that are valid to be assigned to DnsCacheType: + // + // *DnsCacheConfig_CaresDns + // *DnsCacheConfig_AppleDns + DnsCacheType isDnsCacheConfig_DnsCacheType `protobuf_oneof:"DnsCacheType"` + // Hostnames that should be preresolved into the cache upon creation. This might provide a + // performance improvement, in the form of cache hits, for hostnames that are going to be + // resolved during steady state and are known at config load time. + PreresolveHostnames []*v3.SocketAddress `protobuf:"bytes,10,rep,name=preresolve_hostnames,json=preresolveHostnames,proto3" json:"preresolve_hostnames,omitempty"` + // The timeout used for DNS queries. This timeout is independent of any timeout and retry policy + // used by the underlying DNS implementation (e.g., c-areas and Apple DNS) which are opaque. + // Setting this timeout will ensure that queries succeed or fail within the specified time frame + // and are then retried using the standard refresh rates. Defaults to 5s if not set. + DnsQueryTimeout *durationpb.Duration `protobuf:"bytes,11,opt,name=dns_query_timeout,json=dnsQueryTimeout,proto3" json:"dns_query_timeout,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DnsCacheConfig) Reset() { + *x = DnsCacheConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DnsCacheConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DnsCacheConfig) ProtoMessage() {} + +func (x *DnsCacheConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DnsCacheConfig.ProtoReflect.Descriptor instead. +func (*DnsCacheConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_rawDescGZIP(), []int{2} +} + +func (x *DnsCacheConfig) GetDnsLookupFamily() DnsLookupFamily { + if x != nil { + return x.DnsLookupFamily + } + return DnsLookupFamily_V4_PREFERRED +} + +func (x *DnsCacheConfig) GetDnsRefreshRate() *durationpb.Duration { + if x != nil { + return x.DnsRefreshRate + } + return nil +} + +func (x *DnsCacheConfig) GetHostTtl() *durationpb.Duration { + if x != nil { + return x.HostTtl + } + return nil +} + +func (x *DnsCacheConfig) GetMaxHosts() *wrapperspb.UInt32Value { + if x != nil { + return x.MaxHosts + } + return nil +} + +func (x *DnsCacheConfig) GetDnsFailureRefreshRate() *RefreshRate { + if x != nil { + return x.DnsFailureRefreshRate + } + return nil +} + +func (x *DnsCacheConfig) GetDnsCacheCircuitBreaker() *DnsCacheCircuitBreakers { + if x != nil { + return x.DnsCacheCircuitBreaker + } + return nil +} + +func (x *DnsCacheConfig) GetDnsCacheType() isDnsCacheConfig_DnsCacheType { + if x != nil { + return x.DnsCacheType + } + return nil +} + +func (x *DnsCacheConfig) GetCaresDns() *CaresDnsResolverConfig { + if x != nil { + if x, ok := x.DnsCacheType.(*DnsCacheConfig_CaresDns); ok { + return x.CaresDns + } + } + return nil +} + +func (x *DnsCacheConfig) GetAppleDns() *AppleDnsResolverConfig { + if x != nil { + if x, ok := x.DnsCacheType.(*DnsCacheConfig_AppleDns); ok { + return x.AppleDns + } + } + return nil +} + +func (x *DnsCacheConfig) GetPreresolveHostnames() []*v3.SocketAddress { + if x != nil { + return x.PreresolveHostnames + } + return nil +} + +func (x *DnsCacheConfig) GetDnsQueryTimeout() *durationpb.Duration { + if x != nil { + return x.DnsQueryTimeout + } + return nil +} + +type isDnsCacheConfig_DnsCacheType interface { + isDnsCacheConfig_DnsCacheType() +} + +type DnsCacheConfig_CaresDns struct { + CaresDns *CaresDnsResolverConfig `protobuf:"bytes,8,opt,name=cares_dns,json=caresDns,proto3,oneof"` +} + +type DnsCacheConfig_AppleDns struct { + AppleDns *AppleDnsResolverConfig `protobuf:"bytes,9,opt,name=apple_dns,json=appleDns,proto3,oneof"` +} + +func (*DnsCacheConfig_CaresDns) isDnsCacheConfig_DnsCacheType() {} + +func (*DnsCacheConfig_AppleDns) isDnsCacheConfig_DnsCacheType() {} + +type RefreshRate struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Specifies the base interval between refreshes. This parameter is required and must be greater + // than 1ms and less than + // max_interval. + BaseInterval *durationpb.Duration `protobuf:"bytes,1,opt,name=base_interval,json=baseInterval,proto3" json:"base_interval,omitempty"` + // Specifies the maximum interval between refreshes. This parameter is optional, but must be + // greater than or equal to the + // base_interval if set. The default + // is 10 times the base_interval. + MaxInterval *durationpb.Duration `protobuf:"bytes,2,opt,name=max_interval,json=maxInterval,proto3" json:"max_interval,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RefreshRate) Reset() { + *x = RefreshRate{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RefreshRate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RefreshRate) ProtoMessage() {} + +func (x *RefreshRate) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RefreshRate.ProtoReflect.Descriptor instead. +func (*RefreshRate) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_rawDescGZIP(), []int{3} +} + +func (x *RefreshRate) GetBaseInterval() *durationpb.Duration { + if x != nil { + return x.BaseInterval + } + return nil +} + +func (x *RefreshRate) GetMaxInterval() *durationpb.Duration { + if x != nil { + return x.MaxInterval + } + return nil +} + +// Per route Configuration for the dynamic forward proxy HTTP filter. +type PerRouteConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to HostRewriteSpecifier: + // + // *PerRouteConfig_HostRewrite + // *PerRouteConfig_AutoHostRewriteHeader + HostRewriteSpecifier isPerRouteConfig_HostRewriteSpecifier `protobuf_oneof:"host_rewrite_specifier"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PerRouteConfig) Reset() { + *x = PerRouteConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PerRouteConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PerRouteConfig) ProtoMessage() {} + +func (x *PerRouteConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PerRouteConfig.ProtoReflect.Descriptor instead. +func (*PerRouteConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_rawDescGZIP(), []int{4} +} + +func (x *PerRouteConfig) GetHostRewriteSpecifier() isPerRouteConfig_HostRewriteSpecifier { + if x != nil { + return x.HostRewriteSpecifier + } + return nil +} + +func (x *PerRouteConfig) GetHostRewrite() string { + if x != nil { + if x, ok := x.HostRewriteSpecifier.(*PerRouteConfig_HostRewrite); ok { + return x.HostRewrite + } + } + return "" +} + +func (x *PerRouteConfig) GetAutoHostRewriteHeader() string { + if x != nil { + if x, ok := x.HostRewriteSpecifier.(*PerRouteConfig_AutoHostRewriteHeader); ok { + return x.AutoHostRewriteHeader + } + } + return "" +} + +type isPerRouteConfig_HostRewriteSpecifier interface { + isPerRouteConfig_HostRewriteSpecifier() +} + +type PerRouteConfig_HostRewrite struct { + // Indicates that before DNS lookup, the host header will be swapped with + // this value. If not set or empty, the original host header value + // will be used and no rewrite will happen. + // + // Note: this rewrite affects both DNS lookup and host header forwarding. However, this + // option shouldn't be used with + // HCM host rewrite given that the + // value set here would be used for DNS lookups whereas the value set in the HCM would be used + // for host header forwarding which is not the desired outcome. + HostRewrite string `protobuf:"bytes,1,opt,name=host_rewrite,json=hostRewrite,proto3,oneof"` +} + +type PerRouteConfig_AutoHostRewriteHeader struct { + // Indicates that before DNS lookup, the host header will be swapped with + // the value of this header. If not set or empty, the original host header + // value will be used and no rewrite will happen. + // + // Note: this rewrite affects both DNS lookup and host header forwarding. However, this + // option shouldn't be used with + // :ref:`HCM host rewrite header ` + // given that the value set here would be used for DNS lookups whereas the value set in the HCM + // would be used for host header forwarding which is not the desired outcome. + // + // **Note**: + // + // If the header appears multiple times only the first value is used. + AutoHostRewriteHeader string `protobuf:"bytes,2,opt,name=auto_host_rewrite_header,json=autoHostRewriteHeader,proto3,oneof"` +} + +func (*PerRouteConfig_HostRewrite) isPerRouteConfig_HostRewriteSpecifier() {} + +func (*PerRouteConfig_AutoHostRewriteHeader) isPerRouteConfig_HostRewriteSpecifier() {} + +// Configuration of DNS resolver option flags which control the behavior of the DNS resolver. +type DnsResolverOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Use TCP for all DNS queries instead of the default protocol UDP. + UseTcpForDnsLookups bool `protobuf:"varint,1,opt,name=use_tcp_for_dns_lookups,json=useTcpForDnsLookups,proto3" json:"use_tcp_for_dns_lookups,omitempty"` + // Do not use the default search domains; only query hostnames as-is or as aliases. + NoDefaultSearchDomain bool `protobuf:"varint,2,opt,name=no_default_search_domain,json=noDefaultSearchDomain,proto3" json:"no_default_search_domain,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DnsResolverOptions) Reset() { + *x = DnsResolverOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DnsResolverOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DnsResolverOptions) ProtoMessage() {} + +func (x *DnsResolverOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DnsResolverOptions.ProtoReflect.Descriptor instead. +func (*DnsResolverOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_rawDescGZIP(), []int{5} +} + +func (x *DnsResolverOptions) GetUseTcpForDnsLookups() bool { + if x != nil { + return x.UseTcpForDnsLookups + } + return false +} + +func (x *DnsResolverOptions) GetNoDefaultSearchDomain() bool { + if x != nil { + return x.NoDefaultSearchDomain + } + return false +} + +// Configuration for c-ares DNS resolver. +type CaresDnsResolverConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // A list of dns resolver addresses. + // :ref:`use_resolvers_as_fallback` + // below dictates if the DNS client should override system defaults or only use the provided + // resolvers if the system defaults are not available, i.e., as a fallback. + Resolvers []*v3.Address `protobuf:"bytes,1,rep,name=resolvers,proto3" json:"resolvers,omitempty"` + // Configuration of DNS resolver option flags which control the behavior of the DNS resolver. + DnsResolverOptions *DnsResolverOptions `protobuf:"bytes,2,opt,name=dns_resolver_options,json=dnsResolverOptions,proto3" json:"dns_resolver_options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CaresDnsResolverConfig) Reset() { + *x = CaresDnsResolverConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CaresDnsResolverConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CaresDnsResolverConfig) ProtoMessage() {} + +func (x *CaresDnsResolverConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CaresDnsResolverConfig.ProtoReflect.Descriptor instead. +func (*CaresDnsResolverConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_rawDescGZIP(), []int{6} +} + +func (x *CaresDnsResolverConfig) GetResolvers() []*v3.Address { + if x != nil { + return x.Resolvers + } + return nil +} + +func (x *CaresDnsResolverConfig) GetDnsResolverOptions() *DnsResolverOptions { + if x != nil { + return x.DnsResolverOptions + } + return nil +} + +// Configuration for apple DNS resolver. +type AppleDnsResolverConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AppleDnsResolverConfig) Reset() { + *x = AppleDnsResolverConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AppleDnsResolverConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AppleDnsResolverConfig) ProtoMessage() {} + +func (x *AppleDnsResolverConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AppleDnsResolverConfig.ProtoReflect.Descriptor instead. +func (*AppleDnsResolverConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_rawDescGZIP(), []int{7} +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_rawDesc = string([]byte{ + 0x0a, 0x67, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, + 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x64, 0x79, + 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x72, + 0x6f, 0x78, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x64, 0x66, 0x70, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, + 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x73, 0x6c, 0x2f, 0x73, 0x73, 0x6c, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x53, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x5f, 0x62, 0x72, 0x65, + 0x61, 0x6b, 0x65, 0x72, 0x2f, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x5f, 0x62, 0x72, 0x65, + 0x61, 0x6b, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xaf, 0x02, 0x0a, 0x0c, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5c, 0x0a, 0x10, 0x64, + 0x6e, 0x73, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x64, 0x66, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x44, 0x6e, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x64, 0x6e, 0x73, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x61, 0x76, + 0x65, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x61, 0x76, 0x65, 0x55, 0x70, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3e, 0x0a, + 0x0a, 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4d, 0x0a, + 0x10, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x42, 0x72, + 0x65, 0x61, 0x6b, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, 0x63, 0x69, 0x72, + 0x63, 0x75, 0x69, 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x73, 0x22, 0x69, 0x0a, 0x17, + 0x44, 0x6e, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x43, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x42, + 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x4e, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x70, + 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0xf9, 0x06, 0x0a, 0x0e, 0x44, 0x6e, 0x73, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5f, 0x0a, 0x11, 0x64, 0x6e, + 0x73, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x64, 0x66, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x44, 0x6e, 0x73, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x64, 0x6e, 0x73, 0x4c, + 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x51, 0x0a, 0x10, 0x64, + 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x0c, 0xfa, 0x42, 0x09, 0xaa, 0x01, 0x06, 0x32, 0x04, 0x10, 0xc0, 0x84, 0x3d, 0x52, 0x0e, + 0x64, 0x6e, 0x73, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x61, 0x74, 0x65, 0x12, 0x3e, + 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0xaa, 0x01, 0x02, 0x2a, 0x00, 0x52, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x54, 0x74, 0x6c, 0x12, 0x42, + 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x20, 0x00, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x48, 0x6f, 0x73, + 0x74, 0x73, 0x12, 0x5e, 0x0a, 0x18, 0x64, 0x6e, 0x73, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x66, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x61, 0x74, 0x65, 0x52, 0x15, 0x64, 0x6e, 0x73, + 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x61, + 0x74, 0x65, 0x12, 0x6c, 0x0a, 0x19, 0x64, 0x6e, 0x73, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, + 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x64, 0x66, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x44, 0x6e, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x43, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, + 0x42, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x73, 0x52, 0x16, 0x64, 0x6e, 0x73, 0x43, 0x61, 0x63, + 0x68, 0x65, 0x43, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, + 0x12, 0x4f, 0x0a, 0x09, 0x63, 0x61, 0x72, 0x65, 0x73, 0x5f, 0x64, 0x6e, 0x73, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x64, 0x66, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, + 0x61, 0x72, 0x65, 0x73, 0x44, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x08, 0x63, 0x61, 0x72, 0x65, 0x73, 0x44, 0x6e, + 0x73, 0x12, 0x4f, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x5f, 0x64, 0x6e, 0x73, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x64, 0x66, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x65, 0x44, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x08, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x44, + 0x6e, 0x73, 0x12, 0x5e, 0x0a, 0x14, 0x70, 0x72, 0x65, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, + 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, + 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x13, 0x70, + 0x72, 0x65, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x11, 0x64, 0x6e, 0x73, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, + 0x2a, 0x00, 0x52, 0x0f, 0x64, 0x6e, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x44, 0x6e, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, + 0x61, 0x74, 0x65, 0x12, 0x4e, 0x0a, 0x0d, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0xaa, 0x01, 0x08, 0x08, 0x01, 0x2a, + 0x04, 0x10, 0xc0, 0x84, 0x3d, 0x52, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x12, 0x4a, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0xaa, 0x01, 0x06, 0x2a, 0x04, 0x10, 0xc0, + 0x84, 0x3d, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, + 0x8a, 0x01, 0x0a, 0x0e, 0x50, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x23, 0x0a, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, + 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x68, 0x6f, 0x73, 0x74, + 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x18, 0x61, 0x75, 0x74, 0x6f, 0x5f, + 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x15, 0x61, 0x75, 0x74, + 0x6f, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x42, 0x18, 0x0a, 0x16, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, + 0x74, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x83, 0x01, 0x0a, + 0x12, 0x44, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x17, 0x75, 0x73, 0x65, 0x5f, 0x74, 0x63, 0x70, 0x5f, 0x66, + 0x6f, 0x72, 0x5f, 0x64, 0x6e, 0x73, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x75, 0x73, 0x65, 0x54, 0x63, 0x70, 0x46, 0x6f, 0x72, 0x44, + 0x6e, 0x73, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x37, 0x0a, 0x18, 0x6e, 0x6f, 0x5f, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x64, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x6e, 0x6f, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x22, 0xc7, 0x01, 0x0a, 0x16, 0x43, 0x61, 0x72, 0x65, 0x73, 0x44, 0x6e, 0x73, 0x52, + 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4d, 0x0a, + 0x09, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, + 0x01, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x73, 0x12, 0x5e, 0x0a, 0x14, + 0x64, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x64, 0x66, 0x70, + 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, + 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x12, 0x64, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x18, 0x0a, 0x16, + 0x41, 0x70, 0x70, 0x6c, 0x65, 0x44, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2a, 0x50, 0x0a, 0x0f, 0x44, 0x6e, 0x73, 0x4c, 0x6f, 0x6f, + 0x6b, 0x75, 0x70, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x10, 0x0a, 0x0c, 0x56, 0x34, 0x5f, + 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, 0x52, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x56, + 0x34, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x36, 0x5f, 0x4f, + 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x03, 0x12, + 0x07, 0x0a, 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x04, 0x42, 0x60, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, + 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x52, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x66, 0x6f, 0x72, + 0x77, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_goTypes = []any{ + (DnsLookupFamily)(0), // 0: dfp.options.gloo.solo.io.DnsLookupFamily + (*FilterConfig)(nil), // 1: dfp.options.gloo.solo.io.FilterConfig + (*DnsCacheCircuitBreakers)(nil), // 2: dfp.options.gloo.solo.io.DnsCacheCircuitBreakers + (*DnsCacheConfig)(nil), // 3: dfp.options.gloo.solo.io.DnsCacheConfig + (*RefreshRate)(nil), // 4: dfp.options.gloo.solo.io.RefreshRate + (*PerRouteConfig)(nil), // 5: dfp.options.gloo.solo.io.PerRouteConfig + (*DnsResolverOptions)(nil), // 6: dfp.options.gloo.solo.io.DnsResolverOptions + (*CaresDnsResolverConfig)(nil), // 7: dfp.options.gloo.solo.io.CaresDnsResolverConfig + (*AppleDnsResolverConfig)(nil), // 8: dfp.options.gloo.solo.io.AppleDnsResolverConfig + (*ssl.UpstreamSslConfig)(nil), // 9: gloo.solo.io.UpstreamSslConfig + (*circuit_breaker.CircuitBreakerConfig)(nil), // 10: gloo.solo.io.CircuitBreakerConfig + (*wrapperspb.UInt32Value)(nil), // 11: google.protobuf.UInt32Value + (*durationpb.Duration)(nil), // 12: google.protobuf.Duration + (*v3.SocketAddress)(nil), // 13: solo.io.envoy.config.core.v3.SocketAddress + (*v3.Address)(nil), // 14: solo.io.envoy.config.core.v3.Address +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_depIdxs = []int32{ + 3, // 0: dfp.options.gloo.solo.io.FilterConfig.dns_cache_config:type_name -> dfp.options.gloo.solo.io.DnsCacheConfig + 9, // 1: dfp.options.gloo.solo.io.FilterConfig.ssl_config:type_name -> gloo.solo.io.UpstreamSslConfig + 10, // 2: dfp.options.gloo.solo.io.FilterConfig.circuit_breakers:type_name -> gloo.solo.io.CircuitBreakerConfig + 11, // 3: dfp.options.gloo.solo.io.DnsCacheCircuitBreakers.max_pending_requests:type_name -> google.protobuf.UInt32Value + 0, // 4: dfp.options.gloo.solo.io.DnsCacheConfig.dns_lookup_family:type_name -> dfp.options.gloo.solo.io.DnsLookupFamily + 12, // 5: dfp.options.gloo.solo.io.DnsCacheConfig.dns_refresh_rate:type_name -> google.protobuf.Duration + 12, // 6: dfp.options.gloo.solo.io.DnsCacheConfig.host_ttl:type_name -> google.protobuf.Duration + 11, // 7: dfp.options.gloo.solo.io.DnsCacheConfig.max_hosts:type_name -> google.protobuf.UInt32Value + 4, // 8: dfp.options.gloo.solo.io.DnsCacheConfig.dns_failure_refresh_rate:type_name -> dfp.options.gloo.solo.io.RefreshRate + 2, // 9: dfp.options.gloo.solo.io.DnsCacheConfig.dns_cache_circuit_breaker:type_name -> dfp.options.gloo.solo.io.DnsCacheCircuitBreakers + 7, // 10: dfp.options.gloo.solo.io.DnsCacheConfig.cares_dns:type_name -> dfp.options.gloo.solo.io.CaresDnsResolverConfig + 8, // 11: dfp.options.gloo.solo.io.DnsCacheConfig.apple_dns:type_name -> dfp.options.gloo.solo.io.AppleDnsResolverConfig + 13, // 12: dfp.options.gloo.solo.io.DnsCacheConfig.preresolve_hostnames:type_name -> solo.io.envoy.config.core.v3.SocketAddress + 12, // 13: dfp.options.gloo.solo.io.DnsCacheConfig.dns_query_timeout:type_name -> google.protobuf.Duration + 12, // 14: dfp.options.gloo.solo.io.RefreshRate.base_interval:type_name -> google.protobuf.Duration + 12, // 15: dfp.options.gloo.solo.io.RefreshRate.max_interval:type_name -> google.protobuf.Duration + 14, // 16: dfp.options.gloo.solo.io.CaresDnsResolverConfig.resolvers:type_name -> solo.io.envoy.config.core.v3.Address + 6, // 17: dfp.options.gloo.solo.io.CaresDnsResolverConfig.dns_resolver_options:type_name -> dfp.options.gloo.solo.io.DnsResolverOptions + 18, // [18:18] is the sub-list for method output_type + 18, // [18:18] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_msgTypes[2].OneofWrappers = []any{ + (*DnsCacheConfig_CaresDns)(nil), + (*DnsCacheConfig_AppleDns)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_msgTypes[4].OneofWrappers = []any{ + (*PerRouteConfig_HostRewrite)(nil), + (*PerRouteConfig_AutoHostRewriteHeader)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_rawDesc)), + NumEnums: 1, + NumMessages: 8, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_enumTypes, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_dynamic_forward_proxy_dynamic_forward_proxy_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.pb.hash.go new file mode 100644 index 000000000..4c2627307 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.pb.hash.go @@ -0,0 +1,578 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.proto + +package dynamic_forward_proxy + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *FilterConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dfp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy.FilterConfig")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDnsCacheConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DnsCacheConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDnsCacheConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DnsCacheConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetSaveUpstreamAddress()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCircuitBreakers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CircuitBreakers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCircuitBreakers(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CircuitBreakers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *DnsCacheCircuitBreakers) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dfp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy.DnsCacheCircuitBreakers")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxPendingRequests()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxPendingRequests")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxPendingRequests(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxPendingRequests")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *DnsCacheConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dfp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy.DnsCacheConfig")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetDnsLookupFamily()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDnsRefreshRate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DnsRefreshRate")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDnsRefreshRate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DnsRefreshRate")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHostTtl()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HostTtl")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHostTtl(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HostTtl")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxHosts()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxHosts")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxHosts(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxHosts")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDnsFailureRefreshRate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DnsFailureRefreshRate")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDnsFailureRefreshRate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DnsFailureRefreshRate")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDnsCacheCircuitBreaker()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DnsCacheCircuitBreaker")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDnsCacheCircuitBreaker(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DnsCacheCircuitBreaker")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetPreresolveHostnames() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetDnsQueryTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DnsQueryTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDnsQueryTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DnsQueryTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.DnsCacheType.(type) { + + case *DnsCacheConfig_CaresDns: + + if h, ok := interface{}(m.GetCaresDns()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CaresDns")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCaresDns(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CaresDns")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *DnsCacheConfig_AppleDns: + + if h, ok := interface{}(m.GetAppleDns()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AppleDns")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAppleDns(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AppleDns")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RefreshRate) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dfp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy.RefreshRate")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetBaseInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBaseInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *PerRouteConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dfp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy.PerRouteConfig")); err != nil { + return 0, err + } + + switch m.HostRewriteSpecifier.(type) { + + case *PerRouteConfig_HostRewrite: + + if _, err = hasher.Write([]byte(m.GetHostRewrite())); err != nil { + return 0, err + } + + case *PerRouteConfig_AutoHostRewriteHeader: + + if _, err = hasher.Write([]byte(m.GetAutoHostRewriteHeader())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *DnsResolverOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dfp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy.DnsResolverOptions")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetUseTcpForDnsLookups()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetNoDefaultSearchDomain()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *CaresDnsResolverConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dfp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy.CaresDnsResolverConfig")); err != nil { + return 0, err + } + + for _, v := range m.GetResolvers() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetDnsResolverOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DnsResolverOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDnsResolverOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DnsResolverOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AppleDnsResolverConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dfp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy.AppleDnsResolverConfig")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.pb.uniquehash.go new file mode 100644 index 000000000..1bd9666cb --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.pb.uniquehash.go @@ -0,0 +1,602 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.proto + +package dynamic_forward_proxy + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FilterConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dfp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy.FilterConfig")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDnsCacheConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DnsCacheConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDnsCacheConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DnsCacheConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("SaveUpstreamAddress")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetSaveUpstreamAddress()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCircuitBreakers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CircuitBreakers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCircuitBreakers(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CircuitBreakers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DnsCacheCircuitBreakers) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dfp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy.DnsCacheCircuitBreakers")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxPendingRequests()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxPendingRequests")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxPendingRequests(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxPendingRequests")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DnsCacheConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dfp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy.DnsCacheConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DnsLookupFamily")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDnsLookupFamily()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDnsRefreshRate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DnsRefreshRate")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDnsRefreshRate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DnsRefreshRate")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHostTtl()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HostTtl")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHostTtl(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HostTtl")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxHosts()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxHosts")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxHosts(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxHosts")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDnsFailureRefreshRate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DnsFailureRefreshRate")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDnsFailureRefreshRate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DnsFailureRefreshRate")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDnsCacheCircuitBreaker()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DnsCacheCircuitBreaker")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDnsCacheCircuitBreaker(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DnsCacheCircuitBreaker")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("PreresolveHostnames")); err != nil { + return 0, err + } + for i, v := range m.GetPreresolveHostnames() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetDnsQueryTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DnsQueryTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDnsQueryTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DnsQueryTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.DnsCacheType.(type) { + + case *DnsCacheConfig_CaresDns: + + if h, ok := interface{}(m.GetCaresDns()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CaresDns")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCaresDns(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CaresDns")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *DnsCacheConfig_AppleDns: + + if h, ok := interface{}(m.GetAppleDns()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AppleDns")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAppleDns(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AppleDns")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RefreshRate) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dfp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy.RefreshRate")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetBaseInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBaseInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *PerRouteConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dfp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy.PerRouteConfig")); err != nil { + return 0, err + } + + switch m.HostRewriteSpecifier.(type) { + + case *PerRouteConfig_HostRewrite: + + if _, err = hasher.Write([]byte("HostRewrite")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHostRewrite())); err != nil { + return 0, err + } + + case *PerRouteConfig_AutoHostRewriteHeader: + + if _, err = hasher.Write([]byte("AutoHostRewriteHeader")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAutoHostRewriteHeader())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DnsResolverOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dfp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy.DnsResolverOptions")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("UseTcpForDnsLookups")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetUseTcpForDnsLookups()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("NoDefaultSearchDomain")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetNoDefaultSearchDomain()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *CaresDnsResolverConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dfp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy.CaresDnsResolverConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Resolvers")); err != nil { + return 0, err + } + for i, v := range m.GetResolvers() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetDnsResolverOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DnsResolverOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDnsResolverOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DnsResolverOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AppleDnsResolverConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("dfp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy.AppleDnsResolverConfig")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/faultinjection/fault.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/faultinjection/fault.pb.clone.go new file mode 100644 index 000000000..1141de56a --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/faultinjection/fault.pb.clone.go @@ -0,0 +1,85 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/faultinjection/fault.proto + +package faultinjection + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *RouteAbort) Clone() proto.Message { + var target *RouteAbort + if m == nil { + return target + } + target = &RouteAbort{} + + target.Percentage = m.GetPercentage() + + target.HttpStatus = m.GetHttpStatus() + + return target +} + +// Clone function +func (m *RouteDelay) Clone() proto.Message { + var target *RouteDelay + if m == nil { + return target + } + target = &RouteDelay{} + + target.Percentage = m.GetPercentage() + + if h, ok := interface{}(m.GetFixedDelay()).(clone.Cloner); ok { + target.FixedDelay = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.FixedDelay = proto.Clone(m.GetFixedDelay()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + return target +} + +// Clone function +func (m *RouteFaults) Clone() proto.Message { + var target *RouteFaults + if m == nil { + return target + } + target = &RouteFaults{} + + if h, ok := interface{}(m.GetAbort()).(clone.Cloner); ok { + target.Abort = h.Clone().(*RouteAbort) + } else { + target.Abort = proto.Clone(m.GetAbort()).(*RouteAbort) + } + + if h, ok := interface{}(m.GetDelay()).(clone.Cloner); ok { + target.Delay = h.Clone().(*RouteDelay) + } else { + target.Delay = proto.Clone(m.GetDelay()).(*RouteDelay) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/faultinjection/fault.pb.go b/pkg/api/gloo.solo.io/v1/options/faultinjection/fault.pb.go index 44bbf06f8..8651c5085 100644 --- a/pkg/api/gloo.solo.io/v1/options/faultinjection/fault.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/faultinjection/fault.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/faultinjection/fault.proto @@ -9,13 +9,13 @@ package faultinjection import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - duration "github.com/golang/protobuf/ptypes/duration" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" ) const ( @@ -25,29 +25,22 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type RouteAbort struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Percentage of requests that should be aborted, defaulting to 0. // This should be a value between 0.0 and 100.0, with up to 6 significant digits. Percentage float32 `protobuf:"fixed32,1,opt,name=percentage,proto3" json:"percentage,omitempty"` - // This should be a standard HTTP status, i.e. 503. Defaults to 0. - HttpStatus uint32 `protobuf:"varint,2,opt,name=http_status,json=httpStatus,proto3" json:"http_status,omitempty"` + // This should be a standard HTTP status in the range [200, 600), e.g. 503. Defaults to 0. + HttpStatus uint32 `protobuf:"varint,2,opt,name=http_status,json=httpStatus,proto3" json:"http_status,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteAbort) Reset() { *x = RouteAbort{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteAbort) String() string { @@ -58,7 +51,7 @@ func (*RouteAbort) ProtoMessage() {} func (x *RouteAbort) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -88,24 +81,21 @@ func (x *RouteAbort) GetHttpStatus() uint32 { } type RouteDelay struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Percentage of requests that should be delayed, defaulting to 0. // This should be a value between 0.0 and 100.0, with up to 6 significant digits. Percentage float32 `protobuf:"fixed32,1,opt,name=percentage,proto3" json:"percentage,omitempty"` - // Fixed delay, defaulting to 0. - FixedDelay *duration.Duration `protobuf:"bytes,2,opt,name=fixed_delay,json=fixedDelay,proto3" json:"fixed_delay,omitempty"` + // Fixed delay, defaulting to 0. Will be rejected by the control plane if the delay is specified and less than 1 second. + FixedDelay *durationpb.Duration `protobuf:"bytes,2,opt,name=fixed_delay,json=fixedDelay,proto3" json:"fixed_delay,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteDelay) Reset() { *x = RouteDelay{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteDelay) String() string { @@ -116,7 +106,7 @@ func (*RouteDelay) ProtoMessage() {} func (x *RouteDelay) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -138,7 +128,7 @@ func (x *RouteDelay) GetPercentage() float32 { return 0 } -func (x *RouteDelay) GetFixedDelay() *duration.Duration { +func (x *RouteDelay) GetFixedDelay() *durationpb.Duration { if x != nil { return x.FixedDelay } @@ -146,21 +136,18 @@ func (x *RouteDelay) GetFixedDelay() *duration.Duration { } type RouteFaults struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Abort *RouteAbort `protobuf:"bytes,1,opt,name=abort,proto3" json:"abort,omitempty"` + Delay *RouteDelay `protobuf:"bytes,2,opt,name=delay,proto3" json:"delay,omitempty"` unknownFields protoimpl.UnknownFields - - Abort *RouteAbort `protobuf:"bytes,1,opt,name=abort,proto3" json:"abort,omitempty"` - Delay *RouteDelay `protobuf:"bytes,2,opt,name=delay,proto3" json:"delay,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RouteFaults) Reset() { *x = RouteFaults{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteFaults) String() string { @@ -171,7 +158,7 @@ func (*RouteFaults) ProtoMessage() {} func (x *RouteFaults) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -202,7 +189,7 @@ func (x *RouteFaults) GetDelay() *RouteDelay { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_rawDesc = string([]byte{ 0x0a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -214,54 +201,55 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fa 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4d, 0x0a, 0x0a, 0x52, + 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x5a, 0x0a, 0x0a, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x70, - 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x74, 0x74, - 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, - 0x68, 0x74, 0x74, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x72, 0x0a, 0x0a, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, - 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x70, 0x65, - 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x44, 0x0a, 0x0b, 0x66, 0x69, 0x78, 0x65, - 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, - 0x2a, 0x00, 0x52, 0x0a, 0x66, 0x69, 0x78, 0x65, 0x64, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x22, 0x89, - 0x01, 0x0a, 0x0b, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x3c, - 0x0a, 0x05, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x12, 0x3c, 0x0a, 0x05, - 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, - 0x6c, 0x61, 0x79, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x55, 0x5a, 0x4b, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, - 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, - 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x0b, 0x68, 0x74, 0x74, + 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0b, + 0xfa, 0x42, 0x08, 0x2a, 0x06, 0x10, 0xd8, 0x04, 0x28, 0xc8, 0x01, 0x52, 0x0a, 0x68, 0x74, 0x74, + 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x72, 0x0a, 0x0a, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, + 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, + 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x44, 0x0a, 0x0b, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x64, + 0x65, 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x2a, 0x00, 0x52, + 0x0a, 0x66, 0x69, 0x78, 0x65, 0x64, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x22, 0x89, 0x01, 0x0a, 0x0b, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x05, 0x61, + 0x62, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x62, 0x6f, + 0x72, 0x74, 0x52, 0x05, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x12, 0x3c, 0x0a, 0x05, 0x64, 0x65, 0x6c, + 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x6c, 0x61, 0x79, + 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x59, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, + 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_goTypes = []interface{}{ - (*RouteAbort)(nil), // 0: fault.options.gloo.solo.io.RouteAbort - (*RouteDelay)(nil), // 1: fault.options.gloo.solo.io.RouteDelay - (*RouteFaults)(nil), // 2: fault.options.gloo.solo.io.RouteFaults - (*duration.Duration)(nil), // 3: google.protobuf.Duration +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_goTypes = []any{ + (*RouteAbort)(nil), // 0: fault.options.gloo.solo.io.RouteAbort + (*RouteDelay)(nil), // 1: fault.options.gloo.solo.io.RouteDelay + (*RouteFaults)(nil), // 2: fault.options.gloo.solo.io.RouteFaults + (*durationpb.Duration)(nil), // 3: google.protobuf.Duration } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_depIdxs = []int32{ 3, // 0: fault.options.gloo.solo.io.RouteDelay.fixed_delay:type_name -> google.protobuf.Duration @@ -281,49 +269,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_f if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteAbort); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteDelay); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteFaults); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_rawDesc)), NumEnums: 0, NumMessages: 3, NumExtensions: 0, @@ -334,7 +284,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_f MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_faultinjection_fault_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/faultinjection/fault.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/faultinjection/fault.pb.hash.go index 9147a129a..6e6f3c0dd 100644 --- a/pkg/api/gloo.solo.io/v1/options/faultinjection/fault.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/faultinjection/fault.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteAbort) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -52,6 +56,10 @@ func (m *RouteAbort) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteDelay) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -70,14 +78,20 @@ func (m *RouteDelay) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetFixedDelay()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FixedDelay")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetFixedDelay(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetFixedDelay(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("FixedDelay")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -87,6 +101,10 @@ func (m *RouteDelay) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteFaults) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -100,28 +118,40 @@ func (m *RouteFaults) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetAbort()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Abort")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAbort(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAbort(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Abort")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetDelay()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Delay")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDelay(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDelay(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Delay")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/v1/options/faultinjection/fault.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/faultinjection/fault.pb.uniquehash.go new file mode 100644 index 000000000..d3d5d4b8d --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/faultinjection/fault.pb.uniquehash.go @@ -0,0 +1,169 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/faultinjection/fault.proto + +package faultinjection + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteAbort) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fault.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/faultinjection.RouteAbort")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Percentage")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPercentage()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("HttpStatus")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetHttpStatus()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteDelay) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fault.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/faultinjection.RouteDelay")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Percentage")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPercentage()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetFixedDelay()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FixedDelay")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFixedDelay(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FixedDelay")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteFaults) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("fault.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/faultinjection.RouteFaults")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAbort()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Abort")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAbort(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Abort")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDelay()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Delay")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDelay(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Delay")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/graphql/graphql.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/graphql/graphql.pb.clone.go new file mode 100644 index 000000000..2d04d5442 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/graphql/graphql.pb.clone.go @@ -0,0 +1,56 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/graphql/graphql.proto + +package graphql + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *ServiceSpec) Clone() proto.Message { + var target *ServiceSpec + if m == nil { + return target + } + target = &ServiceSpec{} + + if h, ok := interface{}(m.GetEndpoint()).(clone.Cloner); ok { + target.Endpoint = h.Clone().(*ServiceSpec_Endpoint) + } else { + target.Endpoint = proto.Clone(m.GetEndpoint()).(*ServiceSpec_Endpoint) + } + + return target +} + +// Clone function +func (m *ServiceSpec_Endpoint) Clone() proto.Message { + var target *ServiceSpec_Endpoint + if m == nil { + return target + } + target = &ServiceSpec_Endpoint{} + + target.Url = m.GetUrl() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/graphql/graphql.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/graphql/graphql.pb.equal.go new file mode 100644 index 000000000..c1c0d29c8 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/graphql/graphql.pb.equal.go @@ -0,0 +1,88 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/graphql/graphql.proto + +package graphql + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *ServiceSpec) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ServiceSpec) + if !ok { + that2, ok := that.(ServiceSpec) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetEndpoint()).(equality.Equalizer); ok { + if !h.Equal(target.GetEndpoint()) { + return false + } + } else { + if !proto.Equal(m.GetEndpoint(), target.GetEndpoint()) { + return false + } + } + + return true +} + +// Equal function +func (m *ServiceSpec_Endpoint) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ServiceSpec_Endpoint) + if !ok { + that2, ok := that.(ServiceSpec_Endpoint) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetUrl(), target.GetUrl()) != 0 { + return false + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/options/graphql/graphql.pb.go b/pkg/api/gloo.solo.io/v1/options/graphql/graphql.pb.go new file mode 100644 index 000000000..807d1e917 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/graphql/graphql.pb.go @@ -0,0 +1,166 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/graphql/graphql.proto + +package graphql + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type ServiceSpec struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ServiceSpec) Reset() { + *x = ServiceSpec{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ServiceSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ServiceSpec) ProtoMessage() {} + +func (x *ServiceSpec) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ServiceSpec.ProtoReflect.Descriptor instead. +func (*ServiceSpec) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_rawDescGZIP(), []int{0} +} + +type ServiceSpec_Endpoint struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ServiceSpec_Endpoint) Reset() { + *x = ServiceSpec_Endpoint{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ServiceSpec_Endpoint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ServiceSpec_Endpoint) ProtoMessage() {} + +func (x *ServiceSpec_Endpoint) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ServiceSpec_Endpoint.ProtoReflect.Descriptor instead. +func (*ServiceSpec_Endpoint) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_rawDescGZIP(), []int{0, 0} +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_rawDesc = string([]byte{ + 0x0a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x2f, + 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x22, 0x34, 0x0a, 0x0b, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x1a, 0x15, 0x0a, 0x08, 0x45, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x03, 0x75, 0x72, + 0x6c, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x42, 0x46, 0x5a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_goTypes = []any{ + (*ServiceSpec)(nil), // 0: graphql.options.gloo.solo.io.ServiceSpec + (*ServiceSpec_Endpoint)(nil), // 1: graphql.options.gloo.solo.io.ServiceSpec.Endpoint +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_init() } +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_rawDesc)), + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_graphql_graphql_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/graphql/graphql.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/graphql/graphql.pb.hash.go new file mode 100644 index 000000000..485c52933 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/graphql/graphql.pb.hash.go @@ -0,0 +1,90 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/graphql/graphql.proto + +package graphql + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ServiceSpec) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/graphql.ServiceSpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetEndpoint()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Endpoint")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEndpoint(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Endpoint")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ServiceSpec_Endpoint) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/graphql.ServiceSpec_Endpoint")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetUrl())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/graphql/graphql.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/graphql/graphql.pb.uniquehash.go new file mode 100644 index 000000000..71190a1e6 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/graphql/graphql.pb.uniquehash.go @@ -0,0 +1,93 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/graphql/graphql.proto + +package graphql + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ServiceSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/graphql.ServiceSpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetEndpoint()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Endpoint")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEndpoint(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Endpoint")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ServiceSpec_Endpoint) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/graphql.ServiceSpec_Endpoint")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Url")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUrl())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/grpc/grpc.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/grpc/grpc.pb.clone.go new file mode 100644 index 000000000..e95773db1 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/grpc/grpc.pb.clone.go @@ -0,0 +1,104 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/grpc/grpc.proto + +package grpc + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_transformation "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *ServiceSpec) Clone() proto.Message { + var target *ServiceSpec + if m == nil { + return target + } + target = &ServiceSpec{} + + if m.GetDescriptors() != nil { + target.Descriptors = make([]byte, len(m.GetDescriptors())) + copy(target.Descriptors, m.GetDescriptors()) + } + + if m.GetGrpcServices() != nil { + target.GrpcServices = make([]*ServiceSpec_GrpcService, len(m.GetGrpcServices())) + for idx, v := range m.GetGrpcServices() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.GrpcServices[idx] = h.Clone().(*ServiceSpec_GrpcService) + } else { + target.GrpcServices[idx] = proto.Clone(v).(*ServiceSpec_GrpcService) + } + + } + } + + return target +} + +// Clone function +func (m *DestinationSpec) Clone() proto.Message { + var target *DestinationSpec + if m == nil { + return target + } + target = &DestinationSpec{} + + target.Package = m.GetPackage() + + target.Service = m.GetService() + + target.Function = m.GetFunction() + + if h, ok := interface{}(m.GetParameters()).(clone.Cloner); ok { + target.Parameters = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_transformation.Parameters) + } else { + target.Parameters = proto.Clone(m.GetParameters()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_transformation.Parameters) + } + + return target +} + +// Clone function +func (m *ServiceSpec_GrpcService) Clone() proto.Message { + var target *ServiceSpec_GrpcService + if m == nil { + return target + } + target = &ServiceSpec_GrpcService{} + + target.PackageName = m.GetPackageName() + + target.ServiceName = m.GetServiceName() + + if m.GetFunctionNames() != nil { + target.FunctionNames = make([]string, len(m.GetFunctionNames())) + for idx, v := range m.GetFunctionNames() { + + target.FunctionNames[idx] = v + + } + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/grpc/grpc.pb.go b/pkg/api/gloo.solo.io/v1/options/grpc/grpc.pb.go index e604a18d6..4eb12bcbf 100644 --- a/pkg/api/gloo.solo.io/v1/options/grpc/grpc.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/grpc/grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/grpc/grpc.proto @@ -9,8 +9,8 @@ package grpc import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" transformation "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -24,35 +24,28 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Service spec describing GRPC upstreams. This will usually be filled // automatically via function discovery (if the upstream supports reflection). // If your upstream service is a GRPC service, use this service spec (an empty // spec is fine), to make sure that traffic to it is routed with http2. type ServiceSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Descriptors that contain information of the services listed below. // this is a serialized google.protobuf.FileDescriptorSet Descriptors []byte `protobuf:"bytes,1,opt,name=descriptors,proto3" json:"descriptors,omitempty"` // List of services used by this upstream. For a grpc upstream where you don't // need to use Gloo's function routing, this can be an empty list. These // services must be present in the descriptors. - GrpcServices []*ServiceSpec_GrpcService `protobuf:"bytes,2,rep,name=grpc_services,json=grpcServices,proto3" json:"grpc_services,omitempty"` + GrpcServices []*ServiceSpec_GrpcService `protobuf:"bytes,2,rep,name=grpc_services,json=grpcServices,proto3" json:"grpc_services,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ServiceSpec) Reset() { *x = ServiceSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ServiceSpec) String() string { @@ -63,7 +56,7 @@ func (*ServiceSpec) ProtoMessage() {} func (x *ServiceSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -94,10 +87,7 @@ func (x *ServiceSpec) GetGrpcServices() []*ServiceSpec_GrpcService { // This is only for upstream with Grpc service spec. type DestinationSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The proto package of the function. Package string `protobuf:"bytes,1,opt,name=package,proto3" json:"package,omitempty"` // The name of the service of the function. @@ -106,16 +96,16 @@ type DestinationSpec struct { Function string `protobuf:"bytes,3,opt,name=function,proto3" json:"function,omitempty"` // Parameters describe how to extract the function parameters from the // request. - Parameters *transformation.Parameters `protobuf:"bytes,4,opt,name=parameters,proto3" json:"parameters,omitempty"` + Parameters *transformation.Parameters `protobuf:"bytes,4,opt,name=parameters,proto3" json:"parameters,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DestinationSpec) Reset() { *x = DestinationSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DestinationSpec) String() string { @@ -126,7 +116,7 @@ func (*DestinationSpec) ProtoMessage() {} func (x *DestinationSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -171,25 +161,22 @@ func (x *DestinationSpec) GetParameters() *transformation.Parameters { // Describes a grpc service type ServiceSpec_GrpcService struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The package of this service. PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` // The service name of this service. ServiceName string `protobuf:"bytes,2,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` // The functions available in this service. FunctionNames []string `protobuf:"bytes,3,rep,name=function_names,json=functionNames,proto3" json:"function_names,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ServiceSpec_GrpcService) Reset() { *x = ServiceSpec_GrpcService{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ServiceSpec_GrpcService) String() string { @@ -200,7 +187,7 @@ func (*ServiceSpec_GrpcService) ProtoMessage() {} func (x *ServiceSpec_GrpcService) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -238,7 +225,7 @@ func (x *ServiceSpec_GrpcService) GetFunctionNames() []string { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_rawDesc = string([]byte{ 0x0a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -279,28 +266,29 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_r 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x70, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x42, 0x4b, 0x5a, 0x41, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, - 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63, 0xc0, 0xf5, - 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x42, 0x4f, 0xb8, 0xf5, 0x04, 0x01, 0xc0, + 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_goTypes = []any{ (*ServiceSpec)(nil), // 0: grpc.options.gloo.solo.io.ServiceSpec (*DestinationSpec)(nil), // 1: grpc.options.gloo.solo.io.DestinationSpec (*ServiceSpec_GrpcService)(nil), // 2: grpc.options.gloo.solo.io.ServiceSpec.GrpcService @@ -321,49 +309,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_ if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ServiceSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DestinationSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ServiceSpec_GrpcService); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_rawDesc)), NumEnums: 0, NumMessages: 3, NumExtensions: 0, @@ -374,7 +324,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_ MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_grpc_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/grpc/grpc.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/grpc/grpc.pb.hash.go index 81041f8bb..8cbc7465b 100644 --- a/pkg/api/gloo.solo.io/v1/options/grpc/grpc.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/grpc/grpc.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ServiceSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -45,14 +49,20 @@ func (m *ServiceSpec) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetGrpcServices() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -64,6 +74,10 @@ func (m *ServiceSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *DestinationSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -89,14 +103,20 @@ func (m *DestinationSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetParameters()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Parameters")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetParameters(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetParameters(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Parameters")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -106,6 +126,10 @@ func (m *DestinationSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ServiceSpec_GrpcService) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/v1/options/grpc/grpc.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/grpc/grpc.pb.uniquehash.go new file mode 100644 index 000000000..3164f5bda --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/grpc/grpc.pb.uniquehash.go @@ -0,0 +1,194 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/grpc/grpc.proto + +package grpc + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ServiceSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("grpc.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/grpc.ServiceSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Descriptors")); err != nil { + return 0, err + } + if _, err = hasher.Write(m.GetDescriptors()); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("GrpcServices")); err != nil { + return 0, err + } + for i, v := range m.GetGrpcServices() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DestinationSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("grpc.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/grpc.DestinationSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Package")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPackage())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Service")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetService())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Function")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetFunction())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetParameters()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Parameters")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetParameters(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Parameters")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ServiceSpec_GrpcService) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("grpc.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/grpc.ServiceSpec_GrpcService")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("PackageName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPackageName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ServiceName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetServiceName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("FunctionNames")); err != nil { + return 0, err + } + for i, v := range m.GetFunctionNames() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/grpc_json/grpc_json.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/grpc_json/grpc_json.pb.clone.go new file mode 100644 index 000000000..cd6c79d1b --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/grpc_json/grpc_json.pb.clone.go @@ -0,0 +1,145 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/grpc_json/grpc_json.proto + +package grpc_json + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *GrpcJsonTranscoder) Clone() proto.Message { + var target *GrpcJsonTranscoder + if m == nil { + return target + } + target = &GrpcJsonTranscoder{} + + if m.GetServices() != nil { + target.Services = make([]string, len(m.GetServices())) + for idx, v := range m.GetServices() { + + target.Services[idx] = v + + } + } + + if h, ok := interface{}(m.GetPrintOptions()).(clone.Cloner); ok { + target.PrintOptions = h.Clone().(*GrpcJsonTranscoder_PrintOptions) + } else { + target.PrintOptions = proto.Clone(m.GetPrintOptions()).(*GrpcJsonTranscoder_PrintOptions) + } + + target.MatchIncomingRequestRoute = m.GetMatchIncomingRequestRoute() + + if m.GetIgnoredQueryParameters() != nil { + target.IgnoredQueryParameters = make([]string, len(m.GetIgnoredQueryParameters())) + for idx, v := range m.GetIgnoredQueryParameters() { + + target.IgnoredQueryParameters[idx] = v + + } + } + + target.AutoMapping = m.GetAutoMapping() + + target.IgnoreUnknownQueryParameters = m.GetIgnoreUnknownQueryParameters() + + target.ConvertGrpcStatus = m.GetConvertGrpcStatus() + + switch m.DescriptorSet.(type) { + + case *GrpcJsonTranscoder_ProtoDescriptor: + + target.DescriptorSet = &GrpcJsonTranscoder_ProtoDescriptor{ + ProtoDescriptor: m.GetProtoDescriptor(), + } + + case *GrpcJsonTranscoder_ProtoDescriptorBin: + + if m.GetProtoDescriptorBin() != nil { + newArr := make([]byte, len(m.GetProtoDescriptorBin())) + copy(newArr, m.GetProtoDescriptorBin()) + target.DescriptorSet = &GrpcJsonTranscoder_ProtoDescriptorBin{ + ProtoDescriptorBin: newArr, + } + } else { + target.DescriptorSet = &GrpcJsonTranscoder_ProtoDescriptorBin{ + ProtoDescriptorBin: nil, + } + } + + case *GrpcJsonTranscoder_ProtoDescriptorConfigMap: + + if h, ok := interface{}(m.GetProtoDescriptorConfigMap()).(clone.Cloner); ok { + target.DescriptorSet = &GrpcJsonTranscoder_ProtoDescriptorConfigMap{ + ProtoDescriptorConfigMap: h.Clone().(*GrpcJsonTranscoder_DescriptorConfigMap), + } + } else { + target.DescriptorSet = &GrpcJsonTranscoder_ProtoDescriptorConfigMap{ + ProtoDescriptorConfigMap: proto.Clone(m.GetProtoDescriptorConfigMap()).(*GrpcJsonTranscoder_DescriptorConfigMap), + } + } + + } + + return target +} + +// Clone function +func (m *GrpcJsonTranscoder_PrintOptions) Clone() proto.Message { + var target *GrpcJsonTranscoder_PrintOptions + if m == nil { + return target + } + target = &GrpcJsonTranscoder_PrintOptions{} + + target.AddWhitespace = m.GetAddWhitespace() + + target.AlwaysPrintPrimitiveFields = m.GetAlwaysPrintPrimitiveFields() + + target.AlwaysPrintEnumsAsInts = m.GetAlwaysPrintEnumsAsInts() + + target.PreserveProtoFieldNames = m.GetPreserveProtoFieldNames() + + return target +} + +// Clone function +func (m *GrpcJsonTranscoder_DescriptorConfigMap) Clone() proto.Message { + var target *GrpcJsonTranscoder_DescriptorConfigMap + if m == nil { + return target + } + target = &GrpcJsonTranscoder_DescriptorConfigMap{} + + if h, ok := interface{}(m.GetConfigMapRef()).(clone.Cloner); ok { + target.ConfigMapRef = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.ConfigMapRef = proto.Clone(m.GetConfigMapRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + target.Key = m.GetKey() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/grpc_json/grpc_json.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/grpc_json/grpc_json.pb.equal.go index bf6e909fb..931951e6d 100644 --- a/pkg/api/gloo.solo.io/v1/options/grpc_json/grpc_json.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/options/grpc_json/grpc_json.pb.equal.go @@ -97,17 +97,43 @@ func (m *GrpcJsonTranscoder) Equal(that interface{}) bool { switch m.DescriptorSet.(type) { case *GrpcJsonTranscoder_ProtoDescriptor: + if _, ok := target.DescriptorSet.(*GrpcJsonTranscoder_ProtoDescriptor); !ok { + return false + } if strings.Compare(m.GetProtoDescriptor(), target.GetProtoDescriptor()) != 0 { return false } case *GrpcJsonTranscoder_ProtoDescriptorBin: + if _, ok := target.DescriptorSet.(*GrpcJsonTranscoder_ProtoDescriptorBin); !ok { + return false + } if bytes.Compare(m.GetProtoDescriptorBin(), target.GetProtoDescriptorBin()) != 0 { return false } + case *GrpcJsonTranscoder_ProtoDescriptorConfigMap: + if _, ok := target.DescriptorSet.(*GrpcJsonTranscoder_ProtoDescriptorConfigMap); !ok { + return false + } + + if h, ok := interface{}(m.GetProtoDescriptorConfigMap()).(equality.Equalizer); ok { + if !h.Equal(target.GetProtoDescriptorConfigMap()) { + return false + } + } else { + if !proto.Equal(m.GetProtoDescriptorConfigMap(), target.GetProtoDescriptorConfigMap()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.DescriptorSet != target.DescriptorSet { + return false + } } return true @@ -152,3 +178,41 @@ func (m *GrpcJsonTranscoder_PrintOptions) Equal(that interface{}) bool { return true } + +// Equal function +func (m *GrpcJsonTranscoder_DescriptorConfigMap) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*GrpcJsonTranscoder_DescriptorConfigMap) + if !ok { + that2, ok := that.(GrpcJsonTranscoder_DescriptorConfigMap) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetConfigMapRef()).(equality.Equalizer); ok { + if !h.Equal(target.GetConfigMapRef()) { + return false + } + } else { + if !proto.Equal(m.GetConfigMapRef(), target.GetConfigMapRef()) { + return false + } + } + + if strings.Compare(m.GetKey(), target.GetKey()) != 0 { + return false + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/options/grpc_json/grpc_json.pb.go b/pkg/api/gloo.solo.io/v1/options/grpc_json/grpc_json.pb.go index f82fb6a11..e6168c843 100644 --- a/pkg/api/gloo.solo.io/v1/options/grpc_json/grpc_json.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/grpc_json/grpc_json.pb.go @@ -2,7 +2,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/grpc_json/grpc_json.proto @@ -11,10 +11,11 @@ package grpc_json import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" + core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) @@ -26,33 +27,28 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // [#next-free-field: 10] type GrpcJsonTranscoder struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to DescriptorSet: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to DescriptorSet: + // // *GrpcJsonTranscoder_ProtoDescriptor // *GrpcJsonTranscoder_ProtoDescriptorBin + // *GrpcJsonTranscoder_ProtoDescriptorConfigMap DescriptorSet isGrpcJsonTranscoder_DescriptorSet `protobuf_oneof:"descriptor_set"` // A list of strings that // supplies the fully qualified service names (i.e. "package_name.service_name") that - // the transcoder will translate. If the service name doesn't exist in ``proto_descriptor``, - // Envoy will fail at startup. The ``proto_descriptor`` may contain more services than + // the transcoder will translate. If the service name doesn't exist in `proto_descriptor`, + // Envoy will fail at startup. The `proto_descriptor` may contain more services than // the service names specified here, but they won't be translated. Services []string `protobuf:"bytes,2,rep,name=services,proto3" json:"services,omitempty"` // Control options for response JSON. These options are passed directly to - // `JsonPrintOptions `_. + // [JsonPrintOptions](https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.util.json_util#JsonPrintOptions). PrintOptions *GrpcJsonTranscoder_PrintOptions `protobuf:"bytes,3,opt,name=print_options,json=printOptions,proto3" json:"print_options,omitempty"` - // Whether to keep the incoming request route after the outgoing headers have been transformed to - // the match the upstream gRPC service. Note: This means that routes for gRPC services that are - // not transcoded cannot be used in combination with *match_incoming_request_route*. + // Set this value to true to keep the incoming request route after the outgoing headers are transformed to match the upstream gRPC service. + // Note that you cannot set this value to true with routes for gRPC services that are not transcoded. + // When set to false, Envoy does not match against the incoming request path. + // For more information, see the Envoy docs . MatchIncomingRequestRoute bool `protobuf:"varint,5,opt,name=match_incoming_request_route,json=matchIncomingRequestRoute,proto3" json:"match_incoming_request_route,omitempty"` // A list of query parameters to be ignored for transcoding method mapping. // By default, the transcoder filter will not transcode a request if there are any @@ -62,88 +58,88 @@ type GrpcJsonTranscoder struct { // // .. code-block:: proto // - // service Bookstore { - // rpc GetShelf(GetShelfRequest) returns (Shelf) { - // option (google.api.http) = { - // get: "/shelves/{shelf}" - // }; - // } - // } + // service Bookstore { + // rpc GetShelf(GetShelfRequest) returns (Shelf) { + // option (google.api.http) = { + // get: "/shelves/{shelf}" + // }; + // } + // } // - // message GetShelfRequest { - // int64 shelf = 1; - // } + // message GetShelfRequest { + // int64 shelf = 1; + // } // - // message Shelf {} + // message Shelf {} // - // The request ``/shelves/100?foo=bar`` will not be mapped to ``GetShelf``` because variable - // binding for ``foo`` is not defined. Adding ``foo`` to ``ignored_query_parameters`` will allow - // the same request to be mapped to ``GetShelf``. + // The request `/shelves/100?foo=bar` will not be mapped to `GetShelf` because variable + // binding for `foo` is not defined. Adding `foo` to `ignored_query_parameters` will allow + // the same request to be mapped to `GetShelf`. IgnoredQueryParameters []string `protobuf:"bytes,6,rep,name=ignored_query_parameters,json=ignoredQueryParameters,proto3" json:"ignored_query_parameters,omitempty"` - // Whether to route methods without the ``google.api.http`` option. + // Whether to route methods without the `google.api.http` option. // // Example : // // .. code-block:: proto // - // package bookstore; + // package bookstore; // - // service Bookstore { - // rpc GetShelf(GetShelfRequest) returns (Shelf) {} - // } + // service Bookstore { + // rpc GetShelf(GetShelfRequest) returns (Shelf) {} + // } // - // message GetShelfRequest { - // int64 shelf = 1; - // } + // message GetShelfRequest { + // int64 shelf = 1; + // } // - // message Shelf {} + // message Shelf {} // - // The client could ``post`` a json body ``{"shelf": 1234}`` with the path of - // ``/bookstore.Bookstore/GetShelfRequest`` to call ``GetShelfRequest``. + // The client could `post` a json body `{"shelf": 1234}` with the path of + // `/bookstore.Bookstore/GetShelfRequest` to call `GetShelfRequest`. AutoMapping bool `protobuf:"varint,7,opt,name=auto_mapping,json=autoMapping,proto3" json:"auto_mapping,omitempty"` // Whether to ignore query parameters that cannot be mapped to a corresponding // protobuf field. Use this if you cannot control the query parameters and do - // not know them beforehand. Otherwise use ``ignored_query_parameters``. + // not know them beforehand. Otherwise use `ignored_query_parameters`. // Defaults to false. IgnoreUnknownQueryParameters bool `protobuf:"varint,8,opt,name=ignore_unknown_query_parameters,json=ignoreUnknownQueryParameters,proto3" json:"ignore_unknown_query_parameters,omitempty"` // Whether to convert gRPC status headers to JSON. - // When trailer indicates a gRPC error and there was no HTTP body, take ``google.rpc.Status`` - // from the ``grpc-status-details-bin`` header and use it as JSON body. - // If there was no such header, make ``google.rpc.Status`` out of the ``grpc-status`` and - // ``grpc-message`` headers. - // The error details types must be present in the ``proto_descriptor``. + // When trailer indicates a gRPC error and there was no HTTP body, take `google.rpc.Status` + // from the `grpc-status-details-bin` header and use it as JSON body. + // If there was no such header, make `google.rpc.Status` out of the `grpc-status` and + // `grpc-message` headers. + // The error details types must be present in the `proto_descriptor`. // // For example, if an upstream server replies with headers: // // .. code-block:: none // - // grpc-status: 5 - // grpc-status-details-bin: - // CAUaMwoqdHlwZS5nb29nbGVhcGlzLmNvbS9nb29nbGUucnBjLlJlcXVlc3RJbmZvEgUKA3ItMQ + // grpc-status: 5 + // grpc-status-details-bin: + // CAUaMwoqdHlwZS5nb29nbGVhcGlzLmNvbS9nb29nbGUucnBjLlJlcXVlc3RJbmZvEgUKA3ItMQ // - // The ``grpc-status-details-bin`` header contains a base64-encoded protobuf message - // ``google.rpc.Status``. It will be transcoded into: + // The `grpc-status-details-bin` header contains a base64-encoded protobuf message + // `google.rpc.Status`. It will be transcoded into: // // .. code-block:: none // - // HTTP/1.1 404 Not Found - // content-type: application/json + // HTTP/1.1 404 Not Found + // content-type: application/json // - // {"code":5,"details":[{"@type":"type.googleapis.com/google.rpc.RequestInfo","requestId":"r-1"}]} + // {"code":5,"details":[{"@type":"type.googleapis.com/google.rpc.RequestInfo","requestId":"r-1"}]} // - // In order to transcode the message, the ``google.rpc.RequestInfo`` type from - // the ``google/rpc/error_details.proto`` should be included in the configured - // :ref:`proto descriptor set `. + // In order to transcode the message, the `google.rpc.RequestInfo` type from + // the `google/rpc/error_details.proto` should be included in the configured + // proto descriptor set. ConvertGrpcStatus bool `protobuf:"varint,9,opt,name=convert_grpc_status,json=convertGrpcStatus,proto3" json:"convert_grpc_status,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GrpcJsonTranscoder) Reset() { *x = GrpcJsonTranscoder{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GrpcJsonTranscoder) String() string { @@ -154,7 +150,7 @@ func (*GrpcJsonTranscoder) ProtoMessage() {} func (x *GrpcJsonTranscoder) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -169,23 +165,36 @@ func (*GrpcJsonTranscoder) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_rawDescGZIP(), []int{0} } -func (m *GrpcJsonTranscoder) GetDescriptorSet() isGrpcJsonTranscoder_DescriptorSet { - if m != nil { - return m.DescriptorSet +func (x *GrpcJsonTranscoder) GetDescriptorSet() isGrpcJsonTranscoder_DescriptorSet { + if x != nil { + return x.DescriptorSet } return nil } func (x *GrpcJsonTranscoder) GetProtoDescriptor() string { - if x, ok := x.GetDescriptorSet().(*GrpcJsonTranscoder_ProtoDescriptor); ok { - return x.ProtoDescriptor + if x != nil { + if x, ok := x.DescriptorSet.(*GrpcJsonTranscoder_ProtoDescriptor); ok { + return x.ProtoDescriptor + } } return "" } func (x *GrpcJsonTranscoder) GetProtoDescriptorBin() []byte { - if x, ok := x.GetDescriptorSet().(*GrpcJsonTranscoder_ProtoDescriptorBin); ok { - return x.ProtoDescriptorBin + if x != nil { + if x, ok := x.DescriptorSet.(*GrpcJsonTranscoder_ProtoDescriptorBin); ok { + return x.ProtoDescriptorBin + } + } + return nil +} + +func (x *GrpcJsonTranscoder) GetProtoDescriptorConfigMap() *GrpcJsonTranscoder_DescriptorConfigMap { + if x != nil { + if x, ok := x.DescriptorSet.(*GrpcJsonTranscoder_ProtoDescriptorConfigMap); ok { + return x.ProtoDescriptorConfigMap + } } return nil } @@ -244,29 +253,32 @@ type isGrpcJsonTranscoder_DescriptorSet interface { } type GrpcJsonTranscoder_ProtoDescriptor struct { - // Supplies the filename of - // :ref:`the proto descriptor set ` for the gRPC - // services. + // Supplies the filename of the [proto descriptor set](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/grpc_json_transcoder_filter#config-grpc-json-generate-proto-descriptor-set) + // for the gRPC services. ProtoDescriptor string `protobuf:"bytes,1,opt,name=proto_descriptor,json=protoDescriptor,proto3,oneof"` } type GrpcJsonTranscoder_ProtoDescriptorBin struct { - // Supplies the binary content of - // :ref:`the proto descriptor set ` for the gRPC - // services. - // Note: in yaml, this must be provided as a base64 standard encoded string; yaml can't handle binary bytes + // Supplies the binary content of the [proto descriptor set](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/grpc_json_transcoder_filter#config-grpc-json-generate-proto-descriptor-set) + // for the gRPC services. + // Note: in yaml, this must be provided as a base64 standard encoded string; yaml can't handle binary bytes. ProtoDescriptorBin []byte `protobuf:"bytes,4,opt,name=proto_descriptor_bin,json=protoDescriptorBin,proto3,oneof"` } +type GrpcJsonTranscoder_ProtoDescriptorConfigMap struct { + // A reference to a ConfigMap containing the base64-encoded binary content of the [proto descriptor set](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/grpc_json_transcoder_filter#config-grpc-json-generate-proto-descriptor-set) + // for the gRPC services. + ProtoDescriptorConfigMap *GrpcJsonTranscoder_DescriptorConfigMap `protobuf:"bytes,10,opt,name=proto_descriptor_config_map,json=protoDescriptorConfigMap,proto3,oneof"` +} + func (*GrpcJsonTranscoder_ProtoDescriptor) isGrpcJsonTranscoder_DescriptorSet() {} func (*GrpcJsonTranscoder_ProtoDescriptorBin) isGrpcJsonTranscoder_DescriptorSet() {} -type GrpcJsonTranscoder_PrintOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (*GrpcJsonTranscoder_ProtoDescriptorConfigMap) isGrpcJsonTranscoder_DescriptorSet() {} +type GrpcJsonTranscoder_PrintOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` // Whether to add spaces, line breaks and indentation to make the JSON // output easy to read. Defaults to false. AddWhitespace bool `protobuf:"varint,1,opt,name=add_whitespace,json=addWhitespace,proto3" json:"add_whitespace,omitempty"` @@ -280,18 +292,18 @@ type GrpcJsonTranscoder_PrintOptions struct { // as strings. Defaults to false. AlwaysPrintEnumsAsInts bool `protobuf:"varint,3,opt,name=always_print_enums_as_ints,json=alwaysPrintEnumsAsInts,proto3" json:"always_print_enums_as_ints,omitempty"` // Whether to preserve proto field names. By default protobuf will - // generate JSON field names using the ``json_name`` option, or lower camel case, + // generate JSON field names using the `json_name` option, or lower camel case, // in that order. Setting this flag will preserve the original field names. Defaults to false. PreserveProtoFieldNames bool `protobuf:"varint,4,opt,name=preserve_proto_field_names,json=preserveProtoFieldNames,proto3" json:"preserve_proto_field_names,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GrpcJsonTranscoder_PrintOptions) Reset() { *x = GrpcJsonTranscoder_PrintOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GrpcJsonTranscoder_PrintOptions) String() string { @@ -302,7 +314,7 @@ func (*GrpcJsonTranscoder_PrintOptions) ProtoMessage() {} func (x *GrpcJsonTranscoder_PrintOptions) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -345,9 +357,67 @@ func (x *GrpcJsonTranscoder_PrintOptions) GetPreserveProtoFieldNames() bool { return false } +// Allows the user to store the binary content of a [proto descriptor set](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/grpc_json_transcoder_filter#config-grpc-json-generate-proto-descriptor-set) in a ConfigMap. +type GrpcJsonTranscoder_DescriptorConfigMap struct { + state protoimpl.MessageState `protogen:"open.v1"` + // A reference to a ConfigMap containing the base64-encoded binary content of a proto descriptor set. + // The ConfigMap must be in a namespace watched by Gloo Edge. + ConfigMapRef *core.ResourceRef `protobuf:"bytes,1,opt,name=config_map_ref,json=configMapRef,proto3" json:"config_map_ref,omitempty"` + // The ConfigMap data key whose value contains the proto descriptor set. + // If the ConfigMap contains multiple key-value pairs, this field is required. + // If the ConfigMap contains exactly one key-value pair, this field is optional. + Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GrpcJsonTranscoder_DescriptorConfigMap) Reset() { + *x = GrpcJsonTranscoder_DescriptorConfigMap{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GrpcJsonTranscoder_DescriptorConfigMap) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GrpcJsonTranscoder_DescriptorConfigMap) ProtoMessage() {} + +func (x *GrpcJsonTranscoder_DescriptorConfigMap) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GrpcJsonTranscoder_DescriptorConfigMap.ProtoReflect.Descriptor instead. +func (*GrpcJsonTranscoder_DescriptorConfigMap) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *GrpcJsonTranscoder_DescriptorConfigMap) GetConfigMapRef() *core.ResourceRef { + if x != nil { + return x.ConfigMapRef + } + return nil +} + +func (x *GrpcJsonTranscoder_DescriptorConfigMap) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_rawDesc = string([]byte{ 0x0a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -355,91 +425,114 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_js 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa1, - 0x06, 0x0a, 0x12, 0x47, 0x72, 0x70, 0x63, 0x4a, 0x73, 0x6f, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x63, 0x6f, 0x64, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x6f, 0x72, 0x12, 0x32, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x62, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, - 0x48, 0x00, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x6f, 0x72, 0x42, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, - 0x08, 0x01, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x64, 0x0a, 0x0d, - 0x70, 0x72, 0x69, 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x2e, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4a, 0x73, 0x6f, 0x6e, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x3f, 0x0a, 0x1c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x6e, 0x63, 0x6f, - 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x49, - 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x21, 0x0a, - 0x0c, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, - 0x12, 0x45, 0x0a, 0x1f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, - 0x77, 0x6e, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x69, 0x67, 0x6e, 0x6f, 0x72, - 0x65, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x74, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x47, 0x72, 0x70, - 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0xf1, 0x01, 0x0a, 0x0c, 0x50, 0x72, 0x69, 0x6e, - 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x64, 0x64, 0x5f, - 0x77, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0d, 0x61, 0x64, 0x64, 0x57, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x41, 0x0a, 0x1d, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x5f, - 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x50, 0x72, - 0x69, 0x6e, 0x74, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x73, 0x12, 0x3a, 0x0a, 0x1a, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x70, 0x72, 0x69, - 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x5f, 0x61, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x50, 0x72, - 0x69, 0x6e, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x41, 0x73, 0x49, 0x6e, 0x74, 0x73, 0x12, 0x3b, - 0x0a, 0x1a, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x17, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x15, 0x0a, 0x0e, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x12, 0x03, 0xf8, - 0x42, 0x01, 0x42, 0x50, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, - 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0xc0, 0xf5, 0x04, 0x01, - 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x6f, 0x1a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x95, 0x08, 0x0a, + 0x12, 0x47, 0x72, 0x70, 0x63, 0x4a, 0x73, 0x6f, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, + 0x64, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, + 0x12, 0x32, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x62, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, + 0x52, 0x12, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, + 0x72, 0x42, 0x69, 0x6e, 0x12, 0x87, 0x01, 0x0a, 0x1b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, + 0x4a, 0x73, 0x6f, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x2e, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, + 0x61, 0x70, 0x48, 0x00, 0x52, 0x18, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x24, + 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x12, 0x64, 0x0a, 0x0d, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x5f, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x72, 0x70, + 0x63, 0x4a, 0x73, 0x6f, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x2e, + 0x50, 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, 0x0a, 0x1c, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x5f, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x19, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x69, + 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x69, + 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6d, 0x61, + 0x70, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x75, 0x74, + 0x6f, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x45, 0x0a, 0x1f, 0x69, 0x67, 0x6e, 0x6f, + 0x72, 0x65, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x1c, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, + 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x74, 0x47, 0x72, 0x70, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, + 0xf1, 0x01, 0x0a, 0x0c, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x64, 0x64, 0x5f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x61, 0x64, 0x64, 0x57, 0x68, 0x69, + 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x41, 0x0a, 0x1d, 0x61, 0x6c, 0x77, 0x61, 0x79, + 0x73, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, + 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x50, 0x72, 0x69, 0x6d, 0x69, + 0x74, 0x69, 0x76, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x3a, 0x0a, 0x1a, 0x61, 0x6c, + 0x77, 0x61, 0x79, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x73, + 0x5f, 0x61, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, + 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x73, + 0x41, 0x73, 0x49, 0x6e, 0x74, 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x70, 0x72, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x1a, 0x68, 0x0a, 0x13, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, + 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x3f, 0x0a, 0x0e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x0c, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x66, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x15, 0x0a, + 0x0e, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x12, + 0x03, 0xf8, 0x42, 0x01, 0x42, 0x54, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, + 0x04, 0x01, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_goTypes = []interface{}{ - (*GrpcJsonTranscoder)(nil), // 0: grpc_json.options.gloo.solo.io.GrpcJsonTranscoder - (*GrpcJsonTranscoder_PrintOptions)(nil), // 1: grpc_json.options.gloo.solo.io.GrpcJsonTranscoder.PrintOptions +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_goTypes = []any{ + (*GrpcJsonTranscoder)(nil), // 0: grpc_json.options.gloo.solo.io.GrpcJsonTranscoder + (*GrpcJsonTranscoder_PrintOptions)(nil), // 1: grpc_json.options.gloo.solo.io.GrpcJsonTranscoder.PrintOptions + (*GrpcJsonTranscoder_DescriptorConfigMap)(nil), // 2: grpc_json.options.gloo.solo.io.GrpcJsonTranscoder.DescriptorConfigMap + (*core.ResourceRef)(nil), // 3: core.solo.io.ResourceRef } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_depIdxs = []int32{ - 1, // 0: grpc_json.options.gloo.solo.io.GrpcJsonTranscoder.print_options:type_name -> grpc_json.options.gloo.solo.io.GrpcJsonTranscoder.PrintOptions - 1, // [1:1] is the sub-list for method output_type - 1, // [1:1] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name + 2, // 0: grpc_json.options.gloo.solo.io.GrpcJsonTranscoder.proto_descriptor_config_map:type_name -> grpc_json.options.gloo.solo.io.GrpcJsonTranscoder.DescriptorConfigMap + 1, // 1: grpc_json.options.gloo.solo.io.GrpcJsonTranscoder.print_options:type_name -> grpc_json.options.gloo.solo.io.GrpcJsonTranscoder.PrintOptions + 3, // 2: grpc_json.options.gloo.solo.io.GrpcJsonTranscoder.DescriptorConfigMap.config_map_ref:type_name -> core.solo.io.ResourceRef + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name } func init() { @@ -449,43 +542,18 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_j if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GrpcJsonTranscoder); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GrpcJsonTranscoder_PrintOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_msgTypes[0].OneofWrappers = []any{ (*GrpcJsonTranscoder_ProtoDescriptor)(nil), (*GrpcJsonTranscoder_ProtoDescriptorBin)(nil), + (*GrpcJsonTranscoder_ProtoDescriptorConfigMap)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_rawDesc)), NumEnums: 0, - NumMessages: 2, + NumMessages: 3, NumExtensions: 0, NumServices: 0, }, @@ -494,7 +562,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_j MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_json_grpc_json_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/grpc_json/grpc_json.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/grpc_json/grpc_json.pb.hash.go index 484568e00..5bdd376e8 100644 --- a/pkg/api/gloo.solo.io/v1/options/grpc_json/grpc_json.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/grpc_json/grpc_json.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GrpcJsonTranscoder) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -47,14 +51,20 @@ func (m *GrpcJsonTranscoder) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetPrintOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PrintOptions")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPrintOptions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPrintOptions(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PrintOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -102,12 +112,38 @@ func (m *GrpcJsonTranscoder) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + case *GrpcJsonTranscoder_ProtoDescriptorConfigMap: + + if h, ok := interface{}(m.GetProtoDescriptorConfigMap()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProtoDescriptorConfigMap")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProtoDescriptorConfigMap(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ProtoDescriptorConfigMap")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + } return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GrpcJsonTranscoder_PrintOptions) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -142,3 +178,47 @@ func (m *GrpcJsonTranscoder_PrintOptions) Hash(hasher hash.Hash64) (uint64, erro return hasher.Sum64(), nil } + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *GrpcJsonTranscoder_DescriptorConfigMap) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("grpc_json.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/grpc_json.GrpcJsonTranscoder_DescriptorConfigMap")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetConfigMapRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConfigMapRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConfigMapRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConfigMapRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/grpc_json/grpc_json.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/grpc_json/grpc_json.pb.uniquehash.go new file mode 100644 index 000000000..8e58f74c8 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/grpc_json/grpc_json.pb.uniquehash.go @@ -0,0 +1,274 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/grpc_json/grpc_json.proto + +package grpc_json + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcJsonTranscoder) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("grpc_json.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/grpc_json.GrpcJsonTranscoder")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Services")); err != nil { + return 0, err + } + for i, v := range m.GetServices() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetPrintOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PrintOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPrintOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PrintOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("MatchIncomingRequestRoute")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMatchIncomingRequestRoute()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("IgnoredQueryParameters")); err != nil { + return 0, err + } + for i, v := range m.GetIgnoredQueryParameters() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("AutoMapping")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAutoMapping()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("IgnoreUnknownQueryParameters")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetIgnoreUnknownQueryParameters()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ConvertGrpcStatus")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetConvertGrpcStatus()) + if err != nil { + return 0, err + } + + switch m.DescriptorSet.(type) { + + case *GrpcJsonTranscoder_ProtoDescriptor: + + if _, err = hasher.Write([]byte("ProtoDescriptor")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetProtoDescriptor())); err != nil { + return 0, err + } + + case *GrpcJsonTranscoder_ProtoDescriptorBin: + + if _, err = hasher.Write([]byte("ProtoDescriptorBin")); err != nil { + return 0, err + } + if _, err = hasher.Write(m.GetProtoDescriptorBin()); err != nil { + return 0, err + } + + case *GrpcJsonTranscoder_ProtoDescriptorConfigMap: + + if h, ok := interface{}(m.GetProtoDescriptorConfigMap()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProtoDescriptorConfigMap")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProtoDescriptorConfigMap(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ProtoDescriptorConfigMap")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcJsonTranscoder_PrintOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("grpc_json.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/grpc_json.GrpcJsonTranscoder_PrintOptions")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AddWhitespace")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAddWhitespace()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AlwaysPrintPrimitiveFields")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAlwaysPrintPrimitiveFields()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AlwaysPrintEnumsAsInts")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAlwaysPrintEnumsAsInts()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("PreserveProtoFieldNames")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPreserveProtoFieldNames()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcJsonTranscoder_DescriptorConfigMap) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("grpc_json.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/grpc_json.GrpcJsonTranscoder_DescriptorConfigMap")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetConfigMapRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConfigMapRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConfigMapRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConfigMapRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/grpc_web/grpc_web.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/grpc_web/grpc_web.pb.clone.go new file mode 100644 index 000000000..05a973a04 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/grpc_web/grpc_web.pb.clone.go @@ -0,0 +1,39 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/grpc_web/grpc_web.proto + +package grpc_web + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *GrpcWeb) Clone() proto.Message { + var target *GrpcWeb + if m == nil { + return target + } + target = &GrpcWeb{} + + target.Disable = m.GetDisable() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/grpc_web/grpc_web.pb.go b/pkg/api/gloo.solo.io/v1/options/grpc_web/grpc_web.pb.go index 58e31e70c..66136a0b5 100644 --- a/pkg/api/gloo.solo.io/v1/options/grpc_web/grpc_web.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/grpc_web/grpc_web.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/grpc_web/grpc_web.proto @@ -9,10 +9,9 @@ package grpc_web import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" - _ "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) @@ -24,27 +23,20 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // GrpcWeb support is enabled be default. Use this extension to disable it. type GrpcWeb struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Disable grpc web support. - Disable bool `protobuf:"varint,1,opt,name=disable,proto3" json:"disable,omitempty"` + Disable bool `protobuf:"varint,1,opt,name=disable,proto3" json:"disable,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GrpcWeb) Reset() { *x = GrpcWeb{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GrpcWeb) String() string { @@ -55,7 +47,7 @@ func (*GrpcWeb) ProtoMessage() {} func (x *GrpcWeb) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -79,7 +71,7 @@ func (x *GrpcWeb) GetDisable() bool { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_rawDesc = string([]byte{ 0x0a, 0x4d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -88,36 +80,31 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web 0x1d, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x77, 0x65, 0x62, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x55, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, - 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x23, 0x0a, 0x07, 0x47, 0x72, 0x70, - 0x63, 0x57, 0x65, 0x62, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x4f, - 0x5a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, - 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, - 0x72, 0x70, 0x63, 0x5f, 0x77, 0x65, 0x62, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x74, 0x6f, 0x22, 0x23, 0x0a, 0x07, 0x47, 0x72, 0x70, 0x63, 0x57, 0x65, 0x62, 0x12, 0x18, 0x0a, + 0x07, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x53, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, + 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x77, 0x65, 0x62, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_goTypes = []any{ (*GrpcWeb)(nil), // 0: grpc_web.options.gloo.solo.io.GrpcWeb } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_depIdxs = []int32{ @@ -135,25 +122,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_we if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GrpcWeb); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, @@ -164,7 +137,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_we MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_grpc_web_grpc_web_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/grpc_web/grpc_web.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/grpc_web/grpc_web.pb.hash.go index 0de2b1f89..b038eada8 100644 --- a/pkg/api/gloo.solo.io/v1/options/grpc_web/grpc_web.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/grpc_web/grpc_web.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GrpcWeb) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/v1/options/grpc_web/grpc_web.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/grpc_web/grpc_web.pb.uniquehash.go new file mode 100644 index 000000000..59936219e --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/grpc_web/grpc_web.pb.uniquehash.go @@ -0,0 +1,55 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/grpc_web/grpc_web.proto + +package grpc_web + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcWeb) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("grpc_web.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/grpc_web.GrpcWeb")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Disable")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDisable()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.clone.go new file mode 100644 index 000000000..5730bf19d --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.clone.go @@ -0,0 +1,411 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/hcm/hcm.proto + +package hcm + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_headers "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/headers" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_protocol "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/protocol" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_protocol_upgrade "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/protocol_upgrade" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_tracing "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tracing" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *HttpConnectionManagerSettings) Clone() proto.Message { + var target *HttpConnectionManagerSettings + if m == nil { + return target + } + target = &HttpConnectionManagerSettings{} + + if h, ok := interface{}(m.GetSkipXffAppend()).(clone.Cloner); ok { + target.SkipXffAppend = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.SkipXffAppend = proto.Clone(m.GetSkipXffAppend()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetVia()).(clone.Cloner); ok { + target.Via = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.Via = proto.Clone(m.GetVia()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + if h, ok := interface{}(m.GetXffNumTrustedHops()).(clone.Cloner); ok { + target.XffNumTrustedHops = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.XffNumTrustedHops = proto.Clone(m.GetXffNumTrustedHops()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetUseRemoteAddress()).(clone.Cloner); ok { + target.UseRemoteAddress = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.UseRemoteAddress = proto.Clone(m.GetUseRemoteAddress()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetGenerateRequestId()).(clone.Cloner); ok { + target.GenerateRequestId = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.GenerateRequestId = proto.Clone(m.GetGenerateRequestId()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetProxy_100Continue()).(clone.Cloner); ok { + target.Proxy_100Continue = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Proxy_100Continue = proto.Clone(m.GetProxy_100Continue()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetStreamIdleTimeout()).(clone.Cloner); ok { + target.StreamIdleTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.StreamIdleTimeout = proto.Clone(m.GetStreamIdleTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetIdleTimeout()).(clone.Cloner); ok { + target.IdleTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.IdleTimeout = proto.Clone(m.GetIdleTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetMaxRequestHeadersKb()).(clone.Cloner); ok { + target.MaxRequestHeadersKb = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxRequestHeadersKb = proto.Clone(m.GetMaxRequestHeadersKb()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetRequestTimeout()).(clone.Cloner); ok { + target.RequestTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.RequestTimeout = proto.Clone(m.GetRequestTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetRequestHeadersTimeout()).(clone.Cloner); ok { + target.RequestHeadersTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.RequestHeadersTimeout = proto.Clone(m.GetRequestHeadersTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetDrainTimeout()).(clone.Cloner); ok { + target.DrainTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.DrainTimeout = proto.Clone(m.GetDrainTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetDelayedCloseTimeout()).(clone.Cloner); ok { + target.DelayedCloseTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.DelayedCloseTimeout = proto.Clone(m.GetDelayedCloseTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetServerName()).(clone.Cloner); ok { + target.ServerName = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.ServerName = proto.Clone(m.GetServerName()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + if h, ok := interface{}(m.GetStripAnyHostPort()).(clone.Cloner); ok { + target.StripAnyHostPort = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.StripAnyHostPort = proto.Clone(m.GetStripAnyHostPort()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetAcceptHttp_10()).(clone.Cloner); ok { + target.AcceptHttp_10 = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.AcceptHttp_10 = proto.Clone(m.GetAcceptHttp_10()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetDefaultHostForHttp_10()).(clone.Cloner); ok { + target.DefaultHostForHttp_10 = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.DefaultHostForHttp_10 = proto.Clone(m.GetDefaultHostForHttp_10()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + if h, ok := interface{}(m.GetAllowChunkedLength()).(clone.Cloner); ok { + target.AllowChunkedLength = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.AllowChunkedLength = proto.Clone(m.GetAllowChunkedLength()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetEnableTrailers()).(clone.Cloner); ok { + target.EnableTrailers = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.EnableTrailers = proto.Clone(m.GetEnableTrailers()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetTracing()).(clone.Cloner); ok { + target.Tracing = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_tracing.ListenerTracingSettings) + } else { + target.Tracing = proto.Clone(m.GetTracing()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_tracing.ListenerTracingSettings) + } + + target.ForwardClientCertDetails = m.GetForwardClientCertDetails() + + if h, ok := interface{}(m.GetSetCurrentClientCertDetails()).(clone.Cloner); ok { + target.SetCurrentClientCertDetails = h.Clone().(*HttpConnectionManagerSettings_SetCurrentClientCertDetails) + } else { + target.SetCurrentClientCertDetails = proto.Clone(m.GetSetCurrentClientCertDetails()).(*HttpConnectionManagerSettings_SetCurrentClientCertDetails) + } + + if h, ok := interface{}(m.GetPreserveExternalRequestId()).(clone.Cloner); ok { + target.PreserveExternalRequestId = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.PreserveExternalRequestId = proto.Clone(m.GetPreserveExternalRequestId()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if m.GetUpgrades() != nil { + target.Upgrades = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_protocol_upgrade.ProtocolUpgradeConfig, len(m.GetUpgrades())) + for idx, v := range m.GetUpgrades() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Upgrades[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_protocol_upgrade.ProtocolUpgradeConfig) + } else { + target.Upgrades[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_protocol_upgrade.ProtocolUpgradeConfig) + } + + } + } + + if h, ok := interface{}(m.GetMaxConnectionDuration()).(clone.Cloner); ok { + target.MaxConnectionDuration = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.MaxConnectionDuration = proto.Clone(m.GetMaxConnectionDuration()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetMaxStreamDuration()).(clone.Cloner); ok { + target.MaxStreamDuration = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.MaxStreamDuration = proto.Clone(m.GetMaxStreamDuration()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetMaxHeadersCount()).(clone.Cloner); ok { + target.MaxHeadersCount = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxHeadersCount = proto.Clone(m.GetMaxHeadersCount()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + target.HeadersWithUnderscoresAction = m.GetHeadersWithUnderscoresAction() + + if h, ok := interface{}(m.GetMaxRequestsPerConnection()).(clone.Cloner); ok { + target.MaxRequestsPerConnection = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxRequestsPerConnection = proto.Clone(m.GetMaxRequestsPerConnection()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + target.ServerHeaderTransformation = m.GetServerHeaderTransformation() + + target.PathWithEscapedSlashesAction = m.GetPathWithEscapedSlashesAction() + + target.CodecType = m.GetCodecType() + + if h, ok := interface{}(m.GetMergeSlashes()).(clone.Cloner); ok { + target.MergeSlashes = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.MergeSlashes = proto.Clone(m.GetMergeSlashes()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetNormalizePath()).(clone.Cloner); ok { + target.NormalizePath = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.NormalizePath = proto.Clone(m.GetNormalizePath()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetUuidRequestIdConfig()).(clone.Cloner); ok { + target.UuidRequestIdConfig = h.Clone().(*HttpConnectionManagerSettings_UuidRequestIdConfigSettings) + } else { + target.UuidRequestIdConfig = proto.Clone(m.GetUuidRequestIdConfig()).(*HttpConnectionManagerSettings_UuidRequestIdConfigSettings) + } + + if h, ok := interface{}(m.GetHttp2ProtocolOptions()).(clone.Cloner); ok { + target.Http2ProtocolOptions = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_protocol.Http2ProtocolOptions) + } else { + target.Http2ProtocolOptions = proto.Clone(m.GetHttp2ProtocolOptions()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_protocol.Http2ProtocolOptions) + } + + if h, ok := interface{}(m.GetInternalAddressConfig()).(clone.Cloner); ok { + target.InternalAddressConfig = h.Clone().(*HttpConnectionManagerSettings_InternalAddressConfig) + } else { + target.InternalAddressConfig = proto.Clone(m.GetInternalAddressConfig()).(*HttpConnectionManagerSettings_InternalAddressConfig) + } + + if h, ok := interface{}(m.GetAppendXForwardedPort()).(clone.Cloner); ok { + target.AppendXForwardedPort = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.AppendXForwardedPort = proto.Clone(m.GetAppendXForwardedPort()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetEarlyHeaderManipulation()).(clone.Cloner); ok { + target.EarlyHeaderManipulation = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_headers.EarlyHeaderManipulation) + } else { + target.EarlyHeaderManipulation = proto.Clone(m.GetEarlyHeaderManipulation()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_headers.EarlyHeaderManipulation) + } + + switch m.HeaderFormat.(type) { + + case *HttpConnectionManagerSettings_ProperCaseHeaderKeyFormat: + + if h, ok := interface{}(m.GetProperCaseHeaderKeyFormat()).(clone.Cloner); ok { + target.HeaderFormat = &HttpConnectionManagerSettings_ProperCaseHeaderKeyFormat{ + ProperCaseHeaderKeyFormat: h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue), + } + } else { + target.HeaderFormat = &HttpConnectionManagerSettings_ProperCaseHeaderKeyFormat{ + ProperCaseHeaderKeyFormat: proto.Clone(m.GetProperCaseHeaderKeyFormat()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue), + } + } + + case *HttpConnectionManagerSettings_PreserveCaseHeaderKeyFormat: + + if h, ok := interface{}(m.GetPreserveCaseHeaderKeyFormat()).(clone.Cloner); ok { + target.HeaderFormat = &HttpConnectionManagerSettings_PreserveCaseHeaderKeyFormat{ + PreserveCaseHeaderKeyFormat: h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue), + } + } else { + target.HeaderFormat = &HttpConnectionManagerSettings_PreserveCaseHeaderKeyFormat{ + PreserveCaseHeaderKeyFormat: proto.Clone(m.GetPreserveCaseHeaderKeyFormat()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue), + } + } + + } + + return target +} + +// Clone function +func (m *HttpConnectionManagerSettings_SetCurrentClientCertDetails) Clone() proto.Message { + var target *HttpConnectionManagerSettings_SetCurrentClientCertDetails + if m == nil { + return target + } + target = &HttpConnectionManagerSettings_SetCurrentClientCertDetails{} + + if h, ok := interface{}(m.GetSubject()).(clone.Cloner); ok { + target.Subject = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Subject = proto.Clone(m.GetSubject()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetCert()).(clone.Cloner); ok { + target.Cert = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Cert = proto.Clone(m.GetCert()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetChain()).(clone.Cloner); ok { + target.Chain = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Chain = proto.Clone(m.GetChain()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetDns()).(clone.Cloner); ok { + target.Dns = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Dns = proto.Clone(m.GetDns()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetUri()).(clone.Cloner); ok { + target.Uri = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Uri = proto.Clone(m.GetUri()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *HttpConnectionManagerSettings_UuidRequestIdConfigSettings) Clone() proto.Message { + var target *HttpConnectionManagerSettings_UuidRequestIdConfigSettings + if m == nil { + return target + } + target = &HttpConnectionManagerSettings_UuidRequestIdConfigSettings{} + + if h, ok := interface{}(m.GetPackTraceReason()).(clone.Cloner); ok { + target.PackTraceReason = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.PackTraceReason = proto.Clone(m.GetPackTraceReason()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetUseRequestIdForTraceSampling()).(clone.Cloner); ok { + target.UseRequestIdForTraceSampling = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.UseRequestIdForTraceSampling = proto.Clone(m.GetUseRequestIdForTraceSampling()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *HttpConnectionManagerSettings_CidrRange) Clone() proto.Message { + var target *HttpConnectionManagerSettings_CidrRange + if m == nil { + return target + } + target = &HttpConnectionManagerSettings_CidrRange{} + + target.AddressPrefix = m.GetAddressPrefix() + + if h, ok := interface{}(m.GetPrefixLen()).(clone.Cloner); ok { + target.PrefixLen = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.PrefixLen = proto.Clone(m.GetPrefixLen()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + return target +} + +// Clone function +func (m *HttpConnectionManagerSettings_InternalAddressConfig) Clone() proto.Message { + var target *HttpConnectionManagerSettings_InternalAddressConfig + if m == nil { + return target + } + target = &HttpConnectionManagerSettings_InternalAddressConfig{} + + if h, ok := interface{}(m.GetUnixSockets()).(clone.Cloner); ok { + target.UnixSockets = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.UnixSockets = proto.Clone(m.GetUnixSockets()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if m.GetCidrRanges() != nil { + target.CidrRanges = make([]*HttpConnectionManagerSettings_CidrRange, len(m.GetCidrRanges())) + for idx, v := range m.GetCidrRanges() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.CidrRanges[idx] = h.Clone().(*HttpConnectionManagerSettings_CidrRange) + } else { + target.CidrRanges[idx] = proto.Clone(v).(*HttpConnectionManagerSettings_CidrRange) + } + + } + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.equal.go index 177681aab..93d5d24a4 100644 --- a/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.equal.go @@ -46,16 +46,34 @@ func (m *HttpConnectionManagerSettings) Equal(that interface{}) bool { return false } - if m.GetSkipXffAppend() != target.GetSkipXffAppend() { - return false + if h, ok := interface{}(m.GetSkipXffAppend()).(equality.Equalizer); ok { + if !h.Equal(target.GetSkipXffAppend()) { + return false + } + } else { + if !proto.Equal(m.GetSkipXffAppend(), target.GetSkipXffAppend()) { + return false + } } - if strings.Compare(m.GetVia(), target.GetVia()) != 0 { - return false + if h, ok := interface{}(m.GetVia()).(equality.Equalizer); ok { + if !h.Equal(target.GetVia()) { + return false + } + } else { + if !proto.Equal(m.GetVia(), target.GetVia()) { + return false + } } - if m.GetXffNumTrustedHops() != target.GetXffNumTrustedHops() { - return false + if h, ok := interface{}(m.GetXffNumTrustedHops()).(equality.Equalizer); ok { + if !h.Equal(target.GetXffNumTrustedHops()) { + return false + } + } else { + if !proto.Equal(m.GetXffNumTrustedHops(), target.GetXffNumTrustedHops()) { + return false + } } if h, ok := interface{}(m.GetUseRemoteAddress()).(equality.Equalizer); ok { @@ -78,8 +96,14 @@ func (m *HttpConnectionManagerSettings) Equal(that interface{}) bool { } } - if m.GetProxy_100Continue() != target.GetProxy_100Continue() { - return false + if h, ok := interface{}(m.GetProxy_100Continue()).(equality.Equalizer); ok { + if !h.Equal(target.GetProxy_100Continue()) { + return false + } + } else { + if !proto.Equal(m.GetProxy_100Continue(), target.GetProxy_100Continue()) { + return false + } } if h, ok := interface{}(m.GetStreamIdleTimeout()).(equality.Equalizer); ok { @@ -122,6 +146,16 @@ func (m *HttpConnectionManagerSettings) Equal(that interface{}) bool { } } + if h, ok := interface{}(m.GetRequestHeadersTimeout()).(equality.Equalizer); ok { + if !h.Equal(target.GetRequestHeadersTimeout()) { + return false + } + } else { + if !proto.Equal(m.GetRequestHeadersTimeout(), target.GetRequestHeadersTimeout()) { + return false + } + } + if h, ok := interface{}(m.GetDrainTimeout()).(equality.Equalizer); ok { if !h.Equal(target.GetDrainTimeout()) { return false @@ -142,20 +176,64 @@ func (m *HttpConnectionManagerSettings) Equal(that interface{}) bool { } } - if strings.Compare(m.GetServerName(), target.GetServerName()) != 0 { - return false + if h, ok := interface{}(m.GetServerName()).(equality.Equalizer); ok { + if !h.Equal(target.GetServerName()) { + return false + } + } else { + if !proto.Equal(m.GetServerName(), target.GetServerName()) { + return false + } } - if m.GetAcceptHttp_10() != target.GetAcceptHttp_10() { - return false + if h, ok := interface{}(m.GetStripAnyHostPort()).(equality.Equalizer); ok { + if !h.Equal(target.GetStripAnyHostPort()) { + return false + } + } else { + if !proto.Equal(m.GetStripAnyHostPort(), target.GetStripAnyHostPort()) { + return false + } } - if strings.Compare(m.GetDefaultHostForHttp_10(), target.GetDefaultHostForHttp_10()) != 0 { - return false + if h, ok := interface{}(m.GetAcceptHttp_10()).(equality.Equalizer); ok { + if !h.Equal(target.GetAcceptHttp_10()) { + return false + } + } else { + if !proto.Equal(m.GetAcceptHttp_10(), target.GetAcceptHttp_10()) { + return false + } } - if m.GetProperCaseHeaderKeyFormat() != target.GetProperCaseHeaderKeyFormat() { - return false + if h, ok := interface{}(m.GetDefaultHostForHttp_10()).(equality.Equalizer); ok { + if !h.Equal(target.GetDefaultHostForHttp_10()) { + return false + } + } else { + if !proto.Equal(m.GetDefaultHostForHttp_10(), target.GetDefaultHostForHttp_10()) { + return false + } + } + + if h, ok := interface{}(m.GetAllowChunkedLength()).(equality.Equalizer); ok { + if !h.Equal(target.GetAllowChunkedLength()) { + return false + } + } else { + if !proto.Equal(m.GetAllowChunkedLength(), target.GetAllowChunkedLength()) { + return false + } + } + + if h, ok := interface{}(m.GetEnableTrailers()).(equality.Equalizer); ok { + if !h.Equal(target.GetEnableTrailers()) { + return false + } + } else { + if !proto.Equal(m.GetEnableTrailers(), target.GetEnableTrailers()) { + return false + } } if h, ok := interface{}(m.GetTracing()).(equality.Equalizer); ok { @@ -182,8 +260,14 @@ func (m *HttpConnectionManagerSettings) Equal(that interface{}) bool { } } - if m.GetPreserveExternalRequestId() != target.GetPreserveExternalRequestId() { - return false + if h, ok := interface{}(m.GetPreserveExternalRequestId()).(equality.Equalizer); ok { + if !h.Equal(target.GetPreserveExternalRequestId()) { + return false + } + } else { + if !proto.Equal(m.GetPreserveExternalRequestId(), target.GetPreserveExternalRequestId()) { + return false + } } if len(m.GetUpgrades()) != len(target.GetUpgrades()) { @@ -223,6 +307,30 @@ func (m *HttpConnectionManagerSettings) Equal(that interface{}) bool { } } + if h, ok := interface{}(m.GetMaxHeadersCount()).(equality.Equalizer); ok { + if !h.Equal(target.GetMaxHeadersCount()) { + return false + } + } else { + if !proto.Equal(m.GetMaxHeadersCount(), target.GetMaxHeadersCount()) { + return false + } + } + + if m.GetHeadersWithUnderscoresAction() != target.GetHeadersWithUnderscoresAction() { + return false + } + + if h, ok := interface{}(m.GetMaxRequestsPerConnection()).(equality.Equalizer); ok { + if !h.Equal(target.GetMaxRequestsPerConnection()) { + return false + } + } else { + if !proto.Equal(m.GetMaxRequestsPerConnection(), target.GetMaxRequestsPerConnection()) { + return false + } + } + if m.GetServerHeaderTransformation() != target.GetServerHeaderTransformation() { return false } @@ -231,6 +339,119 @@ func (m *HttpConnectionManagerSettings) Equal(that interface{}) bool { return false } + if m.GetCodecType() != target.GetCodecType() { + return false + } + + if h, ok := interface{}(m.GetMergeSlashes()).(equality.Equalizer); ok { + if !h.Equal(target.GetMergeSlashes()) { + return false + } + } else { + if !proto.Equal(m.GetMergeSlashes(), target.GetMergeSlashes()) { + return false + } + } + + if h, ok := interface{}(m.GetNormalizePath()).(equality.Equalizer); ok { + if !h.Equal(target.GetNormalizePath()) { + return false + } + } else { + if !proto.Equal(m.GetNormalizePath(), target.GetNormalizePath()) { + return false + } + } + + if h, ok := interface{}(m.GetUuidRequestIdConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetUuidRequestIdConfig()) { + return false + } + } else { + if !proto.Equal(m.GetUuidRequestIdConfig(), target.GetUuidRequestIdConfig()) { + return false + } + } + + if h, ok := interface{}(m.GetHttp2ProtocolOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetHttp2ProtocolOptions()) { + return false + } + } else { + if !proto.Equal(m.GetHttp2ProtocolOptions(), target.GetHttp2ProtocolOptions()) { + return false + } + } + + if h, ok := interface{}(m.GetInternalAddressConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetInternalAddressConfig()) { + return false + } + } else { + if !proto.Equal(m.GetInternalAddressConfig(), target.GetInternalAddressConfig()) { + return false + } + } + + if h, ok := interface{}(m.GetAppendXForwardedPort()).(equality.Equalizer); ok { + if !h.Equal(target.GetAppendXForwardedPort()) { + return false + } + } else { + if !proto.Equal(m.GetAppendXForwardedPort(), target.GetAppendXForwardedPort()) { + return false + } + } + + if h, ok := interface{}(m.GetEarlyHeaderManipulation()).(equality.Equalizer); ok { + if !h.Equal(target.GetEarlyHeaderManipulation()) { + return false + } + } else { + if !proto.Equal(m.GetEarlyHeaderManipulation(), target.GetEarlyHeaderManipulation()) { + return false + } + } + + switch m.HeaderFormat.(type) { + + case *HttpConnectionManagerSettings_ProperCaseHeaderKeyFormat: + if _, ok := target.HeaderFormat.(*HttpConnectionManagerSettings_ProperCaseHeaderKeyFormat); !ok { + return false + } + + if h, ok := interface{}(m.GetProperCaseHeaderKeyFormat()).(equality.Equalizer); ok { + if !h.Equal(target.GetProperCaseHeaderKeyFormat()) { + return false + } + } else { + if !proto.Equal(m.GetProperCaseHeaderKeyFormat(), target.GetProperCaseHeaderKeyFormat()) { + return false + } + } + + case *HttpConnectionManagerSettings_PreserveCaseHeaderKeyFormat: + if _, ok := target.HeaderFormat.(*HttpConnectionManagerSettings_PreserveCaseHeaderKeyFormat); !ok { + return false + } + + if h, ok := interface{}(m.GetPreserveCaseHeaderKeyFormat()).(equality.Equalizer); ok { + if !h.Equal(target.GetPreserveCaseHeaderKeyFormat()) { + return false + } + } else { + if !proto.Equal(m.GetPreserveCaseHeaderKeyFormat(), target.GetPreserveCaseHeaderKeyFormat()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.HeaderFormat != target.HeaderFormat { + return false + } + } + return true } @@ -265,21 +486,178 @@ func (m *HttpConnectionManagerSettings_SetCurrentClientCertDetails) Equal(that i } } - if m.GetCert() != target.GetCert() { + if h, ok := interface{}(m.GetCert()).(equality.Equalizer); ok { + if !h.Equal(target.GetCert()) { + return false + } + } else { + if !proto.Equal(m.GetCert(), target.GetCert()) { + return false + } + } + + if h, ok := interface{}(m.GetChain()).(equality.Equalizer); ok { + if !h.Equal(target.GetChain()) { + return false + } + } else { + if !proto.Equal(m.GetChain(), target.GetChain()) { + return false + } + } + + if h, ok := interface{}(m.GetDns()).(equality.Equalizer); ok { + if !h.Equal(target.GetDns()) { + return false + } + } else { + if !proto.Equal(m.GetDns(), target.GetDns()) { + return false + } + } + + if h, ok := interface{}(m.GetUri()).(equality.Equalizer); ok { + if !h.Equal(target.GetUri()) { + return false + } + } else { + if !proto.Equal(m.GetUri(), target.GetUri()) { + return false + } + } + + return true +} + +// Equal function +func (m *HttpConnectionManagerSettings_UuidRequestIdConfigSettings) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HttpConnectionManagerSettings_UuidRequestIdConfigSettings) + if !ok { + that2, ok := that.(HttpConnectionManagerSettings_UuidRequestIdConfigSettings) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetPackTraceReason()).(equality.Equalizer); ok { + if !h.Equal(target.GetPackTraceReason()) { + return false + } + } else { + if !proto.Equal(m.GetPackTraceReason(), target.GetPackTraceReason()) { + return false + } + } + + if h, ok := interface{}(m.GetUseRequestIdForTraceSampling()).(equality.Equalizer); ok { + if !h.Equal(target.GetUseRequestIdForTraceSampling()) { + return false + } + } else { + if !proto.Equal(m.GetUseRequestIdForTraceSampling(), target.GetUseRequestIdForTraceSampling()) { + return false + } + } + + return true +} + +// Equal function +func (m *HttpConnectionManagerSettings_CidrRange) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HttpConnectionManagerSettings_CidrRange) + if !ok { + that2, ok := that.(HttpConnectionManagerSettings_CidrRange) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { return false } - if m.GetChain() != target.GetChain() { + if strings.Compare(m.GetAddressPrefix(), target.GetAddressPrefix()) != 0 { return false } - if m.GetDns() != target.GetDns() { + if h, ok := interface{}(m.GetPrefixLen()).(equality.Equalizer); ok { + if !h.Equal(target.GetPrefixLen()) { + return false + } + } else { + if !proto.Equal(m.GetPrefixLen(), target.GetPrefixLen()) { + return false + } + } + + return true +} + +// Equal function +func (m *HttpConnectionManagerSettings_InternalAddressConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HttpConnectionManagerSettings_InternalAddressConfig) + if !ok { + that2, ok := that.(HttpConnectionManagerSettings_InternalAddressConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { return false } - if m.GetUri() != target.GetUri() { + if h, ok := interface{}(m.GetUnixSockets()).(equality.Equalizer); ok { + if !h.Equal(target.GetUnixSockets()) { + return false + } + } else { + if !proto.Equal(m.GetUnixSockets(), target.GetUnixSockets()) { + return false + } + } + + if len(m.GetCidrRanges()) != len(target.GetCidrRanges()) { return false } + for idx, v := range m.GetCidrRanges() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetCidrRanges()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetCidrRanges()[idx]) { + return false + } + } + + } return true } diff --git a/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.go b/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.go index 5456e890a..0977f691d 100644 --- a/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/hcm/hcm.proto @@ -9,15 +9,18 @@ package hcm import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - duration "github.com/golang/protobuf/ptypes/duration" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" + headers "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/headers" + protocol "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/protocol" protocol_upgrade "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/protocol_upgrade" tracing "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tracing" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/known/anypb" + durationpb "google.golang.org/protobuf/types/known/durationpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -27,10 +30,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type HttpConnectionManagerSettings_ForwardClientCertDetails int32 const ( @@ -138,6 +137,63 @@ func (HttpConnectionManagerSettings_ServerHeaderTransformation) EnumDescriptor() return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDescGZIP(), []int{0, 1} } +// Action to take when Envoy receives client request with header names containing underscore characters. Underscore character +// is allowed in header names by the RFC-7230 and this behavior is implemented as a security measure due to systems that treat +// ‘_’ and ‘-‘ as interchangeable. Envoy by default allows client request headers with underscore characters. +type HttpConnectionManagerSettings_HeadersWithUnderscoreAction int32 + +const ( + // ⁣Allow headers with underscores. This is the default behavior. + HttpConnectionManagerSettings_ALLOW HttpConnectionManagerSettings_HeadersWithUnderscoreAction = 0 + // ⁣Reject client request. HTTP/1 requests are rejected with the 400 status. HTTP/2 requests end with the stream reset. + // The “httpN.requests_rejected_with_underscores_in_headers” counter is incremented for each rejected request. + HttpConnectionManagerSettings_REJECT_CLIENT_REQUEST HttpConnectionManagerSettings_HeadersWithUnderscoreAction = 1 + // ⁣Drop the client header with name containing underscores. The header is dropped before the filter chain is invoked + // and as such filters will not see dropped headers. The “httpN.dropped_headers_with_underscores” is incremented for each dropped header. + HttpConnectionManagerSettings_DROP_HEADER HttpConnectionManagerSettings_HeadersWithUnderscoreAction = 2 +) + +// Enum value maps for HttpConnectionManagerSettings_HeadersWithUnderscoreAction. +var ( + HttpConnectionManagerSettings_HeadersWithUnderscoreAction_name = map[int32]string{ + 0: "ALLOW", + 1: "REJECT_CLIENT_REQUEST", + 2: "DROP_HEADER", + } + HttpConnectionManagerSettings_HeadersWithUnderscoreAction_value = map[string]int32{ + "ALLOW": 0, + "REJECT_CLIENT_REQUEST": 1, + "DROP_HEADER": 2, + } +) + +func (x HttpConnectionManagerSettings_HeadersWithUnderscoreAction) Enum() *HttpConnectionManagerSettings_HeadersWithUnderscoreAction { + p := new(HttpConnectionManagerSettings_HeadersWithUnderscoreAction) + *p = x + return p +} + +func (x HttpConnectionManagerSettings_HeadersWithUnderscoreAction) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (HttpConnectionManagerSettings_HeadersWithUnderscoreAction) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_enumTypes[2].Descriptor() +} + +func (HttpConnectionManagerSettings_HeadersWithUnderscoreAction) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_enumTypes[2] +} + +func (x HttpConnectionManagerSettings_HeadersWithUnderscoreAction) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use HttpConnectionManagerSettings_HeadersWithUnderscoreAction.Descriptor instead. +func (HttpConnectionManagerSettings_HeadersWithUnderscoreAction) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDescGZIP(), []int{0, 2} +} + // Determines the action for request that contain %2F, %2f, %5C or %5c sequences in the URI path. // This operation occurs before URL normalization and the merge slashes transformations if they were enabled. type HttpConnectionManagerSettings_PathWithEscapedSlashesAction int32 @@ -195,11 +251,11 @@ func (x HttpConnectionManagerSettings_PathWithEscapedSlashesAction) String() str } func (HttpConnectionManagerSettings_PathWithEscapedSlashesAction) Descriptor() protoreflect.EnumDescriptor { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_enumTypes[2].Descriptor() + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_enumTypes[3].Descriptor() } func (HttpConnectionManagerSettings_PathWithEscapedSlashesAction) Type() protoreflect.EnumType { - return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_enumTypes[2] + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_enumTypes[3] } func (x HttpConnectionManagerSettings_PathWithEscapedSlashesAction) Number() protoreflect.EnumNumber { @@ -208,43 +264,119 @@ func (x HttpConnectionManagerSettings_PathWithEscapedSlashesAction) Number() pro // Deprecated: Use HttpConnectionManagerSettings_PathWithEscapedSlashesAction.Descriptor instead. func (HttpConnectionManagerSettings_PathWithEscapedSlashesAction) EnumDescriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDescGZIP(), []int{0, 2} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDescGZIP(), []int{0, 3} +} + +type HttpConnectionManagerSettings_CodecType int32 + +const ( + // For every new connection, the connection manager will determine which + // codec to use. This mode supports both ALPN for TLS listeners as well as + // protocol inference for plaintext listeners. If ALPN data is available, it + // is preferred, otherwise protocol inference is used. In almost all cases, + // this is the right option to choose for this setting. + HttpConnectionManagerSettings_AUTO HttpConnectionManagerSettings_CodecType = 0 + // The connection manager will assume that the client is speaking HTTP/1.1. + HttpConnectionManagerSettings_HTTP1 HttpConnectionManagerSettings_CodecType = 1 + // The connection manager will assume that the client is speaking HTTP/2 + // (Envoy does not require HTTP/2 to take place over TLS or to use ALPN. + // Prior knowledge is allowed). + HttpConnectionManagerSettings_HTTP2 HttpConnectionManagerSettings_CodecType = 2 +) + +// Enum value maps for HttpConnectionManagerSettings_CodecType. +var ( + HttpConnectionManagerSettings_CodecType_name = map[int32]string{ + 0: "AUTO", + 1: "HTTP1", + 2: "HTTP2", + } + HttpConnectionManagerSettings_CodecType_value = map[string]int32{ + "AUTO": 0, + "HTTP1": 1, + "HTTP2": 2, + } +) + +func (x HttpConnectionManagerSettings_CodecType) Enum() *HttpConnectionManagerSettings_CodecType { + p := new(HttpConnectionManagerSettings_CodecType) + *p = x + return p +} + +func (x HttpConnectionManagerSettings_CodecType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (HttpConnectionManagerSettings_CodecType) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_enumTypes[4].Descriptor() +} + +func (HttpConnectionManagerSettings_CodecType) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_enumTypes[4] +} + +func (x HttpConnectionManagerSettings_CodecType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use HttpConnectionManagerSettings_CodecType.Descriptor instead. +func (HttpConnectionManagerSettings_CodecType) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDescGZIP(), []int{0, 4} } // Contains various settings for Envoy's http connection manager. // See here for more information: https://www.envoyproxy.io/docs/envoy/v1.9.0/configuration/http_conn_man/http_conn_man +// Now contains v3 fields as well +// v3 documents https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto#extensions-filters-network-http-connection-manager-v3-httpconnectionmanager type HttpConnectionManagerSettings struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SkipXffAppend bool `protobuf:"varint,1,opt,name=skip_xff_append,json=skipXffAppend,proto3" json:"skip_xff_append,omitempty"` - Via string `protobuf:"bytes,2,opt,name=via,proto3" json:"via,omitempty"` - XffNumTrustedHops uint32 `protobuf:"varint,3,opt,name=xff_num_trusted_hops,json=xffNumTrustedHops,proto3" json:"xff_num_trusted_hops,omitempty"` - UseRemoteAddress *wrappers.BoolValue `protobuf:"bytes,4,opt,name=use_remote_address,json=useRemoteAddress,proto3" json:"use_remote_address,omitempty"` - GenerateRequestId *wrappers.BoolValue `protobuf:"bytes,5,opt,name=generate_request_id,json=generateRequestId,proto3" json:"generate_request_id,omitempty"` - Proxy_100Continue bool `protobuf:"varint,6,opt,name=proxy_100_continue,json=proxy100Continue,proto3" json:"proxy_100_continue,omitempty"` - StreamIdleTimeout *duration.Duration `protobuf:"bytes,7,opt,name=stream_idle_timeout,json=streamIdleTimeout,proto3" json:"stream_idle_timeout,omitempty"` - IdleTimeout *duration.Duration `protobuf:"bytes,8,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"` - MaxRequestHeadersKb *wrappers.UInt32Value `protobuf:"bytes,9,opt,name=max_request_headers_kb,json=maxRequestHeadersKb,proto3" json:"max_request_headers_kb,omitempty"` - RequestTimeout *duration.Duration `protobuf:"bytes,10,opt,name=request_timeout,json=requestTimeout,proto3" json:"request_timeout,omitempty"` - DrainTimeout *duration.Duration `protobuf:"bytes,12,opt,name=drain_timeout,json=drainTimeout,proto3" json:"drain_timeout,omitempty"` - DelayedCloseTimeout *duration.Duration `protobuf:"bytes,13,opt,name=delayed_close_timeout,json=delayedCloseTimeout,proto3" json:"delayed_close_timeout,omitempty"` - ServerName string `protobuf:"bytes,14,opt,name=server_name,json=serverName,proto3" json:"server_name,omitempty"` - // For explanation of these settings see: https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/core/protocol.proto#envoy-api-msg-core-http1protocoloptions - AcceptHttp_10 bool `protobuf:"varint,15,opt,name=accept_http_10,json=acceptHttp10,proto3" json:"accept_http_10,omitempty"` - DefaultHostForHttp_10 string `protobuf:"bytes,16,opt,name=default_host_for_http_10,json=defaultHostForHttp10,proto3" json:"default_host_for_http_10,omitempty"` - ProperCaseHeaderKeyFormat bool `protobuf:"varint,22,opt,name=proper_case_header_key_format,json=properCaseHeaderKeyFormat,proto3" json:"proper_case_header_key_format,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + SkipXffAppend *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=skip_xff_append,json=skipXffAppend,proto3" json:"skip_xff_append,omitempty"` + Via *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=via,proto3" json:"via,omitempty"` + XffNumTrustedHops *wrapperspb.UInt32Value `protobuf:"bytes,3,opt,name=xff_num_trusted_hops,json=xffNumTrustedHops,proto3" json:"xff_num_trusted_hops,omitempty"` + UseRemoteAddress *wrapperspb.BoolValue `protobuf:"bytes,4,opt,name=use_remote_address,json=useRemoteAddress,proto3" json:"use_remote_address,omitempty"` + GenerateRequestId *wrapperspb.BoolValue `protobuf:"bytes,5,opt,name=generate_request_id,json=generateRequestId,proto3" json:"generate_request_id,omitempty"` + Proxy_100Continue *wrapperspb.BoolValue `protobuf:"bytes,6,opt,name=proxy_100_continue,json=proxy100Continue,proto3" json:"proxy_100_continue,omitempty"` + StreamIdleTimeout *durationpb.Duration `protobuf:"bytes,7,opt,name=stream_idle_timeout,json=streamIdleTimeout,proto3" json:"stream_idle_timeout,omitempty"` + IdleTimeout *durationpb.Duration `protobuf:"bytes,8,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"` + MaxRequestHeadersKb *wrapperspb.UInt32Value `protobuf:"bytes,9,opt,name=max_request_headers_kb,json=maxRequestHeadersKb,proto3" json:"max_request_headers_kb,omitempty"` + RequestTimeout *durationpb.Duration `protobuf:"bytes,10,opt,name=request_timeout,json=requestTimeout,proto3" json:"request_timeout,omitempty"` + // The amount of time that Envoy will wait for the request headers to be received. The timer is + // activated when the first byte of the headers is received, and is disarmed when the last byte of + // the headers has been received. If not specified or set to 0, this timeout is disabled. + RequestHeadersTimeout *durationpb.Duration `protobuf:"bytes,11,opt,name=request_headers_timeout,json=requestHeadersTimeout,proto3" json:"request_headers_timeout,omitempty"` + DrainTimeout *durationpb.Duration `protobuf:"bytes,12,opt,name=drain_timeout,json=drainTimeout,proto3" json:"drain_timeout,omitempty"` + DelayedCloseTimeout *durationpb.Duration `protobuf:"bytes,13,opt,name=delayed_close_timeout,json=delayedCloseTimeout,proto3" json:"delayed_close_timeout,omitempty"` + ServerName *wrapperspb.StringValue `protobuf:"bytes,14,opt,name=server_name,json=serverName,proto3" json:"server_name,omitempty"` + StripAnyHostPort *wrapperspb.BoolValue `protobuf:"bytes,36,opt,name=strip_any_host_port,json=stripAnyHostPort,proto3" json:"strip_any_host_port,omitempty"` + // For explanation of these settings see: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#envoy-api-msg-core-http1protocoloptions + AcceptHttp_10 *wrapperspb.BoolValue `protobuf:"bytes,15,opt,name=accept_http_10,json=acceptHttp10,proto3" json:"accept_http_10,omitempty"` + DefaultHostForHttp_10 *wrapperspb.StringValue `protobuf:"bytes,16,opt,name=default_host_for_http_10,json=defaultHostForHttp10,proto3" json:"default_host_for_http_10,omitempty"` + // For an explanation of these settings, see: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#config-core-v3-http1protocoloptions + AllowChunkedLength *wrapperspb.BoolValue `protobuf:"bytes,34,opt,name=allow_chunked_length,json=allowChunkedLength,proto3" json:"allow_chunked_length,omitempty"` + EnableTrailers *wrapperspb.BoolValue `protobuf:"bytes,35,opt,name=enable_trailers,json=enableTrailers,proto3" json:"enable_trailers,omitempty"` + // Types that are valid to be assigned to HeaderFormat: + // + // *HttpConnectionManagerSettings_ProperCaseHeaderKeyFormat + // *HttpConnectionManagerSettings_PreserveCaseHeaderKeyFormat + HeaderFormat isHttpConnectionManagerSettings_HeaderFormat `protobuf_oneof:"header_format"` Tracing *tracing.ListenerTracingSettings `protobuf:"bytes,17,opt,name=tracing,proto3" json:"tracing,omitempty"` ForwardClientCertDetails HttpConnectionManagerSettings_ForwardClientCertDetails `protobuf:"varint,18,opt,name=forward_client_cert_details,json=forwardClientCertDetails,proto3,enum=hcm.options.gloo.solo.io.HttpConnectionManagerSettings_ForwardClientCertDetails" json:"forward_client_cert_details,omitempty"` SetCurrentClientCertDetails *HttpConnectionManagerSettings_SetCurrentClientCertDetails `protobuf:"bytes,19,opt,name=set_current_client_cert_details,json=setCurrentClientCertDetails,proto3" json:"set_current_client_cert_details,omitempty"` - PreserveExternalRequestId bool `protobuf:"varint,20,opt,name=preserve_external_request_id,json=preserveExternalRequestId,proto3" json:"preserve_external_request_id,omitempty"` + PreserveExternalRequestId *wrapperspb.BoolValue `protobuf:"bytes,20,opt,name=preserve_external_request_id,json=preserveExternalRequestId,proto3" json:"preserve_external_request_id,omitempty"` // HttpConnectionManager configuration for protocol upgrade requests. // Note: WebSocket upgrades are enabled by default on the HTTP Connection Manager and must be explicitly disabled. Upgrades []*protocol_upgrade.ProtocolUpgradeConfig `protobuf:"bytes,21,rep,name=upgrades,proto3" json:"upgrades,omitempty"` // For an explanation of these settings see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#config-core-v3-httpprotocoloptions - MaxConnectionDuration *duration.Duration `protobuf:"bytes,23,opt,name=max_connection_duration,json=maxConnectionDuration,proto3" json:"max_connection_duration,omitempty"` - MaxStreamDuration *duration.Duration `protobuf:"bytes,24,opt,name=max_stream_duration,json=maxStreamDuration,proto3" json:"max_stream_duration,omitempty"` + MaxConnectionDuration *durationpb.Duration `protobuf:"bytes,23,opt,name=max_connection_duration,json=maxConnectionDuration,proto3" json:"max_connection_duration,omitempty"` + // For an explanation of these settings see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#config-core-v3-httpprotocoloptions + MaxStreamDuration *durationpb.Duration `protobuf:"bytes,24,opt,name=max_stream_duration,json=maxStreamDuration,proto3" json:"max_stream_duration,omitempty"` + // For an explanation of these settings see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#config-core-v3-httpprotocoloptions + MaxHeadersCount *wrapperspb.UInt32Value `protobuf:"bytes,27,opt,name=max_headers_count,json=maxHeadersCount,proto3" json:"max_headers_count,omitempty"` + // For an explanation of these settings see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#config-core-v3-httpprotocoloptions + HeadersWithUnderscoresAction HttpConnectionManagerSettings_HeadersWithUnderscoreAction `protobuf:"varint,32,opt,name=headers_with_underscores_action,json=headersWithUnderscoresAction,proto3,enum=hcm.options.gloo.solo.io.HttpConnectionManagerSettings_HeadersWithUnderscoreAction" json:"headers_with_underscores_action,omitempty"` + // For an explanation of these settings see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#config-core-v3-httpprotocoloptions + MaxRequestsPerConnection *wrapperspb.UInt32Value `protobuf:"bytes,33,opt,name=max_requests_per_connection,json=maxRequestsPerConnection,proto3" json:"max_requests_per_connection,omitempty"` // For an explanation of the settings see: https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto.html#envoy-v3-api-enum-extensions-filters-network-http-connection-manager-v3-httpconnectionmanager-serverheadertransformation ServerHeaderTransformation HttpConnectionManagerSettings_ServerHeaderTransformation `protobuf:"varint,25,opt,name=server_header_transformation,json=serverHeaderTransformation,proto3,enum=hcm.options.gloo.solo.io.HttpConnectionManagerSettings_ServerHeaderTransformation" json:"server_header_transformation,omitempty"` // Action to take when request URL path contains escaped slash sequences (%2F, %2f, %5C and %5c). @@ -253,15 +385,33 @@ type HttpConnectionManagerSettings struct { // The :ref:`http_connection_manager.path_with_escaped_slashes_action_sampling` runtime // variable can be used to apply the action to a portion of all requests. PathWithEscapedSlashesAction HttpConnectionManagerSettings_PathWithEscapedSlashesAction `protobuf:"varint,26,opt,name=path_with_escaped_slashes_action,json=pathWithEscapedSlashesAction,proto3,enum=hcm.options.gloo.solo.io.HttpConnectionManagerSettings_PathWithEscapedSlashesAction" json:"path_with_escaped_slashes_action,omitempty"` + // Supplies the type of codec that the connection manager should use. + // See here for more information: https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto#extensions-filters-network-http-connection-manager-v3-httpconnectionmanager + CodecType HttpConnectionManagerSettings_CodecType `protobuf:"varint,28,opt,name=codec_type,json=codecType,proto3,enum=hcm.options.gloo.solo.io.HttpConnectionManagerSettings_CodecType" json:"codec_type,omitempty"` + // Determines if adjacent slashes in the path are merged into one before any processing of requests by HTTP filters or routing. + // See here for more information: https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto + MergeSlashes *wrapperspb.BoolValue `protobuf:"bytes,29,opt,name=merge_slashes,json=mergeSlashes,proto3" json:"merge_slashes,omitempty"` + // Should paths be normalized according to RFC 3986 before any processing of requests by HTTP filters or routing? Defaults to True. + // See here for more information: https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto + NormalizePath *wrapperspb.BoolValue `protobuf:"bytes,30,opt,name=normalize_path,json=normalizePath,proto3" json:"normalize_path,omitempty"` + UuidRequestIdConfig *HttpConnectionManagerSettings_UuidRequestIdConfigSettings `protobuf:"bytes,37,opt,name=uuid_request_id_config,json=uuidRequestIdConfig,proto3" json:"uuid_request_id_config,omitempty"` + // Additional HTTP/2 settings that are passed directly to the HTTP/2 codec. + Http2ProtocolOptions *protocol.Http2ProtocolOptions `protobuf:"bytes,39,opt,name=http2_protocol_options,json=http2ProtocolOptions,proto3" json:"http2_protocol_options,omitempty"` + // Configuration of internal addresses + InternalAddressConfig *HttpConnectionManagerSettings_InternalAddressConfig `protobuf:"bytes,38,opt,name=internal_address_config,json=internalAddressConfig,proto3" json:"internal_address_config,omitempty"` + // If true, configure Envoy to set the x-fowarded-port header to allow services to find Envoy's listener port. + AppendXForwardedPort *wrapperspb.BoolValue `protobuf:"bytes,40,opt,name=append_x_forwarded_port,json=appendXForwardedPort,proto3" json:"append_x_forwarded_port,omitempty"` + // Configuration for early header manipulation + EarlyHeaderManipulation *headers.EarlyHeaderManipulation `protobuf:"bytes,41,opt,name=early_header_manipulation,json=earlyHeaderManipulation,proto3" json:"early_header_manipulation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HttpConnectionManagerSettings) Reset() { *x = HttpConnectionManagerSettings{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HttpConnectionManagerSettings) String() string { @@ -272,7 +422,7 @@ func (*HttpConnectionManagerSettings) ProtoMessage() {} func (x *HttpConnectionManagerSettings) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -287,116 +437,162 @@ func (*HttpConnectionManagerSettings) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDescGZIP(), []int{0} } -func (x *HttpConnectionManagerSettings) GetSkipXffAppend() bool { +func (x *HttpConnectionManagerSettings) GetSkipXffAppend() *wrapperspb.BoolValue { if x != nil { return x.SkipXffAppend } - return false + return nil } -func (x *HttpConnectionManagerSettings) GetVia() string { +func (x *HttpConnectionManagerSettings) GetVia() *wrapperspb.StringValue { if x != nil { return x.Via } - return "" + return nil } -func (x *HttpConnectionManagerSettings) GetXffNumTrustedHops() uint32 { +func (x *HttpConnectionManagerSettings) GetXffNumTrustedHops() *wrapperspb.UInt32Value { if x != nil { return x.XffNumTrustedHops } - return 0 + return nil } -func (x *HttpConnectionManagerSettings) GetUseRemoteAddress() *wrappers.BoolValue { +func (x *HttpConnectionManagerSettings) GetUseRemoteAddress() *wrapperspb.BoolValue { if x != nil { return x.UseRemoteAddress } return nil } -func (x *HttpConnectionManagerSettings) GetGenerateRequestId() *wrappers.BoolValue { +func (x *HttpConnectionManagerSettings) GetGenerateRequestId() *wrapperspb.BoolValue { if x != nil { return x.GenerateRequestId } return nil } -func (x *HttpConnectionManagerSettings) GetProxy_100Continue() bool { +func (x *HttpConnectionManagerSettings) GetProxy_100Continue() *wrapperspb.BoolValue { if x != nil { return x.Proxy_100Continue } - return false + return nil } -func (x *HttpConnectionManagerSettings) GetStreamIdleTimeout() *duration.Duration { +func (x *HttpConnectionManagerSettings) GetStreamIdleTimeout() *durationpb.Duration { if x != nil { return x.StreamIdleTimeout } return nil } -func (x *HttpConnectionManagerSettings) GetIdleTimeout() *duration.Duration { +func (x *HttpConnectionManagerSettings) GetIdleTimeout() *durationpb.Duration { if x != nil { return x.IdleTimeout } return nil } -func (x *HttpConnectionManagerSettings) GetMaxRequestHeadersKb() *wrappers.UInt32Value { +func (x *HttpConnectionManagerSettings) GetMaxRequestHeadersKb() *wrapperspb.UInt32Value { if x != nil { return x.MaxRequestHeadersKb } return nil } -func (x *HttpConnectionManagerSettings) GetRequestTimeout() *duration.Duration { +func (x *HttpConnectionManagerSettings) GetRequestTimeout() *durationpb.Duration { if x != nil { return x.RequestTimeout } return nil } -func (x *HttpConnectionManagerSettings) GetDrainTimeout() *duration.Duration { +func (x *HttpConnectionManagerSettings) GetRequestHeadersTimeout() *durationpb.Duration { + if x != nil { + return x.RequestHeadersTimeout + } + return nil +} + +func (x *HttpConnectionManagerSettings) GetDrainTimeout() *durationpb.Duration { if x != nil { return x.DrainTimeout } return nil } -func (x *HttpConnectionManagerSettings) GetDelayedCloseTimeout() *duration.Duration { +func (x *HttpConnectionManagerSettings) GetDelayedCloseTimeout() *durationpb.Duration { if x != nil { return x.DelayedCloseTimeout } return nil } -func (x *HttpConnectionManagerSettings) GetServerName() string { +func (x *HttpConnectionManagerSettings) GetServerName() *wrapperspb.StringValue { if x != nil { return x.ServerName } - return "" + return nil +} + +func (x *HttpConnectionManagerSettings) GetStripAnyHostPort() *wrapperspb.BoolValue { + if x != nil { + return x.StripAnyHostPort + } + return nil } -func (x *HttpConnectionManagerSettings) GetAcceptHttp_10() bool { +func (x *HttpConnectionManagerSettings) GetAcceptHttp_10() *wrapperspb.BoolValue { if x != nil { return x.AcceptHttp_10 } - return false + return nil } -func (x *HttpConnectionManagerSettings) GetDefaultHostForHttp_10() string { +func (x *HttpConnectionManagerSettings) GetDefaultHostForHttp_10() *wrapperspb.StringValue { if x != nil { return x.DefaultHostForHttp_10 } - return "" + return nil +} + +func (x *HttpConnectionManagerSettings) GetAllowChunkedLength() *wrapperspb.BoolValue { + if x != nil { + return x.AllowChunkedLength + } + return nil +} + +func (x *HttpConnectionManagerSettings) GetEnableTrailers() *wrapperspb.BoolValue { + if x != nil { + return x.EnableTrailers + } + return nil +} + +func (x *HttpConnectionManagerSettings) GetHeaderFormat() isHttpConnectionManagerSettings_HeaderFormat { + if x != nil { + return x.HeaderFormat + } + return nil } -func (x *HttpConnectionManagerSettings) GetProperCaseHeaderKeyFormat() bool { +func (x *HttpConnectionManagerSettings) GetProperCaseHeaderKeyFormat() *wrapperspb.BoolValue { if x != nil { - return x.ProperCaseHeaderKeyFormat + if x, ok := x.HeaderFormat.(*HttpConnectionManagerSettings_ProperCaseHeaderKeyFormat); ok { + return x.ProperCaseHeaderKeyFormat + } } - return false + return nil +} + +func (x *HttpConnectionManagerSettings) GetPreserveCaseHeaderKeyFormat() *wrapperspb.BoolValue { + if x != nil { + if x, ok := x.HeaderFormat.(*HttpConnectionManagerSettings_PreserveCaseHeaderKeyFormat); ok { + return x.PreserveCaseHeaderKeyFormat + } + } + return nil } func (x *HttpConnectionManagerSettings) GetTracing() *tracing.ListenerTracingSettings { @@ -420,11 +616,11 @@ func (x *HttpConnectionManagerSettings) GetSetCurrentClientCertDetails() *HttpCo return nil } -func (x *HttpConnectionManagerSettings) GetPreserveExternalRequestId() bool { +func (x *HttpConnectionManagerSettings) GetPreserveExternalRequestId() *wrapperspb.BoolValue { if x != nil { return x.PreserveExternalRequestId } - return false + return nil } func (x *HttpConnectionManagerSettings) GetUpgrades() []*protocol_upgrade.ProtocolUpgradeConfig { @@ -434,20 +630,41 @@ func (x *HttpConnectionManagerSettings) GetUpgrades() []*protocol_upgrade.Protoc return nil } -func (x *HttpConnectionManagerSettings) GetMaxConnectionDuration() *duration.Duration { +func (x *HttpConnectionManagerSettings) GetMaxConnectionDuration() *durationpb.Duration { if x != nil { return x.MaxConnectionDuration } return nil } -func (x *HttpConnectionManagerSettings) GetMaxStreamDuration() *duration.Duration { +func (x *HttpConnectionManagerSettings) GetMaxStreamDuration() *durationpb.Duration { if x != nil { return x.MaxStreamDuration } return nil } +func (x *HttpConnectionManagerSettings) GetMaxHeadersCount() *wrapperspb.UInt32Value { + if x != nil { + return x.MaxHeadersCount + } + return nil +} + +func (x *HttpConnectionManagerSettings) GetHeadersWithUnderscoresAction() HttpConnectionManagerSettings_HeadersWithUnderscoreAction { + if x != nil { + return x.HeadersWithUnderscoresAction + } + return HttpConnectionManagerSettings_ALLOW +} + +func (x *HttpConnectionManagerSettings) GetMaxRequestsPerConnection() *wrapperspb.UInt32Value { + if x != nil { + return x.MaxRequestsPerConnection + } + return nil +} + func (x *HttpConnectionManagerSettings) GetServerHeaderTransformation() HttpConnectionManagerSettings_ServerHeaderTransformation { if x != nil { return x.ServerHeaderTransformation @@ -462,25 +679,103 @@ func (x *HttpConnectionManagerSettings) GetPathWithEscapedSlashesAction() HttpCo return HttpConnectionManagerSettings_IMPLEMENTATION_SPECIFIC_DEFAULT } +func (x *HttpConnectionManagerSettings) GetCodecType() HttpConnectionManagerSettings_CodecType { + if x != nil { + return x.CodecType + } + return HttpConnectionManagerSettings_AUTO +} + +func (x *HttpConnectionManagerSettings) GetMergeSlashes() *wrapperspb.BoolValue { + if x != nil { + return x.MergeSlashes + } + return nil +} + +func (x *HttpConnectionManagerSettings) GetNormalizePath() *wrapperspb.BoolValue { + if x != nil { + return x.NormalizePath + } + return nil +} + +func (x *HttpConnectionManagerSettings) GetUuidRequestIdConfig() *HttpConnectionManagerSettings_UuidRequestIdConfigSettings { + if x != nil { + return x.UuidRequestIdConfig + } + return nil +} + +func (x *HttpConnectionManagerSettings) GetHttp2ProtocolOptions() *protocol.Http2ProtocolOptions { + if x != nil { + return x.Http2ProtocolOptions + } + return nil +} + +func (x *HttpConnectionManagerSettings) GetInternalAddressConfig() *HttpConnectionManagerSettings_InternalAddressConfig { + if x != nil { + return x.InternalAddressConfig + } + return nil +} + +func (x *HttpConnectionManagerSettings) GetAppendXForwardedPort() *wrapperspb.BoolValue { + if x != nil { + return x.AppendXForwardedPort + } + return nil +} + +func (x *HttpConnectionManagerSettings) GetEarlyHeaderManipulation() *headers.EarlyHeaderManipulation { + if x != nil { + return x.EarlyHeaderManipulation + } + return nil +} + +type isHttpConnectionManagerSettings_HeaderFormat interface { + isHttpConnectionManagerSettings_HeaderFormat() +} + +type HttpConnectionManagerSettings_ProperCaseHeaderKeyFormat struct { + // Formats the REQUEST HEADER by proper casing words: the first character and any character following + // a special character will be capitalized if it's an alpha character. For example, + // "content-type" becomes "Content-Type", and "foo$b#$are" becomes "Foo$B#$Are". + // Note that while this results in most headers following conventional casing, certain headers + // are not covered. For example, the "TE" header will be formatted as "Te". + ProperCaseHeaderKeyFormat *wrapperspb.BoolValue `protobuf:"bytes,22,opt,name=proper_case_header_key_format,json=properCaseHeaderKeyFormat,proto3,oneof"` +} + +type HttpConnectionManagerSettings_PreserveCaseHeaderKeyFormat struct { + // Generates configuration for a stateful formatter extension that allows using received headers to + // affect the output of encoding headers. Specifically: preserving REQUEST HEADER case during proxying. + PreserveCaseHeaderKeyFormat *wrapperspb.BoolValue `protobuf:"bytes,31,opt,name=preserve_case_header_key_format,json=preserveCaseHeaderKeyFormat,proto3,oneof"` +} + +func (*HttpConnectionManagerSettings_ProperCaseHeaderKeyFormat) isHttpConnectionManagerSettings_HeaderFormat() { +} + +func (*HttpConnectionManagerSettings_PreserveCaseHeaderKeyFormat) isHttpConnectionManagerSettings_HeaderFormat() { +} + type HttpConnectionManagerSettings_SetCurrentClientCertDetails struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Subject *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=subject,proto3" json:"subject,omitempty"` + Cert *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=cert,proto3" json:"cert,omitempty"` + Chain *wrapperspb.BoolValue `protobuf:"bytes,3,opt,name=chain,proto3" json:"chain,omitempty"` + Dns *wrapperspb.BoolValue `protobuf:"bytes,4,opt,name=dns,proto3" json:"dns,omitempty"` + Uri *wrapperspb.BoolValue `protobuf:"bytes,5,opt,name=uri,proto3" json:"uri,omitempty"` unknownFields protoimpl.UnknownFields - - Subject *wrappers.BoolValue `protobuf:"bytes,1,opt,name=subject,proto3" json:"subject,omitempty"` - Cert bool `protobuf:"varint,2,opt,name=cert,proto3" json:"cert,omitempty"` - Chain bool `protobuf:"varint,3,opt,name=chain,proto3" json:"chain,omitempty"` - Dns bool `protobuf:"varint,4,opt,name=dns,proto3" json:"dns,omitempty"` - Uri bool `protobuf:"varint,5,opt,name=uri,proto3" json:"uri,omitempty"` + sizeCache protoimpl.SizeCache } func (x *HttpConnectionManagerSettings_SetCurrentClientCertDetails) Reset() { *x = HttpConnectionManagerSettings_SetCurrentClientCertDetails{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HttpConnectionManagerSettings_SetCurrentClientCertDetails) String() string { @@ -491,7 +786,7 @@ func (*HttpConnectionManagerSettings_SetCurrentClientCertDetails) ProtoMessage() func (x *HttpConnectionManagerSettings_SetCurrentClientCertDetails) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -506,44 +801,215 @@ func (*HttpConnectionManagerSettings_SetCurrentClientCertDetails) Descriptor() ( return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDescGZIP(), []int{0, 0} } -func (x *HttpConnectionManagerSettings_SetCurrentClientCertDetails) GetSubject() *wrappers.BoolValue { +func (x *HttpConnectionManagerSettings_SetCurrentClientCertDetails) GetSubject() *wrapperspb.BoolValue { if x != nil { return x.Subject } return nil } -func (x *HttpConnectionManagerSettings_SetCurrentClientCertDetails) GetCert() bool { +func (x *HttpConnectionManagerSettings_SetCurrentClientCertDetails) GetCert() *wrapperspb.BoolValue { if x != nil { return x.Cert } - return false + return nil } -func (x *HttpConnectionManagerSettings_SetCurrentClientCertDetails) GetChain() bool { +func (x *HttpConnectionManagerSettings_SetCurrentClientCertDetails) GetChain() *wrapperspb.BoolValue { if x != nil { return x.Chain } - return false + return nil } -func (x *HttpConnectionManagerSettings_SetCurrentClientCertDetails) GetDns() bool { +func (x *HttpConnectionManagerSettings_SetCurrentClientCertDetails) GetDns() *wrapperspb.BoolValue { if x != nil { return x.Dns } - return false + return nil } -func (x *HttpConnectionManagerSettings_SetCurrentClientCertDetails) GetUri() bool { +func (x *HttpConnectionManagerSettings_SetCurrentClientCertDetails) GetUri() *wrapperspb.BoolValue { if x != nil { return x.Uri } - return false + return nil +} + +// Contains setup for Envoy's UuidRequestIdConfig +type HttpConnectionManagerSettings_UuidRequestIdConfigSettings struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Whether the implementation alters the UUID to contain the trace sampling decision as per the + // `UuidRequestIdConfig` message documentation. This defaults to true. If disabled no + // modification to the UUID will be performed. It is important to note that if disabled, + // stable sampling of traces, access logs, etc. will no longer work and only random sampling will + // be possible. + PackTraceReason *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=pack_trace_reason,json=packTraceReason,proto3" json:"pack_trace_reason,omitempty"` + // Set whether to use :ref:`x-request-id` for sampling or not. + // This defaults to true. See the :ref:`context propagation ` + // overview for more information. + UseRequestIdForTraceSampling *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=use_request_id_for_trace_sampling,json=useRequestIdForTraceSampling,proto3" json:"use_request_id_for_trace_sampling,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HttpConnectionManagerSettings_UuidRequestIdConfigSettings) Reset() { + *x = HttpConnectionManagerSettings_UuidRequestIdConfigSettings{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HttpConnectionManagerSettings_UuidRequestIdConfigSettings) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HttpConnectionManagerSettings_UuidRequestIdConfigSettings) ProtoMessage() {} + +func (x *HttpConnectionManagerSettings_UuidRequestIdConfigSettings) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HttpConnectionManagerSettings_UuidRequestIdConfigSettings.ProtoReflect.Descriptor instead. +func (*HttpConnectionManagerSettings_UuidRequestIdConfigSettings) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *HttpConnectionManagerSettings_UuidRequestIdConfigSettings) GetPackTraceReason() *wrapperspb.BoolValue { + if x != nil { + return x.PackTraceReason + } + return nil +} + +func (x *HttpConnectionManagerSettings_UuidRequestIdConfigSettings) GetUseRequestIdForTraceSampling() *wrapperspb.BoolValue { + if x != nil { + return x.UseRequestIdForTraceSampling + } + return nil +} + +// Subnet mask for CIDR ranges +type HttpConnectionManagerSettings_CidrRange struct { + state protoimpl.MessageState `protogen:"open.v1"` + // IPv4 or IPv6 address + AddressPrefix string `protobuf:"bytes,1,opt,name=address_prefix,json=addressPrefix,proto3" json:"address_prefix,omitempty"` + // Length of prefix in bits + PrefixLen *wrapperspb.UInt32Value `protobuf:"bytes,2,opt,name=prefix_len,json=prefixLen,proto3" json:"prefix_len,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HttpConnectionManagerSettings_CidrRange) Reset() { + *x = HttpConnectionManagerSettings_CidrRange{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HttpConnectionManagerSettings_CidrRange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HttpConnectionManagerSettings_CidrRange) ProtoMessage() {} + +func (x *HttpConnectionManagerSettings_CidrRange) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HttpConnectionManagerSettings_CidrRange.ProtoReflect.Descriptor instead. +func (*HttpConnectionManagerSettings_CidrRange) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDescGZIP(), []int{0, 2} +} + +func (x *HttpConnectionManagerSettings_CidrRange) GetAddressPrefix() string { + if x != nil { + return x.AddressPrefix + } + return "" +} + +func (x *HttpConnectionManagerSettings_CidrRange) GetPrefixLen() *wrapperspb.UInt32Value { + if x != nil { + return x.PrefixLen + } + return nil +} + +// Manages Envoy's internal address configuration +type HttpConnectionManagerSettings_InternalAddressConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Whether unix socket addresses should be considered internal + UnixSockets *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=unix_sockets,json=unixSockets,proto3" json:"unix_sockets,omitempty"` + // List of CIDR ranges that are treated as internal + CidrRanges []*HttpConnectionManagerSettings_CidrRange `protobuf:"bytes,2,rep,name=cidr_ranges,json=cidrRanges,proto3" json:"cidr_ranges,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HttpConnectionManagerSettings_InternalAddressConfig) Reset() { + *x = HttpConnectionManagerSettings_InternalAddressConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HttpConnectionManagerSettings_InternalAddressConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HttpConnectionManagerSettings_InternalAddressConfig) ProtoMessage() {} + +func (x *HttpConnectionManagerSettings_InternalAddressConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HttpConnectionManagerSettings_InternalAddressConfig.ProtoReflect.Descriptor instead. +func (*HttpConnectionManagerSettings_InternalAddressConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDescGZIP(), []int{0, 3} +} + +func (x *HttpConnectionManagerSettings_InternalAddressConfig) GetUnixSockets() *wrapperspb.BoolValue { + if x != nil { + return x.UnixSockets + } + return nil +} + +func (x *HttpConnectionManagerSettings_InternalAddressConfig) GetCidrRanges() []*HttpConnectionManagerSettings_CidrRange { + if x != nil { + return x.CidrRanges + } + return nil } var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDesc = string([]byte{ 0x0a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -554,231 +1020,445 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_raw 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2f, 0x74, - 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x5d, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, - 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x75, 0x70, 0x67, - 0x72, 0x61, 0x64, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x75, 0x70, - 0x67, 0x72, 0x61, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0xc3, 0x13, 0x0a, 0x1d, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x78, 0x66, 0x66, 0x5f, 0x61, 0x70, - 0x70, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x6b, 0x69, 0x70, - 0x58, 0x66, 0x66, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x69, 0x61, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x69, 0x61, 0x12, 0x2f, 0x0a, 0x14, 0x78, - 0x66, 0x66, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x68, - 0x6f, 0x70, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x78, 0x66, 0x66, 0x4e, 0x75, - 0x6d, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x48, 0x6f, 0x70, 0x73, 0x12, 0x48, 0x0a, 0x12, - 0x75, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x75, 0x73, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4a, 0x0a, 0x13, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x11, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x31, 0x30, 0x30, 0x5f, - 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x31, 0x30, 0x30, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, - 0x12, 0x49, 0x0a, 0x13, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x6c, 0x65, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4b, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, + 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x5d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcb, 0x27, 0x0a, 0x1d, 0x48, 0x74, 0x74, 0x70, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x73, 0x6b, 0x69, 0x70, + 0x5f, 0x78, 0x66, 0x66, 0x5f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x73, + 0x6b, 0x69, 0x70, 0x58, 0x66, 0x66, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x12, 0x2e, 0x0a, 0x03, + 0x76, 0x69, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x76, 0x69, 0x61, 0x12, 0x4d, 0x0a, 0x14, + 0x78, 0x66, 0x66, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, + 0x68, 0x6f, 0x70, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, + 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x78, 0x66, 0x66, 0x4e, 0x75, 0x6d, + 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x48, 0x6f, 0x70, 0x73, 0x12, 0x48, 0x0a, 0x12, 0x75, + 0x73, 0x65, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x10, 0x75, 0x73, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4a, 0x0a, 0x13, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, + 0x64, 0x12, 0x48, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x31, 0x30, 0x30, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x49, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x3c, 0x0a, 0x0c, 0x69, - 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x64, - 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x51, 0x0a, 0x16, 0x6d, 0x61, 0x78, - 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x5f, 0x6b, 0x62, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, - 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4b, 0x62, 0x12, 0x42, 0x0a, 0x0f, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x78, 0x79, + 0x31, 0x30, 0x30, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x12, 0x49, 0x0a, 0x13, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x6c, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x3c, 0x0a, 0x0c, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x12, 0x51, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x6b, 0x62, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x4b, 0x62, 0x12, 0x42, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x51, 0x0a, 0x17, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x3e, + 0x0a, 0x0d, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x12, 0x3e, 0x0a, 0x0d, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0c, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x12, 0x4d, 0x0a, 0x15, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x6f, 0x73, - 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x64, 0x65, 0x6c, 0x61, - 0x79, 0x65, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, - 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x24, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, - 0x31, 0x30, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, - 0x48, 0x74, 0x74, 0x70, 0x31, 0x30, 0x12, 0x36, 0x0a, 0x18, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, - 0x31, 0x30, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x48, 0x6f, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x48, 0x74, 0x74, 0x70, 0x31, 0x30, 0x12, 0x40, - 0x0a, 0x1d, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, - 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x43, 0x61, 0x73, - 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x12, 0x4f, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, - 0x67, 0x12, 0x8f, 0x01, 0x0a, 0x1b, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x50, 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, - 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x18, 0x66, 0x6f, 0x72, 0x77, 0x61, - 0x72, 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x12, 0x99, 0x01, 0x0a, 0x1f, 0x73, 0x65, 0x74, 0x5f, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x5f, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x53, 0x2e, + 0x52, 0x0c, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x4d, + 0x0a, 0x15, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x65, + 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x3d, 0x0a, + 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x13, + 0x73, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x61, 0x6e, 0x79, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x73, 0x74, 0x72, 0x69, 0x70, 0x41, 0x6e, 0x79, 0x48, + 0x6f, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x40, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x65, 0x70, + 0x74, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x31, 0x30, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x61, 0x63, 0x63, + 0x65, 0x70, 0x74, 0x48, 0x74, 0x74, 0x70, 0x31, 0x30, 0x12, 0x54, 0x0a, 0x18, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x68, 0x74, + 0x74, 0x70, 0x5f, 0x31, 0x30, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x48, 0x74, 0x74, 0x70, 0x31, 0x30, 0x12, + 0x4c, 0x0a, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x43, 0x0a, + 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x73, + 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6c, 0x65, + 0x72, 0x73, 0x12, 0x5e, 0x0a, 0x1d, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x61, 0x73, + 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x19, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x43, + 0x61, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x12, 0x62, 0x0a, 0x1f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x5f, 0x63, + 0x61, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, + 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x1b, 0x70, 0x72, 0x65, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x43, 0x61, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4b, 0x65, 0x79, + 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x4f, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, + 0x67, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, + 0x67, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x54, + 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x07, + 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x8f, 0x01, 0x0a, 0x1b, 0x66, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x5f, + 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x50, 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x52, 0x1b, 0x73, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, - 0x3f, 0x0a, 0x1c, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x45, - 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, - 0x12, 0x58, 0x0a, 0x08, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x15, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x75, 0x70, - 0x67, 0x72, 0x61, 0x64, 0x65, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x08, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x17, 0x6d, 0x61, - 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, - 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x64, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x94, 0x01, 0x0a, 0x1c, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x52, 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x1a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x9c, 0x01, 0x0a, 0x20, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x65, 0x73, - 0x63, 0x61, 0x70, 0x65, 0x64, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x54, 0x2e, 0x68, 0x63, 0x6d, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, + 0x18, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, + 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x99, 0x01, 0x0a, 0x1f, 0x73, 0x65, + 0x74, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x5f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x13, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x53, 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, + 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x53, 0x65, 0x74, + 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, + 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x1b, 0x73, 0x65, 0x74, 0x43, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x5b, 0x0a, 0x1c, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, + 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x19, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x49, 0x64, 0x12, 0x58, 0x0a, 0x08, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x15, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, + 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x08, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x17, + 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x49, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x64, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x61, + 0x78, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x9a, 0x01, 0x0a, 0x1f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x53, + 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x57, + 0x69, 0x74, 0x68, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x1c, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, + 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x5b, 0x0a, 0x1b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x73, 0x50, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x94, + 0x01, 0x0a, 0x1c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x19, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x52, 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1a, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x9c, 0x01, 0x0a, 0x20, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x77, + 0x69, 0x74, 0x68, 0x5f, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x64, 0x5f, 0x73, 0x6c, 0x61, 0x73, + 0x68, 0x65, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x54, 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x57, 0x69, + 0x74, 0x68, 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, 0x64, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1c, 0x70, 0x61, 0x74, 0x68, 0x57, 0x69, 0x74, 0x68, + 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, 0x64, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x60, 0x0a, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x63, 0x6f, 0x64, + 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x5f, + 0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, 0x65, 0x72, 0x67, 0x65, + 0x53, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x0e, 0x6e, 0x6f, 0x72, 0x6d, 0x61, + 0x6c, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x6e, 0x6f, 0x72, + 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x88, 0x01, 0x0a, 0x16, 0x75, + 0x75, 0x69, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x53, 0x2e, 0x68, 0x63, + 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x55, 0x75, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x49, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x52, 0x13, 0x75, 0x75, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x69, 0x0a, 0x16, 0x68, 0x74, 0x74, 0x70, 0x32, 0x5f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x57, 0x69, 0x74, 0x68, 0x45, 0x73, 0x63, 0x61, - 0x70, 0x65, 0x64, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x1c, 0x70, 0x61, 0x74, 0x68, 0x57, 0x69, 0x74, 0x68, 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, - 0x64, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xa1, - 0x01, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6c, 0x69, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x32, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x14, 0x68, 0x74, 0x74, 0x70, + 0x32, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x85, 0x01, 0x0a, 0x17, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x26, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, + 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x15, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x51, 0x0a, 0x17, 0x61, 0x70, 0x70, 0x65, + 0x6e, 0x64, 0x5f, 0x78, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x58, 0x46, 0x6f, + 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x71, 0x0a, 0x19, 0x65, + 0x61, 0x72, 0x6c, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x69, + 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, + 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x61, + 0x72, 0x6c, 0x79, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x69, 0x70, 0x75, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x69, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x91, + 0x02, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x34, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x73, 0x75, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x04, 0x63, 0x65, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x61, 0x69, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x10, - 0x0a, 0x03, 0x64, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x64, 0x6e, 0x73, - 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x75, - 0x72, 0x69, 0x22, 0x79, 0x0a, 0x18, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x0c, - 0x0a, 0x08, 0x53, 0x41, 0x4e, 0x49, 0x54, 0x49, 0x5a, 0x45, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, - 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x12, - 0x0a, 0x0e, 0x41, 0x50, 0x50, 0x45, 0x4e, 0x44, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, - 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x41, 0x4e, 0x49, 0x54, 0x49, 0x5a, 0x45, 0x5f, 0x53, - 0x45, 0x54, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x4c, 0x57, 0x41, 0x59, 0x53, 0x5f, 0x46, - 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x04, 0x22, 0x53, 0x0a, - 0x1a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0d, 0x0a, 0x09, 0x4f, - 0x56, 0x45, 0x52, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x50, - 0x50, 0x45, 0x4e, 0x44, 0x5f, 0x49, 0x46, 0x5f, 0x41, 0x42, 0x53, 0x45, 0x4e, 0x54, 0x10, 0x01, - 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x41, 0x53, 0x53, 0x5f, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, - 0x10, 0x02, 0x22, 0xa0, 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x68, 0x57, 0x69, 0x74, 0x68, 0x45, - 0x73, 0x63, 0x61, 0x70, 0x65, 0x64, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x1f, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x43, 0x5f, 0x44, - 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4b, 0x45, 0x45, 0x50, - 0x5f, 0x55, 0x4e, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, - 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x02, - 0x12, 0x19, 0x0a, 0x15, 0x55, 0x4e, 0x45, 0x53, 0x43, 0x41, 0x50, 0x45, 0x5f, 0x41, 0x4e, 0x44, - 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x55, - 0x4e, 0x45, 0x53, 0x43, 0x41, 0x50, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x46, 0x4f, 0x52, 0x57, - 0x41, 0x52, 0x44, 0x10, 0x04, 0x42, 0x4a, 0x5a, 0x40, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x63, 0x6d, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, - 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x63, 0x65, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, + 0x63, 0x65, 0x72, 0x74, 0x12, 0x30, 0x0a, 0x05, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x05, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x03, 0x64, 0x6e, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x03, 0x64, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x75, + 0x72, 0x69, 0x1a, 0xca, 0x01, 0x0a, 0x1b, 0x55, 0x75, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x49, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x12, 0x46, 0x0a, 0x11, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, + 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x54, + 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x63, 0x0a, 0x21, 0x75, 0x73, + 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x66, 0x6f, 0x72, + 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x1c, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x46, + 0x6f, 0x72, 0x54, 0x72, 0x61, 0x63, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x1a, + 0x6f, 0x0a, 0x09, 0x43, 0x69, 0x64, 0x72, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x12, 0x3b, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, + 0x1a, 0xba, 0x01, 0x0a, 0x15, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3d, 0x0a, 0x0c, 0x75, 0x6e, + 0x69, 0x78, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x75, 0x6e, + 0x69, 0x78, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x62, 0x0a, 0x0b, 0x63, 0x69, 0x64, + 0x72, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, + 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x69, 0x64, 0x72, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x52, 0x0a, 0x63, 0x69, 0x64, 0x72, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0x79, 0x0a, + 0x18, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, + 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x41, 0x4e, + 0x49, 0x54, 0x49, 0x5a, 0x45, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x4f, 0x52, 0x57, 0x41, + 0x52, 0x44, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x50, 0x50, + 0x45, 0x4e, 0x44, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x10, 0x02, 0x12, 0x10, 0x0a, + 0x0c, 0x53, 0x41, 0x4e, 0x49, 0x54, 0x49, 0x5a, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x03, 0x12, + 0x17, 0x0a, 0x13, 0x41, 0x4c, 0x57, 0x41, 0x59, 0x53, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, + 0x44, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x04, 0x22, 0x53, 0x0a, 0x1a, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x56, 0x45, 0x52, 0x57, 0x52, + 0x49, 0x54, 0x45, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x50, 0x50, 0x45, 0x4e, 0x44, 0x5f, + 0x49, 0x46, 0x5f, 0x41, 0x42, 0x53, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x50, + 0x41, 0x53, 0x53, 0x5f, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x10, 0x02, 0x22, 0x54, 0x0a, + 0x1b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x55, 0x6e, 0x64, 0x65, + 0x72, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x09, 0x0a, 0x05, + 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x4a, 0x45, 0x43, + 0x54, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, + 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, + 0x52, 0x10, 0x02, 0x22, 0xa0, 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x68, 0x57, 0x69, 0x74, 0x68, + 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, 0x64, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x1f, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x4d, 0x45, 0x4e, + 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x43, 0x5f, + 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4b, 0x45, 0x45, + 0x50, 0x5f, 0x55, 0x4e, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x01, 0x12, 0x12, 0x0a, + 0x0e, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, + 0x02, 0x12, 0x19, 0x0a, 0x15, 0x55, 0x4e, 0x45, 0x53, 0x43, 0x41, 0x50, 0x45, 0x5f, 0x41, 0x4e, + 0x44, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, + 0x55, 0x4e, 0x45, 0x53, 0x43, 0x41, 0x50, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x46, 0x4f, 0x52, + 0x57, 0x41, 0x52, 0x44, 0x10, 0x04, 0x22, 0x2b, 0x0a, 0x09, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x09, 0x0a, + 0x05, 0x48, 0x54, 0x54, 0x50, 0x31, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x48, 0x54, 0x54, 0x50, + 0x32, 0x10, 0x02, 0x42, 0x0f, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x42, 0x4e, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, + 0x04, 0x01, 0x5a, 0x40, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x68, 0x63, 0x6d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_enumTypes = make([]protoimpl.EnumInfo, 5) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_goTypes = []any{ (HttpConnectionManagerSettings_ForwardClientCertDetails)(0), // 0: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.ForwardClientCertDetails (HttpConnectionManagerSettings_ServerHeaderTransformation)(0), // 1: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.ServerHeaderTransformation - (HttpConnectionManagerSettings_PathWithEscapedSlashesAction)(0), // 2: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.PathWithEscapedSlashesAction - (*HttpConnectionManagerSettings)(nil), // 3: hcm.options.gloo.solo.io.HttpConnectionManagerSettings - (*HttpConnectionManagerSettings_SetCurrentClientCertDetails)(nil), // 4: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.SetCurrentClientCertDetails - (*wrappers.BoolValue)(nil), // 5: google.protobuf.BoolValue - (*duration.Duration)(nil), // 6: google.protobuf.Duration - (*wrappers.UInt32Value)(nil), // 7: google.protobuf.UInt32Value - (*tracing.ListenerTracingSettings)(nil), // 8: tracing.options.gloo.solo.io.ListenerTracingSettings - (*protocol_upgrade.ProtocolUpgradeConfig)(nil), // 9: protocol_upgrade.options.gloo.solo.io.ProtocolUpgradeConfig + (HttpConnectionManagerSettings_HeadersWithUnderscoreAction)(0), // 2: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.HeadersWithUnderscoreAction + (HttpConnectionManagerSettings_PathWithEscapedSlashesAction)(0), // 3: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.PathWithEscapedSlashesAction + (HttpConnectionManagerSettings_CodecType)(0), // 4: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.CodecType + (*HttpConnectionManagerSettings)(nil), // 5: hcm.options.gloo.solo.io.HttpConnectionManagerSettings + (*HttpConnectionManagerSettings_SetCurrentClientCertDetails)(nil), // 6: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.SetCurrentClientCertDetails + (*HttpConnectionManagerSettings_UuidRequestIdConfigSettings)(nil), // 7: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.UuidRequestIdConfigSettings + (*HttpConnectionManagerSettings_CidrRange)(nil), // 8: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.CidrRange + (*HttpConnectionManagerSettings_InternalAddressConfig)(nil), // 9: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.InternalAddressConfig + (*wrapperspb.BoolValue)(nil), // 10: google.protobuf.BoolValue + (*wrapperspb.StringValue)(nil), // 11: google.protobuf.StringValue + (*wrapperspb.UInt32Value)(nil), // 12: google.protobuf.UInt32Value + (*durationpb.Duration)(nil), // 13: google.protobuf.Duration + (*tracing.ListenerTracingSettings)(nil), // 14: tracing.options.gloo.solo.io.ListenerTracingSettings + (*protocol_upgrade.ProtocolUpgradeConfig)(nil), // 15: protocol_upgrade.options.gloo.solo.io.ProtocolUpgradeConfig + (*protocol.Http2ProtocolOptions)(nil), // 16: protocol.options.gloo.solo.io.Http2ProtocolOptions + (*headers.EarlyHeaderManipulation)(nil), // 17: headers.options.gloo.solo.io.EarlyHeaderManipulation } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_depIdxs = []int32{ - 5, // 0: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.use_remote_address:type_name -> google.protobuf.BoolValue - 5, // 1: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.generate_request_id:type_name -> google.protobuf.BoolValue - 6, // 2: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.stream_idle_timeout:type_name -> google.protobuf.Duration - 6, // 3: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.idle_timeout:type_name -> google.protobuf.Duration - 7, // 4: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.max_request_headers_kb:type_name -> google.protobuf.UInt32Value - 6, // 5: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.request_timeout:type_name -> google.protobuf.Duration - 6, // 6: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.drain_timeout:type_name -> google.protobuf.Duration - 6, // 7: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.delayed_close_timeout:type_name -> google.protobuf.Duration - 8, // 8: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.tracing:type_name -> tracing.options.gloo.solo.io.ListenerTracingSettings - 0, // 9: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.forward_client_cert_details:type_name -> hcm.options.gloo.solo.io.HttpConnectionManagerSettings.ForwardClientCertDetails - 4, // 10: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.set_current_client_cert_details:type_name -> hcm.options.gloo.solo.io.HttpConnectionManagerSettings.SetCurrentClientCertDetails - 9, // 11: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.upgrades:type_name -> protocol_upgrade.options.gloo.solo.io.ProtocolUpgradeConfig - 6, // 12: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.max_connection_duration:type_name -> google.protobuf.Duration - 6, // 13: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.max_stream_duration:type_name -> google.protobuf.Duration - 1, // 14: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.server_header_transformation:type_name -> hcm.options.gloo.solo.io.HttpConnectionManagerSettings.ServerHeaderTransformation - 2, // 15: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.path_with_escaped_slashes_action:type_name -> hcm.options.gloo.solo.io.HttpConnectionManagerSettings.PathWithEscapedSlashesAction - 5, // 16: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.SetCurrentClientCertDetails.subject:type_name -> google.protobuf.BoolValue - 17, // [17:17] is the sub-list for method output_type - 17, // [17:17] is the sub-list for method input_type - 17, // [17:17] is the sub-list for extension type_name - 17, // [17:17] is the sub-list for extension extendee - 0, // [0:17] is the sub-list for field type_name + 10, // 0: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.skip_xff_append:type_name -> google.protobuf.BoolValue + 11, // 1: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.via:type_name -> google.protobuf.StringValue + 12, // 2: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.xff_num_trusted_hops:type_name -> google.protobuf.UInt32Value + 10, // 3: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.use_remote_address:type_name -> google.protobuf.BoolValue + 10, // 4: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.generate_request_id:type_name -> google.protobuf.BoolValue + 10, // 5: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.proxy_100_continue:type_name -> google.protobuf.BoolValue + 13, // 6: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.stream_idle_timeout:type_name -> google.protobuf.Duration + 13, // 7: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.idle_timeout:type_name -> google.protobuf.Duration + 12, // 8: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.max_request_headers_kb:type_name -> google.protobuf.UInt32Value + 13, // 9: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.request_timeout:type_name -> google.protobuf.Duration + 13, // 10: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.request_headers_timeout:type_name -> google.protobuf.Duration + 13, // 11: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.drain_timeout:type_name -> google.protobuf.Duration + 13, // 12: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.delayed_close_timeout:type_name -> google.protobuf.Duration + 11, // 13: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.server_name:type_name -> google.protobuf.StringValue + 10, // 14: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.strip_any_host_port:type_name -> google.protobuf.BoolValue + 10, // 15: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.accept_http_10:type_name -> google.protobuf.BoolValue + 11, // 16: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.default_host_for_http_10:type_name -> google.protobuf.StringValue + 10, // 17: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.allow_chunked_length:type_name -> google.protobuf.BoolValue + 10, // 18: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.enable_trailers:type_name -> google.protobuf.BoolValue + 10, // 19: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.proper_case_header_key_format:type_name -> google.protobuf.BoolValue + 10, // 20: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.preserve_case_header_key_format:type_name -> google.protobuf.BoolValue + 14, // 21: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.tracing:type_name -> tracing.options.gloo.solo.io.ListenerTracingSettings + 0, // 22: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.forward_client_cert_details:type_name -> hcm.options.gloo.solo.io.HttpConnectionManagerSettings.ForwardClientCertDetails + 6, // 23: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.set_current_client_cert_details:type_name -> hcm.options.gloo.solo.io.HttpConnectionManagerSettings.SetCurrentClientCertDetails + 10, // 24: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.preserve_external_request_id:type_name -> google.protobuf.BoolValue + 15, // 25: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.upgrades:type_name -> protocol_upgrade.options.gloo.solo.io.ProtocolUpgradeConfig + 13, // 26: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.max_connection_duration:type_name -> google.protobuf.Duration + 13, // 27: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.max_stream_duration:type_name -> google.protobuf.Duration + 12, // 28: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.max_headers_count:type_name -> google.protobuf.UInt32Value + 2, // 29: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.headers_with_underscores_action:type_name -> hcm.options.gloo.solo.io.HttpConnectionManagerSettings.HeadersWithUnderscoreAction + 12, // 30: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.max_requests_per_connection:type_name -> google.protobuf.UInt32Value + 1, // 31: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.server_header_transformation:type_name -> hcm.options.gloo.solo.io.HttpConnectionManagerSettings.ServerHeaderTransformation + 3, // 32: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.path_with_escaped_slashes_action:type_name -> hcm.options.gloo.solo.io.HttpConnectionManagerSettings.PathWithEscapedSlashesAction + 4, // 33: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.codec_type:type_name -> hcm.options.gloo.solo.io.HttpConnectionManagerSettings.CodecType + 10, // 34: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.merge_slashes:type_name -> google.protobuf.BoolValue + 10, // 35: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.normalize_path:type_name -> google.protobuf.BoolValue + 7, // 36: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.uuid_request_id_config:type_name -> hcm.options.gloo.solo.io.HttpConnectionManagerSettings.UuidRequestIdConfigSettings + 16, // 37: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.http2_protocol_options:type_name -> protocol.options.gloo.solo.io.Http2ProtocolOptions + 9, // 38: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.internal_address_config:type_name -> hcm.options.gloo.solo.io.HttpConnectionManagerSettings.InternalAddressConfig + 10, // 39: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.append_x_forwarded_port:type_name -> google.protobuf.BoolValue + 17, // 40: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.early_header_manipulation:type_name -> headers.options.gloo.solo.io.EarlyHeaderManipulation + 10, // 41: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.SetCurrentClientCertDetails.subject:type_name -> google.protobuf.BoolValue + 10, // 42: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.SetCurrentClientCertDetails.cert:type_name -> google.protobuf.BoolValue + 10, // 43: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.SetCurrentClientCertDetails.chain:type_name -> google.protobuf.BoolValue + 10, // 44: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.SetCurrentClientCertDetails.dns:type_name -> google.protobuf.BoolValue + 10, // 45: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.SetCurrentClientCertDetails.uri:type_name -> google.protobuf.BoolValue + 10, // 46: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.UuidRequestIdConfigSettings.pack_trace_reason:type_name -> google.protobuf.BoolValue + 10, // 47: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.UuidRequestIdConfigSettings.use_request_id_for_trace_sampling:type_name -> google.protobuf.BoolValue + 12, // 48: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.CidrRange.prefix_len:type_name -> google.protobuf.UInt32Value + 10, // 49: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.InternalAddressConfig.unix_sockets:type_name -> google.protobuf.BoolValue + 8, // 50: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.InternalAddressConfig.cidr_ranges:type_name -> hcm.options.gloo.solo.io.HttpConnectionManagerSettings.CidrRange + 51, // [51:51] is the sub-list for method output_type + 51, // [51:51] is the sub-list for method input_type + 51, // [51:51] is the sub-list for extension type_name + 51, // [51:51] is the sub-list for extension extendee + 0, // [0:51] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_init() } @@ -786,39 +1466,17 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_in if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HttpConnectionManagerSettings); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HttpConnectionManagerSettings_SetCurrentClientCertDetails); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_msgTypes[0].OneofWrappers = []any{ + (*HttpConnectionManagerSettings_ProperCaseHeaderKeyFormat)(nil), + (*HttpConnectionManagerSettings_PreserveCaseHeaderKeyFormat)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDesc, - NumEnums: 3, - NumMessages: 2, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDesc)), + NumEnums: 5, + NumMessages: 5, NumExtensions: 0, NumServices: 0, }, @@ -828,7 +1486,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_in MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.hash.go index dd51564d0..decc4112d 100644 --- a/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HttpConnectionManagerSettings) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -38,254 +42,996 @@ func (m *HttpConnectionManagerSettings) Hash(hasher hash.Hash64) (uint64, error) return 0, err } - err = binary.Write(hasher, binary.LittleEndian, m.GetSkipXffAppend()) + if h, ok := interface{}(m.GetSkipXffAppend()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SkipXffAppend")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSkipXffAppend(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SkipXffAppend")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetVia()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Via")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetVia(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Via")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetXffNumTrustedHops()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("XffNumTrustedHops")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetXffNumTrustedHops(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("XffNumTrustedHops")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetUseRemoteAddress()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UseRemoteAddress")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUseRemoteAddress(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UseRemoteAddress")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetGenerateRequestId()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GenerateRequestId")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGenerateRequestId(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GenerateRequestId")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetProxy_100Continue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Proxy_100Continue")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProxy_100Continue(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Proxy_100Continue")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetStreamIdleTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("StreamIdleTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStreamIdleTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("StreamIdleTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetIdleTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIdleTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxRequestHeadersKb()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxRequestHeadersKb")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxRequestHeadersKb(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxRequestHeadersKb")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRequestTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRequestHeadersTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestHeadersTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestHeadersTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestHeadersTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDrainTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DrainTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDrainTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DrainTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDelayedCloseTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DelayedCloseTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDelayedCloseTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DelayedCloseTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetServerName()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServerName")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetServerName(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ServerName")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetStripAnyHostPort()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("StripAnyHostPort")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStripAnyHostPort(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("StripAnyHostPort")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAcceptHttp_10()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AcceptHttp_10")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAcceptHttp_10(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AcceptHttp_10")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDefaultHostForHttp_10()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DefaultHostForHttp_10")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDefaultHostForHttp_10(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DefaultHostForHttp_10")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAllowChunkedLength()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowChunkedLength")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAllowChunkedLength(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AllowChunkedLength")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEnableTrailers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnableTrailers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnableTrailers(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EnableTrailers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTracing()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Tracing")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTracing(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Tracing")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetForwardClientCertDetails()) if err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetVia())); err != nil { - return 0, err + if h, ok := interface{}(m.GetSetCurrentClientCertDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SetCurrentClientCertDetails")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSetCurrentClientCertDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SetCurrentClientCertDetails")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPreserveExternalRequestId()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PreserveExternalRequestId")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPreserveExternalRequestId(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PreserveExternalRequestId")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetUpgrades() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetMaxConnectionDuration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxConnectionDuration")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxConnectionDuration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxConnectionDuration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxStreamDuration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxStreamDuration")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxStreamDuration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxStreamDuration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxHeadersCount()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxHeadersCount")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxHeadersCount(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxHeadersCount")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } - err = binary.Write(hasher, binary.LittleEndian, m.GetXffNumTrustedHops()) + err = binary.Write(hasher, binary.LittleEndian, m.GetHeadersWithUnderscoresAction()) if err != nil { return 0, err } - if h, ok := interface{}(m.GetUseRemoteAddress()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetMaxRequestsPerConnection()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxRequestsPerConnection")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetUseRemoteAddress(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMaxRequestsPerConnection(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MaxRequestsPerConnection")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - if h, ok := interface{}(m.GetGenerateRequestId()).(safe_hasher.SafeHasher); ok { + err = binary.Write(hasher, binary.LittleEndian, m.GetServerHeaderTransformation()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetPathWithEscapedSlashesAction()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetCodecType()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMergeSlashes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MergeSlashes")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetGenerateRequestId(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMergeSlashes(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MergeSlashes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - err = binary.Write(hasher, binary.LittleEndian, m.GetProxy_100Continue()) - if err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetStreamIdleTimeout()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetNormalizePath()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("NormalizePath")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetStreamIdleTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetNormalizePath(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("NormalizePath")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - if h, ok := interface{}(m.GetIdleTimeout()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetUuidRequestIdConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UuidRequestIdConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetIdleTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetUuidRequestIdConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("UuidRequestIdConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - if h, ok := interface{}(m.GetMaxRequestHeadersKb()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetHttp2ProtocolOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Http2ProtocolOptions")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMaxRequestHeadersKb(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHttp2ProtocolOptions(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Http2ProtocolOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - if h, ok := interface{}(m.GetRequestTimeout()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetInternalAddressConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InternalAddressConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRequestTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetInternalAddressConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("InternalAddressConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - if h, ok := interface{}(m.GetDrainTimeout()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetAppendXForwardedPort()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AppendXForwardedPort")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDrainTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAppendXForwardedPort(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AppendXForwardedPort")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - if h, ok := interface{}(m.GetDelayedCloseTimeout()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetEarlyHeaderManipulation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EarlyHeaderManipulation")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDelayedCloseTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetEarlyHeaderManipulation(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("EarlyHeaderManipulation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - if _, err = hasher.Write([]byte(m.GetServerName())); err != nil { - return 0, err - } + switch m.HeaderFormat.(type) { - err = binary.Write(hasher, binary.LittleEndian, m.GetAcceptHttp_10()) - if err != nil { - return 0, err - } + case *HttpConnectionManagerSettings_ProperCaseHeaderKeyFormat: + + if h, ok := interface{}(m.GetProperCaseHeaderKeyFormat()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProperCaseHeaderKeyFormat")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProperCaseHeaderKeyFormat(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ProperCaseHeaderKeyFormat")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *HttpConnectionManagerSettings_PreserveCaseHeaderKeyFormat: + + if h, ok := interface{}(m.GetPreserveCaseHeaderKeyFormat()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PreserveCaseHeaderKeyFormat")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPreserveCaseHeaderKeyFormat(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PreserveCaseHeaderKeyFormat")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } - if _, err = hasher.Write([]byte(m.GetDefaultHostForHttp_10())); err != nil { - return 0, err } - err = binary.Write(hasher, binary.LittleEndian, m.GetProperCaseHeaderKeyFormat()) - if err != nil { + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HttpConnectionManagerSettings_SetCurrentClientCertDetails) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("hcm.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/hcm.HttpConnectionManagerSettings_SetCurrentClientCertDetails")); err != nil { return 0, err } - if h, ok := interface{}(m.GetTracing()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetSubject()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Subject")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTracing(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSubject(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Subject")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - err = binary.Write(hasher, binary.LittleEndian, m.GetForwardClientCertDetails()) - if err != nil { - return 0, err + if h, ok := interface{}(m.GetCert()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cert")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCert(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Cert")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } - if h, ok := interface{}(m.GetSetCurrentClientCertDetails()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetChain()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Chain")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSetCurrentClientCertDetails(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetChain(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Chain")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - err = binary.Write(hasher, binary.LittleEndian, m.GetPreserveExternalRequestId()) - if err != nil { - return 0, err + if h, ok := interface{}(m.GetDns()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Dns")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDns(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Dns")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } - for _, v := range m.GetUpgrades() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { + if h, ok := interface{}(m.GetUri()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Uri")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUri(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Uri")); err != nil { return 0, err } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } } } + } + + return hasher.Sum64(), nil +} +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HttpConnectionManagerSettings_UuidRequestIdConfigSettings) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("hcm.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/hcm.HttpConnectionManagerSettings_UuidRequestIdConfigSettings")); err != nil { + return 0, err } - if h, ok := interface{}(m.GetMaxConnectionDuration()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetPackTraceReason()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PackTraceReason")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMaxConnectionDuration(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPackTraceReason(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PackTraceReason")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - if h, ok := interface{}(m.GetMaxStreamDuration()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetUseRequestIdForTraceSampling()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UseRequestIdForTraceSampling")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMaxStreamDuration(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetUseRequestIdForTraceSampling(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("UseRequestIdForTraceSampling")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - err = binary.Write(hasher, binary.LittleEndian, m.GetServerHeaderTransformation()) - if err != nil { + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HttpConnectionManagerSettings_CidrRange) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("hcm.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/hcm.HttpConnectionManagerSettings_CidrRange")); err != nil { return 0, err } - err = binary.Write(hasher, binary.LittleEndian, m.GetPathWithEscapedSlashesAction()) - if err != nil { + if _, err = hasher.Write([]byte(m.GetAddressPrefix())); err != nil { return 0, err } + if h, ok := interface{}(m.GetPrefixLen()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PrefixLen")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPrefixLen(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PrefixLen")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + return hasher.Sum64(), nil } // Hash function -func (m *HttpConnectionManagerSettings_SetCurrentClientCertDetails) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HttpConnectionManagerSettings_InternalAddressConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -293,42 +1039,52 @@ func (m *HttpConnectionManagerSettings_SetCurrentClientCertDetails) Hash(hasher hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("hcm.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/hcm.HttpConnectionManagerSettings_SetCurrentClientCertDetails")); err != nil { + if _, err = hasher.Write([]byte("hcm.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/hcm.HttpConnectionManagerSettings_InternalAddressConfig")); err != nil { return 0, err } - if h, ok := interface{}(m.GetSubject()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetUnixSockets()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UnixSockets")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSubject(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetUnixSockets(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("UnixSockets")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - err = binary.Write(hasher, binary.LittleEndian, m.GetCert()) - if err != nil { - return 0, err - } - - err = binary.Write(hasher, binary.LittleEndian, m.GetChain()) - if err != nil { - return 0, err - } + for _, v := range m.GetCidrRanges() { - err = binary.Write(hasher, binary.LittleEndian, m.GetDns()) - if err != nil { - return 0, err - } + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } - err = binary.Write(hasher, binary.LittleEndian, m.GetUri()) - if err != nil { - return 0, err } return hasher.Sum64(), nil diff --git a/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.uniquehash.go new file mode 100644 index 000000000..ee7dd8868 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.uniquehash.go @@ -0,0 +1,1118 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/hcm/hcm.proto + +package hcm + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HttpConnectionManagerSettings) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("hcm.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/hcm.HttpConnectionManagerSettings")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSkipXffAppend()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SkipXffAppend")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSkipXffAppend(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SkipXffAppend")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetVia()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Via")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetVia(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Via")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetXffNumTrustedHops()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("XffNumTrustedHops")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetXffNumTrustedHops(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("XffNumTrustedHops")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetUseRemoteAddress()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UseRemoteAddress")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUseRemoteAddress(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UseRemoteAddress")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetGenerateRequestId()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GenerateRequestId")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGenerateRequestId(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GenerateRequestId")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetProxy_100Continue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Proxy_100Continue")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProxy_100Continue(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Proxy_100Continue")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetStreamIdleTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("StreamIdleTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStreamIdleTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("StreamIdleTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetIdleTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIdleTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxRequestHeadersKb()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxRequestHeadersKb")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxRequestHeadersKb(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxRequestHeadersKb")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRequestTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRequestHeadersTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestHeadersTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestHeadersTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestHeadersTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDrainTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DrainTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDrainTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DrainTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDelayedCloseTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DelayedCloseTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDelayedCloseTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DelayedCloseTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetServerName()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServerName")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetServerName(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ServerName")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetStripAnyHostPort()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("StripAnyHostPort")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStripAnyHostPort(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("StripAnyHostPort")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAcceptHttp_10()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AcceptHttp_10")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAcceptHttp_10(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AcceptHttp_10")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDefaultHostForHttp_10()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DefaultHostForHttp_10")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDefaultHostForHttp_10(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DefaultHostForHttp_10")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAllowChunkedLength()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowChunkedLength")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAllowChunkedLength(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AllowChunkedLength")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEnableTrailers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnableTrailers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnableTrailers(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EnableTrailers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTracing()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Tracing")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTracing(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Tracing")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("ForwardClientCertDetails")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetForwardClientCertDetails()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSetCurrentClientCertDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SetCurrentClientCertDetails")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSetCurrentClientCertDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SetCurrentClientCertDetails")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPreserveExternalRequestId()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PreserveExternalRequestId")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPreserveExternalRequestId(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PreserveExternalRequestId")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Upgrades")); err != nil { + return 0, err + } + for i, v := range m.GetUpgrades() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetMaxConnectionDuration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxConnectionDuration")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxConnectionDuration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxConnectionDuration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxStreamDuration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxStreamDuration")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxStreamDuration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxStreamDuration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxHeadersCount()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxHeadersCount")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxHeadersCount(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxHeadersCount")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("HeadersWithUnderscoresAction")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetHeadersWithUnderscoresAction()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxRequestsPerConnection()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxRequestsPerConnection")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxRequestsPerConnection(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxRequestsPerConnection")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("ServerHeaderTransformation")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetServerHeaderTransformation()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("PathWithEscapedSlashesAction")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPathWithEscapedSlashesAction()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CodecType")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetCodecType()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMergeSlashes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MergeSlashes")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMergeSlashes(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MergeSlashes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetNormalizePath()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("NormalizePath")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetNormalizePath(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("NormalizePath")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetUuidRequestIdConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UuidRequestIdConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUuidRequestIdConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UuidRequestIdConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHttp2ProtocolOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Http2ProtocolOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttp2ProtocolOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Http2ProtocolOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetInternalAddressConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InternalAddressConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInternalAddressConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("InternalAddressConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAppendXForwardedPort()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AppendXForwardedPort")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAppendXForwardedPort(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AppendXForwardedPort")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEarlyHeaderManipulation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EarlyHeaderManipulation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEarlyHeaderManipulation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EarlyHeaderManipulation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.HeaderFormat.(type) { + + case *HttpConnectionManagerSettings_ProperCaseHeaderKeyFormat: + + if h, ok := interface{}(m.GetProperCaseHeaderKeyFormat()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProperCaseHeaderKeyFormat")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProperCaseHeaderKeyFormat(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ProperCaseHeaderKeyFormat")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *HttpConnectionManagerSettings_PreserveCaseHeaderKeyFormat: + + if h, ok := interface{}(m.GetPreserveCaseHeaderKeyFormat()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PreserveCaseHeaderKeyFormat")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPreserveCaseHeaderKeyFormat(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PreserveCaseHeaderKeyFormat")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HttpConnectionManagerSettings_SetCurrentClientCertDetails) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("hcm.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/hcm.HttpConnectionManagerSettings_SetCurrentClientCertDetails")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSubject()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Subject")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSubject(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Subject")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCert()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cert")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCert(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Cert")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetChain()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Chain")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetChain(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Chain")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDns()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Dns")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDns(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Dns")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetUri()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Uri")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUri(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Uri")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HttpConnectionManagerSettings_UuidRequestIdConfigSettings) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("hcm.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/hcm.HttpConnectionManagerSettings_UuidRequestIdConfigSettings")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPackTraceReason()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PackTraceReason")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPackTraceReason(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PackTraceReason")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetUseRequestIdForTraceSampling()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UseRequestIdForTraceSampling")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUseRequestIdForTraceSampling(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UseRequestIdForTraceSampling")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HttpConnectionManagerSettings_CidrRange) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("hcm.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/hcm.HttpConnectionManagerSettings_CidrRange")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AddressPrefix")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAddressPrefix())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPrefixLen()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PrefixLen")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPrefixLen(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PrefixLen")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HttpConnectionManagerSettings_InternalAddressConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("hcm.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/hcm.HttpConnectionManagerSettings_InternalAddressConfig")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetUnixSockets()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UnixSockets")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUnixSockets(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UnixSockets")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("CidrRanges")); err != nil { + return 0, err + } + for i, v := range m.GetCidrRanges() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/header_validation/header_validation.pb.go b/pkg/api/gloo.solo.io/v1/options/header_validation/header_validation.pb.go new file mode 100644 index 000000000..3bf7cfda7 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/header_validation/header_validation.pb.go @@ -0,0 +1,189 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/header_validation/header_validation.proto + +package header_validation + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type HeaderValidationSettings struct { + state protoimpl.MessageState `protogen:"open.v1"` + // How header methods will be validated. By default, Envoy will + // validate HTTP methods for HTTP/1 connections against the default set of allowed methods. + // The default allowed methods can be found here: + // https://github.com/envoyproxy/envoy/blob/2970ddbd4ade787dd51dfbe605ae2e8c5d8ffcf7/source/common/http/http1/balsa_parser.cc#L54 + // or here, if Universal Header Validation is enabled: + // https://github.com/envoyproxy/envoy/blob/0b9f67e7f71bcba3ff49575dc61676478cb68614/source/extensions/http/header_validators/envoy_default/header_validator.cc#L53 + // Invalid methods on HTTP/1 requests will be rejected with a HTTP 400 + // response. + // For HTTP/2, Envoy does not validate header methods by default. + // + // Types that are valid to be assigned to HeaderMethodValidation: + // + // *HeaderValidationSettings_DisableHttp1MethodValidation + HeaderMethodValidation isHeaderValidationSettings_HeaderMethodValidation `protobuf_oneof:"header_method_validation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HeaderValidationSettings) Reset() { + *x = HeaderValidationSettings{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HeaderValidationSettings) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HeaderValidationSettings) ProtoMessage() {} + +func (x *HeaderValidationSettings) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HeaderValidationSettings.ProtoReflect.Descriptor instead. +func (*HeaderValidationSettings) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_rawDescGZIP(), []int{0} +} + +func (x *HeaderValidationSettings) GetHeaderMethodValidation() isHeaderValidationSettings_HeaderMethodValidation { + if x != nil { + return x.HeaderMethodValidation + } + return nil +} + +func (x *HeaderValidationSettings) GetDisableHttp1MethodValidation() *emptypb.Empty { + if x != nil { + if x, ok := x.HeaderMethodValidation.(*HeaderValidationSettings_DisableHttp1MethodValidation); ok { + return x.DisableHttp1MethodValidation + } + } + return nil +} + +type isHeaderValidationSettings_HeaderMethodValidation interface { + isHeaderValidationSettings_HeaderMethodValidation() +} + +type HeaderValidationSettings_DisableHttp1MethodValidation struct { + // Disable method validation. Envoy will not perform any validation on + // the method provided in the HTTP header. + DisableHttp1MethodValidation *emptypb.Empty `protobuf:"bytes,1,opt,name=disable_http1_method_validation,json=disableHttp1MethodValidation,proto3,oneof"` +} + +func (*HeaderValidationSettings_DisableHttp1MethodValidation) isHeaderValidationSettings_HeaderMethodValidation() { +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_rawDesc = string([]byte{ + 0x0a, 0x5f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x26, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x97, 0x01, 0x0a, 0x18, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x12, 0x5f, 0x0a, 0x1f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x68, + 0x74, 0x74, 0x70, 0x31, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x1c, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x48, + 0x74, 0x74, 0x70, 0x31, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x1a, 0x0a, 0x18, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x50, 0x5a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_goTypes = []any{ + (*HeaderValidationSettings)(nil), // 0: header_validation.options.gloo.solo.io.HeaderValidationSettings + (*emptypb.Empty)(nil), // 1: google.protobuf.Empty +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_depIdxs = []int32{ + 1, // 0: header_validation.options.gloo.solo.io.HeaderValidationSettings.disable_http1_method_validation:type_name -> google.protobuf.Empty + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_msgTypes[0].OneofWrappers = []any{ + (*HeaderValidationSettings_DisableHttp1MethodValidation)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_header_validation_header_validation_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.clone.go new file mode 100644 index 000000000..b35dc6f07 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.clone.go @@ -0,0 +1,156 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/headers/headers.proto + +package headers + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core "github.com/solo-io/solo-kit/pkg/api/external/envoy/api/v2/core" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *HeaderManipulation) Clone() proto.Message { + var target *HeaderManipulation + if m == nil { + return target + } + target = &HeaderManipulation{} + + if m.GetRequestHeadersToAdd() != nil { + target.RequestHeadersToAdd = make([]*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption, len(m.GetRequestHeadersToAdd())) + for idx, v := range m.GetRequestHeadersToAdd() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RequestHeadersToAdd[idx] = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption) + } else { + target.RequestHeadersToAdd[idx] = proto.Clone(v).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption) + } + + } + } + + if m.GetRequestHeadersToRemove() != nil { + target.RequestHeadersToRemove = make([]string, len(m.GetRequestHeadersToRemove())) + for idx, v := range m.GetRequestHeadersToRemove() { + + target.RequestHeadersToRemove[idx] = v + + } + } + + if m.GetResponseHeadersToAdd() != nil { + target.ResponseHeadersToAdd = make([]*HeaderValueOption, len(m.GetResponseHeadersToAdd())) + for idx, v := range m.GetResponseHeadersToAdd() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ResponseHeadersToAdd[idx] = h.Clone().(*HeaderValueOption) + } else { + target.ResponseHeadersToAdd[idx] = proto.Clone(v).(*HeaderValueOption) + } + + } + } + + if m.GetResponseHeadersToRemove() != nil { + target.ResponseHeadersToRemove = make([]string, len(m.GetResponseHeadersToRemove())) + for idx, v := range m.GetResponseHeadersToRemove() { + + target.ResponseHeadersToRemove[idx] = v + + } + } + + return target +} + +// Clone function +func (m *EarlyHeaderManipulation) Clone() proto.Message { + var target *EarlyHeaderManipulation + if m == nil { + return target + } + target = &EarlyHeaderManipulation{} + + if m.GetHeadersToAdd() != nil { + target.HeadersToAdd = make([]*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption, len(m.GetHeadersToAdd())) + for idx, v := range m.GetHeadersToAdd() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.HeadersToAdd[idx] = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption) + } else { + target.HeadersToAdd[idx] = proto.Clone(v).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption) + } + + } + } + + if m.GetHeadersToRemove() != nil { + target.HeadersToRemove = make([]string, len(m.GetHeadersToRemove())) + for idx, v := range m.GetHeadersToRemove() { + + target.HeadersToRemove[idx] = v + + } + } + + return target +} + +// Clone function +func (m *HeaderValueOption) Clone() proto.Message { + var target *HeaderValueOption + if m == nil { + return target + } + target = &HeaderValueOption{} + + if h, ok := interface{}(m.GetHeader()).(clone.Cloner); ok { + target.Header = h.Clone().(*HeaderValue) + } else { + target.Header = proto.Clone(m.GetHeader()).(*HeaderValue) + } + + if h, ok := interface{}(m.GetAppend()).(clone.Cloner); ok { + target.Append = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Append = proto.Clone(m.GetAppend()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *HeaderValue) Clone() proto.Message { + var target *HeaderValue + if m == nil { + return target + } + target = &HeaderValue{} + + target.Key = m.GetKey() + + target.Value = m.GetValue() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.equal.go index 177e3c332..ce0135c1d 100644 --- a/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.equal.go @@ -105,6 +105,58 @@ func (m *HeaderManipulation) Equal(that interface{}) bool { return true } +// Equal function +func (m *EarlyHeaderManipulation) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*EarlyHeaderManipulation) + if !ok { + that2, ok := that.(EarlyHeaderManipulation) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetHeadersToAdd()) != len(target.GetHeadersToAdd()) { + return false + } + for idx, v := range m.GetHeadersToAdd() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetHeadersToAdd()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetHeadersToAdd()[idx]) { + return false + } + } + + } + + if len(m.GetHeadersToRemove()) != len(target.GetHeadersToRemove()) { + return false + } + for idx, v := range m.GetHeadersToRemove() { + + if strings.Compare(v, target.GetHeadersToRemove()[idx]) != 0 { + return false + } + + } + + return true +} + // Equal function func (m *HeaderValueOption) Equal(that interface{}) bool { if that == nil { diff --git a/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.go b/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.go index 59f840b8d..99766877f 100644 --- a/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/headers/headers.proto @@ -9,13 +9,13 @@ package headers import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" core "github.com/solo-io/solo-kit/pkg/api/external/envoy/api/v2/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -25,22 +25,15 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // This plugin provides configuration options to append and remove headers from // requests and responses // HeaderManipulation can be specified on routes, virtual hosts, or weighted destinations type HeaderManipulation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies a list of HTTP headers that should be added to each request // handled by this route or virtual host. For more information, including // details on header value syntax, see the - // [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/configuration/http_conn_man/headers#config-http-conn-man-headers-custom-request-headers) . + // [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers.html#) . RequestHeadersToAdd []*core.HeaderValueOption `protobuf:"bytes,1,rep,name=request_headers_to_add,json=requestHeadersToAdd,proto3" json:"request_headers_to_add,omitempty"` // Specifies a list of HTTP headers that should be removed from each request // handled by this route or virtual host. @@ -48,20 +41,20 @@ type HeaderManipulation struct { // Specifies a list of HTTP headers that should be added to each response // handled by this route or host. For more information, including // details on header value syntax, see the - // [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/configuration/http_conn_man/headers#config-http-conn-man-headers-custom-request-headers) . + // [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers.html# . ResponseHeadersToAdd []*HeaderValueOption `protobuf:"bytes,3,rep,name=response_headers_to_add,json=responseHeadersToAdd,proto3" json:"response_headers_to_add,omitempty"` // Specifies a list of HTTP headers that should be removed from each response // handled by this route or virtual host. ResponseHeadersToRemove []string `protobuf:"bytes,4,rep,name=response_headers_to_remove,json=responseHeadersToRemove,proto3" json:"response_headers_to_remove,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HeaderManipulation) Reset() { *x = HeaderManipulation{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HeaderManipulation) String() string { @@ -72,7 +65,7 @@ func (*HeaderManipulation) ProtoMessage() {} func (x *HeaderManipulation) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -115,26 +108,87 @@ func (x *HeaderManipulation) GetResponseHeadersToRemove() []string { return nil } +// EarlyHeaderManipulation can be specified on Gateways to manipulate headers before significant processing +// has happened and routing decisions are made. +// Early header manipulation allows adding/removing headers that affect request processing +// and can be used to implement override headers. +// Note: The adding of headers happens before the removal of headers. +type EarlyHeaderManipulation struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Specifies a list of HTTP headers that should be added to each request + // handled by this gateway. For more information, including + // details on header value syntax, see the + // [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers.html#) . + HeadersToAdd []*core.HeaderValueOption `protobuf:"bytes,1,rep,name=headers_to_add,json=headersToAdd,proto3" json:"headers_to_add,omitempty"` + // Specifies a list of HTTP headers that should be removed from each request + // handled by this gateway. + HeadersToRemove []string `protobuf:"bytes,2,rep,name=headers_to_remove,json=headersToRemove,proto3" json:"headers_to_remove,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EarlyHeaderManipulation) Reset() { + *x = EarlyHeaderManipulation{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EarlyHeaderManipulation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EarlyHeaderManipulation) ProtoMessage() {} + +func (x *EarlyHeaderManipulation) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EarlyHeaderManipulation.ProtoReflect.Descriptor instead. +func (*EarlyHeaderManipulation) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDescGZIP(), []int{1} +} + +func (x *EarlyHeaderManipulation) GetHeadersToAdd() []*core.HeaderValueOption { + if x != nil { + return x.HeadersToAdd + } + return nil +} + +func (x *EarlyHeaderManipulation) GetHeadersToRemove() []string { + if x != nil { + return x.HeadersToRemove + } + return nil +} + // Header name/value pair plus option to control append behavior. type HeaderValueOption struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Header name/value pair that this option applies to. Header *HeaderValue `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - // Should the value be appended? If true (default), the value is appended to - // existing values. - Append *wrappers.BoolValue `protobuf:"bytes,2,opt,name=append,proto3" json:"append,omitempty"` + // Specifies if the value should be appended or overwrite an existing header. Defaults to true. + // If set to true, this maps to Envoy's `append_value: APPEND_IF_EXISTS_OR_ADD`, where the value gets be appended the header's value(s) if exists, or created if it does not. + // If set to false, this maps to Envoy's `append_value: OVERWRITE_IF_EXISTS_OR_ADD`, where the header's value will be overwritten if it exists, or created if it does not. + Append *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=append,proto3" json:"append,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HeaderValueOption) Reset() { *x = HeaderValueOption{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HeaderValueOption) String() string { @@ -144,8 +198,8 @@ func (x *HeaderValueOption) String() string { func (*HeaderValueOption) ProtoMessage() {} func (x *HeaderValueOption) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[2] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -157,7 +211,7 @@ func (x *HeaderValueOption) ProtoReflect() protoreflect.Message { // Deprecated: Use HeaderValueOption.ProtoReflect.Descriptor instead. func (*HeaderValueOption) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDescGZIP(), []int{1} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDescGZIP(), []int{2} } func (x *HeaderValueOption) GetHeader() *HeaderValue { @@ -167,7 +221,7 @@ func (x *HeaderValueOption) GetHeader() *HeaderValue { return nil } -func (x *HeaderValueOption) GetAppend() *wrappers.BoolValue { +func (x *HeaderValueOption) GetAppend() *wrapperspb.BoolValue { if x != nil { return x.Append } @@ -176,23 +230,20 @@ func (x *HeaderValueOption) GetAppend() *wrappers.BoolValue { // Header name/value pair. type HeaderValue struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Header name. Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Header value. - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HeaderValue) Reset() { *x = HeaderValue{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HeaderValue) String() string { @@ -202,8 +253,8 @@ func (x *HeaderValue) String() string { func (*HeaderValue) ProtoMessage() {} func (x *HeaderValue) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[3] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -215,7 +266,7 @@ func (x *HeaderValue) ProtoReflect() protoreflect.Message { // Deprecated: Use HeaderValue.ProtoReflect.Descriptor instead. func (*HeaderValue) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDescGZIP(), []int{2} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDescGZIP(), []int{3} } func (x *HeaderValue) GetKey() string { @@ -234,7 +285,7 @@ func (x *HeaderValue) GetValue() string { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDesc = string([]byte{ 0x0a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -271,56 +322,68 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_p 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x22, 0x8a, 0x01, 0x0a, 0x11, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x06, 0x61, 0x70, 0x70, - 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x22, 0x35, 0x0a, - 0x0b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x42, 0x4e, 0x5a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0xc0, 0xf5, 0x04, 0x01, - 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x22, 0x99, 0x01, 0x0a, 0x17, 0x45, 0x61, 0x72, 0x6c, 0x79, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x4d, 0x61, 0x6e, 0x69, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x0e, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x64, 0x64, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64, + 0x12, 0x2a, 0x0a, 0x11, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x22, 0x8a, 0x01, 0x0a, + 0x11, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x22, 0x35, 0x0a, 0x0b, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x52, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x44, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_goTypes = []interface{}{ - (*HeaderManipulation)(nil), // 0: headers.options.gloo.solo.io.HeaderManipulation - (*HeaderValueOption)(nil), // 1: headers.options.gloo.solo.io.HeaderValueOption - (*HeaderValue)(nil), // 2: headers.options.gloo.solo.io.HeaderValue - (*core.HeaderValueOption)(nil), // 3: solo.io.envoy.api.v2.core.HeaderValueOption - (*wrappers.BoolValue)(nil), // 4: google.protobuf.BoolValue +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_goTypes = []any{ + (*HeaderManipulation)(nil), // 0: headers.options.gloo.solo.io.HeaderManipulation + (*EarlyHeaderManipulation)(nil), // 1: headers.options.gloo.solo.io.EarlyHeaderManipulation + (*HeaderValueOption)(nil), // 2: headers.options.gloo.solo.io.HeaderValueOption + (*HeaderValue)(nil), // 3: headers.options.gloo.solo.io.HeaderValue + (*core.HeaderValueOption)(nil), // 4: solo.io.envoy.api.v2.core.HeaderValueOption + (*wrapperspb.BoolValue)(nil), // 5: google.protobuf.BoolValue } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_depIdxs = []int32{ - 3, // 0: headers.options.gloo.solo.io.HeaderManipulation.request_headers_to_add:type_name -> solo.io.envoy.api.v2.core.HeaderValueOption - 1, // 1: headers.options.gloo.solo.io.HeaderManipulation.response_headers_to_add:type_name -> headers.options.gloo.solo.io.HeaderValueOption - 2, // 2: headers.options.gloo.solo.io.HeaderValueOption.header:type_name -> headers.options.gloo.solo.io.HeaderValue - 4, // 3: headers.options.gloo.solo.io.HeaderValueOption.append:type_name -> google.protobuf.BoolValue - 4, // [4:4] is the sub-list for method output_type - 4, // [4:4] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 4, // 0: headers.options.gloo.solo.io.HeaderManipulation.request_headers_to_add:type_name -> solo.io.envoy.api.v2.core.HeaderValueOption + 2, // 1: headers.options.gloo.solo.io.HeaderManipulation.response_headers_to_add:type_name -> headers.options.gloo.solo.io.HeaderValueOption + 4, // 2: headers.options.gloo.solo.io.EarlyHeaderManipulation.headers_to_add:type_name -> solo.io.envoy.api.v2.core.HeaderValueOption + 3, // 3: headers.options.gloo.solo.io.HeaderValueOption.header:type_name -> headers.options.gloo.solo.io.HeaderValue + 5, // 4: headers.options.gloo.solo.io.HeaderValueOption.append:type_name -> google.protobuf.BoolValue + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_init() } @@ -328,51 +391,13 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_ if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HeaderManipulation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HeaderValueOption); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HeaderValue); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDesc)), NumEnums: 0, - NumMessages: 3, + NumMessages: 4, NumExtensions: 0, NumServices: 0, }, @@ -381,7 +406,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_ MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.hash.go index 8397523dc..329d8ad41 100644 --- a/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HeaderManipulation) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -41,14 +45,20 @@ func (m *HeaderManipulation) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRequestHeadersToAdd() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -67,14 +77,20 @@ func (m *HeaderManipulation) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetResponseHeadersToAdd() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -94,6 +110,62 @@ func (m *HeaderManipulation) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *EarlyHeaderManipulation) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("headers.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/headers.EarlyHeaderManipulation")); err != nil { + return 0, err + } + + for _, v := range m.GetHeadersToAdd() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + for _, v := range m.GetHeadersToRemove() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HeaderValueOption) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -107,28 +179,40 @@ func (m *HeaderValueOption) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetHeader()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHeader(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHeader(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetAppend()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Append")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAppend(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAppend(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Append")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -138,6 +222,10 @@ func (m *HeaderValueOption) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HeaderValue) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.uniquehash.go new file mode 100644 index 000000000..d51163e6f --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.uniquehash.go @@ -0,0 +1,299 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/headers/headers.proto + +package headers + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HeaderManipulation) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("headers.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/headers.HeaderManipulation")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RequestHeadersToAdd")); err != nil { + return 0, err + } + for i, v := range m.GetRequestHeadersToAdd() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("RequestHeadersToRemove")); err != nil { + return 0, err + } + for i, v := range m.GetRequestHeadersToRemove() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("ResponseHeadersToAdd")); err != nil { + return 0, err + } + for i, v := range m.GetResponseHeadersToAdd() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("ResponseHeadersToRemove")); err != nil { + return 0, err + } + for i, v := range m.GetResponseHeadersToRemove() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *EarlyHeaderManipulation) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("headers.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/headers.EarlyHeaderManipulation")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("HeadersToAdd")); err != nil { + return 0, err + } + for i, v := range m.GetHeadersToAdd() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("HeadersToRemove")); err != nil { + return 0, err + } + for i, v := range m.GetHeadersToRemove() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HeaderValueOption) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("headers.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/headers.HeaderValueOption")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHeader()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeader(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAppend()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Append")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAppend(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Append")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HeaderValue) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("headers.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/headers.HeaderValue")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetValue())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/healthcheck/healthcheck.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/healthcheck/healthcheck.pb.clone.go new file mode 100644 index 000000000..ba60be530 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/healthcheck/healthcheck.pb.clone.go @@ -0,0 +1,39 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/healthcheck/healthcheck.proto + +package healthcheck + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *HealthCheck) Clone() proto.Message { + var target *HealthCheck + if m == nil { + return target + } + target = &HealthCheck{} + + target.Path = m.GetPath() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/healthcheck/healthcheck.pb.go b/pkg/api/gloo.solo.io/v1/options/healthcheck/healthcheck.pb.go index f9f91e14d..67cf155ea 100644 --- a/pkg/api/gloo.solo.io/v1/options/healthcheck/healthcheck.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/healthcheck/healthcheck.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/healthcheck/healthcheck.proto @@ -9,13 +9,13 @@ package healthcheck import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - _ "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" _ "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -25,27 +25,20 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Add this config to a Listener/Gateway to Enable Envoy Health Checks on that port type HealthCheck struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // match health check requests using this exact path - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HealthCheck) Reset() { *x = HealthCheck{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HealthCheck) String() string { @@ -56,7 +49,7 @@ func (*HealthCheck) ProtoMessage() {} func (x *HealthCheck) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -80,7 +73,7 @@ func (x *HealthCheck) GetPath() string { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_rawDesc = string([]byte{ 0x0a, 0x53, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -96,29 +89,29 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healt 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x21, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x42, 0x52, 0x5a, 0x48, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x65, 0x61, - 0x6c, 0x74, 0x68, 0x63, 0x68, 0x65, 0x63, 0x6b, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x42, 0x56, 0xb8, 0xf5, + 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x48, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, + 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_goTypes = []any{ (*HealthCheck)(nil), // 0: healthcheck.options.gloo.solo.io.HealthCheck } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_depIdxs = []int32{ @@ -136,25 +129,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_heal if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheck); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, @@ -165,7 +144,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_heal MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_healthcheck_healthcheck_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/healthcheck/healthcheck.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/healthcheck/healthcheck.pb.hash.go index d5f05431e..8bd5aa213 100644 --- a/pkg/api/gloo.solo.io/v1/options/healthcheck/healthcheck.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/healthcheck/healthcheck.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HealthCheck) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/v1/options/healthcheck/healthcheck.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/healthcheck/healthcheck.pb.uniquehash.go new file mode 100644 index 000000000..024b49fc0 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/healthcheck/healthcheck.pb.uniquehash.go @@ -0,0 +1,54 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/healthcheck/healthcheck.proto + +package healthcheck + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HealthCheck) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("healthcheck.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/healthcheck.HealthCheck")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPath())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/kubernetes/kubernetes.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/kubernetes/kubernetes.pb.clone.go new file mode 100644 index 000000000..1a5381a6f --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/kubernetes/kubernetes.pb.clone.go @@ -0,0 +1,66 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/kubernetes/kubernetes.proto + +package kubernetes + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *UpstreamSpec) Clone() proto.Message { + var target *UpstreamSpec + if m == nil { + return target + } + target = &UpstreamSpec{} + + target.ServiceName = m.GetServiceName() + + target.ServiceNamespace = m.GetServiceNamespace() + + target.ServicePort = m.GetServicePort() + + if m.GetSelector() != nil { + target.Selector = make(map[string]string, len(m.GetSelector())) + for k, v := range m.GetSelector() { + + target.Selector[k] = v + + } + } + + if h, ok := interface{}(m.GetServiceSpec()).(clone.Cloner); ok { + target.ServiceSpec = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options.ServiceSpec) + } else { + target.ServiceSpec = proto.Clone(m.GetServiceSpec()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options.ServiceSpec) + } + + if h, ok := interface{}(m.GetSubsetSpec()).(clone.Cloner); ok { + target.SubsetSpec = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options.SubsetSpec) + } else { + target.SubsetSpec = proto.Clone(m.GetSubsetSpec()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options.SubsetSpec) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/kubernetes/kubernetes.pb.go b/pkg/api/gloo.solo.io/v1/options/kubernetes/kubernetes.pb.go index 1cab1f35e..9b928ccd2 100644 --- a/pkg/api/gloo.solo.io/v1/options/kubernetes/kubernetes.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/kubernetes/kubernetes.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/kubernetes/kubernetes.proto @@ -9,8 +9,8 @@ package kubernetes import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" options "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -24,19 +24,12 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Kubernetes Upstreams represent a set of one or more addressable pods for a Kubernetes Service // the Gloo Kubernetes Upstream maps to a single service port. Because Kubernetes Services support multiple ports, // Gloo requires that a different upstream be created for each port // Kubernetes Upstreams are typically generated automatically by Gloo from the Kubernetes API type UpstreamSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the Kubernetes Service ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` // The namespace where the Service lives @@ -47,22 +40,22 @@ type UpstreamSpec struct { // Allows finer-grained filtering of pods for the Upstream. Gloo will select pods based on their labels if // any are provided here. // (see [Kubernetes labels and selectors](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/) - Selector map[string]string `protobuf:"bytes,4,rep,name=selector,proto3" json:"selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Selector map[string]string `protobuf:"bytes,4,rep,name=selector,proto3" json:"selector,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // An optional Service Spec describing the service listening at this address ServiceSpec *options.ServiceSpec `protobuf:"bytes,5,opt,name=service_spec,json=serviceSpec,proto3" json:"service_spec,omitempty"` // Subset configuration. For discovery sources that has labels (like kubernetes). this // configuration allows you to partition the upstream to a set of subsets. // for each unique set of keys and values, a subset will be created. - SubsetSpec *options.SubsetSpec `protobuf:"bytes,6,opt,name=subset_spec,json=subsetSpec,proto3" json:"subset_spec,omitempty"` + SubsetSpec *options.SubsetSpec `protobuf:"bytes,6,opt,name=subset_spec,json=subsetSpec,proto3" json:"subset_spec,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpstreamSpec) Reset() { *x = UpstreamSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpstreamSpec) String() string { @@ -73,7 +66,7 @@ func (*UpstreamSpec) ProtoMessage() {} func (x *UpstreamSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -132,7 +125,7 @@ func (x *UpstreamSpec) GetSubsetSpec() *options.SubsetSpec { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_rawDesc = string([]byte{ 0x0a, 0x51, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -176,29 +169,29 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubern 0x63, 0x1a, 0x3b, 0x0a, 0x0d, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x51, - 0x5a, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, - 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6b, - 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, - 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x55, + 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x47, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, + 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6b, 0x75, 0x62, 0x65, 0x72, + 0x6e, 0x65, 0x74, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_goTypes = []any{ (*UpstreamSpec)(nil), // 0: kubernetes.options.gloo.solo.io.UpstreamSpec nil, // 1: kubernetes.options.gloo.solo.io.UpstreamSpec.SelectorEntry (*options.ServiceSpec)(nil), // 2: options.gloo.solo.io.ServiceSpec @@ -222,25 +215,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kuber if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpstreamSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_rawDesc)), NumEnums: 0, NumMessages: 2, NumExtensions: 0, @@ -251,7 +230,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kuber MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_kubernetes_kubernetes_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/kubernetes/kubernetes.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/kubernetes/kubernetes.pb.hash.go index 67626e3d3..f64c30915 100644 --- a/pkg/api/gloo.solo.io/v1/options/kubernetes/kubernetes.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/kubernetes/kubernetes.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -75,28 +79,40 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetServiceSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServiceSpec")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetServiceSpec(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetServiceSpec(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ServiceSpec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetSubsetSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SubsetSpec")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSubsetSpec(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSubsetSpec(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SubsetSpec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/v1/options/kubernetes/kubernetes.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/kubernetes/kubernetes.pb.uniquehash.go new file mode 100644 index 000000000..dc70da295 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/kubernetes/kubernetes.pb.uniquehash.go @@ -0,0 +1,138 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/kubernetes/kubernetes.proto + +package kubernetes + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("kubernetes.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/kubernetes.UpstreamSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ServiceName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetServiceName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ServiceNamespace")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetServiceNamespace())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ServicePort")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetServicePort()) + if err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSelector() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetServiceSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServiceSpec")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetServiceSpec(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ServiceSpec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetSubsetSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SubsetSpec")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSubsetSpec(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SubsetSpec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/lbhash/lbhash.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/lbhash/lbhash.pb.clone.go new file mode 100644 index 000000000..9724db219 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/lbhash/lbhash.pb.clone.go @@ -0,0 +1,114 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/lbhash/lbhash.proto + +package lbhash + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *RouteActionHashConfig) Clone() proto.Message { + var target *RouteActionHashConfig + if m == nil { + return target + } + target = &RouteActionHashConfig{} + + if m.GetHashPolicies() != nil { + target.HashPolicies = make([]*HashPolicy, len(m.GetHashPolicies())) + for idx, v := range m.GetHashPolicies() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.HashPolicies[idx] = h.Clone().(*HashPolicy) + } else { + target.HashPolicies[idx] = proto.Clone(v).(*HashPolicy) + } + + } + } + + return target +} + +// Clone function +func (m *Cookie) Clone() proto.Message { + var target *Cookie + if m == nil { + return target + } + target = &Cookie{} + + target.Name = m.GetName() + + if h, ok := interface{}(m.GetTtl()).(clone.Cloner); ok { + target.Ttl = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.Ttl = proto.Clone(m.GetTtl()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + target.Path = m.GetPath() + + return target +} + +// Clone function +func (m *HashPolicy) Clone() proto.Message { + var target *HashPolicy + if m == nil { + return target + } + target = &HashPolicy{} + + target.Terminal = m.GetTerminal() + + switch m.KeyType.(type) { + + case *HashPolicy_Header: + + target.KeyType = &HashPolicy_Header{ + Header: m.GetHeader(), + } + + case *HashPolicy_Cookie: + + if h, ok := interface{}(m.GetCookie()).(clone.Cloner); ok { + target.KeyType = &HashPolicy_Cookie{ + Cookie: h.Clone().(*Cookie), + } + } else { + target.KeyType = &HashPolicy_Cookie{ + Cookie: proto.Clone(m.GetCookie()).(*Cookie), + } + } + + case *HashPolicy_SourceIp: + + target.KeyType = &HashPolicy_SourceIp{ + SourceIp: m.GetSourceIp(), + } + + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/lbhash/lbhash.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/lbhash/lbhash.pb.equal.go index 8fb460e8c..d6020bd44 100644 --- a/pkg/api/gloo.solo.io/v1/options/lbhash/lbhash.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/options/lbhash/lbhash.pb.equal.go @@ -136,12 +136,18 @@ func (m *HashPolicy) Equal(that interface{}) bool { switch m.KeyType.(type) { case *HashPolicy_Header: + if _, ok := target.KeyType.(*HashPolicy_Header); !ok { + return false + } if strings.Compare(m.GetHeader(), target.GetHeader()) != 0 { return false } case *HashPolicy_Cookie: + if _, ok := target.KeyType.(*HashPolicy_Cookie); !ok { + return false + } if h, ok := interface{}(m.GetCookie()).(equality.Equalizer); ok { if !h.Equal(target.GetCookie()) { @@ -154,11 +160,19 @@ func (m *HashPolicy) Equal(that interface{}) bool { } case *HashPolicy_SourceIp: + if _, ok := target.KeyType.(*HashPolicy_SourceIp); !ok { + return false + } if m.GetSourceIp() != target.GetSourceIp() { return false } + default: + // m is nil but target is not nil + if m.KeyType != target.KeyType { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/v1/options/lbhash/lbhash.pb.go b/pkg/api/gloo.solo.io/v1/options/lbhash/lbhash.pb.go index cc39d3e4e..d793394c5 100644 --- a/pkg/api/gloo.solo.io/v1/options/lbhash/lbhash.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/lbhash/lbhash.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/lbhash/lbhash.proto @@ -9,12 +9,12 @@ package lbhash import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - duration "github.com/golang/protobuf/ptypes/duration" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" ) const ( @@ -24,28 +24,21 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Specifies the route’s hashing policy if the upstream cluster uses a hashing load balancer. -// https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/route/route.proto#envoy-api-msg-route-routeaction-hashpolicy +// https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto#envoy-api-msg-route-routeaction-hashpolicy type RouteActionHashConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The list of policies Envoy will use when generating a hash key for a hashing load balancer - HashPolicies []*HashPolicy `protobuf:"bytes,1,rep,name=hash_policies,json=hashPolicies,proto3" json:"hash_policies,omitempty"` + HashPolicies []*HashPolicy `protobuf:"bytes,1,rep,name=hash_policies,json=hashPolicies,proto3" json:"hash_policies,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteActionHashConfig) Reset() { *x = RouteActionHashConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteActionHashConfig) String() string { @@ -56,7 +49,7 @@ func (*RouteActionHashConfig) ProtoMessage() {} func (x *RouteActionHashConfig) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -82,27 +75,24 @@ func (x *RouteActionHashConfig) GetHashPolicies() []*HashPolicy { // - Passive: Envoy reads the cookie from the headers // - Generated: Envoy uses the cookie spec to generate a cookie // In either case, the cookie is incorporated in the hash key. -// additional notes https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/route/route.proto#envoy-api-msg-route-routeaction-hashpolicy-cookie +// additional notes https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto#envoy-api-msg-route-routeaction-hashpolicy-cookie type Cookie struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // required, the name of the cookie to be used to obtain the hash key Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // If specified, a cookie with the TTL will be generated if the cookie is not present. If the TTL is present and zero, the generated cookie will be a session cookie. - Ttl *duration.Duration `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"` + Ttl *durationpb.Duration `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"` // The name of the path for the cookie. If no path is specified here, no path will be set for the cookie. - Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` + Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Cookie) Reset() { *x = Cookie{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Cookie) String() string { @@ -113,7 +103,7 @@ func (*Cookie) ProtoMessage() {} func (x *Cookie) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -135,7 +125,7 @@ func (x *Cookie) GetName() string { return "" } -func (x *Cookie) GetTtl() *duration.Duration { +func (x *Cookie) GetTtl() *durationpb.Duration { if x != nil { return x.Ttl } @@ -151,11 +141,9 @@ func (x *Cookie) GetPath() string { // Specifies an element of Envoy's hashing policy for hashing load balancers type HashPolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to KeyType: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to KeyType: + // // *HashPolicy_Header // *HashPolicy_Cookie // *HashPolicy_SourceIp @@ -163,16 +151,16 @@ type HashPolicy struct { // If set, and a hash key is available after evaluating this policy, Envoy will skip the subsequent policies and // use the key as it is. // This is useful for defining "fallback" policies and limiting the time Envoy spends generating hash keys. - Terminal bool `protobuf:"varint,4,opt,name=terminal,proto3" json:"terminal,omitempty"` + Terminal bool `protobuf:"varint,4,opt,name=terminal,proto3" json:"terminal,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HashPolicy) Reset() { *x = HashPolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HashPolicy) String() string { @@ -183,7 +171,7 @@ func (*HashPolicy) ProtoMessage() {} func (x *HashPolicy) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -198,30 +186,36 @@ func (*HashPolicy) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_rawDescGZIP(), []int{2} } -func (m *HashPolicy) GetKeyType() isHashPolicy_KeyType { - if m != nil { - return m.KeyType +func (x *HashPolicy) GetKeyType() isHashPolicy_KeyType { + if x != nil { + return x.KeyType } return nil } func (x *HashPolicy) GetHeader() string { - if x, ok := x.GetKeyType().(*HashPolicy_Header); ok { - return x.Header + if x != nil { + if x, ok := x.KeyType.(*HashPolicy_Header); ok { + return x.Header + } } return "" } func (x *HashPolicy) GetCookie() *Cookie { - if x, ok := x.GetKeyType().(*HashPolicy_Cookie); ok { - return x.Cookie + if x != nil { + if x, ok := x.KeyType.(*HashPolicy_Cookie); ok { + return x.Cookie + } } return nil } func (x *HashPolicy) GetSourceIp() bool { - if x, ok := x.GetKeyType().(*HashPolicy_SourceIp); ok { - return x.SourceIp + if x != nil { + if x, ok := x.KeyType.(*HashPolicy_SourceIp); ok { + return x.SourceIp + } } return false } @@ -260,7 +254,7 @@ func (*HashPolicy_SourceIp) isHashPolicy_KeyType() {} var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_rawDesc = string([]byte{ 0x0a, 0x49, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -294,32 +288,32 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_pro 0x08, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x42, 0x09, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, - 0x42, 0x4d, 0x5a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x6c, 0x62, 0x68, 0x61, 0x73, 0x68, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x42, 0x51, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x43, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6c, 0x62, 0x68, + 0x61, 0x73, 0x68, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_goTypes = []any{ (*RouteActionHashConfig)(nil), // 0: lbhash.options.gloo.solo.io.RouteActionHashConfig (*Cookie)(nil), // 1: lbhash.options.gloo.solo.io.Cookie (*HashPolicy)(nil), // 2: lbhash.options.gloo.solo.io.HashPolicy - (*duration.Duration)(nil), // 3: google.protobuf.Duration + (*durationpb.Duration)(nil), // 3: google.protobuf.Duration } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_depIdxs = []int32{ 2, // 0: lbhash.options.gloo.solo.io.RouteActionHashConfig.hash_policies:type_name -> lbhash.options.gloo.solo.io.HashPolicy @@ -337,45 +331,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_pr if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteActionHashConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Cookie); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HashPolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_msgTypes[2].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_msgTypes[2].OneofWrappers = []any{ (*HashPolicy_Header)(nil), (*HashPolicy_Cookie)(nil), (*HashPolicy_SourceIp)(nil), @@ -384,7 +340,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_pr out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_rawDesc)), NumEnums: 0, NumMessages: 3, NumExtensions: 0, @@ -395,7 +351,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_pr MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_lbhash_lbhash_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/lbhash/lbhash.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/lbhash/lbhash.pb.hash.go index 5f44a9898..8d1bd3ae6 100644 --- a/pkg/api/gloo.solo.io/v1/options/lbhash/lbhash.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/lbhash/lbhash.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteActionHashConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -41,14 +45,20 @@ func (m *RouteActionHashConfig) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetHashPolicies() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -60,6 +70,10 @@ func (m *RouteActionHashConfig) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Cookie) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -77,14 +91,20 @@ func (m *Cookie) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetTtl()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ttl")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTtl(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTtl(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Ttl")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -98,6 +118,10 @@ func (m *Cookie) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HashPolicy) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -126,14 +150,20 @@ func (m *HashPolicy) Hash(hasher hash.Hash64) (uint64, error) { case *HashPolicy_Cookie: if h, ok := interface{}(m.GetCookie()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cookie")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCookie(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCookie(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Cookie")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/v1/options/lbhash/lbhash.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/lbhash/lbhash.pb.uniquehash.go new file mode 100644 index 000000000..cc6a4e3b7 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/lbhash/lbhash.pb.uniquehash.go @@ -0,0 +1,202 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/lbhash/lbhash.proto + +package lbhash + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteActionHashConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("lbhash.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/lbhash.RouteActionHashConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("HashPolicies")); err != nil { + return 0, err + } + for i, v := range m.GetHashPolicies() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Cookie) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("lbhash.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/lbhash.Cookie")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTtl()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ttl")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTtl(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Ttl")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPath())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HashPolicy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("lbhash.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/lbhash.HashPolicy")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Terminal")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetTerminal()) + if err != nil { + return 0, err + } + + switch m.KeyType.(type) { + + case *HashPolicy_Header: + + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHeader())); err != nil { + return 0, err + } + + case *HashPolicy_Cookie: + + if h, ok := interface{}(m.GetCookie()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cookie")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCookie(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Cookie")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *HashPolicy_SourceIp: + + if _, err = hasher.Write([]byte("SourceIp")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetSourceIp()) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/local_ratelimit/local_ratelimit.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/local_ratelimit/local_ratelimit.pb.clone.go new file mode 100644 index 000000000..901f77c15 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/local_ratelimit/local_ratelimit.pb.clone.go @@ -0,0 +1,84 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/local_ratelimit/local_ratelimit.proto + +package local_ratelimit + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *TokenBucket) Clone() proto.Message { + var target *TokenBucket + if m == nil { + return target + } + target = &TokenBucket{} + + target.MaxTokens = m.GetMaxTokens() + + if h, ok := interface{}(m.GetTokensPerFill()).(clone.Cloner); ok { + target.TokensPerFill = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.TokensPerFill = proto.Clone(m.GetTokensPerFill()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetFillInterval()).(clone.Cloner); ok { + target.FillInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.FillInterval = proto.Clone(m.GetFillInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + return target +} + +// Clone function +func (m *Settings) Clone() proto.Message { + var target *Settings + if m == nil { + return target + } + target = &Settings{} + + if h, ok := interface{}(m.GetDefaultLimit()).(clone.Cloner); ok { + target.DefaultLimit = h.Clone().(*TokenBucket) + } else { + target.DefaultLimit = proto.Clone(m.GetDefaultLimit()).(*TokenBucket) + } + + if h, ok := interface{}(m.GetLocalRateLimitPerDownstreamConnection()).(clone.Cloner); ok { + target.LocalRateLimitPerDownstreamConnection = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.LocalRateLimitPerDownstreamConnection = proto.Clone(m.GetLocalRateLimitPerDownstreamConnection()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetEnableXRatelimitHeaders()).(clone.Cloner); ok { + target.EnableXRatelimitHeaders = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.EnableXRatelimitHeaders = proto.Clone(m.GetEnableXRatelimitHeaders()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/local_ratelimit/local_ratelimit.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/local_ratelimit/local_ratelimit.pb.equal.go new file mode 100644 index 000000000..a3d9ecc94 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/local_ratelimit/local_ratelimit.pb.equal.go @@ -0,0 +1,128 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/local_ratelimit/local_ratelimit.proto + +package local_ratelimit + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *TokenBucket) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*TokenBucket) + if !ok { + that2, ok := that.(TokenBucket) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetMaxTokens() != target.GetMaxTokens() { + return false + } + + if h, ok := interface{}(m.GetTokensPerFill()).(equality.Equalizer); ok { + if !h.Equal(target.GetTokensPerFill()) { + return false + } + } else { + if !proto.Equal(m.GetTokensPerFill(), target.GetTokensPerFill()) { + return false + } + } + + if h, ok := interface{}(m.GetFillInterval()).(equality.Equalizer); ok { + if !h.Equal(target.GetFillInterval()) { + return false + } + } else { + if !proto.Equal(m.GetFillInterval(), target.GetFillInterval()) { + return false + } + } + + return true +} + +// Equal function +func (m *Settings) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Settings) + if !ok { + that2, ok := that.(Settings) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetDefaultLimit()).(equality.Equalizer); ok { + if !h.Equal(target.GetDefaultLimit()) { + return false + } + } else { + if !proto.Equal(m.GetDefaultLimit(), target.GetDefaultLimit()) { + return false + } + } + + if h, ok := interface{}(m.GetLocalRateLimitPerDownstreamConnection()).(equality.Equalizer); ok { + if !h.Equal(target.GetLocalRateLimitPerDownstreamConnection()) { + return false + } + } else { + if !proto.Equal(m.GetLocalRateLimitPerDownstreamConnection(), target.GetLocalRateLimitPerDownstreamConnection()) { + return false + } + } + + if h, ok := interface{}(m.GetEnableXRatelimitHeaders()).(equality.Equalizer); ok { + if !h.Equal(target.GetEnableXRatelimitHeaders()) { + return false + } + } else { + if !proto.Equal(m.GetEnableXRatelimitHeaders(), target.GetEnableXRatelimitHeaders()) { + return false + } + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/options/local_ratelimit/local_ratelimit.pb.go b/pkg/api/gloo.solo.io/v1/options/local_ratelimit/local_ratelimit.pb.go new file mode 100644 index 000000000..2fe66a2f3 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/local_ratelimit/local_ratelimit.pb.go @@ -0,0 +1,288 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/local_ratelimit/local_ratelimit.proto + +package local_ratelimit + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + _ "github.com/solo-io/solo-kit/pkg/api/external/envoy/api/v2/core" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Configures the token bucket, used for rate limiting. +// Ref. https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/network_filters/local_rate_limit_filter +type TokenBucket struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The maximum tokens that the bucket can hold. This is also the number of tokens that the bucket initially contains. + // Must be greater than or equal to one. + MaxTokens uint32 `protobuf:"varint,1,opt,name=max_tokens,json=maxTokens,proto3" json:"max_tokens,omitempty"` + // The number of tokens added to the bucket during each fill interval. If not specified, defaults to a single token. + // Must be greater than zero. + TokensPerFill *wrapperspb.UInt32Value `protobuf:"bytes,2,opt,name=tokens_per_fill,json=tokensPerFill,proto3" json:"tokens_per_fill,omitempty"` + // The fill interval that tokens are added to the bucket. During each fill interval tokens_per_fill are added to the bucket. + // The bucket will never contain more than max_tokens tokens. + // The fill_interval must be >= 50ms and defaults to 1 second. + FillInterval *durationpb.Duration `protobuf:"bytes,3,opt,name=fill_interval,json=fillInterval,proto3" json:"fill_interval,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TokenBucket) Reset() { + *x = TokenBucket{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TokenBucket) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TokenBucket) ProtoMessage() {} + +func (x *TokenBucket) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TokenBucket.ProtoReflect.Descriptor instead. +func (*TokenBucket) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_rawDescGZIP(), []int{0} +} + +func (x *TokenBucket) GetMaxTokens() uint32 { + if x != nil { + return x.MaxTokens + } + return 0 +} + +func (x *TokenBucket) GetTokensPerFill() *wrapperspb.UInt32Value { + if x != nil { + return x.TokensPerFill + } + return nil +} + +func (x *TokenBucket) GetFillInterval() *durationpb.Duration { + if x != nil { + return x.FillInterval + } + return nil +} + +// The Local Rate Limit settings define the default local rate limit token bucket to apply as well as other configurations +type Settings struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The token bucket configuration to use for rate limiting requests. + // These options provide the ability to locally rate limit the connections in envoy. Each request processed by the filter consumes a single token. + // If the token is available, the request will be allowed. If no tokens are available, the request will receive the configured rate limit status. + // This default limit can be overridden in the vHost or route options.localRatelimit + DefaultLimit *TokenBucket `protobuf:"bytes,1,opt,name=default_limit,json=defaultLimit,proto3" json:"default_limit,omitempty"` + // Specifies the scope of the rate limiter’s token bucket. If set to false, the token bucket is shared across all worker threads, thus the rate limits are applied per Envoy process. + // If set to true, a token bucket is allocated for each connection, thus the rate limits are applied per connection thereby allowing one to rate limit requests on a per connection basis. + // This setting applies to all token buckets in the vHost and route as well. + // Defaults to false + LocalRateLimitPerDownstreamConnection *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=local_rate_limit_per_downstream_connection,json=localRateLimitPerDownstreamConnection,proto3" json:"local_rate_limit_per_downstream_connection,omitempty"` + // Set this to true to return Envoy's X-RateLimit headers to the downstream. + // reference docs here: https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/common/ratelimit/v3/ratelimit.proto#envoy-v3-api-enum-extensions-common-ratelimit-v3-xratelimitheadersrfcversion + // This setting applies at the vHost and route local rate limit as well + // Defaults to false + EnableXRatelimitHeaders *wrapperspb.BoolValue `protobuf:"bytes,3,opt,name=enable_x_ratelimit_headers,json=enableXRatelimitHeaders,proto3" json:"enable_x_ratelimit_headers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Settings) Reset() { + *x = Settings{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Settings) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Settings) ProtoMessage() {} + +func (x *Settings) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Settings.ProtoReflect.Descriptor instead. +func (*Settings) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_rawDescGZIP(), []int{1} +} + +func (x *Settings) GetDefaultLimit() *TokenBucket { + if x != nil { + return x.DefaultLimit + } + return nil +} + +func (x *Settings) GetLocalRateLimitPerDownstreamConnection() *wrapperspb.BoolValue { + if x != nil { + return x.LocalRateLimitPerDownstreamConnection + } + return nil +} + +func (x *Settings) GetEnableXRatelimitHeaders() *wrapperspb.BoolValue { + if x != nil { + return x.EnableXRatelimitHeaders + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_rawDesc = string([]byte{ + 0x0a, 0x5b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x61, + 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x61, + 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x24, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, + 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x63, + 0x6f, 0x72, 0x65, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb2, + 0x01, 0x0a, 0x0b, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1d, + 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x44, 0x0a, + 0x0f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x46, + 0x69, 0x6c, 0x6c, 0x12, 0x3e, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x22, 0xb2, 0x02, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x12, 0x56, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, + 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x75, 0x0a, 0x2a, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, + 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, + 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x25, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x52, + 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x50, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x57, 0x0a, 0x1a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x17, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x58, 0x52, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x42, 0x5a, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, + 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_goTypes = []any{ + (*TokenBucket)(nil), // 0: local_ratelimit.options.gloo.solo.io.TokenBucket + (*Settings)(nil), // 1: local_ratelimit.options.gloo.solo.io.Settings + (*wrapperspb.UInt32Value)(nil), // 2: google.protobuf.UInt32Value + (*durationpb.Duration)(nil), // 3: google.protobuf.Duration + (*wrapperspb.BoolValue)(nil), // 4: google.protobuf.BoolValue +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_depIdxs = []int32{ + 2, // 0: local_ratelimit.options.gloo.solo.io.TokenBucket.tokens_per_fill:type_name -> google.protobuf.UInt32Value + 3, // 1: local_ratelimit.options.gloo.solo.io.TokenBucket.fill_interval:type_name -> google.protobuf.Duration + 0, // 2: local_ratelimit.options.gloo.solo.io.Settings.default_limit:type_name -> local_ratelimit.options.gloo.solo.io.TokenBucket + 4, // 3: local_ratelimit.options.gloo.solo.io.Settings.local_rate_limit_per_downstream_connection:type_name -> google.protobuf.BoolValue + 4, // 4: local_ratelimit.options.gloo.solo.io.Settings.enable_x_ratelimit_headers:type_name -> google.protobuf.BoolValue + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_rawDesc)), + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_local_ratelimit_local_ratelimit_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/local_ratelimit/local_ratelimit.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/local_ratelimit/local_ratelimit.pb.hash.go new file mode 100644 index 000000000..4a4fc087c --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/local_ratelimit/local_ratelimit.pb.hash.go @@ -0,0 +1,171 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/local_ratelimit/local_ratelimit.proto + +package local_ratelimit + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *TokenBucket) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("local_ratelimit.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/local_ratelimit.TokenBucket")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetMaxTokens()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTokensPerFill()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TokensPerFill")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTokensPerFill(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TokensPerFill")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFillInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FillInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFillInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FillInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Settings) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("local_ratelimit.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/local_ratelimit.Settings")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDefaultLimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DefaultLimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDefaultLimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DefaultLimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetLocalRateLimitPerDownstreamConnection()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LocalRateLimitPerDownstreamConnection")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLocalRateLimitPerDownstreamConnection(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LocalRateLimitPerDownstreamConnection")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEnableXRatelimitHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnableXRatelimitHeaders")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnableXRatelimitHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EnableXRatelimitHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/local_ratelimit/local_ratelimit.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/local_ratelimit/local_ratelimit.pb.uniquehash.go new file mode 100644 index 000000000..9bbe7b363 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/local_ratelimit/local_ratelimit.pb.uniquehash.go @@ -0,0 +1,174 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/local_ratelimit/local_ratelimit.proto + +package local_ratelimit + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TokenBucket) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("local_ratelimit.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/local_ratelimit.TokenBucket")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MaxTokens")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMaxTokens()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTokensPerFill()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TokensPerFill")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTokensPerFill(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TokensPerFill")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFillInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FillInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFillInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FillInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Settings) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("local_ratelimit.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/local_ratelimit.Settings")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDefaultLimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DefaultLimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDefaultLimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DefaultLimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetLocalRateLimitPerDownstreamConnection()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LocalRateLimitPerDownstreamConnection")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLocalRateLimitPerDownstreamConnection(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LocalRateLimitPerDownstreamConnection")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEnableXRatelimitHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnableXRatelimitHeaders")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnableXRatelimitHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EnableXRatelimitHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/pipe/pipe.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/pipe/pipe.pb.clone.go new file mode 100644 index 000000000..120dee419 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/pipe/pipe.pb.clone.go @@ -0,0 +1,47 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/pipe/pipe.proto + +package pipe + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *UpstreamSpec) Clone() proto.Message { + var target *UpstreamSpec + if m == nil { + return target + } + target = &UpstreamSpec{} + + target.Path = m.GetPath() + + if h, ok := interface{}(m.GetServiceSpec()).(clone.Cloner); ok { + target.ServiceSpec = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options.ServiceSpec) + } else { + target.ServiceSpec = proto.Clone(m.GetServiceSpec()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options.ServiceSpec) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/pipe/pipe.pb.go b/pkg/api/gloo.solo.io/v1/options/pipe/pipe.pb.go index 15202707a..1630663b6 100644 --- a/pkg/api/gloo.solo.io/v1/options/pipe/pipe.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/pipe/pipe.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/pipe/pipe.proto @@ -9,8 +9,8 @@ package pipe import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" options "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -24,32 +24,25 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Pipe upstreams are used to route request to services listening at a Unix Domain Socket. // Pipe upstreams can be used to proxy any kind of service, and therefore contain a ServiceSpec // for additional service-specific configuration. // Unlike upstreams created by service discovery, Pipe Upstreams must be created manually by users type UpstreamSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The Unix Domain Socket path. Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` // An optional Service Spec describing the service listening at this address - ServiceSpec *options.ServiceSpec `protobuf:"bytes,2,opt,name=service_spec,json=serviceSpec,proto3" json:"service_spec,omitempty"` + ServiceSpec *options.ServiceSpec `protobuf:"bytes,2,opt,name=service_spec,json=serviceSpec,proto3" json:"service_spec,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpstreamSpec) Reset() { *x = UpstreamSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpstreamSpec) String() string { @@ -60,7 +53,7 @@ func (*UpstreamSpec) ProtoMessage() {} func (x *UpstreamSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -91,7 +84,7 @@ func (x *UpstreamSpec) GetServiceSpec() *options.ServiceSpec { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_rawDesc = string([]byte{ 0x0a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -110,28 +103,29 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_r 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0b, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x42, 0x4b, 0x5a, 0x41, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, - 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x69, 0x70, 0x65, 0xc0, - 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x42, 0x4f, 0xb8, 0xf5, 0x04, 0x01, + 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_goTypes = []any{ (*UpstreamSpec)(nil), // 0: pipe.options.gloo.solo.io.UpstreamSpec (*options.ServiceSpec)(nil), // 1: options.gloo.solo.io.ServiceSpec } @@ -149,25 +143,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_ if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpstreamSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, @@ -178,7 +158,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_ MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_pipe_pipe_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/pipe/pipe.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/pipe/pipe.pb.hash.go index ac367a8ed..3d80a169d 100644 --- a/pkg/api/gloo.solo.io/v1/options/pipe/pipe.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/pipe/pipe.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -43,14 +47,20 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetServiceSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServiceSpec")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetServiceSpec(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetServiceSpec(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ServiceSpec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/v1/options/pipe/pipe.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/pipe/pipe.pb.uniquehash.go new file mode 100644 index 000000000..8798a0d9a --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/pipe/pipe.pb.uniquehash.go @@ -0,0 +1,74 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/pipe/pipe.proto + +package pipe + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("pipe.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/pipe.UpstreamSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPath())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetServiceSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServiceSpec")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetServiceSpec(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ServiceSpec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/protocol/protocol.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/protocol/protocol.pb.clone.go new file mode 100644 index 000000000..dd8be0c38 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/protocol/protocol.pb.clone.go @@ -0,0 +1,127 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/protocol/protocol.proto + +package protocol + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *HttpProtocolOptions) Clone() proto.Message { + var target *HttpProtocolOptions + if m == nil { + return target + } + target = &HttpProtocolOptions{} + + if h, ok := interface{}(m.GetIdleTimeout()).(clone.Cloner); ok { + target.IdleTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.IdleTimeout = proto.Clone(m.GetIdleTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + target.MaxHeadersCount = m.GetMaxHeadersCount() + + if h, ok := interface{}(m.GetMaxStreamDuration()).(clone.Cloner); ok { + target.MaxStreamDuration = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.MaxStreamDuration = proto.Clone(m.GetMaxStreamDuration()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + target.HeadersWithUnderscoresAction = m.GetHeadersWithUnderscoresAction() + + return target +} + +// Clone function +func (m *Http1ProtocolOptions) Clone() proto.Message { + var target *Http1ProtocolOptions + if m == nil { + return target + } + target = &Http1ProtocolOptions{} + + target.EnableTrailers = m.GetEnableTrailers() + + if h, ok := interface{}(m.GetOverrideStreamErrorOnInvalidHttpMessage()).(clone.Cloner); ok { + target.OverrideStreamErrorOnInvalidHttpMessage = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.OverrideStreamErrorOnInvalidHttpMessage = proto.Clone(m.GetOverrideStreamErrorOnInvalidHttpMessage()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + switch m.HeaderFormat.(type) { + + case *Http1ProtocolOptions_ProperCaseHeaderKeyFormat: + + target.HeaderFormat = &Http1ProtocolOptions_ProperCaseHeaderKeyFormat{ + ProperCaseHeaderKeyFormat: m.GetProperCaseHeaderKeyFormat(), + } + + case *Http1ProtocolOptions_PreserveCaseHeaderKeyFormat: + + target.HeaderFormat = &Http1ProtocolOptions_PreserveCaseHeaderKeyFormat{ + PreserveCaseHeaderKeyFormat: m.GetPreserveCaseHeaderKeyFormat(), + } + + } + + return target +} + +// Clone function +func (m *Http2ProtocolOptions) Clone() proto.Message { + var target *Http2ProtocolOptions + if m == nil { + return target + } + target = &Http2ProtocolOptions{} + + if h, ok := interface{}(m.GetMaxConcurrentStreams()).(clone.Cloner); ok { + target.MaxConcurrentStreams = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxConcurrentStreams = proto.Clone(m.GetMaxConcurrentStreams()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetInitialStreamWindowSize()).(clone.Cloner); ok { + target.InitialStreamWindowSize = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.InitialStreamWindowSize = proto.Clone(m.GetInitialStreamWindowSize()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetInitialConnectionWindowSize()).(clone.Cloner); ok { + target.InitialConnectionWindowSize = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.InitialConnectionWindowSize = proto.Clone(m.GetInitialConnectionWindowSize()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetOverrideStreamErrorOnInvalidHttpMessage()).(clone.Cloner); ok { + target.OverrideStreamErrorOnInvalidHttpMessage = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.OverrideStreamErrorOnInvalidHttpMessage = proto.Clone(m.GetOverrideStreamErrorOnInvalidHttpMessage()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/protocol/protocol.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/protocol/protocol.pb.equal.go new file mode 100644 index 000000000..dd744f652 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/protocol/protocol.pb.equal.go @@ -0,0 +1,207 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/protocol/protocol.proto + +package protocol + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *HttpProtocolOptions) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HttpProtocolOptions) + if !ok { + that2, ok := that.(HttpProtocolOptions) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetIdleTimeout()).(equality.Equalizer); ok { + if !h.Equal(target.GetIdleTimeout()) { + return false + } + } else { + if !proto.Equal(m.GetIdleTimeout(), target.GetIdleTimeout()) { + return false + } + } + + if m.GetMaxHeadersCount() != target.GetMaxHeadersCount() { + return false + } + + if h, ok := interface{}(m.GetMaxStreamDuration()).(equality.Equalizer); ok { + if !h.Equal(target.GetMaxStreamDuration()) { + return false + } + } else { + if !proto.Equal(m.GetMaxStreamDuration(), target.GetMaxStreamDuration()) { + return false + } + } + + if m.GetHeadersWithUnderscoresAction() != target.GetHeadersWithUnderscoresAction() { + return false + } + + return true +} + +// Equal function +func (m *Http1ProtocolOptions) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Http1ProtocolOptions) + if !ok { + that2, ok := that.(Http1ProtocolOptions) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetEnableTrailers() != target.GetEnableTrailers() { + return false + } + + if h, ok := interface{}(m.GetOverrideStreamErrorOnInvalidHttpMessage()).(equality.Equalizer); ok { + if !h.Equal(target.GetOverrideStreamErrorOnInvalidHttpMessage()) { + return false + } + } else { + if !proto.Equal(m.GetOverrideStreamErrorOnInvalidHttpMessage(), target.GetOverrideStreamErrorOnInvalidHttpMessage()) { + return false + } + } + + switch m.HeaderFormat.(type) { + + case *Http1ProtocolOptions_ProperCaseHeaderKeyFormat: + if _, ok := target.HeaderFormat.(*Http1ProtocolOptions_ProperCaseHeaderKeyFormat); !ok { + return false + } + + if m.GetProperCaseHeaderKeyFormat() != target.GetProperCaseHeaderKeyFormat() { + return false + } + + case *Http1ProtocolOptions_PreserveCaseHeaderKeyFormat: + if _, ok := target.HeaderFormat.(*Http1ProtocolOptions_PreserveCaseHeaderKeyFormat); !ok { + return false + } + + if m.GetPreserveCaseHeaderKeyFormat() != target.GetPreserveCaseHeaderKeyFormat() { + return false + } + + default: + // m is nil but target is not nil + if m.HeaderFormat != target.HeaderFormat { + return false + } + } + + return true +} + +// Equal function +func (m *Http2ProtocolOptions) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Http2ProtocolOptions) + if !ok { + that2, ok := that.(Http2ProtocolOptions) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetMaxConcurrentStreams()).(equality.Equalizer); ok { + if !h.Equal(target.GetMaxConcurrentStreams()) { + return false + } + } else { + if !proto.Equal(m.GetMaxConcurrentStreams(), target.GetMaxConcurrentStreams()) { + return false + } + } + + if h, ok := interface{}(m.GetInitialStreamWindowSize()).(equality.Equalizer); ok { + if !h.Equal(target.GetInitialStreamWindowSize()) { + return false + } + } else { + if !proto.Equal(m.GetInitialStreamWindowSize(), target.GetInitialStreamWindowSize()) { + return false + } + } + + if h, ok := interface{}(m.GetInitialConnectionWindowSize()).(equality.Equalizer); ok { + if !h.Equal(target.GetInitialConnectionWindowSize()) { + return false + } + } else { + if !proto.Equal(m.GetInitialConnectionWindowSize(), target.GetInitialConnectionWindowSize()) { + return false + } + } + + if h, ok := interface{}(m.GetOverrideStreamErrorOnInvalidHttpMessage()).(equality.Equalizer); ok { + if !h.Equal(target.GetOverrideStreamErrorOnInvalidHttpMessage()) { + return false + } + } else { + if !proto.Equal(m.GetOverrideStreamErrorOnInvalidHttpMessage(), target.GetOverrideStreamErrorOnInvalidHttpMessage()) { + return false + } + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/options/protocol/protocol.pb.go b/pkg/api/gloo.solo.io/v1/options/protocol/protocol.pb.go new file mode 100644 index 000000000..1af10de2d --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/protocol/protocol.pb.go @@ -0,0 +1,557 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/protocol/protocol.proto + +package protocol + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Action to take when Envoy receives client request with header names containing underscore +// characters. +// Underscore character is allowed in header names by the RFC-7230 and this behavior is implemented +// as a security measure due to systems that treat '_' and '-' as interchangeable. Envoy by default allows client request headers with underscore +// characters. +type HttpProtocolOptions_HeadersWithUnderscoresAction int32 + +const ( + // Allow headers with underscores. This is the default behavior. + HttpProtocolOptions_ALLOW HttpProtocolOptions_HeadersWithUnderscoresAction = 0 + // Reject client request. HTTP/1 requests are rejected with the 400 status. HTTP/2 requests + // end with the stream reset. The "httpN.requests_rejected_with_underscores_in_headers" counter + // is incremented for each rejected request. + HttpProtocolOptions_REJECT_REQUEST HttpProtocolOptions_HeadersWithUnderscoresAction = 1 + // Drop the header with name containing underscores. The header is dropped before the filter chain is + // invoked and as such filters will not see dropped headers. The + // "httpN.dropped_headers_with_underscores" is incremented for each dropped header. + HttpProtocolOptions_DROP_HEADER HttpProtocolOptions_HeadersWithUnderscoresAction = 2 +) + +// Enum value maps for HttpProtocolOptions_HeadersWithUnderscoresAction. +var ( + HttpProtocolOptions_HeadersWithUnderscoresAction_name = map[int32]string{ + 0: "ALLOW", + 1: "REJECT_REQUEST", + 2: "DROP_HEADER", + } + HttpProtocolOptions_HeadersWithUnderscoresAction_value = map[string]int32{ + "ALLOW": 0, + "REJECT_REQUEST": 1, + "DROP_HEADER": 2, + } +) + +func (x HttpProtocolOptions_HeadersWithUnderscoresAction) Enum() *HttpProtocolOptions_HeadersWithUnderscoresAction { + p := new(HttpProtocolOptions_HeadersWithUnderscoresAction) + *p = x + return p +} + +func (x HttpProtocolOptions_HeadersWithUnderscoresAction) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (HttpProtocolOptions_HeadersWithUnderscoresAction) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_enumTypes[0].Descriptor() +} + +func (HttpProtocolOptions_HeadersWithUnderscoresAction) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_enumTypes[0] +} + +func (x HttpProtocolOptions_HeadersWithUnderscoresAction) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use HttpProtocolOptions_HeadersWithUnderscoresAction.Descriptor instead. +func (HttpProtocolOptions_HeadersWithUnderscoresAction) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_rawDescGZIP(), []int{0, 0} +} + +type HttpProtocolOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The idle timeout for connections. The idle timeout is defined as the + // period in which there are no active requests. When the + // idle timeout is reached the connection will be closed. If the connection is an HTTP/2 + // downstream connection a drain sequence will occur prior to closing the connection, see + // :ref:`drain_timeout + // `. + // Note that request based timeouts mean that HTTP/2 PINGs will not keep the connection alive. + // If not specified, this defaults to 1 hour. To disable idle timeouts explicitly set this to 0. + // + // **Warning**: + // + // Disabling this timeout has a highly likelihood of yielding connection leaks due to lost TCP + // FIN packets, etc. + IdleTimeout *durationpb.Duration `protobuf:"bytes,1,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"` + // The maximum number of headers. If unconfigured, the default + // maximum number of request headers allowed is 100. Requests that exceed this limit will receive + // a 431 response for HTTP/1.x and cause a stream reset for HTTP/2. + MaxHeadersCount uint32 `protobuf:"varint,2,opt,name=max_headers_count,json=maxHeadersCount,proto3" json:"max_headers_count,omitempty"` + // Total duration to keep alive an HTTP request/response stream. If the time limit is reached the stream will be + // reset independent of any other timeouts. If not specified, this value is not set. + MaxStreamDuration *durationpb.Duration `protobuf:"bytes,3,opt,name=max_stream_duration,json=maxStreamDuration,proto3" json:"max_stream_duration,omitempty"` + // Action to take when a client request with a header name containing underscore characters is received. + // If this setting is not specified, the value defaults to ALLOW. + // Note: upstream responses are not affected by this setting. + HeadersWithUnderscoresAction HttpProtocolOptions_HeadersWithUnderscoresAction `protobuf:"varint,4,opt,name=headers_with_underscores_action,json=headersWithUnderscoresAction,proto3,enum=protocol.options.gloo.solo.io.HttpProtocolOptions_HeadersWithUnderscoresAction" json:"headers_with_underscores_action,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HttpProtocolOptions) Reset() { + *x = HttpProtocolOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HttpProtocolOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HttpProtocolOptions) ProtoMessage() {} + +func (x *HttpProtocolOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HttpProtocolOptions.ProtoReflect.Descriptor instead. +func (*HttpProtocolOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_rawDescGZIP(), []int{0} +} + +func (x *HttpProtocolOptions) GetIdleTimeout() *durationpb.Duration { + if x != nil { + return x.IdleTimeout + } + return nil +} + +func (x *HttpProtocolOptions) GetMaxHeadersCount() uint32 { + if x != nil { + return x.MaxHeadersCount + } + return 0 +} + +func (x *HttpProtocolOptions) GetMaxStreamDuration() *durationpb.Duration { + if x != nil { + return x.MaxStreamDuration + } + return nil +} + +func (x *HttpProtocolOptions) GetHeadersWithUnderscoresAction() HttpProtocolOptions_HeadersWithUnderscoresAction { + if x != nil { + return x.HeadersWithUnderscoresAction + } + return HttpProtocolOptions_ALLOW +} + +type Http1ProtocolOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Enables trailers for HTTP/1. By default the HTTP/1 codec drops proxied trailers. + // Note: Trailers must also be enabled at the gateway level in order for this option to take effect. + EnableTrailers bool `protobuf:"varint,1,opt,name=enable_trailers,json=enableTrailers,proto3" json:"enable_trailers,omitempty"` + // Types that are valid to be assigned to HeaderFormat: + // + // *Http1ProtocolOptions_ProperCaseHeaderKeyFormat + // *Http1ProtocolOptions_PreserveCaseHeaderKeyFormat + HeaderFormat isHttp1ProtocolOptions_HeaderFormat `protobuf_oneof:"header_format"` + // Allows invalid HTTP messaging. When this option is false, then Envoy will terminate + // HTTP/1.1 connections upon receiving an invalid HTTP message. However, + // when this option is true, then Envoy will leave the HTTP/1.1 connection + // open where possible. + // If set, this overrides any HCM :ref:`stream_error_on_invalid_http_messaging + // `. + OverrideStreamErrorOnInvalidHttpMessage *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=override_stream_error_on_invalid_http_message,json=overrideStreamErrorOnInvalidHttpMessage,proto3" json:"override_stream_error_on_invalid_http_message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Http1ProtocolOptions) Reset() { + *x = Http1ProtocolOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Http1ProtocolOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Http1ProtocolOptions) ProtoMessage() {} + +func (x *Http1ProtocolOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Http1ProtocolOptions.ProtoReflect.Descriptor instead. +func (*Http1ProtocolOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_rawDescGZIP(), []int{1} +} + +func (x *Http1ProtocolOptions) GetEnableTrailers() bool { + if x != nil { + return x.EnableTrailers + } + return false +} + +func (x *Http1ProtocolOptions) GetHeaderFormat() isHttp1ProtocolOptions_HeaderFormat { + if x != nil { + return x.HeaderFormat + } + return nil +} + +func (x *Http1ProtocolOptions) GetProperCaseHeaderKeyFormat() bool { + if x != nil { + if x, ok := x.HeaderFormat.(*Http1ProtocolOptions_ProperCaseHeaderKeyFormat); ok { + return x.ProperCaseHeaderKeyFormat + } + } + return false +} + +func (x *Http1ProtocolOptions) GetPreserveCaseHeaderKeyFormat() bool { + if x != nil { + if x, ok := x.HeaderFormat.(*Http1ProtocolOptions_PreserveCaseHeaderKeyFormat); ok { + return x.PreserveCaseHeaderKeyFormat + } + } + return false +} + +func (x *Http1ProtocolOptions) GetOverrideStreamErrorOnInvalidHttpMessage() *wrapperspb.BoolValue { + if x != nil { + return x.OverrideStreamErrorOnInvalidHttpMessage + } + return nil +} + +type isHttp1ProtocolOptions_HeaderFormat interface { + isHttp1ProtocolOptions_HeaderFormat() +} + +type Http1ProtocolOptions_ProperCaseHeaderKeyFormat struct { + // Formats the RESPONSE HEADER by proper casing words: the first character and any character following + // a special character will be capitalized if it's an alpha character. For example, + // "content-type" becomes "Content-Type", and "foo$b#$are" becomes "Foo$B#$Are". + // Note that while this results in most headers following conventional casing, certain headers + // are not covered. For example, the "TE" header will be formatted as "Te". + ProperCaseHeaderKeyFormat bool `protobuf:"varint,22,opt,name=proper_case_header_key_format,json=properCaseHeaderKeyFormat,proto3,oneof"` +} + +type Http1ProtocolOptions_PreserveCaseHeaderKeyFormat struct { + // Generates configuration for a stateful formatter extension that allows using received headers to + // affect the output of encoding headers. Specifically: preserving RESPONSE HEADER case during proxying. + PreserveCaseHeaderKeyFormat bool `protobuf:"varint,31,opt,name=preserve_case_header_key_format,json=preserveCaseHeaderKeyFormat,proto3,oneof"` +} + +func (*Http1ProtocolOptions_ProperCaseHeaderKeyFormat) isHttp1ProtocolOptions_HeaderFormat() {} + +func (*Http1ProtocolOptions_PreserveCaseHeaderKeyFormat) isHttp1ProtocolOptions_HeaderFormat() {} + +type Http2ProtocolOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + // [Maximum concurrent streams](https://httpwg.org/specs/rfc7540.html#rfc.section.5.1.2) + // allowed for peer on one HTTP/2 connection. Valid values range from 1 to 2147483647 (2^31 - 1) + // and defaults to 2147483647. + // + // For upstream connections, this also limits how many streams Envoy will initiate concurrently + // on a single connection. If the limit is reached, Envoy may queue requests or establish + // additional connections (as allowed per circuit breaker limits). + // + // This acts as an upper bound: Envoy will lower the max concurrent streams allowed on a given + // connection based on upstream settings. Config dumps will reflect the configured upper bound, + // not the per-connection negotiated limits. + MaxConcurrentStreams *wrapperspb.UInt32Value `protobuf:"bytes,2,opt,name=max_concurrent_streams,json=maxConcurrentStreams,proto3" json:"max_concurrent_streams,omitempty"` + // [Initial stream-level flow-control window](https://httpwg.org/specs/rfc7540.html#rfc.section.6.9.2) size. Valid values range from 65535 + // (2^16 - 1, HTTP/2 default) to 2147483647 (2^31 - 1, HTTP/2 maximum) and defaults to 268435456 + // (256 * 1024 * 1024). + // + // NOTE: 65535 is the initial window size from HTTP/2 spec. We only support increasing the default + // window size now, so it's also the minimum. + // + // This field also acts as a soft limit on the number of bytes Envoy will buffer per-stream in the + // HTTP/2 codec buffers. Once the buffer reaches this pointer, watermark callbacks will fire to + // stop the flow of data to the codec buffers. + InitialStreamWindowSize *wrapperspb.UInt32Value `protobuf:"bytes,3,opt,name=initial_stream_window_size,json=initialStreamWindowSize,proto3" json:"initial_stream_window_size,omitempty"` + // Similar to *initial_stream_window_size*, but for connection-level flow-control + // window. Currently, this has the same minimum/maximum/default as *initial_stream_window_size*. + InitialConnectionWindowSize *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=initial_connection_window_size,json=initialConnectionWindowSize,proto3" json:"initial_connection_window_size,omitempty"` + // Allows invalid HTTP messaging and headers. When this option is disabled (default), then + // the whole HTTP/2 connection is terminated upon receiving invalid HEADERS frame. However, + // when this option is enabled, only the offending stream is terminated. + // + // This overrides any HCM :ref:`stream_error_on_invalid_http_messaging + // ` + // + // See [RFC7540, sec. 8.1](https://datatracker.ietf.org/doc/html/rfc7540#section-8.1) for details. + OverrideStreamErrorOnInvalidHttpMessage *wrapperspb.BoolValue `protobuf:"bytes,14,opt,name=override_stream_error_on_invalid_http_message,json=overrideStreamErrorOnInvalidHttpMessage,proto3" json:"override_stream_error_on_invalid_http_message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Http2ProtocolOptions) Reset() { + *x = Http2ProtocolOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Http2ProtocolOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Http2ProtocolOptions) ProtoMessage() {} + +func (x *Http2ProtocolOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Http2ProtocolOptions.ProtoReflect.Descriptor instead. +func (*Http2ProtocolOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_rawDescGZIP(), []int{2} +} + +func (x *Http2ProtocolOptions) GetMaxConcurrentStreams() *wrapperspb.UInt32Value { + if x != nil { + return x.MaxConcurrentStreams + } + return nil +} + +func (x *Http2ProtocolOptions) GetInitialStreamWindowSize() *wrapperspb.UInt32Value { + if x != nil { + return x.InitialStreamWindowSize + } + return nil +} + +func (x *Http2ProtocolOptions) GetInitialConnectionWindowSize() *wrapperspb.UInt32Value { + if x != nil { + return x.InitialConnectionWindowSize + } + return nil +} + +func (x *Http2ProtocolOptions) GetOverrideStreamErrorOnInvalidHttpMessage() *wrapperspb.BoolValue { + if x != nil { + return x.OverrideStreamErrorOnInvalidHttpMessage + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_rawDesc = string([]byte{ + 0x0a, 0x4d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x1d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x1e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, + 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xb3, 0x03, 0x0a, 0x13, 0x48, 0x74, 0x74, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x69, 0x64, + 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x64, 0x6c, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x6d, 0x61, + 0x78, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x96, 0x01, 0x0a, 0x1f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x77, 0x69, 0x74, 0x68, + 0x5f, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4f, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, + 0x6f, 0x72, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1c, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4e, 0x0a, 0x1c, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x4c, 0x4c, 0x4f, + 0x57, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, + 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x52, 0x4f, 0x50, 0x5f, + 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x02, 0x22, 0xd8, 0x02, 0x0a, 0x14, 0x48, 0x74, 0x74, + 0x70, 0x31, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x69, + 0x6c, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x12, 0x42, 0x0a, 0x1d, 0x70, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, + 0x08, 0x48, 0x00, 0x52, 0x19, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x43, 0x61, 0x73, 0x65, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x46, + 0x0a, 0x1f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x73, 0x65, 0x5f, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x1b, 0x70, 0x72, 0x65, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x43, 0x61, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4b, 0x65, 0x79, + 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x7a, 0x0a, 0x2d, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, + 0x64, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, + 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x27, 0x6f, 0x76, 0x65, 0x72, 0x72, + 0x69, 0x64, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4f, 0x6e, + 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x48, 0x74, 0x74, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x22, 0xa4, 0x03, 0x0a, 0x14, 0x48, 0x74, 0x74, 0x70, 0x32, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x52, 0x0a, 0x16, + 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, + 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x6d, 0x61, 0x78, 0x43, + 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, + 0x12, 0x59, 0x0a, 0x1a, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x17, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x61, 0x0a, 0x1e, 0x69, + 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x1b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x7a, + 0x0a, 0x2d, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x27, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4f, 0x6e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x48, + 0x74, 0x74, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x53, 0xb8, 0xf5, 0x04, 0x01, + 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_goTypes = []any{ + (HttpProtocolOptions_HeadersWithUnderscoresAction)(0), // 0: protocol.options.gloo.solo.io.HttpProtocolOptions.HeadersWithUnderscoresAction + (*HttpProtocolOptions)(nil), // 1: protocol.options.gloo.solo.io.HttpProtocolOptions + (*Http1ProtocolOptions)(nil), // 2: protocol.options.gloo.solo.io.Http1ProtocolOptions + (*Http2ProtocolOptions)(nil), // 3: protocol.options.gloo.solo.io.Http2ProtocolOptions + (*durationpb.Duration)(nil), // 4: google.protobuf.Duration + (*wrapperspb.BoolValue)(nil), // 5: google.protobuf.BoolValue + (*wrapperspb.UInt32Value)(nil), // 6: google.protobuf.UInt32Value +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_depIdxs = []int32{ + 4, // 0: protocol.options.gloo.solo.io.HttpProtocolOptions.idle_timeout:type_name -> google.protobuf.Duration + 4, // 1: protocol.options.gloo.solo.io.HttpProtocolOptions.max_stream_duration:type_name -> google.protobuf.Duration + 0, // 2: protocol.options.gloo.solo.io.HttpProtocolOptions.headers_with_underscores_action:type_name -> protocol.options.gloo.solo.io.HttpProtocolOptions.HeadersWithUnderscoresAction + 5, // 3: protocol.options.gloo.solo.io.Http1ProtocolOptions.override_stream_error_on_invalid_http_message:type_name -> google.protobuf.BoolValue + 6, // 4: protocol.options.gloo.solo.io.Http2ProtocolOptions.max_concurrent_streams:type_name -> google.protobuf.UInt32Value + 6, // 5: protocol.options.gloo.solo.io.Http2ProtocolOptions.initial_stream_window_size:type_name -> google.protobuf.UInt32Value + 6, // 6: protocol.options.gloo.solo.io.Http2ProtocolOptions.initial_connection_window_size:type_name -> google.protobuf.UInt32Value + 5, // 7: protocol.options.gloo.solo.io.Http2ProtocolOptions.override_stream_error_on_invalid_http_message:type_name -> google.protobuf.BoolValue + 8, // [8:8] is the sub-list for method output_type + 8, // [8:8] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_msgTypes[1].OneofWrappers = []any{ + (*Http1ProtocolOptions_ProperCaseHeaderKeyFormat)(nil), + (*Http1ProtocolOptions_PreserveCaseHeaderKeyFormat)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_rawDesc)), + NumEnums: 1, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_enumTypes, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_protocol_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/protocol/protocol.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/protocol/protocol.pb.hash.go new file mode 100644 index 000000000..bac9faf85 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/protocol/protocol.pb.hash.go @@ -0,0 +1,259 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/protocol/protocol.proto + +package protocol + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HttpProtocolOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("protocol.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/protocol.HttpProtocolOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetIdleTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIdleTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetMaxHeadersCount()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxStreamDuration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxStreamDuration")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxStreamDuration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxStreamDuration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetHeadersWithUnderscoresAction()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Http1ProtocolOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("protocol.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/protocol.Http1ProtocolOptions")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetEnableTrailers()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetOverrideStreamErrorOnInvalidHttpMessage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OverrideStreamErrorOnInvalidHttpMessage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOverrideStreamErrorOnInvalidHttpMessage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OverrideStreamErrorOnInvalidHttpMessage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.HeaderFormat.(type) { + + case *Http1ProtocolOptions_ProperCaseHeaderKeyFormat: + + err = binary.Write(hasher, binary.LittleEndian, m.GetProperCaseHeaderKeyFormat()) + if err != nil { + return 0, err + } + + case *Http1ProtocolOptions_PreserveCaseHeaderKeyFormat: + + err = binary.Write(hasher, binary.LittleEndian, m.GetPreserveCaseHeaderKeyFormat()) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Http2ProtocolOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("protocol.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/protocol.Http2ProtocolOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxConcurrentStreams()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxConcurrentStreams")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxConcurrentStreams(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxConcurrentStreams")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetInitialStreamWindowSize()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InitialStreamWindowSize")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInitialStreamWindowSize(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("InitialStreamWindowSize")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetInitialConnectionWindowSize()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InitialConnectionWindowSize")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInitialConnectionWindowSize(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("InitialConnectionWindowSize")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetOverrideStreamErrorOnInvalidHttpMessage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OverrideStreamErrorOnInvalidHttpMessage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOverrideStreamErrorOnInvalidHttpMessage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OverrideStreamErrorOnInvalidHttpMessage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/protocol/protocol.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/protocol/protocol.pb.uniquehash.go new file mode 100644 index 000000000..9250f7500 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/protocol/protocol.pb.uniquehash.go @@ -0,0 +1,273 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/protocol/protocol.proto + +package protocol + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HttpProtocolOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("protocol.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/protocol.HttpProtocolOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetIdleTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIdleTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("MaxHeadersCount")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMaxHeadersCount()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxStreamDuration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxStreamDuration")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxStreamDuration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxStreamDuration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("HeadersWithUnderscoresAction")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetHeadersWithUnderscoresAction()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Http1ProtocolOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("protocol.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/protocol.Http1ProtocolOptions")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("EnableTrailers")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetEnableTrailers()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetOverrideStreamErrorOnInvalidHttpMessage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OverrideStreamErrorOnInvalidHttpMessage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOverrideStreamErrorOnInvalidHttpMessage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OverrideStreamErrorOnInvalidHttpMessage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.HeaderFormat.(type) { + + case *Http1ProtocolOptions_ProperCaseHeaderKeyFormat: + + if _, err = hasher.Write([]byte("ProperCaseHeaderKeyFormat")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetProperCaseHeaderKeyFormat()) + if err != nil { + return 0, err + } + + case *Http1ProtocolOptions_PreserveCaseHeaderKeyFormat: + + if _, err = hasher.Write([]byte("PreserveCaseHeaderKeyFormat")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPreserveCaseHeaderKeyFormat()) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Http2ProtocolOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("protocol.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/protocol.Http2ProtocolOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxConcurrentStreams()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxConcurrentStreams")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxConcurrentStreams(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxConcurrentStreams")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetInitialStreamWindowSize()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InitialStreamWindowSize")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInitialStreamWindowSize(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("InitialStreamWindowSize")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetInitialConnectionWindowSize()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InitialConnectionWindowSize")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInitialConnectionWindowSize(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("InitialConnectionWindowSize")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetOverrideStreamErrorOnInvalidHttpMessage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OverrideStreamErrorOnInvalidHttpMessage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOverrideStreamErrorOnInvalidHttpMessage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OverrideStreamErrorOnInvalidHttpMessage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/protocol_upgrade/protocol_upgrade.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/protocol_upgrade/protocol_upgrade.pb.clone.go new file mode 100644 index 000000000..5efe10925 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/protocol_upgrade/protocol_upgrade.pb.clone.go @@ -0,0 +1,84 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/protocol_upgrade/protocol_upgrade.proto + +package protocol_upgrade + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *ProtocolUpgradeConfig) Clone() proto.Message { + var target *ProtocolUpgradeConfig + if m == nil { + return target + } + target = &ProtocolUpgradeConfig{} + + switch m.UpgradeType.(type) { + + case *ProtocolUpgradeConfig_Websocket: + + if h, ok := interface{}(m.GetWebsocket()).(clone.Cloner); ok { + target.UpgradeType = &ProtocolUpgradeConfig_Websocket{ + Websocket: h.Clone().(*ProtocolUpgradeConfig_ProtocolUpgradeSpec), + } + } else { + target.UpgradeType = &ProtocolUpgradeConfig_Websocket{ + Websocket: proto.Clone(m.GetWebsocket()).(*ProtocolUpgradeConfig_ProtocolUpgradeSpec), + } + } + + case *ProtocolUpgradeConfig_Connect: + + if h, ok := interface{}(m.GetConnect()).(clone.Cloner); ok { + target.UpgradeType = &ProtocolUpgradeConfig_Connect{ + Connect: h.Clone().(*ProtocolUpgradeConfig_ProtocolUpgradeSpec), + } + } else { + target.UpgradeType = &ProtocolUpgradeConfig_Connect{ + Connect: proto.Clone(m.GetConnect()).(*ProtocolUpgradeConfig_ProtocolUpgradeSpec), + } + } + + } + + return target +} + +// Clone function +func (m *ProtocolUpgradeConfig_ProtocolUpgradeSpec) Clone() proto.Message { + var target *ProtocolUpgradeConfig_ProtocolUpgradeSpec + if m == nil { + return target + } + target = &ProtocolUpgradeConfig_ProtocolUpgradeSpec{} + + if h, ok := interface{}(m.GetEnabled()).(clone.Cloner); ok { + target.Enabled = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Enabled = proto.Clone(m.GetEnabled()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/protocol_upgrade/protocol_upgrade.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/protocol_upgrade/protocol_upgrade.pb.equal.go index 4a87884e0..f15e4c2d8 100644 --- a/pkg/api/gloo.solo.io/v1/options/protocol_upgrade/protocol_upgrade.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/options/protocol_upgrade/protocol_upgrade.pb.equal.go @@ -49,6 +49,9 @@ func (m *ProtocolUpgradeConfig) Equal(that interface{}) bool { switch m.UpgradeType.(type) { case *ProtocolUpgradeConfig_Websocket: + if _, ok := target.UpgradeType.(*ProtocolUpgradeConfig_Websocket); !ok { + return false + } if h, ok := interface{}(m.GetWebsocket()).(equality.Equalizer); ok { if !h.Equal(target.GetWebsocket()) { @@ -60,6 +63,26 @@ func (m *ProtocolUpgradeConfig) Equal(that interface{}) bool { } } + case *ProtocolUpgradeConfig_Connect: + if _, ok := target.UpgradeType.(*ProtocolUpgradeConfig_Connect); !ok { + return false + } + + if h, ok := interface{}(m.GetConnect()).(equality.Equalizer); ok { + if !h.Equal(target.GetConnect()) { + return false + } + } else { + if !proto.Equal(m.GetConnect(), target.GetConnect()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.UpgradeType != target.UpgradeType { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/v1/options/protocol_upgrade/protocol_upgrade.pb.go b/pkg/api/gloo.solo.io/v1/options/protocol_upgrade/protocol_upgrade.pb.go index 1617fb67e..f2a9cbe72 100644 --- a/pkg/api/gloo.solo.io/v1/options/protocol_upgrade/protocol_upgrade.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/protocol_upgrade/protocol_upgrade.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/protocol_upgrade/protocol_upgrade.proto @@ -9,12 +9,12 @@ package protocol_upgrade import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -24,27 +24,22 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type ProtocolUpgradeConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to UpgradeType: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to UpgradeType: + // // *ProtocolUpgradeConfig_Websocket - UpgradeType isProtocolUpgradeConfig_UpgradeType `protobuf_oneof:"upgrade_type"` + // *ProtocolUpgradeConfig_Connect + UpgradeType isProtocolUpgradeConfig_UpgradeType `protobuf_oneof:"upgrade_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ProtocolUpgradeConfig) Reset() { *x = ProtocolUpgradeConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProtocolUpgradeConfig) String() string { @@ -55,7 +50,7 @@ func (*ProtocolUpgradeConfig) ProtoMessage() {} func (x *ProtocolUpgradeConfig) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -70,16 +65,27 @@ func (*ProtocolUpgradeConfig) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_rawDescGZIP(), []int{0} } -func (m *ProtocolUpgradeConfig) GetUpgradeType() isProtocolUpgradeConfig_UpgradeType { - if m != nil { - return m.UpgradeType +func (x *ProtocolUpgradeConfig) GetUpgradeType() isProtocolUpgradeConfig_UpgradeType { + if x != nil { + return x.UpgradeType } return nil } func (x *ProtocolUpgradeConfig) GetWebsocket() *ProtocolUpgradeConfig_ProtocolUpgradeSpec { - if x, ok := x.GetUpgradeType().(*ProtocolUpgradeConfig_Websocket); ok { - return x.Websocket + if x != nil { + if x, ok := x.UpgradeType.(*ProtocolUpgradeConfig_Websocket); ok { + return x.Websocket + } + } + return nil +} + +func (x *ProtocolUpgradeConfig) GetConnect() *ProtocolUpgradeConfig_ProtocolUpgradeSpec { + if x != nil { + if x, ok := x.UpgradeType.(*ProtocolUpgradeConfig_Connect); ok { + return x.Connect + } } return nil } @@ -93,24 +99,27 @@ type ProtocolUpgradeConfig_Websocket struct { Websocket *ProtocolUpgradeConfig_ProtocolUpgradeSpec `protobuf:"bytes,1,opt,name=websocket,proto3,oneof"` } +type ProtocolUpgradeConfig_Connect struct { + Connect *ProtocolUpgradeConfig_ProtocolUpgradeSpec `protobuf:"bytes,2,opt,name=connect,proto3,oneof"` +} + func (*ProtocolUpgradeConfig_Websocket) isProtocolUpgradeConfig_UpgradeType() {} -type ProtocolUpgradeConfig_ProtocolUpgradeSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (*ProtocolUpgradeConfig_Connect) isProtocolUpgradeConfig_UpgradeType() {} +type ProtocolUpgradeConfig_ProtocolUpgradeSpec struct { + state protoimpl.MessageState `protogen:"open.v1"` // Whether the upgrade should be enabled. If left unset, Envoy will enable the protocol upgrade. - Enabled *wrappers.BoolValue `protobuf:"bytes,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + Enabled *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ProtocolUpgradeConfig_ProtocolUpgradeSpec) Reset() { *x = ProtocolUpgradeConfig_ProtocolUpgradeSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProtocolUpgradeConfig_ProtocolUpgradeSpec) String() string { @@ -121,7 +130,7 @@ func (*ProtocolUpgradeConfig_ProtocolUpgradeSpec) ProtoMessage() {} func (x *ProtocolUpgradeConfig_ProtocolUpgradeSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -136,7 +145,7 @@ func (*ProtocolUpgradeConfig_ProtocolUpgradeSpec) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_rawDescGZIP(), []int{0, 0} } -func (x *ProtocolUpgradeConfig_ProtocolUpgradeSpec) GetEnabled() *wrappers.BoolValue { +func (x *ProtocolUpgradeConfig_ProtocolUpgradeSpec) GetEnabled() *wrapperspb.BoolValue { if x != nil { return x.Enabled } @@ -145,7 +154,7 @@ func (x *ProtocolUpgradeConfig_ProtocolUpgradeSpec) GetEnabled() *wrappers.BoolV var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_rawDesc = string([]byte{ 0x0a, 0x5d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -157,7 +166,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_ 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe6, 0x01, 0x0a, 0x15, 0x50, + 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd4, 0x02, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x70, 0x0a, 0x09, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x50, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, @@ -166,47 +175,55 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_ 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x09, 0x77, 0x65, 0x62, - 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x1a, 0x4b, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x34, 0x0a, - 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x42, 0x57, 0x5a, 0x4d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, - 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x75, 0x70, 0x67, - 0x72, 0x61, 0x64, 0x65, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} + 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x6c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x50, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, + 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x1a, 0x4b, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x34, 0x0a, 0x07, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, + 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x42, 0x5b, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, + 0x4d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_goTypes = []any{ (*ProtocolUpgradeConfig)(nil), // 0: protocol_upgrade.options.gloo.solo.io.ProtocolUpgradeConfig (*ProtocolUpgradeConfig_ProtocolUpgradeSpec)(nil), // 1: protocol_upgrade.options.gloo.solo.io.ProtocolUpgradeConfig.ProtocolUpgradeSpec - (*wrappers.BoolValue)(nil), // 2: google.protobuf.BoolValue + (*wrapperspb.BoolValue)(nil), // 2: google.protobuf.BoolValue } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_depIdxs = []int32{ 1, // 0: protocol_upgrade.options.gloo.solo.io.ProtocolUpgradeConfig.websocket:type_name -> protocol_upgrade.options.gloo.solo.io.ProtocolUpgradeConfig.ProtocolUpgradeSpec - 2, // 1: protocol_upgrade.options.gloo.solo.io.ProtocolUpgradeConfig.ProtocolUpgradeSpec.enabled:type_name -> google.protobuf.BoolValue - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name + 1, // 1: protocol_upgrade.options.gloo.solo.io.ProtocolUpgradeConfig.connect:type_name -> protocol_upgrade.options.gloo.solo.io.ProtocolUpgradeConfig.ProtocolUpgradeSpec + 2, // 2: protocol_upgrade.options.gloo.solo.io.ProtocolUpgradeConfig.ProtocolUpgradeSpec.enabled:type_name -> google.protobuf.BoolValue + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name } func init() { @@ -216,40 +233,15 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProtocolUpgradeConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProtocolUpgradeConfig_ProtocolUpgradeSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_msgTypes[0].OneofWrappers = []any{ (*ProtocolUpgradeConfig_Websocket)(nil), + (*ProtocolUpgradeConfig_Connect)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_rawDesc)), NumEnums: 0, NumMessages: 2, NumExtensions: 0, @@ -260,7 +252,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_protocol_upgrade_protocol_upgrade_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/protocol_upgrade/protocol_upgrade.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/protocol_upgrade/protocol_upgrade.pb.hash.go index 588ba2b82..1a58c7e62 100644 --- a/pkg/api/gloo.solo.io/v1/options/protocol_upgrade/protocol_upgrade.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/protocol_upgrade/protocol_upgrade.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ProtocolUpgradeConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -43,14 +47,42 @@ func (m *ProtocolUpgradeConfig) Hash(hasher hash.Hash64) (uint64, error) { case *ProtocolUpgradeConfig_Websocket: if h, ok := interface{}(m.GetWebsocket()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Websocket")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWebsocket(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Websocket")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProtocolUpgradeConfig_Connect: + + if h, ok := interface{}(m.GetConnect()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Connect")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetWebsocket(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConnect(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Connect")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -62,6 +94,10 @@ func (m *ProtocolUpgradeConfig) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ProtocolUpgradeConfig_ProtocolUpgradeSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -75,14 +111,20 @@ func (m *ProtocolUpgradeConfig_ProtocolUpgradeSpec) Hash(hasher hash.Hash64) (ui } if h, ok := interface{}(m.GetEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Enabled")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetEnabled(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetEnabled(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Enabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/v1/options/protocol_upgrade/protocol_upgrade.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/protocol_upgrade/protocol_upgrade.pb.uniquehash.go new file mode 100644 index 000000000..0b798fe1d --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/protocol_upgrade/protocol_upgrade.pb.uniquehash.go @@ -0,0 +1,134 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/protocol_upgrade/protocol_upgrade.proto + +package protocol_upgrade + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ProtocolUpgradeConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("protocol_upgrade.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/protocol_upgrade.ProtocolUpgradeConfig")); err != nil { + return 0, err + } + + switch m.UpgradeType.(type) { + + case *ProtocolUpgradeConfig_Websocket: + + if h, ok := interface{}(m.GetWebsocket()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Websocket")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWebsocket(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Websocket")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ProtocolUpgradeConfig_Connect: + + if h, ok := interface{}(m.GetConnect()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Connect")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConnect(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Connect")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ProtocolUpgradeConfig_ProtocolUpgradeSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("protocol_upgrade.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/protocol_upgrade.ProtocolUpgradeConfig_ProtocolUpgradeSpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Enabled")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnabled(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Enabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/proxy_protocol/proxy_protocol.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/proxy_protocol/proxy_protocol.pb.clone.go new file mode 100644 index 000000000..e21c1c9e4 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/proxy_protocol/proxy_protocol.pb.clone.go @@ -0,0 +1,86 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/proxy_protocol/proxy_protocol.proto + +package proxy_protocol + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *ProxyProtocol) Clone() proto.Message { + var target *ProxyProtocol + if m == nil { + return target + } + target = &ProxyProtocol{} + + if m.GetRules() != nil { + target.Rules = make([]*ProxyProtocol_Rule, len(m.GetRules())) + for idx, v := range m.GetRules() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Rules[idx] = h.Clone().(*ProxyProtocol_Rule) + } else { + target.Rules[idx] = proto.Clone(v).(*ProxyProtocol_Rule) + } + + } + } + + target.AllowRequestsWithoutProxyProtocol = m.GetAllowRequestsWithoutProxyProtocol() + + return target +} + +// Clone function +func (m *ProxyProtocol_KeyValuePair) Clone() proto.Message { + var target *ProxyProtocol_KeyValuePair + if m == nil { + return target + } + target = &ProxyProtocol_KeyValuePair{} + + target.MetadataNamespace = m.GetMetadataNamespace() + + target.Key = m.GetKey() + + return target +} + +// Clone function +func (m *ProxyProtocol_Rule) Clone() proto.Message { + var target *ProxyProtocol_Rule + if m == nil { + return target + } + target = &ProxyProtocol_Rule{} + + target.TlvType = m.GetTlvType() + + if h, ok := interface{}(m.GetOnTlvPresent()).(clone.Cloner); ok { + target.OnTlvPresent = h.Clone().(*ProxyProtocol_KeyValuePair) + } else { + target.OnTlvPresent = proto.Clone(m.GetOnTlvPresent()).(*ProxyProtocol_KeyValuePair) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/proxy_protocol/proxy_protocol.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/proxy_protocol/proxy_protocol.pb.equal.go new file mode 100644 index 000000000..01ba484e7 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/proxy_protocol/proxy_protocol.pb.equal.go @@ -0,0 +1,141 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/proxy_protocol/proxy_protocol.proto + +package proxy_protocol + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *ProxyProtocol) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ProxyProtocol) + if !ok { + that2, ok := that.(ProxyProtocol) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetRules()) != len(target.GetRules()) { + return false + } + for idx, v := range m.GetRules() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetRules()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetRules()[idx]) { + return false + } + } + + } + + if m.GetAllowRequestsWithoutProxyProtocol() != target.GetAllowRequestsWithoutProxyProtocol() { + return false + } + + return true +} + +// Equal function +func (m *ProxyProtocol_KeyValuePair) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ProxyProtocol_KeyValuePair) + if !ok { + that2, ok := that.(ProxyProtocol_KeyValuePair) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetMetadataNamespace(), target.GetMetadataNamespace()) != 0 { + return false + } + + if strings.Compare(m.GetKey(), target.GetKey()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *ProxyProtocol_Rule) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ProxyProtocol_Rule) + if !ok { + that2, ok := that.(ProxyProtocol_Rule) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetTlvType() != target.GetTlvType() { + return false + } + + if h, ok := interface{}(m.GetOnTlvPresent()).(equality.Equalizer); ok { + if !h.Equal(target.GetOnTlvPresent()) { + return false + } + } else { + if !proto.Equal(m.GetOnTlvPresent(), target.GetOnTlvPresent()) { + return false + } + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/options/proxy_protocol/proxy_protocol.pb.go b/pkg/api/gloo.solo.io/v1/options/proxy_protocol/proxy_protocol.pb.go new file mode 100644 index 000000000..2d3703c3c --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/proxy_protocol/proxy_protocol.pb.go @@ -0,0 +1,300 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/proxy_protocol/proxy_protocol.proto + +package proxy_protocol + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/envoyproxy/protoc-gen-validate/validate" + _ "github.com/solo-io/protoc-gen-ext/extproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type ProxyProtocol struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The list of rules to apply to requests. + Rules []*ProxyProtocol_Rule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` + // Allow requests through that don't use proxy protocol. Defaults to false. + // + // **Attention**: + // + // The true setting is only honored in Gloo Edge Enterprise. + // This breaks conformance with the specification. + // Only enable if ALL traffic to the listener comes from a trusted source. + // For more information on the security implications of this feature, see + // https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt + AllowRequestsWithoutProxyProtocol bool `protobuf:"varint,2,opt,name=allow_requests_without_proxy_protocol,json=allowRequestsWithoutProxyProtocol,proto3" json:"allow_requests_without_proxy_protocol,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ProxyProtocol) Reset() { + *x = ProxyProtocol{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ProxyProtocol) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProxyProtocol) ProtoMessage() {} + +func (x *ProxyProtocol) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProxyProtocol.ProtoReflect.Descriptor instead. +func (*ProxyProtocol) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_rawDescGZIP(), []int{0} +} + +func (x *ProxyProtocol) GetRules() []*ProxyProtocol_Rule { + if x != nil { + return x.Rules + } + return nil +} + +func (x *ProxyProtocol) GetAllowRequestsWithoutProxyProtocol() bool { + if x != nil { + return x.AllowRequestsWithoutProxyProtocol + } + return false +} + +type ProxyProtocol_KeyValuePair struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The namespace — if this is empty, the filter's namespace will be used. + MetadataNamespace string `protobuf:"bytes,1,opt,name=metadata_namespace,json=metadataNamespace,proto3" json:"metadata_namespace,omitempty"` + // The key to use within the namespace. + Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ProxyProtocol_KeyValuePair) Reset() { + *x = ProxyProtocol_KeyValuePair{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ProxyProtocol_KeyValuePair) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProxyProtocol_KeyValuePair) ProtoMessage() {} + +func (x *ProxyProtocol_KeyValuePair) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProxyProtocol_KeyValuePair.ProtoReflect.Descriptor instead. +func (*ProxyProtocol_KeyValuePair) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *ProxyProtocol_KeyValuePair) GetMetadataNamespace() string { + if x != nil { + return x.MetadataNamespace + } + return "" +} + +func (x *ProxyProtocol_KeyValuePair) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +// A Rule defines what metadata to apply when a header is present or missing. +type ProxyProtocol_Rule struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The type that triggers the rule - required + // TLV type is defined as uint8_t in proxy protocol. See [the spec](https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt) for details. + TlvType uint32 `protobuf:"varint,1,opt,name=tlv_type,json=tlvType,proto3" json:"tlv_type,omitempty"` + // If the TLV type is present, apply this metadata KeyValuePair. + OnTlvPresent *ProxyProtocol_KeyValuePair `protobuf:"bytes,2,opt,name=on_tlv_present,json=onTlvPresent,proto3" json:"on_tlv_present,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ProxyProtocol_Rule) Reset() { + *x = ProxyProtocol_Rule{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ProxyProtocol_Rule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProxyProtocol_Rule) ProtoMessage() {} + +func (x *ProxyProtocol_Rule) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProxyProtocol_Rule.ProtoReflect.Descriptor instead. +func (*ProxyProtocol_Rule) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *ProxyProtocol_Rule) GetTlvType() uint32 { + if x != nil { + return x.TlvType + } + return 0 +} + +func (x *ProxyProtocol_Rule) GetOnTlvPresent() *ProxyProtocol_KeyValuePair { + if x != nil { + return x.OnTlvPresent + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_rawDesc = string([]byte{ + 0x0a, 0x59, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x23, 0x70, 0x72, 0x6f, + 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9f, 0x03, + 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, + 0x4d, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, + 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x50, + 0x0a, 0x25, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, + 0x5f, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x21, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, + 0x6f, 0x75, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x1a, 0x58, 0x0a, 0x0c, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, + 0x12, 0x2d, 0x0a, 0x12, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, + 0x19, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x1a, 0x92, 0x01, 0x0a, 0x04, 0x52, + 0x75, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x08, 0x74, 0x6c, 0x76, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x10, 0x80, 0x02, 0x52, + 0x07, 0x74, 0x6c, 0x76, 0x54, 0x79, 0x70, 0x65, 0x12, 0x65, 0x0a, 0x0e, 0x6f, 0x6e, 0x5f, 0x74, + 0x6c, 0x76, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3f, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, + 0x72, 0x52, 0x0c, 0x6f, 0x6e, 0x54, 0x6c, 0x76, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x42, + 0x59, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x4b, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_goTypes = []any{ + (*ProxyProtocol)(nil), // 0: proxy_protocol.options.gloo.solo.io.ProxyProtocol + (*ProxyProtocol_KeyValuePair)(nil), // 1: proxy_protocol.options.gloo.solo.io.ProxyProtocol.KeyValuePair + (*ProxyProtocol_Rule)(nil), // 2: proxy_protocol.options.gloo.solo.io.ProxyProtocol.Rule +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_depIdxs = []int32{ + 2, // 0: proxy_protocol.options.gloo.solo.io.ProxyProtocol.rules:type_name -> proxy_protocol.options.gloo.solo.io.ProxyProtocol.Rule + 1, // 1: proxy_protocol.options.gloo.solo.io.ProxyProtocol.Rule.on_tlv_present:type_name -> proxy_protocol.options.gloo.solo.io.ProxyProtocol.KeyValuePair + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_rawDesc)), + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proxy_protocol_proxy_protocol_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/proxy_protocol/proxy_protocol.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/proxy_protocol/proxy_protocol.pb.hash.go new file mode 100644 index 000000000..5d16c48e4 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/proxy_protocol/proxy_protocol.pb.hash.go @@ -0,0 +1,148 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/proxy_protocol/proxy_protocol.proto + +package proxy_protocol + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ProxyProtocol) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("proxy_protocol.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/proxy_protocol.ProxyProtocol")); err != nil { + return 0, err + } + + for _, v := range m.GetRules() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetAllowRequestsWithoutProxyProtocol()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ProxyProtocol_KeyValuePair) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("proxy_protocol.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/proxy_protocol.ProxyProtocol_KeyValuePair")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetMetadataNamespace())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ProxyProtocol_Rule) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("proxy_protocol.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/proxy_protocol.ProxyProtocol_Rule")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetTlvType()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetOnTlvPresent()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OnTlvPresent")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOnTlvPresent(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OnTlvPresent")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/proxy_protocol/proxy_protocol.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/proxy_protocol/proxy_protocol.pb.uniquehash.go new file mode 100644 index 000000000..c960a71fa --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/proxy_protocol/proxy_protocol.pb.uniquehash.go @@ -0,0 +1,165 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/proxy_protocol/proxy_protocol.proto + +package proxy_protocol + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ProxyProtocol) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("proxy_protocol.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/proxy_protocol.ProxyProtocol")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Rules")); err != nil { + return 0, err + } + for i, v := range m.GetRules() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("AllowRequestsWithoutProxyProtocol")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAllowRequestsWithoutProxyProtocol()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ProxyProtocol_KeyValuePair) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("proxy_protocol.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/proxy_protocol.ProxyProtocol_KeyValuePair")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MetadataNamespace")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetMetadataNamespace())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ProxyProtocol_Rule) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("proxy_protocol.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/proxy_protocol.ProxyProtocol_Rule")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TlvType")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetTlvType()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetOnTlvPresent()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OnTlvPresent")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOnTlvPresent(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OnTlvPresent")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/rest/rest.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/rest/rest.pb.clone.go new file mode 100644 index 000000000..e998dccde --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/rest/rest.pb.clone.go @@ -0,0 +1,112 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/rest/rest.proto + +package rest + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_transformation "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_transformation "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *ServiceSpec) Clone() proto.Message { + var target *ServiceSpec + if m == nil { + return target + } + target = &ServiceSpec{} + + if m.GetTransformations() != nil { + target.Transformations = make(map[string]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_transformation.TransformationTemplate, len(m.GetTransformations())) + for k, v := range m.GetTransformations() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Transformations[k] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_transformation.TransformationTemplate) + } else { + target.Transformations[k] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_transformation.TransformationTemplate) + } + + } + } + + if h, ok := interface{}(m.GetSwaggerInfo()).(clone.Cloner); ok { + target.SwaggerInfo = h.Clone().(*ServiceSpec_SwaggerInfo) + } else { + target.SwaggerInfo = proto.Clone(m.GetSwaggerInfo()).(*ServiceSpec_SwaggerInfo) + } + + return target +} + +// Clone function +func (m *DestinationSpec) Clone() proto.Message { + var target *DestinationSpec + if m == nil { + return target + } + target = &DestinationSpec{} + + target.FunctionName = m.GetFunctionName() + + if h, ok := interface{}(m.GetParameters()).(clone.Cloner); ok { + target.Parameters = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_transformation.Parameters) + } else { + target.Parameters = proto.Clone(m.GetParameters()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_transformation.Parameters) + } + + if h, ok := interface{}(m.GetResponseTransformation()).(clone.Cloner); ok { + target.ResponseTransformation = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_transformation.TransformationTemplate) + } else { + target.ResponseTransformation = proto.Clone(m.GetResponseTransformation()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_transformation.TransformationTemplate) + } + + return target +} + +// Clone function +func (m *ServiceSpec_SwaggerInfo) Clone() proto.Message { + var target *ServiceSpec_SwaggerInfo + if m == nil { + return target + } + target = &ServiceSpec_SwaggerInfo{} + + switch m.SwaggerSpec.(type) { + + case *ServiceSpec_SwaggerInfo_Url: + + target.SwaggerSpec = &ServiceSpec_SwaggerInfo_Url{ + Url: m.GetUrl(), + } + + case *ServiceSpec_SwaggerInfo_Inline: + + target.SwaggerSpec = &ServiceSpec_SwaggerInfo_Inline{ + Inline: m.GetInline(), + } + + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/rest/rest.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/rest/rest.pb.equal.go index ab7829208..528798c78 100644 --- a/pkg/api/gloo.solo.io/v1/options/rest/rest.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/options/rest/rest.pb.equal.go @@ -148,17 +148,28 @@ func (m *ServiceSpec_SwaggerInfo) Equal(that interface{}) bool { switch m.SwaggerSpec.(type) { case *ServiceSpec_SwaggerInfo_Url: + if _, ok := target.SwaggerSpec.(*ServiceSpec_SwaggerInfo_Url); !ok { + return false + } if strings.Compare(m.GetUrl(), target.GetUrl()) != 0 { return false } case *ServiceSpec_SwaggerInfo_Inline: + if _, ok := target.SwaggerSpec.(*ServiceSpec_SwaggerInfo_Inline); !ok { + return false + } if strings.Compare(m.GetInline(), target.GetInline()) != 0 { return false } + default: + // m is nil but target is not nil + if m.SwaggerSpec != target.SwaggerSpec { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/v1/options/rest/rest.pb.go b/pkg/api/gloo.solo.io/v1/options/rest/rest.pb.go index 41345c7d6..6dbff4224 100644 --- a/pkg/api/gloo.solo.io/v1/options/rest/rest.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/rest/rest.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/rest/rest.proto @@ -9,8 +9,8 @@ package rest import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" transformation "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation" transformation1 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation" @@ -25,26 +25,19 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type ServiceSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Transformations map[string]*transformation.TransformationTemplate `protobuf:"bytes,1,rep,name=transformations,proto3" json:"transformations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + state protoimpl.MessageState `protogen:"open.v1"` + Transformations map[string]*transformation.TransformationTemplate `protobuf:"bytes,1,rep,name=transformations,proto3" json:"transformations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` SwaggerInfo *ServiceSpec_SwaggerInfo `protobuf:"bytes,2,opt,name=swagger_info,json=swaggerInfo,proto3" json:"swagger_info,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ServiceSpec) Reset() { *x = ServiceSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ServiceSpec) String() string { @@ -55,7 +48,7 @@ func (*ServiceSpec) ProtoMessage() {} func (x *ServiceSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -86,22 +79,19 @@ func (x *ServiceSpec) GetSwaggerInfo() *ServiceSpec_SwaggerInfo { // This is only for upstream with REST service spec type DestinationSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` FunctionName string `protobuf:"bytes,1,opt,name=function_name,json=functionName,proto3" json:"function_name,omitempty"` Parameters *transformation1.Parameters `protobuf:"bytes,2,opt,name=parameters,proto3" json:"parameters,omitempty"` ResponseTransformation *transformation.TransformationTemplate `protobuf:"bytes,3,opt,name=response_transformation,json=responseTransformation,proto3" json:"response_transformation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DestinationSpec) Reset() { *x = DestinationSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DestinationSpec) String() string { @@ -112,7 +102,7 @@ func (*DestinationSpec) ProtoMessage() {} func (x *DestinationSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -149,23 +139,21 @@ func (x *DestinationSpec) GetResponseTransformation() *transformation.Transforma } type ServiceSpec_SwaggerInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to SwaggerSpec: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to SwaggerSpec: + // // *ServiceSpec_SwaggerInfo_Url // *ServiceSpec_SwaggerInfo_Inline - SwaggerSpec isServiceSpec_SwaggerInfo_SwaggerSpec `protobuf_oneof:"swagger_spec"` + SwaggerSpec isServiceSpec_SwaggerInfo_SwaggerSpec `protobuf_oneof:"swagger_spec"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ServiceSpec_SwaggerInfo) Reset() { *x = ServiceSpec_SwaggerInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ServiceSpec_SwaggerInfo) String() string { @@ -176,7 +164,7 @@ func (*ServiceSpec_SwaggerInfo) ProtoMessage() {} func (x *ServiceSpec_SwaggerInfo) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -191,23 +179,27 @@ func (*ServiceSpec_SwaggerInfo) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_rawDescGZIP(), []int{0, 1} } -func (m *ServiceSpec_SwaggerInfo) GetSwaggerSpec() isServiceSpec_SwaggerInfo_SwaggerSpec { - if m != nil { - return m.SwaggerSpec +func (x *ServiceSpec_SwaggerInfo) GetSwaggerSpec() isServiceSpec_SwaggerInfo_SwaggerSpec { + if x != nil { + return x.SwaggerSpec } return nil } func (x *ServiceSpec_SwaggerInfo) GetUrl() string { - if x, ok := x.GetSwaggerSpec().(*ServiceSpec_SwaggerInfo_Url); ok { - return x.Url + if x != nil { + if x, ok := x.SwaggerSpec.(*ServiceSpec_SwaggerInfo_Url); ok { + return x.Url + } } return "" } func (x *ServiceSpec_SwaggerInfo) GetInline() string { - if x, ok := x.GetSwaggerSpec().(*ServiceSpec_SwaggerInfo_Inline); ok { - return x.Inline + if x != nil { + if x, ok := x.SwaggerSpec.(*ServiceSpec_SwaggerInfo_Inline); ok { + return x.Inline + } } return "" } @@ -230,7 +222,7 @@ func (*ServiceSpec_SwaggerInfo_Inline) isServiceSpec_SwaggerInfo_SwaggerSpec() { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_rawDesc = string([]byte{ 0x0a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -290,29 +282,29 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_r 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x16, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x4b, 0x5a, - 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, - 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x65, - 0x73, 0x74, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x4f, 0xb8, + 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x41, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, + 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_goTypes = []any{ (*ServiceSpec)(nil), // 0: rest.options.gloo.solo.io.ServiceSpec (*DestinationSpec)(nil), // 1: rest.options.gloo.solo.io.DestinationSpec nil, // 2: rest.options.gloo.solo.io.ServiceSpec.TransformationsEntry @@ -338,45 +330,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_ if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ServiceSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DestinationSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ServiceSpec_SwaggerInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_msgTypes[3].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_msgTypes[3].OneofWrappers = []any{ (*ServiceSpec_SwaggerInfo_Url)(nil), (*ServiceSpec_SwaggerInfo_Inline)(nil), } @@ -384,7 +338,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_ out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_rawDesc)), NumEnums: 0, NumMessages: 4, NumExtensions: 0, @@ -395,7 +349,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_ MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_rest_rest_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/rest/rest.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/rest/rest.pb.hash.go index 7ba4d58b6..38b6fd93f 100644 --- a/pkg/api/gloo.solo.io/v1/options/rest/rest.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/rest/rest.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ServiceSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -45,14 +49,20 @@ func (m *ServiceSpec) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -72,14 +82,20 @@ func (m *ServiceSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetSwaggerInfo()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SwaggerInfo")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSwaggerInfo(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSwaggerInfo(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SwaggerInfo")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -89,6 +105,10 @@ func (m *ServiceSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *DestinationSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -106,28 +126,40 @@ func (m *DestinationSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetParameters()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Parameters")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetParameters(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetParameters(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Parameters")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetResponseTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -137,6 +169,10 @@ func (m *DestinationSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ServiceSpec_SwaggerInfo) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/v1/options/rest/rest.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/rest/rest.pb.uniquehash.go new file mode 100644 index 000000000..64d2d9921 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/rest/rest.pb.uniquehash.go @@ -0,0 +1,216 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/rest/rest.proto + +package rest + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ServiceSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("rest.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/rest.ServiceSpec")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetTransformations() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetSwaggerInfo()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SwaggerInfo")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSwaggerInfo(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SwaggerInfo")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DestinationSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("rest.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/rest.DestinationSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("FunctionName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetFunctionName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetParameters()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Parameters")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetParameters(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Parameters")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetResponseTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ServiceSpec_SwaggerInfo) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("rest.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/rest.ServiceSpec_SwaggerInfo")); err != nil { + return 0, err + } + + switch m.SwaggerSpec.(type) { + + case *ServiceSpec_SwaggerInfo_Url: + + if _, err = hasher.Write([]byte("Url")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUrl())); err != nil { + return 0, err + } + + case *ServiceSpec_SwaggerInfo_Inline: + + if _, err = hasher.Write([]byte("Inline")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetInline())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/retries/retries.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/retries/retries.pb.clone.go new file mode 100644 index 000000000..fa8d796fa --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/retries/retries.pb.clone.go @@ -0,0 +1,173 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/retries/retries.proto + +package retries + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *RetryBackOff) Clone() proto.Message { + var target *RetryBackOff + if m == nil { + return target + } + target = &RetryBackOff{} + + if h, ok := interface{}(m.GetBaseInterval()).(clone.Cloner); ok { + target.BaseInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.BaseInterval = proto.Clone(m.GetBaseInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetMaxInterval()).(clone.Cloner); ok { + target.MaxInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.MaxInterval = proto.Clone(m.GetMaxInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + return target +} + +// Clone function +func (m *ResetHeader) Clone() proto.Message { + var target *ResetHeader + if m == nil { + return target + } + target = &ResetHeader{} + + target.Name = m.GetName() + + target.Format = m.GetFormat() + + return target +} + +// Clone function +func (m *RateLimitedRetryBackOff) Clone() proto.Message { + var target *RateLimitedRetryBackOff + if m == nil { + return target + } + target = &RateLimitedRetryBackOff{} + + if m.GetResetHeaders() != nil { + target.ResetHeaders = make([]*ResetHeader, len(m.GetResetHeaders())) + for idx, v := range m.GetResetHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ResetHeaders[idx] = h.Clone().(*ResetHeader) + } else { + target.ResetHeaders[idx] = proto.Clone(v).(*ResetHeader) + } + + } + } + + if h, ok := interface{}(m.GetMaxInterval()).(clone.Cloner); ok { + target.MaxInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.MaxInterval = proto.Clone(m.GetMaxInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + return target +} + +// Clone function +func (m *RetryPolicy) Clone() proto.Message { + var target *RetryPolicy + if m == nil { + return target + } + target = &RetryPolicy{} + + target.RetryOn = m.GetRetryOn() + + target.NumRetries = m.GetNumRetries() + + if h, ok := interface{}(m.GetPerTryTimeout()).(clone.Cloner); ok { + target.PerTryTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.PerTryTimeout = proto.Clone(m.GetPerTryTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetRetryBackOff()).(clone.Cloner); ok { + target.RetryBackOff = h.Clone().(*RetryBackOff) + } else { + target.RetryBackOff = proto.Clone(m.GetRetryBackOff()).(*RetryBackOff) + } + + if m.GetRetriableStatusCodes() != nil { + target.RetriableStatusCodes = make([]uint32, len(m.GetRetriableStatusCodes())) + for idx, v := range m.GetRetriableStatusCodes() { + + target.RetriableStatusCodes[idx] = v + + } + } + + if h, ok := interface{}(m.GetRateLimitedRetryBackOff()).(clone.Cloner); ok { + target.RateLimitedRetryBackOff = h.Clone().(*RateLimitedRetryBackOff) + } else { + target.RateLimitedRetryBackOff = proto.Clone(m.GetRateLimitedRetryBackOff()).(*RateLimitedRetryBackOff) + } + + switch m.PriorityPredicate.(type) { + + case *RetryPolicy_PreviousPriorities_: + + if h, ok := interface{}(m.GetPreviousPriorities()).(clone.Cloner); ok { + target.PriorityPredicate = &RetryPolicy_PreviousPriorities_{ + PreviousPriorities: h.Clone().(*RetryPolicy_PreviousPriorities), + } + } else { + target.PriorityPredicate = &RetryPolicy_PreviousPriorities_{ + PreviousPriorities: proto.Clone(m.GetPreviousPriorities()).(*RetryPolicy_PreviousPriorities), + } + } + + } + + return target +} + +// Clone function +func (m *RetryPolicy_PreviousPriorities) Clone() proto.Message { + var target *RetryPolicy_PreviousPriorities + if m == nil { + return target + } + target = &RetryPolicy_PreviousPriorities{} + + if h, ok := interface{}(m.GetUpdateFrequency()).(clone.Cloner); ok { + target.UpdateFrequency = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.UpdateFrequency = proto.Clone(m.GetUpdateFrequency()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/retries/retries.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/retries/retries.pb.equal.go index 415a05f80..9f90666c2 100644 --- a/pkg/api/gloo.solo.io/v1/options/retries/retries.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/options/retries/retries.pb.equal.go @@ -25,6 +25,133 @@ var ( _ = proto.Message(nil) ) +// Equal function +func (m *RetryBackOff) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RetryBackOff) + if !ok { + that2, ok := that.(RetryBackOff) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetBaseInterval()).(equality.Equalizer); ok { + if !h.Equal(target.GetBaseInterval()) { + return false + } + } else { + if !proto.Equal(m.GetBaseInterval(), target.GetBaseInterval()) { + return false + } + } + + if h, ok := interface{}(m.GetMaxInterval()).(equality.Equalizer); ok { + if !h.Equal(target.GetMaxInterval()) { + return false + } + } else { + if !proto.Equal(m.GetMaxInterval(), target.GetMaxInterval()) { + return false + } + } + + return true +} + +// Equal function +func (m *ResetHeader) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ResetHeader) + if !ok { + that2, ok := that.(ResetHeader) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetName(), target.GetName()) != 0 { + return false + } + + if m.GetFormat() != target.GetFormat() { + return false + } + + return true +} + +// Equal function +func (m *RateLimitedRetryBackOff) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RateLimitedRetryBackOff) + if !ok { + that2, ok := that.(RateLimitedRetryBackOff) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetResetHeaders()) != len(target.GetResetHeaders()) { + return false + } + for idx, v := range m.GetResetHeaders() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetResetHeaders()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetResetHeaders()[idx]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetMaxInterval()).(equality.Equalizer); ok { + if !h.Equal(target.GetMaxInterval()) { + return false + } + } else { + if !proto.Equal(m.GetMaxInterval(), target.GetMaxInterval()) { + return false + } + } + + return true +} + // Equal function func (m *RetryPolicy) Equal(that interface{}) bool { if that == nil { @@ -64,5 +191,94 @@ func (m *RetryPolicy) Equal(that interface{}) bool { } } + if h, ok := interface{}(m.GetRetryBackOff()).(equality.Equalizer); ok { + if !h.Equal(target.GetRetryBackOff()) { + return false + } + } else { + if !proto.Equal(m.GetRetryBackOff(), target.GetRetryBackOff()) { + return false + } + } + + if len(m.GetRetriableStatusCodes()) != len(target.GetRetriableStatusCodes()) { + return false + } + for idx, v := range m.GetRetriableStatusCodes() { + + if v != target.GetRetriableStatusCodes()[idx] { + return false + } + + } + + if h, ok := interface{}(m.GetRateLimitedRetryBackOff()).(equality.Equalizer); ok { + if !h.Equal(target.GetRateLimitedRetryBackOff()) { + return false + } + } else { + if !proto.Equal(m.GetRateLimitedRetryBackOff(), target.GetRateLimitedRetryBackOff()) { + return false + } + } + + switch m.PriorityPredicate.(type) { + + case *RetryPolicy_PreviousPriorities_: + if _, ok := target.PriorityPredicate.(*RetryPolicy_PreviousPriorities_); !ok { + return false + } + + if h, ok := interface{}(m.GetPreviousPriorities()).(equality.Equalizer); ok { + if !h.Equal(target.GetPreviousPriorities()) { + return false + } + } else { + if !proto.Equal(m.GetPreviousPriorities(), target.GetPreviousPriorities()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.PriorityPredicate != target.PriorityPredicate { + return false + } + } + + return true +} + +// Equal function +func (m *RetryPolicy_PreviousPriorities) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RetryPolicy_PreviousPriorities) + if !ok { + that2, ok := that.(RetryPolicy_PreviousPriorities) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetUpdateFrequency()).(equality.Equalizer); ok { + if !h.Equal(target.GetUpdateFrequency()) { + return false + } + } else { + if !proto.Equal(m.GetUpdateFrequency(), target.GetUpdateFrequency()) { + return false + } + } + return true } diff --git a/pkg/api/gloo.solo.io/v1/options/retries/retries.pb.go b/pkg/api/gloo.solo.io/v1/options/retries/retries.pb.go index 749da92c8..bef44d8d8 100644 --- a/pkg/api/gloo.solo.io/v1/options/retries/retries.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/retries/retries.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/retries/retries.proto @@ -9,12 +9,14 @@ package retries import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - duration "github.com/golang/protobuf/ptypes/duration" + _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -24,16 +26,226 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 +type ResetHeader_HeaderFormat int32 -// Retry Policy applied at the Route and/or Virtual Hosts levels. -type RetryPolicy struct { - state protoimpl.MessageState +const ( + ResetHeader_SECONDS ResetHeader_HeaderFormat = 0 + ResetHeader_UNIX_TIMESTAMP ResetHeader_HeaderFormat = 1 +) + +// Enum value maps for ResetHeader_HeaderFormat. +var ( + ResetHeader_HeaderFormat_name = map[int32]string{ + 0: "SECONDS", + 1: "UNIX_TIMESTAMP", + } + ResetHeader_HeaderFormat_value = map[string]int32{ + "SECONDS": 0, + "UNIX_TIMESTAMP": 1, + } +) + +func (x ResetHeader_HeaderFormat) Enum() *ResetHeader_HeaderFormat { + p := new(ResetHeader_HeaderFormat) + *p = x + return p +} + +func (x ResetHeader_HeaderFormat) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ResetHeader_HeaderFormat) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_enumTypes[0].Descriptor() +} + +func (ResetHeader_HeaderFormat) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_enumTypes[0] +} + +func (x ResetHeader_HeaderFormat) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ResetHeader_HeaderFormat.Descriptor instead. +func (ResetHeader_HeaderFormat) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDescGZIP(), []int{1, 0} +} + +// This specifies the retry policy interval for backoffs. Note that if the base interval provided is larger than the maximum interval OR if any of the durations passed are <= 0 MS, there will be an error. +type RetryBackOff struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Specifies the base interval for a retry + BaseInterval *durationpb.Duration `protobuf:"bytes,1,opt,name=base_interval,json=baseInterval,proto3" json:"base_interval,omitempty"` + // Specifies the max interval for a retry + MaxInterval *durationpb.Duration `protobuf:"bytes,2,opt,name=max_interval,json=maxInterval,proto3" json:"max_interval,omitempty"` + unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache +} + +func (x *RetryBackOff) Reset() { + *x = RetryBackOff{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RetryBackOff) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RetryBackOff) ProtoMessage() {} + +func (x *RetryBackOff) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RetryBackOff.ProtoReflect.Descriptor instead. +func (*RetryBackOff) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDescGZIP(), []int{0} +} + +func (x *RetryBackOff) GetBaseInterval() *durationpb.Duration { + if x != nil { + return x.BaseInterval + } + return nil +} + +func (x *RetryBackOff) GetMaxInterval() *durationpb.Duration { + if x != nil { + return x.MaxInterval + } + return nil +} + +// ResetHeader is a header that is used to reset the retry backoff. +type ResetHeader struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Specifies the name of the header to interpret for the retry backoff. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Specifies the format of the header to interpret for the retry backoff. + Format ResetHeader_HeaderFormat `protobuf:"varint,2,opt,name=format,proto3,enum=retries.options.gloo.solo.io.ResetHeader_HeaderFormat" json:"format,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResetHeader) Reset() { + *x = ResetHeader{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResetHeader) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResetHeader) ProtoMessage() {} + +func (x *ResetHeader) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResetHeader.ProtoReflect.Descriptor instead. +func (*ResetHeader) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDescGZIP(), []int{1} +} + +func (x *ResetHeader) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ResetHeader) GetFormat() ResetHeader_HeaderFormat { + if x != nil { + return x.Format + } + return ResetHeader_SECONDS +} + +// This specifies the retry policy interval for rate limited requests. +// Based on: https://github.com/envoyproxy/envoy/blob/4a134ce926cf0b882a4c416734b579f9722ed1eb/api/envoy/config/route/v3/route_components.proto#L1522 +type RateLimitedRetryBackOff struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Specifies the reset headers (like “Retry-After“ or “X-RateLimit-Reset“) + // to match against the response. Headers are tried in order, and matched case + // insensitive. The first header to be parsed successfully is used. If no headers + // match the default exponential back-off is used instead. + ResetHeaders []*ResetHeader `protobuf:"bytes,1,rep,name=reset_headers,json=resetHeaders,proto3" json:"reset_headers,omitempty"` + // Specifies the maximum back off interval that Gloo will allow. If a reset + // header contains an interval longer than this then it will be discarded and + // the next header will be tried. Defaults to 300 seconds. + MaxInterval *durationpb.Duration `protobuf:"bytes,2,opt,name=max_interval,json=maxInterval,proto3" json:"max_interval,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RateLimitedRetryBackOff) Reset() { + *x = RateLimitedRetryBackOff{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} +func (x *RateLimitedRetryBackOff) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RateLimitedRetryBackOff) ProtoMessage() {} + +func (x *RateLimitedRetryBackOff) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RateLimitedRetryBackOff.ProtoReflect.Descriptor instead. +func (*RateLimitedRetryBackOff) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDescGZIP(), []int{2} +} + +func (x *RateLimitedRetryBackOff) GetResetHeaders() []*ResetHeader { + if x != nil { + return x.ResetHeaders + } + return nil +} + +func (x *RateLimitedRetryBackOff) GetMaxInterval() *durationpb.Duration { + if x != nil { + return x.MaxInterval + } + return nil +} + +// Retry Policy applied at the Route and/or Virtual Hosts levels. +type RetryPolicy struct { + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the conditions under which retry takes place. These are the same // conditions [documented for Envoy](https://www.envoyproxy.io/docs/envoy/v1.14.1/configuration/http/http_filters/router_filter#config-http-filters-router-x-envoy-retry-on) RetryOn string `protobuf:"bytes,1,opt,name=retry_on,json=retryOn,proto3" json:"retry_on,omitempty"` @@ -41,16 +253,28 @@ type RetryPolicy struct { // defaults to 1. These are the same conditions [documented for Envoy](https://www.envoyproxy.io/docs/envoy/v1.14.1/configuration/http/http_filters/router_filter#config-http-filters-router-x-envoy-retry-on) NumRetries uint32 `protobuf:"varint,2,opt,name=num_retries,json=numRetries,proto3" json:"num_retries,omitempty"` // Specifies a non-zero upstream timeout per retry attempt. This parameter is optional. - PerTryTimeout *duration.Duration `protobuf:"bytes,3,opt,name=per_try_timeout,json=perTryTimeout,proto3" json:"per_try_timeout,omitempty"` + PerTryTimeout *durationpb.Duration `protobuf:"bytes,3,opt,name=per_try_timeout,json=perTryTimeout,proto3" json:"per_try_timeout,omitempty"` + // Specifies the retry policy interval + RetryBackOff *RetryBackOff `protobuf:"bytes,4,opt,name=retry_back_off,json=retryBackOff,proto3" json:"retry_back_off,omitempty"` + // Types that are valid to be assigned to PriorityPredicate: + // + // *RetryPolicy_PreviousPriorities_ + PriorityPredicate isRetryPolicy_PriorityPredicate `protobuf_oneof:"priority_predicate"` + // Optional: HTTP status codes that should trigger a retry in addition to those specified by retry_on. + // This can be useful if you want to retry on a status code that is not in the retry_on list. + // Specifically those in the 4xx range. + RetriableStatusCodes []uint32 `protobuf:"varint,6,rep,packed,name=retriable_status_codes,json=retriableStatusCodes,proto3" json:"retriable_status_codes,omitempty"` + // Optional: Specifies the retry backoff strategy for rate limited requests. + RateLimitedRetryBackOff *RateLimitedRetryBackOff `protobuf:"bytes,7,opt,name=rate_limited_retry_back_off,json=rateLimitedRetryBackOff,proto3" json:"rate_limited_retry_back_off,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RetryPolicy) Reset() { *x = RetryPolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RetryPolicy) String() string { @@ -60,8 +284,8 @@ func (x *RetryPolicy) String() string { func (*RetryPolicy) ProtoMessage() {} func (x *RetryPolicy) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_msgTypes[3] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -73,7 +297,7 @@ func (x *RetryPolicy) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryPolicy.ProtoReflect.Descriptor instead. func (*RetryPolicy) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDescGZIP(), []int{0} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDescGZIP(), []int{3} } func (x *RetryPolicy) GetRetryOn() string { @@ -90,16 +314,111 @@ func (x *RetryPolicy) GetNumRetries() uint32 { return 0 } -func (x *RetryPolicy) GetPerTryTimeout() *duration.Duration { +func (x *RetryPolicy) GetPerTryTimeout() *durationpb.Duration { if x != nil { return x.PerTryTimeout } return nil } +func (x *RetryPolicy) GetRetryBackOff() *RetryBackOff { + if x != nil { + return x.RetryBackOff + } + return nil +} + +func (x *RetryPolicy) GetPriorityPredicate() isRetryPolicy_PriorityPredicate { + if x != nil { + return x.PriorityPredicate + } + return nil +} + +func (x *RetryPolicy) GetPreviousPriorities() *RetryPolicy_PreviousPriorities { + if x != nil { + if x, ok := x.PriorityPredicate.(*RetryPolicy_PreviousPriorities_); ok { + return x.PreviousPriorities + } + } + return nil +} + +func (x *RetryPolicy) GetRetriableStatusCodes() []uint32 { + if x != nil { + return x.RetriableStatusCodes + } + return nil +} + +func (x *RetryPolicy) GetRateLimitedRetryBackOff() *RateLimitedRetryBackOff { + if x != nil { + return x.RateLimitedRetryBackOff + } + return nil +} + +type isRetryPolicy_PriorityPredicate interface { + isRetryPolicy_PriorityPredicate() +} + +type RetryPolicy_PreviousPriorities_ struct { + // Specify the previous priorities. + // For more information about previous priorities, see the [Envoy docs](https://www.envoyproxy.io/docs/envoy/v1.30.1/api-v3/extensions/retry/priority/previous_priorities/v3/previous_priorities_config.proto#envoy-v3-api-file-envoy-extensions-retry-priority-previous-priorities-v3-previous-priorities-config-proto). + PreviousPriorities *RetryPolicy_PreviousPriorities `protobuf:"bytes,5,opt,name=previous_priorities,json=previousPriorities,proto3,oneof"` +} + +func (*RetryPolicy_PreviousPriorities_) isRetryPolicy_PriorityPredicate() {} + +type RetryPolicy_PreviousPriorities struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Specify the update frequency for the previous priorities. For more information about previous priorities, see the [Envoy docs](https://www.envoyproxy.io/docs/envoy/v1.30.1/api-v3/extensions/retry/priority/previous_priorities/v3/previous_priorities_config.proto#envoy-v3-api-file-envoy-extensions-retry-priority-previous-priorities-v3-previous-priorities-config-proto). + // This option only works in combination with an Upstream failover policy that enables priorities. + UpdateFrequency *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=update_frequency,json=updateFrequency,proto3" json:"update_frequency,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RetryPolicy_PreviousPriorities) Reset() { + *x = RetryPolicy_PreviousPriorities{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RetryPolicy_PreviousPriorities) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RetryPolicy_PreviousPriorities) ProtoMessage() {} + +func (x *RetryPolicy_PreviousPriorities) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RetryPolicy_PreviousPriorities.ProtoReflect.Descriptor instead. +func (*RetryPolicy_PreviousPriorities) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDescGZIP(), []int{3, 0} +} + +func (x *RetryPolicy_PreviousPriorities) GetUpdateFrequency() *wrapperspb.UInt32Value { + if x != nil { + return x.UpdateFrequency + } + return nil +} + var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDesc = string([]byte{ 0x0a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -108,49 +427,131 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_p 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0x8c, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, - 0x19, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x79, 0x4f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x75, - 0x6d, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0a, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x0f, 0x70, - 0x65, 0x72, 0x5f, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0d, 0x70, 0x65, 0x72, 0x54, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x4e, - 0x5a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, - 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, - 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, + 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, + 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa6, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x74, + 0x72, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x4f, 0x66, 0x66, 0x12, 0x4e, 0x0a, 0x0d, 0x62, 0x61, 0x73, + 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0xfa, 0x42, 0x0b, + 0xaa, 0x01, 0x08, 0x08, 0x01, 0x32, 0x04, 0x10, 0xc0, 0x84, 0x3d, 0x52, 0x0c, 0x62, 0x61, 0x73, + 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x46, 0x0a, 0x0c, 0x6d, 0x61, 0x78, + 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, + 0x01, 0x02, 0x2a, 0x00, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x22, 0xa2, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2e, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x2f, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x46, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x45, 0x43, 0x4f, 0x4e, 0x44, 0x53, + 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x4e, 0x49, 0x58, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x53, + 0x54, 0x41, 0x4d, 0x50, 0x10, 0x01, 0x22, 0xb1, 0x01, 0x0a, 0x17, 0x52, 0x61, 0x74, 0x65, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x52, 0x65, 0x74, 0x72, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x4f, + 0x66, 0x66, 0x12, 0x4e, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x72, 0x65, 0x74, 0x72, + 0x69, 0x65, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x12, 0x46, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x2a, 0x00, 0x52, 0x0b, 0x6d, + 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xef, 0x04, 0x0a, 0x0b, 0x52, + 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, + 0x74, 0x72, 0x79, 0x5f, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, + 0x74, 0x72, 0x79, 0x4f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x74, + 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6e, 0x75, 0x6d, 0x52, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x0f, 0x70, 0x65, 0x72, 0x5f, 0x74, 0x72, + 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x54, + 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x50, 0x0a, 0x0e, 0x72, 0x65, 0x74, + 0x72, 0x79, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6f, 0x66, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x4f, 0x66, 0x66, 0x52, 0x0c, 0x72, + 0x65, 0x74, 0x72, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x4f, 0x66, 0x66, 0x12, 0x6f, 0x0a, 0x13, 0x70, + 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x69, + 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x72, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x50, 0x72, 0x69, 0x6f, + 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x48, 0x00, 0x52, 0x12, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, + 0x75, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, + 0x72, 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x14, 0x72, 0x65, + 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, + 0x65, 0x73, 0x12, 0x73, 0x0a, 0x1b, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x65, 0x64, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6f, 0x66, + 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x65, 0x64, 0x52, 0x65, 0x74, 0x72, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x4f, 0x66, 0x66, 0x52, 0x17, + 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x52, 0x65, 0x74, 0x72, 0x79, + 0x42, 0x61, 0x63, 0x6b, 0x4f, 0x66, 0x66, 0x1a, 0x5d, 0x0a, 0x12, 0x50, 0x72, 0x65, 0x76, 0x69, + 0x6f, 0x75, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x47, 0x0a, + 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x14, 0x0a, 0x12, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x42, 0x52, 0xb8, 0xf5, + 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x44, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, + 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_goTypes = []interface{}{ - (*RetryPolicy)(nil), // 0: retries.options.gloo.solo.io.RetryPolicy - (*duration.Duration)(nil), // 1: google.protobuf.Duration +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_goTypes = []any{ + (ResetHeader_HeaderFormat)(0), // 0: retries.options.gloo.solo.io.ResetHeader.HeaderFormat + (*RetryBackOff)(nil), // 1: retries.options.gloo.solo.io.RetryBackOff + (*ResetHeader)(nil), // 2: retries.options.gloo.solo.io.ResetHeader + (*RateLimitedRetryBackOff)(nil), // 3: retries.options.gloo.solo.io.RateLimitedRetryBackOff + (*RetryPolicy)(nil), // 4: retries.options.gloo.solo.io.RetryPolicy + (*RetryPolicy_PreviousPriorities)(nil), // 5: retries.options.gloo.solo.io.RetryPolicy.PreviousPriorities + (*durationpb.Duration)(nil), // 6: google.protobuf.Duration + (*wrapperspb.UInt32Value)(nil), // 7: google.protobuf.UInt32Value } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_depIdxs = []int32{ - 1, // 0: retries.options.gloo.solo.io.RetryPolicy.per_try_timeout:type_name -> google.protobuf.Duration - 1, // [1:1] is the sub-list for method output_type - 1, // [1:1] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name + 6, // 0: retries.options.gloo.solo.io.RetryBackOff.base_interval:type_name -> google.protobuf.Duration + 6, // 1: retries.options.gloo.solo.io.RetryBackOff.max_interval:type_name -> google.protobuf.Duration + 0, // 2: retries.options.gloo.solo.io.ResetHeader.format:type_name -> retries.options.gloo.solo.io.ResetHeader.HeaderFormat + 2, // 3: retries.options.gloo.solo.io.RateLimitedRetryBackOff.reset_headers:type_name -> retries.options.gloo.solo.io.ResetHeader + 6, // 4: retries.options.gloo.solo.io.RateLimitedRetryBackOff.max_interval:type_name -> google.protobuf.Duration + 6, // 5: retries.options.gloo.solo.io.RetryPolicy.per_try_timeout:type_name -> google.protobuf.Duration + 1, // 6: retries.options.gloo.solo.io.RetryPolicy.retry_back_off:type_name -> retries.options.gloo.solo.io.RetryBackOff + 5, // 7: retries.options.gloo.solo.io.RetryPolicy.previous_priorities:type_name -> retries.options.gloo.solo.io.RetryPolicy.PreviousPriorities + 3, // 8: retries.options.gloo.solo.io.RetryPolicy.rate_limited_retry_back_off:type_name -> retries.options.gloo.solo.io.RateLimitedRetryBackOff + 7, // 9: retries.options.gloo.solo.io.RetryPolicy.PreviousPriorities.update_frequency:type_name -> google.protobuf.UInt32Value + 10, // [10:10] is the sub-list for method output_type + 10, // [10:10] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_init() } @@ -158,36 +559,25 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_ if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RetryPolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_msgTypes[3].OneofWrappers = []any{ + (*RetryPolicy_PreviousPriorities_)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDesc)), + NumEnums: 1, + NumMessages: 5, NumExtensions: 0, NumServices: 0, }, GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_goTypes, DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_enumTypes, MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_retries_retries_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/retries/retries.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/retries/retries.pb.hash.go index 2f48dfbf7..cd2ae2db2 100644 --- a/pkg/api/gloo.solo.io/v1/options/retries/retries.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/retries/retries.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,163 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RetryBackOff) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("retries.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/retries.RetryBackOff")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetBaseInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBaseInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ResetHeader) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("retries.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/retries.ResetHeader")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetFormat()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RateLimitedRetryBackOff) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("retries.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/retries.RateLimitedRetryBackOff")); err != nil { + return 0, err + } + + for _, v := range m.GetResetHeaders() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetMaxInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RetryPolicy) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -48,14 +205,131 @@ func (m *RetryPolicy) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetPerTryTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PerTryTimeout")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPerTryTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPerTryTimeout(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PerTryTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRetryBackOff()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryBackOff")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetryBackOff(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RetryBackOff")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetRetriableStatusCodes()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRateLimitedRetryBackOff()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimitedRetryBackOff")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRateLimitedRetryBackOff(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RateLimitedRetryBackOff")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.PriorityPredicate.(type) { + + case *RetryPolicy_PreviousPriorities_: + + if h, ok := interface{}(m.GetPreviousPriorities()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PreviousPriorities")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPreviousPriorities(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PreviousPriorities")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RetryPolicy_PreviousPriorities) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("retries.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/retries.RetryPolicy_PreviousPriorities")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetUpdateFrequency()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UpdateFrequency")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUpdateFrequency(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UpdateFrequency")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/v1/options/retries/retries.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/retries/retries.pb.uniquehash.go new file mode 100644 index 000000000..89a540778 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/retries/retries.pb.uniquehash.go @@ -0,0 +1,357 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/retries/retries.proto + +package retries + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RetryBackOff) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("retries.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/retries.RetryBackOff")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetBaseInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBaseInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BaseInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ResetHeader) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("retries.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/retries.ResetHeader")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Format")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetFormat()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimitedRetryBackOff) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("retries.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/retries.RateLimitedRetryBackOff")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ResetHeaders")); err != nil { + return 0, err + } + for i, v := range m.GetResetHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetMaxInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RetryPolicy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("retries.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/retries.RetryPolicy")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RetryOn")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRetryOn())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("NumRetries")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetNumRetries()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPerTryTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PerTryTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPerTryTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PerTryTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRetryBackOff()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RetryBackOff")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetryBackOff(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RetryBackOff")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RetriableStatusCodes")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRetriableStatusCodes()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRateLimitedRetryBackOff()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimitedRetryBackOff")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRateLimitedRetryBackOff(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RateLimitedRetryBackOff")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.PriorityPredicate.(type) { + + case *RetryPolicy_PreviousPriorities_: + + if h, ok := interface{}(m.GetPreviousPriorities()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PreviousPriorities")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPreviousPriorities(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PreviousPriorities")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RetryPolicy_PreviousPriorities) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("retries.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/retries.RetryPolicy_PreviousPriorities")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetUpdateFrequency()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UpdateFrequency")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUpdateFrequency(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UpdateFrequency")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/router/router.pb.go b/pkg/api/gloo.solo.io/v1/options/router/router.pb.go new file mode 100644 index 000000000..1dc71c85f --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/router/router.pb.go @@ -0,0 +1,163 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/router/router.proto + +package router + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Router is an envoy http filter +// Maps to https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/router/v3/router.proto +type Router struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Do not add any additional x-envoy- headers to requests or responses. This only affects the router filter generated x-envoy- headers, other Envoy filters and the HTTP connection manager may continue to set x-envoy- headers. + SuppressEnvoyHeaders *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=suppress_envoy_headers,json=suppressEnvoyHeaders,proto3" json:"suppress_envoy_headers,omitempty"` + // Whether dynamic stats should be enabled or disabled. If not set, or if + // set to true, dynamic stats will be enabled. Otherwise, if set to false, + // dynamic stats will be disabled. It is strongly recommended to leave this + // in the default state in production - it should only be set to false in + // very specific benchmarking or profiling scenarios. + DynamicStats *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=dynamic_stats,json=dynamicStats,proto3" json:"dynamic_stats,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Router) Reset() { + *x = Router{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Router) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Router) ProtoMessage() {} + +func (x *Router) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Router.ProtoReflect.Descriptor instead. +func (*Router) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_rawDescGZIP(), []int{0} +} + +func (x *Router) GetSuppressEnvoyHeaders() *wrapperspb.BoolValue { + if x != nil { + return x.SuppressEnvoyHeaders + } + return nil +} + +func (x *Router) GetDynamicStats() *wrapperspb.BoolValue { + if x != nil { + return x.DynamicStats + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_rawDesc = string([]byte{ + 0x0a, 0x49, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2f, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, + 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9b, 0x01, 0x0a, 0x06, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x72, 0x12, 0x50, 0x0a, 0x16, 0x73, 0x75, 0x70, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x5f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x14, 0x73, 0x75, 0x70, 0x70, 0x72, 0x65, 0x73, 0x73, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x3f, 0x0a, 0x0d, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, + 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x64, 0x79, 0x6e, 0x61, 0x6d, + 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x42, 0x45, 0x5a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_goTypes = []any{ + (*Router)(nil), // 0: gloo.solo.io.Router + (*wrapperspb.BoolValue)(nil), // 1: google.protobuf.BoolValue +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_depIdxs = []int32{ + 1, // 0: gloo.solo.io.Router.suppress_envoy_headers:type_name -> google.protobuf.BoolValue + 1, // 1: gloo.solo.io.Router.dynamic_stats:type_name -> google.protobuf.BoolValue + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_init() } +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_router_router_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/service_spec.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/service_spec.pb.clone.go new file mode 100644 index 000000000..e9bc35249 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/service_spec.pb.clone.go @@ -0,0 +1,83 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/service_spec.proto + +package options + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_grpc "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/grpc" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_grpc_json "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/grpc_json" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_rest "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/rest" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *ServiceSpec) Clone() proto.Message { + var target *ServiceSpec + if m == nil { + return target + } + target = &ServiceSpec{} + + switch m.PluginType.(type) { + + case *ServiceSpec_Rest: + + if h, ok := interface{}(m.GetRest()).(clone.Cloner); ok { + target.PluginType = &ServiceSpec_Rest{ + Rest: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_rest.ServiceSpec), + } + } else { + target.PluginType = &ServiceSpec_Rest{ + Rest: proto.Clone(m.GetRest()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_rest.ServiceSpec), + } + } + + case *ServiceSpec_Grpc: + + if h, ok := interface{}(m.GetGrpc()).(clone.Cloner); ok { + target.PluginType = &ServiceSpec_Grpc{ + Grpc: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_grpc.ServiceSpec), + } + } else { + target.PluginType = &ServiceSpec_Grpc{ + Grpc: proto.Clone(m.GetGrpc()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_grpc.ServiceSpec), + } + } + + case *ServiceSpec_GrpcJsonTranscoder: + + if h, ok := interface{}(m.GetGrpcJsonTranscoder()).(clone.Cloner); ok { + target.PluginType = &ServiceSpec_GrpcJsonTranscoder{ + GrpcJsonTranscoder: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_grpc_json.GrpcJsonTranscoder), + } + } else { + target.PluginType = &ServiceSpec_GrpcJsonTranscoder{ + GrpcJsonTranscoder: proto.Clone(m.GetGrpcJsonTranscoder()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_grpc_json.GrpcJsonTranscoder), + } + } + + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/service_spec.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/service_spec.pb.equal.go index 5eb1b5786..08a4a1fea 100644 --- a/pkg/api/gloo.solo.io/v1/options/service_spec.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/options/service_spec.pb.equal.go @@ -49,6 +49,9 @@ func (m *ServiceSpec) Equal(that interface{}) bool { switch m.PluginType.(type) { case *ServiceSpec_Rest: + if _, ok := target.PluginType.(*ServiceSpec_Rest); !ok { + return false + } if h, ok := interface{}(m.GetRest()).(equality.Equalizer); ok { if !h.Equal(target.GetRest()) { @@ -61,6 +64,9 @@ func (m *ServiceSpec) Equal(that interface{}) bool { } case *ServiceSpec_Grpc: + if _, ok := target.PluginType.(*ServiceSpec_Grpc); !ok { + return false + } if h, ok := interface{}(m.GetGrpc()).(equality.Equalizer); ok { if !h.Equal(target.GetGrpc()) { @@ -72,6 +78,26 @@ func (m *ServiceSpec) Equal(that interface{}) bool { } } + case *ServiceSpec_GrpcJsonTranscoder: + if _, ok := target.PluginType.(*ServiceSpec_GrpcJsonTranscoder); !ok { + return false + } + + if h, ok := interface{}(m.GetGrpcJsonTranscoder()).(equality.Equalizer); ok { + if !h.Equal(target.GetGrpcJsonTranscoder()) { + return false + } + } else { + if !proto.Equal(m.GetGrpcJsonTranscoder(), target.GetGrpcJsonTranscoder()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.PluginType != target.PluginType { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/v1/options/service_spec.pb.go b/pkg/api/gloo.solo.io/v1/options/service_spec.pb.go index 4b951ec92..9169e68e8 100644 --- a/pkg/api/gloo.solo.io/v1/options/service_spec.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/service_spec.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/service_spec.proto @@ -9,10 +9,11 @@ package options import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" grpc "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/grpc" + grpc_json "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/grpc_json" rest "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/rest" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -25,35 +26,30 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Describes APIs and application-level information for services // Gloo routes to. ServiceSpec is contained within the UpstreamSpec for certain types // of upstreams, including Kubernetes, Consul, and Static. // ServiceSpec configuration is opaque to Gloo and handled by Service Options. type ServiceSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Note to developers: new Service plugins must be added to this oneof field // to be usable by Gloo. (plugins currently need to be compiled into Gloo) // - // Types that are assignable to PluginType: + // Types that are valid to be assigned to PluginType: + // // *ServiceSpec_Rest // *ServiceSpec_Grpc - PluginType isServiceSpec_PluginType `protobuf_oneof:"plugin_type"` + // *ServiceSpec_GrpcJsonTranscoder + PluginType isServiceSpec_PluginType `protobuf_oneof:"plugin_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ServiceSpec) Reset() { *x = ServiceSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ServiceSpec) String() string { @@ -64,7 +60,7 @@ func (*ServiceSpec) ProtoMessage() {} func (x *ServiceSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -79,23 +75,37 @@ func (*ServiceSpec) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_rawDescGZIP(), []int{0} } -func (m *ServiceSpec) GetPluginType() isServiceSpec_PluginType { - if m != nil { - return m.PluginType +func (x *ServiceSpec) GetPluginType() isServiceSpec_PluginType { + if x != nil { + return x.PluginType } return nil } func (x *ServiceSpec) GetRest() *rest.ServiceSpec { - if x, ok := x.GetPluginType().(*ServiceSpec_Rest); ok { - return x.Rest + if x != nil { + if x, ok := x.PluginType.(*ServiceSpec_Rest); ok { + return x.Rest + } } return nil } +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/service_spec.proto. func (x *ServiceSpec) GetGrpc() *grpc.ServiceSpec { - if x, ok := x.GetPluginType().(*ServiceSpec_Grpc); ok { - return x.Grpc + if x != nil { + if x, ok := x.PluginType.(*ServiceSpec_Grpc); ok { + return x.Grpc + } + } + return nil +} + +func (x *ServiceSpec) GetGrpcJsonTranscoder() *grpc_json.GrpcJsonTranscoder { + if x != nil { + if x, ok := x.PluginType.(*ServiceSpec_GrpcJsonTranscoder); ok { + return x.GrpcJsonTranscoder + } } return nil } @@ -109,16 +119,23 @@ type ServiceSpec_Rest struct { } type ServiceSpec_Grpc struct { + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/service_spec.proto. Grpc *grpc.ServiceSpec `protobuf:"bytes,2,opt,name=grpc,proto3,oneof"` } +type ServiceSpec_GrpcJsonTranscoder struct { + GrpcJsonTranscoder *grpc_json.GrpcJsonTranscoder `protobuf:"bytes,3,opt,name=grpc_json_transcoder,json=grpcJsonTranscoder,proto3,oneof"` +} + func (*ServiceSpec_Rest) isServiceSpec_PluginType() {} func (*ServiceSpec_Grpc) isServiceSpec_PluginType() {} +func (*ServiceSpec_GrpcJsonTranscoder) isServiceSpec_PluginType() {} + var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_rawDesc = string([]byte{ 0x0a, 0x48, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -133,51 +150,66 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_prot 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, - 0x72, 0x70, 0x63, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, - 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0x98, 0x01, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, - 0x65, 0x63, 0x12, 0x3c, 0x0a, 0x04, 0x72, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x72, 0x65, 0x73, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x04, 0x72, 0x65, 0x73, 0x74, - 0x12, 0x3c, 0x0a, 0x04, 0x67, 0x72, 0x70, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x04, 0x67, 0x72, 0x70, 0x63, 0x42, 0x0d, - 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x46, 0x5a, - 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, - 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xb8, 0xf5, 0x04, - 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x72, 0x70, 0x63, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4f, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, + 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0x93, 0x02, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, + 0x70, 0x65, 0x63, 0x12, 0x3c, 0x0a, 0x04, 0x72, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x72, 0x65, 0x73, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x04, 0x72, 0x65, 0x73, + 0x74, 0x12, 0x40, 0x0a, 0x04, 0x67, 0x72, 0x70, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x04, 0x67, + 0x72, 0x70, 0x63, 0x12, 0x66, 0x0a, 0x14, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, + 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4a, 0x73, 0x6f, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x63, 0x6f, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x12, 0x67, 0x72, 0x70, 0x63, 0x4a, 0x73, 0x6f, + 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, + 0x52, 0x07, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x42, 0x4a, 0xb8, 0xf5, 0x04, 0x01, 0xc0, + 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_goTypes = []interface{}{ - (*ServiceSpec)(nil), // 0: options.gloo.solo.io.ServiceSpec - (*rest.ServiceSpec)(nil), // 1: rest.options.gloo.solo.io.ServiceSpec - (*grpc.ServiceSpec)(nil), // 2: grpc.options.gloo.solo.io.ServiceSpec +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_goTypes = []any{ + (*ServiceSpec)(nil), // 0: options.gloo.solo.io.ServiceSpec + (*rest.ServiceSpec)(nil), // 1: rest.options.gloo.solo.io.ServiceSpec + (*grpc.ServiceSpec)(nil), // 2: grpc.options.gloo.solo.io.ServiceSpec + (*grpc_json.GrpcJsonTranscoder)(nil), // 3: grpc_json.options.gloo.solo.io.GrpcJsonTranscoder } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_depIdxs = []int32{ 1, // 0: options.gloo.solo.io.ServiceSpec.rest:type_name -> rest.options.gloo.solo.io.ServiceSpec 2, // 1: options.gloo.solo.io.ServiceSpec.grpc:type_name -> grpc.options.gloo.solo.io.ServiceSpec - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name + 3, // 2: options.gloo.solo.io.ServiceSpec.grpc_json_transcoder:type_name -> grpc_json.options.gloo.solo.io.GrpcJsonTranscoder + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_init() } @@ -185,29 +217,16 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_pro if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ServiceSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_msgTypes[0].OneofWrappers = []any{ (*ServiceSpec_Rest)(nil), (*ServiceSpec_Grpc)(nil), + (*ServiceSpec_GrpcJsonTranscoder)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, @@ -218,7 +237,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_pro MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_service_spec_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/service_spec.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/service_spec.pb.hash.go index 783b908cc..83f29aa06 100644 --- a/pkg/api/gloo.solo.io/v1/options/service_spec.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/service_spec.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ServiceSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -43,14 +47,20 @@ func (m *ServiceSpec) Hash(hasher hash.Hash64) (uint64, error) { case *ServiceSpec_Rest: if h, ok := interface{}(m.GetRest()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Rest")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRest(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRest(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Rest")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -59,14 +69,42 @@ func (m *ServiceSpec) Hash(hasher hash.Hash64) (uint64, error) { case *ServiceSpec_Grpc: if h, ok := interface{}(m.GetGrpc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Grpc")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpc(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Grpc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ServiceSpec_GrpcJsonTranscoder: + + if h, ok := interface{}(m.GetGrpcJsonTranscoder()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcJsonTranscoder")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetGrpc(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetGrpcJsonTranscoder(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("GrpcJsonTranscoder")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/v1/options/service_spec.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/service_spec.pb.uniquehash.go new file mode 100644 index 000000000..4a833a4bd --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/service_spec.pb.uniquehash.go @@ -0,0 +1,117 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/service_spec.proto + +package options + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ServiceSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options.ServiceSpec")); err != nil { + return 0, err + } + + switch m.PluginType.(type) { + + case *ServiceSpec_Rest: + + if h, ok := interface{}(m.GetRest()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Rest")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRest(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Rest")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ServiceSpec_Grpc: + + if h, ok := interface{}(m.GetGrpc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Grpc")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpc(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Grpc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ServiceSpec_GrpcJsonTranscoder: + + if h, ok := interface{}(m.GetGrpcJsonTranscoder()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcJsonTranscoder")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcJsonTranscoder(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcJsonTranscoder")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/shadowing/shadowing.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/shadowing/shadowing.pb.clone.go new file mode 100644 index 000000000..569e49db9 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/shadowing/shadowing.pb.clone.go @@ -0,0 +1,47 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/shadowing/shadowing.proto + +package shadowing + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *RouteShadowing) Clone() proto.Message { + var target *RouteShadowing + if m == nil { + return target + } + target = &RouteShadowing{} + + if h, ok := interface{}(m.GetUpstream()).(clone.Cloner); ok { + target.Upstream = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.Upstream = proto.Clone(m.GetUpstream()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + target.Percentage = m.GetPercentage() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/shadowing/shadowing.pb.go b/pkg/api/gloo.solo.io/v1/options/shadowing/shadowing.pb.go index 0b3f3c3f3..a202580ba 100644 --- a/pkg/api/gloo.solo.io/v1/options/shadowing/shadowing.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/shadowing/shadowing.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/shadowing/shadowing.proto @@ -9,8 +9,8 @@ package shadowing import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -24,33 +24,26 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Specifies traffic shadowing configuration for the associated route. // If set, Envoy will send a portion of the route's traffic to the shadowed upstream. This can be a useful way to // preview a new service's behavior before putting the service in the critical path. // Note that this plugin is only applicable to routes with upstream destinations (not redirect or direct response routes). -// See here for additional information on Envoy's shadowing capabilities: https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/route/route.proto#envoy-api-msg-route-routeaction-requestmirrorpolicy +// See here for additional information on Envoy's shadowing capabilities: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto#envoy-api-msg-route-routeaction-requestmirrorpolicy type RouteShadowing struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The upstream to which the shadowed traffic should be sent. Upstream *core.ResourceRef `protobuf:"bytes,1,opt,name=upstream,proto3" json:"upstream,omitempty"` // This should be a value between 0.0 and 100.0, with up to 6 significant digits. - Percentage float32 `protobuf:"fixed32,2,opt,name=percentage,proto3" json:"percentage,omitempty"` + Percentage float32 `protobuf:"fixed32,2,opt,name=percentage,proto3" json:"percentage,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteShadowing) Reset() { *x = RouteShadowing{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteShadowing) String() string { @@ -61,7 +54,7 @@ func (*RouteShadowing) ProtoMessage() {} func (x *RouteShadowing) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -92,7 +85,7 @@ func (x *RouteShadowing) GetPercentage() float32 { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_rawDesc = string([]byte{ 0x0a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -110,29 +103,29 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowi 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x08, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x42, 0x50, 0x5a, 0x46, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x68, 0x61, - 0x64, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x42, 0x54, 0xb8, 0xf5, + 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, + 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x69, + 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_goTypes = []any{ (*RouteShadowing)(nil), // 0: shadowing.options.gloo.solo.io.RouteShadowing (*core.ResourceRef)(nil), // 1: core.solo.io.ResourceRef } @@ -152,25 +145,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadow if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteShadowing); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, @@ -181,7 +160,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadow MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_shadowing_shadowing_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/shadowing/shadowing.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/shadowing/shadowing.pb.hash.go index 8d41f7614..68b4cdd5e 100644 --- a/pkg/api/gloo.solo.io/v1/options/shadowing/shadowing.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/shadowing/shadowing.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteShadowing) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,14 +43,20 @@ func (m *RouteShadowing) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetUpstream()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Upstream")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetUpstream(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetUpstream(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Upstream")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/v1/options/shadowing/shadowing.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/shadowing/shadowing.pb.uniquehash.go new file mode 100644 index 000000000..1613a2d59 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/shadowing/shadowing.pb.uniquehash.go @@ -0,0 +1,75 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/shadowing/shadowing.proto + +package shadowing + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteShadowing) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("shadowing.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/shadowing.RouteShadowing")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetUpstream()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Upstream")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUpstream(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Upstream")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Percentage")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPercentage()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/static/static.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/static/static.pb.clone.go new file mode 100644 index 000000000..322d73741 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/static/static.pb.clone.go @@ -0,0 +1,131 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/static/static.proto + +package static + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *UpstreamSpec) Clone() proto.Message { + var target *UpstreamSpec + if m == nil { + return target + } + target = &UpstreamSpec{} + + if m.GetHosts() != nil { + target.Hosts = make([]*Host, len(m.GetHosts())) + for idx, v := range m.GetHosts() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Hosts[idx] = h.Clone().(*Host) + } else { + target.Hosts[idx] = proto.Clone(v).(*Host) + } + + } + } + + if h, ok := interface{}(m.GetUseTls()).(clone.Cloner); ok { + target.UseTls = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.UseTls = proto.Clone(m.GetUseTls()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetServiceSpec()).(clone.Cloner); ok { + target.ServiceSpec = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options.ServiceSpec) + } else { + target.ServiceSpec = proto.Clone(m.GetServiceSpec()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options.ServiceSpec) + } + + if h, ok := interface{}(m.GetAutoSniRewrite()).(clone.Cloner); ok { + target.AutoSniRewrite = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.AutoSniRewrite = proto.Clone(m.GetAutoSniRewrite()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *Host) Clone() proto.Message { + var target *Host + if m == nil { + return target + } + target = &Host{} + + target.Addr = m.GetAddr() + + target.Port = m.GetPort() + + target.SniAddr = m.GetSniAddr() + + if h, ok := interface{}(m.GetLoadBalancingWeight()).(clone.Cloner); ok { + target.LoadBalancingWeight = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.LoadBalancingWeight = proto.Clone(m.GetLoadBalancingWeight()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetHealthCheckConfig()).(clone.Cloner); ok { + target.HealthCheckConfig = h.Clone().(*Host_HealthCheckConfig) + } else { + target.HealthCheckConfig = proto.Clone(m.GetHealthCheckConfig()).(*Host_HealthCheckConfig) + } + + if m.GetMetadata() != nil { + target.Metadata = make(map[string]*google_golang_org_protobuf_types_known_structpb.Struct, len(m.GetMetadata())) + for k, v := range m.GetMetadata() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Metadata[k] = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Metadata[k] = proto.Clone(v).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + } + } + + return target +} + +// Clone function +func (m *Host_HealthCheckConfig) Clone() proto.Message { + var target *Host_HealthCheckConfig + if m == nil { + return target + } + target = &Host_HealthCheckConfig{} + + target.Path = m.GetPath() + + target.Method = m.GetMethod() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/static/static.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/static/static.pb.equal.go index d38edf46c..7f1aa4ff7 100644 --- a/pkg/api/gloo.solo.io/v1/options/static/static.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/options/static/static.pb.equal.go @@ -63,8 +63,14 @@ func (m *UpstreamSpec) Equal(that interface{}) bool { } - if m.GetUseTls() != target.GetUseTls() { - return false + if h, ok := interface{}(m.GetUseTls()).(equality.Equalizer); ok { + if !h.Equal(target.GetUseTls()) { + return false + } + } else { + if !proto.Equal(m.GetUseTls(), target.GetUseTls()) { + return false + } } if h, ok := interface{}(m.GetServiceSpec()).(equality.Equalizer); ok { @@ -143,6 +149,23 @@ func (m *Host) Equal(that interface{}) bool { } } + if len(m.GetMetadata()) != len(target.GetMetadata()) { + return false + } + for k, v := range m.GetMetadata() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetMetadata()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetMetadata()[k]) { + return false + } + } + + } + return true } diff --git a/pkg/api/gloo.solo.io/v1/options/static/static.pb.go b/pkg/api/gloo.solo.io/v1/options/static/static.pb.go index 21a8b8bac..e7ae2225a 100644 --- a/pkg/api/gloo.solo.io/v1/options/static/static.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/static/static.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/static/static.proto @@ -9,14 +9,15 @@ package static import ( reflect "reflect" sync "sync" + unsafe "unsafe" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/golang/protobuf/proto" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" options "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -26,40 +27,33 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Static upstreams are used to route request to services listening at fixed IP/Host & Port pairs. // Static upstreams can be used to proxy any kind of service, and therefore contain a ServiceSpec // for additional service-specific configuration. // Unlike upstreams created by service discovery, Static Upstreams must be created manually by users type UpstreamSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // A list of addresses and ports // at least one must be specified Hosts []*Host `protobuf:"bytes,1,rep,name=hosts,proto3" json:"hosts,omitempty"` // Attempt to use outbound TLS - // Gloo will automatically set this to true for port 443 - UseTls bool `protobuf:"varint,3,opt,name=use_tls,json=useTls,proto3" json:"use_tls,omitempty"` + // If not explicitly set, Gloo will automatically set this to true for port 443 + UseTls *wrapperspb.BoolValue `protobuf:"bytes,3,opt,name=use_tls,json=useTls,proto3" json:"use_tls,omitempty"` // An optional Service Spec describing the service listening at this address ServiceSpec *options.ServiceSpec `protobuf:"bytes,5,opt,name=service_spec,json=serviceSpec,proto3" json:"service_spec,omitempty"` // When set, automatically set the sni address to use to the addr field. // If both this and host.sni_addr are set, host.sni_addr has priority. // defaults to "true". - AutoSniRewrite *wrappers.BoolValue `protobuf:"bytes,6,opt,name=auto_sni_rewrite,json=autoSniRewrite,proto3" json:"auto_sni_rewrite,omitempty"` + AutoSniRewrite *wrapperspb.BoolValue `protobuf:"bytes,6,opt,name=auto_sni_rewrite,json=autoSniRewrite,proto3" json:"auto_sni_rewrite,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpstreamSpec) Reset() { *x = UpstreamSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpstreamSpec) String() string { @@ -70,7 +64,7 @@ func (*UpstreamSpec) ProtoMessage() {} func (x *UpstreamSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -92,11 +86,11 @@ func (x *UpstreamSpec) GetHosts() []*Host { return nil } -func (x *UpstreamSpec) GetUseTls() bool { +func (x *UpstreamSpec) GetUseTls() *wrapperspb.BoolValue { if x != nil { return x.UseTls } - return false + return nil } func (x *UpstreamSpec) GetServiceSpec() *options.ServiceSpec { @@ -106,7 +100,7 @@ func (x *UpstreamSpec) GetServiceSpec() *options.ServiceSpec { return nil } -func (x *UpstreamSpec) GetAutoSniRewrite() *wrappers.BoolValue { +func (x *UpstreamSpec) GetAutoSniRewrite() *wrapperspb.BoolValue { if x != nil { return x.AutoSniRewrite } @@ -115,10 +109,7 @@ func (x *UpstreamSpec) GetAutoSniRewrite() *wrappers.BoolValue { // Represents a single instance of an upstream type Host struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Address (hostname or IP) Addr string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"` // Port the instance is listening on @@ -133,18 +124,24 @@ type Host struct { // weighted by the endpoint's locality's load balancing weight from // LocalityLbEndpoints. If unspecified, each host is presumed to have equal // weight in a locality. - LoadBalancingWeight *wrappers.UInt32Value `protobuf:"bytes,5,opt,name=load_balancing_weight,json=loadBalancingWeight,proto3" json:"load_balancing_weight,omitempty"` + LoadBalancingWeight *wrapperspb.UInt32Value `protobuf:"bytes,5,opt,name=load_balancing_weight,json=loadBalancingWeight,proto3" json:"load_balancing_weight,omitempty"` // (Enterprise Only): Host specific health checking configuration. HealthCheckConfig *Host_HealthCheckConfig `protobuf:"bytes,3,opt,name=health_check_config,json=healthCheckConfig,proto3" json:"health_check_config,omitempty"` + // Additional metadata to add to the endpoint. This metadata can be used in upstream HTTP filters + // or other specific Envoy configurations. + // The following keys are added by Gloo Edge and are ignored if set: + // - "envoy.transport_socket_match" + // - "io.solo.health_checkers.advanced_http" + Metadata map[string]*structpb.Struct `protobuf:"bytes,6,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Host) Reset() { *x = Host{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Host) String() string { @@ -155,7 +152,7 @@ func (*Host) ProtoMessage() {} func (x *Host) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -191,7 +188,7 @@ func (x *Host) GetSniAddr() string { return "" } -func (x *Host) GetLoadBalancingWeight() *wrappers.UInt32Value { +func (x *Host) GetLoadBalancingWeight() *wrapperspb.UInt32Value { if x != nil { return x.LoadBalancingWeight } @@ -205,24 +202,28 @@ func (x *Host) GetHealthCheckConfig() *Host_HealthCheckConfig { return nil } -type Host_HealthCheckConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *Host) GetMetadata() map[string]*structpb.Struct { + if x != nil { + return x.Metadata + } + return nil +} +type Host_HealthCheckConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` // (Enterprise Only): Path to use when health checking this specific host. Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` // (Enterprise Only): Method to use when health checking this specific host. - Method string `protobuf:"bytes,2,opt,name=method,proto3" json:"method,omitempty"` + Method string `protobuf:"bytes,2,opt,name=method,proto3" json:"method,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Host_HealthCheckConfig) Reset() { *x = Host_HealthCheckConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Host_HealthCheckConfig) String() string { @@ -233,7 +234,7 @@ func (*Host_HealthCheckConfig) ProtoMessage() {} func (x *Host_HealthCheckConfig) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -264,7 +265,7 @@ func (x *Host_HealthCheckConfig) GetMethod() string { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_rawDesc = string([]byte{ 0x0a, 0x49, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -274,89 +275,108 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_pro 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, - 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x48, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, - 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, - 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0xec, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, - 0x12, 0x37, 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x6f, - 0x73, 0x74, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, - 0x5f, 0x74, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x73, 0x65, 0x54, - 0x6c, 0x73, 0x12, 0x44, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x70, - 0x65, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0b, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x44, 0x0a, 0x10, 0x61, 0x75, 0x74, 0x6f, - 0x5f, 0x73, 0x6e, 0x69, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, - 0x61, 0x75, 0x74, 0x6f, 0x53, 0x6e, 0x69, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x22, 0xca, - 0x02, 0x0a, 0x04, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, - 0x19, 0x0a, 0x08, 0x73, 0x6e, 0x69, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x73, 0x6e, 0x69, 0x41, 0x64, 0x64, 0x72, 0x12, 0x59, 0x0a, 0x15, 0x6c, 0x6f, - 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, - 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x28, 0x01, - 0x52, 0x13, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x57, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x63, 0x0a, 0x13, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x11, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x3f, 0x0a, 0x11, 0x48, 0x65, - 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x4d, 0x5a, 0x43, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, - 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x63, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} + 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x48, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x88, 0x02, + 0x0a, 0x0c, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x12, 0x37, + 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x6f, 0x73, 0x74, + 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x5f, 0x74, + 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x75, 0x73, 0x65, 0x54, 0x6c, 0x73, 0x12, 0x44, 0x0a, 0x0c, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, + 0x65, 0x63, 0x12, 0x44, 0x0a, 0x10, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x73, 0x6e, 0x69, 0x5f, 0x72, + 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, + 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x6f, 0x53, 0x6e, + 0x69, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x22, 0xed, 0x03, 0x0a, 0x04, 0x48, 0x6f, 0x73, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x61, 0x64, 0x64, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x6e, 0x69, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x6e, 0x69, + 0x41, 0x64, 0x64, 0x72, 0x12, 0x59, 0x0a, 0x15, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, + 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x28, 0x01, 0x52, 0x13, 0x6c, 0x6f, 0x61, 0x64, + 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, + 0x63, 0x0a, 0x13, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x2e, + 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x11, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x2e, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x1a, 0x3f, 0x0a, 0x11, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x1a, 0x54, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x51, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, + 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_goTypes = []any{ (*UpstreamSpec)(nil), // 0: static.options.gloo.solo.io.UpstreamSpec (*Host)(nil), // 1: static.options.gloo.solo.io.Host (*Host_HealthCheckConfig)(nil), // 2: static.options.gloo.solo.io.Host.HealthCheckConfig - (*options.ServiceSpec)(nil), // 3: options.gloo.solo.io.ServiceSpec - (*wrappers.BoolValue)(nil), // 4: google.protobuf.BoolValue - (*wrappers.UInt32Value)(nil), // 5: google.protobuf.UInt32Value + nil, // 3: static.options.gloo.solo.io.Host.MetadataEntry + (*wrapperspb.BoolValue)(nil), // 4: google.protobuf.BoolValue + (*options.ServiceSpec)(nil), // 5: options.gloo.solo.io.ServiceSpec + (*wrapperspb.UInt32Value)(nil), // 6: google.protobuf.UInt32Value + (*structpb.Struct)(nil), // 7: google.protobuf.Struct } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_depIdxs = []int32{ 1, // 0: static.options.gloo.solo.io.UpstreamSpec.hosts:type_name -> static.options.gloo.solo.io.Host - 3, // 1: static.options.gloo.solo.io.UpstreamSpec.service_spec:type_name -> options.gloo.solo.io.ServiceSpec - 4, // 2: static.options.gloo.solo.io.UpstreamSpec.auto_sni_rewrite:type_name -> google.protobuf.BoolValue - 5, // 3: static.options.gloo.solo.io.Host.load_balancing_weight:type_name -> google.protobuf.UInt32Value - 2, // 4: static.options.gloo.solo.io.Host.health_check_config:type_name -> static.options.gloo.solo.io.Host.HealthCheckConfig - 5, // [5:5] is the sub-list for method output_type - 5, // [5:5] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 4, // 1: static.options.gloo.solo.io.UpstreamSpec.use_tls:type_name -> google.protobuf.BoolValue + 5, // 2: static.options.gloo.solo.io.UpstreamSpec.service_spec:type_name -> options.gloo.solo.io.ServiceSpec + 4, // 3: static.options.gloo.solo.io.UpstreamSpec.auto_sni_rewrite:type_name -> google.protobuf.BoolValue + 6, // 4: static.options.gloo.solo.io.Host.load_balancing_weight:type_name -> google.protobuf.UInt32Value + 2, // 5: static.options.gloo.solo.io.Host.health_check_config:type_name -> static.options.gloo.solo.io.Host.HealthCheckConfig + 3, // 6: static.options.gloo.solo.io.Host.metadata:type_name -> static.options.gloo.solo.io.Host.MetadataEntry + 7, // 7: static.options.gloo.solo.io.Host.MetadataEntry.value:type_name -> google.protobuf.Struct + 8, // [8:8] is the sub-list for method output_type + 8, // [8:8] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_init() } @@ -364,51 +384,13 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_pr if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpstreamSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Host); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Host_HealthCheckConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_rawDesc)), NumEnums: 0, - NumMessages: 3, + NumMessages: 4, NumExtensions: 0, NumServices: 0, }, @@ -417,7 +399,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_pr MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_static_static_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/static/static.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/static/static.pb.hash.go index 6bdb1613e..28325fed8 100644 --- a/pkg/api/gloo.solo.io/v1/options/static/static.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/static/static.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -41,14 +45,20 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetHosts() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -56,34 +66,61 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { } - err = binary.Write(hasher, binary.LittleEndian, m.GetUseTls()) - if err != nil { - return 0, err + if h, ok := interface{}(m.GetUseTls()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UseTls")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUseTls(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UseTls")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } if h, ok := interface{}(m.GetServiceSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServiceSpec")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetServiceSpec(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetServiceSpec(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ServiceSpec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetAutoSniRewrite()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AutoSniRewrite")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAutoSniRewrite(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAutoSniRewrite(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AutoSniRewrite")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -93,6 +130,10 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Host) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -119,37 +160,92 @@ func (m *Host) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetLoadBalancingWeight()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LoadBalancingWeight")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetLoadBalancingWeight(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetLoadBalancingWeight(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("LoadBalancingWeight")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetHealthCheckConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HealthCheckConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHealthCheckConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHealthCheckConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HealthCheckConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetMetadata() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Host_HealthCheckConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/v1/options/static/static.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/static/static.pb.uniquehash.go new file mode 100644 index 000000000..fc8777952 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/static/static.pb.uniquehash.go @@ -0,0 +1,293 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/static/static.proto + +package static + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("static.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/static.UpstreamSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Hosts")); err != nil { + return 0, err + } + for i, v := range m.GetHosts() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetUseTls()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UseTls")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUseTls(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UseTls")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetServiceSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServiceSpec")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetServiceSpec(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ServiceSpec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAutoSniRewrite()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AutoSniRewrite")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAutoSniRewrite(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AutoSniRewrite")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Host) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("static.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/static.Host")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Addr")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAddr())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Port")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPort()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SniAddr")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSniAddr())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetLoadBalancingWeight()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LoadBalancingWeight")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLoadBalancingWeight(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LoadBalancingWeight")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHealthCheckConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HealthCheckConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHealthCheckConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HealthCheckConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetMetadata() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Host_HealthCheckConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("static.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/static.Host_HealthCheckConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Method")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetMethod())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/stats/stats.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/stats/stats.pb.clone.go new file mode 100644 index 000000000..26bb8f6d7 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/stats/stats.pb.clone.go @@ -0,0 +1,67 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/stats/stats.proto + +package stats + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *Stats) Clone() proto.Message { + var target *Stats + if m == nil { + return target + } + target = &Stats{} + + if m.GetVirtualClusters() != nil { + target.VirtualClusters = make([]*VirtualCluster, len(m.GetVirtualClusters())) + for idx, v := range m.GetVirtualClusters() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.VirtualClusters[idx] = h.Clone().(*VirtualCluster) + } else { + target.VirtualClusters[idx] = proto.Clone(v).(*VirtualCluster) + } + + } + } + + return target +} + +// Clone function +func (m *VirtualCluster) Clone() proto.Message { + var target *VirtualCluster + if m == nil { + return target + } + target = &VirtualCluster{} + + target.Name = m.GetName() + + target.Pattern = m.GetPattern() + + target.Method = m.GetMethod() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/stats/stats.pb.go b/pkg/api/gloo.solo.io/v1/options/stats/stats.pb.go index 395d13192..1c8315b2e 100644 --- a/pkg/api/gloo.solo.io/v1/options/stats/stats.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/stats/stats.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/stats/stats.proto @@ -9,8 +9,8 @@ package stats import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -23,27 +23,20 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // This plugin provides additional configuration options to expose statistics. type Stats struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Virtual clusters allow exposing additional statistics for traffic served by a Virtual Host. VirtualClusters []*VirtualCluster `protobuf:"bytes,10,rep,name=virtual_clusters,json=virtualClusters,proto3" json:"virtual_clusters,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Stats) Reset() { *x = Stats{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Stats) String() string { @@ -54,7 +47,7 @@ func (*Stats) ProtoMessage() {} func (x *Stats) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -84,10 +77,7 @@ func (x *Stats) GetVirtualClusters() []*VirtualCluster { // // Please note that virtual clusters add overhead to the processing of each requests and should not be overused. type VirtualCluster struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the virtual cluster. This value will be used together with the virtual host name to // compute the name of the statistics emitted by this virtual cluster. Statistics names will be in the form: // vhost..vcluster... @@ -103,16 +93,16 @@ type VirtualCluster struct { // The regex grammar used is defined [here](https://en.cppreference.com/w/cpp/regex/ecmascript). Pattern string `protobuf:"bytes,2,opt,name=pattern,proto3" json:"pattern,omitempty"` // If specified, statistics will be exposed only for requests matching the given HTTP method. - Method string `protobuf:"bytes,3,opt,name=method,proto3" json:"method,omitempty"` + Method string `protobuf:"bytes,3,opt,name=method,proto3" json:"method,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VirtualCluster) Reset() { *x = VirtualCluster{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VirtualCluster) String() string { @@ -123,7 +113,7 @@ func (*VirtualCluster) ProtoMessage() {} func (x *VirtualCluster) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -161,7 +151,7 @@ func (x *VirtualCluster) GetMethod() string { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_rawDesc = string([]byte{ 0x0a, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -181,28 +171,28 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto 0x18, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x42, 0x4c, 0x5a, 0x42, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, - 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x64, 0x42, 0x50, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, + 0x42, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_goTypes = []any{ (*Stats)(nil), // 0: stats.options.gloo.solo.io.Stats (*VirtualCluster)(nil), // 1: stats.options.gloo.solo.io.VirtualCluster } @@ -220,37 +210,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_prot if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Stats); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VirtualCluster); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_rawDesc)), NumEnums: 0, NumMessages: 2, NumExtensions: 0, @@ -261,7 +225,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_prot MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_stats_stats_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/stats/stats.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/stats/stats.pb.hash.go index 6094508df..8b7fcd424 100644 --- a/pkg/api/gloo.solo.io/v1/options/stats/stats.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/stats/stats.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Stats) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -41,14 +45,20 @@ func (m *Stats) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetVirtualClusters() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -60,6 +70,10 @@ func (m *Stats) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *VirtualCluster) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/v1/options/stats/stats.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/stats/stats.pb.uniquehash.go new file mode 100644 index 000000000..494e1135b --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/stats/stats.pb.uniquehash.go @@ -0,0 +1,117 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/stats/stats.proto + +package stats + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Stats) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("stats.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/stats.Stats")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("VirtualClusters")); err != nil { + return 0, err + } + for i, v := range m.GetVirtualClusters() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *VirtualCluster) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("stats.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/stats.VirtualCluster")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Pattern")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPattern())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Method")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetMethod())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/subset_spec.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/subset_spec.pb.clone.go new file mode 100644 index 000000000..a54818dad --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/subset_spec.pb.clone.go @@ -0,0 +1,100 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/subset_spec.proto + +package options + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *SubsetSpec) Clone() proto.Message { + var target *SubsetSpec + if m == nil { + return target + } + target = &SubsetSpec{} + + if m.GetSelectors() != nil { + target.Selectors = make([]*Selector, len(m.GetSelectors())) + for idx, v := range m.GetSelectors() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Selectors[idx] = h.Clone().(*Selector) + } else { + target.Selectors[idx] = proto.Clone(v).(*Selector) + } + + } + } + + target.FallbackPolicy = m.GetFallbackPolicy() + + if h, ok := interface{}(m.GetDefaultSubset()).(clone.Cloner); ok { + target.DefaultSubset = h.Clone().(*Subset) + } else { + target.DefaultSubset = proto.Clone(m.GetDefaultSubset()).(*Subset) + } + + return target +} + +// Clone function +func (m *Selector) Clone() proto.Message { + var target *Selector + if m == nil { + return target + } + target = &Selector{} + + if m.GetKeys() != nil { + target.Keys = make([]string, len(m.GetKeys())) + for idx, v := range m.GetKeys() { + + target.Keys[idx] = v + + } + } + + target.SingleHostPerSubset = m.GetSingleHostPerSubset() + + return target +} + +// Clone function +func (m *Subset) Clone() proto.Message { + var target *Subset + if m == nil { + return target + } + target = &Subset{} + + if m.GetValues() != nil { + target.Values = make(map[string]string, len(m.GetValues())) + for k, v := range m.GetValues() { + + target.Values[k] = v + + } + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/subset_spec.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/subset_spec.pb.equal.go index 67f1f2357..33b7a8d33 100644 --- a/pkg/api/gloo.solo.io/v1/options/subset_spec.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/options/subset_spec.pb.equal.go @@ -63,6 +63,20 @@ func (m *SubsetSpec) Equal(that interface{}) bool { } + if m.GetFallbackPolicy() != target.GetFallbackPolicy() { + return false + } + + if h, ok := interface{}(m.GetDefaultSubset()).(equality.Equalizer); ok { + if !h.Equal(target.GetDefaultSubset()) { + return false + } + } else { + if !proto.Equal(m.GetDefaultSubset(), target.GetDefaultSubset()) { + return false + } + } + return true } @@ -98,5 +112,44 @@ func (m *Selector) Equal(that interface{}) bool { } + if m.GetSingleHostPerSubset() != target.GetSingleHostPerSubset() { + return false + } + + return true +} + +// Equal function +func (m *Subset) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Subset) + if !ok { + that2, ok := that.(Subset) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetValues()) != len(target.GetValues()) { + return false + } + for k, v := range m.GetValues() { + + if strings.Compare(v, target.GetValues()[k]) != 0 { + return false + } + + } + return true } diff --git a/pkg/api/gloo.solo.io/v1/options/subset_spec.pb.go b/pkg/api/gloo.solo.io/v1/options/subset_spec.pb.go index b3bb44088..05b6953c3 100644 --- a/pkg/api/gloo.solo.io/v1/options/subset_spec.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/subset_spec.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/subset_spec.proto @@ -9,8 +9,8 @@ package options import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -23,25 +23,78 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 +type FallbackPolicy int32 -type SubsetSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +const ( + // Any cluster endpoint may be returned (default) + FallbackPolicy_ANY_ENDPOINT FallbackPolicy = 0 + // Load balancing over the endpoints matching the values from the default_subset field + FallbackPolicy_DEFAULT_SUBSET FallbackPolicy = 1 + // A result equivalent to no healthy hosts is reported + FallbackPolicy_NO_FALLBACK FallbackPolicy = 2 +) +// Enum value maps for FallbackPolicy. +var ( + FallbackPolicy_name = map[int32]string{ + 0: "ANY_ENDPOINT", + 1: "DEFAULT_SUBSET", + 2: "NO_FALLBACK", + } + FallbackPolicy_value = map[string]int32{ + "ANY_ENDPOINT": 0, + "DEFAULT_SUBSET": 1, + "NO_FALLBACK": 2, + } +) + +func (x FallbackPolicy) Enum() *FallbackPolicy { + p := new(FallbackPolicy) + *p = x + return p +} + +func (x FallbackPolicy) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FallbackPolicy) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_enumTypes[0].Descriptor() +} + +func (FallbackPolicy) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_enumTypes[0] +} + +func (x FallbackPolicy) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FallbackPolicy.Descriptor instead. +func (FallbackPolicy) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_rawDescGZIP(), []int{0} +} + +// See envoy docs for details: +// https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-lbsubsetconfig +type SubsetSpec struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Defines the set of subsets of the upstream Selectors []*Selector `protobuf:"bytes,1,rep,name=selectors,proto3" json:"selectors,omitempty"` + // The behavior used when no endpoint subset matches the selected route’s metadata + // The default value is ANY_ENDPOINT + FallbackPolicy FallbackPolicy `protobuf:"varint,2,opt,name=fallbackPolicy,proto3,enum=options.gloo.solo.io.FallbackPolicy" json:"fallbackPolicy,omitempty"` + // Specifies the default subset of endpoints used during fallback if fallback_policy is DEFAULT_SUBSET + DefaultSubset *Subset `protobuf:"bytes,3,opt,name=default_subset,json=defaultSubset,proto3" json:"default_subset,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SubsetSpec) Reset() { *x = SubsetSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SubsetSpec) String() string { @@ -52,7 +105,7 @@ func (*SubsetSpec) ProtoMessage() {} func (x *SubsetSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -74,21 +127,35 @@ func (x *SubsetSpec) GetSelectors() []*Selector { return nil } -type Selector struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *SubsetSpec) GetFallbackPolicy() FallbackPolicy { + if x != nil { + return x.FallbackPolicy + } + return FallbackPolicy_ANY_ENDPOINT +} + +func (x *SubsetSpec) GetDefaultSubset() *Subset { + if x != nil { + return x.DefaultSubset + } + return nil +} +type Selector struct { + state protoimpl.MessageState `protogen:"open.v1"` + // A subset is created for each unique combination of key and value Keys []string `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` + // Selects a mode of operation in which each subset has only one host. Default is false. + SingleHostPerSubset bool `protobuf:"varint,2,opt,name=single_host_per_subset,json=singleHostPerSubset,proto3" json:"single_host_per_subset,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Selector) Reset() { *x = Selector{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Selector) String() string { @@ -99,7 +166,7 @@ func (*Selector) ProtoMessage() {} func (x *Selector) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -121,9 +188,61 @@ func (x *Selector) GetKeys() []string { return nil } +func (x *Selector) GetSingleHostPerSubset() bool { + if x != nil { + return x.SingleHostPerSubset + } + return false +} + +type Subset struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Any host that matches all key/value pairs is part of this subset + Values map[string]string `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Subset) Reset() { + *x = Subset{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Subset) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Subset) ProtoMessage() {} + +func (x *Subset) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Subset.ProtoReflect.Descriptor instead. +func (*Subset) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_rawDescGZIP(), []int{2} +} + +func (x *Subset) GetValues() map[string]string { + if x != nil { + return x.Values + } + return nil +} + var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_rawDesc = string([]byte{ 0x0a, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -131,44 +250,77 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0x4a, 0x0a, 0x0a, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x53, 0x70, 0x65, - 0x63, 0x12, 0x3c, 0x0a, 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, - 0x1e, 0x0a, 0x08, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6b, - 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x42, - 0x46, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, - 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xc0, - 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x6f, 0x74, 0x6f, 0x22, 0xdd, 0x01, 0x0a, 0x0a, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x53, 0x70, + 0x65, 0x63, 0x12, 0x3c, 0x0a, 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x12, 0x4c, 0x0a, 0x0e, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0e, + 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x43, + 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x75, + 0x62, 0x73, 0x65, 0x74, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x75, 0x62, + 0x73, 0x65, 0x74, 0x22, 0x53, 0x0a, 0x08, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, + 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6b, + 0x65, 0x79, 0x73, 0x12, 0x33, 0x0a, 0x16, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x68, 0x6f, + 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x50, + 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x22, 0x85, 0x01, 0x0a, 0x06, 0x53, 0x75, 0x62, + 0x73, 0x65, 0x74, 0x12, 0x40, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x65, + 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x2a, 0x47, 0x0a, 0x0e, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x4e, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, + 0x4e, 0x54, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, + 0x53, 0x55, 0x42, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x5f, 0x46, + 0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x02, 0x42, 0x4a, 0xb8, 0xf5, 0x04, 0x01, 0xc0, + 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_goTypes = []interface{}{ - (*SubsetSpec)(nil), // 0: options.gloo.solo.io.SubsetSpec - (*Selector)(nil), // 1: options.gloo.solo.io.Selector +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_goTypes = []any{ + (FallbackPolicy)(0), // 0: options.gloo.solo.io.FallbackPolicy + (*SubsetSpec)(nil), // 1: options.gloo.solo.io.SubsetSpec + (*Selector)(nil), // 2: options.gloo.solo.io.Selector + (*Subset)(nil), // 3: options.gloo.solo.io.Subset + nil, // 4: options.gloo.solo.io.Subset.ValuesEntry } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_depIdxs = []int32{ - 1, // 0: options.gloo.solo.io.SubsetSpec.selectors:type_name -> options.gloo.solo.io.Selector - 1, // [1:1] is the sub-list for method output_type - 1, // [1:1] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name + 2, // 0: options.gloo.solo.io.SubsetSpec.selectors:type_name -> options.gloo.solo.io.Selector + 0, // 1: options.gloo.solo.io.SubsetSpec.fallbackPolicy:type_name -> options.gloo.solo.io.FallbackPolicy + 3, // 2: options.gloo.solo.io.SubsetSpec.default_subset:type_name -> options.gloo.solo.io.Subset + 4, // 3: options.gloo.solo.io.Subset.values:type_name -> options.gloo.solo.io.Subset.ValuesEntry + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_init() } @@ -176,48 +328,22 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_prot if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubsetSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Selector); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_rawDesc, - NumEnums: 0, - NumMessages: 2, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_rawDesc)), + NumEnums: 1, + NumMessages: 4, NumExtensions: 0, NumServices: 0, }, GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_goTypes, DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_enumTypes, MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_subset_spec_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/subset_spec.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/subset_spec.pb.hash.go index d03e5ee08..df7c12cc3 100644 --- a/pkg/api/gloo.solo.io/v1/options/subset_spec.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/subset_spec.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *SubsetSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -41,14 +45,20 @@ func (m *SubsetSpec) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetSelectors() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -56,10 +66,39 @@ func (m *SubsetSpec) Hash(hasher hash.Hash64) (uint64, error) { } + err = binary.Write(hasher, binary.LittleEndian, m.GetFallbackPolicy()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDefaultSubset()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DefaultSubset")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDefaultSubset(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DefaultSubset")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Selector) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -80,5 +119,53 @@ func (m *Selector) Hash(hasher hash.Hash64) (uint64, error) { } + err = binary.Write(hasher, binary.LittleEndian, m.GetSingleHostPerSubset()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Subset) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options.Subset")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetValues() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + return hasher.Sum64(), nil } diff --git a/pkg/api/gloo.solo.io/v1/options/subset_spec.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/subset_spec.pb.uniquehash.go new file mode 100644 index 000000000..5803c9103 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/subset_spec.pb.uniquehash.go @@ -0,0 +1,197 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/subset_spec.proto + +package options + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SubsetSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options.SubsetSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Selectors")); err != nil { + return 0, err + } + for i, v := range m.GetSelectors() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("FallbackPolicy")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetFallbackPolicy()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDefaultSubset()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DefaultSubset")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDefaultSubset(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DefaultSubset")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Selector) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options.Selector")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Keys")); err != nil { + return 0, err + } + for i, v := range m.GetKeys() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("SingleHostPerSubset")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetSingleHostPerSubset()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Subset) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options.Subset")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetValues() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/tap/tap.pb.go b/pkg/api/gloo.solo.io/v1/options/tap/tap.pb.go new file mode 100644 index 000000000..dd8d6b2eb --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/tap/tap.pb.go @@ -0,0 +1,454 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/tap/tap.proto + +package tap + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/envoyproxy/protoc-gen-validate/validate" + core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Tap filter: a filter that copies the contents of HTTP requests and responses +// to an external tap server. The full HTTP headers and bodies are reported in +// full to the configured address, and data can be reported using either over +// HTTP or GRPC. +type Tap struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Sinks to which tap data should be output. Currently, only a single sink + // is supported. + Sinks []*Sink `protobuf:"bytes,1,rep,name=sinks,proto3" json:"sinks,omitempty"` + // For buffered tapping, the maximum amount of received body that will be buffered + // prior to truncation. If truncation occurs, the truncated field will be set. + // If not specified, the default is 1KiB. + MaxBufferedRxBytes *wrapperspb.UInt32Value `protobuf:"bytes,2,opt,name=max_buffered_rx_bytes,json=maxBufferedRxBytes,proto3" json:"max_buffered_rx_bytes,omitempty"` + // For buffered tapping, the maximum amount of transmitted body that will be buffered + // prior to truncation. If truncation occurs, the truncated field will be set. + // If not specified, the default is 1KiB. + MaxBufferedTxBytes *wrapperspb.UInt32Value `protobuf:"bytes,3,opt,name=max_buffered_tx_bytes,json=maxBufferedTxBytes,proto3" json:"max_buffered_tx_bytes,omitempty"` + // Indicates whether tap filter records the time stamp for request/response headers. + // Request headers time stamp is stored after receiving request headers. + // Response headers time stamp is stored after receiving response headers. + RecordHeadersReceivedTime *wrapperspb.BoolValue `protobuf:"bytes,4,opt,name=record_headers_received_time,json=recordHeadersReceivedTime,proto3" json:"record_headers_received_time,omitempty"` + // Indicates whether report downstream connection info + RecordDownstreamConnection *wrapperspb.BoolValue `protobuf:"bytes,5,opt,name=record_downstream_connection,json=recordDownstreamConnection,proto3" json:"record_downstream_connection,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Tap) Reset() { + *x = Tap{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Tap) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Tap) ProtoMessage() {} + +func (x *Tap) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Tap.ProtoReflect.Descriptor instead. +func (*Tap) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_rawDescGZIP(), []int{0} +} + +func (x *Tap) GetSinks() []*Sink { + if x != nil { + return x.Sinks + } + return nil +} + +func (x *Tap) GetMaxBufferedRxBytes() *wrapperspb.UInt32Value { + if x != nil { + return x.MaxBufferedRxBytes + } + return nil +} + +func (x *Tap) GetMaxBufferedTxBytes() *wrapperspb.UInt32Value { + if x != nil { + return x.MaxBufferedTxBytes + } + return nil +} + +func (x *Tap) GetRecordHeadersReceivedTime() *wrapperspb.BoolValue { + if x != nil { + return x.RecordHeadersReceivedTime + } + return nil +} + +func (x *Tap) GetRecordDownstreamConnection() *wrapperspb.BoolValue { + if x != nil { + return x.RecordDownstreamConnection + } + return nil +} + +type Sink struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The type of the output sink to which tap data should be written + // + // Types that are valid to be assigned to SinkType: + // + // *Sink_GrpcService + // *Sink_HttpService + SinkType isSink_SinkType `protobuf_oneof:"SinkType"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Sink) Reset() { + *x = Sink{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Sink) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Sink) ProtoMessage() {} + +func (x *Sink) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Sink.ProtoReflect.Descriptor instead. +func (*Sink) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_rawDescGZIP(), []int{1} +} + +func (x *Sink) GetSinkType() isSink_SinkType { + if x != nil { + return x.SinkType + } + return nil +} + +func (x *Sink) GetGrpcService() *GrpcService { + if x != nil { + if x, ok := x.SinkType.(*Sink_GrpcService); ok { + return x.GrpcService + } + } + return nil +} + +func (x *Sink) GetHttpService() *HttpService { + if x != nil { + if x, ok := x.SinkType.(*Sink_HttpService); ok { + return x.HttpService + } + } + return nil +} + +type isSink_SinkType interface { + isSink_SinkType() +} + +type Sink_GrpcService struct { + // Write tap data out to a GRPC service + GrpcService *GrpcService `protobuf:"bytes,1,opt,name=grpc_service,json=grpcService,proto3,oneof"` +} + +type Sink_HttpService struct { + // Write tap data out to a HTTP service + HttpService *HttpService `protobuf:"bytes,2,opt,name=http_service,json=httpService,proto3,oneof"` +} + +func (*Sink_GrpcService) isSink_SinkType() {} + +func (*Sink_HttpService) isSink_SinkType() {} + +// A tap sink over a GRPC service +type GrpcService struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Upstream reference to the tap server + TapServer *core.ResourceRef `protobuf:"bytes,1,opt,name=tap_server,json=tapServer,proto3" json:"tap_server,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GrpcService) Reset() { + *x = GrpcService{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GrpcService) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GrpcService) ProtoMessage() {} + +func (x *GrpcService) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GrpcService.ProtoReflect.Descriptor instead. +func (*GrpcService) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_rawDescGZIP(), []int{2} +} + +func (x *GrpcService) GetTapServer() *core.ResourceRef { + if x != nil { + return x.TapServer + } + return nil +} + +// A tap sink over a HTTP service +type HttpService struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Upstream reference to the tap server + TapServer *core.ResourceRef `protobuf:"bytes,1,opt,name=tap_server,json=tapServer,proto3" json:"tap_server,omitempty"` + // Connection timeout + Timeout *durationpb.Duration `protobuf:"bytes,2,opt,name=timeout,proto3" json:"timeout,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HttpService) Reset() { + *x = HttpService{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HttpService) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HttpService) ProtoMessage() {} + +func (x *HttpService) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HttpService.ProtoReflect.Descriptor instead. +func (*HttpService) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_rawDescGZIP(), []int{3} +} + +func (x *HttpService) GetTapServer() *core.ResourceRef { + if x != nil { + return x.TapServer + } + return nil +} + +func (x *HttpService) GetTimeout() *durationpb.Duration { + if x != nil { + return x.Timeout + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_rawDesc = string([]byte{ + 0x0a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x74, 0x61, 0x70, 0x2f, 0x74, 0x61, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x18, 0x74, 0x61, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x2c, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, + 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0xa4, 0x03, 0x0a, 0x03, 0x54, 0x61, 0x70, 0x12, 0x40, 0x0a, 0x05, 0x73, 0x69, 0x6e, + 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x61, 0x70, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x69, 0x6e, 0x6b, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x92, 0x01, 0x04, + 0x08, 0x01, 0x10, 0x01, 0x52, 0x05, 0x73, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x4f, 0x0a, 0x15, 0x6d, + 0x61, 0x78, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x72, 0x78, 0x5f, 0x62, + 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, + 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x42, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x65, 0x64, 0x52, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x15, + 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x74, 0x78, 0x5f, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, + 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x54, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x5b, 0x0a, + 0x1c, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x19, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x5c, 0x0a, 0x1c, 0x72, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1a, 0x72, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xaf, 0x01, 0x0a, 0x04, 0x53, 0x69, 0x6e, + 0x6b, 0x12, 0x4a, 0x0a, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x61, 0x70, 0x2e, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x48, 0x00, + 0x52, 0x0b, 0x67, 0x72, 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4a, 0x0a, + 0x0c, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x61, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, + 0x74, 0x74, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x68, 0x74, + 0x74, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x0f, 0x0a, 0x08, 0x53, 0x69, 0x6e, + 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0x51, 0x0a, 0x0b, 0x47, 0x72, + 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x42, 0x0a, 0x0a, 0x74, 0x61, 0x70, + 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x09, 0x74, 0x61, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x90, 0x01, + 0x0a, 0x0b, 0x48, 0x74, 0x74, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x42, 0x0a, + 0x0a, 0x74, 0x61, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x74, 0x61, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x12, 0x3d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x42, 0x42, 0x5a, 0x40, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x74, 0x61, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_goTypes = []any{ + (*Tap)(nil), // 0: tap.options.gloo.solo.io.Tap + (*Sink)(nil), // 1: tap.options.gloo.solo.io.Sink + (*GrpcService)(nil), // 2: tap.options.gloo.solo.io.GrpcService + (*HttpService)(nil), // 3: tap.options.gloo.solo.io.HttpService + (*wrapperspb.UInt32Value)(nil), // 4: google.protobuf.UInt32Value + (*wrapperspb.BoolValue)(nil), // 5: google.protobuf.BoolValue + (*core.ResourceRef)(nil), // 6: core.solo.io.ResourceRef + (*durationpb.Duration)(nil), // 7: google.protobuf.Duration +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_depIdxs = []int32{ + 1, // 0: tap.options.gloo.solo.io.Tap.sinks:type_name -> tap.options.gloo.solo.io.Sink + 4, // 1: tap.options.gloo.solo.io.Tap.max_buffered_rx_bytes:type_name -> google.protobuf.UInt32Value + 4, // 2: tap.options.gloo.solo.io.Tap.max_buffered_tx_bytes:type_name -> google.protobuf.UInt32Value + 5, // 3: tap.options.gloo.solo.io.Tap.record_headers_received_time:type_name -> google.protobuf.BoolValue + 5, // 4: tap.options.gloo.solo.io.Tap.record_downstream_connection:type_name -> google.protobuf.BoolValue + 2, // 5: tap.options.gloo.solo.io.Sink.grpc_service:type_name -> tap.options.gloo.solo.io.GrpcService + 3, // 6: tap.options.gloo.solo.io.Sink.http_service:type_name -> tap.options.gloo.solo.io.HttpService + 6, // 7: tap.options.gloo.solo.io.GrpcService.tap_server:type_name -> core.solo.io.ResourceRef + 6, // 8: tap.options.gloo.solo.io.HttpService.tap_server:type_name -> core.solo.io.ResourceRef + 7, // 9: tap.options.gloo.solo.io.HttpService.timeout:type_name -> google.protobuf.Duration + 10, // [10:10] is the sub-list for method output_type + 10, // [10:10] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_msgTypes[1].OneofWrappers = []any{ + (*Sink_GrpcService)(nil), + (*Sink_HttpService)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_rawDesc)), + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_tap_tap_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/tcp/tcp.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/tcp/tcp.pb.clone.go new file mode 100644 index 000000000..bc1c5d149 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/tcp/tcp.pb.clone.go @@ -0,0 +1,129 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/tcp/tcp.proto + +package tcp + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *TcpProxySettings) Clone() proto.Message { + var target *TcpProxySettings + if m == nil { + return target + } + target = &TcpProxySettings{} + + if h, ok := interface{}(m.GetMaxConnectAttempts()).(clone.Cloner); ok { + target.MaxConnectAttempts = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxConnectAttempts = proto.Clone(m.GetMaxConnectAttempts()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetIdleTimeout()).(clone.Cloner); ok { + target.IdleTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.IdleTimeout = proto.Clone(m.GetIdleTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetTunnelingConfig()).(clone.Cloner); ok { + target.TunnelingConfig = h.Clone().(*TcpProxySettings_TunnelingConfig) + } else { + target.TunnelingConfig = proto.Clone(m.GetTunnelingConfig()).(*TcpProxySettings_TunnelingConfig) + } + + if h, ok := interface{}(m.GetAccessLogFlushInterval()).(clone.Cloner); ok { + target.AccessLogFlushInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.AccessLogFlushInterval = proto.Clone(m.GetAccessLogFlushInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + return target +} + +// Clone function +func (m *HeaderValueOption) Clone() proto.Message { + var target *HeaderValueOption + if m == nil { + return target + } + target = &HeaderValueOption{} + + if h, ok := interface{}(m.GetHeader()).(clone.Cloner); ok { + target.Header = h.Clone().(*HeaderValue) + } else { + target.Header = proto.Clone(m.GetHeader()).(*HeaderValue) + } + + if h, ok := interface{}(m.GetAppend()).(clone.Cloner); ok { + target.Append = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Append = proto.Clone(m.GetAppend()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *HeaderValue) Clone() proto.Message { + var target *HeaderValue + if m == nil { + return target + } + target = &HeaderValue{} + + target.Key = m.GetKey() + + target.Value = m.GetValue() + + return target +} + +// Clone function +func (m *TcpProxySettings_TunnelingConfig) Clone() proto.Message { + var target *TcpProxySettings_TunnelingConfig + if m == nil { + return target + } + target = &TcpProxySettings_TunnelingConfig{} + + target.Hostname = m.GetHostname() + + if m.GetHeadersToAdd() != nil { + target.HeadersToAdd = make([]*HeaderValueOption, len(m.GetHeadersToAdd())) + for idx, v := range m.GetHeadersToAdd() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.HeadersToAdd[idx] = h.Clone().(*HeaderValueOption) + } else { + target.HeadersToAdd[idx] = proto.Clone(v).(*HeaderValueOption) + } + + } + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/tcp/tcp.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/tcp/tcp.pb.equal.go index dc50f5017..c0fbe55a9 100644 --- a/pkg/api/gloo.solo.io/v1/options/tcp/tcp.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/options/tcp/tcp.pb.equal.go @@ -76,6 +76,92 @@ func (m *TcpProxySettings) Equal(that interface{}) bool { } } + if h, ok := interface{}(m.GetAccessLogFlushInterval()).(equality.Equalizer); ok { + if !h.Equal(target.GetAccessLogFlushInterval()) { + return false + } + } else { + if !proto.Equal(m.GetAccessLogFlushInterval(), target.GetAccessLogFlushInterval()) { + return false + } + } + + return true +} + +// Equal function +func (m *HeaderValueOption) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HeaderValueOption) + if !ok { + that2, ok := that.(HeaderValueOption) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetHeader()).(equality.Equalizer); ok { + if !h.Equal(target.GetHeader()) { + return false + } + } else { + if !proto.Equal(m.GetHeader(), target.GetHeader()) { + return false + } + } + + if h, ok := interface{}(m.GetAppend()).(equality.Equalizer); ok { + if !h.Equal(target.GetAppend()) { + return false + } + } else { + if !proto.Equal(m.GetAppend(), target.GetAppend()) { + return false + } + } + + return true +} + +// Equal function +func (m *HeaderValue) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HeaderValue) + if !ok { + that2, ok := that.(HeaderValue) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetKey(), target.GetKey()) != 0 { + return false + } + + if strings.Compare(m.GetValue(), target.GetValue()) != 0 { + return false + } + return true } @@ -104,5 +190,22 @@ func (m *TcpProxySettings_TunnelingConfig) Equal(that interface{}) bool { return false } + if len(m.GetHeadersToAdd()) != len(target.GetHeadersToAdd()) { + return false + } + for idx, v := range m.GetHeadersToAdd() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetHeadersToAdd()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetHeadersToAdd()[idx]) { + return false + } + } + + } + return true } diff --git a/pkg/api/gloo.solo.io/v1/options/tcp/tcp.pb.go b/pkg/api/gloo.solo.io/v1/options/tcp/tcp.pb.go index 87c54eb58..2be0b9ced 100644 --- a/pkg/api/gloo.solo.io/v1/options/tcp/tcp.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/tcp/tcp.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/tcp/tcp.proto @@ -9,14 +9,14 @@ package tcp import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - duration "github.com/golang/protobuf/ptypes/duration" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" _ "github.com/solo-io/solo-kit/pkg/api/external/envoy/api/v2/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -26,32 +26,29 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Contains various settings for Envoy's tcp proxy filter. // See here for more information: https://www.envoyproxy.io/docs/envoy/v1.10.0/api-v2/config/filter/network/tcp_proxy/v2/tcp_proxy.proto#envoy-api-msg-config-filter-network-tcp-proxy-v2-tcpproxy type TcpProxySettings struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - MaxConnectAttempts *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=max_connect_attempts,json=maxConnectAttempts,proto3" json:"max_connect_attempts,omitempty"` - IdleTimeout *duration.Duration `protobuf:"bytes,2,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + MaxConnectAttempts *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=max_connect_attempts,json=maxConnectAttempts,proto3" json:"max_connect_attempts,omitempty"` + IdleTimeout *durationpb.Duration `protobuf:"bytes,2,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"` // If set, this configures tunneling, e.g. configuration options to tunnel multiple TCP // payloads over a shared HTTP tunnel. If this message is absent, the payload // will be proxied upstream as per usual. TunnelingConfig *TcpProxySettings_TunnelingConfig `protobuf:"bytes,12,opt,name=tunneling_config,json=tunnelingConfig,proto3" json:"tunneling_config,omitempty"` + // If set, Envoy will flush the access log on this time interval. Must be a + // minimum of 1 ms. By default, will only write to the access log when a + // connection is closed. + AccessLogFlushInterval *durationpb.Duration `protobuf:"bytes,15,opt,name=access_log_flush_interval,json=accessLogFlushInterval,proto3" json:"access_log_flush_interval,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TcpProxySettings) Reset() { *x = TcpProxySettings{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TcpProxySettings) String() string { @@ -62,7 +59,7 @@ func (*TcpProxySettings) ProtoMessage() {} func (x *TcpProxySettings) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -77,14 +74,14 @@ func (*TcpProxySettings) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_rawDescGZIP(), []int{0} } -func (x *TcpProxySettings) GetMaxConnectAttempts() *wrappers.UInt32Value { +func (x *TcpProxySettings) GetMaxConnectAttempts() *wrapperspb.UInt32Value { if x != nil { return x.MaxConnectAttempts } return nil } -func (x *TcpProxySettings) GetIdleTimeout() *duration.Duration { +func (x *TcpProxySettings) GetIdleTimeout() *durationpb.Duration { if x != nil { return x.IdleTimeout } @@ -98,23 +95,140 @@ func (x *TcpProxySettings) GetTunnelingConfig() *TcpProxySettings_TunnelingConfi return nil } -// Configuration for tunneling TCP over other transports or application layers. -type TcpProxySettings_TunnelingConfig struct { - state protoimpl.MessageState +func (x *TcpProxySettings) GetAccessLogFlushInterval() *durationpb.Duration { + if x != nil { + return x.AccessLogFlushInterval + } + return nil +} + +// Header name/value pair plus option to control append behavior. +type HeaderValueOption struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Header name/value pair that this option applies to. + Header *HeaderValue `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + // If true (default), the value is appended to existing values. + Append *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=append,proto3" json:"append,omitempty"` + unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache +} + +func (x *HeaderValueOption) Reset() { + *x = HeaderValueOption{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HeaderValueOption) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HeaderValueOption) ProtoMessage() {} + +func (x *HeaderValueOption) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HeaderValueOption.ProtoReflect.Descriptor instead. +func (*HeaderValueOption) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_rawDescGZIP(), []int{1} +} + +func (x *HeaderValueOption) GetHeader() *HeaderValue { + if x != nil { + return x.Header + } + return nil +} + +func (x *HeaderValueOption) GetAppend() *wrapperspb.BoolValue { + if x != nil { + return x.Append + } + return nil +} + +// Header name/value pair. +type HeaderValue struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Header name. + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + // Header value. + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HeaderValue) Reset() { + *x = HeaderValue{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HeaderValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HeaderValue) ProtoMessage() {} + +func (x *HeaderValue) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} +// Deprecated: Use HeaderValue.ProtoReflect.Descriptor instead. +func (*HeaderValue) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_rawDescGZIP(), []int{2} +} + +func (x *HeaderValue) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *HeaderValue) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +// Configuration for tunneling TCP over other transports or application layers. +type TcpProxySettings_TunnelingConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` // The hostname to send in the synthesized CONNECT headers to the upstream proxy. Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"` + // Additional request headers to be sent to upstream proxy. Mainly used to + // trigger upstream to convert POST request back to CONNECT requests. + HeadersToAdd []*HeaderValueOption `protobuf:"bytes,13,rep,name=headers_to_add,json=headersToAdd,proto3" json:"headers_to_add,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TcpProxySettings_TunnelingConfig) Reset() { *x = TcpProxySettings_TunnelingConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TcpProxySettings_TunnelingConfig) String() string { @@ -124,8 +238,8 @@ func (x *TcpProxySettings_TunnelingConfig) String() string { func (*TcpProxySettings_TunnelingConfig) ProtoMessage() {} func (x *TcpProxySettings_TunnelingConfig) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_msgTypes[3] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -147,9 +261,16 @@ func (x *TcpProxySettings_TunnelingConfig) GetHostname() string { return "" } +func (x *TcpProxySettings_TunnelingConfig) GetHeadersToAdd() []*HeaderValueOption { + if x != nil { + return x.HeadersToAdd + } + return nil +} + var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_rawDesc = string([]byte{ 0x0a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -165,7 +286,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_raw 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb6, 0x02, 0x0a, 0x10, 0x54, + 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe0, 0x03, 0x0a, 0x10, 0x54, 0x63, 0x70, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4e, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, @@ -182,45 +303,75 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_raw 0x69, 0x6f, 0x2e, 0x54, 0x63, 0x70, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x2d, 0x0a, 0x0f, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x69, 0x6e, - 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, - 0x61, 0x6d, 0x65, 0x42, 0x4a, 0x5a, 0x40, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, - 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x63, 0x70, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x54, 0x0a, 0x19, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, + 0x6f, 0x67, 0x5f, 0x66, 0x6c, 0x75, 0x73, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x16, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x46, 0x6c, 0x75, + 0x73, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x1a, 0x80, 0x01, 0x0a, 0x0f, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, + 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x51, 0x0a, 0x0e, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x64, 0x64, 0x18, 0x0d, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x63, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0c, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x22, 0x86, 0x01, + 0x0a, 0x11, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x63, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x12, 0x32, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, + 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x22, 0x35, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x4e, 0xb8, + 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x40, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, + 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x63, 0x70, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_goTypes = []any{ (*TcpProxySettings)(nil), // 0: tcp.options.gloo.solo.io.TcpProxySettings - (*TcpProxySettings_TunnelingConfig)(nil), // 1: tcp.options.gloo.solo.io.TcpProxySettings.TunnelingConfig - (*wrappers.UInt32Value)(nil), // 2: google.protobuf.UInt32Value - (*duration.Duration)(nil), // 3: google.protobuf.Duration + (*HeaderValueOption)(nil), // 1: tcp.options.gloo.solo.io.HeaderValueOption + (*HeaderValue)(nil), // 2: tcp.options.gloo.solo.io.HeaderValue + (*TcpProxySettings_TunnelingConfig)(nil), // 3: tcp.options.gloo.solo.io.TcpProxySettings.TunnelingConfig + (*wrapperspb.UInt32Value)(nil), // 4: google.protobuf.UInt32Value + (*durationpb.Duration)(nil), // 5: google.protobuf.Duration + (*wrapperspb.BoolValue)(nil), // 6: google.protobuf.BoolValue } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_depIdxs = []int32{ - 2, // 0: tcp.options.gloo.solo.io.TcpProxySettings.max_connect_attempts:type_name -> google.protobuf.UInt32Value - 3, // 1: tcp.options.gloo.solo.io.TcpProxySettings.idle_timeout:type_name -> google.protobuf.Duration - 1, // 2: tcp.options.gloo.solo.io.TcpProxySettings.tunneling_config:type_name -> tcp.options.gloo.solo.io.TcpProxySettings.TunnelingConfig - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name + 4, // 0: tcp.options.gloo.solo.io.TcpProxySettings.max_connect_attempts:type_name -> google.protobuf.UInt32Value + 5, // 1: tcp.options.gloo.solo.io.TcpProxySettings.idle_timeout:type_name -> google.protobuf.Duration + 3, // 2: tcp.options.gloo.solo.io.TcpProxySettings.tunneling_config:type_name -> tcp.options.gloo.solo.io.TcpProxySettings.TunnelingConfig + 5, // 3: tcp.options.gloo.solo.io.TcpProxySettings.access_log_flush_interval:type_name -> google.protobuf.Duration + 2, // 4: tcp.options.gloo.solo.io.HeaderValueOption.header:type_name -> tcp.options.gloo.solo.io.HeaderValue + 6, // 5: tcp.options.gloo.solo.io.HeaderValueOption.append:type_name -> google.protobuf.BoolValue + 1, // 6: tcp.options.gloo.solo.io.TcpProxySettings.TunnelingConfig.headers_to_add:type_name -> tcp.options.gloo.solo.io.HeaderValueOption + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_init() } @@ -228,39 +379,13 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_in if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TcpProxySettings); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TcpProxySettings_TunnelingConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_rawDesc)), NumEnums: 0, - NumMessages: 2, + NumMessages: 4, NumExtensions: 0, NumServices: 0, }, @@ -269,7 +394,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_in MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tcp_tcp_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/tcp/tcp.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/tcp/tcp.pb.hash.go index 97d3a5bde..9f331a0cc 100644 --- a/pkg/api/gloo.solo.io/v1/options/tcp/tcp.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/tcp/tcp.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *TcpProxySettings) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,42 +43,80 @@ func (m *TcpProxySettings) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetMaxConnectAttempts()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxConnectAttempts")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMaxConnectAttempts(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMaxConnectAttempts(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("MaxConnectAttempts")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetIdleTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetIdleTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetIdleTimeout(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetTunnelingConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TunnelingConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTunnelingConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TunnelingConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAccessLogFlushInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AccessLogFlushInterval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTunnelingConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAccessLogFlushInterval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AccessLogFlushInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -84,6 +126,98 @@ func (m *TcpProxySettings) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HeaderValueOption) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("tcp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tcp.HeaderValueOption")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHeader()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeader(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAppend()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Append")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAppend(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Append")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HeaderValue) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("tcp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tcp.HeaderValue")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetValue())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *TcpProxySettings_TunnelingConfig) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -100,5 +234,29 @@ func (m *TcpProxySettings_TunnelingConfig) Hash(hasher hash.Hash64) (uint64, err return 0, err } + for _, v := range m.GetHeadersToAdd() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + return hasher.Sum64(), nil } diff --git a/pkg/api/gloo.solo.io/v1/options/tcp/tcp.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/tcp/tcp.pb.uniquehash.go new file mode 100644 index 000000000..e90716ebb --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/tcp/tcp.pb.uniquehash.go @@ -0,0 +1,275 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/tcp/tcp.proto + +package tcp + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TcpProxySettings) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("tcp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tcp.TcpProxySettings")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxConnectAttempts()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxConnectAttempts")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxConnectAttempts(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxConnectAttempts")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetIdleTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIdleTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTunnelingConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TunnelingConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTunnelingConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TunnelingConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAccessLogFlushInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AccessLogFlushInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAccessLogFlushInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AccessLogFlushInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HeaderValueOption) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("tcp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tcp.HeaderValueOption")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHeader()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeader(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAppend()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Append")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAppend(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Append")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HeaderValue) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("tcp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tcp.HeaderValue")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetValue())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TcpProxySettings_TunnelingConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("tcp.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tcp.TcpProxySettings_TunnelingConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Hostname")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHostname())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("HeadersToAdd")); err != nil { + return 0, err + } + for i, v := range m.GetHeadersToAdd() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/tracing/tracing.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/tracing/tracing.pb.clone.go new file mode 100644 index 000000000..495d1e554 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/tracing/tracing.pb.clone.go @@ -0,0 +1,305 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/tracing/tracing.proto + +package tracing + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_trace_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *ListenerTracingSettings) Clone() proto.Message { + var target *ListenerTracingSettings + if m == nil { + return target + } + target = &ListenerTracingSettings{} + + if m.GetRequestHeadersForTags() != nil { + target.RequestHeadersForTags = make([]*google_golang_org_protobuf_types_known_wrapperspb.StringValue, len(m.GetRequestHeadersForTags())) + for idx, v := range m.GetRequestHeadersForTags() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RequestHeadersForTags[idx] = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.RequestHeadersForTags[idx] = proto.Clone(v).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + } + } + + if h, ok := interface{}(m.GetVerbose()).(clone.Cloner); ok { + target.Verbose = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Verbose = proto.Clone(m.GetVerbose()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetTracePercentages()).(clone.Cloner); ok { + target.TracePercentages = h.Clone().(*TracePercentages) + } else { + target.TracePercentages = proto.Clone(m.GetTracePercentages()).(*TracePercentages) + } + + if m.GetEnvironmentVariablesForTags() != nil { + target.EnvironmentVariablesForTags = make([]*TracingTagEnvironmentVariable, len(m.GetEnvironmentVariablesForTags())) + for idx, v := range m.GetEnvironmentVariablesForTags() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.EnvironmentVariablesForTags[idx] = h.Clone().(*TracingTagEnvironmentVariable) + } else { + target.EnvironmentVariablesForTags[idx] = proto.Clone(v).(*TracingTagEnvironmentVariable) + } + + } + } + + if m.GetLiteralsForTags() != nil { + target.LiteralsForTags = make([]*TracingTagLiteral, len(m.GetLiteralsForTags())) + for idx, v := range m.GetLiteralsForTags() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.LiteralsForTags[idx] = h.Clone().(*TracingTagLiteral) + } else { + target.LiteralsForTags[idx] = proto.Clone(v).(*TracingTagLiteral) + } + + } + } + + if m.GetMetadataForTags() != nil { + target.MetadataForTags = make([]*TracingTagMetadata, len(m.GetMetadataForTags())) + for idx, v := range m.GetMetadataForTags() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.MetadataForTags[idx] = h.Clone().(*TracingTagMetadata) + } else { + target.MetadataForTags[idx] = proto.Clone(v).(*TracingTagMetadata) + } + + } + } + + target.SpawnUpstreamSpan = m.GetSpawnUpstreamSpan() + + switch m.ProviderConfig.(type) { + + case *ListenerTracingSettings_ZipkinConfig: + + if h, ok := interface{}(m.GetZipkinConfig()).(clone.Cloner); ok { + target.ProviderConfig = &ListenerTracingSettings_ZipkinConfig{ + ZipkinConfig: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_trace_v3.ZipkinConfig), + } + } else { + target.ProviderConfig = &ListenerTracingSettings_ZipkinConfig{ + ZipkinConfig: proto.Clone(m.GetZipkinConfig()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_trace_v3.ZipkinConfig), + } + } + + case *ListenerTracingSettings_DatadogConfig: + + if h, ok := interface{}(m.GetDatadogConfig()).(clone.Cloner); ok { + target.ProviderConfig = &ListenerTracingSettings_DatadogConfig{ + DatadogConfig: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_trace_v3.DatadogConfig), + } + } else { + target.ProviderConfig = &ListenerTracingSettings_DatadogConfig{ + DatadogConfig: proto.Clone(m.GetDatadogConfig()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_trace_v3.DatadogConfig), + } + } + + case *ListenerTracingSettings_OpenTelemetryConfig: + + if h, ok := interface{}(m.GetOpenTelemetryConfig()).(clone.Cloner); ok { + target.ProviderConfig = &ListenerTracingSettings_OpenTelemetryConfig{ + OpenTelemetryConfig: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_trace_v3.OpenTelemetryConfig), + } + } else { + target.ProviderConfig = &ListenerTracingSettings_OpenTelemetryConfig{ + OpenTelemetryConfig: proto.Clone(m.GetOpenTelemetryConfig()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_trace_v3.OpenTelemetryConfig), + } + } + + case *ListenerTracingSettings_OpenCensusConfig: + + if h, ok := interface{}(m.GetOpenCensusConfig()).(clone.Cloner); ok { + target.ProviderConfig = &ListenerTracingSettings_OpenCensusConfig{ + OpenCensusConfig: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_trace_v3.OpenCensusConfig), + } + } else { + target.ProviderConfig = &ListenerTracingSettings_OpenCensusConfig{ + OpenCensusConfig: proto.Clone(m.GetOpenCensusConfig()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_trace_v3.OpenCensusConfig), + } + } + + } + + return target +} + +// Clone function +func (m *RouteTracingSettings) Clone() proto.Message { + var target *RouteTracingSettings + if m == nil { + return target + } + target = &RouteTracingSettings{} + + target.RouteDescriptor = m.GetRouteDescriptor() + + if h, ok := interface{}(m.GetTracePercentages()).(clone.Cloner); ok { + target.TracePercentages = h.Clone().(*TracePercentages) + } else { + target.TracePercentages = proto.Clone(m.GetTracePercentages()).(*TracePercentages) + } + + if h, ok := interface{}(m.GetPropagate()).(clone.Cloner); ok { + target.Propagate = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Propagate = proto.Clone(m.GetPropagate()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *TracePercentages) Clone() proto.Message { + var target *TracePercentages + if m == nil { + return target + } + target = &TracePercentages{} + + if h, ok := interface{}(m.GetClientSamplePercentage()).(clone.Cloner); ok { + target.ClientSamplePercentage = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.FloatValue) + } else { + target.ClientSamplePercentage = proto.Clone(m.GetClientSamplePercentage()).(*google_golang_org_protobuf_types_known_wrapperspb.FloatValue) + } + + if h, ok := interface{}(m.GetRandomSamplePercentage()).(clone.Cloner); ok { + target.RandomSamplePercentage = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.FloatValue) + } else { + target.RandomSamplePercentage = proto.Clone(m.GetRandomSamplePercentage()).(*google_golang_org_protobuf_types_known_wrapperspb.FloatValue) + } + + if h, ok := interface{}(m.GetOverallSamplePercentage()).(clone.Cloner); ok { + target.OverallSamplePercentage = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.FloatValue) + } else { + target.OverallSamplePercentage = proto.Clone(m.GetOverallSamplePercentage()).(*google_golang_org_protobuf_types_known_wrapperspb.FloatValue) + } + + return target +} + +// Clone function +func (m *TracingTagEnvironmentVariable) Clone() proto.Message { + var target *TracingTagEnvironmentVariable + if m == nil { + return target + } + target = &TracingTagEnvironmentVariable{} + + if h, ok := interface{}(m.GetTag()).(clone.Cloner); ok { + target.Tag = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.Tag = proto.Clone(m.GetTag()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + if h, ok := interface{}(m.GetName()).(clone.Cloner); ok { + target.Name = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.Name = proto.Clone(m.GetName()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + if h, ok := interface{}(m.GetDefaultValue()).(clone.Cloner); ok { + target.DefaultValue = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.DefaultValue = proto.Clone(m.GetDefaultValue()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + return target +} + +// Clone function +func (m *TracingTagLiteral) Clone() proto.Message { + var target *TracingTagLiteral + if m == nil { + return target + } + target = &TracingTagLiteral{} + + if h, ok := interface{}(m.GetTag()).(clone.Cloner); ok { + target.Tag = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.Tag = proto.Clone(m.GetTag()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + if h, ok := interface{}(m.GetValue()).(clone.Cloner); ok { + target.Value = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.Value = proto.Clone(m.GetValue()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + return target +} + +// Clone function +func (m *TracingTagMetadata) Clone() proto.Message { + var target *TracingTagMetadata + if m == nil { + return target + } + target = &TracingTagMetadata{} + + target.Tag = m.GetTag() + + target.Kind = m.GetKind() + + if h, ok := interface{}(m.GetValue()).(clone.Cloner); ok { + target.Value = h.Clone().(*TracingTagMetadata_MetadataValue) + } else { + target.Value = proto.Clone(m.GetValue()).(*TracingTagMetadata_MetadataValue) + } + + target.DefaultValue = m.GetDefaultValue() + + return target +} + +// Clone function +func (m *TracingTagMetadata_MetadataValue) Clone() proto.Message { + var target *TracingTagMetadata_MetadataValue + if m == nil { + return target + } + target = &TracingTagMetadata_MetadataValue{} + + target.Namespace = m.GetNamespace() + + target.Key = m.GetKey() + + target.NestedFieldDelimiter = m.GetNestedFieldDelimiter() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/tracing/tracing.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/tracing/tracing.pb.equal.go index dcc3cadbd..80b1a2997 100644 --- a/pkg/api/gloo.solo.io/v1/options/tracing/tracing.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/options/tracing/tracing.pb.equal.go @@ -51,14 +51,26 @@ func (m *ListenerTracingSettings) Equal(that interface{}) bool { } for idx, v := range m.GetRequestHeadersForTags() { - if strings.Compare(v, target.GetRequestHeadersForTags()[idx]) != 0 { - return false + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetRequestHeadersForTags()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetRequestHeadersForTags()[idx]) { + return false + } } } - if m.GetVerbose() != target.GetVerbose() { - return false + if h, ok := interface{}(m.GetVerbose()).(equality.Equalizer); ok { + if !h.Equal(target.GetVerbose()) { + return false + } + } else { + if !proto.Equal(m.GetVerbose(), target.GetVerbose()) { + return false + } } if h, ok := interface{}(m.GetTracePercentages()).(equality.Equalizer); ok { @@ -105,9 +117,33 @@ func (m *ListenerTracingSettings) Equal(that interface{}) bool { } + if len(m.GetMetadataForTags()) != len(target.GetMetadataForTags()) { + return false + } + for idx, v := range m.GetMetadataForTags() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetMetadataForTags()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetMetadataForTags()[idx]) { + return false + } + } + + } + + if m.GetSpawnUpstreamSpan() != target.GetSpawnUpstreamSpan() { + return false + } + switch m.ProviderConfig.(type) { case *ListenerTracingSettings_ZipkinConfig: + if _, ok := target.ProviderConfig.(*ListenerTracingSettings_ZipkinConfig); !ok { + return false + } if h, ok := interface{}(m.GetZipkinConfig()).(equality.Equalizer); ok { if !h.Equal(target.GetZipkinConfig()) { @@ -120,6 +156,9 @@ func (m *ListenerTracingSettings) Equal(that interface{}) bool { } case *ListenerTracingSettings_DatadogConfig: + if _, ok := target.ProviderConfig.(*ListenerTracingSettings_DatadogConfig); !ok { + return false + } if h, ok := interface{}(m.GetDatadogConfig()).(equality.Equalizer); ok { if !h.Equal(target.GetDatadogConfig()) { @@ -131,6 +170,41 @@ func (m *ListenerTracingSettings) Equal(that interface{}) bool { } } + case *ListenerTracingSettings_OpenTelemetryConfig: + if _, ok := target.ProviderConfig.(*ListenerTracingSettings_OpenTelemetryConfig); !ok { + return false + } + + if h, ok := interface{}(m.GetOpenTelemetryConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetOpenTelemetryConfig()) { + return false + } + } else { + if !proto.Equal(m.GetOpenTelemetryConfig(), target.GetOpenTelemetryConfig()) { + return false + } + } + + case *ListenerTracingSettings_OpenCensusConfig: + if _, ok := target.ProviderConfig.(*ListenerTracingSettings_OpenCensusConfig); !ok { + return false + } + + if h, ok := interface{}(m.GetOpenCensusConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetOpenCensusConfig()) { + return false + } + } else { + if !proto.Equal(m.GetOpenCensusConfig(), target.GetOpenCensusConfig()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.ProviderConfig != target.ProviderConfig { + return false + } } return true @@ -259,14 +333,122 @@ func (m *TracingTagEnvironmentVariable) Equal(that interface{}) bool { return false } + if h, ok := interface{}(m.GetTag()).(equality.Equalizer); ok { + if !h.Equal(target.GetTag()) { + return false + } + } else { + if !proto.Equal(m.GetTag(), target.GetTag()) { + return false + } + } + + if h, ok := interface{}(m.GetName()).(equality.Equalizer); ok { + if !h.Equal(target.GetName()) { + return false + } + } else { + if !proto.Equal(m.GetName(), target.GetName()) { + return false + } + } + + if h, ok := interface{}(m.GetDefaultValue()).(equality.Equalizer); ok { + if !h.Equal(target.GetDefaultValue()) { + return false + } + } else { + if !proto.Equal(m.GetDefaultValue(), target.GetDefaultValue()) { + return false + } + } + + return true +} + +// Equal function +func (m *TracingTagLiteral) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*TracingTagLiteral) + if !ok { + that2, ok := that.(TracingTagLiteral) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetTag()).(equality.Equalizer); ok { + if !h.Equal(target.GetTag()) { + return false + } + } else { + if !proto.Equal(m.GetTag(), target.GetTag()) { + return false + } + } + + if h, ok := interface{}(m.GetValue()).(equality.Equalizer); ok { + if !h.Equal(target.GetValue()) { + return false + } + } else { + if !proto.Equal(m.GetValue(), target.GetValue()) { + return false + } + } + + return true +} + +// Equal function +func (m *TracingTagMetadata) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*TracingTagMetadata) + if !ok { + that2, ok := that.(TracingTagMetadata) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + if strings.Compare(m.GetTag(), target.GetTag()) != 0 { return false } - if strings.Compare(m.GetName(), target.GetName()) != 0 { + if m.GetKind() != target.GetKind() { return false } + if h, ok := interface{}(m.GetValue()).(equality.Equalizer); ok { + if !h.Equal(target.GetValue()) { + return false + } + } else { + if !proto.Equal(m.GetValue(), target.GetValue()) { + return false + } + } + if strings.Compare(m.GetDefaultValue(), target.GetDefaultValue()) != 0 { return false } @@ -275,14 +457,14 @@ func (m *TracingTagEnvironmentVariable) Equal(that interface{}) bool { } // Equal function -func (m *TracingTagLiteral) Equal(that interface{}) bool { +func (m *TracingTagMetadata_MetadataValue) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*TracingTagLiteral) + target, ok := that.(*TracingTagMetadata_MetadataValue) if !ok { - that2, ok := that.(TracingTagLiteral) + that2, ok := that.(TracingTagMetadata_MetadataValue) if ok { target = &that2 } else { @@ -295,11 +477,15 @@ func (m *TracingTagLiteral) Equal(that interface{}) bool { return false } - if strings.Compare(m.GetTag(), target.GetTag()) != 0 { + if strings.Compare(m.GetNamespace(), target.GetNamespace()) != 0 { + return false + } + + if strings.Compare(m.GetKey(), target.GetKey()) != 0 { return false } - if strings.Compare(m.GetValue(), target.GetValue()) != 0 { + if strings.Compare(m.GetNestedFieldDelimiter(), target.GetNestedFieldDelimiter()) != 0 { return false } diff --git a/pkg/api/gloo.solo.io/v1/options/tracing/tracing.pb.go b/pkg/api/gloo.solo.io/v1/options/tracing/tracing.pb.go index 28a73be6d..1898270f0 100644 --- a/pkg/api/gloo.solo.io/v1/options/tracing/tracing.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/tracing/tracing.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/tracing/tracing.proto @@ -9,15 +9,15 @@ package tracing import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - _ "github.com/golang/protobuf/ptypes/any" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/trace/v3" _ "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/known/anypb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -27,45 +27,95 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 +type TracingTagMetadata_Kind int32 + +const ( + // The metadata is extracted from the stream metadata. + TracingTagMetadata_REQUEST TracingTagMetadata_Kind = 0 + // The metadata is extracted from the endpoint metadata. + TracingTagMetadata_ENDPOINT TracingTagMetadata_Kind = 1 +) + +// Enum value maps for TracingTagMetadata_Kind. +var ( + TracingTagMetadata_Kind_name = map[int32]string{ + 0: "REQUEST", + 1: "ENDPOINT", + } + TracingTagMetadata_Kind_value = map[string]int32{ + "REQUEST": 0, + "ENDPOINT": 1, + } +) + +func (x TracingTagMetadata_Kind) Enum() *TracingTagMetadata_Kind { + p := new(TracingTagMetadata_Kind) + *p = x + return p +} + +func (x TracingTagMetadata_Kind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TracingTagMetadata_Kind) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_enumTypes[0].Descriptor() +} + +func (TracingTagMetadata_Kind) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_enumTypes[0] +} + +func (x TracingTagMetadata_Kind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TracingTagMetadata_Kind.Descriptor instead. +func (TracingTagMetadata_Kind) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDescGZIP(), []int{5, 0} +} // Contains settings for configuring Envoy's tracing capabilities at the listener level. -// See here for additional information on Envoy's tracing capabilities: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/observability/tracing.html -// See here for additional information about configuring tracing with Gloo: https://gloo.solo.io/user_guides/setup_options/observability/#tracing +// See [here](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/observability/tracing.html) for additional information on Envoy's tracing capabilities. +// See [here](https://docs.solo.io/gloo-edge/latest/guides/observability/tracing/) for additional information about configuring tracing with Gloo Edge. type ListenerTracingSettings struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Optional. If specified, Envoy will include the headers and header values for any matching request headers. - RequestHeadersForTags []string `protobuf:"bytes,1,rep,name=request_headers_for_tags,json=requestHeadersForTags,proto3" json:"request_headers_for_tags,omitempty"` + RequestHeadersForTags []*wrapperspb.StringValue `protobuf:"bytes,1,rep,name=request_headers_for_tags,json=requestHeadersForTags,proto3" json:"request_headers_for_tags,omitempty"` // Optional. If true, Envoy will include logs for streaming events. Default: false. - Verbose bool `protobuf:"varint,2,opt,name=verbose,proto3" json:"verbose,omitempty"` + Verbose *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=verbose,proto3" json:"verbose,omitempty"` // Requests can produce traces by random sampling or when the `x-client-trace-id` header is provided. // TracePercentages defines the limits for random, forced, and overall tracing percentages. TracePercentages *TracePercentages `protobuf:"bytes,3,opt,name=trace_percentages,json=tracePercentages,proto3" json:"trace_percentages,omitempty"` // Optional. If not specified, no tracing will be performed // ProviderConfig defines the configuration for an external tracing provider. // - // Types that are assignable to ProviderConfig: + // Types that are valid to be assigned to ProviderConfig: + // // *ListenerTracingSettings_ZipkinConfig // *ListenerTracingSettings_DatadogConfig + // *ListenerTracingSettings_OpenTelemetryConfig + // *ListenerTracingSettings_OpenCensusConfig ProviderConfig isListenerTracingSettings_ProviderConfig `protobuf_oneof:"provider_config"` // Optional. If specified, Envoy will include the environment variables with the given tag as tracing tags. EnvironmentVariablesForTags []*TracingTagEnvironmentVariable `protobuf:"bytes,6,rep,name=environment_variables_for_tags,json=environmentVariablesForTags,proto3" json:"environment_variables_for_tags,omitempty"` // Optional. If specified, Envoy will include the literals with the given tag as tracing tags. LiteralsForTags []*TracingTagLiteral `protobuf:"bytes,7,rep,name=literals_for_tags,json=literalsForTags,proto3" json:"literals_for_tags,omitempty"` + // Optional. If specified, Envoy will include tags from the dynamic metadata. + MetadataForTags []*TracingTagMetadata `protobuf:"bytes,11,rep,name=metadata_for_tags,json=metadataForTags,proto3" json:"metadata_for_tags,omitempty"` + // Optional + // Create separate tracing span for each upstream request if true. And if this flag is set to true, the tracing provider will assume that Envoy + // will be independent hop in the trace chain and may set span type to client or server based on this flag. + SpawnUpstreamSpan bool `protobuf:"varint,10,opt,name=spawn_upstream_span,json=spawnUpstreamSpan,proto3" json:"spawn_upstream_span,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListenerTracingSettings) Reset() { *x = ListenerTracingSettings{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListenerTracingSettings) String() string { @@ -76,7 +126,7 @@ func (*ListenerTracingSettings) ProtoMessage() {} func (x *ListenerTracingSettings) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -91,18 +141,18 @@ func (*ListenerTracingSettings) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDescGZIP(), []int{0} } -func (x *ListenerTracingSettings) GetRequestHeadersForTags() []string { +func (x *ListenerTracingSettings) GetRequestHeadersForTags() []*wrapperspb.StringValue { if x != nil { return x.RequestHeadersForTags } return nil } -func (x *ListenerTracingSettings) GetVerbose() bool { +func (x *ListenerTracingSettings) GetVerbose() *wrapperspb.BoolValue { if x != nil { return x.Verbose } - return false + return nil } func (x *ListenerTracingSettings) GetTracePercentages() *TracePercentages { @@ -112,23 +162,45 @@ func (x *ListenerTracingSettings) GetTracePercentages() *TracePercentages { return nil } -func (m *ListenerTracingSettings) GetProviderConfig() isListenerTracingSettings_ProviderConfig { - if m != nil { - return m.ProviderConfig +func (x *ListenerTracingSettings) GetProviderConfig() isListenerTracingSettings_ProviderConfig { + if x != nil { + return x.ProviderConfig } return nil } func (x *ListenerTracingSettings) GetZipkinConfig() *v3.ZipkinConfig { - if x, ok := x.GetProviderConfig().(*ListenerTracingSettings_ZipkinConfig); ok { - return x.ZipkinConfig + if x != nil { + if x, ok := x.ProviderConfig.(*ListenerTracingSettings_ZipkinConfig); ok { + return x.ZipkinConfig + } } return nil } func (x *ListenerTracingSettings) GetDatadogConfig() *v3.DatadogConfig { - if x, ok := x.GetProviderConfig().(*ListenerTracingSettings_DatadogConfig); ok { - return x.DatadogConfig + if x != nil { + if x, ok := x.ProviderConfig.(*ListenerTracingSettings_DatadogConfig); ok { + return x.DatadogConfig + } + } + return nil +} + +func (x *ListenerTracingSettings) GetOpenTelemetryConfig() *v3.OpenTelemetryConfig { + if x != nil { + if x, ok := x.ProviderConfig.(*ListenerTracingSettings_OpenTelemetryConfig); ok { + return x.OpenTelemetryConfig + } + } + return nil +} + +func (x *ListenerTracingSettings) GetOpenCensusConfig() *v3.OpenCensusConfig { + if x != nil { + if x, ok := x.ProviderConfig.(*ListenerTracingSettings_OpenCensusConfig); ok { + return x.OpenCensusConfig + } } return nil } @@ -147,6 +219,20 @@ func (x *ListenerTracingSettings) GetLiteralsForTags() []*TracingTagLiteral { return nil } +func (x *ListenerTracingSettings) GetMetadataForTags() []*TracingTagMetadata { + if x != nil { + return x.MetadataForTags + } + return nil +} + +func (x *ListenerTracingSettings) GetSpawnUpstreamSpan() bool { + if x != nil { + return x.SpawnUpstreamSpan + } + return false +} + type isListenerTracingSettings_ProviderConfig interface { isListenerTracingSettings_ProviderConfig() } @@ -159,19 +245,28 @@ type ListenerTracingSettings_DatadogConfig struct { DatadogConfig *v3.DatadogConfig `protobuf:"bytes,5,opt,name=datadog_config,json=datadogConfig,proto3,oneof"` } +type ListenerTracingSettings_OpenTelemetryConfig struct { + OpenTelemetryConfig *v3.OpenTelemetryConfig `protobuf:"bytes,8,opt,name=open_telemetry_config,json=openTelemetryConfig,proto3,oneof"` +} + +type ListenerTracingSettings_OpenCensusConfig struct { + OpenCensusConfig *v3.OpenCensusConfig `protobuf:"bytes,9,opt,name=open_census_config,json=openCensusConfig,proto3,oneof"` +} + func (*ListenerTracingSettings_ZipkinConfig) isListenerTracingSettings_ProviderConfig() {} func (*ListenerTracingSettings_DatadogConfig) isListenerTracingSettings_ProviderConfig() {} +func (*ListenerTracingSettings_OpenTelemetryConfig) isListenerTracingSettings_ProviderConfig() {} + +func (*ListenerTracingSettings_OpenCensusConfig) isListenerTracingSettings_ProviderConfig() {} + // Contains settings for configuring Envoy's tracing capabilities at the route level. // Note: must also specify ListenerTracingSettings for the associated listener. -// See here for additional information on Envoy's tracing capabilities: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/observability/tracing.html -// See here for additional information about configuring tracing with Gloo: https://gloo.solo.io/user_guides/setup_options/observability/#tracing +// See [here](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/observability/tracing.html) for additional information on Envoy's tracing capabilities. +// See [here](https://docs.solo.io/gloo-edge/latest/guides/observability/tracing/) for additional information about configuring tracing with Gloo Edge. type RouteTracingSettings struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Optional. If set, will be used to identify the route that produced the trace. // Note that this value will be overridden if the "x-envoy-decorator-operation" header is passed. RouteDescriptor string `protobuf:"bytes,1,opt,name=route_descriptor,json=routeDescriptor,proto3" json:"route_descriptor,omitempty"` @@ -179,16 +274,16 @@ type RouteTracingSettings struct { // TracePercentages defines the limits for random, forced, and overall tracing percentages. TracePercentages *TracePercentages `protobuf:"bytes,2,opt,name=trace_percentages,json=tracePercentages,proto3" json:"trace_percentages,omitempty"` // Optional. Default is true, If set to false, the tracing headers will not propagate to the upstream. - Propagate *wrappers.BoolValue `protobuf:"bytes,3,opt,name=propagate,proto3" json:"propagate,omitempty"` + Propagate *wrapperspb.BoolValue `protobuf:"bytes,3,opt,name=propagate,proto3" json:"propagate,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteTracingSettings) Reset() { *x = RouteTracingSettings{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteTracingSettings) String() string { @@ -199,7 +294,7 @@ func (*RouteTracingSettings) ProtoMessage() {} func (x *RouteTracingSettings) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -228,7 +323,7 @@ func (x *RouteTracingSettings) GetTracePercentages() *TracePercentages { return nil } -func (x *RouteTracingSettings) GetPropagate() *wrappers.BoolValue { +func (x *RouteTracingSettings) GetPropagate() *wrapperspb.BoolValue { if x != nil { return x.Propagate } @@ -238,31 +333,28 @@ func (x *RouteTracingSettings) GetPropagate() *wrappers.BoolValue { // Requests can produce traces by random sampling or when the `x-client-trace-id` header is provided. // TracePercentages defines the limits for random, forced, and overall tracing percentages. type TracePercentages struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Percentage of requests that should produce traces when the `x-client-trace-id` header is provided. // optional, defaults to 100.0 // This should be a value between 0.0 and 100.0, with up to 6 significant digits. - ClientSamplePercentage *wrappers.FloatValue `protobuf:"bytes,1,opt,name=client_sample_percentage,json=clientSamplePercentage,proto3" json:"client_sample_percentage,omitempty"` + ClientSamplePercentage *wrapperspb.FloatValue `protobuf:"bytes,1,opt,name=client_sample_percentage,json=clientSamplePercentage,proto3" json:"client_sample_percentage,omitempty"` // Percentage of requests that should produce traces by random sampling. // optional, defaults to 100.0 // This should be a value between 0.0 and 100.0, with up to 6 significant digits. - RandomSamplePercentage *wrappers.FloatValue `protobuf:"bytes,2,opt,name=random_sample_percentage,json=randomSamplePercentage,proto3" json:"random_sample_percentage,omitempty"` + RandomSamplePercentage *wrapperspb.FloatValue `protobuf:"bytes,2,opt,name=random_sample_percentage,json=randomSamplePercentage,proto3" json:"random_sample_percentage,omitempty"` // Overall percentage of requests that should produce traces. // optional, defaults to 100.0 // This should be a value between 0.0 and 100.0, with up to 6 significant digits. - OverallSamplePercentage *wrappers.FloatValue `protobuf:"bytes,3,opt,name=overall_sample_percentage,json=overallSamplePercentage,proto3" json:"overall_sample_percentage,omitempty"` + OverallSamplePercentage *wrapperspb.FloatValue `protobuf:"bytes,3,opt,name=overall_sample_percentage,json=overallSamplePercentage,proto3" json:"overall_sample_percentage,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TracePercentages) Reset() { *x = TracePercentages{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TracePercentages) String() string { @@ -273,7 +365,7 @@ func (*TracePercentages) ProtoMessage() {} func (x *TracePercentages) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -288,21 +380,21 @@ func (*TracePercentages) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDescGZIP(), []int{2} } -func (x *TracePercentages) GetClientSamplePercentage() *wrappers.FloatValue { +func (x *TracePercentages) GetClientSamplePercentage() *wrapperspb.FloatValue { if x != nil { return x.ClientSamplePercentage } return nil } -func (x *TracePercentages) GetRandomSamplePercentage() *wrappers.FloatValue { +func (x *TracePercentages) GetRandomSamplePercentage() *wrapperspb.FloatValue { if x != nil { return x.RandomSamplePercentage } return nil } -func (x *TracePercentages) GetOverallSamplePercentage() *wrappers.FloatValue { +func (x *TracePercentages) GetOverallSamplePercentage() *wrapperspb.FloatValue { if x != nil { return x.OverallSamplePercentage } @@ -312,26 +404,23 @@ func (x *TracePercentages) GetOverallSamplePercentage() *wrappers.FloatValue { // Requests can produce traces with custom tags. // TracingTagEnvironmentVariable defines an environment variable which gets added as custom tag. type TracingTagEnvironmentVariable struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Used to populate the tag name. - Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` + Tag *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` // Environment variable name to obtain the value to populate the tag value. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Name *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // When the environment variable is not found, the tag value will be populated with this default value if specified, // otherwise no tag will be populated. - DefaultValue string `protobuf:"bytes,3,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` + DefaultValue *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TracingTagEnvironmentVariable) Reset() { *x = TracingTagEnvironmentVariable{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TracingTagEnvironmentVariable) String() string { @@ -342,7 +431,7 @@ func (*TracingTagEnvironmentVariable) ProtoMessage() {} func (x *TracingTagEnvironmentVariable) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -357,47 +446,44 @@ func (*TracingTagEnvironmentVariable) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDescGZIP(), []int{3} } -func (x *TracingTagEnvironmentVariable) GetTag() string { +func (x *TracingTagEnvironmentVariable) GetTag() *wrapperspb.StringValue { if x != nil { return x.Tag } - return "" + return nil } -func (x *TracingTagEnvironmentVariable) GetName() string { +func (x *TracingTagEnvironmentVariable) GetName() *wrapperspb.StringValue { if x != nil { return x.Name } - return "" + return nil } -func (x *TracingTagEnvironmentVariable) GetDefaultValue() string { +func (x *TracingTagEnvironmentVariable) GetDefaultValue() *wrapperspb.StringValue { if x != nil { return x.DefaultValue } - return "" + return nil } // Requests can produce traces with custom tags. // TracingTagLiteral defines a literal which gets added as custom tag. type TracingTagLiteral struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Used to populate the tag name. - Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` + Tag *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` // Static literal value to populate the tag value. - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + Value *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TracingTagLiteral) Reset() { *x = TracingTagLiteral{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TracingTagLiteral) String() string { @@ -408,7 +494,7 @@ func (*TracingTagLiteral) ProtoMessage() {} func (x *TracingTagLiteral) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -423,23 +509,165 @@ func (*TracingTagLiteral) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDescGZIP(), []int{4} } -func (x *TracingTagLiteral) GetTag() string { +func (x *TracingTagLiteral) GetTag() *wrapperspb.StringValue { + if x != nil { + return x.Tag + } + return nil +} + +func (x *TracingTagLiteral) GetValue() *wrapperspb.StringValue { + if x != nil { + return x.Value + } + return nil +} + +// Requests can produce traces with custom tags. +// TracingTagMetadata defines a dynamic metadata tag which gets added as custom tag. +type TracingTagMetadata struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Used to populate the tag name. + Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` + // The kind of metadata to extract the value from + Kind TracingTagMetadata_Kind `protobuf:"varint,2,opt,name=kind,proto3,enum=tracing.options.gloo.solo.io.TracingTagMetadata_Kind" json:"kind,omitempty"` + // The metadata value to extract the tag value from. + Value *TracingTagMetadata_MetadataValue `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` + // When no valid metadata is found, the tag value would be populated with this default value if specified, otherwise no tag would be populated. + DefaultValue string `protobuf:"bytes,4,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TracingTagMetadata) Reset() { + *x = TracingTagMetadata{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TracingTagMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TracingTagMetadata) ProtoMessage() {} + +func (x *TracingTagMetadata) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TracingTagMetadata.ProtoReflect.Descriptor instead. +func (*TracingTagMetadata) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDescGZIP(), []int{5} +} + +func (x *TracingTagMetadata) GetTag() string { if x != nil { return x.Tag } return "" } -func (x *TracingTagLiteral) GetValue() string { +func (x *TracingTagMetadata) GetKind() TracingTagMetadata_Kind { + if x != nil { + return x.Kind + } + return TracingTagMetadata_REQUEST +} + +func (x *TracingTagMetadata) GetValue() *TracingTagMetadata_MetadataValue { if x != nil { return x.Value } + return nil +} + +func (x *TracingTagMetadata) GetDefaultValue() string { + if x != nil { + return x.DefaultValue + } + return "" +} + +type TracingTagMetadata_MetadataValue struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The namespace to extract the value from the metadata. + // If empty will default to JWT principal namespace. + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + // The key to extract the value from the metadata. + // For example, `principal.iss` or `principal.sub` to extract those claims from the JWT ns + Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` + // The delimiter to use when specifying nested fields. + // Default is `.`. + // This is commonly set to `.`, allowing for nested fields names of the form + // `parent.child.grandchild` + NestedFieldDelimiter string `protobuf:"bytes,3,opt,name=nested_field_delimiter,json=nestedFieldDelimiter,proto3" json:"nested_field_delimiter,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TracingTagMetadata_MetadataValue) Reset() { + *x = TracingTagMetadata_MetadataValue{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TracingTagMetadata_MetadataValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TracingTagMetadata_MetadataValue) ProtoMessage() {} + +func (x *TracingTagMetadata_MetadataValue) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TracingTagMetadata_MetadataValue.ProtoReflect.Descriptor instead. +func (*TracingTagMetadata_MetadataValue) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDescGZIP(), []int{5, 0} +} + +func (x *TracingTagMetadata_MetadataValue) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +func (x *TracingTagMetadata_MetadataValue) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *TracingTagMetadata_MetadataValue) GetNestedFieldDelimiter() string { + if x != nil { + return x.NestedFieldDelimiter + } return "" } var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDesc = string([]byte{ 0x0a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -457,38 +685,66 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_p 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x64, - 0x61, 0x74, 0x61, 0x64, 0x6f, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, - 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, - 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x67, 0x69, 0x74, + 0x61, 0x74, 0x61, 0x64, 0x6f, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x5d, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x74, + 0x72, 0x61, 0x63, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x6c, 0x65, + 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x5a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x72, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe7, 0x04, 0x0a, 0x17, 0x4c, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x37, 0x0a, 0x18, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x74, 0x61, 0x67, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x46, 0x6f, 0x72, 0x54, 0x61, 0x67, 0x73, 0x12, 0x18, - 0x0a, 0x07, 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x63, - 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, - 0x67, 0x65, 0x73, 0x52, 0x10, 0x74, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, - 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x0d, 0x7a, 0x69, 0x70, 0x6b, 0x69, 0x6e, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x5a, 0x69, 0x70, - 0x6b, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0c, 0x7a, 0x69, 0x70, - 0x6b, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x55, 0x0a, 0x0e, 0x64, 0x61, 0x74, - 0x61, 0x64, 0x6f, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x74, 0x72, + 0x61, 0x63, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x73, 0x75, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfa, 0x07, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, + 0x72, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x12, 0x55, 0x0a, 0x18, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x46, 0x6f, 0x72, 0x54, 0x61, 0x67, 0x73, 0x12, 0x34, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x62, 0x6f, + 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x12, 0x5b, 0x0a, + 0x11, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x69, + 0x6e, 0x67, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, + 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x10, 0x74, 0x72, 0x61, 0x63, 0x65, 0x50, + 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x0d, 0x7a, 0x69, + 0x70, 0x6b, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x76, - 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x64, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, - 0x00, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x64, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x33, 0x2e, 0x5a, 0x69, 0x70, 0x6b, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, + 0x52, 0x0c, 0x7a, 0x69, 0x70, 0x6b, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x55, + 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x64, 0x6f, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, + 0x61, 0x63, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x64, 0x6f, 0x67, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x64, 0x6f, 0x67, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x68, 0x0a, 0x15, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x74, 0x65, + 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, + 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, + 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x13, 0x6f, 0x70, 0x65, 0x6e, + 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x5f, 0x0a, 0x12, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x63, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x43, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x10, + 0x6f, 0x70, 0x65, 0x6e, 0x43, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x80, 0x01, 0x0a, 0x1e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x74, 0x72, 0x61, 0x63, @@ -503,97 +759,159 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_p 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x0f, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x46, 0x6f, 0x72, 0x54, 0x61, 0x67, 0x73, - 0x42, 0x11, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x22, 0xd8, 0x01, 0x0a, 0x14, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, - 0x63, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x29, 0x0a, 0x10, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x5b, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x63, 0x65, - 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, - 0x65, 0x73, 0x52, 0x10, 0x74, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, - 0x61, 0x67, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x22, 0x99, - 0x02, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, - 0x67, 0x65, 0x73, 0x12, 0x55, 0x0a, 0x18, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x61, - 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x16, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x55, 0x0a, 0x18, 0x72, 0x61, - 0x6e, 0x64, 0x6f, 0x6d, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, - 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, - 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x16, 0x72, 0x61, 0x6e, 0x64, 0x6f, - 0x6d, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, - 0x65, 0x12, 0x57, 0x0a, 0x19, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x17, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x22, 0x6a, 0x0a, 0x1d, 0x54, 0x72, - 0x61, 0x63, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x67, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, - 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, - 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, - 0x67, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x74, - 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x42, 0x4e, 0x5a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, - 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0xb8, 0xf5, 0x04, 0x01, 0xc0, - 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x12, 0x5c, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x66, 0x6f, 0x72, + 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x72, + 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x69, + 0x6e, 0x67, 0x54, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0f, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x54, 0x61, 0x67, 0x73, 0x12, 0x2e, + 0x0a, 0x13, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x5f, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x70, 0x61, + 0x77, 0x6e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x61, 0x6e, 0x42, 0x11, + 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x22, 0xd8, 0x01, 0x0a, 0x14, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, + 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x5b, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, + 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2e, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x54, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x73, + 0x52, 0x10, 0x74, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, + 0x65, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x22, 0x99, 0x02, 0x0a, + 0x10, 0x54, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, + 0x73, 0x12, 0x55, 0x0a, 0x18, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x16, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x65, + 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x55, 0x0a, 0x18, 0x72, 0x61, 0x6e, 0x64, + 0x6f, 0x6d, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, + 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x16, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x53, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, + 0x57, 0x0a, 0x19, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x17, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x65, + 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x22, 0xc4, 0x01, 0x0a, 0x1d, 0x54, 0x72, 0x61, + 0x63, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x67, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x03, 0x74, 0x61, + 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x0d, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0x77, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x74, + 0x65, 0x72, 0x61, 0x6c, 0x12, 0x2e, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x03, 0x74, 0x61, 0x67, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x86, 0x03, 0x0a, 0x12, 0x54, 0x72, 0x61, + 0x63, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, + 0x67, 0x12, 0x49, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x35, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, + 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x54, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x74, 0x72, + 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x69, + 0x6e, 0x67, 0x54, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x75, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x34, 0x0a, 0x16, 0x6e, 0x65, 0x73, 0x74, + 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x22, 0x21, + 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, + 0x54, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x10, + 0x01, 0x42, 0x52, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, + 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, + 0x61, 0x63, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes = make([]protoimpl.MessageInfo, 5) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_goTypes = []interface{}{ - (*ListenerTracingSettings)(nil), // 0: tracing.options.gloo.solo.io.ListenerTracingSettings - (*RouteTracingSettings)(nil), // 1: tracing.options.gloo.solo.io.RouteTracingSettings - (*TracePercentages)(nil), // 2: tracing.options.gloo.solo.io.TracePercentages - (*TracingTagEnvironmentVariable)(nil), // 3: tracing.options.gloo.solo.io.TracingTagEnvironmentVariable - (*TracingTagLiteral)(nil), // 4: tracing.options.gloo.solo.io.TracingTagLiteral - (*v3.ZipkinConfig)(nil), // 5: solo.io.envoy.config.trace.v3.ZipkinConfig - (*v3.DatadogConfig)(nil), // 6: solo.io.envoy.config.trace.v3.DatadogConfig - (*wrappers.BoolValue)(nil), // 7: google.protobuf.BoolValue - (*wrappers.FloatValue)(nil), // 8: google.protobuf.FloatValue +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_goTypes = []any{ + (TracingTagMetadata_Kind)(0), // 0: tracing.options.gloo.solo.io.TracingTagMetadata.Kind + (*ListenerTracingSettings)(nil), // 1: tracing.options.gloo.solo.io.ListenerTracingSettings + (*RouteTracingSettings)(nil), // 2: tracing.options.gloo.solo.io.RouteTracingSettings + (*TracePercentages)(nil), // 3: tracing.options.gloo.solo.io.TracePercentages + (*TracingTagEnvironmentVariable)(nil), // 4: tracing.options.gloo.solo.io.TracingTagEnvironmentVariable + (*TracingTagLiteral)(nil), // 5: tracing.options.gloo.solo.io.TracingTagLiteral + (*TracingTagMetadata)(nil), // 6: tracing.options.gloo.solo.io.TracingTagMetadata + (*TracingTagMetadata_MetadataValue)(nil), // 7: tracing.options.gloo.solo.io.TracingTagMetadata.MetadataValue + (*wrapperspb.StringValue)(nil), // 8: google.protobuf.StringValue + (*wrapperspb.BoolValue)(nil), // 9: google.protobuf.BoolValue + (*v3.ZipkinConfig)(nil), // 10: solo.io.envoy.config.trace.v3.ZipkinConfig + (*v3.DatadogConfig)(nil), // 11: solo.io.envoy.config.trace.v3.DatadogConfig + (*v3.OpenTelemetryConfig)(nil), // 12: solo.io.envoy.config.trace.v3.OpenTelemetryConfig + (*v3.OpenCensusConfig)(nil), // 13: solo.io.envoy.config.trace.v3.OpenCensusConfig + (*wrapperspb.FloatValue)(nil), // 14: google.protobuf.FloatValue } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_depIdxs = []int32{ - 2, // 0: tracing.options.gloo.solo.io.ListenerTracingSettings.trace_percentages:type_name -> tracing.options.gloo.solo.io.TracePercentages - 5, // 1: tracing.options.gloo.solo.io.ListenerTracingSettings.zipkin_config:type_name -> solo.io.envoy.config.trace.v3.ZipkinConfig - 6, // 2: tracing.options.gloo.solo.io.ListenerTracingSettings.datadog_config:type_name -> solo.io.envoy.config.trace.v3.DatadogConfig - 3, // 3: tracing.options.gloo.solo.io.ListenerTracingSettings.environment_variables_for_tags:type_name -> tracing.options.gloo.solo.io.TracingTagEnvironmentVariable - 4, // 4: tracing.options.gloo.solo.io.ListenerTracingSettings.literals_for_tags:type_name -> tracing.options.gloo.solo.io.TracingTagLiteral - 2, // 5: tracing.options.gloo.solo.io.RouteTracingSettings.trace_percentages:type_name -> tracing.options.gloo.solo.io.TracePercentages - 7, // 6: tracing.options.gloo.solo.io.RouteTracingSettings.propagate:type_name -> google.protobuf.BoolValue - 8, // 7: tracing.options.gloo.solo.io.TracePercentages.client_sample_percentage:type_name -> google.protobuf.FloatValue - 8, // 8: tracing.options.gloo.solo.io.TracePercentages.random_sample_percentage:type_name -> google.protobuf.FloatValue - 8, // 9: tracing.options.gloo.solo.io.TracePercentages.overall_sample_percentage:type_name -> google.protobuf.FloatValue - 10, // [10:10] is the sub-list for method output_type - 10, // [10:10] is the sub-list for method input_type - 10, // [10:10] is the sub-list for extension type_name - 10, // [10:10] is the sub-list for extension extendee - 0, // [0:10] is the sub-list for field type_name + 8, // 0: tracing.options.gloo.solo.io.ListenerTracingSettings.request_headers_for_tags:type_name -> google.protobuf.StringValue + 9, // 1: tracing.options.gloo.solo.io.ListenerTracingSettings.verbose:type_name -> google.protobuf.BoolValue + 3, // 2: tracing.options.gloo.solo.io.ListenerTracingSettings.trace_percentages:type_name -> tracing.options.gloo.solo.io.TracePercentages + 10, // 3: tracing.options.gloo.solo.io.ListenerTracingSettings.zipkin_config:type_name -> solo.io.envoy.config.trace.v3.ZipkinConfig + 11, // 4: tracing.options.gloo.solo.io.ListenerTracingSettings.datadog_config:type_name -> solo.io.envoy.config.trace.v3.DatadogConfig + 12, // 5: tracing.options.gloo.solo.io.ListenerTracingSettings.open_telemetry_config:type_name -> solo.io.envoy.config.trace.v3.OpenTelemetryConfig + 13, // 6: tracing.options.gloo.solo.io.ListenerTracingSettings.open_census_config:type_name -> solo.io.envoy.config.trace.v3.OpenCensusConfig + 4, // 7: tracing.options.gloo.solo.io.ListenerTracingSettings.environment_variables_for_tags:type_name -> tracing.options.gloo.solo.io.TracingTagEnvironmentVariable + 5, // 8: tracing.options.gloo.solo.io.ListenerTracingSettings.literals_for_tags:type_name -> tracing.options.gloo.solo.io.TracingTagLiteral + 6, // 9: tracing.options.gloo.solo.io.ListenerTracingSettings.metadata_for_tags:type_name -> tracing.options.gloo.solo.io.TracingTagMetadata + 3, // 10: tracing.options.gloo.solo.io.RouteTracingSettings.trace_percentages:type_name -> tracing.options.gloo.solo.io.TracePercentages + 9, // 11: tracing.options.gloo.solo.io.RouteTracingSettings.propagate:type_name -> google.protobuf.BoolValue + 14, // 12: tracing.options.gloo.solo.io.TracePercentages.client_sample_percentage:type_name -> google.protobuf.FloatValue + 14, // 13: tracing.options.gloo.solo.io.TracePercentages.random_sample_percentage:type_name -> google.protobuf.FloatValue + 14, // 14: tracing.options.gloo.solo.io.TracePercentages.overall_sample_percentage:type_name -> google.protobuf.FloatValue + 8, // 15: tracing.options.gloo.solo.io.TracingTagEnvironmentVariable.tag:type_name -> google.protobuf.StringValue + 8, // 16: tracing.options.gloo.solo.io.TracingTagEnvironmentVariable.name:type_name -> google.protobuf.StringValue + 8, // 17: tracing.options.gloo.solo.io.TracingTagEnvironmentVariable.default_value:type_name -> google.protobuf.StringValue + 8, // 18: tracing.options.gloo.solo.io.TracingTagLiteral.tag:type_name -> google.protobuf.StringValue + 8, // 19: tracing.options.gloo.solo.io.TracingTagLiteral.value:type_name -> google.protobuf.StringValue + 0, // 20: tracing.options.gloo.solo.io.TracingTagMetadata.kind:type_name -> tracing.options.gloo.solo.io.TracingTagMetadata.Kind + 7, // 21: tracing.options.gloo.solo.io.TracingTagMetadata.value:type_name -> tracing.options.gloo.solo.io.TracingTagMetadata.MetadataValue + 22, // [22:22] is the sub-list for method output_type + 22, // [22:22] is the sub-list for method input_type + 22, // [22:22] is the sub-list for extension type_name + 22, // [22:22] is the sub-list for extension extendee + 0, // [0:22] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_init() } @@ -601,88 +919,28 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_ if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListenerTracingSettings); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteTracingSettings); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TracePercentages); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TracingTagEnvironmentVariable); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TracingTagLiteral); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes[0].OneofWrappers = []any{ (*ListenerTracingSettings_ZipkinConfig)(nil), (*ListenerTracingSettings_DatadogConfig)(nil), + (*ListenerTracingSettings_OpenTelemetryConfig)(nil), + (*ListenerTracingSettings_OpenCensusConfig)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDesc, - NumEnums: 0, - NumMessages: 5, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDesc)), + NumEnums: 1, + NumMessages: 7, NumExtensions: 0, NumServices: 0, }, GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_goTypes, DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_enumTypes, MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_tracing_tracing_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/tracing/tracing.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/tracing/tracing.pb.hash.go index 2c95e3002..5683a3c9d 100644 --- a/pkg/api/gloo.solo.io/v1/options/tracing/tracing.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/tracing/tracing.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ListenerTracingSettings) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -40,26 +44,63 @@ func (m *ListenerTracingSettings) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRequestHeadersForTags() { - if _, err = hasher.Write([]byte(v)); err != nil { - return 0, err + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } } - err = binary.Write(hasher, binary.LittleEndian, m.GetVerbose()) - if err != nil { - return 0, err + if h, ok := interface{}(m.GetVerbose()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Verbose")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetVerbose(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Verbose")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } if h, ok := interface{}(m.GetTracePercentages()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TracePercentages")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTracePercentages(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTracePercentages(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TracePercentages")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -68,14 +109,20 @@ func (m *ListenerTracingSettings) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetEnvironmentVariablesForTags() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -86,14 +133,20 @@ func (m *ListenerTracingSettings) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetLiteralsForTags() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -101,19 +154,54 @@ func (m *ListenerTracingSettings) Hash(hasher hash.Hash64) (uint64, error) { } + for _, v := range m.GetMetadataForTags() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetSpawnUpstreamSpan()) + if err != nil { + return 0, err + } + switch m.ProviderConfig.(type) { case *ListenerTracingSettings_ZipkinConfig: if h, ok := interface{}(m.GetZipkinConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ZipkinConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetZipkinConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetZipkinConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ZipkinConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -122,14 +210,64 @@ func (m *ListenerTracingSettings) Hash(hasher hash.Hash64) (uint64, error) { case *ListenerTracingSettings_DatadogConfig: if h, ok := interface{}(m.GetDatadogConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DatadogConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDatadogConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DatadogConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ListenerTracingSettings_OpenTelemetryConfig: + + if h, ok := interface{}(m.GetOpenTelemetryConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OpenTelemetryConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDatadogConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOpenTelemetryConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("OpenTelemetryConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ListenerTracingSettings_OpenCensusConfig: + + if h, ok := interface{}(m.GetOpenCensusConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OpenCensusConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOpenCensusConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OpenCensusConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -141,6 +279,10 @@ func (m *ListenerTracingSettings) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RouteTracingSettings) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -158,28 +300,40 @@ func (m *RouteTracingSettings) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetTracePercentages()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TracePercentages")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTracePercentages(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTracePercentages(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TracePercentages")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetPropagate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Propagate")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPropagate(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPropagate(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Propagate")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -189,6 +343,10 @@ func (m *RouteTracingSettings) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *TracePercentages) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -202,42 +360,60 @@ func (m *TracePercentages) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetClientSamplePercentage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClientSamplePercentage")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetClientSamplePercentage(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetClientSamplePercentage(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ClientSamplePercentage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetRandomSamplePercentage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RandomSamplePercentage")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRandomSamplePercentage(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRandomSamplePercentage(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RandomSamplePercentage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetOverallSamplePercentage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OverallSamplePercentage")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOverallSamplePercentage(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOverallSamplePercentage(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("OverallSamplePercentage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -247,6 +423,10 @@ func (m *TracePercentages) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *TracingTagEnvironmentVariable) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -259,14 +439,175 @@ func (m *TracingTagEnvironmentVariable) Hash(hasher hash.Hash64) (uint64, error) return 0, err } + if h, ok := interface{}(m.GetTag()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Tag")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTag(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Tag")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetName()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetName(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDefaultValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DefaultValue")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDefaultValue(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DefaultValue")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *TracingTagLiteral) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("tracing.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tracing.TracingTagLiteral")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTag()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Tag")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTag(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Tag")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValue(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *TracingTagMetadata) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("tracing.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tracing.TracingTagMetadata")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTag())); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetName())); err != nil { + err = binary.Write(hasher, binary.LittleEndian, m.GetKind()) + if err != nil { return 0, err } + if h, ok := interface{}(m.GetValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValue(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + if _, err = hasher.Write([]byte(m.GetDefaultValue())); err != nil { return 0, err } @@ -275,7 +616,11 @@ func (m *TracingTagEnvironmentVariable) Hash(hasher hash.Hash64) (uint64, error) } // Hash function -func (m *TracingTagLiteral) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *TracingTagMetadata_MetadataValue) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -283,15 +628,19 @@ func (m *TracingTagLiteral) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("tracing.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tracing.TracingTagLiteral")); err != nil { + if _, err = hasher.Write([]byte("tracing.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tracing.TracingTagMetadata_MetadataValue")); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetTag())); err != nil { + if _, err = hasher.Write([]byte(m.GetNamespace())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetValue())); err != nil { + if _, err = hasher.Write([]byte(m.GetNestedFieldDelimiter())); err != nil { return 0, err } diff --git a/pkg/api/gloo.solo.io/v1/options/tracing/tracing.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/tracing/tracing.pb.uniquehash.go new file mode 100644 index 000000000..9e45d0f40 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/tracing/tracing.pb.uniquehash.go @@ -0,0 +1,691 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/tracing/tracing.proto + +package tracing + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ListenerTracingSettings) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("tracing.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tracing.ListenerTracingSettings")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RequestHeadersForTags")); err != nil { + return 0, err + } + for i, v := range m.GetRequestHeadersForTags() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetVerbose()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Verbose")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetVerbose(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Verbose")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTracePercentages()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TracePercentages")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTracePercentages(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TracePercentages")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("EnvironmentVariablesForTags")); err != nil { + return 0, err + } + for i, v := range m.GetEnvironmentVariablesForTags() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("LiteralsForTags")); err != nil { + return 0, err + } + for i, v := range m.GetLiteralsForTags() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("MetadataForTags")); err != nil { + return 0, err + } + for i, v := range m.GetMetadataForTags() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("SpawnUpstreamSpan")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetSpawnUpstreamSpan()) + if err != nil { + return 0, err + } + + switch m.ProviderConfig.(type) { + + case *ListenerTracingSettings_ZipkinConfig: + + if h, ok := interface{}(m.GetZipkinConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ZipkinConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetZipkinConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ZipkinConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ListenerTracingSettings_DatadogConfig: + + if h, ok := interface{}(m.GetDatadogConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DatadogConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDatadogConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DatadogConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ListenerTracingSettings_OpenTelemetryConfig: + + if h, ok := interface{}(m.GetOpenTelemetryConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OpenTelemetryConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOpenTelemetryConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OpenTelemetryConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *ListenerTracingSettings_OpenCensusConfig: + + if h, ok := interface{}(m.GetOpenCensusConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OpenCensusConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOpenCensusConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OpenCensusConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteTracingSettings) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("tracing.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tracing.RouteTracingSettings")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RouteDescriptor")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRouteDescriptor())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTracePercentages()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TracePercentages")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTracePercentages(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TracePercentages")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPropagate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Propagate")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPropagate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Propagate")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TracePercentages) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("tracing.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tracing.TracePercentages")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetClientSamplePercentage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ClientSamplePercentage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetClientSamplePercentage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ClientSamplePercentage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRandomSamplePercentage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RandomSamplePercentage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRandomSamplePercentage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RandomSamplePercentage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetOverallSamplePercentage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OverallSamplePercentage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOverallSamplePercentage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OverallSamplePercentage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TracingTagEnvironmentVariable) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("tracing.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tracing.TracingTagEnvironmentVariable")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTag()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Tag")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTag(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Tag")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetName()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetName(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDefaultValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DefaultValue")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDefaultValue(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DefaultValue")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TracingTagLiteral) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("tracing.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tracing.TracingTagLiteral")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTag()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Tag")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTag(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Tag")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValue(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TracingTagMetadata) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("tracing.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tracing.TracingTagMetadata")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Tag")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTag())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Kind")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetKind()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValue(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("DefaultValue")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDefaultValue())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TracingTagMetadata_MetadataValue) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("tracing.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tracing.TracingTagMetadata_MetadataValue")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Namespace")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetNamespace())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("NestedFieldDelimiter")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetNestedFieldDelimiter())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/transformation/parameters.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/transformation/parameters.pb.clone.go new file mode 100644 index 000000000..433b89db9 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/transformation/parameters.pb.clone.go @@ -0,0 +1,54 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/transformation/parameters.proto + +package transformation + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *Parameters) Clone() proto.Message { + var target *Parameters + if m == nil { + return target + } + target = &Parameters{} + + if m.GetHeaders() != nil { + target.Headers = make(map[string]string, len(m.GetHeaders())) + for k, v := range m.GetHeaders() { + + target.Headers[k] = v + + } + } + + if h, ok := interface{}(m.GetPath()).(clone.Cloner); ok { + target.Path = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.Path = proto.Clone(m.GetPath()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/transformation/parameters.pb.go b/pkg/api/gloo.solo.io/v1/options/transformation/parameters.pb.go index 96c252fc9..a2eb42d6b 100644 --- a/pkg/api/gloo.solo.io/v1/options/transformation/parameters.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/transformation/parameters.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/transformation/parameters.proto @@ -9,12 +9,12 @@ package transformation import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -24,41 +24,36 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Parameters struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // headers that will be used to extract data for processing output templates // Gloo will search for parameters by their name in header value strings, enclosed in single // curly braces // Example: - // extensions: - // parameters: - // headers: - // x-user-id: '{userId}' - Headers map[string]string `protobuf:"bytes,1,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // + // extensions: + // parameters: + // headers: + // x-user-id: '{userId}' + Headers map[string]string `protobuf:"bytes,1,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // part of the (or the entire) path that will be used extract data for processing output templates // Gloo will search for parameters by their name in header value strings, enclosed in single // curly braces // Example: - // extensions: - // parameters: - // path: /users/{ userId } - Path *wrappers.StringValue `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` + // + // extensions: + // parameters: + // path: /users/{ userId } + Path *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Parameters) Reset() { *x = Parameters{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Parameters) String() string { @@ -69,7 +64,7 @@ func (*Parameters) ProtoMessage() {} func (x *Parameters) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -91,7 +86,7 @@ func (x *Parameters) GetHeaders() map[string]string { return nil } -func (x *Parameters) GetPath() *wrappers.StringValue { +func (x *Parameters) GetPath() *wrapperspb.StringValue { if x != nil { return x.Path } @@ -100,7 +95,7 @@ func (x *Parameters) GetPath() *wrappers.StringValue { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_rawDesc = string([]byte{ 0x0a, 0x55, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -125,32 +120,32 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_pa 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x55, 0x5a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x59, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, + 0xf5, 0x04, 0x01, 0x5a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_goTypes = []interface{}{ - (*Parameters)(nil), // 0: transformation.options.gloo.solo.io.Parameters - nil, // 1: transformation.options.gloo.solo.io.Parameters.HeadersEntry - (*wrappers.StringValue)(nil), // 2: google.protobuf.StringValue +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_goTypes = []any{ + (*Parameters)(nil), // 0: transformation.options.gloo.solo.io.Parameters + nil, // 1: transformation.options.gloo.solo.io.Parameters.HeadersEntry + (*wrapperspb.StringValue)(nil), // 2: google.protobuf.StringValue } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_depIdxs = []int32{ 1, // 0: transformation.options.gloo.solo.io.Parameters.headers:type_name -> transformation.options.gloo.solo.io.Parameters.HeadersEntry @@ -169,25 +164,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_p if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Parameters); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_rawDesc)), NumEnums: 0, NumMessages: 2, NumExtensions: 0, @@ -198,7 +179,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_p MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_parameters_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/transformation/parameters.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/transformation/parameters.pb.hash.go index a3fd01650..e9043f6e9 100644 --- a/pkg/api/gloo.solo.io/v1/options/transformation/parameters.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/transformation/parameters.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Parameters) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -62,14 +66,20 @@ func (m *Parameters) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetPath()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPath(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPath(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/gloo.solo.io/v1/options/transformation/parameters.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/transformation/parameters.pb.uniquehash.go new file mode 100644 index 000000000..509f45fce --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/transformation/parameters.pb.uniquehash.go @@ -0,0 +1,96 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/transformation/parameters.proto + +package transformation + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Parameters) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.Parameters")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetHeaders() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetPath()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPath(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.clone.go new file mode 100644 index 000000000..9f37b54a1 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.clone.go @@ -0,0 +1,592 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/transformation/transformation.proto + +package transformation + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_transformers_xslt "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformers/xslt" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_core_matchers "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/core/matchers" + + google_golang_org_protobuf_types_known_emptypb "google.golang.org/protobuf/types/known/emptypb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *ResponseMatch) Clone() proto.Message { + var target *ResponseMatch + if m == nil { + return target + } + target = &ResponseMatch{} + + if m.GetMatchers() != nil { + target.Matchers = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_core_matchers.HeaderMatcher, len(m.GetMatchers())) + for idx, v := range m.GetMatchers() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Matchers[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_core_matchers.HeaderMatcher) + } else { + target.Matchers[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_core_matchers.HeaderMatcher) + } + + } + } + + target.ResponseCodeDetails = m.GetResponseCodeDetails() + + if h, ok := interface{}(m.GetResponseTransformation()).(clone.Cloner); ok { + target.ResponseTransformation = h.Clone().(*Transformation) + } else { + target.ResponseTransformation = proto.Clone(m.GetResponseTransformation()).(*Transformation) + } + + return target +} + +// Clone function +func (m *RequestMatch) Clone() proto.Message { + var target *RequestMatch + if m == nil { + return target + } + target = &RequestMatch{} + + if h, ok := interface{}(m.GetMatcher()).(clone.Cloner); ok { + target.Matcher = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_core_matchers.Matcher) + } else { + target.Matcher = proto.Clone(m.GetMatcher()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_core_matchers.Matcher) + } + + target.ClearRouteCache = m.GetClearRouteCache() + + if h, ok := interface{}(m.GetRequestTransformation()).(clone.Cloner); ok { + target.RequestTransformation = h.Clone().(*Transformation) + } else { + target.RequestTransformation = proto.Clone(m.GetRequestTransformation()).(*Transformation) + } + + if h, ok := interface{}(m.GetResponseTransformation()).(clone.Cloner); ok { + target.ResponseTransformation = h.Clone().(*Transformation) + } else { + target.ResponseTransformation = proto.Clone(m.GetResponseTransformation()).(*Transformation) + } + + return target +} + +// Clone function +func (m *Transformations) Clone() proto.Message { + var target *Transformations + if m == nil { + return target + } + target = &Transformations{} + + if h, ok := interface{}(m.GetRequestTransformation()).(clone.Cloner); ok { + target.RequestTransformation = h.Clone().(*Transformation) + } else { + target.RequestTransformation = proto.Clone(m.GetRequestTransformation()).(*Transformation) + } + + target.ClearRouteCache = m.GetClearRouteCache() + + if h, ok := interface{}(m.GetResponseTransformation()).(clone.Cloner); ok { + target.ResponseTransformation = h.Clone().(*Transformation) + } else { + target.ResponseTransformation = proto.Clone(m.GetResponseTransformation()).(*Transformation) + } + + return target +} + +// Clone function +func (m *RequestResponseTransformations) Clone() proto.Message { + var target *RequestResponseTransformations + if m == nil { + return target + } + target = &RequestResponseTransformations{} + + if m.GetRequestTransforms() != nil { + target.RequestTransforms = make([]*RequestMatch, len(m.GetRequestTransforms())) + for idx, v := range m.GetRequestTransforms() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.RequestTransforms[idx] = h.Clone().(*RequestMatch) + } else { + target.RequestTransforms[idx] = proto.Clone(v).(*RequestMatch) + } + + } + } + + if m.GetResponseTransforms() != nil { + target.ResponseTransforms = make([]*ResponseMatch, len(m.GetResponseTransforms())) + for idx, v := range m.GetResponseTransforms() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ResponseTransforms[idx] = h.Clone().(*ResponseMatch) + } else { + target.ResponseTransforms[idx] = proto.Clone(v).(*ResponseMatch) + } + + } + } + + return target +} + +// Clone function +func (m *TransformationStages) Clone() proto.Message { + var target *TransformationStages + if m == nil { + return target + } + target = &TransformationStages{} + + if h, ok := interface{}(m.GetEarly()).(clone.Cloner); ok { + target.Early = h.Clone().(*RequestResponseTransformations) + } else { + target.Early = proto.Clone(m.GetEarly()).(*RequestResponseTransformations) + } + + if h, ok := interface{}(m.GetRegular()).(clone.Cloner); ok { + target.Regular = h.Clone().(*RequestResponseTransformations) + } else { + target.Regular = proto.Clone(m.GetRegular()).(*RequestResponseTransformations) + } + + if h, ok := interface{}(m.GetPostRouting()).(clone.Cloner); ok { + target.PostRouting = h.Clone().(*RequestResponseTransformations) + } else { + target.PostRouting = proto.Clone(m.GetPostRouting()).(*RequestResponseTransformations) + } + + target.InheritTransformation = m.GetInheritTransformation() + + if h, ok := interface{}(m.GetLogRequestResponseInfo()).(clone.Cloner); ok { + target.LogRequestResponseInfo = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.LogRequestResponseInfo = proto.Clone(m.GetLogRequestResponseInfo()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetEscapeCharacters()).(clone.Cloner); ok { + target.EscapeCharacters = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.EscapeCharacters = proto.Clone(m.GetEscapeCharacters()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *Transformation) Clone() proto.Message { + var target *Transformation + if m == nil { + return target + } + target = &Transformation{} + + target.LogRequestResponseInfo = m.GetLogRequestResponseInfo() + + switch m.TransformationType.(type) { + + case *Transformation_TransformationTemplate: + + if h, ok := interface{}(m.GetTransformationTemplate()).(clone.Cloner); ok { + target.TransformationType = &Transformation_TransformationTemplate{ + TransformationTemplate: h.Clone().(*TransformationTemplate), + } + } else { + target.TransformationType = &Transformation_TransformationTemplate{ + TransformationTemplate: proto.Clone(m.GetTransformationTemplate()).(*TransformationTemplate), + } + } + + case *Transformation_HeaderBodyTransform: + + if h, ok := interface{}(m.GetHeaderBodyTransform()).(clone.Cloner); ok { + target.TransformationType = &Transformation_HeaderBodyTransform{ + HeaderBodyTransform: h.Clone().(*HeaderBodyTransform), + } + } else { + target.TransformationType = &Transformation_HeaderBodyTransform{ + HeaderBodyTransform: proto.Clone(m.GetHeaderBodyTransform()).(*HeaderBodyTransform), + } + } + + case *Transformation_XsltTransformation: + + if h, ok := interface{}(m.GetXsltTransformation()).(clone.Cloner); ok { + target.TransformationType = &Transformation_XsltTransformation{ + XsltTransformation: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_transformers_xslt.XsltTransformation), + } + } else { + target.TransformationType = &Transformation_XsltTransformation{ + XsltTransformation: proto.Clone(m.GetXsltTransformation()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_transformers_xslt.XsltTransformation), + } + } + + } + + return target +} + +// Clone function +func (m *Extraction) Clone() proto.Message { + var target *Extraction + if m == nil { + return target + } + target = &Extraction{} + + target.Regex = m.GetRegex() + + target.Subgroup = m.GetSubgroup() + + if h, ok := interface{}(m.GetReplacementText()).(clone.Cloner); ok { + target.ReplacementText = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.ReplacementText = proto.Clone(m.GetReplacementText()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + target.Mode = m.GetMode() + + switch m.Source.(type) { + + case *Extraction_Header: + + target.Source = &Extraction_Header{ + Header: m.GetHeader(), + } + + case *Extraction_Body: + + if h, ok := interface{}(m.GetBody()).(clone.Cloner); ok { + target.Source = &Extraction_Body{ + Body: h.Clone().(*google_golang_org_protobuf_types_known_emptypb.Empty), + } + } else { + target.Source = &Extraction_Body{ + Body: proto.Clone(m.GetBody()).(*google_golang_org_protobuf_types_known_emptypb.Empty), + } + } + + } + + return target +} + +// Clone function +func (m *TransformationTemplate) Clone() proto.Message { + var target *TransformationTemplate + if m == nil { + return target + } + target = &TransformationTemplate{} + + target.AdvancedTemplates = m.GetAdvancedTemplates() + + if m.GetExtractors() != nil { + target.Extractors = make(map[string]*Extraction, len(m.GetExtractors())) + for k, v := range m.GetExtractors() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Extractors[k] = h.Clone().(*Extraction) + } else { + target.Extractors[k] = proto.Clone(v).(*Extraction) + } + + } + } + + if m.GetHeaders() != nil { + target.Headers = make(map[string]*InjaTemplate, len(m.GetHeaders())) + for k, v := range m.GetHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Headers[k] = h.Clone().(*InjaTemplate) + } else { + target.Headers[k] = proto.Clone(v).(*InjaTemplate) + } + + } + } + + if m.GetHeadersToAppend() != nil { + target.HeadersToAppend = make([]*TransformationTemplate_HeaderToAppend, len(m.GetHeadersToAppend())) + for idx, v := range m.GetHeadersToAppend() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.HeadersToAppend[idx] = h.Clone().(*TransformationTemplate_HeaderToAppend) + } else { + target.HeadersToAppend[idx] = proto.Clone(v).(*TransformationTemplate_HeaderToAppend) + } + + } + } + + if m.GetHeadersToRemove() != nil { + target.HeadersToRemove = make([]string, len(m.GetHeadersToRemove())) + for idx, v := range m.GetHeadersToRemove() { + + target.HeadersToRemove[idx] = v + + } + } + + target.ParseBodyBehavior = m.GetParseBodyBehavior() + + target.IgnoreErrorOnParse = m.GetIgnoreErrorOnParse() + + if m.GetDynamicMetadataValues() != nil { + target.DynamicMetadataValues = make([]*TransformationTemplate_DynamicMetadataValue, len(m.GetDynamicMetadataValues())) + for idx, v := range m.GetDynamicMetadataValues() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.DynamicMetadataValues[idx] = h.Clone().(*TransformationTemplate_DynamicMetadataValue) + } else { + target.DynamicMetadataValues[idx] = proto.Clone(v).(*TransformationTemplate_DynamicMetadataValue) + } + + } + } + + if h, ok := interface{}(m.GetEscapeCharacters()).(clone.Cloner); ok { + target.EscapeCharacters = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.EscapeCharacters = proto.Clone(m.GetEscapeCharacters()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetSpanTransformer()).(clone.Cloner); ok { + target.SpanTransformer = h.Clone().(*TransformationTemplate_SpanTransformer) + } else { + target.SpanTransformer = proto.Clone(m.GetSpanTransformer()).(*TransformationTemplate_SpanTransformer) + } + + switch m.BodyTransformation.(type) { + + case *TransformationTemplate_Body: + + if h, ok := interface{}(m.GetBody()).(clone.Cloner); ok { + target.BodyTransformation = &TransformationTemplate_Body{ + Body: h.Clone().(*InjaTemplate), + } + } else { + target.BodyTransformation = &TransformationTemplate_Body{ + Body: proto.Clone(m.GetBody()).(*InjaTemplate), + } + } + + case *TransformationTemplate_Passthrough: + + if h, ok := interface{}(m.GetPassthrough()).(clone.Cloner); ok { + target.BodyTransformation = &TransformationTemplate_Passthrough{ + Passthrough: h.Clone().(*Passthrough), + } + } else { + target.BodyTransformation = &TransformationTemplate_Passthrough{ + Passthrough: proto.Clone(m.GetPassthrough()).(*Passthrough), + } + } + + case *TransformationTemplate_MergeExtractorsToBody: + + if h, ok := interface{}(m.GetMergeExtractorsToBody()).(clone.Cloner); ok { + target.BodyTransformation = &TransformationTemplate_MergeExtractorsToBody{ + MergeExtractorsToBody: h.Clone().(*MergeExtractorsToBody), + } + } else { + target.BodyTransformation = &TransformationTemplate_MergeExtractorsToBody{ + MergeExtractorsToBody: proto.Clone(m.GetMergeExtractorsToBody()).(*MergeExtractorsToBody), + } + } + + case *TransformationTemplate_MergeJsonKeys: + + if h, ok := interface{}(m.GetMergeJsonKeys()).(clone.Cloner); ok { + target.BodyTransformation = &TransformationTemplate_MergeJsonKeys{ + MergeJsonKeys: h.Clone().(*MergeJsonKeys), + } + } else { + target.BodyTransformation = &TransformationTemplate_MergeJsonKeys{ + MergeJsonKeys: proto.Clone(m.GetMergeJsonKeys()).(*MergeJsonKeys), + } + } + + } + + return target +} + +// Clone function +func (m *InjaTemplate) Clone() proto.Message { + var target *InjaTemplate + if m == nil { + return target + } + target = &InjaTemplate{} + + target.Text = m.GetText() + + return target +} + +// Clone function +func (m *Passthrough) Clone() proto.Message { + var target *Passthrough + if m == nil { + return target + } + target = &Passthrough{} + + return target +} + +// Clone function +func (m *MergeExtractorsToBody) Clone() proto.Message { + var target *MergeExtractorsToBody + if m == nil { + return target + } + target = &MergeExtractorsToBody{} + + return target +} + +// Clone function +func (m *MergeJsonKeys) Clone() proto.Message { + var target *MergeJsonKeys + if m == nil { + return target + } + target = &MergeJsonKeys{} + + if m.GetJsonKeys() != nil { + target.JsonKeys = make(map[string]*MergeJsonKeys_OverridableTemplate, len(m.GetJsonKeys())) + for k, v := range m.GetJsonKeys() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.JsonKeys[k] = h.Clone().(*MergeJsonKeys_OverridableTemplate) + } else { + target.JsonKeys[k] = proto.Clone(v).(*MergeJsonKeys_OverridableTemplate) + } + + } + } + + return target +} + +// Clone function +func (m *HeaderBodyTransform) Clone() proto.Message { + var target *HeaderBodyTransform + if m == nil { + return target + } + target = &HeaderBodyTransform{} + + target.AddRequestMetadata = m.GetAddRequestMetadata() + + return target +} + +// Clone function +func (m *TransformationTemplate_HeaderToAppend) Clone() proto.Message { + var target *TransformationTemplate_HeaderToAppend + if m == nil { + return target + } + target = &TransformationTemplate_HeaderToAppend{} + + target.Key = m.GetKey() + + if h, ok := interface{}(m.GetValue()).(clone.Cloner); ok { + target.Value = h.Clone().(*InjaTemplate) + } else { + target.Value = proto.Clone(m.GetValue()).(*InjaTemplate) + } + + return target +} + +// Clone function +func (m *TransformationTemplate_DynamicMetadataValue) Clone() proto.Message { + var target *TransformationTemplate_DynamicMetadataValue + if m == nil { + return target + } + target = &TransformationTemplate_DynamicMetadataValue{} + + target.MetadataNamespace = m.GetMetadataNamespace() + + target.Key = m.GetKey() + + if h, ok := interface{}(m.GetValue()).(clone.Cloner); ok { + target.Value = h.Clone().(*InjaTemplate) + } else { + target.Value = proto.Clone(m.GetValue()).(*InjaTemplate) + } + + target.JsonToProto = m.GetJsonToProto() + + return target +} + +// Clone function +func (m *TransformationTemplate_SpanTransformer) Clone() proto.Message { + var target *TransformationTemplate_SpanTransformer + if m == nil { + return target + } + target = &TransformationTemplate_SpanTransformer{} + + if h, ok := interface{}(m.GetName()).(clone.Cloner); ok { + target.Name = h.Clone().(*InjaTemplate) + } else { + target.Name = proto.Clone(m.GetName()).(*InjaTemplate) + } + + return target +} + +// Clone function +func (m *MergeJsonKeys_OverridableTemplate) Clone() proto.Message { + var target *MergeJsonKeys_OverridableTemplate + if m == nil { + return target + } + target = &MergeJsonKeys_OverridableTemplate{} + + if h, ok := interface{}(m.GetTmpl()).(clone.Cloner); ok { + target.Tmpl = h.Clone().(*InjaTemplate) + } else { + target.Tmpl = proto.Clone(m.GetTmpl()).(*InjaTemplate) + } + + target.OverrideEmpty = m.GetOverrideEmpty() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.equal.go index d3bb546d6..1e6206b49 100644 --- a/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.equal.go @@ -285,10 +285,40 @@ func (m *TransformationStages) Equal(that interface{}) bool { } } + if h, ok := interface{}(m.GetPostRouting()).(equality.Equalizer); ok { + if !h.Equal(target.GetPostRouting()) { + return false + } + } else { + if !proto.Equal(m.GetPostRouting(), target.GetPostRouting()) { + return false + } + } + if m.GetInheritTransformation() != target.GetInheritTransformation() { return false } + if h, ok := interface{}(m.GetLogRequestResponseInfo()).(equality.Equalizer); ok { + if !h.Equal(target.GetLogRequestResponseInfo()) { + return false + } + } else { + if !proto.Equal(m.GetLogRequestResponseInfo(), target.GetLogRequestResponseInfo()) { + return false + } + } + + if h, ok := interface{}(m.GetEscapeCharacters()).(equality.Equalizer); ok { + if !h.Equal(target.GetEscapeCharacters()) { + return false + } + } else { + if !proto.Equal(m.GetEscapeCharacters(), target.GetEscapeCharacters()) { + return false + } + } + return true } @@ -313,9 +343,16 @@ func (m *Transformation) Equal(that interface{}) bool { return false } + if m.GetLogRequestResponseInfo() != target.GetLogRequestResponseInfo() { + return false + } + switch m.TransformationType.(type) { case *Transformation_TransformationTemplate: + if _, ok := target.TransformationType.(*Transformation_TransformationTemplate); !ok { + return false + } if h, ok := interface{}(m.GetTransformationTemplate()).(equality.Equalizer); ok { if !h.Equal(target.GetTransformationTemplate()) { @@ -328,6 +365,9 @@ func (m *Transformation) Equal(that interface{}) bool { } case *Transformation_HeaderBodyTransform: + if _, ok := target.TransformationType.(*Transformation_HeaderBodyTransform); !ok { + return false + } if h, ok := interface{}(m.GetHeaderBodyTransform()).(equality.Equalizer); ok { if !h.Equal(target.GetHeaderBodyTransform()) { @@ -340,6 +380,9 @@ func (m *Transformation) Equal(that interface{}) bool { } case *Transformation_XsltTransformation: + if _, ok := target.TransformationType.(*Transformation_XsltTransformation); !ok { + return false + } if h, ok := interface{}(m.GetXsltTransformation()).(equality.Equalizer); ok { if !h.Equal(target.GetXsltTransformation()) { @@ -351,6 +394,595 @@ func (m *Transformation) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.TransformationType != target.TransformationType { + return false + } + } + + return true +} + +// Equal function +func (m *Extraction) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Extraction) + if !ok { + that2, ok := that.(Extraction) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetRegex(), target.GetRegex()) != 0 { + return false + } + + if m.GetSubgroup() != target.GetSubgroup() { + return false + } + + if h, ok := interface{}(m.GetReplacementText()).(equality.Equalizer); ok { + if !h.Equal(target.GetReplacementText()) { + return false + } + } else { + if !proto.Equal(m.GetReplacementText(), target.GetReplacementText()) { + return false + } + } + + if m.GetMode() != target.GetMode() { + return false + } + + switch m.Source.(type) { + + case *Extraction_Header: + if _, ok := target.Source.(*Extraction_Header); !ok { + return false + } + + if strings.Compare(m.GetHeader(), target.GetHeader()) != 0 { + return false + } + + case *Extraction_Body: + if _, ok := target.Source.(*Extraction_Body); !ok { + return false + } + + if h, ok := interface{}(m.GetBody()).(equality.Equalizer); ok { + if !h.Equal(target.GetBody()) { + return false + } + } else { + if !proto.Equal(m.GetBody(), target.GetBody()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.Source != target.Source { + return false + } + } + + return true +} + +// Equal function +func (m *TransformationTemplate) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*TransformationTemplate) + if !ok { + that2, ok := that.(TransformationTemplate) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetAdvancedTemplates() != target.GetAdvancedTemplates() { + return false + } + + if len(m.GetExtractors()) != len(target.GetExtractors()) { + return false + } + for k, v := range m.GetExtractors() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetExtractors()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetExtractors()[k]) { + return false + } + } + + } + + if len(m.GetHeaders()) != len(target.GetHeaders()) { + return false + } + for k, v := range m.GetHeaders() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetHeaders()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetHeaders()[k]) { + return false + } + } + + } + + if len(m.GetHeadersToAppend()) != len(target.GetHeadersToAppend()) { + return false + } + for idx, v := range m.GetHeadersToAppend() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetHeadersToAppend()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetHeadersToAppend()[idx]) { + return false + } + } + + } + + if len(m.GetHeadersToRemove()) != len(target.GetHeadersToRemove()) { + return false + } + for idx, v := range m.GetHeadersToRemove() { + + if strings.Compare(v, target.GetHeadersToRemove()[idx]) != 0 { + return false + } + + } + + if m.GetParseBodyBehavior() != target.GetParseBodyBehavior() { + return false + } + + if m.GetIgnoreErrorOnParse() != target.GetIgnoreErrorOnParse() { + return false + } + + if len(m.GetDynamicMetadataValues()) != len(target.GetDynamicMetadataValues()) { + return false + } + for idx, v := range m.GetDynamicMetadataValues() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetDynamicMetadataValues()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetDynamicMetadataValues()[idx]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetEscapeCharacters()).(equality.Equalizer); ok { + if !h.Equal(target.GetEscapeCharacters()) { + return false + } + } else { + if !proto.Equal(m.GetEscapeCharacters(), target.GetEscapeCharacters()) { + return false + } + } + + if h, ok := interface{}(m.GetSpanTransformer()).(equality.Equalizer); ok { + if !h.Equal(target.GetSpanTransformer()) { + return false + } + } else { + if !proto.Equal(m.GetSpanTransformer(), target.GetSpanTransformer()) { + return false + } + } + + switch m.BodyTransformation.(type) { + + case *TransformationTemplate_Body: + if _, ok := target.BodyTransformation.(*TransformationTemplate_Body); !ok { + return false + } + + if h, ok := interface{}(m.GetBody()).(equality.Equalizer); ok { + if !h.Equal(target.GetBody()) { + return false + } + } else { + if !proto.Equal(m.GetBody(), target.GetBody()) { + return false + } + } + + case *TransformationTemplate_Passthrough: + if _, ok := target.BodyTransformation.(*TransformationTemplate_Passthrough); !ok { + return false + } + + if h, ok := interface{}(m.GetPassthrough()).(equality.Equalizer); ok { + if !h.Equal(target.GetPassthrough()) { + return false + } + } else { + if !proto.Equal(m.GetPassthrough(), target.GetPassthrough()) { + return false + } + } + + case *TransformationTemplate_MergeExtractorsToBody: + if _, ok := target.BodyTransformation.(*TransformationTemplate_MergeExtractorsToBody); !ok { + return false + } + + if h, ok := interface{}(m.GetMergeExtractorsToBody()).(equality.Equalizer); ok { + if !h.Equal(target.GetMergeExtractorsToBody()) { + return false + } + } else { + if !proto.Equal(m.GetMergeExtractorsToBody(), target.GetMergeExtractorsToBody()) { + return false + } + } + + case *TransformationTemplate_MergeJsonKeys: + if _, ok := target.BodyTransformation.(*TransformationTemplate_MergeJsonKeys); !ok { + return false + } + + if h, ok := interface{}(m.GetMergeJsonKeys()).(equality.Equalizer); ok { + if !h.Equal(target.GetMergeJsonKeys()) { + return false + } + } else { + if !proto.Equal(m.GetMergeJsonKeys(), target.GetMergeJsonKeys()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.BodyTransformation != target.BodyTransformation { + return false + } + } + + return true +} + +// Equal function +func (m *InjaTemplate) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*InjaTemplate) + if !ok { + that2, ok := that.(InjaTemplate) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetText(), target.GetText()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *Passthrough) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Passthrough) + if !ok { + that2, ok := that.(Passthrough) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *MergeExtractorsToBody) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*MergeExtractorsToBody) + if !ok { + that2, ok := that.(MergeExtractorsToBody) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *MergeJsonKeys) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*MergeJsonKeys) + if !ok { + that2, ok := that.(MergeJsonKeys) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetJsonKeys()) != len(target.GetJsonKeys()) { + return false + } + for k, v := range m.GetJsonKeys() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetJsonKeys()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetJsonKeys()[k]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *HeaderBodyTransform) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HeaderBodyTransform) + if !ok { + that2, ok := that.(HeaderBodyTransform) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetAddRequestMetadata() != target.GetAddRequestMetadata() { + return false + } + + return true +} + +// Equal function +func (m *TransformationTemplate_HeaderToAppend) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*TransformationTemplate_HeaderToAppend) + if !ok { + that2, ok := that.(TransformationTemplate_HeaderToAppend) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetKey(), target.GetKey()) != 0 { + return false + } + + if h, ok := interface{}(m.GetValue()).(equality.Equalizer); ok { + if !h.Equal(target.GetValue()) { + return false + } + } else { + if !proto.Equal(m.GetValue(), target.GetValue()) { + return false + } + } + + return true +} + +// Equal function +func (m *TransformationTemplate_DynamicMetadataValue) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*TransformationTemplate_DynamicMetadataValue) + if !ok { + that2, ok := that.(TransformationTemplate_DynamicMetadataValue) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetMetadataNamespace(), target.GetMetadataNamespace()) != 0 { + return false + } + + if strings.Compare(m.GetKey(), target.GetKey()) != 0 { + return false + } + + if h, ok := interface{}(m.GetValue()).(equality.Equalizer); ok { + if !h.Equal(target.GetValue()) { + return false + } + } else { + if !proto.Equal(m.GetValue(), target.GetValue()) { + return false + } + } + + if m.GetJsonToProto() != target.GetJsonToProto() { + return false + } + + return true +} + +// Equal function +func (m *TransformationTemplate_SpanTransformer) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*TransformationTemplate_SpanTransformer) + if !ok { + that2, ok := that.(TransformationTemplate_SpanTransformer) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetName()).(equality.Equalizer); ok { + if !h.Equal(target.GetName()) { + return false + } + } else { + if !proto.Equal(m.GetName(), target.GetName()) { + return false + } + } + + return true +} + +// Equal function +func (m *MergeJsonKeys_OverridableTemplate) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*MergeJsonKeys_OverridableTemplate) + if !ok { + that2, ok := that.(MergeJsonKeys_OverridableTemplate) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetTmpl()).(equality.Equalizer); ok { + if !h.Equal(target.GetTmpl()) { + return false + } + } else { + if !proto.Equal(m.GetTmpl(), target.GetTmpl()) { + return false + } + } + + if m.GetOverrideEmpty() != target.GetOverrideEmpty() { + return false } return true diff --git a/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.go b/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.go index 73113f3a5..f961ae0f1 100644 --- a/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/transformation/transformation.proto @@ -9,15 +9,15 @@ package transformation import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - _ "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" - transformation "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation" xslt "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformers/xslt" matchers "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/core/matchers" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -27,15 +27,118 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 +// The mode of operation for the extraction. +type Extraction_Mode int32 -type ResponseMatch struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +const ( + // Default mode. Extract the content of a specified capturing group. In this mode, + // `subgroup` selects the n-th capturing group, which represents the value that + // you want to extract. + Extraction_EXTRACT Extraction_Mode = 0 + // Replace the content of a specified capturing group. In this mode, `subgroup` selects the + // n-th capturing group, which represents the value that you want to replace with + // the string provided in `replacement_text`. + // Note: `replacement_text` must be set for this mode. + Extraction_SINGLE_REPLACE Extraction_Mode = 1 + // Replace all regex matches with the value provided in `replacement_text`. + // Note: `replacement_text` must be set for this mode. + // Note: The configuration fails if `subgroup` is set to a non-zero value. + // Note: restrictions on the regex are different for this mode. See the regex field for more details. + Extraction_REPLACE_ALL Extraction_Mode = 2 +) + +// Enum value maps for Extraction_Mode. +var ( + Extraction_Mode_name = map[int32]string{ + 0: "EXTRACT", + 1: "SINGLE_REPLACE", + 2: "REPLACE_ALL", + } + Extraction_Mode_value = map[string]int32{ + "EXTRACT": 0, + "SINGLE_REPLACE": 1, + "REPLACE_ALL": 2, + } +) + +func (x Extraction_Mode) Enum() *Extraction_Mode { + p := new(Extraction_Mode) + *p = x + return p +} + +func (x Extraction_Mode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Extraction_Mode) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_enumTypes[0].Descriptor() +} + +func (Extraction_Mode) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_enumTypes[0] +} + +func (x Extraction_Mode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Extraction_Mode.Descriptor instead. +func (Extraction_Mode) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescGZIP(), []int{6, 0} +} + +// Determines how the body will be parsed. +type TransformationTemplate_RequestBodyParse int32 + +const ( + // Will attempt to parse the request/response body as JSON + TransformationTemplate_ParseAsJson TransformationTemplate_RequestBodyParse = 0 + // The request/response body will be treated as plain text + TransformationTemplate_DontParse TransformationTemplate_RequestBodyParse = 1 +) + +// Enum value maps for TransformationTemplate_RequestBodyParse. +var ( + TransformationTemplate_RequestBodyParse_name = map[int32]string{ + 0: "ParseAsJson", + 1: "DontParse", + } + TransformationTemplate_RequestBodyParse_value = map[string]int32{ + "ParseAsJson": 0, + "DontParse": 1, + } +) + +func (x TransformationTemplate_RequestBodyParse) Enum() *TransformationTemplate_RequestBodyParse { + p := new(TransformationTemplate_RequestBodyParse) + *p = x + return p +} + +func (x TransformationTemplate_RequestBodyParse) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TransformationTemplate_RequestBodyParse) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_enumTypes[1].Descriptor() +} + +func (TransformationTemplate_RequestBodyParse) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_enumTypes[1] +} + +func (x TransformationTemplate_RequestBodyParse) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TransformationTemplate_RequestBodyParse.Descriptor instead. +func (TransformationTemplate_RequestBodyParse) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescGZIP(), []int{7, 0} +} +type ResponseMatch struct { + state protoimpl.MessageState `protogen:"open.v1"` // Response headers to match on. Matchers []*matchers.HeaderMatcher `protobuf:"bytes,1,rep,name=matchers,proto3" json:"matchers,omitempty"` // Response code detail to match on. To see the response code details for your usecase, @@ -43,15 +146,15 @@ type ResponseMatch struct { ResponseCodeDetails string `protobuf:"bytes,2,opt,name=response_code_details,json=responseCodeDetails,proto3" json:"response_code_details,omitempty"` // Transformation to apply on the response. ResponseTransformation *Transformation `protobuf:"bytes,3,opt,name=response_transformation,json=responseTransformation,proto3" json:"response_transformation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResponseMatch) Reset() { *x = ResponseMatch{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ResponseMatch) String() string { @@ -62,7 +165,7 @@ func (*ResponseMatch) ProtoMessage() {} func (x *ResponseMatch) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -99,10 +202,7 @@ func (x *ResponseMatch) GetResponseTransformation() *Transformation { } type RequestMatch struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Matches on the request properties. Matcher *matchers.Matcher `protobuf:"bytes,1,opt,name=matcher,proto3" json:"matcher,omitempty"` // Should we clear the route cache if a transformation was matched. @@ -111,15 +211,15 @@ type RequestMatch struct { RequestTransformation *Transformation `protobuf:"bytes,3,opt,name=request_transformation,json=requestTransformation,proto3" json:"request_transformation,omitempty"` // Transformation to apply on the response. ResponseTransformation *Transformation `protobuf:"bytes,4,opt,name=response_transformation,json=responseTransformation,proto3" json:"response_transformation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RequestMatch) Reset() { *x = RequestMatch{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RequestMatch) String() string { @@ -130,7 +230,7 @@ func (*RequestMatch) ProtoMessage() {} func (x *RequestMatch) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -174,25 +274,22 @@ func (x *RequestMatch) GetResponseTransformation() *Transformation { } type Transformations struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Apply a transformation to requests. RequestTransformation *Transformation `protobuf:"bytes,1,opt,name=request_transformation,json=requestTransformation,proto3" json:"request_transformation,omitempty"` // Clear the route cache if the request transformation was applied. ClearRouteCache bool `protobuf:"varint,3,opt,name=clear_route_cache,json=clearRouteCache,proto3" json:"clear_route_cache,omitempty"` // Apply a transformation to responses. ResponseTransformation *Transformation `protobuf:"bytes,2,opt,name=response_transformation,json=responseTransformation,proto3" json:"response_transformation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Transformations) Reset() { *x = Transformations{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Transformations) String() string { @@ -203,7 +300,7 @@ func (*Transformations) ProtoMessage() {} func (x *Transformations) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -240,10 +337,7 @@ func (x *Transformations) GetResponseTransformation() *Transformation { } type RequestResponseTransformations struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Transformations to apply on the request. The first request that matches will apply. RequestTransforms []*RequestMatch `protobuf:"bytes,1,rep,name=request_transforms,json=requestTransforms,proto3" json:"request_transforms,omitempty"` // Transformations to apply on the response. This field is only consulted if there is no @@ -251,15 +345,15 @@ type RequestResponseTransformations struct { // will be executed. The first response transformation that matches will // apply. ResponseTransforms []*ResponseMatch `protobuf:"bytes,2,rep,name=response_transforms,json=responseTransforms,proto3" json:"response_transforms,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RequestResponseTransformations) Reset() { *x = RequestResponseTransformations{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RequestResponseTransformations) String() string { @@ -270,7 +364,7 @@ func (*RequestResponseTransformations) ProtoMessage() {} func (x *RequestResponseTransformations) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -300,14 +394,17 @@ func (x *RequestResponseTransformations) GetResponseTransforms() []*ResponseMatc } type TransformationStages struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Early transformations happen before most other options (Like Auth and Rate Limit). Early *RequestResponseTransformations `protobuf:"bytes,1,opt,name=early,proto3" json:"early,omitempty"` // Regular transformations happen after Auth and Rate limit decisions has been made. Regular *RequestResponseTransformations `protobuf:"bytes,2,opt,name=regular,proto3" json:"regular,omitempty"` + // Post routing transformations happen during the router filter chain. This is important for a number of reasons + // 1. Retries re-trigger this filter, which might impact performance. + // 2. It is the only point where endpoint metadata is available. + // 3. `clear_route_cache` does NOT work in this stage as the routing decision is already made. + // Enterprise only + PostRouting *RequestResponseTransformations `protobuf:"bytes,6,opt,name=post_routing,json=postRouting,proto3" json:"post_routing,omitempty"` // Inherit transformation config from parent. This has no affect on VirtualHost level transformations. // If a RouteTable or Route wants to inherit transformations from it's parent RouteTable or VirtualHost, // this should be set to true, else transformations from parents will not be inherited. @@ -316,15 +413,24 @@ type TransformationStages struct { // only one transformation will run per stage. // Defaults to false. InheritTransformation bool `protobuf:"varint,3,opt,name=inherit_transformation,json=inheritTransformation,proto3" json:"inherit_transformation,omitempty"` + // When enabled, log request/response body and headers before and after all transformations defined here are applied.\ + // This overrides the log_request_response_info field in the Transformation message. + LogRequestResponseInfo *wrapperspb.BoolValue `protobuf:"bytes,4,opt,name=log_request_response_info,json=logRequestResponseInfo,proto3" json:"log_request_response_info,omitempty"` + // Use this field to set Inja behavior when rendering strings which contain + // characters that would need to be escaped to be valid JSON. Note that this + // sets the behavior for all staged transformations configured here. This setting + // can be overridden per-transformation using the field `escape_characters` on + // the TransformationTemplate. + EscapeCharacters *wrapperspb.BoolValue `protobuf:"bytes,5,opt,name=escape_characters,json=escapeCharacters,proto3" json:"escape_characters,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TransformationStages) Reset() { *x = TransformationStages{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TransformationStages) String() string { @@ -335,7 +441,7 @@ func (*TransformationStages) ProtoMessage() {} func (x *TransformationStages) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -364,6 +470,13 @@ func (x *TransformationStages) GetRegular() *RequestResponseTransformations { return nil } +func (x *TransformationStages) GetPostRouting() *RequestResponseTransformations { + if x != nil { + return x.PostRouting + } + return nil +} + func (x *TransformationStages) GetInheritTransformation() bool { if x != nil { return x.InheritTransformation @@ -371,28 +484,42 @@ func (x *TransformationStages) GetInheritTransformation() bool { return false } +func (x *TransformationStages) GetLogRequestResponseInfo() *wrapperspb.BoolValue { + if x != nil { + return x.LogRequestResponseInfo + } + return nil +} + +func (x *TransformationStages) GetEscapeCharacters() *wrapperspb.BoolValue { + if x != nil { + return x.EscapeCharacters + } + return nil +} + // User-facing API for transformation. type Transformation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The type of transformation to apply. // - // Types that are assignable to TransformationType: + // Types that are valid to be assigned to TransformationType: + // // *Transformation_TransformationTemplate // *Transformation_HeaderBodyTransform // *Transformation_XsltTransformation TransformationType isTransformation_TransformationType `protobuf_oneof:"transformation_type"` + // When enabled, log request/response body and headers before and after this transformation is applied. + LogRequestResponseInfo bool `protobuf:"varint,4,opt,name=log_request_response_info,json=logRequestResponseInfo,proto3" json:"log_request_response_info,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Transformation) Reset() { *x = Transformation{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Transformation) String() string { @@ -403,7 +530,7 @@ func (*Transformation) ProtoMessage() {} func (x *Transformation) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -418,41 +545,54 @@ func (*Transformation) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescGZIP(), []int{5} } -func (m *Transformation) GetTransformationType() isTransformation_TransformationType { - if m != nil { - return m.TransformationType +func (x *Transformation) GetTransformationType() isTransformation_TransformationType { + if x != nil { + return x.TransformationType } return nil } -func (x *Transformation) GetTransformationTemplate() *transformation.TransformationTemplate { - if x, ok := x.GetTransformationType().(*Transformation_TransformationTemplate); ok { - return x.TransformationTemplate +func (x *Transformation) GetTransformationTemplate() *TransformationTemplate { + if x != nil { + if x, ok := x.TransformationType.(*Transformation_TransformationTemplate); ok { + return x.TransformationTemplate + } } return nil } -func (x *Transformation) GetHeaderBodyTransform() *transformation.HeaderBodyTransform { - if x, ok := x.GetTransformationType().(*Transformation_HeaderBodyTransform); ok { - return x.HeaderBodyTransform +func (x *Transformation) GetHeaderBodyTransform() *HeaderBodyTransform { + if x != nil { + if x, ok := x.TransformationType.(*Transformation_HeaderBodyTransform); ok { + return x.HeaderBodyTransform + } } return nil } func (x *Transformation) GetXsltTransformation() *xslt.XsltTransformation { - if x, ok := x.GetTransformationType().(*Transformation_XsltTransformation); ok { - return x.XsltTransformation + if x != nil { + if x, ok := x.TransformationType.(*Transformation_XsltTransformation); ok { + return x.XsltTransformation + } } return nil } +func (x *Transformation) GetLogRequestResponseInfo() bool { + if x != nil { + return x.LogRequestResponseInfo + } + return false +} + type isTransformation_TransformationType interface { isTransformation_TransformationType() } type Transformation_TransformationTemplate struct { // Apply transformation templates. - TransformationTemplate *transformation.TransformationTemplate `protobuf:"bytes,1,opt,name=transformation_template,json=transformationTemplate,proto3,oneof"` + TransformationTemplate *TransformationTemplate `protobuf:"bytes,1,opt,name=transformation_template,json=transformationTemplate,proto3,oneof"` } type Transformation_HeaderBodyTransform struct { @@ -460,7 +600,7 @@ type Transformation_HeaderBodyTransform struct { // response body. The resulting JSON body will consist of two attributes: // 'headers', containing the headers, and 'body', containing the original // body. - HeaderBodyTransform *transformation.HeaderBodyTransform `protobuf:"bytes,2,opt,name=header_body_transform,json=headerBodyTransform,proto3,oneof"` + HeaderBodyTransform *HeaderBodyTransform `protobuf:"bytes,2,opt,name=header_body_transform,json=headerBodyTransform,proto3,oneof"` } type Transformation_XsltTransformation struct { @@ -474,305 +614,1385 @@ func (*Transformation_HeaderBodyTransform) isTransformation_TransformationType() func (*Transformation_XsltTransformation) isTransformation_TransformationType() {} -var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto protoreflect.FileDescriptor - -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDesc = []byte{ - 0x0a, 0x59, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x23, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, - 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x68, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, - 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x6d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, - 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, - 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x73, 0x2f, 0x78, 0x73, 0x6c, 0x74, 0x2f, 0x78, - 0x73, 0x6c, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, - 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf8, 0x01, 0x0a, 0x0d, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x45, 0x0a, 0x08, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, - 0x72, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, - 0x6f, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x13, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x6c, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd3, 0x02, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x3d, 0x0a, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, - 0x73, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x72, 0x6f, - 0x75, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, - 0x12, 0x6a, 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x33, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6c, 0x0a, 0x17, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x16, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x97, 0x02, 0x0a, 0x0f, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x6a, - 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, - 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6c, - 0x65, 0x61, 0x72, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x52, 0x6f, 0x75, 0x74, - 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x6c, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xe7, 0x01, 0x0a, 0x1e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x60, 0x0a, 0x12, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x63, 0x0a, 0x13, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x12, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x22, 0x87, - 0x02, 0x0a, 0x14, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x59, 0x0a, 0x05, 0x65, 0x61, 0x72, 0x6c, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x65, 0x61, 0x72, - 0x6c, 0x79, 0x12, 0x5d, 0x0a, 0x07, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, - 0x72, 0x12, 0x35, 0x0a, 0x16, 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x5f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x15, 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xe2, 0x02, 0x0a, 0x0e, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6b, 0x0a, 0x17, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, - 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, - 0x52, 0x16, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x63, 0x0a, 0x15, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, - 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, - 0x74, 0x70, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x6f, 0x64, 0x79, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x48, 0x00, 0x52, 0x13, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x42, 0x6f, 0x64, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x67, 0x0a, - 0x13, 0x78, 0x73, 0x6c, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x65, 0x6e, 0x76, - 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x2e, 0x78, 0x73, 0x6c, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x58, 0x73, - 0x6c, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x48, 0x00, 0x52, 0x12, 0x78, 0x73, 0x6c, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x15, 0x0a, 0x13, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x55, 0x5a, - 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, - 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xb8, 0xf5, 0x04, 0x01, - 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +// Extractions can be used to extract information from the request/response. +// The extracted information can then be referenced in template fields. +type Extraction struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The source of the extraction + // + // Types that are valid to be assigned to Source: + // + // *Extraction_Header + // *Extraction_Body + Source isExtraction_Source `protobuf_oneof:"source"` + // The regex field specifies the regular expression used for matching against the source content. + // - In EXTRACT mode, the entire source must match the regex. `subgroup` selects the n-th capturing group, + // which determines the part of the match that you want to extract. If the regex does not match the source, + // the result of the extraction will be an empty value. + // - In SINGLE_REPLACE mode, the regex also needs to match the entire source. `subgroup` selects the n-th capturing group + // that is replaced with the content of `replacement_text`. If the regex does not match the source, the result + // of the replacement will be the source itself. + // - In REPLACE_ALL mode, the regex is applied repeatedly to find all occurrences within the source that match. + // Each matching occurrence is replaced with the value in `replacement_text`. In this mode, the configuration is rejected + // if `subgroup` is set. If the regex does not match the source, the result of the replacement will be the source itself. + Regex string `protobuf:"bytes,2,opt,name=regex,proto3" json:"regex,omitempty"` + // If your regex contains capturing groups, use this field to determine the + // group that you want to select. Defaults to 0. + // If set in `EXTRACT` and `SINGLE_REPLACE` modes, the subgroup represents the capturing + // group that you want to extract or replace in the source. + // The configuration is rejected if you set subgroup to a non-zero value when using thev `REPLACE_ALL` mode. + Subgroup uint32 `protobuf:"varint,3,opt,name=subgroup,proto3" json:"subgroup,omitempty"` + // The value `replacement_text` is used to format the substitution for matched sequences in + // in an input string. This value is only legal in `SINGLE_REPLACE` and `REPLACE_ALL` modes. + // - In `SINGLE_REPLACE` mode, the `subgroup` selects the n-th capturing group, which represents + // the value that you want to replace with the string provided in `replacement_text`. + // - In `REPLACE_ALL` mode, each sequence that matches the specified regex in the input is + // replaced with the value in`replacement_text`. + // + // The `replacement_text` can include special syntax, such as $1, $2, etc., to refer to + // + // capturing groups within the regular expression. + // + // The value that is specified in `replacement_text` is treated as a string, and is passed + // + // to `std::regex_replace` as the replacement string. + // + // For more informatino, see https://en.cppreference.com/w/cpp/regex/regex_replace. + ReplacementText *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=replacement_text,json=replacementText,proto3" json:"replacement_text,omitempty"` + // The mode of operation for the extraction. + // Defaults to EXTRACT. + Mode Extraction_Mode `protobuf:"varint,6,opt,name=mode,proto3,enum=transformation.options.gloo.solo.io.Extraction_Mode" json:"mode,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -var ( - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDesc -) - -func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescGZIP() []byte { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescData) - }) - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescData +func (x *Extraction) Reset() { + *x = Extraction{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes = make([]protoimpl.MessageInfo, 6) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_goTypes = []interface{}{ - (*ResponseMatch)(nil), // 0: transformation.options.gloo.solo.io.ResponseMatch - (*RequestMatch)(nil), // 1: transformation.options.gloo.solo.io.RequestMatch - (*Transformations)(nil), // 2: transformation.options.gloo.solo.io.Transformations - (*RequestResponseTransformations)(nil), // 3: transformation.options.gloo.solo.io.RequestResponseTransformations - (*TransformationStages)(nil), // 4: transformation.options.gloo.solo.io.TransformationStages - (*Transformation)(nil), // 5: transformation.options.gloo.solo.io.Transformation - (*matchers.HeaderMatcher)(nil), // 6: matchers.core.gloo.solo.io.HeaderMatcher - (*matchers.Matcher)(nil), // 7: matchers.core.gloo.solo.io.Matcher - (*transformation.TransformationTemplate)(nil), // 8: envoy.api.v2.filter.http.TransformationTemplate - (*transformation.HeaderBodyTransform)(nil), // 9: envoy.api.v2.filter.http.HeaderBodyTransform - (*xslt.XsltTransformation)(nil), // 10: envoy.config.transformer.xslt.v2.XsltTransformation +func (x *Extraction) String() string { + return protoimpl.X.MessageStringOf(x) } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_depIdxs = []int32{ - 6, // 0: transformation.options.gloo.solo.io.ResponseMatch.matchers:type_name -> matchers.core.gloo.solo.io.HeaderMatcher - 5, // 1: transformation.options.gloo.solo.io.ResponseMatch.response_transformation:type_name -> transformation.options.gloo.solo.io.Transformation - 7, // 2: transformation.options.gloo.solo.io.RequestMatch.matcher:type_name -> matchers.core.gloo.solo.io.Matcher - 5, // 3: transformation.options.gloo.solo.io.RequestMatch.request_transformation:type_name -> transformation.options.gloo.solo.io.Transformation - 5, // 4: transformation.options.gloo.solo.io.RequestMatch.response_transformation:type_name -> transformation.options.gloo.solo.io.Transformation - 5, // 5: transformation.options.gloo.solo.io.Transformations.request_transformation:type_name -> transformation.options.gloo.solo.io.Transformation - 5, // 6: transformation.options.gloo.solo.io.Transformations.response_transformation:type_name -> transformation.options.gloo.solo.io.Transformation - 1, // 7: transformation.options.gloo.solo.io.RequestResponseTransformations.request_transforms:type_name -> transformation.options.gloo.solo.io.RequestMatch - 0, // 8: transformation.options.gloo.solo.io.RequestResponseTransformations.response_transforms:type_name -> transformation.options.gloo.solo.io.ResponseMatch - 3, // 9: transformation.options.gloo.solo.io.TransformationStages.early:type_name -> transformation.options.gloo.solo.io.RequestResponseTransformations - 3, // 10: transformation.options.gloo.solo.io.TransformationStages.regular:type_name -> transformation.options.gloo.solo.io.RequestResponseTransformations - 8, // 11: transformation.options.gloo.solo.io.Transformation.transformation_template:type_name -> envoy.api.v2.filter.http.TransformationTemplate - 9, // 12: transformation.options.gloo.solo.io.Transformation.header_body_transform:type_name -> envoy.api.v2.filter.http.HeaderBodyTransform - 10, // 13: transformation.options.gloo.solo.io.Transformation.xslt_transformation:type_name -> envoy.config.transformer.xslt.v2.XsltTransformation - 14, // [14:14] is the sub-list for method output_type - 14, // [14:14] is the sub-list for method input_type - 14, // [14:14] is the sub-list for extension type_name - 14, // [14:14] is the sub-list for extension extendee - 0, // [0:14] is the sub-list for field type_name + +func (*Extraction) ProtoMessage() {} + +func (x *Extraction) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func init() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_init() +// Deprecated: Use Extraction.ProtoReflect.Descriptor instead. +func (*Extraction) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescGZIP(), []int{6} } -func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_init() { - if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto != nil { - return + +func (x *Extraction) GetSource() isExtraction_Source { + if x != nil { + return x.Source } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResponseMatch); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequestMatch); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Transformations); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequestResponseTransformations); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } + return nil +} + +func (x *Extraction) GetHeader() string { + if x != nil { + if x, ok := x.Source.(*Extraction_Header); ok { + return x.Header } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TransformationStages); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } + } + return "" +} + +func (x *Extraction) GetBody() *emptypb.Empty { + if x != nil { + if x, ok := x.Source.(*Extraction_Body); ok { + return x.Body } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Transformation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } + } + return nil +} + +func (x *Extraction) GetRegex() string { + if x != nil { + return x.Regex + } + return "" +} + +func (x *Extraction) GetSubgroup() uint32 { + if x != nil { + return x.Subgroup + } + return 0 +} + +func (x *Extraction) GetReplacementText() *wrapperspb.StringValue { + if x != nil { + return x.ReplacementText + } + return nil +} + +func (x *Extraction) GetMode() Extraction_Mode { + if x != nil { + return x.Mode + } + return Extraction_EXTRACT +} + +type isExtraction_Source interface { + isExtraction_Source() +} + +type Extraction_Header struct { + // Extract information from headers + Header string `protobuf:"bytes,1,opt,name=header,proto3,oneof"` +} + +type Extraction_Body struct { + // Extract information from the request/response body + Body *emptypb.Empty `protobuf:"bytes,4,opt,name=body,proto3,oneof"` +} + +func (*Extraction_Header) isExtraction_Source() {} + +func (*Extraction_Body) isExtraction_Source() {} + +// Defines a transformation template. +type TransformationTemplate struct { + state protoimpl.MessageState `protogen:"open.v1"` + // If set to true, use JSON pointer notation (e.g. "time/start") instead of + // dot notation (e.g. "time.start") to access JSON elements. Defaults to + // false. + // + // Please note that, if set to 'true', you will need to use the `extraction` + // function to access extractors in the template (e.g. '{{ + // extraction("my_extractor") }}'); if the default value of 'false' is used, + // extractors will simply be available by their name (e.g. '{{ my_extractor + // }}'). + AdvancedTemplates bool `protobuf:"varint,1,opt,name=advanced_templates,json=advancedTemplates,proto3" json:"advanced_templates,omitempty"` + // Use this attribute to extract information from the request. It consists of + // a map of strings to extractors. The extractor will defines which + // information will be extracted, while the string key will provide the + // extractor with a name. You can reference extractors by their name in + // templates, e.g. "{{ my-extractor }}" will render to the value of the + // "my-extractor" extractor. + Extractors map[string]*Extraction `protobuf:"bytes,2,rep,name=extractors,proto3" json:"extractors,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Use this attribute to transform request/response headers. It consists of a + // map of strings to templates. The string key determines the name of the + // resulting header, the rendered template will determine the value. Any existing + // headers with the same header name will be replaced by the transformed header. + // If a header name is included in `headers` and `headers_to_append`, it will first + // be replaced the template in `headers`, then additional header values will be appended + // by the templates defined in `headers_to_append`. + // For example, the following header transformation configuration: + // + // ```yaml + // + // headers: + // x-header-one: {"text": "first {{inja}} template"} + // x-header-one: {"text": "second {{inja}} template"} + // headersToAppend: + // - key: x-header-one + // value: {"text": "first appended {{inja}} template"} + // - key: x-header-one + // value: {"text": "second appended {{inja}} template"} + // + // ``` + // will result in the following headers on the HTTP message: + // + // ``` + // x-header-one: first inja template + // x-header-one: first appended inja template + // x-header-one: second appended inja template + // ``` + Headers map[string]*InjaTemplate `protobuf:"bytes,3,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Use this attribute to transform request/response headers. It consists of + // an array of string/template objects. Use this attribute to define multiple + // templates for a single header. Header template(s) defined here will be appended to any + // existing headers with the same header name, not replace existing ones. + // See `headers` documentation to see an example of usage. + HeadersToAppend []*TransformationTemplate_HeaderToAppend `protobuf:"bytes,10,rep,name=headers_to_append,json=headersToAppend,proto3" json:"headers_to_append,omitempty"` + // Attribute to remove headers from requests. If a header is present multiple + // times, all instances of the header will be removed. + HeadersToRemove []string `protobuf:"bytes,11,rep,name=headers_to_remove,json=headersToRemove,proto3" json:"headers_to_remove,omitempty"` + // Determines the type of transformation to apply to the request/response body + // + // Types that are valid to be assigned to BodyTransformation: + // + // *TransformationTemplate_Body + // *TransformationTemplate_Passthrough + // *TransformationTemplate_MergeExtractorsToBody + // *TransformationTemplate_MergeJsonKeys + BodyTransformation isTransformationTemplate_BodyTransformation `protobuf_oneof:"body_transformation"` + // Determines how the body will be parsed. Defaults to ParseAsJson + ParseBodyBehavior TransformationTemplate_RequestBodyParse `protobuf:"varint,7,opt,name=parse_body_behavior,json=parseBodyBehavior,proto3,enum=transformation.options.gloo.solo.io.TransformationTemplate_RequestBodyParse" json:"parse_body_behavior,omitempty"` + // If set to true, Envoy will not throw an exception in case the body parsing + // fails. + IgnoreErrorOnParse bool `protobuf:"varint,8,opt,name=ignore_error_on_parse,json=ignoreErrorOnParse,proto3" json:"ignore_error_on_parse,omitempty"` + // Use this field to set Dynamic Metadata. + DynamicMetadataValues []*TransformationTemplate_DynamicMetadataValue `protobuf:"bytes,9,rep,name=dynamic_metadata_values,json=dynamicMetadataValues,proto3" json:"dynamic_metadata_values,omitempty"` + // Use this field to set Inja behavior when rendering strings which contain + // characters that would need to be escaped to be valid JSON. Note that this + // sets the behavior for the entire transformation. Use raw_strings function + // for fine-grained control within a template. + EscapeCharacters *wrapperspb.BoolValue `protobuf:"bytes,12,opt,name=escape_characters,json=escapeCharacters,proto3" json:"escape_characters,omitempty"` + // Use this field to modify the span of the trace. This field can only be + // applied on requestTransformations. Attempting to set this on a + // responseTransformation will result in an error. + SpanTransformer *TransformationTemplate_SpanTransformer `protobuf:"bytes,15,opt,name=span_transformer,json=spanTransformer,proto3" json:"span_transformer,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TransformationTemplate) Reset() { + *x = TransformationTemplate{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TransformationTemplate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransformationTemplate) ProtoMessage() {} + +func (x *TransformationTemplate) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } + return ms } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[5].OneofWrappers = []interface{}{ - (*Transformation_TransformationTemplate)(nil), - (*Transformation_HeaderBodyTransform)(nil), - (*Transformation_XsltTransformation)(nil), + return mi.MessageOf(x) +} + +// Deprecated: Use TransformationTemplate.ProtoReflect.Descriptor instead. +func (*TransformationTemplate) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescGZIP(), []int{7} +} + +func (x *TransformationTemplate) GetAdvancedTemplates() bool { + if x != nil { + return x.AdvancedTemplates + } + return false +} + +func (x *TransformationTemplate) GetExtractors() map[string]*Extraction { + if x != nil { + return x.Extractors + } + return nil +} + +func (x *TransformationTemplate) GetHeaders() map[string]*InjaTemplate { + if x != nil { + return x.Headers + } + return nil +} + +func (x *TransformationTemplate) GetHeadersToAppend() []*TransformationTemplate_HeaderToAppend { + if x != nil { + return x.HeadersToAppend + } + return nil +} + +func (x *TransformationTemplate) GetHeadersToRemove() []string { + if x != nil { + return x.HeadersToRemove + } + return nil +} + +func (x *TransformationTemplate) GetBodyTransformation() isTransformationTemplate_BodyTransformation { + if x != nil { + return x.BodyTransformation + } + return nil +} + +func (x *TransformationTemplate) GetBody() *InjaTemplate { + if x != nil { + if x, ok := x.BodyTransformation.(*TransformationTemplate_Body); ok { + return x.Body + } + } + return nil +} + +func (x *TransformationTemplate) GetPassthrough() *Passthrough { + if x != nil { + if x, ok := x.BodyTransformation.(*TransformationTemplate_Passthrough); ok { + return x.Passthrough + } + } + return nil +} + +func (x *TransformationTemplate) GetMergeExtractorsToBody() *MergeExtractorsToBody { + if x != nil { + if x, ok := x.BodyTransformation.(*TransformationTemplate_MergeExtractorsToBody); ok { + return x.MergeExtractorsToBody + } + } + return nil +} + +func (x *TransformationTemplate) GetMergeJsonKeys() *MergeJsonKeys { + if x != nil { + if x, ok := x.BodyTransformation.(*TransformationTemplate_MergeJsonKeys); ok { + return x.MergeJsonKeys + } + } + return nil +} + +func (x *TransformationTemplate) GetParseBodyBehavior() TransformationTemplate_RequestBodyParse { + if x != nil { + return x.ParseBodyBehavior + } + return TransformationTemplate_ParseAsJson +} + +func (x *TransformationTemplate) GetIgnoreErrorOnParse() bool { + if x != nil { + return x.IgnoreErrorOnParse + } + return false +} + +func (x *TransformationTemplate) GetDynamicMetadataValues() []*TransformationTemplate_DynamicMetadataValue { + if x != nil { + return x.DynamicMetadataValues + } + return nil +} + +func (x *TransformationTemplate) GetEscapeCharacters() *wrapperspb.BoolValue { + if x != nil { + return x.EscapeCharacters + } + return nil +} + +func (x *TransformationTemplate) GetSpanTransformer() *TransformationTemplate_SpanTransformer { + if x != nil { + return x.SpanTransformer + } + return nil +} + +type isTransformationTemplate_BodyTransformation interface { + isTransformationTemplate_BodyTransformation() +} + +type TransformationTemplate_Body struct { + // Apply a template to the body + Body *InjaTemplate `protobuf:"bytes,4,opt,name=body,proto3,oneof"` +} + +type TransformationTemplate_Passthrough struct { + // This will cause the transformation filter not to buffer the body. + // Use this setting if the response body is large and you don't need to + // transform nor extract information from it. + Passthrough *Passthrough `protobuf:"bytes,5,opt,name=passthrough,proto3,oneof"` +} + +type TransformationTemplate_MergeExtractorsToBody struct { + // Merge all defined extractors to the request/response body. + // If you want to nest elements inside the body, use dot separator in the + // extractor name. + MergeExtractorsToBody *MergeExtractorsToBody `protobuf:"bytes,6,opt,name=merge_extractors_to_body,json=mergeExtractorsToBody,proto3,oneof"` +} + +type TransformationTemplate_MergeJsonKeys struct { + // A set of key-value pairs to merge into the JSON body. + // Each value will be rendered separately, and then placed into the JSON body at + // the specified key. + // There are a number of important caveats to using this feature: + // * This can only be used when the body is parsed as JSON. + // * This option does NOT work with advanced templates currently + MergeJsonKeys *MergeJsonKeys `protobuf:"bytes,13,opt,name=merge_json_keys,json=mergeJsonKeys,proto3,oneof"` +} + +func (*TransformationTemplate_Body) isTransformationTemplate_BodyTransformation() {} + +func (*TransformationTemplate_Passthrough) isTransformationTemplate_BodyTransformation() {} + +func (*TransformationTemplate_MergeExtractorsToBody) isTransformationTemplate_BodyTransformation() {} + +func (*TransformationTemplate_MergeJsonKeys) isTransformationTemplate_BodyTransformation() {} + +// Defines an [Inja template](https://github.com/pantor/inja) that will be +// rendered by Gloo. In addition to the core template functions, the Gloo +// transformation filter defines the following custom functions: +// - header(header_name): returns the value of the header with the given name. +// - extraction(extractor_name): returns the value of the extractor with the +// given name. +// - env(env_var_name): returns the value of the environment variable with the +// given name. +// - body(): returns the request/response body. +// - context(): returns the base JSON context (allowing for example to range on +// a JSON body that is an array). +// - request_header(header_name): returns the value of the request header with +// the given name. Use this option when you want to include request header values in response +// transformations. +// - base64_encode(string): encodes the input string to base64. +// - base64_decode(string): decodes the input string from base64. +// - substring(string, start_pos, substring_len): returns a substring of the +// input string, starting at `start_pos` and extending for `substring_len` +// characters. If no `substring_len` is provided or `substring_len` is <= 0, the +// substring extends to the end of the input string. +type InjaTemplate struct { + state protoimpl.MessageState `protogen:"open.v1"` + Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InjaTemplate) Reset() { + *x = InjaTemplate{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InjaTemplate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InjaTemplate) ProtoMessage() {} + +func (x *InjaTemplate) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InjaTemplate.ProtoReflect.Descriptor instead. +func (*InjaTemplate) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescGZIP(), []int{8} +} + +func (x *InjaTemplate) GetText() string { + if x != nil { + return x.Text + } + return "" +} + +type Passthrough struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Passthrough) Reset() { + *x = Passthrough{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Passthrough) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Passthrough) ProtoMessage() {} + +func (x *Passthrough) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Passthrough.ProtoReflect.Descriptor instead. +func (*Passthrough) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescGZIP(), []int{9} +} + +type MergeExtractorsToBody struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MergeExtractorsToBody) Reset() { + *x = MergeExtractorsToBody{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MergeExtractorsToBody) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MergeExtractorsToBody) ProtoMessage() {} + +func (x *MergeExtractorsToBody) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MergeExtractorsToBody.ProtoReflect.Descriptor instead. +func (*MergeExtractorsToBody) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescGZIP(), []int{10} +} + +type MergeJsonKeys struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Map of key name -> template to render into the JSON body. + // Specified keys which don't exist in the JSON body will be set, + // keys which do exist will be overriden. + // + // For example, given the following JSON body: + // { + // "key1": "value1" + // } + // and the following MergeJsonKeys: + // { + // "key1": "{{ header("header1") }}", + // "key2": "{{ header("header2") }}" + // } + // The resulting JSON body will be: + // { + // "key1": "header1_value", + // "key2": "header2_value" + // } + JsonKeys map[string]*MergeJsonKeys_OverridableTemplate `protobuf:"bytes,2,rep,name=json_keys,json=jsonKeys,proto3" json:"json_keys,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MergeJsonKeys) Reset() { + *x = MergeJsonKeys{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MergeJsonKeys) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MergeJsonKeys) ProtoMessage() {} + +func (x *MergeJsonKeys) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MergeJsonKeys.ProtoReflect.Descriptor instead. +func (*MergeJsonKeys) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescGZIP(), []int{11} +} + +func (x *MergeJsonKeys) GetJsonKeys() map[string]*MergeJsonKeys_OverridableTemplate { + if x != nil { + return x.JsonKeys + } + return nil +} + +type HeaderBodyTransform struct { + state protoimpl.MessageState `protogen:"open.v1"` + // When transforming a request, setting this to true will additionally add "queryString", + // "queryStringParameters", "multiValueQueryStringParameters", "httpMethod", "path", + // and "multiValueHeaders" to the body + AddRequestMetadata bool `protobuf:"varint,1,opt,name=add_request_metadata,json=addRequestMetadata,proto3" json:"add_request_metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HeaderBodyTransform) Reset() { + *x = HeaderBodyTransform{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HeaderBodyTransform) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HeaderBodyTransform) ProtoMessage() {} + +func (x *HeaderBodyTransform) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HeaderBodyTransform.ProtoReflect.Descriptor instead. +func (*HeaderBodyTransform) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescGZIP(), []int{12} +} + +func (x *HeaderBodyTransform) GetAddRequestMetadata() bool { + if x != nil { + return x.AddRequestMetadata + } + return false +} + +// Defines a header-template pair to be used in `headers_to_append` +type TransformationTemplate_HeaderToAppend struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Header name + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + // Apply a template to the header value + Value *InjaTemplate `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TransformationTemplate_HeaderToAppend) Reset() { + *x = TransformationTemplate_HeaderToAppend{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TransformationTemplate_HeaderToAppend) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransformationTemplate_HeaderToAppend) ProtoMessage() {} + +func (x *TransformationTemplate_HeaderToAppend) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransformationTemplate_HeaderToAppend.ProtoReflect.Descriptor instead. +func (*TransformationTemplate_HeaderToAppend) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescGZIP(), []int{7, 2} +} + +func (x *TransformationTemplate_HeaderToAppend) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *TransformationTemplate_HeaderToAppend) GetValue() *InjaTemplate { + if x != nil { + return x.Value + } + return nil +} + +// Defines an [Envoy Dynamic +// Metadata](https://www.envoyproxy.io/docs/envoy/latest/configuration/advanced/well_known_dynamic_metadata) +// entry. +type TransformationTemplate_DynamicMetadataValue struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The metadata namespace. Defaults to the filter namespace. + MetadataNamespace string `protobuf:"bytes,1,opt,name=metadata_namespace,json=metadataNamespace,proto3" json:"metadata_namespace,omitempty"` + // The metadata key. + Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` + // A template that determines the metadata value. + Value *InjaTemplate `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` + // Instruct the filter to parse the rendered value as a proto Struct message + // before setting it as the metadata value. + JsonToProto bool `protobuf:"varint,4,opt,name=json_to_proto,json=jsonToProto,proto3" json:"json_to_proto,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TransformationTemplate_DynamicMetadataValue) Reset() { + *x = TransformationTemplate_DynamicMetadataValue{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TransformationTemplate_DynamicMetadataValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransformationTemplate_DynamicMetadataValue) ProtoMessage() {} + +func (x *TransformationTemplate_DynamicMetadataValue) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransformationTemplate_DynamicMetadataValue.ProtoReflect.Descriptor instead. +func (*TransformationTemplate_DynamicMetadataValue) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescGZIP(), []int{7, 3} +} + +func (x *TransformationTemplate_DynamicMetadataValue) GetMetadataNamespace() string { + if x != nil { + return x.MetadataNamespace + } + return "" +} + +func (x *TransformationTemplate_DynamicMetadataValue) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *TransformationTemplate_DynamicMetadataValue) GetValue() *InjaTemplate { + if x != nil { + return x.Value + } + return nil +} + +func (x *TransformationTemplate_DynamicMetadataValue) GetJsonToProto() bool { + if x != nil { + return x.JsonToProto + } + return false +} + +// Definitions for span transformations for tracing purposes. +type TransformationTemplate_SpanTransformer struct { + state protoimpl.MessageState `protogen:"open.v1"` + // A template that sets the span name. For example, to set the span name to + // the value of the host header, you can set this value to + // `'{{header("Host")}}'` + Name *InjaTemplate `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TransformationTemplate_SpanTransformer) Reset() { + *x = TransformationTemplate_SpanTransformer{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TransformationTemplate_SpanTransformer) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransformationTemplate_SpanTransformer) ProtoMessage() {} + +func (x *TransformationTemplate_SpanTransformer) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransformationTemplate_SpanTransformer.ProtoReflect.Descriptor instead. +func (*TransformationTemplate_SpanTransformer) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescGZIP(), []int{7, 4} +} + +func (x *TransformationTemplate_SpanTransformer) GetName() *InjaTemplate { + if x != nil { + return x.Name + } + return nil +} + +type MergeJsonKeys_OverridableTemplate struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Template to render + Tmpl *InjaTemplate `protobuf:"bytes,1,opt,name=tmpl,proto3" json:"tmpl,omitempty"` + // If set to true, the template will be set even if the rendered value is empty. + OverrideEmpty bool `protobuf:"varint,2,opt,name=override_empty,json=overrideEmpty,proto3" json:"override_empty,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MergeJsonKeys_OverridableTemplate) Reset() { + *x = MergeJsonKeys_OverridableTemplate{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MergeJsonKeys_OverridableTemplate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MergeJsonKeys_OverridableTemplate) ProtoMessage() {} + +func (x *MergeJsonKeys_OverridableTemplate) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MergeJsonKeys_OverridableTemplate.ProtoReflect.Descriptor instead. +func (*MergeJsonKeys_OverridableTemplate) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescGZIP(), []int{11, 0} +} + +func (x *MergeJsonKeys_OverridableTemplate) GetTmpl() *InjaTemplate { + if x != nil { + return x.Tmpl + } + return nil +} + +func (x *MergeJsonKeys_OverridableTemplate) GetOverrideEmpty() bool { + if x != nil { + return x.OverrideEmpty + } + return false +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDesc = string([]byte{ + 0x0a, 0x59, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x23, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, + 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4a, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x72, + 0x65, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x6d, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x73, 0x2f, 0x78, 0x73, 0x6c, + 0x74, 0x2f, 0x78, 0x73, 0x6c, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf8, 0x01, 0x0a, + 0x0d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x45, + 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x29, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x08, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, + 0x64, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x6c, 0x0a, 0x17, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x16, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd3, 0x02, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x3d, 0x0a, 0x07, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x72, 0x73, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6c, 0x65, 0x61, 0x72, + 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x12, 0x6a, 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x6c, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x33, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x97, 0x02, + 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x6a, 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, + 0x11, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x6c, 0x0a, 0x17, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x16, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xe7, 0x01, 0x0a, 0x1e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x60, 0x0a, 0x12, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x63, 0x0a, 0x13, + 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x12, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x73, 0x22, 0x8f, 0x04, 0x0a, 0x14, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x59, 0x0a, 0x05, 0x65, 0x61, + 0x72, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x05, + 0x65, 0x61, 0x72, 0x6c, 0x79, 0x12, 0x5d, 0x0a, 0x07, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x72, 0x65, 0x67, + 0x75, 0x6c, 0x61, 0x72, 0x12, 0x66, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x6f, 0x75, + 0x74, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x35, 0x0a, 0x16, + 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x69, 0x6e, + 0x68, 0x65, 0x72, 0x69, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x19, 0x6c, 0x6f, 0x67, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x16, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x47, 0x0a, 0x11, 0x65, 0x73, + 0x63, 0x61, 0x70, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x10, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, + 0x65, 0x72, 0x73, 0x22, 0xb3, 0x03, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x76, 0x0a, 0x17, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x16, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x6e, + 0x0a, 0x15, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x6f, 0x64, 0x79, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x48, 0x00, 0x52, 0x13, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x42, 0x6f, 0x64, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x67, + 0x0a, 0x13, 0x78, 0x73, 0x6c, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x2e, 0x78, 0x73, 0x6c, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x58, + 0x73, 0x6c, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x00, 0x52, 0x12, 0x78, 0x73, 0x6c, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x19, 0x6c, 0x6f, 0x67, 0x5f, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, + 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x6c, 0x6f, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x42, 0x15, 0x0a, 0x13, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdd, 0x02, 0x0a, 0x0a, 0x45, 0x78, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x73, 0x75, 0x62, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x6c, + 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x78, 0x74, 0x12, 0x48, 0x0a, 0x04, 0x6d, + 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, + 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x38, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, + 0x07, 0x45, 0x58, 0x54, 0x52, 0x41, 0x43, 0x54, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x49, + 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x01, 0x12, 0x0f, + 0x0a, 0x0b, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x42, + 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xeb, 0x0f, 0x0a, 0x16, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, + 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x73, 0x12, 0x6b, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x12, 0x62, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x48, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x12, 0x76, 0x0a, 0x11, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, + 0x74, 0x6f, 0x5f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x4a, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x52, 0x0f, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x12, 0x2a, 0x0a, 0x11, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x47, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x49, 0x6e, 0x6a, + 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, 0x64, + 0x79, 0x12, 0x54, 0x0a, 0x0b, 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x61, 0x73, + 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x61, 0x73, 0x73, + 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x12, 0x75, 0x0a, 0x18, 0x6d, 0x65, 0x72, 0x67, 0x65, + 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x62, + 0x6f, 0x64, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x4d, 0x65, 0x72, 0x67, 0x65, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x54, + 0x6f, 0x42, 0x6f, 0x64, 0x79, 0x48, 0x00, 0x52, 0x15, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x45, 0x78, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x54, 0x6f, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x5c, + 0x0a, 0x0f, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, + 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x65, + 0x72, 0x67, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x6d, + 0x65, 0x72, 0x67, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x7c, 0x0a, 0x13, + 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, + 0x69, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4c, 0x2e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x6f, + 0x64, 0x79, 0x50, 0x61, 0x72, 0x73, 0x65, 0x52, 0x11, 0x70, 0x61, 0x72, 0x73, 0x65, 0x42, 0x6f, + 0x64, 0x79, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x31, 0x0a, 0x15, 0x69, 0x67, + 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6f, 0x6e, 0x5f, 0x70, 0x61, + 0x72, 0x73, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x67, 0x6e, 0x6f, 0x72, + 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4f, 0x6e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x12, 0x88, 0x01, + 0x0a, 0x17, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x50, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x79, 0x6e, + 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x15, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x11, 0x65, 0x73, 0x63, 0x61, + 0x70, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x10, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, + 0x73, 0x12, 0x76, 0x0a, 0x10, 0x73, 0x70, 0x61, 0x6e, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x52, 0x0f, 0x73, 0x70, 0x61, 0x6e, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x1a, 0x6e, 0x0a, 0x0f, 0x45, 0x78, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x45, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6d, 0x0a, 0x0c, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6b, 0x0a, 0x0e, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0xc4, 0x01, 0x0a, 0x14, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, + 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2d, + 0x0a, 0x12, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x47, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, + 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6a, 0x73, 0x6f, 0x6e, + 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x6a, 0x73, 0x6f, 0x6e, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x58, 0x0a, 0x0f, + 0x53, 0x70, 0x61, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x12, + 0x45, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x32, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x42, 0x6f, 0x64, 0x79, 0x50, 0x61, 0x72, 0x73, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x61, + 0x72, 0x73, 0x65, 0x41, 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x44, + 0x6f, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x73, 0x65, 0x10, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x62, 0x6f, + 0x64, 0x79, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4a, 0x04, 0x08, 0x0e, 0x10, 0x0f, 0x22, 0x22, 0x0a, 0x0c, 0x49, 0x6e, 0x6a, 0x61, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x22, 0x0d, 0x0a, 0x0b, 0x50, + 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x22, 0x17, 0x0a, 0x15, 0x4d, 0x65, + 0x72, 0x67, 0x65, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x54, 0x6f, 0x42, + 0x6f, 0x64, 0x79, 0x22, 0xfa, 0x02, 0x0a, 0x0d, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4a, 0x73, 0x6f, + 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x5d, 0x0a, 0x09, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, + 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, + 0x65, 0x72, 0x67, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x2e, 0x4a, 0x73, 0x6f, + 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6a, 0x73, 0x6f, 0x6e, + 0x4b, 0x65, 0x79, 0x73, 0x1a, 0x83, 0x01, 0x0a, 0x13, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, + 0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x45, 0x0a, 0x04, + 0x74, 0x6d, 0x70, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x04, 0x74, + 0x6d, 0x70, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, + 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6f, 0x76, 0x65, + 0x72, 0x72, 0x69, 0x64, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x83, 0x01, 0x0a, 0x0d, 0x4a, + 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x5c, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, + 0x73, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x47, 0x0a, 0x13, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x6f, 0x64, 0x79, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x64, 0x64, 0x5f, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x61, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x59, 0xb8, 0xf5, 0x04, 0x01, 0xc0, + 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes = make([]protoimpl.MessageInfo, 20) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_goTypes = []any{ + (Extraction_Mode)(0), // 0: transformation.options.gloo.solo.io.Extraction.Mode + (TransformationTemplate_RequestBodyParse)(0), // 1: transformation.options.gloo.solo.io.TransformationTemplate.RequestBodyParse + (*ResponseMatch)(nil), // 2: transformation.options.gloo.solo.io.ResponseMatch + (*RequestMatch)(nil), // 3: transformation.options.gloo.solo.io.RequestMatch + (*Transformations)(nil), // 4: transformation.options.gloo.solo.io.Transformations + (*RequestResponseTransformations)(nil), // 5: transformation.options.gloo.solo.io.RequestResponseTransformations + (*TransformationStages)(nil), // 6: transformation.options.gloo.solo.io.TransformationStages + (*Transformation)(nil), // 7: transformation.options.gloo.solo.io.Transformation + (*Extraction)(nil), // 8: transformation.options.gloo.solo.io.Extraction + (*TransformationTemplate)(nil), // 9: transformation.options.gloo.solo.io.TransformationTemplate + (*InjaTemplate)(nil), // 10: transformation.options.gloo.solo.io.InjaTemplate + (*Passthrough)(nil), // 11: transformation.options.gloo.solo.io.Passthrough + (*MergeExtractorsToBody)(nil), // 12: transformation.options.gloo.solo.io.MergeExtractorsToBody + (*MergeJsonKeys)(nil), // 13: transformation.options.gloo.solo.io.MergeJsonKeys + (*HeaderBodyTransform)(nil), // 14: transformation.options.gloo.solo.io.HeaderBodyTransform + nil, // 15: transformation.options.gloo.solo.io.TransformationTemplate.ExtractorsEntry + nil, // 16: transformation.options.gloo.solo.io.TransformationTemplate.HeadersEntry + (*TransformationTemplate_HeaderToAppend)(nil), // 17: transformation.options.gloo.solo.io.TransformationTemplate.HeaderToAppend + (*TransformationTemplate_DynamicMetadataValue)(nil), // 18: transformation.options.gloo.solo.io.TransformationTemplate.DynamicMetadataValue + (*TransformationTemplate_SpanTransformer)(nil), // 19: transformation.options.gloo.solo.io.TransformationTemplate.SpanTransformer + (*MergeJsonKeys_OverridableTemplate)(nil), // 20: transformation.options.gloo.solo.io.MergeJsonKeys.OverridableTemplate + nil, // 21: transformation.options.gloo.solo.io.MergeJsonKeys.JsonKeysEntry + (*matchers.HeaderMatcher)(nil), // 22: matchers.core.gloo.solo.io.HeaderMatcher + (*matchers.Matcher)(nil), // 23: matchers.core.gloo.solo.io.Matcher + (*wrapperspb.BoolValue)(nil), // 24: google.protobuf.BoolValue + (*xslt.XsltTransformation)(nil), // 25: envoy.config.transformer.xslt.v2.XsltTransformation + (*emptypb.Empty)(nil), // 26: google.protobuf.Empty + (*wrapperspb.StringValue)(nil), // 27: google.protobuf.StringValue +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_depIdxs = []int32{ + 22, // 0: transformation.options.gloo.solo.io.ResponseMatch.matchers:type_name -> matchers.core.gloo.solo.io.HeaderMatcher + 7, // 1: transformation.options.gloo.solo.io.ResponseMatch.response_transformation:type_name -> transformation.options.gloo.solo.io.Transformation + 23, // 2: transformation.options.gloo.solo.io.RequestMatch.matcher:type_name -> matchers.core.gloo.solo.io.Matcher + 7, // 3: transformation.options.gloo.solo.io.RequestMatch.request_transformation:type_name -> transformation.options.gloo.solo.io.Transformation + 7, // 4: transformation.options.gloo.solo.io.RequestMatch.response_transformation:type_name -> transformation.options.gloo.solo.io.Transformation + 7, // 5: transformation.options.gloo.solo.io.Transformations.request_transformation:type_name -> transformation.options.gloo.solo.io.Transformation + 7, // 6: transformation.options.gloo.solo.io.Transformations.response_transformation:type_name -> transformation.options.gloo.solo.io.Transformation + 3, // 7: transformation.options.gloo.solo.io.RequestResponseTransformations.request_transforms:type_name -> transformation.options.gloo.solo.io.RequestMatch + 2, // 8: transformation.options.gloo.solo.io.RequestResponseTransformations.response_transforms:type_name -> transformation.options.gloo.solo.io.ResponseMatch + 5, // 9: transformation.options.gloo.solo.io.TransformationStages.early:type_name -> transformation.options.gloo.solo.io.RequestResponseTransformations + 5, // 10: transformation.options.gloo.solo.io.TransformationStages.regular:type_name -> transformation.options.gloo.solo.io.RequestResponseTransformations + 5, // 11: transformation.options.gloo.solo.io.TransformationStages.post_routing:type_name -> transformation.options.gloo.solo.io.RequestResponseTransformations + 24, // 12: transformation.options.gloo.solo.io.TransformationStages.log_request_response_info:type_name -> google.protobuf.BoolValue + 24, // 13: transformation.options.gloo.solo.io.TransformationStages.escape_characters:type_name -> google.protobuf.BoolValue + 9, // 14: transformation.options.gloo.solo.io.Transformation.transformation_template:type_name -> transformation.options.gloo.solo.io.TransformationTemplate + 14, // 15: transformation.options.gloo.solo.io.Transformation.header_body_transform:type_name -> transformation.options.gloo.solo.io.HeaderBodyTransform + 25, // 16: transformation.options.gloo.solo.io.Transformation.xslt_transformation:type_name -> envoy.config.transformer.xslt.v2.XsltTransformation + 26, // 17: transformation.options.gloo.solo.io.Extraction.body:type_name -> google.protobuf.Empty + 27, // 18: transformation.options.gloo.solo.io.Extraction.replacement_text:type_name -> google.protobuf.StringValue + 0, // 19: transformation.options.gloo.solo.io.Extraction.mode:type_name -> transformation.options.gloo.solo.io.Extraction.Mode + 15, // 20: transformation.options.gloo.solo.io.TransformationTemplate.extractors:type_name -> transformation.options.gloo.solo.io.TransformationTemplate.ExtractorsEntry + 16, // 21: transformation.options.gloo.solo.io.TransformationTemplate.headers:type_name -> transformation.options.gloo.solo.io.TransformationTemplate.HeadersEntry + 17, // 22: transformation.options.gloo.solo.io.TransformationTemplate.headers_to_append:type_name -> transformation.options.gloo.solo.io.TransformationTemplate.HeaderToAppend + 10, // 23: transformation.options.gloo.solo.io.TransformationTemplate.body:type_name -> transformation.options.gloo.solo.io.InjaTemplate + 11, // 24: transformation.options.gloo.solo.io.TransformationTemplate.passthrough:type_name -> transformation.options.gloo.solo.io.Passthrough + 12, // 25: transformation.options.gloo.solo.io.TransformationTemplate.merge_extractors_to_body:type_name -> transformation.options.gloo.solo.io.MergeExtractorsToBody + 13, // 26: transformation.options.gloo.solo.io.TransformationTemplate.merge_json_keys:type_name -> transformation.options.gloo.solo.io.MergeJsonKeys + 1, // 27: transformation.options.gloo.solo.io.TransformationTemplate.parse_body_behavior:type_name -> transformation.options.gloo.solo.io.TransformationTemplate.RequestBodyParse + 18, // 28: transformation.options.gloo.solo.io.TransformationTemplate.dynamic_metadata_values:type_name -> transformation.options.gloo.solo.io.TransformationTemplate.DynamicMetadataValue + 24, // 29: transformation.options.gloo.solo.io.TransformationTemplate.escape_characters:type_name -> google.protobuf.BoolValue + 19, // 30: transformation.options.gloo.solo.io.TransformationTemplate.span_transformer:type_name -> transformation.options.gloo.solo.io.TransformationTemplate.SpanTransformer + 21, // 31: transformation.options.gloo.solo.io.MergeJsonKeys.json_keys:type_name -> transformation.options.gloo.solo.io.MergeJsonKeys.JsonKeysEntry + 8, // 32: transformation.options.gloo.solo.io.TransformationTemplate.ExtractorsEntry.value:type_name -> transformation.options.gloo.solo.io.Extraction + 10, // 33: transformation.options.gloo.solo.io.TransformationTemplate.HeadersEntry.value:type_name -> transformation.options.gloo.solo.io.InjaTemplate + 10, // 34: transformation.options.gloo.solo.io.TransformationTemplate.HeaderToAppend.value:type_name -> transformation.options.gloo.solo.io.InjaTemplate + 10, // 35: transformation.options.gloo.solo.io.TransformationTemplate.DynamicMetadataValue.value:type_name -> transformation.options.gloo.solo.io.InjaTemplate + 10, // 36: transformation.options.gloo.solo.io.TransformationTemplate.SpanTransformer.name:type_name -> transformation.options.gloo.solo.io.InjaTemplate + 10, // 37: transformation.options.gloo.solo.io.MergeJsonKeys.OverridableTemplate.tmpl:type_name -> transformation.options.gloo.solo.io.InjaTemplate + 20, // 38: transformation.options.gloo.solo.io.MergeJsonKeys.JsonKeysEntry.value:type_name -> transformation.options.gloo.solo.io.MergeJsonKeys.OverridableTemplate + 39, // [39:39] is the sub-list for method output_type + 39, // [39:39] is the sub-list for method input_type + 39, // [39:39] is the sub-list for extension type_name + 39, // [39:39] is the sub-list for extension extendee + 0, // [0:39] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[5].OneofWrappers = []any{ + (*Transformation_TransformationTemplate)(nil), + (*Transformation_HeaderBodyTransform)(nil), + (*Transformation_XsltTransformation)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[6].OneofWrappers = []any{ + (*Extraction_Header)(nil), + (*Extraction_Body)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[7].OneofWrappers = []any{ + (*TransformationTemplate_Body)(nil), + (*TransformationTemplate_Passthrough)(nil), + (*TransformationTemplate_MergeExtractorsToBody)(nil), + (*TransformationTemplate_MergeJsonKeys)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDesc, - NumEnums: 0, - NumMessages: 6, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDesc)), + NumEnums: 2, + NumMessages: 20, NumExtensions: 0, NumServices: 0, }, GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_goTypes, DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_enumTypes, MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.hash.go index 93a13be1f..c51b8a61b 100644 --- a/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ResponseMatch) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -41,14 +45,20 @@ func (m *ResponseMatch) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetMatchers() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -61,14 +71,20 @@ func (m *ResponseMatch) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetResponseTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -78,6 +94,10 @@ func (m *ResponseMatch) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RequestMatch) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -91,14 +111,20 @@ func (m *RequestMatch) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMatcher(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMatcher(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -110,28 +136,40 @@ func (m *RequestMatch) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetRequestTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTransformation")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRequestTransformation(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRequestTransformation(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RequestTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetResponseTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -141,6 +179,10 @@ func (m *RequestMatch) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Transformations) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -154,14 +196,20 @@ func (m *Transformations) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetRequestTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTransformation")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRequestTransformation(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRequestTransformation(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RequestTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -173,14 +221,20 @@ func (m *Transformations) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetResponseTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -190,6 +244,10 @@ func (m *Transformations) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RequestResponseTransformations) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -205,14 +263,20 @@ func (m *RequestResponseTransformations) Hash(hasher hash.Hash64) (uint64, error for _, v := range m.GetRequestTransforms() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -223,14 +287,20 @@ func (m *RequestResponseTransformations) Hash(hasher hash.Hash64) (uint64, error for _, v := range m.GetResponseTransforms() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -242,6 +312,10 @@ func (m *RequestResponseTransformations) Hash(hasher hash.Hash64) (uint64, error } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *TransformationStages) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -255,28 +329,60 @@ func (m *TransformationStages) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetEarly()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Early")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetEarly(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetEarly(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Early")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetRegular()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Regular")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRegular(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Regular")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPostRouting()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PostRouting")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRegular(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPostRouting(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PostRouting")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -287,10 +393,54 @@ func (m *TransformationStages) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + if h, ok := interface{}(m.GetLogRequestResponseInfo()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LogRequestResponseInfo")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLogRequestResponseInfo(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LogRequestResponseInfo")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEscapeCharacters()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EscapeCharacters")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEscapeCharacters(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EscapeCharacters")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Transformation) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -303,19 +453,30 @@ func (m *Transformation) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + err = binary.Write(hasher, binary.LittleEndian, m.GetLogRequestResponseInfo()) + if err != nil { + return 0, err + } + switch m.TransformationType.(type) { case *Transformation_TransformationTemplate: if h, ok := interface{}(m.GetTransformationTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TransformationTemplate")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTransformationTemplate(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTransformationTemplate(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TransformationTemplate")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -324,14 +485,20 @@ func (m *Transformation) Hash(hasher hash.Hash64) (uint64, error) { case *Transformation_HeaderBodyTransform: if h, ok := interface{}(m.GetHeaderBodyTransform()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderBodyTransform")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHeaderBodyTransform(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHeaderBodyTransform(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HeaderBodyTransform")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -340,14 +507,233 @@ func (m *Transformation) Hash(hasher hash.Hash64) (uint64, error) { case *Transformation_XsltTransformation: if h, ok := interface{}(m.GetXsltTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("XsltTransformation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetXsltTransformation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("XsltTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Extraction) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.Extraction")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetRegex())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetSubgroup()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetReplacementText()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ReplacementText")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetReplacementText(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ReplacementText")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetMode()) + if err != nil { + return 0, err + } + + switch m.Source.(type) { + + case *Extraction_Header: + + if _, err = hasher.Write([]byte(m.GetHeader())); err != nil { + return 0, err + } + + case *Extraction_Body: + + if h, ok := interface{}(m.GetBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *TransformationTemplate) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.TransformationTemplate")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetAdvancedTemplates()) + if err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetExtractors() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetHeaders() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + for _, v := range m.GetHeadersToAppend() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetXsltTransformation(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -355,5 +741,509 @@ func (m *Transformation) Hash(hasher hash.Hash64) (uint64, error) { } + for _, v := range m.GetHeadersToRemove() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetParseBodyBehavior()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetIgnoreErrorOnParse()) + if err != nil { + return 0, err + } + + for _, v := range m.GetDynamicMetadataValues() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetEscapeCharacters()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EscapeCharacters")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEscapeCharacters(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EscapeCharacters")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetSpanTransformer()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SpanTransformer")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSpanTransformer(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SpanTransformer")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.BodyTransformation.(type) { + + case *TransformationTemplate_Body: + + if h, ok := interface{}(m.GetBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *TransformationTemplate_Passthrough: + + if h, ok := interface{}(m.GetPassthrough()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Passthrough")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPassthrough(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Passthrough")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *TransformationTemplate_MergeExtractorsToBody: + + if h, ok := interface{}(m.GetMergeExtractorsToBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MergeExtractorsToBody")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMergeExtractorsToBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MergeExtractorsToBody")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *TransformationTemplate_MergeJsonKeys: + + if h, ok := interface{}(m.GetMergeJsonKeys()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MergeJsonKeys")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMergeJsonKeys(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MergeJsonKeys")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *InjaTemplate) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.InjaTemplate")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetText())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Passthrough) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.Passthrough")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *MergeExtractorsToBody) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.MergeExtractorsToBody")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *MergeJsonKeys) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.MergeJsonKeys")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetJsonKeys() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HeaderBodyTransform) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.HeaderBodyTransform")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetAddRequestMetadata()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *TransformationTemplate_HeaderToAppend) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.TransformationTemplate_HeaderToAppend")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValue(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *TransformationTemplate_DynamicMetadataValue) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.TransformationTemplate_DynamicMetadataValue")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetMetadataNamespace())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValue(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetJsonToProto()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *TransformationTemplate_SpanTransformer) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.TransformationTemplate_SpanTransformer")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetName()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetName(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *MergeJsonKeys_OverridableTemplate) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.MergeJsonKeys_OverridableTemplate")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTmpl()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Tmpl")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTmpl(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Tmpl")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetOverrideEmpty()) + if err != nil { + return 0, err + } + return hasher.Sum64(), nil } diff --git a/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.uniquehash.go new file mode 100644 index 000000000..e7766f73a --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.uniquehash.go @@ -0,0 +1,1339 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/transformation/transformation.proto + +package transformation + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ResponseMatch) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.ResponseMatch")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Matchers")); err != nil { + return 0, err + } + for i, v := range m.GetMatchers() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("ResponseCodeDetails")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetResponseCodeDetails())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetResponseTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RequestMatch) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.RequestMatch")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMatcher(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("ClearRouteCache")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetClearRouteCache()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRequestTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTransformation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestTransformation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetResponseTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Transformations) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.Transformations")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRequestTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestTransformation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestTransformation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("ClearRouteCache")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetClearRouteCache()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetResponseTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResponseTransformation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResponseTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RequestResponseTransformations) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.RequestResponseTransformations")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RequestTransforms")); err != nil { + return 0, err + } + for i, v := range m.GetRequestTransforms() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("ResponseTransforms")); err != nil { + return 0, err + } + for i, v := range m.GetResponseTransforms() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TransformationStages) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.TransformationStages")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetEarly()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Early")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEarly(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Early")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRegular()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Regular")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRegular(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Regular")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPostRouting()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PostRouting")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPostRouting(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PostRouting")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("InheritTransformation")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetInheritTransformation()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetLogRequestResponseInfo()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LogRequestResponseInfo")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLogRequestResponseInfo(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LogRequestResponseInfo")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEscapeCharacters()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EscapeCharacters")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEscapeCharacters(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EscapeCharacters")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Transformation) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.Transformation")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("LogRequestResponseInfo")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetLogRequestResponseInfo()) + if err != nil { + return 0, err + } + + switch m.TransformationType.(type) { + + case *Transformation_TransformationTemplate: + + if h, ok := interface{}(m.GetTransformationTemplate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TransformationTemplate")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTransformationTemplate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TransformationTemplate")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Transformation_HeaderBodyTransform: + + if h, ok := interface{}(m.GetHeaderBodyTransform()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderBodyTransform")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaderBodyTransform(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HeaderBodyTransform")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Transformation_XsltTransformation: + + if h, ok := interface{}(m.GetXsltTransformation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("XsltTransformation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetXsltTransformation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("XsltTransformation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Extraction) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.Extraction")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Regex")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRegex())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Subgroup")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetSubgroup()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetReplacementText()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ReplacementText")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetReplacementText(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ReplacementText")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Mode")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMode()) + if err != nil { + return 0, err + } + + switch m.Source.(type) { + + case *Extraction_Header: + + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHeader())); err != nil { + return 0, err + } + + case *Extraction_Body: + + if h, ok := interface{}(m.GetBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TransformationTemplate) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.TransformationTemplate")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AdvancedTemplates")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAdvancedTemplates()) + if err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetExtractors() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetHeaders() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("HeadersToAppend")); err != nil { + return 0, err + } + for i, v := range m.GetHeadersToAppend() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("HeadersToRemove")); err != nil { + return 0, err + } + for i, v := range m.GetHeadersToRemove() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("ParseBodyBehavior")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetParseBodyBehavior()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("IgnoreErrorOnParse")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetIgnoreErrorOnParse()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DynamicMetadataValues")); err != nil { + return 0, err + } + for i, v := range m.GetDynamicMetadataValues() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetEscapeCharacters()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EscapeCharacters")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEscapeCharacters(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EscapeCharacters")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetSpanTransformer()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SpanTransformer")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSpanTransformer(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SpanTransformer")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.BodyTransformation.(type) { + + case *TransformationTemplate_Body: + + if h, ok := interface{}(m.GetBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *TransformationTemplate_Passthrough: + + if h, ok := interface{}(m.GetPassthrough()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Passthrough")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPassthrough(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Passthrough")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *TransformationTemplate_MergeExtractorsToBody: + + if h, ok := interface{}(m.GetMergeExtractorsToBody()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MergeExtractorsToBody")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMergeExtractorsToBody(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MergeExtractorsToBody")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *TransformationTemplate_MergeJsonKeys: + + if h, ok := interface{}(m.GetMergeJsonKeys()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MergeJsonKeys")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMergeJsonKeys(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MergeJsonKeys")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *InjaTemplate) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.InjaTemplate")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Text")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetText())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Passthrough) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.Passthrough")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MergeExtractorsToBody) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.MergeExtractorsToBody")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MergeJsonKeys) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.MergeJsonKeys")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetJsonKeys() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HeaderBodyTransform) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.HeaderBodyTransform")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AddRequestMetadata")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAddRequestMetadata()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TransformationTemplate_HeaderToAppend) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.TransformationTemplate_HeaderToAppend")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValue(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TransformationTemplate_DynamicMetadataValue) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.TransformationTemplate_DynamicMetadataValue")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MetadataNamespace")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetMetadataNamespace())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetValue()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValue(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("JsonToProto")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetJsonToProto()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TransformationTemplate_SpanTransformer) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.TransformationTemplate_SpanTransformer")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetName()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetName(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MergeJsonKeys_OverridableTemplate) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.MergeJsonKeys_OverridableTemplate")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTmpl()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Tmpl")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTmpl(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Tmpl")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("OverrideEmpty")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetOverrideEmpty()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/options/wasm/wasm.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/wasm/wasm.pb.clone.go new file mode 100644 index 000000000..558843ce9 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/wasm/wasm.pb.clone.go @@ -0,0 +1,114 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/wasm/wasm.proto + +package wasm + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_anypb "google.golang.org/protobuf/types/known/anypb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *PluginSource) Clone() proto.Message { + var target *PluginSource + if m == nil { + return target + } + target = &PluginSource{} + + if m.GetFilters() != nil { + target.Filters = make([]*WasmFilter, len(m.GetFilters())) + for idx, v := range m.GetFilters() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Filters[idx] = h.Clone().(*WasmFilter) + } else { + target.Filters[idx] = proto.Clone(v).(*WasmFilter) + } + + } + } + + return target +} + +// Clone function +func (m *WasmFilter) Clone() proto.Message { + var target *WasmFilter + if m == nil { + return target + } + target = &WasmFilter{} + + if h, ok := interface{}(m.GetConfig()).(clone.Cloner); ok { + target.Config = h.Clone().(*google_golang_org_protobuf_types_known_anypb.Any) + } else { + target.Config = proto.Clone(m.GetConfig()).(*google_golang_org_protobuf_types_known_anypb.Any) + } + + if h, ok := interface{}(m.GetFilterStage()).(clone.Cloner); ok { + target.FilterStage = h.Clone().(*FilterStage) + } else { + target.FilterStage = proto.Clone(m.GetFilterStage()).(*FilterStage) + } + + target.Name = m.GetName() + + target.RootId = m.GetRootId() + + target.VmType = m.GetVmType() + + target.FailOpen = m.GetFailOpen() + + switch m.Src.(type) { + + case *WasmFilter_Image: + + target.Src = &WasmFilter_Image{ + Image: m.GetImage(), + } + + case *WasmFilter_FilePath: + + target.Src = &WasmFilter_FilePath{ + FilePath: m.GetFilePath(), + } + + } + + return target +} + +// Clone function +func (m *FilterStage) Clone() proto.Message { + var target *FilterStage + if m == nil { + return target + } + target = &FilterStage{} + + target.Stage = m.GetStage() + + target.Predicate = m.GetPredicate() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/options/wasm/wasm.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/wasm/wasm.pb.equal.go index 5f059690b..d52720eff 100644 --- a/pkg/api/gloo.solo.io/v1/options/wasm/wasm.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/options/wasm/wasm.pb.equal.go @@ -119,20 +119,35 @@ func (m *WasmFilter) Equal(that interface{}) bool { return false } + if m.GetFailOpen() != target.GetFailOpen() { + return false + } + switch m.Src.(type) { case *WasmFilter_Image: + if _, ok := target.Src.(*WasmFilter_Image); !ok { + return false + } if strings.Compare(m.GetImage(), target.GetImage()) != 0 { return false } case *WasmFilter_FilePath: + if _, ok := target.Src.(*WasmFilter_FilePath); !ok { + return false + } if strings.Compare(m.GetFilePath(), target.GetFilePath()) != 0 { return false } + default: + // m is nil but target is not nil + if m.Src != target.Src { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/v1/options/wasm/wasm.pb.go b/pkg/api/gloo.solo.io/v1/options/wasm/wasm.pb.go index d87f2b30b..c9e4f72bb 100644 --- a/pkg/api/gloo.solo.io/v1/options/wasm/wasm.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/wasm/wasm.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/wasm/wasm.proto @@ -9,12 +9,12 @@ package wasm import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - any "github.com/golang/protobuf/ptypes/any" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" ) const ( @@ -24,10 +24,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // represents the different types of WASM VMs available with which envoy can run // the WASM filter module type WasmFilter_VmType int32 @@ -195,24 +191,20 @@ func (FilterStage_Predicate) EnumDescriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_rawDescGZIP(), []int{2, 1} } -// -//Options config for WASM filters +// Options config for WASM filters type PluginSource struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // list of WASM filters to be added into the filter chain - Filters []*WasmFilter `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty"` + Filters []*WasmFilter `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PluginSource) Reset() { *x = PluginSource{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PluginSource) String() string { @@ -223,7 +215,7 @@ func (*PluginSource) ProtoMessage() {} func (x *PluginSource) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -245,14 +237,11 @@ func (x *PluginSource) GetFilters() []*WasmFilter { return nil } -// -//This message defines a single Envoy WASM filter to be placed into the filter chain +// This message defines a single Envoy WASM filter to be placed into the filter chain type WasmFilter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Src: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Src: + // // *WasmFilter_Image // *WasmFilter_FilePath Src isWasmFilter_Src `protobuf_oneof:"src"` @@ -261,7 +250,7 @@ type WasmFilter struct { // `google.protobuf.Struct` is serialized as JSON before // passing it to the plugin. `google.protobuf.BytesValue` and // `google.protobuf.StringValue` are passed directly without the wrapper. - Config *any.Any `protobuf:"bytes,3,opt,name=config,proto3" json:"config,omitempty"` + Config *anypb.Any `protobuf:"bytes,3,opt,name=config,proto3" json:"config,omitempty"` // the stage in the filter chain where this filter should be placed FilterStage *FilterStage `protobuf:"bytes,4,opt,name=filter_stage,json=filterStage,proto3" json:"filter_stage,omitempty"` // the name of the filter, used for logging @@ -271,15 +260,17 @@ type WasmFilter struct { RootId string `protobuf:"bytes,6,opt,name=root_id,json=rootId,proto3" json:"root_id,omitempty"` // selected VM type VmType WasmFilter_VmType `protobuf:"varint,7,opt,name=vm_type,json=vmType,proto3,enum=wasm.options.gloo.solo.io.WasmFilter_VmType" json:"vm_type,omitempty"` + // when true, bypass the filter if there is a fatal error on the VM; defaults to false + FailOpen bool `protobuf:"varint,9,opt,name=fail_open,json=failOpen,proto3" json:"fail_open,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WasmFilter) Reset() { *x = WasmFilter{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WasmFilter) String() string { @@ -290,7 +281,7 @@ func (*WasmFilter) ProtoMessage() {} func (x *WasmFilter) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -305,28 +296,32 @@ func (*WasmFilter) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_rawDescGZIP(), []int{1} } -func (m *WasmFilter) GetSrc() isWasmFilter_Src { - if m != nil { - return m.Src +func (x *WasmFilter) GetSrc() isWasmFilter_Src { + if x != nil { + return x.Src } return nil } func (x *WasmFilter) GetImage() string { - if x, ok := x.GetSrc().(*WasmFilter_Image); ok { - return x.Image + if x != nil { + if x, ok := x.Src.(*WasmFilter_Image); ok { + return x.Image + } } return "" } func (x *WasmFilter) GetFilePath() string { - if x, ok := x.GetSrc().(*WasmFilter_FilePath); ok { - return x.FilePath + if x != nil { + if x, ok := x.Src.(*WasmFilter_FilePath); ok { + return x.FilePath + } } return "" } -func (x *WasmFilter) GetConfig() *any.Any { +func (x *WasmFilter) GetConfig() *anypb.Any { if x != nil { return x.Config } @@ -361,6 +356,13 @@ func (x *WasmFilter) GetVmType() WasmFilter_VmType { return WasmFilter_V8 } +func (x *WasmFilter) GetFailOpen() bool { + if x != nil { + return x.FailOpen + } + return false +} + type isWasmFilter_Src interface { isWasmFilter_Src() } @@ -380,23 +382,20 @@ func (*WasmFilter_Image) isWasmFilter_Src() {} func (*WasmFilter_FilePath) isWasmFilter_Src() {} type FilterStage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // stage of the filter chain in which the selected filter should be added Stage FilterStage_Stage `protobuf:"varint,1,opt,name=stage,proto3,enum=wasm.options.gloo.solo.io.FilterStage_Stage" json:"stage,omitempty"` // How this filter should be placed relative to the stage - Predicate FilterStage_Predicate `protobuf:"varint,2,opt,name=predicate,proto3,enum=wasm.options.gloo.solo.io.FilterStage_Predicate" json:"predicate,omitempty"` + Predicate FilterStage_Predicate `protobuf:"varint,2,opt,name=predicate,proto3,enum=wasm.options.gloo.solo.io.FilterStage_Predicate" json:"predicate,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FilterStage) Reset() { *x = FilterStage{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FilterStage) String() string { @@ -407,7 +406,7 @@ func (*FilterStage) ProtoMessage() {} func (x *FilterStage) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -438,7 +437,7 @@ func (x *FilterStage) GetPredicate() FilterStage_Predicate { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_rawDesc = string([]byte{ 0x0a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -453,7 +452,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_r 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x61, 0x73, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x57, 0x61, 0x73, 0x6d, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x73, 0x22, 0xd3, 0x02, 0x0a, 0x0a, 0x57, 0x61, 0x73, 0x6d, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x73, 0x22, 0xf0, 0x02, 0x0a, 0x0a, 0x57, 0x61, 0x73, 0x6d, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, @@ -472,62 +471,64 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_r 0x2c, 0x2e, 0x77, 0x61, 0x73, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x57, 0x61, 0x73, 0x6d, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x56, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x76, - 0x6d, 0x54, 0x79, 0x70, 0x65, 0x22, 0x1a, 0x0a, 0x06, 0x56, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x06, 0x0a, 0x02, 0x56, 0x38, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x56, 0x4d, 0x10, - 0x01, 0x42, 0x05, 0x0a, 0x03, 0x73, 0x72, 0x63, 0x22, 0xf1, 0x02, 0x0a, 0x0b, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x42, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x77, 0x61, 0x73, 0x6d, 0x2e, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x67, 0x65, 0x2e, - 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x4e, 0x0a, 0x09, - 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x30, 0x2e, 0x77, 0x61, 0x73, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x53, 0x74, 0x61, 0x67, 0x65, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x52, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x9d, 0x01, 0x0a, - 0x05, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x53, - 0x74, 0x61, 0x67, 0x65, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x6f, 0x72, 0x73, 0x53, 0x74, - 0x61, 0x67, 0x65, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x57, 0x61, 0x66, 0x53, 0x74, 0x61, 0x67, - 0x65, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x75, 0x74, 0x68, 0x4e, 0x53, 0x74, 0x61, 0x67, - 0x65, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x75, 0x74, 0x68, 0x5a, 0x53, 0x74, 0x61, 0x67, - 0x65, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x53, 0x74, 0x61, 0x67, 0x65, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x63, 0x63, 0x65, 0x70, - 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x67, 0x65, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x75, - 0x74, 0x41, 0x75, 0x74, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x10, 0x07, 0x12, 0x0e, 0x0a, 0x0a, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x10, 0x08, 0x22, 0x2e, 0x0a, 0x09, - 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x75, 0x72, - 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x10, - 0x01, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x66, 0x74, 0x65, 0x72, 0x10, 0x02, 0x42, 0x4b, 0x5a, 0x41, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x77, 0x61, 0x73, - 0x6d, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, -} + 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x6f, 0x70, + 0x65, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x4f, 0x70, + 0x65, 0x6e, 0x22, 0x1a, 0x0a, 0x06, 0x56, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x06, 0x0a, 0x02, + 0x56, 0x38, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x56, 0x4d, 0x10, 0x01, 0x42, 0x05, + 0x0a, 0x03, 0x73, 0x72, 0x63, 0x22, 0xf1, 0x02, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x42, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x77, 0x61, 0x73, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x67, 0x65, 0x2e, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x4e, 0x0a, 0x09, 0x70, 0x72, 0x65, + 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x77, + 0x61, 0x73, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x09, + 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x9d, 0x01, 0x0a, 0x05, 0x53, 0x74, + 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x67, + 0x65, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x6f, 0x72, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, + 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x57, 0x61, 0x66, 0x53, 0x74, 0x61, 0x67, 0x65, 0x10, 0x02, + 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x75, 0x74, 0x68, 0x4e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x10, 0x03, + 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x75, 0x74, 0x68, 0x5a, 0x53, 0x74, 0x61, 0x67, 0x65, 0x10, 0x04, + 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x41, 0x75, + 0x74, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x10, 0x07, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x10, 0x08, 0x22, 0x2e, 0x0a, 0x09, 0x50, 0x72, 0x65, + 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x75, 0x72, 0x69, 0x6e, 0x67, + 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x10, 0x01, 0x12, 0x09, + 0x0a, 0x05, 0x41, 0x66, 0x74, 0x65, 0x72, 0x10, 0x02, 0x42, 0x4f, 0xb8, 0xf5, 0x04, 0x01, 0xc0, + 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x77, 0x61, 0x73, 0x6d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_enumTypes = make([]protoimpl.EnumInfo, 3) var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_goTypes = []any{ (WasmFilter_VmType)(0), // 0: wasm.options.gloo.solo.io.WasmFilter.VmType (FilterStage_Stage)(0), // 1: wasm.options.gloo.solo.io.FilterStage.Stage (FilterStage_Predicate)(0), // 2: wasm.options.gloo.solo.io.FilterStage.Predicate (*PluginSource)(nil), // 3: wasm.options.gloo.solo.io.PluginSource (*WasmFilter)(nil), // 4: wasm.options.gloo.solo.io.WasmFilter (*FilterStage)(nil), // 5: wasm.options.gloo.solo.io.FilterStage - (*any.Any)(nil), // 6: google.protobuf.Any + (*anypb.Any)(nil), // 6: google.protobuf.Any } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_depIdxs = []int32{ 4, // 0: wasm.options.gloo.solo.io.PluginSource.filters:type_name -> wasm.options.gloo.solo.io.WasmFilter @@ -548,45 +549,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_ if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PluginSource); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WasmFilter); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FilterStage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_msgTypes[1].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_msgTypes[1].OneofWrappers = []any{ (*WasmFilter_Image)(nil), (*WasmFilter_FilePath)(nil), } @@ -594,7 +557,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_ out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_rawDesc)), NumEnums: 3, NumMessages: 3, NumExtensions: 0, @@ -606,7 +569,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_ MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_wasm_wasm_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/options/wasm/wasm.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/wasm/wasm.pb.hash.go index 441a6678c..10a205ff3 100644 --- a/pkg/api/gloo.solo.io/v1/options/wasm/wasm.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/wasm/wasm.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *PluginSource) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -41,14 +45,20 @@ func (m *PluginSource) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetFilters() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -60,6 +70,10 @@ func (m *PluginSource) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *WasmFilter) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -73,28 +87,40 @@ func (m *WasmFilter) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetFilterStage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FilterStage")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetFilterStage(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetFilterStage(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("FilterStage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -113,6 +139,11 @@ func (m *WasmFilter) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + err = binary.Write(hasher, binary.LittleEndian, m.GetFailOpen()) + if err != nil { + return 0, err + } + switch m.Src.(type) { case *WasmFilter_Image: @@ -133,6 +164,10 @@ func (m *WasmFilter) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *FilterStage) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/v1/options/wasm/wasm.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/options/wasm/wasm.pb.uniquehash.go new file mode 100644 index 000000000..8121991a1 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/options/wasm/wasm.pb.uniquehash.go @@ -0,0 +1,223 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/wasm/wasm.proto + +package wasm + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *PluginSource) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("wasm.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/wasm.PluginSource")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Filters")); err != nil { + return 0, err + } + for i, v := range m.GetFilters() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *WasmFilter) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("wasm.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/wasm.WasmFilter")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFilterStage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FilterStage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFilterStage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FilterStage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RootId")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRootId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("VmType")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetVmType()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("FailOpen")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetFailOpen()) + if err != nil { + return 0, err + } + + switch m.Src.(type) { + + case *WasmFilter_Image: + + if _, err = hasher.Write([]byte("Image")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetImage())); err != nil { + return 0, err + } + + case *WasmFilter_FilePath: + + if _, err = hasher.Write([]byte("FilePath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetFilePath())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *FilterStage) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("wasm.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/wasm.FilterStage")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Stage")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetStage()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Predicate")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPredicate()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/proto_deepcopy.go b/pkg/api/gloo.solo.io/v1/proto_deepcopy.go index 52bc54ee1..e02f03126 100644 --- a/pkg/api/gloo.solo.io/v1/proto_deepcopy.go +++ b/pkg/api/gloo.solo.io/v1/proto_deepcopy.go @@ -6,52 +6,93 @@ package v1 import ( proto "github.com/golang/protobuf/proto" + "github.com/solo-io/protoc-gen-ext/pkg/clone" ) // DeepCopyInto for the Settings.Spec func (in *SettingsSpec) DeepCopyInto(out *SettingsSpec) { - p := proto.Clone(in).(*SettingsSpec) + var p *SettingsSpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*SettingsSpec) + } else { + p = proto.Clone(in).(*SettingsSpec) + } *out = *p } // DeepCopyInto for the Settings.Status func (in *SettingsStatus) DeepCopyInto(out *SettingsStatus) { - p := proto.Clone(in).(*SettingsStatus) + var p *SettingsStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*SettingsStatus) + } else { + p = proto.Clone(in).(*SettingsStatus) + } *out = *p } // DeepCopyInto for the Upstream.Spec func (in *UpstreamSpec) DeepCopyInto(out *UpstreamSpec) { - p := proto.Clone(in).(*UpstreamSpec) + var p *UpstreamSpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*UpstreamSpec) + } else { + p = proto.Clone(in).(*UpstreamSpec) + } *out = *p } // DeepCopyInto for the Upstream.Status func (in *UpstreamStatus) DeepCopyInto(out *UpstreamStatus) { - p := proto.Clone(in).(*UpstreamStatus) + var p *UpstreamStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*UpstreamStatus) + } else { + p = proto.Clone(in).(*UpstreamStatus) + } *out = *p } // DeepCopyInto for the UpstreamGroup.Spec func (in *UpstreamGroupSpec) DeepCopyInto(out *UpstreamGroupSpec) { - p := proto.Clone(in).(*UpstreamGroupSpec) + var p *UpstreamGroupSpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*UpstreamGroupSpec) + } else { + p = proto.Clone(in).(*UpstreamGroupSpec) + } *out = *p } // DeepCopyInto for the UpstreamGroup.Status func (in *UpstreamGroupStatus) DeepCopyInto(out *UpstreamGroupStatus) { - p := proto.Clone(in).(*UpstreamGroupStatus) + var p *UpstreamGroupStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*UpstreamGroupStatus) + } else { + p = proto.Clone(in).(*UpstreamGroupStatus) + } *out = *p } // DeepCopyInto for the Proxy.Spec func (in *ProxySpec) DeepCopyInto(out *ProxySpec) { - p := proto.Clone(in).(*ProxySpec) + var p *ProxySpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*ProxySpec) + } else { + p = proto.Clone(in).(*ProxySpec) + } *out = *p } // DeepCopyInto for the Proxy.Status func (in *ProxyStatus) DeepCopyInto(out *ProxyStatus) { - p := proto.Clone(in).(*ProxyStatus) + var p *ProxyStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*ProxyStatus) + } else { + p = proto.Clone(in).(*ProxyStatus) + } *out = *p } diff --git a/pkg/api/gloo.solo.io/v1/proxy.pb.clone.go b/pkg/api/gloo.solo.io/v1/proxy.pb.clone.go new file mode 100644 index 000000000..0f2da727d --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/proxy.pb.clone.go @@ -0,0 +1,1404 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/proxy.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_core_matchers "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/core/matchers" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_filters "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/filters" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_dynamic_forward_proxy "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + + google_golang_org_protobuf_types_known_anypb "google.golang.org/protobuf/types/known/anypb" + + google_golang_org_protobuf_types_known_emptypb "google.golang.org/protobuf/types/known/emptypb" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *ProxySpec) Clone() proto.Message { + var target *ProxySpec + if m == nil { + return target + } + target = &ProxySpec{} + + target.CompressedSpec = m.GetCompressedSpec() + + if m.GetListeners() != nil { + target.Listeners = make([]*Listener, len(m.GetListeners())) + for idx, v := range m.GetListeners() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Listeners[idx] = h.Clone().(*Listener) + } else { + target.Listeners[idx] = proto.Clone(v).(*Listener) + } + + } + } + + return target +} + +// Clone function +func (m *Listener) Clone() proto.Message { + var target *Listener + if m == nil { + return target + } + target = &Listener{} + + target.Name = m.GetName() + + target.BindAddress = m.GetBindAddress() + + target.BindPort = m.GetBindPort() + + if m.GetSslConfigurations() != nil { + target.SslConfigurations = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.SslConfig, len(m.GetSslConfigurations())) + for idx, v := range m.GetSslConfigurations() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SslConfigurations[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.SslConfig) + } else { + target.SslConfigurations[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.SslConfig) + } + + } + } + + if h, ok := interface{}(m.GetUseProxyProto()).(clone.Cloner); ok { + target.UseProxyProto = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.UseProxyProto = proto.Clone(m.GetUseProxyProto()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetOptions()).(clone.Cloner); ok { + target.Options = h.Clone().(*ListenerOptions) + } else { + target.Options = proto.Clone(m.GetOptions()).(*ListenerOptions) + } + + if h, ok := interface{}(m.GetRouteOptions()).(clone.Cloner); ok { + target.RouteOptions = h.Clone().(*RouteConfigurationOptions) + } else { + target.RouteOptions = proto.Clone(m.GetRouteOptions()).(*RouteConfigurationOptions) + } + + switch m.ListenerType.(type) { + + case *Listener_HttpListener: + + if h, ok := interface{}(m.GetHttpListener()).(clone.Cloner); ok { + target.ListenerType = &Listener_HttpListener{ + HttpListener: h.Clone().(*HttpListener), + } + } else { + target.ListenerType = &Listener_HttpListener{ + HttpListener: proto.Clone(m.GetHttpListener()).(*HttpListener), + } + } + + case *Listener_TcpListener: + + if h, ok := interface{}(m.GetTcpListener()).(clone.Cloner); ok { + target.ListenerType = &Listener_TcpListener{ + TcpListener: h.Clone().(*TcpListener), + } + } else { + target.ListenerType = &Listener_TcpListener{ + TcpListener: proto.Clone(m.GetTcpListener()).(*TcpListener), + } + } + + case *Listener_HybridListener: + + if h, ok := interface{}(m.GetHybridListener()).(clone.Cloner); ok { + target.ListenerType = &Listener_HybridListener{ + HybridListener: h.Clone().(*HybridListener), + } + } else { + target.ListenerType = &Listener_HybridListener{ + HybridListener: proto.Clone(m.GetHybridListener()).(*HybridListener), + } + } + + case *Listener_AggregateListener: + + if h, ok := interface{}(m.GetAggregateListener()).(clone.Cloner); ok { + target.ListenerType = &Listener_AggregateListener{ + AggregateListener: h.Clone().(*AggregateListener), + } + } else { + target.ListenerType = &Listener_AggregateListener{ + AggregateListener: proto.Clone(m.GetAggregateListener()).(*AggregateListener), + } + } + + } + + switch m.OpaqueMetadata.(type) { + + case *Listener_Metadata: + + if h, ok := interface{}(m.GetMetadata()).(clone.Cloner); ok { + target.OpaqueMetadata = &Listener_Metadata{ + Metadata: h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct), + } + } else { + target.OpaqueMetadata = &Listener_Metadata{ + Metadata: proto.Clone(m.GetMetadata()).(*google_golang_org_protobuf_types_known_structpb.Struct), + } + } + + case *Listener_MetadataStatic: + + if h, ok := interface{}(m.GetMetadataStatic()).(clone.Cloner); ok { + target.OpaqueMetadata = &Listener_MetadataStatic{ + MetadataStatic: h.Clone().(*SourceMetadata), + } + } else { + target.OpaqueMetadata = &Listener_MetadataStatic{ + MetadataStatic: proto.Clone(m.GetMetadataStatic()).(*SourceMetadata), + } + } + + } + + return target +} + +// Clone function +func (m *TcpListener) Clone() proto.Message { + var target *TcpListener + if m == nil { + return target + } + target = &TcpListener{} + + if m.GetTcpHosts() != nil { + target.TcpHosts = make([]*TcpHost, len(m.GetTcpHosts())) + for idx, v := range m.GetTcpHosts() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.TcpHosts[idx] = h.Clone().(*TcpHost) + } else { + target.TcpHosts[idx] = proto.Clone(v).(*TcpHost) + } + + } + } + + if h, ok := interface{}(m.GetOptions()).(clone.Cloner); ok { + target.Options = h.Clone().(*TcpListenerOptions) + } else { + target.Options = proto.Clone(m.GetOptions()).(*TcpListenerOptions) + } + + target.StatPrefix = m.GetStatPrefix() + + if m.GetCustomNetworkFilters() != nil { + target.CustomNetworkFilters = make([]*CustomEnvoyFilter, len(m.GetCustomNetworkFilters())) + for idx, v := range m.GetCustomNetworkFilters() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.CustomNetworkFilters[idx] = h.Clone().(*CustomEnvoyFilter) + } else { + target.CustomNetworkFilters[idx] = proto.Clone(v).(*CustomEnvoyFilter) + } + + } + } + + return target +} + +// Clone function +func (m *TcpHost) Clone() proto.Message { + var target *TcpHost + if m == nil { + return target + } + target = &TcpHost{} + + target.Name = m.GetName() + + if h, ok := interface{}(m.GetSslConfig()).(clone.Cloner); ok { + target.SslConfig = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.SslConfig) + } else { + target.SslConfig = proto.Clone(m.GetSslConfig()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.SslConfig) + } + + if h, ok := interface{}(m.GetDestination()).(clone.Cloner); ok { + target.Destination = h.Clone().(*TcpHost_TcpAction) + } else { + target.Destination = proto.Clone(m.GetDestination()).(*TcpHost_TcpAction) + } + + return target +} + +// Clone function +func (m *HttpListener) Clone() proto.Message { + var target *HttpListener + if m == nil { + return target + } + target = &HttpListener{} + + if m.GetVirtualHosts() != nil { + target.VirtualHosts = make([]*VirtualHost, len(m.GetVirtualHosts())) + for idx, v := range m.GetVirtualHosts() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.VirtualHosts[idx] = h.Clone().(*VirtualHost) + } else { + target.VirtualHosts[idx] = proto.Clone(v).(*VirtualHost) + } + + } + } + + if h, ok := interface{}(m.GetOptions()).(clone.Cloner); ok { + target.Options = h.Clone().(*HttpListenerOptions) + } else { + target.Options = proto.Clone(m.GetOptions()).(*HttpListenerOptions) + } + + target.StatPrefix = m.GetStatPrefix() + + if m.GetCustomHttpFilters() != nil { + target.CustomHttpFilters = make([]*CustomEnvoyFilter, len(m.GetCustomHttpFilters())) + for idx, v := range m.GetCustomHttpFilters() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.CustomHttpFilters[idx] = h.Clone().(*CustomEnvoyFilter) + } else { + target.CustomHttpFilters[idx] = proto.Clone(v).(*CustomEnvoyFilter) + } + + } + } + + if m.GetCustomNetworkFilters() != nil { + target.CustomNetworkFilters = make([]*CustomEnvoyFilter, len(m.GetCustomNetworkFilters())) + for idx, v := range m.GetCustomNetworkFilters() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.CustomNetworkFilters[idx] = h.Clone().(*CustomEnvoyFilter) + } else { + target.CustomNetworkFilters[idx] = proto.Clone(v).(*CustomEnvoyFilter) + } + + } + } + + switch m.OpaqueMetadata.(type) { + + case *HttpListener_Metadata: + + if h, ok := interface{}(m.GetMetadata()).(clone.Cloner); ok { + target.OpaqueMetadata = &HttpListener_Metadata{ + Metadata: h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct), + } + } else { + target.OpaqueMetadata = &HttpListener_Metadata{ + Metadata: proto.Clone(m.GetMetadata()).(*google_golang_org_protobuf_types_known_structpb.Struct), + } + } + + case *HttpListener_MetadataStatic: + + if h, ok := interface{}(m.GetMetadataStatic()).(clone.Cloner); ok { + target.OpaqueMetadata = &HttpListener_MetadataStatic{ + MetadataStatic: h.Clone().(*SourceMetadata), + } + } else { + target.OpaqueMetadata = &HttpListener_MetadataStatic{ + MetadataStatic: proto.Clone(m.GetMetadataStatic()).(*SourceMetadata), + } + } + + } + + return target +} + +// Clone function +func (m *HybridListener) Clone() proto.Message { + var target *HybridListener + if m == nil { + return target + } + target = &HybridListener{} + + if m.GetMatchedListeners() != nil { + target.MatchedListeners = make([]*MatchedListener, len(m.GetMatchedListeners())) + for idx, v := range m.GetMatchedListeners() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.MatchedListeners[idx] = h.Clone().(*MatchedListener) + } else { + target.MatchedListeners[idx] = proto.Clone(v).(*MatchedListener) + } + + } + } + + return target +} + +// Clone function +func (m *MatchedListener) Clone() proto.Message { + var target *MatchedListener + if m == nil { + return target + } + target = &MatchedListener{} + + if h, ok := interface{}(m.GetMatcher()).(clone.Cloner); ok { + target.Matcher = h.Clone().(*Matcher) + } else { + target.Matcher = proto.Clone(m.GetMatcher()).(*Matcher) + } + + if m.GetSslConfigurations() != nil { + target.SslConfigurations = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.SslConfig, len(m.GetSslConfigurations())) + for idx, v := range m.GetSslConfigurations() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SslConfigurations[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.SslConfig) + } else { + target.SslConfigurations[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.SslConfig) + } + + } + } + + switch m.ListenerType.(type) { + + case *MatchedListener_HttpListener: + + if h, ok := interface{}(m.GetHttpListener()).(clone.Cloner); ok { + target.ListenerType = &MatchedListener_HttpListener{ + HttpListener: h.Clone().(*HttpListener), + } + } else { + target.ListenerType = &MatchedListener_HttpListener{ + HttpListener: proto.Clone(m.GetHttpListener()).(*HttpListener), + } + } + + case *MatchedListener_TcpListener: + + if h, ok := interface{}(m.GetTcpListener()).(clone.Cloner); ok { + target.ListenerType = &MatchedListener_TcpListener{ + TcpListener: h.Clone().(*TcpListener), + } + } else { + target.ListenerType = &MatchedListener_TcpListener{ + TcpListener: proto.Clone(m.GetTcpListener()).(*TcpListener), + } + } + + } + + return target +} + +// Clone function +func (m *MatchedTcpListener) Clone() proto.Message { + var target *MatchedTcpListener + if m == nil { + return target + } + target = &MatchedTcpListener{} + + if h, ok := interface{}(m.GetMatcher()).(clone.Cloner); ok { + target.Matcher = h.Clone().(*Matcher) + } else { + target.Matcher = proto.Clone(m.GetMatcher()).(*Matcher) + } + + if h, ok := interface{}(m.GetTcpListener()).(clone.Cloner); ok { + target.TcpListener = h.Clone().(*TcpListener) + } else { + target.TcpListener = proto.Clone(m.GetTcpListener()).(*TcpListener) + } + + return target +} + +// Clone function +func (m *Matcher) Clone() proto.Message { + var target *Matcher + if m == nil { + return target + } + target = &Matcher{} + + if h, ok := interface{}(m.GetSslConfig()).(clone.Cloner); ok { + target.SslConfig = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.SslConfig) + } else { + target.SslConfig = proto.Clone(m.GetSslConfig()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.SslConfig) + } + + if m.GetSourcePrefixRanges() != nil { + target.SourcePrefixRanges = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.CidrRange, len(m.GetSourcePrefixRanges())) + for idx, v := range m.GetSourcePrefixRanges() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SourcePrefixRanges[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.CidrRange) + } else { + target.SourcePrefixRanges[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.CidrRange) + } + + } + } + + if m.GetPrefixRanges() != nil { + target.PrefixRanges = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.CidrRange, len(m.GetPrefixRanges())) + for idx, v := range m.GetPrefixRanges() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.PrefixRanges[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.CidrRange) + } else { + target.PrefixRanges[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_config_core_v3.CidrRange) + } + + } + } + + if h, ok := interface{}(m.GetDestinationPort()).(clone.Cloner); ok { + target.DestinationPort = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.DestinationPort = proto.Clone(m.GetDestinationPort()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if m.GetPassthroughCipherSuites() != nil { + target.PassthroughCipherSuites = make([]string, len(m.GetPassthroughCipherSuites())) + for idx, v := range m.GetPassthroughCipherSuites() { + + target.PassthroughCipherSuites[idx] = v + + } + } + + return target +} + +// Clone function +func (m *AggregateListener) Clone() proto.Message { + var target *AggregateListener + if m == nil { + return target + } + target = &AggregateListener{} + + if h, ok := interface{}(m.GetHttpResources()).(clone.Cloner); ok { + target.HttpResources = h.Clone().(*AggregateListener_HttpResources) + } else { + target.HttpResources = proto.Clone(m.GetHttpResources()).(*AggregateListener_HttpResources) + } + + if m.GetHttpFilterChains() != nil { + target.HttpFilterChains = make([]*AggregateListener_HttpFilterChain, len(m.GetHttpFilterChains())) + for idx, v := range m.GetHttpFilterChains() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.HttpFilterChains[idx] = h.Clone().(*AggregateListener_HttpFilterChain) + } else { + target.HttpFilterChains[idx] = proto.Clone(v).(*AggregateListener_HttpFilterChain) + } + + } + } + + if m.GetTcpListeners() != nil { + target.TcpListeners = make([]*MatchedTcpListener, len(m.GetTcpListeners())) + for idx, v := range m.GetTcpListeners() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.TcpListeners[idx] = h.Clone().(*MatchedTcpListener) + } else { + target.TcpListeners[idx] = proto.Clone(v).(*MatchedTcpListener) + } + + } + } + + return target +} + +// Clone function +func (m *VirtualHost) Clone() proto.Message { + var target *VirtualHost + if m == nil { + return target + } + target = &VirtualHost{} + + target.Name = m.GetName() + + if m.GetDomains() != nil { + target.Domains = make([]string, len(m.GetDomains())) + for idx, v := range m.GetDomains() { + + target.Domains[idx] = v + + } + } + + if m.GetRoutes() != nil { + target.Routes = make([]*Route, len(m.GetRoutes())) + for idx, v := range m.GetRoutes() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Routes[idx] = h.Clone().(*Route) + } else { + target.Routes[idx] = proto.Clone(v).(*Route) + } + + } + } + + if h, ok := interface{}(m.GetOptions()).(clone.Cloner); ok { + target.Options = h.Clone().(*VirtualHostOptions) + } else { + target.Options = proto.Clone(m.GetOptions()).(*VirtualHostOptions) + } + + switch m.OpaqueMetadata.(type) { + + case *VirtualHost_Metadata: + + if h, ok := interface{}(m.GetMetadata()).(clone.Cloner); ok { + target.OpaqueMetadata = &VirtualHost_Metadata{ + Metadata: h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct), + } + } else { + target.OpaqueMetadata = &VirtualHost_Metadata{ + Metadata: proto.Clone(m.GetMetadata()).(*google_golang_org_protobuf_types_known_structpb.Struct), + } + } + + case *VirtualHost_MetadataStatic: + + if h, ok := interface{}(m.GetMetadataStatic()).(clone.Cloner); ok { + target.OpaqueMetadata = &VirtualHost_MetadataStatic{ + MetadataStatic: h.Clone().(*SourceMetadata), + } + } else { + target.OpaqueMetadata = &VirtualHost_MetadataStatic{ + MetadataStatic: proto.Clone(m.GetMetadataStatic()).(*SourceMetadata), + } + } + + } + + return target +} + +// Clone function +func (m *Route) Clone() proto.Message { + var target *Route + if m == nil { + return target + } + target = &Route{} + + if m.GetMatchers() != nil { + target.Matchers = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_core_matchers.Matcher, len(m.GetMatchers())) + for idx, v := range m.GetMatchers() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Matchers[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_core_matchers.Matcher) + } else { + target.Matchers[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_core_matchers.Matcher) + } + + } + } + + if h, ok := interface{}(m.GetOptions()).(clone.Cloner); ok { + target.Options = h.Clone().(*RouteOptions) + } else { + target.Options = proto.Clone(m.GetOptions()).(*RouteOptions) + } + + target.Name = m.GetName() + + switch m.Action.(type) { + + case *Route_RouteAction: + + if h, ok := interface{}(m.GetRouteAction()).(clone.Cloner); ok { + target.Action = &Route_RouteAction{ + RouteAction: h.Clone().(*RouteAction), + } + } else { + target.Action = &Route_RouteAction{ + RouteAction: proto.Clone(m.GetRouteAction()).(*RouteAction), + } + } + + case *Route_RedirectAction: + + if h, ok := interface{}(m.GetRedirectAction()).(clone.Cloner); ok { + target.Action = &Route_RedirectAction{ + RedirectAction: h.Clone().(*RedirectAction), + } + } else { + target.Action = &Route_RedirectAction{ + RedirectAction: proto.Clone(m.GetRedirectAction()).(*RedirectAction), + } + } + + case *Route_DirectResponseAction: + + if h, ok := interface{}(m.GetDirectResponseAction()).(clone.Cloner); ok { + target.Action = &Route_DirectResponseAction{ + DirectResponseAction: h.Clone().(*DirectResponseAction), + } + } else { + target.Action = &Route_DirectResponseAction{ + DirectResponseAction: proto.Clone(m.GetDirectResponseAction()).(*DirectResponseAction), + } + } + + } + + switch m.OpaqueMetadata.(type) { + + case *Route_Metadata: + + if h, ok := interface{}(m.GetMetadata()).(clone.Cloner); ok { + target.OpaqueMetadata = &Route_Metadata{ + Metadata: h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct), + } + } else { + target.OpaqueMetadata = &Route_Metadata{ + Metadata: proto.Clone(m.GetMetadata()).(*google_golang_org_protobuf_types_known_structpb.Struct), + } + } + + case *Route_MetadataStatic: + + if h, ok := interface{}(m.GetMetadataStatic()).(clone.Cloner); ok { + target.OpaqueMetadata = &Route_MetadataStatic{ + MetadataStatic: h.Clone().(*SourceMetadata), + } + } else { + target.OpaqueMetadata = &Route_MetadataStatic{ + MetadataStatic: proto.Clone(m.GetMetadataStatic()).(*SourceMetadata), + } + } + + } + + return target +} + +// Clone function +func (m *RouteAction) Clone() proto.Message { + var target *RouteAction + if m == nil { + return target + } + target = &RouteAction{} + + switch m.Destination.(type) { + + case *RouteAction_Single: + + if h, ok := interface{}(m.GetSingle()).(clone.Cloner); ok { + target.Destination = &RouteAction_Single{ + Single: h.Clone().(*Destination), + } + } else { + target.Destination = &RouteAction_Single{ + Single: proto.Clone(m.GetSingle()).(*Destination), + } + } + + case *RouteAction_Multi: + + if h, ok := interface{}(m.GetMulti()).(clone.Cloner); ok { + target.Destination = &RouteAction_Multi{ + Multi: h.Clone().(*MultiDestination), + } + } else { + target.Destination = &RouteAction_Multi{ + Multi: proto.Clone(m.GetMulti()).(*MultiDestination), + } + } + + case *RouteAction_UpstreamGroup: + + if h, ok := interface{}(m.GetUpstreamGroup()).(clone.Cloner); ok { + target.Destination = &RouteAction_UpstreamGroup{ + UpstreamGroup: h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } else { + target.Destination = &RouteAction_UpstreamGroup{ + UpstreamGroup: proto.Clone(m.GetUpstreamGroup()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } + + case *RouteAction_ClusterHeader: + + target.Destination = &RouteAction_ClusterHeader{ + ClusterHeader: m.GetClusterHeader(), + } + + case *RouteAction_DynamicForwardProxy: + + if h, ok := interface{}(m.GetDynamicForwardProxy()).(clone.Cloner); ok { + target.Destination = &RouteAction_DynamicForwardProxy{ + DynamicForwardProxy: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_dynamic_forward_proxy.PerRouteConfig), + } + } else { + target.Destination = &RouteAction_DynamicForwardProxy{ + DynamicForwardProxy: proto.Clone(m.GetDynamicForwardProxy()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_dynamic_forward_proxy.PerRouteConfig), + } + } + + } + + return target +} + +// Clone function +func (m *Destination) Clone() proto.Message { + var target *Destination + if m == nil { + return target + } + target = &Destination{} + + if h, ok := interface{}(m.GetDestinationSpec()).(clone.Cloner); ok { + target.DestinationSpec = h.Clone().(*DestinationSpec) + } else { + target.DestinationSpec = proto.Clone(m.GetDestinationSpec()).(*DestinationSpec) + } + + if h, ok := interface{}(m.GetSubset()).(clone.Cloner); ok { + target.Subset = h.Clone().(*Subset) + } else { + target.Subset = proto.Clone(m.GetSubset()).(*Subset) + } + + switch m.DestinationType.(type) { + + case *Destination_Upstream: + + if h, ok := interface{}(m.GetUpstream()).(clone.Cloner); ok { + target.DestinationType = &Destination_Upstream{ + Upstream: h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } else { + target.DestinationType = &Destination_Upstream{ + Upstream: proto.Clone(m.GetUpstream()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } + + case *Destination_Kube: + + if h, ok := interface{}(m.GetKube()).(clone.Cloner); ok { + target.DestinationType = &Destination_Kube{ + Kube: h.Clone().(*KubernetesServiceDestination), + } + } else { + target.DestinationType = &Destination_Kube{ + Kube: proto.Clone(m.GetKube()).(*KubernetesServiceDestination), + } + } + + case *Destination_Consul: + + if h, ok := interface{}(m.GetConsul()).(clone.Cloner); ok { + target.DestinationType = &Destination_Consul{ + Consul: h.Clone().(*ConsulServiceDestination), + } + } else { + target.DestinationType = &Destination_Consul{ + Consul: proto.Clone(m.GetConsul()).(*ConsulServiceDestination), + } + } + + } + + return target +} + +// Clone function +func (m *KubernetesServiceDestination) Clone() proto.Message { + var target *KubernetesServiceDestination + if m == nil { + return target + } + target = &KubernetesServiceDestination{} + + if h, ok := interface{}(m.GetRef()).(clone.Cloner); ok { + target.Ref = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.Ref = proto.Clone(m.GetRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + target.Port = m.GetPort() + + return target +} + +// Clone function +func (m *ConsulServiceDestination) Clone() proto.Message { + var target *ConsulServiceDestination + if m == nil { + return target + } + target = &ConsulServiceDestination{} + + target.ServiceName = m.GetServiceName() + + if m.GetTags() != nil { + target.Tags = make([]string, len(m.GetTags())) + for idx, v := range m.GetTags() { + + target.Tags[idx] = v + + } + } + + if m.GetDataCenters() != nil { + target.DataCenters = make([]string, len(m.GetDataCenters())) + for idx, v := range m.GetDataCenters() { + + target.DataCenters[idx] = v + + } + } + + return target +} + +// Clone function +func (m *UpstreamGroupSpec) Clone() proto.Message { + var target *UpstreamGroupSpec + if m == nil { + return target + } + target = &UpstreamGroupSpec{} + + if m.GetDestinations() != nil { + target.Destinations = make([]*WeightedDestination, len(m.GetDestinations())) + for idx, v := range m.GetDestinations() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Destinations[idx] = h.Clone().(*WeightedDestination) + } else { + target.Destinations[idx] = proto.Clone(v).(*WeightedDestination) + } + + } + } + + return target +} + +// Clone function +func (m *MultiDestination) Clone() proto.Message { + var target *MultiDestination + if m == nil { + return target + } + target = &MultiDestination{} + + if m.GetDestinations() != nil { + target.Destinations = make([]*WeightedDestination, len(m.GetDestinations())) + for idx, v := range m.GetDestinations() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Destinations[idx] = h.Clone().(*WeightedDestination) + } else { + target.Destinations[idx] = proto.Clone(v).(*WeightedDestination) + } + + } + } + + return target +} + +// Clone function +func (m *WeightedDestination) Clone() proto.Message { + var target *WeightedDestination + if m == nil { + return target + } + target = &WeightedDestination{} + + if h, ok := interface{}(m.GetDestination()).(clone.Cloner); ok { + target.Destination = h.Clone().(*Destination) + } else { + target.Destination = proto.Clone(m.GetDestination()).(*Destination) + } + + if h, ok := interface{}(m.GetWeight()).(clone.Cloner); ok { + target.Weight = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.Weight = proto.Clone(m.GetWeight()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetOptions()).(clone.Cloner); ok { + target.Options = h.Clone().(*WeightedDestinationOptions) + } else { + target.Options = proto.Clone(m.GetOptions()).(*WeightedDestinationOptions) + } + + return target +} + +// Clone function +func (m *RedirectAction) Clone() proto.Message { + var target *RedirectAction + if m == nil { + return target + } + target = &RedirectAction{} + + target.HostRedirect = m.GetHostRedirect() + + target.ResponseCode = m.GetResponseCode() + + target.HttpsRedirect = m.GetHttpsRedirect() + + target.StripQuery = m.GetStripQuery() + + if h, ok := interface{}(m.GetPortRedirect()).(clone.Cloner); ok { + target.PortRedirect = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.PortRedirect = proto.Clone(m.GetPortRedirect()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + switch m.PathRewriteSpecifier.(type) { + + case *RedirectAction_PathRedirect: + + target.PathRewriteSpecifier = &RedirectAction_PathRedirect{ + PathRedirect: m.GetPathRedirect(), + } + + case *RedirectAction_PrefixRewrite: + + target.PathRewriteSpecifier = &RedirectAction_PrefixRewrite{ + PrefixRewrite: m.GetPrefixRewrite(), + } + + case *RedirectAction_RegexRewrite: + + if h, ok := interface{}(m.GetRegexRewrite()).(clone.Cloner); ok { + target.PathRewriteSpecifier = &RedirectAction_RegexRewrite{ + RegexRewrite: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.RegexMatchAndSubstitute), + } + } else { + target.PathRewriteSpecifier = &RedirectAction_RegexRewrite{ + RegexRewrite: proto.Clone(m.GetRegexRewrite()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.RegexMatchAndSubstitute), + } + } + + } + + return target +} + +// Clone function +func (m *DirectResponseAction) Clone() proto.Message { + var target *DirectResponseAction + if m == nil { + return target + } + target = &DirectResponseAction{} + + target.Status = m.GetStatus() + + target.Body = m.GetBody() + + return target +} + +// Clone function +func (m *SourceMetadata) Clone() proto.Message { + var target *SourceMetadata + if m == nil { + return target + } + target = &SourceMetadata{} + + if m.GetSources() != nil { + target.Sources = make([]*SourceMetadata_SourceRef, len(m.GetSources())) + for idx, v := range m.GetSources() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Sources[idx] = h.Clone().(*SourceMetadata_SourceRef) + } else { + target.Sources[idx] = proto.Clone(v).(*SourceMetadata_SourceRef) + } + + } + } + + return target +} + +// Clone function +func (m *CustomEnvoyFilter) Clone() proto.Message { + var target *CustomEnvoyFilter + if m == nil { + return target + } + target = &CustomEnvoyFilter{} + + if h, ok := interface{}(m.GetFilterStage()).(clone.Cloner); ok { + target.FilterStage = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_filters.FilterStage) + } else { + target.FilterStage = proto.Clone(m.GetFilterStage()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_filters.FilterStage) + } + + target.Name = m.GetName() + + if h, ok := interface{}(m.GetConfig()).(clone.Cloner); ok { + target.Config = h.Clone().(*google_golang_org_protobuf_types_known_anypb.Any) + } else { + target.Config = proto.Clone(m.GetConfig()).(*google_golang_org_protobuf_types_known_anypb.Any) + } + + return target +} + +// Clone function +func (m *UpstreamGroupStatus) Clone() proto.Message { + var target *UpstreamGroupStatus + if m == nil { + return target + } + target = &UpstreamGroupStatus{} + + target.State = m.GetState() + + target.Reason = m.GetReason() + + target.ReportedBy = m.GetReportedBy() + + if m.GetSubresourceStatuses() != nil { + target.SubresourceStatuses = make(map[string]*UpstreamGroupStatus, len(m.GetSubresourceStatuses())) + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SubresourceStatuses[k] = h.Clone().(*UpstreamGroupStatus) + } else { + target.SubresourceStatuses[k] = proto.Clone(v).(*UpstreamGroupStatus) + } + + } + } + + if h, ok := interface{}(m.GetDetails()).(clone.Cloner); ok { + target.Details = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Details = proto.Clone(m.GetDetails()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + return target +} + +// Clone function +func (m *UpstreamGroupNamespacedStatuses) Clone() proto.Message { + var target *UpstreamGroupNamespacedStatuses + if m == nil { + return target + } + target = &UpstreamGroupNamespacedStatuses{} + + if m.GetStatuses() != nil { + target.Statuses = make(map[string]*UpstreamGroupStatus, len(m.GetStatuses())) + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Statuses[k] = h.Clone().(*UpstreamGroupStatus) + } else { + target.Statuses[k] = proto.Clone(v).(*UpstreamGroupStatus) + } + + } + } + + return target +} + +// Clone function +func (m *ProxyStatus) Clone() proto.Message { + var target *ProxyStatus + if m == nil { + return target + } + target = &ProxyStatus{} + + target.State = m.GetState() + + target.Reason = m.GetReason() + + target.ReportedBy = m.GetReportedBy() + + if m.GetSubresourceStatuses() != nil { + target.SubresourceStatuses = make(map[string]*ProxyStatus, len(m.GetSubresourceStatuses())) + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SubresourceStatuses[k] = h.Clone().(*ProxyStatus) + } else { + target.SubresourceStatuses[k] = proto.Clone(v).(*ProxyStatus) + } + + } + } + + if h, ok := interface{}(m.GetDetails()).(clone.Cloner); ok { + target.Details = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Details = proto.Clone(m.GetDetails()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + return target +} + +// Clone function +func (m *ProxyNamespacedStatuses) Clone() proto.Message { + var target *ProxyNamespacedStatuses + if m == nil { + return target + } + target = &ProxyNamespacedStatuses{} + + if m.GetStatuses() != nil { + target.Statuses = make(map[string]*ProxyStatus, len(m.GetStatuses())) + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Statuses[k] = h.Clone().(*ProxyStatus) + } else { + target.Statuses[k] = proto.Clone(v).(*ProxyStatus) + } + + } + } + + return target +} + +// Clone function +func (m *TcpHost_TcpAction) Clone() proto.Message { + var target *TcpHost_TcpAction + if m == nil { + return target + } + target = &TcpHost_TcpAction{} + + switch m.Destination.(type) { + + case *TcpHost_TcpAction_Single: + + if h, ok := interface{}(m.GetSingle()).(clone.Cloner); ok { + target.Destination = &TcpHost_TcpAction_Single{ + Single: h.Clone().(*Destination), + } + } else { + target.Destination = &TcpHost_TcpAction_Single{ + Single: proto.Clone(m.GetSingle()).(*Destination), + } + } + + case *TcpHost_TcpAction_Multi: + + if h, ok := interface{}(m.GetMulti()).(clone.Cloner); ok { + target.Destination = &TcpHost_TcpAction_Multi{ + Multi: h.Clone().(*MultiDestination), + } + } else { + target.Destination = &TcpHost_TcpAction_Multi{ + Multi: proto.Clone(m.GetMulti()).(*MultiDestination), + } + } + + case *TcpHost_TcpAction_UpstreamGroup: + + if h, ok := interface{}(m.GetUpstreamGroup()).(clone.Cloner); ok { + target.Destination = &TcpHost_TcpAction_UpstreamGroup{ + UpstreamGroup: h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } else { + target.Destination = &TcpHost_TcpAction_UpstreamGroup{ + UpstreamGroup: proto.Clone(m.GetUpstreamGroup()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } + + case *TcpHost_TcpAction_ForwardSniClusterName: + + if h, ok := interface{}(m.GetForwardSniClusterName()).(clone.Cloner); ok { + target.Destination = &TcpHost_TcpAction_ForwardSniClusterName{ + ForwardSniClusterName: h.Clone().(*google_golang_org_protobuf_types_known_emptypb.Empty), + } + } else { + target.Destination = &TcpHost_TcpAction_ForwardSniClusterName{ + ForwardSniClusterName: proto.Clone(m.GetForwardSniClusterName()).(*google_golang_org_protobuf_types_known_emptypb.Empty), + } + } + + } + + return target +} + +// Clone function +func (m *AggregateListener_HttpResources) Clone() proto.Message { + var target *AggregateListener_HttpResources + if m == nil { + return target + } + target = &AggregateListener_HttpResources{} + + if m.GetVirtualHosts() != nil { + target.VirtualHosts = make(map[string]*VirtualHost, len(m.GetVirtualHosts())) + for k, v := range m.GetVirtualHosts() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.VirtualHosts[k] = h.Clone().(*VirtualHost) + } else { + target.VirtualHosts[k] = proto.Clone(v).(*VirtualHost) + } + + } + } + + if m.GetHttpOptions() != nil { + target.HttpOptions = make(map[string]*HttpListenerOptions, len(m.GetHttpOptions())) + for k, v := range m.GetHttpOptions() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.HttpOptions[k] = h.Clone().(*HttpListenerOptions) + } else { + target.HttpOptions[k] = proto.Clone(v).(*HttpListenerOptions) + } + + } + } + + return target +} + +// Clone function +func (m *AggregateListener_HttpFilterChain) Clone() proto.Message { + var target *AggregateListener_HttpFilterChain + if m == nil { + return target + } + target = &AggregateListener_HttpFilterChain{} + + if h, ok := interface{}(m.GetMatcher()).(clone.Cloner); ok { + target.Matcher = h.Clone().(*Matcher) + } else { + target.Matcher = proto.Clone(m.GetMatcher()).(*Matcher) + } + + target.HttpOptionsRef = m.GetHttpOptionsRef() + + if m.GetVirtualHostRefs() != nil { + target.VirtualHostRefs = make([]string, len(m.GetVirtualHostRefs())) + for idx, v := range m.GetVirtualHostRefs() { + + target.VirtualHostRefs[idx] = v + + } + } + + if m.GetCustomHttpFilters() != nil { + target.CustomHttpFilters = make([]*CustomEnvoyFilter, len(m.GetCustomHttpFilters())) + for idx, v := range m.GetCustomHttpFilters() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.CustomHttpFilters[idx] = h.Clone().(*CustomEnvoyFilter) + } else { + target.CustomHttpFilters[idx] = proto.Clone(v).(*CustomEnvoyFilter) + } + + } + } + + if m.GetCustomNetworkFilters() != nil { + target.CustomNetworkFilters = make([]*CustomEnvoyFilter, len(m.GetCustomNetworkFilters())) + for idx, v := range m.GetCustomNetworkFilters() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.CustomNetworkFilters[idx] = h.Clone().(*CustomEnvoyFilter) + } else { + target.CustomNetworkFilters[idx] = proto.Clone(v).(*CustomEnvoyFilter) + } + + } + } + + return target +} + +// Clone function +func (m *SourceMetadata_SourceRef) Clone() proto.Message { + var target *SourceMetadata_SourceRef + if m == nil { + return target + } + target = &SourceMetadata_SourceRef{} + + if h, ok := interface{}(m.GetResourceRef()).(clone.Cloner); ok { + target.ResourceRef = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.ResourceRef = proto.Clone(m.GetResourceRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + target.ResourceKind = m.GetResourceKind() + + target.ObservedGeneration = m.GetObservedGeneration() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/proxy.pb.equal.go b/pkg/api/gloo.solo.io/v1/proxy.pb.equal.go index 9bb42970b..fec0e58aa 100644 --- a/pkg/api/gloo.solo.io/v1/proxy.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/proxy.pb.equal.go @@ -46,6 +46,10 @@ func (m *ProxySpec) Equal(that interface{}) bool { return false } + if strings.Compare(m.GetCompressedSpec(), target.GetCompressedSpec()) != 0 { + return false + } + if len(m.GetListeners()) != len(target.GetListeners()) { return false } @@ -136,16 +140,6 @@ func (m *Listener) Equal(that interface{}) bool { } } - if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadata()) { - return false - } - } else { - if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { - return false - } - } - if h, ok := interface{}(m.GetRouteOptions()).(equality.Equalizer); ok { if !h.Equal(target.GetRouteOptions()) { return false @@ -159,6 +153,9 @@ func (m *Listener) Equal(that interface{}) bool { switch m.ListenerType.(type) { case *Listener_HttpListener: + if _, ok := target.ListenerType.(*Listener_HttpListener); !ok { + return false + } if h, ok := interface{}(m.GetHttpListener()).(equality.Equalizer); ok { if !h.Equal(target.GetHttpListener()) { @@ -171,6 +168,9 @@ func (m *Listener) Equal(that interface{}) bool { } case *Listener_TcpListener: + if _, ok := target.ListenerType.(*Listener_TcpListener); !ok { + return false + } if h, ok := interface{}(m.GetTcpListener()).(equality.Equalizer); ok { if !h.Equal(target.GetTcpListener()) { @@ -182,6 +182,80 @@ func (m *Listener) Equal(that interface{}) bool { } } + case *Listener_HybridListener: + if _, ok := target.ListenerType.(*Listener_HybridListener); !ok { + return false + } + + if h, ok := interface{}(m.GetHybridListener()).(equality.Equalizer); ok { + if !h.Equal(target.GetHybridListener()) { + return false + } + } else { + if !proto.Equal(m.GetHybridListener(), target.GetHybridListener()) { + return false + } + } + + case *Listener_AggregateListener: + if _, ok := target.ListenerType.(*Listener_AggregateListener); !ok { + return false + } + + if h, ok := interface{}(m.GetAggregateListener()).(equality.Equalizer); ok { + if !h.Equal(target.GetAggregateListener()) { + return false + } + } else { + if !proto.Equal(m.GetAggregateListener(), target.GetAggregateListener()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.ListenerType != target.ListenerType { + return false + } + } + + switch m.OpaqueMetadata.(type) { + + case *Listener_Metadata: + if _, ok := target.OpaqueMetadata.(*Listener_Metadata); !ok { + return false + } + + if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { + if !h.Equal(target.GetMetadata()) { + return false + } + } else { + if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { + return false + } + } + + case *Listener_MetadataStatic: + if _, ok := target.OpaqueMetadata.(*Listener_MetadataStatic); !ok { + return false + } + + if h, ok := interface{}(m.GetMetadataStatic()).(equality.Equalizer); ok { + if !h.Equal(target.GetMetadataStatic()) { + return false + } + } else { + if !proto.Equal(m.GetMetadataStatic(), target.GetMetadataStatic()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.OpaqueMetadata != target.OpaqueMetadata { + return false + } } return true @@ -239,6 +313,23 @@ func (m *TcpListener) Equal(that interface{}) bool { return false } + if len(m.GetCustomNetworkFilters()) != len(target.GetCustomNetworkFilters()) { + return false + } + for idx, v := range m.GetCustomNetworkFilters() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetCustomNetworkFilters()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetCustomNetworkFilters()[idx]) { + return false + } + } + + } + return true } @@ -342,78 +433,75 @@ func (m *HttpListener) Equal(that interface{}) bool { return false } - return true -} - -// Equal function -func (m *VirtualHost) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*VirtualHost) - if !ok { - that2, ok := that.(VirtualHost) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if strings.Compare(m.GetName(), target.GetName()) != 0 { - return false - } - - if len(m.GetDomains()) != len(target.GetDomains()) { + if len(m.GetCustomHttpFilters()) != len(target.GetCustomHttpFilters()) { return false } - for idx, v := range m.GetDomains() { + for idx, v := range m.GetCustomHttpFilters() { - if strings.Compare(v, target.GetDomains()[idx]) != 0 { - return false + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetCustomHttpFilters()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetCustomHttpFilters()[idx]) { + return false + } } } - if len(m.GetRoutes()) != len(target.GetRoutes()) { + if len(m.GetCustomNetworkFilters()) != len(target.GetCustomNetworkFilters()) { return false } - for idx, v := range m.GetRoutes() { + for idx, v := range m.GetCustomNetworkFilters() { if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetRoutes()[idx]) { + if !h.Equal(target.GetCustomNetworkFilters()[idx]) { return false } } else { - if !proto.Equal(v, target.GetRoutes()[idx]) { + if !proto.Equal(v, target.GetCustomNetworkFilters()[idx]) { return false } } } - if h, ok := interface{}(m.GetOptions()).(equality.Equalizer); ok { - if !h.Equal(target.GetOptions()) { + switch m.OpaqueMetadata.(type) { + + case *HttpListener_Metadata: + if _, ok := target.OpaqueMetadata.(*HttpListener_Metadata); !ok { return false } - } else { - if !proto.Equal(m.GetOptions(), target.GetOptions()) { - return false + + if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { + if !h.Equal(target.GetMetadata()) { + return false + } + } else { + if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { + return false + } } - } - if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadata()) { + case *HttpListener_MetadataStatic: + if _, ok := target.OpaqueMetadata.(*HttpListener_MetadataStatic); !ok { return false } - } else { - if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { + + if h, ok := interface{}(m.GetMetadataStatic()).(equality.Equalizer); ok { + if !h.Equal(target.GetMetadataStatic()) { + return false + } + } else { + if !proto.Equal(m.GetMetadataStatic(), target.GetMetadataStatic()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.OpaqueMetadata != target.OpaqueMetadata { return false } } @@ -422,14 +510,14 @@ func (m *VirtualHost) Equal(that interface{}) bool { } // Equal function -func (m *Route) Equal(that interface{}) bool { +func (m *HybridListener) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*Route) + target, ok := that.(*HybridListener) if !ok { - that2, ok := that.(Route) + that2, ok := that.(HybridListener) if ok { target = &that2 } else { @@ -442,99 +530,125 @@ func (m *Route) Equal(that interface{}) bool { return false } - if len(m.GetMatchers()) != len(target.GetMatchers()) { + if len(m.GetMatchedListeners()) != len(target.GetMatchedListeners()) { return false } - for idx, v := range m.GetMatchers() { + for idx, v := range m.GetMatchedListeners() { if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetMatchers()[idx]) { + if !h.Equal(target.GetMatchedListeners()[idx]) { return false } } else { - if !proto.Equal(v, target.GetMatchers()[idx]) { + if !proto.Equal(v, target.GetMatchedListeners()[idx]) { return false } } } - if h, ok := interface{}(m.GetOptions()).(equality.Equalizer); ok { - if !h.Equal(target.GetOptions()) { - return false - } - } else { - if !proto.Equal(m.GetOptions(), target.GetOptions()) { + return true +} + +// Equal function +func (m *MatchedListener) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*MatchedListener) + if !ok { + that2, ok := that.(MatchedListener) + if ok { + target = &that2 + } else { return false } } + if target == nil { + return m == nil + } else if m == nil { + return false + } - if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadata()) { + if h, ok := interface{}(m.GetMatcher()).(equality.Equalizer); ok { + if !h.Equal(target.GetMatcher()) { return false } } else { - if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { + if !proto.Equal(m.GetMatcher(), target.GetMatcher()) { return false } } - if strings.Compare(m.GetName(), target.GetName()) != 0 { + if len(m.GetSslConfigurations()) != len(target.GetSslConfigurations()) { return false } + for idx, v := range m.GetSslConfigurations() { - switch m.Action.(type) { - - case *Route_RouteAction: - - if h, ok := interface{}(m.GetRouteAction()).(equality.Equalizer); ok { - if !h.Equal(target.GetRouteAction()) { + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetSslConfigurations()[idx]) { return false } } else { - if !proto.Equal(m.GetRouteAction(), target.GetRouteAction()) { + if !proto.Equal(v, target.GetSslConfigurations()[idx]) { return false } } - case *Route_RedirectAction: + } - if h, ok := interface{}(m.GetRedirectAction()).(equality.Equalizer); ok { - if !h.Equal(target.GetRedirectAction()) { + switch m.ListenerType.(type) { + + case *MatchedListener_HttpListener: + if _, ok := target.ListenerType.(*MatchedListener_HttpListener); !ok { + return false + } + + if h, ok := interface{}(m.GetHttpListener()).(equality.Equalizer); ok { + if !h.Equal(target.GetHttpListener()) { return false } } else { - if !proto.Equal(m.GetRedirectAction(), target.GetRedirectAction()) { + if !proto.Equal(m.GetHttpListener(), target.GetHttpListener()) { return false } } - case *Route_DirectResponseAction: + case *MatchedListener_TcpListener: + if _, ok := target.ListenerType.(*MatchedListener_TcpListener); !ok { + return false + } - if h, ok := interface{}(m.GetDirectResponseAction()).(equality.Equalizer); ok { - if !h.Equal(target.GetDirectResponseAction()) { + if h, ok := interface{}(m.GetTcpListener()).(equality.Equalizer); ok { + if !h.Equal(target.GetTcpListener()) { return false } } else { - if !proto.Equal(m.GetDirectResponseAction(), target.GetDirectResponseAction()) { + if !proto.Equal(m.GetTcpListener(), target.GetTcpListener()) { return false } } + default: + // m is nil but target is not nil + if m.ListenerType != target.ListenerType { + return false + } } return true } // Equal function -func (m *RouteAction) Equal(that interface{}) bool { +func (m *MatchedTcpListener) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*RouteAction) + target, ok := that.(*MatchedTcpListener) if !ok { - that2, ok := that.(RouteAction) + that2, ok := that.(MatchedTcpListener) if ok { target = &that2 } else { @@ -547,64 +661,38 @@ func (m *RouteAction) Equal(that interface{}) bool { return false } - switch m.Destination.(type) { - - case *RouteAction_Single: - - if h, ok := interface{}(m.GetSingle()).(equality.Equalizer); ok { - if !h.Equal(target.GetSingle()) { - return false - } - } else { - if !proto.Equal(m.GetSingle(), target.GetSingle()) { - return false - } + if h, ok := interface{}(m.GetMatcher()).(equality.Equalizer); ok { + if !h.Equal(target.GetMatcher()) { + return false } - - case *RouteAction_Multi: - - if h, ok := interface{}(m.GetMulti()).(equality.Equalizer); ok { - if !h.Equal(target.GetMulti()) { - return false - } - } else { - if !proto.Equal(m.GetMulti(), target.GetMulti()) { - return false - } + } else { + if !proto.Equal(m.GetMatcher(), target.GetMatcher()) { + return false } + } - case *RouteAction_UpstreamGroup: - - if h, ok := interface{}(m.GetUpstreamGroup()).(equality.Equalizer); ok { - if !h.Equal(target.GetUpstreamGroup()) { - return false - } - } else { - if !proto.Equal(m.GetUpstreamGroup(), target.GetUpstreamGroup()) { - return false - } + if h, ok := interface{}(m.GetTcpListener()).(equality.Equalizer); ok { + if !h.Equal(target.GetTcpListener()) { + return false } - - case *RouteAction_ClusterHeader: - - if strings.Compare(m.GetClusterHeader(), target.GetClusterHeader()) != 0 { + } else { + if !proto.Equal(m.GetTcpListener(), target.GetTcpListener()) { return false } - } return true } // Equal function -func (m *Destination) Equal(that interface{}) bool { +func (m *Matcher) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*Destination) + target, ok := that.(*Matcher) if !ok { - that2, ok := that.(Destination) + that2, ok := that.(Matcher) if ok { target = &that2 } else { @@ -617,7 +705,519 @@ func (m *Destination) Equal(that interface{}) bool { return false } - if h, ok := interface{}(m.GetDestinationSpec()).(equality.Equalizer); ok { + if h, ok := interface{}(m.GetSslConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetSslConfig()) { + return false + } + } else { + if !proto.Equal(m.GetSslConfig(), target.GetSslConfig()) { + return false + } + } + + if len(m.GetSourcePrefixRanges()) != len(target.GetSourcePrefixRanges()) { + return false + } + for idx, v := range m.GetSourcePrefixRanges() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetSourcePrefixRanges()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetSourcePrefixRanges()[idx]) { + return false + } + } + + } + + if len(m.GetPrefixRanges()) != len(target.GetPrefixRanges()) { + return false + } + for idx, v := range m.GetPrefixRanges() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetPrefixRanges()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetPrefixRanges()[idx]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetDestinationPort()).(equality.Equalizer); ok { + if !h.Equal(target.GetDestinationPort()) { + return false + } + } else { + if !proto.Equal(m.GetDestinationPort(), target.GetDestinationPort()) { + return false + } + } + + if len(m.GetPassthroughCipherSuites()) != len(target.GetPassthroughCipherSuites()) { + return false + } + for idx, v := range m.GetPassthroughCipherSuites() { + + if strings.Compare(v, target.GetPassthroughCipherSuites()[idx]) != 0 { + return false + } + + } + + return true +} + +// Equal function +func (m *AggregateListener) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AggregateListener) + if !ok { + that2, ok := that.(AggregateListener) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetHttpResources()).(equality.Equalizer); ok { + if !h.Equal(target.GetHttpResources()) { + return false + } + } else { + if !proto.Equal(m.GetHttpResources(), target.GetHttpResources()) { + return false + } + } + + if len(m.GetHttpFilterChains()) != len(target.GetHttpFilterChains()) { + return false + } + for idx, v := range m.GetHttpFilterChains() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetHttpFilterChains()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetHttpFilterChains()[idx]) { + return false + } + } + + } + + if len(m.GetTcpListeners()) != len(target.GetTcpListeners()) { + return false + } + for idx, v := range m.GetTcpListeners() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetTcpListeners()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetTcpListeners()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *VirtualHost) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*VirtualHost) + if !ok { + that2, ok := that.(VirtualHost) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetName(), target.GetName()) != 0 { + return false + } + + if len(m.GetDomains()) != len(target.GetDomains()) { + return false + } + for idx, v := range m.GetDomains() { + + if strings.Compare(v, target.GetDomains()[idx]) != 0 { + return false + } + + } + + if len(m.GetRoutes()) != len(target.GetRoutes()) { + return false + } + for idx, v := range m.GetRoutes() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetRoutes()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetRoutes()[idx]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetOptions()) { + return false + } + } else { + if !proto.Equal(m.GetOptions(), target.GetOptions()) { + return false + } + } + + switch m.OpaqueMetadata.(type) { + + case *VirtualHost_Metadata: + if _, ok := target.OpaqueMetadata.(*VirtualHost_Metadata); !ok { + return false + } + + if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { + if !h.Equal(target.GetMetadata()) { + return false + } + } else { + if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { + return false + } + } + + case *VirtualHost_MetadataStatic: + if _, ok := target.OpaqueMetadata.(*VirtualHost_MetadataStatic); !ok { + return false + } + + if h, ok := interface{}(m.GetMetadataStatic()).(equality.Equalizer); ok { + if !h.Equal(target.GetMetadataStatic()) { + return false + } + } else { + if !proto.Equal(m.GetMetadataStatic(), target.GetMetadataStatic()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.OpaqueMetadata != target.OpaqueMetadata { + return false + } + } + + return true +} + +// Equal function +func (m *Route) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Route) + if !ok { + that2, ok := that.(Route) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetMatchers()) != len(target.GetMatchers()) { + return false + } + for idx, v := range m.GetMatchers() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetMatchers()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetMatchers()[idx]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetOptions()) { + return false + } + } else { + if !proto.Equal(m.GetOptions(), target.GetOptions()) { + return false + } + } + + if strings.Compare(m.GetName(), target.GetName()) != 0 { + return false + } + + switch m.Action.(type) { + + case *Route_RouteAction: + if _, ok := target.Action.(*Route_RouteAction); !ok { + return false + } + + if h, ok := interface{}(m.GetRouteAction()).(equality.Equalizer); ok { + if !h.Equal(target.GetRouteAction()) { + return false + } + } else { + if !proto.Equal(m.GetRouteAction(), target.GetRouteAction()) { + return false + } + } + + case *Route_RedirectAction: + if _, ok := target.Action.(*Route_RedirectAction); !ok { + return false + } + + if h, ok := interface{}(m.GetRedirectAction()).(equality.Equalizer); ok { + if !h.Equal(target.GetRedirectAction()) { + return false + } + } else { + if !proto.Equal(m.GetRedirectAction(), target.GetRedirectAction()) { + return false + } + } + + case *Route_DirectResponseAction: + if _, ok := target.Action.(*Route_DirectResponseAction); !ok { + return false + } + + if h, ok := interface{}(m.GetDirectResponseAction()).(equality.Equalizer); ok { + if !h.Equal(target.GetDirectResponseAction()) { + return false + } + } else { + if !proto.Equal(m.GetDirectResponseAction(), target.GetDirectResponseAction()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.Action != target.Action { + return false + } + } + + switch m.OpaqueMetadata.(type) { + + case *Route_Metadata: + if _, ok := target.OpaqueMetadata.(*Route_Metadata); !ok { + return false + } + + if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { + if !h.Equal(target.GetMetadata()) { + return false + } + } else { + if !proto.Equal(m.GetMetadata(), target.GetMetadata()) { + return false + } + } + + case *Route_MetadataStatic: + if _, ok := target.OpaqueMetadata.(*Route_MetadataStatic); !ok { + return false + } + + if h, ok := interface{}(m.GetMetadataStatic()).(equality.Equalizer); ok { + if !h.Equal(target.GetMetadataStatic()) { + return false + } + } else { + if !proto.Equal(m.GetMetadataStatic(), target.GetMetadataStatic()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.OpaqueMetadata != target.OpaqueMetadata { + return false + } + } + + return true +} + +// Equal function +func (m *RouteAction) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RouteAction) + if !ok { + that2, ok := that.(RouteAction) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + switch m.Destination.(type) { + + case *RouteAction_Single: + if _, ok := target.Destination.(*RouteAction_Single); !ok { + return false + } + + if h, ok := interface{}(m.GetSingle()).(equality.Equalizer); ok { + if !h.Equal(target.GetSingle()) { + return false + } + } else { + if !proto.Equal(m.GetSingle(), target.GetSingle()) { + return false + } + } + + case *RouteAction_Multi: + if _, ok := target.Destination.(*RouteAction_Multi); !ok { + return false + } + + if h, ok := interface{}(m.GetMulti()).(equality.Equalizer); ok { + if !h.Equal(target.GetMulti()) { + return false + } + } else { + if !proto.Equal(m.GetMulti(), target.GetMulti()) { + return false + } + } + + case *RouteAction_UpstreamGroup: + if _, ok := target.Destination.(*RouteAction_UpstreamGroup); !ok { + return false + } + + if h, ok := interface{}(m.GetUpstreamGroup()).(equality.Equalizer); ok { + if !h.Equal(target.GetUpstreamGroup()) { + return false + } + } else { + if !proto.Equal(m.GetUpstreamGroup(), target.GetUpstreamGroup()) { + return false + } + } + + case *RouteAction_ClusterHeader: + if _, ok := target.Destination.(*RouteAction_ClusterHeader); !ok { + return false + } + + if strings.Compare(m.GetClusterHeader(), target.GetClusterHeader()) != 0 { + return false + } + + case *RouteAction_DynamicForwardProxy: + if _, ok := target.Destination.(*RouteAction_DynamicForwardProxy); !ok { + return false + } + + if h, ok := interface{}(m.GetDynamicForwardProxy()).(equality.Equalizer); ok { + if !h.Equal(target.GetDynamicForwardProxy()) { + return false + } + } else { + if !proto.Equal(m.GetDynamicForwardProxy(), target.GetDynamicForwardProxy()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.Destination != target.Destination { + return false + } + } + + return true +} + +// Equal function +func (m *Destination) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Destination) + if !ok { + that2, ok := that.(Destination) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetDestinationSpec()).(equality.Equalizer); ok { if !h.Equal(target.GetDestinationSpec()) { return false } @@ -640,6 +1240,9 @@ func (m *Destination) Equal(that interface{}) bool { switch m.DestinationType.(type) { case *Destination_Upstream: + if _, ok := target.DestinationType.(*Destination_Upstream); !ok { + return false + } if h, ok := interface{}(m.GetUpstream()).(equality.Equalizer); ok { if !h.Equal(target.GetUpstream()) { @@ -652,6 +1255,9 @@ func (m *Destination) Equal(that interface{}) bool { } case *Destination_Kube: + if _, ok := target.DestinationType.(*Destination_Kube); !ok { + return false + } if h, ok := interface{}(m.GetKube()).(equality.Equalizer); ok { if !h.Equal(target.GetKube()) { @@ -664,6 +1270,9 @@ func (m *Destination) Equal(that interface{}) bool { } case *Destination_Consul: + if _, ok := target.DestinationType.(*Destination_Consul); !ok { + return false + } if h, ok := interface{}(m.GetConsul()).(equality.Equalizer); ok { if !h.Equal(target.GetConsul()) { @@ -675,6 +1284,11 @@ func (m *Destination) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.DestinationType != target.DestinationType { + return false + } } return true @@ -833,14 +1447,233 @@ func (m *MultiDestination) Equal(that interface{}) bool { if len(m.GetDestinations()) != len(target.GetDestinations()) { return false } - for idx, v := range m.GetDestinations() { + for idx, v := range m.GetDestinations() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetDestinations()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetDestinations()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *WeightedDestination) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*WeightedDestination) + if !ok { + that2, ok := that.(WeightedDestination) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetDestination()).(equality.Equalizer); ok { + if !h.Equal(target.GetDestination()) { + return false + } + } else { + if !proto.Equal(m.GetDestination(), target.GetDestination()) { + return false + } + } + + if h, ok := interface{}(m.GetWeight()).(equality.Equalizer); ok { + if !h.Equal(target.GetWeight()) { + return false + } + } else { + if !proto.Equal(m.GetWeight(), target.GetWeight()) { + return false + } + } + + if h, ok := interface{}(m.GetOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetOptions()) { + return false + } + } else { + if !proto.Equal(m.GetOptions(), target.GetOptions()) { + return false + } + } + + return true +} + +// Equal function +func (m *RedirectAction) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RedirectAction) + if !ok { + that2, ok := that.(RedirectAction) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetHostRedirect(), target.GetHostRedirect()) != 0 { + return false + } + + if m.GetResponseCode() != target.GetResponseCode() { + return false + } + + if m.GetHttpsRedirect() != target.GetHttpsRedirect() { + return false + } + + if m.GetStripQuery() != target.GetStripQuery() { + return false + } + + if h, ok := interface{}(m.GetPortRedirect()).(equality.Equalizer); ok { + if !h.Equal(target.GetPortRedirect()) { + return false + } + } else { + if !proto.Equal(m.GetPortRedirect(), target.GetPortRedirect()) { + return false + } + } + + switch m.PathRewriteSpecifier.(type) { + + case *RedirectAction_PathRedirect: + if _, ok := target.PathRewriteSpecifier.(*RedirectAction_PathRedirect); !ok { + return false + } + + if strings.Compare(m.GetPathRedirect(), target.GetPathRedirect()) != 0 { + return false + } + + case *RedirectAction_PrefixRewrite: + if _, ok := target.PathRewriteSpecifier.(*RedirectAction_PrefixRewrite); !ok { + return false + } + + if strings.Compare(m.GetPrefixRewrite(), target.GetPrefixRewrite()) != 0 { + return false + } + + case *RedirectAction_RegexRewrite: + if _, ok := target.PathRewriteSpecifier.(*RedirectAction_RegexRewrite); !ok { + return false + } + + if h, ok := interface{}(m.GetRegexRewrite()).(equality.Equalizer); ok { + if !h.Equal(target.GetRegexRewrite()) { + return false + } + } else { + if !proto.Equal(m.GetRegexRewrite(), target.GetRegexRewrite()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.PathRewriteSpecifier != target.PathRewriteSpecifier { + return false + } + } + + return true +} + +// Equal function +func (m *DirectResponseAction) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*DirectResponseAction) + if !ok { + that2, ok := that.(DirectResponseAction) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetStatus() != target.GetStatus() { + return false + } + + if strings.Compare(m.GetBody(), target.GetBody()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *SourceMetadata) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*SourceMetadata) + if !ok { + that2, ok := that.(SourceMetadata) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetSources()) != len(target.GetSources()) { + return false + } + for idx, v := range m.GetSources() { if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetDestinations()[idx]) { + if !h.Equal(target.GetSources()[idx]) { return false } } else { - if !proto.Equal(v, target.GetDestinations()[idx]) { + if !proto.Equal(v, target.GetSources()[idx]) { return false } } @@ -851,14 +1684,14 @@ func (m *MultiDestination) Equal(that interface{}) bool { } // Equal function -func (m *WeightedDestination) Equal(that interface{}) bool { +func (m *CustomEnvoyFilter) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*WeightedDestination) + target, ok := that.(*CustomEnvoyFilter) if !ok { - that2, ok := that.(WeightedDestination) + that2, ok := that.(CustomEnvoyFilter) if ok { target = &that2 } else { @@ -871,26 +1704,26 @@ func (m *WeightedDestination) Equal(that interface{}) bool { return false } - if h, ok := interface{}(m.GetDestination()).(equality.Equalizer); ok { - if !h.Equal(target.GetDestination()) { + if h, ok := interface{}(m.GetFilterStage()).(equality.Equalizer); ok { + if !h.Equal(target.GetFilterStage()) { return false } } else { - if !proto.Equal(m.GetDestination(), target.GetDestination()) { + if !proto.Equal(m.GetFilterStage(), target.GetFilterStage()) { return false } } - if m.GetWeight() != target.GetWeight() { + if strings.Compare(m.GetName(), target.GetName()) != 0 { return false } - if h, ok := interface{}(m.GetOptions()).(equality.Equalizer); ok { - if !h.Equal(target.GetOptions()) { + if h, ok := interface{}(m.GetConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetConfig()) { return false } } else { - if !proto.Equal(m.GetOptions(), target.GetOptions()) { + if !proto.Equal(m.GetConfig(), target.GetConfig()) { return false } } @@ -899,14 +1732,14 @@ func (m *WeightedDestination) Equal(that interface{}) bool { } // Equal function -func (m *RedirectAction) Equal(that interface{}) bool { +func (m *UpstreamGroupStatus) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*RedirectAction) + target, ok := that.(*UpstreamGroupStatus) if !ok { - that2, ok := that.(RedirectAction) + that2, ok := that.(UpstreamGroupStatus) if ok { target = &that2 } else { @@ -919,50 +1752,57 @@ func (m *RedirectAction) Equal(that interface{}) bool { return false } - if strings.Compare(m.GetHostRedirect(), target.GetHostRedirect()) != 0 { + if m.GetState() != target.GetState() { return false } - if m.GetResponseCode() != target.GetResponseCode() { + if strings.Compare(m.GetReason(), target.GetReason()) != 0 { return false } - if m.GetHttpsRedirect() != target.GetHttpsRedirect() { + if strings.Compare(m.GetReportedBy(), target.GetReportedBy()) != 0 { return false } - if m.GetStripQuery() != target.GetStripQuery() { + if len(m.GetSubresourceStatuses()) != len(target.GetSubresourceStatuses()) { return false } + for k, v := range m.GetSubresourceStatuses() { - switch m.PathRewriteSpecifier.(type) { + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetSubresourceStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetSubresourceStatuses()[k]) { + return false + } + } - case *RedirectAction_PathRedirect: + } - if strings.Compare(m.GetPathRedirect(), target.GetPathRedirect()) != 0 { + if h, ok := interface{}(m.GetDetails()).(equality.Equalizer); ok { + if !h.Equal(target.GetDetails()) { return false } - - case *RedirectAction_PrefixRewrite: - - if strings.Compare(m.GetPrefixRewrite(), target.GetPrefixRewrite()) != 0 { + } else { + if !proto.Equal(m.GetDetails(), target.GetDetails()) { return false } - } return true } // Equal function -func (m *DirectResponseAction) Equal(that interface{}) bool { +func (m *UpstreamGroupNamespacedStatuses) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*DirectResponseAction) + target, ok := that.(*UpstreamGroupNamespacedStatuses) if !ok { - that2, ok := that.(DirectResponseAction) + that2, ok := that.(UpstreamGroupNamespacedStatuses) if ok { target = &that2 } else { @@ -975,26 +1815,35 @@ func (m *DirectResponseAction) Equal(that interface{}) bool { return false } - if m.GetStatus() != target.GetStatus() { + if len(m.GetStatuses()) != len(target.GetStatuses()) { return false } + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetStatuses()[k]) { + return false + } + } - if strings.Compare(m.GetBody(), target.GetBody()) != 0 { - return false } return true } // Equal function -func (m *UpstreamGroupStatus) Equal(that interface{}) bool { +func (m *ProxyStatus) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*UpstreamGroupStatus) + target, ok := that.(*ProxyStatus) if !ok { - that2, ok := that.(UpstreamGroupStatus) + that2, ok := that.(ProxyStatus) if ok { target = &that2 } else { @@ -1050,14 +1899,14 @@ func (m *UpstreamGroupStatus) Equal(that interface{}) bool { } // Equal function -func (m *ProxyStatus) Equal(that interface{}) bool { +func (m *ProxyNamespacedStatuses) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*ProxyStatus) + target, ok := that.(*ProxyNamespacedStatuses) if !ok { - that2, ok := that.(ProxyStatus) + that2, ok := that.(ProxyNamespacedStatuses) if ok { target = &that2 } else { @@ -1070,45 +1919,23 @@ func (m *ProxyStatus) Equal(that interface{}) bool { return false } - if m.GetState() != target.GetState() { - return false - } - - if strings.Compare(m.GetReason(), target.GetReason()) != 0 { - return false - } - - if strings.Compare(m.GetReportedBy(), target.GetReportedBy()) != 0 { - return false - } - - if len(m.GetSubresourceStatuses()) != len(target.GetSubresourceStatuses()) { + if len(m.GetStatuses()) != len(target.GetStatuses()) { return false } - for k, v := range m.GetSubresourceStatuses() { + for k, v := range m.GetStatuses() { if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetSubresourceStatuses()[k]) { + if !h.Equal(target.GetStatuses()[k]) { return false } } else { - if !proto.Equal(v, target.GetSubresourceStatuses()[k]) { + if !proto.Equal(v, target.GetStatuses()[k]) { return false } } } - if h, ok := interface{}(m.GetDetails()).(equality.Equalizer); ok { - if !h.Equal(target.GetDetails()) { - return false - } - } else { - if !proto.Equal(m.GetDetails(), target.GetDetails()) { - return false - } - } - return true } @@ -1136,6 +1963,9 @@ func (m *TcpHost_TcpAction) Equal(that interface{}) bool { switch m.Destination.(type) { case *TcpHost_TcpAction_Single: + if _, ok := target.Destination.(*TcpHost_TcpAction_Single); !ok { + return false + } if h, ok := interface{}(m.GetSingle()).(equality.Equalizer); ok { if !h.Equal(target.GetSingle()) { @@ -1148,6 +1978,9 @@ func (m *TcpHost_TcpAction) Equal(that interface{}) bool { } case *TcpHost_TcpAction_Multi: + if _, ok := target.Destination.(*TcpHost_TcpAction_Multi); !ok { + return false + } if h, ok := interface{}(m.GetMulti()).(equality.Equalizer); ok { if !h.Equal(target.GetMulti()) { @@ -1160,6 +1993,9 @@ func (m *TcpHost_TcpAction) Equal(that interface{}) bool { } case *TcpHost_TcpAction_UpstreamGroup: + if _, ok := target.Destination.(*TcpHost_TcpAction_UpstreamGroup); !ok { + return false + } if h, ok := interface{}(m.GetUpstreamGroup()).(equality.Equalizer); ok { if !h.Equal(target.GetUpstreamGroup()) { @@ -1172,6 +2008,9 @@ func (m *TcpHost_TcpAction) Equal(that interface{}) bool { } case *TcpHost_TcpAction_ForwardSniClusterName: + if _, ok := target.Destination.(*TcpHost_TcpAction_ForwardSniClusterName); !ok { + return false + } if h, ok := interface{}(m.GetForwardSniClusterName()).(equality.Equalizer); ok { if !h.Equal(target.GetForwardSniClusterName()) { @@ -1183,6 +2022,194 @@ func (m *TcpHost_TcpAction) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.Destination != target.Destination { + return false + } + } + + return true +} + +// Equal function +func (m *AggregateListener_HttpResources) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AggregateListener_HttpResources) + if !ok { + that2, ok := that.(AggregateListener_HttpResources) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetVirtualHosts()) != len(target.GetVirtualHosts()) { + return false + } + for k, v := range m.GetVirtualHosts() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetVirtualHosts()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetVirtualHosts()[k]) { + return false + } + } + + } + + if len(m.GetHttpOptions()) != len(target.GetHttpOptions()) { + return false + } + for k, v := range m.GetHttpOptions() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetHttpOptions()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetHttpOptions()[k]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *AggregateListener_HttpFilterChain) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AggregateListener_HttpFilterChain) + if !ok { + that2, ok := that.(AggregateListener_HttpFilterChain) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetMatcher()).(equality.Equalizer); ok { + if !h.Equal(target.GetMatcher()) { + return false + } + } else { + if !proto.Equal(m.GetMatcher(), target.GetMatcher()) { + return false + } + } + + if strings.Compare(m.GetHttpOptionsRef(), target.GetHttpOptionsRef()) != 0 { + return false + } + + if len(m.GetVirtualHostRefs()) != len(target.GetVirtualHostRefs()) { + return false + } + for idx, v := range m.GetVirtualHostRefs() { + + if strings.Compare(v, target.GetVirtualHostRefs()[idx]) != 0 { + return false + } + + } + + if len(m.GetCustomHttpFilters()) != len(target.GetCustomHttpFilters()) { + return false + } + for idx, v := range m.GetCustomHttpFilters() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetCustomHttpFilters()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetCustomHttpFilters()[idx]) { + return false + } + } + + } + + if len(m.GetCustomNetworkFilters()) != len(target.GetCustomNetworkFilters()) { + return false + } + for idx, v := range m.GetCustomNetworkFilters() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetCustomNetworkFilters()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetCustomNetworkFilters()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *SourceMetadata_SourceRef) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*SourceMetadata_SourceRef) + if !ok { + that2, ok := that.(SourceMetadata_SourceRef) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetResourceRef()).(equality.Equalizer); ok { + if !h.Equal(target.GetResourceRef()) { + return false + } + } else { + if !proto.Equal(m.GetResourceRef(), target.GetResourceRef()) { + return false + } + } + + if strings.Compare(m.GetResourceKind(), target.GetResourceKind()) != 0 { + return false + } + + if m.GetObservedGeneration() != target.GetObservedGeneration() { + return false } return true diff --git a/pkg/api/gloo.solo.io/v1/proxy.pb.go b/pkg/api/gloo.solo.io/v1/proxy.pb.go index 4efd03783..a8f7330b6 100644 --- a/pkg/api/gloo.solo.io/v1/proxy.pb.go +++ b/pkg/api/gloo.solo.io/v1/proxy.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/proxy.proto @@ -9,16 +9,22 @@ package v1 import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - empty "github.com/golang/protobuf/ptypes/empty" - _struct "github.com/golang/protobuf/ptypes/struct" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3" + v31 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3" matchers "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/core/matchers" + filters "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/filters" + dynamic_forward_proxy "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy" + ssl "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl" core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" + emptypb "google.golang.org/protobuf/types/known/emptypb" + structpb "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -28,10 +34,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type RedirectAction_RedirectResponseCode int32 const ( @@ -89,7 +91,7 @@ func (x RedirectAction_RedirectResponseCode) Number() protoreflect.EnumNumber { // Deprecated: Use RedirectAction_RedirectResponseCode.Descriptor instead. func (RedirectAction_RedirectResponseCode) EnumDescriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{14, 0} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{19, 0} } type UpstreamGroupStatus_State int32 @@ -147,7 +149,7 @@ func (x UpstreamGroupStatus_State) Number() protoreflect.EnumNumber { // Deprecated: Use UpstreamGroupStatus_State.Descriptor instead. func (UpstreamGroupStatus_State) EnumDescriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{16, 0} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{23, 0} } type ProxyStatus_State int32 @@ -205,39 +207,37 @@ func (x ProxyStatus_State) Number() protoreflect.EnumNumber { // Deprecated: Use ProxyStatus_State.Descriptor instead. func (ProxyStatus_State) EnumDescriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{17, 0} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{25, 0} } +// A Proxy is a container for the entire set of configuration that will to be applied to one or more Proxy instances. +// Proxies can be understood as a set of listeners, represents a different bind address/port where the proxy will listen +// for connections. Each listener has its own set of configuration. // -//A Proxy is a container for the entire set of configuration that will to be applied to one or more Proxy instances. -//Proxies can be understood as a set of listeners, represents a different bind address/port where the proxy will listen -//for connections. Each listener has its own set of configuration. -// -//If any of the sub-resources within a listener is declared invalid (e.g. due to invalid user configuration), the -//proxy will be marked invalid by Gloo. +// If any of the sub-resources within a listener is declared invalid (e.g. due to invalid user configuration), the +// proxy will be marked invalid by Gloo. // -//Proxy instances that register with Gloo are assigned the proxy configuration corresponding with -//a proxy-specific identifier. +// Proxy instances that register with Gloo are assigned the proxy configuration corresponding with +// a proxy-specific identifier. // In the case of Envoy, proxy instances are identified by their Node ID. Node IDs must match a existing Proxy // Node ID can be specified in Envoy with the `--service-node` flag, or in the Envoy instance's bootstrap config. type ProxySpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` + // This field is populated when the proxy compression is turned on. + CompressedSpec string `protobuf:"bytes,3,opt,name=compressedSpec,proto3" json:"compressedSpec,omitempty"` // Define here each listener the proxy should create. // Listeners define the a set of behaviors for a single bind address/port where the proxy will listen // If no listeners are specified, the instances configured with the proxy resource will not accept connections. - Listeners []*Listener `protobuf:"bytes,2,rep,name=listeners,proto3" json:"listeners,omitempty"` + Listeners []*Listener `protobuf:"bytes,2,rep,name=listeners,proto3" json:"listeners,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ProxySpec) Reset() { *x = ProxySpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProxySpec) String() string { @@ -248,7 +248,7 @@ func (*ProxySpec) ProtoMessage() {} func (x *ProxySpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -263,6 +263,13 @@ func (*ProxySpec) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{0} } +func (x *ProxySpec) GetCompressedSpec() string { + if x != nil { + return x.CompressedSpec + } + return "" +} + func (x *ProxySpec) GetListeners() []*Listener { if x != nil { return x.Listeners @@ -274,10 +281,7 @@ func (x *ProxySpec) GetListeners() []*Listener { // A Listener accepts connections (currently only HTTP is supported) and apply user-defined behavior for those connections, // e.g. performing SSL termination, HTTP retries, and rate limiting. type Listener struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // the name of the listener. names must be unique for each listener within a proxy Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // the bind address for the listener. @@ -288,33 +292,41 @@ type Listener struct { BindPort uint32 `protobuf:"varint,3,opt,name=bind_port,json=bindPort,proto3" json:"bind_port,omitempty"` // Listeners can listen for HTTP, TCP (unsupported), and UDP (unsupported) connections // - // Types that are assignable to ListenerType: + // Types that are valid to be assigned to ListenerType: + // // *Listener_HttpListener // *Listener_TcpListener + // *Listener_HybridListener + // *Listener_AggregateListener ListenerType isListener_ListenerType `protobuf_oneof:"ListenerType"` // SSL Config is optional for the listener. If provided, the listener will serve TLS for connections on this port. - // Multiple SslConfigs are supported for the purpose of SNI. Be aware that the SNI domain provided in the SSL Config - SslConfigurations []*SslConfig `protobuf:"bytes,6,rep,name=ssl_configurations,json=sslConfigurations,proto3" json:"ssl_configurations,omitempty"` - // Enable ProxyProtocol support for this listener - UseProxyProto *wrappers.BoolValue `protobuf:"bytes,7,opt,name=use_proxy_proto,json=useProxyProto,proto3" json:"use_proxy_proto,omitempty"` + // Multiple SslConfigs are supported for the purpose of SNI. Be aware that the SNI domain provided in the SSL Config. + // This is set to the aggregated list of SslConfigs that are defined on the selected VirtualServices + SslConfigurations []*ssl.SslConfig `protobuf:"bytes,6,rep,name=ssl_configurations,json=sslConfigurations,proto3" json:"ssl_configurations,omitempty"` + // Enable ProxyProtocol support for this listener. + // Deprecated: prefer setting the listener option. + // If configured, the listener option (filter config) overrides any setting here. + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/proxy.proto. + UseProxyProto *wrapperspb.BoolValue `protobuf:"bytes,7,opt,name=use_proxy_proto,json=useProxyProto,proto3" json:"use_proxy_proto,omitempty"` // top level options Options *ListenerOptions `protobuf:"bytes,8,opt,name=options,proto3" json:"options,omitempty"` - // Metadata for the individual listener - // This data is opaque to Gloo, used - // by controllers to track ownership of listeners within a proxy - // as they are typically generated by a controller (such as the gateway) - Metadata *_struct.Struct `protobuf:"bytes,9,opt,name=metadata,proto3" json:"metadata,omitempty"` + // Types that are valid to be assigned to OpaqueMetadata: + // + // *Listener_Metadata + // *Listener_MetadataStatic + OpaqueMetadata isListener_OpaqueMetadata `protobuf_oneof:"opaque_metadata"` // Route Configuration Options - RouteOptions *RouteConfigurationOptions `protobuf:"bytes,10,opt,name=route_options,json=routeOptions,proto3" json:"route_options,omitempty"` + RouteOptions *RouteConfigurationOptions `protobuf:"bytes,10,opt,name=route_options,json=routeOptions,proto3" json:"route_options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Listener) Reset() { *x = Listener{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Listener) String() string { @@ -325,7 +337,7 @@ func (*Listener) ProtoMessage() {} func (x *Listener) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -361,35 +373,58 @@ func (x *Listener) GetBindPort() uint32 { return 0 } -func (m *Listener) GetListenerType() isListener_ListenerType { - if m != nil { - return m.ListenerType +func (x *Listener) GetListenerType() isListener_ListenerType { + if x != nil { + return x.ListenerType } return nil } func (x *Listener) GetHttpListener() *HttpListener { - if x, ok := x.GetListenerType().(*Listener_HttpListener); ok { - return x.HttpListener + if x != nil { + if x, ok := x.ListenerType.(*Listener_HttpListener); ok { + return x.HttpListener + } } return nil } func (x *Listener) GetTcpListener() *TcpListener { - if x, ok := x.GetListenerType().(*Listener_TcpListener); ok { - return x.TcpListener + if x != nil { + if x, ok := x.ListenerType.(*Listener_TcpListener); ok { + return x.TcpListener + } + } + return nil +} + +func (x *Listener) GetHybridListener() *HybridListener { + if x != nil { + if x, ok := x.ListenerType.(*Listener_HybridListener); ok { + return x.HybridListener + } + } + return nil +} + +func (x *Listener) GetAggregateListener() *AggregateListener { + if x != nil { + if x, ok := x.ListenerType.(*Listener_AggregateListener); ok { + return x.AggregateListener + } } return nil } -func (x *Listener) GetSslConfigurations() []*SslConfig { +func (x *Listener) GetSslConfigurations() []*ssl.SslConfig { if x != nil { return x.SslConfigurations } return nil } -func (x *Listener) GetUseProxyProto() *wrappers.BoolValue { +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/proxy.proto. +func (x *Listener) GetUseProxyProto() *wrapperspb.BoolValue { if x != nil { return x.UseProxyProto } @@ -403,9 +438,27 @@ func (x *Listener) GetOptions() *ListenerOptions { return nil } -func (x *Listener) GetMetadata() *_struct.Struct { +func (x *Listener) GetOpaqueMetadata() isListener_OpaqueMetadata { if x != nil { - return x.Metadata + return x.OpaqueMetadata + } + return nil +} + +func (x *Listener) GetMetadata() *structpb.Struct { + if x != nil { + if x, ok := x.OpaqueMetadata.(*Listener_Metadata); ok { + return x.Metadata + } + } + return nil +} + +func (x *Listener) GetMetadataStatic() *SourceMetadata { + if x != nil { + if x, ok := x.OpaqueMetadata.(*Listener_MetadataStatic); ok { + return x.MetadataStatic + } } return nil } @@ -431,15 +484,50 @@ type Listener_TcpListener struct { TcpListener *TcpListener `protobuf:"bytes,5,opt,name=tcp_listener,json=tcpListener,proto3,oneof"` } +type Listener_HybridListener struct { + // contains any number of configuration options for Gloo's HTTP and/or TCP-level features + HybridListener *HybridListener `protobuf:"bytes,11,opt,name=hybrid_listener,json=hybridListener,proto3,oneof"` +} + +type Listener_AggregateListener struct { + // contains any number of configuration options for Gloo's HTTP and/or TCP-level features + // avoids duplicating definitions by separating resources and relationships between resources + AggregateListener *AggregateListener `protobuf:"bytes,13,opt,name=aggregate_listener,json=aggregateListener,proto3,oneof"` +} + func (*Listener_HttpListener) isListener_ListenerType() {} func (*Listener_TcpListener) isListener_ListenerType() {} -type TcpListener struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (*Listener_HybridListener) isListener_ListenerType() {} + +func (*Listener_AggregateListener) isListener_ListenerType() {} + +type isListener_OpaqueMetadata interface { + isListener_OpaqueMetadata() +} + +type Listener_Metadata struct { + // Metadata for the individual route + // This data is opaque to Gloo, used + // by controllers to track ownership of routes within a proxy + // as they are typically generated by a controller (such as the gateway) + // Deprecated: prefer the any field below + Metadata *structpb.Struct `protobuf:"bytes,9,opt,name=metadata,proto3,oneof"` +} + +type Listener_MetadataStatic struct { + // Inline metadata used by gloo controller to track ownership. + // See [uses of static metadata](https://github.com/solo-io/gloo/tree/main/devel/architecture/static_metadata.md) for specific uses + MetadataStatic *SourceMetadata `protobuf:"bytes,12,opt,name=metadata_static,json=metadataStatic,proto3,oneof"` +} + +func (*Listener_Metadata) isListener_OpaqueMetadata() {} + +func (*Listener_MetadataStatic) isListener_OpaqueMetadata() {} +type TcpListener struct { + state protoimpl.MessageState `protogen:"open.v1"` // List of filter chains to match on for this listener TcpHosts []*TcpHost `protobuf:"bytes,1,rep,name=tcp_hosts,json=tcpHosts,proto3" json:"tcp_hosts,omitempty"` // Options contains top-level configuration to be applied to a listener. @@ -449,15 +537,17 @@ type TcpListener struct { Options *TcpListenerOptions `protobuf:"bytes,8,opt,name=options,proto3" json:"options,omitempty"` // prefix for addressing envoy stats for the tcp proxy StatPrefix string `protobuf:"bytes,3,opt,name=stat_prefix,json=statPrefix,proto3" json:"stat_prefix,omitempty"` + // Additional arbitrary network Filters that will be inserted directly into xDS. + CustomNetworkFilters []*CustomEnvoyFilter `protobuf:"bytes,4,rep,name=custom_network_filters,json=customNetworkFilters,proto3" json:"custom_network_filters,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TcpListener) Reset() { *x = TcpListener{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TcpListener) String() string { @@ -468,7 +558,7 @@ func (*TcpListener) ProtoMessage() {} func (x *TcpListener) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -504,25 +594,29 @@ func (x *TcpListener) GetStatPrefix() string { return "" } -type TcpHost struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *TcpListener) GetCustomNetworkFilters() []*CustomEnvoyFilter { + if x != nil { + return x.CustomNetworkFilters + } + return nil +} +type TcpHost struct { + state protoimpl.MessageState `protogen:"open.v1"` // the logical name of the tcp host. names must be unique for each tcp host within a listener Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // If provided, the Gateway will serve TLS/SSL traffic for this set of routes - SslConfig *SslConfig `protobuf:"bytes,3,opt,name=ssl_config,json=sslConfig,proto3" json:"ssl_config,omitempty"` - Destination *TcpHost_TcpAction `protobuf:"bytes,4,opt,name=destination,proto3" json:"destination,omitempty"` + SslConfig *ssl.SslConfig `protobuf:"bytes,3,opt,name=ssl_config,json=sslConfig,proto3" json:"ssl_config,omitempty"` + Destination *TcpHost_TcpAction `protobuf:"bytes,4,opt,name=destination,proto3" json:"destination,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TcpHost) Reset() { *x = TcpHost{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TcpHost) String() string { @@ -533,7 +627,7 @@ func (*TcpHost) ProtoMessage() {} func (x *TcpHost) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -555,7 +649,7 @@ func (x *TcpHost) GetName() string { return "" } -func (x *TcpHost) GetSslConfig() *SslConfig { +func (x *TcpHost) GetSslConfig() *ssl.SslConfig { if x != nil { return x.SslConfig } @@ -573,10 +667,7 @@ func (x *TcpHost) GetDestination() *TcpHost_TcpAction { // HttpListeners also contain optional configuration that applies globally across all virtual hosts on the listener. // Some traffic policies can be configured to work both on the listener and virtual host level (e.g., the rate limit feature) type HttpListener struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // the set of virtual hosts that will be accessible by clients connecting to this listener. // at least one virtual host must be specified for this listener to be active (else connections will be refused) // the set of domains for each virtual host must be unique, or the config will be considered invalid @@ -588,15 +679,24 @@ type HttpListener struct { Options *HttpListenerOptions `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` // prefix for addressing envoy stats for the http connection manager StatPrefix string `protobuf:"bytes,3,opt,name=stat_prefix,json=statPrefix,proto3" json:"stat_prefix,omitempty"` + // Additional arbitrary HTTPFilters that will be inserted directly into xDS. + CustomHttpFilters []*CustomEnvoyFilter `protobuf:"bytes,4,rep,name=custom_http_filters,json=customHttpFilters,proto3" json:"custom_http_filters,omitempty"` + // Additional arbitrary network Filters that will be inserted directly into xDS. + CustomNetworkFilters []*CustomEnvoyFilter `protobuf:"bytes,5,rep,name=custom_network_filters,json=customNetworkFilters,proto3" json:"custom_network_filters,omitempty"` + // Types that are valid to be assigned to OpaqueMetadata: + // + // *HttpListener_Metadata + // *HttpListener_MetadataStatic + OpaqueMetadata isHttpListener_OpaqueMetadata `protobuf_oneof:"opaque_metadata"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HttpListener) Reset() { *x = HttpListener{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HttpListener) String() string { @@ -607,7 +707,7 @@ func (*HttpListener) ProtoMessage() {} func (x *HttpListener) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -643,154 +743,91 @@ func (x *HttpListener) GetStatPrefix() string { return "" } -// -// Virtual Hosts group an ordered list of routes under one or more domains. -// Each Virtual Host has a logical name, which must be unique for the listener. -// An HTTP request is first matched to a virtual host based on its host header, then to a route within the virtual host. -// If a request is not matched to any virtual host or a route therein, the target proxy will reply with a 404. -type VirtualHost struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // the logical name of the virtual host. names must be unique for each virtual host within a listener - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // The list of domains (i.e.: matching the `Host` header of a request) that belong to this virtual host. - // Note that the wildcard will not match the empty string. e.g. “*-bar.foo.com” will match “baz-bar.foo.com” - // but not “-bar.foo.com”. Additionally, a special entry “*” is allowed which will match any host/authority header. - // Only a single virtual host in the entire route configuration can match on “*”. A domain must be unique across all - // virtual hosts or the config will be invalidated by Gloo - // Domains on virtual hosts obey the same rules as [Envoy Virtual Hosts](https://github.com/envoyproxy/envoy/blob/master/api/envoy/api/v2/route/route.proto) - Domains []string `protobuf:"bytes,2,rep,name=domains,proto3" json:"domains,omitempty"` - // The list of HTTP routes define routing actions to be taken for incoming HTTP requests whose host header matches - // this virtual host. If the request matches more than one route in the list, the first route matched will be selected. - // If the list of routes is empty, the virtual host will be ignored by Gloo. - Routes []*Route `protobuf:"bytes,3,rep,name=routes,proto3" json:"routes,omitempty"` - // Virtual host options contain additional configuration to be applied to all traffic served by the Virtual Host. - // Some configuration here can be overridden by Route Options. - Options *VirtualHostOptions `protobuf:"bytes,4,opt,name=options,proto3" json:"options,omitempty"` - // Metadata for the individual virtual host - // This data is opaque to Gloo, used - // by controllers to track ownership of virtual hosts within a proxy - // as they are typically generated by a controller (such as the gateway) - Metadata *_struct.Struct `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` -} - -func (x *VirtualHost) Reset() { - *x = VirtualHost{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *VirtualHost) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VirtualHost) ProtoMessage() {} - -func (x *VirtualHost) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use VirtualHost.ProtoReflect.Descriptor instead. -func (*VirtualHost) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{5} -} - -func (x *VirtualHost) GetName() string { +func (x *HttpListener) GetCustomHttpFilters() []*CustomEnvoyFilter { if x != nil { - return x.Name + return x.CustomHttpFilters } - return "" + return nil } -func (x *VirtualHost) GetDomains() []string { +func (x *HttpListener) GetCustomNetworkFilters() []*CustomEnvoyFilter { if x != nil { - return x.Domains + return x.CustomNetworkFilters } return nil } -func (x *VirtualHost) GetRoutes() []*Route { +func (x *HttpListener) GetOpaqueMetadata() isHttpListener_OpaqueMetadata { if x != nil { - return x.Routes + return x.OpaqueMetadata } return nil } -func (x *VirtualHost) GetOptions() *VirtualHostOptions { +func (x *HttpListener) GetMetadata() *structpb.Struct { if x != nil { - return x.Options + if x, ok := x.OpaqueMetadata.(*HttpListener_Metadata); ok { + return x.Metadata + } } return nil } -func (x *VirtualHost) GetMetadata() *_struct.Struct { +func (x *HttpListener) GetMetadataStatic() *SourceMetadata { if x != nil { - return x.Metadata + if x, ok := x.OpaqueMetadata.(*HttpListener_MetadataStatic); ok { + return x.MetadataStatic + } } return nil } -//* -// Routes declare the entry points on virtual hosts and the action to take for matched requests. -type Route struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type isHttpListener_OpaqueMetadata interface { + isHttpListener_OpaqueMetadata() +} - // Matchers contain parameters for matching requests (i.e., based on HTTP path, headers, etc.) - // If empty, the route will match all requests (i.e, a single "/" path prefix matcher) - Matchers []*matchers.Matcher `protobuf:"bytes,1,rep,name=matchers,proto3" json:"matchers,omitempty"` - // The Route Action Defines what action the proxy should take when a request matches the route. - // - // Types that are assignable to Action: - // *Route_RouteAction - // *Route_RedirectAction - // *Route_DirectResponseAction - Action isRoute_Action `protobuf_oneof:"action"` - // Route Options extend the behavior of routes. - // Route options include configuration such as retries, rate limiting, and request/response transformation. - Options *RouteOptions `protobuf:"bytes,5,opt,name=options,proto3" json:"options,omitempty"` +type HttpListener_Metadata struct { // Metadata for the individual route // This data is opaque to Gloo, used // by controllers to track ownership of routes within a proxy // as they are typically generated by a controller (such as the gateway) - Metadata *_struct.Struct `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` - // The name provides a convenience for users to be able to refer to a route by name. - // It includes names of vs, route, and route table ancestors of the route. - Name string `protobuf:"bytes,7,opt,name=name,proto3" json:"name,omitempty"` + // Deprecated: prefer the any field below + Metadata *structpb.Struct `protobuf:"bytes,6,opt,name=metadata,proto3,oneof"` } -func (x *Route) Reset() { - *x = Route{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +type HttpListener_MetadataStatic struct { + // Inline metadata used by gloo controller to track ownership. + // See [uses of static metadata](https://github.com/solo-io/gloo/tree/main/devel/architecture/static_metadata.md) for specific uses + MetadataStatic *SourceMetadata `protobuf:"bytes,7,opt,name=metadata_static,json=metadataStatic,proto3,oneof"` } -func (x *Route) String() string { +func (*HttpListener_Metadata) isHttpListener_OpaqueMetadata() {} + +func (*HttpListener_MetadataStatic) isHttpListener_OpaqueMetadata() {} + +type HybridListener struct { + state protoimpl.MessageState `protogen:"open.v1"` + MatchedListeners []*MatchedListener `protobuf:"bytes,1,rep,name=matched_listeners,json=matchedListeners,proto3" json:"matched_listeners,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HybridListener) Reset() { + *x = HybridListener{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HybridListener) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Route) ProtoMessage() {} +func (*HybridListener) ProtoMessage() {} -func (x *Route) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { +func (x *HybridListener) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[5] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -800,75 +837,613 @@ func (x *Route) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Route.ProtoReflect.Descriptor instead. -func (*Route) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{6} +// Deprecated: Use HybridListener.ProtoReflect.Descriptor instead. +func (*HybridListener) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{5} } -func (x *Route) GetMatchers() []*matchers.Matcher { +func (x *HybridListener) GetMatchedListeners() []*MatchedListener { if x != nil { - return x.Matchers + return x.MatchedListeners } return nil } -func (m *Route) GetAction() isRoute_Action { - if m != nil { - return m.Action - } - return nil +type MatchedListener struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Matchers are used to define unique matching criteria for each MatchedListener + // Each MatchedListener within a HybridListener must have a unique Matcher + // If multiple matchers in a HybridListener are identical, the HybridListener will not be accepted + // Empty Matchers are effectively catch-alls, and there can be no more than one empty Matcher per HybridListener + Matcher *Matcher `protobuf:"bytes,1,opt,name=matcher,proto3" json:"matcher,omitempty"` + // Types that are valid to be assigned to ListenerType: + // + // *MatchedListener_HttpListener + // *MatchedListener_TcpListener + ListenerType isMatchedListener_ListenerType `protobuf_oneof:"ListenerType"` + // SSL Config is optional for the MatchedListener. If provided, the listener will serve TLS for connections. + // Multiple SslConfigs are supported for the purpose of SNI. Be aware that the SNI domain provided in the SSL Config. + // This is set to the aggregated list of SslConfigs that are defined on the selected VirtualServices + SslConfigurations []*ssl.SslConfig `protobuf:"bytes,4,rep,name=ssl_configurations,json=sslConfigurations,proto3" json:"ssl_configurations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MatchedListener) Reset() { + *x = MatchedListener{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *Route) GetRouteAction() *RouteAction { - if x, ok := x.GetAction().(*Route_RouteAction); ok { - return x.RouteAction +func (x *MatchedListener) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MatchedListener) ProtoMessage() {} + +func (x *MatchedListener) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *Route) GetRedirectAction() *RedirectAction { - if x, ok := x.GetAction().(*Route_RedirectAction); ok { - return x.RedirectAction +// Deprecated: Use MatchedListener.ProtoReflect.Descriptor instead. +func (*MatchedListener) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{6} +} + +func (x *MatchedListener) GetMatcher() *Matcher { + if x != nil { + return x.Matcher } return nil } -func (x *Route) GetDirectResponseAction() *DirectResponseAction { - if x, ok := x.GetAction().(*Route_DirectResponseAction); ok { - return x.DirectResponseAction +func (x *MatchedListener) GetListenerType() isMatchedListener_ListenerType { + if x != nil { + return x.ListenerType } return nil } -func (x *Route) GetOptions() *RouteOptions { +func (x *MatchedListener) GetHttpListener() *HttpListener { if x != nil { - return x.Options + if x, ok := x.ListenerType.(*MatchedListener_HttpListener); ok { + return x.HttpListener + } } return nil } -func (x *Route) GetMetadata() *_struct.Struct { +func (x *MatchedListener) GetTcpListener() *TcpListener { if x != nil { - return x.Metadata + if x, ok := x.ListenerType.(*MatchedListener_TcpListener); ok { + return x.TcpListener + } } return nil } -func (x *Route) GetName() string { +func (x *MatchedListener) GetSslConfigurations() []*ssl.SslConfig { if x != nil { - return x.Name + return x.SslConfigurations } - return "" + return nil } -type isRoute_Action interface { - isRoute_Action() +type isMatchedListener_ListenerType interface { + isMatchedListener_ListenerType() } -type Route_RouteAction struct { - // This action is the primary action to be selected for most routes. The RouteAction tells the proxy to - // route requests to an upstream. - RouteAction *RouteAction `protobuf:"bytes,2,opt,name=route_action,json=routeAction,proto3,oneof"` +type MatchedListener_HttpListener struct { + HttpListener *HttpListener `protobuf:"bytes,2,opt,name=http_listener,json=httpListener,proto3,oneof"` +} + +type MatchedListener_TcpListener struct { + TcpListener *TcpListener `protobuf:"bytes,3,opt,name=tcp_listener,json=tcpListener,proto3,oneof"` +} + +func (*MatchedListener_HttpListener) isMatchedListener_ListenerType() {} + +func (*MatchedListener_TcpListener) isMatchedListener_ListenerType() {} + +type MatchedTcpListener struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Matchers are used to define unique matching criteria for each MatchedListener + // These are overridden by tcphost sni mutators + Matcher *Matcher `protobuf:"bytes,1,opt,name=matcher,proto3" json:"matcher,omitempty"` + // The actual tcp listener to be used for this matcher in the aggregate listener + TcpListener *TcpListener `protobuf:"bytes,2,opt,name=tcp_listener,json=tcpListener,proto3" json:"tcp_listener,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MatchedTcpListener) Reset() { + *x = MatchedTcpListener{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MatchedTcpListener) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MatchedTcpListener) ProtoMessage() {} + +func (x *MatchedTcpListener) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MatchedTcpListener.ProtoReflect.Descriptor instead. +func (*MatchedTcpListener) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{7} +} + +func (x *MatchedTcpListener) GetMatcher() *Matcher { + if x != nil { + return x.Matcher + } + return nil +} + +func (x *MatchedTcpListener) GetTcpListener() *TcpListener { + if x != nil { + return x.TcpListener + } + return nil +} + +type Matcher struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Gloo use SNI domains as matching criteria for Gateway selection + // The other ssl_config properties will be applied to the outputFilterChain's transport socket + // SslConfig from VirtualServices will be ignored in a MatchedGateway + SslConfig *ssl.SslConfig `protobuf:"bytes,1,opt,name=ssl_config,json=sslConfig,proto3" json:"ssl_config,omitempty"` + // Source addresses to match. This value is either the actual addresses used to connect, + // or addresses that are overridden by using PROXY protocol or original_src. + SourcePrefixRanges []*v3.CidrRange `protobuf:"bytes,2,rep,name=source_prefix_ranges,json=sourcePrefixRanges,proto3" json:"source_prefix_ranges,omitempty"` + // Destination addresses to match. This value is either the actual addresses used to connect, + // or addresses that are overridden by using PROXY protocol or original_dst. + PrefixRanges []*v3.CidrRange `protobuf:"bytes,4,rep,name=prefix_ranges,json=prefixRanges,proto3" json:"prefix_ranges,omitempty"` + // Optional destination port to consider in determining a filter chain match. + // Filter chains that specify the destination port of incoming traffic are the most specific match. + // If no filter chain specifies the exact destination port, + // the filter chains which do not specify ports are the most specific match. + DestinationPort *wrapperspb.UInt32Value `protobuf:"bytes,5,opt,name=destination_port,json=destinationPort,proto3" json:"destination_port,omitempty"` + PassthroughCipherSuites []string `protobuf:"bytes,3,rep,name=passthrough_cipher_suites,json=passthroughCipherSuites,proto3" json:"passthrough_cipher_suites,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Matcher) Reset() { + *x = Matcher{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Matcher) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Matcher) ProtoMessage() {} + +func (x *Matcher) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Matcher.ProtoReflect.Descriptor instead. +func (*Matcher) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{8} +} + +func (x *Matcher) GetSslConfig() *ssl.SslConfig { + if x != nil { + return x.SslConfig + } + return nil +} + +func (x *Matcher) GetSourcePrefixRanges() []*v3.CidrRange { + if x != nil { + return x.SourcePrefixRanges + } + return nil +} + +func (x *Matcher) GetPrefixRanges() []*v3.CidrRange { + if x != nil { + return x.PrefixRanges + } + return nil +} + +func (x *Matcher) GetDestinationPort() *wrapperspb.UInt32Value { + if x != nil { + return x.DestinationPort + } + return nil +} + +func (x *Matcher) GetPassthroughCipherSuites() []string { + if x != nil { + return x.PassthroughCipherSuites + } + return nil +} + +// An AggregateListener defines a set of Gloo configuration which will map to a unique set of FilterChains on a Listener +type AggregateListener struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The aggregate set of resources available on this listener + HttpResources *AggregateListener_HttpResources `protobuf:"bytes,1,opt,name=http_resources,json=httpResources,proto3" json:"http_resources,omitempty"` + // The set of HttpFilterChains to create on this listener + HttpFilterChains []*AggregateListener_HttpFilterChain `protobuf:"bytes,2,rep,name=http_filter_chains,json=httpFilterChains,proto3" json:"http_filter_chains,omitempty"` + // The set of TcpListeners to create on this listener + TcpListeners []*MatchedTcpListener `protobuf:"bytes,3,rep,name=tcp_listeners,json=tcpListeners,proto3" json:"tcp_listeners,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AggregateListener) Reset() { + *x = AggregateListener{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AggregateListener) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AggregateListener) ProtoMessage() {} + +func (x *AggregateListener) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AggregateListener.ProtoReflect.Descriptor instead. +func (*AggregateListener) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{9} +} + +func (x *AggregateListener) GetHttpResources() *AggregateListener_HttpResources { + if x != nil { + return x.HttpResources + } + return nil +} + +func (x *AggregateListener) GetHttpFilterChains() []*AggregateListener_HttpFilterChain { + if x != nil { + return x.HttpFilterChains + } + return nil +} + +func (x *AggregateListener) GetTcpListeners() []*MatchedTcpListener { + if x != nil { + return x.TcpListeners + } + return nil +} + +// Virtual Hosts group an ordered list of routes under one or more domains. +// Each Virtual Host has a logical name, which must be unique for the http listener. +// An HTTP request is first matched to a virtual host based on its host header, then to a route within the virtual host. +// If a request is not matched to any virtual host or a route therein, the target proxy will reply with a 404. +type VirtualHost struct { + state protoimpl.MessageState `protogen:"open.v1"` + // the logical name of the virtual host. names must be unique for each virtual host within a listener + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // The list of domains (i.e.: matching the `Host` header of a request) that belong to this virtual host. + // Note that the wildcard will not match the empty string. e.g. “*-bar.foo.com” will match “baz-bar.foo.com” + // but not “-bar.foo.com”. Additionally, a special entry “*” is allowed which will match any host/authority header. + // Only a single virtual host in the entire route configuration can match on “*”. A domain must be unique across all + // virtual hosts or the config will be invalidated by Gloo + // Domains on virtual hosts obey the same rules as [Envoy Virtual Hosts](https://github.com/envoyproxy/envoy/blob/main/api/envoy/api/v2/route/route.proto) + Domains []string `protobuf:"bytes,2,rep,name=domains,proto3" json:"domains,omitempty"` + // The list of HTTP routes define routing actions to be taken for incoming HTTP requests whose host header matches + // this virtual host. If the request matches more than one route in the list, the first route matched will be selected. + // If the list of routes is empty, the virtual host will be ignored by Gloo. + Routes []*Route `protobuf:"bytes,3,rep,name=routes,proto3" json:"routes,omitempty"` + // Virtual host options contain additional configuration to be applied to all traffic served by the Virtual Host. + // Some configuration here can be overridden by Route Options. + Options *VirtualHostOptions `protobuf:"bytes,4,opt,name=options,proto3" json:"options,omitempty"` + // Types that are valid to be assigned to OpaqueMetadata: + // + // *VirtualHost_Metadata + // *VirtualHost_MetadataStatic + OpaqueMetadata isVirtualHost_OpaqueMetadata `protobuf_oneof:"opaque_metadata"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VirtualHost) Reset() { + *x = VirtualHost{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VirtualHost) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VirtualHost) ProtoMessage() {} + +func (x *VirtualHost) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VirtualHost.ProtoReflect.Descriptor instead. +func (*VirtualHost) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{10} +} + +func (x *VirtualHost) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *VirtualHost) GetDomains() []string { + if x != nil { + return x.Domains + } + return nil +} + +func (x *VirtualHost) GetRoutes() []*Route { + if x != nil { + return x.Routes + } + return nil +} + +func (x *VirtualHost) GetOptions() *VirtualHostOptions { + if x != nil { + return x.Options + } + return nil +} + +func (x *VirtualHost) GetOpaqueMetadata() isVirtualHost_OpaqueMetadata { + if x != nil { + return x.OpaqueMetadata + } + return nil +} + +func (x *VirtualHost) GetMetadata() *structpb.Struct { + if x != nil { + if x, ok := x.OpaqueMetadata.(*VirtualHost_Metadata); ok { + return x.Metadata + } + } + return nil +} + +func (x *VirtualHost) GetMetadataStatic() *SourceMetadata { + if x != nil { + if x, ok := x.OpaqueMetadata.(*VirtualHost_MetadataStatic); ok { + return x.MetadataStatic + } + } + return nil +} + +type isVirtualHost_OpaqueMetadata interface { + isVirtualHost_OpaqueMetadata() +} + +type VirtualHost_Metadata struct { + // Metadata for the individual route + // This data is opaque to Gloo, used + // by controllers to track ownership of routes within a proxy + // as they are typically generated by a controller (such as the gateway) + // Deprecated: prefer the any field below + Metadata *structpb.Struct `protobuf:"bytes,6,opt,name=metadata,proto3,oneof"` +} + +type VirtualHost_MetadataStatic struct { + // Inline metadata used by gloo controller to track ownership + MetadataStatic *SourceMetadata `protobuf:"bytes,7,opt,name=metadata_static,json=metadataStatic,proto3,oneof"` +} + +func (*VirtualHost_Metadata) isVirtualHost_OpaqueMetadata() {} + +func (*VirtualHost_MetadataStatic) isVirtualHost_OpaqueMetadata() {} + +// * +// Routes declare the entry points on virtual hosts and the action to take for matched requests. +type Route struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Matchers contain parameters for matching requests (i.e., based on HTTP path, headers, etc.) + // If empty, the route will match all requests (i.e, a single "/" path prefix matcher) + Matchers []*matchers.Matcher `protobuf:"bytes,1,rep,name=matchers,proto3" json:"matchers,omitempty"` + // The Route Action Defines what action the proxy should take when a request matches the route. + // + // Types that are valid to be assigned to Action: + // + // *Route_RouteAction + // *Route_RedirectAction + // *Route_DirectResponseAction + Action isRoute_Action `protobuf_oneof:"action"` + // Route Options extend the behavior of routes. + // Route options include configuration such as retries, rate limiting, and request/response transformation. + Options *RouteOptions `protobuf:"bytes,5,opt,name=options,proto3" json:"options,omitempty"` + // Types that are valid to be assigned to OpaqueMetadata: + // + // *Route_Metadata + // *Route_MetadataStatic + OpaqueMetadata isRoute_OpaqueMetadata `protobuf_oneof:"opaque_metadata"` + // The name provides a convenience for users to be able to refer to a route by name. + // It includes names of vs, route, and route table ancestors of the route. + Name string `protobuf:"bytes,7,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Route) Reset() { + *x = Route{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Route) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Route) ProtoMessage() {} + +func (x *Route) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Route.ProtoReflect.Descriptor instead. +func (*Route) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{11} +} + +func (x *Route) GetMatchers() []*matchers.Matcher { + if x != nil { + return x.Matchers + } + return nil +} + +func (x *Route) GetAction() isRoute_Action { + if x != nil { + return x.Action + } + return nil +} + +func (x *Route) GetRouteAction() *RouteAction { + if x != nil { + if x, ok := x.Action.(*Route_RouteAction); ok { + return x.RouteAction + } + } + return nil +} + +func (x *Route) GetRedirectAction() *RedirectAction { + if x != nil { + if x, ok := x.Action.(*Route_RedirectAction); ok { + return x.RedirectAction + } + } + return nil +} + +func (x *Route) GetDirectResponseAction() *DirectResponseAction { + if x != nil { + if x, ok := x.Action.(*Route_DirectResponseAction); ok { + return x.DirectResponseAction + } + } + return nil +} + +func (x *Route) GetOptions() *RouteOptions { + if x != nil { + return x.Options + } + return nil +} + +func (x *Route) GetOpaqueMetadata() isRoute_OpaqueMetadata { + if x != nil { + return x.OpaqueMetadata + } + return nil +} + +func (x *Route) GetMetadata() *structpb.Struct { + if x != nil { + if x, ok := x.OpaqueMetadata.(*Route_Metadata); ok { + return x.Metadata + } + } + return nil +} + +func (x *Route) GetMetadataStatic() *SourceMetadata { + if x != nil { + if x, ok := x.OpaqueMetadata.(*Route_MetadataStatic); ok { + return x.MetadataStatic + } + } + return nil +} + +func (x *Route) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type isRoute_Action interface { + isRoute_Action() +} + +type Route_RouteAction struct { + // This action is the primary action to be selected for most routes. The RouteAction tells the proxy to + // route requests to an upstream. + RouteAction *RouteAction `protobuf:"bytes,2,opt,name=route_action,json=routeAction,proto3,oneof"` } type Route_RedirectAction struct { @@ -887,31 +1462,52 @@ func (*Route_RedirectAction) isRoute_Action() {} func (*Route_DirectResponseAction) isRoute_Action() {} +type isRoute_OpaqueMetadata interface { + isRoute_OpaqueMetadata() +} + +type Route_Metadata struct { + // Metadata for the individual route + // This data is opaque to Gloo, used + // by controllers to track ownership of routes within a proxy + // as they are typically generated by a controller (such as the gateway) + // Deprecated: prefer the any field below + Metadata *structpb.Struct `protobuf:"bytes,6,opt,name=metadata,proto3,oneof"` +} + +type Route_MetadataStatic struct { + // Inline metadata used by gloo controller to track ownership + MetadataStatic *SourceMetadata `protobuf:"bytes,9,opt,name=metadata_static,json=metadataStatic,proto3,oneof"` +} + +func (*Route_Metadata) isRoute_OpaqueMetadata() {} + +func (*Route_MetadataStatic) isRoute_OpaqueMetadata() {} + // RouteActions are used to route matched requests to upstreams. type RouteAction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Defines the destination upstream for routing // Some destinations require additional configuration for the route (e.g. AWS upstreams require a function name // to be specified). // - // Types that are assignable to Destination: + // Types that are valid to be assigned to Destination: + // // *RouteAction_Single // *RouteAction_Multi // *RouteAction_UpstreamGroup // *RouteAction_ClusterHeader - Destination isRouteAction_Destination `protobuf_oneof:"destination"` + // *RouteAction_DynamicForwardProxy + Destination isRouteAction_Destination `protobuf_oneof:"destination"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouteAction) Reset() { *x = RouteAction{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouteAction) String() string { @@ -921,8 +1517,8 @@ func (x *RouteAction) String() string { func (*RouteAction) ProtoMessage() {} func (x *RouteAction) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[12] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -934,44 +1530,61 @@ func (x *RouteAction) ProtoReflect() protoreflect.Message { // Deprecated: Use RouteAction.ProtoReflect.Descriptor instead. func (*RouteAction) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{7} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{12} } -func (m *RouteAction) GetDestination() isRouteAction_Destination { - if m != nil { - return m.Destination +func (x *RouteAction) GetDestination() isRouteAction_Destination { + if x != nil { + return x.Destination } return nil } func (x *RouteAction) GetSingle() *Destination { - if x, ok := x.GetDestination().(*RouteAction_Single); ok { - return x.Single + if x != nil { + if x, ok := x.Destination.(*RouteAction_Single); ok { + return x.Single + } } return nil } func (x *RouteAction) GetMulti() *MultiDestination { - if x, ok := x.GetDestination().(*RouteAction_Multi); ok { - return x.Multi + if x != nil { + if x, ok := x.Destination.(*RouteAction_Multi); ok { + return x.Multi + } } return nil } func (x *RouteAction) GetUpstreamGroup() *core.ResourceRef { - if x, ok := x.GetDestination().(*RouteAction_UpstreamGroup); ok { - return x.UpstreamGroup + if x != nil { + if x, ok := x.Destination.(*RouteAction_UpstreamGroup); ok { + return x.UpstreamGroup + } } return nil } func (x *RouteAction) GetClusterHeader() string { - if x, ok := x.GetDestination().(*RouteAction_ClusterHeader); ok { - return x.ClusterHeader + if x != nil { + if x, ok := x.Destination.(*RouteAction_ClusterHeader); ok { + return x.ClusterHeader + } } return "" } +func (x *RouteAction) GetDynamicForwardProxy() *dynamic_forward_proxy.PerRouteConfig { + if x != nil { + if x, ok := x.Destination.(*RouteAction_DynamicForwardProxy); ok { + return x.DynamicForwardProxy + } + } + return nil +} + type isRouteAction_Destination interface { isRouteAction_Destination() } @@ -998,6 +1611,15 @@ type RouteAction_ClusterHeader struct { ClusterHeader string `protobuf:"bytes,4,opt,name=cluster_header,json=clusterHeader,proto3,oneof"` } +type RouteAction_DynamicForwardProxy struct { + // Route requests to a custom dynamic forward proxy envoy cluster. + // Envoy will route based on the DNS response (cached) or pause requests + // (for a configurable amount of time on the listener) until DNS has resolved for + // the host header rewrite as provided here. + // For more, see https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/http/http_proxy + DynamicForwardProxy *dynamic_forward_proxy.PerRouteConfig `protobuf:"bytes,5,opt,name=dynamic_forward_proxy,json=dynamicForwardProxy,proto3,oneof"` +} + func (*RouteAction_Single) isRouteAction_Destination() {} func (*RouteAction_Multi) isRouteAction_Destination() {} @@ -1006,15 +1628,15 @@ func (*RouteAction_UpstreamGroup) isRouteAction_Destination() {} func (*RouteAction_ClusterHeader) isRouteAction_Destination() {} +func (*RouteAction_DynamicForwardProxy) isRouteAction_Destination() {} + // Destinations define routable destinations for proxied requests. type Destination struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The type of the destination + state protoimpl.MessageState `protogen:"open.v1"` + // The type of the destination + // + // Types that are valid to be assigned to DestinationType: // - // Types that are assignable to DestinationType: // *Destination_Upstream // *Destination_Kube // *Destination_Consul @@ -1026,16 +1648,16 @@ type Destination struct { DestinationSpec *DestinationSpec `protobuf:"bytes,2,opt,name=destination_spec,json=destinationSpec,proto3" json:"destination_spec,omitempty"` // If specified, traffic will only be routed to a subset of the upstream. If upstream doesn't // contain the specified subset, we will fallback to normal upstream routing. - Subset *Subset `protobuf:"bytes,3,opt,name=subset,proto3" json:"subset,omitempty"` + Subset *Subset `protobuf:"bytes,3,opt,name=subset,proto3" json:"subset,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Destination) Reset() { *x = Destination{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Destination) String() string { @@ -1045,8 +1667,8 @@ func (x *Destination) String() string { func (*Destination) ProtoMessage() {} func (x *Destination) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[13] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1058,33 +1680,39 @@ func (x *Destination) ProtoReflect() protoreflect.Message { // Deprecated: Use Destination.ProtoReflect.Descriptor instead. func (*Destination) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{8} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{13} } -func (m *Destination) GetDestinationType() isDestination_DestinationType { - if m != nil { - return m.DestinationType +func (x *Destination) GetDestinationType() isDestination_DestinationType { + if x != nil { + return x.DestinationType } return nil } func (x *Destination) GetUpstream() *core.ResourceRef { - if x, ok := x.GetDestinationType().(*Destination_Upstream); ok { - return x.Upstream + if x != nil { + if x, ok := x.DestinationType.(*Destination_Upstream); ok { + return x.Upstream + } } return nil } func (x *Destination) GetKube() *KubernetesServiceDestination { - if x, ok := x.GetDestinationType().(*Destination_Kube); ok { - return x.Kube + if x != nil { + if x, ok := x.DestinationType.(*Destination_Kube); ok { + return x.Kube + } } return nil } func (x *Destination) GetConsul() *ConsulServiceDestination { - if x, ok := x.GetDestinationType().(*Destination_Consul); ok { - return x.Consul + if x != nil { + if x, ok := x.DestinationType.(*Destination_Consul); ok { + return x.Consul + } } return nil } @@ -1130,23 +1758,20 @@ func (*Destination_Consul) isDestination_DestinationType() {} // Identifies a port on a kubernetes service to route traffic to. type KubernetesServiceDestination struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The target service Ref *core.ResourceRef `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"` // The port attribute of the service - Port uint32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` + Port uint32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *KubernetesServiceDestination) Reset() { *x = KubernetesServiceDestination{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *KubernetesServiceDestination) String() string { @@ -1156,8 +1781,8 @@ func (x *KubernetesServiceDestination) String() string { func (*KubernetesServiceDestination) ProtoMessage() {} func (x *KubernetesServiceDestination) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[14] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1169,7 +1794,7 @@ func (x *KubernetesServiceDestination) ProtoReflect() protoreflect.Message { // Deprecated: Use KubernetesServiceDestination.ProtoReflect.Descriptor instead. func (*KubernetesServiceDestination) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{9} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{14} } func (x *KubernetesServiceDestination) GetRef() *core.ResourceRef { @@ -1192,26 +1817,23 @@ func (x *KubernetesServiceDestination) GetPort() uint32 { // You can target the desired subset of services via the fields in this configuration. Gloo will detect the correspondent // IP addresses and ports and load balance traffic between them. type ConsulServiceDestination struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the target service. This field is required. ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` // If provided, load balance traffic only between services matching all the given tags. Tags []string `protobuf:"bytes,2,rep,name=tags,proto3" json:"tags,omitempty"` // If provided, load balance traffic only between services running in the given // [data centers](https://www.consul.io/docs/internals/architecture.html). - DataCenters []string `protobuf:"bytes,3,rep,name=data_centers,json=dataCenters,proto3" json:"data_centers,omitempty"` + DataCenters []string `protobuf:"bytes,3,rep,name=data_centers,json=dataCenters,proto3" json:"data_centers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ConsulServiceDestination) Reset() { *x = ConsulServiceDestination{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ConsulServiceDestination) String() string { @@ -1221,8 +1843,8 @@ func (x *ConsulServiceDestination) String() string { func (*ConsulServiceDestination) ProtoMessage() {} func (x *ConsulServiceDestination) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[15] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1234,7 +1856,7 @@ func (x *ConsulServiceDestination) ProtoReflect() protoreflect.Message { // Deprecated: Use ConsulServiceDestination.ProtoReflect.Descriptor instead. func (*ConsulServiceDestination) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{10} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{15} } func (x *ConsulServiceDestination) GetServiceName() string { @@ -1259,21 +1881,18 @@ func (x *ConsulServiceDestination) GetDataCenters() []string { } type UpstreamGroupSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The destinations that are part of this upstream group. - Destinations []*WeightedDestination `protobuf:"bytes,1,rep,name=destinations,proto3" json:"destinations,omitempty"` + Destinations []*WeightedDestination `protobuf:"bytes,1,rep,name=destinations,proto3" json:"destinations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpstreamGroupSpec) Reset() { *x = UpstreamGroupSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpstreamGroupSpec) String() string { @@ -1283,8 +1902,8 @@ func (x *UpstreamGroupSpec) String() string { func (*UpstreamGroupSpec) ProtoMessage() {} func (x *UpstreamGroupSpec) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[16] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1296,7 +1915,7 @@ func (x *UpstreamGroupSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use UpstreamGroupSpec.ProtoReflect.Descriptor instead. func (*UpstreamGroupSpec) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{11} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{16} } func (x *UpstreamGroupSpec) GetDestinations() []*WeightedDestination { @@ -1309,22 +1928,19 @@ func (x *UpstreamGroupSpec) GetDestinations() []*WeightedDestination { // MultiDestination is a container for a set of weighted destinations. Gloo will load balance traffic for a single // route across multiple destinations according to their specified weights. type MultiDestination struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + // This list must contain at least one destination with a weight greater than 0. + // Otherwise, the listener for this route becomes invalid, which causes an error for the parent proxy resource. + Destinations []*WeightedDestination `protobuf:"bytes,1,rep,name=destinations,proto3" json:"destinations,omitempty"` unknownFields protoimpl.UnknownFields - - // This list must contain at least one destination or the listener housing this route will be invalid, - // causing Gloo to error the parent proxy resource. - Destinations []*WeightedDestination `protobuf:"bytes,1,rep,name=destinations,proto3" json:"destinations,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MultiDestination) Reset() { *x = MultiDestination{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MultiDestination) String() string { @@ -1334,8 +1950,8 @@ func (x *MultiDestination) String() string { func (*MultiDestination) ProtoMessage() {} func (x *MultiDestination) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[17] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1347,7 +1963,7 @@ func (x *MultiDestination) ProtoReflect() protoreflect.Message { // Deprecated: Use MultiDestination.ProtoReflect.Descriptor instead. func (*MultiDestination) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{12} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{17} } func (x *MultiDestination) GetDestinations() []*WeightedDestination { @@ -1359,25 +1975,25 @@ func (x *MultiDestination) GetDestinations() []*WeightedDestination { // WeightedDestination attaches a weight to a single destination. type WeightedDestination struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Destination *Destination `protobuf:"bytes,1,opt,name=destination,proto3" json:"destination,omitempty"` - // Weight must be greater than zero - // Routing to each destination will be balanced by the ratio of the destination's weight to the total weight on a route - Weight uint32 `protobuf:"varint,2,opt,name=weight,proto3" json:"weight,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Destination *Destination `protobuf:"bytes,1,opt,name=destination,proto3" json:"destination,omitempty"` + // Weight must be zero or greater -if no weight is passed it will default to 0 - + // Routing to each destination is balanced according to the ratio of the destination’s weight to the total + // weight on a route. For example, if the weight for one destination is 2, and the total weight of all + // destinations on the route is 6, the destination receives 2/6 of the traffic. Note that a weight of 0 + // routes no traffic to the destination. + Weight *wrapperspb.UInt32Value `protobuf:"bytes,2,opt,name=weight,proto3" json:"weight,omitempty"` // Apply configuration to traffic that is sent to this weighted destination - Options *WeightedDestinationOptions `protobuf:"bytes,3,opt,name=options,proto3" json:"options,omitempty"` + Options *WeightedDestinationOptions `protobuf:"bytes,3,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WeightedDestination) Reset() { *x = WeightedDestination{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WeightedDestination) String() string { @@ -1387,8 +2003,8 @@ func (x *WeightedDestination) String() string { func (*WeightedDestination) ProtoMessage() {} func (x *WeightedDestination) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[18] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1400,7 +2016,7 @@ func (x *WeightedDestination) ProtoReflect() protoreflect.Message { // Deprecated: Use WeightedDestination.ProtoReflect.Descriptor instead. func (*WeightedDestination) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{13} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{18} } func (x *WeightedDestination) GetDestination() *Destination { @@ -1410,11 +2026,11 @@ func (x *WeightedDestination) GetDestination() *Destination { return nil } -func (x *WeightedDestination) GetWeight() uint32 { +func (x *WeightedDestination) GetWeight() *wrapperspb.UInt32Value { if x != nil { return x.Weight } - return 0 + return nil } func (x *WeightedDestination) GetOptions() *WeightedDestinationOptions { @@ -1424,17 +2040,16 @@ func (x *WeightedDestination) GetOptions() *WeightedDestinationOptions { return nil } -// Notice: RedirectAction is copied directly from https://github.com/envoyproxy/envoy/blob/master/api/envoy/api/v2/route/route.proto +// Notice: RedirectAction is copied directly from https://github.com/envoyproxy/envoy/blob/main/api/envoy/api/v2/route/route.proto type RedirectAction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The host portion of the URL will be swapped with this value. HostRedirect string `protobuf:"bytes,1,opt,name=host_redirect,json=hostRedirect,proto3" json:"host_redirect,omitempty"` - // Types that are assignable to PathRewriteSpecifier: + // Types that are valid to be assigned to PathRewriteSpecifier: + // // *RedirectAction_PathRedirect // *RedirectAction_PrefixRewrite + // *RedirectAction_RegexRewrite PathRewriteSpecifier isRedirectAction_PathRewriteSpecifier `protobuf_oneof:"path_rewrite_specifier"` // The HTTP status code to use in the redirect response. The default response // code is MOVED_PERMANENTLY (301). @@ -1444,15 +2059,17 @@ type RedirectAction struct { // Indicates that during redirection, the query portion of the URL will // be removed. Default value is false. StripQuery bool `protobuf:"varint,6,opt,name=strip_query,json=stripQuery,proto3" json:"strip_query,omitempty"` + // Which port to redirect to if different than original. + PortRedirect *wrapperspb.UInt32Value `protobuf:"bytes,7,opt,name=port_redirect,json=portRedirect,proto3" json:"port_redirect,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RedirectAction) Reset() { *x = RedirectAction{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RedirectAction) String() string { @@ -1462,8 +2079,8 @@ func (x *RedirectAction) String() string { func (*RedirectAction) ProtoMessage() {} func (x *RedirectAction) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[19] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1475,7 +2092,7 @@ func (x *RedirectAction) ProtoReflect() protoreflect.Message { // Deprecated: Use RedirectAction.ProtoReflect.Descriptor instead. func (*RedirectAction) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{14} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{19} } func (x *RedirectAction) GetHostRedirect() string { @@ -1485,27 +2102,40 @@ func (x *RedirectAction) GetHostRedirect() string { return "" } -func (m *RedirectAction) GetPathRewriteSpecifier() isRedirectAction_PathRewriteSpecifier { - if m != nil { - return m.PathRewriteSpecifier +func (x *RedirectAction) GetPathRewriteSpecifier() isRedirectAction_PathRewriteSpecifier { + if x != nil { + return x.PathRewriteSpecifier } return nil } func (x *RedirectAction) GetPathRedirect() string { - if x, ok := x.GetPathRewriteSpecifier().(*RedirectAction_PathRedirect); ok { - return x.PathRedirect + if x != nil { + if x, ok := x.PathRewriteSpecifier.(*RedirectAction_PathRedirect); ok { + return x.PathRedirect + } } return "" } func (x *RedirectAction) GetPrefixRewrite() string { - if x, ok := x.GetPathRewriteSpecifier().(*RedirectAction_PrefixRewrite); ok { - return x.PrefixRewrite + if x != nil { + if x, ok := x.PathRewriteSpecifier.(*RedirectAction_PrefixRewrite); ok { + return x.PrefixRewrite + } } return "" } +func (x *RedirectAction) GetRegexRewrite() *v31.RegexMatchAndSubstitute { + if x != nil { + if x, ok := x.PathRewriteSpecifier.(*RedirectAction_RegexRewrite); ok { + return x.RegexRewrite + } + } + return nil +} + func (x *RedirectAction) GetResponseCode() RedirectAction_RedirectResponseCode { if x != nil { return x.ResponseCode @@ -1527,6 +2157,13 @@ func (x *RedirectAction) GetStripQuery() bool { return false } +func (x *RedirectAction) GetPortRedirect() *wrapperspb.UInt32Value { + if x != nil { + return x.PortRedirect + } + return nil +} + type isRedirectAction_PathRewriteSpecifier interface { isRedirectAction_PathRewriteSpecifier() } @@ -1541,38 +2178,69 @@ type RedirectAction_PrefixRewrite struct { // should be swapped with this value. This option allows redirect URLs be dynamically created // based on the request. // - // Pay attention to the use of trailing slashes as mentioned in - // `RouteAction`'s `prefix_rewrite`. + // Pay attention to the use of trailing slashes as mentioned in + // `RouteAction`'s `prefix_rewrite`. PrefixRewrite string `protobuf:"bytes,5,opt,name=prefix_rewrite,json=prefixRewrite,proto3,oneof"` } +type RedirectAction_RegexRewrite struct { + // Indicates that during forwarding, portions of the path that match the + // pattern should be rewritten, even allowing the substitution of capture + // groups from the pattern into the new path as specified by the rewrite + // substitution string. This is useful to allow application paths to be + // rewritten in a way that is aware of segments with variable content like + // identifiers. The router filter will place the original path as it was + // before the rewrite into the :ref:`x-envoy-original-path + // ` header. + // + // Only one of :ref:`prefix_rewrite ` + // or *regex_rewrite* may be specified. + // + // Examples using Google's [RE2](https://github.com/google/re2) engine: + // + // - The path pattern `^/service/([^/]+)(/.*)$` paired with a substitution + // string of `\2/instance/\1` would transform `/service/foo/v1/api` + // into `/v1/api/instance/foo`. + // + // - The pattern `one` paired with a substitution string of `two` would + // transform `/xxx/one/yyy/one/zzz` into `/xxx/two/yyy/two/zzz`. + // + // - The pattern `^(.*?)one(.*)$` paired with a substitution string of + // `\1two\2` would replace only the first occurrence of `one`, + // transforming path `/xxx/one/yyy/one/zzz` into `/xxx/two/yyy/one/zzz`. + // + // - The pattern `(?i)/xxx/` paired with a substitution string of `/yyy/` + // would do a case-insensitive match and transform path `/aaa/XxX/bbb` to + // `/aaa/yyy/bbb`. + RegexRewrite *v31.RegexMatchAndSubstitute `protobuf:"bytes,32,opt,name=regex_rewrite,json=regexRewrite,proto3,oneof"` +} + func (*RedirectAction_PathRedirect) isRedirectAction_PathRewriteSpecifier() {} func (*RedirectAction_PrefixRewrite) isRedirectAction_PathRewriteSpecifier() {} -// DirectResponseAction is copied directly from https://github.com/envoyproxy/envoy/blob/master/api/envoy/api/v2/route/route.proto -type DirectResponseAction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (*RedirectAction_RegexRewrite) isRedirectAction_PathRewriteSpecifier() {} +// DirectResponseAction is copied directly from https://github.com/envoyproxy/envoy/blob/main/api/envoy/api/v2/route/route.proto +type DirectResponseAction struct { + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the HTTP response status to be returned. Status uint32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` // Specifies the content of the response body. If this setting is omitted, // no body is included in the generated response. // - // Note: Headers can be specified using the Header Modification feature in the enclosing - // Route, Virtual Host, or Listener options. - Body string `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` + // Note: Headers can be specified using the Header Modification feature in the enclosing + // Route, Virtual Host, or Listener options. + Body string `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DirectResponseAction) Reset() { *x = DirectResponseAction{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DirectResponseAction) String() string { @@ -1582,8 +2250,8 @@ func (x *DirectResponseAction) String() string { func (*DirectResponseAction) ProtoMessage() {} func (x *DirectResponseAction) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[20] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1595,28 +2263,139 @@ func (x *DirectResponseAction) ProtoReflect() protoreflect.Message { // Deprecated: Use DirectResponseAction.ProtoReflect.Descriptor instead. func (*DirectResponseAction) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{15} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{20} +} + +func (x *DirectResponseAction) GetStatus() uint32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *DirectResponseAction) GetBody() string { + if x != nil { + return x.Body + } + return "" +} + +// SourceMetadata is an internal message used to track ownership of nested proxy objects: +// - Listener +// - VirtualHost +// - Route +type SourceMetadata struct { + state protoimpl.MessageState `protogen:"open.v1"` + // A list of sources + Sources []*SourceMetadata_SourceRef `protobuf:"bytes,1,rep,name=sources,proto3" json:"sources,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SourceMetadata) Reset() { + *x = SourceMetadata{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SourceMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SourceMetadata) ProtoMessage() {} + +func (x *SourceMetadata) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SourceMetadata.ProtoReflect.Descriptor instead. +func (*SourceMetadata) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{21} +} + +func (x *SourceMetadata) GetSources() []*SourceMetadata_SourceRef { + if x != nil { + return x.Sources + } + return nil +} + +// CustomEnvoyFilter contains an arbitrary filter. +// These may be HTTPFilters or NetworkFilters, depending on the context they're used. +type CustomEnvoyFilter struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Determines filter ordering. + FilterStage *filters.FilterStage `protobuf:"bytes,1,opt,name=filter_stage,json=filterStage,proto3" json:"filter_stage,omitempty"` + // The name of the filter configuration. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // Filter specific configuration. + Config *anypb.Any `protobuf:"bytes,3,opt,name=config,proto3" json:"config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CustomEnvoyFilter) Reset() { + *x = CustomEnvoyFilter{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CustomEnvoyFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CustomEnvoyFilter) ProtoMessage() {} + +func (x *CustomEnvoyFilter) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (x *DirectResponseAction) GetStatus() uint32 { +// Deprecated: Use CustomEnvoyFilter.ProtoReflect.Descriptor instead. +func (*CustomEnvoyFilter) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{22} +} + +func (x *CustomEnvoyFilter) GetFilterStage() *filters.FilterStage { if x != nil { - return x.Status + return x.FilterStage } - return 0 + return nil } -func (x *DirectResponseAction) GetBody() string { +func (x *CustomEnvoyFilter) GetName() string { if x != nil { - return x.Body + return x.Name } return "" } -type UpstreamGroupStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *CustomEnvoyFilter) GetConfig() *anypb.Any { + if x != nil { + return x.Config + } + return nil +} +type UpstreamGroupStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` // State is the enum indicating the state of the resource State UpstreamGroupStatus_State `protobuf:"varint,1,opt,name=state,proto3,enum=gloo.solo.io.UpstreamGroupStatus_State" json:"state,omitempty"` // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty @@ -1624,18 +2403,18 @@ type UpstreamGroupStatus struct { // Reference to the reporter who wrote this status ReportedBy string `protobuf:"bytes,3,opt,name=reported_by,json=reportedBy,proto3" json:"reported_by,omitempty"` // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource - SubresourceStatuses map[string]*UpstreamGroupStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + SubresourceStatuses map[string]*UpstreamGroupStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Opaque details about status results - Details *_struct.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + Details *structpb.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpstreamGroupStatus) Reset() { *x = UpstreamGroupStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpstreamGroupStatus) String() string { @@ -1645,8 +2424,8 @@ func (x *UpstreamGroupStatus) String() string { func (*UpstreamGroupStatus) ProtoMessage() {} func (x *UpstreamGroupStatus) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[23] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1658,7 +2437,7 @@ func (x *UpstreamGroupStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use UpstreamGroupStatus.ProtoReflect.Descriptor instead. func (*UpstreamGroupStatus) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{16} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{23} } func (x *UpstreamGroupStatus) GetState() UpstreamGroupStatus_State { @@ -1689,18 +2468,59 @@ func (x *UpstreamGroupStatus) GetSubresourceStatuses() map[string]*UpstreamGroup return nil } -func (x *UpstreamGroupStatus) GetDetails() *_struct.Struct { +func (x *UpstreamGroupStatus) GetDetails() *structpb.Struct { if x != nil { return x.Details } return nil } -type ProxyStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type UpstreamGroupNamespacedStatuses struct { + state protoimpl.MessageState `protogen:"open.v1"` + Statuses map[string]*UpstreamGroupStatus `protobuf:"bytes,1,rep,name=statuses,proto3" json:"statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamGroupNamespacedStatuses) Reset() { + *x = UpstreamGroupNamespacedStatuses{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamGroupNamespacedStatuses) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamGroupNamespacedStatuses) ProtoMessage() {} + +func (x *UpstreamGroupNamespacedStatuses) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpstreamGroupNamespacedStatuses.ProtoReflect.Descriptor instead. +func (*UpstreamGroupNamespacedStatuses) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{24} +} + +func (x *UpstreamGroupNamespacedStatuses) GetStatuses() map[string]*UpstreamGroupStatus { + if x != nil { + return x.Statuses + } + return nil +} +type ProxyStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` // State is the enum indicating the state of the resource State ProxyStatus_State `protobuf:"varint,1,opt,name=state,proto3,enum=gloo.solo.io.ProxyStatus_State" json:"state,omitempty"` // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty @@ -1708,18 +2528,18 @@ type ProxyStatus struct { // Reference to the reporter who wrote this status ReportedBy string `protobuf:"bytes,3,opt,name=reported_by,json=reportedBy,proto3" json:"reported_by,omitempty"` // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource - SubresourceStatuses map[string]*ProxyStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + SubresourceStatuses map[string]*ProxyStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Opaque details about status results - Details *_struct.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + Details *structpb.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ProxyStatus) Reset() { *x = ProxyStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProxyStatus) String() string { @@ -1729,8 +2549,8 @@ func (x *ProxyStatus) String() string { func (*ProxyStatus) ProtoMessage() {} func (x *ProxyStatus) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[25] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1742,7 +2562,7 @@ func (x *ProxyStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use ProxyStatus.ProtoReflect.Descriptor instead. func (*ProxyStatus) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{17} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{25} } func (x *ProxyStatus) GetState() ProxyStatus_State { @@ -1773,35 +2593,77 @@ func (x *ProxyStatus) GetSubresourceStatuses() map[string]*ProxyStatus { return nil } -func (x *ProxyStatus) GetDetails() *_struct.Struct { +func (x *ProxyStatus) GetDetails() *structpb.Struct { if x != nil { return x.Details } return nil } +type ProxyNamespacedStatuses struct { + state protoimpl.MessageState `protogen:"open.v1"` + Statuses map[string]*ProxyStatus `protobuf:"bytes,1,rep,name=statuses,proto3" json:"statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ProxyNamespacedStatuses) Reset() { + *x = ProxyNamespacedStatuses{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ProxyNamespacedStatuses) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProxyNamespacedStatuses) ProtoMessage() {} + +func (x *ProxyNamespacedStatuses) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProxyNamespacedStatuses.ProtoReflect.Descriptor instead. +func (*ProxyNamespacedStatuses) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{26} +} + +func (x *ProxyNamespacedStatuses) GetStatuses() map[string]*ProxyStatus { + if x != nil { + return x.Statuses + } + return nil +} + // Name of the destinations the gateway can route to. // Note: the destination spec and subsets are not supported in this context and will be ignored. type TcpHost_TcpAction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Destination: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Destination: + // // *TcpHost_TcpAction_Single // *TcpHost_TcpAction_Multi // *TcpHost_TcpAction_UpstreamGroup // *TcpHost_TcpAction_ForwardSniClusterName - Destination isTcpHost_TcpAction_Destination `protobuf_oneof:"destination"` + Destination isTcpHost_TcpAction_Destination `protobuf_oneof:"destination"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TcpHost_TcpAction) Reset() { *x = TcpHost_TcpAction{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TcpHost_TcpAction) String() string { @@ -1811,8 +2673,8 @@ func (x *TcpHost_TcpAction) String() string { func (*TcpHost_TcpAction) ProtoMessage() {} func (x *TcpHost_TcpAction) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[27] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1827,37 +2689,45 @@ func (*TcpHost_TcpAction) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{3, 0} } -func (m *TcpHost_TcpAction) GetDestination() isTcpHost_TcpAction_Destination { - if m != nil { - return m.Destination +func (x *TcpHost_TcpAction) GetDestination() isTcpHost_TcpAction_Destination { + if x != nil { + return x.Destination } return nil } func (x *TcpHost_TcpAction) GetSingle() *Destination { - if x, ok := x.GetDestination().(*TcpHost_TcpAction_Single); ok { - return x.Single + if x != nil { + if x, ok := x.Destination.(*TcpHost_TcpAction_Single); ok { + return x.Single + } } return nil } func (x *TcpHost_TcpAction) GetMulti() *MultiDestination { - if x, ok := x.GetDestination().(*TcpHost_TcpAction_Multi); ok { - return x.Multi + if x != nil { + if x, ok := x.Destination.(*TcpHost_TcpAction_Multi); ok { + return x.Multi + } } return nil } func (x *TcpHost_TcpAction) GetUpstreamGroup() *core.ResourceRef { - if x, ok := x.GetDestination().(*TcpHost_TcpAction_UpstreamGroup); ok { - return x.UpstreamGroup + if x != nil { + if x, ok := x.Destination.(*TcpHost_TcpAction_UpstreamGroup); ok { + return x.UpstreamGroup + } } return nil } -func (x *TcpHost_TcpAction) GetForwardSniClusterName() *empty.Empty { - if x, ok := x.GetDestination().(*TcpHost_TcpAction_ForwardSniClusterName); ok { - return x.ForwardSniClusterName +func (x *TcpHost_TcpAction) GetForwardSniClusterName() *emptypb.Empty { + if x != nil { + if x, ok := x.Destination.(*TcpHost_TcpAction_ForwardSniClusterName); ok { + return x.ForwardSniClusterName + } } return nil } @@ -1885,7 +2755,7 @@ type TcpHost_TcpAction_ForwardSniClusterName struct { // Forwards the request to a cluster name matching the TLS SNI name // https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/filter/network/sni_cluster/empty/sni_cluster // Note: This filter will only work properly with TLS connections in which the upstream SNI domain is specified - ForwardSniClusterName *empty.Empty `protobuf:"bytes,4,opt,name=forward_sni_cluster_name,json=forwardSniClusterName,proto3,oneof"` + ForwardSniClusterName *emptypb.Empty `protobuf:"bytes,4,opt,name=forward_sni_cluster_name,json=forwardSniClusterName,proto3,oneof"` } func (*TcpHost_TcpAction_Single) isTcpHost_TcpAction_Destination() {} @@ -1896,9 +2766,209 @@ func (*TcpHost_TcpAction_UpstreamGroup) isTcpHost_TcpAction_Destination() {} func (*TcpHost_TcpAction_ForwardSniClusterName) isTcpHost_TcpAction_Destination() {} +type AggregateListener_HttpResources struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Set of VirtualHosts available on this Listener, indexed by name + VirtualHosts map[string]*VirtualHost `protobuf:"bytes,1,rep,name=virtual_hosts,json=virtualHosts,proto3" json:"virtual_hosts,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Set of HttpListenerOptions available on this Listener, indexed by hash + HttpOptions map[string]*HttpListenerOptions `protobuf:"bytes,2,rep,name=http_options,json=httpOptions,proto3" json:"http_options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AggregateListener_HttpResources) Reset() { + *x = AggregateListener_HttpResources{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AggregateListener_HttpResources) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AggregateListener_HttpResources) ProtoMessage() {} + +func (x *AggregateListener_HttpResources) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AggregateListener_HttpResources.ProtoReflect.Descriptor instead. +func (*AggregateListener_HttpResources) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{9, 0} +} + +func (x *AggregateListener_HttpResources) GetVirtualHosts() map[string]*VirtualHost { + if x != nil { + return x.VirtualHosts + } + return nil +} + +func (x *AggregateListener_HttpResources) GetHttpOptions() map[string]*HttpListenerOptions { + if x != nil { + return x.HttpOptions + } + return nil +} + +type AggregateListener_HttpFilterChain struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Matching criteria used to generate both the FilterChainMatch and TransportSocket for the Envoy FilterChain + Matcher *Matcher `protobuf:"bytes,1,opt,name=matcher,proto3" json:"matcher,omitempty"` + // The ref pointing to HttpListenerOptions which are used to configure the HCM on this HttpFilterChain + // Corresponds to an entry in the HttpResources.HttpOptions map + HttpOptionsRef string `protobuf:"bytes,2,opt,name=http_options_ref,json=httpOptionsRef,proto3" json:"http_options_ref,omitempty"` + // The set of refs pointing to VirtualHosts which are available on this HttpFilterChain + // Each ref corresponds to an entry in the HttpResources.VirtualHosts map + VirtualHostRefs []string `protobuf:"bytes,3,rep,name=virtual_host_refs,json=virtualHostRefs,proto3" json:"virtual_host_refs,omitempty"` + // Additional arbitrary HTTPFilters that will be inserted directly into xDS. + CustomHttpFilters []*CustomEnvoyFilter `protobuf:"bytes,37,rep,name=custom_http_filters,json=customHttpFilters,proto3" json:"custom_http_filters,omitempty"` + // Additional arbitrary network Filters that will be inserted directly into xDS. + CustomNetworkFilters []*CustomEnvoyFilter `protobuf:"bytes,38,rep,name=custom_network_filters,json=customNetworkFilters,proto3" json:"custom_network_filters,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AggregateListener_HttpFilterChain) Reset() { + *x = AggregateListener_HttpFilterChain{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AggregateListener_HttpFilterChain) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AggregateListener_HttpFilterChain) ProtoMessage() {} + +func (x *AggregateListener_HttpFilterChain) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[29] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AggregateListener_HttpFilterChain.ProtoReflect.Descriptor instead. +func (*AggregateListener_HttpFilterChain) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{9, 1} +} + +func (x *AggregateListener_HttpFilterChain) GetMatcher() *Matcher { + if x != nil { + return x.Matcher + } + return nil +} + +func (x *AggregateListener_HttpFilterChain) GetHttpOptionsRef() string { + if x != nil { + return x.HttpOptionsRef + } + return "" +} + +func (x *AggregateListener_HttpFilterChain) GetVirtualHostRefs() []string { + if x != nil { + return x.VirtualHostRefs + } + return nil +} + +func (x *AggregateListener_HttpFilterChain) GetCustomHttpFilters() []*CustomEnvoyFilter { + if x != nil { + return x.CustomHttpFilters + } + return nil +} + +func (x *AggregateListener_HttpFilterChain) GetCustomNetworkFilters() []*CustomEnvoyFilter { + if x != nil { + return x.CustomNetworkFilters + } + return nil +} + +type SourceMetadata_SourceRef struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The resource being referenced + ResourceRef *core.ResourceRef `protobuf:"bytes,1,opt,name=resource_ref,json=resourceRef,proto3" json:"resource_ref,omitempty"` + // The resource Kind + ResourceKind string `protobuf:"bytes,2,opt,name=resource_kind,json=resourceKind,proto3" json:"resource_kind,omitempty"` + // The observed generation of the resource + ObservedGeneration int64 `protobuf:"varint,3,opt,name=observed_generation,json=observedGeneration,proto3" json:"observed_generation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SourceMetadata_SourceRef) Reset() { + *x = SourceMetadata_SourceRef{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SourceMetadata_SourceRef) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SourceMetadata_SourceRef) ProtoMessage() {} + +func (x *SourceMetadata_SourceRef) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[32] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SourceMetadata_SourceRef.ProtoReflect.Descriptor instead. +func (*SourceMetadata_SourceRef) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP(), []int{21, 0} +} + +func (x *SourceMetadata_SourceRef) GetResourceRef() *core.ResourceRef { + if x != nil { + return x.ResourceRef + } + return nil +} + +func (x *SourceMetadata_SourceRef) GetResourceKind() string { + if x != nil { + return x.ResourceKind + } + return "" +} + +func (x *SourceMetadata_SourceRef) GetObservedGeneration() int64 { + if x != nil { + return x.ObservedGeneration + } + return 0 +} + var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDesc = string([]byte{ 0x0a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -1909,70 +2979,146 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDesc = []b 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, - 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x6b, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x49, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x48, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x63, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, + 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x48, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x76, + 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, - 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x73, 0x6c, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4f, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x75, 0x74, + 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x50, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x73, + 0x73, 0x6c, 0x2f, 0x73, 0x73, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3a, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, + 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x42, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, - 0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3b, + 0x31, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4a, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, - 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x41, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x78, 0x79, - 0x53, 0x70, 0x65, 0x63, 0x12, 0x34, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52, - 0x09, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x73, 0x22, 0xbf, 0x04, 0x0a, 0x08, 0x4c, - 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, - 0x69, 0x6e, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x62, 0x69, 0x6e, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, - 0x0a, 0x09, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x41, 0x0a, 0x0d, 0x68, - 0x74, 0x74, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x48, 0x00, - 0x52, 0x0c, 0x68, 0x74, 0x74, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x3e, - 0x0a, 0x0c, 0x74, 0x63, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x63, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x48, - 0x00, 0x52, 0x0b, 0x74, 0x63, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x46, - 0x0a, 0x12, 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x11, 0x73, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x5f, 0x70, 0x72, - 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x75, 0x73, 0x65, - 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, - 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x42, 0x04, - 0xb8, 0xf5, 0x04, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4c, - 0x0a, 0x0d, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0e, 0x0a, 0x0c, - 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x9e, 0x01, 0x0a, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x67, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x64, 0x79, + 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x72, + 0x6f, 0x78, 0x79, 0x2f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x66, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x55, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2f, 0x76, 0x33, 0x2f, 0x72, 0x65, 0x67, 0x65, 0x78, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6f, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, + 0x70, 0x65, 0x63, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, + 0x64, 0x53, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6d, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x53, 0x70, 0x65, 0x63, 0x12, 0x34, 0x0a, 0x09, 0x6c, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, + 0x73, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0xc2, 0x06, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x69, 0x6e, 0x64, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x62, 0x69, 0x6e, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x62, + 0x69, 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, + 0x62, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x41, 0x0a, 0x0d, 0x68, 0x74, 0x74, 0x70, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, + 0x74, 0x74, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0c, 0x68, + 0x74, 0x74, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x0c, 0x74, + 0x63, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x54, 0x63, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, + 0x74, 0x63, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x0f, 0x68, + 0x79, 0x62, 0x72, 0x69, 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x65, 0x72, 0x48, 0x00, 0x52, 0x0e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x4c, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x65, 0x72, 0x12, 0x50, 0x0a, 0x12, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, + 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, + 0x72, 0x48, 0x00, 0x52, 0x11, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x4c, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x12, 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x11, 0x73, 0x73, 0x6c, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x46, + 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x78, + 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x42, 0x04, 0xb8, 0xf5, 0x04, 0x01, + 0x48, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x0f, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x42, 0x04, 0xb8, 0xf5, 0x04, 0x01, 0x48, 0x01, 0x52, 0x0e, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x12, 0x4c, 0x0a, 0x0d, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x4c, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x6f, 0x70, 0x61, + 0x71, 0x75, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xf5, 0x01, 0x0a, 0x0b, 0x54, 0x63, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x09, 0x74, 0x63, 0x70, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, @@ -1982,367 +3128,661 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDesc = []b 0x2e, 0x54, 0x63, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0xbf, 0x03, - 0x0a, 0x07, 0x54, 0x63, 0x70, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, - 0x0a, 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x73, 0x73, 0x6c, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x63, 0x70, 0x48, 0x6f, 0x73, - 0x74, 0x2e, 0x54, 0x63, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x9e, 0x02, 0x0a, 0x09, 0x54, 0x63, 0x70, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x06, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x06, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x6d, - 0x75, 0x6c, 0x74, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x44, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x6d, 0x75, - 0x6c, 0x74, 0x69, 0x12, 0x42, 0x0a, 0x0e, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x48, 0x00, 0x52, 0x0d, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x51, 0x0a, 0x18, 0x66, 0x6f, 0x72, 0x77, 0x61, - 0x72, 0x64, 0x5f, 0x73, 0x6e, 0x69, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x48, 0x00, 0x52, 0x15, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x53, 0x6e, 0x69, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x64, 0x65, - 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, - 0xac, 0x01, 0x0a, 0x0c, 0x48, 0x74, 0x74, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, - 0x12, 0x3e, 0x0a, 0x0d, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x68, 0x6f, 0x73, 0x74, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, - 0x73, 0x74, 0x52, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x73, - 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, - 0x0b, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0xdf, - 0x01, 0x0a, 0x0b, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2b, 0x0a, 0x06, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, - 0x65, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x07, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, - 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x42, 0x04, 0xb8, 0xf5, 0x04, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x22, 0xbc, 0x03, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, - 0x72, 0x52, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, 0x3e, 0x0a, 0x0c, 0x72, - 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x55, 0x0a, + 0x16, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x14, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x73, 0x22, 0xbf, 0x03, 0x0a, 0x07, 0x54, 0x63, 0x70, 0x48, 0x6f, 0x73, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x0a, 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x54, 0x63, 0x70, 0x48, 0x6f, 0x73, 0x74, 0x2e, 0x54, 0x63, 0x70, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, + 0x9e, 0x02, 0x0a, 0x09, 0x54, 0x63, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, + 0x06, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x73, 0x69, 0x6e, 0x67, + 0x6c, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x00, 0x52, 0x05, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x12, 0x42, 0x0a, 0x0e, 0x75, 0x70, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x48, 0x00, 0x52, + 0x0d, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x51, + 0x0a, 0x18, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x73, 0x6e, 0x69, 0x5f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x15, 0x66, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x53, 0x6e, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0xf3, 0x03, 0x0a, 0x0c, 0x48, 0x74, 0x74, 0x70, 0x4c, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x0d, 0x76, 0x69, 0x72, 0x74, 0x75, + 0x61, 0x6c, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, + 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, + 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4c, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x70, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x50, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x4f, 0x0a, 0x13, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, + 0x68, 0x74, 0x74, 0x70, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x52, 0x11, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x74, 0x74, 0x70, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x55, 0x0a, 0x16, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x6e, 0x76, 0x6f, + 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x14, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x3b, 0x0a, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x42, 0x04, 0xb8, 0xf5, 0x04, 0x01, 0x48, 0x00, + 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x0f, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x42, 0x04, 0xb8, 0xf5, 0x04, 0x01, 0x48, 0x00, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x42, 0x11, 0x0a, 0x0f, 0x6f, 0x70, 0x61, + 0x71, 0x75, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5c, 0x0a, 0x0e, + 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x4a, + 0x0a, 0x11, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, + 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52, 0x10, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x64, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x73, 0x22, 0x9d, 0x02, 0x0a, 0x0f, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x2f, + 0x0a, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, + 0x41, 0x0a, 0x0d, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x65, 0x72, 0x48, 0x00, 0x52, 0x0c, 0x68, 0x74, 0x74, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x0c, 0x74, 0x63, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x63, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x63, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x65, 0x72, 0x12, 0x46, 0x0a, 0x12, 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x73, + 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x11, 0x73, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x4c, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x12, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x54, 0x63, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, + 0x72, 0x12, 0x2f, 0x0a, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x0c, 0x74, 0x63, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x63, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x65, 0x72, 0x52, 0x0b, 0x74, 0x63, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, + 0x22, 0xef, 0x02, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x0a, + 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x59, 0x0a, 0x14, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x69, 0x64, 0x72, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x12, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, + 0x4c, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x69, 0x64, 0x72, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, + 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x47, 0x0a, + 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x3a, 0x0a, 0x19, 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, + 0x72, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, + 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x70, 0x61, 0x73, 0x73, 0x74, + 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, + 0x65, 0x73, 0x22, 0xec, 0x07, 0x0a, 0x11, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x54, 0x0a, 0x0e, 0x68, 0x74, 0x74, 0x70, + 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, + 0x72, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, + 0x0d, 0x68, 0x74, 0x74, 0x70, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x5d, + 0x0a, 0x12, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x68, + 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, + 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x2e, 0x48, 0x74, 0x74, 0x70, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x10, 0x68, 0x74, 0x74, + 0x70, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x45, 0x0a, + 0x0d, 0x74, 0x63, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x54, 0x63, 0x70, 0x4c, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52, 0x0c, 0x74, 0x63, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x65, 0x72, 0x73, 0x1a, 0x97, 0x03, 0x0a, 0x0d, 0x48, 0x74, 0x74, 0x70, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x64, 0x0a, 0x0d, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, + 0x6c, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x67, 0x67, + 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x2e, 0x48, + 0x74, 0x74, 0x70, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x56, 0x69, 0x72, + 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, + 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x61, 0x0a, 0x0c, + 0x68, 0x74, 0x74, 0x70, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x65, 0x72, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, + 0x5a, 0x0a, 0x11, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x61, 0x0a, 0x10, 0x48, + 0x74, 0x74, 0x70, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x48, 0x74, 0x74, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xc0, + 0x02, 0x0a, 0x0f, 0x48, 0x74, 0x74, 0x70, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x68, 0x61, + 0x69, 0x6e, 0x12, 0x2f, 0x0a, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x68, + 0x74, 0x74, 0x70, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x66, 0x12, 0x2a, 0x0a, + 0x11, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, + 0x66, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, + 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x66, 0x73, 0x12, 0x4f, 0x0a, 0x13, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, + 0x18, 0x25, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x6e, 0x76, 0x6f, + 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x11, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, + 0x74, 0x74, 0x70, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x55, 0x0a, 0x16, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x73, 0x18, 0x26, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x14, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x73, 0x22, 0xc3, 0x02, 0x0a, 0x0b, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, + 0x2b, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x07, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, 0x72, + 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x42, 0x04, 0xb8, 0xf5, 0x04, 0x01, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x0f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x04, 0xb8, 0xf5, + 0x04, 0x01, 0x48, 0x00, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, 0x74, + 0x61, 0x74, 0x69, 0x63, 0x42, 0x11, 0x0a, 0x0f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb7, 0x04, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x74, + 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x72, 0x73, 0x12, 0x3e, 0x0a, 0x0c, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x0f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5a, 0x0a, 0x16, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, + 0x00, 0x52, 0x14, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3b, 0x0a, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x42, 0x04, 0xb8, 0xf5, 0x04, 0x01, 0x48, 0x01, + 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x0f, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x42, 0x04, 0xb8, 0xf5, 0x04, 0x01, 0x48, 0x01, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x08, 0x0a, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x11, 0x0a, 0x0f, 0x6f, 0x70, 0x61, 0x71, 0x75, + 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, + 0x52, 0x0f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x72, 0x65, + 0x66, 0x22, 0xd6, 0x02, 0x0a, 0x0b, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x33, 0x0a, 0x06, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x0f, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5a, 0x0a, 0x16, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x14, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x34, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x42, 0x04, 0xb8, 0xf5, 0x04, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0xf6, 0x01, 0x0a, 0x0b, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x33, 0x0a, 0x06, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x73, 0x69, - 0x6e, 0x67, 0x6c, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x12, 0x42, 0x0a, 0x0e, - 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x48, - 0x00, 0x52, 0x0d, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x12, 0x27, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x64, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd6, 0x02, 0x0a, 0x0b, 0x44, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x08, 0x75, 0x70, 0x73, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x52, 0x65, 0x66, 0x48, 0x00, 0x52, 0x08, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x12, 0x40, 0x0a, 0x04, 0x6b, 0x75, 0x62, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4b, - 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x04, 0x6b, - 0x75, 0x62, 0x65, 0x12, 0x40, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x63, - 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x12, 0x48, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0f, - 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, - 0x2c, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, - 0x75, 0x62, 0x73, 0x65, 0x74, 0x52, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x42, 0x12, 0x0a, - 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x22, 0x5f, 0x0a, 0x1c, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x2b, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x03, 0x72, 0x65, 0x66, 0x12, 0x12, - 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, - 0x72, 0x74, 0x22, 0x74, 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, - 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x61, 0x74, - 0x61, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x22, 0x5a, 0x0a, 0x11, 0x55, 0x70, 0x73, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x45, 0x0a, - 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, + 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x12, 0x42, + 0x0a, 0x0e, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, + 0x66, 0x48, 0x00, 0x52, 0x0d, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x12, 0x27, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x5e, 0x0a, 0x15, 0x64, + 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x70, + 0x72, 0x6f, 0x78, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x64, 0x66, 0x70, + 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x13, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x46, + 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd6, 0x02, 0x0a, 0x0b, 0x44, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x08, 0x75, 0x70, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x48, 0x00, 0x52, 0x08, 0x75, 0x70, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x12, 0x40, 0x0a, 0x04, 0x6b, 0x75, 0x62, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, + 0x04, 0x6b, 0x75, 0x62, 0x65, 0x12, 0x40, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, + 0x06, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x12, 0x48, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, + 0x52, 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, + 0x63, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x52, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x42, + 0x12, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x22, 0x5f, 0x0a, 0x1c, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, + 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x03, 0x72, 0x65, 0x66, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, + 0x70, 0x6f, 0x72, 0x74, 0x22, 0x74, 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x61, 0x74, 0x61, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x22, 0x60, 0x0a, 0x11, 0x55, 0x70, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, + 0x45, 0x0a, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x44, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x59, 0x0a, 0x10, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x45, 0x0a, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x44, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xcc, 0x01, 0x0a, 0x13, 0x57, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x65, 0x64, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x3b, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x06, + 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, + 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x12, 0x42, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x44, 0x65, 0x73, 0x74, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x59, 0x0a, 0x10, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x44, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x0c, 0x64, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x57, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, - 0xae, 0x01, 0x0a, 0x13, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x44, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x42, 0x0a, 0x07, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x57, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x65, 0x64, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x22, 0xb8, 0x03, 0x0a, 0x0e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x68, 0x6f, 0x73, 0x74, - 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x25, 0x0a, 0x0d, 0x70, 0x61, 0x74, 0x68, - 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, - 0x27, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, - 0x78, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x56, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x31, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, - 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, - 0x64, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x25, 0x0a, 0x0e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x68, 0x74, 0x74, 0x70, 0x73, 0x52, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x70, - 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x74, - 0x72, 0x69, 0x70, 0x51, 0x75, 0x65, 0x72, 0x79, 0x22, 0x77, 0x0a, 0x14, 0x52, 0x65, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x41, 0x4e, - 0x45, 0x4e, 0x54, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x4f, 0x55, 0x4e, 0x44, - 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x45, 0x45, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, - 0x02, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x45, 0x4d, 0x50, 0x4f, 0x52, 0x41, 0x52, 0x59, 0x5f, 0x52, - 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x45, 0x52, - 0x4d, 0x41, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, - 0x04, 0x42, 0x18, 0x0a, 0x16, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, - 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x42, 0x0a, 0x14, 0x44, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x62, - 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, - 0xd9, 0x03, 0x0a, 0x13, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1f, - 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, - 0x6d, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x2e, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x73, 0x75, 0x62, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x31, - 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x1a, 0x69, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xda, 0x04, 0x0a, 0x0e, 0x52, 0x65, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x6f, 0x73, + 0x74, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x25, + 0x0a, 0x0d, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x52, 0x65, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x27, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, + 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x5d, + 0x0a, 0x0d, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, + 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x41, 0x6e, 0x64, 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, 0x48, 0x00, 0x52, + 0x0c, 0x72, 0x65, 0x67, 0x65, 0x78, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x56, 0x0a, + 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x5f, 0x72, + 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x68, + 0x74, 0x74, 0x70, 0x73, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x73, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0a, 0x73, 0x74, 0x72, 0x69, 0x70, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x41, 0x0a, + 0x0d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x0c, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x22, 0x77, 0x0a, 0x14, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x4f, 0x56, 0x45, + 0x44, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x41, 0x4e, 0x45, 0x4e, 0x54, 0x4c, 0x59, 0x10, 0x00, 0x12, + 0x09, 0x0a, 0x05, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x45, + 0x45, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x45, 0x4d, + 0x50, 0x4f, 0x52, 0x41, 0x52, 0x59, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, + 0x03, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x45, 0x52, 0x4d, 0x41, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x52, + 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x04, 0x42, 0x18, 0x0a, 0x16, 0x70, 0x61, 0x74, + 0x68, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x22, 0x42, 0x0a, 0x14, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0xf4, 0x01, 0x0a, 0x0e, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x07, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x52, 0x65, 0x66, 0x52, 0x07, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x1a, 0x9f, 0x01, 0x0a, + 0x09, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x12, 0x3c, 0x0a, 0x0c, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x0b, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x2f, 0x0a, + 0x13, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6f, 0x62, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9b, + 0x01, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x0c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x73, + 0x74, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, + 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xd9, 0x03, 0x0a, + 0x13, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x3d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x6d, 0x0a, 0x14, + 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x75, + 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x69, + 0x0a, 0x18, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x05, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, + 0x0c, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0c, 0x0a, + 0x08, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x57, + 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x22, 0xda, 0x01, 0x0a, 0x1f, 0x55, 0x70, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x57, 0x0a, 0x08, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x05, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, 0x01, - 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x10, 0x02, 0x12, 0x0b, - 0x0a, 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x22, 0xb9, 0x03, 0x0a, 0x0b, - 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x35, 0x0a, 0x05, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x65, 0x0a, 0x14, 0x73, - 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x73, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, 0x5e, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb9, 0x03, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x35, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x65, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x65, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x61, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x0c, - 0x0a, 0x08, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, - 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x61, - 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x42, 0x3e, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0xc0, - 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x07, + 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, + 0x61, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x78, + 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, + 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, + 0x03, 0x22, 0xc2, 0x01, 0x0a, 0x17, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x4f, 0x0a, + 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, + 0x72, 0x6f, 0x78, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, 0x56, + 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x42, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, + 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes = make([]protoimpl.MessageInfo, 21) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_goTypes = []interface{}{ - (RedirectAction_RedirectResponseCode)(0), // 0: gloo.solo.io.RedirectAction.RedirectResponseCode - (UpstreamGroupStatus_State)(0), // 1: gloo.solo.io.UpstreamGroupStatus.State - (ProxyStatus_State)(0), // 2: gloo.solo.io.ProxyStatus.State - (*ProxySpec)(nil), // 3: gloo.solo.io.ProxySpec - (*Listener)(nil), // 4: gloo.solo.io.Listener - (*TcpListener)(nil), // 5: gloo.solo.io.TcpListener - (*TcpHost)(nil), // 6: gloo.solo.io.TcpHost - (*HttpListener)(nil), // 7: gloo.solo.io.HttpListener - (*VirtualHost)(nil), // 8: gloo.solo.io.VirtualHost - (*Route)(nil), // 9: gloo.solo.io.Route - (*RouteAction)(nil), // 10: gloo.solo.io.RouteAction - (*Destination)(nil), // 11: gloo.solo.io.Destination - (*KubernetesServiceDestination)(nil), // 12: gloo.solo.io.KubernetesServiceDestination - (*ConsulServiceDestination)(nil), // 13: gloo.solo.io.ConsulServiceDestination - (*UpstreamGroupSpec)(nil), // 14: gloo.solo.io.UpstreamGroupSpec - (*MultiDestination)(nil), // 15: gloo.solo.io.MultiDestination - (*WeightedDestination)(nil), // 16: gloo.solo.io.WeightedDestination - (*RedirectAction)(nil), // 17: gloo.solo.io.RedirectAction - (*DirectResponseAction)(nil), // 18: gloo.solo.io.DirectResponseAction - (*UpstreamGroupStatus)(nil), // 19: gloo.solo.io.UpstreamGroupStatus - (*ProxyStatus)(nil), // 20: gloo.solo.io.ProxyStatus - (*TcpHost_TcpAction)(nil), // 21: gloo.solo.io.TcpHost.TcpAction - nil, // 22: gloo.solo.io.UpstreamGroupStatus.SubresourceStatusesEntry - nil, // 23: gloo.solo.io.ProxyStatus.SubresourceStatusesEntry - (*SslConfig)(nil), // 24: gloo.solo.io.SslConfig - (*wrappers.BoolValue)(nil), // 25: google.protobuf.BoolValue - (*ListenerOptions)(nil), // 26: gloo.solo.io.ListenerOptions - (*_struct.Struct)(nil), // 27: google.protobuf.Struct - (*RouteConfigurationOptions)(nil), // 28: gloo.solo.io.RouteConfigurationOptions - (*TcpListenerOptions)(nil), // 29: gloo.solo.io.TcpListenerOptions - (*HttpListenerOptions)(nil), // 30: gloo.solo.io.HttpListenerOptions - (*VirtualHostOptions)(nil), // 31: gloo.solo.io.VirtualHostOptions - (*matchers.Matcher)(nil), // 32: matchers.core.gloo.solo.io.Matcher - (*RouteOptions)(nil), // 33: gloo.solo.io.RouteOptions - (*core.ResourceRef)(nil), // 34: core.solo.io.ResourceRef - (*DestinationSpec)(nil), // 35: gloo.solo.io.DestinationSpec - (*Subset)(nil), // 36: gloo.solo.io.Subset - (*WeightedDestinationOptions)(nil), // 37: gloo.solo.io.WeightedDestinationOptions - (*empty.Empty)(nil), // 38: google.protobuf.Empty +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes = make([]protoimpl.MessageInfo, 37) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_goTypes = []any{ + (RedirectAction_RedirectResponseCode)(0), // 0: gloo.solo.io.RedirectAction.RedirectResponseCode + (UpstreamGroupStatus_State)(0), // 1: gloo.solo.io.UpstreamGroupStatus.State + (ProxyStatus_State)(0), // 2: gloo.solo.io.ProxyStatus.State + (*ProxySpec)(nil), // 3: gloo.solo.io.ProxySpec + (*Listener)(nil), // 4: gloo.solo.io.Listener + (*TcpListener)(nil), // 5: gloo.solo.io.TcpListener + (*TcpHost)(nil), // 6: gloo.solo.io.TcpHost + (*HttpListener)(nil), // 7: gloo.solo.io.HttpListener + (*HybridListener)(nil), // 8: gloo.solo.io.HybridListener + (*MatchedListener)(nil), // 9: gloo.solo.io.MatchedListener + (*MatchedTcpListener)(nil), // 10: gloo.solo.io.MatchedTcpListener + (*Matcher)(nil), // 11: gloo.solo.io.Matcher + (*AggregateListener)(nil), // 12: gloo.solo.io.AggregateListener + (*VirtualHost)(nil), // 13: gloo.solo.io.VirtualHost + (*Route)(nil), // 14: gloo.solo.io.Route + (*RouteAction)(nil), // 15: gloo.solo.io.RouteAction + (*Destination)(nil), // 16: gloo.solo.io.Destination + (*KubernetesServiceDestination)(nil), // 17: gloo.solo.io.KubernetesServiceDestination + (*ConsulServiceDestination)(nil), // 18: gloo.solo.io.ConsulServiceDestination + (*UpstreamGroupSpec)(nil), // 19: gloo.solo.io.UpstreamGroupSpec + (*MultiDestination)(nil), // 20: gloo.solo.io.MultiDestination + (*WeightedDestination)(nil), // 21: gloo.solo.io.WeightedDestination + (*RedirectAction)(nil), // 22: gloo.solo.io.RedirectAction + (*DirectResponseAction)(nil), // 23: gloo.solo.io.DirectResponseAction + (*SourceMetadata)(nil), // 24: gloo.solo.io.SourceMetadata + (*CustomEnvoyFilter)(nil), // 25: gloo.solo.io.CustomEnvoyFilter + (*UpstreamGroupStatus)(nil), // 26: gloo.solo.io.UpstreamGroupStatus + (*UpstreamGroupNamespacedStatuses)(nil), // 27: gloo.solo.io.UpstreamGroupNamespacedStatuses + (*ProxyStatus)(nil), // 28: gloo.solo.io.ProxyStatus + (*ProxyNamespacedStatuses)(nil), // 29: gloo.solo.io.ProxyNamespacedStatuses + (*TcpHost_TcpAction)(nil), // 30: gloo.solo.io.TcpHost.TcpAction + (*AggregateListener_HttpResources)(nil), // 31: gloo.solo.io.AggregateListener.HttpResources + (*AggregateListener_HttpFilterChain)(nil), // 32: gloo.solo.io.AggregateListener.HttpFilterChain + nil, // 33: gloo.solo.io.AggregateListener.HttpResources.VirtualHostsEntry + nil, // 34: gloo.solo.io.AggregateListener.HttpResources.HttpOptionsEntry + (*SourceMetadata_SourceRef)(nil), // 35: gloo.solo.io.SourceMetadata.SourceRef + nil, // 36: gloo.solo.io.UpstreamGroupStatus.SubresourceStatusesEntry + nil, // 37: gloo.solo.io.UpstreamGroupNamespacedStatuses.StatusesEntry + nil, // 38: gloo.solo.io.ProxyStatus.SubresourceStatusesEntry + nil, // 39: gloo.solo.io.ProxyNamespacedStatuses.StatusesEntry + (*ssl.SslConfig)(nil), // 40: gloo.solo.io.SslConfig + (*wrapperspb.BoolValue)(nil), // 41: google.protobuf.BoolValue + (*ListenerOptions)(nil), // 42: gloo.solo.io.ListenerOptions + (*structpb.Struct)(nil), // 43: google.protobuf.Struct + (*RouteConfigurationOptions)(nil), // 44: gloo.solo.io.RouteConfigurationOptions + (*TcpListenerOptions)(nil), // 45: gloo.solo.io.TcpListenerOptions + (*HttpListenerOptions)(nil), // 46: gloo.solo.io.HttpListenerOptions + (*v3.CidrRange)(nil), // 47: solo.io.envoy.config.core.v3.CidrRange + (*wrapperspb.UInt32Value)(nil), // 48: google.protobuf.UInt32Value + (*VirtualHostOptions)(nil), // 49: gloo.solo.io.VirtualHostOptions + (*matchers.Matcher)(nil), // 50: matchers.core.gloo.solo.io.Matcher + (*RouteOptions)(nil), // 51: gloo.solo.io.RouteOptions + (*core.ResourceRef)(nil), // 52: core.solo.io.ResourceRef + (*dynamic_forward_proxy.PerRouteConfig)(nil), // 53: dfp.options.gloo.solo.io.PerRouteConfig + (*DestinationSpec)(nil), // 54: gloo.solo.io.DestinationSpec + (*Subset)(nil), // 55: gloo.solo.io.Subset + (*WeightedDestinationOptions)(nil), // 56: gloo.solo.io.WeightedDestinationOptions + (*v31.RegexMatchAndSubstitute)(nil), // 57: solo.io.envoy.type.matcher.v3.RegexMatchAndSubstitute + (*filters.FilterStage)(nil), // 58: filters.gloo.solo.io.FilterStage + (*anypb.Any)(nil), // 59: google.protobuf.Any + (*emptypb.Empty)(nil), // 60: google.protobuf.Empty } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_depIdxs = []int32{ 4, // 0: gloo.solo.io.ProxySpec.listeners:type_name -> gloo.solo.io.Listener 7, // 1: gloo.solo.io.Listener.http_listener:type_name -> gloo.solo.io.HttpListener 5, // 2: gloo.solo.io.Listener.tcp_listener:type_name -> gloo.solo.io.TcpListener - 24, // 3: gloo.solo.io.Listener.ssl_configurations:type_name -> gloo.solo.io.SslConfig - 25, // 4: gloo.solo.io.Listener.use_proxy_proto:type_name -> google.protobuf.BoolValue - 26, // 5: gloo.solo.io.Listener.options:type_name -> gloo.solo.io.ListenerOptions - 27, // 6: gloo.solo.io.Listener.metadata:type_name -> google.protobuf.Struct - 28, // 7: gloo.solo.io.Listener.route_options:type_name -> gloo.solo.io.RouteConfigurationOptions - 6, // 8: gloo.solo.io.TcpListener.tcp_hosts:type_name -> gloo.solo.io.TcpHost - 29, // 9: gloo.solo.io.TcpListener.options:type_name -> gloo.solo.io.TcpListenerOptions - 24, // 10: gloo.solo.io.TcpHost.ssl_config:type_name -> gloo.solo.io.SslConfig - 21, // 11: gloo.solo.io.TcpHost.destination:type_name -> gloo.solo.io.TcpHost.TcpAction - 8, // 12: gloo.solo.io.HttpListener.virtual_hosts:type_name -> gloo.solo.io.VirtualHost - 30, // 13: gloo.solo.io.HttpListener.options:type_name -> gloo.solo.io.HttpListenerOptions - 9, // 14: gloo.solo.io.VirtualHost.routes:type_name -> gloo.solo.io.Route - 31, // 15: gloo.solo.io.VirtualHost.options:type_name -> gloo.solo.io.VirtualHostOptions - 27, // 16: gloo.solo.io.VirtualHost.metadata:type_name -> google.protobuf.Struct - 32, // 17: gloo.solo.io.Route.matchers:type_name -> matchers.core.gloo.solo.io.Matcher - 10, // 18: gloo.solo.io.Route.route_action:type_name -> gloo.solo.io.RouteAction - 17, // 19: gloo.solo.io.Route.redirect_action:type_name -> gloo.solo.io.RedirectAction - 18, // 20: gloo.solo.io.Route.direct_response_action:type_name -> gloo.solo.io.DirectResponseAction - 33, // 21: gloo.solo.io.Route.options:type_name -> gloo.solo.io.RouteOptions - 27, // 22: gloo.solo.io.Route.metadata:type_name -> google.protobuf.Struct - 11, // 23: gloo.solo.io.RouteAction.single:type_name -> gloo.solo.io.Destination - 15, // 24: gloo.solo.io.RouteAction.multi:type_name -> gloo.solo.io.MultiDestination - 34, // 25: gloo.solo.io.RouteAction.upstream_group:type_name -> core.solo.io.ResourceRef - 34, // 26: gloo.solo.io.Destination.upstream:type_name -> core.solo.io.ResourceRef - 12, // 27: gloo.solo.io.Destination.kube:type_name -> gloo.solo.io.KubernetesServiceDestination - 13, // 28: gloo.solo.io.Destination.consul:type_name -> gloo.solo.io.ConsulServiceDestination - 35, // 29: gloo.solo.io.Destination.destination_spec:type_name -> gloo.solo.io.DestinationSpec - 36, // 30: gloo.solo.io.Destination.subset:type_name -> gloo.solo.io.Subset - 34, // 31: gloo.solo.io.KubernetesServiceDestination.ref:type_name -> core.solo.io.ResourceRef - 16, // 32: gloo.solo.io.UpstreamGroupSpec.destinations:type_name -> gloo.solo.io.WeightedDestination - 16, // 33: gloo.solo.io.MultiDestination.destinations:type_name -> gloo.solo.io.WeightedDestination - 11, // 34: gloo.solo.io.WeightedDestination.destination:type_name -> gloo.solo.io.Destination - 37, // 35: gloo.solo.io.WeightedDestination.options:type_name -> gloo.solo.io.WeightedDestinationOptions - 0, // 36: gloo.solo.io.RedirectAction.response_code:type_name -> gloo.solo.io.RedirectAction.RedirectResponseCode - 1, // 37: gloo.solo.io.UpstreamGroupStatus.state:type_name -> gloo.solo.io.UpstreamGroupStatus.State - 22, // 38: gloo.solo.io.UpstreamGroupStatus.subresource_statuses:type_name -> gloo.solo.io.UpstreamGroupStatus.SubresourceStatusesEntry - 27, // 39: gloo.solo.io.UpstreamGroupStatus.details:type_name -> google.protobuf.Struct - 2, // 40: gloo.solo.io.ProxyStatus.state:type_name -> gloo.solo.io.ProxyStatus.State - 23, // 41: gloo.solo.io.ProxyStatus.subresource_statuses:type_name -> gloo.solo.io.ProxyStatus.SubresourceStatusesEntry - 27, // 42: gloo.solo.io.ProxyStatus.details:type_name -> google.protobuf.Struct - 11, // 43: gloo.solo.io.TcpHost.TcpAction.single:type_name -> gloo.solo.io.Destination - 15, // 44: gloo.solo.io.TcpHost.TcpAction.multi:type_name -> gloo.solo.io.MultiDestination - 34, // 45: gloo.solo.io.TcpHost.TcpAction.upstream_group:type_name -> core.solo.io.ResourceRef - 38, // 46: gloo.solo.io.TcpHost.TcpAction.forward_sni_cluster_name:type_name -> google.protobuf.Empty - 19, // 47: gloo.solo.io.UpstreamGroupStatus.SubresourceStatusesEntry.value:type_name -> gloo.solo.io.UpstreamGroupStatus - 20, // 48: gloo.solo.io.ProxyStatus.SubresourceStatusesEntry.value:type_name -> gloo.solo.io.ProxyStatus - 49, // [49:49] is the sub-list for method output_type - 49, // [49:49] is the sub-list for method input_type - 49, // [49:49] is the sub-list for extension type_name - 49, // [49:49] is the sub-list for extension extendee - 0, // [0:49] is the sub-list for field type_name + 8, // 3: gloo.solo.io.Listener.hybrid_listener:type_name -> gloo.solo.io.HybridListener + 12, // 4: gloo.solo.io.Listener.aggregate_listener:type_name -> gloo.solo.io.AggregateListener + 40, // 5: gloo.solo.io.Listener.ssl_configurations:type_name -> gloo.solo.io.SslConfig + 41, // 6: gloo.solo.io.Listener.use_proxy_proto:type_name -> google.protobuf.BoolValue + 42, // 7: gloo.solo.io.Listener.options:type_name -> gloo.solo.io.ListenerOptions + 43, // 8: gloo.solo.io.Listener.metadata:type_name -> google.protobuf.Struct + 24, // 9: gloo.solo.io.Listener.metadata_static:type_name -> gloo.solo.io.SourceMetadata + 44, // 10: gloo.solo.io.Listener.route_options:type_name -> gloo.solo.io.RouteConfigurationOptions + 6, // 11: gloo.solo.io.TcpListener.tcp_hosts:type_name -> gloo.solo.io.TcpHost + 45, // 12: gloo.solo.io.TcpListener.options:type_name -> gloo.solo.io.TcpListenerOptions + 25, // 13: gloo.solo.io.TcpListener.custom_network_filters:type_name -> gloo.solo.io.CustomEnvoyFilter + 40, // 14: gloo.solo.io.TcpHost.ssl_config:type_name -> gloo.solo.io.SslConfig + 30, // 15: gloo.solo.io.TcpHost.destination:type_name -> gloo.solo.io.TcpHost.TcpAction + 13, // 16: gloo.solo.io.HttpListener.virtual_hosts:type_name -> gloo.solo.io.VirtualHost + 46, // 17: gloo.solo.io.HttpListener.options:type_name -> gloo.solo.io.HttpListenerOptions + 25, // 18: gloo.solo.io.HttpListener.custom_http_filters:type_name -> gloo.solo.io.CustomEnvoyFilter + 25, // 19: gloo.solo.io.HttpListener.custom_network_filters:type_name -> gloo.solo.io.CustomEnvoyFilter + 43, // 20: gloo.solo.io.HttpListener.metadata:type_name -> google.protobuf.Struct + 24, // 21: gloo.solo.io.HttpListener.metadata_static:type_name -> gloo.solo.io.SourceMetadata + 9, // 22: gloo.solo.io.HybridListener.matched_listeners:type_name -> gloo.solo.io.MatchedListener + 11, // 23: gloo.solo.io.MatchedListener.matcher:type_name -> gloo.solo.io.Matcher + 7, // 24: gloo.solo.io.MatchedListener.http_listener:type_name -> gloo.solo.io.HttpListener + 5, // 25: gloo.solo.io.MatchedListener.tcp_listener:type_name -> gloo.solo.io.TcpListener + 40, // 26: gloo.solo.io.MatchedListener.ssl_configurations:type_name -> gloo.solo.io.SslConfig + 11, // 27: gloo.solo.io.MatchedTcpListener.matcher:type_name -> gloo.solo.io.Matcher + 5, // 28: gloo.solo.io.MatchedTcpListener.tcp_listener:type_name -> gloo.solo.io.TcpListener + 40, // 29: gloo.solo.io.Matcher.ssl_config:type_name -> gloo.solo.io.SslConfig + 47, // 30: gloo.solo.io.Matcher.source_prefix_ranges:type_name -> solo.io.envoy.config.core.v3.CidrRange + 47, // 31: gloo.solo.io.Matcher.prefix_ranges:type_name -> solo.io.envoy.config.core.v3.CidrRange + 48, // 32: gloo.solo.io.Matcher.destination_port:type_name -> google.protobuf.UInt32Value + 31, // 33: gloo.solo.io.AggregateListener.http_resources:type_name -> gloo.solo.io.AggregateListener.HttpResources + 32, // 34: gloo.solo.io.AggregateListener.http_filter_chains:type_name -> gloo.solo.io.AggregateListener.HttpFilterChain + 10, // 35: gloo.solo.io.AggregateListener.tcp_listeners:type_name -> gloo.solo.io.MatchedTcpListener + 14, // 36: gloo.solo.io.VirtualHost.routes:type_name -> gloo.solo.io.Route + 49, // 37: gloo.solo.io.VirtualHost.options:type_name -> gloo.solo.io.VirtualHostOptions + 43, // 38: gloo.solo.io.VirtualHost.metadata:type_name -> google.protobuf.Struct + 24, // 39: gloo.solo.io.VirtualHost.metadata_static:type_name -> gloo.solo.io.SourceMetadata + 50, // 40: gloo.solo.io.Route.matchers:type_name -> matchers.core.gloo.solo.io.Matcher + 15, // 41: gloo.solo.io.Route.route_action:type_name -> gloo.solo.io.RouteAction + 22, // 42: gloo.solo.io.Route.redirect_action:type_name -> gloo.solo.io.RedirectAction + 23, // 43: gloo.solo.io.Route.direct_response_action:type_name -> gloo.solo.io.DirectResponseAction + 51, // 44: gloo.solo.io.Route.options:type_name -> gloo.solo.io.RouteOptions + 43, // 45: gloo.solo.io.Route.metadata:type_name -> google.protobuf.Struct + 24, // 46: gloo.solo.io.Route.metadata_static:type_name -> gloo.solo.io.SourceMetadata + 16, // 47: gloo.solo.io.RouteAction.single:type_name -> gloo.solo.io.Destination + 20, // 48: gloo.solo.io.RouteAction.multi:type_name -> gloo.solo.io.MultiDestination + 52, // 49: gloo.solo.io.RouteAction.upstream_group:type_name -> core.solo.io.ResourceRef + 53, // 50: gloo.solo.io.RouteAction.dynamic_forward_proxy:type_name -> dfp.options.gloo.solo.io.PerRouteConfig + 52, // 51: gloo.solo.io.Destination.upstream:type_name -> core.solo.io.ResourceRef + 17, // 52: gloo.solo.io.Destination.kube:type_name -> gloo.solo.io.KubernetesServiceDestination + 18, // 53: gloo.solo.io.Destination.consul:type_name -> gloo.solo.io.ConsulServiceDestination + 54, // 54: gloo.solo.io.Destination.destination_spec:type_name -> gloo.solo.io.DestinationSpec + 55, // 55: gloo.solo.io.Destination.subset:type_name -> gloo.solo.io.Subset + 52, // 56: gloo.solo.io.KubernetesServiceDestination.ref:type_name -> core.solo.io.ResourceRef + 21, // 57: gloo.solo.io.UpstreamGroupSpec.destinations:type_name -> gloo.solo.io.WeightedDestination + 21, // 58: gloo.solo.io.MultiDestination.destinations:type_name -> gloo.solo.io.WeightedDestination + 16, // 59: gloo.solo.io.WeightedDestination.destination:type_name -> gloo.solo.io.Destination + 48, // 60: gloo.solo.io.WeightedDestination.weight:type_name -> google.protobuf.UInt32Value + 56, // 61: gloo.solo.io.WeightedDestination.options:type_name -> gloo.solo.io.WeightedDestinationOptions + 57, // 62: gloo.solo.io.RedirectAction.regex_rewrite:type_name -> solo.io.envoy.type.matcher.v3.RegexMatchAndSubstitute + 0, // 63: gloo.solo.io.RedirectAction.response_code:type_name -> gloo.solo.io.RedirectAction.RedirectResponseCode + 48, // 64: gloo.solo.io.RedirectAction.port_redirect:type_name -> google.protobuf.UInt32Value + 35, // 65: gloo.solo.io.SourceMetadata.sources:type_name -> gloo.solo.io.SourceMetadata.SourceRef + 58, // 66: gloo.solo.io.CustomEnvoyFilter.filter_stage:type_name -> filters.gloo.solo.io.FilterStage + 59, // 67: gloo.solo.io.CustomEnvoyFilter.config:type_name -> google.protobuf.Any + 1, // 68: gloo.solo.io.UpstreamGroupStatus.state:type_name -> gloo.solo.io.UpstreamGroupStatus.State + 36, // 69: gloo.solo.io.UpstreamGroupStatus.subresource_statuses:type_name -> gloo.solo.io.UpstreamGroupStatus.SubresourceStatusesEntry + 43, // 70: gloo.solo.io.UpstreamGroupStatus.details:type_name -> google.protobuf.Struct + 37, // 71: gloo.solo.io.UpstreamGroupNamespacedStatuses.statuses:type_name -> gloo.solo.io.UpstreamGroupNamespacedStatuses.StatusesEntry + 2, // 72: gloo.solo.io.ProxyStatus.state:type_name -> gloo.solo.io.ProxyStatus.State + 38, // 73: gloo.solo.io.ProxyStatus.subresource_statuses:type_name -> gloo.solo.io.ProxyStatus.SubresourceStatusesEntry + 43, // 74: gloo.solo.io.ProxyStatus.details:type_name -> google.protobuf.Struct + 39, // 75: gloo.solo.io.ProxyNamespacedStatuses.statuses:type_name -> gloo.solo.io.ProxyNamespacedStatuses.StatusesEntry + 16, // 76: gloo.solo.io.TcpHost.TcpAction.single:type_name -> gloo.solo.io.Destination + 20, // 77: gloo.solo.io.TcpHost.TcpAction.multi:type_name -> gloo.solo.io.MultiDestination + 52, // 78: gloo.solo.io.TcpHost.TcpAction.upstream_group:type_name -> core.solo.io.ResourceRef + 60, // 79: gloo.solo.io.TcpHost.TcpAction.forward_sni_cluster_name:type_name -> google.protobuf.Empty + 33, // 80: gloo.solo.io.AggregateListener.HttpResources.virtual_hosts:type_name -> gloo.solo.io.AggregateListener.HttpResources.VirtualHostsEntry + 34, // 81: gloo.solo.io.AggregateListener.HttpResources.http_options:type_name -> gloo.solo.io.AggregateListener.HttpResources.HttpOptionsEntry + 11, // 82: gloo.solo.io.AggregateListener.HttpFilterChain.matcher:type_name -> gloo.solo.io.Matcher + 25, // 83: gloo.solo.io.AggregateListener.HttpFilterChain.custom_http_filters:type_name -> gloo.solo.io.CustomEnvoyFilter + 25, // 84: gloo.solo.io.AggregateListener.HttpFilterChain.custom_network_filters:type_name -> gloo.solo.io.CustomEnvoyFilter + 13, // 85: gloo.solo.io.AggregateListener.HttpResources.VirtualHostsEntry.value:type_name -> gloo.solo.io.VirtualHost + 46, // 86: gloo.solo.io.AggregateListener.HttpResources.HttpOptionsEntry.value:type_name -> gloo.solo.io.HttpListenerOptions + 52, // 87: gloo.solo.io.SourceMetadata.SourceRef.resource_ref:type_name -> core.solo.io.ResourceRef + 26, // 88: gloo.solo.io.UpstreamGroupStatus.SubresourceStatusesEntry.value:type_name -> gloo.solo.io.UpstreamGroupStatus + 26, // 89: gloo.solo.io.UpstreamGroupNamespacedStatuses.StatusesEntry.value:type_name -> gloo.solo.io.UpstreamGroupStatus + 28, // 90: gloo.solo.io.ProxyStatus.SubresourceStatusesEntry.value:type_name -> gloo.solo.io.ProxyStatus + 28, // 91: gloo.solo.io.ProxyNamespacedStatuses.StatusesEntry.value:type_name -> gloo.solo.io.ProxyStatus + 92, // [92:92] is the sub-list for method output_type + 92, // [92:92] is the sub-list for method input_type + 92, // [92:92] is the sub-list for extension type_name + 92, // [92:92] is the sub-list for extension extendee + 0, // [0:92] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_init() } @@ -2350,264 +3790,60 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_init() { if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto != nil { return } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_init() + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_init() + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_http_listener_options_proto_init() + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_init() + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_init() + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_init() + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_init() + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_init() file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_init() - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_proto_init() - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProxySpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Listener); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TcpListener); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TcpHost); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HttpListener); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VirtualHost); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Route); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteAction); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Destination); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KubernetesServiceDestination); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConsulServiceDestination); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpstreamGroupSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MultiDestination); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WeightedDestination); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RedirectAction); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DirectResponseAction); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpstreamGroupStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProxyStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TcpHost_TcpAction); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[1].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_destination_spec_proto_init() + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[1].OneofWrappers = []any{ (*Listener_HttpListener)(nil), (*Listener_TcpListener)(nil), + (*Listener_HybridListener)(nil), + (*Listener_AggregateListener)(nil), + (*Listener_Metadata)(nil), + (*Listener_MetadataStatic)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[4].OneofWrappers = []any{ + (*HttpListener_Metadata)(nil), + (*HttpListener_MetadataStatic)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[6].OneofWrappers = []any{ + (*MatchedListener_HttpListener)(nil), + (*MatchedListener_TcpListener)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[10].OneofWrappers = []any{ + (*VirtualHost_Metadata)(nil), + (*VirtualHost_MetadataStatic)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[6].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[11].OneofWrappers = []any{ (*Route_RouteAction)(nil), (*Route_RedirectAction)(nil), (*Route_DirectResponseAction)(nil), + (*Route_Metadata)(nil), + (*Route_MetadataStatic)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[7].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[12].OneofWrappers = []any{ (*RouteAction_Single)(nil), (*RouteAction_Multi)(nil), (*RouteAction_UpstreamGroup)(nil), (*RouteAction_ClusterHeader)(nil), + (*RouteAction_DynamicForwardProxy)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[8].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[13].OneofWrappers = []any{ (*Destination_Upstream)(nil), (*Destination_Kube)(nil), (*Destination_Consul)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[14].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[19].OneofWrappers = []any{ (*RedirectAction_PathRedirect)(nil), (*RedirectAction_PrefixRewrite)(nil), + (*RedirectAction_RegexRewrite)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[18].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes[27].OneofWrappers = []any{ (*TcpHost_TcpAction_Single)(nil), (*TcpHost_TcpAction_Multi)(nil), (*TcpHost_TcpAction_UpstreamGroup)(nil), @@ -2617,9 +3853,9 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDesc)), NumEnums: 3, - NumMessages: 21, + NumMessages: 37, NumExtensions: 0, NumServices: 0, }, @@ -2629,7 +3865,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_init() { MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_proxy_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/proxy.pb.hash.go b/pkg/api/gloo.solo.io/v1/proxy.pb.hash.go index fb0e5dcef..870ecf070 100644 --- a/pkg/api/gloo.solo.io/v1/proxy.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/proxy.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *ProxySpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -38,17 +42,27 @@ func (m *ProxySpec) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + if _, err = hasher.Write([]byte(m.GetCompressedSpec())); err != nil { + return 0, err + } + for _, v := range m.GetListeners() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -60,6 +74,10 @@ func (m *ProxySpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Listener) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -88,14 +106,20 @@ func (m *Listener) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetSslConfigurations() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -104,42 +128,60 @@ func (m *Listener) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetUseProxyProto()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UseProxyProto")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetUseProxyProto(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetUseProxyProto(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("UseProxyProto")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetRouteOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RouteOptions")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRouteOptions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRouteOptions(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RouteOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -150,14 +192,20 @@ func (m *Listener) Hash(hasher hash.Hash64) (uint64, error) { case *Listener_HttpListener: if h, ok := interface{}(m.GetHttpListener()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpListener")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHttpListener(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHttpListener(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HttpListener")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -166,14 +214,64 @@ func (m *Listener) Hash(hasher hash.Hash64) (uint64, error) { case *Listener_TcpListener: if h, ok := interface{}(m.GetTcpListener()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpListener")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTcpListener(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TcpListener")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Listener_HybridListener: + + if h, ok := interface{}(m.GetHybridListener()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HybridListener")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHybridListener(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HybridListener")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Listener_AggregateListener: + + if h, ok := interface{}(m.GetAggregateListener()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AggregateListener")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTcpListener(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAggregateListener(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AggregateListener")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -181,10 +279,22 @@ func (m *Listener) Hash(hasher hash.Hash64) (uint64, error) { } + switch m.OpaqueMetadata.(type) { + + case *Listener_Metadata: + + case *Listener_MetadataStatic: + + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *TcpListener) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -200,14 +310,20 @@ func (m *TcpListener) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetTcpHosts() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -216,14 +332,20 @@ func (m *TcpListener) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -233,10 +355,38 @@ func (m *TcpListener) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + for _, v := range m.GetCustomNetworkFilters() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *TcpHost) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -254,28 +404,40 @@ func (m *TcpHost) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetDestination()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Destination")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDestination(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDestination(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Destination")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -285,6 +447,10 @@ func (m *TcpHost) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HttpListener) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -300,14 +466,20 @@ func (m *HttpListener) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetVirtualHosts() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -316,14 +488,20 @@ func (m *HttpListener) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -333,45 +511,47 @@ func (m *HttpListener) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } - return hasher.Sum64(), nil -} - -// Hash function -func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.VirtualHost")); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetName())); err != nil { - return 0, err - } - - for _, v := range m.GetDomains() { + for _, v := range m.GetCustomHttpFilters() { - if _, err = hasher.Write([]byte(v)); err != nil { - return 0, err + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } } - for _, v := range m.GetRoutes() { + for _, v := range m.GetCustomNetworkFilters() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -379,25 +559,23 @@ func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { } - if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } + switch m.OpaqueMetadata.(type) { + + case *HttpListener_Metadata: + + case *HttpListener_MetadataStatic: + } return hasher.Sum64(), nil } // Hash function -func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HybridListener) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -405,21 +583,27 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.Route")); err != nil { + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.HybridListener")); err != nil { return 0, err } - for _, v := range m.GetMatchers() { + for _, v := range m.GetMatchedListeners() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -427,69 +611,111 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { } - if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *MatchedListener) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.MatchedListener")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMatcher(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - if _, err = hasher.Write([]byte(m.GetName())); err != nil { - return 0, err - } - - switch m.Action.(type) { - - case *Route_RouteAction: + for _, v := range m.GetSslConfigurations() { - if h, ok := interface{}(m.GetRouteAction()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRouteAction(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - case *Route_RedirectAction: + } - if h, ok := interface{}(m.GetRedirectAction()).(safe_hasher.SafeHasher); ok { + switch m.ListenerType.(type) { + + case *MatchedListener_HttpListener: + + if h, ok := interface{}(m.GetHttpListener()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpListener")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRedirectAction(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHttpListener(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HttpListener")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - case *Route_DirectResponseAction: + case *MatchedListener_TcpListener: - if h, ok := interface{}(m.GetDirectResponseAction()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetTcpListener()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpListener")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDirectResponseAction(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTcpListener(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("TcpListener")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -501,7 +727,11 @@ func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function -func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *MatchedTcpListener) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -509,55 +739,567 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.RouteAction")); err != nil { + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.MatchedTcpListener")); err != nil { return 0, err } - switch m.Destination.(type) { - - case *RouteAction_Single: - - if h, ok := interface{}(m.GetSingle()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSingle(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } + if h, ok := interface{}(m.GetMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err } - - case *RouteAction_Multi: - - if h, ok := interface{}(m.GetMulti()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMatcher(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Matcher")); err != nil { return 0, err } - } else { - if val, err := hashstructure.Hash(m.GetMulti(), nil); err != nil { + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } + } + } + } + + if h, ok := interface{}(m.GetTcpListener()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpListener")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTcpListener(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TcpListener")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Matcher) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.Matcher")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetSourcePrefixRanges() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + for _, v := range m.GetPrefixRanges() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetDestinationPort()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DestinationPort")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDestinationPort(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DestinationPort")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetPassthroughCipherSuites() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AggregateListener) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.AggregateListener")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHttpResources()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpResources")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpResources(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpResources")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetHttpFilterChains() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + for _, v := range m.GetTcpListeners() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *VirtualHost) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.VirtualHost")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + for _, v := range m.GetDomains() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + for _, v := range m.GetRoutes() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.OpaqueMetadata.(type) { + + case *VirtualHost_Metadata: + + case *VirtualHost_MetadataStatic: + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Route) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.Route")); err != nil { + return 0, err + } + + for _, v := range m.GetMatchers() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + switch m.Action.(type) { + + case *Route_RouteAction: + + if h, ok := interface{}(m.GetRouteAction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RouteAction")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRouteAction(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RouteAction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Route_RedirectAction: + + if h, ok := interface{}(m.GetRedirectAction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RedirectAction")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRedirectAction(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RedirectAction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Route_DirectResponseAction: + + if h, ok := interface{}(m.GetDirectResponseAction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DirectResponseAction")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDirectResponseAction(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DirectResponseAction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.OpaqueMetadata.(type) { + + case *Route_Metadata: + + case *Route_MetadataStatic: + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.RouteAction")); err != nil { + return 0, err + } + + switch m.Destination.(type) { + + case *RouteAction_Single: + + if h, ok := interface{}(m.GetSingle()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Single")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSingle(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Single")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteAction_Multi: + + if h, ok := interface{}(m.GetMulti()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Multi")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMulti(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Multi")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } } } case *RouteAction_UpstreamGroup: if h, ok := interface{}(m.GetUpstreamGroup()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UpstreamGroup")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetUpstreamGroup(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetUpstreamGroup(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("UpstreamGroup")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -569,12 +1311,38 @@ func (m *RouteAction) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + case *RouteAction_DynamicForwardProxy: + + if h, ok := interface{}(m.GetDynamicForwardProxy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DynamicForwardProxy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDynamicForwardProxy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DynamicForwardProxy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + } return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Destination) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -588,28 +1356,40 @@ func (m *Destination) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetDestinationSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DestinationSpec")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDestinationSpec(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDestinationSpec(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DestinationSpec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetSubset()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Subset")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSubset(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSubset(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Subset")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -620,14 +1400,20 @@ func (m *Destination) Hash(hasher hash.Hash64) (uint64, error) { case *Destination_Upstream: if h, ok := interface{}(m.GetUpstream()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Upstream")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetUpstream(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetUpstream(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Upstream")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -636,14 +1422,20 @@ func (m *Destination) Hash(hasher hash.Hash64) (uint64, error) { case *Destination_Kube: if h, ok := interface{}(m.GetKube()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Kube")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetKube(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetKube(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Kube")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -651,15 +1443,194 @@ func (m *Destination) Hash(hasher hash.Hash64) (uint64, error) { case *Destination_Consul: - if h, ok := interface{}(m.GetConsul()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetConsul()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Consul")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConsul(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Consul")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *KubernetesServiceDestination) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.KubernetesServiceDestination")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ref")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Ref")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetPort()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ConsulServiceDestination) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ConsulServiceDestination")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetServiceName())); err != nil { + return 0, err + } + + for _, v := range m.GetTags() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + for _, v := range m.GetDataCenters() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UpstreamGroupSpec) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.UpstreamGroupSpec")); err != nil { + return 0, err + } + + for _, v := range m.GetDestinations() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *MultiDestination) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.MultiDestination")); err != nil { + return 0, err + } + + for _, v := range m.GetDestinations() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConsul(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -671,7 +1642,11 @@ func (m *Destination) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function -func (m *KubernetesServiceDestination) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *WeightedDestination) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -679,34 +1654,79 @@ func (m *KubernetesServiceDestination) Hash(hasher hash.Hash64) (uint64, error) hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.KubernetesServiceDestination")); err != nil { + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.WeightedDestination")); err != nil { return 0, err } - if h, ok := interface{}(m.GetRef()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetDestination()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Destination")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRef(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDestination(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Destination")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - err = binary.Write(hasher, binary.LittleEndian, m.GetPort()) - if err != nil { - return 0, err + if h, ok := interface{}(m.GetWeight()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Weight")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWeight(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Weight")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } return hasher.Sum64(), nil } // Hash function -func (m *ConsulServiceDestination) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RedirectAction) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -714,35 +1734,96 @@ func (m *ConsulServiceDestination) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ConsulServiceDestination")); err != nil { + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.RedirectAction")); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetServiceName())); err != nil { + if _, err = hasher.Write([]byte(m.GetHostRedirect())); err != nil { return 0, err } - for _, v := range m.GetTags() { + err = binary.Write(hasher, binary.LittleEndian, m.GetResponseCode()) + if err != nil { + return 0, err + } - if _, err = hasher.Write([]byte(v)); err != nil { + err = binary.Write(hasher, binary.LittleEndian, m.GetHttpsRedirect()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetStripQuery()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPortRedirect()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PortRedirect")); err != nil { return 0, err } - + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPortRedirect(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PortRedirect")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } - for _, v := range m.GetDataCenters() { + switch m.PathRewriteSpecifier.(type) { - if _, err = hasher.Write([]byte(v)); err != nil { + case *RedirectAction_PathRedirect: + + if _, err = hasher.Write([]byte(m.GetPathRedirect())); err != nil { + return 0, err + } + + case *RedirectAction_PrefixRewrite: + + if _, err = hasher.Write([]byte(m.GetPrefixRewrite())); err != nil { return 0, err } + case *RedirectAction_RegexRewrite: + + if h, ok := interface{}(m.GetRegexRewrite()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RegexRewrite")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRegexRewrite(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RegexRewrite")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + } return hasher.Sum64(), nil } // Hash function -func (m *UpstreamGroupSpec) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *DirectResponseAction) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -750,33 +1831,28 @@ func (m *UpstreamGroupSpec) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.UpstreamGroupSpec")); err != nil { + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.DirectResponseAction")); err != nil { return 0, err } - for _, v := range m.GetDestinations() { - - if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(v, nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } + err = binary.Write(hasher, binary.LittleEndian, m.GetStatus()) + if err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetBody())); err != nil { + return 0, err } return hasher.Sum64(), nil } // Hash function -func (m *MultiDestination) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SourceMetadata) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -784,21 +1860,27 @@ func (m *MultiDestination) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.MultiDestination")); err != nil { + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SourceMetadata")); err != nil { return 0, err } - for _, v := range m.GetDestinations() { + for _, v := range m.GetSources() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -810,7 +1892,11 @@ func (m *MultiDestination) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function -func (m *WeightedDestination) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *CustomEnvoyFilter) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -818,38 +1904,49 @@ func (m *WeightedDestination) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.WeightedDestination")); err != nil { + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.CustomEnvoyFilter")); err != nil { return 0, err } - if h, ok := interface{}(m.GetDestination()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetFilterStage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FilterStage")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDestination(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetFilterStage(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("FilterStage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - err = binary.Write(hasher, binary.LittleEndian, m.GetWeight()) - if err != nil { + if _, err = hasher.Write([]byte(m.GetName())); err != nil { return 0, err } - if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -859,7 +1956,11 @@ func (m *WeightedDestination) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function -func (m *RedirectAction) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UpstreamGroupStatus) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -867,50 +1968,91 @@ func (m *RedirectAction) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.RedirectAction")); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetHostRedirect())); err != nil { + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.UpstreamGroupStatus")); err != nil { return 0, err } - err = binary.Write(hasher, binary.LittleEndian, m.GetResponseCode()) + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) if err != nil { return 0, err } - err = binary.Write(hasher, binary.LittleEndian, m.GetHttpsRedirect()) - if err != nil { + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { return 0, err } - err = binary.Write(hasher, binary.LittleEndian, m.GetStripQuery()) - if err != nil { + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { return 0, err } - switch m.PathRewriteSpecifier.(type) { + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() - case *RedirectAction_PathRedirect: + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } - if _, err = hasher.Write([]byte(m.GetPathRedirect())); err != nil { + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { return 0, err } - case *RedirectAction_PrefixRewrite: + } - if _, err = hasher.Write([]byte(m.GetPrefixRewrite())); err != nil { + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { return 0, err } - + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } return hasher.Sum64(), nil } // Hash function -func (m *DirectResponseAction) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UpstreamGroupNamespacedStatuses) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -918,24 +2060,58 @@ func (m *DirectResponseAction) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.DirectResponseAction")); err != nil { + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.UpstreamGroupNamespacedStatuses")); err != nil { return 0, err } - err = binary.Write(hasher, binary.LittleEndian, m.GetStatus()) - if err != nil { - return 0, err - } + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } - if _, err = hasher.Write([]byte(m.GetBody())); err != nil { - return 0, err } return hasher.Sum64(), nil } // Hash function -func (m *UpstreamGroupStatus) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ProxyStatus) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -943,7 +2119,7 @@ func (m *UpstreamGroupStatus) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.UpstreamGroupStatus")); err != nil { + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ProxyStatus")); err != nil { return 0, err } @@ -967,14 +2143,20 @@ func (m *UpstreamGroupStatus) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -994,14 +2176,20 @@ func (m *UpstreamGroupStatus) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1011,7 +2199,11 @@ func (m *UpstreamGroupStatus) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function -func (m *ProxyStatus) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ProxyNamespacedStatuses) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -1019,38 +2211,31 @@ func (m *ProxyStatus) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ProxyStatus")); err != nil { - return 0, err - } - - err = binary.Write(hasher, binary.LittleEndian, m.GetState()) - if err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetReason())); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ProxyNamespacedStatuses")); err != nil { return 0, err } { var result uint64 innerHash := fnv.New64() - for k, v := range m.GetSubresourceStatuses() { + for k, v := range m.GetStatuses() { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1069,24 +2254,14 @@ func (m *ProxyStatus) Hash(hasher hash.Hash64) (uint64, error) { } - if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *TcpHost_TcpAction) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1104,14 +2279,20 @@ func (m *TcpHost_TcpAction) Hash(hasher hash.Hash64) (uint64, error) { case *TcpHost_TcpAction_Single: if h, ok := interface{}(m.GetSingle()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Single")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSingle(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSingle(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Single")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1120,14 +2301,20 @@ func (m *TcpHost_TcpAction) Hash(hasher hash.Hash64) (uint64, error) { case *TcpHost_TcpAction_Multi: if h, ok := interface{}(m.GetMulti()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Multi")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMulti(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMulti(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Multi")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1136,14 +2323,20 @@ func (m *TcpHost_TcpAction) Hash(hasher hash.Hash64) (uint64, error) { case *TcpHost_TcpAction_UpstreamGroup: if h, ok := interface{}(m.GetUpstreamGroup()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UpstreamGroup")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetUpstreamGroup(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetUpstreamGroup(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("UpstreamGroup")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1152,14 +2345,218 @@ func (m *TcpHost_TcpAction) Hash(hasher hash.Hash64) (uint64, error) { case *TcpHost_TcpAction_ForwardSniClusterName: if h, ok := interface{}(m.GetForwardSniClusterName()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ForwardSniClusterName")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetForwardSniClusterName(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ForwardSniClusterName")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AggregateListener_HttpResources) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.AggregateListener_HttpResources")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetVirtualHosts() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetHttpOptions() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AggregateListener_HttpFilterChain) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.AggregateListener_HttpFilterChain")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMatcher(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetHttpOptionsRef())); err != nil { + return 0, err + } + + for _, v := range m.GetVirtualHostRefs() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + for _, v := range m.GetCustomHttpFilters() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + for _, v := range m.GetCustomNetworkFilters() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetForwardSniClusterName(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1169,3 +2566,52 @@ func (m *TcpHost_TcpAction) Hash(hasher hash.Hash64) (uint64, error) { return hasher.Sum64(), nil } + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SourceMetadata_SourceRef) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SourceMetadata_SourceRef")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetResourceRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResourceRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResourceRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResourceRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetResourceKind())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetObservedGeneration()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/proxy.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/proxy.pb.uniquehash.go new file mode 100644 index 000000000..8b249ac03 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/proxy.pb.uniquehash.go @@ -0,0 +1,2861 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/proxy.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ProxySpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ProxySpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CompressedSpec")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCompressedSpec())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Listeners")); err != nil { + return 0, err + } + for i, v := range m.GetListeners() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Listener) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.Listener")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("BindAddress")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetBindAddress())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("BindPort")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetBindPort()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SslConfigurations")); err != nil { + return 0, err + } + for i, v := range m.GetSslConfigurations() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetUseProxyProto()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UseProxyProto")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUseProxyProto(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UseProxyProto")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRouteOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RouteOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRouteOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RouteOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.ListenerType.(type) { + + case *Listener_HttpListener: + + if h, ok := interface{}(m.GetHttpListener()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpListener")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpListener(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpListener")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Listener_TcpListener: + + if h, ok := interface{}(m.GetTcpListener()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpListener")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTcpListener(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TcpListener")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Listener_HybridListener: + + if h, ok := interface{}(m.GetHybridListener()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HybridListener")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHybridListener(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HybridListener")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Listener_AggregateListener: + + if h, ok := interface{}(m.GetAggregateListener()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AggregateListener")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAggregateListener(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AggregateListener")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.OpaqueMetadata.(type) { + + case *Listener_Metadata: + + case *Listener_MetadataStatic: + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TcpListener) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.TcpListener")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TcpHosts")); err != nil { + return 0, err + } + for i, v := range m.GetTcpHosts() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("StatPrefix")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetStatPrefix())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CustomNetworkFilters")); err != nil { + return 0, err + } + for i, v := range m.GetCustomNetworkFilters() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TcpHost) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.TcpHost")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDestination()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Destination")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDestination(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Destination")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HttpListener) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.HttpListener")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("VirtualHosts")); err != nil { + return 0, err + } + for i, v := range m.GetVirtualHosts() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("StatPrefix")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetStatPrefix())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CustomHttpFilters")); err != nil { + return 0, err + } + for i, v := range m.GetCustomHttpFilters() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("CustomNetworkFilters")); err != nil { + return 0, err + } + for i, v := range m.GetCustomNetworkFilters() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.OpaqueMetadata.(type) { + + case *HttpListener_Metadata: + + case *HttpListener_MetadataStatic: + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HybridListener) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.HybridListener")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MatchedListeners")); err != nil { + return 0, err + } + for i, v := range m.GetMatchedListeners() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MatchedListener) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.MatchedListener")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMatcher(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("SslConfigurations")); err != nil { + return 0, err + } + for i, v := range m.GetSslConfigurations() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.ListenerType.(type) { + + case *MatchedListener_HttpListener: + + if h, ok := interface{}(m.GetHttpListener()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpListener")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpListener(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpListener")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *MatchedListener_TcpListener: + + if h, ok := interface{}(m.GetTcpListener()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpListener")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTcpListener(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TcpListener")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MatchedTcpListener) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.MatchedTcpListener")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMatcher(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTcpListener()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpListener")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTcpListener(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TcpListener")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Matcher) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.Matcher")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("SourcePrefixRanges")); err != nil { + return 0, err + } + for i, v := range m.GetSourcePrefixRanges() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("PrefixRanges")); err != nil { + return 0, err + } + for i, v := range m.GetPrefixRanges() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetDestinationPort()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DestinationPort")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDestinationPort(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DestinationPort")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("PassthroughCipherSuites")); err != nil { + return 0, err + } + for i, v := range m.GetPassthroughCipherSuites() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AggregateListener) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.AggregateListener")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHttpResources()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpResources")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpResources(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpResources")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("HttpFilterChains")); err != nil { + return 0, err + } + for i, v := range m.GetHttpFilterChains() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("TcpListeners")); err != nil { + return 0, err + } + for i, v := range m.GetTcpListeners() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *VirtualHost) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.VirtualHost")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Domains")); err != nil { + return 0, err + } + for i, v := range m.GetDomains() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("Routes")); err != nil { + return 0, err + } + for i, v := range m.GetRoutes() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.OpaqueMetadata.(type) { + + case *VirtualHost_Metadata: + + case *VirtualHost_MetadataStatic: + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Route) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.Route")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Matchers")); err != nil { + return 0, err + } + for i, v := range m.GetMatchers() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + switch m.Action.(type) { + + case *Route_RouteAction: + + if h, ok := interface{}(m.GetRouteAction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RouteAction")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRouteAction(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RouteAction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Route_RedirectAction: + + if h, ok := interface{}(m.GetRedirectAction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RedirectAction")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRedirectAction(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RedirectAction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Route_DirectResponseAction: + + if h, ok := interface{}(m.GetDirectResponseAction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DirectResponseAction")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDirectResponseAction(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DirectResponseAction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.OpaqueMetadata.(type) { + + case *Route_Metadata: + + case *Route_MetadataStatic: + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteAction) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.RouteAction")); err != nil { + return 0, err + } + + switch m.Destination.(type) { + + case *RouteAction_Single: + + if h, ok := interface{}(m.GetSingle()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Single")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSingle(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Single")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteAction_Multi: + + if h, ok := interface{}(m.GetMulti()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Multi")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMulti(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Multi")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteAction_UpstreamGroup: + + if h, ok := interface{}(m.GetUpstreamGroup()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UpstreamGroup")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUpstreamGroup(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UpstreamGroup")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteAction_ClusterHeader: + + if _, err = hasher.Write([]byte("ClusterHeader")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClusterHeader())); err != nil { + return 0, err + } + + case *RouteAction_DynamicForwardProxy: + + if h, ok := interface{}(m.GetDynamicForwardProxy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DynamicForwardProxy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDynamicForwardProxy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DynamicForwardProxy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Destination) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.Destination")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDestinationSpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DestinationSpec")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDestinationSpec(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DestinationSpec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetSubset()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Subset")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSubset(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Subset")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.DestinationType.(type) { + + case *Destination_Upstream: + + if h, ok := interface{}(m.GetUpstream()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Upstream")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUpstream(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Upstream")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Destination_Kube: + + if h, ok := interface{}(m.GetKube()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Kube")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetKube(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Kube")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Destination_Consul: + + if h, ok := interface{}(m.GetConsul()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Consul")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConsul(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Consul")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *KubernetesServiceDestination) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.KubernetesServiceDestination")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ref")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Ref")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Port")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPort()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ConsulServiceDestination) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ConsulServiceDestination")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ServiceName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetServiceName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Tags")); err != nil { + return 0, err + } + for i, v := range m.GetTags() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("DataCenters")); err != nil { + return 0, err + } + for i, v := range m.GetDataCenters() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamGroupSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.UpstreamGroupSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Destinations")); err != nil { + return 0, err + } + for i, v := range m.GetDestinations() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MultiDestination) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.MultiDestination")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Destinations")); err != nil { + return 0, err + } + for i, v := range m.GetDestinations() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *WeightedDestination) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.WeightedDestination")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDestination()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Destination")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDestination(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Destination")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetWeight()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Weight")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWeight(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Weight")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Options")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RedirectAction) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.RedirectAction")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("HostRedirect")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHostRedirect())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ResponseCode")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetResponseCode()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("HttpsRedirect")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetHttpsRedirect()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("StripQuery")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetStripQuery()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPortRedirect()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PortRedirect")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPortRedirect(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PortRedirect")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.PathRewriteSpecifier.(type) { + + case *RedirectAction_PathRedirect: + + if _, err = hasher.Write([]byte("PathRedirect")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPathRedirect())); err != nil { + return 0, err + } + + case *RedirectAction_PrefixRewrite: + + if _, err = hasher.Write([]byte("PrefixRewrite")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPrefixRewrite())); err != nil { + return 0, err + } + + case *RedirectAction_RegexRewrite: + + if h, ok := interface{}(m.GetRegexRewrite()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RegexRewrite")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRegexRewrite(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RegexRewrite")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DirectResponseAction) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.DirectResponseAction")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Status")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetStatus()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Body")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetBody())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SourceMetadata) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SourceMetadata")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Sources")); err != nil { + return 0, err + } + for i, v := range m.GetSources() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *CustomEnvoyFilter) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.CustomEnvoyFilter")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetFilterStage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FilterStage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFilterStage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FilterStage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Config")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamGroupStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.UpstreamGroupStatus")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("State")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Reason")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ReportedBy")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamGroupNamespacedStatuses) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.UpstreamGroupNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ProxyStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ProxyStatus")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("State")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Reason")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ReportedBy")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ProxyNamespacedStatuses) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ProxyNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TcpHost_TcpAction) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.TcpHost_TcpAction")); err != nil { + return 0, err + } + + switch m.Destination.(type) { + + case *TcpHost_TcpAction_Single: + + if h, ok := interface{}(m.GetSingle()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Single")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSingle(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Single")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *TcpHost_TcpAction_Multi: + + if h, ok := interface{}(m.GetMulti()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Multi")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMulti(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Multi")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *TcpHost_TcpAction_UpstreamGroup: + + if h, ok := interface{}(m.GetUpstreamGroup()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UpstreamGroup")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUpstreamGroup(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UpstreamGroup")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *TcpHost_TcpAction_ForwardSniClusterName: + + if h, ok := interface{}(m.GetForwardSniClusterName()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ForwardSniClusterName")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetForwardSniClusterName(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ForwardSniClusterName")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AggregateListener_HttpResources) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.AggregateListener_HttpResources")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetVirtualHosts() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetHttpOptions() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AggregateListener_HttpFilterChain) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.AggregateListener_HttpFilterChain")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMatcher()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMatcher(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Matcher")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("HttpOptionsRef")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHttpOptionsRef())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("VirtualHostRefs")); err != nil { + return 0, err + } + for i, v := range m.GetVirtualHostRefs() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("CustomHttpFilters")); err != nil { + return 0, err + } + for i, v := range m.GetCustomHttpFilters() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("CustomNetworkFilters")); err != nil { + return 0, err + } + for i, v := range m.GetCustomNetworkFilters() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SourceMetadata_SourceRef) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SourceMetadata_SourceRef")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetResourceRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ResourceRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetResourceRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ResourceRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("ResourceKind")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetResourceKind())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ObservedGeneration")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetObservedGeneration()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/route_configuration_options.pb.clone.go b/pkg/api/gloo.solo.io/v1/route_configuration_options.pb.clone.go new file mode 100644 index 000000000..f798fde4b --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/route_configuration_options.pb.clone.go @@ -0,0 +1,51 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/route_configuration_options.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *RouteConfigurationOptions) Clone() proto.Message { + var target *RouteConfigurationOptions + if m == nil { + return target + } + target = &RouteConfigurationOptions{} + + if h, ok := interface{}(m.GetMaxDirectResponseBodySizeBytes()).(clone.Cloner); ok { + target.MaxDirectResponseBodySizeBytes = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxDirectResponseBodySizeBytes = proto.Clone(m.GetMaxDirectResponseBodySizeBytes()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetMostSpecificHeaderMutationsWins()).(clone.Cloner); ok { + target.MostSpecificHeaderMutationsWins = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.MostSpecificHeaderMutationsWins = proto.Clone(m.GetMostSpecificHeaderMutationsWins()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/route_configuration_options.pb.equal.go b/pkg/api/gloo.solo.io/v1/route_configuration_options.pb.equal.go new file mode 100644 index 000000000..361c6f9b5 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/route_configuration_options.pb.equal.go @@ -0,0 +1,70 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/route_configuration_options.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *RouteConfigurationOptions) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RouteConfigurationOptions) + if !ok { + that2, ok := that.(RouteConfigurationOptions) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetMaxDirectResponseBodySizeBytes()).(equality.Equalizer); ok { + if !h.Equal(target.GetMaxDirectResponseBodySizeBytes()) { + return false + } + } else { + if !proto.Equal(m.GetMaxDirectResponseBodySizeBytes(), target.GetMaxDirectResponseBodySizeBytes()) { + return false + } + } + + if h, ok := interface{}(m.GetMostSpecificHeaderMutationsWins()).(equality.Equalizer); ok { + if !h.Equal(target.GetMostSpecificHeaderMutationsWins()) { + return false + } + } else { + if !proto.Equal(m.GetMostSpecificHeaderMutationsWins(), target.GetMostSpecificHeaderMutationsWins()) { + return false + } + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/route_configuration_options.pb.go b/pkg/api/gloo.solo.io/v1/route_configuration_options.pb.go new file mode 100644 index 000000000..415887303 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/route_configuration_options.pb.go @@ -0,0 +1,172 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/route_configuration_options.proto + +package v1 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type RouteConfigurationOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The maximum bytes of the response direct response body size. If not specified the default is 4096. + // Please refer to the [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto#envoy-v3-api-field-config-route-v3-routeconfiguration-max-direct-response-body-size-bytes) + // for more details about the `max_direct_response_body_size_bytes` attribute. + MaxDirectResponseBodySizeBytes *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=max_direct_response_body_size_bytes,json=maxDirectResponseBodySizeBytes,proto3" json:"max_direct_response_body_size_bytes,omitempty"` + // By default, headers that should be added/removed are evaluated from most to least specific. + // To allow setting overrides at the route or virtual host level, this order can be reversed by setting this option to true. + // Refer to the [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto#envoy-v3-api-field-config-route-v3-routeconfiguration-most-specific-header-mutations-wins) for more details. + MostSpecificHeaderMutationsWins *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=most_specific_header_mutations_wins,json=mostSpecificHeaderMutationsWins,proto3" json:"most_specific_header_mutations_wins,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RouteConfigurationOptions) Reset() { + *x = RouteConfigurationOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RouteConfigurationOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RouteConfigurationOptions) ProtoMessage() {} + +func (x *RouteConfigurationOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RouteConfigurationOptions.ProtoReflect.Descriptor instead. +func (*RouteConfigurationOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_rawDescGZIP(), []int{0} +} + +func (x *RouteConfigurationOptions) GetMaxDirectResponseBodySizeBytes() *wrapperspb.UInt32Value { + if x != nil { + return x.MaxDirectResponseBodySizeBytes + } + return nil +} + +func (x *RouteConfigurationOptions) GetMostSpecificHeaderMutationsWins() *wrapperspb.BoolValue { + if x != nil { + return x.MostSpecificHeaderMutationsWins + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_rawDesc = string([]byte{ + 0x0a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x0c, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, + 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0xf0, 0x01, 0x0a, 0x19, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x69, 0x0a, 0x23, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, + 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1e, 0x6d, 0x61, + 0x78, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, + 0x6f, 0x64, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x68, 0x0a, 0x23, + 0x6d, 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x5f, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x77, + 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1f, 0x6d, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x63, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x57, 0x69, 0x6e, 0x73, 0x42, 0x42, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, + 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_goTypes = []any{ + (*RouteConfigurationOptions)(nil), // 0: gloo.solo.io.RouteConfigurationOptions + (*wrapperspb.UInt32Value)(nil), // 1: google.protobuf.UInt32Value + (*wrapperspb.BoolValue)(nil), // 2: google.protobuf.BoolValue +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_depIdxs = []int32{ + 1, // 0: gloo.solo.io.RouteConfigurationOptions.max_direct_response_body_size_bytes:type_name -> google.protobuf.UInt32Value + 2, // 1: gloo.solo.io.RouteConfigurationOptions.most_specific_header_mutations_wins:type_name -> google.protobuf.BoolValue + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_configuration_options_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/route_configuration_options.pb.hash.go b/pkg/api/gloo.solo.io/v1/route_configuration_options.pb.hash.go new file mode 100644 index 000000000..806c74388 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/route_configuration_options.pb.hash.go @@ -0,0 +1,86 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/route_configuration_options.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RouteConfigurationOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.RouteConfigurationOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxDirectResponseBodySizeBytes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxDirectResponseBodySizeBytes")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxDirectResponseBodySizeBytes(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxDirectResponseBodySizeBytes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMostSpecificHeaderMutationsWins()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MostSpecificHeaderMutationsWins")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMostSpecificHeaderMutationsWins(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MostSpecificHeaderMutationsWins")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/route_configuration_options.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/route_configuration_options.pb.uniquehash.go new file mode 100644 index 000000000..bd1d64504 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/route_configuration_options.pb.uniquehash.go @@ -0,0 +1,87 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/route_configuration_options.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteConfigurationOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.RouteConfigurationOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxDirectResponseBodySizeBytes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxDirectResponseBodySizeBytes")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxDirectResponseBodySizeBytes(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxDirectResponseBodySizeBytes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMostSpecificHeaderMutationsWins()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MostSpecificHeaderMutationsWins")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMostSpecificHeaderMutationsWins(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MostSpecificHeaderMutationsWins")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/route_options.pb.clone.go b/pkg/api/gloo.solo.io/v1/route_options.pb.clone.go new file mode 100644 index 000000000..627584a6a --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/route_options.pb.clone.go @@ -0,0 +1,458 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/route_options.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_buffer_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_csrf_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ai "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_dlp "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/dlp" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_extproc "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/extproc" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_jwt "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/jwt" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_rbac "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/rbac" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_waf "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/waf" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_cors "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/cors" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_faultinjection "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/faultinjection" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_headers "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/headers" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_lbhash "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/lbhash" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_protocol_upgrade "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/protocol_upgrade" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_retries "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/retries" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_shadowing "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/shadowing" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_tracing "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tracing" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_transformation "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *RouteOptions) Clone() proto.Message { + var target *RouteOptions + if m == nil { + return target + } + target = &RouteOptions{} + + if h, ok := interface{}(m.GetTransformations()).(clone.Cloner); ok { + target.Transformations = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_transformation.Transformations) + } else { + target.Transformations = proto.Clone(m.GetTransformations()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_transformation.Transformations) + } + + if h, ok := interface{}(m.GetFaults()).(clone.Cloner); ok { + target.Faults = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_faultinjection.RouteFaults) + } else { + target.Faults = proto.Clone(m.GetFaults()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_faultinjection.RouteFaults) + } + + if h, ok := interface{}(m.GetPrefixRewrite()).(clone.Cloner); ok { + target.PrefixRewrite = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.PrefixRewrite = proto.Clone(m.GetPrefixRewrite()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + if h, ok := interface{}(m.GetTimeout()).(clone.Cloner); ok { + target.Timeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.Timeout = proto.Clone(m.GetTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetRetries()).(clone.Cloner); ok { + target.Retries = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_retries.RetryPolicy) + } else { + target.Retries = proto.Clone(m.GetRetries()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_retries.RetryPolicy) + } + + if h, ok := interface{}(m.GetExtensions()).(clone.Cloner); ok { + target.Extensions = h.Clone().(*Extensions) + } else { + target.Extensions = proto.Clone(m.GetExtensions()).(*Extensions) + } + + if h, ok := interface{}(m.GetTracing()).(clone.Cloner); ok { + target.Tracing = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_tracing.RouteTracingSettings) + } else { + target.Tracing = proto.Clone(m.GetTracing()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_tracing.RouteTracingSettings) + } + + if h, ok := interface{}(m.GetShadowing()).(clone.Cloner); ok { + target.Shadowing = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_shadowing.RouteShadowing) + } else { + target.Shadowing = proto.Clone(m.GetShadowing()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_shadowing.RouteShadowing) + } + + if h, ok := interface{}(m.GetHeaderManipulation()).(clone.Cloner); ok { + target.HeaderManipulation = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_headers.HeaderManipulation) + } else { + target.HeaderManipulation = proto.Clone(m.GetHeaderManipulation()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_headers.HeaderManipulation) + } + + if h, ok := interface{}(m.GetAppendXForwardedHost()).(clone.Cloner); ok { + target.AppendXForwardedHost = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.AppendXForwardedHost = proto.Clone(m.GetAppendXForwardedHost()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetCors()).(clone.Cloner); ok { + target.Cors = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_cors.CorsPolicy) + } else { + target.Cors = proto.Clone(m.GetCors()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_cors.CorsPolicy) + } + + if h, ok := interface{}(m.GetLbHash()).(clone.Cloner); ok { + target.LbHash = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_lbhash.RouteActionHashConfig) + } else { + target.LbHash = proto.Clone(m.GetLbHash()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_lbhash.RouteActionHashConfig) + } + + if m.GetUpgrades() != nil { + target.Upgrades = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_protocol_upgrade.ProtocolUpgradeConfig, len(m.GetUpgrades())) + for idx, v := range m.GetUpgrades() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Upgrades[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_protocol_upgrade.ProtocolUpgradeConfig) + } else { + target.Upgrades[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_protocol_upgrade.ProtocolUpgradeConfig) + } + + } + } + + if h, ok := interface{}(m.GetRatelimitBasic()).(clone.Cloner); ok { + target.RatelimitBasic = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.IngressRateLimit) + } else { + target.RatelimitBasic = proto.Clone(m.GetRatelimitBasic()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.IngressRateLimit) + } + + if h, ok := interface{}(m.GetWaf()).(clone.Cloner); ok { + target.Waf = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_waf.Settings) + } else { + target.Waf = proto.Clone(m.GetWaf()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_waf.Settings) + } + + if h, ok := interface{}(m.GetRbac()).(clone.Cloner); ok { + target.Rbac = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_rbac.ExtensionSettings) + } else { + target.Rbac = proto.Clone(m.GetRbac()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_rbac.ExtensionSettings) + } + + if h, ok := interface{}(m.GetExtauth()).(clone.Cloner); ok { + target.Extauth = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1.ExtAuthExtension) + } else { + target.Extauth = proto.Clone(m.GetExtauth()).(*github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1.ExtAuthExtension) + } + + if h, ok := interface{}(m.GetDlp()).(clone.Cloner); ok { + target.Dlp = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_dlp.Config) + } else { + target.Dlp = proto.Clone(m.GetDlp()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_dlp.Config) + } + + if h, ok := interface{}(m.GetBufferPerRoute()).(clone.Cloner); ok { + target.BufferPerRoute = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_buffer_v3.BufferPerRoute) + } else { + target.BufferPerRoute = proto.Clone(m.GetBufferPerRoute()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_buffer_v3.BufferPerRoute) + } + + if h, ok := interface{}(m.GetCsrf()).(clone.Cloner); ok { + target.Csrf = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_csrf_v3.CsrfPolicy) + } else { + target.Csrf = proto.Clone(m.GetCsrf()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_csrf_v3.CsrfPolicy) + } + + if h, ok := interface{}(m.GetStagedTransformations()).(clone.Cloner); ok { + target.StagedTransformations = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_transformation.TransformationStages) + } else { + target.StagedTransformations = proto.Clone(m.GetStagedTransformations()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_transformation.TransformationStages) + } + + if m.GetEnvoyMetadata() != nil { + target.EnvoyMetadata = make(map[string]*google_golang_org_protobuf_types_known_structpb.Struct, len(m.GetEnvoyMetadata())) + for k, v := range m.GetEnvoyMetadata() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.EnvoyMetadata[k] = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.EnvoyMetadata[k] = proto.Clone(v).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + } + } + + if h, ok := interface{}(m.GetRegexRewrite()).(clone.Cloner); ok { + target.RegexRewrite = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.RegexMatchAndSubstitute) + } else { + target.RegexRewrite = proto.Clone(m.GetRegexRewrite()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.RegexMatchAndSubstitute) + } + + if h, ok := interface{}(m.GetMaxStreamDuration()).(clone.Cloner); ok { + target.MaxStreamDuration = h.Clone().(*RouteOptions_MaxStreamDuration) + } else { + target.MaxStreamDuration = proto.Clone(m.GetMaxStreamDuration()).(*RouteOptions_MaxStreamDuration) + } + + if h, ok := interface{}(m.GetIdleTimeout()).(clone.Cloner); ok { + target.IdleTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.IdleTimeout = proto.Clone(m.GetIdleTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetExtProc()).(clone.Cloner); ok { + target.ExtProc = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_extproc.RouteSettings) + } else { + target.ExtProc = proto.Clone(m.GetExtProc()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_extproc.RouteSettings) + } + + if h, ok := interface{}(m.GetAi()).(clone.Cloner); ok { + target.Ai = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ai.RouteSettings) + } else { + target.Ai = proto.Clone(m.GetAi()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ai.RouteSettings) + } + + switch m.HostRewriteType.(type) { + + case *RouteOptions_HostRewrite: + + target.HostRewriteType = &RouteOptions_HostRewrite{ + HostRewrite: m.GetHostRewrite(), + } + + case *RouteOptions_AutoHostRewrite: + + if h, ok := interface{}(m.GetAutoHostRewrite()).(clone.Cloner); ok { + target.HostRewriteType = &RouteOptions_AutoHostRewrite{ + AutoHostRewrite: h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue), + } + } else { + target.HostRewriteType = &RouteOptions_AutoHostRewrite{ + AutoHostRewrite: proto.Clone(m.GetAutoHostRewrite()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue), + } + } + + case *RouteOptions_HostRewritePathRegex: + + if h, ok := interface{}(m.GetHostRewritePathRegex()).(clone.Cloner); ok { + target.HostRewriteType = &RouteOptions_HostRewritePathRegex{ + HostRewritePathRegex: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.RegexMatchAndSubstitute), + } + } else { + target.HostRewriteType = &RouteOptions_HostRewritePathRegex{ + HostRewritePathRegex: proto.Clone(m.GetHostRewritePathRegex()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_type_matcher_v3.RegexMatchAndSubstitute), + } + } + + case *RouteOptions_HostRewriteHeader: + + if h, ok := interface{}(m.GetHostRewriteHeader()).(clone.Cloner); ok { + target.HostRewriteType = &RouteOptions_HostRewriteHeader{ + HostRewriteHeader: h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue), + } + } else { + target.HostRewriteType = &RouteOptions_HostRewriteHeader{ + HostRewriteHeader: proto.Clone(m.GetHostRewriteHeader()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue), + } + } + + } + + switch m.RateLimitEarlyConfigType.(type) { + + case *RouteOptions_RatelimitEarly: + + if h, ok := interface{}(m.GetRatelimitEarly()).(clone.Cloner); ok { + target.RateLimitEarlyConfigType = &RouteOptions_RatelimitEarly{ + RatelimitEarly: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitRouteExtension), + } + } else { + target.RateLimitEarlyConfigType = &RouteOptions_RatelimitEarly{ + RatelimitEarly: proto.Clone(m.GetRatelimitEarly()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitRouteExtension), + } + } + + case *RouteOptions_RateLimitEarlyConfigs: + + if h, ok := interface{}(m.GetRateLimitEarlyConfigs()).(clone.Cloner); ok { + target.RateLimitEarlyConfigType = &RouteOptions_RateLimitEarlyConfigs{ + RateLimitEarlyConfigs: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitConfigRefs), + } + } else { + target.RateLimitEarlyConfigType = &RouteOptions_RateLimitEarlyConfigs{ + RateLimitEarlyConfigs: proto.Clone(m.GetRateLimitEarlyConfigs()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitConfigRefs), + } + } + + } + + switch m.RateLimitConfigType.(type) { + + case *RouteOptions_Ratelimit: + + if h, ok := interface{}(m.GetRatelimit()).(clone.Cloner); ok { + target.RateLimitConfigType = &RouteOptions_Ratelimit{ + Ratelimit: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitRouteExtension), + } + } else { + target.RateLimitConfigType = &RouteOptions_Ratelimit{ + Ratelimit: proto.Clone(m.GetRatelimit()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitRouteExtension), + } + } + + case *RouteOptions_RateLimitConfigs: + + if h, ok := interface{}(m.GetRateLimitConfigs()).(clone.Cloner); ok { + target.RateLimitConfigType = &RouteOptions_RateLimitConfigs{ + RateLimitConfigs: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitConfigRefs), + } + } else { + target.RateLimitConfigType = &RouteOptions_RateLimitConfigs{ + RateLimitConfigs: proto.Clone(m.GetRateLimitConfigs()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitConfigRefs), + } + } + + } + + switch m.RateLimitRegularConfigType.(type) { + + case *RouteOptions_RatelimitRegular: + + if h, ok := interface{}(m.GetRatelimitRegular()).(clone.Cloner); ok { + target.RateLimitRegularConfigType = &RouteOptions_RatelimitRegular{ + RatelimitRegular: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitRouteExtension), + } + } else { + target.RateLimitRegularConfigType = &RouteOptions_RatelimitRegular{ + RatelimitRegular: proto.Clone(m.GetRatelimitRegular()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitRouteExtension), + } + } + + case *RouteOptions_RateLimitRegularConfigs: + + if h, ok := interface{}(m.GetRateLimitRegularConfigs()).(clone.Cloner); ok { + target.RateLimitRegularConfigType = &RouteOptions_RateLimitRegularConfigs{ + RateLimitRegularConfigs: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitConfigRefs), + } + } else { + target.RateLimitRegularConfigType = &RouteOptions_RateLimitRegularConfigs{ + RateLimitRegularConfigs: proto.Clone(m.GetRateLimitRegularConfigs()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitConfigRefs), + } + } + + } + + switch m.JwtConfig.(type) { + + case *RouteOptions_Jwt: + + if h, ok := interface{}(m.GetJwt()).(clone.Cloner); ok { + target.JwtConfig = &RouteOptions_Jwt{ + Jwt: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_jwt.RouteExtension), + } + } else { + target.JwtConfig = &RouteOptions_Jwt{ + Jwt: proto.Clone(m.GetJwt()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_jwt.RouteExtension), + } + } + + case *RouteOptions_JwtStaged: + + if h, ok := interface{}(m.GetJwtStaged()).(clone.Cloner); ok { + target.JwtConfig = &RouteOptions_JwtStaged{ + JwtStaged: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_jwt.JwtStagedRouteExtension), + } + } else { + target.JwtConfig = &RouteOptions_JwtStaged{ + JwtStaged: proto.Clone(m.GetJwtStaged()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_jwt.JwtStagedRouteExtension), + } + } + + case *RouteOptions_JwtProvidersStaged: + + if h, ok := interface{}(m.GetJwtProvidersStaged()).(clone.Cloner); ok { + target.JwtConfig = &RouteOptions_JwtProvidersStaged{ + JwtProvidersStaged: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_jwt.JwtStagedRouteProvidersExtension), + } + } else { + target.JwtConfig = &RouteOptions_JwtProvidersStaged{ + JwtProvidersStaged: proto.Clone(m.GetJwtProvidersStaged()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_jwt.JwtStagedRouteProvidersExtension), + } + } + + } + + return target +} + +// Clone function +func (m *RouteOptions_MaxStreamDuration) Clone() proto.Message { + var target *RouteOptions_MaxStreamDuration + if m == nil { + return target + } + target = &RouteOptions_MaxStreamDuration{} + + if h, ok := interface{}(m.GetMaxStreamDuration()).(clone.Cloner); ok { + target.MaxStreamDuration = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.MaxStreamDuration = proto.Clone(m.GetMaxStreamDuration()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetGrpcTimeoutHeaderMax()).(clone.Cloner); ok { + target.GrpcTimeoutHeaderMax = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.GrpcTimeoutHeaderMax = proto.Clone(m.GetGrpcTimeoutHeaderMax()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetGrpcTimeoutHeaderOffset()).(clone.Cloner); ok { + target.GrpcTimeoutHeaderOffset = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.GrpcTimeoutHeaderOffset = proto.Clone(m.GetGrpcTimeoutHeaderOffset()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/route_options.pb.equal.go b/pkg/api/gloo.solo.io/v1/route_options.pb.equal.go new file mode 100644 index 000000000..d940f3bdc --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/route_options.pb.equal.go @@ -0,0 +1,622 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/route_options.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *RouteOptions) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RouteOptions) + if !ok { + that2, ok := that.(RouteOptions) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetTransformations()).(equality.Equalizer); ok { + if !h.Equal(target.GetTransformations()) { + return false + } + } else { + if !proto.Equal(m.GetTransformations(), target.GetTransformations()) { + return false + } + } + + if h, ok := interface{}(m.GetFaults()).(equality.Equalizer); ok { + if !h.Equal(target.GetFaults()) { + return false + } + } else { + if !proto.Equal(m.GetFaults(), target.GetFaults()) { + return false + } + } + + if h, ok := interface{}(m.GetPrefixRewrite()).(equality.Equalizer); ok { + if !h.Equal(target.GetPrefixRewrite()) { + return false + } + } else { + if !proto.Equal(m.GetPrefixRewrite(), target.GetPrefixRewrite()) { + return false + } + } + + if h, ok := interface{}(m.GetTimeout()).(equality.Equalizer); ok { + if !h.Equal(target.GetTimeout()) { + return false + } + } else { + if !proto.Equal(m.GetTimeout(), target.GetTimeout()) { + return false + } + } + + if h, ok := interface{}(m.GetRetries()).(equality.Equalizer); ok { + if !h.Equal(target.GetRetries()) { + return false + } + } else { + if !proto.Equal(m.GetRetries(), target.GetRetries()) { + return false + } + } + + if h, ok := interface{}(m.GetExtensions()).(equality.Equalizer); ok { + if !h.Equal(target.GetExtensions()) { + return false + } + } else { + if !proto.Equal(m.GetExtensions(), target.GetExtensions()) { + return false + } + } + + if h, ok := interface{}(m.GetTracing()).(equality.Equalizer); ok { + if !h.Equal(target.GetTracing()) { + return false + } + } else { + if !proto.Equal(m.GetTracing(), target.GetTracing()) { + return false + } + } + + if h, ok := interface{}(m.GetShadowing()).(equality.Equalizer); ok { + if !h.Equal(target.GetShadowing()) { + return false + } + } else { + if !proto.Equal(m.GetShadowing(), target.GetShadowing()) { + return false + } + } + + if h, ok := interface{}(m.GetHeaderManipulation()).(equality.Equalizer); ok { + if !h.Equal(target.GetHeaderManipulation()) { + return false + } + } else { + if !proto.Equal(m.GetHeaderManipulation(), target.GetHeaderManipulation()) { + return false + } + } + + if h, ok := interface{}(m.GetAppendXForwardedHost()).(equality.Equalizer); ok { + if !h.Equal(target.GetAppendXForwardedHost()) { + return false + } + } else { + if !proto.Equal(m.GetAppendXForwardedHost(), target.GetAppendXForwardedHost()) { + return false + } + } + + if h, ok := interface{}(m.GetCors()).(equality.Equalizer); ok { + if !h.Equal(target.GetCors()) { + return false + } + } else { + if !proto.Equal(m.GetCors(), target.GetCors()) { + return false + } + } + + if h, ok := interface{}(m.GetLbHash()).(equality.Equalizer); ok { + if !h.Equal(target.GetLbHash()) { + return false + } + } else { + if !proto.Equal(m.GetLbHash(), target.GetLbHash()) { + return false + } + } + + if len(m.GetUpgrades()) != len(target.GetUpgrades()) { + return false + } + for idx, v := range m.GetUpgrades() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetUpgrades()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetUpgrades()[idx]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetRatelimitBasic()).(equality.Equalizer); ok { + if !h.Equal(target.GetRatelimitBasic()) { + return false + } + } else { + if !proto.Equal(m.GetRatelimitBasic(), target.GetRatelimitBasic()) { + return false + } + } + + if h, ok := interface{}(m.GetWaf()).(equality.Equalizer); ok { + if !h.Equal(target.GetWaf()) { + return false + } + } else { + if !proto.Equal(m.GetWaf(), target.GetWaf()) { + return false + } + } + + if h, ok := interface{}(m.GetRbac()).(equality.Equalizer); ok { + if !h.Equal(target.GetRbac()) { + return false + } + } else { + if !proto.Equal(m.GetRbac(), target.GetRbac()) { + return false + } + } + + if h, ok := interface{}(m.GetExtauth()).(equality.Equalizer); ok { + if !h.Equal(target.GetExtauth()) { + return false + } + } else { + if !proto.Equal(m.GetExtauth(), target.GetExtauth()) { + return false + } + } + + if h, ok := interface{}(m.GetDlp()).(equality.Equalizer); ok { + if !h.Equal(target.GetDlp()) { + return false + } + } else { + if !proto.Equal(m.GetDlp(), target.GetDlp()) { + return false + } + } + + if h, ok := interface{}(m.GetBufferPerRoute()).(equality.Equalizer); ok { + if !h.Equal(target.GetBufferPerRoute()) { + return false + } + } else { + if !proto.Equal(m.GetBufferPerRoute(), target.GetBufferPerRoute()) { + return false + } + } + + if h, ok := interface{}(m.GetCsrf()).(equality.Equalizer); ok { + if !h.Equal(target.GetCsrf()) { + return false + } + } else { + if !proto.Equal(m.GetCsrf(), target.GetCsrf()) { + return false + } + } + + if h, ok := interface{}(m.GetStagedTransformations()).(equality.Equalizer); ok { + if !h.Equal(target.GetStagedTransformations()) { + return false + } + } else { + if !proto.Equal(m.GetStagedTransformations(), target.GetStagedTransformations()) { + return false + } + } + + if len(m.GetEnvoyMetadata()) != len(target.GetEnvoyMetadata()) { + return false + } + for k, v := range m.GetEnvoyMetadata() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetEnvoyMetadata()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetEnvoyMetadata()[k]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetRegexRewrite()).(equality.Equalizer); ok { + if !h.Equal(target.GetRegexRewrite()) { + return false + } + } else { + if !proto.Equal(m.GetRegexRewrite(), target.GetRegexRewrite()) { + return false + } + } + + if h, ok := interface{}(m.GetMaxStreamDuration()).(equality.Equalizer); ok { + if !h.Equal(target.GetMaxStreamDuration()) { + return false + } + } else { + if !proto.Equal(m.GetMaxStreamDuration(), target.GetMaxStreamDuration()) { + return false + } + } + + if h, ok := interface{}(m.GetIdleTimeout()).(equality.Equalizer); ok { + if !h.Equal(target.GetIdleTimeout()) { + return false + } + } else { + if !proto.Equal(m.GetIdleTimeout(), target.GetIdleTimeout()) { + return false + } + } + + if h, ok := interface{}(m.GetExtProc()).(equality.Equalizer); ok { + if !h.Equal(target.GetExtProc()) { + return false + } + } else { + if !proto.Equal(m.GetExtProc(), target.GetExtProc()) { + return false + } + } + + if h, ok := interface{}(m.GetAi()).(equality.Equalizer); ok { + if !h.Equal(target.GetAi()) { + return false + } + } else { + if !proto.Equal(m.GetAi(), target.GetAi()) { + return false + } + } + + switch m.HostRewriteType.(type) { + + case *RouteOptions_HostRewrite: + if _, ok := target.HostRewriteType.(*RouteOptions_HostRewrite); !ok { + return false + } + + if strings.Compare(m.GetHostRewrite(), target.GetHostRewrite()) != 0 { + return false + } + + case *RouteOptions_AutoHostRewrite: + if _, ok := target.HostRewriteType.(*RouteOptions_AutoHostRewrite); !ok { + return false + } + + if h, ok := interface{}(m.GetAutoHostRewrite()).(equality.Equalizer); ok { + if !h.Equal(target.GetAutoHostRewrite()) { + return false + } + } else { + if !proto.Equal(m.GetAutoHostRewrite(), target.GetAutoHostRewrite()) { + return false + } + } + + case *RouteOptions_HostRewritePathRegex: + if _, ok := target.HostRewriteType.(*RouteOptions_HostRewritePathRegex); !ok { + return false + } + + if h, ok := interface{}(m.GetHostRewritePathRegex()).(equality.Equalizer); ok { + if !h.Equal(target.GetHostRewritePathRegex()) { + return false + } + } else { + if !proto.Equal(m.GetHostRewritePathRegex(), target.GetHostRewritePathRegex()) { + return false + } + } + + case *RouteOptions_HostRewriteHeader: + if _, ok := target.HostRewriteType.(*RouteOptions_HostRewriteHeader); !ok { + return false + } + + if h, ok := interface{}(m.GetHostRewriteHeader()).(equality.Equalizer); ok { + if !h.Equal(target.GetHostRewriteHeader()) { + return false + } + } else { + if !proto.Equal(m.GetHostRewriteHeader(), target.GetHostRewriteHeader()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.HostRewriteType != target.HostRewriteType { + return false + } + } + + switch m.RateLimitEarlyConfigType.(type) { + + case *RouteOptions_RatelimitEarly: + if _, ok := target.RateLimitEarlyConfigType.(*RouteOptions_RatelimitEarly); !ok { + return false + } + + if h, ok := interface{}(m.GetRatelimitEarly()).(equality.Equalizer); ok { + if !h.Equal(target.GetRatelimitEarly()) { + return false + } + } else { + if !proto.Equal(m.GetRatelimitEarly(), target.GetRatelimitEarly()) { + return false + } + } + + case *RouteOptions_RateLimitEarlyConfigs: + if _, ok := target.RateLimitEarlyConfigType.(*RouteOptions_RateLimitEarlyConfigs); !ok { + return false + } + + if h, ok := interface{}(m.GetRateLimitEarlyConfigs()).(equality.Equalizer); ok { + if !h.Equal(target.GetRateLimitEarlyConfigs()) { + return false + } + } else { + if !proto.Equal(m.GetRateLimitEarlyConfigs(), target.GetRateLimitEarlyConfigs()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.RateLimitEarlyConfigType != target.RateLimitEarlyConfigType { + return false + } + } + + switch m.RateLimitConfigType.(type) { + + case *RouteOptions_Ratelimit: + if _, ok := target.RateLimitConfigType.(*RouteOptions_Ratelimit); !ok { + return false + } + + if h, ok := interface{}(m.GetRatelimit()).(equality.Equalizer); ok { + if !h.Equal(target.GetRatelimit()) { + return false + } + } else { + if !proto.Equal(m.GetRatelimit(), target.GetRatelimit()) { + return false + } + } + + case *RouteOptions_RateLimitConfigs: + if _, ok := target.RateLimitConfigType.(*RouteOptions_RateLimitConfigs); !ok { + return false + } + + if h, ok := interface{}(m.GetRateLimitConfigs()).(equality.Equalizer); ok { + if !h.Equal(target.GetRateLimitConfigs()) { + return false + } + } else { + if !proto.Equal(m.GetRateLimitConfigs(), target.GetRateLimitConfigs()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.RateLimitConfigType != target.RateLimitConfigType { + return false + } + } + + switch m.RateLimitRegularConfigType.(type) { + + case *RouteOptions_RatelimitRegular: + if _, ok := target.RateLimitRegularConfigType.(*RouteOptions_RatelimitRegular); !ok { + return false + } + + if h, ok := interface{}(m.GetRatelimitRegular()).(equality.Equalizer); ok { + if !h.Equal(target.GetRatelimitRegular()) { + return false + } + } else { + if !proto.Equal(m.GetRatelimitRegular(), target.GetRatelimitRegular()) { + return false + } + } + + case *RouteOptions_RateLimitRegularConfigs: + if _, ok := target.RateLimitRegularConfigType.(*RouteOptions_RateLimitRegularConfigs); !ok { + return false + } + + if h, ok := interface{}(m.GetRateLimitRegularConfigs()).(equality.Equalizer); ok { + if !h.Equal(target.GetRateLimitRegularConfigs()) { + return false + } + } else { + if !proto.Equal(m.GetRateLimitRegularConfigs(), target.GetRateLimitRegularConfigs()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.RateLimitRegularConfigType != target.RateLimitRegularConfigType { + return false + } + } + + switch m.JwtConfig.(type) { + + case *RouteOptions_Jwt: + if _, ok := target.JwtConfig.(*RouteOptions_Jwt); !ok { + return false + } + + if h, ok := interface{}(m.GetJwt()).(equality.Equalizer); ok { + if !h.Equal(target.GetJwt()) { + return false + } + } else { + if !proto.Equal(m.GetJwt(), target.GetJwt()) { + return false + } + } + + case *RouteOptions_JwtStaged: + if _, ok := target.JwtConfig.(*RouteOptions_JwtStaged); !ok { + return false + } + + if h, ok := interface{}(m.GetJwtStaged()).(equality.Equalizer); ok { + if !h.Equal(target.GetJwtStaged()) { + return false + } + } else { + if !proto.Equal(m.GetJwtStaged(), target.GetJwtStaged()) { + return false + } + } + + case *RouteOptions_JwtProvidersStaged: + if _, ok := target.JwtConfig.(*RouteOptions_JwtProvidersStaged); !ok { + return false + } + + if h, ok := interface{}(m.GetJwtProvidersStaged()).(equality.Equalizer); ok { + if !h.Equal(target.GetJwtProvidersStaged()) { + return false + } + } else { + if !proto.Equal(m.GetJwtProvidersStaged(), target.GetJwtProvidersStaged()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.JwtConfig != target.JwtConfig { + return false + } + } + + return true +} + +// Equal function +func (m *RouteOptions_MaxStreamDuration) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RouteOptions_MaxStreamDuration) + if !ok { + that2, ok := that.(RouteOptions_MaxStreamDuration) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetMaxStreamDuration()).(equality.Equalizer); ok { + if !h.Equal(target.GetMaxStreamDuration()) { + return false + } + } else { + if !proto.Equal(m.GetMaxStreamDuration(), target.GetMaxStreamDuration()) { + return false + } + } + + if h, ok := interface{}(m.GetGrpcTimeoutHeaderMax()).(equality.Equalizer); ok { + if !h.Equal(target.GetGrpcTimeoutHeaderMax()) { + return false + } + } else { + if !proto.Equal(m.GetGrpcTimeoutHeaderMax(), target.GetGrpcTimeoutHeaderMax()) { + return false + } + } + + if h, ok := interface{}(m.GetGrpcTimeoutHeaderOffset()).(equality.Equalizer); ok { + if !h.Equal(target.GetGrpcTimeoutHeaderOffset()) { + return false + } + } else { + if !proto.Equal(m.GetGrpcTimeoutHeaderOffset(), target.GetGrpcTimeoutHeaderOffset()) { + return false + } + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/route_options.pb.go b/pkg/api/gloo.solo.io/v1/route_options.pb.go new file mode 100644 index 000000000..575a721eb --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/route_options.pb.go @@ -0,0 +1,1285 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/route_options.proto + +package v1 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + v1 "github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1" + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3" + v31 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3" + v32 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3" + ai "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai" + dlp "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/dlp" + extproc "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/extproc" + jwt "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/jwt" + ratelimit "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit" + rbac "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/rbac" + waf "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/waf" + cors "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/cors" + faultinjection "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/faultinjection" + headers "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/headers" + lbhash "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/lbhash" + protocol_upgrade "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/protocol_upgrade" + retries "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/retries" + shadowing "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/shadowing" + tracing "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tracing" + transformation "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + structpb "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Optional, feature-specific configuration that lives on routes. +// Each RouteOptions object contains configuration for a specific feature. +// Note to developers: new Route plugins must be added to this struct +// to be usable by Gloo. (plugins currently need to be compiled into Gloo) +type RouteOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Transformations to apply. Note: this field is superseded by `staged_transformations`. + // If `staged_transformations.regular` is set, this field will be ignored. + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/route_options.proto. + Transformations *transformation.Transformations `protobuf:"bytes,1,opt,name=transformations,proto3" json:"transformations,omitempty"` + Faults *faultinjection.RouteFaults `protobuf:"bytes,2,opt,name=faults,proto3" json:"faults,omitempty"` + // For requests matched on this route, rewrite the HTTP request path to the provided value before forwarding upstream + PrefixRewrite *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=prefix_rewrite,json=prefixRewrite,proto3" json:"prefix_rewrite,omitempty"` + // Specifies the upstream timeout for the route. If not specified, the default is 15s. This spans between the point + // at which the entire downstream request (i.e. end-of-stream) has been processed and when the upstream response has + // been completely processed. A value of 0 will disable the route’s timeout. + Timeout *durationpb.Duration `protobuf:"bytes,4,opt,name=timeout,proto3" json:"timeout,omitempty"` + Retries *retries.RetryPolicy `protobuf:"bytes,5,opt,name=retries,proto3" json:"retries,omitempty"` + // Extensions will be passed along from Listeners, Gateways, VirtualServices, Routes, and Route tables to the + // underlying Proxy, making them useful for controllers, validation tools, etc. which interact with kubernetes yaml. + // + // Some sample use cases: + // * controllers, deployment pipelines, helm charts, etc. which wish to use extensions as a kind of opaque metadata. + // * In the future, Gloo may support gRPC-based plugins which communicate with the Gloo translator out-of-process. + // Opaque Extensions enables development of out-of-process plugins without requiring recompiling & redeploying Gloo's API. + Extensions *Extensions `protobuf:"bytes,6,opt,name=extensions,proto3" json:"extensions,omitempty"` + // Defines route-specific tracing configuration. + // See here for additional information on Envoy's tracing capabilities: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/observability/tracing.html + // See [here](https://docs.solo.io/gloo-edge/latest/guides/observability/tracing/) for additional information about configuring tracing with Gloo Edge. + Tracing *tracing.RouteTracingSettings `protobuf:"bytes,7,opt,name=tracing,proto3" json:"tracing,omitempty"` + // Specifies traffic shadowing configuration for the route. + // See here for additional information on Envoy's shadowing capabilities: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto#envoy-api-msg-route-routeaction-requestmirrorpolicy + Shadowing *shadowing.RouteShadowing `protobuf:"bytes,8,opt,name=shadowing,proto3" json:"shadowing,omitempty"` + // Append/Remove headers on Requests or Responses on this Route + HeaderManipulation *headers.HeaderManipulation `protobuf:"bytes,9,opt,name=header_manipulation,json=headerManipulation,proto3" json:"header_manipulation,omitempty"` + // For requests matched on this route, rewrite the Host header before forwarding upstream + // + // Types that are valid to be assigned to HostRewriteType: + // + // *RouteOptions_HostRewrite + // *RouteOptions_AutoHostRewrite + // *RouteOptions_HostRewritePathRegex + // *RouteOptions_HostRewriteHeader + HostRewriteType isRouteOptions_HostRewriteType `protobuf_oneof:"host_rewrite_type"` + // If true and there is a host rewrite, appends the x-forwarded-host header to requests. + AppendXForwardedHost *wrapperspb.BoolValue `protobuf:"bytes,146,opt,name=append_x_forwarded_host,json=appendXForwardedHost,proto3" json:"append_x_forwarded_host,omitempty"` + // Defines a CORS policy for the route. + // If a CORS policy is defined on both the route and the virtual host, the merge behavior for these policies is + // determined by the CorsPolicyMergeSettings defined on the VirtualHost. + Cors *cors.CorsPolicy `protobuf:"bytes,11,opt,name=cors,proto3" json:"cors,omitempty"` + // For routes served by a hashing load balancer, this defines the input to the hash key + // Gloo configures Envoy with the first available RouteActionHashConfig among the following ordered list of providers: + // - route, upstream, virtual service + LbHash *lbhash.RouteActionHashConfig `protobuf:"bytes,12,opt,name=lb_hash,json=lbHash,proto3" json:"lb_hash,omitempty"` + // Route configuration for protocol upgrade requests. + Upgrades []*protocol_upgrade.ProtocolUpgradeConfig `protobuf:"bytes,21,rep,name=upgrades,proto3" json:"upgrades,omitempty"` + // Enterprise-only: Config for GlooE rate-limiting using simplified (gloo-specific) API + RatelimitBasic *ratelimit.IngressRateLimit `protobuf:"bytes,13,opt,name=ratelimit_basic,json=ratelimitBasic,proto3" json:"ratelimit_basic,omitempty"` + // Types that are valid to be assigned to RateLimitEarlyConfigType: + // + // *RouteOptions_RatelimitEarly + // *RouteOptions_RateLimitEarlyConfigs + RateLimitEarlyConfigType isRouteOptions_RateLimitEarlyConfigType `protobuf_oneof:"rate_limit_early_config_type"` + // Types that are valid to be assigned to RateLimitConfigType: + // + // *RouteOptions_Ratelimit + // *RouteOptions_RateLimitConfigs + RateLimitConfigType isRouteOptions_RateLimitConfigType `protobuf_oneof:"rate_limit_config_type"` + // Types that are valid to be assigned to RateLimitRegularConfigType: + // + // *RouteOptions_RatelimitRegular + // *RouteOptions_RateLimitRegularConfigs + RateLimitRegularConfigType isRouteOptions_RateLimitRegularConfigType `protobuf_oneof:"rate_limit_regular_config_type"` + // Enterprise-only: Config for Web Application Firewall (WAF), supporting + // the popular ModSecurity 3.0 ruleset + Waf *waf.Settings `protobuf:"bytes,15,opt,name=waf,proto3" json:"waf,omitempty"` + // Types that are valid to be assigned to JwtConfig: + // + // *RouteOptions_Jwt + // *RouteOptions_JwtStaged + // *RouteOptions_JwtProvidersStaged + JwtConfig isRouteOptions_JwtConfig `protobuf_oneof:"jwt_config"` + // Enterprise-only: Config for RBAC (currently only supports RBAC based on JWT claims) + Rbac *rbac.ExtensionSettings `protobuf:"bytes,17,opt,name=rbac,proto3" json:"rbac,omitempty"` + // Enterprise-only: Authentication configuration + Extauth *v1.ExtAuthExtension `protobuf:"bytes,18,opt,name=extauth,proto3" json:"extauth,omitempty"` + // Enterprise-only: Config for data loss prevention + Dlp *dlp.Config `protobuf:"bytes,20,opt,name=dlp,proto3" json:"dlp,omitempty"` + // BufferPerRoute can be used to set the maximum request size + // that the filter will buffer before the connection + // manager will stop buffering and return a 413 response. + // Note: If you have not set a global config (at the gateway level), this + // override will not do anything by itself. + BufferPerRoute *v3.BufferPerRoute `protobuf:"bytes,22,opt,name=buffer_per_route,json=bufferPerRoute,proto3" json:"buffer_per_route,omitempty"` + // Csrf can be used to set percent of requests for which the CSRF filter is enabled, enable shadow-only mode + // where policies will be evaluated and tracked, but not enforced and add additional source origins + // that will be allowed in addition to the destination origin. + // For more, see https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/filter/http/csrf/v2/csrf.proto + Csrf *v31.CsrfPolicy `protobuf:"bytes,24,opt,name=csrf,proto3" json:"csrf,omitempty"` + // Early transformations stage. These transformations run before most other options are processed. + // If the `regular` field is set in here, the `transformations` field is ignored. + StagedTransformations *transformation.TransformationStages `protobuf:"bytes,23,opt,name=staged_transformations,json=stagedTransformations,proto3" json:"staged_transformations,omitempty"` + // This field can be used to provide additional information about the route. This metadata can be consumed + // by the Envoy filters that process requests that match the route. For more info about metadata, see + // [here](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/data_sharing_between_filters#metadata). + // + // The value of this field will be propagated to the `metadata` attribute of the corresponding Envoy route. + // Please refer to the [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#config-route-v3-route) + // for more details about the `metadata` attribute. + EnvoyMetadata map[string]*structpb.Struct `protobuf:"bytes,26,rep,name=envoy_metadata,json=envoyMetadata,proto3" json:"envoy_metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // For requests matched on this route, rewrite the HTTP request path according to the provided regex pattern before forwarding upstream + // Please refer to the [Envoy documentation](https://www.envoyproxy.io/docs/envoy/v1.14.1/api-v3/config/route/v3/route_components.proto#envoy-v3-api-field-config-route-v3-routeaction-regex-rewrite) + // for more details about the `regex_rewrite` attribute + RegexRewrite *v32.RegexMatchAndSubstitute `protobuf:"bytes,27,opt,name=regex_rewrite,json=regexRewrite,proto3" json:"regex_rewrite,omitempty"` + // Settings for maximum durations and timeouts for streams on the route. + // Please refer to the [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-msg-config-route-v3-routeaction-maxstreamduration) + MaxStreamDuration *RouteOptions_MaxStreamDuration `protobuf:"bytes,28,opt,name=max_stream_duration,json=maxStreamDuration,proto3" json:"max_stream_duration,omitempty"` + // Specifies the idle timeout for the route. If not specified, there is no per-route idle timeout, + // although the Gateway's [httpConnectionManagerSettings](https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/hcm/hcm.proto.sk/#httpconnectionmanagersettings) + // wide stream_idle_timeout will still apply. A value of 0 will completely disable the route’s idle timeout, even if a connection manager stream idle timeout is configured. + // Please refer to the [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-field-config-route-v3-routeaction-idle-timeout) + IdleTimeout *durationpb.Duration `protobuf:"bytes,29,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"` + // Enterprise-only: External Processing filter settings for the route. This can be used to + // override certain HttpListenerOptions or VirtualHostOptions settings. + ExtProc *extproc.RouteSettings `protobuf:"bytes,30,opt,name=ext_proc,json=extProc,proto3" json:"ext_proc,omitempty"` + // Enterprise-only: Settings to configure ai settings for a route. + // These settings will only apply if the backend is an `ai` Upstream. + Ai *ai.RouteSettings `protobuf:"bytes,31,opt,name=ai,proto3" json:"ai,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RouteOptions) Reset() { + *x = RouteOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RouteOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RouteOptions) ProtoMessage() {} + +func (x *RouteOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RouteOptions.ProtoReflect.Descriptor instead. +func (*RouteOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_rawDescGZIP(), []int{0} +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/route_options.proto. +func (x *RouteOptions) GetTransformations() *transformation.Transformations { + if x != nil { + return x.Transformations + } + return nil +} + +func (x *RouteOptions) GetFaults() *faultinjection.RouteFaults { + if x != nil { + return x.Faults + } + return nil +} + +func (x *RouteOptions) GetPrefixRewrite() *wrapperspb.StringValue { + if x != nil { + return x.PrefixRewrite + } + return nil +} + +func (x *RouteOptions) GetTimeout() *durationpb.Duration { + if x != nil { + return x.Timeout + } + return nil +} + +func (x *RouteOptions) GetRetries() *retries.RetryPolicy { + if x != nil { + return x.Retries + } + return nil +} + +func (x *RouteOptions) GetExtensions() *Extensions { + if x != nil { + return x.Extensions + } + return nil +} + +func (x *RouteOptions) GetTracing() *tracing.RouteTracingSettings { + if x != nil { + return x.Tracing + } + return nil +} + +func (x *RouteOptions) GetShadowing() *shadowing.RouteShadowing { + if x != nil { + return x.Shadowing + } + return nil +} + +func (x *RouteOptions) GetHeaderManipulation() *headers.HeaderManipulation { + if x != nil { + return x.HeaderManipulation + } + return nil +} + +func (x *RouteOptions) GetHostRewriteType() isRouteOptions_HostRewriteType { + if x != nil { + return x.HostRewriteType + } + return nil +} + +func (x *RouteOptions) GetHostRewrite() string { + if x != nil { + if x, ok := x.HostRewriteType.(*RouteOptions_HostRewrite); ok { + return x.HostRewrite + } + } + return "" +} + +func (x *RouteOptions) GetAutoHostRewrite() *wrapperspb.BoolValue { + if x != nil { + if x, ok := x.HostRewriteType.(*RouteOptions_AutoHostRewrite); ok { + return x.AutoHostRewrite + } + } + return nil +} + +func (x *RouteOptions) GetHostRewritePathRegex() *v32.RegexMatchAndSubstitute { + if x != nil { + if x, ok := x.HostRewriteType.(*RouteOptions_HostRewritePathRegex); ok { + return x.HostRewritePathRegex + } + } + return nil +} + +func (x *RouteOptions) GetHostRewriteHeader() *wrapperspb.StringValue { + if x != nil { + if x, ok := x.HostRewriteType.(*RouteOptions_HostRewriteHeader); ok { + return x.HostRewriteHeader + } + } + return nil +} + +func (x *RouteOptions) GetAppendXForwardedHost() *wrapperspb.BoolValue { + if x != nil { + return x.AppendXForwardedHost + } + return nil +} + +func (x *RouteOptions) GetCors() *cors.CorsPolicy { + if x != nil { + return x.Cors + } + return nil +} + +func (x *RouteOptions) GetLbHash() *lbhash.RouteActionHashConfig { + if x != nil { + return x.LbHash + } + return nil +} + +func (x *RouteOptions) GetUpgrades() []*protocol_upgrade.ProtocolUpgradeConfig { + if x != nil { + return x.Upgrades + } + return nil +} + +func (x *RouteOptions) GetRatelimitBasic() *ratelimit.IngressRateLimit { + if x != nil { + return x.RatelimitBasic + } + return nil +} + +func (x *RouteOptions) GetRateLimitEarlyConfigType() isRouteOptions_RateLimitEarlyConfigType { + if x != nil { + return x.RateLimitEarlyConfigType + } + return nil +} + +func (x *RouteOptions) GetRatelimitEarly() *ratelimit.RateLimitRouteExtension { + if x != nil { + if x, ok := x.RateLimitEarlyConfigType.(*RouteOptions_RatelimitEarly); ok { + return x.RatelimitEarly + } + } + return nil +} + +func (x *RouteOptions) GetRateLimitEarlyConfigs() *ratelimit.RateLimitConfigRefs { + if x != nil { + if x, ok := x.RateLimitEarlyConfigType.(*RouteOptions_RateLimitEarlyConfigs); ok { + return x.RateLimitEarlyConfigs + } + } + return nil +} + +func (x *RouteOptions) GetRateLimitConfigType() isRouteOptions_RateLimitConfigType { + if x != nil { + return x.RateLimitConfigType + } + return nil +} + +func (x *RouteOptions) GetRatelimit() *ratelimit.RateLimitRouteExtension { + if x != nil { + if x, ok := x.RateLimitConfigType.(*RouteOptions_Ratelimit); ok { + return x.Ratelimit + } + } + return nil +} + +func (x *RouteOptions) GetRateLimitConfigs() *ratelimit.RateLimitConfigRefs { + if x != nil { + if x, ok := x.RateLimitConfigType.(*RouteOptions_RateLimitConfigs); ok { + return x.RateLimitConfigs + } + } + return nil +} + +func (x *RouteOptions) GetRateLimitRegularConfigType() isRouteOptions_RateLimitRegularConfigType { + if x != nil { + return x.RateLimitRegularConfigType + } + return nil +} + +func (x *RouteOptions) GetRatelimitRegular() *ratelimit.RateLimitRouteExtension { + if x != nil { + if x, ok := x.RateLimitRegularConfigType.(*RouteOptions_RatelimitRegular); ok { + return x.RatelimitRegular + } + } + return nil +} + +func (x *RouteOptions) GetRateLimitRegularConfigs() *ratelimit.RateLimitConfigRefs { + if x != nil { + if x, ok := x.RateLimitRegularConfigType.(*RouteOptions_RateLimitRegularConfigs); ok { + return x.RateLimitRegularConfigs + } + } + return nil +} + +func (x *RouteOptions) GetWaf() *waf.Settings { + if x != nil { + return x.Waf + } + return nil +} + +func (x *RouteOptions) GetJwtConfig() isRouteOptions_JwtConfig { + if x != nil { + return x.JwtConfig + } + return nil +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/route_options.proto. +func (x *RouteOptions) GetJwt() *jwt.RouteExtension { + if x != nil { + if x, ok := x.JwtConfig.(*RouteOptions_Jwt); ok { + return x.Jwt + } + } + return nil +} + +func (x *RouteOptions) GetJwtStaged() *jwt.JwtStagedRouteExtension { + if x != nil { + if x, ok := x.JwtConfig.(*RouteOptions_JwtStaged); ok { + return x.JwtStaged + } + } + return nil +} + +func (x *RouteOptions) GetJwtProvidersStaged() *jwt.JwtStagedRouteProvidersExtension { + if x != nil { + if x, ok := x.JwtConfig.(*RouteOptions_JwtProvidersStaged); ok { + return x.JwtProvidersStaged + } + } + return nil +} + +func (x *RouteOptions) GetRbac() *rbac.ExtensionSettings { + if x != nil { + return x.Rbac + } + return nil +} + +func (x *RouteOptions) GetExtauth() *v1.ExtAuthExtension { + if x != nil { + return x.Extauth + } + return nil +} + +func (x *RouteOptions) GetDlp() *dlp.Config { + if x != nil { + return x.Dlp + } + return nil +} + +func (x *RouteOptions) GetBufferPerRoute() *v3.BufferPerRoute { + if x != nil { + return x.BufferPerRoute + } + return nil +} + +func (x *RouteOptions) GetCsrf() *v31.CsrfPolicy { + if x != nil { + return x.Csrf + } + return nil +} + +func (x *RouteOptions) GetStagedTransformations() *transformation.TransformationStages { + if x != nil { + return x.StagedTransformations + } + return nil +} + +func (x *RouteOptions) GetEnvoyMetadata() map[string]*structpb.Struct { + if x != nil { + return x.EnvoyMetadata + } + return nil +} + +func (x *RouteOptions) GetRegexRewrite() *v32.RegexMatchAndSubstitute { + if x != nil { + return x.RegexRewrite + } + return nil +} + +func (x *RouteOptions) GetMaxStreamDuration() *RouteOptions_MaxStreamDuration { + if x != nil { + return x.MaxStreamDuration + } + return nil +} + +func (x *RouteOptions) GetIdleTimeout() *durationpb.Duration { + if x != nil { + return x.IdleTimeout + } + return nil +} + +func (x *RouteOptions) GetExtProc() *extproc.RouteSettings { + if x != nil { + return x.ExtProc + } + return nil +} + +func (x *RouteOptions) GetAi() *ai.RouteSettings { + if x != nil { + return x.Ai + } + return nil +} + +type isRouteOptions_HostRewriteType interface { + isRouteOptions_HostRewriteType() +} + +type RouteOptions_HostRewrite struct { + // Indicates that during forwarding, the host header will be swapped with this value. + HostRewrite string `protobuf:"bytes,10,opt,name=host_rewrite,json=hostRewrite,proto3,oneof"` +} + +type RouteOptions_AutoHostRewrite struct { + // Enable/Disable auto host re-write. + // Indicates that the host header will be swapped with the hostname of the upstream host. + // This setting is only honored for upstreams that use DNS resolution (i.e., their generated Envoy cluster is + // of type STRICT_DNS or LOGICAL_DNS -- think aws, azure, or static upstreams with hostnames) + AutoHostRewrite *wrapperspb.BoolValue `protobuf:"bytes,19,opt,name=auto_host_rewrite,json=autoHostRewrite,proto3,oneof"` +} + +type RouteOptions_HostRewritePathRegex struct { + // Indicates that during forwarding, the host header will be swapped with the result of the regex + // substitution executed on path value with query and fragment removed. + HostRewritePathRegex *v32.RegexMatchAndSubstitute `protobuf:"bytes,101,opt,name=host_rewrite_path_regex,json=hostRewritePathRegex,proto3,oneof"` +} + +type RouteOptions_HostRewriteHeader struct { + // Indicates that during forwarding, the host header will be swapped with the content of given downstream or custom header. + // If header value is empty, host header is left intact. + // Using this option will append the x-forwarded-host header if append_x_forwarded_host is set. + HostRewriteHeader *wrapperspb.StringValue `protobuf:"bytes,147,opt,name=host_rewrite_header,json=hostRewriteHeader,proto3,oneof"` +} + +func (*RouteOptions_HostRewrite) isRouteOptions_HostRewriteType() {} + +func (*RouteOptions_AutoHostRewrite) isRouteOptions_HostRewriteType() {} + +func (*RouteOptions_HostRewritePathRegex) isRouteOptions_HostRewriteType() {} + +func (*RouteOptions_HostRewriteHeader) isRouteOptions_HostRewriteType() {} + +type isRouteOptions_RateLimitEarlyConfigType interface { + isRouteOptions_RateLimitEarlyConfigType() +} + +type RouteOptions_RatelimitEarly struct { + // Enterprise-only: Partial config for GlooE rate-limiting based on Envoy's rate-limit service; + // supports Envoy's rate-limit service API. (reference here: https://github.com/lyft/ratelimit#configuration) + // Configure rate-limit *actions* here, which define how request characteristics get translated into + // descriptors used by the rate-limit service for rate-limiting. Configure rate-limit *descriptors* and + // their associated limits on the Gloo settings. + // Only one of `ratelimit_early` or `rate_limit_early_configs` can be set. + RatelimitEarly *ratelimit.RateLimitRouteExtension `protobuf:"bytes,142,opt,name=ratelimit_early,json=ratelimitEarly,proto3,oneof"` +} + +type RouteOptions_RateLimitEarlyConfigs struct { + // References to RateLimitConfig resources. This is used to configure the GlooE rate limit server. + // Only one of `ratelimit_early` or `rate_limit_early_configs` can be set. + RateLimitEarlyConfigs *ratelimit.RateLimitConfigRefs `protobuf:"bytes,143,opt,name=rate_limit_early_configs,json=rateLimitEarlyConfigs,proto3,oneof"` +} + +func (*RouteOptions_RatelimitEarly) isRouteOptions_RateLimitEarlyConfigType() {} + +func (*RouteOptions_RateLimitEarlyConfigs) isRouteOptions_RateLimitEarlyConfigType() {} + +type isRouteOptions_RateLimitConfigType interface { + isRouteOptions_RateLimitConfigType() +} + +type RouteOptions_Ratelimit struct { + // Enterprise-only: Partial config for GlooE rate-limiting based on Envoy's rate-limit service; + // supports Envoy's rate-limit service API. (reference here: https://github.com/lyft/ratelimit#configuration) + // Configure rate-limit *actions* here, which define how request characteristics get translated into + // descriptors used by the rate-limit service for rate-limiting. Configure rate-limit *descriptors* and + // their associated limits on the Gloo settings. + // Only one of `ratelimit` or `rate_limit_configs` can be set. + Ratelimit *ratelimit.RateLimitRouteExtension `protobuf:"bytes,140,opt,name=ratelimit,proto3,oneof"` +} + +type RouteOptions_RateLimitConfigs struct { + // References to RateLimitConfig resources. This is used to configure the GlooE rate limit server. + // Only one of `ratelimit` or `rate_limit_configs` can be set. + RateLimitConfigs *ratelimit.RateLimitConfigRefs `protobuf:"bytes,141,opt,name=rate_limit_configs,json=rateLimitConfigs,proto3,oneof"` +} + +func (*RouteOptions_Ratelimit) isRouteOptions_RateLimitConfigType() {} + +func (*RouteOptions_RateLimitConfigs) isRouteOptions_RateLimitConfigType() {} + +type isRouteOptions_RateLimitRegularConfigType interface { + isRouteOptions_RateLimitRegularConfigType() +} + +type RouteOptions_RatelimitRegular struct { + // Enterprise-only: Partial config for GlooE rate-limiting based on Envoy's rate-limit service; + // supports Envoy's rate-limit service API. (reference here: https://github.com/lyft/ratelimit#configuration) + // Configure rate-limit *actions* here, which define how request characteristics get translated into + // descriptors used by the rate-limit service for rate-limiting. Configure rate-limit *descriptors* and + // their associated limits on the Gloo settings. + // Only one of `ratelimit_early` or `rate_limit_early_configs` can be set. + RatelimitRegular *ratelimit.RateLimitRouteExtension `protobuf:"bytes,144,opt,name=ratelimit_regular,json=ratelimitRegular,proto3,oneof"` +} + +type RouteOptions_RateLimitRegularConfigs struct { + // References to RateLimitConfig resources. This is used to configure the GlooE rate limit server. + // Only one of `ratelimit_early` or `rate_limit_early_configs` can be set. + RateLimitRegularConfigs *ratelimit.RateLimitConfigRefs `protobuf:"bytes,145,opt,name=rate_limit_regular_configs,json=rateLimitRegularConfigs,proto3,oneof"` +} + +func (*RouteOptions_RatelimitRegular) isRouteOptions_RateLimitRegularConfigType() {} + +func (*RouteOptions_RateLimitRegularConfigs) isRouteOptions_RateLimitRegularConfigType() {} + +type isRouteOptions_JwtConfig interface { + isRouteOptions_JwtConfig() +} + +type RouteOptions_Jwt struct { + // Enterprise-only: Config for reading and verifying JWTs. Copy verifiable information from JWTs into other + // headers to make routing decisions or combine with RBAC for fine-grained access control. + // This has been deprecated in favor of staged jwt. The same configuration can be achieved through staged jwt + // using AfterExtAuth. + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/route_options.proto. + Jwt *jwt.RouteExtension `protobuf:"bytes,16,opt,name=jwt,proto3,oneof"` +} + +type RouteOptions_JwtStaged struct { + // Enterprise-only: Config for reading and verifying JWTs. Copy verifiable information from JWTs into other + // headers to make routing decisions or combine with RBAC for fine-grained access control. + // JWT configuration has stages "BeforeExtAuth" and "AfterExtAuth". BeforeExtAuth JWT + // validation runs before the external authentication service. This is useful when JWT + // is used in conjunction with other auth mechanisms specified in the [boolean expression Extauth API](https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto.sk/#authconfig). + // AfterExtAuth validation runs after external authentication service, which is useful for verifying + // JWTs obtained during extauth (e.g. oauth/oidc) + JwtStaged *jwt.JwtStagedRouteExtension `protobuf:"bytes,25,opt,name=jwt_staged,json=jwtStaged,proto3,oneof"` +} + +type RouteOptions_JwtProvidersStaged struct { + // Enterprise-only: Config for reading and verifying JWTs. Copy verifiable information from JWTs into other + // headers to make routing decisions or combine with RBAC for fine-grained access control. + // JWT configuration has stages "BeforeExtAuth" and "AfterExtAuth". BeforeExtAuth JWT + // validation runs before the external authentication service. This is useful when JWT + // is used in conjunction with other auth mechanisms specified in the [boolean expression Extauth API](https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto.sk/#authconfig). + // AfterExtAuth validation runs after external authentication service, which is useful for verifying + // JWTs obtained during extauth (e.g. oauth/oidc) + JwtProvidersStaged *jwt.JwtStagedRouteProvidersExtension `protobuf:"bytes,32,opt,name=jwt_providers_staged,json=jwtProvidersStaged,proto3,oneof"` +} + +func (*RouteOptions_Jwt) isRouteOptions_JwtConfig() {} + +func (*RouteOptions_JwtStaged) isRouteOptions_JwtConfig() {} + +func (*RouteOptions_JwtProvidersStaged) isRouteOptions_JwtConfig() {} + +// This is a 1:1 translation to the [Envoy API described here](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-msg-config-route-v3-routeaction-maxstreamduration) +type RouteOptions_MaxStreamDuration struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Specifies the maximum duration allowed for streams on the route. If not specified, the value + // from the [max_stream_duration](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#envoy-v3-api-field-config-core-v3-httpprotocoloptions-max-stream-duration) + // field in [HttpConnectionManager.common_http_protocol_options](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto#envoy-v3-api-field-extensions-filters-network-http-connection-manager-v3-httpconnectionmanager-common-http-protocol-options) + // is used. If this field is set explicitly to zero, any HttpConnectionManager max_stream_duration timeout will be disabled for this route. + MaxStreamDuration *durationpb.Duration `protobuf:"bytes,1,opt,name=max_stream_duration,json=maxStreamDuration,proto3" json:"max_stream_duration,omitempty"` + // If present, and the request contains a [grpc-timeout header](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md), use that value as the + // `max_stream_duration`, but limit the applied timeout to the maximum value specified here. + // If set to 0, the `grpc-timeout` header is used without modification. + GrpcTimeoutHeaderMax *durationpb.Duration `protobuf:"bytes,2,opt,name=grpc_timeout_header_max,json=grpcTimeoutHeaderMax,proto3" json:"grpc_timeout_header_max,omitempty"` + // If present, Envoy will adjust the timeout provided by the `grpc-timeout` header by + // subtracting the provided duration from the header. This is useful for allowing Envoy to set + // its global timeout to be less than that of the deadline imposed by the calling client, which + // makes it more likely that Envoy will handle the timeout instead of having the call canceled + // by the client. If, after applying the offset, the resulting timeout is zero or negative, + // the stream will timeout immediately. + GrpcTimeoutHeaderOffset *durationpb.Duration `protobuf:"bytes,3,opt,name=grpc_timeout_header_offset,json=grpcTimeoutHeaderOffset,proto3" json:"grpc_timeout_header_offset,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RouteOptions_MaxStreamDuration) Reset() { + *x = RouteOptions_MaxStreamDuration{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RouteOptions_MaxStreamDuration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RouteOptions_MaxStreamDuration) ProtoMessage() {} + +func (x *RouteOptions_MaxStreamDuration) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RouteOptions_MaxStreamDuration.ProtoReflect.Descriptor instead. +func (*RouteOptions_MaxStreamDuration) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *RouteOptions_MaxStreamDuration) GetMaxStreamDuration() *durationpb.Duration { + if x != nil { + return x.MaxStreamDuration + } + return nil +} + +func (x *RouteOptions_MaxStreamDuration) GetGrpcTimeoutHeaderMax() *durationpb.Duration { + if x != nil { + return x.GrpcTimeoutHeaderMax + } + return nil +} + +func (x *RouteOptions_MaxStreamDuration) GetGrpcTimeoutHeaderOffset() *durationpb.Duration { + if x != nil { + return x.GrpcTimeoutHeaderOffset + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_rawDesc = string([]byte{ + 0x0a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x59, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, + 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x2f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x3e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2f, 0x74, + 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4f, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x2f, 0x73, 0x68, + 0x61, 0x64, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4b, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x55, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x65, 0x72, 0x2f, 0x76, 0x33, 0x2f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, + 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x6f, 0x72, 0x73, 0x2f, 0x63, 0x6f, + 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x49, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x6c, 0x62, 0x68, 0x61, 0x73, 0x68, 0x2f, 0x6c, 0x62, 0x68, 0x61, 0x73, 0x68, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x5d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, + 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x5a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, + 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2f, 0x72, + 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4e, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x77, 0x61, 0x66, 0x2f, 0x77, 0x61, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4e, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x6a, 0x77, 0x74, 0x2f, 0x6a, 0x77, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x50, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x72, 0x62, 0x61, 0x63, 0x2f, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, + 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4e, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x64, + 0x6c, 0x70, 0x2f, 0x64, 0x6c, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x68, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, + 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2f, 0x76, 0x33, 0x2f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x64, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x63, 0x73, 0x72, 0x66, 0x2f, 0x76, + 0x33, 0x2f, 0x63, 0x73, 0x72, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x56, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, + 0x78, 0x74, 0x70, 0x72, 0x6f, 0x63, 0x2f, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x69, 0x2f, 0x61, 0x69, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0xb8, 0x1d, 0x0a, 0x0c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x62, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, 0x0a, 0x06, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x06, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x70, 0x72, + 0x65, 0x66, 0x69, 0x78, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x12, 0x43, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x07, 0x72, 0x65, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x4c, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x32, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x4c, 0x0a, + 0x09, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2e, 0x2e, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x69, 0x6e, 0x67, + 0x52, 0x09, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x12, 0x61, 0x0a, 0x13, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, + 0x6e, 0x69, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x69, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, + 0x0a, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x68, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, + 0x69, 0x74, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x68, 0x6f, 0x73, 0x74, + 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x61, 0x75, + 0x74, 0x6f, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x6f, 0x0a, + 0x17, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x70, 0x61, + 0x74, 0x68, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, + 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x52, + 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x6e, 0x64, 0x53, 0x75, 0x62, 0x73, + 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, 0x48, 0x00, 0x52, 0x14, 0x68, 0x6f, 0x73, 0x74, 0x52, 0x65, + 0x77, 0x72, 0x69, 0x74, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x4f, + 0x0a, 0x13, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x93, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x11, 0x68, 0x6f, + 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, + 0x52, 0x0a, 0x17, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x78, 0x5f, 0x66, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x65, 0x64, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x92, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x61, + 0x70, 0x70, 0x65, 0x6e, 0x64, 0x58, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x48, + 0x6f, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6f, 0x72, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, + 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x12, 0x4b, + 0x0a, 0x07, 0x6c, 0x62, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x32, 0x2e, 0x6c, 0x62, 0x68, 0x61, 0x73, 0x68, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x06, 0x6c, 0x62, 0x48, 0x61, 0x73, 0x68, 0x12, 0x58, 0x0a, 0x08, 0x75, + 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, + 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, + 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x75, 0x70, 0x67, + 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x59, 0x0a, 0x0f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x5f, 0x62, 0x61, 0x73, 0x69, 0x63, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, + 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x52, 0x0e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x61, 0x73, 0x69, 0x63, + 0x12, 0x63, 0x0a, 0x0f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x65, 0x61, + 0x72, 0x6c, 0x79, 0x18, 0x8e, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x72, 0x61, 0x74, + 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x45, 0x61, 0x72, 0x6c, 0x79, 0x12, 0x6f, 0x0a, 0x18, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x5f, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x73, 0x18, 0x8f, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x66, 0x73, 0x48, 0x01, 0x52, + 0x15, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x61, 0x72, 0x6c, 0x79, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x58, 0x0a, 0x09, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x8c, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x72, 0x61, 0x74, + 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x09, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x12, 0x64, 0x0a, 0x12, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x8d, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, + 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, + 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, + 0x66, 0x73, 0x48, 0x02, 0x52, 0x10, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x67, 0x0a, 0x11, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x18, 0x90, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x03, 0x52, 0x10, 0x72, + 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x12, + 0x73, 0x0a, 0x1a, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x65, + 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x91, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x66, 0x73, 0x48, 0x03, 0x52, 0x17, 0x72, 0x61, 0x74, + 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x73, 0x12, 0x34, 0x0a, 0x03, 0x77, 0x61, 0x66, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x61, 0x66, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x03, 0x77, 0x61, 0x66, 0x12, 0x40, 0x0a, 0x03, 0x6a, 0x77, + 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x42, 0x02, 0x18, 0x01, 0x48, 0x04, 0x52, 0x03, 0x6a, 0x77, 0x74, 0x12, 0x52, 0x0a, 0x0a, + 0x6a, 0x77, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x31, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4a, 0x77, 0x74, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x48, 0x04, 0x52, 0x09, 0x6a, 0x77, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x64, + 0x12, 0x6e, 0x0a, 0x14, 0x6a, 0x77, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x73, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, + 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4a, 0x77, 0x74, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x73, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x04, 0x52, 0x12, 0x6a, 0x77, + 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x64, + 0x12, 0x40, 0x0a, 0x04, 0x72, 0x62, 0x61, 0x63, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, + 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x04, 0x72, 0x62, + 0x61, 0x63, 0x12, 0x43, 0x0a, 0x07, 0x65, 0x78, 0x74, 0x61, 0x75, 0x74, 0x68, 0x18, 0x12, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, + 0x74, 0x41, 0x75, 0x74, 0x68, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, + 0x65, 0x78, 0x74, 0x61, 0x75, 0x74, 0x68, 0x12, 0x32, 0x0a, 0x03, 0x64, 0x6c, 0x70, 0x18, 0x14, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x64, 0x6c, 0x70, 0x12, 0x69, 0x0a, 0x10, 0x62, + 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, + 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x62, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x65, + 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x0e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x65, + 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x4d, 0x0a, 0x04, 0x63, 0x73, 0x72, 0x66, 0x18, 0x18, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x63, 0x73, 0x72, + 0x66, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x73, 0x72, 0x66, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, + 0x04, 0x63, 0x73, 0x72, 0x66, 0x12, 0x70, 0x0a, 0x16, 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, 0x5f, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, + 0x52, 0x15, 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x6f, + 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5b, 0x0a, + 0x0d, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x1b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, + 0x6e, 0x64, 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, 0x52, 0x0c, 0x72, 0x65, + 0x67, 0x65, 0x78, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x5c, 0x0a, 0x13, 0x6d, 0x61, + 0x78, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x61, 0x78, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x0c, 0x69, 0x64, 0x6c, 0x65, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x64, 0x6c, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x46, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, + 0x6f, 0x63, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x78, 0x74, 0x70, 0x72, + 0x6f, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x07, 0x65, 0x78, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x12, 0x36, + 0x0a, 0x02, 0x61, 0x69, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x69, 0x2e, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x52, 0x02, 0x61, 0x69, 0x1a, 0x59, 0x0a, 0x12, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x88, 0x02, 0x0a, 0x11, 0x4d, 0x61, 0x78, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x11, 0x6d, 0x61, 0x78, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x17, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, + 0x67, 0x72, 0x70, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x4d, 0x61, 0x78, 0x12, 0x56, 0x0a, 0x1a, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x67, 0x72, 0x70, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x13, 0x0a, 0x11, + 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x42, 0x1e, 0x0a, 0x1c, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, + 0x65, 0x61, 0x72, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x42, 0x18, 0x0a, 0x16, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x20, 0x0a, 0x1e, 0x72, + 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, + 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0c, 0x0a, + 0x0a, 0x6a, 0x77, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x42, 0xb8, 0xf5, 0x04, + 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_goTypes = []any{ + (*RouteOptions)(nil), // 0: gloo.solo.io.RouteOptions + nil, // 1: gloo.solo.io.RouteOptions.EnvoyMetadataEntry + (*RouteOptions_MaxStreamDuration)(nil), // 2: gloo.solo.io.RouteOptions.MaxStreamDuration + (*transformation.Transformations)(nil), // 3: transformation.options.gloo.solo.io.Transformations + (*faultinjection.RouteFaults)(nil), // 4: fault.options.gloo.solo.io.RouteFaults + (*wrapperspb.StringValue)(nil), // 5: google.protobuf.StringValue + (*durationpb.Duration)(nil), // 6: google.protobuf.Duration + (*retries.RetryPolicy)(nil), // 7: retries.options.gloo.solo.io.RetryPolicy + (*Extensions)(nil), // 8: gloo.solo.io.Extensions + (*tracing.RouteTracingSettings)(nil), // 9: tracing.options.gloo.solo.io.RouteTracingSettings + (*shadowing.RouteShadowing)(nil), // 10: shadowing.options.gloo.solo.io.RouteShadowing + (*headers.HeaderManipulation)(nil), // 11: headers.options.gloo.solo.io.HeaderManipulation + (*wrapperspb.BoolValue)(nil), // 12: google.protobuf.BoolValue + (*v32.RegexMatchAndSubstitute)(nil), // 13: solo.io.envoy.type.matcher.v3.RegexMatchAndSubstitute + (*cors.CorsPolicy)(nil), // 14: cors.options.gloo.solo.io.CorsPolicy + (*lbhash.RouteActionHashConfig)(nil), // 15: lbhash.options.gloo.solo.io.RouteActionHashConfig + (*protocol_upgrade.ProtocolUpgradeConfig)(nil), // 16: protocol_upgrade.options.gloo.solo.io.ProtocolUpgradeConfig + (*ratelimit.IngressRateLimit)(nil), // 17: ratelimit.options.gloo.solo.io.IngressRateLimit + (*ratelimit.RateLimitRouteExtension)(nil), // 18: ratelimit.options.gloo.solo.io.RateLimitRouteExtension + (*ratelimit.RateLimitConfigRefs)(nil), // 19: ratelimit.options.gloo.solo.io.RateLimitConfigRefs + (*waf.Settings)(nil), // 20: waf.options.gloo.solo.io.Settings + (*jwt.RouteExtension)(nil), // 21: jwt.options.gloo.solo.io.RouteExtension + (*jwt.JwtStagedRouteExtension)(nil), // 22: jwt.options.gloo.solo.io.JwtStagedRouteExtension + (*jwt.JwtStagedRouteProvidersExtension)(nil), // 23: jwt.options.gloo.solo.io.JwtStagedRouteProvidersExtension + (*rbac.ExtensionSettings)(nil), // 24: rbac.options.gloo.solo.io.ExtensionSettings + (*v1.ExtAuthExtension)(nil), // 25: enterprise.gloo.solo.io.ExtAuthExtension + (*dlp.Config)(nil), // 26: dlp.options.gloo.solo.io.Config + (*v3.BufferPerRoute)(nil), // 27: solo.io.envoy.extensions.filters.http.buffer.v3.BufferPerRoute + (*v31.CsrfPolicy)(nil), // 28: solo.io.envoy.extensions.filters.http.csrf.v3.CsrfPolicy + (*transformation.TransformationStages)(nil), // 29: transformation.options.gloo.solo.io.TransformationStages + (*extproc.RouteSettings)(nil), // 30: extproc.options.gloo.solo.io.RouteSettings + (*ai.RouteSettings)(nil), // 31: ai.options.gloo.solo.io.RouteSettings + (*structpb.Struct)(nil), // 32: google.protobuf.Struct +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_depIdxs = []int32{ + 3, // 0: gloo.solo.io.RouteOptions.transformations:type_name -> transformation.options.gloo.solo.io.Transformations + 4, // 1: gloo.solo.io.RouteOptions.faults:type_name -> fault.options.gloo.solo.io.RouteFaults + 5, // 2: gloo.solo.io.RouteOptions.prefix_rewrite:type_name -> google.protobuf.StringValue + 6, // 3: gloo.solo.io.RouteOptions.timeout:type_name -> google.protobuf.Duration + 7, // 4: gloo.solo.io.RouteOptions.retries:type_name -> retries.options.gloo.solo.io.RetryPolicy + 8, // 5: gloo.solo.io.RouteOptions.extensions:type_name -> gloo.solo.io.Extensions + 9, // 6: gloo.solo.io.RouteOptions.tracing:type_name -> tracing.options.gloo.solo.io.RouteTracingSettings + 10, // 7: gloo.solo.io.RouteOptions.shadowing:type_name -> shadowing.options.gloo.solo.io.RouteShadowing + 11, // 8: gloo.solo.io.RouteOptions.header_manipulation:type_name -> headers.options.gloo.solo.io.HeaderManipulation + 12, // 9: gloo.solo.io.RouteOptions.auto_host_rewrite:type_name -> google.protobuf.BoolValue + 13, // 10: gloo.solo.io.RouteOptions.host_rewrite_path_regex:type_name -> solo.io.envoy.type.matcher.v3.RegexMatchAndSubstitute + 5, // 11: gloo.solo.io.RouteOptions.host_rewrite_header:type_name -> google.protobuf.StringValue + 12, // 12: gloo.solo.io.RouteOptions.append_x_forwarded_host:type_name -> google.protobuf.BoolValue + 14, // 13: gloo.solo.io.RouteOptions.cors:type_name -> cors.options.gloo.solo.io.CorsPolicy + 15, // 14: gloo.solo.io.RouteOptions.lb_hash:type_name -> lbhash.options.gloo.solo.io.RouteActionHashConfig + 16, // 15: gloo.solo.io.RouteOptions.upgrades:type_name -> protocol_upgrade.options.gloo.solo.io.ProtocolUpgradeConfig + 17, // 16: gloo.solo.io.RouteOptions.ratelimit_basic:type_name -> ratelimit.options.gloo.solo.io.IngressRateLimit + 18, // 17: gloo.solo.io.RouteOptions.ratelimit_early:type_name -> ratelimit.options.gloo.solo.io.RateLimitRouteExtension + 19, // 18: gloo.solo.io.RouteOptions.rate_limit_early_configs:type_name -> ratelimit.options.gloo.solo.io.RateLimitConfigRefs + 18, // 19: gloo.solo.io.RouteOptions.ratelimit:type_name -> ratelimit.options.gloo.solo.io.RateLimitRouteExtension + 19, // 20: gloo.solo.io.RouteOptions.rate_limit_configs:type_name -> ratelimit.options.gloo.solo.io.RateLimitConfigRefs + 18, // 21: gloo.solo.io.RouteOptions.ratelimit_regular:type_name -> ratelimit.options.gloo.solo.io.RateLimitRouteExtension + 19, // 22: gloo.solo.io.RouteOptions.rate_limit_regular_configs:type_name -> ratelimit.options.gloo.solo.io.RateLimitConfigRefs + 20, // 23: gloo.solo.io.RouteOptions.waf:type_name -> waf.options.gloo.solo.io.Settings + 21, // 24: gloo.solo.io.RouteOptions.jwt:type_name -> jwt.options.gloo.solo.io.RouteExtension + 22, // 25: gloo.solo.io.RouteOptions.jwt_staged:type_name -> jwt.options.gloo.solo.io.JwtStagedRouteExtension + 23, // 26: gloo.solo.io.RouteOptions.jwt_providers_staged:type_name -> jwt.options.gloo.solo.io.JwtStagedRouteProvidersExtension + 24, // 27: gloo.solo.io.RouteOptions.rbac:type_name -> rbac.options.gloo.solo.io.ExtensionSettings + 25, // 28: gloo.solo.io.RouteOptions.extauth:type_name -> enterprise.gloo.solo.io.ExtAuthExtension + 26, // 29: gloo.solo.io.RouteOptions.dlp:type_name -> dlp.options.gloo.solo.io.Config + 27, // 30: gloo.solo.io.RouteOptions.buffer_per_route:type_name -> solo.io.envoy.extensions.filters.http.buffer.v3.BufferPerRoute + 28, // 31: gloo.solo.io.RouteOptions.csrf:type_name -> solo.io.envoy.extensions.filters.http.csrf.v3.CsrfPolicy + 29, // 32: gloo.solo.io.RouteOptions.staged_transformations:type_name -> transformation.options.gloo.solo.io.TransformationStages + 1, // 33: gloo.solo.io.RouteOptions.envoy_metadata:type_name -> gloo.solo.io.RouteOptions.EnvoyMetadataEntry + 13, // 34: gloo.solo.io.RouteOptions.regex_rewrite:type_name -> solo.io.envoy.type.matcher.v3.RegexMatchAndSubstitute + 2, // 35: gloo.solo.io.RouteOptions.max_stream_duration:type_name -> gloo.solo.io.RouteOptions.MaxStreamDuration + 6, // 36: gloo.solo.io.RouteOptions.idle_timeout:type_name -> google.protobuf.Duration + 30, // 37: gloo.solo.io.RouteOptions.ext_proc:type_name -> extproc.options.gloo.solo.io.RouteSettings + 31, // 38: gloo.solo.io.RouteOptions.ai:type_name -> ai.options.gloo.solo.io.RouteSettings + 32, // 39: gloo.solo.io.RouteOptions.EnvoyMetadataEntry.value:type_name -> google.protobuf.Struct + 6, // 40: gloo.solo.io.RouteOptions.MaxStreamDuration.max_stream_duration:type_name -> google.protobuf.Duration + 6, // 41: gloo.solo.io.RouteOptions.MaxStreamDuration.grpc_timeout_header_max:type_name -> google.protobuf.Duration + 6, // 42: gloo.solo.io.RouteOptions.MaxStreamDuration.grpc_timeout_header_offset:type_name -> google.protobuf.Duration + 43, // [43:43] is the sub-list for method output_type + 43, // [43:43] is the sub-list for method input_type + 43, // [43:43] is the sub-list for extension type_name + 43, // [43:43] is the sub-list for extension extendee + 0, // [0:43] is the sub-list for field type_name +} + +func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_init() } +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_init() + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_msgTypes[0].OneofWrappers = []any{ + (*RouteOptions_HostRewrite)(nil), + (*RouteOptions_AutoHostRewrite)(nil), + (*RouteOptions_HostRewritePathRegex)(nil), + (*RouteOptions_HostRewriteHeader)(nil), + (*RouteOptions_RatelimitEarly)(nil), + (*RouteOptions_RateLimitEarlyConfigs)(nil), + (*RouteOptions_Ratelimit)(nil), + (*RouteOptions_RateLimitConfigs)(nil), + (*RouteOptions_RatelimitRegular)(nil), + (*RouteOptions_RateLimitRegularConfigs)(nil), + (*RouteOptions_Jwt)(nil), + (*RouteOptions_JwtStaged)(nil), + (*RouteOptions_JwtProvidersStaged)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_rawDesc)), + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_route_options_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/route_options.pb.hash.go b/pkg/api/gloo.solo.io/v1/route_options.pb.hash.go new file mode 100644 index 000000000..6e99cc2b4 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/route_options.pb.hash.go @@ -0,0 +1,979 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/route_options.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RouteOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.RouteOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTransformations()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Transformations")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTransformations(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Transformations")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFaults()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Faults")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFaults(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Faults")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPrefixRewrite()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PrefixRewrite")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPrefixRewrite(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PrefixRewrite")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRetries()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Retries")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetries(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Retries")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtensions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtensions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTracing()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Tracing")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTracing(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Tracing")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetShadowing()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Shadowing")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetShadowing(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Shadowing")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHeaderManipulation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderManipulation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaderManipulation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HeaderManipulation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAppendXForwardedHost()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AppendXForwardedHost")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAppendXForwardedHost(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AppendXForwardedHost")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCors()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCors(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetLbHash()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LbHash")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLbHash(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LbHash")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetUpgrades() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetRatelimitBasic()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RatelimitBasic")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRatelimitBasic(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RatelimitBasic")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetWaf()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Waf")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWaf(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Waf")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRbac()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Rbac")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRbac(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Rbac")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtauth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extauth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtauth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Extauth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDlp()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Dlp")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDlp(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Dlp")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetBufferPerRoute()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BufferPerRoute")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBufferPerRoute(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BufferPerRoute")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCsrf()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Csrf")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCsrf(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Csrf")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetStagedTransformations()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("StagedTransformations")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStagedTransformations(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("StagedTransformations")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetEnvoyMetadata() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetRegexRewrite()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RegexRewrite")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRegexRewrite(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RegexRewrite")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxStreamDuration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxStreamDuration")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxStreamDuration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxStreamDuration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetIdleTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIdleTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtProc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ExtProc")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtProc(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ExtProc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAi()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ai")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAi(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Ai")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.HostRewriteType.(type) { + + case *RouteOptions_HostRewrite: + + if _, err = hasher.Write([]byte(m.GetHostRewrite())); err != nil { + return 0, err + } + + case *RouteOptions_AutoHostRewrite: + + if h, ok := interface{}(m.GetAutoHostRewrite()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AutoHostRewrite")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAutoHostRewrite(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AutoHostRewrite")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteOptions_HostRewritePathRegex: + + if h, ok := interface{}(m.GetHostRewritePathRegex()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HostRewritePathRegex")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHostRewritePathRegex(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HostRewritePathRegex")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteOptions_HostRewriteHeader: + + if h, ok := interface{}(m.GetHostRewriteHeader()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HostRewriteHeader")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHostRewriteHeader(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HostRewriteHeader")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.RateLimitEarlyConfigType.(type) { + + case *RouteOptions_RatelimitEarly: + + if h, ok := interface{}(m.GetRatelimitEarly()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RatelimitEarly")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRatelimitEarly(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RatelimitEarly")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteOptions_RateLimitEarlyConfigs: + + if h, ok := interface{}(m.GetRateLimitEarlyConfigs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimitEarlyConfigs")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRateLimitEarlyConfigs(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RateLimitEarlyConfigs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.RateLimitConfigType.(type) { + + case *RouteOptions_Ratelimit: + + if h, ok := interface{}(m.GetRatelimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ratelimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRatelimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Ratelimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteOptions_RateLimitConfigs: + + if h, ok := interface{}(m.GetRateLimitConfigs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimitConfigs")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRateLimitConfigs(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RateLimitConfigs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.RateLimitRegularConfigType.(type) { + + case *RouteOptions_RatelimitRegular: + + if h, ok := interface{}(m.GetRatelimitRegular()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RatelimitRegular")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRatelimitRegular(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RatelimitRegular")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteOptions_RateLimitRegularConfigs: + + if h, ok := interface{}(m.GetRateLimitRegularConfigs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimitRegularConfigs")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRateLimitRegularConfigs(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RateLimitRegularConfigs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.JwtConfig.(type) { + + case *RouteOptions_Jwt: + + if h, ok := interface{}(m.GetJwt()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJwt(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteOptions_JwtStaged: + + if h, ok := interface{}(m.GetJwtStaged()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("JwtStaged")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJwtStaged(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("JwtStaged")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteOptions_JwtProvidersStaged: + + if h, ok := interface{}(m.GetJwtProvidersStaged()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("JwtProvidersStaged")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJwtProvidersStaged(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("JwtProvidersStaged")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RouteOptions_MaxStreamDuration) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.RouteOptions_MaxStreamDuration")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxStreamDuration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxStreamDuration")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxStreamDuration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxStreamDuration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetGrpcTimeoutHeaderMax()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcTimeoutHeaderMax")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcTimeoutHeaderMax(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcTimeoutHeaderMax")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetGrpcTimeoutHeaderOffset()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcTimeoutHeaderOffset")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcTimeoutHeaderOffset(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcTimeoutHeaderOffset")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/route_options.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/route_options.pb.uniquehash.go new file mode 100644 index 000000000..379f4a478 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/route_options.pb.uniquehash.go @@ -0,0 +1,991 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/route_options.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.RouteOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTransformations()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Transformations")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTransformations(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Transformations")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFaults()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Faults")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFaults(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Faults")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPrefixRewrite()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PrefixRewrite")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPrefixRewrite(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PrefixRewrite")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Timeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRetries()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Retries")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetries(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Retries")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtensions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtensions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTracing()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Tracing")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTracing(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Tracing")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetShadowing()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Shadowing")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetShadowing(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Shadowing")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHeaderManipulation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderManipulation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaderManipulation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HeaderManipulation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAppendXForwardedHost()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AppendXForwardedHost")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAppendXForwardedHost(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AppendXForwardedHost")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCors()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCors(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetLbHash()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LbHash")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLbHash(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LbHash")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Upgrades")); err != nil { + return 0, err + } + for i, v := range m.GetUpgrades() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetRatelimitBasic()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RatelimitBasic")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRatelimitBasic(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RatelimitBasic")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetWaf()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Waf")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWaf(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Waf")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRbac()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Rbac")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRbac(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Rbac")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtauth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extauth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtauth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Extauth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDlp()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Dlp")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDlp(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Dlp")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetBufferPerRoute()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BufferPerRoute")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBufferPerRoute(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BufferPerRoute")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCsrf()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Csrf")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCsrf(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Csrf")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetStagedTransformations()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("StagedTransformations")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStagedTransformations(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("StagedTransformations")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetEnvoyMetadata() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetRegexRewrite()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RegexRewrite")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRegexRewrite(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RegexRewrite")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxStreamDuration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxStreamDuration")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxStreamDuration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxStreamDuration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetIdleTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIdleTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IdleTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtProc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ExtProc")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtProc(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ExtProc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAi()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ai")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAi(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Ai")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.HostRewriteType.(type) { + + case *RouteOptions_HostRewrite: + + if _, err = hasher.Write([]byte("HostRewrite")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHostRewrite())); err != nil { + return 0, err + } + + case *RouteOptions_AutoHostRewrite: + + if h, ok := interface{}(m.GetAutoHostRewrite()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AutoHostRewrite")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAutoHostRewrite(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AutoHostRewrite")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteOptions_HostRewritePathRegex: + + if h, ok := interface{}(m.GetHostRewritePathRegex()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HostRewritePathRegex")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHostRewritePathRegex(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HostRewritePathRegex")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteOptions_HostRewriteHeader: + + if h, ok := interface{}(m.GetHostRewriteHeader()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HostRewriteHeader")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHostRewriteHeader(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HostRewriteHeader")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.RateLimitEarlyConfigType.(type) { + + case *RouteOptions_RatelimitEarly: + + if h, ok := interface{}(m.GetRatelimitEarly()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RatelimitEarly")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRatelimitEarly(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RatelimitEarly")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteOptions_RateLimitEarlyConfigs: + + if h, ok := interface{}(m.GetRateLimitEarlyConfigs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimitEarlyConfigs")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRateLimitEarlyConfigs(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RateLimitEarlyConfigs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.RateLimitConfigType.(type) { + + case *RouteOptions_Ratelimit: + + if h, ok := interface{}(m.GetRatelimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ratelimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRatelimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Ratelimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteOptions_RateLimitConfigs: + + if h, ok := interface{}(m.GetRateLimitConfigs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimitConfigs")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRateLimitConfigs(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RateLimitConfigs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.RateLimitRegularConfigType.(type) { + + case *RouteOptions_RatelimitRegular: + + if h, ok := interface{}(m.GetRatelimitRegular()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RatelimitRegular")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRatelimitRegular(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RatelimitRegular")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteOptions_RateLimitRegularConfigs: + + if h, ok := interface{}(m.GetRateLimitRegularConfigs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimitRegularConfigs")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRateLimitRegularConfigs(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RateLimitRegularConfigs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.JwtConfig.(type) { + + case *RouteOptions_Jwt: + + if h, ok := interface{}(m.GetJwt()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJwt(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteOptions_JwtStaged: + + if h, ok := interface{}(m.GetJwtStaged()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("JwtStaged")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJwtStaged(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("JwtStaged")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *RouteOptions_JwtProvidersStaged: + + if h, ok := interface{}(m.GetJwtProvidersStaged()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("JwtProvidersStaged")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJwtProvidersStaged(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("JwtProvidersStaged")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RouteOptions_MaxStreamDuration) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.RouteOptions_MaxStreamDuration")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMaxStreamDuration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxStreamDuration")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxStreamDuration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxStreamDuration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetGrpcTimeoutHeaderMax()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcTimeoutHeaderMax")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcTimeoutHeaderMax(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcTimeoutHeaderMax")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetGrpcTimeoutHeaderOffset()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrpcTimeoutHeaderOffset")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrpcTimeoutHeaderOffset(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrpcTimeoutHeaderOffset")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/secret.pb.clone.go b/pkg/api/gloo.solo.io/v1/secret.pb.clone.go new file mode 100644 index 000000000..d173dbf52 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/secret.pb.clone.go @@ -0,0 +1,266 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/secret.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *Secret) Clone() proto.Message { + var target *Secret + if m == nil { + return target + } + target = &Secret{} + + if h, ok := interface{}(m.GetMetadata()).(clone.Cloner); ok { + target.Metadata = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.Metadata) + } else { + target.Metadata = proto.Clone(m.GetMetadata()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.Metadata) + } + + switch m.Kind.(type) { + + case *Secret_Aws: + + if h, ok := interface{}(m.GetAws()).(clone.Cloner); ok { + target.Kind = &Secret_Aws{ + Aws: h.Clone().(*AwsSecret), + } + } else { + target.Kind = &Secret_Aws{ + Aws: proto.Clone(m.GetAws()).(*AwsSecret), + } + } + + case *Secret_Azure: + + if h, ok := interface{}(m.GetAzure()).(clone.Cloner); ok { + target.Kind = &Secret_Azure{ + Azure: h.Clone().(*AzureSecret), + } + } else { + target.Kind = &Secret_Azure{ + Azure: proto.Clone(m.GetAzure()).(*AzureSecret), + } + } + + case *Secret_Tls: + + if h, ok := interface{}(m.GetTls()).(clone.Cloner); ok { + target.Kind = &Secret_Tls{ + Tls: h.Clone().(*TlsSecret), + } + } else { + target.Kind = &Secret_Tls{ + Tls: proto.Clone(m.GetTls()).(*TlsSecret), + } + } + + case *Secret_Oauth: + + if h, ok := interface{}(m.GetOauth()).(clone.Cloner); ok { + target.Kind = &Secret_Oauth{ + Oauth: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1.OauthSecret), + } + } else { + target.Kind = &Secret_Oauth{ + Oauth: proto.Clone(m.GetOauth()).(*github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1.OauthSecret), + } + } + + case *Secret_ApiKey: + + if h, ok := interface{}(m.GetApiKey()).(clone.Cloner); ok { + target.Kind = &Secret_ApiKey{ + ApiKey: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1.ApiKey), + } + } else { + target.Kind = &Secret_ApiKey{ + ApiKey: proto.Clone(m.GetApiKey()).(*github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1.ApiKey), + } + } + + case *Secret_Header: + + if h, ok := interface{}(m.GetHeader()).(clone.Cloner); ok { + target.Kind = &Secret_Header{ + Header: h.Clone().(*HeaderSecret), + } + } else { + target.Kind = &Secret_Header{ + Header: proto.Clone(m.GetHeader()).(*HeaderSecret), + } + } + + case *Secret_Credentials: + + if h, ok := interface{}(m.GetCredentials()).(clone.Cloner); ok { + target.Kind = &Secret_Credentials{ + Credentials: h.Clone().(*AccountCredentialsSecret), + } + } else { + target.Kind = &Secret_Credentials{ + Credentials: proto.Clone(m.GetCredentials()).(*AccountCredentialsSecret), + } + } + + case *Secret_Encryption: + + if h, ok := interface{}(m.GetEncryption()).(clone.Cloner); ok { + target.Kind = &Secret_Encryption{ + Encryption: h.Clone().(*EncryptionKeySecret), + } + } else { + target.Kind = &Secret_Encryption{ + Encryption: proto.Clone(m.GetEncryption()).(*EncryptionKeySecret), + } + } + + case *Secret_Extensions: + + if h, ok := interface{}(m.GetExtensions()).(clone.Cloner); ok { + target.Kind = &Secret_Extensions{ + Extensions: h.Clone().(*Extensions), + } + } else { + target.Kind = &Secret_Extensions{ + Extensions: proto.Clone(m.GetExtensions()).(*Extensions), + } + } + + } + + return target +} + +// Clone function +func (m *AwsSecret) Clone() proto.Message { + var target *AwsSecret + if m == nil { + return target + } + target = &AwsSecret{} + + target.AccessKey = m.GetAccessKey() + + target.SecretKey = m.GetSecretKey() + + target.SessionToken = m.GetSessionToken() + + return target +} + +// Clone function +func (m *AzureSecret) Clone() proto.Message { + var target *AzureSecret + if m == nil { + return target + } + target = &AzureSecret{} + + if m.GetApiKeys() != nil { + target.ApiKeys = make(map[string]string, len(m.GetApiKeys())) + for k, v := range m.GetApiKeys() { + + target.ApiKeys[k] = v + + } + } + + return target +} + +// Clone function +func (m *TlsSecret) Clone() proto.Message { + var target *TlsSecret + if m == nil { + return target + } + target = &TlsSecret{} + + target.CertChain = m.GetCertChain() + + target.PrivateKey = m.GetPrivateKey() + + target.RootCa = m.GetRootCa() + + if m.GetOcspStaple() != nil { + target.OcspStaple = make([]byte, len(m.GetOcspStaple())) + copy(target.OcspStaple, m.GetOcspStaple()) + } + + return target +} + +// Clone function +func (m *HeaderSecret) Clone() proto.Message { + var target *HeaderSecret + if m == nil { + return target + } + target = &HeaderSecret{} + + if m.GetHeaders() != nil { + target.Headers = make(map[string]string, len(m.GetHeaders())) + for k, v := range m.GetHeaders() { + + target.Headers[k] = v + + } + } + + return target +} + +// Clone function +func (m *AccountCredentialsSecret) Clone() proto.Message { + var target *AccountCredentialsSecret + if m == nil { + return target + } + target = &AccountCredentialsSecret{} + + target.Username = m.GetUsername() + + target.Password = m.GetPassword() + + return target +} + +// Clone function +func (m *EncryptionKeySecret) Clone() proto.Message { + var target *EncryptionKeySecret + if m == nil { + return target + } + target = &EncryptionKeySecret{} + + target.Key = m.GetKey() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/secret.pb.equal.go b/pkg/api/gloo.solo.io/v1/secret.pb.equal.go index 226f18e6f..e0d600c8c 100644 --- a/pkg/api/gloo.solo.io/v1/secret.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/secret.pb.equal.go @@ -59,6 +59,9 @@ func (m *Secret) Equal(that interface{}) bool { switch m.Kind.(type) { case *Secret_Aws: + if _, ok := target.Kind.(*Secret_Aws); !ok { + return false + } if h, ok := interface{}(m.GetAws()).(equality.Equalizer); ok { if !h.Equal(target.GetAws()) { @@ -71,6 +74,9 @@ func (m *Secret) Equal(that interface{}) bool { } case *Secret_Azure: + if _, ok := target.Kind.(*Secret_Azure); !ok { + return false + } if h, ok := interface{}(m.GetAzure()).(equality.Equalizer); ok { if !h.Equal(target.GetAzure()) { @@ -83,6 +89,9 @@ func (m *Secret) Equal(that interface{}) bool { } case *Secret_Tls: + if _, ok := target.Kind.(*Secret_Tls); !ok { + return false + } if h, ok := interface{}(m.GetTls()).(equality.Equalizer); ok { if !h.Equal(target.GetTls()) { @@ -95,6 +104,9 @@ func (m *Secret) Equal(that interface{}) bool { } case *Secret_Oauth: + if _, ok := target.Kind.(*Secret_Oauth); !ok { + return false + } if h, ok := interface{}(m.GetOauth()).(equality.Equalizer); ok { if !h.Equal(target.GetOauth()) { @@ -107,6 +119,9 @@ func (m *Secret) Equal(that interface{}) bool { } case *Secret_ApiKey: + if _, ok := target.Kind.(*Secret_ApiKey); !ok { + return false + } if h, ok := interface{}(m.GetApiKey()).(equality.Equalizer); ok { if !h.Equal(target.GetApiKey()) { @@ -119,6 +134,9 @@ func (m *Secret) Equal(that interface{}) bool { } case *Secret_Header: + if _, ok := target.Kind.(*Secret_Header); !ok { + return false + } if h, ok := interface{}(m.GetHeader()).(equality.Equalizer); ok { if !h.Equal(target.GetHeader()) { @@ -130,7 +148,40 @@ func (m *Secret) Equal(that interface{}) bool { } } + case *Secret_Credentials: + if _, ok := target.Kind.(*Secret_Credentials); !ok { + return false + } + + if h, ok := interface{}(m.GetCredentials()).(equality.Equalizer); ok { + if !h.Equal(target.GetCredentials()) { + return false + } + } else { + if !proto.Equal(m.GetCredentials(), target.GetCredentials()) { + return false + } + } + + case *Secret_Encryption: + if _, ok := target.Kind.(*Secret_Encryption); !ok { + return false + } + + if h, ok := interface{}(m.GetEncryption()).(equality.Equalizer); ok { + if !h.Equal(target.GetEncryption()) { + return false + } + } else { + if !proto.Equal(m.GetEncryption(), target.GetEncryption()) { + return false + } + } + case *Secret_Extensions: + if _, ok := target.Kind.(*Secret_Extensions); !ok { + return false + } if h, ok := interface{}(m.GetExtensions()).(equality.Equalizer); ok { if !h.Equal(target.GetExtensions()) { @@ -142,6 +193,11 @@ func (m *Secret) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.Kind != target.Kind { + return false + } } return true @@ -251,6 +307,10 @@ func (m *TlsSecret) Equal(that interface{}) bool { return false } + if bytes.Compare(m.GetOcspStaple(), target.GetOcspStaple()) != 0 { + return false + } + return true } @@ -288,3 +348,63 @@ func (m *HeaderSecret) Equal(that interface{}) bool { return true } + +// Equal function +func (m *AccountCredentialsSecret) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*AccountCredentialsSecret) + if !ok { + that2, ok := that.(AccountCredentialsSecret) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetUsername(), target.GetUsername()) != 0 { + return false + } + + if strings.Compare(m.GetPassword(), target.GetPassword()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *EncryptionKeySecret) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*EncryptionKeySecret) + if !ok { + that2, ok := that.(EncryptionKeySecret) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetKey(), target.GetKey()) != 0 { + return false + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/secret.pb.go b/pkg/api/gloo.solo.io/v1/secret.pb.go index 957c9978e..add31ebb8 100644 --- a/pkg/api/gloo.solo.io/v1/secret.pb.go +++ b/pkg/api/gloo.solo.io/v1/secret.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/secret.proto @@ -9,8 +9,8 @@ package v1 import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" v1 "github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1" core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" @@ -25,46 +25,41 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -// -//Certain features such as the AWS Lambda option require the use of secrets for authentication, configuration of SSL Certificates, and other data that should not be stored in plaintext configuration. +// Certain features such as the AWS Lambda option require the use of secrets for authentication, configuration of SSL Certificates, and other data that should not be stored in plaintext configuration. // -//Gloo runs an independent (goroutine) controller to monitor secrets. Secrets are stored in their own secret storage layer. Gloo can monitor secrets stored in the following secret storage services: +// Gloo runs an independent (goroutine) controller to monitor secrets. Secrets are stored in their own secret storage layer. Gloo can monitor secrets stored in the following secret storage services: // -//- Kubernetes Secrets -//- Hashicorp Vault -//- Plaintext files (recommended only for testing) -//- Secrets must adhere to a structure, specified by the option that requires them. +// - Kubernetes Secrets +// - Hashicorp Vault +// - Plaintext files (recommended only for testing) +// - Secrets must adhere to a structure, specified by the option that requires them. // -//Gloo's secret backend can be configured in Gloo's bootstrap options +// Gloo's secret backend can be configured in Gloo's bootstrap options type Secret struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Kind: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Kind: + // // *Secret_Aws // *Secret_Azure // *Secret_Tls // *Secret_Oauth // *Secret_ApiKey // *Secret_Header + // *Secret_Credentials + // *Secret_Encryption // *Secret_Extensions Kind isSecret_Kind `protobuf_oneof:"kind"` // Metadata contains the object metadata for this resource - Metadata *core.Metadata `protobuf:"bytes,7,opt,name=metadata,proto3" json:"metadata,omitempty"` + Metadata *core.Metadata `protobuf:"bytes,7,opt,name=metadata,proto3" json:"metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Secret) Reset() { *x = Secret{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Secret) String() string { @@ -75,7 +70,7 @@ func (*Secret) ProtoMessage() {} func (x *Secret) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -90,58 +85,90 @@ func (*Secret) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDescGZIP(), []int{0} } -func (m *Secret) GetKind() isSecret_Kind { - if m != nil { - return m.Kind +func (x *Secret) GetKind() isSecret_Kind { + if x != nil { + return x.Kind } return nil } func (x *Secret) GetAws() *AwsSecret { - if x, ok := x.GetKind().(*Secret_Aws); ok { - return x.Aws + if x != nil { + if x, ok := x.Kind.(*Secret_Aws); ok { + return x.Aws + } } return nil } func (x *Secret) GetAzure() *AzureSecret { - if x, ok := x.GetKind().(*Secret_Azure); ok { - return x.Azure + if x != nil { + if x, ok := x.Kind.(*Secret_Azure); ok { + return x.Azure + } } return nil } func (x *Secret) GetTls() *TlsSecret { - if x, ok := x.GetKind().(*Secret_Tls); ok { - return x.Tls + if x != nil { + if x, ok := x.Kind.(*Secret_Tls); ok { + return x.Tls + } } return nil } func (x *Secret) GetOauth() *v1.OauthSecret { - if x, ok := x.GetKind().(*Secret_Oauth); ok { - return x.Oauth + if x != nil { + if x, ok := x.Kind.(*Secret_Oauth); ok { + return x.Oauth + } } return nil } -func (x *Secret) GetApiKey() *v1.ApiKeySecret { - if x, ok := x.GetKind().(*Secret_ApiKey); ok { - return x.ApiKey +func (x *Secret) GetApiKey() *v1.ApiKey { + if x != nil { + if x, ok := x.Kind.(*Secret_ApiKey); ok { + return x.ApiKey + } } return nil } func (x *Secret) GetHeader() *HeaderSecret { - if x, ok := x.GetKind().(*Secret_Header); ok { - return x.Header + if x != nil { + if x, ok := x.Kind.(*Secret_Header); ok { + return x.Header + } + } + return nil +} + +func (x *Secret) GetCredentials() *AccountCredentialsSecret { + if x != nil { + if x, ok := x.Kind.(*Secret_Credentials); ok { + return x.Credentials + } + } + return nil +} + +func (x *Secret) GetEncryption() *EncryptionKeySecret { + if x != nil { + if x, ok := x.Kind.(*Secret_Encryption); ok { + return x.Encryption + } } return nil } func (x *Secret) GetExtensions() *Extensions { - if x, ok := x.GetKind().(*Secret_Extensions); ok { - return x.Extensions + if x != nil { + if x, ok := x.Kind.(*Secret_Extensions); ok { + return x.Extensions + } } return nil } @@ -179,7 +206,7 @@ type Secret_Oauth struct { type Secret_ApiKey struct { // Enterprise-only: ApiKey secret configuration - ApiKey *v1.ApiKeySecret `protobuf:"bytes,6,opt,name=api_key,json=apiKey,proto3,oneof"` + ApiKey *v1.ApiKey `protobuf:"bytes,6,opt,name=api_key,json=apiKey,proto3,oneof"` } type Secret_Header struct { @@ -187,6 +214,16 @@ type Secret_Header struct { Header *HeaderSecret `protobuf:"bytes,8,opt,name=header,proto3,oneof"` } +type Secret_Credentials struct { + // Secrets to represent user/secret pairs. Used to authenticate to LDAP service accounts and hold shared secrets for HMAC auth. + Credentials *AccountCredentialsSecret `protobuf:"bytes,9,opt,name=credentials,proto3,oneof"` +} + +type Secret_Encryption struct { + // Enterprise-only: Secrets used to encrypt messages and data. Used to encrypt and decrypt session values in Ext-Auth. + Encryption *EncryptionKeySecret `protobuf:"bytes,10,opt,name=encryption,proto3,oneof"` +} + type Secret_Extensions struct { // Extensions will be passed along from Listeners, Gateways, VirtualServices, Routes, and Route tables to the // underlying Proxy, making them useful for controllers, validation tools, etc. which interact with kubernetes yaml. @@ -210,78 +247,86 @@ func (*Secret_ApiKey) isSecret_Kind() {} func (*Secret_Header) isSecret_Kind() {} +func (*Secret_Credentials) isSecret_Kind() {} + +func (*Secret_Encryption) isSecret_Kind() {} + func (*Secret_Extensions) isSecret_Kind() {} +// There are two ways of providing AWS secrets: // +// - Method 1: `glooctl create secret aws` // -//There are two ways of providing AWS secrets: +// ``` // -//- Method 1: `glooctl create secret aws` +// glooctl create secret aws --name aws-secret-from-glooctl \ +// --namespace default \ +// --access-key $ACC \ +// --secret-key $SEC // // ``` -// glooctl create secret aws --name aws-secret-from-glooctl \ -// --namespace default \ -// --access-key $ACC \ -// --secret-key $SEC -// ``` // -//will produce a Kubernetes resource similar to this (note the `aws` field and `resource_kind` annotation): +// will produce a Kubernetes resource similar to this (note the `aws` field and `resource_kind` annotation): // // ``` // apiVersion: v1 // data: -// aws: base64EncodedStringForMachineConsumption +// +// aws: base64EncodedStringForMachineConsumption +// // kind: Secret // metadata: -// annotations: -// resource_kind: '*v1.Secret' -// creationTimestamp: "2019-08-23T15:10:20Z" -// name: aws-secret-from-glooctl -// namespace: default -// resourceVersion: "592637" -// selfLink: /api/v1/namespaces/default/secrets/secret-e2e -// uid: 1f8c147f-c5b8-11e9-bbf3-42010a8001bc +// +// annotations: +// resource_kind: '*v1.Secret' +// creationTimestamp: "2019-08-23T15:10:20Z" +// name: aws-secret-from-glooctl +// namespace: default +// resourceVersion: "592637" +// selfLink: /api/v1/namespaces/default/secrets/secret-e2e +// uid: 1f8c147f-c5b8-11e9-bbf3-42010a8001bc +// // type: Opaque // ``` // // - Method 2: `kubectl apply -f resource-file.yaml` // - If using a git-ops flow, or otherwise creating secrets from yaml files, you may prefer to provide AWS credentials -// using the format below, with `aws_access_key_id` and `aws_secret_access_key` fields. +// using the format below, with `aws_access_key_id` and `aws_secret_access_key` fields. // - This circumvents the need for the annotation, which are not supported by some tools such as -// [godaddy/kubernetes-external-secrets](https://github.com/godaddy/kubernetes-external-secrets) +// [godaddy/kubernetes-external-secrets](https://github.com/godaddy/kubernetes-external-secrets) // // ```yaml // # a sample aws secret resource-file.yaml // apiVersion: v1 // data: -// aws_access_key_id: some-id -// aws_secret_access_key: some-secret +// +// aws_access_key_id: some-id +// aws_secret_access_key: some-secret +// // kind: Secret // metadata: -// name: aws-secret-abcd -// namespace: default -// ``` // +// name: aws-secret-abcd +// namespace: default +// +// ``` type AwsSecret struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // provided by `glooctl create secret aws` AccessKey string `protobuf:"bytes,1,opt,name=access_key,json=accessKey,proto3" json:"access_key,omitempty"` // provided by `glooctl create secret aws` SecretKey string `protobuf:"bytes,2,opt,name=secret_key,json=secretKey,proto3" json:"secret_key,omitempty"` // provided by `glooctl create secret aws` - SessionToken string `protobuf:"bytes,3,opt,name=session_token,json=sessionToken,proto3" json:"session_token,omitempty"` + SessionToken string `protobuf:"bytes,3,opt,name=session_token,json=sessionToken,proto3" json:"session_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AwsSecret) Reset() { *x = AwsSecret{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AwsSecret) String() string { @@ -292,7 +337,7 @@ func (*AwsSecret) ProtoMessage() {} func (x *AwsSecret) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -329,21 +374,18 @@ func (x *AwsSecret) GetSessionToken() string { } type AzureSecret struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // provided by `glooctl create secret azure` - ApiKeys map[string]string `protobuf:"bytes,1,rep,name=api_keys,json=apiKeys,proto3" json:"api_keys,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ApiKeys map[string]string `protobuf:"bytes,1,rep,name=api_keys,json=apiKeys,proto3" json:"api_keys,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AzureSecret) Reset() { *x = AzureSecret{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AzureSecret) String() string { @@ -354,7 +396,7 @@ func (*AzureSecret) ProtoMessage() {} func (x *AzureSecret) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -376,29 +418,26 @@ func (x *AzureSecret) GetApiKeys() map[string]string { return nil } -// -//Note that the annotation `resource_kind: '*v1.Secret'` is needed for Gloo to find this secret. -//Glooctl adds it by default when the tls secret is created via `glooctl create secret tls`. type TlsSecret struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // provided by `glooctl create secret tls` + state protoimpl.MessageState `protogen:"open.v1"` + // provided by `glooctl create secret tls`, and stored as `tls.crt` in the secret. CertChain string `protobuf:"bytes,1,opt,name=cert_chain,json=certChain,proto3" json:"cert_chain,omitempty"` - // provided by `glooctl create secret tls` + // provided by `glooctl create secret tls`, and stored as `tls.key` in the secret. PrivateKey string `protobuf:"bytes,2,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` - // provided by `glooctl create secret tls` + // provided by `glooctl create secret tls`, and stored as `ca.crt` in the secret. RootCa string `protobuf:"bytes,3,opt,name=root_ca,json=rootCa,proto3" json:"root_ca,omitempty"` + // ocsp staple is a der-encoded binary structure + // provided by `glooctl create secret tls`, and stored as `tls.ocsp-staple` in the secret. + OcspStaple []byte `protobuf:"bytes,4,opt,name=ocsp_staple,json=ocspStaple,proto3" json:"ocsp_staple,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TlsSecret) Reset() { *x = TlsSecret{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TlsSecret) String() string { @@ -409,7 +448,7 @@ func (*TlsSecret) ProtoMessage() {} func (x *TlsSecret) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -445,23 +484,27 @@ func (x *TlsSecret) GetRootCa() string { return "" } -type HeaderSecret struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *TlsSecret) GetOcspStaple() []byte { + if x != nil { + return x.OcspStaple + } + return nil +} +type HeaderSecret struct { + state protoimpl.MessageState `protogen:"open.v1"` // A collection of header name to header value mappings, each representing an additional header that could be added to a request. // Provided by `glooctl create secret header` - Headers map[string]string `protobuf:"bytes,1,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Headers map[string]string `protobuf:"bytes,1,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HeaderSecret) Reset() { *x = HeaderSecret{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HeaderSecret) String() string { @@ -472,7 +515,7 @@ func (*HeaderSecret) ProtoMessage() {} func (x *HeaderSecret) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -494,9 +537,110 @@ func (x *HeaderSecret) GetHeaders() map[string]string { return nil } +// Secret to represent any kind of a username/secretname and password/secret combination +// Used by LDAP auth to store service account credentials and by HMAC auth to keep shared secrets. +type AccountCredentialsSecret struct { + state protoimpl.MessageState `protogen:"open.v1"` + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` + Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AccountCredentialsSecret) Reset() { + *x = AccountCredentialsSecret{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AccountCredentialsSecret) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AccountCredentialsSecret) ProtoMessage() {} + +func (x *AccountCredentialsSecret) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AccountCredentialsSecret.ProtoReflect.Descriptor instead. +func (*AccountCredentialsSecret) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDescGZIP(), []int{5} +} + +func (x *AccountCredentialsSecret) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *AccountCredentialsSecret) GetPassword() string { + if x != nil { + return x.Password + } + return "" +} + +// Secret used for key encryption. +// This is used for encrypting Session Values. +type EncryptionKeySecret struct { + state protoimpl.MessageState `protogen:"open.v1"` + // the key used to encrypt session values. This must be 32 bytes in length. + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EncryptionKeySecret) Reset() { + *x = EncryptionKeySecret{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EncryptionKeySecret) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EncryptionKeySecret) ProtoMessage() {} + +func (x *EncryptionKeySecret) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EncryptionKeySecret.ProtoReflect.Descriptor instead. +func (*EncryptionKeySecret) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDescGZIP(), []int{6} +} + +func (x *EncryptionKeySecret) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDesc = string([]byte{ 0x0a, 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -518,7 +662,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDesc = [] 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0xdb, 0x03, 0x0a, 0x06, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x2b, 0x0a, 0x03, 0x61, + 0x22, 0xe2, 0x04, 0x0a, 0x06, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x2b, 0x0a, 0x03, 0x61, 0x77, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x77, 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, 0x03, 0x61, 0x77, 0x73, 0x12, 0x31, 0x0a, 0x05, 0x61, 0x7a, 0x75, 0x72, @@ -531,103 +675,126 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDesc = [] 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, - 0x05, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x12, 0x40, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x05, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x12, 0x3a, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, - 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x34, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x53, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x3a, - 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0a, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x0a, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x16, - 0x82, 0xf1, 0x04, 0x05, 0x0a, 0x03, 0x73, 0x65, 0x63, 0x82, 0xf1, 0x04, 0x09, 0x12, 0x07, 0x73, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x6e, - 0x0a, 0x09, 0x41, 0x77, 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8c, - 0x01, 0x0a, 0x0b, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x41, - 0x0a, 0x08, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x2e, 0x41, 0x70, 0x69, 0x4b, - 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, - 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x64, 0x0a, - 0x09, 0x54, 0x6c, 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x65, - 0x72, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x63, 0x65, 0x72, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, - 0x6f, 0x74, 0x5f, 0x63, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, - 0x74, 0x43, 0x61, 0x22, 0x8d, 0x01, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x53, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x12, 0x41, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x42, 0x3e, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, - 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0xc0, 0xf5, 0x04, 0x01, 0xb8, - 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x6f, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, + 0x65, 0x79, 0x12, 0x34, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, + 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x65, + 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x12, 0x82, 0xf1, 0x04, 0x0e, 0x0a, + 0x03, 0x73, 0x65, 0x63, 0x12, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x42, 0x06, 0x0a, + 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x6e, 0x0a, 0x09, 0x41, 0x77, 0x73, 0x53, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, + 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, + 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8c, 0x01, 0x0a, 0x0b, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x41, 0x0a, 0x08, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x07, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x41, 0x70, 0x69, 0x4b, + 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x85, 0x01, 0x0a, 0x09, 0x54, 0x6c, 0x73, 0x53, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x65, 0x72, 0x74, 0x43, 0x68, 0x61, 0x69, + 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, + 0x65, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x63, 0x61, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x74, 0x43, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, + 0x63, 0x73, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x0a, 0x6f, 0x63, 0x73, 0x70, 0x53, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x22, 0x8d, 0x01, 0x0a, + 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x41, 0x0a, + 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x52, 0x0a, 0x18, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x22, 0x27, 0x0a, 0x13, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, + 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x42, 0xb8, 0xf5, 0x04, 0x01, 0xc0, + 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes = make([]protoimpl.MessageInfo, 7) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_goTypes = []interface{}{ - (*Secret)(nil), // 0: gloo.solo.io.Secret - (*AwsSecret)(nil), // 1: gloo.solo.io.AwsSecret - (*AzureSecret)(nil), // 2: gloo.solo.io.AzureSecret - (*TlsSecret)(nil), // 3: gloo.solo.io.TlsSecret - (*HeaderSecret)(nil), // 4: gloo.solo.io.HeaderSecret - nil, // 5: gloo.solo.io.AzureSecret.ApiKeysEntry - nil, // 6: gloo.solo.io.HeaderSecret.HeadersEntry - (*v1.OauthSecret)(nil), // 7: enterprise.gloo.solo.io.OauthSecret - (*v1.ApiKeySecret)(nil), // 8: enterprise.gloo.solo.io.ApiKeySecret - (*Extensions)(nil), // 9: gloo.solo.io.Extensions - (*core.Metadata)(nil), // 10: core.solo.io.Metadata +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_goTypes = []any{ + (*Secret)(nil), // 0: gloo.solo.io.Secret + (*AwsSecret)(nil), // 1: gloo.solo.io.AwsSecret + (*AzureSecret)(nil), // 2: gloo.solo.io.AzureSecret + (*TlsSecret)(nil), // 3: gloo.solo.io.TlsSecret + (*HeaderSecret)(nil), // 4: gloo.solo.io.HeaderSecret + (*AccountCredentialsSecret)(nil), // 5: gloo.solo.io.AccountCredentialsSecret + (*EncryptionKeySecret)(nil), // 6: gloo.solo.io.EncryptionKeySecret + nil, // 7: gloo.solo.io.AzureSecret.ApiKeysEntry + nil, // 8: gloo.solo.io.HeaderSecret.HeadersEntry + (*v1.OauthSecret)(nil), // 9: enterprise.gloo.solo.io.OauthSecret + (*v1.ApiKey)(nil), // 10: enterprise.gloo.solo.io.ApiKey + (*Extensions)(nil), // 11: gloo.solo.io.Extensions + (*core.Metadata)(nil), // 12: core.solo.io.Metadata } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_depIdxs = []int32{ 1, // 0: gloo.solo.io.Secret.aws:type_name -> gloo.solo.io.AwsSecret 2, // 1: gloo.solo.io.Secret.azure:type_name -> gloo.solo.io.AzureSecret 3, // 2: gloo.solo.io.Secret.tls:type_name -> gloo.solo.io.TlsSecret - 7, // 3: gloo.solo.io.Secret.oauth:type_name -> enterprise.gloo.solo.io.OauthSecret - 8, // 4: gloo.solo.io.Secret.api_key:type_name -> enterprise.gloo.solo.io.ApiKeySecret + 9, // 3: gloo.solo.io.Secret.oauth:type_name -> enterprise.gloo.solo.io.OauthSecret + 10, // 4: gloo.solo.io.Secret.api_key:type_name -> enterprise.gloo.solo.io.ApiKey 4, // 5: gloo.solo.io.Secret.header:type_name -> gloo.solo.io.HeaderSecret - 9, // 6: gloo.solo.io.Secret.extensions:type_name -> gloo.solo.io.Extensions - 10, // 7: gloo.solo.io.Secret.metadata:type_name -> core.solo.io.Metadata - 5, // 8: gloo.solo.io.AzureSecret.api_keys:type_name -> gloo.solo.io.AzureSecret.ApiKeysEntry - 6, // 9: gloo.solo.io.HeaderSecret.headers:type_name -> gloo.solo.io.HeaderSecret.HeadersEntry - 10, // [10:10] is the sub-list for method output_type - 10, // [10:10] is the sub-list for method input_type - 10, // [10:10] is the sub-list for extension type_name - 10, // [10:10] is the sub-list for extension extendee - 0, // [0:10] is the sub-list for field type_name + 5, // 6: gloo.solo.io.Secret.credentials:type_name -> gloo.solo.io.AccountCredentialsSecret + 6, // 7: gloo.solo.io.Secret.encryption:type_name -> gloo.solo.io.EncryptionKeySecret + 11, // 8: gloo.solo.io.Secret.extensions:type_name -> gloo.solo.io.Extensions + 12, // 9: gloo.solo.io.Secret.metadata:type_name -> core.solo.io.Metadata + 7, // 10: gloo.solo.io.AzureSecret.api_keys:type_name -> gloo.solo.io.AzureSecret.ApiKeysEntry + 8, // 11: gloo.solo.io.HeaderSecret.headers:type_name -> gloo.solo.io.HeaderSecret.HeadersEntry + 12, // [12:12] is the sub-list for method output_type + 12, // [12:12] is the sub-list for method input_type + 12, // [12:12] is the sub-list for extension type_name + 12, // [12:12] is the sub-list for extension extendee + 0, // [0:12] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_init() } @@ -636,84 +803,24 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_init() { return } file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_init() - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Secret); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AwsSecret); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AzureSecret); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TlsSecret); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HeaderSecret); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes[0].OneofWrappers = []any{ (*Secret_Aws)(nil), (*Secret_Azure)(nil), (*Secret_Tls)(nil), (*Secret_Oauth)(nil), (*Secret_ApiKey)(nil), (*Secret_Header)(nil), + (*Secret_Credentials)(nil), + (*Secret_Encryption)(nil), (*Secret_Extensions)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDesc)), NumEnums: 0, - NumMessages: 7, + NumMessages: 9, NumExtensions: 0, NumServices: 0, }, @@ -722,7 +829,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_init() { MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_secret_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/secret.pb.hash.go b/pkg/api/gloo.solo.io/v1/secret.pb.hash.go index 781f62fba..3710f5e9d 100644 --- a/pkg/api/gloo.solo.io/v1/secret.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/secret.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Secret) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,14 +43,20 @@ func (m *Secret) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -57,14 +67,20 @@ func (m *Secret) Hash(hasher hash.Hash64) (uint64, error) { case *Secret_Aws: if h, ok := interface{}(m.GetAws()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Aws")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAws(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAws(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Aws")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -73,14 +89,20 @@ func (m *Secret) Hash(hasher hash.Hash64) (uint64, error) { case *Secret_Azure: if h, ok := interface{}(m.GetAzure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAzure(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAzure(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -89,14 +111,20 @@ func (m *Secret) Hash(hasher hash.Hash64) (uint64, error) { case *Secret_Tls: if h, ok := interface{}(m.GetTls()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Tls")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetTls(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetTls(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Tls")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -105,14 +133,20 @@ func (m *Secret) Hash(hasher hash.Hash64) (uint64, error) { case *Secret_Oauth: if h, ok := interface{}(m.GetOauth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Oauth")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOauth(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOauth(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Oauth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -121,14 +155,20 @@ func (m *Secret) Hash(hasher hash.Hash64) (uint64, error) { case *Secret_ApiKey: if h, ok := interface{}(m.GetApiKey()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ApiKey")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetApiKey(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetApiKey(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ApiKey")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -137,14 +177,64 @@ func (m *Secret) Hash(hasher hash.Hash64) (uint64, error) { case *Secret_Header: if h, ok := interface{}(m.GetHeader()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeader(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Secret_Credentials: + + if h, ok := interface{}(m.GetCredentials()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Credentials")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCredentials(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Credentials")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Secret_Encryption: + + if h, ok := interface{}(m.GetEncryption()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Encryption")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHeader(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetEncryption(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Encryption")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -153,14 +243,20 @@ func (m *Secret) Hash(hasher hash.Hash64) (uint64, error) { case *Secret_Extensions: if h, ok := interface{}(m.GetExtensions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetExtensions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetExtensions(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -172,6 +268,10 @@ func (m *Secret) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *AwsSecret) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -200,6 +300,10 @@ func (m *AwsSecret) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *AzureSecret) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -239,6 +343,10 @@ func (m *AzureSecret) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *TlsSecret) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -263,10 +371,18 @@ func (m *TlsSecret) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + if _, err = hasher.Write(m.GetOcspStaple()); err != nil { + return 0, err + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *HeaderSecret) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -304,3 +420,55 @@ func (m *HeaderSecret) Hash(hasher hash.Hash64) (uint64, error) { return hasher.Sum64(), nil } + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *AccountCredentialsSecret) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.AccountCredentialsSecret")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetUsername())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetPassword())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *EncryptionKeySecret) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.EncryptionKeySecret")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/secret.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/secret.pb.uniquehash.go new file mode 100644 index 000000000..74a50853c --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/secret.pb.uniquehash.go @@ -0,0 +1,511 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/secret.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Secret) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.Secret")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.Kind.(type) { + + case *Secret_Aws: + + if h, ok := interface{}(m.GetAws()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Aws")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAws(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Aws")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Secret_Azure: + + if h, ok := interface{}(m.GetAzure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAzure(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Secret_Tls: + + if h, ok := interface{}(m.GetTls()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Tls")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTls(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Tls")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Secret_Oauth: + + if h, ok := interface{}(m.GetOauth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Oauth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOauth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Oauth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Secret_ApiKey: + + if h, ok := interface{}(m.GetApiKey()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ApiKey")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetApiKey(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ApiKey")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Secret_Header: + + if h, ok := interface{}(m.GetHeader()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeader(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Secret_Credentials: + + if h, ok := interface{}(m.GetCredentials()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Credentials")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCredentials(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Credentials")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Secret_Encryption: + + if h, ok := interface{}(m.GetEncryption()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Encryption")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEncryption(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Encryption")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Secret_Extensions: + + if h, ok := interface{}(m.GetExtensions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtensions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AwsSecret) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.AwsSecret")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AccessKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAccessKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SecretKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSecretKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SessionToken")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSessionToken())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AzureSecret) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.AzureSecret")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetApiKeys() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TlsSecret) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.TlsSecret")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CertChain")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCertChain())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("PrivateKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPrivateKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RootCa")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRootCa())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("OcspStaple")); err != nil { + return 0, err + } + if _, err = hasher.Write(m.GetOcspStaple()); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HeaderSecret) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.HeaderSecret")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetHeaders() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *AccountCredentialsSecret) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.AccountCredentialsSecret")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Username")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUsername())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Password")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPassword())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *EncryptionKeySecret) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.EncryptionKeySecret")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/sets/mocks/sets.go b/pkg/api/gloo.solo.io/v1/sets/mocks/sets.go index 997b74dd4..f90754172 100644 --- a/pkg/api/gloo.solo.io/v1/sets/mocks/sets.go +++ b/pkg/api/gloo.solo.io/v1/sets/mocks/sets.go @@ -15,110 +15,84 @@ import ( sets0 "k8s.io/apimachinery/pkg/util/sets" ) -// MockSettingsSet is a mock of SettingsSet interface +// MockSettingsSet is a mock of SettingsSet interface. type MockSettingsSet struct { ctrl *gomock.Controller recorder *MockSettingsSetMockRecorder } -// MockSettingsSetMockRecorder is the mock recorder for MockSettingsSet +// MockSettingsSetMockRecorder is the mock recorder for MockSettingsSet. type MockSettingsSetMockRecorder struct { mock *MockSettingsSet } -// NewMockSettingsSet creates a new mock instance +// NewMockSettingsSet creates a new mock instance. func NewMockSettingsSet(ctrl *gomock.Controller) *MockSettingsSet { mock := &MockSettingsSet{ctrl: ctrl} mock.recorder = &MockSettingsSetMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockSettingsSet) EXPECT() *MockSettingsSetMockRecorder { return m.recorder } -// Keys mocks base method -func (m *MockSettingsSet) Keys() sets0.String { +// Clone mocks base method. +func (m *MockSettingsSet) Clone() v1sets.SettingsSet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Keys") - ret0, _ := ret[0].(sets0.String) + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.SettingsSet) return ret0 } -// Keys indicates an expected call of Keys -func (mr *MockSettingsSetMockRecorder) Keys() *gomock.Call { +// Clone indicates an expected call of Clone. +func (mr *MockSettingsSetMockRecorder) Clone() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockSettingsSet)(nil).Keys)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockSettingsSet)(nil).Clone)) } -// List mocks base method -func (m *MockSettingsSet) List(filterResource ...func(*v1.Settings) bool) []*v1.Settings { +// Delete mocks base method. +func (m *MockSettingsSet) Delete(settings ezkube.ResourceId) { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range filterResource { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "List", varargs...) - ret0, _ := ret[0].([]*v1.Settings) - return ret0 + m.ctrl.Call(m, "Delete", settings) } -// List indicates an expected call of List -func (mr *MockSettingsSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { +// Delete indicates an expected call of Delete. +func (mr *MockSettingsSetMockRecorder) Delete(settings interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockSettingsSet)(nil).List), filterResource...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockSettingsSet)(nil).Delete), settings) } -// UnsortedList mocks base method -func (m *MockSettingsSet) UnsortedList(filterResource ...func(*v1.Settings) bool) []*v1.Settings { +// Delta mocks base method. +func (m *MockSettingsSet) Delta(newSet v1sets.SettingsSet) sets.ResourceDelta { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range filterResource { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "UnsortedList", varargs...) - ret0, _ := ret[0].([]*v1.Settings) + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) return ret0 } -// UnsortedList indicates an expected call of UnsortedList -func (mr *MockSettingsSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { +// Delta indicates an expected call of Delta. +func (mr *MockSettingsSetMockRecorder) Delta(newSet interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockSettingsSet)(nil).UnsortedList), filterResource...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockSettingsSet)(nil).Delta), newSet) } -// Map mocks base method -func (m *MockSettingsSet) Map() map[string]*v1.Settings { +// Difference mocks base method. +func (m *MockSettingsSet) Difference(set v1sets.SettingsSet) v1sets.SettingsSet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Map") - ret0, _ := ret[0].(map[string]*v1.Settings) + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.SettingsSet) return ret0 } -// Map indicates an expected call of Map -func (mr *MockSettingsSetMockRecorder) Map() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockSettingsSet)(nil).Map)) -} - -// Insert mocks base method -func (m *MockSettingsSet) Insert(settings ...*v1.Settings) { - m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range settings { - varargs = append(varargs, a) - } - m.ctrl.Call(m, "Insert", varargs...) -} - -// Insert indicates an expected call of Insert -func (mr *MockSettingsSetMockRecorder) Insert(settings ...interface{}) *gomock.Call { +// Difference indicates an expected call of Difference. +func (mr *MockSettingsSetMockRecorder) Difference(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockSettingsSet)(nil).Insert), settings...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockSettingsSet)(nil).Difference), set) } -// Equal mocks base method +// Equal mocks base method. func (m *MockSettingsSet) Equal(settingsSet v1sets.SettingsSet) bool { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Equal", settingsSet) @@ -126,67 +100,72 @@ func (m *MockSettingsSet) Equal(settingsSet v1sets.SettingsSet) bool { return ret0 } -// Equal indicates an expected call of Equal +// Equal indicates an expected call of Equal. func (mr *MockSettingsSetMockRecorder) Equal(settingsSet interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockSettingsSet)(nil).Equal), settingsSet) } -// Has mocks base method -func (m *MockSettingsSet) Has(settings ezkube.ResourceId) bool { +// Find mocks base method. +func (m *MockSettingsSet) Find(id ezkube.ResourceId) (*v1.Settings, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Has", settings) - ret0, _ := ret[0].(bool) - return ret0 + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.Settings) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// Has indicates an expected call of Has -func (mr *MockSettingsSetMockRecorder) Has(settings interface{}) *gomock.Call { +// Find indicates an expected call of Find. +func (mr *MockSettingsSetMockRecorder) Find(id interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockSettingsSet)(nil).Has), settings) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockSettingsSet)(nil).Find), id) } -// Delete mocks base method -func (m *MockSettingsSet) Delete(settings ezkube.ResourceId) { +// Generic mocks base method. +func (m *MockSettingsSet) Generic() sets.ResourceSet { m.ctrl.T.Helper() - m.ctrl.Call(m, "Delete", settings) + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 } -// Delete indicates an expected call of Delete -func (mr *MockSettingsSetMockRecorder) Delete(settings interface{}) *gomock.Call { +// Generic indicates an expected call of Generic. +func (mr *MockSettingsSetMockRecorder) Generic() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockSettingsSet)(nil).Delete), settings) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockSettingsSet)(nil).Generic)) } -// Union mocks base method -func (m *MockSettingsSet) Union(set v1sets.SettingsSet) v1sets.SettingsSet { +// Has mocks base method. +func (m *MockSettingsSet) Has(settings ezkube.ResourceId) bool { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Union", set) - ret0, _ := ret[0].(v1sets.SettingsSet) + ret := m.ctrl.Call(m, "Has", settings) + ret0, _ := ret[0].(bool) return ret0 } -// Union indicates an expected call of Union -func (mr *MockSettingsSetMockRecorder) Union(set interface{}) *gomock.Call { +// Has indicates an expected call of Has. +func (mr *MockSettingsSetMockRecorder) Has(settings interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockSettingsSet)(nil).Union), set) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockSettingsSet)(nil).Has), settings) } -// Difference mocks base method -func (m *MockSettingsSet) Difference(set v1sets.SettingsSet) v1sets.SettingsSet { +// Insert mocks base method. +func (m *MockSettingsSet) Insert(settings ...*v1.Settings) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Difference", set) - ret0, _ := ret[0].(v1sets.SettingsSet) - return ret0 + varargs := []interface{}{} + for _, a := range settings { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) } -// Difference indicates an expected call of Difference -func (mr *MockSettingsSetMockRecorder) Difference(set interface{}) *gomock.Call { +// Insert indicates an expected call of Insert. +func (mr *MockSettingsSetMockRecorder) Insert(settings ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockSettingsSet)(nil).Difference), set) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockSettingsSet)(nil).Insert), settings...) } -// Intersection mocks base method +// Intersection mocks base method. func (m *MockSettingsSet) Intersection(set v1sets.SettingsSet) v1sets.SettingsSet { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Intersection", set) @@ -194,28 +173,27 @@ func (m *MockSettingsSet) Intersection(set v1sets.SettingsSet) v1sets.SettingsSe return ret0 } -// Intersection indicates an expected call of Intersection +// Intersection indicates an expected call of Intersection. func (mr *MockSettingsSetMockRecorder) Intersection(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockSettingsSet)(nil).Intersection), set) } -// Find mocks base method -func (m *MockSettingsSet) Find(id ezkube.ResourceId) (*v1.Settings, error) { +// Keys mocks base method. +func (m *MockSettingsSet) Keys() sets0.String { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Find", id) - ret0, _ := ret[0].(*v1.Settings) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 } -// Find indicates an expected call of Find -func (mr *MockSettingsSetMockRecorder) Find(id interface{}) *gomock.Call { +// Keys indicates an expected call of Keys. +func (mr *MockSettingsSetMockRecorder) Keys() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockSettingsSet)(nil).Find), id) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockSettingsSet)(nil).Keys)) } -// Length mocks base method +// Length mocks base method. func (m *MockSettingsSet) Length() int { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Length") @@ -223,144 +201,154 @@ func (m *MockSettingsSet) Length() int { return ret0 } -// Length indicates an expected call of Length +// Length indicates an expected call of Length. func (mr *MockSettingsSetMockRecorder) Length() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockSettingsSet)(nil).Length)) } -// Generic mocks base method -func (m *MockSettingsSet) Generic() sets.ResourceSet { +// List mocks base method. +func (m *MockSettingsSet) List(filterResource ...func(*v1.Settings) bool) []*v1.Settings { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Generic") - ret0, _ := ret[0].(sets.ResourceSet) + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.Settings) return ret0 } -// Generic indicates an expected call of Generic -func (mr *MockSettingsSetMockRecorder) Generic() *gomock.Call { +// List indicates an expected call of List. +func (mr *MockSettingsSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockSettingsSet)(nil).Generic)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockSettingsSet)(nil).List), filterResource...) } -// Delta mocks base method -func (m *MockSettingsSet) Delta(newSet v1sets.SettingsSet) sets.ResourceDelta { +// Map mocks base method. +func (m *MockSettingsSet) Map() map[string]*v1.Settings { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Delta", newSet) - ret0, _ := ret[0].(sets.ResourceDelta) + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.Settings) return ret0 } -// Delta indicates an expected call of Delta -func (mr *MockSettingsSetMockRecorder) Delta(newSet interface{}) *gomock.Call { +// Map indicates an expected call of Map. +func (mr *MockSettingsSetMockRecorder) Map() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockSettingsSet)(nil).Delta), newSet) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockSettingsSet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockSettingsSet) Union(set v1sets.SettingsSet) v1sets.SettingsSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.SettingsSet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockSettingsSetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockSettingsSet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockSettingsSet) UnsortedList(filterResource ...func(*v1.Settings) bool) []*v1.Settings { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.Settings) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockSettingsSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockSettingsSet)(nil).UnsortedList), filterResource...) } -// MockUpstreamSet is a mock of UpstreamSet interface +// MockUpstreamSet is a mock of UpstreamSet interface. type MockUpstreamSet struct { ctrl *gomock.Controller recorder *MockUpstreamSetMockRecorder } -// MockUpstreamSetMockRecorder is the mock recorder for MockUpstreamSet +// MockUpstreamSetMockRecorder is the mock recorder for MockUpstreamSet. type MockUpstreamSetMockRecorder struct { mock *MockUpstreamSet } -// NewMockUpstreamSet creates a new mock instance +// NewMockUpstreamSet creates a new mock instance. func NewMockUpstreamSet(ctrl *gomock.Controller) *MockUpstreamSet { mock := &MockUpstreamSet{ctrl: ctrl} mock.recorder = &MockUpstreamSetMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockUpstreamSet) EXPECT() *MockUpstreamSetMockRecorder { return m.recorder } -// Keys mocks base method -func (m *MockUpstreamSet) Keys() sets0.String { +// Clone mocks base method. +func (m *MockUpstreamSet) Clone() v1sets.UpstreamSet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Keys") - ret0, _ := ret[0].(sets0.String) + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.UpstreamSet) return ret0 } -// Keys indicates an expected call of Keys -func (mr *MockUpstreamSetMockRecorder) Keys() *gomock.Call { +// Clone indicates an expected call of Clone. +func (mr *MockUpstreamSetMockRecorder) Clone() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockUpstreamSet)(nil).Keys)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockUpstreamSet)(nil).Clone)) } -// List mocks base method -func (m *MockUpstreamSet) List(filterResource ...func(*v1.Upstream) bool) []*v1.Upstream { +// Delete mocks base method. +func (m *MockUpstreamSet) Delete(upstream ezkube.ResourceId) { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range filterResource { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "List", varargs...) - ret0, _ := ret[0].([]*v1.Upstream) - return ret0 + m.ctrl.Call(m, "Delete", upstream) } -// List indicates an expected call of List -func (mr *MockUpstreamSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { +// Delete indicates an expected call of Delete. +func (mr *MockUpstreamSetMockRecorder) Delete(upstream interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockUpstreamSet)(nil).List), filterResource...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockUpstreamSet)(nil).Delete), upstream) } -// UnsortedList mocks base method -func (m *MockUpstreamSet) UnsortedList(filterResource ...func(*v1.Upstream) bool) []*v1.Upstream { +// Delta mocks base method. +func (m *MockUpstreamSet) Delta(newSet v1sets.UpstreamSet) sets.ResourceDelta { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range filterResource { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "UnsortedList", varargs...) - ret0, _ := ret[0].([]*v1.Upstream) + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) return ret0 } -// UnsortedList indicates an expected call of UnsortedList -func (mr *MockUpstreamSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { +// Delta indicates an expected call of Delta. +func (mr *MockUpstreamSetMockRecorder) Delta(newSet interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockUpstreamSet)(nil).UnsortedList), filterResource...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockUpstreamSet)(nil).Delta), newSet) } -// Map mocks base method -func (m *MockUpstreamSet) Map() map[string]*v1.Upstream { +// Difference mocks base method. +func (m *MockUpstreamSet) Difference(set v1sets.UpstreamSet) v1sets.UpstreamSet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Map") - ret0, _ := ret[0].(map[string]*v1.Upstream) + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.UpstreamSet) return ret0 } -// Map indicates an expected call of Map -func (mr *MockUpstreamSetMockRecorder) Map() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockUpstreamSet)(nil).Map)) -} - -// Insert mocks base method -func (m *MockUpstreamSet) Insert(upstream ...*v1.Upstream) { - m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range upstream { - varargs = append(varargs, a) - } - m.ctrl.Call(m, "Insert", varargs...) -} - -// Insert indicates an expected call of Insert -func (mr *MockUpstreamSetMockRecorder) Insert(upstream ...interface{}) *gomock.Call { +// Difference indicates an expected call of Difference. +func (mr *MockUpstreamSetMockRecorder) Difference(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockUpstreamSet)(nil).Insert), upstream...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockUpstreamSet)(nil).Difference), set) } -// Equal mocks base method +// Equal mocks base method. func (m *MockUpstreamSet) Equal(upstreamSet v1sets.UpstreamSet) bool { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Equal", upstreamSet) @@ -368,67 +356,72 @@ func (m *MockUpstreamSet) Equal(upstreamSet v1sets.UpstreamSet) bool { return ret0 } -// Equal indicates an expected call of Equal +// Equal indicates an expected call of Equal. func (mr *MockUpstreamSetMockRecorder) Equal(upstreamSet interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockUpstreamSet)(nil).Equal), upstreamSet) } -// Has mocks base method -func (m *MockUpstreamSet) Has(upstream ezkube.ResourceId) bool { +// Find mocks base method. +func (m *MockUpstreamSet) Find(id ezkube.ResourceId) (*v1.Upstream, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Has", upstream) - ret0, _ := ret[0].(bool) - return ret0 + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.Upstream) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// Has indicates an expected call of Has -func (mr *MockUpstreamSetMockRecorder) Has(upstream interface{}) *gomock.Call { +// Find indicates an expected call of Find. +func (mr *MockUpstreamSetMockRecorder) Find(id interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockUpstreamSet)(nil).Has), upstream) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockUpstreamSet)(nil).Find), id) } -// Delete mocks base method -func (m *MockUpstreamSet) Delete(upstream ezkube.ResourceId) { +// Generic mocks base method. +func (m *MockUpstreamSet) Generic() sets.ResourceSet { m.ctrl.T.Helper() - m.ctrl.Call(m, "Delete", upstream) + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 } -// Delete indicates an expected call of Delete -func (mr *MockUpstreamSetMockRecorder) Delete(upstream interface{}) *gomock.Call { +// Generic indicates an expected call of Generic. +func (mr *MockUpstreamSetMockRecorder) Generic() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockUpstreamSet)(nil).Delete), upstream) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockUpstreamSet)(nil).Generic)) } -// Union mocks base method -func (m *MockUpstreamSet) Union(set v1sets.UpstreamSet) v1sets.UpstreamSet { +// Has mocks base method. +func (m *MockUpstreamSet) Has(upstream ezkube.ResourceId) bool { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Union", set) - ret0, _ := ret[0].(v1sets.UpstreamSet) + ret := m.ctrl.Call(m, "Has", upstream) + ret0, _ := ret[0].(bool) return ret0 } -// Union indicates an expected call of Union -func (mr *MockUpstreamSetMockRecorder) Union(set interface{}) *gomock.Call { +// Has indicates an expected call of Has. +func (mr *MockUpstreamSetMockRecorder) Has(upstream interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockUpstreamSet)(nil).Union), set) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockUpstreamSet)(nil).Has), upstream) } -// Difference mocks base method -func (m *MockUpstreamSet) Difference(set v1sets.UpstreamSet) v1sets.UpstreamSet { +// Insert mocks base method. +func (m *MockUpstreamSet) Insert(upstream ...*v1.Upstream) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Difference", set) - ret0, _ := ret[0].(v1sets.UpstreamSet) - return ret0 + varargs := []interface{}{} + for _, a := range upstream { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) } -// Difference indicates an expected call of Difference -func (mr *MockUpstreamSetMockRecorder) Difference(set interface{}) *gomock.Call { +// Insert indicates an expected call of Insert. +func (mr *MockUpstreamSetMockRecorder) Insert(upstream ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockUpstreamSet)(nil).Difference), set) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockUpstreamSet)(nil).Insert), upstream...) } -// Intersection mocks base method +// Intersection mocks base method. func (m *MockUpstreamSet) Intersection(set v1sets.UpstreamSet) v1sets.UpstreamSet { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Intersection", set) @@ -436,28 +429,27 @@ func (m *MockUpstreamSet) Intersection(set v1sets.UpstreamSet) v1sets.UpstreamSe return ret0 } -// Intersection indicates an expected call of Intersection +// Intersection indicates an expected call of Intersection. func (mr *MockUpstreamSetMockRecorder) Intersection(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockUpstreamSet)(nil).Intersection), set) } -// Find mocks base method -func (m *MockUpstreamSet) Find(id ezkube.ResourceId) (*v1.Upstream, error) { +// Keys mocks base method. +func (m *MockUpstreamSet) Keys() sets0.String { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Find", id) - ret0, _ := ret[0].(*v1.Upstream) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 } -// Find indicates an expected call of Find -func (mr *MockUpstreamSetMockRecorder) Find(id interface{}) *gomock.Call { +// Keys indicates an expected call of Keys. +func (mr *MockUpstreamSetMockRecorder) Keys() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockUpstreamSet)(nil).Find), id) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockUpstreamSet)(nil).Keys)) } -// Length mocks base method +// Length mocks base method. func (m *MockUpstreamSet) Length() int { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Length") @@ -465,144 +457,154 @@ func (m *MockUpstreamSet) Length() int { return ret0 } -// Length indicates an expected call of Length +// Length indicates an expected call of Length. func (mr *MockUpstreamSetMockRecorder) Length() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockUpstreamSet)(nil).Length)) } -// Generic mocks base method -func (m *MockUpstreamSet) Generic() sets.ResourceSet { +// List mocks base method. +func (m *MockUpstreamSet) List(filterResource ...func(*v1.Upstream) bool) []*v1.Upstream { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Generic") - ret0, _ := ret[0].(sets.ResourceSet) + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.Upstream) return ret0 } -// Generic indicates an expected call of Generic -func (mr *MockUpstreamSetMockRecorder) Generic() *gomock.Call { +// List indicates an expected call of List. +func (mr *MockUpstreamSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockUpstreamSet)(nil).Generic)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockUpstreamSet)(nil).List), filterResource...) } -// Delta mocks base method -func (m *MockUpstreamSet) Delta(newSet v1sets.UpstreamSet) sets.ResourceDelta { +// Map mocks base method. +func (m *MockUpstreamSet) Map() map[string]*v1.Upstream { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Delta", newSet) - ret0, _ := ret[0].(sets.ResourceDelta) + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.Upstream) return ret0 } -// Delta indicates an expected call of Delta -func (mr *MockUpstreamSetMockRecorder) Delta(newSet interface{}) *gomock.Call { +// Map indicates an expected call of Map. +func (mr *MockUpstreamSetMockRecorder) Map() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockUpstreamSet)(nil).Delta), newSet) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockUpstreamSet)(nil).Map)) } -// MockUpstreamGroupSet is a mock of UpstreamGroupSet interface +// Union mocks base method. +func (m *MockUpstreamSet) Union(set v1sets.UpstreamSet) v1sets.UpstreamSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.UpstreamSet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockUpstreamSetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockUpstreamSet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockUpstreamSet) UnsortedList(filterResource ...func(*v1.Upstream) bool) []*v1.Upstream { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.Upstream) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockUpstreamSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockUpstreamSet)(nil).UnsortedList), filterResource...) +} + +// MockUpstreamGroupSet is a mock of UpstreamGroupSet interface. type MockUpstreamGroupSet struct { ctrl *gomock.Controller recorder *MockUpstreamGroupSetMockRecorder } -// MockUpstreamGroupSetMockRecorder is the mock recorder for MockUpstreamGroupSet +// MockUpstreamGroupSetMockRecorder is the mock recorder for MockUpstreamGroupSet. type MockUpstreamGroupSetMockRecorder struct { mock *MockUpstreamGroupSet } -// NewMockUpstreamGroupSet creates a new mock instance +// NewMockUpstreamGroupSet creates a new mock instance. func NewMockUpstreamGroupSet(ctrl *gomock.Controller) *MockUpstreamGroupSet { mock := &MockUpstreamGroupSet{ctrl: ctrl} mock.recorder = &MockUpstreamGroupSetMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockUpstreamGroupSet) EXPECT() *MockUpstreamGroupSetMockRecorder { return m.recorder } -// Keys mocks base method -func (m *MockUpstreamGroupSet) Keys() sets0.String { +// Clone mocks base method. +func (m *MockUpstreamGroupSet) Clone() v1sets.UpstreamGroupSet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Keys") - ret0, _ := ret[0].(sets0.String) + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.UpstreamGroupSet) return ret0 } -// Keys indicates an expected call of Keys -func (mr *MockUpstreamGroupSetMockRecorder) Keys() *gomock.Call { +// Clone indicates an expected call of Clone. +func (mr *MockUpstreamGroupSetMockRecorder) Clone() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Keys)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Clone)) } -// List mocks base method -func (m *MockUpstreamGroupSet) List(filterResource ...func(*v1.UpstreamGroup) bool) []*v1.UpstreamGroup { +// Delete mocks base method. +func (m *MockUpstreamGroupSet) Delete(upstreamGroup ezkube.ResourceId) { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range filterResource { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "List", varargs...) - ret0, _ := ret[0].([]*v1.UpstreamGroup) - return ret0 + m.ctrl.Call(m, "Delete", upstreamGroup) } -// List indicates an expected call of List -func (mr *MockUpstreamGroupSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { +// Delete indicates an expected call of Delete. +func (mr *MockUpstreamGroupSetMockRecorder) Delete(upstreamGroup interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockUpstreamGroupSet)(nil).List), filterResource...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Delete), upstreamGroup) } -// UnsortedList mocks base method -func (m *MockUpstreamGroupSet) UnsortedList(filterResource ...func(*v1.UpstreamGroup) bool) []*v1.UpstreamGroup { +// Delta mocks base method. +func (m *MockUpstreamGroupSet) Delta(newSet v1sets.UpstreamGroupSet) sets.ResourceDelta { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range filterResource { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "UnsortedList", varargs...) - ret0, _ := ret[0].([]*v1.UpstreamGroup) + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) return ret0 } -// UnsortedList indicates an expected call of UnsortedList -func (mr *MockUpstreamGroupSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { +// Delta indicates an expected call of Delta. +func (mr *MockUpstreamGroupSetMockRecorder) Delta(newSet interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockUpstreamGroupSet)(nil).UnsortedList), filterResource...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Delta), newSet) } -// Map mocks base method -func (m *MockUpstreamGroupSet) Map() map[string]*v1.UpstreamGroup { +// Difference mocks base method. +func (m *MockUpstreamGroupSet) Difference(set v1sets.UpstreamGroupSet) v1sets.UpstreamGroupSet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Map") - ret0, _ := ret[0].(map[string]*v1.UpstreamGroup) + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.UpstreamGroupSet) return ret0 } -// Map indicates an expected call of Map -func (mr *MockUpstreamGroupSetMockRecorder) Map() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Map)) -} - -// Insert mocks base method -func (m *MockUpstreamGroupSet) Insert(upstreamGroup ...*v1.UpstreamGroup) { - m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range upstreamGroup { - varargs = append(varargs, a) - } - m.ctrl.Call(m, "Insert", varargs...) -} - -// Insert indicates an expected call of Insert -func (mr *MockUpstreamGroupSetMockRecorder) Insert(upstreamGroup ...interface{}) *gomock.Call { +// Difference indicates an expected call of Difference. +func (mr *MockUpstreamGroupSetMockRecorder) Difference(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Insert), upstreamGroup...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Difference), set) } -// Equal mocks base method +// Equal mocks base method. func (m *MockUpstreamGroupSet) Equal(upstreamGroupSet v1sets.UpstreamGroupSet) bool { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Equal", upstreamGroupSet) @@ -610,67 +612,72 @@ func (m *MockUpstreamGroupSet) Equal(upstreamGroupSet v1sets.UpstreamGroupSet) b return ret0 } -// Equal indicates an expected call of Equal +// Equal indicates an expected call of Equal. func (mr *MockUpstreamGroupSetMockRecorder) Equal(upstreamGroupSet interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Equal), upstreamGroupSet) } -// Has mocks base method -func (m *MockUpstreamGroupSet) Has(upstreamGroup ezkube.ResourceId) bool { +// Find mocks base method. +func (m *MockUpstreamGroupSet) Find(id ezkube.ResourceId) (*v1.UpstreamGroup, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Has", upstreamGroup) - ret0, _ := ret[0].(bool) - return ret0 + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.UpstreamGroup) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// Has indicates an expected call of Has -func (mr *MockUpstreamGroupSetMockRecorder) Has(upstreamGroup interface{}) *gomock.Call { +// Find indicates an expected call of Find. +func (mr *MockUpstreamGroupSetMockRecorder) Find(id interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Has), upstreamGroup) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Find), id) } -// Delete mocks base method -func (m *MockUpstreamGroupSet) Delete(upstreamGroup ezkube.ResourceId) { +// Generic mocks base method. +func (m *MockUpstreamGroupSet) Generic() sets.ResourceSet { m.ctrl.T.Helper() - m.ctrl.Call(m, "Delete", upstreamGroup) + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 } -// Delete indicates an expected call of Delete -func (mr *MockUpstreamGroupSetMockRecorder) Delete(upstreamGroup interface{}) *gomock.Call { +// Generic indicates an expected call of Generic. +func (mr *MockUpstreamGroupSetMockRecorder) Generic() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Delete), upstreamGroup) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Generic)) } -// Union mocks base method -func (m *MockUpstreamGroupSet) Union(set v1sets.UpstreamGroupSet) v1sets.UpstreamGroupSet { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Union", set) - ret0, _ := ret[0].(v1sets.UpstreamGroupSet) +// Has mocks base method. +func (m *MockUpstreamGroupSet) Has(upstreamGroup ezkube.ResourceId) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Has", upstreamGroup) + ret0, _ := ret[0].(bool) return ret0 } -// Union indicates an expected call of Union -func (mr *MockUpstreamGroupSetMockRecorder) Union(set interface{}) *gomock.Call { +// Has indicates an expected call of Has. +func (mr *MockUpstreamGroupSetMockRecorder) Has(upstreamGroup interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Union), set) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Has), upstreamGroup) } -// Difference mocks base method -func (m *MockUpstreamGroupSet) Difference(set v1sets.UpstreamGroupSet) v1sets.UpstreamGroupSet { +// Insert mocks base method. +func (m *MockUpstreamGroupSet) Insert(upstreamGroup ...*v1.UpstreamGroup) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Difference", set) - ret0, _ := ret[0].(v1sets.UpstreamGroupSet) - return ret0 + varargs := []interface{}{} + for _, a := range upstreamGroup { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) } -// Difference indicates an expected call of Difference -func (mr *MockUpstreamGroupSetMockRecorder) Difference(set interface{}) *gomock.Call { +// Insert indicates an expected call of Insert. +func (mr *MockUpstreamGroupSetMockRecorder) Insert(upstreamGroup ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Difference), set) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Insert), upstreamGroup...) } -// Intersection mocks base method +// Intersection mocks base method. func (m *MockUpstreamGroupSet) Intersection(set v1sets.UpstreamGroupSet) v1sets.UpstreamGroupSet { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Intersection", set) @@ -678,28 +685,27 @@ func (m *MockUpstreamGroupSet) Intersection(set v1sets.UpstreamGroupSet) v1sets. return ret0 } -// Intersection indicates an expected call of Intersection +// Intersection indicates an expected call of Intersection. func (mr *MockUpstreamGroupSetMockRecorder) Intersection(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Intersection), set) } -// Find mocks base method -func (m *MockUpstreamGroupSet) Find(id ezkube.ResourceId) (*v1.UpstreamGroup, error) { +// Keys mocks base method. +func (m *MockUpstreamGroupSet) Keys() sets0.String { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Find", id) - ret0, _ := ret[0].(*v1.UpstreamGroup) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 } -// Find indicates an expected call of Find -func (mr *MockUpstreamGroupSetMockRecorder) Find(id interface{}) *gomock.Call { +// Keys indicates an expected call of Keys. +func (mr *MockUpstreamGroupSetMockRecorder) Keys() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Find), id) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Keys)) } -// Length mocks base method +// Length mocks base method. func (m *MockUpstreamGroupSet) Length() int { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Length") @@ -707,144 +713,154 @@ func (m *MockUpstreamGroupSet) Length() int { return ret0 } -// Length indicates an expected call of Length +// Length indicates an expected call of Length. func (mr *MockUpstreamGroupSetMockRecorder) Length() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Length)) } -// Generic mocks base method -func (m *MockUpstreamGroupSet) Generic() sets.ResourceSet { +// List mocks base method. +func (m *MockUpstreamGroupSet) List(filterResource ...func(*v1.UpstreamGroup) bool) []*v1.UpstreamGroup { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Generic") - ret0, _ := ret[0].(sets.ResourceSet) + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.UpstreamGroup) return ret0 } -// Generic indicates an expected call of Generic -func (mr *MockUpstreamGroupSetMockRecorder) Generic() *gomock.Call { +// List indicates an expected call of List. +func (mr *MockUpstreamGroupSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Generic)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockUpstreamGroupSet)(nil).List), filterResource...) } -// Delta mocks base method -func (m *MockUpstreamGroupSet) Delta(newSet v1sets.UpstreamGroupSet) sets.ResourceDelta { +// Map mocks base method. +func (m *MockUpstreamGroupSet) Map() map[string]*v1.UpstreamGroup { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Delta", newSet) - ret0, _ := ret[0].(sets.ResourceDelta) + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.UpstreamGroup) return ret0 } -// Delta indicates an expected call of Delta -func (mr *MockUpstreamGroupSetMockRecorder) Delta(newSet interface{}) *gomock.Call { +// Map indicates an expected call of Map. +func (mr *MockUpstreamGroupSetMockRecorder) Map() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Delta), newSet) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockUpstreamGroupSet) Union(set v1sets.UpstreamGroupSet) v1sets.UpstreamGroupSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.UpstreamGroupSet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockUpstreamGroupSetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockUpstreamGroupSet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockUpstreamGroupSet) UnsortedList(filterResource ...func(*v1.UpstreamGroup) bool) []*v1.UpstreamGroup { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.UpstreamGroup) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockUpstreamGroupSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockUpstreamGroupSet)(nil).UnsortedList), filterResource...) } -// MockProxySet is a mock of ProxySet interface +// MockProxySet is a mock of ProxySet interface. type MockProxySet struct { ctrl *gomock.Controller recorder *MockProxySetMockRecorder } -// MockProxySetMockRecorder is the mock recorder for MockProxySet +// MockProxySetMockRecorder is the mock recorder for MockProxySet. type MockProxySetMockRecorder struct { mock *MockProxySet } -// NewMockProxySet creates a new mock instance +// NewMockProxySet creates a new mock instance. func NewMockProxySet(ctrl *gomock.Controller) *MockProxySet { mock := &MockProxySet{ctrl: ctrl} mock.recorder = &MockProxySetMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockProxySet) EXPECT() *MockProxySetMockRecorder { return m.recorder } -// Keys mocks base method -func (m *MockProxySet) Keys() sets0.String { +// Clone mocks base method. +func (m *MockProxySet) Clone() v1sets.ProxySet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Keys") - ret0, _ := ret[0].(sets0.String) + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1sets.ProxySet) return ret0 } -// Keys indicates an expected call of Keys -func (mr *MockProxySetMockRecorder) Keys() *gomock.Call { +// Clone indicates an expected call of Clone. +func (mr *MockProxySetMockRecorder) Clone() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockProxySet)(nil).Keys)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockProxySet)(nil).Clone)) } -// List mocks base method -func (m *MockProxySet) List(filterResource ...func(*v1.Proxy) bool) []*v1.Proxy { +// Delete mocks base method. +func (m *MockProxySet) Delete(proxy ezkube.ResourceId) { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range filterResource { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "List", varargs...) - ret0, _ := ret[0].([]*v1.Proxy) - return ret0 + m.ctrl.Call(m, "Delete", proxy) } -// List indicates an expected call of List -func (mr *MockProxySetMockRecorder) List(filterResource ...interface{}) *gomock.Call { +// Delete indicates an expected call of Delete. +func (mr *MockProxySetMockRecorder) Delete(proxy interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockProxySet)(nil).List), filterResource...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockProxySet)(nil).Delete), proxy) } -// UnsortedList mocks base method -func (m *MockProxySet) UnsortedList(filterResource ...func(*v1.Proxy) bool) []*v1.Proxy { +// Delta mocks base method. +func (m *MockProxySet) Delta(newSet v1sets.ProxySet) sets.ResourceDelta { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range filterResource { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "UnsortedList", varargs...) - ret0, _ := ret[0].([]*v1.Proxy) + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) return ret0 } -// UnsortedList indicates an expected call of UnsortedList -func (mr *MockProxySetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { +// Delta indicates an expected call of Delta. +func (mr *MockProxySetMockRecorder) Delta(newSet interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockProxySet)(nil).UnsortedList), filterResource...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockProxySet)(nil).Delta), newSet) } -// Map mocks base method -func (m *MockProxySet) Map() map[string]*v1.Proxy { +// Difference mocks base method. +func (m *MockProxySet) Difference(set v1sets.ProxySet) v1sets.ProxySet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Map") - ret0, _ := ret[0].(map[string]*v1.Proxy) + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1sets.ProxySet) return ret0 } -// Map indicates an expected call of Map -func (mr *MockProxySetMockRecorder) Map() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockProxySet)(nil).Map)) -} - -// Insert mocks base method -func (m *MockProxySet) Insert(proxy ...*v1.Proxy) { - m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range proxy { - varargs = append(varargs, a) - } - m.ctrl.Call(m, "Insert", varargs...) -} - -// Insert indicates an expected call of Insert -func (mr *MockProxySetMockRecorder) Insert(proxy ...interface{}) *gomock.Call { +// Difference indicates an expected call of Difference. +func (mr *MockProxySetMockRecorder) Difference(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockProxySet)(nil).Insert), proxy...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockProxySet)(nil).Difference), set) } -// Equal mocks base method +// Equal mocks base method. func (m *MockProxySet) Equal(proxySet v1sets.ProxySet) bool { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Equal", proxySet) @@ -852,67 +868,72 @@ func (m *MockProxySet) Equal(proxySet v1sets.ProxySet) bool { return ret0 } -// Equal indicates an expected call of Equal +// Equal indicates an expected call of Equal. func (mr *MockProxySetMockRecorder) Equal(proxySet interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockProxySet)(nil).Equal), proxySet) } -// Has mocks base method -func (m *MockProxySet) Has(proxy ezkube.ResourceId) bool { +// Find mocks base method. +func (m *MockProxySet) Find(id ezkube.ResourceId) (*v1.Proxy, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Has", proxy) - ret0, _ := ret[0].(bool) - return ret0 + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1.Proxy) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// Has indicates an expected call of Has -func (mr *MockProxySetMockRecorder) Has(proxy interface{}) *gomock.Call { +// Find indicates an expected call of Find. +func (mr *MockProxySetMockRecorder) Find(id interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockProxySet)(nil).Has), proxy) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockProxySet)(nil).Find), id) } -// Delete mocks base method -func (m *MockProxySet) Delete(proxy ezkube.ResourceId) { +// Generic mocks base method. +func (m *MockProxySet) Generic() sets.ResourceSet { m.ctrl.T.Helper() - m.ctrl.Call(m, "Delete", proxy) + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 } -// Delete indicates an expected call of Delete -func (mr *MockProxySetMockRecorder) Delete(proxy interface{}) *gomock.Call { +// Generic indicates an expected call of Generic. +func (mr *MockProxySetMockRecorder) Generic() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockProxySet)(nil).Delete), proxy) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockProxySet)(nil).Generic)) } -// Union mocks base method -func (m *MockProxySet) Union(set v1sets.ProxySet) v1sets.ProxySet { +// Has mocks base method. +func (m *MockProxySet) Has(proxy ezkube.ResourceId) bool { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Union", set) - ret0, _ := ret[0].(v1sets.ProxySet) + ret := m.ctrl.Call(m, "Has", proxy) + ret0, _ := ret[0].(bool) return ret0 } -// Union indicates an expected call of Union -func (mr *MockProxySetMockRecorder) Union(set interface{}) *gomock.Call { +// Has indicates an expected call of Has. +func (mr *MockProxySetMockRecorder) Has(proxy interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockProxySet)(nil).Union), set) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockProxySet)(nil).Has), proxy) } -// Difference mocks base method -func (m *MockProxySet) Difference(set v1sets.ProxySet) v1sets.ProxySet { +// Insert mocks base method. +func (m *MockProxySet) Insert(proxy ...*v1.Proxy) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Difference", set) - ret0, _ := ret[0].(v1sets.ProxySet) - return ret0 + varargs := []interface{}{} + for _, a := range proxy { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) } -// Difference indicates an expected call of Difference -func (mr *MockProxySetMockRecorder) Difference(set interface{}) *gomock.Call { +// Insert indicates an expected call of Insert. +func (mr *MockProxySetMockRecorder) Insert(proxy ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockProxySet)(nil).Difference), set) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockProxySet)(nil).Insert), proxy...) } -// Intersection mocks base method +// Intersection mocks base method. func (m *MockProxySet) Intersection(set v1sets.ProxySet) v1sets.ProxySet { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Intersection", set) @@ -920,28 +941,27 @@ func (m *MockProxySet) Intersection(set v1sets.ProxySet) v1sets.ProxySet { return ret0 } -// Intersection indicates an expected call of Intersection +// Intersection indicates an expected call of Intersection. func (mr *MockProxySetMockRecorder) Intersection(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockProxySet)(nil).Intersection), set) } -// Find mocks base method -func (m *MockProxySet) Find(id ezkube.ResourceId) (*v1.Proxy, error) { +// Keys mocks base method. +func (m *MockProxySet) Keys() sets0.String { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Find", id) - ret0, _ := ret[0].(*v1.Proxy) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 } -// Find indicates an expected call of Find -func (mr *MockProxySetMockRecorder) Find(id interface{}) *gomock.Call { +// Keys indicates an expected call of Keys. +func (mr *MockProxySetMockRecorder) Keys() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockProxySet)(nil).Find), id) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockProxySet)(nil).Keys)) } -// Length mocks base method +// Length mocks base method. func (m *MockProxySet) Length() int { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Length") @@ -949,36 +969,72 @@ func (m *MockProxySet) Length() int { return ret0 } -// Length indicates an expected call of Length +// Length indicates an expected call of Length. func (mr *MockProxySetMockRecorder) Length() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockProxySet)(nil).Length)) } -// Generic mocks base method -func (m *MockProxySet) Generic() sets.ResourceSet { +// List mocks base method. +func (m *MockProxySet) List(filterResource ...func(*v1.Proxy) bool) []*v1.Proxy { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Generic") - ret0, _ := ret[0].(sets.ResourceSet) + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1.Proxy) return ret0 } -// Generic indicates an expected call of Generic -func (mr *MockProxySetMockRecorder) Generic() *gomock.Call { +// List indicates an expected call of List. +func (mr *MockProxySetMockRecorder) List(filterResource ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockProxySet)(nil).Generic)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockProxySet)(nil).List), filterResource...) } -// Delta mocks base method -func (m *MockProxySet) Delta(newSet v1sets.ProxySet) sets.ResourceDelta { +// Map mocks base method. +func (m *MockProxySet) Map() map[string]*v1.Proxy { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Delta", newSet) - ret0, _ := ret[0].(sets.ResourceDelta) + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1.Proxy) return ret0 } -// Delta indicates an expected call of Delta -func (mr *MockProxySetMockRecorder) Delta(newSet interface{}) *gomock.Call { +// Map indicates an expected call of Map. +func (mr *MockProxySetMockRecorder) Map() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockProxySet)(nil).Delta), newSet) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockProxySet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockProxySet) Union(set v1sets.ProxySet) v1sets.ProxySet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1sets.ProxySet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockProxySetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockProxySet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockProxySet) UnsortedList(filterResource ...func(*v1.Proxy) bool) []*v1.Proxy { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1.Proxy) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockProxySetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockProxySet)(nil).UnsortedList), filterResource...) } diff --git a/pkg/api/gloo.solo.io/v1/sets/sets.go b/pkg/api/gloo.solo.io/v1/sets/sets.go index dee9c71f2..30c68e8a0 100644 --- a/pkg/api/gloo.solo.io/v1/sets/sets.go +++ b/pkg/api/gloo.solo.io/v1/sets/sets.go @@ -17,8 +17,10 @@ type SettingsSet interface { // Get the set stored keys Keys() sets.String // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. List(filterResource ...func(*gloo_solo_io_v1.Settings) bool) []*gloo_solo_io_v1.Settings // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. UnsortedList(filterResource ...func(*gloo_solo_io_v1.Settings) bool) []*gloo_solo_io_v1.Settings // Return the Set as a map of key to resource. Map() map[string]*gloo_solo_io_v1.Settings @@ -44,6 +46,8 @@ type SettingsSet interface { Generic() sksets.ResourceSet // returns the delta between this and and another SettingsSet Delta(newSet SettingsSet) sksets.ResourceDelta + // Create a deep copy of the current SettingsSet + Clone() SettingsSet } func makeGenericSettingsSet(settingsList []*gloo_solo_io_v1.Settings) sksets.ResourceSet { @@ -83,6 +87,7 @@ func (s *settingsSet) List(filterResource ...func(*gloo_solo_io_v1.Settings) boo } var genericFilters []func(ezkube.ResourceId) bool for _, filter := range filterResource { + filter := filter genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { return filter(obj.(*gloo_solo_io_v1.Settings)) }) @@ -102,6 +107,7 @@ func (s *settingsSet) UnsortedList(filterResource ...func(*gloo_solo_io_v1.Setti } var genericFilters []func(ezkube.ResourceId) bool for _, filter := range filterResource { + filter := filter genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { return filter(obj.(*gloo_solo_io_v1.Settings)) }) @@ -223,12 +229,21 @@ func (s *settingsSet) Delta(newSet SettingsSet) sksets.ResourceDelta { return s.Generic().Delta(newSet.Generic()) } +func (s *settingsSet) Clone() SettingsSet { + if s == nil { + return nil + } + return &settingsSet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} + type UpstreamSet interface { // Get the set stored keys Keys() sets.String // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. List(filterResource ...func(*gloo_solo_io_v1.Upstream) bool) []*gloo_solo_io_v1.Upstream // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. UnsortedList(filterResource ...func(*gloo_solo_io_v1.Upstream) bool) []*gloo_solo_io_v1.Upstream // Return the Set as a map of key to resource. Map() map[string]*gloo_solo_io_v1.Upstream @@ -254,6 +269,8 @@ type UpstreamSet interface { Generic() sksets.ResourceSet // returns the delta between this and and another UpstreamSet Delta(newSet UpstreamSet) sksets.ResourceDelta + // Create a deep copy of the current UpstreamSet + Clone() UpstreamSet } func makeGenericUpstreamSet(upstreamList []*gloo_solo_io_v1.Upstream) sksets.ResourceSet { @@ -293,6 +310,7 @@ func (s *upstreamSet) List(filterResource ...func(*gloo_solo_io_v1.Upstream) boo } var genericFilters []func(ezkube.ResourceId) bool for _, filter := range filterResource { + filter := filter genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { return filter(obj.(*gloo_solo_io_v1.Upstream)) }) @@ -312,6 +330,7 @@ func (s *upstreamSet) UnsortedList(filterResource ...func(*gloo_solo_io_v1.Upstr } var genericFilters []func(ezkube.ResourceId) bool for _, filter := range filterResource { + filter := filter genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { return filter(obj.(*gloo_solo_io_v1.Upstream)) }) @@ -433,12 +452,21 @@ func (s *upstreamSet) Delta(newSet UpstreamSet) sksets.ResourceDelta { return s.Generic().Delta(newSet.Generic()) } +func (s *upstreamSet) Clone() UpstreamSet { + if s == nil { + return nil + } + return &upstreamSet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} + type UpstreamGroupSet interface { // Get the set stored keys Keys() sets.String // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. List(filterResource ...func(*gloo_solo_io_v1.UpstreamGroup) bool) []*gloo_solo_io_v1.UpstreamGroup // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. UnsortedList(filterResource ...func(*gloo_solo_io_v1.UpstreamGroup) bool) []*gloo_solo_io_v1.UpstreamGroup // Return the Set as a map of key to resource. Map() map[string]*gloo_solo_io_v1.UpstreamGroup @@ -464,6 +492,8 @@ type UpstreamGroupSet interface { Generic() sksets.ResourceSet // returns the delta between this and and another UpstreamGroupSet Delta(newSet UpstreamGroupSet) sksets.ResourceDelta + // Create a deep copy of the current UpstreamGroupSet + Clone() UpstreamGroupSet } func makeGenericUpstreamGroupSet(upstreamGroupList []*gloo_solo_io_v1.UpstreamGroup) sksets.ResourceSet { @@ -503,6 +533,7 @@ func (s *upstreamGroupSet) List(filterResource ...func(*gloo_solo_io_v1.Upstream } var genericFilters []func(ezkube.ResourceId) bool for _, filter := range filterResource { + filter := filter genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { return filter(obj.(*gloo_solo_io_v1.UpstreamGroup)) }) @@ -522,6 +553,7 @@ func (s *upstreamGroupSet) UnsortedList(filterResource ...func(*gloo_solo_io_v1. } var genericFilters []func(ezkube.ResourceId) bool for _, filter := range filterResource { + filter := filter genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { return filter(obj.(*gloo_solo_io_v1.UpstreamGroup)) }) @@ -643,12 +675,21 @@ func (s *upstreamGroupSet) Delta(newSet UpstreamGroupSet) sksets.ResourceDelta { return s.Generic().Delta(newSet.Generic()) } +func (s *upstreamGroupSet) Clone() UpstreamGroupSet { + if s == nil { + return nil + } + return &upstreamGroupSet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} + type ProxySet interface { // Get the set stored keys Keys() sets.String // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. List(filterResource ...func(*gloo_solo_io_v1.Proxy) bool) []*gloo_solo_io_v1.Proxy // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. UnsortedList(filterResource ...func(*gloo_solo_io_v1.Proxy) bool) []*gloo_solo_io_v1.Proxy // Return the Set as a map of key to resource. Map() map[string]*gloo_solo_io_v1.Proxy @@ -674,6 +715,8 @@ type ProxySet interface { Generic() sksets.ResourceSet // returns the delta between this and and another ProxySet Delta(newSet ProxySet) sksets.ResourceDelta + // Create a deep copy of the current ProxySet + Clone() ProxySet } func makeGenericProxySet(proxyList []*gloo_solo_io_v1.Proxy) sksets.ResourceSet { @@ -713,6 +756,7 @@ func (s *proxySet) List(filterResource ...func(*gloo_solo_io_v1.Proxy) bool) []* } var genericFilters []func(ezkube.ResourceId) bool for _, filter := range filterResource { + filter := filter genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { return filter(obj.(*gloo_solo_io_v1.Proxy)) }) @@ -732,6 +776,7 @@ func (s *proxySet) UnsortedList(filterResource ...func(*gloo_solo_io_v1.Proxy) b } var genericFilters []func(ezkube.ResourceId) bool for _, filter := range filterResource { + filter := filter genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { return filter(obj.(*gloo_solo_io_v1.Proxy)) }) @@ -852,3 +897,10 @@ func (s *proxySet) Delta(newSet ProxySet) sksets.ResourceDelta { } return s.Generic().Delta(newSet.Generic()) } + +func (s *proxySet) Clone() ProxySet { + if s == nil { + return nil + } + return &proxySet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} diff --git a/pkg/api/gloo.solo.io/v1/settings.pb.clone.go b/pkg/api/gloo.solo.io/v1/settings.pb.clone.go new file mode 100644 index 000000000..265db91bc --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/settings.pb.clone.go @@ -0,0 +1,1411 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/settings.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_aws "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/aws" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_circuit_breaker "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/circuit_breaker" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_caching "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/caching" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_extproc "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/extproc" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_rbac "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/rbac" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_consul "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/consul" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *SettingsSpec) Clone() proto.Message { + var target *SettingsSpec + if m == nil { + return target + } + target = &SettingsSpec{} + + target.DiscoveryNamespace = m.GetDiscoveryNamespace() + + if m.GetWatchNamespaces() != nil { + target.WatchNamespaces = make([]string, len(m.GetWatchNamespaces())) + for idx, v := range m.GetWatchNamespaces() { + + target.WatchNamespaces[idx] = v + + } + } + + if h, ok := interface{}(m.GetSecretOptions()).(clone.Cloner); ok { + target.SecretOptions = h.Clone().(*SettingsSpec_SecretOptions) + } else { + target.SecretOptions = proto.Clone(m.GetSecretOptions()).(*SettingsSpec_SecretOptions) + } + + if h, ok := interface{}(m.GetRefreshRate()).(clone.Cloner); ok { + target.RefreshRate = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.RefreshRate = proto.Clone(m.GetRefreshRate()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + target.DevMode = m.GetDevMode() + + target.Linkerd = m.GetLinkerd() + + if h, ok := interface{}(m.GetKnative()).(clone.Cloner); ok { + target.Knative = h.Clone().(*SettingsSpec_KnativeOptions) + } else { + target.Knative = proto.Clone(m.GetKnative()).(*SettingsSpec_KnativeOptions) + } + + if h, ok := interface{}(m.GetDiscovery()).(clone.Cloner); ok { + target.Discovery = h.Clone().(*SettingsSpec_DiscoveryOptions) + } else { + target.Discovery = proto.Clone(m.GetDiscovery()).(*SettingsSpec_DiscoveryOptions) + } + + if h, ok := interface{}(m.GetGloo()).(clone.Cloner); ok { + target.Gloo = h.Clone().(*GlooOptions) + } else { + target.Gloo = proto.Clone(m.GetGloo()).(*GlooOptions) + } + + if h, ok := interface{}(m.GetGateway()).(clone.Cloner); ok { + target.Gateway = h.Clone().(*GatewayOptions) + } else { + target.Gateway = proto.Clone(m.GetGateway()).(*GatewayOptions) + } + + if h, ok := interface{}(m.GetConsul()).(clone.Cloner); ok { + target.Consul = h.Clone().(*SettingsSpec_ConsulConfiguration) + } else { + target.Consul = proto.Clone(m.GetConsul()).(*SettingsSpec_ConsulConfiguration) + } + + if h, ok := interface{}(m.GetConsulDiscovery()).(clone.Cloner); ok { + target.ConsulDiscovery = h.Clone().(*SettingsSpec_ConsulUpstreamDiscoveryConfiguration) + } else { + target.ConsulDiscovery = proto.Clone(m.GetConsulDiscovery()).(*SettingsSpec_ConsulUpstreamDiscoveryConfiguration) + } + + if h, ok := interface{}(m.GetKubernetes()).(clone.Cloner); ok { + target.Kubernetes = h.Clone().(*SettingsSpec_KubernetesConfiguration) + } else { + target.Kubernetes = proto.Clone(m.GetKubernetes()).(*SettingsSpec_KubernetesConfiguration) + } + + if h, ok := interface{}(m.GetExtensions()).(clone.Cloner); ok { + target.Extensions = h.Clone().(*Extensions) + } else { + target.Extensions = proto.Clone(m.GetExtensions()).(*Extensions) + } + + if h, ok := interface{}(m.GetRatelimit()).(clone.Cloner); ok { + target.Ratelimit = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.ServiceSettings) + } else { + target.Ratelimit = proto.Clone(m.GetRatelimit()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.ServiceSettings) + } + + if h, ok := interface{}(m.GetRatelimitServer()).(clone.Cloner); ok { + target.RatelimitServer = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.Settings) + } else { + target.RatelimitServer = proto.Clone(m.GetRatelimitServer()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.Settings) + } + + if h, ok := interface{}(m.GetRbac()).(clone.Cloner); ok { + target.Rbac = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_rbac.Settings) + } else { + target.Rbac = proto.Clone(m.GetRbac()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_rbac.Settings) + } + + if h, ok := interface{}(m.GetExtauth()).(clone.Cloner); ok { + target.Extauth = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1.Settings) + } else { + target.Extauth = proto.Clone(m.GetExtauth()).(*github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1.Settings) + } + + if m.GetNamedExtauth() != nil { + target.NamedExtauth = make(map[string]*github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1.Settings, len(m.GetNamedExtauth())) + for k, v := range m.GetNamedExtauth() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.NamedExtauth[k] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1.Settings) + } else { + target.NamedExtauth[k] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1.Settings) + } + + } + } + + if h, ok := interface{}(m.GetCachingServer()).(clone.Cloner); ok { + target.CachingServer = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_caching.Settings) + } else { + target.CachingServer = proto.Clone(m.GetCachingServer()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_caching.Settings) + } + + if h, ok := interface{}(m.GetObservabilityOptions()).(clone.Cloner); ok { + target.ObservabilityOptions = h.Clone().(*SettingsSpec_ObservabilityOptions) + } else { + target.ObservabilityOptions = proto.Clone(m.GetObservabilityOptions()).(*SettingsSpec_ObservabilityOptions) + } + + if h, ok := interface{}(m.GetUpstreamOptions()).(clone.Cloner); ok { + target.UpstreamOptions = h.Clone().(*UpstreamOptions) + } else { + target.UpstreamOptions = proto.Clone(m.GetUpstreamOptions()).(*UpstreamOptions) + } + + if h, ok := interface{}(m.GetConsoleOptions()).(clone.Cloner); ok { + target.ConsoleOptions = h.Clone().(*ConsoleOptions) + } else { + target.ConsoleOptions = proto.Clone(m.GetConsoleOptions()).(*ConsoleOptions) + } + + if h, ok := interface{}(m.GetExtProc()).(clone.Cloner); ok { + target.ExtProc = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_extproc.Settings) + } else { + target.ExtProc = proto.Clone(m.GetExtProc()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_extproc.Settings) + } + + if m.GetWatchNamespaceSelectors() != nil { + target.WatchNamespaceSelectors = make([]*LabelSelector, len(m.GetWatchNamespaceSelectors())) + for idx, v := range m.GetWatchNamespaceSelectors() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.WatchNamespaceSelectors[idx] = h.Clone().(*LabelSelector) + } else { + target.WatchNamespaceSelectors[idx] = proto.Clone(v).(*LabelSelector) + } + + } + } + + switch m.ConfigSource.(type) { + + case *SettingsSpec_KubernetesConfigSource: + + if h, ok := interface{}(m.GetKubernetesConfigSource()).(clone.Cloner); ok { + target.ConfigSource = &SettingsSpec_KubernetesConfigSource{ + KubernetesConfigSource: h.Clone().(*SettingsSpec_KubernetesCrds), + } + } else { + target.ConfigSource = &SettingsSpec_KubernetesConfigSource{ + KubernetesConfigSource: proto.Clone(m.GetKubernetesConfigSource()).(*SettingsSpec_KubernetesCrds), + } + } + + case *SettingsSpec_DirectoryConfigSource: + + if h, ok := interface{}(m.GetDirectoryConfigSource()).(clone.Cloner); ok { + target.ConfigSource = &SettingsSpec_DirectoryConfigSource{ + DirectoryConfigSource: h.Clone().(*SettingsSpec_Directory), + } + } else { + target.ConfigSource = &SettingsSpec_DirectoryConfigSource{ + DirectoryConfigSource: proto.Clone(m.GetDirectoryConfigSource()).(*SettingsSpec_Directory), + } + } + + case *SettingsSpec_ConsulKvSource: + + if h, ok := interface{}(m.GetConsulKvSource()).(clone.Cloner); ok { + target.ConfigSource = &SettingsSpec_ConsulKvSource{ + ConsulKvSource: h.Clone().(*SettingsSpec_ConsulKv), + } + } else { + target.ConfigSource = &SettingsSpec_ConsulKvSource{ + ConsulKvSource: proto.Clone(m.GetConsulKvSource()).(*SettingsSpec_ConsulKv), + } + } + + } + + switch m.SecretSource.(type) { + + case *SettingsSpec_KubernetesSecretSource: + + if h, ok := interface{}(m.GetKubernetesSecretSource()).(clone.Cloner); ok { + target.SecretSource = &SettingsSpec_KubernetesSecretSource{ + KubernetesSecretSource: h.Clone().(*SettingsSpec_KubernetesSecrets), + } + } else { + target.SecretSource = &SettingsSpec_KubernetesSecretSource{ + KubernetesSecretSource: proto.Clone(m.GetKubernetesSecretSource()).(*SettingsSpec_KubernetesSecrets), + } + } + + case *SettingsSpec_VaultSecretSource: + + if h, ok := interface{}(m.GetVaultSecretSource()).(clone.Cloner); ok { + target.SecretSource = &SettingsSpec_VaultSecretSource{ + VaultSecretSource: h.Clone().(*SettingsSpec_VaultSecrets), + } + } else { + target.SecretSource = &SettingsSpec_VaultSecretSource{ + VaultSecretSource: proto.Clone(m.GetVaultSecretSource()).(*SettingsSpec_VaultSecrets), + } + } + + case *SettingsSpec_DirectorySecretSource: + + if h, ok := interface{}(m.GetDirectorySecretSource()).(clone.Cloner); ok { + target.SecretSource = &SettingsSpec_DirectorySecretSource{ + DirectorySecretSource: h.Clone().(*SettingsSpec_Directory), + } + } else { + target.SecretSource = &SettingsSpec_DirectorySecretSource{ + DirectorySecretSource: proto.Clone(m.GetDirectorySecretSource()).(*SettingsSpec_Directory), + } + } + + } + + switch m.ArtifactSource.(type) { + + case *SettingsSpec_KubernetesArtifactSource: + + if h, ok := interface{}(m.GetKubernetesArtifactSource()).(clone.Cloner); ok { + target.ArtifactSource = &SettingsSpec_KubernetesArtifactSource{ + KubernetesArtifactSource: h.Clone().(*SettingsSpec_KubernetesConfigmaps), + } + } else { + target.ArtifactSource = &SettingsSpec_KubernetesArtifactSource{ + KubernetesArtifactSource: proto.Clone(m.GetKubernetesArtifactSource()).(*SettingsSpec_KubernetesConfigmaps), + } + } + + case *SettingsSpec_DirectoryArtifactSource: + + if h, ok := interface{}(m.GetDirectoryArtifactSource()).(clone.Cloner); ok { + target.ArtifactSource = &SettingsSpec_DirectoryArtifactSource{ + DirectoryArtifactSource: h.Clone().(*SettingsSpec_Directory), + } + } else { + target.ArtifactSource = &SettingsSpec_DirectoryArtifactSource{ + DirectoryArtifactSource: proto.Clone(m.GetDirectoryArtifactSource()).(*SettingsSpec_Directory), + } + } + + case *SettingsSpec_ConsulKvArtifactSource: + + if h, ok := interface{}(m.GetConsulKvArtifactSource()).(clone.Cloner); ok { + target.ArtifactSource = &SettingsSpec_ConsulKvArtifactSource{ + ConsulKvArtifactSource: h.Clone().(*SettingsSpec_ConsulKv), + } + } else { + target.ArtifactSource = &SettingsSpec_ConsulKvArtifactSource{ + ConsulKvArtifactSource: proto.Clone(m.GetConsulKvArtifactSource()).(*SettingsSpec_ConsulKv), + } + } + + } + + return target +} + +// Clone function +func (m *LabelSelector) Clone() proto.Message { + var target *LabelSelector + if m == nil { + return target + } + target = &LabelSelector{} + + if m.GetMatchLabels() != nil { + target.MatchLabels = make(map[string]string, len(m.GetMatchLabels())) + for k, v := range m.GetMatchLabels() { + + target.MatchLabels[k] = v + + } + } + + if m.GetMatchExpressions() != nil { + target.MatchExpressions = make([]*LabelSelectorRequirement, len(m.GetMatchExpressions())) + for idx, v := range m.GetMatchExpressions() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.MatchExpressions[idx] = h.Clone().(*LabelSelectorRequirement) + } else { + target.MatchExpressions[idx] = proto.Clone(v).(*LabelSelectorRequirement) + } + + } + } + + return target +} + +// Clone function +func (m *LabelSelectorRequirement) Clone() proto.Message { + var target *LabelSelectorRequirement + if m == nil { + return target + } + target = &LabelSelectorRequirement{} + + target.Key = m.GetKey() + + target.Operator = m.GetOperator() + + if m.GetValues() != nil { + target.Values = make([]string, len(m.GetValues())) + for idx, v := range m.GetValues() { + + target.Values[idx] = v + + } + } + + return target +} + +// Clone function +func (m *UpstreamOptions) Clone() proto.Message { + var target *UpstreamOptions + if m == nil { + return target + } + target = &UpstreamOptions{} + + if h, ok := interface{}(m.GetSslParameters()).(clone.Cloner); ok { + target.SslParameters = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.SslParameters) + } else { + target.SslParameters = proto.Clone(m.GetSslParameters()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.SslParameters) + } + + if m.GetGlobalAnnotations() != nil { + target.GlobalAnnotations = make(map[string]string, len(m.GetGlobalAnnotations())) + for k, v := range m.GetGlobalAnnotations() { + + target.GlobalAnnotations[k] = v + + } + } + + return target +} + +// Clone function +func (m *GlooOptions) Clone() proto.Message { + var target *GlooOptions + if m == nil { + return target + } + target = &GlooOptions{} + + target.XdsBindAddr = m.GetXdsBindAddr() + + target.ValidationBindAddr = m.GetValidationBindAddr() + + if h, ok := interface{}(m.GetCircuitBreakers()).(clone.Cloner); ok { + target.CircuitBreakers = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_circuit_breaker.CircuitBreakerConfig) + } else { + target.CircuitBreakers = proto.Clone(m.GetCircuitBreakers()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_circuit_breaker.CircuitBreakerConfig) + } + + if h, ok := interface{}(m.GetEndpointsWarmingTimeout()).(clone.Cloner); ok { + target.EndpointsWarmingTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.EndpointsWarmingTimeout = proto.Clone(m.GetEndpointsWarmingTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetAwsOptions()).(clone.Cloner); ok { + target.AwsOptions = h.Clone().(*GlooOptions_AWSOptions) + } else { + target.AwsOptions = proto.Clone(m.GetAwsOptions()).(*GlooOptions_AWSOptions) + } + + if h, ok := interface{}(m.GetInvalidConfigPolicy()).(clone.Cloner); ok { + target.InvalidConfigPolicy = h.Clone().(*GlooOptions_InvalidConfigPolicy) + } else { + target.InvalidConfigPolicy = proto.Clone(m.GetInvalidConfigPolicy()).(*GlooOptions_InvalidConfigPolicy) + } + + target.DisableKubernetesDestinations = m.GetDisableKubernetesDestinations() + + if h, ok := interface{}(m.GetDisableGrpcWeb()).(clone.Cloner); ok { + target.DisableGrpcWeb = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.DisableGrpcWeb = proto.Clone(m.GetDisableGrpcWeb()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetDisableProxyGarbageCollection()).(clone.Cloner); ok { + target.DisableProxyGarbageCollection = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.DisableProxyGarbageCollection = proto.Clone(m.GetDisableProxyGarbageCollection()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetRegexMaxProgramSize()).(clone.Cloner); ok { + target.RegexMaxProgramSize = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.RegexMaxProgramSize = proto.Clone(m.GetRegexMaxProgramSize()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + target.RestXdsBindAddr = m.GetRestXdsBindAddr() + + if h, ok := interface{}(m.GetEnableRestEds()).(clone.Cloner); ok { + target.EnableRestEds = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.EnableRestEds = proto.Clone(m.GetEnableRestEds()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetFailoverUpstreamDnsPollingInterval()).(clone.Cloner); ok { + target.FailoverUpstreamDnsPollingInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.FailoverUpstreamDnsPollingInterval = proto.Clone(m.GetFailoverUpstreamDnsPollingInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetRemoveUnusedFilters()).(clone.Cloner); ok { + target.RemoveUnusedFilters = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.RemoveUnusedFilters = proto.Clone(m.GetRemoveUnusedFilters()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + target.ProxyDebugBindAddr = m.GetProxyDebugBindAddr() + + if h, ok := interface{}(m.GetLogTransformationRequestResponseInfo()).(clone.Cloner); ok { + target.LogTransformationRequestResponseInfo = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.LogTransformationRequestResponseInfo = proto.Clone(m.GetLogTransformationRequestResponseInfo()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetTransformationEscapeCharacters()).(clone.Cloner); ok { + target.TransformationEscapeCharacters = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.TransformationEscapeCharacters = proto.Clone(m.GetTransformationEscapeCharacters()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetIstioOptions()).(clone.Cloner); ok { + target.IstioOptions = h.Clone().(*GlooOptions_IstioOptions) + } else { + target.IstioOptions = proto.Clone(m.GetIstioOptions()).(*GlooOptions_IstioOptions) + } + + if h, ok := interface{}(m.GetEnableAutoWebsocketTransformationPassthrough()).(clone.Cloner); ok { + target.EnableAutoWebsocketTransformationPassthrough = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.EnableAutoWebsocketTransformationPassthrough = proto.Clone(m.GetEnableAutoWebsocketTransformationPassthrough()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *VirtualServiceOptions) Clone() proto.Message { + var target *VirtualServiceOptions + if m == nil { + return target + } + target = &VirtualServiceOptions{} + + if h, ok := interface{}(m.GetOneWayTls()).(clone.Cloner); ok { + target.OneWayTls = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.OneWayTls = proto.Clone(m.GetOneWayTls()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *GatewayOptions) Clone() proto.Message { + var target *GatewayOptions + if m == nil { + return target + } + target = &GatewayOptions{} + + target.ValidationServerAddr = m.GetValidationServerAddr() + + if h, ok := interface{}(m.GetValidation()).(clone.Cloner); ok { + target.Validation = h.Clone().(*GatewayOptions_ValidationOptions) + } else { + target.Validation = proto.Clone(m.GetValidation()).(*GatewayOptions_ValidationOptions) + } + + target.ReadGatewaysFromAllNamespaces = m.GetReadGatewaysFromAllNamespaces() + + target.AlwaysSortRouteTableRoutes = m.GetAlwaysSortRouteTableRoutes() + + target.CompressedProxySpec = m.GetCompressedProxySpec() + + if h, ok := interface{}(m.GetVirtualServiceOptions()).(clone.Cloner); ok { + target.VirtualServiceOptions = h.Clone().(*VirtualServiceOptions) + } else { + target.VirtualServiceOptions = proto.Clone(m.GetVirtualServiceOptions()).(*VirtualServiceOptions) + } + + if h, ok := interface{}(m.GetPersistProxySpec()).(clone.Cloner); ok { + target.PersistProxySpec = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.PersistProxySpec = proto.Clone(m.GetPersistProxySpec()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetEnableGatewayController()).(clone.Cloner); ok { + target.EnableGatewayController = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.EnableGatewayController = proto.Clone(m.GetEnableGatewayController()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetIsolateVirtualHostsBySslConfig()).(clone.Cloner); ok { + target.IsolateVirtualHostsBySslConfig = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.IsolateVirtualHostsBySslConfig = proto.Clone(m.GetIsolateVirtualHostsBySslConfig()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetTranslateEmptyGateways()).(clone.Cloner); ok { + target.TranslateEmptyGateways = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.TranslateEmptyGateways = proto.Clone(m.GetTranslateEmptyGateways()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *ConsoleOptions) Clone() proto.Message { + var target *ConsoleOptions + if m == nil { + return target + } + target = &ConsoleOptions{} + + return target +} + +// Clone function +func (m *GraphqlOptions) Clone() proto.Message { + var target *GraphqlOptions + if m == nil { + return target + } + target = &GraphqlOptions{} + + return target +} + +// Clone function +func (m *SettingsStatus) Clone() proto.Message { + var target *SettingsStatus + if m == nil { + return target + } + target = &SettingsStatus{} + + target.State = m.GetState() + + target.Reason = m.GetReason() + + target.ReportedBy = m.GetReportedBy() + + if m.GetSubresourceStatuses() != nil { + target.SubresourceStatuses = make(map[string]*SettingsStatus, len(m.GetSubresourceStatuses())) + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SubresourceStatuses[k] = h.Clone().(*SettingsStatus) + } else { + target.SubresourceStatuses[k] = proto.Clone(v).(*SettingsStatus) + } + + } + } + + if h, ok := interface{}(m.GetDetails()).(clone.Cloner); ok { + target.Details = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Details = proto.Clone(m.GetDetails()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + return target +} + +// Clone function +func (m *SettingsNamespacedStatuses) Clone() proto.Message { + var target *SettingsNamespacedStatuses + if m == nil { + return target + } + target = &SettingsNamespacedStatuses{} + + if m.GetStatuses() != nil { + target.Statuses = make(map[string]*SettingsStatus, len(m.GetStatuses())) + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Statuses[k] = h.Clone().(*SettingsStatus) + } else { + target.Statuses[k] = proto.Clone(v).(*SettingsStatus) + } + + } + } + + return target +} + +// Clone function +func (m *SettingsSpec_SecretOptions) Clone() proto.Message { + var target *SettingsSpec_SecretOptions + if m == nil { + return target + } + target = &SettingsSpec_SecretOptions{} + + if m.GetSources() != nil { + target.Sources = make([]*SettingsSpec_SecretOptions_Source, len(m.GetSources())) + for idx, v := range m.GetSources() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Sources[idx] = h.Clone().(*SettingsSpec_SecretOptions_Source) + } else { + target.Sources[idx] = proto.Clone(v).(*SettingsSpec_SecretOptions_Source) + } + + } + } + + return target +} + +// Clone function +func (m *SettingsSpec_KubernetesCrds) Clone() proto.Message { + var target *SettingsSpec_KubernetesCrds + if m == nil { + return target + } + target = &SettingsSpec_KubernetesCrds{} + + return target +} + +// Clone function +func (m *SettingsSpec_KubernetesSecrets) Clone() proto.Message { + var target *SettingsSpec_KubernetesSecrets + if m == nil { + return target + } + target = &SettingsSpec_KubernetesSecrets{} + + return target +} + +// Clone function +func (m *SettingsSpec_VaultSecrets) Clone() proto.Message { + var target *SettingsSpec_VaultSecrets + if m == nil { + return target + } + target = &SettingsSpec_VaultSecrets{} + + target.Token = m.GetToken() + + target.Address = m.GetAddress() + + target.CaCert = m.GetCaCert() + + target.CaPath = m.GetCaPath() + + target.ClientCert = m.GetClientCert() + + target.ClientKey = m.GetClientKey() + + target.TlsServerName = m.GetTlsServerName() + + if h, ok := interface{}(m.GetInsecure()).(clone.Cloner); ok { + target.Insecure = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Insecure = proto.Clone(m.GetInsecure()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + target.RootKey = m.GetRootKey() + + target.PathPrefix = m.GetPathPrefix() + + if h, ok := interface{}(m.GetTlsConfig()).(clone.Cloner); ok { + target.TlsConfig = h.Clone().(*SettingsSpec_VaultTlsConfig) + } else { + target.TlsConfig = proto.Clone(m.GetTlsConfig()).(*SettingsSpec_VaultTlsConfig) + } + + switch m.AuthMethod.(type) { + + case *SettingsSpec_VaultSecrets_AccessToken: + + target.AuthMethod = &SettingsSpec_VaultSecrets_AccessToken{ + AccessToken: m.GetAccessToken(), + } + + case *SettingsSpec_VaultSecrets_Aws: + + if h, ok := interface{}(m.GetAws()).(clone.Cloner); ok { + target.AuthMethod = &SettingsSpec_VaultSecrets_Aws{ + Aws: h.Clone().(*SettingsSpec_VaultAwsAuth), + } + } else { + target.AuthMethod = &SettingsSpec_VaultSecrets_Aws{ + Aws: proto.Clone(m.GetAws()).(*SettingsSpec_VaultAwsAuth), + } + } + + } + + return target +} + +// Clone function +func (m *SettingsSpec_VaultAwsAuth) Clone() proto.Message { + var target *SettingsSpec_VaultAwsAuth + if m == nil { + return target + } + target = &SettingsSpec_VaultAwsAuth{} + + target.VaultRole = m.GetVaultRole() + + target.Region = m.GetRegion() + + target.IamServerIdHeader = m.GetIamServerIdHeader() + + target.MountPath = m.GetMountPath() + + target.AccessKeyId = m.GetAccessKeyId() + + target.SecretAccessKey = m.GetSecretAccessKey() + + target.SessionToken = m.GetSessionToken() + + target.LeaseIncrement = m.GetLeaseIncrement() + + return target +} + +// Clone function +func (m *SettingsSpec_VaultTlsConfig) Clone() proto.Message { + var target *SettingsSpec_VaultTlsConfig + if m == nil { + return target + } + target = &SettingsSpec_VaultTlsConfig{} + + target.CaCert = m.GetCaCert() + + target.CaPath = m.GetCaPath() + + target.ClientCert = m.GetClientCert() + + target.ClientKey = m.GetClientKey() + + target.TlsServerName = m.GetTlsServerName() + + if h, ok := interface{}(m.GetInsecure()).(clone.Cloner); ok { + target.Insecure = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Insecure = proto.Clone(m.GetInsecure()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *SettingsSpec_ConsulKv) Clone() proto.Message { + var target *SettingsSpec_ConsulKv + if m == nil { + return target + } + target = &SettingsSpec_ConsulKv{} + + target.RootKey = m.GetRootKey() + + return target +} + +// Clone function +func (m *SettingsSpec_KubernetesConfigmaps) Clone() proto.Message { + var target *SettingsSpec_KubernetesConfigmaps + if m == nil { + return target + } + target = &SettingsSpec_KubernetesConfigmaps{} + + return target +} + +// Clone function +func (m *SettingsSpec_Directory) Clone() proto.Message { + var target *SettingsSpec_Directory + if m == nil { + return target + } + target = &SettingsSpec_Directory{} + + target.Directory = m.GetDirectory() + + return target +} + +// Clone function +func (m *SettingsSpec_KnativeOptions) Clone() proto.Message { + var target *SettingsSpec_KnativeOptions + if m == nil { + return target + } + target = &SettingsSpec_KnativeOptions{} + + target.ClusterIngressProxyAddress = m.GetClusterIngressProxyAddress() + + target.KnativeExternalProxyAddress = m.GetKnativeExternalProxyAddress() + + target.KnativeInternalProxyAddress = m.GetKnativeInternalProxyAddress() + + return target +} + +// Clone function +func (m *SettingsSpec_DiscoveryOptions) Clone() proto.Message { + var target *SettingsSpec_DiscoveryOptions + if m == nil { + return target + } + target = &SettingsSpec_DiscoveryOptions{} + + target.FdsMode = m.GetFdsMode() + + if h, ok := interface{}(m.GetUdsOptions()).(clone.Cloner); ok { + target.UdsOptions = h.Clone().(*SettingsSpec_DiscoveryOptions_UdsOptions) + } else { + target.UdsOptions = proto.Clone(m.GetUdsOptions()).(*SettingsSpec_DiscoveryOptions_UdsOptions) + } + + if h, ok := interface{}(m.GetFdsOptions()).(clone.Cloner); ok { + target.FdsOptions = h.Clone().(*SettingsSpec_DiscoveryOptions_FdsOptions) + } else { + target.FdsOptions = proto.Clone(m.GetFdsOptions()).(*SettingsSpec_DiscoveryOptions_FdsOptions) + } + + return target +} + +// Clone function +func (m *SettingsSpec_ConsulConfiguration) Clone() proto.Message { + var target *SettingsSpec_ConsulConfiguration + if m == nil { + return target + } + target = &SettingsSpec_ConsulConfiguration{} + + target.Address = m.GetAddress() + + target.Datacenter = m.GetDatacenter() + + target.Username = m.GetUsername() + + target.Password = m.GetPassword() + + target.Token = m.GetToken() + + target.CaFile = m.GetCaFile() + + target.CaPath = m.GetCaPath() + + target.CertFile = m.GetCertFile() + + target.KeyFile = m.GetKeyFile() + + if h, ok := interface{}(m.GetInsecureSkipVerify()).(clone.Cloner); ok { + target.InsecureSkipVerify = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.InsecureSkipVerify = proto.Clone(m.GetInsecureSkipVerify()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetWaitTime()).(clone.Cloner); ok { + target.WaitTime = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.WaitTime = proto.Clone(m.GetWaitTime()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetServiceDiscovery()).(clone.Cloner); ok { + target.ServiceDiscovery = h.Clone().(*SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions) + } else { + target.ServiceDiscovery = proto.Clone(m.GetServiceDiscovery()).(*SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions) + } + + target.HttpAddress = m.GetHttpAddress() + + target.DnsAddress = m.GetDnsAddress() + + if h, ok := interface{}(m.GetDnsPollingInterval()).(clone.Cloner); ok { + target.DnsPollingInterval = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.DnsPollingInterval = proto.Clone(m.GetDnsPollingInterval()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + return target +} + +// Clone function +func (m *SettingsSpec_ConsulUpstreamDiscoveryConfiguration) Clone() proto.Message { + var target *SettingsSpec_ConsulUpstreamDiscoveryConfiguration + if m == nil { + return target + } + target = &SettingsSpec_ConsulUpstreamDiscoveryConfiguration{} + + target.UseTlsTagging = m.GetUseTlsTagging() + + target.TlsTagName = m.GetTlsTagName() + + if h, ok := interface{}(m.GetRootCa()).(clone.Cloner); ok { + target.RootCa = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } else { + target.RootCa = proto.Clone(m.GetRootCa()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef) + } + + target.SplitTlsServices = m.GetSplitTlsServices() + + target.ConsistencyMode = m.GetConsistencyMode() + + if h, ok := interface{}(m.GetQueryOptions()).(clone.Cloner); ok { + target.QueryOptions = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_consul.QueryOptions) + } else { + target.QueryOptions = proto.Clone(m.GetQueryOptions()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_consul.QueryOptions) + } + + if m.GetServiceTagsAllowlist() != nil { + target.ServiceTagsAllowlist = make([]string, len(m.GetServiceTagsAllowlist())) + for idx, v := range m.GetServiceTagsAllowlist() { + + target.ServiceTagsAllowlist[idx] = v + + } + } + + if h, ok := interface{}(m.GetEdsBlockingQueries()).(clone.Cloner); ok { + target.EdsBlockingQueries = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.EdsBlockingQueries = proto.Clone(m.GetEdsBlockingQueries()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *SettingsSpec_KubernetesConfiguration) Clone() proto.Message { + var target *SettingsSpec_KubernetesConfiguration + if m == nil { + return target + } + target = &SettingsSpec_KubernetesConfiguration{} + + if h, ok := interface{}(m.GetRateLimits()).(clone.Cloner); ok { + target.RateLimits = h.Clone().(*SettingsSpec_KubernetesConfiguration_RateLimits) + } else { + target.RateLimits = proto.Clone(m.GetRateLimits()).(*SettingsSpec_KubernetesConfiguration_RateLimits) + } + + return target +} + +// Clone function +func (m *SettingsSpec_ObservabilityOptions) Clone() proto.Message { + var target *SettingsSpec_ObservabilityOptions + if m == nil { + return target + } + target = &SettingsSpec_ObservabilityOptions{} + + if h, ok := interface{}(m.GetGrafanaIntegration()).(clone.Cloner); ok { + target.GrafanaIntegration = h.Clone().(*SettingsSpec_ObservabilityOptions_GrafanaIntegration) + } else { + target.GrafanaIntegration = proto.Clone(m.GetGrafanaIntegration()).(*SettingsSpec_ObservabilityOptions_GrafanaIntegration) + } + + if m.GetConfigStatusMetricLabels() != nil { + target.ConfigStatusMetricLabels = make(map[string]*SettingsSpec_ObservabilityOptions_MetricLabels, len(m.GetConfigStatusMetricLabels())) + for k, v := range m.GetConfigStatusMetricLabels() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.ConfigStatusMetricLabels[k] = h.Clone().(*SettingsSpec_ObservabilityOptions_MetricLabels) + } else { + target.ConfigStatusMetricLabels[k] = proto.Clone(v).(*SettingsSpec_ObservabilityOptions_MetricLabels) + } + + } + } + + return target +} + +// Clone function +func (m *SettingsSpec_SecretOptions_Source) Clone() proto.Message { + var target *SettingsSpec_SecretOptions_Source + if m == nil { + return target + } + target = &SettingsSpec_SecretOptions_Source{} + + switch m.Source.(type) { + + case *SettingsSpec_SecretOptions_Source_Kubernetes: + + if h, ok := interface{}(m.GetKubernetes()).(clone.Cloner); ok { + target.Source = &SettingsSpec_SecretOptions_Source_Kubernetes{ + Kubernetes: h.Clone().(*SettingsSpec_KubernetesSecrets), + } + } else { + target.Source = &SettingsSpec_SecretOptions_Source_Kubernetes{ + Kubernetes: proto.Clone(m.GetKubernetes()).(*SettingsSpec_KubernetesSecrets), + } + } + + case *SettingsSpec_SecretOptions_Source_Vault: + + if h, ok := interface{}(m.GetVault()).(clone.Cloner); ok { + target.Source = &SettingsSpec_SecretOptions_Source_Vault{ + Vault: h.Clone().(*SettingsSpec_VaultSecrets), + } + } else { + target.Source = &SettingsSpec_SecretOptions_Source_Vault{ + Vault: proto.Clone(m.GetVault()).(*SettingsSpec_VaultSecrets), + } + } + + case *SettingsSpec_SecretOptions_Source_Directory: + + if h, ok := interface{}(m.GetDirectory()).(clone.Cloner); ok { + target.Source = &SettingsSpec_SecretOptions_Source_Directory{ + Directory: h.Clone().(*SettingsSpec_Directory), + } + } else { + target.Source = &SettingsSpec_SecretOptions_Source_Directory{ + Directory: proto.Clone(m.GetDirectory()).(*SettingsSpec_Directory), + } + } + + } + + return target +} + +// Clone function +func (m *SettingsSpec_DiscoveryOptions_UdsOptions) Clone() proto.Message { + var target *SettingsSpec_DiscoveryOptions_UdsOptions + if m == nil { + return target + } + target = &SettingsSpec_DiscoveryOptions_UdsOptions{} + + if h, ok := interface{}(m.GetEnabled()).(clone.Cloner); ok { + target.Enabled = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.Enabled = proto.Clone(m.GetEnabled()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if m.GetWatchLabels() != nil { + target.WatchLabels = make(map[string]string, len(m.GetWatchLabels())) + for k, v := range m.GetWatchLabels() { + + target.WatchLabels[k] = v + + } + } + + return target +} + +// Clone function +func (m *SettingsSpec_DiscoveryOptions_FdsOptions) Clone() proto.Message { + var target *SettingsSpec_DiscoveryOptions_FdsOptions + if m == nil { + return target + } + target = &SettingsSpec_DiscoveryOptions_FdsOptions{} + + return target +} + +// Clone function +func (m *SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions) Clone() proto.Message { + var target *SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions + if m == nil { + return target + } + target = &SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions{} + + if m.GetDataCenters() != nil { + target.DataCenters = make([]string, len(m.GetDataCenters())) + for idx, v := range m.GetDataCenters() { + + target.DataCenters[idx] = v + + } + } + + return target +} + +// Clone function +func (m *SettingsSpec_KubernetesConfiguration_RateLimits) Clone() proto.Message { + var target *SettingsSpec_KubernetesConfiguration_RateLimits + if m == nil { + return target + } + target = &SettingsSpec_KubernetesConfiguration_RateLimits{} + + target.QPS = m.GetQPS() + + target.Burst = m.GetBurst() + + return target +} + +// Clone function +func (m *SettingsSpec_ObservabilityOptions_GrafanaIntegration) Clone() proto.Message { + var target *SettingsSpec_ObservabilityOptions_GrafanaIntegration + if m == nil { + return target + } + target = &SettingsSpec_ObservabilityOptions_GrafanaIntegration{} + + if h, ok := interface{}(m.GetDefaultDashboardFolderId()).(clone.Cloner); ok { + target.DefaultDashboardFolderId = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.DefaultDashboardFolderId = proto.Clone(m.GetDefaultDashboardFolderId()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + target.DashboardPrefix = m.GetDashboardPrefix() + + target.ExtraMetricQueryParameters = m.GetExtraMetricQueryParameters() + + return target +} + +// Clone function +func (m *SettingsSpec_ObservabilityOptions_MetricLabels) Clone() proto.Message { + var target *SettingsSpec_ObservabilityOptions_MetricLabels + if m == nil { + return target + } + target = &SettingsSpec_ObservabilityOptions_MetricLabels{} + + if m.GetLabelToPath() != nil { + target.LabelToPath = make(map[string]string, len(m.GetLabelToPath())) + for k, v := range m.GetLabelToPath() { + + target.LabelToPath[k] = v + + } + } + + return target +} + +// Clone function +func (m *GlooOptions_AWSOptions) Clone() proto.Message { + var target *GlooOptions_AWSOptions + if m == nil { + return target + } + target = &GlooOptions_AWSOptions{} + + if h, ok := interface{}(m.GetPropagateOriginalRouting()).(clone.Cloner); ok { + target.PropagateOriginalRouting = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.PropagateOriginalRouting = proto.Clone(m.GetPropagateOriginalRouting()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetCredentialRefreshDelay()).(clone.Cloner); ok { + target.CredentialRefreshDelay = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.CredentialRefreshDelay = proto.Clone(m.GetCredentialRefreshDelay()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetFallbackToFirstFunction()).(clone.Cloner); ok { + target.FallbackToFirstFunction = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.FallbackToFirstFunction = proto.Clone(m.GetFallbackToFirstFunction()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + switch m.CredentialsFetcher.(type) { + + case *GlooOptions_AWSOptions_EnableCredentialsDiscovey: + + target.CredentialsFetcher = &GlooOptions_AWSOptions_EnableCredentialsDiscovey{ + EnableCredentialsDiscovey: m.GetEnableCredentialsDiscovey(), + } + + case *GlooOptions_AWSOptions_ServiceAccountCredentials: + + if h, ok := interface{}(m.GetServiceAccountCredentials()).(clone.Cloner); ok { + target.CredentialsFetcher = &GlooOptions_AWSOptions_ServiceAccountCredentials{ + ServiceAccountCredentials: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_aws.AWSLambdaConfig_ServiceAccountCredentials), + } + } else { + target.CredentialsFetcher = &GlooOptions_AWSOptions_ServiceAccountCredentials{ + ServiceAccountCredentials: proto.Clone(m.GetServiceAccountCredentials()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_aws.AWSLambdaConfig_ServiceAccountCredentials), + } + } + + } + + return target +} + +// Clone function +func (m *GlooOptions_InvalidConfigPolicy) Clone() proto.Message { + var target *GlooOptions_InvalidConfigPolicy + if m == nil { + return target + } + target = &GlooOptions_InvalidConfigPolicy{} + + target.ReplaceInvalidRoutes = m.GetReplaceInvalidRoutes() + + target.InvalidRouteResponseCode = m.GetInvalidRouteResponseCode() + + target.InvalidRouteResponseBody = m.GetInvalidRouteResponseBody() + + return target +} + +// Clone function +func (m *GlooOptions_IstioOptions) Clone() proto.Message { + var target *GlooOptions_IstioOptions + if m == nil { + return target + } + target = &GlooOptions_IstioOptions{} + + if h, ok := interface{}(m.GetAppendXForwardedHost()).(clone.Cloner); ok { + target.AppendXForwardedHost = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.AppendXForwardedHost = proto.Clone(m.GetAppendXForwardedHost()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetEnableAutoMtls()).(clone.Cloner); ok { + target.EnableAutoMtls = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.EnableAutoMtls = proto.Clone(m.GetEnableAutoMtls()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetEnableIntegration()).(clone.Cloner); ok { + target.EnableIntegration = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.EnableIntegration = proto.Clone(m.GetEnableIntegration()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *GatewayOptions_ValidationOptions) Clone() proto.Message { + var target *GatewayOptions_ValidationOptions + if m == nil { + return target + } + target = &GatewayOptions_ValidationOptions{} + + target.ProxyValidationServerAddr = m.GetProxyValidationServerAddr() + + target.ValidationWebhookTlsCert = m.GetValidationWebhookTlsCert() + + target.ValidationWebhookTlsKey = m.GetValidationWebhookTlsKey() + + target.IgnoreGlooValidationFailure = m.GetIgnoreGlooValidationFailure() + + if h, ok := interface{}(m.GetAlwaysAccept()).(clone.Cloner); ok { + target.AlwaysAccept = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.AlwaysAccept = proto.Clone(m.GetAlwaysAccept()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetAllowWarnings()).(clone.Cloner); ok { + target.AllowWarnings = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.AllowWarnings = proto.Clone(m.GetAllowWarnings()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetWarnRouteShortCircuiting()).(clone.Cloner); ok { + target.WarnRouteShortCircuiting = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.WarnRouteShortCircuiting = proto.Clone(m.GetWarnRouteShortCircuiting()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetDisableTransformationValidation()).(clone.Cloner); ok { + target.DisableTransformationValidation = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.DisableTransformationValidation = proto.Clone(m.GetDisableTransformationValidation()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetValidationServerGrpcMaxSizeBytes()).(clone.Cloner); ok { + target.ValidationServerGrpcMaxSizeBytes = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.Int32Value) + } else { + target.ValidationServerGrpcMaxSizeBytes = proto.Clone(m.GetValidationServerGrpcMaxSizeBytes()).(*google_golang_org_protobuf_types_known_wrapperspb.Int32Value) + } + + if h, ok := interface{}(m.GetServerEnabled()).(clone.Cloner); ok { + target.ServerEnabled = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.ServerEnabled = proto.Clone(m.GetServerEnabled()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetWarnMissingTlsSecret()).(clone.Cloner); ok { + target.WarnMissingTlsSecret = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.WarnMissingTlsSecret = proto.Clone(m.GetWarnMissingTlsSecret()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetFullEnvoyValidation()).(clone.Cloner); ok { + target.FullEnvoyValidation = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.FullEnvoyValidation = proto.Clone(m.GetFullEnvoyValidation()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + return target +} + +// Clone function +func (m *GraphqlOptions_SchemaChangeValidationOptions) Clone() proto.Message { + var target *GraphqlOptions_SchemaChangeValidationOptions + if m == nil { + return target + } + target = &GraphqlOptions_SchemaChangeValidationOptions{} + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/settings.pb.equal.go b/pkg/api/gloo.solo.io/v1/settings.pb.equal.go index 756d03f3e..bc2a285b9 100644 --- a/pkg/api/gloo.solo.io/v1/settings.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/settings.pb.equal.go @@ -12,6 +12,8 @@ import ( "github.com/golang/protobuf/proto" equality "github.com/solo-io/protoc-gen-ext/pkg/equality" + + consul "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/consul" ) // ensure the imports are used @@ -23,6 +25,8 @@ var ( _ = strings.Compare _ = equality.Equalizer(nil) _ = proto.Message(nil) + + _ = consul.ConsulConsistencyModes(0) ) // Equal function @@ -61,6 +65,16 @@ func (m *SettingsSpec) Equal(that interface{}) bool { } + if h, ok := interface{}(m.GetSecretOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetSecretOptions()) { + return false + } + } else { + if !proto.Equal(m.GetSecretOptions(), target.GetSecretOptions()) { + return false + } + } + if h, ok := interface{}(m.GetRefreshRate()).(equality.Equalizer); ok { if !h.Equal(target.GetRefreshRate()) { return false @@ -216,6 +230,16 @@ func (m *SettingsSpec) Equal(that interface{}) bool { } + if h, ok := interface{}(m.GetCachingServer()).(equality.Equalizer); ok { + if !h.Equal(target.GetCachingServer()) { + return false + } + } else { + if !proto.Equal(m.GetCachingServer(), target.GetCachingServer()) { + return false + } + } + if h, ok := interface{}(m.GetObservabilityOptions()).(equality.Equalizer); ok { if !h.Equal(target.GetObservabilityOptions()) { return false @@ -236,9 +260,49 @@ func (m *SettingsSpec) Equal(that interface{}) bool { } } + if h, ok := interface{}(m.GetConsoleOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetConsoleOptions()) { + return false + } + } else { + if !proto.Equal(m.GetConsoleOptions(), target.GetConsoleOptions()) { + return false + } + } + + if h, ok := interface{}(m.GetExtProc()).(equality.Equalizer); ok { + if !h.Equal(target.GetExtProc()) { + return false + } + } else { + if !proto.Equal(m.GetExtProc(), target.GetExtProc()) { + return false + } + } + + if len(m.GetWatchNamespaceSelectors()) != len(target.GetWatchNamespaceSelectors()) { + return false + } + for idx, v := range m.GetWatchNamespaceSelectors() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetWatchNamespaceSelectors()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetWatchNamespaceSelectors()[idx]) { + return false + } + } + + } + switch m.ConfigSource.(type) { case *SettingsSpec_KubernetesConfigSource: + if _, ok := target.ConfigSource.(*SettingsSpec_KubernetesConfigSource); !ok { + return false + } if h, ok := interface{}(m.GetKubernetesConfigSource()).(equality.Equalizer); ok { if !h.Equal(target.GetKubernetesConfigSource()) { @@ -251,6 +315,9 @@ func (m *SettingsSpec) Equal(that interface{}) bool { } case *SettingsSpec_DirectoryConfigSource: + if _, ok := target.ConfigSource.(*SettingsSpec_DirectoryConfigSource); !ok { + return false + } if h, ok := interface{}(m.GetDirectoryConfigSource()).(equality.Equalizer); ok { if !h.Equal(target.GetDirectoryConfigSource()) { @@ -263,6 +330,9 @@ func (m *SettingsSpec) Equal(that interface{}) bool { } case *SettingsSpec_ConsulKvSource: + if _, ok := target.ConfigSource.(*SettingsSpec_ConsulKvSource); !ok { + return false + } if h, ok := interface{}(m.GetConsulKvSource()).(equality.Equalizer); ok { if !h.Equal(target.GetConsulKvSource()) { @@ -274,11 +344,19 @@ func (m *SettingsSpec) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.ConfigSource != target.ConfigSource { + return false + } } switch m.SecretSource.(type) { case *SettingsSpec_KubernetesSecretSource: + if _, ok := target.SecretSource.(*SettingsSpec_KubernetesSecretSource); !ok { + return false + } if h, ok := interface{}(m.GetKubernetesSecretSource()).(equality.Equalizer); ok { if !h.Equal(target.GetKubernetesSecretSource()) { @@ -291,6 +369,9 @@ func (m *SettingsSpec) Equal(that interface{}) bool { } case *SettingsSpec_VaultSecretSource: + if _, ok := target.SecretSource.(*SettingsSpec_VaultSecretSource); !ok { + return false + } if h, ok := interface{}(m.GetVaultSecretSource()).(equality.Equalizer); ok { if !h.Equal(target.GetVaultSecretSource()) { @@ -303,6 +384,9 @@ func (m *SettingsSpec) Equal(that interface{}) bool { } case *SettingsSpec_DirectorySecretSource: + if _, ok := target.SecretSource.(*SettingsSpec_DirectorySecretSource); !ok { + return false + } if h, ok := interface{}(m.GetDirectorySecretSource()).(equality.Equalizer); ok { if !h.Equal(target.GetDirectorySecretSource()) { @@ -314,11 +398,19 @@ func (m *SettingsSpec) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.SecretSource != target.SecretSource { + return false + } } switch m.ArtifactSource.(type) { case *SettingsSpec_KubernetesArtifactSource: + if _, ok := target.ArtifactSource.(*SettingsSpec_KubernetesArtifactSource); !ok { + return false + } if h, ok := interface{}(m.GetKubernetesArtifactSource()).(equality.Equalizer); ok { if !h.Equal(target.GetKubernetesArtifactSource()) { @@ -331,6 +423,9 @@ func (m *SettingsSpec) Equal(that interface{}) bool { } case *SettingsSpec_DirectoryArtifactSource: + if _, ok := target.ArtifactSource.(*SettingsSpec_DirectoryArtifactSource); !ok { + return false + } if h, ok := interface{}(m.GetDirectoryArtifactSource()).(equality.Equalizer); ok { if !h.Equal(target.GetDirectoryArtifactSource()) { @@ -343,6 +438,9 @@ func (m *SettingsSpec) Equal(that interface{}) bool { } case *SettingsSpec_ConsulKvArtifactSource: + if _, ok := target.ArtifactSource.(*SettingsSpec_ConsulKvArtifactSource); !ok { + return false + } if h, ok := interface{}(m.GetConsulKvArtifactSource()).(equality.Equalizer); ok { if !h.Equal(target.GetConsulKvArtifactSource()) { @@ -354,6 +452,106 @@ func (m *SettingsSpec) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.ArtifactSource != target.ArtifactSource { + return false + } + } + + return true +} + +// Equal function +func (m *LabelSelector) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*LabelSelector) + if !ok { + that2, ok := that.(LabelSelector) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetMatchLabels()) != len(target.GetMatchLabels()) { + return false + } + for k, v := range m.GetMatchLabels() { + + if strings.Compare(v, target.GetMatchLabels()[k]) != 0 { + return false + } + + } + + if len(m.GetMatchExpressions()) != len(target.GetMatchExpressions()) { + return false + } + for idx, v := range m.GetMatchExpressions() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetMatchExpressions()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetMatchExpressions()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *LabelSelectorRequirement) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*LabelSelectorRequirement) + if !ok { + that2, ok := that.(LabelSelectorRequirement) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetKey(), target.GetKey()) != 0 { + return false + } + + if strings.Compare(m.GetOperator(), target.GetOperator()) != 0 { + return false + } + + if len(m.GetValues()) != len(target.GetValues()) { + return false + } + for idx, v := range m.GetValues() { + + if strings.Compare(v, target.GetValues()[idx]) != 0 { + return false + } + } return true @@ -390,6 +588,17 @@ func (m *UpstreamOptions) Equal(that interface{}) bool { } } + if len(m.GetGlobalAnnotations()) != len(target.GetGlobalAnnotations()) { + return false + } + for k, v := range m.GetGlobalAnnotations() { + + if strings.Compare(v, target.GetGlobalAnnotations()[k]) != 0 { + return false + } + + } + return true } @@ -520,68 +729,72 @@ func (m *GlooOptions) Equal(that interface{}) bool { } } - return true -} - -// Equal function -func (m *GatewayOptions) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*GatewayOptions) - if !ok { - that2, ok := that.(GatewayOptions) - if ok { - target = &that2 - } else { + if h, ok := interface{}(m.GetRemoveUnusedFilters()).(equality.Equalizer); ok { + if !h.Equal(target.GetRemoveUnusedFilters()) { + return false + } + } else { + if !proto.Equal(m.GetRemoveUnusedFilters(), target.GetRemoveUnusedFilters()) { return false } - } - if target == nil { - return m == nil - } else if m == nil { - return false } - if strings.Compare(m.GetValidationServerAddr(), target.GetValidationServerAddr()) != 0 { + if strings.Compare(m.GetProxyDebugBindAddr(), target.GetProxyDebugBindAddr()) != 0 { return false } - if h, ok := interface{}(m.GetValidation()).(equality.Equalizer); ok { - if !h.Equal(target.GetValidation()) { + if h, ok := interface{}(m.GetLogTransformationRequestResponseInfo()).(equality.Equalizer); ok { + if !h.Equal(target.GetLogTransformationRequestResponseInfo()) { return false } } else { - if !proto.Equal(m.GetValidation(), target.GetValidation()) { + if !proto.Equal(m.GetLogTransformationRequestResponseInfo(), target.GetLogTransformationRequestResponseInfo()) { return false } } - if m.GetReadGatewaysFromAllNamespaces() != target.GetReadGatewaysFromAllNamespaces() { - return false + if h, ok := interface{}(m.GetTransformationEscapeCharacters()).(equality.Equalizer); ok { + if !h.Equal(target.GetTransformationEscapeCharacters()) { + return false + } + } else { + if !proto.Equal(m.GetTransformationEscapeCharacters(), target.GetTransformationEscapeCharacters()) { + return false + } } - if m.GetAlwaysSortRouteTableRoutes() != target.GetAlwaysSortRouteTableRoutes() { - return false + if h, ok := interface{}(m.GetIstioOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetIstioOptions()) { + return false + } + } else { + if !proto.Equal(m.GetIstioOptions(), target.GetIstioOptions()) { + return false + } } - if m.GetCompressedProxySpec() != target.GetCompressedProxySpec() { - return false + if h, ok := interface{}(m.GetEnableAutoWebsocketTransformationPassthrough()).(equality.Equalizer); ok { + if !h.Equal(target.GetEnableAutoWebsocketTransformationPassthrough()) { + return false + } + } else { + if !proto.Equal(m.GetEnableAutoWebsocketTransformationPassthrough(), target.GetEnableAutoWebsocketTransformationPassthrough()) { + return false + } } return true } // Equal function -func (m *SettingsStatus) Equal(that interface{}) bool { +func (m *VirtualServiceOptions) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*SettingsStatus) + target, ok := that.(*VirtualServiceOptions) if !ok { - that2, ok := that.(SettingsStatus) + that2, ok := that.(VirtualServiceOptions) if ok { target = &that2 } else { @@ -594,41 +807,12 @@ func (m *SettingsStatus) Equal(that interface{}) bool { return false } - if m.GetState() != target.GetState() { - return false - } - - if strings.Compare(m.GetReason(), target.GetReason()) != 0 { - return false - } - - if strings.Compare(m.GetReportedBy(), target.GetReportedBy()) != 0 { - return false - } - - if len(m.GetSubresourceStatuses()) != len(target.GetSubresourceStatuses()) { - return false - } - for k, v := range m.GetSubresourceStatuses() { - - if h, ok := interface{}(v).(equality.Equalizer); ok { - if !h.Equal(target.GetSubresourceStatuses()[k]) { - return false - } - } else { - if !proto.Equal(v, target.GetSubresourceStatuses()[k]) { - return false - } - } - - } - - if h, ok := interface{}(m.GetDetails()).(equality.Equalizer); ok { - if !h.Equal(target.GetDetails()) { + if h, ok := interface{}(m.GetOneWayTls()).(equality.Equalizer); ok { + if !h.Equal(target.GetOneWayTls()) { return false } } else { - if !proto.Equal(m.GetDetails(), target.GetDetails()) { + if !proto.Equal(m.GetOneWayTls(), target.GetOneWayTls()) { return false } } @@ -637,14 +821,14 @@ func (m *SettingsStatus) Equal(that interface{}) bool { } // Equal function -func (m *SettingsSpec_KubernetesCrds) Equal(that interface{}) bool { +func (m *GatewayOptions) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*SettingsSpec_KubernetesCrds) + target, ok := that.(*GatewayOptions) if !ok { - that2, ok := that.(SettingsSpec_KubernetesCrds) + that2, ok := that.(GatewayOptions) if ok { target = &that2 } else { @@ -657,42 +841,448 @@ func (m *SettingsSpec_KubernetesCrds) Equal(that interface{}) bool { return false } - return true -} - -// Equal function -func (m *SettingsSpec_KubernetesSecrets) Equal(that interface{}) bool { - if that == nil { - return m == nil + if strings.Compare(m.GetValidationServerAddr(), target.GetValidationServerAddr()) != 0 { + return false } - target, ok := that.(*SettingsSpec_KubernetesSecrets) - if !ok { - that2, ok := that.(SettingsSpec_KubernetesSecrets) - if ok { - target = &that2 - } else { + if h, ok := interface{}(m.GetValidation()).(equality.Equalizer); ok { + if !h.Equal(target.GetValidation()) { + return false + } + } else { + if !proto.Equal(m.GetValidation(), target.GetValidation()) { + return false + } + } + + if m.GetReadGatewaysFromAllNamespaces() != target.GetReadGatewaysFromAllNamespaces() { + return false + } + + if m.GetAlwaysSortRouteTableRoutes() != target.GetAlwaysSortRouteTableRoutes() { + return false + } + + if m.GetCompressedProxySpec() != target.GetCompressedProxySpec() { + return false + } + + if h, ok := interface{}(m.GetVirtualServiceOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetVirtualServiceOptions()) { + return false + } + } else { + if !proto.Equal(m.GetVirtualServiceOptions(), target.GetVirtualServiceOptions()) { + return false + } + } + + if h, ok := interface{}(m.GetPersistProxySpec()).(equality.Equalizer); ok { + if !h.Equal(target.GetPersistProxySpec()) { + return false + } + } else { + if !proto.Equal(m.GetPersistProxySpec(), target.GetPersistProxySpec()) { + return false + } + } + + if h, ok := interface{}(m.GetEnableGatewayController()).(equality.Equalizer); ok { + if !h.Equal(target.GetEnableGatewayController()) { + return false + } + } else { + if !proto.Equal(m.GetEnableGatewayController(), target.GetEnableGatewayController()) { + return false + } + } + + if h, ok := interface{}(m.GetIsolateVirtualHostsBySslConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetIsolateVirtualHostsBySslConfig()) { + return false + } + } else { + if !proto.Equal(m.GetIsolateVirtualHostsBySslConfig(), target.GetIsolateVirtualHostsBySslConfig()) { + return false + } + } + + if h, ok := interface{}(m.GetTranslateEmptyGateways()).(equality.Equalizer); ok { + if !h.Equal(target.GetTranslateEmptyGateways()) { + return false + } + } else { + if !proto.Equal(m.GetTranslateEmptyGateways(), target.GetTranslateEmptyGateways()) { + return false + } + } + + return true +} + +// Equal function +func (m *ConsoleOptions) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ConsoleOptions) + if !ok { + that2, ok := that.(ConsoleOptions) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *GraphqlOptions) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*GraphqlOptions) + if !ok { + that2, ok := that.(GraphqlOptions) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *SettingsStatus) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*SettingsStatus) + if !ok { + that2, ok := that.(SettingsStatus) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetState() != target.GetState() { + return false + } + + if strings.Compare(m.GetReason(), target.GetReason()) != 0 { + return false + } + + if strings.Compare(m.GetReportedBy(), target.GetReportedBy()) != 0 { + return false + } + + if len(m.GetSubresourceStatuses()) != len(target.GetSubresourceStatuses()) { + return false + } + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetSubresourceStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetSubresourceStatuses()[k]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetDetails()).(equality.Equalizer); ok { + if !h.Equal(target.GetDetails()) { + return false + } + } else { + if !proto.Equal(m.GetDetails(), target.GetDetails()) { + return false + } + } + + return true +} + +// Equal function +func (m *SettingsNamespacedStatuses) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*SettingsNamespacedStatuses) + if !ok { + that2, ok := that.(SettingsNamespacedStatuses) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetStatuses()) != len(target.GetStatuses()) { + return false + } + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetStatuses()[k]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *SettingsSpec_SecretOptions) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*SettingsSpec_SecretOptions) + if !ok { + that2, ok := that.(SettingsSpec_SecretOptions) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetSources()) != len(target.GetSources()) { + return false + } + for idx, v := range m.GetSources() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetSources()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetSources()[idx]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *SettingsSpec_KubernetesCrds) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*SettingsSpec_KubernetesCrds) + if !ok { + that2, ok := that.(SettingsSpec_KubernetesCrds) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *SettingsSpec_KubernetesSecrets) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*SettingsSpec_KubernetesSecrets) + if !ok { + that2, ok := that.(SettingsSpec_KubernetesSecrets) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *SettingsSpec_VaultSecrets) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*SettingsSpec_VaultSecrets) + if !ok { + that2, ok := that.(SettingsSpec_VaultSecrets) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetToken(), target.GetToken()) != 0 { + return false + } + + if strings.Compare(m.GetAddress(), target.GetAddress()) != 0 { + return false + } + + if strings.Compare(m.GetCaCert(), target.GetCaCert()) != 0 { + return false + } + + if strings.Compare(m.GetCaPath(), target.GetCaPath()) != 0 { + return false + } + + if strings.Compare(m.GetClientCert(), target.GetClientCert()) != 0 { + return false + } + + if strings.Compare(m.GetClientKey(), target.GetClientKey()) != 0 { + return false + } + + if strings.Compare(m.GetTlsServerName(), target.GetTlsServerName()) != 0 { + return false + } + + if h, ok := interface{}(m.GetInsecure()).(equality.Equalizer); ok { + if !h.Equal(target.GetInsecure()) { + return false + } + } else { + if !proto.Equal(m.GetInsecure(), target.GetInsecure()) { + return false + } + } + + if strings.Compare(m.GetRootKey(), target.GetRootKey()) != 0 { + return false + } + + if strings.Compare(m.GetPathPrefix(), target.GetPathPrefix()) != 0 { + return false + } + + if h, ok := interface{}(m.GetTlsConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetTlsConfig()) { + return false + } + } else { + if !proto.Equal(m.GetTlsConfig(), target.GetTlsConfig()) { return false } } - if target == nil { - return m == nil - } else if m == nil { - return false + + switch m.AuthMethod.(type) { + + case *SettingsSpec_VaultSecrets_AccessToken: + if _, ok := target.AuthMethod.(*SettingsSpec_VaultSecrets_AccessToken); !ok { + return false + } + + if strings.Compare(m.GetAccessToken(), target.GetAccessToken()) != 0 { + return false + } + + case *SettingsSpec_VaultSecrets_Aws: + if _, ok := target.AuthMethod.(*SettingsSpec_VaultSecrets_Aws); !ok { + return false + } + + if h, ok := interface{}(m.GetAws()).(equality.Equalizer); ok { + if !h.Equal(target.GetAws()) { + return false + } + } else { + if !proto.Equal(m.GetAws(), target.GetAws()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.AuthMethod != target.AuthMethod { + return false + } } return true } // Equal function -func (m *SettingsSpec_VaultSecrets) Equal(that interface{}) bool { +func (m *SettingsSpec_VaultAwsAuth) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*SettingsSpec_VaultSecrets) + target, ok := that.(*SettingsSpec_VaultAwsAuth) if !ok { - that2, ok := that.(SettingsSpec_VaultSecrets) + that2, ok := that.(SettingsSpec_VaultAwsAuth) if ok { target = &that2 } else { @@ -705,11 +1295,59 @@ func (m *SettingsSpec_VaultSecrets) Equal(that interface{}) bool { return false } - if strings.Compare(m.GetToken(), target.GetToken()) != 0 { + if strings.Compare(m.GetVaultRole(), target.GetVaultRole()) != 0 { return false } - if strings.Compare(m.GetAddress(), target.GetAddress()) != 0 { + if strings.Compare(m.GetRegion(), target.GetRegion()) != 0 { + return false + } + + if strings.Compare(m.GetIamServerIdHeader(), target.GetIamServerIdHeader()) != 0 { + return false + } + + if strings.Compare(m.GetMountPath(), target.GetMountPath()) != 0 { + return false + } + + if strings.Compare(m.GetAccessKeyId(), target.GetAccessKeyId()) != 0 { + return false + } + + if strings.Compare(m.GetSecretAccessKey(), target.GetSecretAccessKey()) != 0 { + return false + } + + if strings.Compare(m.GetSessionToken(), target.GetSessionToken()) != 0 { + return false + } + + if m.GetLeaseIncrement() != target.GetLeaseIncrement() { + return false + } + + return true +} + +// Equal function +func (m *SettingsSpec_VaultTlsConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*SettingsSpec_VaultTlsConfig) + if !ok { + that2, ok := that.(SettingsSpec_VaultTlsConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { return false } @@ -743,10 +1381,6 @@ func (m *SettingsSpec_VaultSecrets) Equal(that interface{}) bool { } } - if strings.Compare(m.GetRootKey(), target.GetRootKey()) != 0 { - return false - } - return true } @@ -891,6 +1525,26 @@ func (m *SettingsSpec_DiscoveryOptions) Equal(that interface{}) bool { return false } + if h, ok := interface{}(m.GetUdsOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetUdsOptions()) { + return false + } + } else { + if !proto.Equal(m.GetUdsOptions(), target.GetUdsOptions()) { + return false + } + } + + if h, ok := interface{}(m.GetFdsOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetFdsOptions()) { + return false + } + } else { + if !proto.Equal(m.GetFdsOptions(), target.GetFdsOptions()) { + return false + } + } + return true } @@ -960,57 +1614,223 @@ func (m *SettingsSpec_ConsulConfiguration) Equal(that interface{}) bool { return false } } - - if h, ok := interface{}(m.GetWaitTime()).(equality.Equalizer); ok { - if !h.Equal(target.GetWaitTime()) { - return false - } - } else { - if !proto.Equal(m.GetWaitTime(), target.GetWaitTime()) { - return false - } + + if h, ok := interface{}(m.GetWaitTime()).(equality.Equalizer); ok { + if !h.Equal(target.GetWaitTime()) { + return false + } + } else { + if !proto.Equal(m.GetWaitTime(), target.GetWaitTime()) { + return false + } + } + + if h, ok := interface{}(m.GetServiceDiscovery()).(equality.Equalizer); ok { + if !h.Equal(target.GetServiceDiscovery()) { + return false + } + } else { + if !proto.Equal(m.GetServiceDiscovery(), target.GetServiceDiscovery()) { + return false + } + } + + if strings.Compare(m.GetHttpAddress(), target.GetHttpAddress()) != 0 { + return false + } + + if strings.Compare(m.GetDnsAddress(), target.GetDnsAddress()) != 0 { + return false + } + + if h, ok := interface{}(m.GetDnsPollingInterval()).(equality.Equalizer); ok { + if !h.Equal(target.GetDnsPollingInterval()) { + return false + } + } else { + if !proto.Equal(m.GetDnsPollingInterval(), target.GetDnsPollingInterval()) { + return false + } + } + + return true +} + +// Equal function +func (m *SettingsSpec_ConsulUpstreamDiscoveryConfiguration) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*SettingsSpec_ConsulUpstreamDiscoveryConfiguration) + if !ok { + that2, ok := that.(SettingsSpec_ConsulUpstreamDiscoveryConfiguration) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetUseTlsTagging() != target.GetUseTlsTagging() { + return false + } + + if strings.Compare(m.GetTlsTagName(), target.GetTlsTagName()) != 0 { + return false + } + + if h, ok := interface{}(m.GetRootCa()).(equality.Equalizer); ok { + if !h.Equal(target.GetRootCa()) { + return false + } + } else { + if !proto.Equal(m.GetRootCa(), target.GetRootCa()) { + return false + } + } + + if m.GetSplitTlsServices() != target.GetSplitTlsServices() { + return false + } + + if m.GetConsistencyMode() != target.GetConsistencyMode() { + return false + } + + if h, ok := interface{}(m.GetQueryOptions()).(equality.Equalizer); ok { + if !h.Equal(target.GetQueryOptions()) { + return false + } + } else { + if !proto.Equal(m.GetQueryOptions(), target.GetQueryOptions()) { + return false + } + } + + if len(m.GetServiceTagsAllowlist()) != len(target.GetServiceTagsAllowlist()) { + return false + } + for idx, v := range m.GetServiceTagsAllowlist() { + + if strings.Compare(v, target.GetServiceTagsAllowlist()[idx]) != 0 { + return false + } + + } + + if h, ok := interface{}(m.GetEdsBlockingQueries()).(equality.Equalizer); ok { + if !h.Equal(target.GetEdsBlockingQueries()) { + return false + } + } else { + if !proto.Equal(m.GetEdsBlockingQueries(), target.GetEdsBlockingQueries()) { + return false + } + } + + return true +} + +// Equal function +func (m *SettingsSpec_KubernetesConfiguration) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*SettingsSpec_KubernetesConfiguration) + if !ok { + that2, ok := that.(SettingsSpec_KubernetesConfiguration) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetRateLimits()).(equality.Equalizer); ok { + if !h.Equal(target.GetRateLimits()) { + return false + } + } else { + if !proto.Equal(m.GetRateLimits(), target.GetRateLimits()) { + return false + } + } + + return true +} + +// Equal function +func (m *SettingsSpec_ObservabilityOptions) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*SettingsSpec_ObservabilityOptions) + if !ok { + that2, ok := that.(SettingsSpec_ObservabilityOptions) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false } - if h, ok := interface{}(m.GetServiceDiscovery()).(equality.Equalizer); ok { - if !h.Equal(target.GetServiceDiscovery()) { + if h, ok := interface{}(m.GetGrafanaIntegration()).(equality.Equalizer); ok { + if !h.Equal(target.GetGrafanaIntegration()) { return false } } else { - if !proto.Equal(m.GetServiceDiscovery(), target.GetServiceDiscovery()) { + if !proto.Equal(m.GetGrafanaIntegration(), target.GetGrafanaIntegration()) { return false } } - if strings.Compare(m.GetHttpAddress(), target.GetHttpAddress()) != 0 { - return false - } - - if strings.Compare(m.GetDnsAddress(), target.GetDnsAddress()) != 0 { + if len(m.GetConfigStatusMetricLabels()) != len(target.GetConfigStatusMetricLabels()) { return false } + for k, v := range m.GetConfigStatusMetricLabels() { - if h, ok := interface{}(m.GetDnsPollingInterval()).(equality.Equalizer); ok { - if !h.Equal(target.GetDnsPollingInterval()) { - return false - } - } else { - if !proto.Equal(m.GetDnsPollingInterval(), target.GetDnsPollingInterval()) { - return false + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetConfigStatusMetricLabels()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetConfigStatusMetricLabels()[k]) { + return false + } } + } return true } // Equal function -func (m *SettingsSpec_ConsulUpstreamDiscoveryConfiguration) Equal(that interface{}) bool { +func (m *SettingsSpec_SecretOptions_Source) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*SettingsSpec_ConsulUpstreamDiscoveryConfiguration) + target, ok := that.(*SettingsSpec_SecretOptions_Source) if !ok { - that2, ok := that.(SettingsSpec_ConsulUpstreamDiscoveryConfiguration) + that2, ok := that.(SettingsSpec_SecretOptions_Source) if ok { target = &that2 } else { @@ -1023,40 +1843,72 @@ func (m *SettingsSpec_ConsulUpstreamDiscoveryConfiguration) Equal(that interface return false } - if m.GetUseTlsTagging() != target.GetUseTlsTagging() { - return false - } + switch m.Source.(type) { - if strings.Compare(m.GetTlsTagName(), target.GetTlsTagName()) != 0 { - return false - } + case *SettingsSpec_SecretOptions_Source_Kubernetes: + if _, ok := target.Source.(*SettingsSpec_SecretOptions_Source_Kubernetes); !ok { + return false + } - if h, ok := interface{}(m.GetRootCa()).(equality.Equalizer); ok { - if !h.Equal(target.GetRootCa()) { + if h, ok := interface{}(m.GetKubernetes()).(equality.Equalizer); ok { + if !h.Equal(target.GetKubernetes()) { + return false + } + } else { + if !proto.Equal(m.GetKubernetes(), target.GetKubernetes()) { + return false + } + } + + case *SettingsSpec_SecretOptions_Source_Vault: + if _, ok := target.Source.(*SettingsSpec_SecretOptions_Source_Vault); !ok { return false } - } else { - if !proto.Equal(m.GetRootCa(), target.GetRootCa()) { + + if h, ok := interface{}(m.GetVault()).(equality.Equalizer); ok { + if !h.Equal(target.GetVault()) { + return false + } + } else { + if !proto.Equal(m.GetVault(), target.GetVault()) { + return false + } + } + + case *SettingsSpec_SecretOptions_Source_Directory: + if _, ok := target.Source.(*SettingsSpec_SecretOptions_Source_Directory); !ok { return false } - } - if m.GetSplitTlsServices() != target.GetSplitTlsServices() { - return false + if h, ok := interface{}(m.GetDirectory()).(equality.Equalizer); ok { + if !h.Equal(target.GetDirectory()) { + return false + } + } else { + if !proto.Equal(m.GetDirectory(), target.GetDirectory()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.Source != target.Source { + return false + } } return true } // Equal function -func (m *SettingsSpec_KubernetesConfiguration) Equal(that interface{}) bool { +func (m *SettingsSpec_DiscoveryOptions_UdsOptions) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*SettingsSpec_KubernetesConfiguration) + target, ok := that.(*SettingsSpec_DiscoveryOptions_UdsOptions) if !ok { - that2, ok := that.(SettingsSpec_KubernetesConfiguration) + that2, ok := that.(SettingsSpec_DiscoveryOptions_UdsOptions) if ok { target = &that2 } else { @@ -1069,28 +1921,39 @@ func (m *SettingsSpec_KubernetesConfiguration) Equal(that interface{}) bool { return false } - if h, ok := interface{}(m.GetRateLimits()).(equality.Equalizer); ok { - if !h.Equal(target.GetRateLimits()) { + if h, ok := interface{}(m.GetEnabled()).(equality.Equalizer); ok { + if !h.Equal(target.GetEnabled()) { return false } } else { - if !proto.Equal(m.GetRateLimits(), target.GetRateLimits()) { + if !proto.Equal(m.GetEnabled(), target.GetEnabled()) { + return false + } + } + + if len(m.GetWatchLabels()) != len(target.GetWatchLabels()) { + return false + } + for k, v := range m.GetWatchLabels() { + + if strings.Compare(v, target.GetWatchLabels()[k]) != 0 { return false } + } return true } // Equal function -func (m *SettingsSpec_ObservabilityOptions) Equal(that interface{}) bool { +func (m *SettingsSpec_DiscoveryOptions_FdsOptions) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*SettingsSpec_ObservabilityOptions) + target, ok := that.(*SettingsSpec_DiscoveryOptions_FdsOptions) if !ok { - that2, ok := that.(SettingsSpec_ObservabilityOptions) + that2, ok := that.(SettingsSpec_DiscoveryOptions_FdsOptions) if ok { target = &that2 } else { @@ -1103,16 +1966,6 @@ func (m *SettingsSpec_ObservabilityOptions) Equal(that interface{}) bool { return false } - if h, ok := interface{}(m.GetGrafanaIntegration()).(equality.Equalizer); ok { - if !h.Equal(target.GetGrafanaIntegration()) { - return false - } - } else { - if !proto.Equal(m.GetGrafanaIntegration(), target.GetGrafanaIntegration()) { - return false - } - } - return true } @@ -1214,6 +2067,49 @@ func (m *SettingsSpec_ObservabilityOptions_GrafanaIntegration) Equal(that interf } } + if strings.Compare(m.GetDashboardPrefix(), target.GetDashboardPrefix()) != 0 { + return false + } + + if strings.Compare(m.GetExtraMetricQueryParameters(), target.GetExtraMetricQueryParameters()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *SettingsSpec_ObservabilityOptions_MetricLabels) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*SettingsSpec_ObservabilityOptions_MetricLabels) + if !ok { + that2, ok := that.(SettingsSpec_ObservabilityOptions_MetricLabels) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetLabelToPath()) != len(target.GetLabelToPath()) { + return false + } + for k, v := range m.GetLabelToPath() { + + if strings.Compare(v, target.GetLabelToPath()[k]) != 0 { + return false + } + + } + return true } @@ -1238,15 +2134,51 @@ func (m *GlooOptions_AWSOptions) Equal(that interface{}) bool { return false } + if h, ok := interface{}(m.GetPropagateOriginalRouting()).(equality.Equalizer); ok { + if !h.Equal(target.GetPropagateOriginalRouting()) { + return false + } + } else { + if !proto.Equal(m.GetPropagateOriginalRouting(), target.GetPropagateOriginalRouting()) { + return false + } + } + + if h, ok := interface{}(m.GetCredentialRefreshDelay()).(equality.Equalizer); ok { + if !h.Equal(target.GetCredentialRefreshDelay()) { + return false + } + } else { + if !proto.Equal(m.GetCredentialRefreshDelay(), target.GetCredentialRefreshDelay()) { + return false + } + } + + if h, ok := interface{}(m.GetFallbackToFirstFunction()).(equality.Equalizer); ok { + if !h.Equal(target.GetFallbackToFirstFunction()) { + return false + } + } else { + if !proto.Equal(m.GetFallbackToFirstFunction(), target.GetFallbackToFirstFunction()) { + return false + } + } + switch m.CredentialsFetcher.(type) { case *GlooOptions_AWSOptions_EnableCredentialsDiscovey: + if _, ok := target.CredentialsFetcher.(*GlooOptions_AWSOptions_EnableCredentialsDiscovey); !ok { + return false + } if m.GetEnableCredentialsDiscovey() != target.GetEnableCredentialsDiscovey() { return false } case *GlooOptions_AWSOptions_ServiceAccountCredentials: + if _, ok := target.CredentialsFetcher.(*GlooOptions_AWSOptions_ServiceAccountCredentials); !ok { + return false + } if h, ok := interface{}(m.GetServiceAccountCredentials()).(equality.Equalizer); ok { if !h.Equal(target.GetServiceAccountCredentials()) { @@ -1258,6 +2190,11 @@ func (m *GlooOptions_AWSOptions) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.CredentialsFetcher != target.CredentialsFetcher { + return false + } } return true @@ -1299,6 +2236,60 @@ func (m *GlooOptions_InvalidConfigPolicy) Equal(that interface{}) bool { return true } +// Equal function +func (m *GlooOptions_IstioOptions) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*GlooOptions_IstioOptions) + if !ok { + that2, ok := that.(GlooOptions_IstioOptions) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetAppendXForwardedHost()).(equality.Equalizer); ok { + if !h.Equal(target.GetAppendXForwardedHost()) { + return false + } + } else { + if !proto.Equal(m.GetAppendXForwardedHost(), target.GetAppendXForwardedHost()) { + return false + } + } + + if h, ok := interface{}(m.GetEnableAutoMtls()).(equality.Equalizer); ok { + if !h.Equal(target.GetEnableAutoMtls()) { + return false + } + } else { + if !proto.Equal(m.GetEnableAutoMtls(), target.GetEnableAutoMtls()) { + return false + } + } + + if h, ok := interface{}(m.GetEnableIntegration()).(equality.Equalizer); ok { + if !h.Equal(target.GetEnableIntegration()) { + return false + } + } else { + if !proto.Equal(m.GetEnableIntegration(), target.GetEnableIntegration()) { + return false + } + } + + return true +} + // Equal function func (m *GatewayOptions_ValidationOptions) Equal(that interface{}) bool { if that == nil { @@ -1376,15 +2367,69 @@ func (m *GatewayOptions_ValidationOptions) Equal(that interface{}) bool { } } - if h, ok := interface{}(m.GetValidationServerGrpcMaxSize()).(equality.Equalizer); ok { - if !h.Equal(target.GetValidationServerGrpcMaxSize()) { + if h, ok := interface{}(m.GetValidationServerGrpcMaxSizeBytes()).(equality.Equalizer); ok { + if !h.Equal(target.GetValidationServerGrpcMaxSizeBytes()) { + return false + } + } else { + if !proto.Equal(m.GetValidationServerGrpcMaxSizeBytes(), target.GetValidationServerGrpcMaxSizeBytes()) { + return false + } + } + + if h, ok := interface{}(m.GetServerEnabled()).(equality.Equalizer); ok { + if !h.Equal(target.GetServerEnabled()) { + return false + } + } else { + if !proto.Equal(m.GetServerEnabled(), target.GetServerEnabled()) { + return false + } + } + + if h, ok := interface{}(m.GetWarnMissingTlsSecret()).(equality.Equalizer); ok { + if !h.Equal(target.GetWarnMissingTlsSecret()) { + return false + } + } else { + if !proto.Equal(m.GetWarnMissingTlsSecret(), target.GetWarnMissingTlsSecret()) { + return false + } + } + + if h, ok := interface{}(m.GetFullEnvoyValidation()).(equality.Equalizer); ok { + if !h.Equal(target.GetFullEnvoyValidation()) { return false } } else { - if !proto.Equal(m.GetValidationServerGrpcMaxSize(), target.GetValidationServerGrpcMaxSize()) { + if !proto.Equal(m.GetFullEnvoyValidation(), target.GetFullEnvoyValidation()) { + return false + } + } + + return true +} + +// Equal function +func (m *GraphqlOptions_SchemaChangeValidationOptions) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*GraphqlOptions_SchemaChangeValidationOptions) + if !ok { + that2, ok := that.(GraphqlOptions_SchemaChangeValidationOptions) + if ok { + target = &that2 + } else { return false } } + if target == nil { + return m == nil + } else if m == nil { + return false + } return true } diff --git a/pkg/api/gloo.solo.io/v1/settings.pb.go b/pkg/api/gloo.solo.io/v1/settings.pb.go index 1de395cdf..027c4a3b6 100644 --- a/pkg/api/gloo.solo.io/v1/settings.pb.go +++ b/pkg/api/gloo.solo.io/v1/settings.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/settings.proto @@ -9,19 +9,24 @@ package v1 import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - duration "github.com/golang/protobuf/ptypes/duration" - _struct "github.com/golang/protobuf/ptypes/struct" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" v1 "github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1" aws "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/aws" + circuit_breaker "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/circuit_breaker" + caching "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/caching" + extproc "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/extproc" ratelimit "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit" rbac "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/rbac" + consul "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/consul" + ssl "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl" core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + structpb "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -31,10 +36,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Possible modes for running the function discovery service (FDS). FDS polls services in-cluster for Swagger // and gRPC endpoints. This behavior can be controlled with the use of annotations. // FdsMode specifies what policy FDS will use when determining which services to poll. @@ -92,7 +93,7 @@ func (x SettingsSpec_DiscoveryOptions_FdsMode) Number() protoreflect.EnumNumber // Deprecated: Use SettingsSpec_DiscoveryOptions_FdsMode.Descriptor instead. func (SettingsSpec_DiscoveryOptions_FdsMode) EnumDescriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 7, 0} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 10, 0} } type SettingsStatus_State int32 @@ -150,15 +151,12 @@ func (x SettingsStatus_State) Number() protoreflect.EnumNumber { // Deprecated: Use SettingsStatus_State.Descriptor instead. func (SettingsStatus_State) EnumDescriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{4, 0} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{9, 0} } // Represents global settings for all the Gloo components. type SettingsSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // This is the namespace to which Gloo controllers will write their own resources, e.g. discovered Upstreams or default Gateways. // If empty, this will default to "gloo-system". DiscoveryNamespace string `protobuf:"bytes,1,opt,name=discovery_namespace,json=discoveryNamespace,proto3" json:"discovery_namespace,omitempty"` @@ -168,35 +166,50 @@ type SettingsSpec struct { // // If not set, this defaults to all available namespaces. Please note that, the `discovery_namespace` will always // be included in this list. + // If this is specified, it overwrites the `watch_namespace_selectors` specified WatchNamespaces []string `protobuf:"bytes,2,rep,name=watch_namespaces,json=watchNamespaces,proto3" json:"watch_namespaces,omitempty"` // This setting determines where Gloo controllers will store its resources // - // Types that are assignable to ConfigSource: + // Types that are valid to be assigned to ConfigSource: + // // *SettingsSpec_KubernetesConfigSource // *SettingsSpec_DirectoryConfigSource // *SettingsSpec_ConsulKvSource ConfigSource isSettingsSpec_ConfigSource `protobuf_oneof:"config_source"` // Determines where Gloo will read/write secrets from/to. // - // Types that are assignable to SecretSource: + // Types that are valid to be assigned to SecretSource: + // // *SettingsSpec_KubernetesSecretSource // *SettingsSpec_VaultSecretSource // *SettingsSpec_DirectorySecretSource SecretSource isSettingsSpec_SecretSource `protobuf_oneof:"secret_source"` + // Settings for secrets storage. + // This API is beta and should be tested thoroughly before production use + SecretOptions *SettingsSpec_SecretOptions `protobuf:"bytes,38,opt,name=secret_options,json=secretOptions,proto3" json:"secret_options,omitempty"` // Where to read artifacts from. // - // Types that are assignable to ArtifactSource: + // Types that are valid to be assigned to ArtifactSource: + // // *SettingsSpec_KubernetesArtifactSource // *SettingsSpec_DirectoryArtifactSource // *SettingsSpec_ConsulKvArtifactSource ArtifactSource isSettingsSpec_ArtifactSource `protobuf_oneof:"artifact_source"` // How frequently to resync watches, etc - RefreshRate *duration.Duration `protobuf:"bytes,12,opt,name=refresh_rate,json=refreshRate,proto3" json:"refresh_rate,omitempty"` - // Enable serving debug data on port 9090 + RefreshRate *durationpb.Duration `protobuf:"bytes,12,opt,name=refresh_rate,json=refreshRate,proto3" json:"refresh_rate,omitempty"` + // DEPRECATED: In the past DevMode was used to expose endpoints that behave as an Admin API + // https://github.com/solo-io/gloo/issues/6494 + // We now support an Admin API on port 9091. See the following guide for more details + // https://docs.solo.io/gloo-edge/latest/operations/debugging_gloo/#debugging-the-control-plane + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/settings.proto. DevMode bool `protobuf:"varint,13,opt,name=dev_mode,json=devMode,proto3" json:"dev_mode,omitempty"` // Enable automatic linkerd upstream header addition for easier routing to linkerd services Linkerd bool `protobuf:"varint,17,opt,name=linkerd,proto3" json:"linkerd,omitempty"` // Configuration options for the Clusteringress Controller (for Knative). + // Deprecated: Will not be available in Gloo Edge 1.11 + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/settings.proto. Knative *SettingsSpec_KnativeOptions `protobuf:"bytes,18,opt,name=knative,proto3" json:"knative,omitempty"` // Options for configuring Gloo's Discovery service Discovery *SettingsSpec_DiscoveryOptions `protobuf:"bytes,19,opt,name=discovery,proto3" json:"discovery,omitempty"` @@ -237,21 +250,67 @@ type SettingsSpec struct { // on the filter chain, but only 1 will be executed on a route. // The name of the auth server (ie the key in the map) will be used to apply the configuration on the route. // If an auth server name is not supplied on a route, the default auth server will be applied. - NamedExtauth map[string]*v1.Settings `protobuf:"bytes,33,rep,name=named_extauth,json=namedExtauth,proto3" json:"named_extauth,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + NamedExtauth map[string]*v1.Settings `protobuf:"bytes,33,rep,name=named_extauth,json=namedExtauth,proto3" json:"named_extauth,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Enterprise-only: Settings for the caching server itself + // This may eventually be able to be set at a per listener level. + // At this time is used for plugin translation via the init.Params. + CachingServer *caching.Settings `protobuf:"bytes,36,opt,name=caching_server,json=cachingServer,proto3" json:"caching_server,omitempty"` // Provides settings related to the observability deployment (enterprise only) ObservabilityOptions *SettingsSpec_ObservabilityOptions `protobuf:"bytes,31,opt,name=observabilityOptions,proto3" json:"observabilityOptions,omitempty"` // Default configuration to use for upstreams, when not provided by specific upstream // When these properties are defined on an upstream, this configuration will be ignored UpstreamOptions *UpstreamOptions `protobuf:"bytes,32,opt,name=upstreamOptions,proto3" json:"upstreamOptions,omitempty"` + // Enterprise-only: Settings for the Gloo Edge Enterprise Console (UI) + ConsoleOptions *ConsoleOptions `protobuf:"bytes,35,opt,name=console_options,json=consoleOptions,proto3" json:"console_options,omitempty"` + // Enterprise-only: External Processing filter settings. These settings are used as + // defaults globally, and can be overridden by HttpListenerOptions, VirtualHostOptions, + // or RouteOptions. + ExtProc *extproc.Settings `protobuf:"bytes,39,opt,name=ext_proc,json=extProc,proto3" json:"ext_proc,omitempty"` + // A list of Kubernetes selectors that specify the set of namespaces to restrict the namespaces that Gloo controllers + // take into consideration when watching for resources. + // Elements in the list are disjunctive (OR semantics), i.e. a namespace will be included if it matches any selector. + // The following example selects any namespace that matches either below: + // 1. The namespace has both of these labels: `env: prod` and `region: us-east1` + // 2. The namespace has label `app` equal to `cassandra` or `spark`. + // ```yaml + // watchNamespaceSelectors: + // - matchLabels: + // env: prod + // region: us-east1 + // - matchExpressions: + // - key: app + // operator: In + // values: + // - cassandra + // - spark + // + // ``` + // However, if the match conditions are part of the same same list item, the namespace must match all conditions. + // ```yaml + // watchNamespaceSelectors: + // - matchLabels: + // env: prod + // region: us-east1 + // matchExpressions: + // - key: app + // operator: In + // values: + // - cassandra + // - spark + // + // ``` + // Refer to the [Kubernetes selector docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors) + // for additional detail on selector semantics. + WatchNamespaceSelectors []*LabelSelector `protobuf:"bytes,40,rep,name=watch_namespace_selectors,json=watchNamespaceSelectors,proto3" json:"watch_namespace_selectors,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SettingsSpec) Reset() { *x = SettingsSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SettingsSpec) String() string { @@ -262,7 +321,7 @@ func (*SettingsSpec) ProtoMessage() {} func (x *SettingsSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -291,97 +350,123 @@ func (x *SettingsSpec) GetWatchNamespaces() []string { return nil } -func (m *SettingsSpec) GetConfigSource() isSettingsSpec_ConfigSource { - if m != nil { - return m.ConfigSource +func (x *SettingsSpec) GetConfigSource() isSettingsSpec_ConfigSource { + if x != nil { + return x.ConfigSource } return nil } func (x *SettingsSpec) GetKubernetesConfigSource() *SettingsSpec_KubernetesCrds { - if x, ok := x.GetConfigSource().(*SettingsSpec_KubernetesConfigSource); ok { - return x.KubernetesConfigSource + if x != nil { + if x, ok := x.ConfigSource.(*SettingsSpec_KubernetesConfigSource); ok { + return x.KubernetesConfigSource + } } return nil } func (x *SettingsSpec) GetDirectoryConfigSource() *SettingsSpec_Directory { - if x, ok := x.GetConfigSource().(*SettingsSpec_DirectoryConfigSource); ok { - return x.DirectoryConfigSource + if x != nil { + if x, ok := x.ConfigSource.(*SettingsSpec_DirectoryConfigSource); ok { + return x.DirectoryConfigSource + } } return nil } func (x *SettingsSpec) GetConsulKvSource() *SettingsSpec_ConsulKv { - if x, ok := x.GetConfigSource().(*SettingsSpec_ConsulKvSource); ok { - return x.ConsulKvSource + if x != nil { + if x, ok := x.ConfigSource.(*SettingsSpec_ConsulKvSource); ok { + return x.ConsulKvSource + } } return nil } -func (m *SettingsSpec) GetSecretSource() isSettingsSpec_SecretSource { - if m != nil { - return m.SecretSource +func (x *SettingsSpec) GetSecretSource() isSettingsSpec_SecretSource { + if x != nil { + return x.SecretSource } return nil } func (x *SettingsSpec) GetKubernetesSecretSource() *SettingsSpec_KubernetesSecrets { - if x, ok := x.GetSecretSource().(*SettingsSpec_KubernetesSecretSource); ok { - return x.KubernetesSecretSource + if x != nil { + if x, ok := x.SecretSource.(*SettingsSpec_KubernetesSecretSource); ok { + return x.KubernetesSecretSource + } } return nil } func (x *SettingsSpec) GetVaultSecretSource() *SettingsSpec_VaultSecrets { - if x, ok := x.GetSecretSource().(*SettingsSpec_VaultSecretSource); ok { - return x.VaultSecretSource + if x != nil { + if x, ok := x.SecretSource.(*SettingsSpec_VaultSecretSource); ok { + return x.VaultSecretSource + } } return nil } func (x *SettingsSpec) GetDirectorySecretSource() *SettingsSpec_Directory { - if x, ok := x.GetSecretSource().(*SettingsSpec_DirectorySecretSource); ok { - return x.DirectorySecretSource + if x != nil { + if x, ok := x.SecretSource.(*SettingsSpec_DirectorySecretSource); ok { + return x.DirectorySecretSource + } + } + return nil +} + +func (x *SettingsSpec) GetSecretOptions() *SettingsSpec_SecretOptions { + if x != nil { + return x.SecretOptions } return nil } -func (m *SettingsSpec) GetArtifactSource() isSettingsSpec_ArtifactSource { - if m != nil { - return m.ArtifactSource +func (x *SettingsSpec) GetArtifactSource() isSettingsSpec_ArtifactSource { + if x != nil { + return x.ArtifactSource } return nil } func (x *SettingsSpec) GetKubernetesArtifactSource() *SettingsSpec_KubernetesConfigmaps { - if x, ok := x.GetArtifactSource().(*SettingsSpec_KubernetesArtifactSource); ok { - return x.KubernetesArtifactSource + if x != nil { + if x, ok := x.ArtifactSource.(*SettingsSpec_KubernetesArtifactSource); ok { + return x.KubernetesArtifactSource + } } return nil } func (x *SettingsSpec) GetDirectoryArtifactSource() *SettingsSpec_Directory { - if x, ok := x.GetArtifactSource().(*SettingsSpec_DirectoryArtifactSource); ok { - return x.DirectoryArtifactSource + if x != nil { + if x, ok := x.ArtifactSource.(*SettingsSpec_DirectoryArtifactSource); ok { + return x.DirectoryArtifactSource + } } return nil } func (x *SettingsSpec) GetConsulKvArtifactSource() *SettingsSpec_ConsulKv { - if x, ok := x.GetArtifactSource().(*SettingsSpec_ConsulKvArtifactSource); ok { - return x.ConsulKvArtifactSource + if x != nil { + if x, ok := x.ArtifactSource.(*SettingsSpec_ConsulKvArtifactSource); ok { + return x.ConsulKvArtifactSource + } } return nil } -func (x *SettingsSpec) GetRefreshRate() *duration.Duration { +func (x *SettingsSpec) GetRefreshRate() *durationpb.Duration { if x != nil { return x.RefreshRate } return nil } +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/settings.proto. func (x *SettingsSpec) GetDevMode() bool { if x != nil { return x.DevMode @@ -396,6 +481,7 @@ func (x *SettingsSpec) GetLinkerd() bool { return false } +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/settings.proto. func (x *SettingsSpec) GetKnative() *SettingsSpec_KnativeOptions { if x != nil { return x.Knative @@ -487,6 +573,13 @@ func (x *SettingsSpec) GetNamedExtauth() map[string]*v1.Settings { return nil } +func (x *SettingsSpec) GetCachingServer() *caching.Settings { + if x != nil { + return x.CachingServer + } + return nil +} + func (x *SettingsSpec) GetObservabilityOptions() *SettingsSpec_ObservabilityOptions { if x != nil { return x.ObservabilityOptions @@ -501,6 +594,27 @@ func (x *SettingsSpec) GetUpstreamOptions() *UpstreamOptions { return nil } +func (x *SettingsSpec) GetConsoleOptions() *ConsoleOptions { + if x != nil { + return x.ConsoleOptions + } + return nil +} + +func (x *SettingsSpec) GetExtProc() *extproc.Settings { + if x != nil { + return x.ExtProc + } + return nil +} + +func (x *SettingsSpec) GetWatchNamespaceSelectors() []*LabelSelector { + if x != nil { + return x.WatchNamespaceSelectors + } + return nil +} + type isSettingsSpec_ConfigSource interface { isSettingsSpec_ConfigSource() } @@ -567,24 +681,159 @@ func (*SettingsSpec_DirectoryArtifactSource) isSettingsSpec_ArtifactSource() {} func (*SettingsSpec_ConsulKvArtifactSource) isSettingsSpec_ArtifactSource() {} +// A label selector requirement is a selector that contains values, a key, and an operator that +// relates the key and values. +// Copied from Kubernetes to avoid expensive dependency on Kubernetes libraries. +// Ref: https://github.com/kubernetes/apimachinery/blob/f7615f37d717297aca51101478406af712553c5b/pkg/apis/meta/v1/generated.proto#L442-L453 +type LabelSelector struct { + state protoimpl.MessageState `protogen:"open.v1"` + // matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + // map is equivalent to an element of matchExpressions, whose key field is "key", the + // operator is "In", and the values array contains only "value". The requirements are ANDed. + // +optional + MatchLabels map[string]string `protobuf:"bytes,1,rep,name=match_labels,json=matchLabels,proto3" json:"match_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // matchExpressions is a list of label selector requirements. The requirements are ANDed. + // +optional + MatchExpressions []*LabelSelectorRequirement `protobuf:"bytes,2,rep,name=match_expressions,json=matchExpressions,proto3" json:"match_expressions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LabelSelector) Reset() { + *x = LabelSelector{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LabelSelector) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LabelSelector) ProtoMessage() {} + +func (x *LabelSelector) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LabelSelector.ProtoReflect.Descriptor instead. +func (*LabelSelector) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{1} +} + +func (x *LabelSelector) GetMatchLabels() map[string]string { + if x != nil { + return x.MatchLabels + } + return nil +} + +func (x *LabelSelector) GetMatchExpressions() []*LabelSelectorRequirement { + if x != nil { + return x.MatchExpressions + } + return nil +} + +// A label selector requirement is a selector that contains values, a key, and an operator that +// relates the key and values. +// Copied from Kubernetes to avoid expensive dependency on Kubernetes libraries. +// Ref: https://github.com/kubernetes/apimachinery/blob/f7615f37d717297aca51101478406af712553c5b/pkg/apis/meta/v1/generated.proto#L455-L472 +type LabelSelectorRequirement struct { + state protoimpl.MessageState `protogen:"open.v1"` + // key is the label key that the selector applies to. + // +patchMergeKey=key + // +patchStrategy=merge + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + // operator represents a key's relationship to a set of values. + // Valid operators are In, NotIn, Exists and DoesNotExist. + Operator string `protobuf:"bytes,2,opt,name=operator,proto3" json:"operator,omitempty"` + // values is an array of string values. If the operator is In or NotIn, + // the values array must be non-empty. If the operator is Exists or DoesNotExist, + // the values array must be empty. This array is replaced during a strategic + // merge patch. + // +optional + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LabelSelectorRequirement) Reset() { + *x = LabelSelectorRequirement{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LabelSelectorRequirement) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LabelSelectorRequirement) ProtoMessage() {} + +func (x *LabelSelectorRequirement) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LabelSelectorRequirement.ProtoReflect.Descriptor instead. +func (*LabelSelectorRequirement) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{2} +} + +func (x *LabelSelectorRequirement) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *LabelSelectorRequirement) GetOperator() string { + if x != nil { + return x.Operator + } + return "" +} + +func (x *LabelSelectorRequirement) GetValues() []string { + if x != nil { + return x.Values + } + return nil +} + // Default configuration to use for upstreams, when not provided by a specific upstream // When these properties are defined on a specific upstream, this configuration will be ignored type UpstreamOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Default ssl parameter configuration to use for upstreams - SslParameters *SslParameters `protobuf:"bytes,1,opt,name=ssl_parameters,json=sslParameters,proto3" json:"ssl_parameters,omitempty"` + SslParameters *ssl.SslParameters `protobuf:"bytes,1,opt,name=ssl_parameters,json=sslParameters,proto3" json:"ssl_parameters,omitempty"` + // Annotations to apply to all upstreams + GlobalAnnotations map[string]string `protobuf:"bytes,2,rep,name=global_annotations,json=globalAnnotations,proto3" json:"global_annotations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpstreamOptions) Reset() { *x = UpstreamOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpstreamOptions) String() string { @@ -594,8 +843,8 @@ func (x *UpstreamOptions) String() string { func (*UpstreamOptions) ProtoMessage() {} func (x *UpstreamOptions) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[3] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -607,75 +856,105 @@ func (x *UpstreamOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use UpstreamOptions.ProtoReflect.Descriptor instead. func (*UpstreamOptions) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{1} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{3} } -func (x *UpstreamOptions) GetSslParameters() *SslParameters { +func (x *UpstreamOptions) GetSslParameters() *ssl.SslParameters { if x != nil { return x.SslParameters } return nil } +func (x *UpstreamOptions) GetGlobalAnnotations() map[string]string { + if x != nil { + return x.GlobalAnnotations + } + return nil +} + // Settings specific to the gloo (Envoy xDS server) controller type GlooOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Where the `gloo` xDS server should bind. Defaults to `0.0.0.0:9977` XdsBindAddr string `protobuf:"bytes,1,opt,name=xds_bind_addr,json=xdsBindAddr,proto3" json:"xds_bind_addr,omitempty"` // Where the `gloo` validation server should bind. Defaults to `0.0.0.0:9988` ValidationBindAddr string `protobuf:"bytes,2,opt,name=validation_bind_addr,json=validationBindAddr,proto3" json:"validation_bind_addr,omitempty"` // Default circuit breaker configuration to use for upstream requests, // when not provided by specific upstream. - CircuitBreakers *CircuitBreakerConfig `protobuf:"bytes,3,opt,name=circuit_breakers,json=circuitBreakers,proto3" json:"circuit_breakers,omitempty"` + CircuitBreakers *circuit_breaker.CircuitBreakerConfig `protobuf:"bytes,3,opt,name=circuit_breakers,json=circuitBreakers,proto3" json:"circuit_breakers,omitempty"` // Timeout to get initial snapshot of resources. If set to zero, Gloo will not wait for initial // snapshot - if nonzero and gloo could not fetch it's initial snapshot before the timeout // reached, gloo will panic. If unset, Gloo defaults to 5 minutes. - EndpointsWarmingTimeout *duration.Duration `protobuf:"bytes,4,opt,name=endpoints_warming_timeout,json=endpointsWarmingTimeout,proto3" json:"endpoints_warming_timeout,omitempty"` + EndpointsWarmingTimeout *durationpb.Duration `protobuf:"bytes,4,opt,name=endpoints_warming_timeout,json=endpointsWarmingTimeout,proto3" json:"endpoints_warming_timeout,omitempty"` AwsOptions *GlooOptions_AWSOptions `protobuf:"bytes,5,opt,name=aws_options,json=awsOptions,proto3" json:"aws_options,omitempty"` // set these options to fine-tune the way Gloo handles invalid user configuration InvalidConfigPolicy *GlooOptions_InvalidConfigPolicy `protobuf:"bytes,6,opt,name=invalid_config_policy,json=invalidConfigPolicy,proto3" json:"invalid_config_policy,omitempty"` - // Gloo allows you to directly reference a Kubernetes service as a routing destination. To enable this feature, - // Gloo scans the cluster for Kubernetes services and creates a special type of in-memory Upstream to represent them. - // If the cluster contains a lot of services and you do not restrict the namespaces Gloo is watching, this can result - // in significant overhead. If you do not plan on using this feature, you can use this flag to turn it off. + // Enable or disable Gloo Edge to scan Kubernetes services in the cluster and create in-memory Upstream resources + // to represent them. These resources enable Gloo Edge to route requests to a Kubernetes service. Note that if + // you have a large number of services in your cluster and you do not restrict the namespaces that Gloo Edge watches, + // the API snapshot increases which can have a negative impact on the Gloo Edge translation time. In addition, load + // balancing is done in `kube-proxy` which can have further performance impacts. Using Gloo Upstreams as a routing + // destination bypasses `kube-proxy` as the request is routed to the pod directly. Alternatively, you can use + // [`Kubernetes`](https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/kubernetes/kubernetes.proto.sk/) + // Upstream resources as a routing destination to forward requests to the pod directly. + // + // For more information, see the [docs](https://docs.solo.io/gloo-edge/latest/guides/traffic_management/destination_types/kubernetes_services/). DisableKubernetesDestinations bool `protobuf:"varint,7,opt,name=disable_kubernetes_destinations,json=disableKubernetesDestinations,proto3" json:"disable_kubernetes_destinations,omitempty"` // Default policy for grpc-web. // set to true if you do not wish grpc-web to be automatically enabled. // set to false if you wish grpc-web enabled unless disabled on the listener level. // If not specified, defaults to `false`. - DisableGrpcWeb *wrappers.BoolValue `protobuf:"bytes,8,opt,name=disable_grpc_web,json=disableGrpcWeb,proto3" json:"disable_grpc_web,omitempty"` + DisableGrpcWeb *wrapperspb.BoolValue `protobuf:"bytes,8,opt,name=disable_grpc_web,json=disableGrpcWeb,proto3" json:"disable_grpc_web,omitempty"` // Set this option to determine the state of the envoy configuration when a virtual service is deleted, resulting in a // proxy with no configured routes. // set to true if you wish to keep envoy serving the routes from the latest valid configuration. // set to false if you wish to reset the envoy configuration to a clean slate with no routes. // If not specified, defaults to `false`. - DisableProxyGarbageCollection *wrappers.BoolValue `protobuf:"bytes,9,opt,name=disable_proxy_garbage_collection,json=disableProxyGarbageCollection,proto3" json:"disable_proxy_garbage_collection,omitempty"` + DisableProxyGarbageCollection *wrapperspb.BoolValue `protobuf:"bytes,9,opt,name=disable_proxy_garbage_collection,json=disableProxyGarbageCollection,proto3" json:"disable_proxy_garbage_collection,omitempty"` // Set this option to specify the default max program size for regexes. If not specified, // defaults to 100. - RegexMaxProgramSize *wrappers.UInt32Value `protobuf:"bytes,10,opt,name=regex_max_program_size,json=regexMaxProgramSize,proto3" json:"regex_max_program_size,omitempty"` + RegexMaxProgramSize *wrapperspb.UInt32Value `protobuf:"bytes,10,opt,name=regex_max_program_size,json=regexMaxProgramSize,proto3" json:"regex_max_program_size,omitempty"` // Where the `gloo` REST xDS server should bind. // Defaults to `0.0.0.0:9976` RestXdsBindAddr string `protobuf:"bytes,11,opt,name=rest_xds_bind_addr,json=restXdsBindAddr,proto3" json:"rest_xds_bind_addr,omitempty"` // Whether or not to use rest xds for all EDS by default. // Rest XDS, as opposed to grpc, uses http polling rather than streaming - EnableRestEds *wrappers.BoolValue `protobuf:"bytes,12,opt,name=enable_rest_eds,json=enableRestEds,proto3" json:"enable_rest_eds,omitempty"` + // It is strongly recommended that this field be set to false, due to the superior performance of GRPC XDS + EnableRestEds *wrapperspb.BoolValue `protobuf:"bytes,12,opt,name=enable_rest_eds,json=enableRestEds,proto3" json:"enable_rest_eds,omitempty"` // The polling interval for the DNS server if upstream failover is configured. // If there is a failover upstream address with a hostname instead of an IP, Gloo will resolve the // hostname with the configured frequency to update endpoints with any changes to DNS resolution. // Defaults to 10s. - FailoverUpstreamDnsPollingInterval *duration.Duration `protobuf:"bytes,13,opt,name=failover_upstream_dns_polling_interval,json=failoverUpstreamDnsPollingInterval,proto3" json:"failover_upstream_dns_polling_interval,omitempty"` + FailoverUpstreamDnsPollingInterval *durationpb.Duration `protobuf:"bytes,13,opt,name=failover_upstream_dns_polling_interval,json=failoverUpstreamDnsPollingInterval,proto3" json:"failover_upstream_dns_polling_interval,omitempty"` + // By default gloo adds a series of filters to envoy to ensure that new routes are picked up + // Even if the listener previously did not have a filter on the chain previously. + // When set to true unused filters are not added to the chain by default. + // Defaults to false + RemoveUnusedFilters *wrapperspb.BoolValue `protobuf:"bytes,14,opt,name=remove_unused_filters,json=removeUnusedFilters,proto3" json:"remove_unused_filters,omitempty"` + // Where the `gloo` proxy debug server should bind. Defaults to `gloo:9966` + ProxyDebugBindAddr string `protobuf:"bytes,15,opt,name=proxy_debug_bind_addr,json=proxyDebugBindAddr,proto3" json:"proxy_debug_bind_addr,omitempty"` + // When enabled, log the request/response body and headers before and after + // any transformations are applied. May be useful in the case where many + // transformations are applied and it is difficult to determine which are + // causing issues. Defaults to false. + LogTransformationRequestResponseInfo *wrapperspb.BoolValue `protobuf:"bytes,16,opt,name=log_transformation_request_response_info,json=logTransformationRequestResponseInfo,proto3" json:"log_transformation_request_response_info,omitempty"` + // Set escapeCharacters for all TransformationTemplates on all vhosts and routes. + // This setting can be overridden in individual TransformationTemplates + TransformationEscapeCharacters *wrapperspb.BoolValue `protobuf:"bytes,17,opt,name=transformation_escape_characters,json=transformationEscapeCharacters,proto3" json:"transformation_escape_characters,omitempty"` + IstioOptions *GlooOptions_IstioOptions `protobuf:"bytes,18,opt,name=istio_options,json=istioOptions,proto3" json:"istio_options,omitempty"` + // When enabled, request/response body transformation will be bypassed automatically for websocket request. + // Buffering of the body will also be disabled in the mode but header transformation will still be applied. + EnableAutoWebsocketTransformationPassthrough *wrapperspb.BoolValue `protobuf:"bytes,19,opt,name=enable_auto_websocket_transformation_passthrough,json=enableAutoWebsocketTransformationPassthrough,proto3" json:"enable_auto_websocket_transformation_passthrough,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GlooOptions) Reset() { *x = GlooOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GlooOptions) String() string { @@ -685,8 +964,8 @@ func (x *GlooOptions) String() string { func (*GlooOptions) ProtoMessage() {} func (x *GlooOptions) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[4] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -698,7 +977,7 @@ func (x *GlooOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use GlooOptions.ProtoReflect.Descriptor instead. func (*GlooOptions) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{2} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{4} } func (x *GlooOptions) GetXdsBindAddr() string { @@ -715,14 +994,14 @@ func (x *GlooOptions) GetValidationBindAddr() string { return "" } -func (x *GlooOptions) GetCircuitBreakers() *CircuitBreakerConfig { +func (x *GlooOptions) GetCircuitBreakers() *circuit_breaker.CircuitBreakerConfig { if x != nil { return x.CircuitBreakers } return nil } -func (x *GlooOptions) GetEndpointsWarmingTimeout() *duration.Duration { +func (x *GlooOptions) GetEndpointsWarmingTimeout() *durationpb.Duration { if x != nil { return x.EndpointsWarmingTimeout } @@ -750,21 +1029,21 @@ func (x *GlooOptions) GetDisableKubernetesDestinations() bool { return false } -func (x *GlooOptions) GetDisableGrpcWeb() *wrappers.BoolValue { +func (x *GlooOptions) GetDisableGrpcWeb() *wrapperspb.BoolValue { if x != nil { return x.DisableGrpcWeb } return nil } -func (x *GlooOptions) GetDisableProxyGarbageCollection() *wrappers.BoolValue { +func (x *GlooOptions) GetDisableProxyGarbageCollection() *wrapperspb.BoolValue { if x != nil { return x.DisableProxyGarbageCollection } return nil } -func (x *GlooOptions) GetRegexMaxProgramSize() *wrappers.UInt32Value { +func (x *GlooOptions) GetRegexMaxProgramSize() *wrapperspb.UInt32Value { if x != nil { return x.RegexMaxProgramSize } @@ -778,26 +1057,114 @@ func (x *GlooOptions) GetRestXdsBindAddr() string { return "" } -func (x *GlooOptions) GetEnableRestEds() *wrappers.BoolValue { +func (x *GlooOptions) GetEnableRestEds() *wrapperspb.BoolValue { if x != nil { return x.EnableRestEds } return nil } -func (x *GlooOptions) GetFailoverUpstreamDnsPollingInterval() *duration.Duration { +func (x *GlooOptions) GetFailoverUpstreamDnsPollingInterval() *durationpb.Duration { if x != nil { return x.FailoverUpstreamDnsPollingInterval } return nil } -// Settings specific to the Gateway controller -type GatewayOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +func (x *GlooOptions) GetRemoveUnusedFilters() *wrapperspb.BoolValue { + if x != nil { + return x.RemoveUnusedFilters + } + return nil +} + +func (x *GlooOptions) GetProxyDebugBindAddr() string { + if x != nil { + return x.ProxyDebugBindAddr + } + return "" +} + +func (x *GlooOptions) GetLogTransformationRequestResponseInfo() *wrapperspb.BoolValue { + if x != nil { + return x.LogTransformationRequestResponseInfo + } + return nil +} + +func (x *GlooOptions) GetTransformationEscapeCharacters() *wrapperspb.BoolValue { + if x != nil { + return x.TransformationEscapeCharacters + } + return nil +} + +func (x *GlooOptions) GetIstioOptions() *GlooOptions_IstioOptions { + if x != nil { + return x.IstioOptions + } + return nil +} + +func (x *GlooOptions) GetEnableAutoWebsocketTransformationPassthrough() *wrapperspb.BoolValue { + if x != nil { + return x.EnableAutoWebsocketTransformationPassthrough + } + return nil +} + +// Default configuration to use for VirtualServices, when not provided by a specific virtual service +// When these properties are defined on a specific VirtualService, this configuration will be ignored +type VirtualServiceOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Default one_way_tls value to use for all virtual services where one_way_tls config has not been specified. + // If the SSL config has the ca.crt (root CA) provided, Gloo uses it to perform mTLS by default. + // Set oneWayTls to true to disable mTLS in favor of server-only TLS (one-way TLS), even if Gloo has the root CA. + OneWayTls *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=one_way_tls,json=oneWayTls,proto3" json:"one_way_tls,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VirtualServiceOptions) Reset() { + *x = VirtualServiceOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VirtualServiceOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VirtualServiceOptions) ProtoMessage() {} + +func (x *VirtualServiceOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VirtualServiceOptions.ProtoReflect.Descriptor instead. +func (*VirtualServiceOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{5} +} + +func (x *VirtualServiceOptions) GetOneWayTls() *wrapperspb.BoolValue { + if x != nil { + return x.OneWayTls + } + return nil +} +// Settings specific to the Gateway controller +type GatewayOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` // Address of the `gloo` config validation server. Defaults to `gloo:9988`. ValidationServerAddr string `protobuf:"bytes,1,opt,name=validation_server_addr,json=validationServerAddr,proto3" json:"validation_server_addr,omitempty"` // If provided, the Gateway will perform [Dynamic Admission Control](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/) @@ -809,20 +1176,41 @@ type GatewayOptions struct { // Deprecated. // This setting is ignored. Maintained for backwards compatibility with settings exposed on 1.2.x branch of Gloo. // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/settings.proto. AlwaysSortRouteTableRoutes bool `protobuf:"varint,5,opt,name=always_sort_route_table_routes,json=alwaysSortRouteTableRoutes,proto3" json:"always_sort_route_table_routes,omitempty"` // If set, compresses proxy space. This can help make the Proxy CRD smaller to fit in etcd. // This is an advanced option. Use with care. CompressedProxySpec bool `protobuf:"varint,6,opt,name=compressed_proxy_spec,json=compressedProxySpec,proto3" json:"compressed_proxy_spec,omitempty"` + // Default configuration to use for VirtualServices, when not provided by a specific virtual service + // When these properties are defined on a specific VirtualService, this configuration will be ignored + VirtualServiceOptions *VirtualServiceOptions `protobuf:"bytes,7,opt,name=virtual_service_options,json=virtualServiceOptions,proto3" json:"virtual_service_options,omitempty"` + // Set this to persist the Proxy CRD to etcd By default, proxies are kept in memory to improve performance. + // Proxies can be persisted to etcd to allow external tools and other pods to read the contents the Proxy CRD. + PersistProxySpec *wrapperspb.BoolValue `protobuf:"bytes,8,opt,name=persist_proxy_spec,json=persistProxySpec,proto3" json:"persist_proxy_spec,omitempty"` + // This is set based on the install mode. It indicates to gloo whether or not it should run the gateway + // translations and validation. + EnableGatewayController *wrapperspb.BoolValue `protobuf:"bytes,9,opt,name=enable_gateway_controller,json=enableGatewayController,proto3" json:"enable_gateway_controller,omitempty"` + // If set, group virtual hosts by matching ssl config, and isolate them on separate filter chains + // The default behavior is to aggregate all virtual hosts, and expose them on identical filter chains, + // each with a FilterChainMatch that corresponds to the ssl config. + // Individual Gateways can override this behavior by configuring the "gateway.solo.io/isolate_vhost" annotation + // to be a truthy ("true", "false") value + IsolateVirtualHostsBySslConfig *wrapperspb.BoolValue `protobuf:"bytes,10,opt,name=isolate_virtual_hosts_by_ssl_config,json=isolateVirtualHostsBySslConfig,proto3" json:"isolate_virtual_hosts_by_ssl_config,omitempty"` + // If set, gateways will be translated into Envoy listeners even if no VirtualServices exist or match a gateway. + // When there are no VirtualServices that implies there are no routes to serve, so all requests will return a 404. + // Defaults to false. + // The default behavior when no VirtualServices are defined or no Gateways match a VirtualService is that + // the gateway is not converted into an Envoy listener. + TranslateEmptyGateways *wrapperspb.BoolValue `protobuf:"bytes,11,opt,name=translate_empty_gateways,json=translateEmptyGateways,proto3" json:"translate_empty_gateways,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GatewayOptions) Reset() { *x = GatewayOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GatewayOptions) String() string { @@ -832,8 +1220,8 @@ func (x *GatewayOptions) String() string { func (*GatewayOptions) ProtoMessage() {} func (x *GatewayOptions) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[6] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -845,7 +1233,7 @@ func (x *GatewayOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use GatewayOptions.ProtoReflect.Descriptor instead. func (*GatewayOptions) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{3} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{6} } func (x *GatewayOptions) GetValidationServerAddr() string { @@ -869,7 +1257,7 @@ func (x *GatewayOptions) GetReadGatewaysFromAllNamespaces() bool { return false } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/settings.proto. func (x *GatewayOptions) GetAlwaysSortRouteTableRoutes() bool { if x != nil { return x.AlwaysSortRouteTableRoutes @@ -884,41 +1272,147 @@ func (x *GatewayOptions) GetCompressedProxySpec() bool { return false } -type SettingsStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // State is the enum indicating the state of the resource - State SettingsStatus_State `protobuf:"varint,1,opt,name=state,proto3,enum=gloo.solo.io.SettingsStatus_State" json:"state,omitempty"` - // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty - Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` - // Reference to the reporter who wrote this status - ReportedBy string `protobuf:"bytes,3,opt,name=reported_by,json=reportedBy,proto3" json:"reported_by,omitempty"` - // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource - SubresourceStatuses map[string]*SettingsStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // Opaque details about status results - Details *_struct.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` +func (x *GatewayOptions) GetVirtualServiceOptions() *VirtualServiceOptions { + if x != nil { + return x.VirtualServiceOptions + } + return nil } -func (x *SettingsStatus) Reset() { - *x = SettingsStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *GatewayOptions) GetPersistProxySpec() *wrapperspb.BoolValue { + if x != nil { + return x.PersistProxySpec } + return nil } -func (x *SettingsStatus) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *GatewayOptions) GetEnableGatewayController() *wrapperspb.BoolValue { + if x != nil { + return x.EnableGatewayController + } + return nil +} + +func (x *GatewayOptions) GetIsolateVirtualHostsBySslConfig() *wrapperspb.BoolValue { + if x != nil { + return x.IsolateVirtualHostsBySslConfig + } + return nil +} + +func (x *GatewayOptions) GetTranslateEmptyGateways() *wrapperspb.BoolValue { + if x != nil { + return x.TranslateEmptyGateways + } + return nil +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type ConsoleOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ConsoleOptions) Reset() { + *x = ConsoleOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ConsoleOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConsoleOptions) ProtoMessage() {} + +func (x *ConsoleOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConsoleOptions.ProtoReflect.Descriptor instead. +func (*ConsoleOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{7} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type GraphqlOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GraphqlOptions) Reset() { + *x = GraphqlOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GraphqlOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GraphqlOptions) ProtoMessage() {} + +func (x *GraphqlOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GraphqlOptions.ProtoReflect.Descriptor instead. +func (*GraphqlOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{8} +} + +type SettingsStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + // State is the enum indicating the state of the resource + State SettingsStatus_State `protobuf:"varint,1,opt,name=state,proto3,enum=gloo.solo.io.SettingsStatus_State" json:"state,omitempty"` + // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty + Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` + // Reference to the reporter who wrote this status + ReportedBy string `protobuf:"bytes,3,opt,name=reported_by,json=reportedBy,proto3" json:"reported_by,omitempty"` + // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource + SubresourceStatuses map[string]*SettingsStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Opaque details about status results + Details *structpb.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SettingsStatus) Reset() { + *x = SettingsStatus{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SettingsStatus) String() string { + return protoimpl.X.MessageStringOf(x) } func (*SettingsStatus) ProtoMessage() {} func (x *SettingsStatus) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[9] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -930,7 +1424,7 @@ func (x *SettingsStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use SettingsStatus.ProtoReflect.Descriptor instead. func (*SettingsStatus) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{4} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{9} } func (x *SettingsStatus) GetState() SettingsStatus_State { @@ -961,27 +1455,115 @@ func (x *SettingsStatus) GetSubresourceStatuses() map[string]*SettingsStatus { return nil } -func (x *SettingsStatus) GetDetails() *_struct.Struct { +func (x *SettingsStatus) GetDetails() *structpb.Struct { if x != nil { return x.Details } return nil } +type SettingsNamespacedStatuses struct { + state protoimpl.MessageState `protogen:"open.v1"` + Statuses map[string]*SettingsStatus `protobuf:"bytes,1,rep,name=statuses,proto3" json:"statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SettingsNamespacedStatuses) Reset() { + *x = SettingsNamespacedStatuses{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SettingsNamespacedStatuses) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SettingsNamespacedStatuses) ProtoMessage() {} + +func (x *SettingsNamespacedStatuses) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SettingsNamespacedStatuses.ProtoReflect.Descriptor instead. +func (*SettingsNamespacedStatuses) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{10} +} + +func (x *SettingsNamespacedStatuses) GetStatuses() map[string]*SettingsStatus { + if x != nil { + return x.Statuses + } + return nil +} + +type SettingsSpec_SecretOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Required. List of configured secret sources. These clients will be sorted and + // initialized in a stable order kubernetes > directory > vault. + Sources []*SettingsSpec_SecretOptions_Source `protobuf:"bytes,1,rep,name=sources,proto3" json:"sources,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SettingsSpec_SecretOptions) Reset() { + *x = SettingsSpec_SecretOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SettingsSpec_SecretOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SettingsSpec_SecretOptions) ProtoMessage() {} + +func (x *SettingsSpec_SecretOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SettingsSpec_SecretOptions.ProtoReflect.Descriptor instead. +func (*SettingsSpec_SecretOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *SettingsSpec_SecretOptions) GetSources() []*SettingsSpec_SecretOptions_Source { + if x != nil { + return x.Sources + } + return nil +} + // Use Kubernetes CRDs as storage. type SettingsSpec_KubernetesCrds struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SettingsSpec_KubernetesCrds) Reset() { *x = SettingsSpec_KubernetesCrds{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SettingsSpec_KubernetesCrds) String() string { @@ -991,8 +1573,8 @@ func (x *SettingsSpec_KubernetesCrds) String() string { func (*SettingsSpec_KubernetesCrds) ProtoMessage() {} func (x *SettingsSpec_KubernetesCrds) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[12] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1004,23 +1586,21 @@ func (x *SettingsSpec_KubernetesCrds) ProtoReflect() protoreflect.Message { // Deprecated: Use SettingsSpec_KubernetesCrds.ProtoReflect.Descriptor instead. func (*SettingsSpec_KubernetesCrds) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 0} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 1} } // Use Kubernetes as storage for secret data. type SettingsSpec_KubernetesSecrets struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SettingsSpec_KubernetesSecrets) Reset() { *x = SettingsSpec_KubernetesSecrets{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SettingsSpec_KubernetesSecrets) String() string { @@ -1030,8 +1610,8 @@ func (x *SettingsSpec_KubernetesSecrets) String() string { func (*SettingsSpec_KubernetesSecrets) ProtoMessage() {} func (x *SettingsSpec_KubernetesSecrets) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[13] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1043,48 +1623,66 @@ func (x *SettingsSpec_KubernetesSecrets) ProtoReflect() protoreflect.Message { // Deprecated: Use SettingsSpec_KubernetesSecrets.ProtoReflect.Descriptor instead. func (*SettingsSpec_KubernetesSecrets) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 1} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 2} } // Use [HashiCorp Vault](https://www.vaultproject.io/) as storage for secret data. type SettingsSpec_VaultSecrets struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` + // DEPRECATED: use field accessToken // the Token used to authenticate to Vault Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` // address is the address of the Vault server. This should be a complete - // URL such as http://solo.io + // URL such as http://solo.io and include port if necessary (vault's default port is 8200) Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + // DEPRECATED: use field tls_config to configure TLS connection to Vault // caCert is the path to a PEM-encoded CA cert file to use to verify the // Vault server SSL certificate. CaCert string `protobuf:"bytes,3,opt,name=ca_cert,json=caCert,proto3" json:"ca_cert,omitempty"` + // DEPRECATED: use field tls_config to configure TLS connection to Vault // caPath is the path to a directory of PEM-encoded CA cert files to verify // the Vault server SSL certificate. CaPath string `protobuf:"bytes,4,opt,name=ca_path,json=caPath,proto3" json:"ca_path,omitempty"` + // DEPRECATED: use field tls_config to configure TLS connection to Vault // clientCert is the path to the certificate for Vault communication ClientCert string `protobuf:"bytes,5,opt,name=client_cert,json=clientCert,proto3" json:"client_cert,omitempty"` + // DEPRECATED: use field tls_config to configure TLS connection to Vault // clientKey is the path to the private key for Vault communication ClientKey string `protobuf:"bytes,6,opt,name=client_key,json=clientKey,proto3" json:"client_key,omitempty"` + // DEPRECATED: use field tls_config to configure TLS connection to Vault // tlsServerName, if set, is used to set the SNI host when connecting via // TLS. TlsServerName string `protobuf:"bytes,7,opt,name=tls_server_name,json=tlsServerName,proto3" json:"tls_server_name,omitempty"` - // Insecure enables or disables SSL verification - Insecure *wrappers.BoolValue `protobuf:"bytes,8,opt,name=insecure,proto3" json:"insecure,omitempty"` + // DEPRECATED: use field tls_config to configure TLS connection to Vault + // When set to true, disables TLS verification + Insecure *wrapperspb.BoolValue `protobuf:"bytes,8,opt,name=insecure,proto3" json:"insecure,omitempty"` // all keys stored in Vault will begin with this Vault - // this can be used to run multiple instances of Gloo against the same Consul cluster + // this can be used to run multiple instances of Gloo against the same Vault cluster // defaults to `gloo` RootKey string `protobuf:"bytes,9,opt,name=root_key,json=rootKey,proto3" json:"root_key,omitempty"` + // Optional: The name of a Vault Secrets Engine to which Vault should route traffic. + // For more info see https://learn.hashicorp.com/tutorials/vault/getting-started-secrets-engines. + // Defaults to 'secret' + PathPrefix string `protobuf:"bytes,10,opt,name=path_prefix,json=pathPrefix,proto3" json:"path_prefix,omitempty"` + // Configure TLS options for client connection to Vault. This is only available when running + // Gloo Edge outside of an container orchestration tool such as Kubernetes or Nomad. + TlsConfig *SettingsSpec_VaultTlsConfig `protobuf:"bytes,11,opt,name=tls_config,json=tlsConfig,proto3" json:"tls_config,omitempty"` + // Support for multiple authentication methods + // + // Types that are valid to be assigned to AuthMethod: + // + // *SettingsSpec_VaultSecrets_AccessToken + // *SettingsSpec_VaultSecrets_Aws + AuthMethod isSettingsSpec_VaultSecrets_AuthMethod `protobuf_oneof:"auth_method"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SettingsSpec_VaultSecrets) Reset() { *x = SettingsSpec_VaultSecrets{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SettingsSpec_VaultSecrets) String() string { @@ -1094,8 +1692,8 @@ func (x *SettingsSpec_VaultSecrets) String() string { func (*SettingsSpec_VaultSecrets) ProtoMessage() {} func (x *SettingsSpec_VaultSecrets) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[14] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1107,7 +1705,7 @@ func (x *SettingsSpec_VaultSecrets) ProtoReflect() protoreflect.Message { // Deprecated: Use SettingsSpec_VaultSecrets.ProtoReflect.Descriptor instead. func (*SettingsSpec_VaultSecrets) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 2} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 3} } func (x *SettingsSpec_VaultSecrets) GetToken() string { @@ -1159,7 +1757,7 @@ func (x *SettingsSpec_VaultSecrets) GetTlsServerName() string { return "" } -func (x *SettingsSpec_VaultSecrets) GetInsecure() *wrappers.BoolValue { +func (x *SettingsSpec_VaultSecrets) GetInsecure() *wrapperspb.BoolValue { if x != nil { return x.Insecure } @@ -1170,30 +1768,291 @@ func (x *SettingsSpec_VaultSecrets) GetRootKey() string { if x != nil { return x.RootKey } - return "" + return "" +} + +func (x *SettingsSpec_VaultSecrets) GetPathPrefix() string { + if x != nil { + return x.PathPrefix + } + return "" +} + +func (x *SettingsSpec_VaultSecrets) GetTlsConfig() *SettingsSpec_VaultTlsConfig { + if x != nil { + return x.TlsConfig + } + return nil +} + +func (x *SettingsSpec_VaultSecrets) GetAuthMethod() isSettingsSpec_VaultSecrets_AuthMethod { + if x != nil { + return x.AuthMethod + } + return nil +} + +func (x *SettingsSpec_VaultSecrets) GetAccessToken() string { + if x != nil { + if x, ok := x.AuthMethod.(*SettingsSpec_VaultSecrets_AccessToken); ok { + return x.AccessToken + } + } + return "" +} + +func (x *SettingsSpec_VaultSecrets) GetAws() *SettingsSpec_VaultAwsAuth { + if x != nil { + if x, ok := x.AuthMethod.(*SettingsSpec_VaultSecrets_Aws); ok { + return x.Aws + } + } + return nil +} + +type isSettingsSpec_VaultSecrets_AuthMethod interface { + isSettingsSpec_VaultSecrets_AuthMethod() +} + +type SettingsSpec_VaultSecrets_AccessToken struct { + AccessToken string `protobuf:"bytes,12,opt,name=access_token,json=accessToken,proto3,oneof"` +} + +type SettingsSpec_VaultSecrets_Aws struct { + Aws *SettingsSpec_VaultAwsAuth `protobuf:"bytes,13,opt,name=aws,proto3,oneof"` +} + +func (*SettingsSpec_VaultSecrets_AccessToken) isSettingsSpec_VaultSecrets_AuthMethod() {} + +func (*SettingsSpec_VaultSecrets_Aws) isSettingsSpec_VaultSecrets_AuthMethod() {} + +// Configure Vault client to authenticate to server via AWS auth (IAM only). +// For more info see https://developer.hashicorp.com/vault/docs/auth/aws +type SettingsSpec_VaultAwsAuth struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The Vault role we are trying to authenticate to. + // This is not necessarily the same as the AWS role to which the Vault role is configured. + VaultRole string `protobuf:"bytes,1,opt,name=vault_role,json=vaultRole,proto3" json:"vault_role,omitempty"` + // The AWS region to use for the login attempt + Region string `protobuf:"bytes,2,opt,name=region,proto3" json:"region,omitempty"` + // The IAM Server ID Header required to be included in the request + IamServerIdHeader string `protobuf:"bytes,3,opt,name=iam_server_id_header,json=iamServerIdHeader,proto3" json:"iam_server_id_header,omitempty"` + // The Vault path on which the AWS auth is mounted + MountPath string `protobuf:"bytes,4,opt,name=mount_path,json=mountPath,proto3" json:"mount_path,omitempty"` + // The Access Key ID as provided by the security credentials on the AWS IAM resource. + // Optional: In cases such as receiving temporary credentials through assumed roles with AWS Security Token Service (STS) or IAM Roles for Service Accounts (IRSA), this field can be omitted. + // https://developer.hashicorp.com/vault/docs/auth/aws#iam-authentication-inferences + AccessKeyId string `protobuf:"bytes,5,opt,name=access_key_id,json=accessKeyId,proto3" json:"access_key_id,omitempty"` + // The Secret Access Key as provided by the security credentials on the AWS IAM resource. + // Optional: In cases such as receiving temporary credentials through assumed roles with AWS Security Token Service (STS) or IAM Roles for Service Accounts (IRSA), this field can be omitted. + // https://developer.hashicorp.com/vault/docs/auth/aws#iam-authentication-inferences + SecretAccessKey string `protobuf:"bytes,6,opt,name=secret_access_key,json=secretAccessKey,proto3" json:"secret_access_key,omitempty"` + // The Session Token as provided by the security credentials on the AWS IAM resource + SessionToken string `protobuf:"bytes,7,opt,name=session_token,json=sessionToken,proto3" json:"session_token,omitempty"` + // The time increment, in seconds, used in renewing the lease of the Vault token. See: https://developer.hashicorp.com/vault/docs/concepts/lease#lease-durations-and-renewal. Defaults to 0, which causes the default TTL to be used. + LeaseIncrement int32 `protobuf:"varint,8,opt,name=lease_increment,json=leaseIncrement,proto3" json:"lease_increment,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SettingsSpec_VaultAwsAuth) Reset() { + *x = SettingsSpec_VaultAwsAuth{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SettingsSpec_VaultAwsAuth) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SettingsSpec_VaultAwsAuth) ProtoMessage() {} + +func (x *SettingsSpec_VaultAwsAuth) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SettingsSpec_VaultAwsAuth.ProtoReflect.Descriptor instead. +func (*SettingsSpec_VaultAwsAuth) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 4} +} + +func (x *SettingsSpec_VaultAwsAuth) GetVaultRole() string { + if x != nil { + return x.VaultRole + } + return "" +} + +func (x *SettingsSpec_VaultAwsAuth) GetRegion() string { + if x != nil { + return x.Region + } + return "" +} + +func (x *SettingsSpec_VaultAwsAuth) GetIamServerIdHeader() string { + if x != nil { + return x.IamServerIdHeader + } + return "" +} + +func (x *SettingsSpec_VaultAwsAuth) GetMountPath() string { + if x != nil { + return x.MountPath + } + return "" +} + +func (x *SettingsSpec_VaultAwsAuth) GetAccessKeyId() string { + if x != nil { + return x.AccessKeyId + } + return "" +} + +func (x *SettingsSpec_VaultAwsAuth) GetSecretAccessKey() string { + if x != nil { + return x.SecretAccessKey + } + return "" +} + +func (x *SettingsSpec_VaultAwsAuth) GetSessionToken() string { + if x != nil { + return x.SessionToken + } + return "" +} + +func (x *SettingsSpec_VaultAwsAuth) GetLeaseIncrement() int32 { + if x != nil { + return x.LeaseIncrement + } + return 0 +} + +// Settings to configure TLS-enabled Vault as a secret store +type SettingsSpec_VaultTlsConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // caCert is the path to a PEM-encoded CA cert file to use to verify the + // Vault server SSL certificate. + CaCert string `protobuf:"bytes,1,opt,name=ca_cert,json=caCert,proto3" json:"ca_cert,omitempty"` + // caPath is the path to a directory of PEM-encoded CA cert files to verify + // the Vault server SSL certificate. + CaPath string `protobuf:"bytes,2,opt,name=ca_path,json=caPath,proto3" json:"ca_path,omitempty"` + // clientCert is the path to the certificate for Vault communication + ClientCert string `protobuf:"bytes,3,opt,name=client_cert,json=clientCert,proto3" json:"client_cert,omitempty"` + // clientKey is the path to the private key for Vault communication + ClientKey string `protobuf:"bytes,4,opt,name=client_key,json=clientKey,proto3" json:"client_key,omitempty"` + // tlsServerName, if set, is used to set the SNI host when connecting via + // TLS. + TlsServerName string `protobuf:"bytes,5,opt,name=tls_server_name,json=tlsServerName,proto3" json:"tls_server_name,omitempty"` + // When set to true, disables TLS verification + Insecure *wrapperspb.BoolValue `protobuf:"bytes,6,opt,name=insecure,proto3" json:"insecure,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SettingsSpec_VaultTlsConfig) Reset() { + *x = SettingsSpec_VaultTlsConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SettingsSpec_VaultTlsConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SettingsSpec_VaultTlsConfig) ProtoMessage() {} + +func (x *SettingsSpec_VaultTlsConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SettingsSpec_VaultTlsConfig.ProtoReflect.Descriptor instead. +func (*SettingsSpec_VaultTlsConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 5} +} + +func (x *SettingsSpec_VaultTlsConfig) GetCaCert() string { + if x != nil { + return x.CaCert + } + return "" +} + +func (x *SettingsSpec_VaultTlsConfig) GetCaPath() string { + if x != nil { + return x.CaPath + } + return "" +} + +func (x *SettingsSpec_VaultTlsConfig) GetClientCert() string { + if x != nil { + return x.ClientCert + } + return "" +} + +func (x *SettingsSpec_VaultTlsConfig) GetClientKey() string { + if x != nil { + return x.ClientKey + } + return "" +} + +func (x *SettingsSpec_VaultTlsConfig) GetTlsServerName() string { + if x != nil { + return x.TlsServerName + } + return "" +} + +func (x *SettingsSpec_VaultTlsConfig) GetInsecure() *wrapperspb.BoolValue { + if x != nil { + return x.Insecure + } + return nil } // Use [HashiCorp Consul Key-Value](https://www.consul.io/api/kv.html/) as storage for config data. // Configuration options for connecting to Consul can be configured in the Settings' root // `consul` field type SettingsSpec_ConsulKv struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // all keys stored in Consul will begin with this prefix // this can be used to run multiple instances of Gloo against the same Consul cluster // defaults to `gloo` - RootKey string `protobuf:"bytes,1,opt,name=root_key,json=rootKey,proto3" json:"root_key,omitempty"` + RootKey string `protobuf:"bytes,1,opt,name=root_key,json=rootKey,proto3" json:"root_key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SettingsSpec_ConsulKv) Reset() { *x = SettingsSpec_ConsulKv{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SettingsSpec_ConsulKv) String() string { @@ -1203,8 +2062,8 @@ func (x *SettingsSpec_ConsulKv) String() string { func (*SettingsSpec_ConsulKv) ProtoMessage() {} func (x *SettingsSpec_ConsulKv) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[17] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1216,7 +2075,7 @@ func (x *SettingsSpec_ConsulKv) ProtoReflect() protoreflect.Message { // Deprecated: Use SettingsSpec_ConsulKv.ProtoReflect.Descriptor instead. func (*SettingsSpec_ConsulKv) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 3} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 6} } func (x *SettingsSpec_ConsulKv) GetRootKey() string { @@ -1228,18 +2087,16 @@ func (x *SettingsSpec_ConsulKv) GetRootKey() string { // Use Kubernetes ConfigMaps as storage. type SettingsSpec_KubernetesConfigmaps struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SettingsSpec_KubernetesConfigmaps) Reset() { *x = SettingsSpec_KubernetesConfigmaps{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SettingsSpec_KubernetesConfigmaps) String() string { @@ -1249,8 +2106,8 @@ func (x *SettingsSpec_KubernetesConfigmaps) String() string { func (*SettingsSpec_KubernetesConfigmaps) ProtoMessage() {} func (x *SettingsSpec_KubernetesConfigmaps) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[18] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1262,26 +2119,23 @@ func (x *SettingsSpec_KubernetesConfigmaps) ProtoReflect() protoreflect.Message // Deprecated: Use SettingsSpec_KubernetesConfigmaps.ProtoReflect.Descriptor instead. func (*SettingsSpec_KubernetesConfigmaps) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 4} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 7} } // As an alternative to Kubernetes CRDs, Gloo is able to store resources in a local file system. // This option determines the root of the directory tree used to this end. type SettingsSpec_Directory struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Directory string `protobuf:"bytes,1,opt,name=directory,proto3" json:"directory,omitempty"` unknownFields protoimpl.UnknownFields - - Directory string `protobuf:"bytes,1,opt,name=directory,proto3" json:"directory,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SettingsSpec_Directory) Reset() { *x = SettingsSpec_Directory{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SettingsSpec_Directory) String() string { @@ -1291,8 +2145,8 @@ func (x *SettingsSpec_Directory) String() string { func (*SettingsSpec_Directory) ProtoMessage() {} func (x *SettingsSpec_Directory) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[19] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1304,7 +2158,7 @@ func (x *SettingsSpec_Directory) ProtoReflect() protoreflect.Message { // Deprecated: Use SettingsSpec_Directory.ProtoReflect.Descriptor instead. func (*SettingsSpec_Directory) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 5} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 8} } func (x *SettingsSpec_Directory) GetDirectory() string { @@ -1315,10 +2169,7 @@ func (x *SettingsSpec_Directory) GetDirectory() string { } type SettingsSpec_KnativeOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Address of the clusteringress proxy. // If empty, it will default to clusteringress-proxy.$POD_NAMESPACE.svc.cluster.local. // Use if running Knative Version 0.7.X or less @@ -1331,15 +2182,15 @@ type SettingsSpec_KnativeOptions struct { // If empty, it will default to knative-internal-proxy.$POD_NAMESPACE.svc.cluster.local. // Use if running Knative Version 0.8.X or higher KnativeInternalProxyAddress string `protobuf:"bytes,3,opt,name=knative_internal_proxy_address,json=knativeInternalProxyAddress,proto3" json:"knative_internal_proxy_address,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SettingsSpec_KnativeOptions) Reset() { *x = SettingsSpec_KnativeOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SettingsSpec_KnativeOptions) String() string { @@ -1349,8 +2200,8 @@ func (x *SettingsSpec_KnativeOptions) String() string { func (*SettingsSpec_KnativeOptions) ProtoMessage() {} func (x *SettingsSpec_KnativeOptions) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[20] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1362,7 +2213,7 @@ func (x *SettingsSpec_KnativeOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use SettingsSpec_KnativeOptions.ProtoReflect.Descriptor instead. func (*SettingsSpec_KnativeOptions) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 6} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 9} } func (x *SettingsSpec_KnativeOptions) GetClusterIngressProxyAddress() string { @@ -1387,20 +2238,19 @@ func (x *SettingsSpec_KnativeOptions) GetKnativeInternalProxyAddress() string { } type SettingsSpec_DiscoveryOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + FdsMode SettingsSpec_DiscoveryOptions_FdsMode `protobuf:"varint,1,opt,name=fds_mode,json=fdsMode,proto3,enum=gloo.solo.io.SettingsSpec_DiscoveryOptions_FdsMode" json:"fds_mode,omitempty"` + UdsOptions *SettingsSpec_DiscoveryOptions_UdsOptions `protobuf:"bytes,2,opt,name=uds_options,json=udsOptions,proto3" json:"uds_options,omitempty"` + FdsOptions *SettingsSpec_DiscoveryOptions_FdsOptions `protobuf:"bytes,3,opt,name=fds_options,json=fdsOptions,proto3" json:"fds_options,omitempty"` unknownFields protoimpl.UnknownFields - - FdsMode SettingsSpec_DiscoveryOptions_FdsMode `protobuf:"varint,1,opt,name=fds_mode,json=fdsMode,proto3,enum=gloo.solo.io.SettingsSpec_DiscoveryOptions_FdsMode" json:"fds_mode,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SettingsSpec_DiscoveryOptions) Reset() { *x = SettingsSpec_DiscoveryOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SettingsSpec_DiscoveryOptions) String() string { @@ -1410,8 +2260,8 @@ func (x *SettingsSpec_DiscoveryOptions) String() string { func (*SettingsSpec_DiscoveryOptions) ProtoMessage() {} func (x *SettingsSpec_DiscoveryOptions) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[21] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1423,7 +2273,7 @@ func (x *SettingsSpec_DiscoveryOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use SettingsSpec_DiscoveryOptions.ProtoReflect.Descriptor instead. func (*SettingsSpec_DiscoveryOptions) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 7} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 10} } func (x *SettingsSpec_DiscoveryOptions) GetFdsMode() SettingsSpec_DiscoveryOptions_FdsMode { @@ -1433,22 +2283,33 @@ func (x *SettingsSpec_DiscoveryOptions) GetFdsMode() SettingsSpec_DiscoveryOptio return SettingsSpec_DiscoveryOptions_BLACKLIST } +func (x *SettingsSpec_DiscoveryOptions) GetUdsOptions() *SettingsSpec_DiscoveryOptions_UdsOptions { + if x != nil { + return x.UdsOptions + } + return nil +} + +func (x *SettingsSpec_DiscoveryOptions) GetFdsOptions() *SettingsSpec_DiscoveryOptions_FdsOptions { + if x != nil { + return x.FdsOptions + } + return nil +} + // Provides overrides for the default configuration parameters used to connect to Consul. // // Note: It is also possible to configure the Consul client Gloo uses via the environment variables // described [here](https://www.consul.io/docs/commands/index.html#environment-variables). These // need to be set on the Gloo container. type SettingsSpec_ConsulConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Deprecated: prefer http_address. // The address of the Consul HTTP server. // Used by service discovery and key-value storage (if-enabled). // Defaults to the value of the standard CONSUL_HTTP_ADDR env if set, otherwise to 127.0.0.1:8500. // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/settings.proto. Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` // Datacenter to use. If not provided, the default agent datacenter is used. Datacenter string `protobuf:"bytes,2,opt,name=datacenter,proto3" json:"datacenter,omitempty"` @@ -1472,10 +2333,10 @@ type SettingsSpec_ConsulConfiguration struct { // If this is set then you need to also set CertFile. KeyFile string `protobuf:"bytes,9,opt,name=key_file,json=keyFile,proto3" json:"key_file,omitempty"` // InsecureSkipVerify if set to true will disable TLS host verification. - InsecureSkipVerify *wrappers.BoolValue `protobuf:"bytes,10,opt,name=insecure_skip_verify,json=insecureSkipVerify,proto3" json:"insecure_skip_verify,omitempty"` + InsecureSkipVerify *wrapperspb.BoolValue `protobuf:"bytes,10,opt,name=insecure_skip_verify,json=insecureSkipVerify,proto3" json:"insecure_skip_verify,omitempty"` // WaitTime limits how long a watches for Consul resources will block. // If not provided, the agent default values will be used. - WaitTime *duration.Duration `protobuf:"bytes,11,opt,name=wait_time,json=waitTime,proto3" json:"wait_time,omitempty"` + WaitTime *durationpb.Duration `protobuf:"bytes,11,opt,name=wait_time,json=waitTime,proto3" json:"wait_time,omitempty"` // Enable Service Discovery via Consul with this field // set to empty struct `{}` to enable with defaults ServiceDiscovery *SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions `protobuf:"bytes,12,opt,name=service_discovery,json=serviceDiscovery,proto3" json:"service_discovery,omitempty"` @@ -1491,16 +2352,16 @@ type SettingsSpec_ConsulConfiguration struct { // If there is a Consul service address with a hostname instead of an IP, Gloo will resolve the // hostname with the configured frequency to update endpoints with any changes to DNS resolution. // Defaults to 5s. - DnsPollingInterval *duration.Duration `protobuf:"bytes,15,opt,name=dns_polling_interval,json=dnsPollingInterval,proto3" json:"dns_polling_interval,omitempty"` + DnsPollingInterval *durationpb.Duration `protobuf:"bytes,15,opt,name=dns_polling_interval,json=dnsPollingInterval,proto3" json:"dns_polling_interval,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SettingsSpec_ConsulConfiguration) Reset() { *x = SettingsSpec_ConsulConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SettingsSpec_ConsulConfiguration) String() string { @@ -1510,8 +2371,8 @@ func (x *SettingsSpec_ConsulConfiguration) String() string { func (*SettingsSpec_ConsulConfiguration) ProtoMessage() {} func (x *SettingsSpec_ConsulConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[22] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1523,10 +2384,10 @@ func (x *SettingsSpec_ConsulConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use SettingsSpec_ConsulConfiguration.ProtoReflect.Descriptor instead. func (*SettingsSpec_ConsulConfiguration) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 8} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 11} } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/settings.proto. func (x *SettingsSpec_ConsulConfiguration) GetAddress() string { if x != nil { return x.Address @@ -1590,14 +2451,14 @@ func (x *SettingsSpec_ConsulConfiguration) GetKeyFile() string { return "" } -func (x *SettingsSpec_ConsulConfiguration) GetInsecureSkipVerify() *wrappers.BoolValue { +func (x *SettingsSpec_ConsulConfiguration) GetInsecureSkipVerify() *wrapperspb.BoolValue { if x != nil { return x.InsecureSkipVerify } return nil } -func (x *SettingsSpec_ConsulConfiguration) GetWaitTime() *duration.Duration { +func (x *SettingsSpec_ConsulConfiguration) GetWaitTime() *durationpb.Duration { if x != nil { return x.WaitTime } @@ -1625,7 +2486,7 @@ func (x *SettingsSpec_ConsulConfiguration) GetDnsAddress() string { return "" } -func (x *SettingsSpec_ConsulConfiguration) GetDnsPollingInterval() *duration.Duration { +func (x *SettingsSpec_ConsulConfiguration) GetDnsPollingInterval() *durationpb.Duration { if x != nil { return x.DnsPollingInterval } @@ -1635,10 +2496,7 @@ func (x *SettingsSpec_ConsulConfiguration) GetDnsPollingInterval() *duration.Dur // Settings related to gloo's behavior when discovering consul services and creating // upstreams to connect to those services and their instances. type SettingsSpec_ConsulUpstreamDiscoveryConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // If true, then gloo will add TLS to upstreams created for any consul service that has the tag specified by // tlsTagName. If splitTlsServices is true, then this tag is also used to identify serviceInstances that // should be tied to the TLS upstream. Requires rootCa to be set if true. @@ -1653,15 +2511,35 @@ type SettingsSpec_ConsulUpstreamDiscoveryConfiguration struct { // be individually tagged; servicesInstances with the tlsTagName tag are directed to the TLS upstream, while those // without the tlsTagName tag are sorted into the non-TLS upstream. SplitTlsServices bool `protobuf:"varint,19,opt,name=splitTlsServices,proto3" json:"splitTlsServices,omitempty"` + // Sets the consistency mode. The default is DefaultMode. + // + // Note: Gloo handles staleness well (as it runs update loops ~ once/second) but makes many requests + // to get consul endpoints so users may want to opt into stale reads once the implications are understood. + ConsistencyMode consul.ConsulConsistencyModes `protobuf:"varint,20,opt,name=consistencyMode,proto3,enum=consul.options.gloo.solo.io.ConsulConsistencyModes" json:"consistencyMode,omitempty"` + // QueryOptions are the query options to use for all Consul queries. + QueryOptions *consul.QueryOptions `protobuf:"bytes,21,opt,name=query_options,json=queryOptions,proto3" json:"query_options,omitempty"` + // All Services with tags in the allowlisted values will have endpoints and upstreams discovered. + // Default is all services - if values specified this will limit discovery to only services with specified tags + ServiceTagsAllowlist []string `protobuf:"bytes,22,rep,name=service_tags_allowlist,json=serviceTagsAllowlist,proto3" json:"service_tags_allowlist,omitempty"` + // Enables blocking queries for Gloo's requests to the Consul Catalog API for each service + // (`/catalog/service/:servicename`) to get endpoints for EDS. For more on blocking queries, see + // https://www.consul.io/api-docs/features/blocking + // + // Enabling this feature will likely result in fewer network calls to Consul, but may also result in + // fewer local consul agent cache hits for Gloo's requests to the Consul Catalog API. (see + // `query_options` above to configure caching; caching is enabled by default). + // + // Defaults to false. + EdsBlockingQueries *wrapperspb.BoolValue `protobuf:"bytes,23,opt,name=eds_blocking_queries,json=edsBlockingQueries,proto3" json:"eds_blocking_queries,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SettingsSpec_ConsulUpstreamDiscoveryConfiguration) Reset() { *x = SettingsSpec_ConsulUpstreamDiscoveryConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SettingsSpec_ConsulUpstreamDiscoveryConfiguration) String() string { @@ -1671,8 +2549,8 @@ func (x *SettingsSpec_ConsulUpstreamDiscoveryConfiguration) String() string { func (*SettingsSpec_ConsulUpstreamDiscoveryConfiguration) ProtoMessage() {} func (x *SettingsSpec_ConsulUpstreamDiscoveryConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[23] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1684,7 +2562,7 @@ func (x *SettingsSpec_ConsulUpstreamDiscoveryConfiguration) ProtoReflect() proto // Deprecated: Use SettingsSpec_ConsulUpstreamDiscoveryConfiguration.ProtoReflect.Descriptor instead. func (*SettingsSpec_ConsulUpstreamDiscoveryConfiguration) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 9} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 12} } func (x *SettingsSpec_ConsulUpstreamDiscoveryConfiguration) GetUseTlsTagging() bool { @@ -1715,23 +2593,48 @@ func (x *SettingsSpec_ConsulUpstreamDiscoveryConfiguration) GetSplitTlsServices( return false } +func (x *SettingsSpec_ConsulUpstreamDiscoveryConfiguration) GetConsistencyMode() consul.ConsulConsistencyModes { + if x != nil { + return x.ConsistencyMode + } + return consul.ConsulConsistencyModes(0) +} + +func (x *SettingsSpec_ConsulUpstreamDiscoveryConfiguration) GetQueryOptions() *consul.QueryOptions { + if x != nil { + return x.QueryOptions + } + return nil +} + +func (x *SettingsSpec_ConsulUpstreamDiscoveryConfiguration) GetServiceTagsAllowlist() []string { + if x != nil { + return x.ServiceTagsAllowlist + } + return nil +} + +func (x *SettingsSpec_ConsulUpstreamDiscoveryConfiguration) GetEdsBlockingQueries() *wrapperspb.BoolValue { + if x != nil { + return x.EdsBlockingQueries + } + return nil +} + // Provides overrides for the default configuration parameters used to interact with Kubernetes. type SettingsSpec_KubernetesConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Rate limits for the kubernetes clients - RateLimits *SettingsSpec_KubernetesConfiguration_RateLimits `protobuf:"bytes,1,opt,name=rate_limits,json=rateLimits,proto3" json:"rate_limits,omitempty"` + RateLimits *SettingsSpec_KubernetesConfiguration_RateLimits `protobuf:"bytes,1,opt,name=rate_limits,json=rateLimits,proto3" json:"rate_limits,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SettingsSpec_KubernetesConfiguration) Reset() { *x = SettingsSpec_KubernetesConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SettingsSpec_KubernetesConfiguration) String() string { @@ -1741,8 +2644,8 @@ func (x *SettingsSpec_KubernetesConfiguration) String() string { func (*SettingsSpec_KubernetesConfiguration) ProtoMessage() {} func (x *SettingsSpec_KubernetesConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[24] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1754,7 +2657,7 @@ func (x *SettingsSpec_KubernetesConfiguration) ProtoReflect() protoreflect.Messa // Deprecated: Use SettingsSpec_KubernetesConfiguration.ProtoReflect.Descriptor instead. func (*SettingsSpec_KubernetesConfiguration) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 10} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 13} } func (x *SettingsSpec_KubernetesConfiguration) GetRateLimits() *SettingsSpec_KubernetesConfiguration_RateLimits { @@ -1765,21 +2668,24 @@ func (x *SettingsSpec_KubernetesConfiguration) GetRateLimits() *SettingsSpec_Kub } type SettingsSpec_ObservabilityOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Options to configure Gloo's integration with [Kubernetes](https://www.kubernetes.io/). GrafanaIntegration *SettingsSpec_ObservabilityOptions_GrafanaIntegration `protobuf:"bytes,1,opt,name=grafanaIntegration,proto3" json:"grafanaIntegration,omitempty"` + // Enable metrics that track the configuration status of various resource types. + // Each (key, value) pair in the map defines a metric for a particular resource type. Configuration status + // metrics are not recorded by default; metrics are recorded only for the resources specified in this map. + // Keys specify the resource type (GroupVersionKind) to track for status changes + // (e.g. "VirtualService.v1.gateway.solo.io"). Values specify the labels to set on the metric. + ConfigStatusMetricLabels map[string]*SettingsSpec_ObservabilityOptions_MetricLabels `protobuf:"bytes,2,rep,name=configStatusMetricLabels,proto3" json:"configStatusMetricLabels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SettingsSpec_ObservabilityOptions) Reset() { *x = SettingsSpec_ObservabilityOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SettingsSpec_ObservabilityOptions) String() string { @@ -1789,8 +2695,212 @@ func (x *SettingsSpec_ObservabilityOptions) String() string { func (*SettingsSpec_ObservabilityOptions) ProtoMessage() {} func (x *SettingsSpec_ObservabilityOptions) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SettingsSpec_ObservabilityOptions.ProtoReflect.Descriptor instead. +func (*SettingsSpec_ObservabilityOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 15} +} + +func (x *SettingsSpec_ObservabilityOptions) GetGrafanaIntegration() *SettingsSpec_ObservabilityOptions_GrafanaIntegration { + if x != nil { + return x.GrafanaIntegration + } + return nil +} + +func (x *SettingsSpec_ObservabilityOptions) GetConfigStatusMetricLabels() map[string]*SettingsSpec_ObservabilityOptions_MetricLabels { + if x != nil { + return x.ConfigStatusMetricLabels + } + return nil +} + +type SettingsSpec_SecretOptions_Source struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Determines where Gloo will read/write secrets from/to. + // + // Types that are valid to be assigned to Source: + // + // *SettingsSpec_SecretOptions_Source_Kubernetes + // *SettingsSpec_SecretOptions_Source_Vault + // *SettingsSpec_SecretOptions_Source_Directory + Source isSettingsSpec_SecretOptions_Source_Source `protobuf_oneof:"source"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SettingsSpec_SecretOptions_Source) Reset() { + *x = SettingsSpec_SecretOptions_Source{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SettingsSpec_SecretOptions_Source) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SettingsSpec_SecretOptions_Source) ProtoMessage() {} + +func (x *SettingsSpec_SecretOptions_Source) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SettingsSpec_SecretOptions_Source.ProtoReflect.Descriptor instead. +func (*SettingsSpec_SecretOptions_Source) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 0, 0} +} + +func (x *SettingsSpec_SecretOptions_Source) GetSource() isSettingsSpec_SecretOptions_Source_Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *SettingsSpec_SecretOptions_Source) GetKubernetes() *SettingsSpec_KubernetesSecrets { + if x != nil { + if x, ok := x.Source.(*SettingsSpec_SecretOptions_Source_Kubernetes); ok { + return x.Kubernetes + } + } + return nil +} + +func (x *SettingsSpec_SecretOptions_Source) GetVault() *SettingsSpec_VaultSecrets { + if x != nil { + if x, ok := x.Source.(*SettingsSpec_SecretOptions_Source_Vault); ok { + return x.Vault + } + } + return nil +} + +func (x *SettingsSpec_SecretOptions_Source) GetDirectory() *SettingsSpec_Directory { + if x != nil { + if x, ok := x.Source.(*SettingsSpec_SecretOptions_Source_Directory); ok { + return x.Directory + } + } + return nil +} + +type isSettingsSpec_SecretOptions_Source_Source interface { + isSettingsSpec_SecretOptions_Source_Source() +} + +type SettingsSpec_SecretOptions_Source_Kubernetes struct { + Kubernetes *SettingsSpec_KubernetesSecrets `protobuf:"bytes,1,opt,name=kubernetes,proto3,oneof"` +} + +type SettingsSpec_SecretOptions_Source_Vault struct { + Vault *SettingsSpec_VaultSecrets `protobuf:"bytes,2,opt,name=vault,proto3,oneof"` +} + +type SettingsSpec_SecretOptions_Source_Directory struct { + Directory *SettingsSpec_Directory `protobuf:"bytes,3,opt,name=directory,proto3,oneof"` +} + +func (*SettingsSpec_SecretOptions_Source_Kubernetes) isSettingsSpec_SecretOptions_Source_Source() {} + +func (*SettingsSpec_SecretOptions_Source_Vault) isSettingsSpec_SecretOptions_Source_Source() {} + +func (*SettingsSpec_SecretOptions_Source_Directory) isSettingsSpec_SecretOptions_Source_Source() {} + +type SettingsSpec_DiscoveryOptions_UdsOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Enable upstream discovery service. Defaults to true. + Enabled *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + // Map of labels to watch. Only services which match all of the selectors specified here will be discovered by UDS. + WatchLabels map[string]string `protobuf:"bytes,2,rep,name=watch_labels,json=watchLabels,proto3" json:"watch_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SettingsSpec_DiscoveryOptions_UdsOptions) Reset() { + *x = SettingsSpec_DiscoveryOptions_UdsOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SettingsSpec_DiscoveryOptions_UdsOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SettingsSpec_DiscoveryOptions_UdsOptions) ProtoMessage() {} + +func (x *SettingsSpec_DiscoveryOptions_UdsOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SettingsSpec_DiscoveryOptions_UdsOptions.ProtoReflect.Descriptor instead. +func (*SettingsSpec_DiscoveryOptions_UdsOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 10, 0} +} + +func (x *SettingsSpec_DiscoveryOptions_UdsOptions) GetEnabled() *wrapperspb.BoolValue { + if x != nil { + return x.Enabled + } + return nil +} + +func (x *SettingsSpec_DiscoveryOptions_UdsOptions) GetWatchLabels() map[string]string { + if x != nil { + return x.WatchLabels + } + return nil +} + +type SettingsSpec_DiscoveryOptions_FdsOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SettingsSpec_DiscoveryOptions_FdsOptions) Reset() { + *x = SettingsSpec_DiscoveryOptions_FdsOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SettingsSpec_DiscoveryOptions_FdsOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SettingsSpec_DiscoveryOptions_FdsOptions) ProtoMessage() {} + +func (x *SettingsSpec_DiscoveryOptions_FdsOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[29] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1800,36 +2910,26 @@ func (x *SettingsSpec_ObservabilityOptions) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use SettingsSpec_ObservabilityOptions.ProtoReflect.Descriptor instead. -func (*SettingsSpec_ObservabilityOptions) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 12} -} - -func (x *SettingsSpec_ObservabilityOptions) GetGrafanaIntegration() *SettingsSpec_ObservabilityOptions_GrafanaIntegration { - if x != nil { - return x.GrafanaIntegration - } - return nil +// Deprecated: Use SettingsSpec_DiscoveryOptions_FdsOptions.ProtoReflect.Descriptor instead. +func (*SettingsSpec_DiscoveryOptions_FdsOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 10, 1} } // service discovery options for Consul type SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Use this parameter to restrict the data centers that will be considered when discovering and routing to // services. If not provided, Gloo will use all available data centers. - DataCenters []string `protobuf:"bytes,1,rep,name=data_centers,json=dataCenters,proto3" json:"data_centers,omitempty"` + DataCenters []string `protobuf:"bytes,1,rep,name=data_centers,json=dataCenters,proto3" json:"data_centers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions) Reset() { *x = SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions) String() string { @@ -1839,8 +2939,8 @@ func (x *SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions) String() stri func (*SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions) ProtoMessage() {} func (x *SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[31] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1852,7 +2952,7 @@ func (x *SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions) ProtoReflect( // Deprecated: Use SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions.ProtoReflect.Descriptor instead. func (*SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 8, 0} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 11, 0} } func (x *SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions) GetDataCenters() []string { @@ -1863,24 +2963,21 @@ func (x *SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions) GetDataCenter } type SettingsSpec_KubernetesConfiguration_RateLimits struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The maximum queries-per-second Gloo can make to the Kubernetes API Server. + state protoimpl.MessageState `protogen:"open.v1"` + // The maximum queries-per-second Gloo can make to the Kubernetes API Server. Defaults to 50. QPS float32 `protobuf:"fixed32,1,opt,name=QPS,proto3" json:"QPS,omitempty"` // Maximum burst for throttle. When a steady state of QPS requests per second, - // this is an additional number of allowed, to allow for short bursts. - Burst uint32 `protobuf:"varint,2,opt,name=burst,proto3" json:"burst,omitempty"` + // this is an additional number of allowed, to allow for short bursts. Defaults to 100. + Burst uint32 `protobuf:"varint,2,opt,name=burst,proto3" json:"burst,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SettingsSpec_KubernetesConfiguration_RateLimits) Reset() { *x = SettingsSpec_KubernetesConfiguration_RateLimits{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SettingsSpec_KubernetesConfiguration_RateLimits) String() string { @@ -1890,8 +2987,8 @@ func (x *SettingsSpec_KubernetesConfiguration_RateLimits) String() string { func (*SettingsSpec_KubernetesConfiguration_RateLimits) ProtoMessage() {} func (x *SettingsSpec_KubernetesConfiguration_RateLimits) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[32] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1903,7 +3000,7 @@ func (x *SettingsSpec_KubernetesConfiguration_RateLimits) ProtoReflect() protore // Deprecated: Use SettingsSpec_KubernetesConfiguration_RateLimits.ProtoReflect.Descriptor instead. func (*SettingsSpec_KubernetesConfiguration_RateLimits) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 10, 0} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 13, 0} } func (x *SettingsSpec_KubernetesConfiguration_RateLimits) GetQPS() float32 { @@ -1922,10 +3019,7 @@ func (x *SettingsSpec_KubernetesConfiguration_RateLimits) GetBurst() uint32 { // Provides settings related to the observability pod's interactions with grafana type SettingsSpec_ObservabilityOptions_GrafanaIntegration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // (UInt32Value) Grafana allows dashboards to be added to specific folders by specifying that folder's ID // If unset, automatic upstream dashboards are generated in the general folder (folderId: 0). // If set, the observability deployment will try to create/move all upstreams without their own folderId @@ -1940,16 +3034,24 @@ type SettingsSpec_ObservabilityOptions_GrafanaIntegration struct { // kubectl -n gloo-system port-forward deployment/glooe-grafana 3000 // 2. Request all folder data (after admin:admin is replaced with the correct credentials): // curl http://admin:admin@localhost:3000/api/folders - DefaultDashboardFolderId *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=default_dashboard_folder_id,json=defaultDashboardFolderId,proto3" json:"default_dashboard_folder_id,omitempty"` + DefaultDashboardFolderId *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=default_dashboard_folder_id,json=defaultDashboardFolderId,proto3" json:"default_dashboard_folder_id,omitempty"` + // The prefix of the UIDs and Titles for all dashboards created on grafana. + // This is restricted to 20 characters. + DashboardPrefix string `protobuf:"bytes,2,opt,name=dashboard_prefix,json=dashboardPrefix,proto3" json:"dashboard_prefix,omitempty"` + // Extra parameters when querying metrics from Grafana dashboards. + // This string will be appended to every query for metrics in the definition of all gloo managed dashboards. + // It can consist of multiple query parameters separated by a comma. + // For example `cluster="some-cluster",gateway_proxy_id="proxy-2"` + ExtraMetricQueryParameters string `protobuf:"bytes,3,opt,name=extra_metric_query_parameters,json=extraMetricQueryParameters,proto3" json:"extra_metric_query_parameters,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SettingsSpec_ObservabilityOptions_GrafanaIntegration) Reset() { *x = SettingsSpec_ObservabilityOptions_GrafanaIntegration{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SettingsSpec_ObservabilityOptions_GrafanaIntegration) String() string { @@ -1959,8 +3061,8 @@ func (x *SettingsSpec_ObservabilityOptions_GrafanaIntegration) String() string { func (*SettingsSpec_ObservabilityOptions_GrafanaIntegration) ProtoMessage() {} func (x *SettingsSpec_ObservabilityOptions_GrafanaIntegration) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[33] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1972,34 +3074,111 @@ func (x *SettingsSpec_ObservabilityOptions_GrafanaIntegration) ProtoReflect() pr // Deprecated: Use SettingsSpec_ObservabilityOptions_GrafanaIntegration.ProtoReflect.Descriptor instead. func (*SettingsSpec_ObservabilityOptions_GrafanaIntegration) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 12, 0} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 15, 0} } -func (x *SettingsSpec_ObservabilityOptions_GrafanaIntegration) GetDefaultDashboardFolderId() *wrappers.UInt32Value { +func (x *SettingsSpec_ObservabilityOptions_GrafanaIntegration) GetDefaultDashboardFolderId() *wrapperspb.UInt32Value { if x != nil { return x.DefaultDashboardFolderId } return nil } -type GlooOptions_AWSOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +func (x *SettingsSpec_ObservabilityOptions_GrafanaIntegration) GetDashboardPrefix() string { + if x != nil { + return x.DashboardPrefix + } + return "" +} + +func (x *SettingsSpec_ObservabilityOptions_GrafanaIntegration) GetExtraMetricQueryParameters() string { + if x != nil { + return x.ExtraMetricQueryParameters + } + return "" +} + +type SettingsSpec_ObservabilityOptions_MetricLabels struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Each (key, value) pair in the map defines a label to be applied. Keys specify the name of the label + // (e.g. "namespace"). Values specify the jsonpath (https://kubernetes.io/docs/reference/kubectl/jsonpath/) + // string corresponding to the field of a resource to use as the label value (e.g. "{.metadata.namespace}"). + // For example, if labelToPath = {name: '{.metadata.name}', namespace: '{.metadata.namespace}'} for + // Upstream.v1.gateway.solo.io, the following metric would be produced: + // validation_gateway_solo_io_upstream_config_status{name="default-petstore-8080",namespace="gloo-system"} 0 + LabelToPath map[string]string `protobuf:"bytes,1,rep,name=labelToPath,proto3" json:"labelToPath,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SettingsSpec_ObservabilityOptions_MetricLabels) Reset() { + *x = SettingsSpec_ObservabilityOptions_MetricLabels{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SettingsSpec_ObservabilityOptions_MetricLabels) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SettingsSpec_ObservabilityOptions_MetricLabels) ProtoMessage() {} + +func (x *SettingsSpec_ObservabilityOptions_MetricLabels) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[34] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SettingsSpec_ObservabilityOptions_MetricLabels.ProtoReflect.Descriptor instead. +func (*SettingsSpec_ObservabilityOptions_MetricLabels) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{0, 15, 1} +} + +func (x *SettingsSpec_ObservabilityOptions_MetricLabels) GetLabelToPath() map[string]string { + if x != nil { + return x.LabelToPath + } + return nil +} - // Types that are assignable to CredentialsFetcher: +type GlooOptions_AWSOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to CredentialsFetcher: + // // *GlooOptions_AWSOptions_EnableCredentialsDiscovey // *GlooOptions_AWSOptions_ServiceAccountCredentials CredentialsFetcher isGlooOptions_AWSOptions_CredentialsFetcher `protobuf_oneof:"credentials_fetcher"` + // Send downstream path and method as `x-envoy-original-path` and + // `x-envoy-original-method` headers on the request to AWS lambda. + // Defaults to false. + PropagateOriginalRouting *wrapperspb.BoolValue `protobuf:"bytes,3,opt,name=propagate_original_routing,json=propagateOriginalRouting,proto3" json:"propagate_original_routing,omitempty"` + // Sets cadence for refreshing credentials for Service Account. + // Does nothing if Service account is not set. + // Does not affect the default filewatch for service account only augments it. + // Defaults to not refreshing on time period. Suggested is 15 minutes. + CredentialRefreshDelay *durationpb.Duration `protobuf:"bytes,4,opt,name=credential_refresh_delay,json=credentialRefreshDelay,proto3" json:"credential_refresh_delay,omitempty"` + // Sets the unsafe behavior where a route can specify a lambda upstream + // but not set the function to target. It will use the first function which + // if discovery is enabled the first function is the first function name alphabetically + // from the last discovery run. This means that the lambda being pointed to could change. + // Defaults to false. + FallbackToFirstFunction *wrapperspb.BoolValue `protobuf:"bytes,5,opt,name=fallback_to_first_function,json=fallbackToFirstFunction,proto3" json:"fallback_to_first_function,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GlooOptions_AWSOptions) Reset() { *x = GlooOptions_AWSOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GlooOptions_AWSOptions) String() string { @@ -2009,8 +3188,8 @@ func (x *GlooOptions_AWSOptions) String() string { func (*GlooOptions_AWSOptions) ProtoMessage() {} func (x *GlooOptions_AWSOptions) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[39] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2022,26 +3201,51 @@ func (x *GlooOptions_AWSOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use GlooOptions_AWSOptions.ProtoReflect.Descriptor instead. func (*GlooOptions_AWSOptions) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{2, 0} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{4, 0} } -func (m *GlooOptions_AWSOptions) GetCredentialsFetcher() isGlooOptions_AWSOptions_CredentialsFetcher { - if m != nil { - return m.CredentialsFetcher +func (x *GlooOptions_AWSOptions) GetCredentialsFetcher() isGlooOptions_AWSOptions_CredentialsFetcher { + if x != nil { + return x.CredentialsFetcher } return nil } func (x *GlooOptions_AWSOptions) GetEnableCredentialsDiscovey() bool { - if x, ok := x.GetCredentialsFetcher().(*GlooOptions_AWSOptions_EnableCredentialsDiscovey); ok { - return x.EnableCredentialsDiscovey + if x != nil { + if x, ok := x.CredentialsFetcher.(*GlooOptions_AWSOptions_EnableCredentialsDiscovey); ok { + return x.EnableCredentialsDiscovey + } } return false } func (x *GlooOptions_AWSOptions) GetServiceAccountCredentials() *aws.AWSLambdaConfig_ServiceAccountCredentials { - if x, ok := x.GetCredentialsFetcher().(*GlooOptions_AWSOptions_ServiceAccountCredentials); ok { - return x.ServiceAccountCredentials + if x != nil { + if x, ok := x.CredentialsFetcher.(*GlooOptions_AWSOptions_ServiceAccountCredentials); ok { + return x.ServiceAccountCredentials + } + } + return nil +} + +func (x *GlooOptions_AWSOptions) GetPropagateOriginalRouting() *wrapperspb.BoolValue { + if x != nil { + return x.PropagateOriginalRouting + } + return nil +} + +func (x *GlooOptions_AWSOptions) GetCredentialRefreshDelay() *durationpb.Duration { + if x != nil { + return x.CredentialRefreshDelay + } + return nil +} + +func (x *GlooOptions_AWSOptions) GetFallbackToFirstFunction() *wrapperspb.BoolValue { + if x != nil { + return x.FallbackToFirstFunction } return nil } @@ -2067,8 +3271,8 @@ type GlooOptions_AWSOptions_ServiceAccountCredentials struct { // https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html // // If the following environment values are not present in the gateway-proxy, this option cannot be used. - // 1. AWS_WEB_IDENTITY_TOKEN_FILE - // 2. AWS_ROLE_ARN + // 1. AWS_WEB_IDENTITY_TOKEN_FILE + // 2. AWS_ROLE_ARN // // The role which will be assumed by the credentials will be the one specified by AWS_ROLE_ARN, however, this // can also be overwritten in the AWS Upstream spec via the role_arn field @@ -2089,11 +3293,9 @@ func (*GlooOptions_AWSOptions_ServiceAccountCredentials) isGlooOptions_AWSOption } // Policy for how Gloo should handle invalid config +// [#next-free-field: 15] type GlooOptions_InvalidConfigPolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // if set to `true`, Gloo removes any routes from the provided configuration // which point to a missing destination. Routes that are removed in this way // will instead return a configurable direct response to clients. When routes are replaced, @@ -2105,17 +3307,17 @@ type GlooOptions_InvalidConfigPolicy struct { // default is 404. InvalidRouteResponseCode uint32 `protobuf:"varint,2,opt,name=invalid_route_response_code,json=invalidRouteResponseCode,proto3" json:"invalid_route_response_code,omitempty"` // replaced routes reply to clients with this response body. - // default is 'Gloo Gateway has invalid configuration. Administrators should run `glooctl check` to find and fix config errors.' + // default is 'Gloo Edge has invalid configuration. Administrators should run `glooctl check` to find and fix config errors.' InvalidRouteResponseBody string `protobuf:"bytes,3,opt,name=invalid_route_response_body,json=invalidRouteResponseBody,proto3" json:"invalid_route_response_body,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GlooOptions_InvalidConfigPolicy) Reset() { *x = GlooOptions_InvalidConfigPolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GlooOptions_InvalidConfigPolicy) String() string { @@ -2125,8 +3327,8 @@ func (x *GlooOptions_InvalidConfigPolicy) String() string { func (*GlooOptions_InvalidConfigPolicy) ProtoMessage() {} func (x *GlooOptions_InvalidConfigPolicy) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[40] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2138,7 +3340,7 @@ func (x *GlooOptions_InvalidConfigPolicy) ProtoReflect() protoreflect.Message { // Deprecated: Use GlooOptions_InvalidConfigPolicy.ProtoReflect.Descriptor instead. func (*GlooOptions_InvalidConfigPolicy) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{2, 1} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{4, 1} } func (x *GlooOptions_InvalidConfigPolicy) GetReplaceInvalidRoutes() bool { @@ -2162,12 +3364,81 @@ func (x *GlooOptions_InvalidConfigPolicy) GetInvalidRouteResponseBody() string { return "" } +type GlooOptions_IstioOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Set to false to disable adding X-Forwarded-Host header in Istio integration + // Defaults to true + // Warning: This value is deprecated and will be removed in a future release. Also, you cannot use this value with a Kubernetes Gateway API proxy. + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/settings.proto. + AppendXForwardedHost *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=append_x_forwarded_host,json=appendXForwardedHost,proto3" json:"append_x_forwarded_host,omitempty"` + // Set to true to enable automatic mTLS for all upstreams. Istio integration must be enabled for this to take effect. + // Defaults to false + EnableAutoMtls *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=enable_auto_mtls,json=enableAutoMtls,proto3" json:"enable_auto_mtls,omitempty"` + // Istio integration is enabled via global.istioIntegration.enabled on the helm chart. + // If enabled, an istio-proxy container and sds container are assumed to exist alongside the + // gateway proxy. These containers are created by enabling the istioIntegration.enabled option in the helm chart. + // Defaults to false + EnableIntegration *wrapperspb.BoolValue `protobuf:"bytes,3,opt,name=enable_integration,json=enableIntegration,proto3" json:"enable_integration,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GlooOptions_IstioOptions) Reset() { + *x = GlooOptions_IstioOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GlooOptions_IstioOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GlooOptions_IstioOptions) ProtoMessage() {} + +func (x *GlooOptions_IstioOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[41] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GlooOptions_IstioOptions.ProtoReflect.Descriptor instead. +func (*GlooOptions_IstioOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{4, 2} +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/settings.proto. +func (x *GlooOptions_IstioOptions) GetAppendXForwardedHost() *wrapperspb.BoolValue { + if x != nil { + return x.AppendXForwardedHost + } + return nil +} + +func (x *GlooOptions_IstioOptions) GetEnableAutoMtls() *wrapperspb.BoolValue { + if x != nil { + return x.EnableAutoMtls + } + return nil +} + +func (x *GlooOptions_IstioOptions) GetEnableIntegration() *wrapperspb.BoolValue { + if x != nil { + return x.EnableIntegration + } + return nil +} + // options for configuring admission control / validation type GatewayOptions_ValidationOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Address of the `gloo` proxy validation grpc server. Defaults to `gloo:9988`. // This field is required in order to enable fine-grained admission control. ProxyValidationServerAddr string `protobuf:"bytes,2,opt,name=proxy_validation_server_addr,json=proxyValidationServerAddr,proto3" json:"proxy_validation_server_addr,omitempty"` @@ -2175,46 +3446,75 @@ type GatewayOptions_ValidationOptions struct { ValidationWebhookTlsCert string `protobuf:"bytes,3,opt,name=validation_webhook_tls_cert,json=validationWebhookTlsCert,proto3" json:"validation_webhook_tls_cert,omitempty"` // Path to TLS Private Key for Kubernetes Validating webhook. Defaults to `/etc/gateway/validation-certs/tls.key`. ValidationWebhookTlsKey string `protobuf:"bytes,4,opt,name=validation_webhook_tls_key,json=validationWebhookTlsKey,proto3" json:"validation_webhook_tls_key,omitempty"` + // Deprecated: the Gateway and the Gloo pods are now merged together, there are no longer + // requests made to a Gloo Validation server. // When Gateway cannot communicate with Gloo (e.g. Gloo is offline) // resources will be rejected by default. // Enable the `ignoreGlooValidationFailure` to prevent the Validation server from rejecting // resources due to network errors. + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/settings.proto. IgnoreGlooValidationFailure bool `protobuf:"varint,5,opt,name=ignore_gloo_validation_failure,json=ignoreGlooValidationFailure,proto3" json:"ignore_gloo_validation_failure,omitempty"` // Always accept resources even if validation produced an error. // Validation will still log the error and increment the validation.gateway.solo.io/resources_rejected stat. // Currently defaults to true - must be set to `false` to prevent writing invalid resources to storage. - AlwaysAccept *wrappers.BoolValue `protobuf:"bytes,6,opt,name=always_accept,json=alwaysAccept,proto3" json:"always_accept,omitempty"` + AlwaysAccept *wrapperspb.BoolValue `protobuf:"bytes,6,opt,name=always_accept,json=alwaysAccept,proto3" json:"always_accept,omitempty"` // Accept resources if validation produced a warning (defaults to true). // By setting to false, this means that validation will start rejecting resources that would result - // in warnings, rather than just those that would result in errors. - AllowWarnings *wrappers.BoolValue `protobuf:"bytes,7,opt,name=allow_warnings,json=allowWarnings,proto3" json:"allow_warnings,omitempty"` + // in warnings, rather than just those that would result in errors. Note that this setting has no impact on + // Kubernetes Gateway API validation, as warnings will always be allowed in that context. + AllowWarnings *wrapperspb.BoolValue `protobuf:"bytes,7,opt,name=allow_warnings,json=allowWarnings,proto3" json:"allow_warnings,omitempty"` + // Deprecated: See `server_enabled` and consider configuring it to `false` instead. // Write a warning to route resources if validation produced a route ordering warning (defaults to false). // By setting to true, this means that Gloo will start assigning warnings to resources that would result // in route short-circuiting within a virtual host, for example: // - prefix routes that make later routes unreachable // - regex routes that make later routes unreachable // - duplicate matchers - WarnRouteShortCircuiting *wrappers.BoolValue `protobuf:"bytes,8,opt,name=warn_route_short_circuiting,json=warnRouteShortCircuiting,proto3" json:"warn_route_short_circuiting,omitempty"` + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/settings.proto. + WarnRouteShortCircuiting *wrapperspb.BoolValue `protobuf:"bytes,8,opt,name=warn_route_short_circuiting,json=warnRouteShortCircuiting,proto3" json:"warn_route_short_circuiting,omitempty"` // By default gloo will attempt to validate transformations by calling out to a local envoy binary in `validate` mode. // Calling this local envoy binary can become slow when done many times during a single validation. // Setting this to true will stop gloo from calling out to envoy to validate the transformations, which may speed up the // validation time considerably, but may also cause the transformation config to fail after being sent to envoy. // When disabling this, ensure that your transformations are valid prior to applying them. - DisableTransformationValidation *wrappers.BoolValue `protobuf:"bytes,9,opt,name=disable_transformation_validation,json=disableTransformationValidation,proto3" json:"disable_transformation_validation,omitempty"` - // By default, gRPC validation messages between gateway and gloo pods have a max message size of 4 MB. + DisableTransformationValidation *wrapperspb.BoolValue `protobuf:"bytes,9,opt,name=disable_transformation_validation,json=disableTransformationValidation,proto3" json:"disable_transformation_validation,omitempty"` + // By default, gRPC validation messages between gateway and gloo pods have a max message size of 100 MB. // Setting this value sets the gRPC max message size in bytes for the gloo validation server. This should // only be changed if necessary. - // If not included, the gRPC max message size will be the default of 4 MB. - ValidationServerGrpcMaxSize *wrappers.Int64Value `protobuf:"bytes,10,opt,name=validation_server_grpc_max_size,json=validationServerGrpcMaxSize,proto3" json:"validation_server_grpc_max_size,omitempty"` + // If not included, the gRPC max message size will be the default of 100 MB. + ValidationServerGrpcMaxSizeBytes *wrapperspb.Int32Value `protobuf:"bytes,11,opt,name=validation_server_grpc_max_size_bytes,json=validationServerGrpcMaxSizeBytes,proto3" json:"validation_server_grpc_max_size_bytes,omitempty"` + // By providing the validation field (parent of this object) the user is implicitly opting into validation. + // This field allows the user to opt out of the validation server, while still configuring pre-existing fields + // such as `warn_route_short_circuiting` and `disable_transformation_validation`. + // + // If not included, the validation server will be enabled. + ServerEnabled *wrapperspb.BoolValue `protobuf:"bytes,12,opt,name=server_enabled,json=serverEnabled,proto3" json:"server_enabled,omitempty"` + // Allows configuring validation to report a missing TLS secret referenced by a SslConfig or UpstreamSslConfig + // as a warning instead of an error. This will allow for eventually consistent workloads, but will also permit + // the accidental deletion of secrets being referenced, which would cause disruption in traffic. + WarnMissingTlsSecret *wrapperspb.BoolValue `protobuf:"bytes,13,opt,name=warn_missing_tls_secret,json=warnMissingTlsSecret,proto3" json:"warn_missing_tls_secret,omitempty"` + // Configures the Gloo translation loop to send the final product of translation through Envoy + // validation mode. This has an negative impact on the total translation throughput, but it + // helps ensure the configuration will not be nacked when served to Envoy. + // + // This feature is disabled by default and is not recommended for production deployments unless + // the performance implications are well understood and acceptable. + // + // Large configurations can take more than 10 seconds to validate, causing the validating webhook to timeout. + // When enabling this feature, consider increasing the timeout for the validating webhook + // (`.Values.gateway.validation.webhook.timeoutSeconds`). + FullEnvoyValidation *wrapperspb.BoolValue `protobuf:"bytes,14,opt,name=full_envoy_validation,json=fullEnvoyValidation,proto3" json:"full_envoy_validation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GatewayOptions_ValidationOptions) Reset() { *x = GatewayOptions_ValidationOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GatewayOptions_ValidationOptions) String() string { @@ -2224,8 +3524,8 @@ func (x *GatewayOptions_ValidationOptions) String() string { func (*GatewayOptions_ValidationOptions) ProtoMessage() {} func (x *GatewayOptions_ValidationOptions) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[42] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2237,7 +3537,7 @@ func (x *GatewayOptions_ValidationOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use GatewayOptions_ValidationOptions.ProtoReflect.Descriptor instead. func (*GatewayOptions_ValidationOptions) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{3, 0} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{6, 0} } func (x *GatewayOptions_ValidationOptions) GetProxyValidationServerAddr() string { @@ -2261,6 +3561,7 @@ func (x *GatewayOptions_ValidationOptions) GetValidationWebhookTlsKey() string { return "" } +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/settings.proto. func (x *GatewayOptions_ValidationOptions) GetIgnoreGlooValidationFailure() bool { if x != nil { return x.IgnoreGlooValidationFailure @@ -2268,44 +3569,103 @@ func (x *GatewayOptions_ValidationOptions) GetIgnoreGlooValidationFailure() bool return false } -func (x *GatewayOptions_ValidationOptions) GetAlwaysAccept() *wrappers.BoolValue { +func (x *GatewayOptions_ValidationOptions) GetAlwaysAccept() *wrapperspb.BoolValue { if x != nil { return x.AlwaysAccept } return nil } -func (x *GatewayOptions_ValidationOptions) GetAllowWarnings() *wrappers.BoolValue { +func (x *GatewayOptions_ValidationOptions) GetAllowWarnings() *wrapperspb.BoolValue { if x != nil { return x.AllowWarnings } return nil } -func (x *GatewayOptions_ValidationOptions) GetWarnRouteShortCircuiting() *wrappers.BoolValue { +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/settings.proto. +func (x *GatewayOptions_ValidationOptions) GetWarnRouteShortCircuiting() *wrapperspb.BoolValue { if x != nil { return x.WarnRouteShortCircuiting } return nil } -func (x *GatewayOptions_ValidationOptions) GetDisableTransformationValidation() *wrappers.BoolValue { +func (x *GatewayOptions_ValidationOptions) GetDisableTransformationValidation() *wrapperspb.BoolValue { if x != nil { return x.DisableTransformationValidation } return nil } -func (x *GatewayOptions_ValidationOptions) GetValidationServerGrpcMaxSize() *wrappers.Int64Value { +func (x *GatewayOptions_ValidationOptions) GetValidationServerGrpcMaxSizeBytes() *wrapperspb.Int32Value { + if x != nil { + return x.ValidationServerGrpcMaxSizeBytes + } + return nil +} + +func (x *GatewayOptions_ValidationOptions) GetServerEnabled() *wrapperspb.BoolValue { + if x != nil { + return x.ServerEnabled + } + return nil +} + +func (x *GatewayOptions_ValidationOptions) GetWarnMissingTlsSecret() *wrapperspb.BoolValue { + if x != nil { + return x.WarnMissingTlsSecret + } + return nil +} + +func (x *GatewayOptions_ValidationOptions) GetFullEnvoyValidation() *wrapperspb.BoolValue { if x != nil { - return x.ValidationServerGrpcMaxSize + return x.FullEnvoyValidation } return nil } +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type GraphqlOptions_SchemaChangeValidationOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GraphqlOptions_SchemaChangeValidationOptions) Reset() { + *x = GraphqlOptions_SchemaChangeValidationOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GraphqlOptions_SchemaChangeValidationOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GraphqlOptions_SchemaChangeValidationOptions) ProtoMessage() {} + +func (x *GraphqlOptions_SchemaChangeValidationOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[43] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GraphqlOptions_SchemaChangeValidationOptions.ProtoReflect.Descriptor instead. +func (*GraphqlOptions_SchemaChangeValidationOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP(), []int{8, 0} +} + var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDesc = string([]byte{ 0x0a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -2329,636 +3689,1079 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDesc = 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2f, 0x72, 0x61, 0x74, 0x65, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4a, 0x67, 0x69, 0x74, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, - 0x6f, 0x6f, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, + 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x63, 0x2f, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, + 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x62, 0x61, 0x63, 0x2f, 0x72, - 0x62, 0x61, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x61, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x53, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, - 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x37, + 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x2f, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, + 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x73, - 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x55, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, - 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, - 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x77, - 0x73, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd0, - 0x23, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, - 0x2f, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x69, - 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x29, 0x0a, 0x10, 0x77, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x77, 0x61, 0x74, 0x63, - 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x65, 0x0a, 0x18, 0x6b, - 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, - 0x65, 0x74, 0x65, 0x73, 0x43, 0x72, 0x64, 0x73, 0x48, 0x00, 0x52, 0x16, 0x6b, 0x75, 0x62, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x12, 0x5e, 0x0a, 0x17, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x6c, 0x2f, 0x73, 0x73, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x55, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x61, 0x77, 0x73, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, + 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, + 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfc, 0x39, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2f, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x12, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x77, 0x61, 0x74, 0x63, 0x68, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0f, 0x77, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x73, 0x12, 0x65, 0x0a, 0x18, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, - 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x48, 0x00, 0x52, 0x15, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x12, 0x4f, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5f, 0x6b, 0x76, 0x5f, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x4b, - 0x76, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x4b, 0x76, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x12, 0x68, 0x0a, 0x18, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, - 0x73, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, - 0x63, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x73, 0x48, 0x01, 0x52, 0x16, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, - 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x59, 0x0a, - 0x13, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x73, 0x48, 0x01, 0x52, 0x11, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x5e, 0x0a, 0x17, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x72, 0x64, 0x73, 0x48, 0x00, + 0x52, 0x16, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x5e, 0x0a, 0x17, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x48, - 0x01, 0x52, 0x15, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x6f, 0x0a, 0x1a, 0x6b, 0x75, 0x62, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, - 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x61, 0x70, 0x73, 0x48, 0x02, 0x52, - 0x18, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x41, 0x72, 0x74, 0x69, 0x66, - 0x61, 0x63, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x62, 0x0a, 0x19, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x79, 0x48, 0x02, 0x52, 0x17, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x41, - 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x60, 0x0a, - 0x19, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5f, 0x6b, 0x76, 0x5f, 0x61, 0x72, 0x74, 0x69, 0x66, - 0x61, 0x63, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, - 0x73, 0x75, 0x6c, 0x4b, 0x76, 0x48, 0x02, 0x52, 0x16, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x4b, - 0x76, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, - 0x3c, 0x0a, 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, - 0x08, 0x64, 0x65, 0x76, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x64, 0x65, 0x76, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x6e, 0x6b, - 0x65, 0x72, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6c, 0x69, 0x6e, 0x6b, 0x65, - 0x72, 0x64, 0x12, 0x43, 0x0a, 0x07, 0x6b, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x18, 0x12, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x00, 0x52, 0x15, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x4f, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x73, + 0x75, 0x6c, 0x5f, 0x6b, 0x76, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x15, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, + 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x4b, 0x76, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x73, 0x75, + 0x6c, 0x4b, 0x76, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x68, 0x0a, 0x18, 0x6b, 0x75, 0x62, + 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, + 0x65, 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x48, 0x01, 0x52, 0x16, 0x6b, 0x75, 0x62, + 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x53, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x59, 0x0a, 0x13, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x56, 0x61, 0x75, + 0x6c, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x48, 0x01, 0x52, 0x11, 0x76, 0x61, 0x75, + 0x6c, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x5e, + 0x0a, 0x17, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x44, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x48, 0x01, 0x52, 0x15, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x4f, + 0x0a, 0x0e, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, + 0x65, 0x63, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x0d, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x6f, 0x0a, 0x1a, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x61, 0x72, + 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, - 0x4b, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, - 0x6b, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x12, 0x49, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x63, 0x6f, - 0x76, 0x65, 0x72, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x09, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, - 0x72, 0x79, 0x12, 0x2d, 0x0a, 0x04, 0x67, 0x6c, 0x6f, 0x6f, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x47, 0x6c, 0x6f, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x04, 0x67, 0x6c, 0x6f, - 0x6f, 0x12, 0x36, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x19, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x46, 0x0a, 0x06, 0x63, 0x6f, 0x6e, - 0x73, 0x75, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x6d, 0x61, 0x70, 0x73, 0x48, 0x02, 0x52, 0x18, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, + 0x65, 0x73, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x62, 0x0a, 0x19, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x61, 0x72, + 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, + 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x48, 0x02, 0x52, 0x17, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x12, 0x60, 0x0a, 0x19, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5f, 0x6b, + 0x76, 0x5f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, + 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x4b, 0x76, 0x48, 0x02, 0x52, 0x16, + 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x4b, 0x76, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, + 0x52, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x64, 0x65, 0x76, 0x4d, + 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x18, 0x11, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x12, 0x47, 0x0a, + 0x07, 0x6b, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4b, 0x6e, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x6b, + 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x12, 0x49, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x73, 0x75, - 0x6c, 0x12, 0x69, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x44, 0x69, 0x73, 0x63, 0x6f, - 0x76, 0x65, 0x72, 0x79, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6c, 0x6f, + 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x09, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, + 0x79, 0x12, 0x2d, 0x0a, 0x04, 0x67, 0x6c, 0x6f, 0x6f, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, + 0x6c, 0x6f, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x04, 0x67, 0x6c, 0x6f, 0x6f, + 0x12, 0x36, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x19, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x46, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x73, + 0x75, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, + 0x12, 0x69, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x79, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x55, 0x70, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x73, + 0x75, 0x6c, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x12, 0x52, 0x0a, 0x0a, 0x6b, + 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x32, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4b, 0x75, 0x62, 0x65, + 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x12, + 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x65, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, 0x0a, 0x09, 0x72, 0x61, 0x74, + 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x72, + 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x09, 0x72, + 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x53, 0x0a, 0x10, 0x72, 0x61, 0x74, 0x65, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x1b, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0f, 0x72, 0x61, + 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x37, 0x0a, + 0x04, 0x72, 0x62, 0x61, 0x63, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x62, + 0x61, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x52, 0x04, 0x72, 0x62, 0x61, 0x63, 0x12, 0x3b, 0x0a, 0x07, 0x65, 0x78, 0x74, 0x61, 0x75, 0x74, + 0x68, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x07, 0x65, 0x78, 0x74, 0x61, + 0x75, 0x74, 0x68, 0x12, 0x51, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, + 0x61, 0x75, 0x74, 0x68, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x55, 0x70, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x63, 0x6f, 0x6e, - 0x73, 0x75, 0x6c, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x12, 0x52, 0x0a, 0x0a, - 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x32, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4b, 0x75, 0x62, - 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, - 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, 0x0a, 0x09, 0x72, 0x61, - 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, - 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x09, - 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x53, 0x0a, 0x10, 0x72, 0x61, 0x74, - 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x1b, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0f, 0x72, - 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x37, - 0x0a, 0x04, 0x72, 0x62, 0x61, 0x63, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, - 0x62, 0x61, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x78, 0x74, 0x61, + 0x75, 0x74, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x45, + 0x78, 0x74, 0x61, 0x75, 0x74, 0x68, 0x12, 0x4d, 0x0a, 0x0e, 0x63, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x67, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x63, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x63, 0x0a, 0x14, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1f, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, + 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x14, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x47, 0x0a, 0x0f, 0x75, 0x70, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x20, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x0f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x45, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x5f, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x73, + 0x6f, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x73, + 0x6f, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x08, 0x65, 0x78, + 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, + 0x78, 0x74, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x52, 0x07, 0x65, 0x78, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x12, 0x57, 0x0a, + 0x19, 0x77, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x28, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x17, 0x77, + 0x61, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x1a, 0xc6, 0x02, 0x0a, 0x0d, 0x53, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x49, 0x0a, 0x07, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x52, 0x04, 0x72, 0x62, 0x61, 0x63, 0x12, 0x3b, 0x0a, 0x07, 0x65, 0x78, 0x74, 0x61, 0x75, - 0x74, 0x68, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x07, 0x65, 0x78, 0x74, - 0x61, 0x75, 0x74, 0x68, 0x12, 0x51, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x65, 0x78, - 0x74, 0x61, 0x75, 0x74, 0x68, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x78, 0x74, - 0x61, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x64, - 0x45, 0x78, 0x74, 0x61, 0x75, 0x74, 0x68, 0x12, 0x63, 0x0a, 0x14, 0x6f, 0x62, 0x73, 0x65, 0x72, - 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, - 0x63, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x14, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x47, 0x0a, 0x0f, - 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x10, 0x0a, 0x0e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, - 0x74, 0x65, 0x73, 0x43, 0x72, 0x64, 0x73, 0x1a, 0x13, 0x0a, 0x11, 0x4b, 0x75, 0x62, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x1a, 0xab, 0x02, 0x0a, - 0x0c, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x17, 0x0a, - 0x07, 0x63, 0x61, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x63, 0x61, 0x43, 0x65, 0x72, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x61, 0x5f, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x61, 0x50, 0x61, 0x74, 0x68, 0x12, - 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, - 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, - 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x65, 0x63, - 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x12, - 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x72, 0x6f, 0x6f, 0x74, 0x4b, 0x65, 0x79, 0x1a, 0x25, 0x0a, 0x08, 0x43, 0x6f, - 0x6e, 0x73, 0x75, 0x6c, 0x4b, 0x76, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x6f, 0x6f, 0x74, 0x4b, 0x65, - 0x79, 0x1a, 0x16, 0x0a, 0x14, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x61, 0x70, 0x73, 0x1a, 0x29, 0x0a, 0x09, 0x44, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x79, 0x1a, 0xdd, 0x01, 0x0a, 0x0e, 0x4b, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x1d, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1a, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, - 0x6f, 0x78, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x43, 0x0a, 0x1e, 0x6b, 0x6e, - 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x1b, 0x6b, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x43, 0x0a, 0x1e, 0x6b, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1b, 0x6b, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x1a, 0x99, 0x01, 0x0a, 0x10, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, - 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4e, 0x0a, 0x08, 0x66, 0x64, 0x73, - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, - 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x64, 0x73, 0x4d, 0x6f, 0x64, 0x65, - 0x52, 0x07, 0x66, 0x64, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x35, 0x0a, 0x07, 0x46, 0x64, 0x73, - 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x42, 0x4c, 0x41, 0x43, 0x4b, 0x4c, 0x49, 0x53, - 0x54, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, - 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, - 0x1a, 0xd5, 0x05, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x63, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x14, - 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x61, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x61, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x17, 0x0a, - 0x07, 0x63, 0x61, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x63, 0x61, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x66, - 0x69, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x65, 0x72, 0x74, 0x46, - 0x69, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x4c, - 0x0a, 0x14, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, - 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x07, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x1a, 0xe9, 0x01, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x4e, + 0x0a, 0x0a, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4b, + 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, + 0x48, 0x00, 0x52, 0x0a, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x12, 0x3f, + 0x0a, 0x05, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x12, + 0x44, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x44, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x48, 0x00, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, + 0x10, 0x0a, 0x0e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x72, 0x64, + 0x73, 0x1a, 0x13, 0x0a, 0x11, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x1a, 0x87, 0x04, 0x0a, 0x0c, 0x56, 0x61, 0x75, 0x6c, 0x74, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x18, 0x0a, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x61, 0x5f, 0x63, 0x65, + 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x61, 0x43, 0x65, 0x72, 0x74, + 0x12, 0x17, 0x0a, 0x07, 0x63, 0x61, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x63, 0x61, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, + 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x36, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x08, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x6f, + 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x6f, 0x6f, + 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x70, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x74, 0x68, 0x50, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x48, 0x0a, 0x0a, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x6c, 0x73, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x74, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x23, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x3b, 0x0a, 0x03, 0x61, 0x77, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x56, 0x61, + 0x75, 0x6c, 0x74, 0x41, 0x77, 0x73, 0x41, 0x75, 0x74, 0x68, 0x48, 0x00, 0x52, 0x03, 0x61, 0x77, + 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x1a, 0xb3, 0x02, 0x0a, 0x0c, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x77, 0x73, 0x41, 0x75, 0x74, + 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x14, 0x69, 0x61, 0x6d, 0x5f, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x69, 0x61, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x49, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x22, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, + 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x27, 0x0a, + 0x0f, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0xe2, 0x01, 0x0a, 0x0e, 0x56, 0x61, 0x75, 0x6c, 0x74, + 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x61, 0x5f, + 0x63, 0x65, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x61, 0x43, 0x65, + 0x72, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x61, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x61, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x12, 0x1d, 0x0a, 0x0a, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x0f, 0x74, + 0x6c, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x1a, 0x25, 0x0a, 0x08, 0x43, + 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x4b, 0x76, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x6f, 0x74, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x6f, 0x6f, 0x74, 0x4b, + 0x65, 0x79, 0x1a, 0x16, 0x0a, 0x14, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x61, 0x70, 0x73, 0x1a, 0x29, 0x0a, 0x09, 0x44, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x1a, 0xdd, 0x01, 0x0a, 0x0e, 0x4b, 0x6e, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x1d, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x1a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, + 0x72, 0x6f, 0x78, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x43, 0x0a, 0x1e, 0x6b, + 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x1b, 0x6b, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x45, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x43, 0x0a, 0x1e, 0x6b, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1b, 0x6b, 0x6e, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0xe1, 0x04, 0x0a, 0x10, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4e, 0x0a, 0x08, 0x66, 0x64, + 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x64, 0x73, 0x4d, 0x6f, 0x64, + 0x65, 0x52, 0x07, 0x66, 0x64, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x57, 0x0a, 0x0b, 0x75, 0x64, + 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x36, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x44, 0x69, 0x73, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x55, 0x64, 0x73, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x75, 0x64, 0x73, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x57, 0x0a, 0x0b, 0x66, 0x64, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x53, 0x70, 0x65, 0x63, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x64, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x0a, 0x66, 0x64, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xee, 0x01, 0x0a, + 0x0a, 0x55, 0x64, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x07, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, - 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, - 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x36, 0x0a, 0x09, - 0x77, 0x61, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x77, 0x61, 0x69, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x73, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x46, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x73, - 0x75, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x68, 0x74, 0x74, - 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x68, 0x74, 0x74, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, - 0x64, 0x6e, 0x73, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x64, 0x6e, 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4b, 0x0a, - 0x14, 0x64, 0x6e, 0x73, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x64, 0x6e, 0x73, 0x50, 0x6f, 0x6c, 0x6c, 0x69, - 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x1a, 0x3c, 0x0a, 0x17, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x61, 0x74, - 0x61, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x1a, 0xcb, 0x01, 0x0a, 0x24, 0x43, 0x6f, 0x6e, - 0x73, 0x75, 0x6c, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x69, 0x73, 0x63, 0x6f, - 0x76, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x54, 0x6c, 0x73, 0x54, 0x61, 0x67, 0x67, 0x69, - 0x6e, 0x67, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x54, 0x6c, 0x73, - 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6c, 0x73, 0x54, 0x61, - 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x6c, 0x73, - 0x54, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x72, 0x6f, 0x6f, 0x74, 0x43, - 0x61, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, - 0x65, 0x66, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x74, 0x43, 0x61, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x70, - 0x6c, 0x69, 0x74, 0x54, 0x6c, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x13, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x54, 0x6c, 0x73, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x1a, 0xaf, 0x01, 0x0a, 0x17, 0x4b, 0x75, 0x62, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x5e, 0x0a, 0x0b, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x12, 0x6a, 0x0a, 0x0c, 0x77, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, - 0x70, 0x65, 0x63, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x61, 0x74, 0x65, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x0a, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x73, 0x1a, 0x34, 0x0a, 0x0a, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, - 0x12, 0x10, 0x0a, 0x03, 0x51, 0x50, 0x53, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x51, - 0x50, 0x53, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x75, 0x72, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x62, 0x75, 0x72, 0x73, 0x74, 0x1a, 0x62, 0x0a, 0x11, 0x4e, 0x61, 0x6d, 0x65, - 0x64, 0x45, 0x78, 0x74, 0x61, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x70, 0x65, 0x63, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x55, 0x64, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x57, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0b, 0x77, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x3e, 0x0a, + 0x10, 0x57, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x23, 0x0a, + 0x0a, 0x46, 0x64, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, + 0x02, 0x52, 0x0f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x22, 0x35, 0x0a, 0x07, 0x46, 0x64, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0d, 0x0a, + 0x09, 0x42, 0x4c, 0x41, 0x43, 0x4b, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, + 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x44, + 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x1a, 0xd5, 0x05, 0x0a, 0x13, 0x43, 0x6f, + 0x6e, 0x73, 0x75, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x1c, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x1e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, + 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x17, 0x0a, + 0x07, 0x63, 0x61, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x63, 0x61, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x61, 0x5f, 0x70, 0x61, 0x74, + 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x61, 0x50, 0x61, 0x74, 0x68, 0x12, + 0x1b, 0x0a, 0x09, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x63, 0x65, 0x72, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, + 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6b, 0x65, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x4c, 0x0a, 0x14, 0x69, 0x6e, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x65, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, + 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x36, 0x0a, 0x09, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x77, 0x61, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x73, 0x0a, + 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x6e, 0x73, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x6e, 0x73, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4b, 0x0a, 0x14, 0x64, 0x6e, 0x73, 0x5f, 0x70, 0x6f, + 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x12, 0x64, 0x6e, 0x73, 0x50, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x1a, 0x3c, 0x0a, 0x17, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, + 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, + 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x73, 0x1a, 0xfe, 0x03, 0x0a, 0x24, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x55, 0x70, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x73, + 0x65, 0x54, 0x6c, 0x73, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x54, 0x6c, 0x73, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, + 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6c, 0x73, 0x54, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x11, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x6c, 0x73, 0x54, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x31, 0x0a, 0x06, 0x72, 0x6f, 0x6f, 0x74, 0x43, 0x61, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x06, 0x72, 0x6f, 0x6f, + 0x74, 0x43, 0x61, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x54, 0x6c, 0x73, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, + 0x70, 0x6c, 0x69, 0x74, 0x54, 0x6c, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, + 0x5d, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x6f, + 0x64, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, + 0x6c, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x43, 0x6f, 0x6e, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x0f, 0x63, + 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x4e, + 0x0a, 0x0d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, + 0x0a, 0x16, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x5f, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x16, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x61, 0x67, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, + 0x6c, 0x69, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x14, 0x65, 0x64, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x17, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, + 0x65, 0x64, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x69, + 0x65, 0x73, 0x1a, 0xaf, 0x01, 0x0a, 0x17, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, + 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5e, + 0x0a, 0x0b, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, + 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x73, 0x52, 0x0a, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x1a, 0x34, + 0x0a, 0x0a, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x10, 0x0a, 0x03, + 0x51, 0x50, 0x53, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x51, 0x50, 0x53, 0x12, 0x14, + 0x0a, 0x05, 0x62, 0x75, 0x72, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, + 0x75, 0x72, 0x73, 0x74, 0x1a, 0x62, 0x0a, 0x11, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x78, 0x74, + 0x61, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xc6, 0x06, 0x0a, 0x14, 0x4f, 0x62, 0x73, + 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x72, 0x0a, 0x12, 0x67, 0x72, 0x61, 0x66, 0x61, 0x6e, 0x61, 0x49, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, + 0x72, 0x61, 0x66, 0x61, 0x6e, 0x61, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x12, 0x67, 0x72, 0x61, 0x66, 0x61, 0x6e, 0x61, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x89, 0x01, 0x0a, 0x18, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x18, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x1a, 0xdf, 0x01, 0x0a, 0x12, 0x47, 0x72, 0x61, 0x66, 0x61, 0x6e, 0x61, 0x49, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x1b, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x5f, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x66, 0x6f, + 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x46, 0x6f, 0x6c, + 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, + 0x72, 0x64, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x12, 0x41, 0x0a, 0x1d, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x73, 0x1a, 0xbf, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x12, 0x6f, 0x0a, 0x0b, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x54, 0x6f, 0x50, + 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xfd, 0x01, 0x0a, - 0x14, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x72, 0x0a, 0x12, 0x67, 0x72, 0x61, 0x66, 0x61, 0x6e, 0x61, - 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4f, 0x62, - 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x47, 0x72, 0x61, 0x66, 0x61, 0x6e, 0x61, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x67, 0x72, 0x61, 0x66, 0x61, 0x6e, 0x61, 0x49, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x71, 0x0a, 0x12, 0x47, 0x72, 0x61, - 0x66, 0x61, 0x6e, 0x61, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x5b, 0x0a, 0x1b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x64, 0x61, 0x73, 0x68, 0x62, - 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x18, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, - 0x6f, 0x61, 0x72, 0x64, 0x46, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x49, 0x64, 0x42, 0x0f, 0x0a, 0x0d, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0f, 0x0a, - 0x0d, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x11, - 0x0a, 0x0f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x22, 0x55, 0x0a, 0x0f, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x42, 0x0a, 0x0e, 0x73, 0x73, 0x6c, 0x5f, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x73, 0x6c, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x0d, 0x73, 0x73, 0x6c, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0xa3, 0x0b, 0x0a, 0x0b, 0x47, 0x6c, 0x6f, - 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x78, 0x64, 0x73, 0x5f, - 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x78, 0x64, 0x73, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x64, 0x64, 0x72, 0x12, 0x30, 0x0a, 0x14, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x64, 0x64, 0x72, 0x12, 0x4d, - 0x0a, 0x10, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, - 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x42, - 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, 0x63, 0x69, - 0x72, 0x63, 0x75, 0x69, 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x55, 0x0a, - 0x19, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x69, - 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x65, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x57, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x12, 0x45, 0x0a, 0x0b, 0x61, 0x77, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x57, 0x53, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x0a, 0x61, 0x77, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x61, 0x0a, 0x15, 0x69, - 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x13, 0x69, 0x6e, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x46, - 0x0a, 0x1f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, - 0x65, 0x74, 0x65, 0x73, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x44, 0x0a, 0x10, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x77, 0x65, 0x62, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x64, 0x69, - 0x73, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x70, 0x63, 0x57, 0x65, 0x62, 0x12, 0x63, 0x0a, 0x20, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x67, 0x61, - 0x72, 0x62, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x1d, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x78, 0x79, - 0x47, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x51, 0x0a, 0x16, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x70, - 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x13, 0x72, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x78, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, - 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2b, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x74, 0x5f, 0x78, 0x64, 0x73, - 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0f, 0x72, 0x65, 0x73, 0x74, 0x58, 0x64, 0x73, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x64, 0x64, - 0x72, 0x12, 0x42, 0x0a, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, - 0x5f, 0x65, 0x64, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, - 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, - 0x73, 0x74, 0x45, 0x64, 0x73, 0x12, 0x6d, 0x0a, 0x26, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, - 0x72, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x64, 0x6e, 0x73, 0x5f, 0x70, - 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x22, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x44, 0x6e, 0x73, 0x50, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x1a, 0xfb, 0x01, 0x0a, 0x0a, 0x41, 0x57, 0x53, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x1b, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x19, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x44, 0x69, 0x73, - 0x63, 0x6f, 0x76, 0x65, 0x79, 0x12, 0x93, 0x01, 0x0a, 0x1b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x65, 0x6e, - 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x61, 0x77, 0x73, 0x5f, 0x6c, 0x61, 0x6d, 0x62, 0x64, - 0x61, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x57, 0x53, 0x4c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x48, 0x00, - 0x52, 0x19, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x63, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x5f, 0x66, 0x65, 0x74, 0x63, 0x68, - 0x65, 0x72, 0x1a, 0xc9, 0x01, 0x0a, 0x13, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x34, 0x0a, 0x16, 0x72, 0x65, - 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x72, 0x6f, - 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x72, 0x65, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, - 0x12, 0x3d, 0x0a, 0x1b, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, - 0x65, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x18, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x3d, 0x0a, 0x1b, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x6f, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x22, 0x9e, - 0x08, 0x0a, 0x0e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x34, 0x0a, 0x16, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x14, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x12, 0x4e, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6c, - 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x21, 0x72, 0x65, 0x61, 0x64, 0x5f, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x6c, - 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x1d, 0x72, 0x65, 0x61, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, - 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x73, 0x12, 0x46, 0x0a, 0x1e, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x73, 0x6f, 0x72, 0x74, - 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x1a, 0x61, - 0x6c, 0x77, 0x61, 0x79, 0x73, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x6f, 0x6d, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x73, 0x70, - 0x65, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x70, 0x65, 0x63, 0x1a, 0xbf, 0x05, - 0x0a, 0x11, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x3f, 0x0a, 0x1c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x70, 0x72, 0x6f, 0x78, 0x79, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x41, 0x64, 0x64, 0x72, 0x12, 0x3d, 0x0a, 0x1b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x63, - 0x65, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x6c, 0x73, 0x43, - 0x65, 0x72, 0x74, 0x12, 0x3b, 0x0a, 0x1a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x6c, 0x73, 0x4b, 0x65, 0x79, - 0x12, 0x43, 0x0a, 0x1e, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x67, 0x6c, 0x6f, 0x6f, 0x5f, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, - 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, - 0x47, 0x6c, 0x6f, 0x6f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, - 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, - 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, - 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, - 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x41, 0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, - 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x54, 0x6f, 0x50, + 0x61, 0x74, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x54, + 0x6f, 0x50, 0x61, 0x74, 0x68, 0x1a, 0x3e, 0x0a, 0x10, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x54, 0x6f, + 0x50, 0x61, 0x74, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x89, 0x01, 0x0a, 0x1d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x52, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4a, 0x04, 0x08, 0x0f, 0x10, 0x10, 0x4a, 0x04, 0x08, 0x25, + 0x10, 0x26, 0x52, 0x0f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x22, 0xf5, 0x01, 0x0a, 0x0d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x4f, 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x53, 0x0a, 0x11, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, + 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x10, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x60, 0x0a, 0x18, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x80, 0x02, + 0x0a, 0x0f, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x42, 0x0a, 0x0e, 0x73, 0x73, 0x6c, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x73, 0x6c, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x0d, 0x73, 0x73, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x63, 0x0a, 0x12, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x41, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x44, 0x0a, 0x16, 0x47, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0xd3, 0x13, 0x0a, 0x0b, 0x47, 0x6c, 0x6f, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x22, 0x0a, 0x0d, 0x78, 0x64, 0x73, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x78, 0x64, 0x73, 0x42, 0x69, 0x6e, 0x64, + 0x41, 0x64, 0x64, 0x72, 0x12, 0x30, 0x0a, 0x14, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x12, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, + 0x6e, 0x64, 0x41, 0x64, 0x64, 0x72, 0x12, 0x4d, 0x0a, 0x10, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, + 0x74, 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x43, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x42, 0x72, 0x65, + 0x61, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x55, 0x0a, 0x19, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x73, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x57, 0x61, + 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x45, 0x0a, 0x0b, + 0x61, 0x77, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x57, 0x53, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x61, 0x77, 0x73, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x61, 0x0a, 0x15, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x47, 0x6c, 0x6f, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x6e, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x52, 0x13, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x46, 0x0a, 0x1f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x64, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x1d, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, + 0x65, 0x73, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x44, + 0x0a, 0x10, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x77, + 0x65, 0x62, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x70, + 0x63, 0x57, 0x65, 0x62, 0x12, 0x63, 0x0a, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x67, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, - 0x77, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x59, 0x0a, 0x1b, 0x77, 0x61, 0x72, - 0x6e, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x69, - 0x72, 0x63, 0x75, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1d, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x47, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x43, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x51, 0x0a, 0x16, 0x72, 0x65, 0x67, + 0x65, 0x78, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, + 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x72, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, + 0x78, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2b, 0x0a, 0x12, + 0x72, 0x65, 0x73, 0x74, 0x5f, 0x78, 0x64, 0x73, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x74, 0x58, 0x64, + 0x73, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x64, 0x64, 0x72, 0x12, 0x42, 0x0a, 0x0f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x64, 0x73, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x74, 0x45, 0x64, 0x73, 0x12, 0x6d, 0x0a, + 0x26, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x5f, 0x64, 0x6e, 0x73, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x22, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x65, 0x72, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x6e, 0x73, 0x50, 0x6f, 0x6c, + 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x4e, 0x0a, 0x15, + 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x75, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, + 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, + 0x6e, 0x75, 0x73, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x31, 0x0a, 0x15, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x62, 0x69, 0x6e, 0x64, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x70, 0x72, 0x6f, + 0x78, 0x79, 0x44, 0x65, 0x62, 0x75, 0x67, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x64, 0x64, 0x72, 0x12, + 0x72, 0x0a, 0x28, 0x6c, 0x6f, 0x67, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x24, 0x6c, + 0x6f, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x64, 0x0a, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x5f, 0x63, 0x68, 0x61, + 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1e, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, 0x43, + 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4b, 0x0a, 0x0d, 0x69, 0x73, 0x74, + 0x69, 0x6f, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x47, 0x6c, 0x6f, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x73, 0x74, 0x69, + 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x82, 0x01, 0x0a, 0x30, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, + 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x18, 0x13, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x2c, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, + 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x1a, 0x83, 0x04, 0x0a, 0x0a, + 0x41, 0x57, 0x53, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x1b, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, + 0x00, 0x52, 0x19, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x79, 0x12, 0x93, 0x01, 0x0a, + 0x1b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x61, 0x77, + 0x73, 0x5f, 0x6c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x57, 0x53, 0x4c, + 0x61, 0x6d, 0x62, 0x64, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x19, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x12, 0x58, 0x0a, 0x1a, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x5f, + 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x18, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x69, + 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x53, 0x0a, 0x18, + 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18, 0x77, 0x61, 0x72, 0x6e, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x43, 0x69, 0x72, 0x63, 0x75, 0x69, - 0x74, 0x69, 0x6e, 0x67, 0x12, 0x66, 0x0a, 0x21, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x63, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x44, 0x65, 0x6c, 0x61, + 0x79, 0x12, 0x57, 0x0a, 0x1a, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x6f, + 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x17, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x54, 0x6f, 0x46, 0x69, 0x72, + 0x73, 0x74, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x15, 0x0a, 0x13, 0x63, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x5f, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, + 0x72, 0x1a, 0xc9, 0x01, 0x0a, 0x13, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x34, 0x0a, 0x16, 0x72, 0x65, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x72, 0x65, 0x70, 0x6c, 0x61, + 0x63, 0x65, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, + 0x3d, 0x0a, 0x1b, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x18, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x3d, + 0x0a, 0x1b, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, + 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x18, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x6f, 0x75, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x1a, 0xf6, 0x01, + 0x0a, 0x0c, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x55, + 0x0a, 0x17, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x78, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x65, 0x64, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1f, 0x64, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x61, 0x0a, 0x1f, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x1b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x47, 0x72, 0x70, 0x63, 0x4d, 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x22, - 0xc5, 0x03, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x38, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x22, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, - 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x68, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x2e, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x73, 0x75, 0x62, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, - 0x31, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x1a, 0x64, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x0c, - 0x0a, 0x08, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, - 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x61, - 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x42, 0x3e, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0xc0, - 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, + 0x14, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x58, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, + 0x64, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x4d, 0x74, 0x6c, 0x73, 0x12, 0x49, 0x0a, 0x12, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x53, 0x0a, 0x15, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, + 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x3a, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x61, 0x79, 0x5f, 0x74, 0x6c, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x57, 0x61, 0x79, 0x54, 0x6c, 0x73, 0x22, 0xdb, 0x0d, 0x0a, 0x0e, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, + 0x0a, 0x16, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x41, 0x64, 0x64, 0x72, 0x12, 0x4e, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x21, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x1d, 0x72, 0x65, 0x61, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x46, 0x72, 0x6f, + 0x6d, 0x41, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x46, + 0x0a, 0x1e, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x1a, 0x61, 0x6c, 0x77, 0x61, + 0x79, 0x73, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, + 0x64, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5b, 0x0a, 0x17, 0x76, 0x69, + 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, + 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x15, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x48, 0x0a, 0x12, 0x70, 0x65, 0x72, 0x73, 0x69, + 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x10, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x70, 0x65, + 0x63, 0x12, 0x56, 0x0a, 0x19, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x17, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x67, 0x0a, 0x23, 0x69, 0x73, 0x6f, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x68, 0x6f, 0x73, + 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x1e, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x69, 0x72, 0x74, 0x75, + 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x42, 0x79, 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x54, 0x0a, 0x18, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x65, 0x5f, + 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x16, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x1a, 0xbe, 0x07, 0x0a, 0x11, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, + 0x0a, 0x1c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x12, + 0x3d, 0x0a, 0x1b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x12, 0x3b, + 0x0a, 0x1a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x6c, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x1e, 0x69, + 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x67, 0x6c, 0x6f, 0x6f, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x1b, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x47, + 0x6c, 0x6f, 0x6f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, + 0x6c, 0x75, 0x72, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x61, + 0x63, 0x63, 0x65, 0x70, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, + 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x41, + 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x41, 0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x77, + 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x5d, 0x0a, 0x1b, 0x77, 0x61, 0x72, 0x6e, + 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x69, 0x72, + 0x63, 0x75, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x18, 0x77, + 0x61, 0x72, 0x6e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x43, 0x69, 0x72, + 0x63, 0x75, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x66, 0x0a, 0x21, 0x64, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1f, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x6c, 0x0a, 0x25, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x20, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x47, 0x72, 0x70, + 0x63, 0x4d, 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x41, 0x0a, + 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x12, 0x51, 0x0a, 0x17, 0x77, 0x61, 0x72, 0x6e, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, + 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x77, + 0x61, 0x72, 0x6e, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x54, 0x6c, 0x73, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x12, 0x4e, 0x0a, 0x15, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, + 0x66, 0x75, 0x6c, 0x6c, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x22, 0x3d, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, + 0x73, 0x6f, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, + 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, + 0x6c, 0x79, 0x52, 0x14, 0x61, 0x70, 0x69, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x90, 0x01, 0x0a, 0x0e, 0x47, 0x72, 0x61, + 0x70, 0x68, 0x71, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x56, 0x0a, 0x1d, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x04, 0x08, 0x01, + 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x17, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x73, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x75, + 0x6c, 0x65, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xc5, 0x03, 0x0a, 0x0e, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x38, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, + 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, + 0x79, 0x12, 0x68, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x35, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x75, + 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x64, + 0x0a, 0x18, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, + 0x07, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x63, + 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x6a, 0x65, + 0x63, 0x74, 0x65, 0x64, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, + 0x67, 0x10, 0x03, 0x22, 0xcb, 0x01, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x65, 0x73, 0x12, 0x52, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, 0x59, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x42, 0x42, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, + 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes = make([]protoimpl.MessageInfo, 25) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes = make([]protoimpl.MessageInfo, 46) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_goTypes = []any{ (SettingsSpec_DiscoveryOptions_FdsMode)(0), // 0: gloo.solo.io.SettingsSpec.DiscoveryOptions.FdsMode (SettingsStatus_State)(0), // 1: gloo.solo.io.SettingsStatus.State (*SettingsSpec)(nil), // 2: gloo.solo.io.SettingsSpec - (*UpstreamOptions)(nil), // 3: gloo.solo.io.UpstreamOptions - (*GlooOptions)(nil), // 4: gloo.solo.io.GlooOptions - (*GatewayOptions)(nil), // 5: gloo.solo.io.GatewayOptions - (*SettingsStatus)(nil), // 6: gloo.solo.io.SettingsStatus - (*SettingsSpec_KubernetesCrds)(nil), // 7: gloo.solo.io.SettingsSpec.KubernetesCrds - (*SettingsSpec_KubernetesSecrets)(nil), // 8: gloo.solo.io.SettingsSpec.KubernetesSecrets - (*SettingsSpec_VaultSecrets)(nil), // 9: gloo.solo.io.SettingsSpec.VaultSecrets - (*SettingsSpec_ConsulKv)(nil), // 10: gloo.solo.io.SettingsSpec.ConsulKv - (*SettingsSpec_KubernetesConfigmaps)(nil), // 11: gloo.solo.io.SettingsSpec.KubernetesConfigmaps - (*SettingsSpec_Directory)(nil), // 12: gloo.solo.io.SettingsSpec.Directory - (*SettingsSpec_KnativeOptions)(nil), // 13: gloo.solo.io.SettingsSpec.KnativeOptions - (*SettingsSpec_DiscoveryOptions)(nil), // 14: gloo.solo.io.SettingsSpec.DiscoveryOptions - (*SettingsSpec_ConsulConfiguration)(nil), // 15: gloo.solo.io.SettingsSpec.ConsulConfiguration - (*SettingsSpec_ConsulUpstreamDiscoveryConfiguration)(nil), // 16: gloo.solo.io.SettingsSpec.ConsulUpstreamDiscoveryConfiguration - (*SettingsSpec_KubernetesConfiguration)(nil), // 17: gloo.solo.io.SettingsSpec.KubernetesConfiguration - nil, // 18: gloo.solo.io.SettingsSpec.NamedExtauthEntry - (*SettingsSpec_ObservabilityOptions)(nil), // 19: gloo.solo.io.SettingsSpec.ObservabilityOptions - (*SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions)(nil), // 20: gloo.solo.io.SettingsSpec.ConsulConfiguration.ServiceDiscoveryOptions - (*SettingsSpec_KubernetesConfiguration_RateLimits)(nil), // 21: gloo.solo.io.SettingsSpec.KubernetesConfiguration.RateLimits - (*SettingsSpec_ObservabilityOptions_GrafanaIntegration)(nil), // 22: gloo.solo.io.SettingsSpec.ObservabilityOptions.GrafanaIntegration - (*GlooOptions_AWSOptions)(nil), // 23: gloo.solo.io.GlooOptions.AWSOptions - (*GlooOptions_InvalidConfigPolicy)(nil), // 24: gloo.solo.io.GlooOptions.InvalidConfigPolicy - (*GatewayOptions_ValidationOptions)(nil), // 25: gloo.solo.io.GatewayOptions.ValidationOptions - nil, // 26: gloo.solo.io.SettingsStatus.SubresourceStatusesEntry - (*duration.Duration)(nil), // 27: google.protobuf.Duration - (*Extensions)(nil), // 28: gloo.solo.io.Extensions - (*ratelimit.ServiceSettings)(nil), // 29: ratelimit.options.gloo.solo.io.ServiceSettings - (*ratelimit.Settings)(nil), // 30: ratelimit.options.gloo.solo.io.Settings - (*rbac.Settings)(nil), // 31: rbac.options.gloo.solo.io.Settings - (*v1.Settings)(nil), // 32: enterprise.gloo.solo.io.Settings - (*SslParameters)(nil), // 33: gloo.solo.io.SslParameters - (*CircuitBreakerConfig)(nil), // 34: gloo.solo.io.CircuitBreakerConfig - (*wrappers.BoolValue)(nil), // 35: google.protobuf.BoolValue - (*wrappers.UInt32Value)(nil), // 36: google.protobuf.UInt32Value - (*_struct.Struct)(nil), // 37: google.protobuf.Struct - (*core.ResourceRef)(nil), // 38: core.solo.io.ResourceRef - (*aws.AWSLambdaConfig_ServiceAccountCredentials)(nil), // 39: envoy.config.filter.http.aws_lambda.v2.AWSLambdaConfig.ServiceAccountCredentials - (*wrappers.Int64Value)(nil), // 40: google.protobuf.Int64Value + (*LabelSelector)(nil), // 3: gloo.solo.io.LabelSelector + (*LabelSelectorRequirement)(nil), // 4: gloo.solo.io.LabelSelectorRequirement + (*UpstreamOptions)(nil), // 5: gloo.solo.io.UpstreamOptions + (*GlooOptions)(nil), // 6: gloo.solo.io.GlooOptions + (*VirtualServiceOptions)(nil), // 7: gloo.solo.io.VirtualServiceOptions + (*GatewayOptions)(nil), // 8: gloo.solo.io.GatewayOptions + (*ConsoleOptions)(nil), // 9: gloo.solo.io.ConsoleOptions + (*GraphqlOptions)(nil), // 10: gloo.solo.io.GraphqlOptions + (*SettingsStatus)(nil), // 11: gloo.solo.io.SettingsStatus + (*SettingsNamespacedStatuses)(nil), // 12: gloo.solo.io.SettingsNamespacedStatuses + (*SettingsSpec_SecretOptions)(nil), // 13: gloo.solo.io.SettingsSpec.SecretOptions + (*SettingsSpec_KubernetesCrds)(nil), // 14: gloo.solo.io.SettingsSpec.KubernetesCrds + (*SettingsSpec_KubernetesSecrets)(nil), // 15: gloo.solo.io.SettingsSpec.KubernetesSecrets + (*SettingsSpec_VaultSecrets)(nil), // 16: gloo.solo.io.SettingsSpec.VaultSecrets + (*SettingsSpec_VaultAwsAuth)(nil), // 17: gloo.solo.io.SettingsSpec.VaultAwsAuth + (*SettingsSpec_VaultTlsConfig)(nil), // 18: gloo.solo.io.SettingsSpec.VaultTlsConfig + (*SettingsSpec_ConsulKv)(nil), // 19: gloo.solo.io.SettingsSpec.ConsulKv + (*SettingsSpec_KubernetesConfigmaps)(nil), // 20: gloo.solo.io.SettingsSpec.KubernetesConfigmaps + (*SettingsSpec_Directory)(nil), // 21: gloo.solo.io.SettingsSpec.Directory + (*SettingsSpec_KnativeOptions)(nil), // 22: gloo.solo.io.SettingsSpec.KnativeOptions + (*SettingsSpec_DiscoveryOptions)(nil), // 23: gloo.solo.io.SettingsSpec.DiscoveryOptions + (*SettingsSpec_ConsulConfiguration)(nil), // 24: gloo.solo.io.SettingsSpec.ConsulConfiguration + (*SettingsSpec_ConsulUpstreamDiscoveryConfiguration)(nil), // 25: gloo.solo.io.SettingsSpec.ConsulUpstreamDiscoveryConfiguration + (*SettingsSpec_KubernetesConfiguration)(nil), // 26: gloo.solo.io.SettingsSpec.KubernetesConfiguration + nil, // 27: gloo.solo.io.SettingsSpec.NamedExtauthEntry + (*SettingsSpec_ObservabilityOptions)(nil), // 28: gloo.solo.io.SettingsSpec.ObservabilityOptions + (*SettingsSpec_SecretOptions_Source)(nil), // 29: gloo.solo.io.SettingsSpec.SecretOptions.Source + (*SettingsSpec_DiscoveryOptions_UdsOptions)(nil), // 30: gloo.solo.io.SettingsSpec.DiscoveryOptions.UdsOptions + (*SettingsSpec_DiscoveryOptions_FdsOptions)(nil), // 31: gloo.solo.io.SettingsSpec.DiscoveryOptions.FdsOptions + nil, // 32: gloo.solo.io.SettingsSpec.DiscoveryOptions.UdsOptions.WatchLabelsEntry + (*SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions)(nil), // 33: gloo.solo.io.SettingsSpec.ConsulConfiguration.ServiceDiscoveryOptions + (*SettingsSpec_KubernetesConfiguration_RateLimits)(nil), // 34: gloo.solo.io.SettingsSpec.KubernetesConfiguration.RateLimits + (*SettingsSpec_ObservabilityOptions_GrafanaIntegration)(nil), // 35: gloo.solo.io.SettingsSpec.ObservabilityOptions.GrafanaIntegration + (*SettingsSpec_ObservabilityOptions_MetricLabels)(nil), // 36: gloo.solo.io.SettingsSpec.ObservabilityOptions.MetricLabels + nil, // 37: gloo.solo.io.SettingsSpec.ObservabilityOptions.ConfigStatusMetricLabelsEntry + nil, // 38: gloo.solo.io.SettingsSpec.ObservabilityOptions.MetricLabels.LabelToPathEntry + nil, // 39: gloo.solo.io.LabelSelector.MatchLabelsEntry + nil, // 40: gloo.solo.io.UpstreamOptions.GlobalAnnotationsEntry + (*GlooOptions_AWSOptions)(nil), // 41: gloo.solo.io.GlooOptions.AWSOptions + (*GlooOptions_InvalidConfigPolicy)(nil), // 42: gloo.solo.io.GlooOptions.InvalidConfigPolicy + (*GlooOptions_IstioOptions)(nil), // 43: gloo.solo.io.GlooOptions.IstioOptions + (*GatewayOptions_ValidationOptions)(nil), // 44: gloo.solo.io.GatewayOptions.ValidationOptions + (*GraphqlOptions_SchemaChangeValidationOptions)(nil), // 45: gloo.solo.io.GraphqlOptions.SchemaChangeValidationOptions + nil, // 46: gloo.solo.io.SettingsStatus.SubresourceStatusesEntry + nil, // 47: gloo.solo.io.SettingsNamespacedStatuses.StatusesEntry + (*durationpb.Duration)(nil), // 48: google.protobuf.Duration + (*Extensions)(nil), // 49: gloo.solo.io.Extensions + (*ratelimit.ServiceSettings)(nil), // 50: ratelimit.options.gloo.solo.io.ServiceSettings + (*ratelimit.Settings)(nil), // 51: ratelimit.options.gloo.solo.io.Settings + (*rbac.Settings)(nil), // 52: rbac.options.gloo.solo.io.Settings + (*v1.Settings)(nil), // 53: enterprise.gloo.solo.io.Settings + (*caching.Settings)(nil), // 54: caching.options.gloo.solo.io.Settings + (*extproc.Settings)(nil), // 55: extproc.options.gloo.solo.io.Settings + (*ssl.SslParameters)(nil), // 56: gloo.solo.io.SslParameters + (*circuit_breaker.CircuitBreakerConfig)(nil), // 57: gloo.solo.io.CircuitBreakerConfig + (*wrapperspb.BoolValue)(nil), // 58: google.protobuf.BoolValue + (*wrapperspb.UInt32Value)(nil), // 59: google.protobuf.UInt32Value + (*structpb.Struct)(nil), // 60: google.protobuf.Struct + (*core.ResourceRef)(nil), // 61: core.solo.io.ResourceRef + (consul.ConsulConsistencyModes)(0), // 62: consul.options.gloo.solo.io.ConsulConsistencyModes + (*consul.QueryOptions)(nil), // 63: consul.options.gloo.solo.io.QueryOptions + (*aws.AWSLambdaConfig_ServiceAccountCredentials)(nil), // 64: envoy.config.filter.http.aws_lambda.v2.AWSLambdaConfig.ServiceAccountCredentials + (*wrapperspb.Int32Value)(nil), // 65: google.protobuf.Int32Value } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_depIdxs = []int32{ - 7, // 0: gloo.solo.io.SettingsSpec.kubernetes_config_source:type_name -> gloo.solo.io.SettingsSpec.KubernetesCrds - 12, // 1: gloo.solo.io.SettingsSpec.directory_config_source:type_name -> gloo.solo.io.SettingsSpec.Directory - 10, // 2: gloo.solo.io.SettingsSpec.consul_kv_source:type_name -> gloo.solo.io.SettingsSpec.ConsulKv - 8, // 3: gloo.solo.io.SettingsSpec.kubernetes_secret_source:type_name -> gloo.solo.io.SettingsSpec.KubernetesSecrets - 9, // 4: gloo.solo.io.SettingsSpec.vault_secret_source:type_name -> gloo.solo.io.SettingsSpec.VaultSecrets - 12, // 5: gloo.solo.io.SettingsSpec.directory_secret_source:type_name -> gloo.solo.io.SettingsSpec.Directory - 11, // 6: gloo.solo.io.SettingsSpec.kubernetes_artifact_source:type_name -> gloo.solo.io.SettingsSpec.KubernetesConfigmaps - 12, // 7: gloo.solo.io.SettingsSpec.directory_artifact_source:type_name -> gloo.solo.io.SettingsSpec.Directory - 10, // 8: gloo.solo.io.SettingsSpec.consul_kv_artifact_source:type_name -> gloo.solo.io.SettingsSpec.ConsulKv - 27, // 9: gloo.solo.io.SettingsSpec.refresh_rate:type_name -> google.protobuf.Duration - 13, // 10: gloo.solo.io.SettingsSpec.knative:type_name -> gloo.solo.io.SettingsSpec.KnativeOptions - 14, // 11: gloo.solo.io.SettingsSpec.discovery:type_name -> gloo.solo.io.SettingsSpec.DiscoveryOptions - 4, // 12: gloo.solo.io.SettingsSpec.gloo:type_name -> gloo.solo.io.GlooOptions - 5, // 13: gloo.solo.io.SettingsSpec.gateway:type_name -> gloo.solo.io.GatewayOptions - 15, // 14: gloo.solo.io.SettingsSpec.consul:type_name -> gloo.solo.io.SettingsSpec.ConsulConfiguration - 16, // 15: gloo.solo.io.SettingsSpec.consulDiscovery:type_name -> gloo.solo.io.SettingsSpec.ConsulUpstreamDiscoveryConfiguration - 17, // 16: gloo.solo.io.SettingsSpec.kubernetes:type_name -> gloo.solo.io.SettingsSpec.KubernetesConfiguration - 28, // 17: gloo.solo.io.SettingsSpec.extensions:type_name -> gloo.solo.io.Extensions - 29, // 18: gloo.solo.io.SettingsSpec.ratelimit:type_name -> ratelimit.options.gloo.solo.io.ServiceSettings - 30, // 19: gloo.solo.io.SettingsSpec.ratelimit_server:type_name -> ratelimit.options.gloo.solo.io.Settings - 31, // 20: gloo.solo.io.SettingsSpec.rbac:type_name -> rbac.options.gloo.solo.io.Settings - 32, // 21: gloo.solo.io.SettingsSpec.extauth:type_name -> enterprise.gloo.solo.io.Settings - 18, // 22: gloo.solo.io.SettingsSpec.named_extauth:type_name -> gloo.solo.io.SettingsSpec.NamedExtauthEntry - 19, // 23: gloo.solo.io.SettingsSpec.observabilityOptions:type_name -> gloo.solo.io.SettingsSpec.ObservabilityOptions - 3, // 24: gloo.solo.io.SettingsSpec.upstreamOptions:type_name -> gloo.solo.io.UpstreamOptions - 33, // 25: gloo.solo.io.UpstreamOptions.ssl_parameters:type_name -> gloo.solo.io.SslParameters - 34, // 26: gloo.solo.io.GlooOptions.circuit_breakers:type_name -> gloo.solo.io.CircuitBreakerConfig - 27, // 27: gloo.solo.io.GlooOptions.endpoints_warming_timeout:type_name -> google.protobuf.Duration - 23, // 28: gloo.solo.io.GlooOptions.aws_options:type_name -> gloo.solo.io.GlooOptions.AWSOptions - 24, // 29: gloo.solo.io.GlooOptions.invalid_config_policy:type_name -> gloo.solo.io.GlooOptions.InvalidConfigPolicy - 35, // 30: gloo.solo.io.GlooOptions.disable_grpc_web:type_name -> google.protobuf.BoolValue - 35, // 31: gloo.solo.io.GlooOptions.disable_proxy_garbage_collection:type_name -> google.protobuf.BoolValue - 36, // 32: gloo.solo.io.GlooOptions.regex_max_program_size:type_name -> google.protobuf.UInt32Value - 35, // 33: gloo.solo.io.GlooOptions.enable_rest_eds:type_name -> google.protobuf.BoolValue - 27, // 34: gloo.solo.io.GlooOptions.failover_upstream_dns_polling_interval:type_name -> google.protobuf.Duration - 25, // 35: gloo.solo.io.GatewayOptions.validation:type_name -> gloo.solo.io.GatewayOptions.ValidationOptions - 1, // 36: gloo.solo.io.SettingsStatus.state:type_name -> gloo.solo.io.SettingsStatus.State - 26, // 37: gloo.solo.io.SettingsStatus.subresource_statuses:type_name -> gloo.solo.io.SettingsStatus.SubresourceStatusesEntry - 37, // 38: gloo.solo.io.SettingsStatus.details:type_name -> google.protobuf.Struct - 35, // 39: gloo.solo.io.SettingsSpec.VaultSecrets.insecure:type_name -> google.protobuf.BoolValue - 0, // 40: gloo.solo.io.SettingsSpec.DiscoveryOptions.fds_mode:type_name -> gloo.solo.io.SettingsSpec.DiscoveryOptions.FdsMode - 35, // 41: gloo.solo.io.SettingsSpec.ConsulConfiguration.insecure_skip_verify:type_name -> google.protobuf.BoolValue - 27, // 42: gloo.solo.io.SettingsSpec.ConsulConfiguration.wait_time:type_name -> google.protobuf.Duration - 20, // 43: gloo.solo.io.SettingsSpec.ConsulConfiguration.service_discovery:type_name -> gloo.solo.io.SettingsSpec.ConsulConfiguration.ServiceDiscoveryOptions - 27, // 44: gloo.solo.io.SettingsSpec.ConsulConfiguration.dns_polling_interval:type_name -> google.protobuf.Duration - 38, // 45: gloo.solo.io.SettingsSpec.ConsulUpstreamDiscoveryConfiguration.rootCa:type_name -> core.solo.io.ResourceRef - 21, // 46: gloo.solo.io.SettingsSpec.KubernetesConfiguration.rate_limits:type_name -> gloo.solo.io.SettingsSpec.KubernetesConfiguration.RateLimits - 32, // 47: gloo.solo.io.SettingsSpec.NamedExtauthEntry.value:type_name -> enterprise.gloo.solo.io.Settings - 22, // 48: gloo.solo.io.SettingsSpec.ObservabilityOptions.grafanaIntegration:type_name -> gloo.solo.io.SettingsSpec.ObservabilityOptions.GrafanaIntegration - 36, // 49: gloo.solo.io.SettingsSpec.ObservabilityOptions.GrafanaIntegration.default_dashboard_folder_id:type_name -> google.protobuf.UInt32Value - 39, // 50: gloo.solo.io.GlooOptions.AWSOptions.service_account_credentials:type_name -> envoy.config.filter.http.aws_lambda.v2.AWSLambdaConfig.ServiceAccountCredentials - 35, // 51: gloo.solo.io.GatewayOptions.ValidationOptions.always_accept:type_name -> google.protobuf.BoolValue - 35, // 52: gloo.solo.io.GatewayOptions.ValidationOptions.allow_warnings:type_name -> google.protobuf.BoolValue - 35, // 53: gloo.solo.io.GatewayOptions.ValidationOptions.warn_route_short_circuiting:type_name -> google.protobuf.BoolValue - 35, // 54: gloo.solo.io.GatewayOptions.ValidationOptions.disable_transformation_validation:type_name -> google.protobuf.BoolValue - 40, // 55: gloo.solo.io.GatewayOptions.ValidationOptions.validation_server_grpc_max_size:type_name -> google.protobuf.Int64Value - 6, // 56: gloo.solo.io.SettingsStatus.SubresourceStatusesEntry.value:type_name -> gloo.solo.io.SettingsStatus - 57, // [57:57] is the sub-list for method output_type - 57, // [57:57] is the sub-list for method input_type - 57, // [57:57] is the sub-list for extension type_name - 57, // [57:57] is the sub-list for extension extendee - 0, // [0:57] is the sub-list for field type_name + 14, // 0: gloo.solo.io.SettingsSpec.kubernetes_config_source:type_name -> gloo.solo.io.SettingsSpec.KubernetesCrds + 21, // 1: gloo.solo.io.SettingsSpec.directory_config_source:type_name -> gloo.solo.io.SettingsSpec.Directory + 19, // 2: gloo.solo.io.SettingsSpec.consul_kv_source:type_name -> gloo.solo.io.SettingsSpec.ConsulKv + 15, // 3: gloo.solo.io.SettingsSpec.kubernetes_secret_source:type_name -> gloo.solo.io.SettingsSpec.KubernetesSecrets + 16, // 4: gloo.solo.io.SettingsSpec.vault_secret_source:type_name -> gloo.solo.io.SettingsSpec.VaultSecrets + 21, // 5: gloo.solo.io.SettingsSpec.directory_secret_source:type_name -> gloo.solo.io.SettingsSpec.Directory + 13, // 6: gloo.solo.io.SettingsSpec.secret_options:type_name -> gloo.solo.io.SettingsSpec.SecretOptions + 20, // 7: gloo.solo.io.SettingsSpec.kubernetes_artifact_source:type_name -> gloo.solo.io.SettingsSpec.KubernetesConfigmaps + 21, // 8: gloo.solo.io.SettingsSpec.directory_artifact_source:type_name -> gloo.solo.io.SettingsSpec.Directory + 19, // 9: gloo.solo.io.SettingsSpec.consul_kv_artifact_source:type_name -> gloo.solo.io.SettingsSpec.ConsulKv + 48, // 10: gloo.solo.io.SettingsSpec.refresh_rate:type_name -> google.protobuf.Duration + 22, // 11: gloo.solo.io.SettingsSpec.knative:type_name -> gloo.solo.io.SettingsSpec.KnativeOptions + 23, // 12: gloo.solo.io.SettingsSpec.discovery:type_name -> gloo.solo.io.SettingsSpec.DiscoveryOptions + 6, // 13: gloo.solo.io.SettingsSpec.gloo:type_name -> gloo.solo.io.GlooOptions + 8, // 14: gloo.solo.io.SettingsSpec.gateway:type_name -> gloo.solo.io.GatewayOptions + 24, // 15: gloo.solo.io.SettingsSpec.consul:type_name -> gloo.solo.io.SettingsSpec.ConsulConfiguration + 25, // 16: gloo.solo.io.SettingsSpec.consulDiscovery:type_name -> gloo.solo.io.SettingsSpec.ConsulUpstreamDiscoveryConfiguration + 26, // 17: gloo.solo.io.SettingsSpec.kubernetes:type_name -> gloo.solo.io.SettingsSpec.KubernetesConfiguration + 49, // 18: gloo.solo.io.SettingsSpec.extensions:type_name -> gloo.solo.io.Extensions + 50, // 19: gloo.solo.io.SettingsSpec.ratelimit:type_name -> ratelimit.options.gloo.solo.io.ServiceSettings + 51, // 20: gloo.solo.io.SettingsSpec.ratelimit_server:type_name -> ratelimit.options.gloo.solo.io.Settings + 52, // 21: gloo.solo.io.SettingsSpec.rbac:type_name -> rbac.options.gloo.solo.io.Settings + 53, // 22: gloo.solo.io.SettingsSpec.extauth:type_name -> enterprise.gloo.solo.io.Settings + 27, // 23: gloo.solo.io.SettingsSpec.named_extauth:type_name -> gloo.solo.io.SettingsSpec.NamedExtauthEntry + 54, // 24: gloo.solo.io.SettingsSpec.caching_server:type_name -> caching.options.gloo.solo.io.Settings + 28, // 25: gloo.solo.io.SettingsSpec.observabilityOptions:type_name -> gloo.solo.io.SettingsSpec.ObservabilityOptions + 5, // 26: gloo.solo.io.SettingsSpec.upstreamOptions:type_name -> gloo.solo.io.UpstreamOptions + 9, // 27: gloo.solo.io.SettingsSpec.console_options:type_name -> gloo.solo.io.ConsoleOptions + 55, // 28: gloo.solo.io.SettingsSpec.ext_proc:type_name -> extproc.options.gloo.solo.io.Settings + 3, // 29: gloo.solo.io.SettingsSpec.watch_namespace_selectors:type_name -> gloo.solo.io.LabelSelector + 39, // 30: gloo.solo.io.LabelSelector.match_labels:type_name -> gloo.solo.io.LabelSelector.MatchLabelsEntry + 4, // 31: gloo.solo.io.LabelSelector.match_expressions:type_name -> gloo.solo.io.LabelSelectorRequirement + 56, // 32: gloo.solo.io.UpstreamOptions.ssl_parameters:type_name -> gloo.solo.io.SslParameters + 40, // 33: gloo.solo.io.UpstreamOptions.global_annotations:type_name -> gloo.solo.io.UpstreamOptions.GlobalAnnotationsEntry + 57, // 34: gloo.solo.io.GlooOptions.circuit_breakers:type_name -> gloo.solo.io.CircuitBreakerConfig + 48, // 35: gloo.solo.io.GlooOptions.endpoints_warming_timeout:type_name -> google.protobuf.Duration + 41, // 36: gloo.solo.io.GlooOptions.aws_options:type_name -> gloo.solo.io.GlooOptions.AWSOptions + 42, // 37: gloo.solo.io.GlooOptions.invalid_config_policy:type_name -> gloo.solo.io.GlooOptions.InvalidConfigPolicy + 58, // 38: gloo.solo.io.GlooOptions.disable_grpc_web:type_name -> google.protobuf.BoolValue + 58, // 39: gloo.solo.io.GlooOptions.disable_proxy_garbage_collection:type_name -> google.protobuf.BoolValue + 59, // 40: gloo.solo.io.GlooOptions.regex_max_program_size:type_name -> google.protobuf.UInt32Value + 58, // 41: gloo.solo.io.GlooOptions.enable_rest_eds:type_name -> google.protobuf.BoolValue + 48, // 42: gloo.solo.io.GlooOptions.failover_upstream_dns_polling_interval:type_name -> google.protobuf.Duration + 58, // 43: gloo.solo.io.GlooOptions.remove_unused_filters:type_name -> google.protobuf.BoolValue + 58, // 44: gloo.solo.io.GlooOptions.log_transformation_request_response_info:type_name -> google.protobuf.BoolValue + 58, // 45: gloo.solo.io.GlooOptions.transformation_escape_characters:type_name -> google.protobuf.BoolValue + 43, // 46: gloo.solo.io.GlooOptions.istio_options:type_name -> gloo.solo.io.GlooOptions.IstioOptions + 58, // 47: gloo.solo.io.GlooOptions.enable_auto_websocket_transformation_passthrough:type_name -> google.protobuf.BoolValue + 58, // 48: gloo.solo.io.VirtualServiceOptions.one_way_tls:type_name -> google.protobuf.BoolValue + 44, // 49: gloo.solo.io.GatewayOptions.validation:type_name -> gloo.solo.io.GatewayOptions.ValidationOptions + 7, // 50: gloo.solo.io.GatewayOptions.virtual_service_options:type_name -> gloo.solo.io.VirtualServiceOptions + 58, // 51: gloo.solo.io.GatewayOptions.persist_proxy_spec:type_name -> google.protobuf.BoolValue + 58, // 52: gloo.solo.io.GatewayOptions.enable_gateway_controller:type_name -> google.protobuf.BoolValue + 58, // 53: gloo.solo.io.GatewayOptions.isolate_virtual_hosts_by_ssl_config:type_name -> google.protobuf.BoolValue + 58, // 54: gloo.solo.io.GatewayOptions.translate_empty_gateways:type_name -> google.protobuf.BoolValue + 1, // 55: gloo.solo.io.SettingsStatus.state:type_name -> gloo.solo.io.SettingsStatus.State + 46, // 56: gloo.solo.io.SettingsStatus.subresource_statuses:type_name -> gloo.solo.io.SettingsStatus.SubresourceStatusesEntry + 60, // 57: gloo.solo.io.SettingsStatus.details:type_name -> google.protobuf.Struct + 47, // 58: gloo.solo.io.SettingsNamespacedStatuses.statuses:type_name -> gloo.solo.io.SettingsNamespacedStatuses.StatusesEntry + 29, // 59: gloo.solo.io.SettingsSpec.SecretOptions.sources:type_name -> gloo.solo.io.SettingsSpec.SecretOptions.Source + 58, // 60: gloo.solo.io.SettingsSpec.VaultSecrets.insecure:type_name -> google.protobuf.BoolValue + 18, // 61: gloo.solo.io.SettingsSpec.VaultSecrets.tls_config:type_name -> gloo.solo.io.SettingsSpec.VaultTlsConfig + 17, // 62: gloo.solo.io.SettingsSpec.VaultSecrets.aws:type_name -> gloo.solo.io.SettingsSpec.VaultAwsAuth + 58, // 63: gloo.solo.io.SettingsSpec.VaultTlsConfig.insecure:type_name -> google.protobuf.BoolValue + 0, // 64: gloo.solo.io.SettingsSpec.DiscoveryOptions.fds_mode:type_name -> gloo.solo.io.SettingsSpec.DiscoveryOptions.FdsMode + 30, // 65: gloo.solo.io.SettingsSpec.DiscoveryOptions.uds_options:type_name -> gloo.solo.io.SettingsSpec.DiscoveryOptions.UdsOptions + 31, // 66: gloo.solo.io.SettingsSpec.DiscoveryOptions.fds_options:type_name -> gloo.solo.io.SettingsSpec.DiscoveryOptions.FdsOptions + 58, // 67: gloo.solo.io.SettingsSpec.ConsulConfiguration.insecure_skip_verify:type_name -> google.protobuf.BoolValue + 48, // 68: gloo.solo.io.SettingsSpec.ConsulConfiguration.wait_time:type_name -> google.protobuf.Duration + 33, // 69: gloo.solo.io.SettingsSpec.ConsulConfiguration.service_discovery:type_name -> gloo.solo.io.SettingsSpec.ConsulConfiguration.ServiceDiscoveryOptions + 48, // 70: gloo.solo.io.SettingsSpec.ConsulConfiguration.dns_polling_interval:type_name -> google.protobuf.Duration + 61, // 71: gloo.solo.io.SettingsSpec.ConsulUpstreamDiscoveryConfiguration.rootCa:type_name -> core.solo.io.ResourceRef + 62, // 72: gloo.solo.io.SettingsSpec.ConsulUpstreamDiscoveryConfiguration.consistencyMode:type_name -> consul.options.gloo.solo.io.ConsulConsistencyModes + 63, // 73: gloo.solo.io.SettingsSpec.ConsulUpstreamDiscoveryConfiguration.query_options:type_name -> consul.options.gloo.solo.io.QueryOptions + 58, // 74: gloo.solo.io.SettingsSpec.ConsulUpstreamDiscoveryConfiguration.eds_blocking_queries:type_name -> google.protobuf.BoolValue + 34, // 75: gloo.solo.io.SettingsSpec.KubernetesConfiguration.rate_limits:type_name -> gloo.solo.io.SettingsSpec.KubernetesConfiguration.RateLimits + 53, // 76: gloo.solo.io.SettingsSpec.NamedExtauthEntry.value:type_name -> enterprise.gloo.solo.io.Settings + 35, // 77: gloo.solo.io.SettingsSpec.ObservabilityOptions.grafanaIntegration:type_name -> gloo.solo.io.SettingsSpec.ObservabilityOptions.GrafanaIntegration + 37, // 78: gloo.solo.io.SettingsSpec.ObservabilityOptions.configStatusMetricLabels:type_name -> gloo.solo.io.SettingsSpec.ObservabilityOptions.ConfigStatusMetricLabelsEntry + 15, // 79: gloo.solo.io.SettingsSpec.SecretOptions.Source.kubernetes:type_name -> gloo.solo.io.SettingsSpec.KubernetesSecrets + 16, // 80: gloo.solo.io.SettingsSpec.SecretOptions.Source.vault:type_name -> gloo.solo.io.SettingsSpec.VaultSecrets + 21, // 81: gloo.solo.io.SettingsSpec.SecretOptions.Source.directory:type_name -> gloo.solo.io.SettingsSpec.Directory + 58, // 82: gloo.solo.io.SettingsSpec.DiscoveryOptions.UdsOptions.enabled:type_name -> google.protobuf.BoolValue + 32, // 83: gloo.solo.io.SettingsSpec.DiscoveryOptions.UdsOptions.watch_labels:type_name -> gloo.solo.io.SettingsSpec.DiscoveryOptions.UdsOptions.WatchLabelsEntry + 59, // 84: gloo.solo.io.SettingsSpec.ObservabilityOptions.GrafanaIntegration.default_dashboard_folder_id:type_name -> google.protobuf.UInt32Value + 38, // 85: gloo.solo.io.SettingsSpec.ObservabilityOptions.MetricLabels.labelToPath:type_name -> gloo.solo.io.SettingsSpec.ObservabilityOptions.MetricLabels.LabelToPathEntry + 36, // 86: gloo.solo.io.SettingsSpec.ObservabilityOptions.ConfigStatusMetricLabelsEntry.value:type_name -> gloo.solo.io.SettingsSpec.ObservabilityOptions.MetricLabels + 64, // 87: gloo.solo.io.GlooOptions.AWSOptions.service_account_credentials:type_name -> envoy.config.filter.http.aws_lambda.v2.AWSLambdaConfig.ServiceAccountCredentials + 58, // 88: gloo.solo.io.GlooOptions.AWSOptions.propagate_original_routing:type_name -> google.protobuf.BoolValue + 48, // 89: gloo.solo.io.GlooOptions.AWSOptions.credential_refresh_delay:type_name -> google.protobuf.Duration + 58, // 90: gloo.solo.io.GlooOptions.AWSOptions.fallback_to_first_function:type_name -> google.protobuf.BoolValue + 58, // 91: gloo.solo.io.GlooOptions.IstioOptions.append_x_forwarded_host:type_name -> google.protobuf.BoolValue + 58, // 92: gloo.solo.io.GlooOptions.IstioOptions.enable_auto_mtls:type_name -> google.protobuf.BoolValue + 58, // 93: gloo.solo.io.GlooOptions.IstioOptions.enable_integration:type_name -> google.protobuf.BoolValue + 58, // 94: gloo.solo.io.GatewayOptions.ValidationOptions.always_accept:type_name -> google.protobuf.BoolValue + 58, // 95: gloo.solo.io.GatewayOptions.ValidationOptions.allow_warnings:type_name -> google.protobuf.BoolValue + 58, // 96: gloo.solo.io.GatewayOptions.ValidationOptions.warn_route_short_circuiting:type_name -> google.protobuf.BoolValue + 58, // 97: gloo.solo.io.GatewayOptions.ValidationOptions.disable_transformation_validation:type_name -> google.protobuf.BoolValue + 65, // 98: gloo.solo.io.GatewayOptions.ValidationOptions.validation_server_grpc_max_size_bytes:type_name -> google.protobuf.Int32Value + 58, // 99: gloo.solo.io.GatewayOptions.ValidationOptions.server_enabled:type_name -> google.protobuf.BoolValue + 58, // 100: gloo.solo.io.GatewayOptions.ValidationOptions.warn_missing_tls_secret:type_name -> google.protobuf.BoolValue + 58, // 101: gloo.solo.io.GatewayOptions.ValidationOptions.full_envoy_validation:type_name -> google.protobuf.BoolValue + 11, // 102: gloo.solo.io.SettingsStatus.SubresourceStatusesEntry.value:type_name -> gloo.solo.io.SettingsStatus + 11, // 103: gloo.solo.io.SettingsNamespacedStatuses.StatusesEntry.value:type_name -> gloo.solo.io.SettingsStatus + 104, // [104:104] is the sub-list for method output_type + 104, // [104:104] is the sub-list for method input_type + 104, // [104:104] is the sub-list for extension type_name + 104, // [104:104] is the sub-list for extension extendee + 0, // [0:104] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_init() } @@ -2967,287 +4770,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_init() { return } file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_init() - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_init() - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_init() - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SettingsSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpstreamOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GlooOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GatewayOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SettingsStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SettingsSpec_KubernetesCrds); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SettingsSpec_KubernetesSecrets); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SettingsSpec_VaultSecrets); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SettingsSpec_ConsulKv); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SettingsSpec_KubernetesConfigmaps); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SettingsSpec_Directory); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SettingsSpec_KnativeOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SettingsSpec_DiscoveryOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SettingsSpec_ConsulConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SettingsSpec_ConsulUpstreamDiscoveryConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SettingsSpec_KubernetesConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SettingsSpec_ObservabilityOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SettingsSpec_KubernetesConfiguration_RateLimits); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SettingsSpec_ObservabilityOptions_GrafanaIntegration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GlooOptions_AWSOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GlooOptions_InvalidConfigPolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GatewayOptions_ValidationOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[0].OneofWrappers = []any{ (*SettingsSpec_KubernetesConfigSource)(nil), (*SettingsSpec_DirectoryConfigSource)(nil), (*SettingsSpec_ConsulKvSource)(nil), @@ -3258,7 +4781,16 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_init() { (*SettingsSpec_DirectoryArtifactSource)(nil), (*SettingsSpec_ConsulKvArtifactSource)(nil), } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[21].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[14].OneofWrappers = []any{ + (*SettingsSpec_VaultSecrets_AccessToken)(nil), + (*SettingsSpec_VaultSecrets_Aws)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[27].OneofWrappers = []any{ + (*SettingsSpec_SecretOptions_Source_Kubernetes)(nil), + (*SettingsSpec_SecretOptions_Source_Vault)(nil), + (*SettingsSpec_SecretOptions_Source_Directory)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes[39].OneofWrappers = []any{ (*GlooOptions_AWSOptions_EnableCredentialsDiscovey)(nil), (*GlooOptions_AWSOptions_ServiceAccountCredentials)(nil), } @@ -3266,9 +4798,9 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDesc)), NumEnums: 2, - NumMessages: 25, + NumMessages: 46, NumExtensions: 0, NumServices: 0, }, @@ -3278,7 +4810,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_init() { MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_settings_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/settings.pb.hash.go b/pkg/api/gloo.solo.io/v1/settings.pb.hash.go index a5f97232d..7e3173849 100644 --- a/pkg/api/gloo.solo.io/v1/settings.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/settings.pb.hash.go @@ -10,8 +10,10 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" + + consul "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/consul" ) // ensure the imports are used @@ -23,9 +25,15 @@ var ( _ = fnv.New64 _ = hashstructure.Hash _ = new(safe_hasher.SafeHasher) + + _ = consul.ConsulConsistencyModes(0) ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *SettingsSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -50,15 +58,41 @@ func (m *SettingsSpec) Hash(hasher hash.Hash64) (uint64, error) { } + if h, ok := interface{}(m.GetSecretOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSecretOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SecretOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + if h, ok := interface{}(m.GetRefreshRate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RefreshRate")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRefreshRate(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRefreshRate(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RefreshRate")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -75,168 +109,240 @@ func (m *SettingsSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetKnative()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Knative")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetKnative(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetKnative(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Knative")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetDiscovery()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Discovery")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDiscovery(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDiscovery(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Discovery")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetGloo()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Gloo")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetGloo(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetGloo(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Gloo")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetGateway()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Gateway")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetGateway(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetGateway(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Gateway")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetConsul()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Consul")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConsul(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConsul(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Consul")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetConsulDiscovery()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConsulDiscovery")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConsulDiscovery(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConsulDiscovery(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ConsulDiscovery")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetKubernetes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Kubernetes")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetKubernetes(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetKubernetes(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Kubernetes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetExtensions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetExtensions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetExtensions(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetRatelimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ratelimit")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRatelimit(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRatelimit(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Ratelimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetRatelimitServer()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RatelimitServer")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRatelimitServer(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRatelimitServer(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RatelimitServer")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetRbac()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Rbac")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRbac(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRbac(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Rbac")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetExtauth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extauth")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetExtauth(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetExtauth(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Extauth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -249,14 +355,20 @@ func (m *SettingsSpec) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -275,32 +387,128 @@ func (m *SettingsSpec) Hash(hasher hash.Hash64) (uint64, error) { } + if h, ok := interface{}(m.GetCachingServer()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CachingServer")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCachingServer(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CachingServer")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + if h, ok := interface{}(m.GetObservabilityOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ObservabilityOptions")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetObservabilityOptions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetObservabilityOptions(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ObservabilityOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetUpstreamOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UpstreamOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUpstreamOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UpstreamOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetConsoleOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConsoleOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConsoleOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConsoleOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtProc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ExtProc")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetUpstreamOptions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetExtProc(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ExtProc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetWatchNamespaceSelectors() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } } } + } switch m.ConfigSource.(type) { @@ -308,14 +516,20 @@ func (m *SettingsSpec) Hash(hasher hash.Hash64) (uint64, error) { case *SettingsSpec_KubernetesConfigSource: if h, ok := interface{}(m.GetKubernetesConfigSource()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("KubernetesConfigSource")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetKubernetesConfigSource(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetKubernetesConfigSource(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("KubernetesConfigSource")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -324,14 +538,20 @@ func (m *SettingsSpec) Hash(hasher hash.Hash64) (uint64, error) { case *SettingsSpec_DirectoryConfigSource: if h, ok := interface{}(m.GetDirectoryConfigSource()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DirectoryConfigSource")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDirectoryConfigSource(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDirectoryConfigSource(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DirectoryConfigSource")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -340,14 +560,20 @@ func (m *SettingsSpec) Hash(hasher hash.Hash64) (uint64, error) { case *SettingsSpec_ConsulKvSource: if h, ok := interface{}(m.GetConsulKvSource()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConsulKvSource")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConsulKvSource(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConsulKvSource(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ConsulKvSource")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -360,14 +586,20 @@ func (m *SettingsSpec) Hash(hasher hash.Hash64) (uint64, error) { case *SettingsSpec_KubernetesSecretSource: if h, ok := interface{}(m.GetKubernetesSecretSource()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("KubernetesSecretSource")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetKubernetesSecretSource(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetKubernetesSecretSource(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("KubernetesSecretSource")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -376,14 +608,20 @@ func (m *SettingsSpec) Hash(hasher hash.Hash64) (uint64, error) { case *SettingsSpec_VaultSecretSource: if h, ok := interface{}(m.GetVaultSecretSource()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("VaultSecretSource")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetVaultSecretSource(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetVaultSecretSource(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("VaultSecretSource")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -392,14 +630,20 @@ func (m *SettingsSpec) Hash(hasher hash.Hash64) (uint64, error) { case *SettingsSpec_DirectorySecretSource: if h, ok := interface{}(m.GetDirectorySecretSource()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DirectorySecretSource")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDirectorySecretSource(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDirectorySecretSource(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DirectorySecretSource")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -412,14 +656,20 @@ func (m *SettingsSpec) Hash(hasher hash.Hash64) (uint64, error) { case *SettingsSpec_KubernetesArtifactSource: if h, ok := interface{}(m.GetKubernetesArtifactSource()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("KubernetesArtifactSource")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetKubernetesArtifactSource(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetKubernetesArtifactSource(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("KubernetesArtifactSource")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -428,14 +678,20 @@ func (m *SettingsSpec) Hash(hasher hash.Hash64) (uint64, error) { case *SettingsSpec_DirectoryArtifactSource: if h, ok := interface{}(m.GetDirectoryArtifactSource()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DirectoryArtifactSource")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDirectoryArtifactSource(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDirectoryArtifactSource(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DirectoryArtifactSource")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -444,14 +700,20 @@ func (m *SettingsSpec) Hash(hasher hash.Hash64) (uint64, error) { case *SettingsSpec_ConsulKvArtifactSource: if h, ok := interface{}(m.GetConsulKvArtifactSource()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConsulKvArtifactSource")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConsulKvArtifactSource(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConsulKvArtifactSource(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ConsulKvArtifactSource")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -463,7 +725,11 @@ func (m *SettingsSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function -func (m *UpstreamOptions) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *LabelSelector) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -471,29 +737,66 @@ func (m *UpstreamOptions) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.UpstreamOptions")); err != nil { + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.LabelSelector")); err != nil { return 0, err } - if h, ok := interface{}(m.GetSslParameters()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetMatchLabels() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() } - } else { - if val, err := hashstructure.Hash(m.GetSslParameters(), nil); err != nil { + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { return 0, err + } + + } + + for _, v := range m.GetMatchExpressions() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } } } + } return hasher.Sum64(), nil } // Hash function -func (m *GlooOptions) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *LabelSelectorRequirement) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -501,69 +804,192 @@ func (m *GlooOptions) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.GlooOptions")); err != nil { + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.LabelSelectorRequirement")); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetXdsBindAddr())); err != nil { + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { return 0, err } - if _, err = hasher.Write([]byte(m.GetValidationBindAddr())); err != nil { + if _, err = hasher.Write([]byte(m.GetOperator())); err != nil { return 0, err } - if h, ok := interface{}(m.GetCircuitBreakers()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetCircuitBreakers(), nil); err != nil { + for _, v := range m.GetValues() { + + if _, err = hasher.Write([]byte(v)); err != nil { return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } } + } - if h, ok := interface{}(m.GetEndpointsWarmingTimeout()).(safe_hasher.SafeHasher); ok { + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UpstreamOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.UpstreamOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSslParameters()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslParameters")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetEndpointsWarmingTimeout(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSslParameters(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SslParameters")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - if h, ok := interface{}(m.GetAwsOptions()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetGlobalAnnotations() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *GlooOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.GlooOptions")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetXdsBindAddr())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetValidationBindAddr())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCircuitBreakers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CircuitBreakers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAwsOptions(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCircuitBreakers(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("CircuitBreakers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEndpointsWarmingTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EndpointsWarmingTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEndpointsWarmingTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EndpointsWarmingTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAwsOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AwsOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAwsOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AwsOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetInvalidConfigPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InvalidConfigPolicy")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetInvalidConfigPolicy(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetInvalidConfigPolicy(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("InvalidConfigPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -575,42 +1001,60 @@ func (m *GlooOptions) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetDisableGrpcWeb()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisableGrpcWeb")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDisableGrpcWeb(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDisableGrpcWeb(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DisableGrpcWeb")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetDisableProxyGarbageCollection()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisableProxyGarbageCollection")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDisableProxyGarbageCollection(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDisableProxyGarbageCollection(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DisableProxyGarbageCollection")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetRegexMaxProgramSize()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RegexMaxProgramSize")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRegexMaxProgramSize(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRegexMaxProgramSize(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RegexMaxProgramSize")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -621,28 +1065,184 @@ func (m *GlooOptions) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetEnableRestEds()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnableRestEds")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetEnableRestEds(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetEnableRestEds(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("EnableRestEds")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetFailoverUpstreamDnsPollingInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FailoverUpstreamDnsPollingInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFailoverUpstreamDnsPollingInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FailoverUpstreamDnsPollingInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRemoveUnusedFilters()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RemoveUnusedFilters")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetFailoverUpstreamDnsPollingInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRemoveUnusedFilters(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RemoveUnusedFilters")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetProxyDebugBindAddr())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetLogTransformationRequestResponseInfo()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LogTransformationRequestResponseInfo")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLogTransformationRequestResponseInfo(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LogTransformationRequestResponseInfo")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTransformationEscapeCharacters()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TransformationEscapeCharacters")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTransformationEscapeCharacters(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TransformationEscapeCharacters")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetIstioOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IstioOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIstioOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IstioOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEnableAutoWebsocketTransformationPassthrough()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnableAutoWebsocketTransformationPassthrough")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnableAutoWebsocketTransformationPassthrough(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EnableAutoWebsocketTransformationPassthrough")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *VirtualServiceOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.VirtualServiceOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetOneWayTls()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OneWayTls")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOneWayTls(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OneWayTls")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -652,6 +1252,10 @@ func (m *GlooOptions) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GatewayOptions) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -669,14 +1273,20 @@ func (m *GatewayOptions) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetValidation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Validation")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetValidation(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetValidation(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Validation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -686,14 +1296,154 @@ func (m *GatewayOptions) Hash(hasher hash.Hash64) (uint64, error) { if err != nil { return 0, err } - - err = binary.Write(hasher, binary.LittleEndian, m.GetAlwaysSortRouteTableRoutes()) - if err != nil { + + err = binary.Write(hasher, binary.LittleEndian, m.GetAlwaysSortRouteTableRoutes()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetCompressedProxySpec()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetVirtualServiceOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("VirtualServiceOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetVirtualServiceOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("VirtualServiceOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPersistProxySpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PersistProxySpec")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPersistProxySpec(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PersistProxySpec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEnableGatewayController()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnableGatewayController")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnableGatewayController(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EnableGatewayController")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetIsolateVirtualHostsBySslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IsolateVirtualHostsBySslConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIsolateVirtualHostsBySslConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IsolateVirtualHostsBySslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTranslateEmptyGateways()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TranslateEmptyGateways")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTranslateEmptyGateways(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TranslateEmptyGateways")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ConsoleOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ConsoleOptions")); err != nil { return 0, err } - err = binary.Write(hasher, binary.LittleEndian, m.GetCompressedProxySpec()) - if err != nil { + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *GraphqlOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.GraphqlOptions")); err != nil { return 0, err } @@ -701,6 +1451,10 @@ func (m *GatewayOptions) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *SettingsStatus) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -733,14 +1487,20 @@ func (m *SettingsStatus) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -760,23 +1520,136 @@ func (m *SettingsStatus) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SettingsNamespacedStatuses) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SettingsSpec_SecretOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_SecretOptions")); err != nil { + return 0, err + } + + for _, v := range m.GetSources() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } } } + } return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *SettingsSpec_KubernetesCrds) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -793,6 +1666,10 @@ func (m *SettingsSpec_KubernetesCrds) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *SettingsSpec_KubernetesSecrets) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -809,6 +1686,10 @@ func (m *SettingsSpec_KubernetesSecrets) Hash(hasher hash.Hash64) (uint64, error } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *SettingsSpec_VaultSecrets) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -850,14 +1731,20 @@ func (m *SettingsSpec_VaultSecrets) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetInsecure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Insecure")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetInsecure(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetInsecure(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Insecure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -867,10 +1754,183 @@ func (m *SettingsSpec_VaultSecrets) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + if _, err = hasher.Write([]byte(m.GetPathPrefix())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTlsConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TlsConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTlsConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TlsConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.AuthMethod.(type) { + + case *SettingsSpec_VaultSecrets_AccessToken: + + if _, err = hasher.Write([]byte(m.GetAccessToken())); err != nil { + return 0, err + } + + case *SettingsSpec_VaultSecrets_Aws: + + if h, ok := interface{}(m.GetAws()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Aws")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAws(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Aws")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SettingsSpec_VaultAwsAuth) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_VaultAwsAuth")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetVaultRole())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetRegion())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetIamServerIdHeader())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetMountPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetAccessKeyId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetSecretAccessKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetSessionToken())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetLeaseIncrement()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SettingsSpec_VaultTlsConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_VaultTlsConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetCaCert())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetCaPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetClientCert())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetClientKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetTlsServerName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetInsecure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Insecure")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInsecure(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Insecure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *SettingsSpec_ConsulKv) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -891,6 +1951,10 @@ func (m *SettingsSpec_ConsulKv) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *SettingsSpec_KubernetesConfigmaps) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -907,6 +1971,10 @@ func (m *SettingsSpec_KubernetesConfigmaps) Hash(hasher hash.Hash64) (uint64, er } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *SettingsSpec_Directory) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -927,6 +1995,10 @@ func (m *SettingsSpec_Directory) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *SettingsSpec_KnativeOptions) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -955,6 +2027,10 @@ func (m *SettingsSpec_KnativeOptions) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *SettingsSpec_DiscoveryOptions) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -967,15 +2043,59 @@ func (m *SettingsSpec_DiscoveryOptions) Hash(hasher hash.Hash64) (uint64, error) return 0, err } - err = binary.Write(hasher, binary.LittleEndian, m.GetFdsMode()) - if err != nil { - return 0, err + err = binary.Write(hasher, binary.LittleEndian, m.GetFdsMode()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetUdsOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UdsOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUdsOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UdsOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFdsOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FdsOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFdsOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FdsOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } } return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *SettingsSpec_ConsulConfiguration) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1025,42 +2145,60 @@ func (m *SettingsSpec_ConsulConfiguration) Hash(hasher hash.Hash64) (uint64, err } if h, ok := interface{}(m.GetInsecureSkipVerify()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InsecureSkipVerify")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetInsecureSkipVerify(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetInsecureSkipVerify(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("InsecureSkipVerify")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetWaitTime()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("WaitTime")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetWaitTime(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetWaitTime(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("WaitTime")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetServiceDiscovery()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServiceDiscovery")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetServiceDiscovery(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetServiceDiscovery(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ServiceDiscovery")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1075,14 +2213,20 @@ func (m *SettingsSpec_ConsulConfiguration) Hash(hasher hash.Hash64) (uint64, err } if h, ok := interface{}(m.GetDnsPollingInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DnsPollingInterval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDnsPollingInterval(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDnsPollingInterval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DnsPollingInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1092,6 +2236,10 @@ func (m *SettingsSpec_ConsulConfiguration) Hash(hasher hash.Hash64) (uint64, err } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *SettingsSpec_ConsulUpstreamDiscoveryConfiguration) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1114,14 +2262,20 @@ func (m *SettingsSpec_ConsulUpstreamDiscoveryConfiguration) Hash(hasher hash.Has } if h, ok := interface{}(m.GetRootCa()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RootCa")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRootCa(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRootCa(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RootCa")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1132,10 +2286,67 @@ func (m *SettingsSpec_ConsulUpstreamDiscoveryConfiguration) Hash(hasher hash.Has return 0, err } + err = binary.Write(hasher, binary.LittleEndian, m.GetConsistencyMode()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetQueryOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("QueryOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetQueryOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("QueryOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetServiceTagsAllowlist() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetEdsBlockingQueries()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EdsBlockingQueries")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEdsBlockingQueries(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EdsBlockingQueries")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *SettingsSpec_KubernetesConfiguration) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1149,24 +2360,266 @@ func (m *SettingsSpec_KubernetesConfiguration) Hash(hasher hash.Hash64) (uint64, } if h, ok := interface{}(m.GetRateLimits()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimits")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRateLimits(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RateLimits")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SettingsSpec_ObservabilityOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_ObservabilityOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetGrafanaIntegration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrafanaIntegration")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrafanaIntegration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrafanaIntegration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetConfigStatusMetricLabels() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SettingsSpec_SecretOptions_Source) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_SecretOptions_Source")); err != nil { + return 0, err + } + + switch m.Source.(type) { + + case *SettingsSpec_SecretOptions_Source_Kubernetes: + + if h, ok := interface{}(m.GetKubernetes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Kubernetes")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetKubernetes(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Kubernetes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *SettingsSpec_SecretOptions_Source_Vault: + + if h, ok := interface{}(m.GetVault()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Vault")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetVault(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Vault")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *SettingsSpec_SecretOptions_Source_Directory: + + if h, ok := interface{}(m.GetDirectory()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Directory")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDirectory(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Directory")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SettingsSpec_DiscoveryOptions_UdsOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_DiscoveryOptions_UdsOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Enabled")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRateLimits(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetEnabled(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Enabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetWatchLabels() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { return 0, err } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err } + } return hasher.Sum64(), nil } // Hash function -func (m *SettingsSpec_ObservabilityOptions) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SettingsSpec_DiscoveryOptions_FdsOptions) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -1174,28 +2627,18 @@ func (m *SettingsSpec_ObservabilityOptions) Hash(hasher hash.Hash64) (uint64, er hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_ObservabilityOptions")); err != nil { + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_DiscoveryOptions_FdsOptions")); err != nil { return 0, err } - if h, ok := interface{}(m.GetGrafanaIntegration()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetGrafanaIntegration(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1220,6 +2663,10 @@ func (m *SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions) Hash(hasher h } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *SettingsSpec_KubernetesConfiguration_RateLimits) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1246,6 +2693,10 @@ func (m *SettingsSpec_KubernetesConfiguration_RateLimits) Hash(hasher hash.Hash6 } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *SettingsSpec_ObservabilityOptions_GrafanaIntegration) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1259,23 +2710,84 @@ func (m *SettingsSpec_ObservabilityOptions_GrafanaIntegration) Hash(hasher hash. } if h, ok := interface{}(m.GetDefaultDashboardFolderId()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DefaultDashboardFolderId")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDefaultDashboardFolderId(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDefaultDashboardFolderId(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DefaultDashboardFolderId")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetDashboardPrefix())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetExtraMetricQueryParameters())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SettingsSpec_ObservabilityOptions_MetricLabels) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_ObservabilityOptions_MetricLabels")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetLabelToPath() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte(k)); err != nil { return 0, err } + + result = result ^ innerHash.Sum64() } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + } return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GlooOptions_AWSOptions) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1288,6 +2800,66 @@ func (m *GlooOptions_AWSOptions) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + if h, ok := interface{}(m.GetPropagateOriginalRouting()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PropagateOriginalRouting")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPropagateOriginalRouting(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PropagateOriginalRouting")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCredentialRefreshDelay()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CredentialRefreshDelay")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCredentialRefreshDelay(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CredentialRefreshDelay")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFallbackToFirstFunction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FallbackToFirstFunction")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFallbackToFirstFunction(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FallbackToFirstFunction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + switch m.CredentialsFetcher.(type) { case *GlooOptions_AWSOptions_EnableCredentialsDiscovey: @@ -1300,14 +2872,20 @@ func (m *GlooOptions_AWSOptions) Hash(hasher hash.Hash64) (uint64, error) { case *GlooOptions_AWSOptions_ServiceAccountCredentials: if h, ok := interface{}(m.GetServiceAccountCredentials()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServiceAccountCredentials")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetServiceAccountCredentials(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetServiceAccountCredentials(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ServiceAccountCredentials")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1319,6 +2897,10 @@ func (m *GlooOptions_AWSOptions) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GlooOptions_InvalidConfigPolicy) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1349,6 +2931,90 @@ func (m *GlooOptions_InvalidConfigPolicy) Hash(hasher hash.Hash64) (uint64, erro } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *GlooOptions_IstioOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.GlooOptions_IstioOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAppendXForwardedHost()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AppendXForwardedHost")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAppendXForwardedHost(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AppendXForwardedHost")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEnableAutoMtls()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnableAutoMtls")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnableAutoMtls(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EnableAutoMtls")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEnableIntegration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnableIntegration")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnableIntegration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EnableIntegration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *GatewayOptions_ValidationOptions) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -1379,70 +3045,160 @@ func (m *GatewayOptions_ValidationOptions) Hash(hasher hash.Hash64) (uint64, err } if h, ok := interface{}(m.GetAlwaysAccept()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AlwaysAccept")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAlwaysAccept(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAlwaysAccept(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AlwaysAccept")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetAllowWarnings()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowWarnings")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAllowWarnings(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAllowWarnings(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("AllowWarnings")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetWarnRouteShortCircuiting()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("WarnRouteShortCircuiting")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetWarnRouteShortCircuiting(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetWarnRouteShortCircuiting(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("WarnRouteShortCircuiting")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetDisableTransformationValidation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisableTransformationValidation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisableTransformationValidation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisableTransformationValidation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetValidationServerGrpcMaxSizeBytes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ValidationServerGrpcMaxSizeBytes")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValidationServerGrpcMaxSizeBytes(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ValidationServerGrpcMaxSizeBytes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetServerEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServerEnabled")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetServerEnabled(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ServerEnabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetWarnMissingTlsSecret()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("WarnMissingTlsSecret")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDisableTransformationValidation(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetWarnMissingTlsSecret(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("WarnMissingTlsSecret")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - if h, ok := interface{}(m.GetValidationServerGrpcMaxSize()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetFullEnvoyValidation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FullEnvoyValidation")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetValidationServerGrpcMaxSize(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetFullEnvoyValidation(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("FullEnvoyValidation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -1450,3 +3206,23 @@ func (m *GatewayOptions_ValidationOptions) Hash(hasher hash.Hash64) (uint64, err return hasher.Sum64(), nil } + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *GraphqlOptions_SchemaChangeValidationOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.GraphqlOptions_SchemaChangeValidationOptions")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/settings.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/settings.pb.uniquehash.go new file mode 100644 index 000000000..0c2fe0638 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/settings.pb.uniquehash.go @@ -0,0 +1,3501 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/settings.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" + + consul "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/consul" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) + + _ = consul.ConsulConsistencyModes(0) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DiscoveryNamespace")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDiscoveryNamespace())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("WatchNamespaces")); err != nil { + return 0, err + } + for i, v := range m.GetWatchNamespaces() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetSecretOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSecretOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SecretOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRefreshRate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RefreshRate")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRefreshRate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RefreshRate")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("DevMode")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDevMode()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Linkerd")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetLinkerd()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetKnative()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Knative")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetKnative(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Knative")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDiscovery()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Discovery")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDiscovery(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Discovery")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetGloo()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Gloo")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGloo(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Gloo")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetGateway()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Gateway")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGateway(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Gateway")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetConsul()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Consul")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConsul(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Consul")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetConsulDiscovery()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConsulDiscovery")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConsulDiscovery(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConsulDiscovery")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetKubernetes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Kubernetes")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetKubernetes(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Kubernetes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtensions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtensions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRatelimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ratelimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRatelimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Ratelimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRatelimitServer()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RatelimitServer")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRatelimitServer(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RatelimitServer")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRbac()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Rbac")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRbac(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Rbac")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtauth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extauth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtauth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Extauth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetNamedExtauth() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetCachingServer()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CachingServer")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCachingServer(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CachingServer")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetObservabilityOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ObservabilityOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetObservabilityOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ObservabilityOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetUpstreamOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UpstreamOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUpstreamOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UpstreamOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetConsoleOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConsoleOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConsoleOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConsoleOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtProc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ExtProc")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtProc(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ExtProc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("WatchNamespaceSelectors")); err != nil { + return 0, err + } + for i, v := range m.GetWatchNamespaceSelectors() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.ConfigSource.(type) { + + case *SettingsSpec_KubernetesConfigSource: + + if h, ok := interface{}(m.GetKubernetesConfigSource()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("KubernetesConfigSource")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetKubernetesConfigSource(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("KubernetesConfigSource")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *SettingsSpec_DirectoryConfigSource: + + if h, ok := interface{}(m.GetDirectoryConfigSource()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DirectoryConfigSource")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDirectoryConfigSource(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DirectoryConfigSource")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *SettingsSpec_ConsulKvSource: + + if h, ok := interface{}(m.GetConsulKvSource()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConsulKvSource")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConsulKvSource(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConsulKvSource")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.SecretSource.(type) { + + case *SettingsSpec_KubernetesSecretSource: + + if h, ok := interface{}(m.GetKubernetesSecretSource()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("KubernetesSecretSource")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetKubernetesSecretSource(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("KubernetesSecretSource")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *SettingsSpec_VaultSecretSource: + + if h, ok := interface{}(m.GetVaultSecretSource()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("VaultSecretSource")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetVaultSecretSource(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("VaultSecretSource")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *SettingsSpec_DirectorySecretSource: + + if h, ok := interface{}(m.GetDirectorySecretSource()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DirectorySecretSource")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDirectorySecretSource(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DirectorySecretSource")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.ArtifactSource.(type) { + + case *SettingsSpec_KubernetesArtifactSource: + + if h, ok := interface{}(m.GetKubernetesArtifactSource()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("KubernetesArtifactSource")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetKubernetesArtifactSource(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("KubernetesArtifactSource")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *SettingsSpec_DirectoryArtifactSource: + + if h, ok := interface{}(m.GetDirectoryArtifactSource()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DirectoryArtifactSource")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDirectoryArtifactSource(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DirectoryArtifactSource")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *SettingsSpec_ConsulKvArtifactSource: + + if h, ok := interface{}(m.GetConsulKvArtifactSource()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConsulKvArtifactSource")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConsulKvArtifactSource(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConsulKvArtifactSource")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *LabelSelector) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.LabelSelector")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetMatchLabels() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("MatchExpressions")); err != nil { + return 0, err + } + for i, v := range m.GetMatchExpressions() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *LabelSelectorRequirement) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.LabelSelectorRequirement")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Operator")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetOperator())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Values")); err != nil { + return 0, err + } + for i, v := range m.GetValues() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.UpstreamOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetSslParameters()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslParameters")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslParameters(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslParameters")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetGlobalAnnotations() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GlooOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.GlooOptions")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("XdsBindAddr")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetXdsBindAddr())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ValidationBindAddr")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetValidationBindAddr())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetCircuitBreakers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CircuitBreakers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCircuitBreakers(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CircuitBreakers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEndpointsWarmingTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EndpointsWarmingTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEndpointsWarmingTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EndpointsWarmingTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAwsOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AwsOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAwsOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AwsOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetInvalidConfigPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InvalidConfigPolicy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInvalidConfigPolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("InvalidConfigPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("DisableKubernetesDestinations")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetDisableKubernetesDestinations()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDisableGrpcWeb()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisableGrpcWeb")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisableGrpcWeb(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisableGrpcWeb")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDisableProxyGarbageCollection()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisableProxyGarbageCollection")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisableProxyGarbageCollection(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisableProxyGarbageCollection")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRegexMaxProgramSize()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RegexMaxProgramSize")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRegexMaxProgramSize(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RegexMaxProgramSize")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RestXdsBindAddr")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRestXdsBindAddr())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetEnableRestEds()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnableRestEds")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnableRestEds(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EnableRestEds")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFailoverUpstreamDnsPollingInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FailoverUpstreamDnsPollingInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFailoverUpstreamDnsPollingInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FailoverUpstreamDnsPollingInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRemoveUnusedFilters()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RemoveUnusedFilters")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRemoveUnusedFilters(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RemoveUnusedFilters")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("ProxyDebugBindAddr")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetProxyDebugBindAddr())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetLogTransformationRequestResponseInfo()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LogTransformationRequestResponseInfo")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLogTransformationRequestResponseInfo(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LogTransformationRequestResponseInfo")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTransformationEscapeCharacters()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TransformationEscapeCharacters")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTransformationEscapeCharacters(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TransformationEscapeCharacters")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetIstioOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IstioOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIstioOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IstioOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEnableAutoWebsocketTransformationPassthrough()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnableAutoWebsocketTransformationPassthrough")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnableAutoWebsocketTransformationPassthrough(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EnableAutoWebsocketTransformationPassthrough")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *VirtualServiceOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.VirtualServiceOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetOneWayTls()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OneWayTls")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOneWayTls(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OneWayTls")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GatewayOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.GatewayOptions")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ValidationServerAddr")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetValidationServerAddr())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetValidation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Validation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValidation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Validation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("ReadGatewaysFromAllNamespaces")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetReadGatewaysFromAllNamespaces()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AlwaysSortRouteTableRoutes")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAlwaysSortRouteTableRoutes()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CompressedProxySpec")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetCompressedProxySpec()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetVirtualServiceOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("VirtualServiceOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetVirtualServiceOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("VirtualServiceOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPersistProxySpec()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PersistProxySpec")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPersistProxySpec(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PersistProxySpec")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEnableGatewayController()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnableGatewayController")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnableGatewayController(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EnableGatewayController")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetIsolateVirtualHostsBySslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IsolateVirtualHostsBySslConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIsolateVirtualHostsBySslConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IsolateVirtualHostsBySslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTranslateEmptyGateways()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TranslateEmptyGateways")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTranslateEmptyGateways(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TranslateEmptyGateways")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ConsoleOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.ConsoleOptions")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GraphqlOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.GraphqlOptions")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsStatus")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("State")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Reason")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ReportedBy")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsNamespacedStatuses) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec_SecretOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_SecretOptions")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Sources")); err != nil { + return 0, err + } + for i, v := range m.GetSources() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec_KubernetesCrds) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_KubernetesCrds")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec_KubernetesSecrets) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_KubernetesSecrets")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec_VaultSecrets) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_VaultSecrets")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Token")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetToken())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Address")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAddress())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CaCert")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCaCert())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CaPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCaPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClientCert")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClientCert())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClientKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClientKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TlsServerName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTlsServerName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetInsecure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Insecure")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInsecure(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Insecure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("RootKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRootKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("PathPrefix")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPathPrefix())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTlsConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TlsConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTlsConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TlsConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.AuthMethod.(type) { + + case *SettingsSpec_VaultSecrets_AccessToken: + + if _, err = hasher.Write([]byte("AccessToken")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAccessToken())); err != nil { + return 0, err + } + + case *SettingsSpec_VaultSecrets_Aws: + + if h, ok := interface{}(m.GetAws()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Aws")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAws(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Aws")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec_VaultAwsAuth) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_VaultAwsAuth")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("VaultRole")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetVaultRole())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Region")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRegion())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("IamServerIdHeader")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetIamServerIdHeader())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MountPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetMountPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AccessKeyId")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAccessKeyId())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SecretAccessKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSecretAccessKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SessionToken")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSessionToken())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("LeaseIncrement")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetLeaseIncrement()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec_VaultTlsConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_VaultTlsConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CaCert")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCaCert())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CaPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCaPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClientCert")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClientCert())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClientKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClientKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TlsServerName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTlsServerName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetInsecure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Insecure")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInsecure(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Insecure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec_ConsulKv) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_ConsulKv")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RootKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRootKey())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec_KubernetesConfigmaps) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_KubernetesConfigmaps")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec_Directory) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_Directory")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Directory")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDirectory())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec_KnativeOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_KnativeOptions")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ClusterIngressProxyAddress")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClusterIngressProxyAddress())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("KnativeExternalProxyAddress")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKnativeExternalProxyAddress())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("KnativeInternalProxyAddress")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKnativeInternalProxyAddress())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec_DiscoveryOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_DiscoveryOptions")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("FdsMode")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetFdsMode()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetUdsOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UdsOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUdsOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UdsOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFdsOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FdsOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFdsOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FdsOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec_ConsulConfiguration) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_ConsulConfiguration")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Address")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetAddress())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Datacenter")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDatacenter())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Username")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetUsername())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Password")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPassword())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Token")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetToken())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CaFile")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCaFile())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CaPath")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCaPath())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CertFile")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCertFile())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("KeyFile")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKeyFile())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetInsecureSkipVerify()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InsecureSkipVerify")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInsecureSkipVerify(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("InsecureSkipVerify")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetWaitTime()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("WaitTime")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWaitTime(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("WaitTime")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetServiceDiscovery()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServiceDiscovery")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetServiceDiscovery(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ServiceDiscovery")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("HttpAddress")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHttpAddress())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DnsAddress")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDnsAddress())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDnsPollingInterval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DnsPollingInterval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDnsPollingInterval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DnsPollingInterval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec_ConsulUpstreamDiscoveryConfiguration) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_ConsulUpstreamDiscoveryConfiguration")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("UseTlsTagging")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetUseTlsTagging()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TlsTagName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTlsTagName())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRootCa()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RootCa")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRootCa(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RootCa")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("SplitTlsServices")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetSplitTlsServices()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ConsistencyMode")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetConsistencyMode()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetQueryOptions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("QueryOptions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetQueryOptions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("QueryOptions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("ServiceTagsAllowlist")); err != nil { + return 0, err + } + for i, v := range m.GetServiceTagsAllowlist() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetEdsBlockingQueries()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EdsBlockingQueries")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEdsBlockingQueries(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EdsBlockingQueries")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec_KubernetesConfiguration) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_KubernetesConfiguration")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRateLimits()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimits")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRateLimits(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RateLimits")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec_ObservabilityOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_ObservabilityOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetGrafanaIntegration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GrafanaIntegration")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGrafanaIntegration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GrafanaIntegration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetConfigStatusMetricLabels() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec_SecretOptions_Source) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_SecretOptions_Source")); err != nil { + return 0, err + } + + switch m.Source.(type) { + + case *SettingsSpec_SecretOptions_Source_Kubernetes: + + if h, ok := interface{}(m.GetKubernetes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Kubernetes")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetKubernetes(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Kubernetes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *SettingsSpec_SecretOptions_Source_Vault: + + if h, ok := interface{}(m.GetVault()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Vault")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetVault(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Vault")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *SettingsSpec_SecretOptions_Source_Directory: + + if h, ok := interface{}(m.GetDirectory()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Directory")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDirectory(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Directory")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec_DiscoveryOptions_UdsOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_DiscoveryOptions_UdsOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Enabled")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnabled(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Enabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetWatchLabels() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec_DiscoveryOptions_FdsOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_DiscoveryOptions_FdsOptions")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_ConsulConfiguration_ServiceDiscoveryOptions")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DataCenters")); err != nil { + return 0, err + } + for i, v := range m.GetDataCenters() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec_KubernetesConfiguration_RateLimits) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_KubernetesConfiguration_RateLimits")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("QPS")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetQPS()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Burst")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetBurst()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec_ObservabilityOptions_GrafanaIntegration) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_ObservabilityOptions_GrafanaIntegration")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDefaultDashboardFolderId()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DefaultDashboardFolderId")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDefaultDashboardFolderId(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DefaultDashboardFolderId")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("DashboardPrefix")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDashboardPrefix())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ExtraMetricQueryParameters")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetExtraMetricQueryParameters())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SettingsSpec_ObservabilityOptions_MetricLabels) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SettingsSpec_ObservabilityOptions_MetricLabels")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetLabelToPath() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GlooOptions_AWSOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.GlooOptions_AWSOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPropagateOriginalRouting()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PropagateOriginalRouting")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPropagateOriginalRouting(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PropagateOriginalRouting")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCredentialRefreshDelay()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CredentialRefreshDelay")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCredentialRefreshDelay(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CredentialRefreshDelay")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFallbackToFirstFunction()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FallbackToFirstFunction")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFallbackToFirstFunction(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FallbackToFirstFunction")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.CredentialsFetcher.(type) { + + case *GlooOptions_AWSOptions_EnableCredentialsDiscovey: + + if _, err = hasher.Write([]byte("EnableCredentialsDiscovey")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetEnableCredentialsDiscovey()) + if err != nil { + return 0, err + } + + case *GlooOptions_AWSOptions_ServiceAccountCredentials: + + if h, ok := interface{}(m.GetServiceAccountCredentials()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServiceAccountCredentials")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetServiceAccountCredentials(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ServiceAccountCredentials")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GlooOptions_InvalidConfigPolicy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.GlooOptions_InvalidConfigPolicy")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ReplaceInvalidRoutes")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetReplaceInvalidRoutes()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("InvalidRouteResponseCode")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetInvalidRouteResponseCode()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("InvalidRouteResponseBody")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetInvalidRouteResponseBody())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GlooOptions_IstioOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.GlooOptions_IstioOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAppendXForwardedHost()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AppendXForwardedHost")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAppendXForwardedHost(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AppendXForwardedHost")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEnableAutoMtls()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnableAutoMtls")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnableAutoMtls(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EnableAutoMtls")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetEnableIntegration()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EnableIntegration")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEnableIntegration(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EnableIntegration")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GatewayOptions_ValidationOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.GatewayOptions_ValidationOptions")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ProxyValidationServerAddr")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetProxyValidationServerAddr())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ValidationWebhookTlsCert")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetValidationWebhookTlsCert())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ValidationWebhookTlsKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetValidationWebhookTlsKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("IgnoreGlooValidationFailure")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetIgnoreGlooValidationFailure()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetAlwaysAccept()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AlwaysAccept")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAlwaysAccept(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AlwaysAccept")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetAllowWarnings()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowWarnings")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAllowWarnings(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AllowWarnings")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetWarnRouteShortCircuiting()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("WarnRouteShortCircuiting")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWarnRouteShortCircuiting(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("WarnRouteShortCircuiting")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDisableTransformationValidation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisableTransformationValidation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisableTransformationValidation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisableTransformationValidation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetValidationServerGrpcMaxSizeBytes()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ValidationServerGrpcMaxSizeBytes")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetValidationServerGrpcMaxSizeBytes(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ValidationServerGrpcMaxSizeBytes")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetServerEnabled()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ServerEnabled")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetServerEnabled(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ServerEnabled")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetWarnMissingTlsSecret()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("WarnMissingTlsSecret")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWarnMissingTlsSecret(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("WarnMissingTlsSecret")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFullEnvoyValidation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FullEnvoyValidation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFullEnvoyValidation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FullEnvoyValidation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GraphqlOptions_SchemaChangeValidationOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.GraphqlOptions_SchemaChangeValidationOptions")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/ssl.pb.go b/pkg/api/gloo.solo.io/v1/ssl.pb.go deleted file mode 100644 index b3ec1cc6c..000000000 --- a/pkg/api/gloo.solo.io/v1/ssl.pb.go +++ /dev/null @@ -1,1023 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.6.1 -// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl.proto - -package v1 - -import ( - reflect "reflect" - sync "sync" - - proto "github.com/golang/protobuf/proto" - _ "github.com/solo-io/protoc-gen-ext/extproto" - core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -type SslParameters_ProtocolVersion int32 - -const ( - // Envoy will choose the optimal TLS version. - SslParameters_TLS_AUTO SslParameters_ProtocolVersion = 0 - // TLS 1.0 - SslParameters_TLSv1_0 SslParameters_ProtocolVersion = 1 - // TLS 1.1 - SslParameters_TLSv1_1 SslParameters_ProtocolVersion = 2 - // TLS 1.2 - SslParameters_TLSv1_2 SslParameters_ProtocolVersion = 3 - // TLS 1.3 - SslParameters_TLSv1_3 SslParameters_ProtocolVersion = 4 -) - -// Enum value maps for SslParameters_ProtocolVersion. -var ( - SslParameters_ProtocolVersion_name = map[int32]string{ - 0: "TLS_AUTO", - 1: "TLSv1_0", - 2: "TLSv1_1", - 3: "TLSv1_2", - 4: "TLSv1_3", - } - SslParameters_ProtocolVersion_value = map[string]int32{ - "TLS_AUTO": 0, - "TLSv1_0": 1, - "TLSv1_1": 2, - "TLSv1_2": 3, - "TLSv1_3": 4, - } -) - -func (x SslParameters_ProtocolVersion) Enum() *SslParameters_ProtocolVersion { - p := new(SslParameters_ProtocolVersion) - *p = x - return p -} - -func (x SslParameters_ProtocolVersion) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SslParameters_ProtocolVersion) Descriptor() protoreflect.EnumDescriptor { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_enumTypes[0].Descriptor() -} - -func (SslParameters_ProtocolVersion) Type() protoreflect.EnumType { - return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_enumTypes[0] -} - -func (x SslParameters_ProtocolVersion) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use SslParameters_ProtocolVersion.Descriptor instead. -func (SslParameters_ProtocolVersion) EnumDescriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_rawDescGZIP(), []int{5, 0} -} - -// SslConfig contains the options necessary to configure a virtual host or listener to use TLS termination -type SslConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to SslSecrets: - // *SslConfig_SecretRef - // *SslConfig_SslFiles - // *SslConfig_Sds - SslSecrets isSslConfig_SslSecrets `protobuf_oneof:"ssl_secrets"` - // optional. the SNI domains that should be considered for TLS connections - SniDomains []string `protobuf:"bytes,3,rep,name=sni_domains,json=sniDomains,proto3" json:"sni_domains,omitempty"` - // Verify that the Subject Alternative Name in the peer certificate is one of the specified values. - // note that a root_ca must be provided if this option is used. - VerifySubjectAltName []string `protobuf:"bytes,5,rep,name=verify_subject_alt_name,json=verifySubjectAltName,proto3" json:"verify_subject_alt_name,omitempty"` - Parameters *SslParameters `protobuf:"bytes,6,opt,name=parameters,proto3" json:"parameters,omitempty"` - // Set Application Level Protocol Negotiation - // If empty, defaults to ["h2", "http/1.1"]. - AlpnProtocols []string `protobuf:"bytes,7,rep,name=alpn_protocols,json=alpnProtocols,proto3" json:"alpn_protocols,omitempty"` - // If the SSL config has the ca.crt (root CA) provided, Gloo uses it to perform mTLS by default. - // Set oneWayTls to true to disable mTLS in favor of server-only TLS (one-way TLS), even if Gloo has the root CA. - // Defaults to false. - OneWayTls bool `protobuf:"varint,8,opt,name=one_way_tls,json=oneWayTls,proto3" json:"one_way_tls,omitempty"` -} - -func (x *SslConfig) Reset() { - *x = SslConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SslConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SslConfig) ProtoMessage() {} - -func (x *SslConfig) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SslConfig.ProtoReflect.Descriptor instead. -func (*SslConfig) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_rawDescGZIP(), []int{0} -} - -func (m *SslConfig) GetSslSecrets() isSslConfig_SslSecrets { - if m != nil { - return m.SslSecrets - } - return nil -} - -func (x *SslConfig) GetSecretRef() *core.ResourceRef { - if x, ok := x.GetSslSecrets().(*SslConfig_SecretRef); ok { - return x.SecretRef - } - return nil -} - -func (x *SslConfig) GetSslFiles() *SSLFiles { - if x, ok := x.GetSslSecrets().(*SslConfig_SslFiles); ok { - return x.SslFiles - } - return nil -} - -func (x *SslConfig) GetSds() *SDSConfig { - if x, ok := x.GetSslSecrets().(*SslConfig_Sds); ok { - return x.Sds - } - return nil -} - -func (x *SslConfig) GetSniDomains() []string { - if x != nil { - return x.SniDomains - } - return nil -} - -func (x *SslConfig) GetVerifySubjectAltName() []string { - if x != nil { - return x.VerifySubjectAltName - } - return nil -} - -func (x *SslConfig) GetParameters() *SslParameters { - if x != nil { - return x.Parameters - } - return nil -} - -func (x *SslConfig) GetAlpnProtocols() []string { - if x != nil { - return x.AlpnProtocols - } - return nil -} - -func (x *SslConfig) GetOneWayTls() bool { - if x != nil { - return x.OneWayTls - } - return false -} - -type isSslConfig_SslSecrets interface { - isSslConfig_SslSecrets() -} - -type SslConfig_SecretRef struct { - // SecretRef contains the secret ref to a gloo tls secret or a kubernetes tls secret. - // gloo tls secret can contain a root ca as well if verification is needed. - SecretRef *core.ResourceRef `protobuf:"bytes,1,opt,name=secret_ref,json=secretRef,proto3,oneof"` -} - -type SslConfig_SslFiles struct { - // SSLFiles reference paths to certificates which are local to the proxy - SslFiles *SSLFiles `protobuf:"bytes,2,opt,name=ssl_files,json=sslFiles,proto3,oneof"` -} - -type SslConfig_Sds struct { - // Use secret discovery service. - Sds *SDSConfig `protobuf:"bytes,4,opt,name=sds,proto3,oneof"` -} - -func (*SslConfig_SecretRef) isSslConfig_SslSecrets() {} - -func (*SslConfig_SslFiles) isSslConfig_SslSecrets() {} - -func (*SslConfig_Sds) isSslConfig_SslSecrets() {} - -// SSLFiles reference paths to certificates which can be read by the proxy off of its local filesystem -type SSLFiles struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TlsCert string `protobuf:"bytes,1,opt,name=tls_cert,json=tlsCert,proto3" json:"tls_cert,omitempty"` - TlsKey string `protobuf:"bytes,2,opt,name=tls_key,json=tlsKey,proto3" json:"tls_key,omitempty"` - // for client cert validation. optional - RootCa string `protobuf:"bytes,3,opt,name=root_ca,json=rootCa,proto3" json:"root_ca,omitempty"` -} - -func (x *SSLFiles) Reset() { - *x = SSLFiles{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SSLFiles) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SSLFiles) ProtoMessage() {} - -func (x *SSLFiles) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SSLFiles.ProtoReflect.Descriptor instead. -func (*SSLFiles) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_rawDescGZIP(), []int{1} -} - -func (x *SSLFiles) GetTlsCert() string { - if x != nil { - return x.TlsCert - } - return "" -} - -func (x *SSLFiles) GetTlsKey() string { - if x != nil { - return x.TlsKey - } - return "" -} - -func (x *SSLFiles) GetRootCa() string { - if x != nil { - return x.RootCa - } - return "" -} - -// SslConfig contains the options necessary to configure an upstream to use TLS origination -type UpstreamSslConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to SslSecrets: - // *UpstreamSslConfig_SecretRef - // *UpstreamSslConfig_SslFiles - // *UpstreamSslConfig_Sds - SslSecrets isUpstreamSslConfig_SslSecrets `protobuf_oneof:"ssl_secrets"` - // optional. the SNI domains that should be considered for TLS connections - Sni string `protobuf:"bytes,3,opt,name=sni,proto3" json:"sni,omitempty"` - // Verify that the Subject Alternative Name in the peer certificate is one of the specified values. - // note that a root_ca must be provided if this option is used. - VerifySubjectAltName []string `protobuf:"bytes,5,rep,name=verify_subject_alt_name,json=verifySubjectAltName,proto3" json:"verify_subject_alt_name,omitempty"` - Parameters *SslParameters `protobuf:"bytes,7,opt,name=parameters,proto3" json:"parameters,omitempty"` - // Set Application Level Protocol Negotiation. - // If empty, it is not set. - AlpnProtocols []string `protobuf:"bytes,8,rep,name=alpn_protocols,json=alpnProtocols,proto3" json:"alpn_protocols,omitempty"` -} - -func (x *UpstreamSslConfig) Reset() { - *x = UpstreamSslConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UpstreamSslConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpstreamSslConfig) ProtoMessage() {} - -func (x *UpstreamSslConfig) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpstreamSslConfig.ProtoReflect.Descriptor instead. -func (*UpstreamSslConfig) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_rawDescGZIP(), []int{2} -} - -func (m *UpstreamSslConfig) GetSslSecrets() isUpstreamSslConfig_SslSecrets { - if m != nil { - return m.SslSecrets - } - return nil -} - -func (x *UpstreamSslConfig) GetSecretRef() *core.ResourceRef { - if x, ok := x.GetSslSecrets().(*UpstreamSslConfig_SecretRef); ok { - return x.SecretRef - } - return nil -} - -func (x *UpstreamSslConfig) GetSslFiles() *SSLFiles { - if x, ok := x.GetSslSecrets().(*UpstreamSslConfig_SslFiles); ok { - return x.SslFiles - } - return nil -} - -func (x *UpstreamSslConfig) GetSds() *SDSConfig { - if x, ok := x.GetSslSecrets().(*UpstreamSslConfig_Sds); ok { - return x.Sds - } - return nil -} - -func (x *UpstreamSslConfig) GetSni() string { - if x != nil { - return x.Sni - } - return "" -} - -func (x *UpstreamSslConfig) GetVerifySubjectAltName() []string { - if x != nil { - return x.VerifySubjectAltName - } - return nil -} - -func (x *UpstreamSslConfig) GetParameters() *SslParameters { - if x != nil { - return x.Parameters - } - return nil -} - -func (x *UpstreamSslConfig) GetAlpnProtocols() []string { - if x != nil { - return x.AlpnProtocols - } - return nil -} - -type isUpstreamSslConfig_SslSecrets interface { - isUpstreamSslConfig_SslSecrets() -} - -type UpstreamSslConfig_SecretRef struct { - // SecretRef contains the secret ref to a gloo tls secret or a kubernetes tls secret. - // gloo tls secret can contain a root ca as well if verification is needed. - SecretRef *core.ResourceRef `protobuf:"bytes,1,opt,name=secret_ref,json=secretRef,proto3,oneof"` -} - -type UpstreamSslConfig_SslFiles struct { - // SSLFiles reference paths to certificates which are local to the proxy - SslFiles *SSLFiles `protobuf:"bytes,2,opt,name=ssl_files,json=sslFiles,proto3,oneof"` -} - -type UpstreamSslConfig_Sds struct { - // Use secret discovery service. - Sds *SDSConfig `protobuf:"bytes,4,opt,name=sds,proto3,oneof"` -} - -func (*UpstreamSslConfig_SecretRef) isUpstreamSslConfig_SslSecrets() {} - -func (*UpstreamSslConfig_SslFiles) isUpstreamSslConfig_SslSecrets() {} - -func (*UpstreamSslConfig_Sds) isUpstreamSslConfig_SslSecrets() {} - -type SDSConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Target uri for the sds channel. currently only a unix domain socket is supported. - TargetUri string `protobuf:"bytes,1,opt,name=target_uri,json=targetUri,proto3" json:"target_uri,omitempty"` - // Types that are assignable to SdsBuilder: - // *SDSConfig_CallCredentials - // *SDSConfig_ClusterName - SdsBuilder isSDSConfig_SdsBuilder `protobuf_oneof:"sds_builder"` - // The name of the secret containing the certificate - CertificatesSecretName string `protobuf:"bytes,3,opt,name=certificates_secret_name,json=certificatesSecretName,proto3" json:"certificates_secret_name,omitempty"` - // The name of secret containing the validation context (i.e. root ca) - ValidationContextName string `protobuf:"bytes,4,opt,name=validation_context_name,json=validationContextName,proto3" json:"validation_context_name,omitempty"` -} - -func (x *SDSConfig) Reset() { - *x = SDSConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SDSConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SDSConfig) ProtoMessage() {} - -func (x *SDSConfig) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SDSConfig.ProtoReflect.Descriptor instead. -func (*SDSConfig) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_rawDescGZIP(), []int{3} -} - -func (x *SDSConfig) GetTargetUri() string { - if x != nil { - return x.TargetUri - } - return "" -} - -func (m *SDSConfig) GetSdsBuilder() isSDSConfig_SdsBuilder { - if m != nil { - return m.SdsBuilder - } - return nil -} - -func (x *SDSConfig) GetCallCredentials() *CallCredentials { - if x, ok := x.GetSdsBuilder().(*SDSConfig_CallCredentials); ok { - return x.CallCredentials - } - return nil -} - -func (x *SDSConfig) GetClusterName() string { - if x, ok := x.GetSdsBuilder().(*SDSConfig_ClusterName); ok { - return x.ClusterName - } - return "" -} - -func (x *SDSConfig) GetCertificatesSecretName() string { - if x != nil { - return x.CertificatesSecretName - } - return "" -} - -func (x *SDSConfig) GetValidationContextName() string { - if x != nil { - return x.ValidationContextName - } - return "" -} - -type isSDSConfig_SdsBuilder interface { - isSDSConfig_SdsBuilder() -} - -type SDSConfig_CallCredentials struct { - // Call credentials. - CallCredentials *CallCredentials `protobuf:"bytes,2,opt,name=call_credentials,json=callCredentials,proto3,oneof"` -} - -type SDSConfig_ClusterName struct { - // The name of the sds cluster in envoy - ClusterName string `protobuf:"bytes,5,opt,name=cluster_name,json=clusterName,proto3,oneof"` -} - -func (*SDSConfig_CallCredentials) isSDSConfig_SdsBuilder() {} - -func (*SDSConfig_ClusterName) isSDSConfig_SdsBuilder() {} - -type CallCredentials struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Call credentials are coming from a file, - FileCredentialSource *CallCredentials_FileCredentialSource `protobuf:"bytes,1,opt,name=file_credential_source,json=fileCredentialSource,proto3" json:"file_credential_source,omitempty"` -} - -func (x *CallCredentials) Reset() { - *x = CallCredentials{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CallCredentials) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CallCredentials) ProtoMessage() {} - -func (x *CallCredentials) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CallCredentials.ProtoReflect.Descriptor instead. -func (*CallCredentials) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_rawDescGZIP(), []int{4} -} - -func (x *CallCredentials) GetFileCredentialSource() *CallCredentials_FileCredentialSource { - if x != nil { - return x.FileCredentialSource - } - return nil -} - -// General TLS parameters. See the [envoy docs](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/transport_sockets/tls/v3/common.proto#extensions-transport-sockets-tls-v3-tlsparameters) -// for more information on the meaning of these values. -type SslParameters struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - MinimumProtocolVersion SslParameters_ProtocolVersion `protobuf:"varint,1,opt,name=minimum_protocol_version,json=minimumProtocolVersion,proto3,enum=gloo.solo.io.SslParameters_ProtocolVersion" json:"minimum_protocol_version,omitempty"` - MaximumProtocolVersion SslParameters_ProtocolVersion `protobuf:"varint,2,opt,name=maximum_protocol_version,json=maximumProtocolVersion,proto3,enum=gloo.solo.io.SslParameters_ProtocolVersion" json:"maximum_protocol_version,omitempty"` - CipherSuites []string `protobuf:"bytes,3,rep,name=cipher_suites,json=cipherSuites,proto3" json:"cipher_suites,omitempty"` - EcdhCurves []string `protobuf:"bytes,4,rep,name=ecdh_curves,json=ecdhCurves,proto3" json:"ecdh_curves,omitempty"` -} - -func (x *SslParameters) Reset() { - *x = SslParameters{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SslParameters) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SslParameters) ProtoMessage() {} - -func (x *SslParameters) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SslParameters.ProtoReflect.Descriptor instead. -func (*SslParameters) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_rawDescGZIP(), []int{5} -} - -func (x *SslParameters) GetMinimumProtocolVersion() SslParameters_ProtocolVersion { - if x != nil { - return x.MinimumProtocolVersion - } - return SslParameters_TLS_AUTO -} - -func (x *SslParameters) GetMaximumProtocolVersion() SslParameters_ProtocolVersion { - if x != nil { - return x.MaximumProtocolVersion - } - return SslParameters_TLS_AUTO -} - -func (x *SslParameters) GetCipherSuites() []string { - if x != nil { - return x.CipherSuites - } - return nil -} - -func (x *SslParameters) GetEcdhCurves() []string { - if x != nil { - return x.EcdhCurves - } - return nil -} - -type CallCredentials_FileCredentialSource struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // File containing auth token. - TokenFileName string `protobuf:"bytes,1,opt,name=token_file_name,json=tokenFileName,proto3" json:"token_file_name,omitempty"` - // Header to carry the token. - Header string `protobuf:"bytes,2,opt,name=header,proto3" json:"header,omitempty"` -} - -func (x *CallCredentials_FileCredentialSource) Reset() { - *x = CallCredentials_FileCredentialSource{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CallCredentials_FileCredentialSource) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CallCredentials_FileCredentialSource) ProtoMessage() {} - -func (x *CallCredentials_FileCredentialSource) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CallCredentials_FileCredentialSource.ProtoReflect.Descriptor instead. -func (*CallCredentials_FileCredentialSource) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_rawDescGZIP(), []int{4, 0} -} - -func (x *CallCredentials_FileCredentialSource) GetTokenFileName() string { - if x != nil { - return x.TokenFileName - } - return "" -} - -func (x *CallCredentials_FileCredentialSource) GetHeader() string { - if x != nil { - return x.Header - } - return "" -} - -var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto protoreflect.FileDescriptor - -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_rawDesc = []byte{ - 0x0a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, - 0x73, 0x73, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x72, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x96, 0x03, 0x0a, 0x09, 0x53, 0x73, - 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3a, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x48, 0x00, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x52, 0x65, 0x66, 0x12, 0x35, 0x0a, 0x09, 0x73, 0x73, 0x6c, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x53, 0x4c, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x48, 0x00, - 0x52, 0x08, 0x73, 0x73, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x03, 0x73, 0x64, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x44, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x48, 0x00, 0x52, 0x03, 0x73, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6e, 0x69, 0x5f, 0x64, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6e, - 0x69, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x76, 0x65, 0x72, 0x69, - 0x66, 0x79, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x76, 0x65, 0x72, 0x69, 0x66, - 0x79, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6c, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x3b, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x53, 0x73, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, - 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, - 0x61, 0x6c, 0x70, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x07, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x70, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x73, 0x12, 0x1e, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x61, 0x79, 0x5f, 0x74, - 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x57, 0x61, 0x79, - 0x54, 0x6c, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x73, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x73, 0x22, 0x57, 0x0a, 0x08, 0x53, 0x53, 0x4c, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x19, - 0x0a, 0x08, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6c, 0x73, - 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6c, 0x73, 0x4b, - 0x65, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x63, 0x61, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x74, 0x43, 0x61, 0x22, 0xef, 0x02, 0x0a, 0x11, - 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x3a, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, - 0x48, 0x00, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x35, 0x0a, - 0x09, 0x73, 0x73, 0x6c, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x53, 0x53, 0x4c, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x08, 0x73, 0x73, 0x6c, 0x46, - 0x69, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x03, 0x73, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x53, 0x44, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x03, 0x73, 0x64, - 0x73, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x6e, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x73, 0x6e, 0x69, 0x12, 0x35, 0x0a, 0x17, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x73, 0x75, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x75, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x41, 0x6c, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x73, - 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x6c, 0x70, 0x6e, 0x5f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0d, 0x61, 0x6c, 0x70, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x42, 0x0d, - 0x0a, 0x0b, 0x73, 0x73, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x22, 0x9c, 0x02, - 0x0a, 0x09, 0x53, 0x44, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x72, 0x69, 0x12, 0x4a, 0x0a, 0x10, 0x63, 0x61, - 0x6c, 0x6c, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x63, 0x61, 0x6c, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x63, - 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x63, - 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x0d, 0x0a, - 0x0b, 0x73, 0x64, 0x73, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x22, 0xd3, 0x01, 0x0a, - 0x0f, 0x43, 0x61, 0x6c, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x12, 0x68, 0x0a, 0x16, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x32, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x43, 0x61, 0x6c, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x2e, - 0x46, 0x69, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x52, 0x14, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x56, 0x0a, 0x14, 0x46, 0x69, - 0x6c, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x65, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x46, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x22, 0xf8, 0x02, 0x0a, 0x0d, 0x53, 0x73, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x73, 0x12, 0x65, 0x0a, 0x18, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x73, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x65, 0x0a, 0x18, 0x6d, - 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x73, 0x6c, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x6d, 0x61, 0x78, 0x69, - 0x6d, 0x75, 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, - 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x69, 0x70, 0x68, 0x65, - 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x63, 0x64, 0x68, 0x5f, - 0x63, 0x75, 0x72, 0x76, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x63, - 0x64, 0x68, 0x43, 0x75, 0x72, 0x76, 0x65, 0x73, 0x22, 0x53, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0c, 0x0a, 0x08, 0x54, - 0x4c, 0x53, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, - 0x76, 0x31, 0x5f, 0x30, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x76, 0x31, 0x5f, - 0x31, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x76, 0x31, 0x5f, 0x32, 0x10, 0x03, - 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x76, 0x31, 0x5f, 0x33, 0x10, 0x04, 0x42, 0x3e, 0x5a, - 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, - 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2f, 0x76, 0x31, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_rawDesc -) - -func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_rawDescGZIP() []byte { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_rawDescData) - }) - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_rawDescData -} - -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes = make([]protoimpl.MessageInfo, 7) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_goTypes = []interface{}{ - (SslParameters_ProtocolVersion)(0), // 0: gloo.solo.io.SslParameters.ProtocolVersion - (*SslConfig)(nil), // 1: gloo.solo.io.SslConfig - (*SSLFiles)(nil), // 2: gloo.solo.io.SSLFiles - (*UpstreamSslConfig)(nil), // 3: gloo.solo.io.UpstreamSslConfig - (*SDSConfig)(nil), // 4: gloo.solo.io.SDSConfig - (*CallCredentials)(nil), // 5: gloo.solo.io.CallCredentials - (*SslParameters)(nil), // 6: gloo.solo.io.SslParameters - (*CallCredentials_FileCredentialSource)(nil), // 7: gloo.solo.io.CallCredentials.FileCredentialSource - (*core.ResourceRef)(nil), // 8: core.solo.io.ResourceRef -} -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_depIdxs = []int32{ - 8, // 0: gloo.solo.io.SslConfig.secret_ref:type_name -> core.solo.io.ResourceRef - 2, // 1: gloo.solo.io.SslConfig.ssl_files:type_name -> gloo.solo.io.SSLFiles - 4, // 2: gloo.solo.io.SslConfig.sds:type_name -> gloo.solo.io.SDSConfig - 6, // 3: gloo.solo.io.SslConfig.parameters:type_name -> gloo.solo.io.SslParameters - 8, // 4: gloo.solo.io.UpstreamSslConfig.secret_ref:type_name -> core.solo.io.ResourceRef - 2, // 5: gloo.solo.io.UpstreamSslConfig.ssl_files:type_name -> gloo.solo.io.SSLFiles - 4, // 6: gloo.solo.io.UpstreamSslConfig.sds:type_name -> gloo.solo.io.SDSConfig - 6, // 7: gloo.solo.io.UpstreamSslConfig.parameters:type_name -> gloo.solo.io.SslParameters - 5, // 8: gloo.solo.io.SDSConfig.call_credentials:type_name -> gloo.solo.io.CallCredentials - 7, // 9: gloo.solo.io.CallCredentials.file_credential_source:type_name -> gloo.solo.io.CallCredentials.FileCredentialSource - 0, // 10: gloo.solo.io.SslParameters.minimum_protocol_version:type_name -> gloo.solo.io.SslParameters.ProtocolVersion - 0, // 11: gloo.solo.io.SslParameters.maximum_protocol_version:type_name -> gloo.solo.io.SslParameters.ProtocolVersion - 12, // [12:12] is the sub-list for method output_type - 12, // [12:12] is the sub-list for method input_type - 12, // [12:12] is the sub-list for extension type_name - 12, // [12:12] is the sub-list for extension extendee - 0, // [0:12] is the sub-list for field type_name -} - -func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_init() } -func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_init() { - if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SslConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SSLFiles); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpstreamSslConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SDSConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CallCredentials); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SslParameters); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CallCredentials_FileCredentialSource); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[0].OneofWrappers = []interface{}{ - (*SslConfig_SecretRef)(nil), - (*SslConfig_SslFiles)(nil), - (*SslConfig_Sds)(nil), - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[2].OneofWrappers = []interface{}{ - (*UpstreamSslConfig_SecretRef)(nil), - (*UpstreamSslConfig_SslFiles)(nil), - (*UpstreamSslConfig_Sds)(nil), - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes[3].OneofWrappers = []interface{}{ - (*SDSConfig_CallCredentials)(nil), - (*SDSConfig_ClusterName)(nil), - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_rawDesc, - NumEnums: 1, - NumMessages: 7, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_goTypes, - DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_depIdxs, - EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_enumTypes, - MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_msgTypes, - }.Build() - File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_rawDesc = nil - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_goTypes = nil - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_depIdxs = nil -} diff --git a/pkg/api/gloo.solo.io/v1/ssl.pb.hash.go b/pkg/api/gloo.solo.io/v1/ssl.pb.hash.go deleted file mode 100644 index d838816bd..000000000 --- a/pkg/api/gloo.solo.io/v1/ssl.pb.hash.go +++ /dev/null @@ -1,417 +0,0 @@ -// Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl.proto - -package v1 - -import ( - "encoding/binary" - "errors" - "fmt" - "hash" - "hash/fnv" - - "github.com/mitchellh/hashstructure" - safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" -) - -// ensure the imports are used -var ( - _ = errors.New("") - _ = fmt.Print - _ = binary.LittleEndian - _ = new(hash.Hash64) - _ = fnv.New64 - _ = hashstructure.Hash - _ = new(safe_hasher.SafeHasher) -) - -// Hash function -func (m *SslConfig) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SslConfig")); err != nil { - return 0, err - } - - for _, v := range m.GetSniDomains() { - - if _, err = hasher.Write([]byte(v)); err != nil { - return 0, err - } - - } - - for _, v := range m.GetVerifySubjectAltName() { - - if _, err = hasher.Write([]byte(v)); err != nil { - return 0, err - } - - } - - if h, ok := interface{}(m.GetParameters()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetParameters(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - for _, v := range m.GetAlpnProtocols() { - - if _, err = hasher.Write([]byte(v)); err != nil { - return 0, err - } - - } - - err = binary.Write(hasher, binary.LittleEndian, m.GetOneWayTls()) - if err != nil { - return 0, err - } - - switch m.SslSecrets.(type) { - - case *SslConfig_SecretRef: - - if h, ok := interface{}(m.GetSecretRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - case *SslConfig_SslFiles: - - if h, ok := interface{}(m.GetSslFiles()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSslFiles(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - case *SslConfig_Sds: - - if h, ok := interface{}(m.GetSds()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSds(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *SSLFiles) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SSLFiles")); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetTlsCert())); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetTlsKey())); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetRootCa())); err != nil { - return 0, err - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *UpstreamSslConfig) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.UpstreamSslConfig")); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetSni())); err != nil { - return 0, err - } - - for _, v := range m.GetVerifySubjectAltName() { - - if _, err = hasher.Write([]byte(v)); err != nil { - return 0, err - } - - } - - if h, ok := interface{}(m.GetParameters()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetParameters(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - for _, v := range m.GetAlpnProtocols() { - - if _, err = hasher.Write([]byte(v)); err != nil { - return 0, err - } - - } - - switch m.SslSecrets.(type) { - - case *UpstreamSslConfig_SecretRef: - - if h, ok := interface{}(m.GetSecretRef()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - case *UpstreamSslConfig_SslFiles: - - if h, ok := interface{}(m.GetSslFiles()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSslFiles(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - case *UpstreamSslConfig_Sds: - - if h, ok := interface{}(m.GetSds()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetSds(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *SDSConfig) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SDSConfig")); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetTargetUri())); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetCertificatesSecretName())); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetValidationContextName())); err != nil { - return 0, err - } - - switch m.SdsBuilder.(type) { - - case *SDSConfig_CallCredentials: - - if h, ok := interface{}(m.GetCallCredentials()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetCallCredentials(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - case *SDSConfig_ClusterName: - - if _, err = hasher.Write([]byte(m.GetClusterName())); err != nil { - return 0, err - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *CallCredentials) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.CallCredentials")); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetFileCredentialSource()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetFileCredentialSource(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *SslParameters) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.SslParameters")); err != nil { - return 0, err - } - - err = binary.Write(hasher, binary.LittleEndian, m.GetMinimumProtocolVersion()) - if err != nil { - return 0, err - } - - err = binary.Write(hasher, binary.LittleEndian, m.GetMaximumProtocolVersion()) - if err != nil { - return 0, err - } - - for _, v := range m.GetCipherSuites() { - - if _, err = hasher.Write([]byte(v)); err != nil { - return 0, err - } - - } - - for _, v := range m.GetEcdhCurves() { - - if _, err = hasher.Write([]byte(v)); err != nil { - return 0, err - } - - } - - return hasher.Sum64(), nil -} - -// Hash function -func (m *CallCredentials_FileCredentialSource) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.CallCredentials_FileCredentialSource")); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetTokenFileName())); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetHeader())); err != nil { - return 0, err - } - - return hasher.Sum64(), nil -} diff --git a/pkg/api/gloo.solo.io/v1/ssl/ssl.pb.clone.go b/pkg/api/gloo.solo.io/v1/ssl/ssl.pb.clone.go new file mode 100644 index 000000000..26a1bbc42 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/ssl/ssl.pb.clone.go @@ -0,0 +1,348 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl/ssl.proto + +package ssl + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_kit_pkg_api_v1_resources_core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *SslConfig) Clone() proto.Message { + var target *SslConfig + if m == nil { + return target + } + target = &SslConfig{} + + if m.GetSniDomains() != nil { + target.SniDomains = make([]string, len(m.GetSniDomains())) + for idx, v := range m.GetSniDomains() { + + target.SniDomains[idx] = v + + } + } + + if m.GetVerifySubjectAltName() != nil { + target.VerifySubjectAltName = make([]string, len(m.GetVerifySubjectAltName())) + for idx, v := range m.GetVerifySubjectAltName() { + + target.VerifySubjectAltName[idx] = v + + } + } + + if h, ok := interface{}(m.GetParameters()).(clone.Cloner); ok { + target.Parameters = h.Clone().(*SslParameters) + } else { + target.Parameters = proto.Clone(m.GetParameters()).(*SslParameters) + } + + if m.GetAlpnProtocols() != nil { + target.AlpnProtocols = make([]string, len(m.GetAlpnProtocols())) + for idx, v := range m.GetAlpnProtocols() { + + target.AlpnProtocols[idx] = v + + } + } + + if h, ok := interface{}(m.GetOneWayTls()).(clone.Cloner); ok { + target.OneWayTls = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.OneWayTls = proto.Clone(m.GetOneWayTls()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetDisableTlsSessionResumption()).(clone.Cloner); ok { + target.DisableTlsSessionResumption = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.DisableTlsSessionResumption = proto.Clone(m.GetDisableTlsSessionResumption()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetTransportSocketConnectTimeout()).(clone.Cloner); ok { + target.TransportSocketConnectTimeout = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.TransportSocketConnectTimeout = proto.Clone(m.GetTransportSocketConnectTimeout()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + target.OcspStaplePolicy = m.GetOcspStaplePolicy() + + switch m.SslSecrets.(type) { + + case *SslConfig_SecretRef: + + if h, ok := interface{}(m.GetSecretRef()).(clone.Cloner); ok { + target.SslSecrets = &SslConfig_SecretRef{ + SecretRef: h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } else { + target.SslSecrets = &SslConfig_SecretRef{ + SecretRef: proto.Clone(m.GetSecretRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } + + case *SslConfig_SslFiles: + + if h, ok := interface{}(m.GetSslFiles()).(clone.Cloner); ok { + target.SslSecrets = &SslConfig_SslFiles{ + SslFiles: h.Clone().(*SSLFiles), + } + } else { + target.SslSecrets = &SslConfig_SslFiles{ + SslFiles: proto.Clone(m.GetSslFiles()).(*SSLFiles), + } + } + + case *SslConfig_Sds: + + if h, ok := interface{}(m.GetSds()).(clone.Cloner); ok { + target.SslSecrets = &SslConfig_Sds{ + Sds: h.Clone().(*SDSConfig), + } + } else { + target.SslSecrets = &SslConfig_Sds{ + Sds: proto.Clone(m.GetSds()).(*SDSConfig), + } + } + + } + + return target +} + +// Clone function +func (m *SSLFiles) Clone() proto.Message { + var target *SSLFiles + if m == nil { + return target + } + target = &SSLFiles{} + + target.TlsCert = m.GetTlsCert() + + target.TlsKey = m.GetTlsKey() + + target.RootCa = m.GetRootCa() + + target.OcspStaple = m.GetOcspStaple() + + return target +} + +// Clone function +func (m *UpstreamSslConfig) Clone() proto.Message { + var target *UpstreamSslConfig + if m == nil { + return target + } + target = &UpstreamSslConfig{} + + target.Sni = m.GetSni() + + if m.GetVerifySubjectAltName() != nil { + target.VerifySubjectAltName = make([]string, len(m.GetVerifySubjectAltName())) + for idx, v := range m.GetVerifySubjectAltName() { + + target.VerifySubjectAltName[idx] = v + + } + } + + if h, ok := interface{}(m.GetParameters()).(clone.Cloner); ok { + target.Parameters = h.Clone().(*SslParameters) + } else { + target.Parameters = proto.Clone(m.GetParameters()).(*SslParameters) + } + + if m.GetAlpnProtocols() != nil { + target.AlpnProtocols = make([]string, len(m.GetAlpnProtocols())) + for idx, v := range m.GetAlpnProtocols() { + + target.AlpnProtocols[idx] = v + + } + } + + if h, ok := interface{}(m.GetAllowRenegotiation()).(clone.Cloner); ok { + target.AllowRenegotiation = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.AllowRenegotiation = proto.Clone(m.GetAllowRenegotiation()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetOneWayTls()).(clone.Cloner); ok { + target.OneWayTls = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.OneWayTls = proto.Clone(m.GetOneWayTls()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + switch m.SslSecrets.(type) { + + case *UpstreamSslConfig_SecretRef: + + if h, ok := interface{}(m.GetSecretRef()).(clone.Cloner); ok { + target.SslSecrets = &UpstreamSslConfig_SecretRef{ + SecretRef: h.Clone().(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } else { + target.SslSecrets = &UpstreamSslConfig_SecretRef{ + SecretRef: proto.Clone(m.GetSecretRef()).(*github_com_solo_io_solo_kit_pkg_api_v1_resources_core.ResourceRef), + } + } + + case *UpstreamSslConfig_SslFiles: + + if h, ok := interface{}(m.GetSslFiles()).(clone.Cloner); ok { + target.SslSecrets = &UpstreamSslConfig_SslFiles{ + SslFiles: h.Clone().(*SSLFiles), + } + } else { + target.SslSecrets = &UpstreamSslConfig_SslFiles{ + SslFiles: proto.Clone(m.GetSslFiles()).(*SSLFiles), + } + } + + case *UpstreamSslConfig_Sds: + + if h, ok := interface{}(m.GetSds()).(clone.Cloner); ok { + target.SslSecrets = &UpstreamSslConfig_Sds{ + Sds: h.Clone().(*SDSConfig), + } + } else { + target.SslSecrets = &UpstreamSslConfig_Sds{ + Sds: proto.Clone(m.GetSds()).(*SDSConfig), + } + } + + } + + return target +} + +// Clone function +func (m *SDSConfig) Clone() proto.Message { + var target *SDSConfig + if m == nil { + return target + } + target = &SDSConfig{} + + target.TargetUri = m.GetTargetUri() + + target.CertificatesSecretName = m.GetCertificatesSecretName() + + target.ValidationContextName = m.GetValidationContextName() + + switch m.SdsBuilder.(type) { + + case *SDSConfig_CallCredentials: + + if h, ok := interface{}(m.GetCallCredentials()).(clone.Cloner); ok { + target.SdsBuilder = &SDSConfig_CallCredentials{ + CallCredentials: h.Clone().(*CallCredentials), + } + } else { + target.SdsBuilder = &SDSConfig_CallCredentials{ + CallCredentials: proto.Clone(m.GetCallCredentials()).(*CallCredentials), + } + } + + case *SDSConfig_ClusterName: + + target.SdsBuilder = &SDSConfig_ClusterName{ + ClusterName: m.GetClusterName(), + } + + } + + return target +} + +// Clone function +func (m *CallCredentials) Clone() proto.Message { + var target *CallCredentials + if m == nil { + return target + } + target = &CallCredentials{} + + if h, ok := interface{}(m.GetFileCredentialSource()).(clone.Cloner); ok { + target.FileCredentialSource = h.Clone().(*CallCredentials_FileCredentialSource) + } else { + target.FileCredentialSource = proto.Clone(m.GetFileCredentialSource()).(*CallCredentials_FileCredentialSource) + } + + return target +} + +// Clone function +func (m *SslParameters) Clone() proto.Message { + var target *SslParameters + if m == nil { + return target + } + target = &SslParameters{} + + target.MinimumProtocolVersion = m.GetMinimumProtocolVersion() + + target.MaximumProtocolVersion = m.GetMaximumProtocolVersion() + + if m.GetCipherSuites() != nil { + target.CipherSuites = make([]string, len(m.GetCipherSuites())) + for idx, v := range m.GetCipherSuites() { + + target.CipherSuites[idx] = v + + } + } + + if m.GetEcdhCurves() != nil { + target.EcdhCurves = make([]string, len(m.GetEcdhCurves())) + for idx, v := range m.GetEcdhCurves() { + + target.EcdhCurves[idx] = v + + } + } + + return target +} + +// Clone function +func (m *CallCredentials_FileCredentialSource) Clone() proto.Message { + var target *CallCredentials_FileCredentialSource + if m == nil { + return target + } + target = &CallCredentials_FileCredentialSource{} + + target.TokenFileName = m.GetTokenFileName() + + target.Header = m.GetHeader() + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/ssl.pb.equal.go b/pkg/api/gloo.solo.io/v1/ssl/ssl.pb.equal.go similarity index 76% rename from pkg/api/gloo.solo.io/v1/ssl.pb.equal.go rename to pkg/api/gloo.solo.io/v1/ssl/ssl.pb.equal.go index 6a3500711..165a99b43 100644 --- a/pkg/api/gloo.solo.io/v1/ssl.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/ssl/ssl.pb.equal.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl.proto +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl/ssl.proto -package v1 +package ssl import ( "bytes" @@ -89,13 +89,46 @@ func (m *SslConfig) Equal(that interface{}) bool { } - if m.GetOneWayTls() != target.GetOneWayTls() { + if h, ok := interface{}(m.GetOneWayTls()).(equality.Equalizer); ok { + if !h.Equal(target.GetOneWayTls()) { + return false + } + } else { + if !proto.Equal(m.GetOneWayTls(), target.GetOneWayTls()) { + return false + } + } + + if h, ok := interface{}(m.GetDisableTlsSessionResumption()).(equality.Equalizer); ok { + if !h.Equal(target.GetDisableTlsSessionResumption()) { + return false + } + } else { + if !proto.Equal(m.GetDisableTlsSessionResumption(), target.GetDisableTlsSessionResumption()) { + return false + } + } + + if h, ok := interface{}(m.GetTransportSocketConnectTimeout()).(equality.Equalizer); ok { + if !h.Equal(target.GetTransportSocketConnectTimeout()) { + return false + } + } else { + if !proto.Equal(m.GetTransportSocketConnectTimeout(), target.GetTransportSocketConnectTimeout()) { + return false + } + } + + if m.GetOcspStaplePolicy() != target.GetOcspStaplePolicy() { return false } switch m.SslSecrets.(type) { case *SslConfig_SecretRef: + if _, ok := target.SslSecrets.(*SslConfig_SecretRef); !ok { + return false + } if h, ok := interface{}(m.GetSecretRef()).(equality.Equalizer); ok { if !h.Equal(target.GetSecretRef()) { @@ -108,6 +141,9 @@ func (m *SslConfig) Equal(that interface{}) bool { } case *SslConfig_SslFiles: + if _, ok := target.SslSecrets.(*SslConfig_SslFiles); !ok { + return false + } if h, ok := interface{}(m.GetSslFiles()).(equality.Equalizer); ok { if !h.Equal(target.GetSslFiles()) { @@ -120,6 +156,9 @@ func (m *SslConfig) Equal(that interface{}) bool { } case *SslConfig_Sds: + if _, ok := target.SslSecrets.(*SslConfig_Sds); !ok { + return false + } if h, ok := interface{}(m.GetSds()).(equality.Equalizer); ok { if !h.Equal(target.GetSds()) { @@ -131,6 +170,11 @@ func (m *SslConfig) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.SslSecrets != target.SslSecrets { + return false + } } return true @@ -169,6 +213,10 @@ func (m *SSLFiles) Equal(that interface{}) bool { return false } + if strings.Compare(m.GetOcspStaple(), target.GetOcspStaple()) != 0 { + return false + } + return true } @@ -229,9 +277,32 @@ func (m *UpstreamSslConfig) Equal(that interface{}) bool { } + if h, ok := interface{}(m.GetAllowRenegotiation()).(equality.Equalizer); ok { + if !h.Equal(target.GetAllowRenegotiation()) { + return false + } + } else { + if !proto.Equal(m.GetAllowRenegotiation(), target.GetAllowRenegotiation()) { + return false + } + } + + if h, ok := interface{}(m.GetOneWayTls()).(equality.Equalizer); ok { + if !h.Equal(target.GetOneWayTls()) { + return false + } + } else { + if !proto.Equal(m.GetOneWayTls(), target.GetOneWayTls()) { + return false + } + } + switch m.SslSecrets.(type) { case *UpstreamSslConfig_SecretRef: + if _, ok := target.SslSecrets.(*UpstreamSslConfig_SecretRef); !ok { + return false + } if h, ok := interface{}(m.GetSecretRef()).(equality.Equalizer); ok { if !h.Equal(target.GetSecretRef()) { @@ -244,6 +315,9 @@ func (m *UpstreamSslConfig) Equal(that interface{}) bool { } case *UpstreamSslConfig_SslFiles: + if _, ok := target.SslSecrets.(*UpstreamSslConfig_SslFiles); !ok { + return false + } if h, ok := interface{}(m.GetSslFiles()).(equality.Equalizer); ok { if !h.Equal(target.GetSslFiles()) { @@ -256,6 +330,9 @@ func (m *UpstreamSslConfig) Equal(that interface{}) bool { } case *UpstreamSslConfig_Sds: + if _, ok := target.SslSecrets.(*UpstreamSslConfig_Sds); !ok { + return false + } if h, ok := interface{}(m.GetSds()).(equality.Equalizer); ok { if !h.Equal(target.GetSds()) { @@ -267,6 +344,11 @@ func (m *UpstreamSslConfig) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.SslSecrets != target.SslSecrets { + return false + } } return true @@ -308,6 +390,9 @@ func (m *SDSConfig) Equal(that interface{}) bool { switch m.SdsBuilder.(type) { case *SDSConfig_CallCredentials: + if _, ok := target.SdsBuilder.(*SDSConfig_CallCredentials); !ok { + return false + } if h, ok := interface{}(m.GetCallCredentials()).(equality.Equalizer); ok { if !h.Equal(target.GetCallCredentials()) { @@ -320,11 +405,19 @@ func (m *SDSConfig) Equal(that interface{}) bool { } case *SDSConfig_ClusterName: + if _, ok := target.SdsBuilder.(*SDSConfig_ClusterName); !ok { + return false + } if strings.Compare(m.GetClusterName(), target.GetClusterName()) != 0 { return false } + default: + // m is nil but target is not nil + if m.SdsBuilder != target.SdsBuilder { + return false + } } return true diff --git a/pkg/api/gloo.solo.io/v1/ssl/ssl.pb.go b/pkg/api/gloo.solo.io/v1/ssl/ssl.pb.go new file mode 100644 index 000000000..d73ae18cd --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/ssl/ssl.pb.go @@ -0,0 +1,1101 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl/ssl.proto + +package ssl + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + core "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type SslConfig_OcspStaplePolicy int32 + +const ( + // OCSP responses are optional. If none is provided, or the provided response is expired, the associated certificate will be used without the OCSP response. + SslConfig_LENIENT_STAPLING SslConfig_OcspStaplePolicy = 0 + // OCSP responses are optional. If none is provided, the associated certificate will be used without the OCSP response. + // If a response is present, but expired, the certificate will not be used for connections. + // If no suitable certificate is found, the connection is rejected. + SslConfig_STRICT_STAPLING SslConfig_OcspStaplePolicy = 1 + // OCSP responses are required. If no `ocsp_staple` is set on a certificate, configuration will fail. + // If a response is expired, the associated certificate will not be used. + // If no suitable certificate is found, the connection is rejected. + SslConfig_MUST_STAPLE SslConfig_OcspStaplePolicy = 2 +) + +// Enum value maps for SslConfig_OcspStaplePolicy. +var ( + SslConfig_OcspStaplePolicy_name = map[int32]string{ + 0: "LENIENT_STAPLING", + 1: "STRICT_STAPLING", + 2: "MUST_STAPLE", + } + SslConfig_OcspStaplePolicy_value = map[string]int32{ + "LENIENT_STAPLING": 0, + "STRICT_STAPLING": 1, + "MUST_STAPLE": 2, + } +) + +func (x SslConfig_OcspStaplePolicy) Enum() *SslConfig_OcspStaplePolicy { + p := new(SslConfig_OcspStaplePolicy) + *p = x + return p +} + +func (x SslConfig_OcspStaplePolicy) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SslConfig_OcspStaplePolicy) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_enumTypes[0].Descriptor() +} + +func (SslConfig_OcspStaplePolicy) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_enumTypes[0] +} + +func (x SslConfig_OcspStaplePolicy) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SslConfig_OcspStaplePolicy.Descriptor instead. +func (SslConfig_OcspStaplePolicy) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_rawDescGZIP(), []int{0, 0} +} + +type SslParameters_ProtocolVersion int32 + +const ( + // Envoy will choose the optimal TLS version. + SslParameters_TLS_AUTO SslParameters_ProtocolVersion = 0 + // TLS 1.0 + SslParameters_TLSv1_0 SslParameters_ProtocolVersion = 1 + // TLS 1.1 + SslParameters_TLSv1_1 SslParameters_ProtocolVersion = 2 + // TLS 1.2 + SslParameters_TLSv1_2 SslParameters_ProtocolVersion = 3 + // TLS 1.3 + SslParameters_TLSv1_3 SslParameters_ProtocolVersion = 4 +) + +// Enum value maps for SslParameters_ProtocolVersion. +var ( + SslParameters_ProtocolVersion_name = map[int32]string{ + 0: "TLS_AUTO", + 1: "TLSv1_0", + 2: "TLSv1_1", + 3: "TLSv1_2", + 4: "TLSv1_3", + } + SslParameters_ProtocolVersion_value = map[string]int32{ + "TLS_AUTO": 0, + "TLSv1_0": 1, + "TLSv1_1": 2, + "TLSv1_2": 3, + "TLSv1_3": 4, + } +) + +func (x SslParameters_ProtocolVersion) Enum() *SslParameters_ProtocolVersion { + p := new(SslParameters_ProtocolVersion) + *p = x + return p +} + +func (x SslParameters_ProtocolVersion) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SslParameters_ProtocolVersion) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_enumTypes[1].Descriptor() +} + +func (SslParameters_ProtocolVersion) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_enumTypes[1] +} + +func (x SslParameters_ProtocolVersion) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SslParameters_ProtocolVersion.Descriptor instead. +func (SslParameters_ProtocolVersion) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_rawDescGZIP(), []int{5, 0} +} + +// SslConfig contains the options necessary to configure a virtual host or listener to use TLS termination +type SslConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to SslSecrets: + // + // *SslConfig_SecretRef + // *SslConfig_SslFiles + // *SslConfig_Sds + SslSecrets isSslConfig_SslSecrets `protobuf_oneof:"ssl_secrets"` + // optional. the SNI domains that should be considered for TLS connections + SniDomains []string `protobuf:"bytes,3,rep,name=sni_domains,json=sniDomains,proto3" json:"sni_domains,omitempty"` + // Verify that the Subject Alternative Name in the peer certificate is one of the specified values. + // note that a root_ca must be provided if this option is used. + VerifySubjectAltName []string `protobuf:"bytes,5,rep,name=verify_subject_alt_name,json=verifySubjectAltName,proto3" json:"verify_subject_alt_name,omitempty"` + Parameters *SslParameters `protobuf:"bytes,6,opt,name=parameters,proto3" json:"parameters,omitempty"` + // Set Application Level Protocol Negotiation + // If empty, defaults to ["h2", "http/1.1"]. + // As an advanced option you may use ["allow_empty"] to avoid defaults and set alpn to have no alpn set (ie pass empty slice). + AlpnProtocols []string `protobuf:"bytes,7,rep,name=alpn_protocols,json=alpnProtocols,proto3" json:"alpn_protocols,omitempty"` + // If the SSL config has the ca.crt (root CA) provided, Gloo uses it to perform mTLS by default. + // Set oneWayTls to true to disable mTLS in favor of server-only TLS (one-way TLS), even if Gloo has the root CA. + // If unset, defaults to false. + OneWayTls *wrapperspb.BoolValue `protobuf:"bytes,8,opt,name=one_way_tls,json=oneWayTls,proto3" json:"one_way_tls,omitempty"` + // If set to true, the TLS session resumption will be deactivated, note that it deactivates only the tickets based tls session resumption (not the cache). + DisableTlsSessionResumption *wrapperspb.BoolValue `protobuf:"bytes,9,opt,name=disable_tls_session_resumption,json=disableTlsSessionResumption,proto3" json:"disable_tls_session_resumption,omitempty"` + // If present and nonzero, the amount of time to allow incoming connections to complete any + // transport socket negotiations. If this expires before the transport reports connection + // establishment, the connection is summarily closed. + TransportSocketConnectTimeout *durationpb.Duration `protobuf:"bytes,10,opt,name=transport_socket_connect_timeout,json=transportSocketConnectTimeout,proto3" json:"transport_socket_connect_timeout,omitempty"` + // The OCSP staple policy to use for this listener. + // Defaults to `LENIENT_STAPLING`. + // https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/transport_sockets/tls/v3/tls.proto#enum-extensions-transport-sockets-tls-v3-downstreamtlscontext-ocspstaplepolicy + OcspStaplePolicy SslConfig_OcspStaplePolicy `protobuf:"varint,11,opt,name=ocsp_staple_policy,json=ocspStaplePolicy,proto3,enum=gloo.solo.io.SslConfig_OcspStaplePolicy" json:"ocsp_staple_policy,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SslConfig) Reset() { + *x = SslConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SslConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SslConfig) ProtoMessage() {} + +func (x *SslConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SslConfig.ProtoReflect.Descriptor instead. +func (*SslConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_rawDescGZIP(), []int{0} +} + +func (x *SslConfig) GetSslSecrets() isSslConfig_SslSecrets { + if x != nil { + return x.SslSecrets + } + return nil +} + +func (x *SslConfig) GetSecretRef() *core.ResourceRef { + if x != nil { + if x, ok := x.SslSecrets.(*SslConfig_SecretRef); ok { + return x.SecretRef + } + } + return nil +} + +func (x *SslConfig) GetSslFiles() *SSLFiles { + if x != nil { + if x, ok := x.SslSecrets.(*SslConfig_SslFiles); ok { + return x.SslFiles + } + } + return nil +} + +func (x *SslConfig) GetSds() *SDSConfig { + if x != nil { + if x, ok := x.SslSecrets.(*SslConfig_Sds); ok { + return x.Sds + } + } + return nil +} + +func (x *SslConfig) GetSniDomains() []string { + if x != nil { + return x.SniDomains + } + return nil +} + +func (x *SslConfig) GetVerifySubjectAltName() []string { + if x != nil { + return x.VerifySubjectAltName + } + return nil +} + +func (x *SslConfig) GetParameters() *SslParameters { + if x != nil { + return x.Parameters + } + return nil +} + +func (x *SslConfig) GetAlpnProtocols() []string { + if x != nil { + return x.AlpnProtocols + } + return nil +} + +func (x *SslConfig) GetOneWayTls() *wrapperspb.BoolValue { + if x != nil { + return x.OneWayTls + } + return nil +} + +func (x *SslConfig) GetDisableTlsSessionResumption() *wrapperspb.BoolValue { + if x != nil { + return x.DisableTlsSessionResumption + } + return nil +} + +func (x *SslConfig) GetTransportSocketConnectTimeout() *durationpb.Duration { + if x != nil { + return x.TransportSocketConnectTimeout + } + return nil +} + +func (x *SslConfig) GetOcspStaplePolicy() SslConfig_OcspStaplePolicy { + if x != nil { + return x.OcspStaplePolicy + } + return SslConfig_LENIENT_STAPLING +} + +type isSslConfig_SslSecrets interface { + isSslConfig_SslSecrets() +} + +type SslConfig_SecretRef struct { + // SecretRef contains the secret ref to a gloo tls secret or a kubernetes tls secret. + // gloo tls secret can contain a root ca as well if verification is needed. + SecretRef *core.ResourceRef `protobuf:"bytes,1,opt,name=secret_ref,json=secretRef,proto3,oneof"` +} + +type SslConfig_SslFiles struct { + // SSLFiles reference paths to certificates which are local to the proxy + SslFiles *SSLFiles `protobuf:"bytes,2,opt,name=ssl_files,json=sslFiles,proto3,oneof"` +} + +type SslConfig_Sds struct { + // Use secret discovery service. + Sds *SDSConfig `protobuf:"bytes,4,opt,name=sds,proto3,oneof"` +} + +func (*SslConfig_SecretRef) isSslConfig_SslSecrets() {} + +func (*SslConfig_SslFiles) isSslConfig_SslSecrets() {} + +func (*SslConfig_Sds) isSslConfig_SslSecrets() {} + +// SSLFiles reference paths to certificates which can be read by the proxy off of its local filesystem +type SSLFiles struct { + state protoimpl.MessageState `protogen:"open.v1"` + TlsCert string `protobuf:"bytes,1,opt,name=tls_cert,json=tlsCert,proto3" json:"tls_cert,omitempty"` + TlsKey string `protobuf:"bytes,2,opt,name=tls_key,json=tlsKey,proto3" json:"tls_key,omitempty"` + // for client cert validation. optional + RootCa string `protobuf:"bytes,3,opt,name=root_ca,json=rootCa,proto3" json:"root_ca,omitempty"` + // stapled ocsp response. optional + // should be der-encoded + OcspStaple string `protobuf:"bytes,4,opt,name=ocsp_staple,json=ocspStaple,proto3" json:"ocsp_staple,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SSLFiles) Reset() { + *x = SSLFiles{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SSLFiles) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SSLFiles) ProtoMessage() {} + +func (x *SSLFiles) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SSLFiles.ProtoReflect.Descriptor instead. +func (*SSLFiles) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_rawDescGZIP(), []int{1} +} + +func (x *SSLFiles) GetTlsCert() string { + if x != nil { + return x.TlsCert + } + return "" +} + +func (x *SSLFiles) GetTlsKey() string { + if x != nil { + return x.TlsKey + } + return "" +} + +func (x *SSLFiles) GetRootCa() string { + if x != nil { + return x.RootCa + } + return "" +} + +func (x *SSLFiles) GetOcspStaple() string { + if x != nil { + return x.OcspStaple + } + return "" +} + +// SslConfig contains the options necessary to configure an upstream to use TLS origination +type UpstreamSslConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to SslSecrets: + // + // *UpstreamSslConfig_SecretRef + // *UpstreamSslConfig_SslFiles + // *UpstreamSslConfig_Sds + SslSecrets isUpstreamSslConfig_SslSecrets `protobuf_oneof:"ssl_secrets"` + // optional. the SNI domains that should be considered for TLS connections + Sni string `protobuf:"bytes,3,opt,name=sni,proto3" json:"sni,omitempty"` + // Verify that the Subject Alternative Name in the peer certificate is one of the specified values. + // note that a root_ca must be provided if this option is used. + VerifySubjectAltName []string `protobuf:"bytes,5,rep,name=verify_subject_alt_name,json=verifySubjectAltName,proto3" json:"verify_subject_alt_name,omitempty"` + Parameters *SslParameters `protobuf:"bytes,7,opt,name=parameters,proto3" json:"parameters,omitempty"` + // Set Application Level Protocol Negotiation. + // If empty, it is not set. + AlpnProtocols []string `protobuf:"bytes,8,rep,name=alpn_protocols,json=alpnProtocols,proto3" json:"alpn_protocols,omitempty"` + // Allow Tls renegotiation, the default value is false. + // TLS renegotiation is considered insecure and shouldn’t be used unless absolutely necessary. + AllowRenegotiation *wrapperspb.BoolValue `protobuf:"bytes,10,opt,name=allow_renegotiation,json=allowRenegotiation,proto3" json:"allow_renegotiation,omitempty"` + // If the SSL config has the ca.crt (root CA) provided, Gloo uses it to perform mTLS by default. + // Set oneWayTls to true to disable mTLS in favor of server-only TLS (one-way TLS), even if Gloo has the root CA. + // This flag does nothing if SDS is configured. + // If unset, defaults to false. + OneWayTls *wrapperspb.BoolValue `protobuf:"bytes,11,opt,name=one_way_tls,json=oneWayTls,proto3" json:"one_way_tls,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamSslConfig) Reset() { + *x = UpstreamSslConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamSslConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamSslConfig) ProtoMessage() {} + +func (x *UpstreamSslConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpstreamSslConfig.ProtoReflect.Descriptor instead. +func (*UpstreamSslConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_rawDescGZIP(), []int{2} +} + +func (x *UpstreamSslConfig) GetSslSecrets() isUpstreamSslConfig_SslSecrets { + if x != nil { + return x.SslSecrets + } + return nil +} + +func (x *UpstreamSslConfig) GetSecretRef() *core.ResourceRef { + if x != nil { + if x, ok := x.SslSecrets.(*UpstreamSslConfig_SecretRef); ok { + return x.SecretRef + } + } + return nil +} + +func (x *UpstreamSslConfig) GetSslFiles() *SSLFiles { + if x != nil { + if x, ok := x.SslSecrets.(*UpstreamSslConfig_SslFiles); ok { + return x.SslFiles + } + } + return nil +} + +func (x *UpstreamSslConfig) GetSds() *SDSConfig { + if x != nil { + if x, ok := x.SslSecrets.(*UpstreamSslConfig_Sds); ok { + return x.Sds + } + } + return nil +} + +func (x *UpstreamSslConfig) GetSni() string { + if x != nil { + return x.Sni + } + return "" +} + +func (x *UpstreamSslConfig) GetVerifySubjectAltName() []string { + if x != nil { + return x.VerifySubjectAltName + } + return nil +} + +func (x *UpstreamSslConfig) GetParameters() *SslParameters { + if x != nil { + return x.Parameters + } + return nil +} + +func (x *UpstreamSslConfig) GetAlpnProtocols() []string { + if x != nil { + return x.AlpnProtocols + } + return nil +} + +func (x *UpstreamSslConfig) GetAllowRenegotiation() *wrapperspb.BoolValue { + if x != nil { + return x.AllowRenegotiation + } + return nil +} + +func (x *UpstreamSslConfig) GetOneWayTls() *wrapperspb.BoolValue { + if x != nil { + return x.OneWayTls + } + return nil +} + +type isUpstreamSslConfig_SslSecrets interface { + isUpstreamSslConfig_SslSecrets() +} + +type UpstreamSslConfig_SecretRef struct { + // SecretRef contains the secret ref to a gloo tls secret or a kubernetes tls secret. + // gloo tls secret can contain a root ca as well if verification is needed. + SecretRef *core.ResourceRef `protobuf:"bytes,1,opt,name=secret_ref,json=secretRef,proto3,oneof"` +} + +type UpstreamSslConfig_SslFiles struct { + // SSLFiles reference paths to certificates which are local to the proxy + SslFiles *SSLFiles `protobuf:"bytes,2,opt,name=ssl_files,json=sslFiles,proto3,oneof"` +} + +type UpstreamSslConfig_Sds struct { + // Use secret discovery service. + Sds *SDSConfig `protobuf:"bytes,4,opt,name=sds,proto3,oneof"` +} + +func (*UpstreamSslConfig_SecretRef) isUpstreamSslConfig_SslSecrets() {} + +func (*UpstreamSslConfig_SslFiles) isUpstreamSslConfig_SslSecrets() {} + +func (*UpstreamSslConfig_Sds) isUpstreamSslConfig_SslSecrets() {} + +type SDSConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Target uri for the sds channel. currently only a unix domain socket is supported. + TargetUri string `protobuf:"bytes,1,opt,name=target_uri,json=targetUri,proto3" json:"target_uri,omitempty"` + // Types that are valid to be assigned to SdsBuilder: + // + // *SDSConfig_CallCredentials + // *SDSConfig_ClusterName + SdsBuilder isSDSConfig_SdsBuilder `protobuf_oneof:"sds_builder"` + // The name of the secret containing the certificate + CertificatesSecretName string `protobuf:"bytes,3,opt,name=certificates_secret_name,json=certificatesSecretName,proto3" json:"certificates_secret_name,omitempty"` + // The name of secret containing the validation context (i.e. root ca) + ValidationContextName string `protobuf:"bytes,4,opt,name=validation_context_name,json=validationContextName,proto3" json:"validation_context_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SDSConfig) Reset() { + *x = SDSConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SDSConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SDSConfig) ProtoMessage() {} + +func (x *SDSConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SDSConfig.ProtoReflect.Descriptor instead. +func (*SDSConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_rawDescGZIP(), []int{3} +} + +func (x *SDSConfig) GetTargetUri() string { + if x != nil { + return x.TargetUri + } + return "" +} + +func (x *SDSConfig) GetSdsBuilder() isSDSConfig_SdsBuilder { + if x != nil { + return x.SdsBuilder + } + return nil +} + +func (x *SDSConfig) GetCallCredentials() *CallCredentials { + if x != nil { + if x, ok := x.SdsBuilder.(*SDSConfig_CallCredentials); ok { + return x.CallCredentials + } + } + return nil +} + +func (x *SDSConfig) GetClusterName() string { + if x != nil { + if x, ok := x.SdsBuilder.(*SDSConfig_ClusterName); ok { + return x.ClusterName + } + } + return "" +} + +func (x *SDSConfig) GetCertificatesSecretName() string { + if x != nil { + return x.CertificatesSecretName + } + return "" +} + +func (x *SDSConfig) GetValidationContextName() string { + if x != nil { + return x.ValidationContextName + } + return "" +} + +type isSDSConfig_SdsBuilder interface { + isSDSConfig_SdsBuilder() +} + +type SDSConfig_CallCredentials struct { + // Call credentials. + CallCredentials *CallCredentials `protobuf:"bytes,2,opt,name=call_credentials,json=callCredentials,proto3,oneof"` +} + +type SDSConfig_ClusterName struct { + // The name of the sds cluster in envoy + ClusterName string `protobuf:"bytes,5,opt,name=cluster_name,json=clusterName,proto3,oneof"` +} + +func (*SDSConfig_CallCredentials) isSDSConfig_SdsBuilder() {} + +func (*SDSConfig_ClusterName) isSDSConfig_SdsBuilder() {} + +type CallCredentials struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Call credentials are coming from a file, + FileCredentialSource *CallCredentials_FileCredentialSource `protobuf:"bytes,1,opt,name=file_credential_source,json=fileCredentialSource,proto3" json:"file_credential_source,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CallCredentials) Reset() { + *x = CallCredentials{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CallCredentials) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CallCredentials) ProtoMessage() {} + +func (x *CallCredentials) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CallCredentials.ProtoReflect.Descriptor instead. +func (*CallCredentials) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_rawDescGZIP(), []int{4} +} + +func (x *CallCredentials) GetFileCredentialSource() *CallCredentials_FileCredentialSource { + if x != nil { + return x.FileCredentialSource + } + return nil +} + +// General TLS parameters. See the [envoy docs](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/transport_sockets/tls/v3/common.proto#extensions-transport-sockets-tls-v3-tlsparameters) +// for more information on the meaning of these values. +type SslParameters struct { + state protoimpl.MessageState `protogen:"open.v1"` + MinimumProtocolVersion SslParameters_ProtocolVersion `protobuf:"varint,1,opt,name=minimum_protocol_version,json=minimumProtocolVersion,proto3,enum=gloo.solo.io.SslParameters_ProtocolVersion" json:"minimum_protocol_version,omitempty"` + MaximumProtocolVersion SslParameters_ProtocolVersion `protobuf:"varint,2,opt,name=maximum_protocol_version,json=maximumProtocolVersion,proto3,enum=gloo.solo.io.SslParameters_ProtocolVersion" json:"maximum_protocol_version,omitempty"` + CipherSuites []string `protobuf:"bytes,3,rep,name=cipher_suites,json=cipherSuites,proto3" json:"cipher_suites,omitempty"` + EcdhCurves []string `protobuf:"bytes,4,rep,name=ecdh_curves,json=ecdhCurves,proto3" json:"ecdh_curves,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SslParameters) Reset() { + *x = SslParameters{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SslParameters) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SslParameters) ProtoMessage() {} + +func (x *SslParameters) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SslParameters.ProtoReflect.Descriptor instead. +func (*SslParameters) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_rawDescGZIP(), []int{5} +} + +func (x *SslParameters) GetMinimumProtocolVersion() SslParameters_ProtocolVersion { + if x != nil { + return x.MinimumProtocolVersion + } + return SslParameters_TLS_AUTO +} + +func (x *SslParameters) GetMaximumProtocolVersion() SslParameters_ProtocolVersion { + if x != nil { + return x.MaximumProtocolVersion + } + return SslParameters_TLS_AUTO +} + +func (x *SslParameters) GetCipherSuites() []string { + if x != nil { + return x.CipherSuites + } + return nil +} + +func (x *SslParameters) GetEcdhCurves() []string { + if x != nil { + return x.EcdhCurves + } + return nil +} + +type CallCredentials_FileCredentialSource struct { + state protoimpl.MessageState `protogen:"open.v1"` + // File containing auth token. + TokenFileName string `protobuf:"bytes,1,opt,name=token_file_name,json=tokenFileName,proto3" json:"token_file_name,omitempty"` + // Header to carry the token. + Header string `protobuf:"bytes,2,opt,name=header,proto3" json:"header,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CallCredentials_FileCredentialSource) Reset() { + *x = CallCredentials_FileCredentialSource{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CallCredentials_FileCredentialSource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CallCredentials_FileCredentialSource) ProtoMessage() {} + +func (x *CallCredentials_FileCredentialSource) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CallCredentials_FileCredentialSource.ProtoReflect.Descriptor instead. +func (*CallCredentials_FileCredentialSource) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_rawDescGZIP(), []int{4, 0} +} + +func (x *CallCredentials_FileCredentialSource) GetTokenFileName() string { + if x != nil { + return x.TokenFileName + } + return "" +} + +func (x *CallCredentials_FileCredentialSource) GetHeader() string { + if x != nil { + return x.Header + } + return "" +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_rawDesc = string([]byte{ + 0x0a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x73, 0x73, 0x6c, 0x2f, 0x73, 0x73, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, + 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9f, 0x06, + 0x0a, 0x09, 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3a, 0x0a, 0x0a, 0x73, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x48, 0x00, 0x52, 0x09, 0x73, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x35, 0x0a, 0x09, 0x73, 0x73, 0x6c, 0x5f, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x53, 0x4c, 0x46, 0x69, 0x6c, + 0x65, 0x73, 0x48, 0x00, 0x52, 0x08, 0x73, 0x73, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x2b, + 0x0a, 0x03, 0x73, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x44, 0x53, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x03, 0x73, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, + 0x6e, 0x69, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0a, 0x73, 0x6e, 0x69, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x35, 0x0a, 0x17, + 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, + 0x6c, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x76, + 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6c, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x73, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, + 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x6c, 0x70, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x70, 0x6e, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x3a, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x5f, 0x77, + 0x61, 0x79, 0x5f, 0x74, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, + 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x57, 0x61, 0x79, + 0x54, 0x6c, 0x73, 0x12, 0x5f, 0x0a, 0x1e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, + 0x6c, 0x73, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6d, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, + 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1b, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x54, 0x6c, 0x73, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x62, 0x0a, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, + 0x74, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1d, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x70, 0x6f, 0x72, 0x74, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x56, 0x0a, 0x12, 0x6f, 0x63, 0x73, 0x70, + 0x5f, 0x73, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x63, + 0x73, 0x70, 0x53, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x10, + 0x6f, 0x63, 0x73, 0x70, 0x53, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x22, 0x4e, 0x0a, 0x10, 0x4f, 0x63, 0x73, 0x70, 0x53, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x45, 0x4e, 0x49, 0x45, 0x4e, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x50, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, + 0x52, 0x49, 0x43, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x50, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, + 0x0f, 0x0a, 0x0b, 0x4d, 0x55, 0x53, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x50, 0x4c, 0x45, 0x10, 0x02, + 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x73, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x22, + 0x78, 0x0a, 0x08, 0x53, 0x53, 0x4c, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, + 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, + 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6c, 0x73, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6c, 0x73, 0x4b, 0x65, 0x79, 0x12, + 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x63, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x74, 0x43, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x63, 0x73, 0x70, + 0x5f, 0x73, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, + 0x63, 0x73, 0x70, 0x53, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x22, 0xf8, 0x03, 0x0a, 0x11, 0x55, 0x70, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x3a, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x48, 0x00, + 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x35, 0x0a, 0x09, 0x73, + 0x73, 0x6c, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x53, + 0x4c, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x08, 0x73, 0x73, 0x6c, 0x46, 0x69, 0x6c, + 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x03, 0x73, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, + 0x44, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x03, 0x73, 0x64, 0x73, 0x12, + 0x10, 0x0a, 0x03, 0x73, 0x6e, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x6e, + 0x69, 0x12, 0x35, 0x0a, 0x17, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x73, 0x75, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x14, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x41, 0x6c, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x73, 0x6c, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x6c, 0x70, 0x6e, 0x5f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, + 0x6c, 0x70, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x4b, 0x0a, 0x13, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x65, 0x6e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x6e, 0x65, + 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, + 0x5f, 0x77, 0x61, 0x79, 0x5f, 0x74, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x57, + 0x61, 0x79, 0x54, 0x6c, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x73, 0x6c, 0x5f, 0x73, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x73, 0x22, 0x9c, 0x02, 0x0a, 0x09, 0x53, 0x44, 0x53, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x72, 0x69, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x72, + 0x69, 0x12, 0x4a, 0x0a, 0x10, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x63, 0x61, + 0x6c, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x23, 0x0a, + 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x73, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x17, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x64, 0x73, 0x5f, 0x62, 0x75, 0x69, 0x6c, + 0x64, 0x65, 0x72, 0x22, 0xd3, 0x01, 0x0a, 0x0f, 0x43, 0x61, 0x6c, 0x6c, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x68, 0x0a, 0x16, 0x66, 0x69, 0x6c, 0x65, 0x5f, + 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x14, 0x66, 0x69, 0x6c, + 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x1a, 0x56, 0x0a, 0x14, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x46, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0xf8, 0x02, 0x0a, 0x0d, 0x53, 0x73, + 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x65, 0x0a, 0x18, 0x6d, + 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x73, 0x6c, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x6d, 0x69, 0x6e, 0x69, + 0x6d, 0x75, 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x65, 0x0a, 0x18, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x73, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x16, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x69, 0x70, + 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0c, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x12, 0x1f, + 0x0a, 0x0b, 0x65, 0x63, 0x64, 0x68, 0x5f, 0x63, 0x75, 0x72, 0x76, 0x65, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x63, 0x64, 0x68, 0x43, 0x75, 0x72, 0x76, 0x65, 0x73, 0x22, + 0x53, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x4c, 0x53, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, + 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x76, 0x31, 0x5f, 0x30, 0x10, 0x01, 0x12, 0x0b, 0x0a, + 0x07, 0x54, 0x4c, 0x53, 0x76, 0x31, 0x5f, 0x31, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, + 0x53, 0x76, 0x31, 0x5f, 0x32, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x76, 0x31, + 0x5f, 0x33, 0x10, 0x04, 0x42, 0x46, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, + 0x04, 0x01, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x73, 0x6c, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_goTypes = []any{ + (SslConfig_OcspStaplePolicy)(0), // 0: gloo.solo.io.SslConfig.OcspStaplePolicy + (SslParameters_ProtocolVersion)(0), // 1: gloo.solo.io.SslParameters.ProtocolVersion + (*SslConfig)(nil), // 2: gloo.solo.io.SslConfig + (*SSLFiles)(nil), // 3: gloo.solo.io.SSLFiles + (*UpstreamSslConfig)(nil), // 4: gloo.solo.io.UpstreamSslConfig + (*SDSConfig)(nil), // 5: gloo.solo.io.SDSConfig + (*CallCredentials)(nil), // 6: gloo.solo.io.CallCredentials + (*SslParameters)(nil), // 7: gloo.solo.io.SslParameters + (*CallCredentials_FileCredentialSource)(nil), // 8: gloo.solo.io.CallCredentials.FileCredentialSource + (*core.ResourceRef)(nil), // 9: core.solo.io.ResourceRef + (*wrapperspb.BoolValue)(nil), // 10: google.protobuf.BoolValue + (*durationpb.Duration)(nil), // 11: google.protobuf.Duration +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_depIdxs = []int32{ + 9, // 0: gloo.solo.io.SslConfig.secret_ref:type_name -> core.solo.io.ResourceRef + 3, // 1: gloo.solo.io.SslConfig.ssl_files:type_name -> gloo.solo.io.SSLFiles + 5, // 2: gloo.solo.io.SslConfig.sds:type_name -> gloo.solo.io.SDSConfig + 7, // 3: gloo.solo.io.SslConfig.parameters:type_name -> gloo.solo.io.SslParameters + 10, // 4: gloo.solo.io.SslConfig.one_way_tls:type_name -> google.protobuf.BoolValue + 10, // 5: gloo.solo.io.SslConfig.disable_tls_session_resumption:type_name -> google.protobuf.BoolValue + 11, // 6: gloo.solo.io.SslConfig.transport_socket_connect_timeout:type_name -> google.protobuf.Duration + 0, // 7: gloo.solo.io.SslConfig.ocsp_staple_policy:type_name -> gloo.solo.io.SslConfig.OcspStaplePolicy + 9, // 8: gloo.solo.io.UpstreamSslConfig.secret_ref:type_name -> core.solo.io.ResourceRef + 3, // 9: gloo.solo.io.UpstreamSslConfig.ssl_files:type_name -> gloo.solo.io.SSLFiles + 5, // 10: gloo.solo.io.UpstreamSslConfig.sds:type_name -> gloo.solo.io.SDSConfig + 7, // 11: gloo.solo.io.UpstreamSslConfig.parameters:type_name -> gloo.solo.io.SslParameters + 10, // 12: gloo.solo.io.UpstreamSslConfig.allow_renegotiation:type_name -> google.protobuf.BoolValue + 10, // 13: gloo.solo.io.UpstreamSslConfig.one_way_tls:type_name -> google.protobuf.BoolValue + 6, // 14: gloo.solo.io.SDSConfig.call_credentials:type_name -> gloo.solo.io.CallCredentials + 8, // 15: gloo.solo.io.CallCredentials.file_credential_source:type_name -> gloo.solo.io.CallCredentials.FileCredentialSource + 1, // 16: gloo.solo.io.SslParameters.minimum_protocol_version:type_name -> gloo.solo.io.SslParameters.ProtocolVersion + 1, // 17: gloo.solo.io.SslParameters.maximum_protocol_version:type_name -> gloo.solo.io.SslParameters.ProtocolVersion + 18, // [18:18] is the sub-list for method output_type + 18, // [18:18] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name +} + +func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_init() } +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_msgTypes[0].OneofWrappers = []any{ + (*SslConfig_SecretRef)(nil), + (*SslConfig_SslFiles)(nil), + (*SslConfig_Sds)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_msgTypes[2].OneofWrappers = []any{ + (*UpstreamSslConfig_SecretRef)(nil), + (*UpstreamSslConfig_SslFiles)(nil), + (*UpstreamSslConfig_Sds)(nil), + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_msgTypes[3].OneofWrappers = []any{ + (*SDSConfig_CallCredentials)(nil), + (*SDSConfig_ClusterName)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_rawDesc)), + NumEnums: 2, + NumMessages: 7, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_enumTypes, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_ssl_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/ssl/ssl.pb.hash.go b/pkg/api/gloo.solo.io/v1/ssl/ssl.pb.hash.go new file mode 100644 index 000000000..45742bb5a --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/ssl/ssl.pb.hash.go @@ -0,0 +1,609 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl/ssl.proto + +package ssl + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SslConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl.SslConfig")); err != nil { + return 0, err + } + + for _, v := range m.GetSniDomains() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + for _, v := range m.GetVerifySubjectAltName() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetParameters()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Parameters")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetParameters(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Parameters")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetAlpnProtocols() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetOneWayTls()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OneWayTls")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOneWayTls(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OneWayTls")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDisableTlsSessionResumption()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisableTlsSessionResumption")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisableTlsSessionResumption(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisableTlsSessionResumption")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTransportSocketConnectTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TransportSocketConnectTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTransportSocketConnectTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TransportSocketConnectTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetOcspStaplePolicy()) + if err != nil { + return 0, err + } + + switch m.SslSecrets.(type) { + + case *SslConfig_SecretRef: + + if h, ok := interface{}(m.GetSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *SslConfig_SslFiles: + + if h, ok := interface{}(m.GetSslFiles()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslFiles")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslFiles(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslFiles")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *SslConfig_Sds: + + if h, ok := interface{}(m.GetSds()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Sds")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSds(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Sds")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SSLFiles) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl.SSLFiles")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetTlsCert())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetTlsKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetRootCa())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetOcspStaple())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UpstreamSslConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl.UpstreamSslConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetSni())); err != nil { + return 0, err + } + + for _, v := range m.GetVerifySubjectAltName() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetParameters()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Parameters")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetParameters(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Parameters")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetAlpnProtocols() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetAllowRenegotiation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowRenegotiation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAllowRenegotiation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AllowRenegotiation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetOneWayTls()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OneWayTls")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOneWayTls(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OneWayTls")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.SslSecrets.(type) { + + case *UpstreamSslConfig_SecretRef: + + if h, ok := interface{}(m.GetSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSslConfig_SslFiles: + + if h, ok := interface{}(m.GetSslFiles()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslFiles")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslFiles(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslFiles")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSslConfig_Sds: + + if h, ok := interface{}(m.GetSds()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Sds")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSds(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Sds")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SDSConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl.SDSConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetTargetUri())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetCertificatesSecretName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetValidationContextName())); err != nil { + return 0, err + } + + switch m.SdsBuilder.(type) { + + case *SDSConfig_CallCredentials: + + if h, ok := interface{}(m.GetCallCredentials()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CallCredentials")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCallCredentials(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CallCredentials")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *SDSConfig_ClusterName: + + if _, err = hasher.Write([]byte(m.GetClusterName())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *CallCredentials) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl.CallCredentials")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetFileCredentialSource()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FileCredentialSource")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFileCredentialSource(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FileCredentialSource")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *SslParameters) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl.SslParameters")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetMinimumProtocolVersion()) + if err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetMaximumProtocolVersion()) + if err != nil { + return 0, err + } + + for _, v := range m.GetCipherSuites() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + for _, v := range m.GetEcdhCurves() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *CallCredentials_FileCredentialSource) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl.CallCredentials_FileCredentialSource")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetTokenFileName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetHeader())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/ssl/ssl.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/ssl/ssl.pb.uniquehash.go new file mode 100644 index 000000000..76b7b5da9 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/ssl/ssl.pb.uniquehash.go @@ -0,0 +1,709 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/ssl/ssl.proto + +package ssl + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SslConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl.SslConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SniDomains")); err != nil { + return 0, err + } + for i, v := range m.GetSniDomains() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("VerifySubjectAltName")); err != nil { + return 0, err + } + for i, v := range m.GetVerifySubjectAltName() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetParameters()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Parameters")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetParameters(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Parameters")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("AlpnProtocols")); err != nil { + return 0, err + } + for i, v := range m.GetAlpnProtocols() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetOneWayTls()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OneWayTls")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOneWayTls(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OneWayTls")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDisableTlsSessionResumption()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisableTlsSessionResumption")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisableTlsSessionResumption(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisableTlsSessionResumption")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTransportSocketConnectTimeout()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TransportSocketConnectTimeout")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTransportSocketConnectTimeout(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TransportSocketConnectTimeout")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("OcspStaplePolicy")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetOcspStaplePolicy()) + if err != nil { + return 0, err + } + + switch m.SslSecrets.(type) { + + case *SslConfig_SecretRef: + + if h, ok := interface{}(m.GetSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *SslConfig_SslFiles: + + if h, ok := interface{}(m.GetSslFiles()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslFiles")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslFiles(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslFiles")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *SslConfig_Sds: + + if h, ok := interface{}(m.GetSds()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Sds")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSds(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Sds")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SSLFiles) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl.SSLFiles")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TlsCert")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTlsCert())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TlsKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTlsKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RootCa")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRootCa())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("OcspStaple")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetOcspStaple())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSslConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl.UpstreamSslConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Sni")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSni())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("VerifySubjectAltName")); err != nil { + return 0, err + } + for i, v := range m.GetVerifySubjectAltName() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetParameters()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Parameters")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetParameters(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Parameters")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("AlpnProtocols")); err != nil { + return 0, err + } + for i, v := range m.GetAlpnProtocols() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetAllowRenegotiation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AllowRenegotiation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAllowRenegotiation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AllowRenegotiation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetOneWayTls()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OneWayTls")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOneWayTls(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OneWayTls")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.SslSecrets.(type) { + + case *UpstreamSslConfig_SecretRef: + + if h, ok := interface{}(m.GetSecretRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSecretRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SecretRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSslConfig_SslFiles: + + if h, ok := interface{}(m.GetSslFiles()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslFiles")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslFiles(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslFiles")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSslConfig_Sds: + + if h, ok := interface{}(m.GetSds()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Sds")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSds(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Sds")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SDSConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl.SDSConfig")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TargetUri")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTargetUri())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CertificatesSecretName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetCertificatesSecretName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ValidationContextName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetValidationContextName())); err != nil { + return 0, err + } + + switch m.SdsBuilder.(type) { + + case *SDSConfig_CallCredentials: + + if h, ok := interface{}(m.GetCallCredentials()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CallCredentials")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCallCredentials(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CallCredentials")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *SDSConfig_ClusterName: + + if _, err = hasher.Write([]byte("ClusterName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetClusterName())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *CallCredentials) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl.CallCredentials")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetFileCredentialSource()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("FileCredentialSource")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFileCredentialSource(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("FileCredentialSource")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SslParameters) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl.SslParameters")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MinimumProtocolVersion")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMinimumProtocolVersion()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("MaximumProtocolVersion")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetMaximumProtocolVersion()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("CipherSuites")); err != nil { + return 0, err + } + for i, v := range m.GetCipherSuites() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("EcdhCurves")); err != nil { + return 0, err + } + for i, v := range m.GetEcdhCurves() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *CallCredentials_FileCredentialSource) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl.CallCredentials_FileCredentialSource")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("TokenFileName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetTokenFileName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Header")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHeader())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/subset.pb.clone.go b/pkg/api/gloo.solo.io/v1/subset.pb.clone.go new file mode 100644 index 000000000..a8a3cd3b0 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/subset.pb.clone.go @@ -0,0 +1,46 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/subset.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *Subset) Clone() proto.Message { + var target *Subset + if m == nil { + return target + } + target = &Subset{} + + if m.GetValues() != nil { + target.Values = make(map[string]string, len(m.GetValues())) + for k, v := range m.GetValues() { + + target.Values[k] = v + + } + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/subset.pb.go b/pkg/api/gloo.solo.io/v1/subset.pb.go index 60a993619..a401d7e0e 100644 --- a/pkg/api/gloo.solo.io/v1/subset.pb.go +++ b/pkg/api/gloo.solo.io/v1/subset.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/subset.proto @@ -9,8 +9,8 @@ package v1 import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -23,25 +23,18 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Subset struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Values map[string]string `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - Values map[string]string `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *Subset) Reset() { *x = Subset{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Subset) String() string { @@ -52,7 +45,7 @@ func (*Subset) ProtoMessage() {} func (x *Subset) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -76,7 +69,7 @@ func (x *Subset) GetValues() map[string]string { var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_rawDesc = string([]byte{ 0x0a, 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -90,28 +83,28 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_rawDesc = [] 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x3e, 0x5a, - 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, - 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2f, 0x76, 0x31, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x42, 0xb8, + 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_goTypes = []any{ (*Subset)(nil), // 0: gloo.solo.io.Subset nil, // 1: gloo.solo.io.Subset.ValuesEntry } @@ -129,25 +122,11 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_init() { if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Subset); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_rawDesc)), NumEnums: 0, NumMessages: 2, NumExtensions: 0, @@ -158,7 +137,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_init() { MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_subset_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/subset.pb.hash.go b/pkg/api/gloo.solo.io/v1/subset.pb.hash.go index 07d17bde7..6951dd32f 100644 --- a/pkg/api/gloo.solo.io/v1/subset.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/subset.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Subset) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil diff --git a/pkg/api/gloo.solo.io/v1/subset.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/subset.pb.uniquehash.go new file mode 100644 index 000000000..773f4e16f --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/subset.pb.uniquehash.go @@ -0,0 +1,76 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/subset.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Subset) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.Subset")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetValues() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/tcp_listener_options.pb.clone.go b/pkg/api/gloo.solo.io/v1/tcp_listener_options.pb.clone.go new file mode 100644 index 000000000..4cc7f80d5 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/tcp_listener_options.pb.clone.go @@ -0,0 +1,61 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/tcp_listener_options.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_connection_limit "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/connection_limit" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_local_ratelimit "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/local_ratelimit" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_tcp "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tcp" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *TcpListenerOptions) Clone() proto.Message { + var target *TcpListenerOptions + if m == nil { + return target + } + target = &TcpListenerOptions{} + + if h, ok := interface{}(m.GetTcpProxySettings()).(clone.Cloner); ok { + target.TcpProxySettings = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_tcp.TcpProxySettings) + } else { + target.TcpProxySettings = proto.Clone(m.GetTcpProxySettings()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_tcp.TcpProxySettings) + } + + if h, ok := interface{}(m.GetConnectionLimit()).(clone.Cloner); ok { + target.ConnectionLimit = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_connection_limit.ConnectionLimit) + } else { + target.ConnectionLimit = proto.Clone(m.GetConnectionLimit()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_connection_limit.ConnectionLimit) + } + + if h, ok := interface{}(m.GetLocalRatelimit()).(clone.Cloner); ok { + target.LocalRatelimit = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_local_ratelimit.TokenBucket) + } else { + target.LocalRatelimit = proto.Clone(m.GetLocalRatelimit()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_local_ratelimit.TokenBucket) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/tcp_listener_options.pb.equal.go b/pkg/api/gloo.solo.io/v1/tcp_listener_options.pb.equal.go new file mode 100644 index 000000000..ff2ec95b9 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/tcp_listener_options.pb.equal.go @@ -0,0 +1,80 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/tcp_listener_options.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *TcpListenerOptions) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*TcpListenerOptions) + if !ok { + that2, ok := that.(TcpListenerOptions) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetTcpProxySettings()).(equality.Equalizer); ok { + if !h.Equal(target.GetTcpProxySettings()) { + return false + } + } else { + if !proto.Equal(m.GetTcpProxySettings(), target.GetTcpProxySettings()) { + return false + } + } + + if h, ok := interface{}(m.GetConnectionLimit()).(equality.Equalizer); ok { + if !h.Equal(target.GetConnectionLimit()) { + return false + } + } else { + if !proto.Equal(m.GetConnectionLimit(), target.GetConnectionLimit()) { + return false + } + } + + if h, ok := interface{}(m.GetLocalRatelimit()).(equality.Equalizer); ok { + if !h.Equal(target.GetLocalRatelimit()) { + return false + } + } else { + if !proto.Equal(m.GetLocalRatelimit(), target.GetLocalRatelimit()) { + return false + } + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/tcp_listener_options.pb.go b/pkg/api/gloo.solo.io/v1/tcp_listener_options.pb.go new file mode 100644 index 000000000..63b3716cc --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/tcp_listener_options.pb.go @@ -0,0 +1,197 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/tcp_listener_options.proto + +package v1 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + connection_limit "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/connection_limit" + local_ratelimit "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/local_ratelimit" + tcp "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tcp" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Optional, feature-specific configuration that lives on tcp listeners +type TcpListenerOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + TcpProxySettings *tcp.TcpProxySettings `protobuf:"bytes,3,opt,name=tcp_proxy_settings,json=tcpProxySettings,proto3" json:"tcp_proxy_settings,omitempty"` + // ConnectionLimit can be used to limit the number of active connections per gateway. Useful for resource protection as well as DoS prevention. + ConnectionLimit *connection_limit.ConnectionLimit `protobuf:"bytes,4,opt,name=connection_limit,json=connectionLimit,proto3" json:"connection_limit,omitempty"` + // LocalRatelimit can be used to rate limit the connections per gateway at the L4 layer. + // It uses envoy's own local rate limit filter to do so, without the need for an external rate limit server to be set up. + LocalRatelimit *local_ratelimit.TokenBucket `protobuf:"bytes,5,opt,name=local_ratelimit,json=localRatelimit,proto3" json:"local_ratelimit,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TcpListenerOptions) Reset() { + *x = TcpListenerOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TcpListenerOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TcpListenerOptions) ProtoMessage() {} + +func (x *TcpListenerOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TcpListenerOptions.ProtoReflect.Descriptor instead. +func (*TcpListenerOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_rawDescGZIP(), []int{0} +} + +func (x *TcpListenerOptions) GetTcpProxySettings() *tcp.TcpProxySettings { + if x != nil { + return x.TcpProxySettings + } + return nil +} + +func (x *TcpListenerOptions) GetConnectionLimit() *connection_limit.ConnectionLimit { + if x != nil { + return x.ConnectionLimit + } + return nil +} + +func (x *TcpListenerOptions) GetLocalRatelimit() *local_ratelimit.TokenBucket { + if x != nil { + return x.LocalRatelimit + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_rawDesc = string([]byte{ + 0x0a, 0x48, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x74, 0x63, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x63, 0x70, 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x5d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, + 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x5b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x61, + 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x61, + 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xad, 0x02, + 0x0a, 0x12, 0x54, 0x63, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x12, 0x74, 0x63, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2a, 0x2e, 0x74, 0x63, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x63, 0x70, 0x50, + 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x10, 0x74, 0x63, + 0x70, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x61, + 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x12, 0x5a, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x0e, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x42, 0xb8, + 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_goTypes = []any{ + (*TcpListenerOptions)(nil), // 0: gloo.solo.io.TcpListenerOptions + (*tcp.TcpProxySettings)(nil), // 1: tcp.options.gloo.solo.io.TcpProxySettings + (*connection_limit.ConnectionLimit)(nil), // 2: connection_limit.options.gloo.solo.io.ConnectionLimit + (*local_ratelimit.TokenBucket)(nil), // 3: local_ratelimit.options.gloo.solo.io.TokenBucket +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_depIdxs = []int32{ + 1, // 0: gloo.solo.io.TcpListenerOptions.tcp_proxy_settings:type_name -> tcp.options.gloo.solo.io.TcpProxySettings + 2, // 1: gloo.solo.io.TcpListenerOptions.connection_limit:type_name -> connection_limit.options.gloo.solo.io.ConnectionLimit + 3, // 2: gloo.solo.io.TcpListenerOptions.local_ratelimit:type_name -> local_ratelimit.options.gloo.solo.io.TokenBucket + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name +} + +func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_init() } +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_tcp_listener_options_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/tcp_listener_options.pb.hash.go b/pkg/api/gloo.solo.io/v1/tcp_listener_options.pb.hash.go new file mode 100644 index 000000000..29d044111 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/tcp_listener_options.pb.hash.go @@ -0,0 +1,106 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/tcp_listener_options.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *TcpListenerOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.TcpListenerOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTcpProxySettings()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpProxySettings")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTcpProxySettings(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TcpProxySettings")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetConnectionLimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectionLimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConnectionLimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConnectionLimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetLocalRatelimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LocalRatelimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLocalRatelimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LocalRatelimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/tcp_listener_options.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/tcp_listener_options.pb.uniquehash.go new file mode 100644 index 000000000..3dcd60a38 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/tcp_listener_options.pb.uniquehash.go @@ -0,0 +1,107 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/tcp_listener_options.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *TcpListenerOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.TcpListenerOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetTcpProxySettings()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpProxySettings")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTcpProxySettings(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TcpProxySettings")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetConnectionLimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectionLimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConnectionLimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConnectionLimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetLocalRatelimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LocalRatelimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLocalRatelimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LocalRatelimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/upstream.pb.clone.go b/pkg/api/gloo.solo.io/v1/upstream.pb.clone.go new file mode 100644 index 000000000..57eb664e1 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/upstream.pb.clone.go @@ -0,0 +1,447 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/upstream.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_api_v2_cluster "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/cluster" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_api_v2_core "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/core" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_circuit_breaker "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/circuit_breaker" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ai "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_gcp "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/gcp" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_aws "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/aws" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_aws_ec2 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/aws/ec2" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_azure "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/azure" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_consul "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/consul" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_kubernetes "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/kubernetes" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_pipe "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/pipe" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_static "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/static" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl" + + google_golang_org_protobuf_types_known_durationpb "google.golang.org/protobuf/types/known/durationpb" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *UpstreamSpec) Clone() proto.Message { + var target *UpstreamSpec + if m == nil { + return target + } + target = &UpstreamSpec{} + + if h, ok := interface{}(m.GetDiscoveryMetadata()).(clone.Cloner); ok { + target.DiscoveryMetadata = h.Clone().(*DiscoveryMetadata) + } else { + target.DiscoveryMetadata = proto.Clone(m.GetDiscoveryMetadata()).(*DiscoveryMetadata) + } + + if h, ok := interface{}(m.GetSslConfig()).(clone.Cloner); ok { + target.SslConfig = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.UpstreamSslConfig) + } else { + target.SslConfig = proto.Clone(m.GetSslConfig()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.UpstreamSslConfig) + } + + if h, ok := interface{}(m.GetCircuitBreakers()).(clone.Cloner); ok { + target.CircuitBreakers = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_circuit_breaker.CircuitBreakerConfig) + } else { + target.CircuitBreakers = proto.Clone(m.GetCircuitBreakers()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_circuit_breaker.CircuitBreakerConfig) + } + + if h, ok := interface{}(m.GetLoadBalancerConfig()).(clone.Cloner); ok { + target.LoadBalancerConfig = h.Clone().(*LoadBalancerConfig) + } else { + target.LoadBalancerConfig = proto.Clone(m.GetLoadBalancerConfig()).(*LoadBalancerConfig) + } + + if m.GetHealthChecks() != nil { + target.HealthChecks = make([]*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_api_v2_core.HealthCheck, len(m.GetHealthChecks())) + for idx, v := range m.GetHealthChecks() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.HealthChecks[idx] = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_api_v2_core.HealthCheck) + } else { + target.HealthChecks[idx] = proto.Clone(v).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_api_v2_core.HealthCheck) + } + + } + } + + if h, ok := interface{}(m.GetOutlierDetection()).(clone.Cloner); ok { + target.OutlierDetection = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_api_v2_cluster.OutlierDetection) + } else { + target.OutlierDetection = proto.Clone(m.GetOutlierDetection()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_api_v2_cluster.OutlierDetection) + } + + if h, ok := interface{}(m.GetFailover()).(clone.Cloner); ok { + target.Failover = h.Clone().(*Failover) + } else { + target.Failover = proto.Clone(m.GetFailover()).(*Failover) + } + + if h, ok := interface{}(m.GetConnectionConfig()).(clone.Cloner); ok { + target.ConnectionConfig = h.Clone().(*ConnectionConfig) + } else { + target.ConnectionConfig = proto.Clone(m.GetConnectionConfig()).(*ConnectionConfig) + } + + target.ProtocolSelection = m.GetProtocolSelection() + + if h, ok := interface{}(m.GetUseHttp2()).(clone.Cloner); ok { + target.UseHttp2 = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.UseHttp2 = proto.Clone(m.GetUseHttp2()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetInitialStreamWindowSize()).(clone.Cloner); ok { + target.InitialStreamWindowSize = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.InitialStreamWindowSize = proto.Clone(m.GetInitialStreamWindowSize()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetInitialConnectionWindowSize()).(clone.Cloner); ok { + target.InitialConnectionWindowSize = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.InitialConnectionWindowSize = proto.Clone(m.GetInitialConnectionWindowSize()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetMaxConcurrentStreams()).(clone.Cloner); ok { + target.MaxConcurrentStreams = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } else { + target.MaxConcurrentStreams = proto.Clone(m.GetMaxConcurrentStreams()).(*google_golang_org_protobuf_types_known_wrapperspb.UInt32Value) + } + + if h, ok := interface{}(m.GetOverrideStreamErrorOnInvalidHttpMessage()).(clone.Cloner); ok { + target.OverrideStreamErrorOnInvalidHttpMessage = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.OverrideStreamErrorOnInvalidHttpMessage = proto.Clone(m.GetOverrideStreamErrorOnInvalidHttpMessage()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetHttpProxyHostname()).(clone.Cloner); ok { + target.HttpProxyHostname = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.HttpProxyHostname = proto.Clone(m.GetHttpProxyHostname()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + if h, ok := interface{}(m.GetHttpConnectSslConfig()).(clone.Cloner); ok { + target.HttpConnectSslConfig = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.UpstreamSslConfig) + } else { + target.HttpConnectSslConfig = proto.Clone(m.GetHttpConnectSslConfig()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_ssl.UpstreamSslConfig) + } + + if m.GetHttpConnectHeaders() != nil { + target.HttpConnectHeaders = make([]*HeaderValue, len(m.GetHttpConnectHeaders())) + for idx, v := range m.GetHttpConnectHeaders() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.HttpConnectHeaders[idx] = h.Clone().(*HeaderValue) + } else { + target.HttpConnectHeaders[idx] = proto.Clone(v).(*HeaderValue) + } + + } + } + + if h, ok := interface{}(m.GetIgnoreHealthOnHostRemoval()).(clone.Cloner); ok { + target.IgnoreHealthOnHostRemoval = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.IgnoreHealthOnHostRemoval = proto.Clone(m.GetIgnoreHealthOnHostRemoval()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetRespectDnsTtl()).(clone.Cloner); ok { + target.RespectDnsTtl = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.RespectDnsTtl = proto.Clone(m.GetRespectDnsTtl()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetDnsRefreshRate()).(clone.Cloner); ok { + target.DnsRefreshRate = h.Clone().(*google_golang_org_protobuf_types_known_durationpb.Duration) + } else { + target.DnsRefreshRate = proto.Clone(m.GetDnsRefreshRate()).(*google_golang_org_protobuf_types_known_durationpb.Duration) + } + + if h, ok := interface{}(m.GetProxyProtocolVersion()).(clone.Cloner); ok { + target.ProxyProtocolVersion = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } else { + target.ProxyProtocolVersion = proto.Clone(m.GetProxyProtocolVersion()).(*google_golang_org_protobuf_types_known_wrapperspb.StringValue) + } + + if h, ok := interface{}(m.GetPreconnectPolicy()).(clone.Cloner); ok { + target.PreconnectPolicy = h.Clone().(*PreconnectPolicy) + } else { + target.PreconnectPolicy = proto.Clone(m.GetPreconnectPolicy()).(*PreconnectPolicy) + } + + if h, ok := interface{}(m.GetDisableIstioAutoMtls()).(clone.Cloner); ok { + target.DisableIstioAutoMtls = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.DisableIstioAutoMtls = proto.Clone(m.GetDisableIstioAutoMtls()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + switch m.UpstreamType.(type) { + + case *UpstreamSpec_Kube: + + if h, ok := interface{}(m.GetKube()).(clone.Cloner); ok { + target.UpstreamType = &UpstreamSpec_Kube{ + Kube: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_kubernetes.UpstreamSpec), + } + } else { + target.UpstreamType = &UpstreamSpec_Kube{ + Kube: proto.Clone(m.GetKube()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_kubernetes.UpstreamSpec), + } + } + + case *UpstreamSpec_Static: + + if h, ok := interface{}(m.GetStatic()).(clone.Cloner); ok { + target.UpstreamType = &UpstreamSpec_Static{ + Static: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_static.UpstreamSpec), + } + } else { + target.UpstreamType = &UpstreamSpec_Static{ + Static: proto.Clone(m.GetStatic()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_static.UpstreamSpec), + } + } + + case *UpstreamSpec_Pipe: + + if h, ok := interface{}(m.GetPipe()).(clone.Cloner); ok { + target.UpstreamType = &UpstreamSpec_Pipe{ + Pipe: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_pipe.UpstreamSpec), + } + } else { + target.UpstreamType = &UpstreamSpec_Pipe{ + Pipe: proto.Clone(m.GetPipe()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_pipe.UpstreamSpec), + } + } + + case *UpstreamSpec_Aws: + + if h, ok := interface{}(m.GetAws()).(clone.Cloner); ok { + target.UpstreamType = &UpstreamSpec_Aws{ + Aws: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_aws.UpstreamSpec), + } + } else { + target.UpstreamType = &UpstreamSpec_Aws{ + Aws: proto.Clone(m.GetAws()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_aws.UpstreamSpec), + } + } + + case *UpstreamSpec_Azure: + + if h, ok := interface{}(m.GetAzure()).(clone.Cloner); ok { + target.UpstreamType = &UpstreamSpec_Azure{ + Azure: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_azure.UpstreamSpec), + } + } else { + target.UpstreamType = &UpstreamSpec_Azure{ + Azure: proto.Clone(m.GetAzure()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_azure.UpstreamSpec), + } + } + + case *UpstreamSpec_Consul: + + if h, ok := interface{}(m.GetConsul()).(clone.Cloner); ok { + target.UpstreamType = &UpstreamSpec_Consul{ + Consul: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_consul.UpstreamSpec), + } + } else { + target.UpstreamType = &UpstreamSpec_Consul{ + Consul: proto.Clone(m.GetConsul()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_consul.UpstreamSpec), + } + } + + case *UpstreamSpec_AwsEc2: + + if h, ok := interface{}(m.GetAwsEc2()).(clone.Cloner); ok { + target.UpstreamType = &UpstreamSpec_AwsEc2{ + AwsEc2: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_aws_ec2.UpstreamSpec), + } + } else { + target.UpstreamType = &UpstreamSpec_AwsEc2{ + AwsEc2: proto.Clone(m.GetAwsEc2()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_aws_ec2.UpstreamSpec), + } + } + + case *UpstreamSpec_Gcp: + + if h, ok := interface{}(m.GetGcp()).(clone.Cloner); ok { + target.UpstreamType = &UpstreamSpec_Gcp{ + Gcp: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_gcp.UpstreamSpec), + } + } else { + target.UpstreamType = &UpstreamSpec_Gcp{ + Gcp: proto.Clone(m.GetGcp()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_gcp.UpstreamSpec), + } + } + + case *UpstreamSpec_Ai: + + if h, ok := interface{}(m.GetAi()).(clone.Cloner); ok { + target.UpstreamType = &UpstreamSpec_Ai{ + Ai: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ai.UpstreamSpec), + } + } else { + target.UpstreamType = &UpstreamSpec_Ai{ + Ai: proto.Clone(m.GetAi()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ai.UpstreamSpec), + } + } + + } + + return target +} + +// Clone function +func (m *DiscoveryMetadata) Clone() proto.Message { + var target *DiscoveryMetadata + if m == nil { + return target + } + target = &DiscoveryMetadata{} + + if m.GetLabels() != nil { + target.Labels = make(map[string]string, len(m.GetLabels())) + for k, v := range m.GetLabels() { + + target.Labels[k] = v + + } + } + + return target +} + +// Clone function +func (m *HeaderValue) Clone() proto.Message { + var target *HeaderValue + if m == nil { + return target + } + target = &HeaderValue{} + + target.Key = m.GetKey() + + target.Value = m.GetValue() + + return target +} + +// Clone function +func (m *PreconnectPolicy) Clone() proto.Message { + var target *PreconnectPolicy + if m == nil { + return target + } + target = &PreconnectPolicy{} + + if h, ok := interface{}(m.GetPerUpstreamPreconnectRatio()).(clone.Cloner); ok { + target.PerUpstreamPreconnectRatio = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.DoubleValue) + } else { + target.PerUpstreamPreconnectRatio = proto.Clone(m.GetPerUpstreamPreconnectRatio()).(*google_golang_org_protobuf_types_known_wrapperspb.DoubleValue) + } + + if h, ok := interface{}(m.GetPredictivePreconnectRatio()).(clone.Cloner); ok { + target.PredictivePreconnectRatio = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.DoubleValue) + } else { + target.PredictivePreconnectRatio = proto.Clone(m.GetPredictivePreconnectRatio()).(*google_golang_org_protobuf_types_known_wrapperspb.DoubleValue) + } + + return target +} + +// Clone function +func (m *UpstreamStatus) Clone() proto.Message { + var target *UpstreamStatus + if m == nil { + return target + } + target = &UpstreamStatus{} + + target.State = m.GetState() + + target.Reason = m.GetReason() + + target.ReportedBy = m.GetReportedBy() + + if m.GetSubresourceStatuses() != nil { + target.SubresourceStatuses = make(map[string]*UpstreamStatus, len(m.GetSubresourceStatuses())) + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SubresourceStatuses[k] = h.Clone().(*UpstreamStatus) + } else { + target.SubresourceStatuses[k] = proto.Clone(v).(*UpstreamStatus) + } + + } + } + + if h, ok := interface{}(m.GetDetails()).(clone.Cloner); ok { + target.Details = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Details = proto.Clone(m.GetDetails()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + return target +} + +// Clone function +func (m *UpstreamNamespacedStatuses) Clone() proto.Message { + var target *UpstreamNamespacedStatuses + if m == nil { + return target + } + target = &UpstreamNamespacedStatuses{} + + if m.GetStatuses() != nil { + target.Statuses = make(map[string]*UpstreamStatus, len(m.GetStatuses())) + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Statuses[k] = h.Clone().(*UpstreamStatus) + } else { + target.Statuses[k] = proto.Clone(v).(*UpstreamStatus) + } + + } + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/upstream.pb.equal.go b/pkg/api/gloo.solo.io/v1/upstream.pb.equal.go index d5b7d7cc6..c9d0b9e6f 100644 --- a/pkg/api/gloo.solo.io/v1/upstream.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/upstream.pb.equal.go @@ -86,16 +86,6 @@ func (m *UpstreamSpec) Equal(that interface{}) bool { } } - if h, ok := interface{}(m.GetConnectionConfig()).(equality.Equalizer); ok { - if !h.Equal(target.GetConnectionConfig()) { - return false - } - } else { - if !proto.Equal(m.GetConnectionConfig(), target.GetConnectionConfig()) { - return false - } - } - if len(m.GetHealthChecks()) != len(target.GetHealthChecks()) { return false } @@ -123,22 +113,36 @@ func (m *UpstreamSpec) Equal(that interface{}) bool { } } - if h, ok := interface{}(m.GetUseHttp2()).(equality.Equalizer); ok { - if !h.Equal(target.GetUseHttp2()) { + if h, ok := interface{}(m.GetFailover()).(equality.Equalizer); ok { + if !h.Equal(target.GetFailover()) { return false } } else { - if !proto.Equal(m.GetUseHttp2(), target.GetUseHttp2()) { + if !proto.Equal(m.GetFailover(), target.GetFailover()) { return false } } - if h, ok := interface{}(m.GetFailover()).(equality.Equalizer); ok { - if !h.Equal(target.GetFailover()) { + if h, ok := interface{}(m.GetConnectionConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetConnectionConfig()) { return false } } else { - if !proto.Equal(m.GetFailover(), target.GetFailover()) { + if !proto.Equal(m.GetConnectionConfig(), target.GetConnectionConfig()) { + return false + } + } + + if m.GetProtocolSelection() != target.GetProtocolSelection() { + return false + } + + if h, ok := interface{}(m.GetUseHttp2()).(equality.Equalizer); ok { + if !h.Equal(target.GetUseHttp2()) { + return false + } + } else { + if !proto.Equal(m.GetUseHttp2(), target.GetUseHttp2()) { return false } } @@ -163,6 +167,26 @@ func (m *UpstreamSpec) Equal(that interface{}) bool { } } + if h, ok := interface{}(m.GetMaxConcurrentStreams()).(equality.Equalizer); ok { + if !h.Equal(target.GetMaxConcurrentStreams()) { + return false + } + } else { + if !proto.Equal(m.GetMaxConcurrentStreams(), target.GetMaxConcurrentStreams()) { + return false + } + } + + if h, ok := interface{}(m.GetOverrideStreamErrorOnInvalidHttpMessage()).(equality.Equalizer); ok { + if !h.Equal(target.GetOverrideStreamErrorOnInvalidHttpMessage()) { + return false + } + } else { + if !proto.Equal(m.GetOverrideStreamErrorOnInvalidHttpMessage(), target.GetOverrideStreamErrorOnInvalidHttpMessage()) { + return false + } + } + if h, ok := interface{}(m.GetHttpProxyHostname()).(equality.Equalizer); ok { if !h.Equal(target.GetHttpProxyHostname()) { return false @@ -173,9 +197,99 @@ func (m *UpstreamSpec) Equal(that interface{}) bool { } } + if h, ok := interface{}(m.GetHttpConnectSslConfig()).(equality.Equalizer); ok { + if !h.Equal(target.GetHttpConnectSslConfig()) { + return false + } + } else { + if !proto.Equal(m.GetHttpConnectSslConfig(), target.GetHttpConnectSslConfig()) { + return false + } + } + + if len(m.GetHttpConnectHeaders()) != len(target.GetHttpConnectHeaders()) { + return false + } + for idx, v := range m.GetHttpConnectHeaders() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetHttpConnectHeaders()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetHttpConnectHeaders()[idx]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetIgnoreHealthOnHostRemoval()).(equality.Equalizer); ok { + if !h.Equal(target.GetIgnoreHealthOnHostRemoval()) { + return false + } + } else { + if !proto.Equal(m.GetIgnoreHealthOnHostRemoval(), target.GetIgnoreHealthOnHostRemoval()) { + return false + } + } + + if h, ok := interface{}(m.GetRespectDnsTtl()).(equality.Equalizer); ok { + if !h.Equal(target.GetRespectDnsTtl()) { + return false + } + } else { + if !proto.Equal(m.GetRespectDnsTtl(), target.GetRespectDnsTtl()) { + return false + } + } + + if h, ok := interface{}(m.GetDnsRefreshRate()).(equality.Equalizer); ok { + if !h.Equal(target.GetDnsRefreshRate()) { + return false + } + } else { + if !proto.Equal(m.GetDnsRefreshRate(), target.GetDnsRefreshRate()) { + return false + } + } + + if h, ok := interface{}(m.GetProxyProtocolVersion()).(equality.Equalizer); ok { + if !h.Equal(target.GetProxyProtocolVersion()) { + return false + } + } else { + if !proto.Equal(m.GetProxyProtocolVersion(), target.GetProxyProtocolVersion()) { + return false + } + } + + if h, ok := interface{}(m.GetPreconnectPolicy()).(equality.Equalizer); ok { + if !h.Equal(target.GetPreconnectPolicy()) { + return false + } + } else { + if !proto.Equal(m.GetPreconnectPolicy(), target.GetPreconnectPolicy()) { + return false + } + } + + if h, ok := interface{}(m.GetDisableIstioAutoMtls()).(equality.Equalizer); ok { + if !h.Equal(target.GetDisableIstioAutoMtls()) { + return false + } + } else { + if !proto.Equal(m.GetDisableIstioAutoMtls(), target.GetDisableIstioAutoMtls()) { + return false + } + } + switch m.UpstreamType.(type) { case *UpstreamSpec_Kube: + if _, ok := target.UpstreamType.(*UpstreamSpec_Kube); !ok { + return false + } if h, ok := interface{}(m.GetKube()).(equality.Equalizer); ok { if !h.Equal(target.GetKube()) { @@ -188,6 +302,9 @@ func (m *UpstreamSpec) Equal(that interface{}) bool { } case *UpstreamSpec_Static: + if _, ok := target.UpstreamType.(*UpstreamSpec_Static); !ok { + return false + } if h, ok := interface{}(m.GetStatic()).(equality.Equalizer); ok { if !h.Equal(target.GetStatic()) { @@ -200,6 +317,9 @@ func (m *UpstreamSpec) Equal(that interface{}) bool { } case *UpstreamSpec_Pipe: + if _, ok := target.UpstreamType.(*UpstreamSpec_Pipe); !ok { + return false + } if h, ok := interface{}(m.GetPipe()).(equality.Equalizer); ok { if !h.Equal(target.GetPipe()) { @@ -212,6 +332,9 @@ func (m *UpstreamSpec) Equal(that interface{}) bool { } case *UpstreamSpec_Aws: + if _, ok := target.UpstreamType.(*UpstreamSpec_Aws); !ok { + return false + } if h, ok := interface{}(m.GetAws()).(equality.Equalizer); ok { if !h.Equal(target.GetAws()) { @@ -224,6 +347,9 @@ func (m *UpstreamSpec) Equal(that interface{}) bool { } case *UpstreamSpec_Azure: + if _, ok := target.UpstreamType.(*UpstreamSpec_Azure); !ok { + return false + } if h, ok := interface{}(m.GetAzure()).(equality.Equalizer); ok { if !h.Equal(target.GetAzure()) { @@ -236,6 +362,9 @@ func (m *UpstreamSpec) Equal(that interface{}) bool { } case *UpstreamSpec_Consul: + if _, ok := target.UpstreamType.(*UpstreamSpec_Consul); !ok { + return false + } if h, ok := interface{}(m.GetConsul()).(equality.Equalizer); ok { if !h.Equal(target.GetConsul()) { @@ -248,6 +377,9 @@ func (m *UpstreamSpec) Equal(that interface{}) bool { } case *UpstreamSpec_AwsEc2: + if _, ok := target.UpstreamType.(*UpstreamSpec_AwsEc2); !ok { + return false + } if h, ok := interface{}(m.GetAwsEc2()).(equality.Equalizer); ok { if !h.Equal(target.GetAwsEc2()) { @@ -259,6 +391,41 @@ func (m *UpstreamSpec) Equal(that interface{}) bool { } } + case *UpstreamSpec_Gcp: + if _, ok := target.UpstreamType.(*UpstreamSpec_Gcp); !ok { + return false + } + + if h, ok := interface{}(m.GetGcp()).(equality.Equalizer); ok { + if !h.Equal(target.GetGcp()) { + return false + } + } else { + if !proto.Equal(m.GetGcp(), target.GetGcp()) { + return false + } + } + + case *UpstreamSpec_Ai: + if _, ok := target.UpstreamType.(*UpstreamSpec_Ai); !ok { + return false + } + + if h, ok := interface{}(m.GetAi()).(equality.Equalizer); ok { + if !h.Equal(target.GetAi()) { + return false + } + } else { + if !proto.Equal(m.GetAi(), target.GetAi()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.UpstreamType != target.UpstreamType { + return false + } } return true @@ -299,6 +466,82 @@ func (m *DiscoveryMetadata) Equal(that interface{}) bool { return true } +// Equal function +func (m *HeaderValue) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*HeaderValue) + if !ok { + that2, ok := that.(HeaderValue) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetKey(), target.GetKey()) != 0 { + return false + } + + if strings.Compare(m.GetValue(), target.GetValue()) != 0 { + return false + } + + return true +} + +// Equal function +func (m *PreconnectPolicy) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*PreconnectPolicy) + if !ok { + that2, ok := that.(PreconnectPolicy) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetPerUpstreamPreconnectRatio()).(equality.Equalizer); ok { + if !h.Equal(target.GetPerUpstreamPreconnectRatio()) { + return false + } + } else { + if !proto.Equal(m.GetPerUpstreamPreconnectRatio(), target.GetPerUpstreamPreconnectRatio()) { + return false + } + } + + if h, ok := interface{}(m.GetPredictivePreconnectRatio()).(equality.Equalizer); ok { + if !h.Equal(target.GetPredictivePreconnectRatio()) { + return false + } + } else { + if !proto.Equal(m.GetPredictivePreconnectRatio(), target.GetPredictivePreconnectRatio()) { + return false + } + } + + return true +} + // Equal function func (m *UpstreamStatus) Equal(that interface{}) bool { if that == nil { @@ -361,3 +604,44 @@ func (m *UpstreamStatus) Equal(that interface{}) bool { return true } + +// Equal function +func (m *UpstreamNamespacedStatuses) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*UpstreamNamespacedStatuses) + if !ok { + that2, ok := that.(UpstreamNamespacedStatuses) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetStatuses()) != len(target.GetStatuses()) { + return false + } + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetStatuses()[k]) { + return false + } + } + + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/upstream.pb.go b/pkg/api/gloo.solo.io/v1/upstream.pb.go index 37a091db6..c5739c6c6 100644 --- a/pkg/api/gloo.solo.io/v1/upstream.pb.go +++ b/pkg/api/gloo.solo.io/v1/upstream.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/upstream.proto @@ -9,13 +9,15 @@ package v1 import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - _struct "github.com/golang/protobuf/ptypes/struct" - wrappers "github.com/golang/protobuf/ptypes/wrappers" + _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/solo-io/protoc-gen-ext/extproto" cluster "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/cluster" core "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/api/v2/core" + circuit_breaker "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/circuit_breaker" + ai "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ai" + gcp "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/gcp" aws "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/aws" ec2 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/aws/ec2" azure "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/azure" @@ -23,9 +25,13 @@ import ( kubernetes "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/kubernetes" pipe "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/pipe" static "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/static" + ssl "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/ssl" _ "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + structpb "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -35,9 +41,55 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 +type UpstreamSpec_ClusterProtocolSelection int32 + +const ( + // Cluster can only operate on one of the possible upstream protocols (HTTP1.1, HTTP2). + // If http2_protocol_options are + // present, HTTP2 will be used, otherwise HTTP1.1 will be used. + UpstreamSpec_USE_CONFIGURED_PROTOCOL UpstreamSpec_ClusterProtocolSelection = 0 + // Use HTTP1.1 or HTTP2, depending on which one is used on the downstream connection. + UpstreamSpec_USE_DOWNSTREAM_PROTOCOL UpstreamSpec_ClusterProtocolSelection = 1 +) + +// Enum value maps for UpstreamSpec_ClusterProtocolSelection. +var ( + UpstreamSpec_ClusterProtocolSelection_name = map[int32]string{ + 0: "USE_CONFIGURED_PROTOCOL", + 1: "USE_DOWNSTREAM_PROTOCOL", + } + UpstreamSpec_ClusterProtocolSelection_value = map[string]int32{ + "USE_CONFIGURED_PROTOCOL": 0, + "USE_DOWNSTREAM_PROTOCOL": 1, + } +) + +func (x UpstreamSpec_ClusterProtocolSelection) Enum() *UpstreamSpec_ClusterProtocolSelection { + p := new(UpstreamSpec_ClusterProtocolSelection) + *p = x + return p +} + +func (x UpstreamSpec_ClusterProtocolSelection) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (UpstreamSpec_ClusterProtocolSelection) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_enumTypes[0].Descriptor() +} + +func (UpstreamSpec_ClusterProtocolSelection) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_enumTypes[0] +} + +func (x UpstreamSpec_ClusterProtocolSelection) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use UpstreamSpec_ClusterProtocolSelection.Descriptor instead. +func (UpstreamSpec_ClusterProtocolSelection) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDescGZIP(), []int{0, 0} +} type UpstreamStatus_State int32 @@ -81,11 +133,11 @@ func (x UpstreamStatus_State) String() string { } func (UpstreamStatus_State) Descriptor() protoreflect.EnumDescriptor { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_enumTypes[0].Descriptor() + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_enumTypes[1].Descriptor() } func (UpstreamStatus_State) Type() protoreflect.EnumType { - return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_enumTypes[0] + return &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_enumTypes[1] } func (x UpstreamStatus_State) Number() protoreflect.EnumNumber { @@ -94,40 +146,33 @@ func (x UpstreamStatus_State) Number() protoreflect.EnumNumber { // Deprecated: Use UpstreamStatus_State.Descriptor instead. func (UpstreamStatus_State) EnumDescriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDescGZIP(), []int{2, 0} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDescGZIP(), []int{4, 0} } -// // Upstreams represent destination for routing HTTP requests. Upstreams can be compared to -// [clusters](https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/cds.proto) in Envoy terminology. +// [clusters](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto) in Envoy terminology. // Each upstream in Gloo has a type. Supported types include `static`, `kubernetes`, `aws`, `consul`, and more. // Each upstream type is handled by a corresponding Gloo plugin. (plugins currently need to be compiled into Gloo) type UpstreamSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Upstreams and their configuration can be automatically by Gloo Discovery // if this upstream is created or modified by Discovery, metadata about the operation will be placed here. DiscoveryMetadata *DiscoveryMetadata `protobuf:"bytes,3,opt,name=discovery_metadata,json=discoveryMetadata,proto3" json:"discovery_metadata,omitempty"` - // SslConfig contains the options necessary to configure an upstream to use TLS origination - SslConfig *UpstreamSslConfig `protobuf:"bytes,4,opt,name=ssl_config,json=sslConfig,proto3" json:"ssl_config,omitempty"` + // SslConfig contains the options necessary to configure envoy to originate TLS to an upstream. + SslConfig *ssl.UpstreamSslConfig `protobuf:"bytes,4,opt,name=ssl_config,json=sslConfig,proto3" json:"ssl_config,omitempty"` // Circuit breakers for this upstream. if not set, the defaults ones from the Gloo settings will be used. - // if those are not set, [envoy's defaults](https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/cluster/circuit_breaker.proto#envoy-api-msg-cluster-circuitbreakers) + // if those are not set, [envoy's defaults](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/circuit_breaker.proto#envoy-api-msg-cluster-circuitbreakers) // will be used. - CircuitBreakers *CircuitBreakerConfig `protobuf:"bytes,5,opt,name=circuit_breakers,json=circuitBreakers,proto3" json:"circuit_breakers,omitempty"` + CircuitBreakers *circuit_breaker.CircuitBreakerConfig `protobuf:"bytes,5,opt,name=circuit_breakers,json=circuitBreakers,proto3" json:"circuit_breakers,omitempty"` + // Settings for the load balancer that sends requests to the Upstream. The load balancing method is set to round robin by default. LoadBalancerConfig *LoadBalancerConfig `protobuf:"bytes,6,opt,name=load_balancer_config,json=loadBalancerConfig,proto3" json:"load_balancer_config,omitempty"` - ConnectionConfig *ConnectionConfig `protobuf:"bytes,7,opt,name=connection_config,json=connectionConfig,proto3" json:"connection_config,omitempty"` HealthChecks []*core.HealthCheck `protobuf:"bytes,8,rep,name=health_checks,json=healthChecks,proto3" json:"health_checks,omitempty"` OutlierDetection *cluster.OutlierDetection `protobuf:"bytes,9,opt,name=outlier_detection,json=outlierDetection,proto3" json:"outlier_detection,omitempty"` - // Use http2 when communicating with this upstream - // this field is evaluated `true` for upstreams - // with a grpc service spec. otherwise defaults to `false` - UseHttp2 *wrappers.BoolValue `protobuf:"bytes,10,opt,name=use_http2,json=useHttp2,proto3" json:"use_http2,omitempty"` // Note to developers: new Upstream plugins must be added to this oneof field // to be usable by Gloo. (plugins currently need to be compiled into Gloo) // - // Types that are assignable to UpstreamType: + // Types that are valid to be assigned to UpstreamType: + // // *UpstreamSpec_Kube // *UpstreamSpec_Static // *UpstreamSpec_Pipe @@ -135,9 +180,19 @@ type UpstreamSpec struct { // *UpstreamSpec_Azure // *UpstreamSpec_Consul // *UpstreamSpec_AwsEc2 + // *UpstreamSpec_Gcp + // *UpstreamSpec_Ai UpstreamType isUpstreamSpec_UpstreamType `protobuf_oneof:"upstream_type"` // Failover endpoints for this upstream. If omitted (the default) no failovers will be applied. Failover *Failover `protobuf:"bytes,18,opt,name=failover,proto3" json:"failover,omitempty"` + // HTTP/1 connection configurations + ConnectionConfig *ConnectionConfig `protobuf:"bytes,7,opt,name=connection_config,json=connectionConfig,proto3" json:"connection_config,omitempty"` + // Determines how Envoy selects the protocol used to speak to upstream hosts. + ProtocolSelection UpstreamSpec_ClusterProtocolSelection `protobuf:"varint,25,opt,name=protocol_selection,json=protocolSelection,proto3,enum=gloo.solo.io.UpstreamSpec_ClusterProtocolSelection" json:"protocol_selection,omitempty"` + // Use http2 when communicating with this upstream + // this field is evaluated `true` for upstreams + // with a grpc service spec. otherwise defaults to `false` + UseHttp2 *wrapperspb.BoolValue `protobuf:"bytes,10,opt,name=use_http2,json=useHttp2,proto3" json:"use_http2,omitempty"` // (UInt32Value) Initial stream-level flow-control window size. // Valid values range from 65535 (2^16 - 1, HTTP/2 default) to 2147483647 (2^31 - 1, HTTP/2 maximum) // and defaults to 268435456 (256 * 1024 * 1024). @@ -147,35 +202,78 @@ type UpstreamSpec struct { // in the HTTP/2 codec buffers. Once the buffer reaches this pointer, // watermark callbacks will fire to stop the flow of data to the codec buffers. // Requires UseHttp2 to be true to be acknowledged. - InitialStreamWindowSize *wrappers.UInt32Value `protobuf:"bytes,19,opt,name=initial_stream_window_size,json=initialStreamWindowSize,proto3" json:"initial_stream_window_size,omitempty"` + InitialStreamWindowSize *wrapperspb.UInt32Value `protobuf:"bytes,19,opt,name=initial_stream_window_size,json=initialStreamWindowSize,proto3" json:"initial_stream_window_size,omitempty"` // (UInt32Value) Similar to initial_stream_window_size, but for connection-level flow-control window. // Currently, this has the same minimum/maximum/default as initial_stream_window_size. // Requires UseHttp2 to be true to be acknowledged. - InitialConnectionWindowSize *wrappers.UInt32Value `protobuf:"bytes,20,opt,name=initial_connection_window_size,json=initialConnectionWindowSize,proto3" json:"initial_connection_window_size,omitempty"` - // Tells envoy that the upstream is an HTTP proxy (e.g., another proxy in a DMZ) that supports HTTP Connect. - // This configuration sets the hostname used as part of the HTTP Connect request. + InitialConnectionWindowSize *wrapperspb.UInt32Value `protobuf:"bytes,20,opt,name=initial_connection_window_size,json=initialConnectionWindowSize,proto3" json:"initial_connection_window_size,omitempty"` + // (UInt32Value) Maximum concurrent streams allowed for peer on one HTTP/2 connection. + // Valid values range from 1 to 2147483647 (2^31 - 1) and defaults to 2147483647. + // Requires UseHttp2 to be true to be acknowledged. + MaxConcurrentStreams *wrapperspb.UInt32Value `protobuf:"bytes,24,opt,name=max_concurrent_streams,json=maxConcurrentStreams,proto3" json:"max_concurrent_streams,omitempty"` + // Allows invalid HTTP messaging and headers. When this option is disabled (default), then + // the whole HTTP/2 connection is terminated upon receiving invalid HEADERS frame. However, + // when this option is enabled, only the offending stream is terminated. + // + // This overrides any HCM :ref:`stream_error_on_invalid_http_messaging + // ` + // + // See [RFC7540, sec. 8.1](https://datatracker.ietf.org/doc/html/rfc7540#section-8.1) for details. + OverrideStreamErrorOnInvalidHttpMessage *wrapperspb.BoolValue `protobuf:"bytes,26,opt,name=override_stream_error_on_invalid_http_message,json=overrideStreamErrorOnInvalidHttpMessage,proto3" json:"override_stream_error_on_invalid_http_message,omitempty"` + // Tells Envoy that the upstream is an HTTP proxy that supports [HTTP CONNECT method](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/CONNECT). + // The hostname is the destination of the tunnel established by the proxy. + // Some Envoy Command Operators (.e.g `%REQUESTED_SERVER_NAME%`) are supported allowing for dynamic destinations. + // // For example, setting to: host.com:443 and making a request routed to the upstream such as `curl :/v1` // would result in the following request: // - // CONNECT host.com:443 HTTP/1.1 - // host: host.com:443 + // CONNECT host.com:443 HTTP/1.1 + // host: host.com:443 // - // GET /v1 HTTP/1.1 - // host: : - // user-agent: curl/7.64.1 - // accept: */* + // GET /v1 HTTP/1.1 + // host: : + // user-agent: curl/7.64.1 + // accept: */* // - // Note: if setting this field to a hostname rather than IP:PORT, you may want to also set `host_rewrite` on the route - HttpProxyHostname *wrappers.StringValue `protobuf:"bytes,21,opt,name=http_proxy_hostname,json=httpProxyHostname,proto3" json:"http_proxy_hostname,omitempty"` + // Note: If setting this field to a hostname rather than IP:PORT, you may want to also set `host_rewrite` on the route + HttpProxyHostname *wrapperspb.StringValue `protobuf:"bytes,21,opt,name=http_proxy_hostname,json=httpProxyHostname,proto3" json:"http_proxy_hostname,omitempty"` + // HttpConnectSslConfig contains the options necessary to configure envoy to originate TLS to an HTTP Connect proxy. + // If you also want to ensure the bytes proxied by the HTTP Connect proxy are encrypted, you should also + // specify `ssl_config`. + HttpConnectSslConfig *ssl.UpstreamSslConfig `protobuf:"bytes,27,opt,name=http_connect_ssl_config,json=httpConnectSslConfig,proto3" json:"http_connect_ssl_config,omitempty"` + // HttpConnectHeaders specifies the headers sent with the initial HTTP Connect request. + HttpConnectHeaders []*HeaderValue `protobuf:"bytes,28,rep,name=http_connect_headers,json=httpConnectHeaders,proto3" json:"http_connect_headers,omitempty"` + // (bool) If set to true, Envoy will ignore the health value of a host when processing its removal from service discovery. + // This means that if active health checking is used, Envoy will not wait for the endpoint to go unhealthy before removing it. + IgnoreHealthOnHostRemoval *wrapperspb.BoolValue `protobuf:"bytes,22,opt,name=ignore_health_on_host_removal,json=ignoreHealthOnHostRemoval,proto3" json:"ignore_health_on_host_removal,omitempty"` + // If set to true, Service Discovery update period will be triggered once the TTL is expired. + // If minimum TTL of all records is 0 then dns_refresh_rate will be used. + RespectDnsTtl *wrapperspb.BoolValue `protobuf:"bytes,29,opt,name=respect_dns_ttl,json=respectDnsTtl,proto3" json:"respect_dns_ttl,omitempty"` + // Service Discovery DNS Refresh Rate. + // Minimum value is 1 ms. Values below the minimum are considered invalid. + // Only valid for STRICT_DNS and LOGICAL_DNS cluster types. All other cluster types are considered invalid. + DnsRefreshRate *durationpb.Duration `protobuf:"bytes,30,opt,name=dns_refresh_rate,json=dnsRefreshRate,proto3" json:"dns_refresh_rate,omitempty"` + // Proxy Protocol Version to add when communicating with the upstream. + // If unset will not wrap the transport socket. + // These are of the format "V1" or "V2" + ProxyProtocolVersion *wrapperspb.StringValue `protobuf:"bytes,31,opt,name=proxy_protocol_version,json=proxyProtocolVersion,proto3" json:"proxy_protocol_version,omitempty"` + // Preconnect policy for the cluster + // Aligns as closely as possible with https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#envoy-v3-api-msg-config-cluster-v3-cluster-preconnectpolicy + // This is not recommended for use unless you are sure you need it. + // In most cases preconnect hurts more than it helps. + PreconnectPolicy *PreconnectPolicy `protobuf:"bytes,32,opt,name=preconnect_policy,json=preconnectPolicy,proto3" json:"preconnect_policy,omitempty"` + // If set to true, the proxy will not allow automatic mTLS detection for Istio upstreams. + // Defaults to false. + DisableIstioAutoMtls *wrapperspb.BoolValue `protobuf:"bytes,33,opt,name=disable_istio_auto_mtls,json=disableIstioAutoMtls,proto3" json:"disable_istio_auto_mtls,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpstreamSpec) Reset() { *x = UpstreamSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpstreamSpec) String() string { @@ -186,7 +284,7 @@ func (*UpstreamSpec) ProtoMessage() {} func (x *UpstreamSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -208,14 +306,14 @@ func (x *UpstreamSpec) GetDiscoveryMetadata() *DiscoveryMetadata { return nil } -func (x *UpstreamSpec) GetSslConfig() *UpstreamSslConfig { +func (x *UpstreamSpec) GetSslConfig() *ssl.UpstreamSslConfig { if x != nil { return x.SslConfig } return nil } -func (x *UpstreamSpec) GetCircuitBreakers() *CircuitBreakerConfig { +func (x *UpstreamSpec) GetCircuitBreakers() *circuit_breaker.CircuitBreakerConfig { if x != nil { return x.CircuitBreakers } @@ -229,13 +327,6 @@ func (x *UpstreamSpec) GetLoadBalancerConfig() *LoadBalancerConfig { return nil } -func (x *UpstreamSpec) GetConnectionConfig() *ConnectionConfig { - if x != nil { - return x.ConnectionConfig - } - return nil -} - func (x *UpstreamSpec) GetHealthChecks() []*core.HealthCheck { if x != nil { return x.HealthChecks @@ -250,65 +341,90 @@ func (x *UpstreamSpec) GetOutlierDetection() *cluster.OutlierDetection { return nil } -func (x *UpstreamSpec) GetUseHttp2() *wrappers.BoolValue { +func (x *UpstreamSpec) GetUpstreamType() isUpstreamSpec_UpstreamType { if x != nil { - return x.UseHttp2 - } - return nil -} - -func (m *UpstreamSpec) GetUpstreamType() isUpstreamSpec_UpstreamType { - if m != nil { - return m.UpstreamType + return x.UpstreamType } return nil } func (x *UpstreamSpec) GetKube() *kubernetes.UpstreamSpec { - if x, ok := x.GetUpstreamType().(*UpstreamSpec_Kube); ok { - return x.Kube + if x != nil { + if x, ok := x.UpstreamType.(*UpstreamSpec_Kube); ok { + return x.Kube + } } return nil } func (x *UpstreamSpec) GetStatic() *static.UpstreamSpec { - if x, ok := x.GetUpstreamType().(*UpstreamSpec_Static); ok { - return x.Static + if x != nil { + if x, ok := x.UpstreamType.(*UpstreamSpec_Static); ok { + return x.Static + } } return nil } func (x *UpstreamSpec) GetPipe() *pipe.UpstreamSpec { - if x, ok := x.GetUpstreamType().(*UpstreamSpec_Pipe); ok { - return x.Pipe + if x != nil { + if x, ok := x.UpstreamType.(*UpstreamSpec_Pipe); ok { + return x.Pipe + } } return nil } func (x *UpstreamSpec) GetAws() *aws.UpstreamSpec { - if x, ok := x.GetUpstreamType().(*UpstreamSpec_Aws); ok { - return x.Aws + if x != nil { + if x, ok := x.UpstreamType.(*UpstreamSpec_Aws); ok { + return x.Aws + } } return nil } func (x *UpstreamSpec) GetAzure() *azure.UpstreamSpec { - if x, ok := x.GetUpstreamType().(*UpstreamSpec_Azure); ok { - return x.Azure + if x != nil { + if x, ok := x.UpstreamType.(*UpstreamSpec_Azure); ok { + return x.Azure + } } return nil } func (x *UpstreamSpec) GetConsul() *consul.UpstreamSpec { - if x, ok := x.GetUpstreamType().(*UpstreamSpec_Consul); ok { - return x.Consul + if x != nil { + if x, ok := x.UpstreamType.(*UpstreamSpec_Consul); ok { + return x.Consul + } } return nil } func (x *UpstreamSpec) GetAwsEc2() *ec2.UpstreamSpec { - if x, ok := x.GetUpstreamType().(*UpstreamSpec_AwsEc2); ok { - return x.AwsEc2 + if x != nil { + if x, ok := x.UpstreamType.(*UpstreamSpec_AwsEc2); ok { + return x.AwsEc2 + } + } + return nil +} + +func (x *UpstreamSpec) GetGcp() *gcp.UpstreamSpec { + if x != nil { + if x, ok := x.UpstreamType.(*UpstreamSpec_Gcp); ok { + return x.Gcp + } + } + return nil +} + +func (x *UpstreamSpec) GetAi() *ai.UpstreamSpec { + if x != nil { + if x, ok := x.UpstreamType.(*UpstreamSpec_Ai); ok { + return x.Ai + } } return nil } @@ -320,27 +436,118 @@ func (x *UpstreamSpec) GetFailover() *Failover { return nil } -func (x *UpstreamSpec) GetInitialStreamWindowSize() *wrappers.UInt32Value { +func (x *UpstreamSpec) GetConnectionConfig() *ConnectionConfig { + if x != nil { + return x.ConnectionConfig + } + return nil +} + +func (x *UpstreamSpec) GetProtocolSelection() UpstreamSpec_ClusterProtocolSelection { + if x != nil { + return x.ProtocolSelection + } + return UpstreamSpec_USE_CONFIGURED_PROTOCOL +} + +func (x *UpstreamSpec) GetUseHttp2() *wrapperspb.BoolValue { + if x != nil { + return x.UseHttp2 + } + return nil +} + +func (x *UpstreamSpec) GetInitialStreamWindowSize() *wrapperspb.UInt32Value { if x != nil { return x.InitialStreamWindowSize } return nil } -func (x *UpstreamSpec) GetInitialConnectionWindowSize() *wrappers.UInt32Value { +func (x *UpstreamSpec) GetInitialConnectionWindowSize() *wrapperspb.UInt32Value { if x != nil { return x.InitialConnectionWindowSize } return nil } -func (x *UpstreamSpec) GetHttpProxyHostname() *wrappers.StringValue { +func (x *UpstreamSpec) GetMaxConcurrentStreams() *wrapperspb.UInt32Value { + if x != nil { + return x.MaxConcurrentStreams + } + return nil +} + +func (x *UpstreamSpec) GetOverrideStreamErrorOnInvalidHttpMessage() *wrapperspb.BoolValue { + if x != nil { + return x.OverrideStreamErrorOnInvalidHttpMessage + } + return nil +} + +func (x *UpstreamSpec) GetHttpProxyHostname() *wrapperspb.StringValue { if x != nil { return x.HttpProxyHostname } return nil } +func (x *UpstreamSpec) GetHttpConnectSslConfig() *ssl.UpstreamSslConfig { + if x != nil { + return x.HttpConnectSslConfig + } + return nil +} + +func (x *UpstreamSpec) GetHttpConnectHeaders() []*HeaderValue { + if x != nil { + return x.HttpConnectHeaders + } + return nil +} + +func (x *UpstreamSpec) GetIgnoreHealthOnHostRemoval() *wrapperspb.BoolValue { + if x != nil { + return x.IgnoreHealthOnHostRemoval + } + return nil +} + +func (x *UpstreamSpec) GetRespectDnsTtl() *wrapperspb.BoolValue { + if x != nil { + return x.RespectDnsTtl + } + return nil +} + +func (x *UpstreamSpec) GetDnsRefreshRate() *durationpb.Duration { + if x != nil { + return x.DnsRefreshRate + } + return nil +} + +func (x *UpstreamSpec) GetProxyProtocolVersion() *wrapperspb.StringValue { + if x != nil { + return x.ProxyProtocolVersion + } + return nil +} + +func (x *UpstreamSpec) GetPreconnectPolicy() *PreconnectPolicy { + if x != nil { + return x.PreconnectPolicy + } + return nil +} + +func (x *UpstreamSpec) GetDisableIstioAutoMtls() *wrapperspb.BoolValue { + if x != nil { + return x.DisableIstioAutoMtls + } + return nil +} + type isUpstreamSpec_UpstreamType interface { isUpstreamSpec_UpstreamType() } @@ -373,6 +580,14 @@ type UpstreamSpec_AwsEc2 struct { AwsEc2 *ec2.UpstreamSpec `protobuf:"bytes,17,opt,name=aws_ec2,json=awsEc2,proto3,oneof"` } +type UpstreamSpec_Gcp struct { + Gcp *gcp.UpstreamSpec `protobuf:"bytes,34,opt,name=gcp,proto3,oneof"` +} + +type UpstreamSpec_Ai struct { + Ai *ai.UpstreamSpec `protobuf:"bytes,35,opt,name=ai,proto3,oneof"` +} + func (*UpstreamSpec_Kube) isUpstreamSpec_UpstreamType() {} func (*UpstreamSpec_Static) isUpstreamSpec_UpstreamType() {} @@ -387,23 +602,24 @@ func (*UpstreamSpec_Consul) isUpstreamSpec_UpstreamType() {} func (*UpstreamSpec_AwsEc2) isUpstreamSpec_UpstreamType() {} +func (*UpstreamSpec_Gcp) isUpstreamSpec_UpstreamType() {} + +func (*UpstreamSpec_Ai) isUpstreamSpec_UpstreamType() {} + // created by discovery services type DiscoveryMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Labels inherited from the original upstream (e.g. Kubernetes labels) - Labels map[string]string `protobuf:"bytes,1,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Labels map[string]string `protobuf:"bytes,1,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DiscoveryMetadata) Reset() { *x = DiscoveryMetadata{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DiscoveryMetadata) String() string { @@ -414,7 +630,7 @@ func (*DiscoveryMetadata) ProtoMessage() {} func (x *DiscoveryMetadata) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -436,11 +652,161 @@ func (x *DiscoveryMetadata) GetLabels() map[string]string { return nil } -type UpstreamStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +// Header name/value pair. +type HeaderValue struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Header name. + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + // Header value. + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HeaderValue) Reset() { + *x = HeaderValue{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HeaderValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HeaderValue) ProtoMessage() {} + +func (x *HeaderValue) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HeaderValue.ProtoReflect.Descriptor instead. +func (*HeaderValue) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDescGZIP(), []int{2} +} + +func (x *HeaderValue) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *HeaderValue) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +type PreconnectPolicy struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Indicates how many streams (rounded up) can be anticipated per-upstream for each + // incoming stream. This is useful for high-QPS or latency-sensitive services. Preconnecting + // will only be done if the upstream is healthy and the cluster has traffic. + // + // For example if this is 2, for an incoming HTTP/1.1 stream, 2 connections will be + // established, one for the new incoming stream, and one for a presumed follow-up stream. For + // HTTP/2, only one connection would be established by default as one connection can + // serve both the original and presumed follow-up stream. + // + // In steady state for non-multiplexed connections a value of 1.5 would mean if there were 100 + // active streams, there would be 100 connections in use, and 50 connections preconnected. + // This might be a useful value for something like short lived single-use connections, + // for example proxying HTTP/1.1 if keep-alive were false and each stream resulted in connection + // termination. It would likely be overkill for long lived connections, such as TCP proxying SMTP + // or regular HTTP/1.1 with keep-alive. For long lived traffic, a value of 1.05 would be more + // reasonable, where for every 100 connections, 5 preconnected connections would be in the queue + // in case of unexpected disconnects where the connection could not be reused. + // + // If this value is not set, or set explicitly to one, Envoy will fetch as many connections + // as needed to serve streams in flight. This means in steady state if a connection is torn down, + // a subsequent streams will pay an upstream-rtt latency penalty waiting for a new connection. + // + // This is limited somewhat arbitrarily to 3 because preconnecting too aggressively can + // harm latency more than the preconnecting helps. + PerUpstreamPreconnectRatio *wrapperspb.DoubleValue `protobuf:"bytes,1,opt,name=per_upstream_preconnect_ratio,json=perUpstreamPreconnectRatio,proto3" json:"per_upstream_preconnect_ratio,omitempty"` + // Indicates how many streams (rounded up) can be anticipated across a cluster for each + // stream, useful for low QPS services. This is currently supported for a subset of + // deterministic non-hash-based load-balancing algorithms (weighted round robin, random). + // Unlike `per_upstream_preconnect_ratio` this preconnects across the upstream instances in a + // cluster, doing best effort predictions of what upstream would be picked next and + // pre-establishing a connection. + // + // Preconnecting will be limited to one preconnect per configured upstream in the cluster and will + // only be done if there are healthy upstreams and the cluster has traffic. + // + // For example if preconnecting is set to 2 for a round robin HTTP/2 cluster, on the first + // incoming stream, 2 connections will be preconnected - one to the first upstream for this + // cluster, one to the second on the assumption there will be a follow-up stream. + // + // If this value is not set, or set explicitly to one, Envoy will fetch as many connections + // as needed to serve streams in flight, so during warm up and in steady state if a connection + // is closed (and per_upstream_preconnect_ratio is not set), there will be a latency hit for + // connection establishment. + // + // If both this and preconnect_ratio are set, Envoy will make sure both predicted needs are met, + // basically preconnecting max(predictive-preconnect, per-upstream-preconnect), for each + // upstream. + PredictivePreconnectRatio *wrapperspb.DoubleValue `protobuf:"bytes,2,opt,name=predictive_preconnect_ratio,json=predictivePreconnectRatio,proto3" json:"predictive_preconnect_ratio,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PreconnectPolicy) Reset() { + *x = PreconnectPolicy{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PreconnectPolicy) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PreconnectPolicy) ProtoMessage() {} + +func (x *PreconnectPolicy) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PreconnectPolicy.ProtoReflect.Descriptor instead. +func (*PreconnectPolicy) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDescGZIP(), []int{3} +} + +func (x *PreconnectPolicy) GetPerUpstreamPreconnectRatio() *wrapperspb.DoubleValue { + if x != nil { + return x.PerUpstreamPreconnectRatio + } + return nil +} +func (x *PreconnectPolicy) GetPredictivePreconnectRatio() *wrapperspb.DoubleValue { + if x != nil { + return x.PredictivePreconnectRatio + } + return nil +} + +type UpstreamStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` // State is the enum indicating the state of the resource State UpstreamStatus_State `protobuf:"varint,1,opt,name=state,proto3,enum=gloo.solo.io.UpstreamStatus_State" json:"state,omitempty"` // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty @@ -448,18 +814,18 @@ type UpstreamStatus struct { // Reference to the reporter who wrote this status ReportedBy string `protobuf:"bytes,3,opt,name=reported_by,json=reportedBy,proto3" json:"reported_by,omitempty"` // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource - SubresourceStatuses map[string]*UpstreamStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + SubresourceStatuses map[string]*UpstreamStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Opaque details about status results - Details *_struct.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + Details *structpb.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpstreamStatus) Reset() { *x = UpstreamStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpstreamStatus) String() string { @@ -469,8 +835,8 @@ func (x *UpstreamStatus) String() string { func (*UpstreamStatus) ProtoMessage() {} func (x *UpstreamStatus) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes[4] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -482,7 +848,7 @@ func (x *UpstreamStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use UpstreamStatus.ProtoReflect.Descriptor instead. func (*UpstreamStatus) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDescGZIP(), []int{2} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDescGZIP(), []int{4} } func (x *UpstreamStatus) GetState() UpstreamStatus_State { @@ -513,16 +879,60 @@ func (x *UpstreamStatus) GetSubresourceStatuses() map[string]*UpstreamStatus { return nil } -func (x *UpstreamStatus) GetDetails() *_struct.Struct { +func (x *UpstreamStatus) GetDetails() *structpb.Struct { if x != nil { return x.Details } return nil } +type UpstreamNamespacedStatuses struct { + state protoimpl.MessageState `protogen:"open.v1"` + Statuses map[string]*UpstreamStatus `protobuf:"bytes,1,rep,name=statuses,proto3" json:"statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpstreamNamespacedStatuses) Reset() { + *x = UpstreamNamespacedStatuses{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpstreamNamespacedStatuses) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpstreamNamespacedStatuses) ProtoMessage() {} + +func (x *UpstreamNamespacedStatuses) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpstreamNamespacedStatuses.ProtoReflect.Descriptor instead. +func (*UpstreamNamespacedStatuses) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDescGZIP(), []int{5} +} + +func (x *UpstreamNamespacedStatuses) GetStatuses() map[string]*UpstreamStatus { + if x != nil { + return x.Statuses + } + return nil +} + var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDesc = string([]byte{ 0x0a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, @@ -530,166 +940,253 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDesc = 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x37, + 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x73, - 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, - 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x5f, 0x62, - 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, - 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x6f, 0x61, 0x64, - 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x3e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x58, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x32, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x60, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, - 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, - 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x2f, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x31, 0x67, 0x69, 0x74, + 0x6c, 0x2f, 0x73, 0x73, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x53, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x49, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x2f, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, - 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x70, 0x69, 0x70, 0x65, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x51, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x69, 0x72, 0x63, 0x75, + 0x69, 0x74, 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x2f, 0x63, 0x69, 0x72, 0x63, 0x75, + 0x69, 0x74, 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, - 0x65, 0x73, 0x2f, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, + 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x58, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, - 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x77, 0x73, 0x2f, 0x61, - 0x77, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, - 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x61, 0x7a, 0x75, 0x72, 0x65, 0x2f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x49, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, - 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2f, - 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4b, 0x67, 0x69, + 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, + 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x60, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x5f, + 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x49, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, + 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, + 0x2f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x45, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x51, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6b, 0x75, 0x62, 0x65, + 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x2f, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, + 0x77, 0x73, 0x2f, 0x61, 0x77, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x77, 0x73, 0x2f, 0x65, 0x63, 0x32, 0x2f, 0x61, 0x77, 0x73, 0x5f, - 0x65, 0x63, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, - 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, - 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x95, 0x0b, 0x0a, 0x0c, 0x55, 0x70, 0x73, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4e, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x63, - 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x11, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x73, 0x6c, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x73, - 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4d, 0x0a, 0x10, 0x63, 0x69, 0x72, 0x63, - 0x75, 0x69, 0x74, 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x43, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x42, - 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x52, 0x0a, 0x14, 0x6c, 0x6f, 0x61, 0x64, 0x5f, - 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x12, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4b, 0x0a, 0x11, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4b, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x5b, 0x0a, 0x11, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, - 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2e, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, - 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x10, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x32, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x08, 0x75, 0x73, 0x65, 0x48, 0x74, 0x74, 0x70, 0x32, 0x12, 0x43, 0x0a, 0x04, 0x6b, - 0x75, 0x62, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6b, 0x75, 0x62, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x04, 0x6b, 0x75, 0x62, 0x65, - 0x12, 0x43, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x29, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, - 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x63, 0x12, 0x3d, 0x0a, 0x04, 0x70, 0x69, 0x70, 0x65, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x04, - 0x70, 0x69, 0x70, 0x65, 0x12, 0x3a, 0x0a, 0x03, 0x61, 0x77, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x77, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x03, 0x61, 0x77, 0x73, - 0x12, 0x40, 0x0a, 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x05, 0x61, 0x7a, 0x75, - 0x72, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x18, 0x10, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x2f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x49, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x6f, 0x6e, + 0x73, 0x75, 0x6c, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x77, 0x73, 0x2f, 0x65, 0x63, 0x32, 0x2f, + 0x61, 0x77, 0x73, 0x5f, 0x65, 0x63, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3c, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x61, 0x69, + 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x63, + 0x70, 0x2f, 0x67, 0x63, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4c, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x69, + 0x2f, 0x61, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, + 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0x9a, 0x14, 0x0a, 0x0c, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, + 0x70, 0x65, 0x63, 0x12, 0x4e, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, + 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x52, 0x11, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, + 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x4d, 0x0a, 0x10, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x5f, 0x62, + 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x69, 0x72, + 0x63, 0x75, 0x69, 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x0f, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x65, + 0x72, 0x73, 0x12, 0x52, 0x0a, 0x14, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x12, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4b, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x12, 0x5b, 0x0a, 0x11, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x64, + 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4f, 0x75, + 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, + 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x43, 0x0a, 0x04, 0x6b, 0x75, 0x62, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, + 0x2e, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, - 0x06, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x12, 0x45, 0x0a, 0x07, 0x61, 0x77, 0x73, 0x5f, 0x65, - 0x63, 0x32, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x77, 0x73, 0x5f, 0x65, - 0x63, 0x32, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, - 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x06, 0x61, 0x77, 0x73, 0x45, 0x63, 0x32, 0x12, 0x32, - 0x0a, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, - 0x65, 0x72, 0x12, 0x59, 0x0a, 0x1a, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x17, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x61, 0x0a, - 0x1e, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, - 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x1b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, - 0x12, 0x4c, 0x0a, 0x13, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x68, - 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x68, 0x74, 0x74, - 0x70, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0f, - 0x0a, 0x0d, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, + 0x04, 0x6b, 0x75, 0x62, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, + 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x12, 0x3d, 0x0a, 0x04, 0x70, 0x69, + 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x2e, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, + 0x63, 0x48, 0x00, 0x52, 0x04, 0x70, 0x69, 0x70, 0x65, 0x12, 0x3a, 0x0a, 0x03, 0x61, 0x77, 0x73, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x77, 0x73, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, + 0x52, 0x03, 0x61, 0x77, 0x73, 0x12, 0x40, 0x0a, 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, + 0x52, 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x73, 0x75, + 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, + 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, + 0x65, 0x63, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x12, 0x45, 0x0a, 0x07, + 0x61, 0x77, 0x73, 0x5f, 0x65, 0x63, 0x32, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x61, 0x77, 0x73, 0x5f, 0x65, 0x63, 0x32, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x06, 0x61, 0x77, 0x73, + 0x45, 0x63, 0x32, 0x12, 0x3a, 0x0a, 0x03, 0x67, 0x63, 0x70, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x03, 0x67, 0x63, 0x70, 0x12, + 0x37, 0x0a, 0x02, 0x61, 0x69, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x69, + 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, + 0x65, 0x63, 0x48, 0x00, 0x52, 0x02, 0x61, 0x69, 0x12, 0x32, 0x0a, 0x08, 0x66, 0x61, 0x69, 0x6c, + 0x6f, 0x76, 0x65, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x65, 0x72, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x4b, 0x0a, 0x11, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x62, 0x0a, 0x12, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x19, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, + 0x63, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, + 0x09, 0x75, 0x73, 0x65, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x75, 0x73, + 0x65, 0x48, 0x74, 0x74, 0x70, 0x32, 0x12, 0x59, 0x0a, 0x1a, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, + 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, + 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x17, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, + 0x6c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x53, 0x69, 0x7a, + 0x65, 0x12, 0x61, 0x0a, 0x1e, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, + 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, + 0x53, 0x69, 0x7a, 0x65, 0x12, 0x52, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x18, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x14, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x7a, 0x0a, 0x2d, 0x6f, 0x76, 0x65, 0x72, + 0x72, 0x69, 0x64, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x5f, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x68, 0x74, 0x74, + 0x70, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x27, 0x6f, 0x76, 0x65, + 0x72, 0x72, 0x69, 0x64, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x4f, 0x6e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x48, 0x74, 0x74, 0x70, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x4c, 0x0a, 0x13, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x72, 0x6f, + 0x78, 0x79, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x11, 0x68, 0x74, 0x74, 0x70, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x56, 0x0a, 0x17, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x5f, 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x1b, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x73, 0x6c, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x14, 0x68, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x53, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4b, 0x0a, 0x14, 0x68, 0x74, + 0x74, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x12, 0x68, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x5c, 0x0a, 0x1d, 0x69, 0x67, 0x6e, 0x6f, 0x72, + 0x65, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x6f, 0x6e, 0x5f, 0x68, 0x6f, 0x73, 0x74, + 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x19, 0x69, 0x67, 0x6e, 0x6f, + 0x72, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x6e, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x12, 0x42, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, + 0x5f, 0x64, 0x6e, 0x73, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x44, 0x6e, 0x73, 0x54, 0x74, 0x6c, 0x12, 0x43, 0x0a, 0x10, 0x64, 0x6e, 0x73, + 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x1e, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, + 0x64, 0x6e, 0x73, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x61, 0x74, 0x65, 0x12, 0x52, + 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x70, 0x72, + 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x72, 0x65, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x10, 0x70, + 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, + 0x51, 0x0a, 0x17, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x73, 0x74, 0x69, 0x6f, + 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x64, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x41, 0x75, 0x74, 0x6f, 0x4d, 0x74, + 0x6c, 0x73, 0x22, 0x54, 0x0a, 0x18, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, + 0x0a, 0x17, 0x55, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, + 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x55, + 0x53, 0x45, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x50, 0x52, + 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x10, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x75, 0x70, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x93, 0x01, 0x0a, 0x11, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x43, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, @@ -699,112 +1196,171 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDesc = 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc5, 0x03, 0x0a, 0x0e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x38, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x68, 0x0a, 0x14, 0x73, - 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x13, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, - 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x64, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, - 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x65, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, - 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x10, 0x02, - 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x42, 0x3e, 0x5a, - 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, - 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2f, 0x76, 0x31, 0xc0, 0xf5, 0x04, 0x01, 0xb8, 0xf5, 0x04, 0x01, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x35, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x83, 0x02, 0x0a, + 0x10, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x12, 0x78, 0x0a, 0x1d, 0x70, 0x65, 0x72, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x5f, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, + 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x17, 0xfa, 0x42, 0x14, 0x12, 0x12, 0x19, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x52, + 0x1a, 0x70, 0x65, 0x72, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x72, 0x65, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x75, 0x0a, 0x1b, 0x70, + 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x17, + 0xfa, 0x42, 0x14, 0x12, 0x12, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x29, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x52, 0x19, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, 0x61, 0x74, + 0x69, 0x6f, 0x22, 0xc5, 0x03, 0x0a, 0x0e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x38, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x68, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x73, + 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x65, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x64, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x05, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, + 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, + 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x10, 0x02, 0x12, 0x0b, 0x0a, + 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x22, 0xcb, 0x01, 0x0a, 0x1a, 0x55, + 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x08, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, 0x59, 0x0a, + 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x55, + 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x42, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, + 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDesc + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes = make([]protoimpl.MessageInfo, 5) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_goTypes = []interface{}{ - (UpstreamStatus_State)(0), // 0: gloo.solo.io.UpstreamStatus.State - (*UpstreamSpec)(nil), // 1: gloo.solo.io.UpstreamSpec - (*DiscoveryMetadata)(nil), // 2: gloo.solo.io.DiscoveryMetadata - (*UpstreamStatus)(nil), // 3: gloo.solo.io.UpstreamStatus - nil, // 4: gloo.solo.io.DiscoveryMetadata.LabelsEntry - nil, // 5: gloo.solo.io.UpstreamStatus.SubresourceStatusesEntry - (*UpstreamSslConfig)(nil), // 6: gloo.solo.io.UpstreamSslConfig - (*CircuitBreakerConfig)(nil), // 7: gloo.solo.io.CircuitBreakerConfig - (*LoadBalancerConfig)(nil), // 8: gloo.solo.io.LoadBalancerConfig - (*ConnectionConfig)(nil), // 9: gloo.solo.io.ConnectionConfig - (*core.HealthCheck)(nil), // 10: solo.io.envoy.api.v2.core.HealthCheck - (*cluster.OutlierDetection)(nil), // 11: solo.io.envoy.api.v2.cluster.OutlierDetection - (*wrappers.BoolValue)(nil), // 12: google.protobuf.BoolValue - (*kubernetes.UpstreamSpec)(nil), // 13: kubernetes.options.gloo.solo.io.UpstreamSpec - (*static.UpstreamSpec)(nil), // 14: static.options.gloo.solo.io.UpstreamSpec - (*pipe.UpstreamSpec)(nil), // 15: pipe.options.gloo.solo.io.UpstreamSpec - (*aws.UpstreamSpec)(nil), // 16: aws.options.gloo.solo.io.UpstreamSpec - (*azure.UpstreamSpec)(nil), // 17: azure.options.gloo.solo.io.UpstreamSpec - (*consul.UpstreamSpec)(nil), // 18: consul.options.gloo.solo.io.UpstreamSpec - (*ec2.UpstreamSpec)(nil), // 19: aws_ec2.options.gloo.solo.io.UpstreamSpec - (*Failover)(nil), // 20: gloo.solo.io.Failover - (*wrappers.UInt32Value)(nil), // 21: google.protobuf.UInt32Value - (*wrappers.StringValue)(nil), // 22: google.protobuf.StringValue - (*_struct.Struct)(nil), // 23: google.protobuf.Struct +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_goTypes = []any{ + (UpstreamSpec_ClusterProtocolSelection)(0), // 0: gloo.solo.io.UpstreamSpec.ClusterProtocolSelection + (UpstreamStatus_State)(0), // 1: gloo.solo.io.UpstreamStatus.State + (*UpstreamSpec)(nil), // 2: gloo.solo.io.UpstreamSpec + (*DiscoveryMetadata)(nil), // 3: gloo.solo.io.DiscoveryMetadata + (*HeaderValue)(nil), // 4: gloo.solo.io.HeaderValue + (*PreconnectPolicy)(nil), // 5: gloo.solo.io.PreconnectPolicy + (*UpstreamStatus)(nil), // 6: gloo.solo.io.UpstreamStatus + (*UpstreamNamespacedStatuses)(nil), // 7: gloo.solo.io.UpstreamNamespacedStatuses + nil, // 8: gloo.solo.io.DiscoveryMetadata.LabelsEntry + nil, // 9: gloo.solo.io.UpstreamStatus.SubresourceStatusesEntry + nil, // 10: gloo.solo.io.UpstreamNamespacedStatuses.StatusesEntry + (*ssl.UpstreamSslConfig)(nil), // 11: gloo.solo.io.UpstreamSslConfig + (*circuit_breaker.CircuitBreakerConfig)(nil), // 12: gloo.solo.io.CircuitBreakerConfig + (*LoadBalancerConfig)(nil), // 13: gloo.solo.io.LoadBalancerConfig + (*core.HealthCheck)(nil), // 14: solo.io.envoy.api.v2.core.HealthCheck + (*cluster.OutlierDetection)(nil), // 15: solo.io.envoy.api.v2.cluster.OutlierDetection + (*kubernetes.UpstreamSpec)(nil), // 16: kubernetes.options.gloo.solo.io.UpstreamSpec + (*static.UpstreamSpec)(nil), // 17: static.options.gloo.solo.io.UpstreamSpec + (*pipe.UpstreamSpec)(nil), // 18: pipe.options.gloo.solo.io.UpstreamSpec + (*aws.UpstreamSpec)(nil), // 19: aws.options.gloo.solo.io.UpstreamSpec + (*azure.UpstreamSpec)(nil), // 20: azure.options.gloo.solo.io.UpstreamSpec + (*consul.UpstreamSpec)(nil), // 21: consul.options.gloo.solo.io.UpstreamSpec + (*ec2.UpstreamSpec)(nil), // 22: aws_ec2.options.gloo.solo.io.UpstreamSpec + (*gcp.UpstreamSpec)(nil), // 23: gcp.options.gloo.solo.io.UpstreamSpec + (*ai.UpstreamSpec)(nil), // 24: ai.options.gloo.solo.io.UpstreamSpec + (*Failover)(nil), // 25: gloo.solo.io.Failover + (*ConnectionConfig)(nil), // 26: gloo.solo.io.ConnectionConfig + (*wrapperspb.BoolValue)(nil), // 27: google.protobuf.BoolValue + (*wrapperspb.UInt32Value)(nil), // 28: google.protobuf.UInt32Value + (*wrapperspb.StringValue)(nil), // 29: google.protobuf.StringValue + (*durationpb.Duration)(nil), // 30: google.protobuf.Duration + (*wrapperspb.DoubleValue)(nil), // 31: google.protobuf.DoubleValue + (*structpb.Struct)(nil), // 32: google.protobuf.Struct } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_depIdxs = []int32{ - 2, // 0: gloo.solo.io.UpstreamSpec.discovery_metadata:type_name -> gloo.solo.io.DiscoveryMetadata - 6, // 1: gloo.solo.io.UpstreamSpec.ssl_config:type_name -> gloo.solo.io.UpstreamSslConfig - 7, // 2: gloo.solo.io.UpstreamSpec.circuit_breakers:type_name -> gloo.solo.io.CircuitBreakerConfig - 8, // 3: gloo.solo.io.UpstreamSpec.load_balancer_config:type_name -> gloo.solo.io.LoadBalancerConfig - 9, // 4: gloo.solo.io.UpstreamSpec.connection_config:type_name -> gloo.solo.io.ConnectionConfig - 10, // 5: gloo.solo.io.UpstreamSpec.health_checks:type_name -> solo.io.envoy.api.v2.core.HealthCheck - 11, // 6: gloo.solo.io.UpstreamSpec.outlier_detection:type_name -> solo.io.envoy.api.v2.cluster.OutlierDetection - 12, // 7: gloo.solo.io.UpstreamSpec.use_http2:type_name -> google.protobuf.BoolValue - 13, // 8: gloo.solo.io.UpstreamSpec.kube:type_name -> kubernetes.options.gloo.solo.io.UpstreamSpec - 14, // 9: gloo.solo.io.UpstreamSpec.static:type_name -> static.options.gloo.solo.io.UpstreamSpec - 15, // 10: gloo.solo.io.UpstreamSpec.pipe:type_name -> pipe.options.gloo.solo.io.UpstreamSpec - 16, // 11: gloo.solo.io.UpstreamSpec.aws:type_name -> aws.options.gloo.solo.io.UpstreamSpec - 17, // 12: gloo.solo.io.UpstreamSpec.azure:type_name -> azure.options.gloo.solo.io.UpstreamSpec - 18, // 13: gloo.solo.io.UpstreamSpec.consul:type_name -> consul.options.gloo.solo.io.UpstreamSpec - 19, // 14: gloo.solo.io.UpstreamSpec.aws_ec2:type_name -> aws_ec2.options.gloo.solo.io.UpstreamSpec - 20, // 15: gloo.solo.io.UpstreamSpec.failover:type_name -> gloo.solo.io.Failover - 21, // 16: gloo.solo.io.UpstreamSpec.initial_stream_window_size:type_name -> google.protobuf.UInt32Value - 21, // 17: gloo.solo.io.UpstreamSpec.initial_connection_window_size:type_name -> google.protobuf.UInt32Value - 22, // 18: gloo.solo.io.UpstreamSpec.http_proxy_hostname:type_name -> google.protobuf.StringValue - 4, // 19: gloo.solo.io.DiscoveryMetadata.labels:type_name -> gloo.solo.io.DiscoveryMetadata.LabelsEntry - 0, // 20: gloo.solo.io.UpstreamStatus.state:type_name -> gloo.solo.io.UpstreamStatus.State - 5, // 21: gloo.solo.io.UpstreamStatus.subresource_statuses:type_name -> gloo.solo.io.UpstreamStatus.SubresourceStatusesEntry - 23, // 22: gloo.solo.io.UpstreamStatus.details:type_name -> google.protobuf.Struct - 3, // 23: gloo.solo.io.UpstreamStatus.SubresourceStatusesEntry.value:type_name -> gloo.solo.io.UpstreamStatus - 24, // [24:24] is the sub-list for method output_type - 24, // [24:24] is the sub-list for method input_type - 24, // [24:24] is the sub-list for extension type_name - 24, // [24:24] is the sub-list for extension extendee - 0, // [0:24] is the sub-list for field type_name + 3, // 0: gloo.solo.io.UpstreamSpec.discovery_metadata:type_name -> gloo.solo.io.DiscoveryMetadata + 11, // 1: gloo.solo.io.UpstreamSpec.ssl_config:type_name -> gloo.solo.io.UpstreamSslConfig + 12, // 2: gloo.solo.io.UpstreamSpec.circuit_breakers:type_name -> gloo.solo.io.CircuitBreakerConfig + 13, // 3: gloo.solo.io.UpstreamSpec.load_balancer_config:type_name -> gloo.solo.io.LoadBalancerConfig + 14, // 4: gloo.solo.io.UpstreamSpec.health_checks:type_name -> solo.io.envoy.api.v2.core.HealthCheck + 15, // 5: gloo.solo.io.UpstreamSpec.outlier_detection:type_name -> solo.io.envoy.api.v2.cluster.OutlierDetection + 16, // 6: gloo.solo.io.UpstreamSpec.kube:type_name -> kubernetes.options.gloo.solo.io.UpstreamSpec + 17, // 7: gloo.solo.io.UpstreamSpec.static:type_name -> static.options.gloo.solo.io.UpstreamSpec + 18, // 8: gloo.solo.io.UpstreamSpec.pipe:type_name -> pipe.options.gloo.solo.io.UpstreamSpec + 19, // 9: gloo.solo.io.UpstreamSpec.aws:type_name -> aws.options.gloo.solo.io.UpstreamSpec + 20, // 10: gloo.solo.io.UpstreamSpec.azure:type_name -> azure.options.gloo.solo.io.UpstreamSpec + 21, // 11: gloo.solo.io.UpstreamSpec.consul:type_name -> consul.options.gloo.solo.io.UpstreamSpec + 22, // 12: gloo.solo.io.UpstreamSpec.aws_ec2:type_name -> aws_ec2.options.gloo.solo.io.UpstreamSpec + 23, // 13: gloo.solo.io.UpstreamSpec.gcp:type_name -> gcp.options.gloo.solo.io.UpstreamSpec + 24, // 14: gloo.solo.io.UpstreamSpec.ai:type_name -> ai.options.gloo.solo.io.UpstreamSpec + 25, // 15: gloo.solo.io.UpstreamSpec.failover:type_name -> gloo.solo.io.Failover + 26, // 16: gloo.solo.io.UpstreamSpec.connection_config:type_name -> gloo.solo.io.ConnectionConfig + 0, // 17: gloo.solo.io.UpstreamSpec.protocol_selection:type_name -> gloo.solo.io.UpstreamSpec.ClusterProtocolSelection + 27, // 18: gloo.solo.io.UpstreamSpec.use_http2:type_name -> google.protobuf.BoolValue + 28, // 19: gloo.solo.io.UpstreamSpec.initial_stream_window_size:type_name -> google.protobuf.UInt32Value + 28, // 20: gloo.solo.io.UpstreamSpec.initial_connection_window_size:type_name -> google.protobuf.UInt32Value + 28, // 21: gloo.solo.io.UpstreamSpec.max_concurrent_streams:type_name -> google.protobuf.UInt32Value + 27, // 22: gloo.solo.io.UpstreamSpec.override_stream_error_on_invalid_http_message:type_name -> google.protobuf.BoolValue + 29, // 23: gloo.solo.io.UpstreamSpec.http_proxy_hostname:type_name -> google.protobuf.StringValue + 11, // 24: gloo.solo.io.UpstreamSpec.http_connect_ssl_config:type_name -> gloo.solo.io.UpstreamSslConfig + 4, // 25: gloo.solo.io.UpstreamSpec.http_connect_headers:type_name -> gloo.solo.io.HeaderValue + 27, // 26: gloo.solo.io.UpstreamSpec.ignore_health_on_host_removal:type_name -> google.protobuf.BoolValue + 27, // 27: gloo.solo.io.UpstreamSpec.respect_dns_ttl:type_name -> google.protobuf.BoolValue + 30, // 28: gloo.solo.io.UpstreamSpec.dns_refresh_rate:type_name -> google.protobuf.Duration + 29, // 29: gloo.solo.io.UpstreamSpec.proxy_protocol_version:type_name -> google.protobuf.StringValue + 5, // 30: gloo.solo.io.UpstreamSpec.preconnect_policy:type_name -> gloo.solo.io.PreconnectPolicy + 27, // 31: gloo.solo.io.UpstreamSpec.disable_istio_auto_mtls:type_name -> google.protobuf.BoolValue + 8, // 32: gloo.solo.io.DiscoveryMetadata.labels:type_name -> gloo.solo.io.DiscoveryMetadata.LabelsEntry + 31, // 33: gloo.solo.io.PreconnectPolicy.per_upstream_preconnect_ratio:type_name -> google.protobuf.DoubleValue + 31, // 34: gloo.solo.io.PreconnectPolicy.predictive_preconnect_ratio:type_name -> google.protobuf.DoubleValue + 1, // 35: gloo.solo.io.UpstreamStatus.state:type_name -> gloo.solo.io.UpstreamStatus.State + 9, // 36: gloo.solo.io.UpstreamStatus.subresource_statuses:type_name -> gloo.solo.io.UpstreamStatus.SubresourceStatusesEntry + 32, // 37: gloo.solo.io.UpstreamStatus.details:type_name -> google.protobuf.Struct + 10, // 38: gloo.solo.io.UpstreamNamespacedStatuses.statuses:type_name -> gloo.solo.io.UpstreamNamespacedStatuses.StatusesEntry + 6, // 39: gloo.solo.io.UpstreamStatus.SubresourceStatusesEntry.value:type_name -> gloo.solo.io.UpstreamStatus + 6, // 40: gloo.solo.io.UpstreamNamespacedStatuses.StatusesEntry.value:type_name -> gloo.solo.io.UpstreamStatus + 41, // [41:41] is the sub-list for method output_type + 41, // [41:41] is the sub-list for method input_type + 41, // [41:41] is the sub-list for extension type_name + 41, // [41:41] is the sub-list for extension extendee + 0, // [0:41] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_init() } @@ -812,50 +1368,10 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_init() { if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto != nil { return } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_ssl_proto_init() - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_circuit_breaker_proto_init() file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_load_balancer_proto_init() file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_connection_proto_init() file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_failover_proto_init() - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpstreamSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DiscoveryMetadata); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpstreamStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes[0].OneofWrappers = []any{ (*UpstreamSpec_Kube)(nil), (*UpstreamSpec_Static)(nil), (*UpstreamSpec_Pipe)(nil), @@ -863,14 +1379,16 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_init() { (*UpstreamSpec_Azure)(nil), (*UpstreamSpec_Consul)(nil), (*UpstreamSpec_AwsEc2)(nil), + (*UpstreamSpec_Gcp)(nil), + (*UpstreamSpec_Ai)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDesc, - NumEnums: 1, - NumMessages: 5, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDesc)), + NumEnums: 2, + NumMessages: 9, NumExtensions: 0, NumServices: 0, }, @@ -880,7 +1398,6 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_init() { MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto = out.File - file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_upstream_proto_depIdxs = nil } diff --git a/pkg/api/gloo.solo.io/v1/upstream.pb.hash.go b/pkg/api/gloo.solo.io/v1/upstream.pb.hash.go index 60231f3c8..e9b9d9159 100644 --- a/pkg/api/gloo.solo.io/v1/upstream.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/upstream.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -39,86 +43,331 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetDiscoveryMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DiscoveryMetadata")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDiscoveryMetadata(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDiscoveryMetadata(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DiscoveryMetadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetCircuitBreakers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CircuitBreakers")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetCircuitBreakers(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetCircuitBreakers(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("CircuitBreakers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetLoadBalancerConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LoadBalancerConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLoadBalancerConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LoadBalancerConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetHealthChecks() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetOutlierDetection()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OutlierDetection")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetLoadBalancerConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetOutlierDetection(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("OutlierDetection")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFailover()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Failover")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFailover(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Failover")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } if h, ok := interface{}(m.GetConnectionConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectionConfig")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConnectionConfig(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConnectionConfig(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ConnectionConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - for _, v := range m.GetHealthChecks() { + err = binary.Write(hasher, binary.LittleEndian, m.GetProtocolSelection()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetUseHttp2()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UseHttp2")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUseHttp2(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UseHttp2")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetInitialStreamWindowSize()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InitialStreamWindowSize")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInitialStreamWindowSize(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("InitialStreamWindowSize")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetInitialConnectionWindowSize()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InitialConnectionWindowSize")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInitialConnectionWindowSize(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("InitialConnectionWindowSize")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxConcurrentStreams()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxConcurrentStreams")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxConcurrentStreams(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxConcurrentStreams")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetOverrideStreamErrorOnInvalidHttpMessage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OverrideStreamErrorOnInvalidHttpMessage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOverrideStreamErrorOnInvalidHttpMessage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OverrideStreamErrorOnInvalidHttpMessage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHttpProxyHostname()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpProxyHostname")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpProxyHostname(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpProxyHostname")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHttpConnectSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpConnectSslConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpConnectSslConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpConnectSslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + for _, v := range m.GetHttpConnectHeaders() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -126,85 +375,121 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { } - if h, ok := interface{}(m.GetOutlierDetection()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetIgnoreHealthOnHostRemoval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IgnoreHealthOnHostRemoval")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetOutlierDetection(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetIgnoreHealthOnHostRemoval(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("IgnoreHealthOnHostRemoval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - if h, ok := interface{}(m.GetUseHttp2()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetRespectDnsTtl()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RespectDnsTtl")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetUseHttp2(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRespectDnsTtl(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RespectDnsTtl")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - if h, ok := interface{}(m.GetFailover()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetDnsRefreshRate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DnsRefreshRate")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetFailover(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDnsRefreshRate(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DnsRefreshRate")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - if h, ok := interface{}(m.GetInitialStreamWindowSize()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetProxyProtocolVersion()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProxyProtocolVersion")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetInitialStreamWindowSize(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetProxyProtocolVersion(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ProxyProtocolVersion")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - if h, ok := interface{}(m.GetInitialConnectionWindowSize()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetPreconnectPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PreconnectPolicy")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetInitialConnectionWindowSize(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPreconnectPolicy(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("PreconnectPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } } - if h, ok := interface{}(m.GetHttpProxyHostname()).(safe_hasher.SafeHasher); ok { + if h, ok := interface{}(m.GetDisableIstioAutoMtls()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisableIstioAutoMtls")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHttpProxyHostname(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDisableIstioAutoMtls(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DisableIstioAutoMtls")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -215,14 +500,20 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { case *UpstreamSpec_Kube: if h, ok := interface{}(m.GetKube()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Kube")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetKube(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetKube(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Kube")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -231,14 +522,20 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { case *UpstreamSpec_Static: if h, ok := interface{}(m.GetStatic()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Static")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetStatic(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetStatic(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Static")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -247,14 +544,20 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { case *UpstreamSpec_Pipe: if h, ok := interface{}(m.GetPipe()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Pipe")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetPipe(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetPipe(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Pipe")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -263,14 +566,20 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { case *UpstreamSpec_Aws: if h, ok := interface{}(m.GetAws()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Aws")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAws(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAws(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Aws")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -279,14 +588,20 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { case *UpstreamSpec_Azure: if h, ok := interface{}(m.GetAzure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAzure(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAzure(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -295,14 +610,20 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { case *UpstreamSpec_Consul: if h, ok := interface{}(m.GetConsul()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Consul")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetConsul(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetConsul(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Consul")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -311,14 +632,64 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { case *UpstreamSpec_AwsEc2: if h, ok := interface{}(m.GetAwsEc2()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AwsEc2")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAwsEc2(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AwsEc2")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_Gcp: + + if h, ok := interface{}(m.GetGcp()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Gcp")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGcp(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Gcp")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_Ai: + + if h, ok := interface{}(m.GetAi()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ai")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetAwsEc2(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetAi(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Ai")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -330,6 +701,10 @@ func (m *UpstreamSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *DiscoveryMetadata) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -369,6 +744,98 @@ func (m *DiscoveryMetadata) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *HeaderValue) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.HeaderValue")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetValue())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *PreconnectPolicy) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.PreconnectPolicy")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPerUpstreamPreconnectRatio()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PerUpstreamPreconnectRatio")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPerUpstreamPreconnectRatio(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PerUpstreamPreconnectRatio")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPredictivePreconnectRatio()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PredictivePreconnectRatio")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPredictivePreconnectRatio(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PredictivePreconnectRatio")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *UpstreamStatus) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -401,14 +868,20 @@ func (m *UpstreamStatus) Hash(hasher hash.Hash64) (uint64, error) { innerHash.Reset() if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(innerHash); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(innerHash, binary.LittleEndian, val); err != nil { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -428,17 +901,82 @@ func (m *UpstreamStatus) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Details")); err != nil { return 0, err } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *UpstreamNamespacedStatuses) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.UpstreamNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err } + } return hasher.Sum64(), nil diff --git a/pkg/api/gloo.solo.io/v1/upstream.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/upstream.pb.uniquehash.go new file mode 100644 index 000000000..cf83a388e --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/upstream.pb.uniquehash.go @@ -0,0 +1,1021 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/upstream.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.UpstreamSpec")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetDiscoveryMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DiscoveryMetadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDiscoveryMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DiscoveryMetadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSslConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCircuitBreakers()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CircuitBreakers")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCircuitBreakers(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CircuitBreakers")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetLoadBalancerConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("LoadBalancerConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLoadBalancerConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("LoadBalancerConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("HealthChecks")); err != nil { + return 0, err + } + for i, v := range m.GetHealthChecks() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetOutlierDetection()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OutlierDetection")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOutlierDetection(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OutlierDetection")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetFailover()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Failover")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetFailover(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Failover")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetConnectionConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ConnectionConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConnectionConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ConnectionConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("ProtocolSelection")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetProtocolSelection()) + if err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetUseHttp2()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("UseHttp2")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetUseHttp2(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("UseHttp2")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetInitialStreamWindowSize()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InitialStreamWindowSize")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInitialStreamWindowSize(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("InitialStreamWindowSize")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetInitialConnectionWindowSize()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("InitialConnectionWindowSize")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetInitialConnectionWindowSize(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("InitialConnectionWindowSize")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetMaxConcurrentStreams()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MaxConcurrentStreams")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMaxConcurrentStreams(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MaxConcurrentStreams")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetOverrideStreamErrorOnInvalidHttpMessage()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("OverrideStreamErrorOnInvalidHttpMessage")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetOverrideStreamErrorOnInvalidHttpMessage(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("OverrideStreamErrorOnInvalidHttpMessage")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHttpProxyHostname()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpProxyHostname")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpProxyHostname(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpProxyHostname")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHttpConnectSslConfig()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HttpConnectSslConfig")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHttpConnectSslConfig(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HttpConnectSslConfig")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("HttpConnectHeaders")); err != nil { + return 0, err + } + for i, v := range m.GetHttpConnectHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetIgnoreHealthOnHostRemoval()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IgnoreHealthOnHostRemoval")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIgnoreHealthOnHostRemoval(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IgnoreHealthOnHostRemoval")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRespectDnsTtl()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RespectDnsTtl")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRespectDnsTtl(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RespectDnsTtl")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDnsRefreshRate()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DnsRefreshRate")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDnsRefreshRate(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DnsRefreshRate")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetProxyProtocolVersion()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ProxyProtocolVersion")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetProxyProtocolVersion(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ProxyProtocolVersion")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPreconnectPolicy()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PreconnectPolicy")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPreconnectPolicy(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PreconnectPolicy")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDisableIstioAutoMtls()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DisableIstioAutoMtls")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDisableIstioAutoMtls(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DisableIstioAutoMtls")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.UpstreamType.(type) { + + case *UpstreamSpec_Kube: + + if h, ok := interface{}(m.GetKube()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Kube")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetKube(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Kube")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_Static: + + if h, ok := interface{}(m.GetStatic()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Static")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStatic(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Static")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_Pipe: + + if h, ok := interface{}(m.GetPipe()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Pipe")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPipe(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Pipe")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_Aws: + + if h, ok := interface{}(m.GetAws()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Aws")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAws(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Aws")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_Azure: + + if h, ok := interface{}(m.GetAzure()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAzure(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Azure")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_Consul: + + if h, ok := interface{}(m.GetConsul()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Consul")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetConsul(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Consul")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_AwsEc2: + + if h, ok := interface{}(m.GetAwsEc2()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("AwsEc2")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAwsEc2(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("AwsEc2")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_Gcp: + + if h, ok := interface{}(m.GetGcp()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Gcp")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGcp(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Gcp")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *UpstreamSpec_Ai: + + if h, ok := interface{}(m.GetAi()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ai")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetAi(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Ai")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *DiscoveryMetadata) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.DiscoveryMetadata")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetLabels() { + innerHash.Reset() + + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(v)); err != nil { + return 0, err + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *HeaderValue) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.HeaderValue")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetValue())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *PreconnectPolicy) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.PreconnectPolicy")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetPerUpstreamPreconnectRatio()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PerUpstreamPreconnectRatio")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPerUpstreamPreconnectRatio(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PerUpstreamPreconnectRatio")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetPredictivePreconnectRatio()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("PredictivePreconnectRatio")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetPredictivePreconnectRatio(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("PredictivePreconnectRatio")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.UpstreamStatus")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("State")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Reason")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ReportedBy")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *UpstreamNamespacedStatuses) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.UpstreamNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/virtual_host_options.pb.clone.go b/pkg/api/gloo.solo.io/v1/virtual_host_options.pb.clone.go new file mode 100644 index 000000000..d692e730f --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/virtual_host_options.pb.clone.go @@ -0,0 +1,287 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/virtual_host_options.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_buffer_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_csrf_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_dlp "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/dlp" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_extproc "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/extproc" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_jwt "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/jwt" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_rbac "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/rbac" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_waf "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/waf" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_cors "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/cors" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_headers "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/headers" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_retries "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/retries" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_stats "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/stats" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_transformation "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation" + + google_golang_org_protobuf_types_known_wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *VirtualHostOptions) Clone() proto.Message { + var target *VirtualHostOptions + if m == nil { + return target + } + target = &VirtualHostOptions{} + + if h, ok := interface{}(m.GetExtensions()).(clone.Cloner); ok { + target.Extensions = h.Clone().(*Extensions) + } else { + target.Extensions = proto.Clone(m.GetExtensions()).(*Extensions) + } + + if h, ok := interface{}(m.GetRetries()).(clone.Cloner); ok { + target.Retries = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_retries.RetryPolicy) + } else { + target.Retries = proto.Clone(m.GetRetries()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_retries.RetryPolicy) + } + + if h, ok := interface{}(m.GetStats()).(clone.Cloner); ok { + target.Stats = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_stats.Stats) + } else { + target.Stats = proto.Clone(m.GetStats()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_stats.Stats) + } + + if h, ok := interface{}(m.GetHeaderManipulation()).(clone.Cloner); ok { + target.HeaderManipulation = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_headers.HeaderManipulation) + } else { + target.HeaderManipulation = proto.Clone(m.GetHeaderManipulation()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_headers.HeaderManipulation) + } + + if h, ok := interface{}(m.GetCors()).(clone.Cloner); ok { + target.Cors = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_cors.CorsPolicy) + } else { + target.Cors = proto.Clone(m.GetCors()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_cors.CorsPolicy) + } + + if h, ok := interface{}(m.GetTransformations()).(clone.Cloner); ok { + target.Transformations = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_transformation.Transformations) + } else { + target.Transformations = proto.Clone(m.GetTransformations()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_transformation.Transformations) + } + + if h, ok := interface{}(m.GetRatelimitBasic()).(clone.Cloner); ok { + target.RatelimitBasic = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.IngressRateLimit) + } else { + target.RatelimitBasic = proto.Clone(m.GetRatelimitBasic()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.IngressRateLimit) + } + + if h, ok := interface{}(m.GetWaf()).(clone.Cloner); ok { + target.Waf = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_waf.Settings) + } else { + target.Waf = proto.Clone(m.GetWaf()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_waf.Settings) + } + + if h, ok := interface{}(m.GetRbac()).(clone.Cloner); ok { + target.Rbac = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_rbac.ExtensionSettings) + } else { + target.Rbac = proto.Clone(m.GetRbac()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_rbac.ExtensionSettings) + } + + if h, ok := interface{}(m.GetExtauth()).(clone.Cloner); ok { + target.Extauth = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1.ExtAuthExtension) + } else { + target.Extauth = proto.Clone(m.GetExtauth()).(*github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1.ExtAuthExtension) + } + + if h, ok := interface{}(m.GetDlp()).(clone.Cloner); ok { + target.Dlp = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_dlp.Config) + } else { + target.Dlp = proto.Clone(m.GetDlp()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_dlp.Config) + } + + if h, ok := interface{}(m.GetBufferPerRoute()).(clone.Cloner); ok { + target.BufferPerRoute = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_buffer_v3.BufferPerRoute) + } else { + target.BufferPerRoute = proto.Clone(m.GetBufferPerRoute()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_buffer_v3.BufferPerRoute) + } + + if h, ok := interface{}(m.GetCsrf()).(clone.Cloner); ok { + target.Csrf = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_csrf_v3.CsrfPolicy) + } else { + target.Csrf = proto.Clone(m.GetCsrf()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_csrf_v3.CsrfPolicy) + } + + if h, ok := interface{}(m.GetIncludeRequestAttemptCount()).(clone.Cloner); ok { + target.IncludeRequestAttemptCount = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.IncludeRequestAttemptCount = proto.Clone(m.GetIncludeRequestAttemptCount()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetIncludeAttemptCountInResponse()).(clone.Cloner); ok { + target.IncludeAttemptCountInResponse = h.Clone().(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } else { + target.IncludeAttemptCountInResponse = proto.Clone(m.GetIncludeAttemptCountInResponse()).(*google_golang_org_protobuf_types_known_wrapperspb.BoolValue) + } + + if h, ok := interface{}(m.GetStagedTransformations()).(clone.Cloner); ok { + target.StagedTransformations = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_transformation.TransformationStages) + } else { + target.StagedTransformations = proto.Clone(m.GetStagedTransformations()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_transformation.TransformationStages) + } + + if h, ok := interface{}(m.GetExtProc()).(clone.Cloner); ok { + target.ExtProc = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_extproc.RouteSettings) + } else { + target.ExtProc = proto.Clone(m.GetExtProc()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_extproc.RouteSettings) + } + + if h, ok := interface{}(m.GetCorsPolicyMergeSettings()).(clone.Cloner); ok { + target.CorsPolicyMergeSettings = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_cors.CorsPolicyMergeSettings) + } else { + target.CorsPolicyMergeSettings = proto.Clone(m.GetCorsPolicyMergeSettings()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_cors.CorsPolicyMergeSettings) + } + + switch m.RateLimitEarlyConfigType.(type) { + + case *VirtualHostOptions_RatelimitEarly: + + if h, ok := interface{}(m.GetRatelimitEarly()).(clone.Cloner); ok { + target.RateLimitEarlyConfigType = &VirtualHostOptions_RatelimitEarly{ + RatelimitEarly: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitVhostExtension), + } + } else { + target.RateLimitEarlyConfigType = &VirtualHostOptions_RatelimitEarly{ + RatelimitEarly: proto.Clone(m.GetRatelimitEarly()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitVhostExtension), + } + } + + case *VirtualHostOptions_RateLimitEarlyConfigs: + + if h, ok := interface{}(m.GetRateLimitEarlyConfigs()).(clone.Cloner); ok { + target.RateLimitEarlyConfigType = &VirtualHostOptions_RateLimitEarlyConfigs{ + RateLimitEarlyConfigs: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitConfigRefs), + } + } else { + target.RateLimitEarlyConfigType = &VirtualHostOptions_RateLimitEarlyConfigs{ + RateLimitEarlyConfigs: proto.Clone(m.GetRateLimitEarlyConfigs()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitConfigRefs), + } + } + + } + + switch m.RateLimitConfigType.(type) { + + case *VirtualHostOptions_Ratelimit: + + if h, ok := interface{}(m.GetRatelimit()).(clone.Cloner); ok { + target.RateLimitConfigType = &VirtualHostOptions_Ratelimit{ + Ratelimit: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitVhostExtension), + } + } else { + target.RateLimitConfigType = &VirtualHostOptions_Ratelimit{ + Ratelimit: proto.Clone(m.GetRatelimit()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitVhostExtension), + } + } + + case *VirtualHostOptions_RateLimitConfigs: + + if h, ok := interface{}(m.GetRateLimitConfigs()).(clone.Cloner); ok { + target.RateLimitConfigType = &VirtualHostOptions_RateLimitConfigs{ + RateLimitConfigs: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitConfigRefs), + } + } else { + target.RateLimitConfigType = &VirtualHostOptions_RateLimitConfigs{ + RateLimitConfigs: proto.Clone(m.GetRateLimitConfigs()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitConfigRefs), + } + } + + } + + switch m.RateLimitRegularConfigType.(type) { + + case *VirtualHostOptions_RatelimitRegular: + + if h, ok := interface{}(m.GetRatelimitRegular()).(clone.Cloner); ok { + target.RateLimitRegularConfigType = &VirtualHostOptions_RatelimitRegular{ + RatelimitRegular: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitVhostExtension), + } + } else { + target.RateLimitRegularConfigType = &VirtualHostOptions_RatelimitRegular{ + RatelimitRegular: proto.Clone(m.GetRatelimitRegular()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitVhostExtension), + } + } + + case *VirtualHostOptions_RateLimitRegularConfigs: + + if h, ok := interface{}(m.GetRateLimitRegularConfigs()).(clone.Cloner); ok { + target.RateLimitRegularConfigType = &VirtualHostOptions_RateLimitRegularConfigs{ + RateLimitRegularConfigs: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitConfigRefs), + } + } else { + target.RateLimitRegularConfigType = &VirtualHostOptions_RateLimitRegularConfigs{ + RateLimitRegularConfigs: proto.Clone(m.GetRateLimitRegularConfigs()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_ratelimit.RateLimitConfigRefs), + } + } + + } + + switch m.JwtConfig.(type) { + + case *VirtualHostOptions_Jwt: + + if h, ok := interface{}(m.GetJwt()).(clone.Cloner); ok { + target.JwtConfig = &VirtualHostOptions_Jwt{ + Jwt: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_jwt.VhostExtension), + } + } else { + target.JwtConfig = &VirtualHostOptions_Jwt{ + Jwt: proto.Clone(m.GetJwt()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_jwt.VhostExtension), + } + } + + case *VirtualHostOptions_JwtStaged: + + if h, ok := interface{}(m.GetJwtStaged()).(clone.Cloner); ok { + target.JwtConfig = &VirtualHostOptions_JwtStaged{ + JwtStaged: h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_jwt.JwtStagedVhostExtension), + } + } else { + target.JwtConfig = &VirtualHostOptions_JwtStaged{ + JwtStaged: proto.Clone(m.GetJwtStaged()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_enterprise_options_jwt.JwtStagedVhostExtension), + } + } + + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/virtual_host_options.pb.equal.go b/pkg/api/gloo.solo.io/v1/virtual_host_options.pb.equal.go new file mode 100644 index 000000000..c48fb3c29 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/virtual_host_options.pb.equal.go @@ -0,0 +1,386 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/virtual_host_options.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *VirtualHostOptions) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*VirtualHostOptions) + if !ok { + that2, ok := that.(VirtualHostOptions) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetExtensions()).(equality.Equalizer); ok { + if !h.Equal(target.GetExtensions()) { + return false + } + } else { + if !proto.Equal(m.GetExtensions(), target.GetExtensions()) { + return false + } + } + + if h, ok := interface{}(m.GetRetries()).(equality.Equalizer); ok { + if !h.Equal(target.GetRetries()) { + return false + } + } else { + if !proto.Equal(m.GetRetries(), target.GetRetries()) { + return false + } + } + + if h, ok := interface{}(m.GetStats()).(equality.Equalizer); ok { + if !h.Equal(target.GetStats()) { + return false + } + } else { + if !proto.Equal(m.GetStats(), target.GetStats()) { + return false + } + } + + if h, ok := interface{}(m.GetHeaderManipulation()).(equality.Equalizer); ok { + if !h.Equal(target.GetHeaderManipulation()) { + return false + } + } else { + if !proto.Equal(m.GetHeaderManipulation(), target.GetHeaderManipulation()) { + return false + } + } + + if h, ok := interface{}(m.GetCors()).(equality.Equalizer); ok { + if !h.Equal(target.GetCors()) { + return false + } + } else { + if !proto.Equal(m.GetCors(), target.GetCors()) { + return false + } + } + + if h, ok := interface{}(m.GetTransformations()).(equality.Equalizer); ok { + if !h.Equal(target.GetTransformations()) { + return false + } + } else { + if !proto.Equal(m.GetTransformations(), target.GetTransformations()) { + return false + } + } + + if h, ok := interface{}(m.GetRatelimitBasic()).(equality.Equalizer); ok { + if !h.Equal(target.GetRatelimitBasic()) { + return false + } + } else { + if !proto.Equal(m.GetRatelimitBasic(), target.GetRatelimitBasic()) { + return false + } + } + + if h, ok := interface{}(m.GetWaf()).(equality.Equalizer); ok { + if !h.Equal(target.GetWaf()) { + return false + } + } else { + if !proto.Equal(m.GetWaf(), target.GetWaf()) { + return false + } + } + + if h, ok := interface{}(m.GetRbac()).(equality.Equalizer); ok { + if !h.Equal(target.GetRbac()) { + return false + } + } else { + if !proto.Equal(m.GetRbac(), target.GetRbac()) { + return false + } + } + + if h, ok := interface{}(m.GetExtauth()).(equality.Equalizer); ok { + if !h.Equal(target.GetExtauth()) { + return false + } + } else { + if !proto.Equal(m.GetExtauth(), target.GetExtauth()) { + return false + } + } + + if h, ok := interface{}(m.GetDlp()).(equality.Equalizer); ok { + if !h.Equal(target.GetDlp()) { + return false + } + } else { + if !proto.Equal(m.GetDlp(), target.GetDlp()) { + return false + } + } + + if h, ok := interface{}(m.GetBufferPerRoute()).(equality.Equalizer); ok { + if !h.Equal(target.GetBufferPerRoute()) { + return false + } + } else { + if !proto.Equal(m.GetBufferPerRoute(), target.GetBufferPerRoute()) { + return false + } + } + + if h, ok := interface{}(m.GetCsrf()).(equality.Equalizer); ok { + if !h.Equal(target.GetCsrf()) { + return false + } + } else { + if !proto.Equal(m.GetCsrf(), target.GetCsrf()) { + return false + } + } + + if h, ok := interface{}(m.GetIncludeRequestAttemptCount()).(equality.Equalizer); ok { + if !h.Equal(target.GetIncludeRequestAttemptCount()) { + return false + } + } else { + if !proto.Equal(m.GetIncludeRequestAttemptCount(), target.GetIncludeRequestAttemptCount()) { + return false + } + } + + if h, ok := interface{}(m.GetIncludeAttemptCountInResponse()).(equality.Equalizer); ok { + if !h.Equal(target.GetIncludeAttemptCountInResponse()) { + return false + } + } else { + if !proto.Equal(m.GetIncludeAttemptCountInResponse(), target.GetIncludeAttemptCountInResponse()) { + return false + } + } + + if h, ok := interface{}(m.GetStagedTransformations()).(equality.Equalizer); ok { + if !h.Equal(target.GetStagedTransformations()) { + return false + } + } else { + if !proto.Equal(m.GetStagedTransformations(), target.GetStagedTransformations()) { + return false + } + } + + if h, ok := interface{}(m.GetExtProc()).(equality.Equalizer); ok { + if !h.Equal(target.GetExtProc()) { + return false + } + } else { + if !proto.Equal(m.GetExtProc(), target.GetExtProc()) { + return false + } + } + + if h, ok := interface{}(m.GetCorsPolicyMergeSettings()).(equality.Equalizer); ok { + if !h.Equal(target.GetCorsPolicyMergeSettings()) { + return false + } + } else { + if !proto.Equal(m.GetCorsPolicyMergeSettings(), target.GetCorsPolicyMergeSettings()) { + return false + } + } + + switch m.RateLimitEarlyConfigType.(type) { + + case *VirtualHostOptions_RatelimitEarly: + if _, ok := target.RateLimitEarlyConfigType.(*VirtualHostOptions_RatelimitEarly); !ok { + return false + } + + if h, ok := interface{}(m.GetRatelimitEarly()).(equality.Equalizer); ok { + if !h.Equal(target.GetRatelimitEarly()) { + return false + } + } else { + if !proto.Equal(m.GetRatelimitEarly(), target.GetRatelimitEarly()) { + return false + } + } + + case *VirtualHostOptions_RateLimitEarlyConfigs: + if _, ok := target.RateLimitEarlyConfigType.(*VirtualHostOptions_RateLimitEarlyConfigs); !ok { + return false + } + + if h, ok := interface{}(m.GetRateLimitEarlyConfigs()).(equality.Equalizer); ok { + if !h.Equal(target.GetRateLimitEarlyConfigs()) { + return false + } + } else { + if !proto.Equal(m.GetRateLimitEarlyConfigs(), target.GetRateLimitEarlyConfigs()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.RateLimitEarlyConfigType != target.RateLimitEarlyConfigType { + return false + } + } + + switch m.RateLimitConfigType.(type) { + + case *VirtualHostOptions_Ratelimit: + if _, ok := target.RateLimitConfigType.(*VirtualHostOptions_Ratelimit); !ok { + return false + } + + if h, ok := interface{}(m.GetRatelimit()).(equality.Equalizer); ok { + if !h.Equal(target.GetRatelimit()) { + return false + } + } else { + if !proto.Equal(m.GetRatelimit(), target.GetRatelimit()) { + return false + } + } + + case *VirtualHostOptions_RateLimitConfigs: + if _, ok := target.RateLimitConfigType.(*VirtualHostOptions_RateLimitConfigs); !ok { + return false + } + + if h, ok := interface{}(m.GetRateLimitConfigs()).(equality.Equalizer); ok { + if !h.Equal(target.GetRateLimitConfigs()) { + return false + } + } else { + if !proto.Equal(m.GetRateLimitConfigs(), target.GetRateLimitConfigs()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.RateLimitConfigType != target.RateLimitConfigType { + return false + } + } + + switch m.RateLimitRegularConfigType.(type) { + + case *VirtualHostOptions_RatelimitRegular: + if _, ok := target.RateLimitRegularConfigType.(*VirtualHostOptions_RatelimitRegular); !ok { + return false + } + + if h, ok := interface{}(m.GetRatelimitRegular()).(equality.Equalizer); ok { + if !h.Equal(target.GetRatelimitRegular()) { + return false + } + } else { + if !proto.Equal(m.GetRatelimitRegular(), target.GetRatelimitRegular()) { + return false + } + } + + case *VirtualHostOptions_RateLimitRegularConfigs: + if _, ok := target.RateLimitRegularConfigType.(*VirtualHostOptions_RateLimitRegularConfigs); !ok { + return false + } + + if h, ok := interface{}(m.GetRateLimitRegularConfigs()).(equality.Equalizer); ok { + if !h.Equal(target.GetRateLimitRegularConfigs()) { + return false + } + } else { + if !proto.Equal(m.GetRateLimitRegularConfigs(), target.GetRateLimitRegularConfigs()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.RateLimitRegularConfigType != target.RateLimitRegularConfigType { + return false + } + } + + switch m.JwtConfig.(type) { + + case *VirtualHostOptions_Jwt: + if _, ok := target.JwtConfig.(*VirtualHostOptions_Jwt); !ok { + return false + } + + if h, ok := interface{}(m.GetJwt()).(equality.Equalizer); ok { + if !h.Equal(target.GetJwt()) { + return false + } + } else { + if !proto.Equal(m.GetJwt(), target.GetJwt()) { + return false + } + } + + case *VirtualHostOptions_JwtStaged: + if _, ok := target.JwtConfig.(*VirtualHostOptions_JwtStaged); !ok { + return false + } + + if h, ok := interface{}(m.GetJwtStaged()).(equality.Equalizer); ok { + if !h.Equal(target.GetJwtStaged()) { + return false + } + } else { + if !proto.Equal(m.GetJwtStaged(), target.GetJwtStaged()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.JwtConfig != target.JwtConfig { + return false + } + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/virtual_host_options.pb.go b/pkg/api/gloo.solo.io/v1/virtual_host_options.pb.go new file mode 100644 index 000000000..c176a0701 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/virtual_host_options.pb.go @@ -0,0 +1,845 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/virtual_host_options.proto + +package v1 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + v1 "github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1" + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3" + v31 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3" + dlp "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/dlp" + extproc "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/extproc" + jwt "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/jwt" + ratelimit "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/ratelimit" + rbac "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/rbac" + waf "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/enterprise/options/waf" + cors "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/cors" + headers "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/headers" + retries "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/retries" + stats "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/stats" + transformation "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Optional, feature-specific configuration that lives on virtual hosts. +// Each VirtualHostOptions object contains configuration for a specific feature. +// Note to developers: new Virtual Host plugins must be added to this struct +// to be usable by Gloo. (plugins currently need to be compiled into Gloo) +type VirtualHostOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Extensions will be passed along from Listeners, Gateways, VirtualServices, Routes, and Route tables to the + // underlying Proxy, making them useful for controllers, validation tools, etc. which interact with kubernetes yaml. + // + // Some sample use cases: + // * controllers, deployment pipelines, helm charts, etc. which wish to use extensions as a kind of opaque metadata. + // * In the future, Gloo may support gRPC-based plugins which communicate with the Gloo translator out-of-process. + // Opaque Extensions enables development of out-of-process plugins without requiring recompiling & redeploying Gloo's API. + Extensions *Extensions `protobuf:"bytes,1,opt,name=extensions,proto3" json:"extensions,omitempty"` + Retries *retries.RetryPolicy `protobuf:"bytes,5,opt,name=retries,proto3" json:"retries,omitempty"` + Stats *stats.Stats `protobuf:"bytes,10,opt,name=stats,proto3" json:"stats,omitempty"` + // Append/Remove headers on Requests or Responses on all routes contained in this Virtual Host + HeaderManipulation *headers.HeaderManipulation `protobuf:"bytes,2,opt,name=header_manipulation,json=headerManipulation,proto3" json:"header_manipulation,omitempty"` + // Defines a CORS policy for the virtual host. + // If a CORS policy is also defined on the route matched by the request, the route policy + // overrides the virtual host policy for any configured field unless CorsPolicyMergeSettings are specified that define an + // alternate behavior. + Cors *cors.CorsPolicy `protobuf:"bytes,3,opt,name=cors,proto3" json:"cors,omitempty"` + // Transformations to apply. Note: this field is superseded by `staged_transformations`. + // If `staged_transformations.regular` is set, this field will be ignored. + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/virtual_host_options.proto. + Transformations *transformation.Transformations `protobuf:"bytes,4,opt,name=transformations,proto3" json:"transformations,omitempty"` + // Enterprise-only: Config for GlooE rate-limiting using simplified (gloo-specific) API + RatelimitBasic *ratelimit.IngressRateLimit `protobuf:"bytes,6,opt,name=ratelimit_basic,json=ratelimitBasic,proto3" json:"ratelimit_basic,omitempty"` + // Types that are valid to be assigned to RateLimitEarlyConfigType: + // + // *VirtualHostOptions_RatelimitEarly + // *VirtualHostOptions_RateLimitEarlyConfigs + RateLimitEarlyConfigType isVirtualHostOptions_RateLimitEarlyConfigType `protobuf_oneof:"rate_limit_early_config_type"` + // Types that are valid to be assigned to RateLimitConfigType: + // + // *VirtualHostOptions_Ratelimit + // *VirtualHostOptions_RateLimitConfigs + RateLimitConfigType isVirtualHostOptions_RateLimitConfigType `protobuf_oneof:"rate_limit_config_type"` + // Types that are valid to be assigned to RateLimitRegularConfigType: + // + // *VirtualHostOptions_RatelimitRegular + // *VirtualHostOptions_RateLimitRegularConfigs + RateLimitRegularConfigType isVirtualHostOptions_RateLimitRegularConfigType `protobuf_oneof:"rate_limit_regular_config_type"` + // Enterprise-only: Config for Web Application Firewall (WAF), supporting + // the popular ModSecurity 3.0 ruleset + Waf *waf.Settings `protobuf:"bytes,8,opt,name=waf,proto3" json:"waf,omitempty"` + // Types that are valid to be assigned to JwtConfig: + // + // *VirtualHostOptions_Jwt + // *VirtualHostOptions_JwtStaged + JwtConfig isVirtualHostOptions_JwtConfig `protobuf_oneof:"jwt_config"` + // Enterprise-only: Config for RBAC (currently only supports RBAC based on JWT claims) + Rbac *rbac.ExtensionSettings `protobuf:"bytes,11,opt,name=rbac,proto3" json:"rbac,omitempty"` + // Enterprise-only: Authentication configuration + Extauth *v1.ExtAuthExtension `protobuf:"bytes,12,opt,name=extauth,proto3" json:"extauth,omitempty"` + // Enterprise-only: Config for data loss prevention + Dlp *dlp.Config `protobuf:"bytes,13,opt,name=dlp,proto3" json:"dlp,omitempty"` + // BufferPerRoute can be used to set the maximum request size + // that the filter will buffer before the connection + // manager will stop buffering and return a 413 response. + // Note: If you have not set a global config (at the gateway level), this + // override will not do anything by itself. + BufferPerRoute *v3.BufferPerRoute `protobuf:"bytes,14,opt,name=buffer_per_route,json=bufferPerRoute,proto3" json:"buffer_per_route,omitempty"` + // Csrf can be used to set percent of requests for which the CSRF filter is enabled, enable shadow-only mode + // where policies will be evaluated and tracked, but not enforced and add additional source origins + // that will be allowed in addition to the destination origin. + // For more, see https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/filter/http/csrf/v2/csrf.proto + Csrf *v31.CsrfPolicy `protobuf:"bytes,18,opt,name=csrf,proto3" json:"csrf,omitempty"` + // IncludeRequestAttemptCount decides whether the x-envoy-attempt-count header + // should be included in the upstream request. + // Setting this option will cause it to override any existing header value, + // so in the case of two Envoys on the request path with this option enabled, + // the upstream will see the attempt count as perceived by the second Envoy. + // Defaults to false. + IncludeRequestAttemptCount *wrapperspb.BoolValue `protobuf:"bytes,15,opt,name=include_request_attempt_count,json=includeRequestAttemptCount,proto3" json:"include_request_attempt_count,omitempty"` + // IncludeAttemptCountInResponse decides whether the x-envoy-attempt-count header + // should be included in the downstream response. + // Setting this option will cause the router to override any existing header value, + // so in the case of two Envoys on the request path with this option enabled, + // the downstream will see the attempt count as perceived by the Envoy closest upstream from itself. + // Defaults to false. + IncludeAttemptCountInResponse *wrapperspb.BoolValue `protobuf:"bytes,16,opt,name=include_attempt_count_in_response,json=includeAttemptCountInResponse,proto3" json:"include_attempt_count_in_response,omitempty"` + // Early transformations stage. These transformations run before most other options are processed. + // If the `regular` field is set in here, the `transformations` field is ignored. + StagedTransformations *transformation.TransformationStages `protobuf:"bytes,17,opt,name=staged_transformations,json=stagedTransformations,proto3" json:"staged_transformations,omitempty"` + // Enterprise-only: External Processing filter settings for the virtual host. This can be used to + // override certain HttpListenerOptions settings, and can be overridden by RouteOptions settings. + ExtProc *extproc.RouteSettings `protobuf:"bytes,30,opt,name=ext_proc,json=extProc,proto3" json:"ext_proc,omitempty"` + // Settings for determining merge strategy for CORS settings when present at both Route and VirtualHost levels. + CorsPolicyMergeSettings *cors.CorsPolicyMergeSettings `protobuf:"bytes,20,opt,name=cors_policy_merge_settings,json=corsPolicyMergeSettings,proto3" json:"cors_policy_merge_settings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VirtualHostOptions) Reset() { + *x = VirtualHostOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VirtualHostOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VirtualHostOptions) ProtoMessage() {} + +func (x *VirtualHostOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VirtualHostOptions.ProtoReflect.Descriptor instead. +func (*VirtualHostOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_rawDescGZIP(), []int{0} +} + +func (x *VirtualHostOptions) GetExtensions() *Extensions { + if x != nil { + return x.Extensions + } + return nil +} + +func (x *VirtualHostOptions) GetRetries() *retries.RetryPolicy { + if x != nil { + return x.Retries + } + return nil +} + +func (x *VirtualHostOptions) GetStats() *stats.Stats { + if x != nil { + return x.Stats + } + return nil +} + +func (x *VirtualHostOptions) GetHeaderManipulation() *headers.HeaderManipulation { + if x != nil { + return x.HeaderManipulation + } + return nil +} + +func (x *VirtualHostOptions) GetCors() *cors.CorsPolicy { + if x != nil { + return x.Cors + } + return nil +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/virtual_host_options.proto. +func (x *VirtualHostOptions) GetTransformations() *transformation.Transformations { + if x != nil { + return x.Transformations + } + return nil +} + +func (x *VirtualHostOptions) GetRatelimitBasic() *ratelimit.IngressRateLimit { + if x != nil { + return x.RatelimitBasic + } + return nil +} + +func (x *VirtualHostOptions) GetRateLimitEarlyConfigType() isVirtualHostOptions_RateLimitEarlyConfigType { + if x != nil { + return x.RateLimitEarlyConfigType + } + return nil +} + +func (x *VirtualHostOptions) GetRatelimitEarly() *ratelimit.RateLimitVhostExtension { + if x != nil { + if x, ok := x.RateLimitEarlyConfigType.(*VirtualHostOptions_RatelimitEarly); ok { + return x.RatelimitEarly + } + } + return nil +} + +func (x *VirtualHostOptions) GetRateLimitEarlyConfigs() *ratelimit.RateLimitConfigRefs { + if x != nil { + if x, ok := x.RateLimitEarlyConfigType.(*VirtualHostOptions_RateLimitEarlyConfigs); ok { + return x.RateLimitEarlyConfigs + } + } + return nil +} + +func (x *VirtualHostOptions) GetRateLimitConfigType() isVirtualHostOptions_RateLimitConfigType { + if x != nil { + return x.RateLimitConfigType + } + return nil +} + +func (x *VirtualHostOptions) GetRatelimit() *ratelimit.RateLimitVhostExtension { + if x != nil { + if x, ok := x.RateLimitConfigType.(*VirtualHostOptions_Ratelimit); ok { + return x.Ratelimit + } + } + return nil +} + +func (x *VirtualHostOptions) GetRateLimitConfigs() *ratelimit.RateLimitConfigRefs { + if x != nil { + if x, ok := x.RateLimitConfigType.(*VirtualHostOptions_RateLimitConfigs); ok { + return x.RateLimitConfigs + } + } + return nil +} + +func (x *VirtualHostOptions) GetRateLimitRegularConfigType() isVirtualHostOptions_RateLimitRegularConfigType { + if x != nil { + return x.RateLimitRegularConfigType + } + return nil +} + +func (x *VirtualHostOptions) GetRatelimitRegular() *ratelimit.RateLimitVhostExtension { + if x != nil { + if x, ok := x.RateLimitRegularConfigType.(*VirtualHostOptions_RatelimitRegular); ok { + return x.RatelimitRegular + } + } + return nil +} + +func (x *VirtualHostOptions) GetRateLimitRegularConfigs() *ratelimit.RateLimitConfigRefs { + if x != nil { + if x, ok := x.RateLimitRegularConfigType.(*VirtualHostOptions_RateLimitRegularConfigs); ok { + return x.RateLimitRegularConfigs + } + } + return nil +} + +func (x *VirtualHostOptions) GetWaf() *waf.Settings { + if x != nil { + return x.Waf + } + return nil +} + +func (x *VirtualHostOptions) GetJwtConfig() isVirtualHostOptions_JwtConfig { + if x != nil { + return x.JwtConfig + } + return nil +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/virtual_host_options.proto. +func (x *VirtualHostOptions) GetJwt() *jwt.VhostExtension { + if x != nil { + if x, ok := x.JwtConfig.(*VirtualHostOptions_Jwt); ok { + return x.Jwt + } + } + return nil +} + +func (x *VirtualHostOptions) GetJwtStaged() *jwt.JwtStagedVhostExtension { + if x != nil { + if x, ok := x.JwtConfig.(*VirtualHostOptions_JwtStaged); ok { + return x.JwtStaged + } + } + return nil +} + +func (x *VirtualHostOptions) GetRbac() *rbac.ExtensionSettings { + if x != nil { + return x.Rbac + } + return nil +} + +func (x *VirtualHostOptions) GetExtauth() *v1.ExtAuthExtension { + if x != nil { + return x.Extauth + } + return nil +} + +func (x *VirtualHostOptions) GetDlp() *dlp.Config { + if x != nil { + return x.Dlp + } + return nil +} + +func (x *VirtualHostOptions) GetBufferPerRoute() *v3.BufferPerRoute { + if x != nil { + return x.BufferPerRoute + } + return nil +} + +func (x *VirtualHostOptions) GetCsrf() *v31.CsrfPolicy { + if x != nil { + return x.Csrf + } + return nil +} + +func (x *VirtualHostOptions) GetIncludeRequestAttemptCount() *wrapperspb.BoolValue { + if x != nil { + return x.IncludeRequestAttemptCount + } + return nil +} + +func (x *VirtualHostOptions) GetIncludeAttemptCountInResponse() *wrapperspb.BoolValue { + if x != nil { + return x.IncludeAttemptCountInResponse + } + return nil +} + +func (x *VirtualHostOptions) GetStagedTransformations() *transformation.TransformationStages { + if x != nil { + return x.StagedTransformations + } + return nil +} + +func (x *VirtualHostOptions) GetExtProc() *extproc.RouteSettings { + if x != nil { + return x.ExtProc + } + return nil +} + +func (x *VirtualHostOptions) GetCorsPolicyMergeSettings() *cors.CorsPolicyMergeSettings { + if x != nil { + return x.CorsPolicyMergeSettings + } + return nil +} + +type isVirtualHostOptions_RateLimitEarlyConfigType interface { + isVirtualHostOptions_RateLimitEarlyConfigType() +} + +type VirtualHostOptions_RatelimitEarly struct { + // Enterprise-only: Partial config for GlooE rate-limiting based on Envoy's rate-limit service; + // supports Envoy's rate-limit service API. (reference here: https://github.com/lyft/ratelimit#configuration) + // Configure rate-limit *actions* here, which define how request characteristics get translated into + // descriptors used by the rate-limit service for rate-limiting. Configure rate-limit *descriptors* and + // their associated limits on the Gloo settings. + // Only one of `ratelimit_early` or `rate_limit_early_configs` can be set. + RatelimitEarly *ratelimit.RateLimitVhostExtension `protobuf:"bytes,72,opt,name=ratelimit_early,json=ratelimitEarly,proto3,oneof"` +} + +type VirtualHostOptions_RateLimitEarlyConfigs struct { + // References to RateLimitConfig resources. This is used to configure the GlooE rate limit server. + // Only one of `ratelimit_early` or `rate_limit_early_configs` can be set. + RateLimitEarlyConfigs *ratelimit.RateLimitConfigRefs `protobuf:"bytes,73,opt,name=rate_limit_early_configs,json=rateLimitEarlyConfigs,proto3,oneof"` +} + +func (*VirtualHostOptions_RatelimitEarly) isVirtualHostOptions_RateLimitEarlyConfigType() {} + +func (*VirtualHostOptions_RateLimitEarlyConfigs) isVirtualHostOptions_RateLimitEarlyConfigType() {} + +type isVirtualHostOptions_RateLimitConfigType interface { + isVirtualHostOptions_RateLimitConfigType() +} + +type VirtualHostOptions_Ratelimit struct { + // Enterprise-only: Partial config for GlooE rate-limiting based on Envoy's rate-limit service; + // supports Envoy's rate-limit service API. (reference here: https://github.com/lyft/ratelimit#configuration) + // Configure rate-limit *actions* here, which define how request characteristics get translated into + // descriptors used by the rate-limit service for rate-limiting. Configure rate-limit *descriptors* and + // their associated limits on the Gloo settings. + // Only one of `ratelimit` or `rate_limit_configs` can be set. + Ratelimit *ratelimit.RateLimitVhostExtension `protobuf:"bytes,70,opt,name=ratelimit,proto3,oneof"` +} + +type VirtualHostOptions_RateLimitConfigs struct { + // References to RateLimitConfig resources. This is used to configure the GlooE rate limit server. + // Only one of `ratelimit` or `rate_limit_configs` can be set. + RateLimitConfigs *ratelimit.RateLimitConfigRefs `protobuf:"bytes,71,opt,name=rate_limit_configs,json=rateLimitConfigs,proto3,oneof"` +} + +func (*VirtualHostOptions_Ratelimit) isVirtualHostOptions_RateLimitConfigType() {} + +func (*VirtualHostOptions_RateLimitConfigs) isVirtualHostOptions_RateLimitConfigType() {} + +type isVirtualHostOptions_RateLimitRegularConfigType interface { + isVirtualHostOptions_RateLimitRegularConfigType() +} + +type VirtualHostOptions_RatelimitRegular struct { + // Enterprise-only: Partial config for GlooE rate-limiting based on Envoy's rate-limit service; + // supports Envoy's rate-limit service API. (reference here: https://github.com/lyft/ratelimit#configuration) + // Configure rate-limit *actions* here, which define how request characteristics get translated into + // descriptors used by the rate-limit service for rate-limiting. Configure rate-limit *descriptors* and + // their associated limits on the Gloo settings. + // Only one of `ratelimit_regular` or `rate_limit_regular_configs` can be set. + RatelimitRegular *ratelimit.RateLimitVhostExtension `protobuf:"bytes,74,opt,name=ratelimit_regular,json=ratelimitRegular,proto3,oneof"` +} + +type VirtualHostOptions_RateLimitRegularConfigs struct { + // References to RateLimitConfig resources. This is used to configure the GlooE rate limit server. + // Only one of `ratelimit_regular` or `rate_limit_regular_configs` can be set. + RateLimitRegularConfigs *ratelimit.RateLimitConfigRefs `protobuf:"bytes,75,opt,name=rate_limit_regular_configs,json=rateLimitRegularConfigs,proto3,oneof"` +} + +func (*VirtualHostOptions_RatelimitRegular) isVirtualHostOptions_RateLimitRegularConfigType() {} + +func (*VirtualHostOptions_RateLimitRegularConfigs) isVirtualHostOptions_RateLimitRegularConfigType() { +} + +type isVirtualHostOptions_JwtConfig interface { + isVirtualHostOptions_JwtConfig() +} + +type VirtualHostOptions_Jwt struct { + // Enterprise-only: Config for reading and verifying JWTs. Copy verifiable information from JWTs into other + // headers to make routing decisions or combine with RBAC for fine-grained access control. + // This has been deprecated in favor of staged jwt. The same configuration can be achieved through staged jwt + // using AfterExtAuth. + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/virtual_host_options.proto. + Jwt *jwt.VhostExtension `protobuf:"bytes,9,opt,name=jwt,proto3,oneof"` +} + +type VirtualHostOptions_JwtStaged struct { + // Enterprise-only: Config for reading and verifying JWTs. Copy verifiable information from JWTs into other + // headers to make routing decisions or combine with RBAC for fine-grained access control. + // JWT configuration has stages "BeforeExtAuth" and "AfterExtAuth". BeforeExtAuth JWT + // validation runs before the external authentication service. This is useful when JWT + // is used in conjunction with other auth mechanisms specified in the [boolean expression Extauth API](https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-apis/api/gloo/enterprise.gloo/v1/auth_config.proto.sk/#authconfig). + // AfterExtAuth validation runs after external authentication service, which is useful for verifying + // JWTs obtained during extauth (e.g. oauth/oidc) + JwtStaged *jwt.JwtStagedVhostExtension `protobuf:"bytes,19,opt,name=jwt_staged,json=jwtStaged,proto3,oneof"` +} + +func (*VirtualHostOptions_Jwt) isVirtualHostOptions_JwtConfig() {} + +func (*VirtualHostOptions_JwtStaged) isVirtualHostOptions_JwtConfig() {} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_rawDesc = string([]byte{ + 0x0a, 0x48, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4b, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x72, 0x65, 0x74, 0x72, + 0x69, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, + 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x6f, 0x72, 0x73, 0x2f, 0x63, 0x6f, 0x72, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x59, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x5a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, + 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2f, 0x72, 0x61, + 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4e, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x77, 0x61, 0x66, 0x2f, 0x77, 0x61, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4e, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x6a, 0x77, 0x74, 0x2f, 0x6a, 0x77, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x50, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x72, 0x62, 0x61, 0x63, 0x2f, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x64, 0x6c, + 0x70, 0x2f, 0x64, 0x6c, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x68, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x62, + 0x75, 0x66, 0x66, 0x65, 0x72, 0x2f, 0x76, 0x33, 0x2f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x64, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x63, 0x73, 0x72, 0x66, 0x2f, 0x76, 0x33, + 0x2f, 0x63, 0x73, 0x72, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x56, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x78, + 0x74, 0x70, 0x72, 0x6f, 0x63, 0x2f, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0xb2, 0x12, 0x0a, 0x12, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, + 0x6f, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x43, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2e, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x12, 0x61, 0x0a, 0x13, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, + 0x69, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x30, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x69, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x12, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x69, 0x70, 0x75, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6f, 0x72, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x43, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x04, 0x63, 0x6f, 0x72, 0x73, + 0x12, 0x62, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, + 0x02, 0x18, 0x01, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x0f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x5f, 0x62, 0x61, 0x73, 0x69, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, + 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x49, + 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, + 0x0e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x61, 0x73, 0x69, 0x63, 0x12, + 0x62, 0x0a, 0x0f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x65, 0x61, 0x72, + 0x6c, 0x79, 0x18, 0x48, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x56, 0x68, 0x6f, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x61, + 0x72, 0x6c, 0x79, 0x12, 0x6e, 0x0a, 0x18, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x5f, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, + 0x49, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x66, 0x73, 0x48, 0x00, 0x52, 0x15, 0x72, 0x61, + 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x61, 0x72, 0x6c, 0x79, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x73, 0x12, 0x57, 0x0a, 0x09, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x46, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x56, 0x68, 0x6f, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, + 0x01, 0x52, 0x09, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x63, 0x0a, 0x12, + 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x73, 0x18, 0x47, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x66, 0x73, 0x48, 0x01, 0x52, + 0x10, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x73, 0x12, 0x66, 0x0a, 0x11, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, + 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x72, + 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, + 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x56, 0x68, 0x6f, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x10, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x12, 0x72, 0x0a, 0x1a, 0x72, 0x61, 0x74, + 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x4b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, + 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, + 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, + 0x66, 0x73, 0x48, 0x02, 0x52, 0x17, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, + 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x34, 0x0a, + 0x03, 0x77, 0x61, 0x66, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x61, 0x66, + 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x03, + 0x77, 0x61, 0x66, 0x12, 0x40, 0x0a, 0x03, 0x6a, 0x77, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x6a, 0x77, 0x74, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x56, 0x68, 0x6f, 0x73, + 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, 0x48, 0x03, + 0x52, 0x03, 0x6a, 0x77, 0x74, 0x12, 0x52, 0x0a, 0x0a, 0x6a, 0x77, 0x74, 0x5f, 0x73, 0x74, 0x61, + 0x67, 0x65, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6a, 0x77, 0x74, 0x2e, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4a, 0x77, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x64, 0x56, 0x68, + 0x6f, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x03, 0x52, 0x09, + 0x6a, 0x77, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x04, 0x72, 0x62, 0x61, + 0x63, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x04, 0x72, 0x62, 0x61, 0x63, 0x12, 0x43, 0x0a, 0x07, 0x65, + 0x78, 0x74, 0x61, 0x75, 0x74, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x65, 0x78, 0x74, 0x61, 0x75, 0x74, 0x68, + 0x12, 0x32, 0x0a, 0x03, 0x64, 0x6c, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x64, 0x6c, 0x70, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x03, 0x64, 0x6c, 0x70, 0x12, 0x69, 0x0a, 0x10, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, + 0x65, 0x72, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2e, 0x76, 0x33, + 0x2e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, + 0x0e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, + 0x4d, 0x0a, 0x04, 0x63, 0x73, 0x72, 0x66, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, + 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x63, 0x73, 0x72, 0x66, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x73, + 0x72, 0x66, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x04, 0x63, 0x73, 0x72, 0x66, 0x12, 0x5d, + 0x0a, 0x1d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x1a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x64, 0x0a, + 0x21, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x41, 0x74, 0x74, + 0x65, 0x6d, 0x70, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x16, 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, 0x5f, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x11, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x15, + 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, 0x6f, + 0x63, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, + 0x63, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x52, 0x07, 0x65, 0x78, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x12, 0x6f, 0x0a, + 0x1a, 0x63, 0x6f, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6d, 0x65, 0x72, + 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, + 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x17, 0x63, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x1e, + 0x0a, 0x1c, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x65, 0x61, 0x72, + 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x18, + 0x0a, 0x16, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x20, 0x0a, 0x1e, 0x72, 0x61, 0x74, 0x65, + 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x6a, 0x77, + 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x42, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, + 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_goTypes = []any{ + (*VirtualHostOptions)(nil), // 0: gloo.solo.io.VirtualHostOptions + (*Extensions)(nil), // 1: gloo.solo.io.Extensions + (*retries.RetryPolicy)(nil), // 2: retries.options.gloo.solo.io.RetryPolicy + (*stats.Stats)(nil), // 3: stats.options.gloo.solo.io.Stats + (*headers.HeaderManipulation)(nil), // 4: headers.options.gloo.solo.io.HeaderManipulation + (*cors.CorsPolicy)(nil), // 5: cors.options.gloo.solo.io.CorsPolicy + (*transformation.Transformations)(nil), // 6: transformation.options.gloo.solo.io.Transformations + (*ratelimit.IngressRateLimit)(nil), // 7: ratelimit.options.gloo.solo.io.IngressRateLimit + (*ratelimit.RateLimitVhostExtension)(nil), // 8: ratelimit.options.gloo.solo.io.RateLimitVhostExtension + (*ratelimit.RateLimitConfigRefs)(nil), // 9: ratelimit.options.gloo.solo.io.RateLimitConfigRefs + (*waf.Settings)(nil), // 10: waf.options.gloo.solo.io.Settings + (*jwt.VhostExtension)(nil), // 11: jwt.options.gloo.solo.io.VhostExtension + (*jwt.JwtStagedVhostExtension)(nil), // 12: jwt.options.gloo.solo.io.JwtStagedVhostExtension + (*rbac.ExtensionSettings)(nil), // 13: rbac.options.gloo.solo.io.ExtensionSettings + (*v1.ExtAuthExtension)(nil), // 14: enterprise.gloo.solo.io.ExtAuthExtension + (*dlp.Config)(nil), // 15: dlp.options.gloo.solo.io.Config + (*v3.BufferPerRoute)(nil), // 16: solo.io.envoy.extensions.filters.http.buffer.v3.BufferPerRoute + (*v31.CsrfPolicy)(nil), // 17: solo.io.envoy.extensions.filters.http.csrf.v3.CsrfPolicy + (*wrapperspb.BoolValue)(nil), // 18: google.protobuf.BoolValue + (*transformation.TransformationStages)(nil), // 19: transformation.options.gloo.solo.io.TransformationStages + (*extproc.RouteSettings)(nil), // 20: extproc.options.gloo.solo.io.RouteSettings + (*cors.CorsPolicyMergeSettings)(nil), // 21: cors.options.gloo.solo.io.CorsPolicyMergeSettings +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_depIdxs = []int32{ + 1, // 0: gloo.solo.io.VirtualHostOptions.extensions:type_name -> gloo.solo.io.Extensions + 2, // 1: gloo.solo.io.VirtualHostOptions.retries:type_name -> retries.options.gloo.solo.io.RetryPolicy + 3, // 2: gloo.solo.io.VirtualHostOptions.stats:type_name -> stats.options.gloo.solo.io.Stats + 4, // 3: gloo.solo.io.VirtualHostOptions.header_manipulation:type_name -> headers.options.gloo.solo.io.HeaderManipulation + 5, // 4: gloo.solo.io.VirtualHostOptions.cors:type_name -> cors.options.gloo.solo.io.CorsPolicy + 6, // 5: gloo.solo.io.VirtualHostOptions.transformations:type_name -> transformation.options.gloo.solo.io.Transformations + 7, // 6: gloo.solo.io.VirtualHostOptions.ratelimit_basic:type_name -> ratelimit.options.gloo.solo.io.IngressRateLimit + 8, // 7: gloo.solo.io.VirtualHostOptions.ratelimit_early:type_name -> ratelimit.options.gloo.solo.io.RateLimitVhostExtension + 9, // 8: gloo.solo.io.VirtualHostOptions.rate_limit_early_configs:type_name -> ratelimit.options.gloo.solo.io.RateLimitConfigRefs + 8, // 9: gloo.solo.io.VirtualHostOptions.ratelimit:type_name -> ratelimit.options.gloo.solo.io.RateLimitVhostExtension + 9, // 10: gloo.solo.io.VirtualHostOptions.rate_limit_configs:type_name -> ratelimit.options.gloo.solo.io.RateLimitConfigRefs + 8, // 11: gloo.solo.io.VirtualHostOptions.ratelimit_regular:type_name -> ratelimit.options.gloo.solo.io.RateLimitVhostExtension + 9, // 12: gloo.solo.io.VirtualHostOptions.rate_limit_regular_configs:type_name -> ratelimit.options.gloo.solo.io.RateLimitConfigRefs + 10, // 13: gloo.solo.io.VirtualHostOptions.waf:type_name -> waf.options.gloo.solo.io.Settings + 11, // 14: gloo.solo.io.VirtualHostOptions.jwt:type_name -> jwt.options.gloo.solo.io.VhostExtension + 12, // 15: gloo.solo.io.VirtualHostOptions.jwt_staged:type_name -> jwt.options.gloo.solo.io.JwtStagedVhostExtension + 13, // 16: gloo.solo.io.VirtualHostOptions.rbac:type_name -> rbac.options.gloo.solo.io.ExtensionSettings + 14, // 17: gloo.solo.io.VirtualHostOptions.extauth:type_name -> enterprise.gloo.solo.io.ExtAuthExtension + 15, // 18: gloo.solo.io.VirtualHostOptions.dlp:type_name -> dlp.options.gloo.solo.io.Config + 16, // 19: gloo.solo.io.VirtualHostOptions.buffer_per_route:type_name -> solo.io.envoy.extensions.filters.http.buffer.v3.BufferPerRoute + 17, // 20: gloo.solo.io.VirtualHostOptions.csrf:type_name -> solo.io.envoy.extensions.filters.http.csrf.v3.CsrfPolicy + 18, // 21: gloo.solo.io.VirtualHostOptions.include_request_attempt_count:type_name -> google.protobuf.BoolValue + 18, // 22: gloo.solo.io.VirtualHostOptions.include_attempt_count_in_response:type_name -> google.protobuf.BoolValue + 19, // 23: gloo.solo.io.VirtualHostOptions.staged_transformations:type_name -> transformation.options.gloo.solo.io.TransformationStages + 20, // 24: gloo.solo.io.VirtualHostOptions.ext_proc:type_name -> extproc.options.gloo.solo.io.RouteSettings + 21, // 25: gloo.solo.io.VirtualHostOptions.cors_policy_merge_settings:type_name -> cors.options.gloo.solo.io.CorsPolicyMergeSettings + 26, // [26:26] is the sub-list for method output_type + 26, // [26:26] is the sub-list for method input_type + 26, // [26:26] is the sub-list for extension type_name + 26, // [26:26] is the sub-list for extension extendee + 0, // [0:26] is the sub-list for field type_name +} + +func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_init() } +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_init() + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_msgTypes[0].OneofWrappers = []any{ + (*VirtualHostOptions_RatelimitEarly)(nil), + (*VirtualHostOptions_RateLimitEarlyConfigs)(nil), + (*VirtualHostOptions_Ratelimit)(nil), + (*VirtualHostOptions_RateLimitConfigs)(nil), + (*VirtualHostOptions_RatelimitRegular)(nil), + (*VirtualHostOptions_RateLimitRegularConfigs)(nil), + (*VirtualHostOptions_Jwt)(nil), + (*VirtualHostOptions_JwtStaged)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_virtual_host_options_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/virtual_host_options.pb.hash.go b/pkg/api/gloo.solo.io/v1/virtual_host_options.pb.hash.go new file mode 100644 index 000000000..5ab84149c --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/virtual_host_options.pb.hash.go @@ -0,0 +1,598 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/virtual_host_options.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *VirtualHostOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.VirtualHostOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetExtensions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtensions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRetries()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Retries")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetries(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Retries")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetStats()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Stats")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStats(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Stats")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHeaderManipulation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderManipulation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaderManipulation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HeaderManipulation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCors()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCors(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTransformations()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Transformations")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTransformations(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Transformations")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRatelimitBasic()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RatelimitBasic")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRatelimitBasic(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RatelimitBasic")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetWaf()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Waf")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWaf(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Waf")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRbac()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Rbac")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRbac(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Rbac")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtauth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extauth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtauth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Extauth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDlp()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Dlp")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDlp(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Dlp")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetBufferPerRoute()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BufferPerRoute")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBufferPerRoute(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BufferPerRoute")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCsrf()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Csrf")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCsrf(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Csrf")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetIncludeRequestAttemptCount()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IncludeRequestAttemptCount")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIncludeRequestAttemptCount(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IncludeRequestAttemptCount")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetIncludeAttemptCountInResponse()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IncludeAttemptCountInResponse")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIncludeAttemptCountInResponse(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IncludeAttemptCountInResponse")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetStagedTransformations()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("StagedTransformations")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStagedTransformations(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("StagedTransformations")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtProc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ExtProc")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtProc(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ExtProc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCorsPolicyMergeSettings()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CorsPolicyMergeSettings")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCorsPolicyMergeSettings(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CorsPolicyMergeSettings")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.RateLimitEarlyConfigType.(type) { + + case *VirtualHostOptions_RatelimitEarly: + + if h, ok := interface{}(m.GetRatelimitEarly()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RatelimitEarly")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRatelimitEarly(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RatelimitEarly")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *VirtualHostOptions_RateLimitEarlyConfigs: + + if h, ok := interface{}(m.GetRateLimitEarlyConfigs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimitEarlyConfigs")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRateLimitEarlyConfigs(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RateLimitEarlyConfigs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.RateLimitConfigType.(type) { + + case *VirtualHostOptions_Ratelimit: + + if h, ok := interface{}(m.GetRatelimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ratelimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRatelimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Ratelimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *VirtualHostOptions_RateLimitConfigs: + + if h, ok := interface{}(m.GetRateLimitConfigs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimitConfigs")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRateLimitConfigs(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RateLimitConfigs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.RateLimitRegularConfigType.(type) { + + case *VirtualHostOptions_RatelimitRegular: + + if h, ok := interface{}(m.GetRatelimitRegular()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RatelimitRegular")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRatelimitRegular(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RatelimitRegular")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *VirtualHostOptions_RateLimitRegularConfigs: + + if h, ok := interface{}(m.GetRateLimitRegularConfigs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimitRegularConfigs")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRateLimitRegularConfigs(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RateLimitRegularConfigs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.JwtConfig.(type) { + + case *VirtualHostOptions_Jwt: + + if h, ok := interface{}(m.GetJwt()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJwt(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *VirtualHostOptions_JwtStaged: + + if h, ok := interface{}(m.GetJwtStaged()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("JwtStaged")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJwtStaged(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("JwtStaged")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/virtual_host_options.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/virtual_host_options.pb.uniquehash.go new file mode 100644 index 000000000..70e324826 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/virtual_host_options.pb.uniquehash.go @@ -0,0 +1,599 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/virtual_host_options.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *VirtualHostOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.VirtualHostOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetExtensions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtensions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRetries()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Retries")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRetries(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Retries")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetStats()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Stats")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStats(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Stats")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetHeaderManipulation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderManipulation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaderManipulation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HeaderManipulation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCors()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCors(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Cors")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTransformations()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Transformations")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTransformations(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Transformations")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRatelimitBasic()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RatelimitBasic")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRatelimitBasic(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RatelimitBasic")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetWaf()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Waf")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetWaf(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Waf")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetRbac()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Rbac")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRbac(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Rbac")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtauth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extauth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtauth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Extauth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetDlp()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Dlp")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDlp(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Dlp")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetBufferPerRoute()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BufferPerRoute")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBufferPerRoute(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BufferPerRoute")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCsrf()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Csrf")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCsrf(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Csrf")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetIncludeRequestAttemptCount()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IncludeRequestAttemptCount")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIncludeRequestAttemptCount(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IncludeRequestAttemptCount")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetIncludeAttemptCountInResponse()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("IncludeAttemptCountInResponse")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetIncludeAttemptCountInResponse(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("IncludeAttemptCountInResponse")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetStagedTransformations()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("StagedTransformations")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStagedTransformations(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("StagedTransformations")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtProc()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ExtProc")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtProc(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ExtProc")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCorsPolicyMergeSettings()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("CorsPolicyMergeSettings")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCorsPolicyMergeSettings(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("CorsPolicyMergeSettings")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + switch m.RateLimitEarlyConfigType.(type) { + + case *VirtualHostOptions_RatelimitEarly: + + if h, ok := interface{}(m.GetRatelimitEarly()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RatelimitEarly")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRatelimitEarly(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RatelimitEarly")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *VirtualHostOptions_RateLimitEarlyConfigs: + + if h, ok := interface{}(m.GetRateLimitEarlyConfigs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimitEarlyConfigs")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRateLimitEarlyConfigs(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RateLimitEarlyConfigs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.RateLimitConfigType.(type) { + + case *VirtualHostOptions_Ratelimit: + + if h, ok := interface{}(m.GetRatelimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Ratelimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRatelimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Ratelimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *VirtualHostOptions_RateLimitConfigs: + + if h, ok := interface{}(m.GetRateLimitConfigs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimitConfigs")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRateLimitConfigs(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RateLimitConfigs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.RateLimitRegularConfigType.(type) { + + case *VirtualHostOptions_RatelimitRegular: + + if h, ok := interface{}(m.GetRatelimitRegular()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RatelimitRegular")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRatelimitRegular(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RatelimitRegular")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *VirtualHostOptions_RateLimitRegularConfigs: + + if h, ok := interface{}(m.GetRateLimitRegularConfigs()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimitRegularConfigs")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRateLimitRegularConfigs(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RateLimitRegularConfigs")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + switch m.JwtConfig.(type) { + + case *VirtualHostOptions_Jwt: + + if h, ok := interface{}(m.GetJwt()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJwt(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Jwt")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *VirtualHostOptions_JwtStaged: + + if h, ok := interface{}(m.GetJwtStaged()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("JwtStaged")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetJwtStaged(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("JwtStaged")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/weighted_destination_options.pb.clone.go b/pkg/api/gloo.solo.io/v1/weighted_destination_options.pb.clone.go new file mode 100644 index 000000000..2e9aba199 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/weighted_destination_options.pb.clone.go @@ -0,0 +1,89 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/weighted_destination_options.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1 "github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_buffer_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_csrf_v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_headers "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/headers" + + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_transformation "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *WeightedDestinationOptions) Clone() proto.Message { + var target *WeightedDestinationOptions + if m == nil { + return target + } + target = &WeightedDestinationOptions{} + + if h, ok := interface{}(m.GetHeaderManipulation()).(clone.Cloner); ok { + target.HeaderManipulation = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_headers.HeaderManipulation) + } else { + target.HeaderManipulation = proto.Clone(m.GetHeaderManipulation()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_headers.HeaderManipulation) + } + + if h, ok := interface{}(m.GetTransformations()).(clone.Cloner); ok { + target.Transformations = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_transformation.Transformations) + } else { + target.Transformations = proto.Clone(m.GetTransformations()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_transformation.Transformations) + } + + if h, ok := interface{}(m.GetExtensions()).(clone.Cloner); ok { + target.Extensions = h.Clone().(*Extensions) + } else { + target.Extensions = proto.Clone(m.GetExtensions()).(*Extensions) + } + + if h, ok := interface{}(m.GetExtauth()).(clone.Cloner); ok { + target.Extauth = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1.ExtAuthExtension) + } else { + target.Extauth = proto.Clone(m.GetExtauth()).(*github_com_solo_io_solo_apis_pkg_api_enterprise_gloo_solo_io_v1.ExtAuthExtension) + } + + if h, ok := interface{}(m.GetBufferPerRoute()).(clone.Cloner); ok { + target.BufferPerRoute = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_buffer_v3.BufferPerRoute) + } else { + target.BufferPerRoute = proto.Clone(m.GetBufferPerRoute()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_buffer_v3.BufferPerRoute) + } + + if h, ok := interface{}(m.GetCsrf()).(clone.Cloner); ok { + target.Csrf = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_csrf_v3.CsrfPolicy) + } else { + target.Csrf = proto.Clone(m.GetCsrf()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_external_envoy_extensions_filters_http_csrf_v3.CsrfPolicy) + } + + if h, ok := interface{}(m.GetStagedTransformations()).(clone.Cloner); ok { + target.StagedTransformations = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_transformation.TransformationStages) + } else { + target.StagedTransformations = proto.Clone(m.GetStagedTransformations()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_transformation.TransformationStages) + } + + return target +} diff --git a/pkg/api/gloo.solo.io/v1/weighted_destination_options.pb.equal.go b/pkg/api/gloo.solo.io/v1/weighted_destination_options.pb.equal.go new file mode 100644 index 000000000..2f9070056 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/weighted_destination_options.pb.equal.go @@ -0,0 +1,120 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/weighted_destination_options.proto + +package v1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *WeightedDestinationOptions) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*WeightedDestinationOptions) + if !ok { + that2, ok := that.(WeightedDestinationOptions) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetHeaderManipulation()).(equality.Equalizer); ok { + if !h.Equal(target.GetHeaderManipulation()) { + return false + } + } else { + if !proto.Equal(m.GetHeaderManipulation(), target.GetHeaderManipulation()) { + return false + } + } + + if h, ok := interface{}(m.GetTransformations()).(equality.Equalizer); ok { + if !h.Equal(target.GetTransformations()) { + return false + } + } else { + if !proto.Equal(m.GetTransformations(), target.GetTransformations()) { + return false + } + } + + if h, ok := interface{}(m.GetExtensions()).(equality.Equalizer); ok { + if !h.Equal(target.GetExtensions()) { + return false + } + } else { + if !proto.Equal(m.GetExtensions(), target.GetExtensions()) { + return false + } + } + + if h, ok := interface{}(m.GetExtauth()).(equality.Equalizer); ok { + if !h.Equal(target.GetExtauth()) { + return false + } + } else { + if !proto.Equal(m.GetExtauth(), target.GetExtauth()) { + return false + } + } + + if h, ok := interface{}(m.GetBufferPerRoute()).(equality.Equalizer); ok { + if !h.Equal(target.GetBufferPerRoute()) { + return false + } + } else { + if !proto.Equal(m.GetBufferPerRoute(), target.GetBufferPerRoute()) { + return false + } + } + + if h, ok := interface{}(m.GetCsrf()).(equality.Equalizer); ok { + if !h.Equal(target.GetCsrf()) { + return false + } + } else { + if !proto.Equal(m.GetCsrf(), target.GetCsrf()) { + return false + } + } + + if h, ok := interface{}(m.GetStagedTransformations()).(equality.Equalizer); ok { + if !h.Equal(target.GetStagedTransformations()) { + return false + } + } else { + if !proto.Equal(m.GetStagedTransformations(), target.GetStagedTransformations()) { + return false + } + } + + return true +} diff --git a/pkg/api/gloo.solo.io/v1/weighted_destination_options.pb.go b/pkg/api/gloo.solo.io/v1/weighted_destination_options.pb.go new file mode 100644 index 000000000..30e1a1be5 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/weighted_destination_options.pb.go @@ -0,0 +1,304 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/weighted_destination_options.proto + +package v1 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + v1 "github.com/solo-io/solo-apis/pkg/api/enterprise.gloo.solo.io/v1" + v3 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/buffer/v3" + v31 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3" + headers "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/headers" + transformation "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Optional, feature-specific configuration that is applied when a specific weighted destination +// is selected for routing. +type WeightedDestinationOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Append/Remove headers on Requests or Responses to/from this Weighted Destination + HeaderManipulation *headers.HeaderManipulation `protobuf:"bytes,1,opt,name=header_manipulation,json=headerManipulation,proto3" json:"header_manipulation,omitempty"` + // Transformations to apply. Note: this field is superseded by `staged_transformations`. + // If `staged_transformations.regular` is set, this field will be ignored. + // + // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/weighted_destination_options.proto. + Transformations *transformation.Transformations `protobuf:"bytes,2,opt,name=transformations,proto3" json:"transformations,omitempty"` + // Extensions will be passed along from Listeners, Gateways, VirtualServices, Routes, and Route tables to the + // underlying Proxy, making them useful for controllers, validation tools, etc. which interact with kubernetes yaml. + // + // Some sample use cases: + // * controllers, deployment pipelines, helm charts, etc. which wish to use extensions as a kind of opaque metadata. + // * In the future, Gloo may support gRPC-based plugins which communicate with the Gloo translator out-of-process. + // Opaque Extensions enables development of out-of-process plugins without requiring recompiling & redeploying Gloo's API. + Extensions *Extensions `protobuf:"bytes,3,opt,name=extensions,proto3" json:"extensions,omitempty"` + // Enterprise-only: Authentication configuration + Extauth *v1.ExtAuthExtension `protobuf:"bytes,4,opt,name=extauth,proto3" json:"extauth,omitempty"` + // BufferPerRoute can be used to set the maximum request size + // that the filter will buffer before the connection + // manager will stop buffering and return a 413 response. + // Note: If you have not set a global config (at the gateway level), this + // override will not do anything by itself. + BufferPerRoute *v3.BufferPerRoute `protobuf:"bytes,5,opt,name=buffer_per_route,json=bufferPerRoute,proto3" json:"buffer_per_route,omitempty"` + // Csrf can be used to set percent of requests for which the CSRF filter is enabled, enable shadow-only mode + // where policies will be evaluated and tracked, but not enforced and add additional source origins + // that will be allowed in addition to the destination origin. + // For more, see https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/filter/http/csrf/v2/csrf.proto + Csrf *v31.CsrfPolicy `protobuf:"bytes,7,opt,name=csrf,proto3" json:"csrf,omitempty"` + // Early transformations stage. These transformations run before most other options are processed. + // If the `regular` field is set in here, the `transformations` field is ignored. + StagedTransformations *transformation.TransformationStages `protobuf:"bytes,6,opt,name=staged_transformations,json=stagedTransformations,proto3" json:"staged_transformations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WeightedDestinationOptions) Reset() { + *x = WeightedDestinationOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WeightedDestinationOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WeightedDestinationOptions) ProtoMessage() {} + +func (x *WeightedDestinationOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WeightedDestinationOptions.ProtoReflect.Descriptor instead. +func (*WeightedDestinationOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_rawDescGZIP(), []int{0} +} + +func (x *WeightedDestinationOptions) GetHeaderManipulation() *headers.HeaderManipulation { + if x != nil { + return x.HeaderManipulation + } + return nil +} + +// Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/v1/weighted_destination_options.proto. +func (x *WeightedDestinationOptions) GetTransformations() *transformation.Transformations { + if x != nil { + return x.Transformations + } + return nil +} + +func (x *WeightedDestinationOptions) GetExtensions() *Extensions { + if x != nil { + return x.Extensions + } + return nil +} + +func (x *WeightedDestinationOptions) GetExtauth() *v1.ExtAuthExtension { + if x != nil { + return x.Extauth + } + return nil +} + +func (x *WeightedDestinationOptions) GetBufferPerRoute() *v3.BufferPerRoute { + if x != nil { + return x.BufferPerRoute + } + return nil +} + +func (x *WeightedDestinationOptions) GetCsrf() *v31.CsrfPolicy { + if x != nil { + return x.Csrf + } + return nil +} + +func (x *WeightedDestinationOptions) GetStagedTransformations() *transformation.TransformationStages { + if x != nil { + return x.StagedTransformations + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_rawDesc = string([]byte{ + 0x0a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x59, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, + 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4a, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, + 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x68, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x62, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x2f, 0x76, 0x33, 0x2f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x64, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, + 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x63, 0x73, 0x72, 0x66, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x73, + 0x72, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8e, 0x05, 0x0a, 0x1a, 0x57, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x65, 0x64, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x61, 0x0a, 0x13, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x69, 0x70, 0x75, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, + 0x6e, 0x69, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x62, 0x0a, 0x0f, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, + 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x43, 0x0a, 0x07, 0x65, 0x78, 0x74, 0x61, + 0x75, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x41, 0x75, 0x74, 0x68, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x65, 0x78, 0x74, 0x61, 0x75, 0x74, 0x68, 0x12, 0x69, 0x0a, + 0x10, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x72, 0x6f, 0x75, 0x74, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, + 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, + 0x50, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x0e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, + 0x50, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x4d, 0x0a, 0x04, 0x63, 0x73, 0x72, 0x66, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x63, + 0x73, 0x72, 0x66, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x73, 0x72, 0x66, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x52, 0x04, 0x63, 0x73, 0x72, 0x66, 0x12, 0x70, 0x0a, 0x16, 0x73, 0x74, 0x61, 0x67, 0x65, + 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x67, + 0x65, 0x73, 0x52, 0x15, 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x42, 0xb8, 0xf5, 0x04, 0x01, 0xc0, + 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_goTypes = []any{ + (*WeightedDestinationOptions)(nil), // 0: gloo.solo.io.WeightedDestinationOptions + (*headers.HeaderManipulation)(nil), // 1: headers.options.gloo.solo.io.HeaderManipulation + (*transformation.Transformations)(nil), // 2: transformation.options.gloo.solo.io.Transformations + (*Extensions)(nil), // 3: gloo.solo.io.Extensions + (*v1.ExtAuthExtension)(nil), // 4: enterprise.gloo.solo.io.ExtAuthExtension + (*v3.BufferPerRoute)(nil), // 5: solo.io.envoy.extensions.filters.http.buffer.v3.BufferPerRoute + (*v31.CsrfPolicy)(nil), // 6: solo.io.envoy.extensions.filters.http.csrf.v3.CsrfPolicy + (*transformation.TransformationStages)(nil), // 7: transformation.options.gloo.solo.io.TransformationStages +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_depIdxs = []int32{ + 1, // 0: gloo.solo.io.WeightedDestinationOptions.header_manipulation:type_name -> headers.options.gloo.solo.io.HeaderManipulation + 2, // 1: gloo.solo.io.WeightedDestinationOptions.transformations:type_name -> transformation.options.gloo.solo.io.Transformations + 3, // 2: gloo.solo.io.WeightedDestinationOptions.extensions:type_name -> gloo.solo.io.Extensions + 4, // 3: gloo.solo.io.WeightedDestinationOptions.extauth:type_name -> enterprise.gloo.solo.io.ExtAuthExtension + 5, // 4: gloo.solo.io.WeightedDestinationOptions.buffer_per_route:type_name -> solo.io.envoy.extensions.filters.http.buffer.v3.BufferPerRoute + 6, // 5: gloo.solo.io.WeightedDestinationOptions.csrf:type_name -> solo.io.envoy.extensions.filters.http.csrf.v3.CsrfPolicy + 7, // 6: gloo.solo.io.WeightedDestinationOptions.staged_transformations:type_name -> transformation.options.gloo.solo.io.TransformationStages + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto != nil { + return + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_extensions_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_weighted_destination_options_proto_depIdxs = nil +} diff --git a/pkg/api/gloo.solo.io/v1/weighted_destination_options.pb.hash.go b/pkg/api/gloo.solo.io/v1/weighted_destination_options.pb.hash.go new file mode 100644 index 000000000..fa2f7c294 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/weighted_destination_options.pb.hash.go @@ -0,0 +1,186 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/weighted_destination_options.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *WeightedDestinationOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.WeightedDestinationOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHeaderManipulation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderManipulation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaderManipulation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HeaderManipulation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTransformations()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Transformations")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTransformations(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Transformations")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtensions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtensions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtauth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extauth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtauth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Extauth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetBufferPerRoute()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BufferPerRoute")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBufferPerRoute(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BufferPerRoute")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCsrf()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Csrf")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCsrf(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Csrf")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetStagedTransformations()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("StagedTransformations")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStagedTransformations(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("StagedTransformations")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/gloo.solo.io/v1/weighted_destination_options.pb.uniquehash.go b/pkg/api/gloo.solo.io/v1/weighted_destination_options.pb.uniquehash.go new file mode 100644 index 000000000..99ea614b2 --- /dev/null +++ b/pkg/api/gloo.solo.io/v1/weighted_destination_options.pb.uniquehash.go @@ -0,0 +1,187 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/weighted_destination_options.proto + +package v1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *WeightedDestinationOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1.WeightedDestinationOptions")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetHeaderManipulation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderManipulation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaderManipulation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HeaderManipulation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetTransformations()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Transformations")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTransformations(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Transformations")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtensions()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtensions(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Extensions")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetExtauth()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Extauth")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExtauth(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Extauth")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetBufferPerRoute()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("BufferPerRoute")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetBufferPerRoute(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("BufferPerRoute")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetCsrf()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Csrf")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetCsrf(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Csrf")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if h, ok := interface{}(m.GetStagedTransformations()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("StagedTransformations")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetStagedTransformations(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("StagedTransformations")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/clients.go b/pkg/api/graphql.gloo.solo.io/v1beta1/clients.go new file mode 100644 index 000000000..0a51a0274 --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/clients.go @@ -0,0 +1,213 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./clients.go -destination mocks/clients.go + +package v1beta1 + +import ( + "context" + + "github.com/solo-io/skv2/pkg/controllerutils" + "github.com/solo-io/skv2/pkg/multicluster" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/rest" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +// MulticlusterClientset for the graphql.gloo.solo.io/v1beta1 APIs +type MulticlusterClientset interface { + // Cluster returns a Clientset for the given cluster + Cluster(cluster string) (Clientset, error) +} + +type multiclusterClientset struct { + client multicluster.Client +} + +func NewMulticlusterClientset(client multicluster.Client) MulticlusterClientset { + return &multiclusterClientset{client: client} +} + +func (m *multiclusterClientset) Cluster(cluster string) (Clientset, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewClientset(client), nil +} + +// clienset for the graphql.gloo.solo.io/v1beta1 APIs +type Clientset interface { + // clienset for the graphql.gloo.solo.io/v1beta1/v1beta1 APIs + GraphQLApis() GraphQLApiClient +} + +type clientSet struct { + client client.Client +} + +func NewClientsetFromConfig(cfg *rest.Config) (Clientset, error) { + scheme := scheme.Scheme + if err := SchemeBuilder.AddToScheme(scheme); err != nil { + return nil, err + } + client, err := client.New(cfg, client.Options{ + Scheme: scheme, + }) + if err != nil { + return nil, err + } + return NewClientset(client), nil +} + +func NewClientset(client client.Client) Clientset { + return &clientSet{client: client} +} + +// clienset for the graphql.gloo.solo.io/v1beta1/v1beta1 APIs +func (c *clientSet) GraphQLApis() GraphQLApiClient { + return NewGraphQLApiClient(c.client) +} + +// Reader knows how to read and list GraphQLApis. +type GraphQLApiReader interface { + // Get retrieves a GraphQLApi for the given object key + GetGraphQLApi(ctx context.Context, key client.ObjectKey) (*GraphQLApi, error) + + // List retrieves list of GraphQLApis for a given namespace and list options. + ListGraphQLApi(ctx context.Context, opts ...client.ListOption) (*GraphQLApiList, error) +} + +// GraphQLApiTransitionFunction instructs the GraphQLApiWriter how to transition between an existing +// GraphQLApi object and a desired on an Upsert +type GraphQLApiTransitionFunction func(existing, desired *GraphQLApi) error + +// Writer knows how to create, delete, and update GraphQLApis. +type GraphQLApiWriter interface { + // Create saves the GraphQLApi object. + CreateGraphQLApi(ctx context.Context, obj *GraphQLApi, opts ...client.CreateOption) error + + // Delete deletes the GraphQLApi object. + DeleteGraphQLApi(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error + + // Update updates the given GraphQLApi object. + UpdateGraphQLApi(ctx context.Context, obj *GraphQLApi, opts ...client.UpdateOption) error + + // Patch patches the given GraphQLApi object. + PatchGraphQLApi(ctx context.Context, obj *GraphQLApi, patch client.Patch, opts ...client.PatchOption) error + + // DeleteAllOf deletes all GraphQLApi objects matching the given options. + DeleteAllOfGraphQLApi(ctx context.Context, opts ...client.DeleteAllOfOption) error + + // Create or Update the GraphQLApi object. + UpsertGraphQLApi(ctx context.Context, obj *GraphQLApi, transitionFuncs ...GraphQLApiTransitionFunction) error +} + +// StatusWriter knows how to update status subresource of a GraphQLApi object. +type GraphQLApiStatusWriter interface { + // Update updates the fields corresponding to the status subresource for the + // given GraphQLApi object. + UpdateGraphQLApiStatus(ctx context.Context, obj *GraphQLApi, opts ...client.SubResourceUpdateOption) error + + // Patch patches the given GraphQLApi object's subresource. + PatchGraphQLApiStatus(ctx context.Context, obj *GraphQLApi, patch client.Patch, opts ...client.SubResourcePatchOption) error +} + +// Client knows how to perform CRUD operations on GraphQLApis. +type GraphQLApiClient interface { + GraphQLApiReader + GraphQLApiWriter + GraphQLApiStatusWriter +} + +type graphQlapiClient struct { + client client.Client +} + +func NewGraphQLApiClient(client client.Client) *graphQlapiClient { + return &graphQlapiClient{client: client} +} + +func (c *graphQlapiClient) GetGraphQLApi(ctx context.Context, key client.ObjectKey) (*GraphQLApi, error) { + obj := &GraphQLApi{} + if err := c.client.Get(ctx, key, obj); err != nil { + return nil, err + } + return obj, nil +} + +func (c *graphQlapiClient) ListGraphQLApi(ctx context.Context, opts ...client.ListOption) (*GraphQLApiList, error) { + list := &GraphQLApiList{} + if err := c.client.List(ctx, list, opts...); err != nil { + return nil, err + } + return list, nil +} + +func (c *graphQlapiClient) CreateGraphQLApi(ctx context.Context, obj *GraphQLApi, opts ...client.CreateOption) error { + return c.client.Create(ctx, obj, opts...) +} + +func (c *graphQlapiClient) DeleteGraphQLApi(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + obj := &GraphQLApi{} + obj.SetName(key.Name) + obj.SetNamespace(key.Namespace) + return c.client.Delete(ctx, obj, opts...) +} + +func (c *graphQlapiClient) UpdateGraphQLApi(ctx context.Context, obj *GraphQLApi, opts ...client.UpdateOption) error { + return c.client.Update(ctx, obj, opts...) +} + +func (c *graphQlapiClient) PatchGraphQLApi(ctx context.Context, obj *GraphQLApi, patch client.Patch, opts ...client.PatchOption) error { + return c.client.Patch(ctx, obj, patch, opts...) +} + +func (c *graphQlapiClient) DeleteAllOfGraphQLApi(ctx context.Context, opts ...client.DeleteAllOfOption) error { + obj := &GraphQLApi{} + return c.client.DeleteAllOf(ctx, obj, opts...) +} + +func (c *graphQlapiClient) UpsertGraphQLApi(ctx context.Context, obj *GraphQLApi, transitionFuncs ...GraphQLApiTransitionFunction) error { + genericTxFunc := func(existing, desired runtime.Object) error { + for _, txFunc := range transitionFuncs { + if err := txFunc(existing.(*GraphQLApi), desired.(*GraphQLApi)); err != nil { + return err + } + } + return nil + } + _, err := controllerutils.Upsert(ctx, c.client, obj, genericTxFunc) + return err +} + +func (c *graphQlapiClient) UpdateGraphQLApiStatus(ctx context.Context, obj *GraphQLApi, opts ...client.SubResourceUpdateOption) error { + return c.client.Status().Update(ctx, obj, opts...) +} + +func (c *graphQlapiClient) PatchGraphQLApiStatus(ctx context.Context, obj *GraphQLApi, patch client.Patch, opts ...client.SubResourcePatchOption) error { + return c.client.Status().Patch(ctx, obj, patch, opts...) +} + +// Provides GraphQLApiClients for multiple clusters. +type MulticlusterGraphQLApiClient interface { + // Cluster returns a GraphQLApiClient for the given cluster + Cluster(cluster string) (GraphQLApiClient, error) +} + +type multiclusterGraphQLApiClient struct { + client multicluster.Client +} + +func NewMulticlusterGraphQLApiClient(client multicluster.Client) MulticlusterGraphQLApiClient { + return &multiclusterGraphQLApiClient{client: client} +} + +func (m *multiclusterGraphQLApiClient) Cluster(cluster string) (GraphQLApiClient, error) { + client, err := m.client.Cluster(cluster) + if err != nil { + return nil, err + } + return NewGraphQLApiClient(client), nil +} diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/controller/event_handlers.go b/pkg/api/graphql.gloo.solo.io/v1beta1/controller/event_handlers.go new file mode 100644 index 000000000..b8ce975f9 --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/controller/event_handlers.go @@ -0,0 +1,125 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./event_handlers.go -destination mocks/event_handlers.go + +// Definitions for the Kubernetes Controllers +package controller + +import ( + "context" + + graphql_gloo_solo_io_v1beta1 "github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1" + + "github.com/pkg/errors" + "github.com/solo-io/skv2/pkg/events" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/manager" + "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// Handle events for the GraphQLApi Resource +// DEPRECATED: Prefer reconciler pattern. +type GraphQLApiEventHandler interface { + CreateGraphQLApi(obj *graphql_gloo_solo_io_v1beta1.GraphQLApi) error + UpdateGraphQLApi(old, new *graphql_gloo_solo_io_v1beta1.GraphQLApi) error + DeleteGraphQLApi(obj *graphql_gloo_solo_io_v1beta1.GraphQLApi) error + GenericGraphQLApi(obj *graphql_gloo_solo_io_v1beta1.GraphQLApi) error +} + +type GraphQLApiEventHandlerFuncs struct { + OnCreate func(obj *graphql_gloo_solo_io_v1beta1.GraphQLApi) error + OnUpdate func(old, new *graphql_gloo_solo_io_v1beta1.GraphQLApi) error + OnDelete func(obj *graphql_gloo_solo_io_v1beta1.GraphQLApi) error + OnGeneric func(obj *graphql_gloo_solo_io_v1beta1.GraphQLApi) error +} + +func (f *GraphQLApiEventHandlerFuncs) CreateGraphQLApi(obj *graphql_gloo_solo_io_v1beta1.GraphQLApi) error { + if f.OnCreate == nil { + return nil + } + return f.OnCreate(obj) +} + +func (f *GraphQLApiEventHandlerFuncs) DeleteGraphQLApi(obj *graphql_gloo_solo_io_v1beta1.GraphQLApi) error { + if f.OnDelete == nil { + return nil + } + return f.OnDelete(obj) +} + +func (f *GraphQLApiEventHandlerFuncs) UpdateGraphQLApi(objOld, objNew *graphql_gloo_solo_io_v1beta1.GraphQLApi) error { + if f.OnUpdate == nil { + return nil + } + return f.OnUpdate(objOld, objNew) +} + +func (f *GraphQLApiEventHandlerFuncs) GenericGraphQLApi(obj *graphql_gloo_solo_io_v1beta1.GraphQLApi) error { + if f.OnGeneric == nil { + return nil + } + return f.OnGeneric(obj) +} + +type GraphQLApiEventWatcher interface { + AddEventHandler(ctx context.Context, h GraphQLApiEventHandler, predicates ...predicate.Predicate) error +} + +type graphQlapiEventWatcher struct { + watcher events.EventWatcher +} + +func NewGraphQLApiEventWatcher(name string, mgr manager.Manager) GraphQLApiEventWatcher { + return &graphQlapiEventWatcher{ + watcher: events.NewWatcher(name, mgr, &graphql_gloo_solo_io_v1beta1.GraphQLApi{}), + } +} + +func (c *graphQlapiEventWatcher) AddEventHandler(ctx context.Context, h GraphQLApiEventHandler, predicates ...predicate.Predicate) error { + handler := genericGraphQLApiHandler{handler: h} + if err := c.watcher.Watch(ctx, handler, predicates...); err != nil { + return err + } + return nil +} + +// genericGraphQLApiHandler implements a generic events.EventHandler +type genericGraphQLApiHandler struct { + handler GraphQLApiEventHandler +} + +func (h genericGraphQLApiHandler) Create(object client.Object) error { + obj, ok := object.(*graphql_gloo_solo_io_v1beta1.GraphQLApi) + if !ok { + return errors.Errorf("internal error: GraphQLApi handler received event for %T", object) + } + return h.handler.CreateGraphQLApi(obj) +} + +func (h genericGraphQLApiHandler) Delete(object client.Object) error { + obj, ok := object.(*graphql_gloo_solo_io_v1beta1.GraphQLApi) + if !ok { + return errors.Errorf("internal error: GraphQLApi handler received event for %T", object) + } + return h.handler.DeleteGraphQLApi(obj) +} + +func (h genericGraphQLApiHandler) Update(old, new client.Object) error { + objOld, ok := old.(*graphql_gloo_solo_io_v1beta1.GraphQLApi) + if !ok { + return errors.Errorf("internal error: GraphQLApi handler received event for %T", old) + } + objNew, ok := new.(*graphql_gloo_solo_io_v1beta1.GraphQLApi) + if !ok { + return errors.Errorf("internal error: GraphQLApi handler received event for %T", new) + } + return h.handler.UpdateGraphQLApi(objOld, objNew) +} + +func (h genericGraphQLApiHandler) Generic(object client.Object) error { + obj, ok := object.(*graphql_gloo_solo_io_v1beta1.GraphQLApi) + if !ok { + return errors.Errorf("internal error: GraphQLApi handler received event for %T", object) + } + return h.handler.GenericGraphQLApi(obj) +} diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/controller/mocks/event_handlers.go b/pkg/api/graphql.gloo.solo.io/v1beta1/controller/mocks/event_handlers.go new file mode 100644 index 000000000..9abff6f92 --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/controller/mocks/event_handlers.go @@ -0,0 +1,136 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./event_handlers.go + +// Package mock_controller is a generated GoMock package. +package mock_controller + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + v1beta1 "github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1" + controller "github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1/controller" + predicate "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// MockGraphQLApiEventHandler is a mock of GraphQLApiEventHandler interface. +type MockGraphQLApiEventHandler struct { + ctrl *gomock.Controller + recorder *MockGraphQLApiEventHandlerMockRecorder +} + +// MockGraphQLApiEventHandlerMockRecorder is the mock recorder for MockGraphQLApiEventHandler. +type MockGraphQLApiEventHandlerMockRecorder struct { + mock *MockGraphQLApiEventHandler +} + +// NewMockGraphQLApiEventHandler creates a new mock instance. +func NewMockGraphQLApiEventHandler(ctrl *gomock.Controller) *MockGraphQLApiEventHandler { + mock := &MockGraphQLApiEventHandler{ctrl: ctrl} + mock.recorder = &MockGraphQLApiEventHandlerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGraphQLApiEventHandler) EXPECT() *MockGraphQLApiEventHandlerMockRecorder { + return m.recorder +} + +// CreateGraphQLApi mocks base method. +func (m *MockGraphQLApiEventHandler) CreateGraphQLApi(obj *v1beta1.GraphQLApi) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateGraphQLApi", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateGraphQLApi indicates an expected call of CreateGraphQLApi. +func (mr *MockGraphQLApiEventHandlerMockRecorder) CreateGraphQLApi(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateGraphQLApi", reflect.TypeOf((*MockGraphQLApiEventHandler)(nil).CreateGraphQLApi), obj) +} + +// DeleteGraphQLApi mocks base method. +func (m *MockGraphQLApiEventHandler) DeleteGraphQLApi(obj *v1beta1.GraphQLApi) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteGraphQLApi", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteGraphQLApi indicates an expected call of DeleteGraphQLApi. +func (mr *MockGraphQLApiEventHandlerMockRecorder) DeleteGraphQLApi(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteGraphQLApi", reflect.TypeOf((*MockGraphQLApiEventHandler)(nil).DeleteGraphQLApi), obj) +} + +// GenericGraphQLApi mocks base method. +func (m *MockGraphQLApiEventHandler) GenericGraphQLApi(obj *v1beta1.GraphQLApi) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GenericGraphQLApi", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// GenericGraphQLApi indicates an expected call of GenericGraphQLApi. +func (mr *MockGraphQLApiEventHandlerMockRecorder) GenericGraphQLApi(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericGraphQLApi", reflect.TypeOf((*MockGraphQLApiEventHandler)(nil).GenericGraphQLApi), obj) +} + +// UpdateGraphQLApi mocks base method. +func (m *MockGraphQLApiEventHandler) UpdateGraphQLApi(old, new *v1beta1.GraphQLApi) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateGraphQLApi", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateGraphQLApi indicates an expected call of UpdateGraphQLApi. +func (mr *MockGraphQLApiEventHandlerMockRecorder) UpdateGraphQLApi(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateGraphQLApi", reflect.TypeOf((*MockGraphQLApiEventHandler)(nil).UpdateGraphQLApi), old, new) +} + +// MockGraphQLApiEventWatcher is a mock of GraphQLApiEventWatcher interface. +type MockGraphQLApiEventWatcher struct { + ctrl *gomock.Controller + recorder *MockGraphQLApiEventWatcherMockRecorder +} + +// MockGraphQLApiEventWatcherMockRecorder is the mock recorder for MockGraphQLApiEventWatcher. +type MockGraphQLApiEventWatcherMockRecorder struct { + mock *MockGraphQLApiEventWatcher +} + +// NewMockGraphQLApiEventWatcher creates a new mock instance. +func NewMockGraphQLApiEventWatcher(ctrl *gomock.Controller) *MockGraphQLApiEventWatcher { + mock := &MockGraphQLApiEventWatcher{ctrl: ctrl} + mock.recorder = &MockGraphQLApiEventWatcherMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGraphQLApiEventWatcher) EXPECT() *MockGraphQLApiEventWatcherMockRecorder { + return m.recorder +} + +// AddEventHandler mocks base method. +func (m *MockGraphQLApiEventWatcher) AddEventHandler(ctx context.Context, h controller.GraphQLApiEventHandler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, h} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "AddEventHandler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddEventHandler indicates an expected call of AddEventHandler. +func (mr *MockGraphQLApiEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, h}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddEventHandler", reflect.TypeOf((*MockGraphQLApiEventWatcher)(nil).AddEventHandler), varargs...) +} diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/controller/mocks/multicluster_reconcilers.go b/pkg/api/graphql.gloo.solo.io/v1beta1/controller/mocks/multicluster_reconcilers.go new file mode 100644 index 000000000..775f5dcc4 --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/controller/mocks/multicluster_reconcilers.go @@ -0,0 +1,131 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./multicluster_reconcilers.go + +// Package mock_controller is a generated GoMock package. +package mock_controller + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + reconcile "github.com/solo-io/skv2/pkg/reconcile" + v1beta1 "github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1" + controller "github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1/controller" + predicate "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// MockMulticlusterGraphQLApiReconciler is a mock of MulticlusterGraphQLApiReconciler interface. +type MockMulticlusterGraphQLApiReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterGraphQLApiReconcilerMockRecorder +} + +// MockMulticlusterGraphQLApiReconcilerMockRecorder is the mock recorder for MockMulticlusterGraphQLApiReconciler. +type MockMulticlusterGraphQLApiReconcilerMockRecorder struct { + mock *MockMulticlusterGraphQLApiReconciler +} + +// NewMockMulticlusterGraphQLApiReconciler creates a new mock instance. +func NewMockMulticlusterGraphQLApiReconciler(ctrl *gomock.Controller) *MockMulticlusterGraphQLApiReconciler { + mock := &MockMulticlusterGraphQLApiReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterGraphQLApiReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterGraphQLApiReconciler) EXPECT() *MockMulticlusterGraphQLApiReconcilerMockRecorder { + return m.recorder +} + +// ReconcileGraphQLApi mocks base method. +func (m *MockMulticlusterGraphQLApiReconciler) ReconcileGraphQLApi(clusterName string, obj *v1beta1.GraphQLApi) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileGraphQLApi", clusterName, obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileGraphQLApi indicates an expected call of ReconcileGraphQLApi. +func (mr *MockMulticlusterGraphQLApiReconcilerMockRecorder) ReconcileGraphQLApi(clusterName, obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileGraphQLApi", reflect.TypeOf((*MockMulticlusterGraphQLApiReconciler)(nil).ReconcileGraphQLApi), clusterName, obj) +} + +// MockMulticlusterGraphQLApiDeletionReconciler is a mock of MulticlusterGraphQLApiDeletionReconciler interface. +type MockMulticlusterGraphQLApiDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockMulticlusterGraphQLApiDeletionReconcilerMockRecorder +} + +// MockMulticlusterGraphQLApiDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterGraphQLApiDeletionReconciler. +type MockMulticlusterGraphQLApiDeletionReconcilerMockRecorder struct { + mock *MockMulticlusterGraphQLApiDeletionReconciler +} + +// NewMockMulticlusterGraphQLApiDeletionReconciler creates a new mock instance. +func NewMockMulticlusterGraphQLApiDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterGraphQLApiDeletionReconciler { + mock := &MockMulticlusterGraphQLApiDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockMulticlusterGraphQLApiDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterGraphQLApiDeletionReconciler) EXPECT() *MockMulticlusterGraphQLApiDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileGraphQLApiDeletion mocks base method. +func (m *MockMulticlusterGraphQLApiDeletionReconciler) ReconcileGraphQLApiDeletion(clusterName string, req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileGraphQLApiDeletion", clusterName, req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileGraphQLApiDeletion indicates an expected call of ReconcileGraphQLApiDeletion. +func (mr *MockMulticlusterGraphQLApiDeletionReconcilerMockRecorder) ReconcileGraphQLApiDeletion(clusterName, req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileGraphQLApiDeletion", reflect.TypeOf((*MockMulticlusterGraphQLApiDeletionReconciler)(nil).ReconcileGraphQLApiDeletion), clusterName, req) +} + +// MockMulticlusterGraphQLApiReconcileLoop is a mock of MulticlusterGraphQLApiReconcileLoop interface. +type MockMulticlusterGraphQLApiReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockMulticlusterGraphQLApiReconcileLoopMockRecorder +} + +// MockMulticlusterGraphQLApiReconcileLoopMockRecorder is the mock recorder for MockMulticlusterGraphQLApiReconcileLoop. +type MockMulticlusterGraphQLApiReconcileLoopMockRecorder struct { + mock *MockMulticlusterGraphQLApiReconcileLoop +} + +// NewMockMulticlusterGraphQLApiReconcileLoop creates a new mock instance. +func NewMockMulticlusterGraphQLApiReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterGraphQLApiReconcileLoop { + mock := &MockMulticlusterGraphQLApiReconcileLoop{ctrl: ctrl} + mock.recorder = &MockMulticlusterGraphQLApiReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterGraphQLApiReconcileLoop) EXPECT() *MockMulticlusterGraphQLApiReconcileLoopMockRecorder { + return m.recorder +} + +// AddMulticlusterGraphQLApiReconciler mocks base method. +func (m *MockMulticlusterGraphQLApiReconcileLoop) AddMulticlusterGraphQLApiReconciler(ctx context.Context, rec controller.MulticlusterGraphQLApiReconciler, predicates ...predicate.Predicate) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "AddMulticlusterGraphQLApiReconciler", varargs...) +} + +// AddMulticlusterGraphQLApiReconciler indicates an expected call of AddMulticlusterGraphQLApiReconciler. +func (mr *MockMulticlusterGraphQLApiReconcileLoopMockRecorder) AddMulticlusterGraphQLApiReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMulticlusterGraphQLApiReconciler", reflect.TypeOf((*MockMulticlusterGraphQLApiReconcileLoop)(nil).AddMulticlusterGraphQLApiReconciler), varargs...) +} diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/controller/mocks/reconcilers.go b/pkg/api/graphql.gloo.solo.io/v1beta1/controller/mocks/reconcilers.go new file mode 100644 index 000000000..6cccb3089 --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/controller/mocks/reconcilers.go @@ -0,0 +1,199 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./reconcilers.go + +// Package mock_controller is a generated GoMock package. +package mock_controller + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + reconcile "github.com/solo-io/skv2/pkg/reconcile" + v1beta1 "github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1" + controller "github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1/controller" + predicate "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// MockGraphQLApiReconciler is a mock of GraphQLApiReconciler interface. +type MockGraphQLApiReconciler struct { + ctrl *gomock.Controller + recorder *MockGraphQLApiReconcilerMockRecorder +} + +// MockGraphQLApiReconcilerMockRecorder is the mock recorder for MockGraphQLApiReconciler. +type MockGraphQLApiReconcilerMockRecorder struct { + mock *MockGraphQLApiReconciler +} + +// NewMockGraphQLApiReconciler creates a new mock instance. +func NewMockGraphQLApiReconciler(ctrl *gomock.Controller) *MockGraphQLApiReconciler { + mock := &MockGraphQLApiReconciler{ctrl: ctrl} + mock.recorder = &MockGraphQLApiReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGraphQLApiReconciler) EXPECT() *MockGraphQLApiReconcilerMockRecorder { + return m.recorder +} + +// ReconcileGraphQLApi mocks base method. +func (m *MockGraphQLApiReconciler) ReconcileGraphQLApi(obj *v1beta1.GraphQLApi) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileGraphQLApi", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileGraphQLApi indicates an expected call of ReconcileGraphQLApi. +func (mr *MockGraphQLApiReconcilerMockRecorder) ReconcileGraphQLApi(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileGraphQLApi", reflect.TypeOf((*MockGraphQLApiReconciler)(nil).ReconcileGraphQLApi), obj) +} + +// MockGraphQLApiDeletionReconciler is a mock of GraphQLApiDeletionReconciler interface. +type MockGraphQLApiDeletionReconciler struct { + ctrl *gomock.Controller + recorder *MockGraphQLApiDeletionReconcilerMockRecorder +} + +// MockGraphQLApiDeletionReconcilerMockRecorder is the mock recorder for MockGraphQLApiDeletionReconciler. +type MockGraphQLApiDeletionReconcilerMockRecorder struct { + mock *MockGraphQLApiDeletionReconciler +} + +// NewMockGraphQLApiDeletionReconciler creates a new mock instance. +func NewMockGraphQLApiDeletionReconciler(ctrl *gomock.Controller) *MockGraphQLApiDeletionReconciler { + mock := &MockGraphQLApiDeletionReconciler{ctrl: ctrl} + mock.recorder = &MockGraphQLApiDeletionReconcilerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGraphQLApiDeletionReconciler) EXPECT() *MockGraphQLApiDeletionReconcilerMockRecorder { + return m.recorder +} + +// ReconcileGraphQLApiDeletion mocks base method. +func (m *MockGraphQLApiDeletionReconciler) ReconcileGraphQLApiDeletion(req reconcile.Request) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileGraphQLApiDeletion", req) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReconcileGraphQLApiDeletion indicates an expected call of ReconcileGraphQLApiDeletion. +func (mr *MockGraphQLApiDeletionReconcilerMockRecorder) ReconcileGraphQLApiDeletion(req interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileGraphQLApiDeletion", reflect.TypeOf((*MockGraphQLApiDeletionReconciler)(nil).ReconcileGraphQLApiDeletion), req) +} + +// MockGraphQLApiFinalizer is a mock of GraphQLApiFinalizer interface. +type MockGraphQLApiFinalizer struct { + ctrl *gomock.Controller + recorder *MockGraphQLApiFinalizerMockRecorder +} + +// MockGraphQLApiFinalizerMockRecorder is the mock recorder for MockGraphQLApiFinalizer. +type MockGraphQLApiFinalizerMockRecorder struct { + mock *MockGraphQLApiFinalizer +} + +// NewMockGraphQLApiFinalizer creates a new mock instance. +func NewMockGraphQLApiFinalizer(ctrl *gomock.Controller) *MockGraphQLApiFinalizer { + mock := &MockGraphQLApiFinalizer{ctrl: ctrl} + mock.recorder = &MockGraphQLApiFinalizerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGraphQLApiFinalizer) EXPECT() *MockGraphQLApiFinalizerMockRecorder { + return m.recorder +} + +// FinalizeGraphQLApi mocks base method. +func (m *MockGraphQLApiFinalizer) FinalizeGraphQLApi(obj *v1beta1.GraphQLApi) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FinalizeGraphQLApi", obj) + ret0, _ := ret[0].(error) + return ret0 +} + +// FinalizeGraphQLApi indicates an expected call of FinalizeGraphQLApi. +func (mr *MockGraphQLApiFinalizerMockRecorder) FinalizeGraphQLApi(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeGraphQLApi", reflect.TypeOf((*MockGraphQLApiFinalizer)(nil).FinalizeGraphQLApi), obj) +} + +// GraphQLApiFinalizerName mocks base method. +func (m *MockGraphQLApiFinalizer) GraphQLApiFinalizerName() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GraphQLApiFinalizerName") + ret0, _ := ret[0].(string) + return ret0 +} + +// GraphQLApiFinalizerName indicates an expected call of GraphQLApiFinalizerName. +func (mr *MockGraphQLApiFinalizerMockRecorder) GraphQLApiFinalizerName() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GraphQLApiFinalizerName", reflect.TypeOf((*MockGraphQLApiFinalizer)(nil).GraphQLApiFinalizerName)) +} + +// ReconcileGraphQLApi mocks base method. +func (m *MockGraphQLApiFinalizer) ReconcileGraphQLApi(obj *v1beta1.GraphQLApi) (reconcile.Result, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReconcileGraphQLApi", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReconcileGraphQLApi indicates an expected call of ReconcileGraphQLApi. +func (mr *MockGraphQLApiFinalizerMockRecorder) ReconcileGraphQLApi(obj interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileGraphQLApi", reflect.TypeOf((*MockGraphQLApiFinalizer)(nil).ReconcileGraphQLApi), obj) +} + +// MockGraphQLApiReconcileLoop is a mock of GraphQLApiReconcileLoop interface. +type MockGraphQLApiReconcileLoop struct { + ctrl *gomock.Controller + recorder *MockGraphQLApiReconcileLoopMockRecorder +} + +// MockGraphQLApiReconcileLoopMockRecorder is the mock recorder for MockGraphQLApiReconcileLoop. +type MockGraphQLApiReconcileLoopMockRecorder struct { + mock *MockGraphQLApiReconcileLoop +} + +// NewMockGraphQLApiReconcileLoop creates a new mock instance. +func NewMockGraphQLApiReconcileLoop(ctrl *gomock.Controller) *MockGraphQLApiReconcileLoop { + mock := &MockGraphQLApiReconcileLoop{ctrl: ctrl} + mock.recorder = &MockGraphQLApiReconcileLoopMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGraphQLApiReconcileLoop) EXPECT() *MockGraphQLApiReconcileLoopMockRecorder { + return m.recorder +} + +// RunGraphQLApiReconciler mocks base method. +func (m *MockGraphQLApiReconcileLoop) RunGraphQLApiReconciler(ctx context.Context, rec controller.GraphQLApiReconciler, predicates ...predicate.Predicate) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, rec} + for _, a := range predicates { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "RunGraphQLApiReconciler", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// RunGraphQLApiReconciler indicates an expected call of RunGraphQLApiReconciler. +func (mr *MockGraphQLApiReconcileLoopMockRecorder) RunGraphQLApiReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, rec}, predicates...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunGraphQLApiReconciler", reflect.TypeOf((*MockGraphQLApiReconcileLoop)(nil).RunGraphQLApiReconciler), varargs...) +} diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/controller/multicluster_reconcilers.go b/pkg/api/graphql.gloo.solo.io/v1beta1/controller/multicluster_reconcilers.go new file mode 100644 index 000000000..f0c0d37ff --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/controller/multicluster_reconcilers.go @@ -0,0 +1,90 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./multicluster_reconcilers.go -destination mocks/multicluster_reconcilers.go + +// Definitions for the multicluster Kubernetes Controllers +package controller + +import ( + "context" + + graphql_gloo_solo_io_v1beta1 "github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1" + + "github.com/pkg/errors" + "github.com/solo-io/skv2/pkg/ezkube" + "github.com/solo-io/skv2/pkg/multicluster" + mc_reconcile "github.com/solo-io/skv2/pkg/multicluster/reconcile" + "github.com/solo-io/skv2/pkg/reconcile" + "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// Reconcile Upsert events for the GraphQLApi Resource across clusters. +// implemented by the user +type MulticlusterGraphQLApiReconciler interface { + ReconcileGraphQLApi(clusterName string, obj *graphql_gloo_solo_io_v1beta1.GraphQLApi) (reconcile.Result, error) +} + +// Reconcile deletion events for the GraphQLApi Resource across clusters. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type MulticlusterGraphQLApiDeletionReconciler interface { + ReconcileGraphQLApiDeletion(clusterName string, req reconcile.Request) error +} + +type MulticlusterGraphQLApiReconcilerFuncs struct { + OnReconcileGraphQLApi func(clusterName string, obj *graphql_gloo_solo_io_v1beta1.GraphQLApi) (reconcile.Result, error) + OnReconcileGraphQLApiDeletion func(clusterName string, req reconcile.Request) error +} + +func (f *MulticlusterGraphQLApiReconcilerFuncs) ReconcileGraphQLApi(clusterName string, obj *graphql_gloo_solo_io_v1beta1.GraphQLApi) (reconcile.Result, error) { + if f.OnReconcileGraphQLApi == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileGraphQLApi(clusterName, obj) +} + +func (f *MulticlusterGraphQLApiReconcilerFuncs) ReconcileGraphQLApiDeletion(clusterName string, req reconcile.Request) error { + if f.OnReconcileGraphQLApiDeletion == nil { + return nil + } + return f.OnReconcileGraphQLApiDeletion(clusterName, req) +} + +type MulticlusterGraphQLApiReconcileLoop interface { + // AddMulticlusterGraphQLApiReconciler adds a MulticlusterGraphQLApiReconciler to the MulticlusterGraphQLApiReconcileLoop. + AddMulticlusterGraphQLApiReconciler(ctx context.Context, rec MulticlusterGraphQLApiReconciler, predicates ...predicate.Predicate) +} + +type multiclusterGraphQLApiReconcileLoop struct { + loop multicluster.Loop +} + +func (m *multiclusterGraphQLApiReconcileLoop) AddMulticlusterGraphQLApiReconciler(ctx context.Context, rec MulticlusterGraphQLApiReconciler, predicates ...predicate.Predicate) { + genericReconciler := genericGraphQLApiMulticlusterReconciler{reconciler: rec} + + m.loop.AddReconciler(ctx, genericReconciler, predicates...) +} + +func NewMulticlusterGraphQLApiReconcileLoop(name string, cw multicluster.ClusterWatcher, options reconcile.Options) MulticlusterGraphQLApiReconcileLoop { + return &multiclusterGraphQLApiReconcileLoop{loop: mc_reconcile.NewLoop(name, cw, &graphql_gloo_solo_io_v1beta1.GraphQLApi{}, options)} +} + +type genericGraphQLApiMulticlusterReconciler struct { + reconciler MulticlusterGraphQLApiReconciler +} + +func (g genericGraphQLApiMulticlusterReconciler) ReconcileDeletion(cluster string, req reconcile.Request) error { + if deletionReconciler, ok := g.reconciler.(MulticlusterGraphQLApiDeletionReconciler); ok { + return deletionReconciler.ReconcileGraphQLApiDeletion(cluster, req) + } + return nil +} + +func (g genericGraphQLApiMulticlusterReconciler) Reconcile(cluster string, object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*graphql_gloo_solo_io_v1beta1.GraphQLApi) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: GraphQLApi handler received event for %T", object) + } + return g.reconciler.ReconcileGraphQLApi(cluster, obj) +} diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/controller/reconcilers.go b/pkg/api/graphql.gloo.solo.io/v1beta1/controller/reconcilers.go new file mode 100644 index 000000000..248be6879 --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/controller/reconcilers.go @@ -0,0 +1,135 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./reconcilers.go -destination mocks/reconcilers.go + +// Definitions for the Kubernetes Controllers +package controller + +import ( + "context" + + graphql_gloo_solo_io_v1beta1 "github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1" + + "github.com/pkg/errors" + "github.com/solo-io/skv2/pkg/ezkube" + "github.com/solo-io/skv2/pkg/reconcile" + "sigs.k8s.io/controller-runtime/pkg/manager" + "sigs.k8s.io/controller-runtime/pkg/predicate" +) + +// Reconcile Upsert events for the GraphQLApi Resource. +// implemented by the user +type GraphQLApiReconciler interface { + ReconcileGraphQLApi(obj *graphql_gloo_solo_io_v1beta1.GraphQLApi) (reconcile.Result, error) +} + +// Reconcile deletion events for the GraphQLApi Resource. +// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object +// before being deleted. +// implemented by the user +type GraphQLApiDeletionReconciler interface { + ReconcileGraphQLApiDeletion(req reconcile.Request) error +} + +type GraphQLApiReconcilerFuncs struct { + OnReconcileGraphQLApi func(obj *graphql_gloo_solo_io_v1beta1.GraphQLApi) (reconcile.Result, error) + OnReconcileGraphQLApiDeletion func(req reconcile.Request) error +} + +func (f *GraphQLApiReconcilerFuncs) ReconcileGraphQLApi(obj *graphql_gloo_solo_io_v1beta1.GraphQLApi) (reconcile.Result, error) { + if f.OnReconcileGraphQLApi == nil { + return reconcile.Result{}, nil + } + return f.OnReconcileGraphQLApi(obj) +} + +func (f *GraphQLApiReconcilerFuncs) ReconcileGraphQLApiDeletion(req reconcile.Request) error { + if f.OnReconcileGraphQLApiDeletion == nil { + return nil + } + return f.OnReconcileGraphQLApiDeletion(req) +} + +// Reconcile and finalize the GraphQLApi Resource +// implemented by the user +type GraphQLApiFinalizer interface { + GraphQLApiReconciler + + // name of the finalizer used by this handler. + // finalizer names should be unique for a single task + GraphQLApiFinalizerName() string + + // finalize the object before it is deleted. + // Watchers created with a finalizing handler will a + FinalizeGraphQLApi(obj *graphql_gloo_solo_io_v1beta1.GraphQLApi) error +} + +type GraphQLApiReconcileLoop interface { + RunGraphQLApiReconciler(ctx context.Context, rec GraphQLApiReconciler, predicates ...predicate.Predicate) error +} + +type graphQlapiReconcileLoop struct { + loop reconcile.Loop +} + +func NewGraphQLApiReconcileLoop(name string, mgr manager.Manager, options reconcile.Options) GraphQLApiReconcileLoop { + return &graphQlapiReconcileLoop{ + // empty cluster indicates this reconciler is built for the local cluster + loop: reconcile.NewLoop(name, "", mgr, &graphql_gloo_solo_io_v1beta1.GraphQLApi{}, options), + } +} + +func (c *graphQlapiReconcileLoop) RunGraphQLApiReconciler(ctx context.Context, reconciler GraphQLApiReconciler, predicates ...predicate.Predicate) error { + genericReconciler := genericGraphQLApiReconciler{ + reconciler: reconciler, + } + + var reconcilerWrapper reconcile.Reconciler + if finalizingReconciler, ok := reconciler.(GraphQLApiFinalizer); ok { + reconcilerWrapper = genericGraphQLApiFinalizer{ + genericGraphQLApiReconciler: genericReconciler, + finalizingReconciler: finalizingReconciler, + } + } else { + reconcilerWrapper = genericReconciler + } + return c.loop.RunReconciler(ctx, reconcilerWrapper, predicates...) +} + +// genericGraphQLApiHandler implements a generic reconcile.Reconciler +type genericGraphQLApiReconciler struct { + reconciler GraphQLApiReconciler +} + +func (r genericGraphQLApiReconciler) Reconcile(object ezkube.Object) (reconcile.Result, error) { + obj, ok := object.(*graphql_gloo_solo_io_v1beta1.GraphQLApi) + if !ok { + return reconcile.Result{}, errors.Errorf("internal error: GraphQLApi handler received event for %T", object) + } + return r.reconciler.ReconcileGraphQLApi(obj) +} + +func (r genericGraphQLApiReconciler) ReconcileDeletion(request reconcile.Request) error { + if deletionReconciler, ok := r.reconciler.(GraphQLApiDeletionReconciler); ok { + return deletionReconciler.ReconcileGraphQLApiDeletion(request) + } + return nil +} + +// genericGraphQLApiFinalizer implements a generic reconcile.FinalizingReconciler +type genericGraphQLApiFinalizer struct { + genericGraphQLApiReconciler + finalizingReconciler GraphQLApiFinalizer +} + +func (r genericGraphQLApiFinalizer) FinalizerName() string { + return r.finalizingReconciler.GraphQLApiFinalizerName() +} + +func (r genericGraphQLApiFinalizer) Finalize(object ezkube.Object) error { + obj, ok := object.(*graphql_gloo_solo_io_v1beta1.GraphQLApi) + if !ok { + return errors.Errorf("internal error: GraphQLApi handler received event for %T", object) + } + return r.finalizingReconciler.FinalizeGraphQLApi(obj) +} diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/doc.go b/pkg/api/graphql.gloo.solo.io/v1beta1/doc.go new file mode 100644 index 000000000..32e3f5411 --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/doc.go @@ -0,0 +1,6 @@ +// Code generated by skv2. DO NOT EDIT. + +// Package v1beta1 contains API Schema definitions for the graphql.gloo.solo.io v1beta1 API group +// +k8s:deepcopy-gen=package,register +// +groupName=graphql.gloo.solo.io +package v1beta1 diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/gloo_json.gen.go b/pkg/api/graphql.gloo.solo.io/v1beta1/gloo_json.gen.go new file mode 100644 index 000000000..c55f67c7a --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/gloo_json.gen.go @@ -0,0 +1,61 @@ +// Code generated by skv2. DO NOT EDIT. + +// Generated json marshal and unmarshal functions + +package v1beta1 + +import ( + bytes "bytes" + fmt "fmt" + math "math" + + jsonpb "github.com/golang/protobuf/jsonpb" + proto "github.com/golang/protobuf/proto" + skv2jsonpb "github.com/solo-io/skv2/pkg/kube_jsonpb" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +var ( + marshaller = &skv2jsonpb.Marshaler{EnumsAsInts: true} + unmarshaller = &jsonpb.Unmarshaler{ + AllowUnknownFields: true, + } +) + +// MarshalJSON is a custom marshaler for GraphQLApiSpec +func (this *GraphQLApiSpec) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for GraphQLApiSpec +func (this *GraphQLApiSpec) UnmarshalJSON(b []byte) error { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for GraphQLApiStatus +func (this *GraphQLApiStatus) MarshalJSON() ([]byte, error) { + str, err := marshaller.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for GraphQLApiStatus +func (this *GraphQLApiStatus) UnmarshalJSON(b []byte) error { + namespacedStatuses := GraphQLApiNamespacedStatuses{} + if err := unmarshaller.Unmarshal(bytes.NewReader(b), &namespacedStatuses); err != nil { + return unmarshaller.Unmarshal(bytes.NewReader(b), this) + } + + for _, status := range namespacedStatuses.GetStatuses() { + // take the first status + if status != nil { + status.DeepCopyInto(this) + return nil + } + } + return nil +} diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/graphql.pb.clone.go b/pkg/api/graphql.gloo.solo.io/v1beta1/graphql.pb.clone.go new file mode 100644 index 000000000..4109a8ba3 --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/graphql.pb.clone.go @@ -0,0 +1,319 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/graphql.gloo/v1beta1/graphql.proto + +package v1beta1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/solo-io/protoc-gen-ext/pkg/clone" + "google.golang.org/protobuf/proto" + + google_golang_org_protobuf_types_known_structpb "google.golang.org/protobuf/types/known/structpb" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = clone.Cloner(nil) + _ = proto.Message(nil) +) + +// Clone function +func (m *RequestTemplate) Clone() proto.Message { + var target *RequestTemplate + if m == nil { + return target + } + target = &RequestTemplate{} + + return target +} + +// Clone function +func (m *ResponseTemplate) Clone() proto.Message { + var target *ResponseTemplate + if m == nil { + return target + } + target = &ResponseTemplate{} + + return target +} + +// Clone function +func (m *GrpcRequestTemplate) Clone() proto.Message { + var target *GrpcRequestTemplate + if m == nil { + return target + } + target = &GrpcRequestTemplate{} + + return target +} + +// Clone function +func (m *RESTResolver) Clone() proto.Message { + var target *RESTResolver + if m == nil { + return target + } + target = &RESTResolver{} + + return target +} + +// Clone function +func (m *GrpcDescriptorRegistry) Clone() proto.Message { + var target *GrpcDescriptorRegistry + if m == nil { + return target + } + target = &GrpcDescriptorRegistry{} + + return target +} + +// Clone function +func (m *GrpcResolver) Clone() proto.Message { + var target *GrpcResolver + if m == nil { + return target + } + target = &GrpcResolver{} + + return target +} + +// Clone function +func (m *StitchedSchema) Clone() proto.Message { + var target *StitchedSchema + if m == nil { + return target + } + target = &StitchedSchema{} + + return target +} + +// Clone function +func (m *MockResolver) Clone() proto.Message { + var target *MockResolver + if m == nil { + return target + } + target = &MockResolver{} + + return target +} + +// Clone function +func (m *Resolution) Clone() proto.Message { + var target *Resolution + if m == nil { + return target + } + target = &Resolution{} + + return target +} + +// Clone function +func (m *GraphQLApiSpec) Clone() proto.Message { + var target *GraphQLApiSpec + if m == nil { + return target + } + target = &GraphQLApiSpec{} + + return target +} + +// Clone function +func (m *PersistedQueryCacheConfig) Clone() proto.Message { + var target *PersistedQueryCacheConfig + if m == nil { + return target + } + target = &PersistedQueryCacheConfig{} + + return target +} + +// Clone function +func (m *ExecutableSchema) Clone() proto.Message { + var target *ExecutableSchema + if m == nil { + return target + } + target = &ExecutableSchema{} + + return target +} + +// Clone function +func (m *Executor) Clone() proto.Message { + var target *Executor + if m == nil { + return target + } + target = &Executor{} + + return target +} + +// Clone function +func (m *GraphQLApiStatus) Clone() proto.Message { + var target *GraphQLApiStatus + if m == nil { + return target + } + target = &GraphQLApiStatus{} + + target.State = m.GetState() + + target.Reason = m.GetReason() + + target.ReportedBy = m.GetReportedBy() + + if m.GetSubresourceStatuses() != nil { + target.SubresourceStatuses = make(map[string]*GraphQLApiStatus, len(m.GetSubresourceStatuses())) + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.SubresourceStatuses[k] = h.Clone().(*GraphQLApiStatus) + } else { + target.SubresourceStatuses[k] = proto.Clone(v).(*GraphQLApiStatus) + } + + } + } + + if h, ok := interface{}(m.GetDetails()).(clone.Cloner); ok { + target.Details = h.Clone().(*google_golang_org_protobuf_types_known_structpb.Struct) + } else { + target.Details = proto.Clone(m.GetDetails()).(*google_golang_org_protobuf_types_known_structpb.Struct) + } + + return target +} + +// Clone function +func (m *GraphQLApiNamespacedStatuses) Clone() proto.Message { + var target *GraphQLApiNamespacedStatuses + if m == nil { + return target + } + target = &GraphQLApiNamespacedStatuses{} + + if m.GetStatuses() != nil { + target.Statuses = make(map[string]*GraphQLApiStatus, len(m.GetStatuses())) + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.Statuses[k] = h.Clone().(*GraphQLApiStatus) + } else { + target.Statuses[k] = proto.Clone(v).(*GraphQLApiStatus) + } + + } + } + + return target +} + +// Clone function +func (m *GrpcDescriptorRegistry_ProtoRefs) Clone() proto.Message { + var target *GrpcDescriptorRegistry_ProtoRefs + if m == nil { + return target + } + target = &GrpcDescriptorRegistry_ProtoRefs{} + + return target +} + +// Clone function +func (m *StitchedSchema_SubschemaConfig) Clone() proto.Message { + var target *StitchedSchema_SubschemaConfig + if m == nil { + return target + } + target = &StitchedSchema_SubschemaConfig{} + + return target +} + +// Clone function +func (m *StitchedSchema_SubschemaConfig_TypeMergeConfig) Clone() proto.Message { + var target *StitchedSchema_SubschemaConfig_TypeMergeConfig + if m == nil { + return target + } + target = &StitchedSchema_SubschemaConfig_TypeMergeConfig{} + + return target +} + +// Clone function +func (m *MockResolver_AsyncResponse) Clone() proto.Message { + var target *MockResolver_AsyncResponse + if m == nil { + return target + } + target = &MockResolver_AsyncResponse{} + + return target +} + +// Clone function +func (m *GraphQLApiSpec_GraphQLApiOptions) Clone() proto.Message { + var target *GraphQLApiSpec_GraphQLApiOptions + if m == nil { + return target + } + target = &GraphQLApiSpec_GraphQLApiOptions{} + + return target +} + +// Clone function +func (m *Executor_Local) Clone() proto.Message { + var target *Executor_Local + if m == nil { + return target + } + target = &Executor_Local{} + + return target +} + +// Clone function +func (m *Executor_Remote) Clone() proto.Message { + var target *Executor_Remote + if m == nil { + return target + } + target = &Executor_Remote{} + + return target +} + +// Clone function +func (m *Executor_Local_LocalExecutorOptions) Clone() proto.Message { + var target *Executor_Local_LocalExecutorOptions + if m == nil { + return target + } + target = &Executor_Local_LocalExecutorOptions{} + + return target +} diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/graphql.pb.equal.go b/pkg/api/graphql.gloo.solo.io/v1beta1/graphql.pb.equal.go new file mode 100644 index 000000000..0df818c33 --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/graphql.pb.equal.go @@ -0,0 +1,634 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/graphql.gloo/v1beta1/graphql.proto + +package v1beta1 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "strings" + + "github.com/golang/protobuf/proto" + equality "github.com/solo-io/protoc-gen-ext/pkg/equality" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = bytes.Compare + _ = strings.Compare + _ = equality.Equalizer(nil) + _ = proto.Message(nil) +) + +// Equal function +func (m *RequestTemplate) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RequestTemplate) + if !ok { + that2, ok := that.(RequestTemplate) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *ResponseTemplate) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ResponseTemplate) + if !ok { + that2, ok := that.(ResponseTemplate) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *GrpcRequestTemplate) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*GrpcRequestTemplate) + if !ok { + that2, ok := that.(GrpcRequestTemplate) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *RESTResolver) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RESTResolver) + if !ok { + that2, ok := that.(RESTResolver) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *GrpcDescriptorRegistry) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*GrpcDescriptorRegistry) + if !ok { + that2, ok := that.(GrpcDescriptorRegistry) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *GrpcResolver) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*GrpcResolver) + if !ok { + that2, ok := that.(GrpcResolver) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *StitchedSchema) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*StitchedSchema) + if !ok { + that2, ok := that.(StitchedSchema) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *MockResolver) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*MockResolver) + if !ok { + that2, ok := that.(MockResolver) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *Resolution) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Resolution) + if !ok { + that2, ok := that.(Resolution) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *GraphQLApiSpec) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*GraphQLApiSpec) + if !ok { + that2, ok := that.(GraphQLApiSpec) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *PersistedQueryCacheConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*PersistedQueryCacheConfig) + if !ok { + that2, ok := that.(PersistedQueryCacheConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *ExecutableSchema) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*ExecutableSchema) + if !ok { + that2, ok := that.(ExecutableSchema) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *Executor) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Executor) + if !ok { + that2, ok := that.(Executor) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *GraphQLApiStatus) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*GraphQLApiStatus) + if !ok { + that2, ok := that.(GraphQLApiStatus) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if m.GetState() != target.GetState() { + return false + } + + if strings.Compare(m.GetReason(), target.GetReason()) != 0 { + return false + } + + if strings.Compare(m.GetReportedBy(), target.GetReportedBy()) != 0 { + return false + } + + if len(m.GetSubresourceStatuses()) != len(target.GetSubresourceStatuses()) { + return false + } + for k, v := range m.GetSubresourceStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetSubresourceStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetSubresourceStatuses()[k]) { + return false + } + } + + } + + if h, ok := interface{}(m.GetDetails()).(equality.Equalizer); ok { + if !h.Equal(target.GetDetails()) { + return false + } + } else { + if !proto.Equal(m.GetDetails(), target.GetDetails()) { + return false + } + } + + return true +} + +// Equal function +func (m *GraphQLApiNamespacedStatuses) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*GraphQLApiNamespacedStatuses) + if !ok { + that2, ok := that.(GraphQLApiNamespacedStatuses) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetStatuses()) != len(target.GetStatuses()) { + return false + } + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetStatuses()[k]) { + return false + } + } + + } + + return true +} + +// Equal function +func (m *GrpcDescriptorRegistry_ProtoRefs) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*GrpcDescriptorRegistry_ProtoRefs) + if !ok { + that2, ok := that.(GrpcDescriptorRegistry_ProtoRefs) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *StitchedSchema_SubschemaConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*StitchedSchema_SubschemaConfig) + if !ok { + that2, ok := that.(StitchedSchema_SubschemaConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *StitchedSchema_SubschemaConfig_TypeMergeConfig) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*StitchedSchema_SubschemaConfig_TypeMergeConfig) + if !ok { + that2, ok := that.(StitchedSchema_SubschemaConfig_TypeMergeConfig) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *MockResolver_AsyncResponse) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*MockResolver_AsyncResponse) + if !ok { + that2, ok := that.(MockResolver_AsyncResponse) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *GraphQLApiSpec_GraphQLApiOptions) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*GraphQLApiSpec_GraphQLApiOptions) + if !ok { + that2, ok := that.(GraphQLApiSpec_GraphQLApiOptions) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *Executor_Local) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Executor_Local) + if !ok { + that2, ok := that.(Executor_Local) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *Executor_Remote) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Executor_Remote) + if !ok { + that2, ok := that.(Executor_Remote) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} + +// Equal function +func (m *Executor_Local_LocalExecutorOptions) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Executor_Local_LocalExecutorOptions) + if !ok { + that2, ok := that.(Executor_Local_LocalExecutorOptions) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + return true +} diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/graphql.pb.go b/pkg/api/graphql.gloo.solo.io/v1beta1/graphql.pb.go new file mode 100644 index 000000000..faf570ed2 --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/graphql.pb.go @@ -0,0 +1,1241 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/graphql.gloo/v1beta1/graphql.proto + +package v1beta1 + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + _ "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type GraphQLApiStatus_State int32 + +const ( + // Pending status indicates the resource has not yet been validated + GraphQLApiStatus_Pending GraphQLApiStatus_State = 0 + // Accepted indicates the resource has been validated + GraphQLApiStatus_Accepted GraphQLApiStatus_State = 1 + // Rejected indicates an invalid configuration by the user + // Rejected resources may be propagated to the xDS server depending on their severity + GraphQLApiStatus_Rejected GraphQLApiStatus_State = 2 + // Warning indicates a partially invalid configuration by the user + // Resources with Warnings may be partially accepted by a controller, depending on the implementation + GraphQLApiStatus_Warning GraphQLApiStatus_State = 3 +) + +// Enum value maps for GraphQLApiStatus_State. +var ( + GraphQLApiStatus_State_name = map[int32]string{ + 0: "Pending", + 1: "Accepted", + 2: "Rejected", + 3: "Warning", + } + GraphQLApiStatus_State_value = map[string]int32{ + "Pending": 0, + "Accepted": 1, + "Rejected": 2, + "Warning": 3, + } +) + +func (x GraphQLApiStatus_State) Enum() *GraphQLApiStatus_State { + p := new(GraphQLApiStatus_State) + *p = x + return p +} + +func (x GraphQLApiStatus_State) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GraphQLApiStatus_State) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_enumTypes[0].Descriptor() +} + +func (GraphQLApiStatus_State) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_enumTypes[0] +} + +func (x GraphQLApiStatus_State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GraphQLApiStatus_State.Descriptor instead. +func (GraphQLApiStatus_State) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{13, 0} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type RequestTemplate struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RequestTemplate) Reset() { + *x = RequestTemplate{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RequestTemplate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RequestTemplate) ProtoMessage() {} + +func (x *RequestTemplate) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RequestTemplate.ProtoReflect.Descriptor instead. +func (*RequestTemplate) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{0} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type ResponseTemplate struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResponseTemplate) Reset() { + *x = ResponseTemplate{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResponseTemplate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResponseTemplate) ProtoMessage() {} + +func (x *ResponseTemplate) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResponseTemplate.ProtoReflect.Descriptor instead. +func (*ResponseTemplate) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{1} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type GrpcRequestTemplate struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GrpcRequestTemplate) Reset() { + *x = GrpcRequestTemplate{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GrpcRequestTemplate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GrpcRequestTemplate) ProtoMessage() {} + +func (x *GrpcRequestTemplate) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GrpcRequestTemplate.ProtoReflect.Descriptor instead. +func (*GrpcRequestTemplate) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{2} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type RESTResolver struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RESTResolver) Reset() { + *x = RESTResolver{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RESTResolver) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RESTResolver) ProtoMessage() {} + +func (x *RESTResolver) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RESTResolver.ProtoReflect.Descriptor instead. +func (*RESTResolver) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{3} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type GrpcDescriptorRegistry struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GrpcDescriptorRegistry) Reset() { + *x = GrpcDescriptorRegistry{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GrpcDescriptorRegistry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GrpcDescriptorRegistry) ProtoMessage() {} + +func (x *GrpcDescriptorRegistry) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GrpcDescriptorRegistry.ProtoReflect.Descriptor instead. +func (*GrpcDescriptorRegistry) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{4} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type GrpcResolver struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GrpcResolver) Reset() { + *x = GrpcResolver{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GrpcResolver) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GrpcResolver) ProtoMessage() {} + +func (x *GrpcResolver) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GrpcResolver.ProtoReflect.Descriptor instead. +func (*GrpcResolver) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{5} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type StitchedSchema struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StitchedSchema) Reset() { + *x = StitchedSchema{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StitchedSchema) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StitchedSchema) ProtoMessage() {} + +func (x *StitchedSchema) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StitchedSchema.ProtoReflect.Descriptor instead. +func (*StitchedSchema) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{6} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type MockResolver struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MockResolver) Reset() { + *x = MockResolver{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MockResolver) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MockResolver) ProtoMessage() {} + +func (x *MockResolver) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MockResolver.ProtoReflect.Descriptor instead. +func (*MockResolver) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{7} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type Resolution struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Resolution) Reset() { + *x = Resolution{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Resolution) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Resolution) ProtoMessage() {} + +func (x *Resolution) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Resolution.ProtoReflect.Descriptor instead. +func (*Resolution) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{8} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type GraphQLApiSpec struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GraphQLApiSpec) Reset() { + *x = GraphQLApiSpec{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GraphQLApiSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GraphQLApiSpec) ProtoMessage() {} + +func (x *GraphQLApiSpec) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GraphQLApiSpec.ProtoReflect.Descriptor instead. +func (*GraphQLApiSpec) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{9} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type PersistedQueryCacheConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PersistedQueryCacheConfig) Reset() { + *x = PersistedQueryCacheConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PersistedQueryCacheConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PersistedQueryCacheConfig) ProtoMessage() {} + +func (x *PersistedQueryCacheConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PersistedQueryCacheConfig.ProtoReflect.Descriptor instead. +func (*PersistedQueryCacheConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{10} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type ExecutableSchema struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExecutableSchema) Reset() { + *x = ExecutableSchema{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExecutableSchema) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecutableSchema) ProtoMessage() {} + +func (x *ExecutableSchema) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecutableSchema.ProtoReflect.Descriptor instead. +func (*ExecutableSchema) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{11} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type Executor struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Executor) Reset() { + *x = Executor{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Executor) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Executor) ProtoMessage() {} + +func (x *Executor) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Executor.ProtoReflect.Descriptor instead. +func (*Executor) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{12} +} + +type GraphQLApiStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + // State is the enum indicating the state of the resource + State GraphQLApiStatus_State `protobuf:"varint,1,opt,name=state,proto3,enum=graphql.gloo.solo.io.GraphQLApiStatus_State" json:"state,omitempty"` + // Reason is a description of the error for Rejected resources. If the resource is pending or accepted, this field will be empty + Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` + // Reference to the reporter who wrote this status + ReportedBy string `protobuf:"bytes,3,opt,name=reported_by,json=reportedBy,proto3" json:"reported_by,omitempty"` + // Reference to statuses (by resource-ref string: "Kind.Namespace.Name") of subresources of the parent resource + SubresourceStatuses map[string]*GraphQLApiStatus `protobuf:"bytes,4,rep,name=subresource_statuses,json=subresourceStatuses,proto3" json:"subresource_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Opaque details about status results + Details *structpb.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GraphQLApiStatus) Reset() { + *x = GraphQLApiStatus{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GraphQLApiStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GraphQLApiStatus) ProtoMessage() {} + +func (x *GraphQLApiStatus) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GraphQLApiStatus.ProtoReflect.Descriptor instead. +func (*GraphQLApiStatus) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{13} +} + +func (x *GraphQLApiStatus) GetState() GraphQLApiStatus_State { + if x != nil { + return x.State + } + return GraphQLApiStatus_Pending +} + +func (x *GraphQLApiStatus) GetReason() string { + if x != nil { + return x.Reason + } + return "" +} + +func (x *GraphQLApiStatus) GetReportedBy() string { + if x != nil { + return x.ReportedBy + } + return "" +} + +func (x *GraphQLApiStatus) GetSubresourceStatuses() map[string]*GraphQLApiStatus { + if x != nil { + return x.SubresourceStatuses + } + return nil +} + +func (x *GraphQLApiStatus) GetDetails() *structpb.Struct { + if x != nil { + return x.Details + } + return nil +} + +type GraphQLApiNamespacedStatuses struct { + state protoimpl.MessageState `protogen:"open.v1"` + Statuses map[string]*GraphQLApiStatus `protobuf:"bytes,1,rep,name=statuses,proto3" json:"statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GraphQLApiNamespacedStatuses) Reset() { + *x = GraphQLApiNamespacedStatuses{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GraphQLApiNamespacedStatuses) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GraphQLApiNamespacedStatuses) ProtoMessage() {} + +func (x *GraphQLApiNamespacedStatuses) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GraphQLApiNamespacedStatuses.ProtoReflect.Descriptor instead. +func (*GraphQLApiNamespacedStatuses) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{14} +} + +func (x *GraphQLApiNamespacedStatuses) GetStatuses() map[string]*GraphQLApiStatus { + if x != nil { + return x.Statuses + } + return nil +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type GrpcDescriptorRegistry_ProtoRefs struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GrpcDescriptorRegistry_ProtoRefs) Reset() { + *x = GrpcDescriptorRegistry_ProtoRefs{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GrpcDescriptorRegistry_ProtoRefs) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GrpcDescriptorRegistry_ProtoRefs) ProtoMessage() {} + +func (x *GrpcDescriptorRegistry_ProtoRefs) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GrpcDescriptorRegistry_ProtoRefs.ProtoReflect.Descriptor instead. +func (*GrpcDescriptorRegistry_ProtoRefs) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{4, 0} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type StitchedSchema_SubschemaConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StitchedSchema_SubschemaConfig) Reset() { + *x = StitchedSchema_SubschemaConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StitchedSchema_SubschemaConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StitchedSchema_SubschemaConfig) ProtoMessage() {} + +func (x *StitchedSchema_SubschemaConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StitchedSchema_SubschemaConfig.ProtoReflect.Descriptor instead. +func (*StitchedSchema_SubschemaConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{6, 0} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type StitchedSchema_SubschemaConfig_TypeMergeConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StitchedSchema_SubschemaConfig_TypeMergeConfig) Reset() { + *x = StitchedSchema_SubschemaConfig_TypeMergeConfig{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StitchedSchema_SubschemaConfig_TypeMergeConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StitchedSchema_SubschemaConfig_TypeMergeConfig) ProtoMessage() {} + +func (x *StitchedSchema_SubschemaConfig_TypeMergeConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StitchedSchema_SubschemaConfig_TypeMergeConfig.ProtoReflect.Descriptor instead. +func (*StitchedSchema_SubschemaConfig_TypeMergeConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{6, 0, 0} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type MockResolver_AsyncResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MockResolver_AsyncResponse) Reset() { + *x = MockResolver_AsyncResponse{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MockResolver_AsyncResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MockResolver_AsyncResponse) ProtoMessage() {} + +func (x *MockResolver_AsyncResponse) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MockResolver_AsyncResponse.ProtoReflect.Descriptor instead. +func (*MockResolver_AsyncResponse) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{7, 0} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type GraphQLApiSpec_GraphQLApiOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GraphQLApiSpec_GraphQLApiOptions) Reset() { + *x = GraphQLApiSpec_GraphQLApiOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GraphQLApiSpec_GraphQLApiOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GraphQLApiSpec_GraphQLApiOptions) ProtoMessage() {} + +func (x *GraphQLApiSpec_GraphQLApiOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GraphQLApiSpec_GraphQLApiOptions.ProtoReflect.Descriptor instead. +func (*GraphQLApiSpec_GraphQLApiOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{9, 0} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type Executor_Local struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Executor_Local) Reset() { + *x = Executor_Local{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Executor_Local) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Executor_Local) ProtoMessage() {} + +func (x *Executor_Local) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Executor_Local.ProtoReflect.Descriptor instead. +func (*Executor_Local) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{12, 0} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type Executor_Remote struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Executor_Remote) Reset() { + *x = Executor_Remote{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Executor_Remote) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Executor_Remote) ProtoMessage() {} + +func (x *Executor_Remote) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Executor_Remote.ProtoReflect.Descriptor instead. +func (*Executor_Remote) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{12, 1} +} + +// DEPRECATED: This message is deprecated and has been removed from use as of gloo 1.20. Message is being kept to prevent future use of these names and fields +type Executor_Local_LocalExecutorOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Executor_Local_LocalExecutorOptions) Reset() { + *x = Executor_Local_LocalExecutorOptions{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Executor_Local_LocalExecutorOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Executor_Local_LocalExecutorOptions) ProtoMessage() {} + +func (x *Executor_Local_LocalExecutorOptions) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Executor_Local_LocalExecutorOptions.ProtoReflect.Descriptor instead. +func (*Executor_Local_LocalExecutorOptions) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP(), []int{12, 0, 0} +} + +var File_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDesc = string([]byte{ + 0x0a, 0x48, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x71, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x67, 0x72, 0x61, 0x70, + 0x68, 0x71, 0x6c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, + 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x6b, 0x69, 0x74, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x40, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, + 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x52, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x34, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, + 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, + 0x72, 0x6f, 0x6f, 0x74, 0x52, 0x07, 0x73, 0x65, 0x74, 0x74, 0x65, 0x72, 0x73, 0x22, 0x71, 0x0a, + 0x13, 0x47, 0x72, 0x70, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, + 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x15, 0x6f, 0x75, + 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6a, + 0x73, 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x10, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x22, 0x61, 0x0a, 0x0c, 0x52, 0x45, 0x53, 0x54, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, + 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, + 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x52, 0x0c, + 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x72, 0x65, 0x66, 0x52, 0x07, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, + 0x09, 0x73, 0x70, 0x61, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x22, 0x87, 0x01, 0x0a, 0x16, 0x47, 0x72, 0x70, 0x63, 0x44, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x1a, 0x22, + 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x65, 0x66, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, + 0x02, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x72, 0x65, + 0x66, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, + 0x08, 0x03, 0x10, 0x04, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x14, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x62, 0x69, 0x6e, 0x52, 0x0f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x66, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x61, 0x0a, + 0x0c, 0x47, 0x72, 0x70, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x4a, 0x04, 0x08, + 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, + 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x52, 0x0c, 0x75, 0x70, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x72, 0x65, 0x66, 0x52, 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x09, 0x73, 0x70, + 0x61, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x22, 0xab, 0x01, 0x0a, 0x0e, 0x53, 0x74, 0x69, 0x74, 0x63, 0x68, 0x65, 0x64, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x1a, 0x86, 0x01, 0x0a, 0x0f, 0x53, 0x75, 0x62, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x44, 0x0a, 0x0f, 0x54, 0x79, 0x70, 0x65, 0x4d, + 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, + 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x0d, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x52, 0x0a, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x4a, 0x04, 0x08, + 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x52, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x4a, 0x04, 0x08, 0x01, + 0x10, 0x02, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x22, 0x7d, + 0x0a, 0x0c, 0x4d, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x1a, 0x2c, + 0x0a, 0x0d, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4a, + 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x08, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x4a, 0x04, 0x08, 0x01, + 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x0d, + 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0e, 0x61, + 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0e, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5e, 0x0a, + 0x0a, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x04, 0x08, 0x01, 0x10, + 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, + 0x04, 0x10, 0x05, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, + 0x65, 0x72, 0x52, 0x0d, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, + 0x72, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x0d, + 0x6d, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x22, 0xfc, 0x01, + 0x0a, 0x0e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x41, 0x70, 0x69, 0x53, 0x70, 0x65, 0x63, + 0x1a, 0x2d, 0x0a, 0x11, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x41, 0x70, 0x69, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x12, 0x6c, 0x6f, 0x67, + 0x5f, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x4a, + 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, + 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, + 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x52, + 0x13, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x65, 0x73, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0b, + 0x73, 0x74, 0x61, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x1c, 0x70, 0x65, 0x72, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x52, + 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x52, 0x0f, 0x73, 0x74, 0x69, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2d, 0x0a, 0x19, + 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, + 0x0a, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x5b, 0x0a, 0x10, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4a, + 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, + 0x04, 0x52, 0x11, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x52, 0x18, + 0x67, 0x72, 0x70, 0x63, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, + 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x22, 0xe7, 0x01, 0x0a, 0x08, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x6f, 0x72, 0x1a, 0x6e, 0x0a, 0x05, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x1a, 0x27, + 0x0a, 0x14, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x09, 0x6d, 0x61, + 0x78, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, + 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x6c, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, + 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x50, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4a, + 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, + 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x0c, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x5f, 0x72, 0x65, 0x66, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x0c, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x09, 0x73, 0x70, + 0x61, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, + 0x02, 0x10, 0x03, 0x52, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x22, 0xe5, 0x03, 0x0a, 0x10, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x41, 0x70, + 0x69, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x42, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x72, + 0x61, 0x70, 0x68, 0x51, 0x4c, 0x41, 0x70, 0x69, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, + 0x73, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, + 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x64, 0x42, 0x79, 0x12, 0x72, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, + 0x4c, 0x41, 0x70, 0x69, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x13, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x6e, 0x0a, 0x18, 0x53, + 0x75, 0x62, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, + 0x71, 0x6c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x41, 0x70, 0x69, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x05, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, + 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, + 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x10, 0x02, 0x12, 0x0b, 0x0a, + 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x22, 0xe1, 0x01, 0x0a, 0x1c, 0x47, + 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x41, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x5c, 0x0a, 0x08, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, + 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x41, 0x70, 0x69, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, + 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, 0x63, 0x0a, 0x0d, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, + 0x61, 0x70, 0x68, 0x71, 0x6c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x41, 0x70, 0x69, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x98, + 0x01, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x0a, 0x31, 0x69, + 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x2e, 0x76, 0x32, + 0x42, 0x12, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x71, 0x6c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes = make([]protoimpl.MessageInfo, 25) +var file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_goTypes = []any{ + (GraphQLApiStatus_State)(0), // 0: graphql.gloo.solo.io.GraphQLApiStatus.State + (*RequestTemplate)(nil), // 1: graphql.gloo.solo.io.RequestTemplate + (*ResponseTemplate)(nil), // 2: graphql.gloo.solo.io.ResponseTemplate + (*GrpcRequestTemplate)(nil), // 3: graphql.gloo.solo.io.GrpcRequestTemplate + (*RESTResolver)(nil), // 4: graphql.gloo.solo.io.RESTResolver + (*GrpcDescriptorRegistry)(nil), // 5: graphql.gloo.solo.io.GrpcDescriptorRegistry + (*GrpcResolver)(nil), // 6: graphql.gloo.solo.io.GrpcResolver + (*StitchedSchema)(nil), // 7: graphql.gloo.solo.io.StitchedSchema + (*MockResolver)(nil), // 8: graphql.gloo.solo.io.MockResolver + (*Resolution)(nil), // 9: graphql.gloo.solo.io.Resolution + (*GraphQLApiSpec)(nil), // 10: graphql.gloo.solo.io.GraphQLApiSpec + (*PersistedQueryCacheConfig)(nil), // 11: graphql.gloo.solo.io.PersistedQueryCacheConfig + (*ExecutableSchema)(nil), // 12: graphql.gloo.solo.io.ExecutableSchema + (*Executor)(nil), // 13: graphql.gloo.solo.io.Executor + (*GraphQLApiStatus)(nil), // 14: graphql.gloo.solo.io.GraphQLApiStatus + (*GraphQLApiNamespacedStatuses)(nil), // 15: graphql.gloo.solo.io.GraphQLApiNamespacedStatuses + (*GrpcDescriptorRegistry_ProtoRefs)(nil), // 16: graphql.gloo.solo.io.GrpcDescriptorRegistry.ProtoRefs + (*StitchedSchema_SubschemaConfig)(nil), // 17: graphql.gloo.solo.io.StitchedSchema.SubschemaConfig + (*StitchedSchema_SubschemaConfig_TypeMergeConfig)(nil), // 18: graphql.gloo.solo.io.StitchedSchema.SubschemaConfig.TypeMergeConfig + (*MockResolver_AsyncResponse)(nil), // 19: graphql.gloo.solo.io.MockResolver.AsyncResponse + (*GraphQLApiSpec_GraphQLApiOptions)(nil), // 20: graphql.gloo.solo.io.GraphQLApiSpec.GraphQLApiOptions + (*Executor_Local)(nil), // 21: graphql.gloo.solo.io.Executor.Local + (*Executor_Remote)(nil), // 22: graphql.gloo.solo.io.Executor.Remote + (*Executor_Local_LocalExecutorOptions)(nil), // 23: graphql.gloo.solo.io.Executor.Local.LocalExecutorOptions + nil, // 24: graphql.gloo.solo.io.GraphQLApiStatus.SubresourceStatusesEntry + nil, // 25: graphql.gloo.solo.io.GraphQLApiNamespacedStatuses.StatusesEntry + (*structpb.Struct)(nil), // 26: google.protobuf.Struct +} +var file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_depIdxs = []int32{ + 0, // 0: graphql.gloo.solo.io.GraphQLApiStatus.state:type_name -> graphql.gloo.solo.io.GraphQLApiStatus.State + 24, // 1: graphql.gloo.solo.io.GraphQLApiStatus.subresource_statuses:type_name -> graphql.gloo.solo.io.GraphQLApiStatus.SubresourceStatusesEntry + 26, // 2: graphql.gloo.solo.io.GraphQLApiStatus.details:type_name -> google.protobuf.Struct + 25, // 3: graphql.gloo.solo.io.GraphQLApiNamespacedStatuses.statuses:type_name -> graphql.gloo.solo.io.GraphQLApiNamespacedStatuses.StatusesEntry + 14, // 4: graphql.gloo.solo.io.GraphQLApiStatus.SubresourceStatusesEntry.value:type_name -> graphql.gloo.solo.io.GraphQLApiStatus + 14, // 5: graphql.gloo.solo.io.GraphQLApiNamespacedStatuses.StatusesEntry.value:type_name -> graphql.gloo.solo.io.GraphQLApiStatus + 6, // [6:6] is the sub-list for method output_type + 6, // [6:6] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name +} + +func init() { file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_init() } +func file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_rawDesc)), + NumEnums: 1, + NumMessages: 25, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_enumTypes, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_graphql_gloo_v1beta1_graphql_proto_depIdxs = nil +} diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/graphql.pb.hash.go b/pkg/api/graphql.gloo.solo.io/v1beta1/graphql.pb.hash.go new file mode 100644 index 000000000..6dc7ad911 --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/graphql.pb.hash.go @@ -0,0 +1,597 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/graphql.gloo/v1beta1/graphql.proto + +package v1beta1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RequestTemplate) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.RequestTemplate")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ResponseTemplate) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.ResponseTemplate")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *GrpcRequestTemplate) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.GrpcRequestTemplate")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RESTResolver) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.RESTResolver")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *GrpcDescriptorRegistry) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.GrpcDescriptorRegistry")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *GrpcResolver) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.GrpcResolver")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *StitchedSchema) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.StitchedSchema")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *MockResolver) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.MockResolver")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Resolution) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.Resolution")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *GraphQLApiSpec) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.GraphQLApiSpec")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *PersistedQueryCacheConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.PersistedQueryCacheConfig")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *ExecutableSchema) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.ExecutableSchema")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Executor) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.Executor")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *GraphQLApiStatus) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.GraphQLApiStatus")); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *GraphQLApiNamespacedStatuses) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.GraphQLApiNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *GrpcDescriptorRegistry_ProtoRefs) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.GrpcDescriptorRegistry_ProtoRefs")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *StitchedSchema_SubschemaConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.StitchedSchema_SubschemaConfig")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *StitchedSchema_SubschemaConfig_TypeMergeConfig) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.StitchedSchema_SubschemaConfig_TypeMergeConfig")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *MockResolver_AsyncResponse) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.MockResolver_AsyncResponse")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *GraphQLApiSpec_GraphQLApiOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.GraphQLApiSpec_GraphQLApiOptions")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Executor_Local) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.Executor_Local")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Executor_Remote) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.Executor_Remote")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Executor_Local_LocalExecutorOptions) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.Executor_Local_LocalExecutorOptions")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/graphql.pb.uniquehash.go b/pkg/api/graphql.gloo.solo.io/v1beta1/graphql.pb.uniquehash.go new file mode 100644 index 000000000..8dc62c6be --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/graphql.pb.uniquehash.go @@ -0,0 +1,591 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo/graphql.gloo/v1beta1/graphql.proto + +package v1beta1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RequestTemplate) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.RequestTemplate")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ResponseTemplate) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.ResponseTemplate")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcRequestTemplate) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.GrpcRequestTemplate")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RESTResolver) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.RESTResolver")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcDescriptorRegistry) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.GrpcDescriptorRegistry")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcResolver) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.GrpcResolver")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *StitchedSchema) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.StitchedSchema")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MockResolver) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.MockResolver")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Resolution) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.Resolution")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GraphQLApiSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.GraphQLApiSpec")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *PersistedQueryCacheConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.PersistedQueryCacheConfig")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *ExecutableSchema) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.ExecutableSchema")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Executor) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.Executor")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GraphQLApiStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.GraphQLApiStatus")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("State")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Reason")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReason())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ReportedBy")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetReportedBy())); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetSubresourceStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + if h, ok := interface{}(m.GetDetails()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDetails(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Details")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GraphQLApiNamespacedStatuses) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.GraphQLApiNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GrpcDescriptorRegistry_ProtoRefs) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.GrpcDescriptorRegistry_ProtoRefs")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *StitchedSchema_SubschemaConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.StitchedSchema_SubschemaConfig")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *StitchedSchema_SubschemaConfig_TypeMergeConfig) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.StitchedSchema_SubschemaConfig_TypeMergeConfig")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MockResolver_AsyncResponse) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.MockResolver_AsyncResponse")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *GraphQLApiSpec_GraphQLApiOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.GraphQLApiSpec_GraphQLApiOptions")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Executor_Local) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.Executor_Local")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Executor_Remote) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.Executor_Remote")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Executor_Local_LocalExecutorOptions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("graphql.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1.Executor_Local_LocalExecutorOptions")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/mocks/clients.go b/pkg/api/graphql.gloo.solo.io/v1beta1/mocks/clients.go new file mode 100644 index 000000000..5b0cf9948 --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/mocks/clients.go @@ -0,0 +1,593 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./clients.go + +// Package mock_v1beta1 is a generated GoMock package. +package mock_v1beta1 + +import ( + context "context" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + v1beta1 "github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1" + client "sigs.k8s.io/controller-runtime/pkg/client" +) + +// MockMulticlusterClientset is a mock of MulticlusterClientset interface. +type MockMulticlusterClientset struct { + ctrl *gomock.Controller + recorder *MockMulticlusterClientsetMockRecorder +} + +// MockMulticlusterClientsetMockRecorder is the mock recorder for MockMulticlusterClientset. +type MockMulticlusterClientsetMockRecorder struct { + mock *MockMulticlusterClientset +} + +// NewMockMulticlusterClientset creates a new mock instance. +func NewMockMulticlusterClientset(ctrl *gomock.Controller) *MockMulticlusterClientset { + mock := &MockMulticlusterClientset{ctrl: ctrl} + mock.recorder = &MockMulticlusterClientsetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterClientset) EXPECT() *MockMulticlusterClientsetMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterClientset) Cluster(cluster string) (v1beta1.Clientset, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1beta1.Clientset) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterClientsetMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterClientset)(nil).Cluster), cluster) +} + +// MockClientset is a mock of Clientset interface. +type MockClientset struct { + ctrl *gomock.Controller + recorder *MockClientsetMockRecorder +} + +// MockClientsetMockRecorder is the mock recorder for MockClientset. +type MockClientsetMockRecorder struct { + mock *MockClientset +} + +// NewMockClientset creates a new mock instance. +func NewMockClientset(ctrl *gomock.Controller) *MockClientset { + mock := &MockClientset{ctrl: ctrl} + mock.recorder = &MockClientsetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockClientset) EXPECT() *MockClientsetMockRecorder { + return m.recorder +} + +// GraphQLApis mocks base method. +func (m *MockClientset) GraphQLApis() v1beta1.GraphQLApiClient { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GraphQLApis") + ret0, _ := ret[0].(v1beta1.GraphQLApiClient) + return ret0 +} + +// GraphQLApis indicates an expected call of GraphQLApis. +func (mr *MockClientsetMockRecorder) GraphQLApis() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GraphQLApis", reflect.TypeOf((*MockClientset)(nil).GraphQLApis)) +} + +// MockGraphQLApiReader is a mock of GraphQLApiReader interface. +type MockGraphQLApiReader struct { + ctrl *gomock.Controller + recorder *MockGraphQLApiReaderMockRecorder +} + +// MockGraphQLApiReaderMockRecorder is the mock recorder for MockGraphQLApiReader. +type MockGraphQLApiReaderMockRecorder struct { + mock *MockGraphQLApiReader +} + +// NewMockGraphQLApiReader creates a new mock instance. +func NewMockGraphQLApiReader(ctrl *gomock.Controller) *MockGraphQLApiReader { + mock := &MockGraphQLApiReader{ctrl: ctrl} + mock.recorder = &MockGraphQLApiReaderMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGraphQLApiReader) EXPECT() *MockGraphQLApiReaderMockRecorder { + return m.recorder +} + +// GetGraphQLApi mocks base method. +func (m *MockGraphQLApiReader) GetGraphQLApi(ctx context.Context, key client.ObjectKey) (*v1beta1.GraphQLApi, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetGraphQLApi", ctx, key) + ret0, _ := ret[0].(*v1beta1.GraphQLApi) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetGraphQLApi indicates an expected call of GetGraphQLApi. +func (mr *MockGraphQLApiReaderMockRecorder) GetGraphQLApi(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGraphQLApi", reflect.TypeOf((*MockGraphQLApiReader)(nil).GetGraphQLApi), ctx, key) +} + +// ListGraphQLApi mocks base method. +func (m *MockGraphQLApiReader) ListGraphQLApi(ctx context.Context, opts ...client.ListOption) (*v1beta1.GraphQLApiList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListGraphQLApi", varargs...) + ret0, _ := ret[0].(*v1beta1.GraphQLApiList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListGraphQLApi indicates an expected call of ListGraphQLApi. +func (mr *MockGraphQLApiReaderMockRecorder) ListGraphQLApi(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListGraphQLApi", reflect.TypeOf((*MockGraphQLApiReader)(nil).ListGraphQLApi), varargs...) +} + +// MockGraphQLApiWriter is a mock of GraphQLApiWriter interface. +type MockGraphQLApiWriter struct { + ctrl *gomock.Controller + recorder *MockGraphQLApiWriterMockRecorder +} + +// MockGraphQLApiWriterMockRecorder is the mock recorder for MockGraphQLApiWriter. +type MockGraphQLApiWriterMockRecorder struct { + mock *MockGraphQLApiWriter +} + +// NewMockGraphQLApiWriter creates a new mock instance. +func NewMockGraphQLApiWriter(ctrl *gomock.Controller) *MockGraphQLApiWriter { + mock := &MockGraphQLApiWriter{ctrl: ctrl} + mock.recorder = &MockGraphQLApiWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGraphQLApiWriter) EXPECT() *MockGraphQLApiWriterMockRecorder { + return m.recorder +} + +// CreateGraphQLApi mocks base method. +func (m *MockGraphQLApiWriter) CreateGraphQLApi(ctx context.Context, obj *v1beta1.GraphQLApi, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateGraphQLApi", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateGraphQLApi indicates an expected call of CreateGraphQLApi. +func (mr *MockGraphQLApiWriterMockRecorder) CreateGraphQLApi(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateGraphQLApi", reflect.TypeOf((*MockGraphQLApiWriter)(nil).CreateGraphQLApi), varargs...) +} + +// DeleteAllOfGraphQLApi mocks base method. +func (m *MockGraphQLApiWriter) DeleteAllOfGraphQLApi(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfGraphQLApi", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfGraphQLApi indicates an expected call of DeleteAllOfGraphQLApi. +func (mr *MockGraphQLApiWriterMockRecorder) DeleteAllOfGraphQLApi(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfGraphQLApi", reflect.TypeOf((*MockGraphQLApiWriter)(nil).DeleteAllOfGraphQLApi), varargs...) +} + +// DeleteGraphQLApi mocks base method. +func (m *MockGraphQLApiWriter) DeleteGraphQLApi(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteGraphQLApi", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteGraphQLApi indicates an expected call of DeleteGraphQLApi. +func (mr *MockGraphQLApiWriterMockRecorder) DeleteGraphQLApi(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteGraphQLApi", reflect.TypeOf((*MockGraphQLApiWriter)(nil).DeleteGraphQLApi), varargs...) +} + +// PatchGraphQLApi mocks base method. +func (m *MockGraphQLApiWriter) PatchGraphQLApi(ctx context.Context, obj *v1beta1.GraphQLApi, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchGraphQLApi", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchGraphQLApi indicates an expected call of PatchGraphQLApi. +func (mr *MockGraphQLApiWriterMockRecorder) PatchGraphQLApi(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchGraphQLApi", reflect.TypeOf((*MockGraphQLApiWriter)(nil).PatchGraphQLApi), varargs...) +} + +// UpdateGraphQLApi mocks base method. +func (m *MockGraphQLApiWriter) UpdateGraphQLApi(ctx context.Context, obj *v1beta1.GraphQLApi, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateGraphQLApi", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateGraphQLApi indicates an expected call of UpdateGraphQLApi. +func (mr *MockGraphQLApiWriterMockRecorder) UpdateGraphQLApi(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateGraphQLApi", reflect.TypeOf((*MockGraphQLApiWriter)(nil).UpdateGraphQLApi), varargs...) +} + +// UpsertGraphQLApi mocks base method. +func (m *MockGraphQLApiWriter) UpsertGraphQLApi(ctx context.Context, obj *v1beta1.GraphQLApi, transitionFuncs ...v1beta1.GraphQLApiTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertGraphQLApi", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertGraphQLApi indicates an expected call of UpsertGraphQLApi. +func (mr *MockGraphQLApiWriterMockRecorder) UpsertGraphQLApi(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertGraphQLApi", reflect.TypeOf((*MockGraphQLApiWriter)(nil).UpsertGraphQLApi), varargs...) +} + +// MockGraphQLApiStatusWriter is a mock of GraphQLApiStatusWriter interface. +type MockGraphQLApiStatusWriter struct { + ctrl *gomock.Controller + recorder *MockGraphQLApiStatusWriterMockRecorder +} + +// MockGraphQLApiStatusWriterMockRecorder is the mock recorder for MockGraphQLApiStatusWriter. +type MockGraphQLApiStatusWriterMockRecorder struct { + mock *MockGraphQLApiStatusWriter +} + +// NewMockGraphQLApiStatusWriter creates a new mock instance. +func NewMockGraphQLApiStatusWriter(ctrl *gomock.Controller) *MockGraphQLApiStatusWriter { + mock := &MockGraphQLApiStatusWriter{ctrl: ctrl} + mock.recorder = &MockGraphQLApiStatusWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGraphQLApiStatusWriter) EXPECT() *MockGraphQLApiStatusWriterMockRecorder { + return m.recorder +} + +// PatchGraphQLApiStatus mocks base method. +func (m *MockGraphQLApiStatusWriter) PatchGraphQLApiStatus(ctx context.Context, obj *v1beta1.GraphQLApi, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchGraphQLApiStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchGraphQLApiStatus indicates an expected call of PatchGraphQLApiStatus. +func (mr *MockGraphQLApiStatusWriterMockRecorder) PatchGraphQLApiStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchGraphQLApiStatus", reflect.TypeOf((*MockGraphQLApiStatusWriter)(nil).PatchGraphQLApiStatus), varargs...) +} + +// UpdateGraphQLApiStatus mocks base method. +func (m *MockGraphQLApiStatusWriter) UpdateGraphQLApiStatus(ctx context.Context, obj *v1beta1.GraphQLApi, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateGraphQLApiStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateGraphQLApiStatus indicates an expected call of UpdateGraphQLApiStatus. +func (mr *MockGraphQLApiStatusWriterMockRecorder) UpdateGraphQLApiStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateGraphQLApiStatus", reflect.TypeOf((*MockGraphQLApiStatusWriter)(nil).UpdateGraphQLApiStatus), varargs...) +} + +// MockGraphQLApiClient is a mock of GraphQLApiClient interface. +type MockGraphQLApiClient struct { + ctrl *gomock.Controller + recorder *MockGraphQLApiClientMockRecorder +} + +// MockGraphQLApiClientMockRecorder is the mock recorder for MockGraphQLApiClient. +type MockGraphQLApiClientMockRecorder struct { + mock *MockGraphQLApiClient +} + +// NewMockGraphQLApiClient creates a new mock instance. +func NewMockGraphQLApiClient(ctrl *gomock.Controller) *MockGraphQLApiClient { + mock := &MockGraphQLApiClient{ctrl: ctrl} + mock.recorder = &MockGraphQLApiClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGraphQLApiClient) EXPECT() *MockGraphQLApiClientMockRecorder { + return m.recorder +} + +// CreateGraphQLApi mocks base method. +func (m *MockGraphQLApiClient) CreateGraphQLApi(ctx context.Context, obj *v1beta1.GraphQLApi, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateGraphQLApi", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateGraphQLApi indicates an expected call of CreateGraphQLApi. +func (mr *MockGraphQLApiClientMockRecorder) CreateGraphQLApi(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateGraphQLApi", reflect.TypeOf((*MockGraphQLApiClient)(nil).CreateGraphQLApi), varargs...) +} + +// DeleteAllOfGraphQLApi mocks base method. +func (m *MockGraphQLApiClient) DeleteAllOfGraphQLApi(ctx context.Context, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOfGraphQLApi", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOfGraphQLApi indicates an expected call of DeleteAllOfGraphQLApi. +func (mr *MockGraphQLApiClientMockRecorder) DeleteAllOfGraphQLApi(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfGraphQLApi", reflect.TypeOf((*MockGraphQLApiClient)(nil).DeleteAllOfGraphQLApi), varargs...) +} + +// DeleteGraphQLApi mocks base method. +func (m *MockGraphQLApiClient) DeleteGraphQLApi(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, key} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteGraphQLApi", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteGraphQLApi indicates an expected call of DeleteGraphQLApi. +func (mr *MockGraphQLApiClientMockRecorder) DeleteGraphQLApi(ctx, key interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteGraphQLApi", reflect.TypeOf((*MockGraphQLApiClient)(nil).DeleteGraphQLApi), varargs...) +} + +// GetGraphQLApi mocks base method. +func (m *MockGraphQLApiClient) GetGraphQLApi(ctx context.Context, key client.ObjectKey) (*v1beta1.GraphQLApi, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetGraphQLApi", ctx, key) + ret0, _ := ret[0].(*v1beta1.GraphQLApi) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetGraphQLApi indicates an expected call of GetGraphQLApi. +func (mr *MockGraphQLApiClientMockRecorder) GetGraphQLApi(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGraphQLApi", reflect.TypeOf((*MockGraphQLApiClient)(nil).GetGraphQLApi), ctx, key) +} + +// ListGraphQLApi mocks base method. +func (m *MockGraphQLApiClient) ListGraphQLApi(ctx context.Context, opts ...client.ListOption) (*v1beta1.GraphQLApiList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListGraphQLApi", varargs...) + ret0, _ := ret[0].(*v1beta1.GraphQLApiList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListGraphQLApi indicates an expected call of ListGraphQLApi. +func (mr *MockGraphQLApiClientMockRecorder) ListGraphQLApi(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListGraphQLApi", reflect.TypeOf((*MockGraphQLApiClient)(nil).ListGraphQLApi), varargs...) +} + +// PatchGraphQLApi mocks base method. +func (m *MockGraphQLApiClient) PatchGraphQLApi(ctx context.Context, obj *v1beta1.GraphQLApi, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchGraphQLApi", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchGraphQLApi indicates an expected call of PatchGraphQLApi. +func (mr *MockGraphQLApiClientMockRecorder) PatchGraphQLApi(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchGraphQLApi", reflect.TypeOf((*MockGraphQLApiClient)(nil).PatchGraphQLApi), varargs...) +} + +// PatchGraphQLApiStatus mocks base method. +func (m *MockGraphQLApiClient) PatchGraphQLApiStatus(ctx context.Context, obj *v1beta1.GraphQLApi, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PatchGraphQLApiStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// PatchGraphQLApiStatus indicates an expected call of PatchGraphQLApiStatus. +func (mr *MockGraphQLApiClientMockRecorder) PatchGraphQLApiStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchGraphQLApiStatus", reflect.TypeOf((*MockGraphQLApiClient)(nil).PatchGraphQLApiStatus), varargs...) +} + +// UpdateGraphQLApi mocks base method. +func (m *MockGraphQLApiClient) UpdateGraphQLApi(ctx context.Context, obj *v1beta1.GraphQLApi, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateGraphQLApi", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateGraphQLApi indicates an expected call of UpdateGraphQLApi. +func (mr *MockGraphQLApiClientMockRecorder) UpdateGraphQLApi(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateGraphQLApi", reflect.TypeOf((*MockGraphQLApiClient)(nil).UpdateGraphQLApi), varargs...) +} + +// UpdateGraphQLApiStatus mocks base method. +func (m *MockGraphQLApiClient) UpdateGraphQLApiStatus(ctx context.Context, obj *v1beta1.GraphQLApi, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateGraphQLApiStatus", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateGraphQLApiStatus indicates an expected call of UpdateGraphQLApiStatus. +func (mr *MockGraphQLApiClientMockRecorder) UpdateGraphQLApiStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateGraphQLApiStatus", reflect.TypeOf((*MockGraphQLApiClient)(nil).UpdateGraphQLApiStatus), varargs...) +} + +// UpsertGraphQLApi mocks base method. +func (m *MockGraphQLApiClient) UpsertGraphQLApi(ctx context.Context, obj *v1beta1.GraphQLApi, transitionFuncs ...v1beta1.GraphQLApiTransitionFunction) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpsertGraphQLApi", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertGraphQLApi indicates an expected call of UpsertGraphQLApi. +func (mr *MockGraphQLApiClientMockRecorder) UpsertGraphQLApi(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertGraphQLApi", reflect.TypeOf((*MockGraphQLApiClient)(nil).UpsertGraphQLApi), varargs...) +} + +// MockMulticlusterGraphQLApiClient is a mock of MulticlusterGraphQLApiClient interface. +type MockMulticlusterGraphQLApiClient struct { + ctrl *gomock.Controller + recorder *MockMulticlusterGraphQLApiClientMockRecorder +} + +// MockMulticlusterGraphQLApiClientMockRecorder is the mock recorder for MockMulticlusterGraphQLApiClient. +type MockMulticlusterGraphQLApiClientMockRecorder struct { + mock *MockMulticlusterGraphQLApiClient +} + +// NewMockMulticlusterGraphQLApiClient creates a new mock instance. +func NewMockMulticlusterGraphQLApiClient(ctrl *gomock.Controller) *MockMulticlusterGraphQLApiClient { + mock := &MockMulticlusterGraphQLApiClient{ctrl: ctrl} + mock.recorder = &MockMulticlusterGraphQLApiClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMulticlusterGraphQLApiClient) EXPECT() *MockMulticlusterGraphQLApiClientMockRecorder { + return m.recorder +} + +// Cluster mocks base method. +func (m *MockMulticlusterGraphQLApiClient) Cluster(cluster string) (v1beta1.GraphQLApiClient, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Cluster", cluster) + ret0, _ := ret[0].(v1beta1.GraphQLApiClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Cluster indicates an expected call of Cluster. +func (mr *MockMulticlusterGraphQLApiClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterGraphQLApiClient)(nil).Cluster), cluster) +} diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/proto_deepcopy.go b/pkg/api/graphql.gloo.solo.io/v1beta1/proto_deepcopy.go new file mode 100644 index 000000000..e44fa671d --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/proto_deepcopy.go @@ -0,0 +1,32 @@ +// Code generated by skv2. DO NOT EDIT. + +// This file contains generated Deepcopy methods for proto-based Spec and Status fields + +package v1beta1 + +import ( + proto "github.com/golang/protobuf/proto" + "github.com/solo-io/protoc-gen-ext/pkg/clone" +) + +// DeepCopyInto for the GraphQLApi.Spec +func (in *GraphQLApiSpec) DeepCopyInto(out *GraphQLApiSpec) { + var p *GraphQLApiSpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*GraphQLApiSpec) + } else { + p = proto.Clone(in).(*GraphQLApiSpec) + } + *out = *p +} + +// DeepCopyInto for the GraphQLApi.Status +func (in *GraphQLApiStatus) DeepCopyInto(out *GraphQLApiStatus) { + var p *GraphQLApiStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*GraphQLApiStatus) + } else { + p = proto.Clone(in).(*GraphQLApiStatus) + } + *out = *p +} diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/providers/client_providers.go b/pkg/api/graphql.gloo.solo.io/v1beta1/providers/client_providers.go new file mode 100644 index 000000000..f138cd85e --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/providers/client_providers.go @@ -0,0 +1,46 @@ +// Code generated by skv2. DO NOT EDIT. + +package v1beta1 + +import ( + graphql_gloo_solo_io_v1beta1 "github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1" + + "k8s.io/client-go/rest" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +/* + The intention of these providers are to be used for Mocking. + They expose the Clients as interfaces, as well as factories to provide mocked versions + of the clients when they require building within a component. + + See package `github.com/solo-io/skv2/pkg/multicluster/register` for example +*/ + +// Provider for GraphQLApiClient from Clientset +func GraphQLApiClientFromClientsetProvider(clients graphql_gloo_solo_io_v1beta1.Clientset) graphql_gloo_solo_io_v1beta1.GraphQLApiClient { + return clients.GraphQLApis() +} + +// Provider for GraphQLApi Client from Client +func GraphQLApiClientProvider(client client.Client) graphql_gloo_solo_io_v1beta1.GraphQLApiClient { + return graphql_gloo_solo_io_v1beta1.NewGraphQLApiClient(client) +} + +type GraphQLApiClientFactory func(client client.Client) graphql_gloo_solo_io_v1beta1.GraphQLApiClient + +func GraphQLApiClientFactoryProvider() GraphQLApiClientFactory { + return GraphQLApiClientProvider +} + +type GraphQLApiClientFromConfigFactory func(cfg *rest.Config) (graphql_gloo_solo_io_v1beta1.GraphQLApiClient, error) + +func GraphQLApiClientFromConfigFactoryProvider() GraphQLApiClientFromConfigFactory { + return func(cfg *rest.Config) (graphql_gloo_solo_io_v1beta1.GraphQLApiClient, error) { + clients, err := graphql_gloo_solo_io_v1beta1.NewClientsetFromConfig(cfg) + if err != nil { + return nil, err + } + return clients.GraphQLApis(), nil + } +} diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/register.go b/pkg/api/graphql.gloo.solo.io/v1beta1/register.go new file mode 100644 index 000000000..a1632f639 --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/register.go @@ -0,0 +1,33 @@ +// Code generated by skv2. DO NOT EDIT. + +// NOTE: Boilerplate only. Ignore this file. +// Used to register the Go types with the Kubernetes +// internal scheme +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// AddToSchemes may be used to add all resources defined in the project to a Scheme + +// AddToScheme adds all Resources to the Scheme + +var ( + // SchemeGroupVersion is group version used to register these objects + SchemeGroupVersion = schema.GroupVersion{Group: "graphql.gloo.solo.io", Version: "v1beta1"} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion} +) + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +func AddToScheme(s *runtime.Scheme) error { + return SchemeBuilder.AddToScheme(s) +} diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/sets/mocks/sets.go b/pkg/api/graphql.gloo.solo.io/v1beta1/sets/mocks/sets.go new file mode 100644 index 000000000..2aa0ccf6a --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/sets/mocks/sets.go @@ -0,0 +1,272 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./sets.go + +// Package mock_v1beta1sets is a generated GoMock package. +package mock_v1beta1sets + +import ( + reflect "reflect" + + gomock "github.com/golang/mock/gomock" + sets "github.com/solo-io/skv2/contrib/pkg/sets" + ezkube "github.com/solo-io/skv2/pkg/ezkube" + v1beta1 "github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1" + v1beta1sets "github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1/sets" + sets0 "k8s.io/apimachinery/pkg/util/sets" +) + +// MockGraphQLApiSet is a mock of GraphQLApiSet interface. +type MockGraphQLApiSet struct { + ctrl *gomock.Controller + recorder *MockGraphQLApiSetMockRecorder +} + +// MockGraphQLApiSetMockRecorder is the mock recorder for MockGraphQLApiSet. +type MockGraphQLApiSetMockRecorder struct { + mock *MockGraphQLApiSet +} + +// NewMockGraphQLApiSet creates a new mock instance. +func NewMockGraphQLApiSet(ctrl *gomock.Controller) *MockGraphQLApiSet { + mock := &MockGraphQLApiSet{ctrl: ctrl} + mock.recorder = &MockGraphQLApiSetMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGraphQLApiSet) EXPECT() *MockGraphQLApiSetMockRecorder { + return m.recorder +} + +// Clone mocks base method. +func (m *MockGraphQLApiSet) Clone() v1beta1sets.GraphQLApiSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1beta1sets.GraphQLApiSet) + return ret0 +} + +// Clone indicates an expected call of Clone. +func (mr *MockGraphQLApiSetMockRecorder) Clone() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockGraphQLApiSet)(nil).Clone)) +} + +// Delete mocks base method. +func (m *MockGraphQLApiSet) Delete(graphQlapi ezkube.ResourceId) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Delete", graphQlapi) +} + +// Delete indicates an expected call of Delete. +func (mr *MockGraphQLApiSetMockRecorder) Delete(graphQlapi interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockGraphQLApiSet)(nil).Delete), graphQlapi) +} + +// Delta mocks base method. +func (m *MockGraphQLApiSet) Delta(newSet v1beta1sets.GraphQLApiSet) sets.ResourceDelta { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) + return ret0 +} + +// Delta indicates an expected call of Delta. +func (mr *MockGraphQLApiSetMockRecorder) Delta(newSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockGraphQLApiSet)(nil).Delta), newSet) +} + +// Difference mocks base method. +func (m *MockGraphQLApiSet) Difference(set v1beta1sets.GraphQLApiSet) v1beta1sets.GraphQLApiSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1beta1sets.GraphQLApiSet) + return ret0 +} + +// Difference indicates an expected call of Difference. +func (mr *MockGraphQLApiSetMockRecorder) Difference(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockGraphQLApiSet)(nil).Difference), set) +} + +// Equal mocks base method. +func (m *MockGraphQLApiSet) Equal(graphQlapiSet v1beta1sets.GraphQLApiSet) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Equal", graphQlapiSet) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Equal indicates an expected call of Equal. +func (mr *MockGraphQLApiSetMockRecorder) Equal(graphQlapiSet interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockGraphQLApiSet)(nil).Equal), graphQlapiSet) +} + +// Find mocks base method. +func (m *MockGraphQLApiSet) Find(id ezkube.ResourceId) (*v1beta1.GraphQLApi, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1beta1.GraphQLApi) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Find indicates an expected call of Find. +func (mr *MockGraphQLApiSetMockRecorder) Find(id interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockGraphQLApiSet)(nil).Find), id) +} + +// Generic mocks base method. +func (m *MockGraphQLApiSet) Generic() sets.ResourceSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 +} + +// Generic indicates an expected call of Generic. +func (mr *MockGraphQLApiSetMockRecorder) Generic() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockGraphQLApiSet)(nil).Generic)) +} + +// Has mocks base method. +func (m *MockGraphQLApiSet) Has(graphQlapi ezkube.ResourceId) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Has", graphQlapi) + ret0, _ := ret[0].(bool) + return ret0 +} + +// Has indicates an expected call of Has. +func (mr *MockGraphQLApiSetMockRecorder) Has(graphQlapi interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockGraphQLApiSet)(nil).Has), graphQlapi) +} + +// Insert mocks base method. +func (m *MockGraphQLApiSet) Insert(graphQlapi ...*v1beta1.GraphQLApi) { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range graphQlapi { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) +} + +// Insert indicates an expected call of Insert. +func (mr *MockGraphQLApiSetMockRecorder) Insert(graphQlapi ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockGraphQLApiSet)(nil).Insert), graphQlapi...) +} + +// Intersection mocks base method. +func (m *MockGraphQLApiSet) Intersection(set v1beta1sets.GraphQLApiSet) v1beta1sets.GraphQLApiSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Intersection", set) + ret0, _ := ret[0].(v1beta1sets.GraphQLApiSet) + return ret0 +} + +// Intersection indicates an expected call of Intersection. +func (mr *MockGraphQLApiSetMockRecorder) Intersection(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockGraphQLApiSet)(nil).Intersection), set) +} + +// Keys mocks base method. +func (m *MockGraphQLApiSet) Keys() sets0.String { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 +} + +// Keys indicates an expected call of Keys. +func (mr *MockGraphQLApiSetMockRecorder) Keys() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockGraphQLApiSet)(nil).Keys)) +} + +// Length mocks base method. +func (m *MockGraphQLApiSet) Length() int { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Length") + ret0, _ := ret[0].(int) + return ret0 +} + +// Length indicates an expected call of Length. +func (mr *MockGraphQLApiSetMockRecorder) Length() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockGraphQLApiSet)(nil).Length)) +} + +// List mocks base method. +func (m *MockGraphQLApiSet) List(filterResource ...func(*v1beta1.GraphQLApi) bool) []*v1beta1.GraphQLApi { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1beta1.GraphQLApi) + return ret0 +} + +// List indicates an expected call of List. +func (mr *MockGraphQLApiSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockGraphQLApiSet)(nil).List), filterResource...) +} + +// Map mocks base method. +func (m *MockGraphQLApiSet) Map() map[string]*v1beta1.GraphQLApi { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1beta1.GraphQLApi) + return ret0 +} + +// Map indicates an expected call of Map. +func (mr *MockGraphQLApiSetMockRecorder) Map() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockGraphQLApiSet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockGraphQLApiSet) Union(set v1beta1sets.GraphQLApiSet) v1beta1sets.GraphQLApiSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1beta1sets.GraphQLApiSet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockGraphQLApiSetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockGraphQLApiSet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockGraphQLApiSet) UnsortedList(filterResource ...func(*v1beta1.GraphQLApi) bool) []*v1beta1.GraphQLApi { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1beta1.GraphQLApi) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockGraphQLApiSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockGraphQLApiSet)(nil).UnsortedList), filterResource...) +} diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/sets/sets.go b/pkg/api/graphql.gloo.solo.io/v1beta1/sets/sets.go new file mode 100644 index 000000000..e826f36b2 --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/sets/sets.go @@ -0,0 +1,237 @@ +// Code generated by skv2. DO NOT EDIT. + +//go:generate mockgen -source ./sets.go -destination mocks/sets.go + +package v1beta1sets + +import ( + graphql_gloo_solo_io_v1beta1 "github.com/solo-io/solo-apis/pkg/api/graphql.gloo.solo.io/v1beta1" + + "github.com/rotisserie/eris" + sksets "github.com/solo-io/skv2/contrib/pkg/sets" + "github.com/solo-io/skv2/pkg/ezkube" + "k8s.io/apimachinery/pkg/util/sets" +) + +type GraphQLApiSet interface { + // Get the set stored keys + Keys() sets.String + // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + List(filterResource ...func(*graphql_gloo_solo_io_v1beta1.GraphQLApi) bool) []*graphql_gloo_solo_io_v1beta1.GraphQLApi + // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. + UnsortedList(filterResource ...func(*graphql_gloo_solo_io_v1beta1.GraphQLApi) bool) []*graphql_gloo_solo_io_v1beta1.GraphQLApi + // Return the Set as a map of key to resource. + Map() map[string]*graphql_gloo_solo_io_v1beta1.GraphQLApi + // Insert a resource into the set. + Insert(graphQlapi ...*graphql_gloo_solo_io_v1beta1.GraphQLApi) + // Compare the equality of the keys in two sets (not the resources themselves) + Equal(graphQlapiSet GraphQLApiSet) bool + // Check if the set contains a key matching the resource (not the resource itself) + Has(graphQlapi ezkube.ResourceId) bool + // Delete the key matching the resource + Delete(graphQlapi ezkube.ResourceId) + // Return the union with the provided set + Union(set GraphQLApiSet) GraphQLApiSet + // Return the difference with the provided set + Difference(set GraphQLApiSet) GraphQLApiSet + // Return the intersection with the provided set + Intersection(set GraphQLApiSet) GraphQLApiSet + // Find the resource with the given ID + Find(id ezkube.ResourceId) (*graphql_gloo_solo_io_v1beta1.GraphQLApi, error) + // Get the length of the set + Length() int + // returns the generic implementation of the set + Generic() sksets.ResourceSet + // returns the delta between this and and another GraphQLApiSet + Delta(newSet GraphQLApiSet) sksets.ResourceDelta + // Create a deep copy of the current GraphQLApiSet + Clone() GraphQLApiSet +} + +func makeGenericGraphQLApiSet(graphQlapiList []*graphql_gloo_solo_io_v1beta1.GraphQLApi) sksets.ResourceSet { + var genericResources []ezkube.ResourceId + for _, obj := range graphQlapiList { + genericResources = append(genericResources, obj) + } + return sksets.NewResourceSet(genericResources...) +} + +type graphQlapiSet struct { + set sksets.ResourceSet +} + +func NewGraphQLApiSet(graphQlapiList ...*graphql_gloo_solo_io_v1beta1.GraphQLApi) GraphQLApiSet { + return &graphQlapiSet{set: makeGenericGraphQLApiSet(graphQlapiList)} +} + +func NewGraphQLApiSetFromList(graphQlapiList *graphql_gloo_solo_io_v1beta1.GraphQLApiList) GraphQLApiSet { + list := make([]*graphql_gloo_solo_io_v1beta1.GraphQLApi, 0, len(graphQlapiList.Items)) + for idx := range graphQlapiList.Items { + list = append(list, &graphQlapiList.Items[idx]) + } + return &graphQlapiSet{set: makeGenericGraphQLApiSet(list)} +} + +func (s *graphQlapiSet) Keys() sets.String { + if s == nil { + return sets.String{} + } + return s.Generic().Keys() +} + +func (s *graphQlapiSet) List(filterResource ...func(*graphql_gloo_solo_io_v1beta1.GraphQLApi) bool) []*graphql_gloo_solo_io_v1beta1.GraphQLApi { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*graphql_gloo_solo_io_v1beta1.GraphQLApi)) + }) + } + + objs := s.Generic().List(genericFilters...) + graphQlapiList := make([]*graphql_gloo_solo_io_v1beta1.GraphQLApi, 0, len(objs)) + for _, obj := range objs { + graphQlapiList = append(graphQlapiList, obj.(*graphql_gloo_solo_io_v1beta1.GraphQLApi)) + } + return graphQlapiList +} + +func (s *graphQlapiSet) UnsortedList(filterResource ...func(*graphql_gloo_solo_io_v1beta1.GraphQLApi) bool) []*graphql_gloo_solo_io_v1beta1.GraphQLApi { + if s == nil { + return nil + } + var genericFilters []func(ezkube.ResourceId) bool + for _, filter := range filterResource { + filter := filter + genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { + return filter(obj.(*graphql_gloo_solo_io_v1beta1.GraphQLApi)) + }) + } + + var graphQlapiList []*graphql_gloo_solo_io_v1beta1.GraphQLApi + for _, obj := range s.Generic().UnsortedList(genericFilters...) { + graphQlapiList = append(graphQlapiList, obj.(*graphql_gloo_solo_io_v1beta1.GraphQLApi)) + } + return graphQlapiList +} + +func (s *graphQlapiSet) Map() map[string]*graphql_gloo_solo_io_v1beta1.GraphQLApi { + if s == nil { + return nil + } + + newMap := map[string]*graphql_gloo_solo_io_v1beta1.GraphQLApi{} + for k, v := range s.Generic().Map() { + newMap[k] = v.(*graphql_gloo_solo_io_v1beta1.GraphQLApi) + } + return newMap +} + +func (s *graphQlapiSet) Insert( + graphQlapiList ...*graphql_gloo_solo_io_v1beta1.GraphQLApi, +) { + if s == nil { + panic("cannot insert into nil set") + } + + for _, obj := range graphQlapiList { + s.Generic().Insert(obj) + } +} + +func (s *graphQlapiSet) Has(graphQlapi ezkube.ResourceId) bool { + if s == nil { + return false + } + return s.Generic().Has(graphQlapi) +} + +func (s *graphQlapiSet) Equal( + graphQlapiSet GraphQLApiSet, +) bool { + if s == nil { + return graphQlapiSet == nil + } + return s.Generic().Equal(graphQlapiSet.Generic()) +} + +func (s *graphQlapiSet) Delete(GraphQLApi ezkube.ResourceId) { + if s == nil { + return + } + s.Generic().Delete(GraphQLApi) +} + +func (s *graphQlapiSet) Union(set GraphQLApiSet) GraphQLApiSet { + if s == nil { + return set + } + return NewGraphQLApiSet(append(s.List(), set.List()...)...) +} + +func (s *graphQlapiSet) Difference(set GraphQLApiSet) GraphQLApiSet { + if s == nil { + return set + } + newSet := s.Generic().Difference(set.Generic()) + return &graphQlapiSet{set: newSet} +} + +func (s *graphQlapiSet) Intersection(set GraphQLApiSet) GraphQLApiSet { + if s == nil { + return nil + } + newSet := s.Generic().Intersection(set.Generic()) + var graphQlapiList []*graphql_gloo_solo_io_v1beta1.GraphQLApi + for _, obj := range newSet.List() { + graphQlapiList = append(graphQlapiList, obj.(*graphql_gloo_solo_io_v1beta1.GraphQLApi)) + } + return NewGraphQLApiSet(graphQlapiList...) +} + +func (s *graphQlapiSet) Find(id ezkube.ResourceId) (*graphql_gloo_solo_io_v1beta1.GraphQLApi, error) { + if s == nil { + return nil, eris.Errorf("empty set, cannot find GraphQLApi %v", sksets.Key(id)) + } + obj, err := s.Generic().Find(&graphql_gloo_solo_io_v1beta1.GraphQLApi{}, id) + if err != nil { + return nil, err + } + + return obj.(*graphql_gloo_solo_io_v1beta1.GraphQLApi), nil +} + +func (s *graphQlapiSet) Length() int { + if s == nil { + return 0 + } + return s.Generic().Length() +} + +func (s *graphQlapiSet) Generic() sksets.ResourceSet { + if s == nil { + return nil + } + return s.set +} + +func (s *graphQlapiSet) Delta(newSet GraphQLApiSet) sksets.ResourceDelta { + if s == nil { + return sksets.ResourceDelta{ + Inserted: newSet.Generic(), + } + } + return s.Generic().Delta(newSet.Generic()) +} + +func (s *graphQlapiSet) Clone() GraphQLApiSet { + if s == nil { + return nil + } + return &graphQlapiSet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/stitching_info.pb.go b/pkg/api/graphql.gloo.solo.io/v1beta1/stitching_info.pb.go new file mode 100644 index 000000000..62f165386 --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/stitching_info.pb.go @@ -0,0 +1,515 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo/gloo/v1/enterprise/options/graphql/v1beta1/stitching_info.proto + +package v1beta1 + +import ( + reflect "reflect" + sync "sync" + + v2 "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/graphql/v2" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// ------------- Graphql Tools JS Input ------------- +// This is not user-facing and is only used to pass to the graphql-tools js script +// This is the message which the graphql-tools js script will consume +type GraphQLToolsStitchingInput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Subschemas []*GraphQLToolsStitchingInput_Schema `protobuf:"bytes,1,rep,name=subschemas,proto3" json:"subschemas,omitempty"` +} + +func (x *GraphQLToolsStitchingInput) Reset() { + *x = GraphQLToolsStitchingInput{} + if protoimpl.UnsafeEnabled { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GraphQLToolsStitchingInput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GraphQLToolsStitchingInput) ProtoMessage() {} + +func (x *GraphQLToolsStitchingInput) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GraphQLToolsStitchingInput.ProtoReflect.Descriptor instead. +func (*GraphQLToolsStitchingInput) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_rawDescGZIP(), []int{0} +} + +func (x *GraphQLToolsStitchingInput) GetSubschemas() []*GraphQLToolsStitchingInput_Schema { + if x != nil { + return x.Subschemas + } + return nil +} + +// ------------- Graphql Tools JS Out ------------------ +// This is not user-facing and is only used to pass data back from the graphql-tools js script +// The message that is the output of the graphql tools stitching info script +type GraphQlToolsStitchingOutput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FieldNodesByType map[string]*v2.FieldNodes `protobuf:"bytes,1,rep,name=field_nodes_by_type,json=fieldNodesByType,proto3" json:"field_nodes_by_type,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + FieldNodesByField map[string]*v2.FieldNodeMap `protobuf:"bytes,2,rep,name=field_nodes_by_field,json=fieldNodesByField,proto3" json:"field_nodes_by_field,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + MergedTypes map[string]*v2.MergedTypeConfig `protobuf:"bytes,3,rep,name=merged_types,json=mergedTypes,proto3" json:"merged_types,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + StitchedSchema string `protobuf:"bytes,4,opt,name=stitched_schema,json=stitchedSchema,proto3" json:"stitched_schema,omitempty"` +} + +func (x *GraphQlToolsStitchingOutput) Reset() { + *x = GraphQlToolsStitchingOutput{} + if protoimpl.UnsafeEnabled { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GraphQlToolsStitchingOutput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GraphQlToolsStitchingOutput) ProtoMessage() {} + +func (x *GraphQlToolsStitchingOutput) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GraphQlToolsStitchingOutput.ProtoReflect.Descriptor instead. +func (*GraphQlToolsStitchingOutput) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_rawDescGZIP(), []int{1} +} + +func (x *GraphQlToolsStitchingOutput) GetFieldNodesByType() map[string]*v2.FieldNodes { + if x != nil { + return x.FieldNodesByType + } + return nil +} + +func (x *GraphQlToolsStitchingOutput) GetFieldNodesByField() map[string]*v2.FieldNodeMap { + if x != nil { + return x.FieldNodesByField + } + return nil +} + +func (x *GraphQlToolsStitchingOutput) GetMergedTypes() map[string]*v2.MergedTypeConfig { + if x != nil { + return x.MergedTypes + } + return nil +} + +func (x *GraphQlToolsStitchingOutput) GetStitchedSchema() string { + if x != nil { + return x.StitchedSchema + } + return "" +} + +type GraphQLToolsStitchingInput_Schema struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // name of the subschema, arbitrary name but must be unique in a gateway schema. + // generally generated from the graphql schema ref + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // GraphQL schema SDL for the subschema + Schema string `protobuf:"bytes,2,opt,name=schema,proto3" json:"schema,omitempty"` + // Type merge config that the graphql-tools stitching script + // needs to generate stitching info for the data plane + TypeMergeConfig map[string]*GraphQLToolsStitchingInput_Schema_TypeMergeConfig `protobuf:"bytes,3,rep,name=type_merge_config,json=typeMergeConfig,proto3" json:"type_merge_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *GraphQLToolsStitchingInput_Schema) Reset() { + *x = GraphQLToolsStitchingInput_Schema{} + if protoimpl.UnsafeEnabled { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GraphQLToolsStitchingInput_Schema) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GraphQLToolsStitchingInput_Schema) ProtoMessage() {} + +func (x *GraphQLToolsStitchingInput_Schema) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GraphQLToolsStitchingInput_Schema.ProtoReflect.Descriptor instead. +func (*GraphQLToolsStitchingInput_Schema) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *GraphQLToolsStitchingInput_Schema) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GraphQLToolsStitchingInput_Schema) GetSchema() string { + if x != nil { + return x.Schema + } + return "" +} + +func (x *GraphQLToolsStitchingInput_Schema) GetTypeMergeConfig() map[string]*GraphQLToolsStitchingInput_Schema_TypeMergeConfig { + if x != nil { + return x.TypeMergeConfig + } + return nil +} + +type GraphQLToolsStitchingInput_Schema_TypeMergeConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SelectionSet string `protobuf:"bytes,1,opt,name=selection_set,json=selectionSet,proto3" json:"selection_set,omitempty"` + FieldName string `protobuf:"bytes,2,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` + Args map[string]string `protobuf:"bytes,3,rep,name=args,proto3" json:"args,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *GraphQLToolsStitchingInput_Schema_TypeMergeConfig) Reset() { + *x = GraphQLToolsStitchingInput_Schema_TypeMergeConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GraphQLToolsStitchingInput_Schema_TypeMergeConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GraphQLToolsStitchingInput_Schema_TypeMergeConfig) ProtoMessage() {} + +func (x *GraphQLToolsStitchingInput_Schema_TypeMergeConfig) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GraphQLToolsStitchingInput_Schema_TypeMergeConfig.ProtoReflect.Descriptor instead. +func (*GraphQLToolsStitchingInput_Schema_TypeMergeConfig) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_rawDescGZIP(), []int{0, 0, 0} +} + +func (x *GraphQLToolsStitchingInput_Schema_TypeMergeConfig) GetSelectionSet() string { + if x != nil { + return x.SelectionSet + } + return "" +} + +func (x *GraphQLToolsStitchingInput_Schema_TypeMergeConfig) GetFieldName() string { + if x != nil { + return x.FieldName + } + return "" +} + +func (x *GraphQLToolsStitchingInput_Schema_TypeMergeConfig) GetArgs() map[string]string { + if x != nil { + return x.Args + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_rawDesc = []byte{ + 0x0a, 0x65, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2f, 0x73, 0x74, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x66, + 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x5c, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, + 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x2f, 0x73, 0x74, 0x69, 0x74, + 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xac, 0x05, 0x0a, 0x1a, + 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x53, 0x74, 0x69, 0x74, + 0x63, 0x68, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x57, 0x0a, 0x0a, 0x73, 0x75, + 0x62, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, + 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x54, 0x6f, 0x6f, + 0x6c, 0x73, 0x53, 0x74, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x73, 0x1a, 0xb4, 0x04, 0x0a, 0x06, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x78, 0x0a, 0x11, 0x74, 0x79, + 0x70, 0x65, 0x5f, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x72, 0x61, + 0x70, 0x68, 0x51, 0x4c, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x53, 0x74, 0x69, 0x74, 0x63, 0x68, 0x69, + 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, + 0x79, 0x70, 0x65, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x0f, 0x74, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x1a, 0xf5, 0x01, 0x0a, 0x0f, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x72, + 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x12, 0x1d, 0x0a, + 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x65, 0x0a, 0x04, + 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x71, 0x6c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x53, 0x74, + 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x41, 0x72, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x61, + 0x72, 0x67, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x41, 0x72, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x8b, 0x01, 0x0a, + 0x14, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x5d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x72, + 0x61, 0x70, 0x68, 0x51, 0x4c, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x53, 0x74, 0x69, 0x74, 0x63, 0x68, + 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, + 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x83, 0x06, 0x0a, 0x1b, 0x47, + 0x72, 0x61, 0x70, 0x68, 0x51, 0x6c, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x53, 0x74, 0x69, 0x74, 0x63, + 0x68, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x76, 0x0a, 0x13, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, + 0x6c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, + 0x72, 0x61, 0x70, 0x68, 0x51, 0x6c, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x53, 0x74, 0x69, 0x74, 0x63, + 0x68, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x42, 0x79, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x42, 0x79, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x79, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, + 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x48, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x6c, 0x54, + 0x6f, 0x6f, 0x6c, 0x73, 0x53, 0x74, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x42, 0x79, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x42, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x65, 0x0a, + 0x0c, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x2e, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, + 0x51, 0x6c, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x53, 0x74, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x54, 0x79, 0x70, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x54, + 0x79, 0x70, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x74, 0x69, 0x74, 0x63, 0x68, 0x65, 0x64, + 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, + 0x74, 0x69, 0x74, 0x63, 0x68, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x1a, 0x73, 0x0a, + 0x15, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x42, 0x79, 0x54, 0x79, 0x70, + 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x44, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x2e, + 0x73, 0x74, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x76, 0x0a, 0x16, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, + 0x42, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x46, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x74, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x61, 0x70, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x74, 0x0a, 0x10, 0x4d, 0x65, + 0x72, 0x67, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x4a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x34, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, + 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x74, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x42, 0x43, 0x5a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_rawDescData = file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_rawDesc +) + +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_rawDescData) + }) + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_goTypes = []interface{}{ + (*GraphQLToolsStitchingInput)(nil), // 0: graphql.gloo.solo.io.GraphQLToolsStitchingInput + (*GraphQlToolsStitchingOutput)(nil), // 1: graphql.gloo.solo.io.GraphQlToolsStitchingOutput + (*GraphQLToolsStitchingInput_Schema)(nil), // 2: graphql.gloo.solo.io.GraphQLToolsStitchingInput.Schema + (*GraphQLToolsStitchingInput_Schema_TypeMergeConfig)(nil), // 3: graphql.gloo.solo.io.GraphQLToolsStitchingInput.Schema.TypeMergeConfig + nil, // 4: graphql.gloo.solo.io.GraphQLToolsStitchingInput.Schema.TypeMergeConfigEntry + nil, // 5: graphql.gloo.solo.io.GraphQLToolsStitchingInput.Schema.TypeMergeConfig.ArgsEntry + nil, // 6: graphql.gloo.solo.io.GraphQlToolsStitchingOutput.FieldNodesByTypeEntry + nil, // 7: graphql.gloo.solo.io.GraphQlToolsStitchingOutput.FieldNodesByFieldEntry + nil, // 8: graphql.gloo.solo.io.GraphQlToolsStitchingOutput.MergedTypesEntry + (*v2.FieldNodes)(nil), // 9: envoy.config.resolver.stitching.v2.FieldNodes + (*v2.FieldNodeMap)(nil), // 10: envoy.config.resolver.stitching.v2.FieldNodeMap + (*v2.MergedTypeConfig)(nil), // 11: envoy.config.resolver.stitching.v2.MergedTypeConfig +} +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_depIdxs = []int32{ + 2, // 0: graphql.gloo.solo.io.GraphQLToolsStitchingInput.subschemas:type_name -> graphql.gloo.solo.io.GraphQLToolsStitchingInput.Schema + 6, // 1: graphql.gloo.solo.io.GraphQlToolsStitchingOutput.field_nodes_by_type:type_name -> graphql.gloo.solo.io.GraphQlToolsStitchingOutput.FieldNodesByTypeEntry + 7, // 2: graphql.gloo.solo.io.GraphQlToolsStitchingOutput.field_nodes_by_field:type_name -> graphql.gloo.solo.io.GraphQlToolsStitchingOutput.FieldNodesByFieldEntry + 8, // 3: graphql.gloo.solo.io.GraphQlToolsStitchingOutput.merged_types:type_name -> graphql.gloo.solo.io.GraphQlToolsStitchingOutput.MergedTypesEntry + 4, // 4: graphql.gloo.solo.io.GraphQLToolsStitchingInput.Schema.type_merge_config:type_name -> graphql.gloo.solo.io.GraphQLToolsStitchingInput.Schema.TypeMergeConfigEntry + 5, // 5: graphql.gloo.solo.io.GraphQLToolsStitchingInput.Schema.TypeMergeConfig.args:type_name -> graphql.gloo.solo.io.GraphQLToolsStitchingInput.Schema.TypeMergeConfig.ArgsEntry + 3, // 6: graphql.gloo.solo.io.GraphQLToolsStitchingInput.Schema.TypeMergeConfigEntry.value:type_name -> graphql.gloo.solo.io.GraphQLToolsStitchingInput.Schema.TypeMergeConfig + 9, // 7: graphql.gloo.solo.io.GraphQlToolsStitchingOutput.FieldNodesByTypeEntry.value:type_name -> envoy.config.resolver.stitching.v2.FieldNodes + 10, // 8: graphql.gloo.solo.io.GraphQlToolsStitchingOutput.FieldNodesByFieldEntry.value:type_name -> envoy.config.resolver.stitching.v2.FieldNodeMap + 11, // 9: graphql.gloo.solo.io.GraphQlToolsStitchingOutput.MergedTypesEntry.value:type_name -> envoy.config.resolver.stitching.v2.MergedTypeConfig + 10, // [10:10] is the sub-list for method output_type + 10, // [10:10] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GraphQLToolsStitchingInput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GraphQlToolsStitchingOutput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GraphQLToolsStitchingInput_Schema); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GraphQLToolsStitchingInput_Schema_TypeMergeConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_rawDesc, + NumEnums: 0, + NumMessages: 9, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_depIdxs, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_rawDesc = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_enterprise_options_graphql_v1beta1_stitching_info_proto_depIdxs = nil +} diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/type_helpers.go b/pkg/api/graphql.gloo.solo.io/v1beta1/type_helpers.go new file mode 100644 index 000000000..39e6b5624 --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/type_helpers.go @@ -0,0 +1,7 @@ +// Code generated by skv2. DO NOT EDIT. + +// Definitions for the Kubernetes types +package v1beta1 + +// GraphQLApiSlice represents a slice of *GraphQLApi +type GraphQLApiSlice []*GraphQLApi diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/types.go b/pkg/api/graphql.gloo.solo.io/v1beta1/types.go new file mode 100644 index 000000000..45a85f37b --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/types.go @@ -0,0 +1,48 @@ +// Code generated by skv2. DO NOT EDIT. + +// Definitions for the Kubernetes types +package v1beta1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:openapi-gen=true +// +kubebuilder:subresource:status + +// GroupVersionKind for GraphQLApi +var GraphQLApiGVK = schema.GroupVersionKind{ + Group: "graphql.gloo.solo.io", + Version: "v1beta1", + Kind: "GraphQLApi", +} + +// GraphQLApi is the Schema for the graphQlapi API +type GraphQLApi struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec GraphQLApiSpec `json:"spec,omitempty"` + Status GraphQLApiStatus `json:"status,omitempty"` +} + +// GVK returns the GroupVersionKind associated with the resource type. +func (GraphQLApi) GVK() schema.GroupVersionKind { + return GraphQLApiGVK +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// GraphQLApiList contains a list of GraphQLApi +type GraphQLApiList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []GraphQLApi `json:"items"` +} + +func init() { + SchemeBuilder.Register(&GraphQLApi{}, &GraphQLApiList{}) +} diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/zz_generated.deepcopy.go b/pkg/api/graphql.gloo.solo.io/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 000000000..01e38b919 --- /dev/null +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,69 @@ +// Code generated by skv2. DO NOT EDIT. + +// This file contains generated Deepcopy methods for graphql.gloo.solo.io/v1beta1 resources + +package v1beta1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// Generated Deepcopy methods for GraphQLApi + +func (in *GraphQLApi) DeepCopyInto(out *GraphQLApi) { + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + + // deepcopy spec + in.Spec.DeepCopyInto(&out.Spec) + // deepcopy status + in.Status.DeepCopyInto(&out.Status) + + return +} + +func (in *GraphQLApi) DeepCopy() *GraphQLApi { + if in == nil { + return nil + } + out := new(GraphQLApi) + in.DeepCopyInto(out) + return out +} + +func (in *GraphQLApi) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +func (in *GraphQLApiList) DeepCopyInto(out *GraphQLApiList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]GraphQLApi, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +func (in *GraphQLApiList) DeepCopy() *GraphQLApiList { + if in == nil { + return nil + } + out := new(GraphQLApiList) + in.DeepCopyInto(out) + return out +} + +func (in *GraphQLApiList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} diff --git a/pkg/api/multicluster.solo.io/v1alpha1/clients.go b/pkg/api/multicluster.solo.io/v1alpha1/clients.go index f72684a2e..58fc2d235 100644 --- a/pkg/api/multicluster.solo.io/v1alpha1/clients.go +++ b/pkg/api/multicluster.solo.io/v1alpha1/clients.go @@ -49,7 +49,7 @@ type clientSet struct { func NewClientsetFromConfig(cfg *rest.Config) (Clientset, error) { scheme := scheme.Scheme - if err := AddToScheme(scheme); err != nil { + if err := SchemeBuilder.AddToScheme(scheme); err != nil { return nil, err } client, err := client.New(cfg, client.Options{ @@ -108,10 +108,10 @@ type MultiClusterRoleWriter interface { type MultiClusterRoleStatusWriter interface { // Update updates the fields corresponding to the status subresource for the // given MultiClusterRole object. - UpdateMultiClusterRoleStatus(ctx context.Context, obj *MultiClusterRole, opts ...client.UpdateOption) error + UpdateMultiClusterRoleStatus(ctx context.Context, obj *MultiClusterRole, opts ...client.SubResourceUpdateOption) error // Patch patches the given MultiClusterRole object's subresource. - PatchMultiClusterRoleStatus(ctx context.Context, obj *MultiClusterRole, patch client.Patch, opts ...client.PatchOption) error + PatchMultiClusterRoleStatus(ctx context.Context, obj *MultiClusterRole, patch client.Patch, opts ...client.SubResourcePatchOption) error } // Client knows how to perform CRUD operations on MultiClusterRoles. @@ -182,11 +182,11 @@ func (c *multiClusterRoleClient) UpsertMultiClusterRole(ctx context.Context, obj return err } -func (c *multiClusterRoleClient) UpdateMultiClusterRoleStatus(ctx context.Context, obj *MultiClusterRole, opts ...client.UpdateOption) error { +func (c *multiClusterRoleClient) UpdateMultiClusterRoleStatus(ctx context.Context, obj *MultiClusterRole, opts ...client.SubResourceUpdateOption) error { return c.client.Status().Update(ctx, obj, opts...) } -func (c *multiClusterRoleClient) PatchMultiClusterRoleStatus(ctx context.Context, obj *MultiClusterRole, patch client.Patch, opts ...client.PatchOption) error { +func (c *multiClusterRoleClient) PatchMultiClusterRoleStatus(ctx context.Context, obj *MultiClusterRole, patch client.Patch, opts ...client.SubResourcePatchOption) error { return c.client.Status().Patch(ctx, obj, patch, opts...) } diff --git a/pkg/api/multicluster.solo.io/v1alpha1/controller/mocks/event_handlers.go b/pkg/api/multicluster.solo.io/v1alpha1/controller/mocks/event_handlers.go index cad517217..8a6882832 100644 --- a/pkg/api/multicluster.solo.io/v1alpha1/controller/mocks/event_handlers.go +++ b/pkg/api/multicluster.solo.io/v1alpha1/controller/mocks/event_handlers.go @@ -14,30 +14,30 @@ import ( predicate "sigs.k8s.io/controller-runtime/pkg/predicate" ) -// MockMultiClusterRoleEventHandler is a mock of MultiClusterRoleEventHandler interface +// MockMultiClusterRoleEventHandler is a mock of MultiClusterRoleEventHandler interface. type MockMultiClusterRoleEventHandler struct { ctrl *gomock.Controller recorder *MockMultiClusterRoleEventHandlerMockRecorder } -// MockMultiClusterRoleEventHandlerMockRecorder is the mock recorder for MockMultiClusterRoleEventHandler +// MockMultiClusterRoleEventHandlerMockRecorder is the mock recorder for MockMultiClusterRoleEventHandler. type MockMultiClusterRoleEventHandlerMockRecorder struct { mock *MockMultiClusterRoleEventHandler } -// NewMockMultiClusterRoleEventHandler creates a new mock instance +// NewMockMultiClusterRoleEventHandler creates a new mock instance. func NewMockMultiClusterRoleEventHandler(ctrl *gomock.Controller) *MockMultiClusterRoleEventHandler { mock := &MockMultiClusterRoleEventHandler{ctrl: ctrl} mock.recorder = &MockMultiClusterRoleEventHandlerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMultiClusterRoleEventHandler) EXPECT() *MockMultiClusterRoleEventHandlerMockRecorder { return m.recorder } -// CreateMultiClusterRole mocks base method +// CreateMultiClusterRole mocks base method. func (m *MockMultiClusterRoleEventHandler) CreateMultiClusterRole(obj *v1alpha1.MultiClusterRole) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "CreateMultiClusterRole", obj) @@ -45,27 +45,13 @@ func (m *MockMultiClusterRoleEventHandler) CreateMultiClusterRole(obj *v1alpha1. return ret0 } -// CreateMultiClusterRole indicates an expected call of CreateMultiClusterRole +// CreateMultiClusterRole indicates an expected call of CreateMultiClusterRole. func (mr *MockMultiClusterRoleEventHandlerMockRecorder) CreateMultiClusterRole(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleEventHandler)(nil).CreateMultiClusterRole), obj) } -// UpdateMultiClusterRole mocks base method -func (m *MockMultiClusterRoleEventHandler) UpdateMultiClusterRole(old, new *v1alpha1.MultiClusterRole) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateMultiClusterRole", old, new) - ret0, _ := ret[0].(error) - return ret0 -} - -// UpdateMultiClusterRole indicates an expected call of UpdateMultiClusterRole -func (mr *MockMultiClusterRoleEventHandlerMockRecorder) UpdateMultiClusterRole(old, new interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleEventHandler)(nil).UpdateMultiClusterRole), old, new) -} - -// DeleteMultiClusterRole mocks base method +// DeleteMultiClusterRole mocks base method. func (m *MockMultiClusterRoleEventHandler) DeleteMultiClusterRole(obj *v1alpha1.MultiClusterRole) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "DeleteMultiClusterRole", obj) @@ -73,13 +59,13 @@ func (m *MockMultiClusterRoleEventHandler) DeleteMultiClusterRole(obj *v1alpha1. return ret0 } -// DeleteMultiClusterRole indicates an expected call of DeleteMultiClusterRole +// DeleteMultiClusterRole indicates an expected call of DeleteMultiClusterRole. func (mr *MockMultiClusterRoleEventHandlerMockRecorder) DeleteMultiClusterRole(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleEventHandler)(nil).DeleteMultiClusterRole), obj) } -// GenericMultiClusterRole mocks base method +// GenericMultiClusterRole mocks base method. func (m *MockMultiClusterRoleEventHandler) GenericMultiClusterRole(obj *v1alpha1.MultiClusterRole) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GenericMultiClusterRole", obj) @@ -87,36 +73,50 @@ func (m *MockMultiClusterRoleEventHandler) GenericMultiClusterRole(obj *v1alpha1 return ret0 } -// GenericMultiClusterRole indicates an expected call of GenericMultiClusterRole +// GenericMultiClusterRole indicates an expected call of GenericMultiClusterRole. func (mr *MockMultiClusterRoleEventHandlerMockRecorder) GenericMultiClusterRole(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleEventHandler)(nil).GenericMultiClusterRole), obj) } -// MockMultiClusterRoleEventWatcher is a mock of MultiClusterRoleEventWatcher interface +// UpdateMultiClusterRole mocks base method. +func (m *MockMultiClusterRoleEventHandler) UpdateMultiClusterRole(old, new *v1alpha1.MultiClusterRole) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateMultiClusterRole", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateMultiClusterRole indicates an expected call of UpdateMultiClusterRole. +func (mr *MockMultiClusterRoleEventHandlerMockRecorder) UpdateMultiClusterRole(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleEventHandler)(nil).UpdateMultiClusterRole), old, new) +} + +// MockMultiClusterRoleEventWatcher is a mock of MultiClusterRoleEventWatcher interface. type MockMultiClusterRoleEventWatcher struct { ctrl *gomock.Controller recorder *MockMultiClusterRoleEventWatcherMockRecorder } -// MockMultiClusterRoleEventWatcherMockRecorder is the mock recorder for MockMultiClusterRoleEventWatcher +// MockMultiClusterRoleEventWatcherMockRecorder is the mock recorder for MockMultiClusterRoleEventWatcher. type MockMultiClusterRoleEventWatcherMockRecorder struct { mock *MockMultiClusterRoleEventWatcher } -// NewMockMultiClusterRoleEventWatcher creates a new mock instance +// NewMockMultiClusterRoleEventWatcher creates a new mock instance. func NewMockMultiClusterRoleEventWatcher(ctrl *gomock.Controller) *MockMultiClusterRoleEventWatcher { mock := &MockMultiClusterRoleEventWatcher{ctrl: ctrl} mock.recorder = &MockMultiClusterRoleEventWatcherMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMultiClusterRoleEventWatcher) EXPECT() *MockMultiClusterRoleEventWatcherMockRecorder { return m.recorder } -// AddEventHandler mocks base method +// AddEventHandler mocks base method. func (m *MockMultiClusterRoleEventWatcher) AddEventHandler(ctx context.Context, h controller.MultiClusterRoleEventHandler, predicates ...predicate.Predicate) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, h} @@ -128,7 +128,7 @@ func (m *MockMultiClusterRoleEventWatcher) AddEventHandler(ctx context.Context, return ret0 } -// AddEventHandler indicates an expected call of AddEventHandler +// AddEventHandler indicates an expected call of AddEventHandler. func (mr *MockMultiClusterRoleEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, h}, predicates...) diff --git a/pkg/api/multicluster.solo.io/v1alpha1/controller/mocks/multicluster_reconcilers.go b/pkg/api/multicluster.solo.io/v1alpha1/controller/mocks/multicluster_reconcilers.go index 11eb4613f..bb4aefdde 100644 --- a/pkg/api/multicluster.solo.io/v1alpha1/controller/mocks/multicluster_reconcilers.go +++ b/pkg/api/multicluster.solo.io/v1alpha1/controller/mocks/multicluster_reconcilers.go @@ -15,30 +15,30 @@ import ( predicate "sigs.k8s.io/controller-runtime/pkg/predicate" ) -// MockMulticlusterMultiClusterRoleReconciler is a mock of MulticlusterMultiClusterRoleReconciler interface +// MockMulticlusterMultiClusterRoleReconciler is a mock of MulticlusterMultiClusterRoleReconciler interface. type MockMulticlusterMultiClusterRoleReconciler struct { ctrl *gomock.Controller recorder *MockMulticlusterMultiClusterRoleReconcilerMockRecorder } -// MockMulticlusterMultiClusterRoleReconcilerMockRecorder is the mock recorder for MockMulticlusterMultiClusterRoleReconciler +// MockMulticlusterMultiClusterRoleReconcilerMockRecorder is the mock recorder for MockMulticlusterMultiClusterRoleReconciler. type MockMulticlusterMultiClusterRoleReconcilerMockRecorder struct { mock *MockMulticlusterMultiClusterRoleReconciler } -// NewMockMulticlusterMultiClusterRoleReconciler creates a new mock instance +// NewMockMulticlusterMultiClusterRoleReconciler creates a new mock instance. func NewMockMulticlusterMultiClusterRoleReconciler(ctrl *gomock.Controller) *MockMulticlusterMultiClusterRoleReconciler { mock := &MockMulticlusterMultiClusterRoleReconciler{ctrl: ctrl} mock.recorder = &MockMulticlusterMultiClusterRoleReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterMultiClusterRoleReconciler) EXPECT() *MockMulticlusterMultiClusterRoleReconcilerMockRecorder { return m.recorder } -// ReconcileMultiClusterRole mocks base method +// ReconcileMultiClusterRole mocks base method. func (m *MockMulticlusterMultiClusterRoleReconciler) ReconcileMultiClusterRole(clusterName string, obj *v1alpha1.MultiClusterRole) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileMultiClusterRole", clusterName, obj) @@ -47,36 +47,36 @@ func (m *MockMulticlusterMultiClusterRoleReconciler) ReconcileMultiClusterRole(c return ret0, ret1 } -// ReconcileMultiClusterRole indicates an expected call of ReconcileMultiClusterRole +// ReconcileMultiClusterRole indicates an expected call of ReconcileMultiClusterRole. func (mr *MockMulticlusterMultiClusterRoleReconcilerMockRecorder) ReconcileMultiClusterRole(clusterName, obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileMultiClusterRole", reflect.TypeOf((*MockMulticlusterMultiClusterRoleReconciler)(nil).ReconcileMultiClusterRole), clusterName, obj) } -// MockMulticlusterMultiClusterRoleDeletionReconciler is a mock of MulticlusterMultiClusterRoleDeletionReconciler interface +// MockMulticlusterMultiClusterRoleDeletionReconciler is a mock of MulticlusterMultiClusterRoleDeletionReconciler interface. type MockMulticlusterMultiClusterRoleDeletionReconciler struct { ctrl *gomock.Controller recorder *MockMulticlusterMultiClusterRoleDeletionReconcilerMockRecorder } -// MockMulticlusterMultiClusterRoleDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterMultiClusterRoleDeletionReconciler +// MockMulticlusterMultiClusterRoleDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterMultiClusterRoleDeletionReconciler. type MockMulticlusterMultiClusterRoleDeletionReconcilerMockRecorder struct { mock *MockMulticlusterMultiClusterRoleDeletionReconciler } -// NewMockMulticlusterMultiClusterRoleDeletionReconciler creates a new mock instance +// NewMockMulticlusterMultiClusterRoleDeletionReconciler creates a new mock instance. func NewMockMulticlusterMultiClusterRoleDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterMultiClusterRoleDeletionReconciler { mock := &MockMulticlusterMultiClusterRoleDeletionReconciler{ctrl: ctrl} mock.recorder = &MockMulticlusterMultiClusterRoleDeletionReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterMultiClusterRoleDeletionReconciler) EXPECT() *MockMulticlusterMultiClusterRoleDeletionReconcilerMockRecorder { return m.recorder } -// ReconcileMultiClusterRoleDeletion mocks base method +// ReconcileMultiClusterRoleDeletion mocks base method. func (m *MockMulticlusterMultiClusterRoleDeletionReconciler) ReconcileMultiClusterRoleDeletion(clusterName string, req reconcile.Request) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileMultiClusterRoleDeletion", clusterName, req) @@ -84,36 +84,36 @@ func (m *MockMulticlusterMultiClusterRoleDeletionReconciler) ReconcileMultiClust return ret0 } -// ReconcileMultiClusterRoleDeletion indicates an expected call of ReconcileMultiClusterRoleDeletion +// ReconcileMultiClusterRoleDeletion indicates an expected call of ReconcileMultiClusterRoleDeletion. func (mr *MockMulticlusterMultiClusterRoleDeletionReconcilerMockRecorder) ReconcileMultiClusterRoleDeletion(clusterName, req interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileMultiClusterRoleDeletion", reflect.TypeOf((*MockMulticlusterMultiClusterRoleDeletionReconciler)(nil).ReconcileMultiClusterRoleDeletion), clusterName, req) } -// MockMulticlusterMultiClusterRoleReconcileLoop is a mock of MulticlusterMultiClusterRoleReconcileLoop interface +// MockMulticlusterMultiClusterRoleReconcileLoop is a mock of MulticlusterMultiClusterRoleReconcileLoop interface. type MockMulticlusterMultiClusterRoleReconcileLoop struct { ctrl *gomock.Controller recorder *MockMulticlusterMultiClusterRoleReconcileLoopMockRecorder } -// MockMulticlusterMultiClusterRoleReconcileLoopMockRecorder is the mock recorder for MockMulticlusterMultiClusterRoleReconcileLoop +// MockMulticlusterMultiClusterRoleReconcileLoopMockRecorder is the mock recorder for MockMulticlusterMultiClusterRoleReconcileLoop. type MockMulticlusterMultiClusterRoleReconcileLoopMockRecorder struct { mock *MockMulticlusterMultiClusterRoleReconcileLoop } -// NewMockMulticlusterMultiClusterRoleReconcileLoop creates a new mock instance +// NewMockMulticlusterMultiClusterRoleReconcileLoop creates a new mock instance. func NewMockMulticlusterMultiClusterRoleReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterMultiClusterRoleReconcileLoop { mock := &MockMulticlusterMultiClusterRoleReconcileLoop{ctrl: ctrl} mock.recorder = &MockMulticlusterMultiClusterRoleReconcileLoopMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterMultiClusterRoleReconcileLoop) EXPECT() *MockMulticlusterMultiClusterRoleReconcileLoopMockRecorder { return m.recorder } -// AddMulticlusterMultiClusterRoleReconciler mocks base method +// AddMulticlusterMultiClusterRoleReconciler mocks base method. func (m *MockMulticlusterMultiClusterRoleReconcileLoop) AddMulticlusterMultiClusterRoleReconciler(ctx context.Context, rec controller.MulticlusterMultiClusterRoleReconciler, predicates ...predicate.Predicate) { m.ctrl.T.Helper() varargs := []interface{}{ctx, rec} @@ -123,7 +123,7 @@ func (m *MockMulticlusterMultiClusterRoleReconcileLoop) AddMulticlusterMultiClus m.ctrl.Call(m, "AddMulticlusterMultiClusterRoleReconciler", varargs...) } -// AddMulticlusterMultiClusterRoleReconciler indicates an expected call of AddMulticlusterMultiClusterRoleReconciler +// AddMulticlusterMultiClusterRoleReconciler indicates an expected call of AddMulticlusterMultiClusterRoleReconciler. func (mr *MockMulticlusterMultiClusterRoleReconcileLoopMockRecorder) AddMulticlusterMultiClusterRoleReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, rec}, predicates...) diff --git a/pkg/api/multicluster.solo.io/v1alpha1/controller/mocks/reconcilers.go b/pkg/api/multicluster.solo.io/v1alpha1/controller/mocks/reconcilers.go index db5135c51..e91f9634d 100644 --- a/pkg/api/multicluster.solo.io/v1alpha1/controller/mocks/reconcilers.go +++ b/pkg/api/multicluster.solo.io/v1alpha1/controller/mocks/reconcilers.go @@ -15,30 +15,30 @@ import ( predicate "sigs.k8s.io/controller-runtime/pkg/predicate" ) -// MockMultiClusterRoleReconciler is a mock of MultiClusterRoleReconciler interface +// MockMultiClusterRoleReconciler is a mock of MultiClusterRoleReconciler interface. type MockMultiClusterRoleReconciler struct { ctrl *gomock.Controller recorder *MockMultiClusterRoleReconcilerMockRecorder } -// MockMultiClusterRoleReconcilerMockRecorder is the mock recorder for MockMultiClusterRoleReconciler +// MockMultiClusterRoleReconcilerMockRecorder is the mock recorder for MockMultiClusterRoleReconciler. type MockMultiClusterRoleReconcilerMockRecorder struct { mock *MockMultiClusterRoleReconciler } -// NewMockMultiClusterRoleReconciler creates a new mock instance +// NewMockMultiClusterRoleReconciler creates a new mock instance. func NewMockMultiClusterRoleReconciler(ctrl *gomock.Controller) *MockMultiClusterRoleReconciler { mock := &MockMultiClusterRoleReconciler{ctrl: ctrl} mock.recorder = &MockMultiClusterRoleReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMultiClusterRoleReconciler) EXPECT() *MockMultiClusterRoleReconcilerMockRecorder { return m.recorder } -// ReconcileMultiClusterRole mocks base method +// ReconcileMultiClusterRole mocks base method. func (m *MockMultiClusterRoleReconciler) ReconcileMultiClusterRole(obj *v1alpha1.MultiClusterRole) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileMultiClusterRole", obj) @@ -47,36 +47,36 @@ func (m *MockMultiClusterRoleReconciler) ReconcileMultiClusterRole(obj *v1alpha1 return ret0, ret1 } -// ReconcileMultiClusterRole indicates an expected call of ReconcileMultiClusterRole +// ReconcileMultiClusterRole indicates an expected call of ReconcileMultiClusterRole. func (mr *MockMultiClusterRoleReconcilerMockRecorder) ReconcileMultiClusterRole(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleReconciler)(nil).ReconcileMultiClusterRole), obj) } -// MockMultiClusterRoleDeletionReconciler is a mock of MultiClusterRoleDeletionReconciler interface +// MockMultiClusterRoleDeletionReconciler is a mock of MultiClusterRoleDeletionReconciler interface. type MockMultiClusterRoleDeletionReconciler struct { ctrl *gomock.Controller recorder *MockMultiClusterRoleDeletionReconcilerMockRecorder } -// MockMultiClusterRoleDeletionReconcilerMockRecorder is the mock recorder for MockMultiClusterRoleDeletionReconciler +// MockMultiClusterRoleDeletionReconcilerMockRecorder is the mock recorder for MockMultiClusterRoleDeletionReconciler. type MockMultiClusterRoleDeletionReconcilerMockRecorder struct { mock *MockMultiClusterRoleDeletionReconciler } -// NewMockMultiClusterRoleDeletionReconciler creates a new mock instance +// NewMockMultiClusterRoleDeletionReconciler creates a new mock instance. func NewMockMultiClusterRoleDeletionReconciler(ctrl *gomock.Controller) *MockMultiClusterRoleDeletionReconciler { mock := &MockMultiClusterRoleDeletionReconciler{ctrl: ctrl} mock.recorder = &MockMultiClusterRoleDeletionReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMultiClusterRoleDeletionReconciler) EXPECT() *MockMultiClusterRoleDeletionReconcilerMockRecorder { return m.recorder } -// ReconcileMultiClusterRoleDeletion mocks base method +// ReconcileMultiClusterRoleDeletion mocks base method. func (m *MockMultiClusterRoleDeletionReconciler) ReconcileMultiClusterRoleDeletion(req reconcile.Request) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileMultiClusterRoleDeletion", req) @@ -84,51 +84,50 @@ func (m *MockMultiClusterRoleDeletionReconciler) ReconcileMultiClusterRoleDeleti return ret0 } -// ReconcileMultiClusterRoleDeletion indicates an expected call of ReconcileMultiClusterRoleDeletion +// ReconcileMultiClusterRoleDeletion indicates an expected call of ReconcileMultiClusterRoleDeletion. func (mr *MockMultiClusterRoleDeletionReconcilerMockRecorder) ReconcileMultiClusterRoleDeletion(req interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileMultiClusterRoleDeletion", reflect.TypeOf((*MockMultiClusterRoleDeletionReconciler)(nil).ReconcileMultiClusterRoleDeletion), req) } -// MockMultiClusterRoleFinalizer is a mock of MultiClusterRoleFinalizer interface +// MockMultiClusterRoleFinalizer is a mock of MultiClusterRoleFinalizer interface. type MockMultiClusterRoleFinalizer struct { ctrl *gomock.Controller recorder *MockMultiClusterRoleFinalizerMockRecorder } -// MockMultiClusterRoleFinalizerMockRecorder is the mock recorder for MockMultiClusterRoleFinalizer +// MockMultiClusterRoleFinalizerMockRecorder is the mock recorder for MockMultiClusterRoleFinalizer. type MockMultiClusterRoleFinalizerMockRecorder struct { mock *MockMultiClusterRoleFinalizer } -// NewMockMultiClusterRoleFinalizer creates a new mock instance +// NewMockMultiClusterRoleFinalizer creates a new mock instance. func NewMockMultiClusterRoleFinalizer(ctrl *gomock.Controller) *MockMultiClusterRoleFinalizer { mock := &MockMultiClusterRoleFinalizer{ctrl: ctrl} mock.recorder = &MockMultiClusterRoleFinalizerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMultiClusterRoleFinalizer) EXPECT() *MockMultiClusterRoleFinalizerMockRecorder { return m.recorder } -// ReconcileMultiClusterRole mocks base method -func (m *MockMultiClusterRoleFinalizer) ReconcileMultiClusterRole(obj *v1alpha1.MultiClusterRole) (reconcile.Result, error) { +// FinalizeMultiClusterRole mocks base method. +func (m *MockMultiClusterRoleFinalizer) FinalizeMultiClusterRole(obj *v1alpha1.MultiClusterRole) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ReconcileMultiClusterRole", obj) - ret0, _ := ret[0].(reconcile.Result) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "FinalizeMultiClusterRole", obj) + ret0, _ := ret[0].(error) + return ret0 } -// ReconcileMultiClusterRole indicates an expected call of ReconcileMultiClusterRole -func (mr *MockMultiClusterRoleFinalizerMockRecorder) ReconcileMultiClusterRole(obj interface{}) *gomock.Call { +// FinalizeMultiClusterRole indicates an expected call of FinalizeMultiClusterRole. +func (mr *MockMultiClusterRoleFinalizerMockRecorder) FinalizeMultiClusterRole(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleFinalizer)(nil).ReconcileMultiClusterRole), obj) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleFinalizer)(nil).FinalizeMultiClusterRole), obj) } -// MultiClusterRoleFinalizerName mocks base method +// MultiClusterRoleFinalizerName mocks base method. func (m *MockMultiClusterRoleFinalizer) MultiClusterRoleFinalizerName() string { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "MultiClusterRoleFinalizerName") @@ -136,50 +135,51 @@ func (m *MockMultiClusterRoleFinalizer) MultiClusterRoleFinalizerName() string { return ret0 } -// MultiClusterRoleFinalizerName indicates an expected call of MultiClusterRoleFinalizerName +// MultiClusterRoleFinalizerName indicates an expected call of MultiClusterRoleFinalizerName. func (mr *MockMultiClusterRoleFinalizerMockRecorder) MultiClusterRoleFinalizerName() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MultiClusterRoleFinalizerName", reflect.TypeOf((*MockMultiClusterRoleFinalizer)(nil).MultiClusterRoleFinalizerName)) } -// FinalizeMultiClusterRole mocks base method -func (m *MockMultiClusterRoleFinalizer) FinalizeMultiClusterRole(obj *v1alpha1.MultiClusterRole) error { +// ReconcileMultiClusterRole mocks base method. +func (m *MockMultiClusterRoleFinalizer) ReconcileMultiClusterRole(obj *v1alpha1.MultiClusterRole) (reconcile.Result, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "FinalizeMultiClusterRole", obj) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "ReconcileMultiClusterRole", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// FinalizeMultiClusterRole indicates an expected call of FinalizeMultiClusterRole -func (mr *MockMultiClusterRoleFinalizerMockRecorder) FinalizeMultiClusterRole(obj interface{}) *gomock.Call { +// ReconcileMultiClusterRole indicates an expected call of ReconcileMultiClusterRole. +func (mr *MockMultiClusterRoleFinalizerMockRecorder) ReconcileMultiClusterRole(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleFinalizer)(nil).FinalizeMultiClusterRole), obj) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleFinalizer)(nil).ReconcileMultiClusterRole), obj) } -// MockMultiClusterRoleReconcileLoop is a mock of MultiClusterRoleReconcileLoop interface +// MockMultiClusterRoleReconcileLoop is a mock of MultiClusterRoleReconcileLoop interface. type MockMultiClusterRoleReconcileLoop struct { ctrl *gomock.Controller recorder *MockMultiClusterRoleReconcileLoopMockRecorder } -// MockMultiClusterRoleReconcileLoopMockRecorder is the mock recorder for MockMultiClusterRoleReconcileLoop +// MockMultiClusterRoleReconcileLoopMockRecorder is the mock recorder for MockMultiClusterRoleReconcileLoop. type MockMultiClusterRoleReconcileLoopMockRecorder struct { mock *MockMultiClusterRoleReconcileLoop } -// NewMockMultiClusterRoleReconcileLoop creates a new mock instance +// NewMockMultiClusterRoleReconcileLoop creates a new mock instance. func NewMockMultiClusterRoleReconcileLoop(ctrl *gomock.Controller) *MockMultiClusterRoleReconcileLoop { mock := &MockMultiClusterRoleReconcileLoop{ctrl: ctrl} mock.recorder = &MockMultiClusterRoleReconcileLoopMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMultiClusterRoleReconcileLoop) EXPECT() *MockMultiClusterRoleReconcileLoopMockRecorder { return m.recorder } -// RunMultiClusterRoleReconciler mocks base method +// RunMultiClusterRoleReconciler mocks base method. func (m *MockMultiClusterRoleReconcileLoop) RunMultiClusterRoleReconciler(ctx context.Context, rec controller.MultiClusterRoleReconciler, predicates ...predicate.Predicate) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, rec} @@ -191,7 +191,7 @@ func (m *MockMultiClusterRoleReconcileLoop) RunMultiClusterRoleReconciler(ctx co return ret0 } -// RunMultiClusterRoleReconciler indicates an expected call of RunMultiClusterRoleReconciler +// RunMultiClusterRoleReconciler indicates an expected call of RunMultiClusterRoleReconciler. func (mr *MockMultiClusterRoleReconcileLoopMockRecorder) RunMultiClusterRoleReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, rec}, predicates...) diff --git a/pkg/api/multicluster.solo.io/v1alpha1/mocks/clients.go b/pkg/api/multicluster.solo.io/v1alpha1/mocks/clients.go index 055ef2d40..8b3680da4 100644 --- a/pkg/api/multicluster.solo.io/v1alpha1/mocks/clients.go +++ b/pkg/api/multicluster.solo.io/v1alpha1/mocks/clients.go @@ -13,30 +13,30 @@ import ( client "sigs.k8s.io/controller-runtime/pkg/client" ) -// MockMulticlusterClientset is a mock of MulticlusterClientset interface +// MockMulticlusterClientset is a mock of MulticlusterClientset interface. type MockMulticlusterClientset struct { ctrl *gomock.Controller recorder *MockMulticlusterClientsetMockRecorder } -// MockMulticlusterClientsetMockRecorder is the mock recorder for MockMulticlusterClientset +// MockMulticlusterClientsetMockRecorder is the mock recorder for MockMulticlusterClientset. type MockMulticlusterClientsetMockRecorder struct { mock *MockMulticlusterClientset } -// NewMockMulticlusterClientset creates a new mock instance +// NewMockMulticlusterClientset creates a new mock instance. func NewMockMulticlusterClientset(ctrl *gomock.Controller) *MockMulticlusterClientset { mock := &MockMulticlusterClientset{ctrl: ctrl} mock.recorder = &MockMulticlusterClientsetMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterClientset) EXPECT() *MockMulticlusterClientsetMockRecorder { return m.recorder } -// Cluster mocks base method +// Cluster mocks base method. func (m *MockMulticlusterClientset) Cluster(cluster string) (v1alpha1.Clientset, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Cluster", cluster) @@ -45,36 +45,36 @@ func (m *MockMulticlusterClientset) Cluster(cluster string) (v1alpha1.Clientset, return ret0, ret1 } -// Cluster indicates an expected call of Cluster +// Cluster indicates an expected call of Cluster. func (mr *MockMulticlusterClientsetMockRecorder) Cluster(cluster interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterClientset)(nil).Cluster), cluster) } -// MockClientset is a mock of Clientset interface +// MockClientset is a mock of Clientset interface. type MockClientset struct { ctrl *gomock.Controller recorder *MockClientsetMockRecorder } -// MockClientsetMockRecorder is the mock recorder for MockClientset +// MockClientsetMockRecorder is the mock recorder for MockClientset. type MockClientsetMockRecorder struct { mock *MockClientset } -// NewMockClientset creates a new mock instance +// NewMockClientset creates a new mock instance. func NewMockClientset(ctrl *gomock.Controller) *MockClientset { mock := &MockClientset{ctrl: ctrl} mock.recorder = &MockClientsetMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockClientset) EXPECT() *MockClientsetMockRecorder { return m.recorder } -// MultiClusterRoles mocks base method +// MultiClusterRoles mocks base method. func (m *MockClientset) MultiClusterRoles() v1alpha1.MultiClusterRoleClient { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "MultiClusterRoles") @@ -82,36 +82,36 @@ func (m *MockClientset) MultiClusterRoles() v1alpha1.MultiClusterRoleClient { return ret0 } -// MultiClusterRoles indicates an expected call of MultiClusterRoles +// MultiClusterRoles indicates an expected call of MultiClusterRoles. func (mr *MockClientsetMockRecorder) MultiClusterRoles() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MultiClusterRoles", reflect.TypeOf((*MockClientset)(nil).MultiClusterRoles)) } -// MockMultiClusterRoleReader is a mock of MultiClusterRoleReader interface +// MockMultiClusterRoleReader is a mock of MultiClusterRoleReader interface. type MockMultiClusterRoleReader struct { ctrl *gomock.Controller recorder *MockMultiClusterRoleReaderMockRecorder } -// MockMultiClusterRoleReaderMockRecorder is the mock recorder for MockMultiClusterRoleReader +// MockMultiClusterRoleReaderMockRecorder is the mock recorder for MockMultiClusterRoleReader. type MockMultiClusterRoleReaderMockRecorder struct { mock *MockMultiClusterRoleReader } -// NewMockMultiClusterRoleReader creates a new mock instance +// NewMockMultiClusterRoleReader creates a new mock instance. func NewMockMultiClusterRoleReader(ctrl *gomock.Controller) *MockMultiClusterRoleReader { mock := &MockMultiClusterRoleReader{ctrl: ctrl} mock.recorder = &MockMultiClusterRoleReaderMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMultiClusterRoleReader) EXPECT() *MockMultiClusterRoleReaderMockRecorder { return m.recorder } -// GetMultiClusterRole mocks base method +// GetMultiClusterRole mocks base method. func (m *MockMultiClusterRoleReader) GetMultiClusterRole(ctx context.Context, key client.ObjectKey) (*v1alpha1.MultiClusterRole, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetMultiClusterRole", ctx, key) @@ -120,13 +120,13 @@ func (m *MockMultiClusterRoleReader) GetMultiClusterRole(ctx context.Context, ke return ret0, ret1 } -// GetMultiClusterRole indicates an expected call of GetMultiClusterRole +// GetMultiClusterRole indicates an expected call of GetMultiClusterRole. func (mr *MockMultiClusterRoleReaderMockRecorder) GetMultiClusterRole(ctx, key interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleReader)(nil).GetMultiClusterRole), ctx, key) } -// ListMultiClusterRole mocks base method +// ListMultiClusterRole mocks base method. func (m *MockMultiClusterRoleReader) ListMultiClusterRole(ctx context.Context, opts ...client.ListOption) (*v1alpha1.MultiClusterRoleList, error) { m.ctrl.T.Helper() varargs := []interface{}{ctx} @@ -139,37 +139,37 @@ func (m *MockMultiClusterRoleReader) ListMultiClusterRole(ctx context.Context, o return ret0, ret1 } -// ListMultiClusterRole indicates an expected call of ListMultiClusterRole +// ListMultiClusterRole indicates an expected call of ListMultiClusterRole. func (mr *MockMultiClusterRoleReaderMockRecorder) ListMultiClusterRole(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleReader)(nil).ListMultiClusterRole), varargs...) } -// MockMultiClusterRoleWriter is a mock of MultiClusterRoleWriter interface +// MockMultiClusterRoleWriter is a mock of MultiClusterRoleWriter interface. type MockMultiClusterRoleWriter struct { ctrl *gomock.Controller recorder *MockMultiClusterRoleWriterMockRecorder } -// MockMultiClusterRoleWriterMockRecorder is the mock recorder for MockMultiClusterRoleWriter +// MockMultiClusterRoleWriterMockRecorder is the mock recorder for MockMultiClusterRoleWriter. type MockMultiClusterRoleWriterMockRecorder struct { mock *MockMultiClusterRoleWriter } -// NewMockMultiClusterRoleWriter creates a new mock instance +// NewMockMultiClusterRoleWriter creates a new mock instance. func NewMockMultiClusterRoleWriter(ctrl *gomock.Controller) *MockMultiClusterRoleWriter { mock := &MockMultiClusterRoleWriter{ctrl: ctrl} mock.recorder = &MockMultiClusterRoleWriterMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMultiClusterRoleWriter) EXPECT() *MockMultiClusterRoleWriterMockRecorder { return m.recorder } -// CreateMultiClusterRole mocks base method +// CreateMultiClusterRole mocks base method. func (m *MockMultiClusterRoleWriter) CreateMultiClusterRole(ctx context.Context, obj *v1alpha1.MultiClusterRole, opts ...client.CreateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} @@ -181,52 +181,52 @@ func (m *MockMultiClusterRoleWriter) CreateMultiClusterRole(ctx context.Context, return ret0 } -// CreateMultiClusterRole indicates an expected call of CreateMultiClusterRole +// CreateMultiClusterRole indicates an expected call of CreateMultiClusterRole. func (mr *MockMultiClusterRoleWriterMockRecorder) CreateMultiClusterRole(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleWriter)(nil).CreateMultiClusterRole), varargs...) } -// DeleteMultiClusterRole mocks base method -func (m *MockMultiClusterRoleWriter) DeleteMultiClusterRole(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { +// DeleteAllOfMultiClusterRole mocks base method. +func (m *MockMultiClusterRoleWriter) DeleteAllOfMultiClusterRole(ctx context.Context, opts ...client.DeleteAllOfOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, key} + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteMultiClusterRole", varargs...) + ret := m.ctrl.Call(m, "DeleteAllOfMultiClusterRole", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteMultiClusterRole indicates an expected call of DeleteMultiClusterRole -func (mr *MockMultiClusterRoleWriterMockRecorder) DeleteMultiClusterRole(ctx, key interface{}, opts ...interface{}) *gomock.Call { +// DeleteAllOfMultiClusterRole indicates an expected call of DeleteAllOfMultiClusterRole. +func (mr *MockMultiClusterRoleWriterMockRecorder) DeleteAllOfMultiClusterRole(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, key}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleWriter)(nil).DeleteMultiClusterRole), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleWriter)(nil).DeleteAllOfMultiClusterRole), varargs...) } -// UpdateMultiClusterRole mocks base method -func (m *MockMultiClusterRoleWriter) UpdateMultiClusterRole(ctx context.Context, obj *v1alpha1.MultiClusterRole, opts ...client.UpdateOption) error { +// DeleteMultiClusterRole mocks base method. +func (m *MockMultiClusterRoleWriter) DeleteMultiClusterRole(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx, key} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateMultiClusterRole", varargs...) + ret := m.ctrl.Call(m, "DeleteMultiClusterRole", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateMultiClusterRole indicates an expected call of UpdateMultiClusterRole -func (mr *MockMultiClusterRoleWriterMockRecorder) UpdateMultiClusterRole(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// DeleteMultiClusterRole indicates an expected call of DeleteMultiClusterRole. +func (mr *MockMultiClusterRoleWriterMockRecorder) DeleteMultiClusterRole(ctx, key interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleWriter)(nil).UpdateMultiClusterRole), varargs...) + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleWriter)(nil).DeleteMultiClusterRole), varargs...) } -// PatchMultiClusterRole mocks base method +// PatchMultiClusterRole mocks base method. func (m *MockMultiClusterRoleWriter) PatchMultiClusterRole(ctx context.Context, obj *v1alpha1.MultiClusterRole, patch client.Patch, opts ...client.PatchOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj, patch} @@ -238,33 +238,33 @@ func (m *MockMultiClusterRoleWriter) PatchMultiClusterRole(ctx context.Context, return ret0 } -// PatchMultiClusterRole indicates an expected call of PatchMultiClusterRole +// PatchMultiClusterRole indicates an expected call of PatchMultiClusterRole. func (mr *MockMultiClusterRoleWriterMockRecorder) PatchMultiClusterRole(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj, patch}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleWriter)(nil).PatchMultiClusterRole), varargs...) } -// DeleteAllOfMultiClusterRole mocks base method -func (m *MockMultiClusterRoleWriter) DeleteAllOfMultiClusterRole(ctx context.Context, opts ...client.DeleteAllOfOption) error { +// UpdateMultiClusterRole mocks base method. +func (m *MockMultiClusterRoleWriter) UpdateMultiClusterRole(ctx context.Context, obj *v1alpha1.MultiClusterRole, opts ...client.UpdateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteAllOfMultiClusterRole", varargs...) + ret := m.ctrl.Call(m, "UpdateMultiClusterRole", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteAllOfMultiClusterRole indicates an expected call of DeleteAllOfMultiClusterRole -func (mr *MockMultiClusterRoleWriterMockRecorder) DeleteAllOfMultiClusterRole(ctx interface{}, opts ...interface{}) *gomock.Call { +// UpdateMultiClusterRole indicates an expected call of UpdateMultiClusterRole. +func (mr *MockMultiClusterRoleWriterMockRecorder) UpdateMultiClusterRole(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleWriter)(nil).DeleteAllOfMultiClusterRole), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleWriter)(nil).UpdateMultiClusterRole), varargs...) } -// UpsertMultiClusterRole mocks base method +// UpsertMultiClusterRole mocks base method. func (m *MockMultiClusterRoleWriter) UpsertMultiClusterRole(ctx context.Context, obj *v1alpha1.MultiClusterRole, transitionFuncs ...v1alpha1.MultiClusterRoleTransitionFunction) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} @@ -276,152 +276,136 @@ func (m *MockMultiClusterRoleWriter) UpsertMultiClusterRole(ctx context.Context, return ret0 } -// UpsertMultiClusterRole indicates an expected call of UpsertMultiClusterRole +// UpsertMultiClusterRole indicates an expected call of UpsertMultiClusterRole. func (mr *MockMultiClusterRoleWriterMockRecorder) UpsertMultiClusterRole(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, transitionFuncs...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleWriter)(nil).UpsertMultiClusterRole), varargs...) } -// MockMultiClusterRoleStatusWriter is a mock of MultiClusterRoleStatusWriter interface +// MockMultiClusterRoleStatusWriter is a mock of MultiClusterRoleStatusWriter interface. type MockMultiClusterRoleStatusWriter struct { ctrl *gomock.Controller recorder *MockMultiClusterRoleStatusWriterMockRecorder } -// MockMultiClusterRoleStatusWriterMockRecorder is the mock recorder for MockMultiClusterRoleStatusWriter +// MockMultiClusterRoleStatusWriterMockRecorder is the mock recorder for MockMultiClusterRoleStatusWriter. type MockMultiClusterRoleStatusWriterMockRecorder struct { mock *MockMultiClusterRoleStatusWriter } -// NewMockMultiClusterRoleStatusWriter creates a new mock instance +// NewMockMultiClusterRoleStatusWriter creates a new mock instance. func NewMockMultiClusterRoleStatusWriter(ctrl *gomock.Controller) *MockMultiClusterRoleStatusWriter { mock := &MockMultiClusterRoleStatusWriter{ctrl: ctrl} mock.recorder = &MockMultiClusterRoleStatusWriterMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMultiClusterRoleStatusWriter) EXPECT() *MockMultiClusterRoleStatusWriterMockRecorder { return m.recorder } -// UpdateMultiClusterRoleStatus mocks base method -func (m *MockMultiClusterRoleStatusWriter) UpdateMultiClusterRoleStatus(ctx context.Context, obj *v1alpha1.MultiClusterRole, opts ...client.UpdateOption) error { +// PatchMultiClusterRoleStatus mocks base method. +func (m *MockMultiClusterRoleStatusWriter) PatchMultiClusterRoleStatus(ctx context.Context, obj *v1alpha1.MultiClusterRole, patch client.Patch, opts ...client.SubResourcePatchOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateMultiClusterRoleStatus", varargs...) + ret := m.ctrl.Call(m, "PatchMultiClusterRoleStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateMultiClusterRoleStatus indicates an expected call of UpdateMultiClusterRoleStatus -func (mr *MockMultiClusterRoleStatusWriterMockRecorder) UpdateMultiClusterRoleStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// PatchMultiClusterRoleStatus indicates an expected call of PatchMultiClusterRoleStatus. +func (mr *MockMultiClusterRoleStatusWriterMockRecorder) PatchMultiClusterRoleStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateMultiClusterRoleStatus", reflect.TypeOf((*MockMultiClusterRoleStatusWriter)(nil).UpdateMultiClusterRoleStatus), varargs...) + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchMultiClusterRoleStatus", reflect.TypeOf((*MockMultiClusterRoleStatusWriter)(nil).PatchMultiClusterRoleStatus), varargs...) } -// PatchMultiClusterRoleStatus mocks base method -func (m *MockMultiClusterRoleStatusWriter) PatchMultiClusterRoleStatus(ctx context.Context, obj *v1alpha1.MultiClusterRole, patch client.Patch, opts ...client.PatchOption) error { +// UpdateMultiClusterRoleStatus mocks base method. +func (m *MockMultiClusterRoleStatusWriter) UpdateMultiClusterRoleStatus(ctx context.Context, obj *v1alpha1.MultiClusterRole, opts ...client.SubResourceUpdateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj, patch} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchMultiClusterRoleStatus", varargs...) + ret := m.ctrl.Call(m, "UpdateMultiClusterRoleStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchMultiClusterRoleStatus indicates an expected call of PatchMultiClusterRoleStatus -func (mr *MockMultiClusterRoleStatusWriterMockRecorder) PatchMultiClusterRoleStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// UpdateMultiClusterRoleStatus indicates an expected call of UpdateMultiClusterRoleStatus. +func (mr *MockMultiClusterRoleStatusWriterMockRecorder) UpdateMultiClusterRoleStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchMultiClusterRoleStatus", reflect.TypeOf((*MockMultiClusterRoleStatusWriter)(nil).PatchMultiClusterRoleStatus), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateMultiClusterRoleStatus", reflect.TypeOf((*MockMultiClusterRoleStatusWriter)(nil).UpdateMultiClusterRoleStatus), varargs...) } -// MockMultiClusterRoleClient is a mock of MultiClusterRoleClient interface +// MockMultiClusterRoleClient is a mock of MultiClusterRoleClient interface. type MockMultiClusterRoleClient struct { ctrl *gomock.Controller recorder *MockMultiClusterRoleClientMockRecorder } -// MockMultiClusterRoleClientMockRecorder is the mock recorder for MockMultiClusterRoleClient +// MockMultiClusterRoleClientMockRecorder is the mock recorder for MockMultiClusterRoleClient. type MockMultiClusterRoleClientMockRecorder struct { mock *MockMultiClusterRoleClient } -// NewMockMultiClusterRoleClient creates a new mock instance +// NewMockMultiClusterRoleClient creates a new mock instance. func NewMockMultiClusterRoleClient(ctrl *gomock.Controller) *MockMultiClusterRoleClient { mock := &MockMultiClusterRoleClient{ctrl: ctrl} mock.recorder = &MockMultiClusterRoleClientMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMultiClusterRoleClient) EXPECT() *MockMultiClusterRoleClientMockRecorder { return m.recorder } -// GetMultiClusterRole mocks base method -func (m *MockMultiClusterRoleClient) GetMultiClusterRole(ctx context.Context, key client.ObjectKey) (*v1alpha1.MultiClusterRole, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetMultiClusterRole", ctx, key) - ret0, _ := ret[0].(*v1alpha1.MultiClusterRole) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetMultiClusterRole indicates an expected call of GetMultiClusterRole -func (mr *MockMultiClusterRoleClientMockRecorder) GetMultiClusterRole(ctx, key interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleClient)(nil).GetMultiClusterRole), ctx, key) -} - -// ListMultiClusterRole mocks base method -func (m *MockMultiClusterRoleClient) ListMultiClusterRole(ctx context.Context, opts ...client.ListOption) (*v1alpha1.MultiClusterRoleList, error) { +// CreateMultiClusterRole mocks base method. +func (m *MockMultiClusterRoleClient) CreateMultiClusterRole(ctx context.Context, obj *v1alpha1.MultiClusterRole, opts ...client.CreateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "ListMultiClusterRole", varargs...) - ret0, _ := ret[0].(*v1alpha1.MultiClusterRoleList) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "CreateMultiClusterRole", varargs...) + ret0, _ := ret[0].(error) + return ret0 } -// ListMultiClusterRole indicates an expected call of ListMultiClusterRole -func (mr *MockMultiClusterRoleClientMockRecorder) ListMultiClusterRole(ctx interface{}, opts ...interface{}) *gomock.Call { +// CreateMultiClusterRole indicates an expected call of CreateMultiClusterRole. +func (mr *MockMultiClusterRoleClientMockRecorder) CreateMultiClusterRole(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleClient)(nil).ListMultiClusterRole), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleClient)(nil).CreateMultiClusterRole), varargs...) } -// CreateMultiClusterRole mocks base method -func (m *MockMultiClusterRoleClient) CreateMultiClusterRole(ctx context.Context, obj *v1alpha1.MultiClusterRole, opts ...client.CreateOption) error { +// DeleteAllOfMultiClusterRole mocks base method. +func (m *MockMultiClusterRoleClient) DeleteAllOfMultiClusterRole(ctx context.Context, opts ...client.DeleteAllOfOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "CreateMultiClusterRole", varargs...) + ret := m.ctrl.Call(m, "DeleteAllOfMultiClusterRole", varargs...) ret0, _ := ret[0].(error) return ret0 } -// CreateMultiClusterRole indicates an expected call of CreateMultiClusterRole -func (mr *MockMultiClusterRoleClientMockRecorder) CreateMultiClusterRole(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// DeleteAllOfMultiClusterRole indicates an expected call of DeleteAllOfMultiClusterRole. +func (mr *MockMultiClusterRoleClientMockRecorder) DeleteAllOfMultiClusterRole(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleClient)(nil).CreateMultiClusterRole), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleClient)(nil).DeleteAllOfMultiClusterRole), varargs...) } -// DeleteMultiClusterRole mocks base method +// DeleteMultiClusterRole mocks base method. func (m *MockMultiClusterRoleClient) DeleteMultiClusterRole(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, key} @@ -433,33 +417,49 @@ func (m *MockMultiClusterRoleClient) DeleteMultiClusterRole(ctx context.Context, return ret0 } -// DeleteMultiClusterRole indicates an expected call of DeleteMultiClusterRole +// DeleteMultiClusterRole indicates an expected call of DeleteMultiClusterRole. func (mr *MockMultiClusterRoleClientMockRecorder) DeleteMultiClusterRole(ctx, key interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, key}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleClient)(nil).DeleteMultiClusterRole), varargs...) } -// UpdateMultiClusterRole mocks base method -func (m *MockMultiClusterRoleClient) UpdateMultiClusterRole(ctx context.Context, obj *v1alpha1.MultiClusterRole, opts ...client.UpdateOption) error { +// GetMultiClusterRole mocks base method. +func (m *MockMultiClusterRoleClient) GetMultiClusterRole(ctx context.Context, key client.ObjectKey) (*v1alpha1.MultiClusterRole, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + ret := m.ctrl.Call(m, "GetMultiClusterRole", ctx, key) + ret0, _ := ret[0].(*v1alpha1.MultiClusterRole) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetMultiClusterRole indicates an expected call of GetMultiClusterRole. +func (mr *MockMultiClusterRoleClientMockRecorder) GetMultiClusterRole(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleClient)(nil).GetMultiClusterRole), ctx, key) +} + +// ListMultiClusterRole mocks base method. +func (m *MockMultiClusterRoleClient) ListMultiClusterRole(ctx context.Context, opts ...client.ListOption) (*v1alpha1.MultiClusterRoleList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateMultiClusterRole", varargs...) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "ListMultiClusterRole", varargs...) + ret0, _ := ret[0].(*v1alpha1.MultiClusterRoleList) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// UpdateMultiClusterRole indicates an expected call of UpdateMultiClusterRole -func (mr *MockMultiClusterRoleClientMockRecorder) UpdateMultiClusterRole(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// ListMultiClusterRole indicates an expected call of ListMultiClusterRole. +func (mr *MockMultiClusterRoleClientMockRecorder) ListMultiClusterRole(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleClient)(nil).UpdateMultiClusterRole), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleClient)(nil).ListMultiClusterRole), varargs...) } -// PatchMultiClusterRole mocks base method +// PatchMultiClusterRole mocks base method. func (m *MockMultiClusterRoleClient) PatchMultiClusterRole(ctx context.Context, obj *v1alpha1.MultiClusterRole, patch client.Patch, opts ...client.PatchOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj, patch} @@ -471,53 +471,53 @@ func (m *MockMultiClusterRoleClient) PatchMultiClusterRole(ctx context.Context, return ret0 } -// PatchMultiClusterRole indicates an expected call of PatchMultiClusterRole +// PatchMultiClusterRole indicates an expected call of PatchMultiClusterRole. func (mr *MockMultiClusterRoleClientMockRecorder) PatchMultiClusterRole(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj, patch}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleClient)(nil).PatchMultiClusterRole), varargs...) } -// DeleteAllOfMultiClusterRole mocks base method -func (m *MockMultiClusterRoleClient) DeleteAllOfMultiClusterRole(ctx context.Context, opts ...client.DeleteAllOfOption) error { +// PatchMultiClusterRoleStatus mocks base method. +func (m *MockMultiClusterRoleClient) PatchMultiClusterRoleStatus(ctx context.Context, obj *v1alpha1.MultiClusterRole, patch client.Patch, opts ...client.SubResourcePatchOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteAllOfMultiClusterRole", varargs...) + ret := m.ctrl.Call(m, "PatchMultiClusterRoleStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteAllOfMultiClusterRole indicates an expected call of DeleteAllOfMultiClusterRole -func (mr *MockMultiClusterRoleClientMockRecorder) DeleteAllOfMultiClusterRole(ctx interface{}, opts ...interface{}) *gomock.Call { +// PatchMultiClusterRoleStatus indicates an expected call of PatchMultiClusterRoleStatus. +func (mr *MockMultiClusterRoleClientMockRecorder) PatchMultiClusterRoleStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleClient)(nil).DeleteAllOfMultiClusterRole), varargs...) + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchMultiClusterRoleStatus", reflect.TypeOf((*MockMultiClusterRoleClient)(nil).PatchMultiClusterRoleStatus), varargs...) } -// UpsertMultiClusterRole mocks base method -func (m *MockMultiClusterRoleClient) UpsertMultiClusterRole(ctx context.Context, obj *v1alpha1.MultiClusterRole, transitionFuncs ...v1alpha1.MultiClusterRoleTransitionFunction) error { +// UpdateMultiClusterRole mocks base method. +func (m *MockMultiClusterRoleClient) UpdateMultiClusterRole(ctx context.Context, obj *v1alpha1.MultiClusterRole, opts ...client.UpdateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} - for _, a := range transitionFuncs { + for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpsertMultiClusterRole", varargs...) + ret := m.ctrl.Call(m, "UpdateMultiClusterRole", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpsertMultiClusterRole indicates an expected call of UpsertMultiClusterRole -func (mr *MockMultiClusterRoleClientMockRecorder) UpsertMultiClusterRole(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { +// UpdateMultiClusterRole indicates an expected call of UpdateMultiClusterRole. +func (mr *MockMultiClusterRoleClientMockRecorder) UpdateMultiClusterRole(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, transitionFuncs...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleClient)(nil).UpsertMultiClusterRole), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleClient)(nil).UpdateMultiClusterRole), varargs...) } -// UpdateMultiClusterRoleStatus mocks base method -func (m *MockMultiClusterRoleClient) UpdateMultiClusterRoleStatus(ctx context.Context, obj *v1alpha1.MultiClusterRole, opts ...client.UpdateOption) error { +// UpdateMultiClusterRoleStatus mocks base method. +func (m *MockMultiClusterRoleClient) UpdateMultiClusterRoleStatus(ctx context.Context, obj *v1alpha1.MultiClusterRole, opts ...client.SubResourceUpdateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} for _, a := range opts { @@ -528,56 +528,56 @@ func (m *MockMultiClusterRoleClient) UpdateMultiClusterRoleStatus(ctx context.Co return ret0 } -// UpdateMultiClusterRoleStatus indicates an expected call of UpdateMultiClusterRoleStatus +// UpdateMultiClusterRoleStatus indicates an expected call of UpdateMultiClusterRoleStatus. func (mr *MockMultiClusterRoleClientMockRecorder) UpdateMultiClusterRoleStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateMultiClusterRoleStatus", reflect.TypeOf((*MockMultiClusterRoleClient)(nil).UpdateMultiClusterRoleStatus), varargs...) } -// PatchMultiClusterRoleStatus mocks base method -func (m *MockMultiClusterRoleClient) PatchMultiClusterRoleStatus(ctx context.Context, obj *v1alpha1.MultiClusterRole, patch client.Patch, opts ...client.PatchOption) error { +// UpsertMultiClusterRole mocks base method. +func (m *MockMultiClusterRoleClient) UpsertMultiClusterRole(ctx context.Context, obj *v1alpha1.MultiClusterRole, transitionFuncs ...v1alpha1.MultiClusterRoleTransitionFunction) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj, patch} - for _, a := range opts { + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchMultiClusterRoleStatus", varargs...) + ret := m.ctrl.Call(m, "UpsertMultiClusterRole", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchMultiClusterRoleStatus indicates an expected call of PatchMultiClusterRoleStatus -func (mr *MockMultiClusterRoleClientMockRecorder) PatchMultiClusterRoleStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// UpsertMultiClusterRole indicates an expected call of UpsertMultiClusterRole. +func (mr *MockMultiClusterRoleClientMockRecorder) UpsertMultiClusterRole(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchMultiClusterRoleStatus", reflect.TypeOf((*MockMultiClusterRoleClient)(nil).PatchMultiClusterRoleStatus), varargs...) + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertMultiClusterRole", reflect.TypeOf((*MockMultiClusterRoleClient)(nil).UpsertMultiClusterRole), varargs...) } -// MockMulticlusterMultiClusterRoleClient is a mock of MulticlusterMultiClusterRoleClient interface +// MockMulticlusterMultiClusterRoleClient is a mock of MulticlusterMultiClusterRoleClient interface. type MockMulticlusterMultiClusterRoleClient struct { ctrl *gomock.Controller recorder *MockMulticlusterMultiClusterRoleClientMockRecorder } -// MockMulticlusterMultiClusterRoleClientMockRecorder is the mock recorder for MockMulticlusterMultiClusterRoleClient +// MockMulticlusterMultiClusterRoleClientMockRecorder is the mock recorder for MockMulticlusterMultiClusterRoleClient. type MockMulticlusterMultiClusterRoleClientMockRecorder struct { mock *MockMulticlusterMultiClusterRoleClient } -// NewMockMulticlusterMultiClusterRoleClient creates a new mock instance +// NewMockMulticlusterMultiClusterRoleClient creates a new mock instance. func NewMockMulticlusterMultiClusterRoleClient(ctrl *gomock.Controller) *MockMulticlusterMultiClusterRoleClient { mock := &MockMulticlusterMultiClusterRoleClient{ctrl: ctrl} mock.recorder = &MockMulticlusterMultiClusterRoleClientMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterMultiClusterRoleClient) EXPECT() *MockMulticlusterMultiClusterRoleClientMockRecorder { return m.recorder } -// Cluster mocks base method +// Cluster mocks base method. func (m *MockMulticlusterMultiClusterRoleClient) Cluster(cluster string) (v1alpha1.MultiClusterRoleClient, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Cluster", cluster) @@ -586,7 +586,7 @@ func (m *MockMulticlusterMultiClusterRoleClient) Cluster(cluster string) (v1alph return ret0, ret1 } -// Cluster indicates an expected call of Cluster +// Cluster indicates an expected call of Cluster. func (mr *MockMulticlusterMultiClusterRoleClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterMultiClusterRoleClient)(nil).Cluster), cluster) diff --git a/pkg/api/multicluster.solo.io/v1alpha1/multicluster.pb.go b/pkg/api/multicluster.solo.io/v1alpha1/multicluster.pb.go deleted file mode 100644 index 31ad5f525..000000000 --- a/pkg/api/multicluster.solo.io/v1alpha1/multicluster.pb.go +++ /dev/null @@ -1,604 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.6.1 -// source: github.com/solo-io/solo-apis/api/skv2-enterprise/v1alpha1/multicluster.proto - -package v1alpha1 - -import ( - reflect "reflect" - sync "sync" - - proto "github.com/golang/protobuf/proto" - wrappers "github.com/golang/protobuf/ptypes/wrappers" - _ "github.com/solo-io/protoc-gen-ext/extproto" - v1 "github.com/solo-io/skv2/pkg/api/core.skv2.solo.io/v1" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -type MultiClusterRoleSpec_Rule_Action int32 - -const ( - MultiClusterRoleSpec_Rule_ANY MultiClusterRoleSpec_Rule_Action = 0 - MultiClusterRoleSpec_Rule_CREATE MultiClusterRoleSpec_Rule_Action = 1 - MultiClusterRoleSpec_Rule_UPDATE MultiClusterRoleSpec_Rule_Action = 2 - MultiClusterRoleSpec_Rule_DELETE MultiClusterRoleSpec_Rule_Action = 3 -) - -// Enum value maps for MultiClusterRoleSpec_Rule_Action. -var ( - MultiClusterRoleSpec_Rule_Action_name = map[int32]string{ - 0: "ANY", - 1: "CREATE", - 2: "UPDATE", - 3: "DELETE", - } - MultiClusterRoleSpec_Rule_Action_value = map[string]int32{ - "ANY": 0, - "CREATE": 1, - "UPDATE": 2, - "DELETE": 3, - } -) - -func (x MultiClusterRoleSpec_Rule_Action) Enum() *MultiClusterRoleSpec_Rule_Action { - p := new(MultiClusterRoleSpec_Rule_Action) - *p = x - return p -} - -func (x MultiClusterRoleSpec_Rule_Action) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (MultiClusterRoleSpec_Rule_Action) Descriptor() protoreflect.EnumDescriptor { - return file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_enumTypes[0].Descriptor() -} - -func (MultiClusterRoleSpec_Rule_Action) Type() protoreflect.EnumType { - return &file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_enumTypes[0] -} - -func (x MultiClusterRoleSpec_Rule_Action) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use MultiClusterRoleSpec_Rule_Action.Descriptor instead. -func (MultiClusterRoleSpec_Rule_Action) EnumDescriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_rawDescGZIP(), []int{1, 0, 0} -} - -// -//Object representing the clusters and namespaces on which resources are created/updated/deleted, -//computed as the cartesian product of all declared namespace and cluster values. -type Placement struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // - //List of namespaces within each placement cluster in which to create/update/delete resources. - //Wildcard ("*") represents any namespace. - Namespaces []string `protobuf:"bytes,1,rep,name=namespaces,proto3" json:"namespaces,omitempty"` - // - //List of clusters (represented by a string) in which to create/update/delete resources. - //Wildcard ("*") represents any cluster. - Clusters []string `protobuf:"bytes,2,rep,name=clusters,proto3" json:"clusters,omitempty"` -} - -func (x *Placement) Reset() { - *x = Placement{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Placement) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Placement) ProtoMessage() {} - -func (x *Placement) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Placement.ProtoReflect.Descriptor instead. -func (*Placement) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_rawDescGZIP(), []int{0} -} - -func (x *Placement) GetNamespaces() []string { - if x != nil { - return x.Namespaces - } - return nil -} - -func (x *Placement) GetClusters() []string { - if x != nil { - return x.Clusters - } - return nil -} - -type MultiClusterRoleSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Rules []*MultiClusterRoleSpec_Rule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` -} - -func (x *MultiClusterRoleSpec) Reset() { - *x = MultiClusterRoleSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MultiClusterRoleSpec) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MultiClusterRoleSpec) ProtoMessage() {} - -func (x *MultiClusterRoleSpec) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MultiClusterRoleSpec.ProtoReflect.Descriptor instead. -func (*MultiClusterRoleSpec) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_rawDescGZIP(), []int{1} -} - -func (x *MultiClusterRoleSpec) GetRules() []*MultiClusterRoleSpec_Rule { - if x != nil { - return x.Rules - } - return nil -} - -type MultiClusterRoleStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *MultiClusterRoleStatus) Reset() { - *x = MultiClusterRoleStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MultiClusterRoleStatus) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MultiClusterRoleStatus) ProtoMessage() {} - -func (x *MultiClusterRoleStatus) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MultiClusterRoleStatus.ProtoReflect.Descriptor instead. -func (*MultiClusterRoleStatus) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_rawDescGZIP(), []int{2} -} - -type MultiClusterRoleBindingSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // reference to users or groups to apply the MultiClusterRole to - Subjects []*v1.TypedObjectRef `protobuf:"bytes,1,rep,name=subjects,proto3" json:"subjects,omitempty"` - // reference to a MultiClusterRole - RoleRef *v1.ObjectRef `protobuf:"bytes,2,opt,name=role_ref,json=roleRef,proto3" json:"role_ref,omitempty"` -} - -func (x *MultiClusterRoleBindingSpec) Reset() { - *x = MultiClusterRoleBindingSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MultiClusterRoleBindingSpec) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MultiClusterRoleBindingSpec) ProtoMessage() {} - -func (x *MultiClusterRoleBindingSpec) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MultiClusterRoleBindingSpec.ProtoReflect.Descriptor instead. -func (*MultiClusterRoleBindingSpec) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_rawDescGZIP(), []int{3} -} - -func (x *MultiClusterRoleBindingSpec) GetSubjects() []*v1.TypedObjectRef { - if x != nil { - return x.Subjects - } - return nil -} - -func (x *MultiClusterRoleBindingSpec) GetRoleRef() *v1.ObjectRef { - if x != nil { - return x.RoleRef - } - return nil -} - -type MultiClusterRoleBindingStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *MultiClusterRoleBindingStatus) Reset() { - *x = MultiClusterRoleBindingStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MultiClusterRoleBindingStatus) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MultiClusterRoleBindingStatus) ProtoMessage() {} - -func (x *MultiClusterRoleBindingStatus) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MultiClusterRoleBindingStatus.ProtoReflect.Descriptor instead. -func (*MultiClusterRoleBindingStatus) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_rawDescGZIP(), []int{4} -} - -type MultiClusterRoleSpec_Rule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ApiGroup string `protobuf:"bytes,1,opt,name=api_group,json=apiGroup,proto3" json:"api_group,omitempty"` - // The kind of the object to apply to, if left empty will apply to all kinds in a group. - Kind *wrappers.StringValue `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"` - Action MultiClusterRoleSpec_Rule_Action `protobuf:"varint,3,opt,name=action,proto3,enum=multicluster.solo.io.MultiClusterRoleSpec_Rule_Action" json:"action,omitempty"` - // The clusters and namespaces this rule applies to. - Placements []*Placement `protobuf:"bytes,4,rep,name=placements,proto3" json:"placements,omitempty"` -} - -func (x *MultiClusterRoleSpec_Rule) Reset() { - *x = MultiClusterRoleSpec_Rule{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MultiClusterRoleSpec_Rule) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MultiClusterRoleSpec_Rule) ProtoMessage() {} - -func (x *MultiClusterRoleSpec_Rule) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MultiClusterRoleSpec_Rule.ProtoReflect.Descriptor instead. -func (*MultiClusterRoleSpec_Rule) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_rawDescGZIP(), []int{1, 0} -} - -func (x *MultiClusterRoleSpec_Rule) GetApiGroup() string { - if x != nil { - return x.ApiGroup - } - return "" -} - -func (x *MultiClusterRoleSpec_Rule) GetKind() *wrappers.StringValue { - if x != nil { - return x.Kind - } - return nil -} - -func (x *MultiClusterRoleSpec_Rule) GetAction() MultiClusterRoleSpec_Rule_Action { - if x != nil { - return x.Action - } - return MultiClusterRoleSpec_Rule_ANY -} - -func (x *MultiClusterRoleSpec_Rule) GetPlacements() []*Placement { - if x != nil { - return x.Placements - } - return nil -} - -var File_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto protoreflect.FileDescriptor - -var file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_rawDesc = []byte{ - 0x0a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x73, 0x6b, 0x76, 0x32, 0x2d, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, - 0x73, 0x65, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x75, 0x6c, 0x74, - 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, - 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, - 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, - 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6b, 0x76, - 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x47, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x63, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x22, 0xfd, 0x02, 0x0a, 0x14, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x45, 0x0a, 0x05, 0x72, 0x75, - 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6d, 0x75, 0x6c, 0x74, - 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, - 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, - 0x73, 0x1a, 0x9d, 0x02, 0x0a, 0x04, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, - 0x69, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, - 0x70, 0x69, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x30, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x4e, 0x0a, 0x06, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x6d, 0x75, 0x6c, 0x74, - 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, - 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, - 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x35, 0x0a, 0x06, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4e, 0x59, 0x10, 0x00, 0x12, 0x0a, 0x0a, - 0x06, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x50, 0x44, - 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, - 0x03, 0x22, 0x18, 0x0a, 0x16, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x95, 0x01, 0x0a, 0x1b, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, - 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3d, 0x0a, 0x08, 0x73, - 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, - 0x52, 0x08, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x72, 0x6f, - 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x07, 0x72, 0x6f, 0x6c, 0x65, - 0x52, 0x65, 0x66, 0x22, 0x1f, 0x0a, 0x1d, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x42, 0x4c, 0x5a, 0x42, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, - 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x75, 0x6c, - 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, - 0x04, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_rawDescData = file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_rawDesc -) - -func file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_rawDescGZIP() []byte { - file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_rawDescData) - }) - return file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_rawDescData -} - -var file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_msgTypes = make([]protoimpl.MessageInfo, 6) -var file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_goTypes = []interface{}{ - (MultiClusterRoleSpec_Rule_Action)(0), // 0: multicluster.solo.io.MultiClusterRoleSpec.Rule.Action - (*Placement)(nil), // 1: multicluster.solo.io.Placement - (*MultiClusterRoleSpec)(nil), // 2: multicluster.solo.io.MultiClusterRoleSpec - (*MultiClusterRoleStatus)(nil), // 3: multicluster.solo.io.MultiClusterRoleStatus - (*MultiClusterRoleBindingSpec)(nil), // 4: multicluster.solo.io.MultiClusterRoleBindingSpec - (*MultiClusterRoleBindingStatus)(nil), // 5: multicluster.solo.io.MultiClusterRoleBindingStatus - (*MultiClusterRoleSpec_Rule)(nil), // 6: multicluster.solo.io.MultiClusterRoleSpec.Rule - (*v1.TypedObjectRef)(nil), // 7: core.skv2.solo.io.TypedObjectRef - (*v1.ObjectRef)(nil), // 8: core.skv2.solo.io.ObjectRef - (*wrappers.StringValue)(nil), // 9: google.protobuf.StringValue -} -var file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_depIdxs = []int32{ - 6, // 0: multicluster.solo.io.MultiClusterRoleSpec.rules:type_name -> multicluster.solo.io.MultiClusterRoleSpec.Rule - 7, // 1: multicluster.solo.io.MultiClusterRoleBindingSpec.subjects:type_name -> core.skv2.solo.io.TypedObjectRef - 8, // 2: multicluster.solo.io.MultiClusterRoleBindingSpec.role_ref:type_name -> core.skv2.solo.io.ObjectRef - 9, // 3: multicluster.solo.io.MultiClusterRoleSpec.Rule.kind:type_name -> google.protobuf.StringValue - 0, // 4: multicluster.solo.io.MultiClusterRoleSpec.Rule.action:type_name -> multicluster.solo.io.MultiClusterRoleSpec.Rule.Action - 1, // 5: multicluster.solo.io.MultiClusterRoleSpec.Rule.placements:type_name -> multicluster.solo.io.Placement - 6, // [6:6] is the sub-list for method output_type - 6, // [6:6] is the sub-list for method input_type - 6, // [6:6] is the sub-list for extension type_name - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name -} - -func init() { file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_init() } -func file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_init() { - if File_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Placement); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MultiClusterRoleSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MultiClusterRoleStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MultiClusterRoleBindingSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MultiClusterRoleBindingStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MultiClusterRoleSpec_Rule); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_rawDesc, - NumEnums: 1, - NumMessages: 6, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_goTypes, - DependencyIndexes: file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_depIdxs, - EnumInfos: file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_enumTypes, - MessageInfos: file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_msgTypes, - }.Build() - File_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto = out.File - file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_rawDesc = nil - file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_goTypes = nil - file_github_com_solo_io_solo_apis_api_skv2_enterprise_v1alpha1_multicluster_proto_depIdxs = nil -} diff --git a/pkg/api/multicluster.solo.io/v1alpha1/sets/mocks/sets.go b/pkg/api/multicluster.solo.io/v1alpha1/sets/mocks/sets.go index b58ece350..227bba3b8 100644 --- a/pkg/api/multicluster.solo.io/v1alpha1/sets/mocks/sets.go +++ b/pkg/api/multicluster.solo.io/v1alpha1/sets/mocks/sets.go @@ -15,110 +15,84 @@ import ( sets0 "k8s.io/apimachinery/pkg/util/sets" ) -// MockMultiClusterRoleSet is a mock of MultiClusterRoleSet interface +// MockMultiClusterRoleSet is a mock of MultiClusterRoleSet interface. type MockMultiClusterRoleSet struct { ctrl *gomock.Controller recorder *MockMultiClusterRoleSetMockRecorder } -// MockMultiClusterRoleSetMockRecorder is the mock recorder for MockMultiClusterRoleSet +// MockMultiClusterRoleSetMockRecorder is the mock recorder for MockMultiClusterRoleSet. type MockMultiClusterRoleSetMockRecorder struct { mock *MockMultiClusterRoleSet } -// NewMockMultiClusterRoleSet creates a new mock instance +// NewMockMultiClusterRoleSet creates a new mock instance. func NewMockMultiClusterRoleSet(ctrl *gomock.Controller) *MockMultiClusterRoleSet { mock := &MockMultiClusterRoleSet{ctrl: ctrl} mock.recorder = &MockMultiClusterRoleSetMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMultiClusterRoleSet) EXPECT() *MockMultiClusterRoleSetMockRecorder { return m.recorder } -// Keys mocks base method -func (m *MockMultiClusterRoleSet) Keys() sets0.String { +// Clone mocks base method. +func (m *MockMultiClusterRoleSet) Clone() v1alpha1sets.MultiClusterRoleSet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Keys") - ret0, _ := ret[0].(sets0.String) + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1alpha1sets.MultiClusterRoleSet) return ret0 } -// Keys indicates an expected call of Keys -func (mr *MockMultiClusterRoleSetMockRecorder) Keys() *gomock.Call { +// Clone indicates an expected call of Clone. +func (mr *MockMultiClusterRoleSetMockRecorder) Clone() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Keys)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Clone)) } -// List mocks base method -func (m *MockMultiClusterRoleSet) List(filterResource ...func(*v1alpha1.MultiClusterRole) bool) []*v1alpha1.MultiClusterRole { +// Delete mocks base method. +func (m *MockMultiClusterRoleSet) Delete(multiClusterRole ezkube.ResourceId) { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range filterResource { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "List", varargs...) - ret0, _ := ret[0].([]*v1alpha1.MultiClusterRole) - return ret0 + m.ctrl.Call(m, "Delete", multiClusterRole) } -// List indicates an expected call of List -func (mr *MockMultiClusterRoleSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { +// Delete indicates an expected call of Delete. +func (mr *MockMultiClusterRoleSetMockRecorder) Delete(multiClusterRole interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).List), filterResource...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Delete), multiClusterRole) } -// UnsortedList mocks base method -func (m *MockMultiClusterRoleSet) UnsortedList(filterResource ...func(*v1alpha1.MultiClusterRole) bool) []*v1alpha1.MultiClusterRole { +// Delta mocks base method. +func (m *MockMultiClusterRoleSet) Delta(newSet v1alpha1sets.MultiClusterRoleSet) sets.ResourceDelta { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range filterResource { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "UnsortedList", varargs...) - ret0, _ := ret[0].([]*v1alpha1.MultiClusterRole) + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) return ret0 } -// UnsortedList indicates an expected call of UnsortedList -func (mr *MockMultiClusterRoleSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { +// Delta indicates an expected call of Delta. +func (mr *MockMultiClusterRoleSetMockRecorder) Delta(newSet interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).UnsortedList), filterResource...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Delta), newSet) } -// Map mocks base method -func (m *MockMultiClusterRoleSet) Map() map[string]*v1alpha1.MultiClusterRole { +// Difference mocks base method. +func (m *MockMultiClusterRoleSet) Difference(set v1alpha1sets.MultiClusterRoleSet) v1alpha1sets.MultiClusterRoleSet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Map") - ret0, _ := ret[0].(map[string]*v1alpha1.MultiClusterRole) + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1alpha1sets.MultiClusterRoleSet) return ret0 } -// Map indicates an expected call of Map -func (mr *MockMultiClusterRoleSetMockRecorder) Map() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Map)) -} - -// Insert mocks base method -func (m *MockMultiClusterRoleSet) Insert(multiClusterRole ...*v1alpha1.MultiClusterRole) { - m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range multiClusterRole { - varargs = append(varargs, a) - } - m.ctrl.Call(m, "Insert", varargs...) -} - -// Insert indicates an expected call of Insert -func (mr *MockMultiClusterRoleSetMockRecorder) Insert(multiClusterRole ...interface{}) *gomock.Call { +// Difference indicates an expected call of Difference. +func (mr *MockMultiClusterRoleSetMockRecorder) Difference(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Insert), multiClusterRole...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Difference), set) } -// Equal mocks base method +// Equal mocks base method. func (m *MockMultiClusterRoleSet) Equal(multiClusterRoleSet v1alpha1sets.MultiClusterRoleSet) bool { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Equal", multiClusterRoleSet) @@ -126,67 +100,72 @@ func (m *MockMultiClusterRoleSet) Equal(multiClusterRoleSet v1alpha1sets.MultiCl return ret0 } -// Equal indicates an expected call of Equal +// Equal indicates an expected call of Equal. func (mr *MockMultiClusterRoleSetMockRecorder) Equal(multiClusterRoleSet interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Equal), multiClusterRoleSet) } -// Has mocks base method -func (m *MockMultiClusterRoleSet) Has(multiClusterRole ezkube.ResourceId) bool { +// Find mocks base method. +func (m *MockMultiClusterRoleSet) Find(id ezkube.ResourceId) (*v1alpha1.MultiClusterRole, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Has", multiClusterRole) - ret0, _ := ret[0].(bool) - return ret0 + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1alpha1.MultiClusterRole) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// Has indicates an expected call of Has -func (mr *MockMultiClusterRoleSetMockRecorder) Has(multiClusterRole interface{}) *gomock.Call { +// Find indicates an expected call of Find. +func (mr *MockMultiClusterRoleSetMockRecorder) Find(id interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Has), multiClusterRole) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Find), id) } -// Delete mocks base method -func (m *MockMultiClusterRoleSet) Delete(multiClusterRole ezkube.ResourceId) { +// Generic mocks base method. +func (m *MockMultiClusterRoleSet) Generic() sets.ResourceSet { m.ctrl.T.Helper() - m.ctrl.Call(m, "Delete", multiClusterRole) + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 } -// Delete indicates an expected call of Delete -func (mr *MockMultiClusterRoleSetMockRecorder) Delete(multiClusterRole interface{}) *gomock.Call { +// Generic indicates an expected call of Generic. +func (mr *MockMultiClusterRoleSetMockRecorder) Generic() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Delete), multiClusterRole) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Generic)) } -// Union mocks base method -func (m *MockMultiClusterRoleSet) Union(set v1alpha1sets.MultiClusterRoleSet) v1alpha1sets.MultiClusterRoleSet { +// Has mocks base method. +func (m *MockMultiClusterRoleSet) Has(multiClusterRole ezkube.ResourceId) bool { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Union", set) - ret0, _ := ret[0].(v1alpha1sets.MultiClusterRoleSet) + ret := m.ctrl.Call(m, "Has", multiClusterRole) + ret0, _ := ret[0].(bool) return ret0 } -// Union indicates an expected call of Union -func (mr *MockMultiClusterRoleSetMockRecorder) Union(set interface{}) *gomock.Call { +// Has indicates an expected call of Has. +func (mr *MockMultiClusterRoleSetMockRecorder) Has(multiClusterRole interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Union), set) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Has), multiClusterRole) } -// Difference mocks base method -func (m *MockMultiClusterRoleSet) Difference(set v1alpha1sets.MultiClusterRoleSet) v1alpha1sets.MultiClusterRoleSet { +// Insert mocks base method. +func (m *MockMultiClusterRoleSet) Insert(multiClusterRole ...*v1alpha1.MultiClusterRole) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Difference", set) - ret0, _ := ret[0].(v1alpha1sets.MultiClusterRoleSet) - return ret0 + varargs := []interface{}{} + for _, a := range multiClusterRole { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) } -// Difference indicates an expected call of Difference -func (mr *MockMultiClusterRoleSetMockRecorder) Difference(set interface{}) *gomock.Call { +// Insert indicates an expected call of Insert. +func (mr *MockMultiClusterRoleSetMockRecorder) Insert(multiClusterRole ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Difference), set) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Insert), multiClusterRole...) } -// Intersection mocks base method +// Intersection mocks base method. func (m *MockMultiClusterRoleSet) Intersection(set v1alpha1sets.MultiClusterRoleSet) v1alpha1sets.MultiClusterRoleSet { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Intersection", set) @@ -194,28 +173,27 @@ func (m *MockMultiClusterRoleSet) Intersection(set v1alpha1sets.MultiClusterRole return ret0 } -// Intersection indicates an expected call of Intersection +// Intersection indicates an expected call of Intersection. func (mr *MockMultiClusterRoleSetMockRecorder) Intersection(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Intersection), set) } -// Find mocks base method -func (m *MockMultiClusterRoleSet) Find(id ezkube.ResourceId) (*v1alpha1.MultiClusterRole, error) { +// Keys mocks base method. +func (m *MockMultiClusterRoleSet) Keys() sets0.String { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Find", id) - ret0, _ := ret[0].(*v1alpha1.MultiClusterRole) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 } -// Find indicates an expected call of Find -func (mr *MockMultiClusterRoleSetMockRecorder) Find(id interface{}) *gomock.Call { +// Keys indicates an expected call of Keys. +func (mr *MockMultiClusterRoleSetMockRecorder) Keys() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Find), id) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Keys)) } -// Length mocks base method +// Length mocks base method. func (m *MockMultiClusterRoleSet) Length() int { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Length") @@ -223,36 +201,72 @@ func (m *MockMultiClusterRoleSet) Length() int { return ret0 } -// Length indicates an expected call of Length +// Length indicates an expected call of Length. func (mr *MockMultiClusterRoleSetMockRecorder) Length() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Length)) } -// Generic mocks base method -func (m *MockMultiClusterRoleSet) Generic() sets.ResourceSet { +// List mocks base method. +func (m *MockMultiClusterRoleSet) List(filterResource ...func(*v1alpha1.MultiClusterRole) bool) []*v1alpha1.MultiClusterRole { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Generic") - ret0, _ := ret[0].(sets.ResourceSet) + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1alpha1.MultiClusterRole) return ret0 } -// Generic indicates an expected call of Generic -func (mr *MockMultiClusterRoleSetMockRecorder) Generic() *gomock.Call { +// List indicates an expected call of List. +func (mr *MockMultiClusterRoleSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Generic)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).List), filterResource...) } -// Delta mocks base method -func (m *MockMultiClusterRoleSet) Delta(newSet v1alpha1sets.MultiClusterRoleSet) sets.ResourceDelta { +// Map mocks base method. +func (m *MockMultiClusterRoleSet) Map() map[string]*v1alpha1.MultiClusterRole { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Delta", newSet) - ret0, _ := ret[0].(sets.ResourceDelta) + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1alpha1.MultiClusterRole) return ret0 } -// Delta indicates an expected call of Delta -func (mr *MockMultiClusterRoleSetMockRecorder) Delta(newSet interface{}) *gomock.Call { +// Map indicates an expected call of Map. +func (mr *MockMultiClusterRoleSetMockRecorder) Map() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Delta), newSet) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockMultiClusterRoleSet) Union(set v1alpha1sets.MultiClusterRoleSet) v1alpha1sets.MultiClusterRoleSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1alpha1sets.MultiClusterRoleSet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockMultiClusterRoleSetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockMultiClusterRoleSet) UnsortedList(filterResource ...func(*v1alpha1.MultiClusterRole) bool) []*v1alpha1.MultiClusterRole { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1alpha1.MultiClusterRole) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockMultiClusterRoleSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockMultiClusterRoleSet)(nil).UnsortedList), filterResource...) } diff --git a/pkg/api/multicluster.solo.io/v1alpha1/sets/sets.go b/pkg/api/multicluster.solo.io/v1alpha1/sets/sets.go index 69596eb46..7473f5804 100644 --- a/pkg/api/multicluster.solo.io/v1alpha1/sets/sets.go +++ b/pkg/api/multicluster.solo.io/v1alpha1/sets/sets.go @@ -17,8 +17,10 @@ type MultiClusterRoleSet interface { // Get the set stored keys Keys() sets.String // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. List(filterResource ...func(*multicluster_solo_io_v1alpha1.MultiClusterRole) bool) []*multicluster_solo_io_v1alpha1.MultiClusterRole // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. UnsortedList(filterResource ...func(*multicluster_solo_io_v1alpha1.MultiClusterRole) bool) []*multicluster_solo_io_v1alpha1.MultiClusterRole // Return the Set as a map of key to resource. Map() map[string]*multicluster_solo_io_v1alpha1.MultiClusterRole @@ -44,6 +46,8 @@ type MultiClusterRoleSet interface { Generic() sksets.ResourceSet // returns the delta between this and and another MultiClusterRoleSet Delta(newSet MultiClusterRoleSet) sksets.ResourceDelta + // Create a deep copy of the current MultiClusterRoleSet + Clone() MultiClusterRoleSet } func makeGenericMultiClusterRoleSet(multiClusterRoleList []*multicluster_solo_io_v1alpha1.MultiClusterRole) sksets.ResourceSet { @@ -83,6 +87,7 @@ func (s *multiClusterRoleSet) List(filterResource ...func(*multicluster_solo_io_ } var genericFilters []func(ezkube.ResourceId) bool for _, filter := range filterResource { + filter := filter genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { return filter(obj.(*multicluster_solo_io_v1alpha1.MultiClusterRole)) }) @@ -102,6 +107,7 @@ func (s *multiClusterRoleSet) UnsortedList(filterResource ...func(*multicluster_ } var genericFilters []func(ezkube.ResourceId) bool for _, filter := range filterResource { + filter := filter genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { return filter(obj.(*multicluster_solo_io_v1alpha1.MultiClusterRole)) }) @@ -222,3 +228,10 @@ func (s *multiClusterRoleSet) Delta(newSet MultiClusterRoleSet) sksets.ResourceD } return s.Generic().Delta(newSet.Generic()) } + +func (s *multiClusterRoleSet) Clone() MultiClusterRoleSet { + if s == nil { + return nil + } + return &multiClusterRoleSet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} diff --git a/pkg/api/multicluster.solo.io/v1alpha1/types.go b/pkg/api/multicluster.solo.io/v1alpha1/types.go index c14791665..0322e897a 100644 --- a/pkg/api/multicluster.solo.io/v1alpha1/types.go +++ b/pkg/api/multicluster.solo.io/v1alpha1/types.go @@ -4,6 +4,7 @@ package v1alpha1 import ( + i704c263ff616014f5bdd9e2c7d50a75d "github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime/schema" ) @@ -25,8 +26,8 @@ type MultiClusterRole struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - Spec MultiClusterRoleSpec `json:"spec,omitempty"` - Status MultiClusterRoleStatus `json:"status,omitempty"` + Spec i704c263ff616014f5bdd9e2c7d50a75d.MultiClusterRoleSpec `json:"spec,omitempty"` + Status i704c263ff616014f5bdd9e2c7d50a75d.MultiClusterRoleStatus `json:"status,omitempty"` } // GVK returns the GroupVersionKind associated with the resource type. diff --git a/pkg/api/multicluster.solo.io/v1alpha1/json.gen.go b/pkg/api/multicluster.solo.io/v1alpha1/types/json.gen.go similarity index 90% rename from pkg/api/multicluster.solo.io/v1alpha1/json.gen.go rename to pkg/api/multicluster.solo.io/v1alpha1/types/json.gen.go index e24b23ff2..e8ac154f5 100644 --- a/pkg/api/multicluster.solo.io/v1alpha1/json.gen.go +++ b/pkg/api/multicluster.solo.io/v1alpha1/types/json.gen.go @@ -2,7 +2,7 @@ // Generated json marshal and unmarshal functions -package v1alpha1 +package types import ( bytes "bytes" @@ -21,7 +21,10 @@ var _ = math.Inf var ( marshaller = &skv2jsonpb.Marshaler{} - unmarshaller = &jsonpb.Unmarshaler{} + unmarshaller = &jsonpb.Unmarshaler{ + AllowUnknownFields: true, + } + strictUnmarshaller = &jsonpb.Unmarshaler{} ) // MarshalJSON is a custom marshaler for MultiClusterRoleSpec diff --git a/pkg/api/multicluster.solo.io/v1alpha1/multicluster.pb.equal.go b/pkg/api/multicluster.solo.io/v1alpha1/types/multicluster.pb.equal.go similarity index 97% rename from pkg/api/multicluster.solo.io/v1alpha1/multicluster.pb.equal.go rename to pkg/api/multicluster.solo.io/v1alpha1/types/multicluster.pb.equal.go index 20053b294..6afd108ab 100644 --- a/pkg/api/multicluster.solo.io/v1alpha1/multicluster.pb.equal.go +++ b/pkg/api/multicluster.solo.io/v1alpha1/types/multicluster.pb.equal.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/skv2-enterprise/v1alpha1/multicluster.proto +// source: github.com/solo-io/solo-apis/api/gloo-fed/multicluster/v1alpha1/multicluster.proto -package v1alpha1 +package types import ( "bytes" diff --git a/pkg/api/multicluster.solo.io/v1alpha1/types/multicluster.pb.go b/pkg/api/multicluster.solo.io/v1alpha1/types/multicluster.pb.go new file mode 100644 index 000000000..80594d32c --- /dev/null +++ b/pkg/api/multicluster.solo.io/v1alpha1/types/multicluster.pb.go @@ -0,0 +1,509 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v3.6.1 +// source: github.com/solo-io/solo-apis/api/gloo-fed/multicluster/v1alpha1/multicluster.proto + +package types + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + _ "github.com/solo-io/protoc-gen-ext/extproto" + v1 "github.com/solo-io/skv2/pkg/api/core.skv2.solo.io/v1" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type MultiClusterRoleSpec_Rule_Action int32 + +const ( + MultiClusterRoleSpec_Rule_ANY MultiClusterRoleSpec_Rule_Action = 0 + MultiClusterRoleSpec_Rule_CREATE MultiClusterRoleSpec_Rule_Action = 1 + MultiClusterRoleSpec_Rule_UPDATE MultiClusterRoleSpec_Rule_Action = 2 + MultiClusterRoleSpec_Rule_DELETE MultiClusterRoleSpec_Rule_Action = 3 +) + +// Enum value maps for MultiClusterRoleSpec_Rule_Action. +var ( + MultiClusterRoleSpec_Rule_Action_name = map[int32]string{ + 0: "ANY", + 1: "CREATE", + 2: "UPDATE", + 3: "DELETE", + } + MultiClusterRoleSpec_Rule_Action_value = map[string]int32{ + "ANY": 0, + "CREATE": 1, + "UPDATE": 2, + "DELETE": 3, + } +) + +func (x MultiClusterRoleSpec_Rule_Action) Enum() *MultiClusterRoleSpec_Rule_Action { + p := new(MultiClusterRoleSpec_Rule_Action) + *p = x + return p +} + +func (x MultiClusterRoleSpec_Rule_Action) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MultiClusterRoleSpec_Rule_Action) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_enumTypes[0].Descriptor() +} + +func (MultiClusterRoleSpec_Rule_Action) Type() protoreflect.EnumType { + return &file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_enumTypes[0] +} + +func (x MultiClusterRoleSpec_Rule_Action) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MultiClusterRoleSpec_Rule_Action.Descriptor instead. +func (MultiClusterRoleSpec_Rule_Action) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_rawDescGZIP(), []int{1, 0, 0} +} + +// Object representing the clusters and namespaces on which resources are created/updated/deleted, +// computed as the cartesian product of all declared namespace and cluster values. +type Placement struct { + state protoimpl.MessageState `protogen:"open.v1"` + // List of namespaces within each placement cluster in which to create/update/delete resources. + // Wildcard ("*") represents any namespace. + Namespaces []string `protobuf:"bytes,1,rep,name=namespaces,proto3" json:"namespaces,omitempty"` + // List of clusters (represented by a string) in which to create/update/delete resources. + // Wildcard ("*") represents any cluster. + Clusters []string `protobuf:"bytes,2,rep,name=clusters,proto3" json:"clusters,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Placement) Reset() { + *x = Placement{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Placement) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Placement) ProtoMessage() {} + +func (x *Placement) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Placement.ProtoReflect.Descriptor instead. +func (*Placement) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_rawDescGZIP(), []int{0} +} + +func (x *Placement) GetNamespaces() []string { + if x != nil { + return x.Namespaces + } + return nil +} + +func (x *Placement) GetClusters() []string { + if x != nil { + return x.Clusters + } + return nil +} + +type MultiClusterRoleSpec struct { + state protoimpl.MessageState `protogen:"open.v1"` + Rules []*MultiClusterRoleSpec_Rule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MultiClusterRoleSpec) Reset() { + *x = MultiClusterRoleSpec{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MultiClusterRoleSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiClusterRoleSpec) ProtoMessage() {} + +func (x *MultiClusterRoleSpec) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MultiClusterRoleSpec.ProtoReflect.Descriptor instead. +func (*MultiClusterRoleSpec) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_rawDescGZIP(), []int{1} +} + +func (x *MultiClusterRoleSpec) GetRules() []*MultiClusterRoleSpec_Rule { + if x != nil { + return x.Rules + } + return nil +} + +type MultiClusterRoleStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MultiClusterRoleStatus) Reset() { + *x = MultiClusterRoleStatus{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MultiClusterRoleStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiClusterRoleStatus) ProtoMessage() {} + +func (x *MultiClusterRoleStatus) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MultiClusterRoleStatus.ProtoReflect.Descriptor instead. +func (*MultiClusterRoleStatus) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_rawDescGZIP(), []int{2} +} + +type MultiClusterRoleBindingSpec struct { + state protoimpl.MessageState `protogen:"open.v1"` + // reference to users or groups to apply the MultiClusterRole to + Subjects []*v1.TypedObjectRef `protobuf:"bytes,1,rep,name=subjects,proto3" json:"subjects,omitempty"` + // reference to a MultiClusterRole + RoleRef *v1.ObjectRef `protobuf:"bytes,2,opt,name=role_ref,json=roleRef,proto3" json:"role_ref,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MultiClusterRoleBindingSpec) Reset() { + *x = MultiClusterRoleBindingSpec{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MultiClusterRoleBindingSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiClusterRoleBindingSpec) ProtoMessage() {} + +func (x *MultiClusterRoleBindingSpec) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MultiClusterRoleBindingSpec.ProtoReflect.Descriptor instead. +func (*MultiClusterRoleBindingSpec) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_rawDescGZIP(), []int{3} +} + +func (x *MultiClusterRoleBindingSpec) GetSubjects() []*v1.TypedObjectRef { + if x != nil { + return x.Subjects + } + return nil +} + +func (x *MultiClusterRoleBindingSpec) GetRoleRef() *v1.ObjectRef { + if x != nil { + return x.RoleRef + } + return nil +} + +type MultiClusterRoleBindingStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MultiClusterRoleBindingStatus) Reset() { + *x = MultiClusterRoleBindingStatus{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MultiClusterRoleBindingStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiClusterRoleBindingStatus) ProtoMessage() {} + +func (x *MultiClusterRoleBindingStatus) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MultiClusterRoleBindingStatus.ProtoReflect.Descriptor instead. +func (*MultiClusterRoleBindingStatus) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_rawDescGZIP(), []int{4} +} + +type MultiClusterRoleSpec_Rule struct { + state protoimpl.MessageState `protogen:"open.v1"` + ApiGroup string `protobuf:"bytes,1,opt,name=api_group,json=apiGroup,proto3" json:"api_group,omitempty"` + // The kind of the object to apply to, if left empty will apply to all kinds in a group. + Kind *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"` + Action MultiClusterRoleSpec_Rule_Action `protobuf:"varint,3,opt,name=action,proto3,enum=multicluster.solo.io.MultiClusterRoleSpec_Rule_Action" json:"action,omitempty"` + // The clusters and namespaces this rule applies to. + Placements []*Placement `protobuf:"bytes,4,rep,name=placements,proto3" json:"placements,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MultiClusterRoleSpec_Rule) Reset() { + *x = MultiClusterRoleSpec_Rule{} + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MultiClusterRoleSpec_Rule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiClusterRoleSpec_Rule) ProtoMessage() {} + +func (x *MultiClusterRoleSpec_Rule) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MultiClusterRoleSpec_Rule.ProtoReflect.Descriptor instead. +func (*MultiClusterRoleSpec_Rule) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *MultiClusterRoleSpec_Rule) GetApiGroup() string { + if x != nil { + return x.ApiGroup + } + return "" +} + +func (x *MultiClusterRoleSpec_Rule) GetKind() *wrapperspb.StringValue { + if x != nil { + return x.Kind + } + return nil +} + +func (x *MultiClusterRoleSpec_Rule) GetAction() MultiClusterRoleSpec_Rule_Action { + if x != nil { + return x.Action + } + return MultiClusterRoleSpec_Rule_ANY +} + +func (x *MultiClusterRoleSpec_Rule) GetPlacements() []*Placement { + if x != nil { + return x.Placements + } + return nil +} + +var File_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto protoreflect.FileDescriptor + +var file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_rawDesc = string([]byte{ + 0x0a, 0x52, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, + 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2d, 0x66, 0x65, 0x64, 0x2f, 0x6d, 0x75, 0x6c, 0x74, + 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6b, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x72, 0x65, + 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x47, + 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x22, 0xfd, 0x02, 0x0a, 0x14, 0x4d, 0x75, 0x6c, 0x74, + 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, + 0x12, 0x45, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2f, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x52, 0x75, 0x6c, 0x65, + 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x1a, 0x9d, 0x02, 0x0a, 0x04, 0x52, 0x75, 0x6c, 0x65, + 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x69, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x69, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x30, 0x0a, + 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, + 0x4e, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x36, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x52, 0x75, 0x6c, 0x65, + 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x3f, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x22, 0x35, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4e, + 0x59, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, + 0x0a, 0x0a, 0x06, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x44, + 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x03, 0x22, 0x18, 0x0a, 0x16, 0x4d, 0x75, 0x6c, 0x74, 0x69, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x22, 0x95, 0x01, 0x0a, 0x1b, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65, + 0x63, 0x12, 0x3d, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x08, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x12, 0x37, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x6b, 0x76, 0x32, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, + 0x52, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x22, 0x1f, 0x0a, 0x1d, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x52, 0xb8, 0xf5, 0x04, 0x01, + 0xc0, 0xf5, 0x04, 0x01, 0x5a, 0x48, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_rawDescOnce sync.Once + file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_rawDescData []byte +) + +func file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_rawDescGZIP() []byte { + file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_rawDescOnce.Do(func() { + file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_rawDesc))) + }) + return file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_rawDescData +} + +var file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_goTypes = []any{ + (MultiClusterRoleSpec_Rule_Action)(0), // 0: multicluster.solo.io.MultiClusterRoleSpec.Rule.Action + (*Placement)(nil), // 1: multicluster.solo.io.Placement + (*MultiClusterRoleSpec)(nil), // 2: multicluster.solo.io.MultiClusterRoleSpec + (*MultiClusterRoleStatus)(nil), // 3: multicluster.solo.io.MultiClusterRoleStatus + (*MultiClusterRoleBindingSpec)(nil), // 4: multicluster.solo.io.MultiClusterRoleBindingSpec + (*MultiClusterRoleBindingStatus)(nil), // 5: multicluster.solo.io.MultiClusterRoleBindingStatus + (*MultiClusterRoleSpec_Rule)(nil), // 6: multicluster.solo.io.MultiClusterRoleSpec.Rule + (*v1.TypedObjectRef)(nil), // 7: core.skv2.solo.io.TypedObjectRef + (*v1.ObjectRef)(nil), // 8: core.skv2.solo.io.ObjectRef + (*wrapperspb.StringValue)(nil), // 9: google.protobuf.StringValue +} +var file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_depIdxs = []int32{ + 6, // 0: multicluster.solo.io.MultiClusterRoleSpec.rules:type_name -> multicluster.solo.io.MultiClusterRoleSpec.Rule + 7, // 1: multicluster.solo.io.MultiClusterRoleBindingSpec.subjects:type_name -> core.skv2.solo.io.TypedObjectRef + 8, // 2: multicluster.solo.io.MultiClusterRoleBindingSpec.role_ref:type_name -> core.skv2.solo.io.ObjectRef + 9, // 3: multicluster.solo.io.MultiClusterRoleSpec.Rule.kind:type_name -> google.protobuf.StringValue + 0, // 4: multicluster.solo.io.MultiClusterRoleSpec.Rule.action:type_name -> multicluster.solo.io.MultiClusterRoleSpec.Rule.Action + 1, // 5: multicluster.solo.io.MultiClusterRoleSpec.Rule.placements:type_name -> multicluster.solo.io.Placement + 6, // [6:6] is the sub-list for method output_type + 6, // [6:6] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name +} + +func init() { + file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_init() +} +func file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_init() { + if File_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_rawDesc)), + NumEnums: 1, + NumMessages: 6, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_goTypes, + DependencyIndexes: file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_depIdxs, + EnumInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_enumTypes, + MessageInfos: file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_msgTypes, + }.Build() + File_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto = out.File + file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_goTypes = nil + file_github_com_solo_io_solo_apis_api_gloo_fed_multicluster_v1alpha1_multicluster_proto_depIdxs = nil +} diff --git a/pkg/api/multicluster.solo.io/v1alpha1/multicluster.pb.hash.go b/pkg/api/multicluster.solo.io/v1alpha1/types/multicluster.pb.hash.go similarity index 51% rename from pkg/api/multicluster.solo.io/v1alpha1/multicluster.pb.hash.go rename to pkg/api/multicluster.solo.io/v1alpha1/types/multicluster.pb.hash.go index 8bb9c04f0..e7c3d2d0d 100644 --- a/pkg/api/multicluster.solo.io/v1alpha1/multicluster.pb.hash.go +++ b/pkg/api/multicluster.solo.io/v1alpha1/types/multicluster.pb.hash.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-ext. DO NOT EDIT. -// source: github.com/solo-io/solo-apis/api/skv2-enterprise/v1alpha1/multicluster.proto +// source: github.com/solo-io/solo-apis/api/gloo-fed/multicluster/v1alpha1/multicluster.proto -package v1alpha1 +package types import ( "encoding/binary" @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Placement) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -34,7 +38,7 @@ func (m *Placement) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("multicluster.solo.io.github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1.Placement")); err != nil { + if _, err = hasher.Write([]byte("multicluster.solo.io.github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types.Placement")); err != nil { return 0, err } @@ -58,6 +62,10 @@ func (m *Placement) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *MultiClusterRoleSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -66,21 +74,27 @@ func (m *MultiClusterRoleSpec) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("multicluster.solo.io.github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1.MultiClusterRoleSpec")); err != nil { + if _, err = hasher.Write([]byte("multicluster.solo.io.github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types.MultiClusterRoleSpec")); err != nil { return 0, err } for _, v := range m.GetRules() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -92,6 +106,10 @@ func (m *MultiClusterRoleSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *MultiClusterRoleStatus) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -100,7 +118,7 @@ func (m *MultiClusterRoleStatus) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("multicluster.solo.io.github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1.MultiClusterRoleStatus")); err != nil { + if _, err = hasher.Write([]byte("multicluster.solo.io.github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types.MultiClusterRoleStatus")); err != nil { return 0, err } @@ -108,6 +126,10 @@ func (m *MultiClusterRoleStatus) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *MultiClusterRoleBindingSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -116,21 +138,27 @@ func (m *MultiClusterRoleBindingSpec) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("multicluster.solo.io.github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1.MultiClusterRoleBindingSpec")); err != nil { + if _, err = hasher.Write([]byte("multicluster.solo.io.github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types.MultiClusterRoleBindingSpec")); err != nil { return 0, err } for _, v := range m.GetSubjects() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -139,14 +167,20 @@ func (m *MultiClusterRoleBindingSpec) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetRoleRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RoleRef")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRoleRef(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRoleRef(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RoleRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -156,6 +190,10 @@ func (m *MultiClusterRoleBindingSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *MultiClusterRoleBindingStatus) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -164,7 +202,7 @@ func (m *MultiClusterRoleBindingStatus) Hash(hasher hash.Hash64) (uint64, error) hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("multicluster.solo.io.github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1.MultiClusterRoleBindingStatus")); err != nil { + if _, err = hasher.Write([]byte("multicluster.solo.io.github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types.MultiClusterRoleBindingStatus")); err != nil { return 0, err } @@ -172,6 +210,10 @@ func (m *MultiClusterRoleBindingStatus) Hash(hasher hash.Hash64) (uint64, error) } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *MultiClusterRoleSpec_Rule) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -180,7 +222,7 @@ func (m *MultiClusterRoleSpec_Rule) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("multicluster.solo.io.github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1.MultiClusterRoleSpec_Rule")); err != nil { + if _, err = hasher.Write([]byte("multicluster.solo.io.github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types.MultiClusterRoleSpec_Rule")); err != nil { return 0, err } @@ -189,14 +231,20 @@ func (m *MultiClusterRoleSpec_Rule) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetKind()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Kind")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetKind(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetKind(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Kind")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -210,14 +258,20 @@ func (m *MultiClusterRoleSpec_Rule) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetPlacements() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } diff --git a/pkg/api/multicluster.solo.io/v1alpha1/types/multicluster.pb.uniquehash.go b/pkg/api/multicluster.solo.io/v1alpha1/types/multicluster.pb.uniquehash.go new file mode 100644 index 000000000..fafe4c6bd --- /dev/null +++ b/pkg/api/multicluster.solo.io/v1alpha1/types/multicluster.pb.uniquehash.go @@ -0,0 +1,321 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/gloo-fed/multicluster/v1alpha1/multicluster.proto + +package types + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Placement) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("multicluster.solo.io.github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types.Placement")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Namespaces")); err != nil { + return 0, err + } + for i, v := range m.GetNamespaces() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + if _, err = hasher.Write([]byte("Clusters")); err != nil { + return 0, err + } + for i, v := range m.GetClusters() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MultiClusterRoleSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("multicluster.solo.io.github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types.MultiClusterRoleSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Rules")); err != nil { + return 0, err + } + for i, v := range m.GetRules() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MultiClusterRoleStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("multicluster.solo.io.github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types.MultiClusterRoleStatus")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MultiClusterRoleBindingSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("multicluster.solo.io.github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types.MultiClusterRoleBindingSpec")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Subjects")); err != nil { + return 0, err + } + for i, v := range m.GetSubjects() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetRoleRef()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RoleRef")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRoleRef(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RoleRef")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MultiClusterRoleBindingStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("multicluster.solo.io.github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types.MultiClusterRoleBindingStatus")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MultiClusterRoleSpec_Rule) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("multicluster.solo.io.github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types.MultiClusterRoleSpec_Rule")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ApiGroup")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetApiGroup())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetKind()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Kind")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetKind(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Kind")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Action")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAction()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Placements")); err != nil { + return 0, err + } + for i, v := range m.GetPlacements() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/multicluster.solo.io/v1alpha1/proto_deepcopy.go b/pkg/api/multicluster.solo.io/v1alpha1/types/proto_deepcopy.go similarity index 51% rename from pkg/api/multicluster.solo.io/v1alpha1/proto_deepcopy.go rename to pkg/api/multicluster.solo.io/v1alpha1/types/proto_deepcopy.go index cf3a23240..2a3d8453e 100644 --- a/pkg/api/multicluster.solo.io/v1alpha1/proto_deepcopy.go +++ b/pkg/api/multicluster.solo.io/v1alpha1/types/proto_deepcopy.go @@ -2,20 +2,31 @@ // This file contains generated Deepcopy methods for proto-based Spec and Status fields -package v1alpha1 +package types import ( proto "github.com/golang/protobuf/proto" + "github.com/solo-io/protoc-gen-ext/pkg/clone" ) // DeepCopyInto for the MultiClusterRole.Spec func (in *MultiClusterRoleSpec) DeepCopyInto(out *MultiClusterRoleSpec) { - p := proto.Clone(in).(*MultiClusterRoleSpec) + var p *MultiClusterRoleSpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*MultiClusterRoleSpec) + } else { + p = proto.Clone(in).(*MultiClusterRoleSpec) + } *out = *p } // DeepCopyInto for the MultiClusterRole.Status func (in *MultiClusterRoleStatus) DeepCopyInto(out *MultiClusterRoleStatus) { - p := proto.Clone(in).(*MultiClusterRoleStatus) + var p *MultiClusterRoleStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*MultiClusterRoleStatus) + } else { + p = proto.Clone(in).(*MultiClusterRoleStatus) + } *out = *p } diff --git a/pkg/api/ratelimit.solo.io/v1alpha1/clients.go b/pkg/api/ratelimit.solo.io/v1alpha1/clients.go index fc25f9ef4..c37fd8695 100644 --- a/pkg/api/ratelimit.solo.io/v1alpha1/clients.go +++ b/pkg/api/ratelimit.solo.io/v1alpha1/clients.go @@ -49,7 +49,7 @@ type clientSet struct { func NewClientsetFromConfig(cfg *rest.Config) (Clientset, error) { scheme := scheme.Scheme - if err := AddToScheme(scheme); err != nil { + if err := SchemeBuilder.AddToScheme(scheme); err != nil { return nil, err } client, err := client.New(cfg, client.Options{ @@ -108,10 +108,10 @@ type RateLimitConfigWriter interface { type RateLimitConfigStatusWriter interface { // Update updates the fields corresponding to the status subresource for the // given RateLimitConfig object. - UpdateRateLimitConfigStatus(ctx context.Context, obj *RateLimitConfig, opts ...client.UpdateOption) error + UpdateRateLimitConfigStatus(ctx context.Context, obj *RateLimitConfig, opts ...client.SubResourceUpdateOption) error // Patch patches the given RateLimitConfig object's subresource. - PatchRateLimitConfigStatus(ctx context.Context, obj *RateLimitConfig, patch client.Patch, opts ...client.PatchOption) error + PatchRateLimitConfigStatus(ctx context.Context, obj *RateLimitConfig, patch client.Patch, opts ...client.SubResourcePatchOption) error } // Client knows how to perform CRUD operations on RateLimitConfigs. @@ -182,11 +182,11 @@ func (c *rateLimitConfigClient) UpsertRateLimitConfig(ctx context.Context, obj * return err } -func (c *rateLimitConfigClient) UpdateRateLimitConfigStatus(ctx context.Context, obj *RateLimitConfig, opts ...client.UpdateOption) error { +func (c *rateLimitConfigClient) UpdateRateLimitConfigStatus(ctx context.Context, obj *RateLimitConfig, opts ...client.SubResourceUpdateOption) error { return c.client.Status().Update(ctx, obj, opts...) } -func (c *rateLimitConfigClient) PatchRateLimitConfigStatus(ctx context.Context, obj *RateLimitConfig, patch client.Patch, opts ...client.PatchOption) error { +func (c *rateLimitConfigClient) PatchRateLimitConfigStatus(ctx context.Context, obj *RateLimitConfig, patch client.Patch, opts ...client.SubResourcePatchOption) error { return c.client.Status().Patch(ctx, obj, patch, opts...) } diff --git a/pkg/api/ratelimit.solo.io/v1alpha1/controller/mocks/event_handlers.go b/pkg/api/ratelimit.solo.io/v1alpha1/controller/mocks/event_handlers.go index f3236b2dc..4e95d01c1 100644 --- a/pkg/api/ratelimit.solo.io/v1alpha1/controller/mocks/event_handlers.go +++ b/pkg/api/ratelimit.solo.io/v1alpha1/controller/mocks/event_handlers.go @@ -14,30 +14,30 @@ import ( predicate "sigs.k8s.io/controller-runtime/pkg/predicate" ) -// MockRateLimitConfigEventHandler is a mock of RateLimitConfigEventHandler interface +// MockRateLimitConfigEventHandler is a mock of RateLimitConfigEventHandler interface. type MockRateLimitConfigEventHandler struct { ctrl *gomock.Controller recorder *MockRateLimitConfigEventHandlerMockRecorder } -// MockRateLimitConfigEventHandlerMockRecorder is the mock recorder for MockRateLimitConfigEventHandler +// MockRateLimitConfigEventHandlerMockRecorder is the mock recorder for MockRateLimitConfigEventHandler. type MockRateLimitConfigEventHandlerMockRecorder struct { mock *MockRateLimitConfigEventHandler } -// NewMockRateLimitConfigEventHandler creates a new mock instance +// NewMockRateLimitConfigEventHandler creates a new mock instance. func NewMockRateLimitConfigEventHandler(ctrl *gomock.Controller) *MockRateLimitConfigEventHandler { mock := &MockRateLimitConfigEventHandler{ctrl: ctrl} mock.recorder = &MockRateLimitConfigEventHandlerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockRateLimitConfigEventHandler) EXPECT() *MockRateLimitConfigEventHandlerMockRecorder { return m.recorder } -// CreateRateLimitConfig mocks base method +// CreateRateLimitConfig mocks base method. func (m *MockRateLimitConfigEventHandler) CreateRateLimitConfig(obj *v1alpha1.RateLimitConfig) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "CreateRateLimitConfig", obj) @@ -45,27 +45,13 @@ func (m *MockRateLimitConfigEventHandler) CreateRateLimitConfig(obj *v1alpha1.Ra return ret0 } -// CreateRateLimitConfig indicates an expected call of CreateRateLimitConfig +// CreateRateLimitConfig indicates an expected call of CreateRateLimitConfig. func (mr *MockRateLimitConfigEventHandlerMockRecorder) CreateRateLimitConfig(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigEventHandler)(nil).CreateRateLimitConfig), obj) } -// UpdateRateLimitConfig mocks base method -func (m *MockRateLimitConfigEventHandler) UpdateRateLimitConfig(old, new *v1alpha1.RateLimitConfig) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateRateLimitConfig", old, new) - ret0, _ := ret[0].(error) - return ret0 -} - -// UpdateRateLimitConfig indicates an expected call of UpdateRateLimitConfig -func (mr *MockRateLimitConfigEventHandlerMockRecorder) UpdateRateLimitConfig(old, new interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigEventHandler)(nil).UpdateRateLimitConfig), old, new) -} - -// DeleteRateLimitConfig mocks base method +// DeleteRateLimitConfig mocks base method. func (m *MockRateLimitConfigEventHandler) DeleteRateLimitConfig(obj *v1alpha1.RateLimitConfig) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "DeleteRateLimitConfig", obj) @@ -73,13 +59,13 @@ func (m *MockRateLimitConfigEventHandler) DeleteRateLimitConfig(obj *v1alpha1.Ra return ret0 } -// DeleteRateLimitConfig indicates an expected call of DeleteRateLimitConfig +// DeleteRateLimitConfig indicates an expected call of DeleteRateLimitConfig. func (mr *MockRateLimitConfigEventHandlerMockRecorder) DeleteRateLimitConfig(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigEventHandler)(nil).DeleteRateLimitConfig), obj) } -// GenericRateLimitConfig mocks base method +// GenericRateLimitConfig mocks base method. func (m *MockRateLimitConfigEventHandler) GenericRateLimitConfig(obj *v1alpha1.RateLimitConfig) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GenericRateLimitConfig", obj) @@ -87,36 +73,50 @@ func (m *MockRateLimitConfigEventHandler) GenericRateLimitConfig(obj *v1alpha1.R return ret0 } -// GenericRateLimitConfig indicates an expected call of GenericRateLimitConfig +// GenericRateLimitConfig indicates an expected call of GenericRateLimitConfig. func (mr *MockRateLimitConfigEventHandlerMockRecorder) GenericRateLimitConfig(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenericRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigEventHandler)(nil).GenericRateLimitConfig), obj) } -// MockRateLimitConfigEventWatcher is a mock of RateLimitConfigEventWatcher interface +// UpdateRateLimitConfig mocks base method. +func (m *MockRateLimitConfigEventHandler) UpdateRateLimitConfig(old, new *v1alpha1.RateLimitConfig) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateRateLimitConfig", old, new) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateRateLimitConfig indicates an expected call of UpdateRateLimitConfig. +func (mr *MockRateLimitConfigEventHandlerMockRecorder) UpdateRateLimitConfig(old, new interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigEventHandler)(nil).UpdateRateLimitConfig), old, new) +} + +// MockRateLimitConfigEventWatcher is a mock of RateLimitConfigEventWatcher interface. type MockRateLimitConfigEventWatcher struct { ctrl *gomock.Controller recorder *MockRateLimitConfigEventWatcherMockRecorder } -// MockRateLimitConfigEventWatcherMockRecorder is the mock recorder for MockRateLimitConfigEventWatcher +// MockRateLimitConfigEventWatcherMockRecorder is the mock recorder for MockRateLimitConfigEventWatcher. type MockRateLimitConfigEventWatcherMockRecorder struct { mock *MockRateLimitConfigEventWatcher } -// NewMockRateLimitConfigEventWatcher creates a new mock instance +// NewMockRateLimitConfigEventWatcher creates a new mock instance. func NewMockRateLimitConfigEventWatcher(ctrl *gomock.Controller) *MockRateLimitConfigEventWatcher { mock := &MockRateLimitConfigEventWatcher{ctrl: ctrl} mock.recorder = &MockRateLimitConfigEventWatcherMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockRateLimitConfigEventWatcher) EXPECT() *MockRateLimitConfigEventWatcherMockRecorder { return m.recorder } -// AddEventHandler mocks base method +// AddEventHandler mocks base method. func (m *MockRateLimitConfigEventWatcher) AddEventHandler(ctx context.Context, h controller.RateLimitConfigEventHandler, predicates ...predicate.Predicate) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, h} @@ -128,7 +128,7 @@ func (m *MockRateLimitConfigEventWatcher) AddEventHandler(ctx context.Context, h return ret0 } -// AddEventHandler indicates an expected call of AddEventHandler +// AddEventHandler indicates an expected call of AddEventHandler. func (mr *MockRateLimitConfigEventWatcherMockRecorder) AddEventHandler(ctx, h interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, h}, predicates...) diff --git a/pkg/api/ratelimit.solo.io/v1alpha1/controller/mocks/multicluster_reconcilers.go b/pkg/api/ratelimit.solo.io/v1alpha1/controller/mocks/multicluster_reconcilers.go index 03c7fc4d4..4383c3b80 100644 --- a/pkg/api/ratelimit.solo.io/v1alpha1/controller/mocks/multicluster_reconcilers.go +++ b/pkg/api/ratelimit.solo.io/v1alpha1/controller/mocks/multicluster_reconcilers.go @@ -15,30 +15,30 @@ import ( predicate "sigs.k8s.io/controller-runtime/pkg/predicate" ) -// MockMulticlusterRateLimitConfigReconciler is a mock of MulticlusterRateLimitConfigReconciler interface +// MockMulticlusterRateLimitConfigReconciler is a mock of MulticlusterRateLimitConfigReconciler interface. type MockMulticlusterRateLimitConfigReconciler struct { ctrl *gomock.Controller recorder *MockMulticlusterRateLimitConfigReconcilerMockRecorder } -// MockMulticlusterRateLimitConfigReconcilerMockRecorder is the mock recorder for MockMulticlusterRateLimitConfigReconciler +// MockMulticlusterRateLimitConfigReconcilerMockRecorder is the mock recorder for MockMulticlusterRateLimitConfigReconciler. type MockMulticlusterRateLimitConfigReconcilerMockRecorder struct { mock *MockMulticlusterRateLimitConfigReconciler } -// NewMockMulticlusterRateLimitConfigReconciler creates a new mock instance +// NewMockMulticlusterRateLimitConfigReconciler creates a new mock instance. func NewMockMulticlusterRateLimitConfigReconciler(ctrl *gomock.Controller) *MockMulticlusterRateLimitConfigReconciler { mock := &MockMulticlusterRateLimitConfigReconciler{ctrl: ctrl} mock.recorder = &MockMulticlusterRateLimitConfigReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterRateLimitConfigReconciler) EXPECT() *MockMulticlusterRateLimitConfigReconcilerMockRecorder { return m.recorder } -// ReconcileRateLimitConfig mocks base method +// ReconcileRateLimitConfig mocks base method. func (m *MockMulticlusterRateLimitConfigReconciler) ReconcileRateLimitConfig(clusterName string, obj *v1alpha1.RateLimitConfig) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileRateLimitConfig", clusterName, obj) @@ -47,36 +47,36 @@ func (m *MockMulticlusterRateLimitConfigReconciler) ReconcileRateLimitConfig(clu return ret0, ret1 } -// ReconcileRateLimitConfig indicates an expected call of ReconcileRateLimitConfig +// ReconcileRateLimitConfig indicates an expected call of ReconcileRateLimitConfig. func (mr *MockMulticlusterRateLimitConfigReconcilerMockRecorder) ReconcileRateLimitConfig(clusterName, obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileRateLimitConfig", reflect.TypeOf((*MockMulticlusterRateLimitConfigReconciler)(nil).ReconcileRateLimitConfig), clusterName, obj) } -// MockMulticlusterRateLimitConfigDeletionReconciler is a mock of MulticlusterRateLimitConfigDeletionReconciler interface +// MockMulticlusterRateLimitConfigDeletionReconciler is a mock of MulticlusterRateLimitConfigDeletionReconciler interface. type MockMulticlusterRateLimitConfigDeletionReconciler struct { ctrl *gomock.Controller recorder *MockMulticlusterRateLimitConfigDeletionReconcilerMockRecorder } -// MockMulticlusterRateLimitConfigDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterRateLimitConfigDeletionReconciler +// MockMulticlusterRateLimitConfigDeletionReconcilerMockRecorder is the mock recorder for MockMulticlusterRateLimitConfigDeletionReconciler. type MockMulticlusterRateLimitConfigDeletionReconcilerMockRecorder struct { mock *MockMulticlusterRateLimitConfigDeletionReconciler } -// NewMockMulticlusterRateLimitConfigDeletionReconciler creates a new mock instance +// NewMockMulticlusterRateLimitConfigDeletionReconciler creates a new mock instance. func NewMockMulticlusterRateLimitConfigDeletionReconciler(ctrl *gomock.Controller) *MockMulticlusterRateLimitConfigDeletionReconciler { mock := &MockMulticlusterRateLimitConfigDeletionReconciler{ctrl: ctrl} mock.recorder = &MockMulticlusterRateLimitConfigDeletionReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterRateLimitConfigDeletionReconciler) EXPECT() *MockMulticlusterRateLimitConfigDeletionReconcilerMockRecorder { return m.recorder } -// ReconcileRateLimitConfigDeletion mocks base method +// ReconcileRateLimitConfigDeletion mocks base method. func (m *MockMulticlusterRateLimitConfigDeletionReconciler) ReconcileRateLimitConfigDeletion(clusterName string, req reconcile.Request) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileRateLimitConfigDeletion", clusterName, req) @@ -84,36 +84,36 @@ func (m *MockMulticlusterRateLimitConfigDeletionReconciler) ReconcileRateLimitCo return ret0 } -// ReconcileRateLimitConfigDeletion indicates an expected call of ReconcileRateLimitConfigDeletion +// ReconcileRateLimitConfigDeletion indicates an expected call of ReconcileRateLimitConfigDeletion. func (mr *MockMulticlusterRateLimitConfigDeletionReconcilerMockRecorder) ReconcileRateLimitConfigDeletion(clusterName, req interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileRateLimitConfigDeletion", reflect.TypeOf((*MockMulticlusterRateLimitConfigDeletionReconciler)(nil).ReconcileRateLimitConfigDeletion), clusterName, req) } -// MockMulticlusterRateLimitConfigReconcileLoop is a mock of MulticlusterRateLimitConfigReconcileLoop interface +// MockMulticlusterRateLimitConfigReconcileLoop is a mock of MulticlusterRateLimitConfigReconcileLoop interface. type MockMulticlusterRateLimitConfigReconcileLoop struct { ctrl *gomock.Controller recorder *MockMulticlusterRateLimitConfigReconcileLoopMockRecorder } -// MockMulticlusterRateLimitConfigReconcileLoopMockRecorder is the mock recorder for MockMulticlusterRateLimitConfigReconcileLoop +// MockMulticlusterRateLimitConfigReconcileLoopMockRecorder is the mock recorder for MockMulticlusterRateLimitConfigReconcileLoop. type MockMulticlusterRateLimitConfigReconcileLoopMockRecorder struct { mock *MockMulticlusterRateLimitConfigReconcileLoop } -// NewMockMulticlusterRateLimitConfigReconcileLoop creates a new mock instance +// NewMockMulticlusterRateLimitConfigReconcileLoop creates a new mock instance. func NewMockMulticlusterRateLimitConfigReconcileLoop(ctrl *gomock.Controller) *MockMulticlusterRateLimitConfigReconcileLoop { mock := &MockMulticlusterRateLimitConfigReconcileLoop{ctrl: ctrl} mock.recorder = &MockMulticlusterRateLimitConfigReconcileLoopMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterRateLimitConfigReconcileLoop) EXPECT() *MockMulticlusterRateLimitConfigReconcileLoopMockRecorder { return m.recorder } -// AddMulticlusterRateLimitConfigReconciler mocks base method +// AddMulticlusterRateLimitConfigReconciler mocks base method. func (m *MockMulticlusterRateLimitConfigReconcileLoop) AddMulticlusterRateLimitConfigReconciler(ctx context.Context, rec controller.MulticlusterRateLimitConfigReconciler, predicates ...predicate.Predicate) { m.ctrl.T.Helper() varargs := []interface{}{ctx, rec} @@ -123,7 +123,7 @@ func (m *MockMulticlusterRateLimitConfigReconcileLoop) AddMulticlusterRateLimitC m.ctrl.Call(m, "AddMulticlusterRateLimitConfigReconciler", varargs...) } -// AddMulticlusterRateLimitConfigReconciler indicates an expected call of AddMulticlusterRateLimitConfigReconciler +// AddMulticlusterRateLimitConfigReconciler indicates an expected call of AddMulticlusterRateLimitConfigReconciler. func (mr *MockMulticlusterRateLimitConfigReconcileLoopMockRecorder) AddMulticlusterRateLimitConfigReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, rec}, predicates...) diff --git a/pkg/api/ratelimit.solo.io/v1alpha1/controller/mocks/reconcilers.go b/pkg/api/ratelimit.solo.io/v1alpha1/controller/mocks/reconcilers.go index 61137f5e9..3d679b5ec 100644 --- a/pkg/api/ratelimit.solo.io/v1alpha1/controller/mocks/reconcilers.go +++ b/pkg/api/ratelimit.solo.io/v1alpha1/controller/mocks/reconcilers.go @@ -15,30 +15,30 @@ import ( predicate "sigs.k8s.io/controller-runtime/pkg/predicate" ) -// MockRateLimitConfigReconciler is a mock of RateLimitConfigReconciler interface +// MockRateLimitConfigReconciler is a mock of RateLimitConfigReconciler interface. type MockRateLimitConfigReconciler struct { ctrl *gomock.Controller recorder *MockRateLimitConfigReconcilerMockRecorder } -// MockRateLimitConfigReconcilerMockRecorder is the mock recorder for MockRateLimitConfigReconciler +// MockRateLimitConfigReconcilerMockRecorder is the mock recorder for MockRateLimitConfigReconciler. type MockRateLimitConfigReconcilerMockRecorder struct { mock *MockRateLimitConfigReconciler } -// NewMockRateLimitConfigReconciler creates a new mock instance +// NewMockRateLimitConfigReconciler creates a new mock instance. func NewMockRateLimitConfigReconciler(ctrl *gomock.Controller) *MockRateLimitConfigReconciler { mock := &MockRateLimitConfigReconciler{ctrl: ctrl} mock.recorder = &MockRateLimitConfigReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockRateLimitConfigReconciler) EXPECT() *MockRateLimitConfigReconcilerMockRecorder { return m.recorder } -// ReconcileRateLimitConfig mocks base method +// ReconcileRateLimitConfig mocks base method. func (m *MockRateLimitConfigReconciler) ReconcileRateLimitConfig(obj *v1alpha1.RateLimitConfig) (reconcile.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileRateLimitConfig", obj) @@ -47,36 +47,36 @@ func (m *MockRateLimitConfigReconciler) ReconcileRateLimitConfig(obj *v1alpha1.R return ret0, ret1 } -// ReconcileRateLimitConfig indicates an expected call of ReconcileRateLimitConfig +// ReconcileRateLimitConfig indicates an expected call of ReconcileRateLimitConfig. func (mr *MockRateLimitConfigReconcilerMockRecorder) ReconcileRateLimitConfig(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigReconciler)(nil).ReconcileRateLimitConfig), obj) } -// MockRateLimitConfigDeletionReconciler is a mock of RateLimitConfigDeletionReconciler interface +// MockRateLimitConfigDeletionReconciler is a mock of RateLimitConfigDeletionReconciler interface. type MockRateLimitConfigDeletionReconciler struct { ctrl *gomock.Controller recorder *MockRateLimitConfigDeletionReconcilerMockRecorder } -// MockRateLimitConfigDeletionReconcilerMockRecorder is the mock recorder for MockRateLimitConfigDeletionReconciler +// MockRateLimitConfigDeletionReconcilerMockRecorder is the mock recorder for MockRateLimitConfigDeletionReconciler. type MockRateLimitConfigDeletionReconcilerMockRecorder struct { mock *MockRateLimitConfigDeletionReconciler } -// NewMockRateLimitConfigDeletionReconciler creates a new mock instance +// NewMockRateLimitConfigDeletionReconciler creates a new mock instance. func NewMockRateLimitConfigDeletionReconciler(ctrl *gomock.Controller) *MockRateLimitConfigDeletionReconciler { mock := &MockRateLimitConfigDeletionReconciler{ctrl: ctrl} mock.recorder = &MockRateLimitConfigDeletionReconcilerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockRateLimitConfigDeletionReconciler) EXPECT() *MockRateLimitConfigDeletionReconcilerMockRecorder { return m.recorder } -// ReconcileRateLimitConfigDeletion mocks base method +// ReconcileRateLimitConfigDeletion mocks base method. func (m *MockRateLimitConfigDeletionReconciler) ReconcileRateLimitConfigDeletion(req reconcile.Request) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReconcileRateLimitConfigDeletion", req) @@ -84,51 +84,50 @@ func (m *MockRateLimitConfigDeletionReconciler) ReconcileRateLimitConfigDeletion return ret0 } -// ReconcileRateLimitConfigDeletion indicates an expected call of ReconcileRateLimitConfigDeletion +// ReconcileRateLimitConfigDeletion indicates an expected call of ReconcileRateLimitConfigDeletion. func (mr *MockRateLimitConfigDeletionReconcilerMockRecorder) ReconcileRateLimitConfigDeletion(req interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileRateLimitConfigDeletion", reflect.TypeOf((*MockRateLimitConfigDeletionReconciler)(nil).ReconcileRateLimitConfigDeletion), req) } -// MockRateLimitConfigFinalizer is a mock of RateLimitConfigFinalizer interface +// MockRateLimitConfigFinalizer is a mock of RateLimitConfigFinalizer interface. type MockRateLimitConfigFinalizer struct { ctrl *gomock.Controller recorder *MockRateLimitConfigFinalizerMockRecorder } -// MockRateLimitConfigFinalizerMockRecorder is the mock recorder for MockRateLimitConfigFinalizer +// MockRateLimitConfigFinalizerMockRecorder is the mock recorder for MockRateLimitConfigFinalizer. type MockRateLimitConfigFinalizerMockRecorder struct { mock *MockRateLimitConfigFinalizer } -// NewMockRateLimitConfigFinalizer creates a new mock instance +// NewMockRateLimitConfigFinalizer creates a new mock instance. func NewMockRateLimitConfigFinalizer(ctrl *gomock.Controller) *MockRateLimitConfigFinalizer { mock := &MockRateLimitConfigFinalizer{ctrl: ctrl} mock.recorder = &MockRateLimitConfigFinalizerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockRateLimitConfigFinalizer) EXPECT() *MockRateLimitConfigFinalizerMockRecorder { return m.recorder } -// ReconcileRateLimitConfig mocks base method -func (m *MockRateLimitConfigFinalizer) ReconcileRateLimitConfig(obj *v1alpha1.RateLimitConfig) (reconcile.Result, error) { +// FinalizeRateLimitConfig mocks base method. +func (m *MockRateLimitConfigFinalizer) FinalizeRateLimitConfig(obj *v1alpha1.RateLimitConfig) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ReconcileRateLimitConfig", obj) - ret0, _ := ret[0].(reconcile.Result) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "FinalizeRateLimitConfig", obj) + ret0, _ := ret[0].(error) + return ret0 } -// ReconcileRateLimitConfig indicates an expected call of ReconcileRateLimitConfig -func (mr *MockRateLimitConfigFinalizerMockRecorder) ReconcileRateLimitConfig(obj interface{}) *gomock.Call { +// FinalizeRateLimitConfig indicates an expected call of FinalizeRateLimitConfig. +func (mr *MockRateLimitConfigFinalizerMockRecorder) FinalizeRateLimitConfig(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigFinalizer)(nil).ReconcileRateLimitConfig), obj) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigFinalizer)(nil).FinalizeRateLimitConfig), obj) } -// RateLimitConfigFinalizerName mocks base method +// RateLimitConfigFinalizerName mocks base method. func (m *MockRateLimitConfigFinalizer) RateLimitConfigFinalizerName() string { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "RateLimitConfigFinalizerName") @@ -136,50 +135,51 @@ func (m *MockRateLimitConfigFinalizer) RateLimitConfigFinalizerName() string { return ret0 } -// RateLimitConfigFinalizerName indicates an expected call of RateLimitConfigFinalizerName +// RateLimitConfigFinalizerName indicates an expected call of RateLimitConfigFinalizerName. func (mr *MockRateLimitConfigFinalizerMockRecorder) RateLimitConfigFinalizerName() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RateLimitConfigFinalizerName", reflect.TypeOf((*MockRateLimitConfigFinalizer)(nil).RateLimitConfigFinalizerName)) } -// FinalizeRateLimitConfig mocks base method -func (m *MockRateLimitConfigFinalizer) FinalizeRateLimitConfig(obj *v1alpha1.RateLimitConfig) error { +// ReconcileRateLimitConfig mocks base method. +func (m *MockRateLimitConfigFinalizer) ReconcileRateLimitConfig(obj *v1alpha1.RateLimitConfig) (reconcile.Result, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "FinalizeRateLimitConfig", obj) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "ReconcileRateLimitConfig", obj) + ret0, _ := ret[0].(reconcile.Result) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// FinalizeRateLimitConfig indicates an expected call of FinalizeRateLimitConfig -func (mr *MockRateLimitConfigFinalizerMockRecorder) FinalizeRateLimitConfig(obj interface{}) *gomock.Call { +// ReconcileRateLimitConfig indicates an expected call of ReconcileRateLimitConfig. +func (mr *MockRateLimitConfigFinalizerMockRecorder) ReconcileRateLimitConfig(obj interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigFinalizer)(nil).FinalizeRateLimitConfig), obj) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReconcileRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigFinalizer)(nil).ReconcileRateLimitConfig), obj) } -// MockRateLimitConfigReconcileLoop is a mock of RateLimitConfigReconcileLoop interface +// MockRateLimitConfigReconcileLoop is a mock of RateLimitConfigReconcileLoop interface. type MockRateLimitConfigReconcileLoop struct { ctrl *gomock.Controller recorder *MockRateLimitConfigReconcileLoopMockRecorder } -// MockRateLimitConfigReconcileLoopMockRecorder is the mock recorder for MockRateLimitConfigReconcileLoop +// MockRateLimitConfigReconcileLoopMockRecorder is the mock recorder for MockRateLimitConfigReconcileLoop. type MockRateLimitConfigReconcileLoopMockRecorder struct { mock *MockRateLimitConfigReconcileLoop } -// NewMockRateLimitConfigReconcileLoop creates a new mock instance +// NewMockRateLimitConfigReconcileLoop creates a new mock instance. func NewMockRateLimitConfigReconcileLoop(ctrl *gomock.Controller) *MockRateLimitConfigReconcileLoop { mock := &MockRateLimitConfigReconcileLoop{ctrl: ctrl} mock.recorder = &MockRateLimitConfigReconcileLoopMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockRateLimitConfigReconcileLoop) EXPECT() *MockRateLimitConfigReconcileLoopMockRecorder { return m.recorder } -// RunRateLimitConfigReconciler mocks base method +// RunRateLimitConfigReconciler mocks base method. func (m *MockRateLimitConfigReconcileLoop) RunRateLimitConfigReconciler(ctx context.Context, rec controller.RateLimitConfigReconciler, predicates ...predicate.Predicate) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, rec} @@ -191,7 +191,7 @@ func (m *MockRateLimitConfigReconcileLoop) RunRateLimitConfigReconciler(ctx cont return ret0 } -// RunRateLimitConfigReconciler indicates an expected call of RunRateLimitConfigReconciler +// RunRateLimitConfigReconciler indicates an expected call of RunRateLimitConfigReconciler. func (mr *MockRateLimitConfigReconcileLoopMockRecorder) RunRateLimitConfigReconciler(ctx, rec interface{}, predicates ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, rec}, predicates...) diff --git a/pkg/api/ratelimit.solo.io/v1alpha1/json.gen.go b/pkg/api/ratelimit.solo.io/v1alpha1/json.gen.go index f16e7cbef..d10fa7192 100644 --- a/pkg/api/ratelimit.solo.io/v1alpha1/json.gen.go +++ b/pkg/api/ratelimit.solo.io/v1alpha1/json.gen.go @@ -21,7 +21,10 @@ var _ = math.Inf var ( marshaller = &skv2jsonpb.Marshaler{} - unmarshaller = &jsonpb.Unmarshaler{} + unmarshaller = &jsonpb.Unmarshaler{ + AllowUnknownFields: true, + } + strictUnmarshaller = &jsonpb.Unmarshaler{} ) // MarshalJSON is a custom marshaler for RateLimitConfigSpec diff --git a/pkg/api/ratelimit.solo.io/v1alpha1/mocks/clients.go b/pkg/api/ratelimit.solo.io/v1alpha1/mocks/clients.go index d007c09b2..58366447f 100644 --- a/pkg/api/ratelimit.solo.io/v1alpha1/mocks/clients.go +++ b/pkg/api/ratelimit.solo.io/v1alpha1/mocks/clients.go @@ -13,30 +13,30 @@ import ( client "sigs.k8s.io/controller-runtime/pkg/client" ) -// MockMulticlusterClientset is a mock of MulticlusterClientset interface +// MockMulticlusterClientset is a mock of MulticlusterClientset interface. type MockMulticlusterClientset struct { ctrl *gomock.Controller recorder *MockMulticlusterClientsetMockRecorder } -// MockMulticlusterClientsetMockRecorder is the mock recorder for MockMulticlusterClientset +// MockMulticlusterClientsetMockRecorder is the mock recorder for MockMulticlusterClientset. type MockMulticlusterClientsetMockRecorder struct { mock *MockMulticlusterClientset } -// NewMockMulticlusterClientset creates a new mock instance +// NewMockMulticlusterClientset creates a new mock instance. func NewMockMulticlusterClientset(ctrl *gomock.Controller) *MockMulticlusterClientset { mock := &MockMulticlusterClientset{ctrl: ctrl} mock.recorder = &MockMulticlusterClientsetMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterClientset) EXPECT() *MockMulticlusterClientsetMockRecorder { return m.recorder } -// Cluster mocks base method +// Cluster mocks base method. func (m *MockMulticlusterClientset) Cluster(cluster string) (v1alpha1.Clientset, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Cluster", cluster) @@ -45,36 +45,36 @@ func (m *MockMulticlusterClientset) Cluster(cluster string) (v1alpha1.Clientset, return ret0, ret1 } -// Cluster indicates an expected call of Cluster +// Cluster indicates an expected call of Cluster. func (mr *MockMulticlusterClientsetMockRecorder) Cluster(cluster interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterClientset)(nil).Cluster), cluster) } -// MockClientset is a mock of Clientset interface +// MockClientset is a mock of Clientset interface. type MockClientset struct { ctrl *gomock.Controller recorder *MockClientsetMockRecorder } -// MockClientsetMockRecorder is the mock recorder for MockClientset +// MockClientsetMockRecorder is the mock recorder for MockClientset. type MockClientsetMockRecorder struct { mock *MockClientset } -// NewMockClientset creates a new mock instance +// NewMockClientset creates a new mock instance. func NewMockClientset(ctrl *gomock.Controller) *MockClientset { mock := &MockClientset{ctrl: ctrl} mock.recorder = &MockClientsetMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockClientset) EXPECT() *MockClientsetMockRecorder { return m.recorder } -// RateLimitConfigs mocks base method +// RateLimitConfigs mocks base method. func (m *MockClientset) RateLimitConfigs() v1alpha1.RateLimitConfigClient { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "RateLimitConfigs") @@ -82,36 +82,36 @@ func (m *MockClientset) RateLimitConfigs() v1alpha1.RateLimitConfigClient { return ret0 } -// RateLimitConfigs indicates an expected call of RateLimitConfigs +// RateLimitConfigs indicates an expected call of RateLimitConfigs. func (mr *MockClientsetMockRecorder) RateLimitConfigs() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RateLimitConfigs", reflect.TypeOf((*MockClientset)(nil).RateLimitConfigs)) } -// MockRateLimitConfigReader is a mock of RateLimitConfigReader interface +// MockRateLimitConfigReader is a mock of RateLimitConfigReader interface. type MockRateLimitConfigReader struct { ctrl *gomock.Controller recorder *MockRateLimitConfigReaderMockRecorder } -// MockRateLimitConfigReaderMockRecorder is the mock recorder for MockRateLimitConfigReader +// MockRateLimitConfigReaderMockRecorder is the mock recorder for MockRateLimitConfigReader. type MockRateLimitConfigReaderMockRecorder struct { mock *MockRateLimitConfigReader } -// NewMockRateLimitConfigReader creates a new mock instance +// NewMockRateLimitConfigReader creates a new mock instance. func NewMockRateLimitConfigReader(ctrl *gomock.Controller) *MockRateLimitConfigReader { mock := &MockRateLimitConfigReader{ctrl: ctrl} mock.recorder = &MockRateLimitConfigReaderMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockRateLimitConfigReader) EXPECT() *MockRateLimitConfigReaderMockRecorder { return m.recorder } -// GetRateLimitConfig mocks base method +// GetRateLimitConfig mocks base method. func (m *MockRateLimitConfigReader) GetRateLimitConfig(ctx context.Context, key client.ObjectKey) (*v1alpha1.RateLimitConfig, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetRateLimitConfig", ctx, key) @@ -120,13 +120,13 @@ func (m *MockRateLimitConfigReader) GetRateLimitConfig(ctx context.Context, key return ret0, ret1 } -// GetRateLimitConfig indicates an expected call of GetRateLimitConfig +// GetRateLimitConfig indicates an expected call of GetRateLimitConfig. func (mr *MockRateLimitConfigReaderMockRecorder) GetRateLimitConfig(ctx, key interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigReader)(nil).GetRateLimitConfig), ctx, key) } -// ListRateLimitConfig mocks base method +// ListRateLimitConfig mocks base method. func (m *MockRateLimitConfigReader) ListRateLimitConfig(ctx context.Context, opts ...client.ListOption) (*v1alpha1.RateLimitConfigList, error) { m.ctrl.T.Helper() varargs := []interface{}{ctx} @@ -139,37 +139,37 @@ func (m *MockRateLimitConfigReader) ListRateLimitConfig(ctx context.Context, opt return ret0, ret1 } -// ListRateLimitConfig indicates an expected call of ListRateLimitConfig +// ListRateLimitConfig indicates an expected call of ListRateLimitConfig. func (mr *MockRateLimitConfigReaderMockRecorder) ListRateLimitConfig(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigReader)(nil).ListRateLimitConfig), varargs...) } -// MockRateLimitConfigWriter is a mock of RateLimitConfigWriter interface +// MockRateLimitConfigWriter is a mock of RateLimitConfigWriter interface. type MockRateLimitConfigWriter struct { ctrl *gomock.Controller recorder *MockRateLimitConfigWriterMockRecorder } -// MockRateLimitConfigWriterMockRecorder is the mock recorder for MockRateLimitConfigWriter +// MockRateLimitConfigWriterMockRecorder is the mock recorder for MockRateLimitConfigWriter. type MockRateLimitConfigWriterMockRecorder struct { mock *MockRateLimitConfigWriter } -// NewMockRateLimitConfigWriter creates a new mock instance +// NewMockRateLimitConfigWriter creates a new mock instance. func NewMockRateLimitConfigWriter(ctrl *gomock.Controller) *MockRateLimitConfigWriter { mock := &MockRateLimitConfigWriter{ctrl: ctrl} mock.recorder = &MockRateLimitConfigWriterMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockRateLimitConfigWriter) EXPECT() *MockRateLimitConfigWriterMockRecorder { return m.recorder } -// CreateRateLimitConfig mocks base method +// CreateRateLimitConfig mocks base method. func (m *MockRateLimitConfigWriter) CreateRateLimitConfig(ctx context.Context, obj *v1alpha1.RateLimitConfig, opts ...client.CreateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} @@ -181,52 +181,52 @@ func (m *MockRateLimitConfigWriter) CreateRateLimitConfig(ctx context.Context, o return ret0 } -// CreateRateLimitConfig indicates an expected call of CreateRateLimitConfig +// CreateRateLimitConfig indicates an expected call of CreateRateLimitConfig. func (mr *MockRateLimitConfigWriterMockRecorder) CreateRateLimitConfig(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigWriter)(nil).CreateRateLimitConfig), varargs...) } -// DeleteRateLimitConfig mocks base method -func (m *MockRateLimitConfigWriter) DeleteRateLimitConfig(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { +// DeleteAllOfRateLimitConfig mocks base method. +func (m *MockRateLimitConfigWriter) DeleteAllOfRateLimitConfig(ctx context.Context, opts ...client.DeleteAllOfOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, key} + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteRateLimitConfig", varargs...) + ret := m.ctrl.Call(m, "DeleteAllOfRateLimitConfig", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteRateLimitConfig indicates an expected call of DeleteRateLimitConfig -func (mr *MockRateLimitConfigWriterMockRecorder) DeleteRateLimitConfig(ctx, key interface{}, opts ...interface{}) *gomock.Call { +// DeleteAllOfRateLimitConfig indicates an expected call of DeleteAllOfRateLimitConfig. +func (mr *MockRateLimitConfigWriterMockRecorder) DeleteAllOfRateLimitConfig(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, key}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigWriter)(nil).DeleteRateLimitConfig), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigWriter)(nil).DeleteAllOfRateLimitConfig), varargs...) } -// UpdateRateLimitConfig mocks base method -func (m *MockRateLimitConfigWriter) UpdateRateLimitConfig(ctx context.Context, obj *v1alpha1.RateLimitConfig, opts ...client.UpdateOption) error { +// DeleteRateLimitConfig mocks base method. +func (m *MockRateLimitConfigWriter) DeleteRateLimitConfig(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx, key} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateRateLimitConfig", varargs...) + ret := m.ctrl.Call(m, "DeleteRateLimitConfig", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateRateLimitConfig indicates an expected call of UpdateRateLimitConfig -func (mr *MockRateLimitConfigWriterMockRecorder) UpdateRateLimitConfig(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// DeleteRateLimitConfig indicates an expected call of DeleteRateLimitConfig. +func (mr *MockRateLimitConfigWriterMockRecorder) DeleteRateLimitConfig(ctx, key interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigWriter)(nil).UpdateRateLimitConfig), varargs...) + varargs := append([]interface{}{ctx, key}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigWriter)(nil).DeleteRateLimitConfig), varargs...) } -// PatchRateLimitConfig mocks base method +// PatchRateLimitConfig mocks base method. func (m *MockRateLimitConfigWriter) PatchRateLimitConfig(ctx context.Context, obj *v1alpha1.RateLimitConfig, patch client.Patch, opts ...client.PatchOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj, patch} @@ -238,33 +238,33 @@ func (m *MockRateLimitConfigWriter) PatchRateLimitConfig(ctx context.Context, ob return ret0 } -// PatchRateLimitConfig indicates an expected call of PatchRateLimitConfig +// PatchRateLimitConfig indicates an expected call of PatchRateLimitConfig. func (mr *MockRateLimitConfigWriterMockRecorder) PatchRateLimitConfig(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj, patch}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigWriter)(nil).PatchRateLimitConfig), varargs...) } -// DeleteAllOfRateLimitConfig mocks base method -func (m *MockRateLimitConfigWriter) DeleteAllOfRateLimitConfig(ctx context.Context, opts ...client.DeleteAllOfOption) error { +// UpdateRateLimitConfig mocks base method. +func (m *MockRateLimitConfigWriter) UpdateRateLimitConfig(ctx context.Context, obj *v1alpha1.RateLimitConfig, opts ...client.UpdateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteAllOfRateLimitConfig", varargs...) + ret := m.ctrl.Call(m, "UpdateRateLimitConfig", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteAllOfRateLimitConfig indicates an expected call of DeleteAllOfRateLimitConfig -func (mr *MockRateLimitConfigWriterMockRecorder) DeleteAllOfRateLimitConfig(ctx interface{}, opts ...interface{}) *gomock.Call { +// UpdateRateLimitConfig indicates an expected call of UpdateRateLimitConfig. +func (mr *MockRateLimitConfigWriterMockRecorder) UpdateRateLimitConfig(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigWriter)(nil).DeleteAllOfRateLimitConfig), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigWriter)(nil).UpdateRateLimitConfig), varargs...) } -// UpsertRateLimitConfig mocks base method +// UpsertRateLimitConfig mocks base method. func (m *MockRateLimitConfigWriter) UpsertRateLimitConfig(ctx context.Context, obj *v1alpha1.RateLimitConfig, transitionFuncs ...v1alpha1.RateLimitConfigTransitionFunction) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} @@ -276,152 +276,136 @@ func (m *MockRateLimitConfigWriter) UpsertRateLimitConfig(ctx context.Context, o return ret0 } -// UpsertRateLimitConfig indicates an expected call of UpsertRateLimitConfig +// UpsertRateLimitConfig indicates an expected call of UpsertRateLimitConfig. func (mr *MockRateLimitConfigWriterMockRecorder) UpsertRateLimitConfig(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, transitionFuncs...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigWriter)(nil).UpsertRateLimitConfig), varargs...) } -// MockRateLimitConfigStatusWriter is a mock of RateLimitConfigStatusWriter interface +// MockRateLimitConfigStatusWriter is a mock of RateLimitConfigStatusWriter interface. type MockRateLimitConfigStatusWriter struct { ctrl *gomock.Controller recorder *MockRateLimitConfigStatusWriterMockRecorder } -// MockRateLimitConfigStatusWriterMockRecorder is the mock recorder for MockRateLimitConfigStatusWriter +// MockRateLimitConfigStatusWriterMockRecorder is the mock recorder for MockRateLimitConfigStatusWriter. type MockRateLimitConfigStatusWriterMockRecorder struct { mock *MockRateLimitConfigStatusWriter } -// NewMockRateLimitConfigStatusWriter creates a new mock instance +// NewMockRateLimitConfigStatusWriter creates a new mock instance. func NewMockRateLimitConfigStatusWriter(ctrl *gomock.Controller) *MockRateLimitConfigStatusWriter { mock := &MockRateLimitConfigStatusWriter{ctrl: ctrl} mock.recorder = &MockRateLimitConfigStatusWriterMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockRateLimitConfigStatusWriter) EXPECT() *MockRateLimitConfigStatusWriterMockRecorder { return m.recorder } -// UpdateRateLimitConfigStatus mocks base method -func (m *MockRateLimitConfigStatusWriter) UpdateRateLimitConfigStatus(ctx context.Context, obj *v1alpha1.RateLimitConfig, opts ...client.UpdateOption) error { +// PatchRateLimitConfigStatus mocks base method. +func (m *MockRateLimitConfigStatusWriter) PatchRateLimitConfigStatus(ctx context.Context, obj *v1alpha1.RateLimitConfig, patch client.Patch, opts ...client.SubResourcePatchOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateRateLimitConfigStatus", varargs...) + ret := m.ctrl.Call(m, "PatchRateLimitConfigStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpdateRateLimitConfigStatus indicates an expected call of UpdateRateLimitConfigStatus -func (mr *MockRateLimitConfigStatusWriterMockRecorder) UpdateRateLimitConfigStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// PatchRateLimitConfigStatus indicates an expected call of PatchRateLimitConfigStatus. +func (mr *MockRateLimitConfigStatusWriterMockRecorder) PatchRateLimitConfigStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRateLimitConfigStatus", reflect.TypeOf((*MockRateLimitConfigStatusWriter)(nil).UpdateRateLimitConfigStatus), varargs...) + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchRateLimitConfigStatus", reflect.TypeOf((*MockRateLimitConfigStatusWriter)(nil).PatchRateLimitConfigStatus), varargs...) } -// PatchRateLimitConfigStatus mocks base method -func (m *MockRateLimitConfigStatusWriter) PatchRateLimitConfigStatus(ctx context.Context, obj *v1alpha1.RateLimitConfig, patch client.Patch, opts ...client.PatchOption) error { +// UpdateRateLimitConfigStatus mocks base method. +func (m *MockRateLimitConfigStatusWriter) UpdateRateLimitConfigStatus(ctx context.Context, obj *v1alpha1.RateLimitConfig, opts ...client.SubResourceUpdateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj, patch} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchRateLimitConfigStatus", varargs...) + ret := m.ctrl.Call(m, "UpdateRateLimitConfigStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchRateLimitConfigStatus indicates an expected call of PatchRateLimitConfigStatus -func (mr *MockRateLimitConfigStatusWriterMockRecorder) PatchRateLimitConfigStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// UpdateRateLimitConfigStatus indicates an expected call of UpdateRateLimitConfigStatus. +func (mr *MockRateLimitConfigStatusWriterMockRecorder) UpdateRateLimitConfigStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchRateLimitConfigStatus", reflect.TypeOf((*MockRateLimitConfigStatusWriter)(nil).PatchRateLimitConfigStatus), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRateLimitConfigStatus", reflect.TypeOf((*MockRateLimitConfigStatusWriter)(nil).UpdateRateLimitConfigStatus), varargs...) } -// MockRateLimitConfigClient is a mock of RateLimitConfigClient interface +// MockRateLimitConfigClient is a mock of RateLimitConfigClient interface. type MockRateLimitConfigClient struct { ctrl *gomock.Controller recorder *MockRateLimitConfigClientMockRecorder } -// MockRateLimitConfigClientMockRecorder is the mock recorder for MockRateLimitConfigClient +// MockRateLimitConfigClientMockRecorder is the mock recorder for MockRateLimitConfigClient. type MockRateLimitConfigClientMockRecorder struct { mock *MockRateLimitConfigClient } -// NewMockRateLimitConfigClient creates a new mock instance +// NewMockRateLimitConfigClient creates a new mock instance. func NewMockRateLimitConfigClient(ctrl *gomock.Controller) *MockRateLimitConfigClient { mock := &MockRateLimitConfigClient{ctrl: ctrl} mock.recorder = &MockRateLimitConfigClientMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockRateLimitConfigClient) EXPECT() *MockRateLimitConfigClientMockRecorder { return m.recorder } -// GetRateLimitConfig mocks base method -func (m *MockRateLimitConfigClient) GetRateLimitConfig(ctx context.Context, key client.ObjectKey) (*v1alpha1.RateLimitConfig, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetRateLimitConfig", ctx, key) - ret0, _ := ret[0].(*v1alpha1.RateLimitConfig) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetRateLimitConfig indicates an expected call of GetRateLimitConfig -func (mr *MockRateLimitConfigClientMockRecorder) GetRateLimitConfig(ctx, key interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigClient)(nil).GetRateLimitConfig), ctx, key) -} - -// ListRateLimitConfig mocks base method -func (m *MockRateLimitConfigClient) ListRateLimitConfig(ctx context.Context, opts ...client.ListOption) (*v1alpha1.RateLimitConfigList, error) { +// CreateRateLimitConfig mocks base method. +func (m *MockRateLimitConfigClient) CreateRateLimitConfig(ctx context.Context, obj *v1alpha1.RateLimitConfig, opts ...client.CreateOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "ListRateLimitConfig", varargs...) - ret0, _ := ret[0].(*v1alpha1.RateLimitConfigList) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "CreateRateLimitConfig", varargs...) + ret0, _ := ret[0].(error) + return ret0 } -// ListRateLimitConfig indicates an expected call of ListRateLimitConfig -func (mr *MockRateLimitConfigClientMockRecorder) ListRateLimitConfig(ctx interface{}, opts ...interface{}) *gomock.Call { +// CreateRateLimitConfig indicates an expected call of CreateRateLimitConfig. +func (mr *MockRateLimitConfigClientMockRecorder) CreateRateLimitConfig(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigClient)(nil).ListRateLimitConfig), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigClient)(nil).CreateRateLimitConfig), varargs...) } -// CreateRateLimitConfig mocks base method -func (m *MockRateLimitConfigClient) CreateRateLimitConfig(ctx context.Context, obj *v1alpha1.RateLimitConfig, opts ...client.CreateOption) error { +// DeleteAllOfRateLimitConfig mocks base method. +func (m *MockRateLimitConfigClient) DeleteAllOfRateLimitConfig(ctx context.Context, opts ...client.DeleteAllOfOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "CreateRateLimitConfig", varargs...) + ret := m.ctrl.Call(m, "DeleteAllOfRateLimitConfig", varargs...) ret0, _ := ret[0].(error) return ret0 } -// CreateRateLimitConfig indicates an expected call of CreateRateLimitConfig -func (mr *MockRateLimitConfigClientMockRecorder) CreateRateLimitConfig(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// DeleteAllOfRateLimitConfig indicates an expected call of DeleteAllOfRateLimitConfig. +func (mr *MockRateLimitConfigClientMockRecorder) DeleteAllOfRateLimitConfig(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigClient)(nil).CreateRateLimitConfig), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigClient)(nil).DeleteAllOfRateLimitConfig), varargs...) } -// DeleteRateLimitConfig mocks base method +// DeleteRateLimitConfig mocks base method. func (m *MockRateLimitConfigClient) DeleteRateLimitConfig(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, key} @@ -433,33 +417,49 @@ func (m *MockRateLimitConfigClient) DeleteRateLimitConfig(ctx context.Context, k return ret0 } -// DeleteRateLimitConfig indicates an expected call of DeleteRateLimitConfig +// DeleteRateLimitConfig indicates an expected call of DeleteRateLimitConfig. func (mr *MockRateLimitConfigClientMockRecorder) DeleteRateLimitConfig(ctx, key interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, key}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigClient)(nil).DeleteRateLimitConfig), varargs...) } -// UpdateRateLimitConfig mocks base method -func (m *MockRateLimitConfigClient) UpdateRateLimitConfig(ctx context.Context, obj *v1alpha1.RateLimitConfig, opts ...client.UpdateOption) error { +// GetRateLimitConfig mocks base method. +func (m *MockRateLimitConfigClient) GetRateLimitConfig(ctx context.Context, key client.ObjectKey) (*v1alpha1.RateLimitConfig, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj} + ret := m.ctrl.Call(m, "GetRateLimitConfig", ctx, key) + ret0, _ := ret[0].(*v1alpha1.RateLimitConfig) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetRateLimitConfig indicates an expected call of GetRateLimitConfig. +func (mr *MockRateLimitConfigClientMockRecorder) GetRateLimitConfig(ctx, key interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigClient)(nil).GetRateLimitConfig), ctx, key) +} + +// ListRateLimitConfig mocks base method. +func (m *MockRateLimitConfigClient) ListRateLimitConfig(ctx context.Context, opts ...client.ListOption) (*v1alpha1.RateLimitConfigList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpdateRateLimitConfig", varargs...) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "ListRateLimitConfig", varargs...) + ret0, _ := ret[0].(*v1alpha1.RateLimitConfigList) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// UpdateRateLimitConfig indicates an expected call of UpdateRateLimitConfig -func (mr *MockRateLimitConfigClientMockRecorder) UpdateRateLimitConfig(ctx, obj interface{}, opts ...interface{}) *gomock.Call { +// ListRateLimitConfig indicates an expected call of ListRateLimitConfig. +func (mr *MockRateLimitConfigClientMockRecorder) ListRateLimitConfig(ctx interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigClient)(nil).UpdateRateLimitConfig), varargs...) + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigClient)(nil).ListRateLimitConfig), varargs...) } -// PatchRateLimitConfig mocks base method +// PatchRateLimitConfig mocks base method. func (m *MockRateLimitConfigClient) PatchRateLimitConfig(ctx context.Context, obj *v1alpha1.RateLimitConfig, patch client.Patch, opts ...client.PatchOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj, patch} @@ -471,53 +471,53 @@ func (m *MockRateLimitConfigClient) PatchRateLimitConfig(ctx context.Context, ob return ret0 } -// PatchRateLimitConfig indicates an expected call of PatchRateLimitConfig +// PatchRateLimitConfig indicates an expected call of PatchRateLimitConfig. func (mr *MockRateLimitConfigClientMockRecorder) PatchRateLimitConfig(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj, patch}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigClient)(nil).PatchRateLimitConfig), varargs...) } -// DeleteAllOfRateLimitConfig mocks base method -func (m *MockRateLimitConfigClient) DeleteAllOfRateLimitConfig(ctx context.Context, opts ...client.DeleteAllOfOption) error { +// PatchRateLimitConfigStatus mocks base method. +func (m *MockRateLimitConfigClient) PatchRateLimitConfigStatus(ctx context.Context, obj *v1alpha1.RateLimitConfig, patch client.Patch, opts ...client.SubResourcePatchOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []interface{}{ctx, obj, patch} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "DeleteAllOfRateLimitConfig", varargs...) + ret := m.ctrl.Call(m, "PatchRateLimitConfigStatus", varargs...) ret0, _ := ret[0].(error) return ret0 } -// DeleteAllOfRateLimitConfig indicates an expected call of DeleteAllOfRateLimitConfig -func (mr *MockRateLimitConfigClientMockRecorder) DeleteAllOfRateLimitConfig(ctx interface{}, opts ...interface{}) *gomock.Call { +// PatchRateLimitConfigStatus indicates an expected call of PatchRateLimitConfigStatus. +func (mr *MockRateLimitConfigClientMockRecorder) PatchRateLimitConfigStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOfRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigClient)(nil).DeleteAllOfRateLimitConfig), varargs...) + varargs := append([]interface{}{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchRateLimitConfigStatus", reflect.TypeOf((*MockRateLimitConfigClient)(nil).PatchRateLimitConfigStatus), varargs...) } -// UpsertRateLimitConfig mocks base method -func (m *MockRateLimitConfigClient) UpsertRateLimitConfig(ctx context.Context, obj *v1alpha1.RateLimitConfig, transitionFuncs ...v1alpha1.RateLimitConfigTransitionFunction) error { +// UpdateRateLimitConfig mocks base method. +func (m *MockRateLimitConfigClient) UpdateRateLimitConfig(ctx context.Context, obj *v1alpha1.RateLimitConfig, opts ...client.UpdateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} - for _, a := range transitionFuncs { + for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UpsertRateLimitConfig", varargs...) + ret := m.ctrl.Call(m, "UpdateRateLimitConfig", varargs...) ret0, _ := ret[0].(error) return ret0 } -// UpsertRateLimitConfig indicates an expected call of UpsertRateLimitConfig -func (mr *MockRateLimitConfigClientMockRecorder) UpsertRateLimitConfig(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { +// UpdateRateLimitConfig indicates an expected call of UpdateRateLimitConfig. +func (mr *MockRateLimitConfigClientMockRecorder) UpdateRateLimitConfig(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj}, transitionFuncs...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigClient)(nil).UpsertRateLimitConfig), varargs...) + varargs := append([]interface{}{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigClient)(nil).UpdateRateLimitConfig), varargs...) } -// UpdateRateLimitConfigStatus mocks base method -func (m *MockRateLimitConfigClient) UpdateRateLimitConfigStatus(ctx context.Context, obj *v1alpha1.RateLimitConfig, opts ...client.UpdateOption) error { +// UpdateRateLimitConfigStatus mocks base method. +func (m *MockRateLimitConfigClient) UpdateRateLimitConfigStatus(ctx context.Context, obj *v1alpha1.RateLimitConfig, opts ...client.SubResourceUpdateOption) error { m.ctrl.T.Helper() varargs := []interface{}{ctx, obj} for _, a := range opts { @@ -528,56 +528,56 @@ func (m *MockRateLimitConfigClient) UpdateRateLimitConfigStatus(ctx context.Cont return ret0 } -// UpdateRateLimitConfigStatus indicates an expected call of UpdateRateLimitConfigStatus +// UpdateRateLimitConfigStatus indicates an expected call of UpdateRateLimitConfigStatus. func (mr *MockRateLimitConfigClientMockRecorder) UpdateRateLimitConfigStatus(ctx, obj interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, obj}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRateLimitConfigStatus", reflect.TypeOf((*MockRateLimitConfigClient)(nil).UpdateRateLimitConfigStatus), varargs...) } -// PatchRateLimitConfigStatus mocks base method -func (m *MockRateLimitConfigClient) PatchRateLimitConfigStatus(ctx context.Context, obj *v1alpha1.RateLimitConfig, patch client.Patch, opts ...client.PatchOption) error { +// UpsertRateLimitConfig mocks base method. +func (m *MockRateLimitConfigClient) UpsertRateLimitConfig(ctx context.Context, obj *v1alpha1.RateLimitConfig, transitionFuncs ...v1alpha1.RateLimitConfigTransitionFunction) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, obj, patch} - for _, a := range opts { + varargs := []interface{}{ctx, obj} + for _, a := range transitionFuncs { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "PatchRateLimitConfigStatus", varargs...) + ret := m.ctrl.Call(m, "UpsertRateLimitConfig", varargs...) ret0, _ := ret[0].(error) return ret0 } -// PatchRateLimitConfigStatus indicates an expected call of PatchRateLimitConfigStatus -func (mr *MockRateLimitConfigClientMockRecorder) PatchRateLimitConfigStatus(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call { +// UpsertRateLimitConfig indicates an expected call of UpsertRateLimitConfig. +func (mr *MockRateLimitConfigClientMockRecorder) UpsertRateLimitConfig(ctx, obj interface{}, transitionFuncs ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, obj, patch}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchRateLimitConfigStatus", reflect.TypeOf((*MockRateLimitConfigClient)(nil).PatchRateLimitConfigStatus), varargs...) + varargs := append([]interface{}{ctx, obj}, transitionFuncs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertRateLimitConfig", reflect.TypeOf((*MockRateLimitConfigClient)(nil).UpsertRateLimitConfig), varargs...) } -// MockMulticlusterRateLimitConfigClient is a mock of MulticlusterRateLimitConfigClient interface +// MockMulticlusterRateLimitConfigClient is a mock of MulticlusterRateLimitConfigClient interface. type MockMulticlusterRateLimitConfigClient struct { ctrl *gomock.Controller recorder *MockMulticlusterRateLimitConfigClientMockRecorder } -// MockMulticlusterRateLimitConfigClientMockRecorder is the mock recorder for MockMulticlusterRateLimitConfigClient +// MockMulticlusterRateLimitConfigClientMockRecorder is the mock recorder for MockMulticlusterRateLimitConfigClient. type MockMulticlusterRateLimitConfigClientMockRecorder struct { mock *MockMulticlusterRateLimitConfigClient } -// NewMockMulticlusterRateLimitConfigClient creates a new mock instance +// NewMockMulticlusterRateLimitConfigClient creates a new mock instance. func NewMockMulticlusterRateLimitConfigClient(ctrl *gomock.Controller) *MockMulticlusterRateLimitConfigClient { mock := &MockMulticlusterRateLimitConfigClient{ctrl: ctrl} mock.recorder = &MockMulticlusterRateLimitConfigClientMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockMulticlusterRateLimitConfigClient) EXPECT() *MockMulticlusterRateLimitConfigClientMockRecorder { return m.recorder } -// Cluster mocks base method +// Cluster mocks base method. func (m *MockMulticlusterRateLimitConfigClient) Cluster(cluster string) (v1alpha1.RateLimitConfigClient, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Cluster", cluster) @@ -586,7 +586,7 @@ func (m *MockMulticlusterRateLimitConfigClient) Cluster(cluster string) (v1alpha return ret0, ret1 } -// Cluster indicates an expected call of Cluster +// Cluster indicates an expected call of Cluster. func (mr *MockMulticlusterRateLimitConfigClientMockRecorder) Cluster(cluster interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cluster", reflect.TypeOf((*MockMulticlusterRateLimitConfigClient)(nil).Cluster), cluster) diff --git a/pkg/api/ratelimit.solo.io/v1alpha1/proto_deepcopy.go b/pkg/api/ratelimit.solo.io/v1alpha1/proto_deepcopy.go index 50a8e46d8..ae9c59329 100644 --- a/pkg/api/ratelimit.solo.io/v1alpha1/proto_deepcopy.go +++ b/pkg/api/ratelimit.solo.io/v1alpha1/proto_deepcopy.go @@ -6,16 +6,27 @@ package v1alpha1 import ( proto "github.com/golang/protobuf/proto" + "github.com/solo-io/protoc-gen-ext/pkg/clone" ) // DeepCopyInto for the RateLimitConfig.Spec func (in *RateLimitConfigSpec) DeepCopyInto(out *RateLimitConfigSpec) { - p := proto.Clone(in).(*RateLimitConfigSpec) + var p *RateLimitConfigSpec + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*RateLimitConfigSpec) + } else { + p = proto.Clone(in).(*RateLimitConfigSpec) + } *out = *p } // DeepCopyInto for the RateLimitConfig.Status func (in *RateLimitConfigStatus) DeepCopyInto(out *RateLimitConfigStatus) { - p := proto.Clone(in).(*RateLimitConfigStatus) + var p *RateLimitConfigStatus + if h, ok := interface{}(in).(clone.Cloner); ok { + p = h.Clone().(*RateLimitConfigStatus) + } else { + p = proto.Clone(in).(*RateLimitConfigStatus) + } *out = *p } diff --git a/pkg/api/ratelimit.solo.io/v1alpha1/ratelimit.pb.equal.go b/pkg/api/ratelimit.solo.io/v1alpha1/ratelimit.pb.equal.go index 612ccf8d2..df821b106 100644 --- a/pkg/api/ratelimit.solo.io/v1alpha1/ratelimit.pb.equal.go +++ b/pkg/api/ratelimit.solo.io/v1alpha1/ratelimit.pb.equal.go @@ -49,6 +49,9 @@ func (m *RateLimitConfigSpec) Equal(that interface{}) bool { switch m.ConfigType.(type) { case *RateLimitConfigSpec_Raw_: + if _, ok := target.ConfigType.(*RateLimitConfigSpec_Raw_); !ok { + return false + } if h, ok := interface{}(m.GetRaw()).(equality.Equalizer); ok { if !h.Equal(target.GetRaw()) { @@ -60,6 +63,11 @@ func (m *RateLimitConfigSpec) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.ConfigType != target.ConfigType { + return false + } } return true @@ -101,6 +109,47 @@ func (m *RateLimitConfigStatus) Equal(that interface{}) bool { return true } +// Equal function +func (m *RateLimitConfigNamespacedStatuses) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*RateLimitConfigNamespacedStatuses) + if !ok { + that2, ok := that.(RateLimitConfigNamespacedStatuses) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetStatuses()) != len(target.GetStatuses()) { + return false + } + for k, v := range m.GetStatuses() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetStatuses()[k]) { + return false + } + } else { + if !proto.Equal(v, target.GetStatuses()[k]) { + return false + } + } + + } + + return true +} + // Equal function func (m *Descriptor) Equal(that interface{}) bool { if that == nil { @@ -310,6 +359,16 @@ func (m *RateLimitActions) Equal(that interface{}) bool { } + if h, ok := interface{}(m.GetLimit()).(equality.Equalizer); ok { + if !h.Equal(target.GetLimit()) { + return false + } + } else { + if !proto.Equal(m.GetLimit(), target.GetLimit()) { + return false + } + } + return true } @@ -369,6 +428,9 @@ func (m *Action) Equal(that interface{}) bool { switch m.ActionSpecifier.(type) { case *Action_SourceCluster_: + if _, ok := target.ActionSpecifier.(*Action_SourceCluster_); !ok { + return false + } if h, ok := interface{}(m.GetSourceCluster()).(equality.Equalizer); ok { if !h.Equal(target.GetSourceCluster()) { @@ -381,6 +443,9 @@ func (m *Action) Equal(that interface{}) bool { } case *Action_DestinationCluster_: + if _, ok := target.ActionSpecifier.(*Action_DestinationCluster_); !ok { + return false + } if h, ok := interface{}(m.GetDestinationCluster()).(equality.Equalizer); ok { if !h.Equal(target.GetDestinationCluster()) { @@ -393,6 +458,9 @@ func (m *Action) Equal(that interface{}) bool { } case *Action_RequestHeaders_: + if _, ok := target.ActionSpecifier.(*Action_RequestHeaders_); !ok { + return false + } if h, ok := interface{}(m.GetRequestHeaders()).(equality.Equalizer); ok { if !h.Equal(target.GetRequestHeaders()) { @@ -405,6 +473,9 @@ func (m *Action) Equal(that interface{}) bool { } case *Action_RemoteAddress_: + if _, ok := target.ActionSpecifier.(*Action_RemoteAddress_); !ok { + return false + } if h, ok := interface{}(m.GetRemoteAddress()).(equality.Equalizer); ok { if !h.Equal(target.GetRemoteAddress()) { @@ -417,6 +488,9 @@ func (m *Action) Equal(that interface{}) bool { } case *Action_GenericKey_: + if _, ok := target.ActionSpecifier.(*Action_GenericKey_); !ok { + return false + } if h, ok := interface{}(m.GetGenericKey()).(equality.Equalizer); ok { if !h.Equal(target.GetGenericKey()) { @@ -429,6 +503,9 @@ func (m *Action) Equal(that interface{}) bool { } case *Action_HeaderValueMatch_: + if _, ok := target.ActionSpecifier.(*Action_HeaderValueMatch_); !ok { + return false + } if h, ok := interface{}(m.GetHeaderValueMatch()).(equality.Equalizer); ok { if !h.Equal(target.GetHeaderValueMatch()) { @@ -441,6 +518,9 @@ func (m *Action) Equal(that interface{}) bool { } case *Action_Metadata: + if _, ok := target.ActionSpecifier.(*Action_Metadata); !ok { + return false + } if h, ok := interface{}(m.GetMetadata()).(equality.Equalizer); ok { if !h.Equal(target.GetMetadata()) { @@ -452,6 +532,105 @@ func (m *Action) Equal(that interface{}) bool { } } + default: + // m is nil but target is not nil + if m.ActionSpecifier != target.ActionSpecifier { + return false + } + } + + return true +} + +// Equal function +func (m *MetaData) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*MetaData) + if !ok { + that2, ok := that.(MetaData) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if strings.Compare(m.GetDescriptorKey(), target.GetDescriptorKey()) != 0 { + return false + } + + if h, ok := interface{}(m.GetMetadataKey()).(equality.Equalizer); ok { + if !h.Equal(target.GetMetadataKey()) { + return false + } + } else { + if !proto.Equal(m.GetMetadataKey(), target.GetMetadataKey()) { + return false + } + } + + if strings.Compare(m.GetDefaultValue(), target.GetDefaultValue()) != 0 { + return false + } + + if m.GetSource() != target.GetSource() { + return false + } + + return true +} + +// Equal function +func (m *Override) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Override) + if !ok { + that2, ok := that.(Override) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + switch m.OverrideSpecifier.(type) { + + case *Override_DynamicMetadata_: + if _, ok := target.OverrideSpecifier.(*Override_DynamicMetadata_); !ok { + return false + } + + if h, ok := interface{}(m.GetDynamicMetadata()).(equality.Equalizer); ok { + if !h.Equal(target.GetDynamicMetadata()) { + return false + } + } else { + if !proto.Equal(m.GetDynamicMetadata(), target.GetDynamicMetadata()) { + return false + } + } + + default: + // m is nil but target is not nil + if m.OverrideSpecifier != target.OverrideSpecifier { + return false + } } return true @@ -719,52 +898,6 @@ func (m *Action_HeaderValueMatch) Equal(that interface{}) bool { return true } -// Equal function -func (m *Action_MetaData) Equal(that interface{}) bool { - if that == nil { - return m == nil - } - - target, ok := that.(*Action_MetaData) - if !ok { - that2, ok := that.(Action_MetaData) - if ok { - target = &that2 - } else { - return false - } - } - if target == nil { - return m == nil - } else if m == nil { - return false - } - - if strings.Compare(m.GetDescriptorKey(), target.GetDescriptorKey()) != 0 { - return false - } - - if h, ok := interface{}(m.GetMetadataKey()).(equality.Equalizer); ok { - if !h.Equal(target.GetMetadataKey()) { - return false - } - } else { - if !proto.Equal(m.GetMetadataKey(), target.GetMetadataKey()) { - return false - } - } - - if strings.Compare(m.GetDefaultValue(), target.GetDefaultValue()) != 0 { - return false - } - - if m.GetSource() != target.GetSource() { - return false - } - - return true -} - // Equal function func (m *Action_HeaderValueMatch_HeaderMatcher) Equal(that interface{}) bool { if that == nil { @@ -797,18 +930,27 @@ func (m *Action_HeaderValueMatch_HeaderMatcher) Equal(that interface{}) bool { switch m.HeaderMatchSpecifier.(type) { case *Action_HeaderValueMatch_HeaderMatcher_ExactMatch: + if _, ok := target.HeaderMatchSpecifier.(*Action_HeaderValueMatch_HeaderMatcher_ExactMatch); !ok { + return false + } if strings.Compare(m.GetExactMatch(), target.GetExactMatch()) != 0 { return false } case *Action_HeaderValueMatch_HeaderMatcher_RegexMatch: + if _, ok := target.HeaderMatchSpecifier.(*Action_HeaderValueMatch_HeaderMatcher_RegexMatch); !ok { + return false + } if strings.Compare(m.GetRegexMatch(), target.GetRegexMatch()) != 0 { return false } case *Action_HeaderValueMatch_HeaderMatcher_RangeMatch: + if _, ok := target.HeaderMatchSpecifier.(*Action_HeaderValueMatch_HeaderMatcher_RangeMatch); !ok { + return false + } if h, ok := interface{}(m.GetRangeMatch()).(equality.Equalizer); ok { if !h.Equal(target.GetRangeMatch()) { @@ -821,23 +963,37 @@ func (m *Action_HeaderValueMatch_HeaderMatcher) Equal(that interface{}) bool { } case *Action_HeaderValueMatch_HeaderMatcher_PresentMatch: + if _, ok := target.HeaderMatchSpecifier.(*Action_HeaderValueMatch_HeaderMatcher_PresentMatch); !ok { + return false + } if m.GetPresentMatch() != target.GetPresentMatch() { return false } case *Action_HeaderValueMatch_HeaderMatcher_PrefixMatch: + if _, ok := target.HeaderMatchSpecifier.(*Action_HeaderValueMatch_HeaderMatcher_PrefixMatch); !ok { + return false + } if strings.Compare(m.GetPrefixMatch(), target.GetPrefixMatch()) != 0 { return false } case *Action_HeaderValueMatch_HeaderMatcher_SuffixMatch: + if _, ok := target.HeaderMatchSpecifier.(*Action_HeaderValueMatch_HeaderMatcher_SuffixMatch); !ok { + return false + } if strings.Compare(m.GetSuffixMatch(), target.GetSuffixMatch()) != 0 { return false } + default: + // m is nil but target is not nil + if m.HeaderMatchSpecifier != target.HeaderMatchSpecifier { + return false + } } return true @@ -876,14 +1032,14 @@ func (m *Action_HeaderValueMatch_HeaderMatcher_Int64Range) Equal(that interface{ } // Equal function -func (m *Action_MetaData_MetadataKey) Equal(that interface{}) bool { +func (m *MetaData_MetadataKey) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*Action_MetaData_MetadataKey) + target, ok := that.(*MetaData_MetadataKey) if !ok { - that2, ok := that.(Action_MetaData_MetadataKey) + that2, ok := that.(MetaData_MetadataKey) if ok { target = &that2 } else { @@ -921,14 +1077,14 @@ func (m *Action_MetaData_MetadataKey) Equal(that interface{}) bool { } // Equal function -func (m *Action_MetaData_MetadataKey_PathSegment) Equal(that interface{}) bool { +func (m *MetaData_MetadataKey_PathSegment) Equal(that interface{}) bool { if that == nil { return m == nil } - target, ok := that.(*Action_MetaData_MetadataKey_PathSegment) + target, ok := that.(*MetaData_MetadataKey_PathSegment) if !ok { - that2, ok := that.(Action_MetaData_MetadataKey_PathSegment) + that2, ok := that.(MetaData_MetadataKey_PathSegment) if ok { target = &that2 } else { @@ -943,12 +1099,54 @@ func (m *Action_MetaData_MetadataKey_PathSegment) Equal(that interface{}) bool { switch m.Segment.(type) { - case *Action_MetaData_MetadataKey_PathSegment_Key: + case *MetaData_MetadataKey_PathSegment_Key: + if _, ok := target.Segment.(*MetaData_MetadataKey_PathSegment_Key); !ok { + return false + } if strings.Compare(m.GetKey(), target.GetKey()) != 0 { return false } + default: + // m is nil but target is not nil + if m.Segment != target.Segment { + return false + } + } + + return true +} + +// Equal function +func (m *Override_DynamicMetadata) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*Override_DynamicMetadata) + if !ok { + that2, ok := that.(Override_DynamicMetadata) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetMetadataKey()).(equality.Equalizer); ok { + if !h.Equal(target.GetMetadataKey()) { + return false + } + } else { + if !proto.Equal(m.GetMetadataKey(), target.GetMetadataKey()) { + return false + } } return true diff --git a/pkg/api/ratelimit.solo.io/v1alpha1/ratelimit.pb.go b/pkg/api/ratelimit.solo.io/v1alpha1/ratelimit.pb.go index ba9c5243c..f112d7c63 100644 --- a/pkg/api/ratelimit.solo.io/v1alpha1/ratelimit.pb.go +++ b/pkg/api/ratelimit.solo.io/v1alpha1/ratelimit.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 +// protoc-gen-go v1.36.5 // protoc v3.6.1 // source: github.com/solo-io/solo-apis/api/rate-limiter/v1alpha1/ratelimit.proto @@ -9,12 +9,12 @@ package v1alpha1 import ( reflect "reflect" sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" - wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -24,10 +24,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type RateLimitConfigStatus_State int32 const ( @@ -129,79 +125,77 @@ func (x RateLimit_Unit) Number() protoreflect.EnumNumber { // Deprecated: Use RateLimit_Unit.Descriptor instead. func (RateLimit_Unit) EnumDescriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{6, 0} + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{7, 0} } -type Action_MetaData_Source int32 +type MetaData_Source int32 const ( // Query [dynamic metadata](https://www.envoyproxy.io/docs/envoy/latest/configuration/advanced/well_known_dynamic_metadata#well-known-dynamic-metadata). - Action_MetaData_DYNAMIC Action_MetaData_Source = 0 + MetaData_DYNAMIC MetaData_Source = 0 // Query [route entry metadata](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-field-config-route-v3-route-metadata). - Action_MetaData_ROUTE_ENTRY Action_MetaData_Source = 1 + MetaData_ROUTE_ENTRY MetaData_Source = 1 ) -// Enum value maps for Action_MetaData_Source. +// Enum value maps for MetaData_Source. var ( - Action_MetaData_Source_name = map[int32]string{ + MetaData_Source_name = map[int32]string{ 0: "DYNAMIC", 1: "ROUTE_ENTRY", } - Action_MetaData_Source_value = map[string]int32{ + MetaData_Source_value = map[string]int32{ "DYNAMIC": 0, "ROUTE_ENTRY": 1, } ) -func (x Action_MetaData_Source) Enum() *Action_MetaData_Source { - p := new(Action_MetaData_Source) +func (x MetaData_Source) Enum() *MetaData_Source { + p := new(MetaData_Source) *p = x return p } -func (x Action_MetaData_Source) String() string { +func (x MetaData_Source) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (Action_MetaData_Source) Descriptor() protoreflect.EnumDescriptor { +func (MetaData_Source) Descriptor() protoreflect.EnumDescriptor { return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_enumTypes[2].Descriptor() } -func (Action_MetaData_Source) Type() protoreflect.EnumType { +func (MetaData_Source) Type() protoreflect.EnumType { return &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_enumTypes[2] } -func (x Action_MetaData_Source) Number() protoreflect.EnumNumber { +func (x MetaData_Source) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use Action_MetaData_Source.Descriptor instead. -func (Action_MetaData_Source) EnumDescriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{7, 6, 0} +// Deprecated: Use MetaData_Source.Descriptor instead. +func (MetaData_Source) EnumDescriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{9, 0} } // A `RateLimitConfig` describes a rate limit policy. type RateLimitConfigSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Each `RateLimitConfig` is an instance of one specific configuration type. // Currently, only raw configuration is supported, but going forward we are planning on adding // more high-level configuration formats to support specific use cases. // - // Types that are assignable to ConfigType: + // Types that are valid to be assigned to ConfigType: + // // *RateLimitConfigSpec_Raw_ - ConfigType isRateLimitConfigSpec_ConfigType `protobuf_oneof:"config_type"` + ConfigType isRateLimitConfigSpec_ConfigType `protobuf_oneof:"config_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimitConfigSpec) Reset() { *x = RateLimitConfigSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimitConfigSpec) String() string { @@ -212,7 +206,7 @@ func (*RateLimitConfigSpec) ProtoMessage() {} func (x *RateLimitConfigSpec) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -227,16 +221,18 @@ func (*RateLimitConfigSpec) Descriptor() ([]byte, []int) { return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{0} } -func (m *RateLimitConfigSpec) GetConfigType() isRateLimitConfigSpec_ConfigType { - if m != nil { - return m.ConfigType +func (x *RateLimitConfigSpec) GetConfigType() isRateLimitConfigSpec_ConfigType { + if x != nil { + return x.ConfigType } return nil } func (x *RateLimitConfigSpec) GetRaw() *RateLimitConfigSpec_Raw { - if x, ok := x.GetConfigType().(*RateLimitConfigSpec_Raw_); ok { - return x.Raw + if x != nil { + if x, ok := x.ConfigType.(*RateLimitConfigSpec_Raw_); ok { + return x.Raw + } } return nil } @@ -254,10 +250,7 @@ func (*RateLimitConfigSpec_Raw_) isRateLimitConfigSpec_ConfigType() {} // The current status of the `RateLimitConfig`. type RateLimitConfigStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The current state of the `RateLimitConfig`. State RateLimitConfigStatus_State `protobuf:"varint,1,opt,name=state,proto3,enum=ratelimit.api.solo.io.RateLimitConfigStatus_State" json:"state,omitempty"` // A human-readable string explaining the status. @@ -265,15 +258,15 @@ type RateLimitConfigStatus struct { // The observed generation of the resource. // When this matches the metadata.generation of the resource, it indicates the status is up-to-date. ObservedGeneration int64 `protobuf:"varint,3,opt,name=observed_generation,json=observedGeneration,proto3" json:"observed_generation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimitConfigStatus) Reset() { *x = RateLimitConfigStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimitConfigStatus) String() string { @@ -284,7 +277,7 @@ func (*RateLimitConfigStatus) ProtoMessage() {} func (x *RateLimitConfigStatus) ProtoReflect() protoreflect.Message { mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -320,6 +313,50 @@ func (x *RateLimitConfigStatus) GetObservedGeneration() int64 { return 0 } +type RateLimitConfigNamespacedStatuses struct { + state protoimpl.MessageState `protogen:"open.v1"` + Statuses map[string]*RateLimitConfigStatus `protobuf:"bytes,1,rep,name=statuses,proto3" json:"statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RateLimitConfigNamespacedStatuses) Reset() { + *x = RateLimitConfigNamespacedStatuses{} + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RateLimitConfigNamespacedStatuses) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RateLimitConfigNamespacedStatuses) ProtoMessage() {} + +func (x *RateLimitConfigNamespacedStatuses) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RateLimitConfigNamespacedStatuses.ProtoReflect.Descriptor instead. +func (*RateLimitConfigNamespacedStatuses) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{2} +} + +func (x *RateLimitConfigNamespacedStatuses) GetStatuses() map[string]*RateLimitConfigStatus { + if x != nil { + return x.Statuses + } + return nil +} + // A descriptor is a list of key/value pairs that the rate limit server uses to select // the correct rate limit to use when limiting. Descriptors are case-sensitive. // @@ -331,10 +368,11 @@ func (x *RateLimitConfigStatus) GetObservedGeneration() int64 { // - key: // value: // rate_limit: (optional block) -// unit: -// requests_per_unit: +// unit: +// requests_per_unit: // descriptors: (optional block) -// - ... (nested repetition of above) +// - ... (nested repetition of above) +// // ``` // // Each descriptor in a descriptor list must have a key. It can also optionally have a value to enable @@ -342,10 +380,7 @@ func (x *RateLimitConfigStatus) GetObservedGeneration() int64 { // If the rate limit is not present and there are no nested descriptors, then the descriptor is effectively whitelisted. // Otherwise, nested descriptors allow more complex matching and rate limiting scenarios. type Descriptor struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The key of the descriptor. This field is required. Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Optional value for the descriptor. If omitted, the server will create a rate limit for @@ -374,16 +409,16 @@ type Descriptor struct { // will still be considered. (this can be a rule that also has `alwaysApply` set to `true`) // // Defaults to false. - AlwaysApply bool `protobuf:"varint,6,opt,name=always_apply,json=alwaysApply,proto3" json:"always_apply,omitempty"` + AlwaysApply bool `protobuf:"varint,6,opt,name=always_apply,json=alwaysApply,proto3" json:"always_apply,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Descriptor) Reset() { *x = Descriptor{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Descriptor) String() string { @@ -393,8 +428,8 @@ func (x *Descriptor) String() string { func (*Descriptor) ProtoMessage() {} func (x *Descriptor) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[3] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -406,7 +441,7 @@ func (x *Descriptor) ProtoReflect() protoreflect.Message { // Deprecated: Use Descriptor.ProtoReflect.Descriptor instead. func (*Descriptor) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{2} + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{3} } func (x *Descriptor) GetKey() string { @@ -459,15 +494,16 @@ func (x *Descriptor) GetAlwaysApply() bool { // // ``` // set_descriptors: -// - simple_descriptors: (optional block) -// - key: -// value: -// - ... (repetition of above) -// rate_limit: -// requests_per_unit: -// unit: -// always_apply: -// - ... (repetition of above) +// - simple_descriptors: (optional block) +// - key: +// value: +// - ... (repetition of above) +// rate_limit: +// requests_per_unit: +// unit: +// always_apply: +// - ... (repetition of above) +// // ``` // // Each SetDescriptor defines a new Rate Limit "rule". When a request comes in, rate limit @@ -476,10 +512,7 @@ func (x *Descriptor) GetAlwaysApply() bool { // // The `rate_limit` block sets up an actual rate limit rule. type SetDescriptor struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Simple descriptor key/value pairs. SimpleDescriptors []*SimpleDescriptor `protobuf:"bytes,1,rep,name=simple_descriptors,json=simpleDescriptors,proto3" json:"simple_descriptors,omitempty"` // Rate limit rule for the descriptor. @@ -496,16 +529,16 @@ type SetDescriptor struct { // rate limit server, and their request count is not incremented in the rate limit server cache. // // Defaults to false. - AlwaysApply bool `protobuf:"varint,3,opt,name=always_apply,json=alwaysApply,proto3" json:"always_apply,omitempty"` + AlwaysApply bool `protobuf:"varint,3,opt,name=always_apply,json=alwaysApply,proto3" json:"always_apply,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetDescriptor) Reset() { *x = SetDescriptor{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetDescriptor) String() string { @@ -515,8 +548,8 @@ func (x *SetDescriptor) String() string { func (*SetDescriptor) ProtoMessage() {} func (x *SetDescriptor) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[4] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -528,7 +561,7 @@ func (x *SetDescriptor) ProtoReflect() protoreflect.Message { // Deprecated: Use SetDescriptor.ProtoReflect.Descriptor instead. func (*SetDescriptor) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{3} + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{4} } func (x *SetDescriptor) GetSimpleDescriptors() []*SimpleDescriptor { @@ -558,33 +591,32 @@ func (x *SetDescriptor) GetAlwaysApply() bool { // The format is: // // ``` -// simple_descriptors: -// - key: -// value: -// - ... (repetition of above) +// +// simple_descriptors: +// - key: +// value: +// - ... (repetition of above) +// // ``` // // Each simpleDescriptor in a simpleDescriptor list must have a key. It can also optionally have a value to enable // a more specific match. type SimpleDescriptor struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The key of the descriptor. This field is required. Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Optional value for the descriptor. If omitted, the server will create a rate limit for // each value that is provided for this descriptor in rate limit requests. - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SimpleDescriptor) Reset() { *x = SimpleDescriptor{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SimpleDescriptor) String() string { @@ -594,8 +626,8 @@ func (x *SimpleDescriptor) String() string { func (*SimpleDescriptor) ProtoMessage() {} func (x *SimpleDescriptor) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[5] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -607,7 +639,7 @@ func (x *SimpleDescriptor) ProtoReflect() protoreflect.Message { // Deprecated: Use SimpleDescriptor.ProtoReflect.Descriptor instead. func (*SimpleDescriptor) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{4} + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{5} } func (x *SimpleDescriptor) GetKey() string { @@ -629,37 +661,39 @@ func (x *SimpleDescriptor) GetValue() string { // Order matters on provided actions but not on setActions, e.g. the following actions: // - actions: // - requestHeaders: -// descriptorKey: account_id -// headerName: x-account-id +// descriptorKey: account_id +// headerName: x-account-id // - requestHeaders: -// descriptorKey: plan -// headerName: x-plan +// descriptorKey: plan +// headerName: x-plan +// // define an ordered descriptor tuple like so: ('account_id', ''), ('plan', '') // // While the current form matches, the same tuple in reverse order would not match the following descriptor: // // descriptors: -// - key: account_id -// descriptors: +// - key: account_id +// descriptors: // - key: plan // value: BASIC // rateLimit: -// requestsPerUnit: 1 -// unit: MINUTE -// - key: plan -// value: PLUS -// rateLimit: -// requestsPerUnit: 20 -// unit: MINUTE +// requestsPerUnit: 1 +// unit: MINUTE +// - key: plan +// value: PLUS +// rateLimit: +// requestsPerUnit: 20 +// unit: MINUTE // // Similarly, the following setActions: // - setActions: // - requestHeaders: -// descriptorKey: account_id -// headerName: x-account-id +// descriptorKey: account_id +// headerName: x-account-id // - requestHeaders: -// descriptorKey: plan -// headerName: x-plan +// descriptorKey: plan +// headerName: x-plan +// // define an unordered descriptor set like so: {('account_id', ''), ('plan', '')} // // This set would match the following setDescriptor: @@ -669,42 +703,41 @@ func (x *SimpleDescriptor) GetValue() string { // - key: plan // value: BASIC // - key: account_id -// rateLimit: -// requestsPerUnit: 20 -// unit: MINUTE +// rateLimit: +// requestsPerUnit: 20 +// unit: MINUTE // // It would also match the following setDescriptor which includes only a subset of the setActions enumerated: // // setDescriptors: // - simpleDescriptors: // - key: account_id -// rateLimit: -// requestsPerUnit: 20 -// unit: MINUTE +// rateLimit: +// requestsPerUnit: 20 +// unit: MINUTE // // It would even match the following setDescriptor. // Any setActions list would match this setDescriptor which has simpleDescriptors omitted entirely: // // setDescriptors: -// - rateLimit: -// requestsPerUnit: 20 -// unit: MINUTE +// - rateLimit: +// requestsPerUnit: 20 +// unit: MINUTE type RateLimitActions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Actions []*Action `protobuf:"bytes,1,rep,name=actions,proto3" json:"actions,omitempty"` + SetActions []*Action `protobuf:"bytes,2,rep,name=set_actions,json=setActions,proto3" json:"set_actions,omitempty"` + // An optional limit override to be appended to the descriptor produced by this rate limit configuration. If the override value is invalid or cannot be resolved from metadata, no override is provided. + Limit *Override `protobuf:"bytes,3,opt,name=limit,proto3" json:"limit,omitempty"` unknownFields protoimpl.UnknownFields - - Actions []*Action `protobuf:"bytes,1,rep,name=actions,proto3" json:"actions,omitempty"` - SetActions []*Action `protobuf:"bytes,2,rep,name=set_actions,json=setActions,proto3" json:"set_actions,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RateLimitActions) Reset() { *x = RateLimitActions{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimitActions) String() string { @@ -714,8 +747,8 @@ func (x *RateLimitActions) String() string { func (*RateLimitActions) ProtoMessage() {} func (x *RateLimitActions) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[6] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -727,7 +760,7 @@ func (x *RateLimitActions) ProtoReflect() protoreflect.Message { // Deprecated: Use RateLimitActions.ProtoReflect.Descriptor instead. func (*RateLimitActions) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{5} + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{6} } func (x *RateLimitActions) GetActions() []*Action { @@ -744,23 +777,27 @@ func (x *RateLimitActions) GetSetActions() []*Action { return nil } +func (x *RateLimitActions) GetLimit() *Override { + if x != nil { + return x.Limit + } + return nil +} + // A `RateLimit` specifies the actual rate limit that will be used when there is a match. type RateLimit struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Unit RateLimit_Unit `protobuf:"varint,1,opt,name=unit,proto3,enum=ratelimit.api.solo.io.RateLimit_Unit" json:"unit,omitempty"` - RequestsPerUnit uint32 `protobuf:"varint,2,opt,name=requests_per_unit,json=requestsPerUnit,proto3" json:"requests_per_unit,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Unit RateLimit_Unit `protobuf:"varint,1,opt,name=unit,proto3,enum=ratelimit.api.solo.io.RateLimit_Unit" json:"unit,omitempty"` + RequestsPerUnit uint32 `protobuf:"varint,2,opt,name=requests_per_unit,json=requestsPerUnit,proto3" json:"requests_per_unit,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RateLimit) Reset() { *x = RateLimit{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RateLimit) String() string { @@ -770,8 +807,8 @@ func (x *RateLimit) String() string { func (*RateLimit) ProtoMessage() {} func (x *RateLimit) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[7] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -783,7 +820,7 @@ func (x *RateLimit) ProtoReflect() protoreflect.Message { // Deprecated: Use RateLimit.ProtoReflect.Descriptor instead. func (*RateLimit) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{6} + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{7} } func (x *RateLimit) GetUnit() RateLimit_Unit { @@ -803,11 +840,9 @@ func (x *RateLimit) GetRequestsPerUnit() uint32 { // Copied directly from envoy // https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-msg-config-route-v3-ratelimit-action type Action struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to ActionSpecifier: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to ActionSpecifier: + // // *Action_SourceCluster_ // *Action_DestinationCluster_ // *Action_RequestHeaders_ @@ -816,15 +851,15 @@ type Action struct { // *Action_HeaderValueMatch_ // *Action_Metadata ActionSpecifier isAction_ActionSpecifier `protobuf_oneof:"action_specifier"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Action) Reset() { *x = Action{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Action) String() string { @@ -834,8 +869,8 @@ func (x *Action) String() string { func (*Action) ProtoMessage() {} func (x *Action) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[8] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -847,61 +882,75 @@ func (x *Action) ProtoReflect() protoreflect.Message { // Deprecated: Use Action.ProtoReflect.Descriptor instead. func (*Action) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{7} + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{8} } -func (m *Action) GetActionSpecifier() isAction_ActionSpecifier { - if m != nil { - return m.ActionSpecifier +func (x *Action) GetActionSpecifier() isAction_ActionSpecifier { + if x != nil { + return x.ActionSpecifier } return nil } func (x *Action) GetSourceCluster() *Action_SourceCluster { - if x, ok := x.GetActionSpecifier().(*Action_SourceCluster_); ok { - return x.SourceCluster + if x != nil { + if x, ok := x.ActionSpecifier.(*Action_SourceCluster_); ok { + return x.SourceCluster + } } return nil } func (x *Action) GetDestinationCluster() *Action_DestinationCluster { - if x, ok := x.GetActionSpecifier().(*Action_DestinationCluster_); ok { - return x.DestinationCluster + if x != nil { + if x, ok := x.ActionSpecifier.(*Action_DestinationCluster_); ok { + return x.DestinationCluster + } } return nil } func (x *Action) GetRequestHeaders() *Action_RequestHeaders { - if x, ok := x.GetActionSpecifier().(*Action_RequestHeaders_); ok { - return x.RequestHeaders + if x != nil { + if x, ok := x.ActionSpecifier.(*Action_RequestHeaders_); ok { + return x.RequestHeaders + } } return nil } func (x *Action) GetRemoteAddress() *Action_RemoteAddress { - if x, ok := x.GetActionSpecifier().(*Action_RemoteAddress_); ok { - return x.RemoteAddress + if x != nil { + if x, ok := x.ActionSpecifier.(*Action_RemoteAddress_); ok { + return x.RemoteAddress + } } return nil } func (x *Action) GetGenericKey() *Action_GenericKey { - if x, ok := x.GetActionSpecifier().(*Action_GenericKey_); ok { - return x.GenericKey + if x != nil { + if x, ok := x.ActionSpecifier.(*Action_GenericKey_); ok { + return x.GenericKey + } } return nil } func (x *Action) GetHeaderValueMatch() *Action_HeaderValueMatch { - if x, ok := x.GetActionSpecifier().(*Action_HeaderValueMatch_); ok { - return x.HeaderValueMatch + if x != nil { + if x, ok := x.ActionSpecifier.(*Action_HeaderValueMatch_); ok { + return x.HeaderValueMatch + } } return nil } -func (x *Action) GetMetadata() *Action_MetaData { - if x, ok := x.GetActionSpecifier().(*Action_Metadata); ok { - return x.Metadata +func (x *Action) GetMetadata() *MetaData { + if x != nil { + if x, ok := x.ActionSpecifier.(*Action_Metadata); ok { + return x.Metadata + } } return nil } @@ -942,7 +991,7 @@ type Action_HeaderValueMatch_ struct { type Action_Metadata struct { // Rate limit on metadata. - Metadata *Action_MetaData `protobuf:"bytes,8,opt,name=metadata,proto3,oneof"` + Metadata *MetaData `protobuf:"bytes,8,opt,name=metadata,proto3,oneof"` } func (*Action_SourceCluster_) isAction_ActionSpecifier() {} @@ -959,43 +1008,41 @@ func (*Action_HeaderValueMatch_) isAction_ActionSpecifier() {} func (*Action_Metadata) isAction_ActionSpecifier() {} -// This object allows users to specify rate limit policies using the raw configuration formats -// used by the server and the client (Envoy). When using this configuration type, it is up to -// the user to ensure that server and client configurations match to implement the desired behavior. -// The server (and the client libraries that are shipped with it) will ensure that there are no -// collisions between raw configurations defined on separate `RateLimitConfig` resources. -type RateLimitConfigSpec_Raw struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +// The following descriptor entry is appended when the metadata contains a key value: +// +// ("", "") +type MetaData struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Required. The key to use in the descriptor entry. + DescriptorKey string `protobuf:"bytes,1,opt,name=descriptor_key,json=descriptorKey,proto3" json:"descriptor_key,omitempty"` // [(validate.rules).string = {min_len: 1}]; + // Required. Metadata struct that defines the key and path to retrieve the string value. A match will + // only happen if the value in the metadata is of type string. + MetadataKey *MetaData_MetadataKey `protobuf:"bytes,2,opt,name=metadata_key,json=metadataKey,proto3" json:"metadata_key,omitempty"` // [(validate.rules).message = {required: true}]; + // An optional value to use if *metadata_key* is empty. If not set and + // no value is present under the metadata_key then no descriptor is generated. + DefaultValue string `protobuf:"bytes,3,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` + // Source of metadata + Source MetaData_Source `protobuf:"varint,4,opt,name=source,proto3,enum=ratelimit.api.solo.io.MetaData_Source" json:"source,omitempty"` // [(validate.rules).enum = {defined_only: true}]; unknownFields protoimpl.UnknownFields - - // The descriptors that will be applied to the server. - Descriptors []*Descriptor `protobuf:"bytes,1,rep,name=descriptors,proto3" json:"descriptors,omitempty"` - // Actions specify how the client (Envoy) will compose the descriptors that - // will be sent to the server to make a rate limiting decision. - RateLimits []*RateLimitActions `protobuf:"bytes,2,rep,name=rate_limits,json=rateLimits,proto3" json:"rate_limits,omitempty"` - // The set descriptors that will be applied to the server. - SetDescriptors []*SetDescriptor `protobuf:"bytes,3,rep,name=set_descriptors,json=setDescriptors,proto3" json:"set_descriptors,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *RateLimitConfigSpec_Raw) Reset() { - *x = RateLimitConfigSpec_Raw{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *MetaData) Reset() { + *x = MetaData{} + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *RateLimitConfigSpec_Raw) String() string { +func (x *MetaData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RateLimitConfigSpec_Raw) ProtoMessage() {} +func (*MetaData) ProtoMessage() {} -func (x *RateLimitConfigSpec_Raw) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { +func (x *MetaData) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[9] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1005,63 +1052,67 @@ func (x *RateLimitConfigSpec_Raw) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RateLimitConfigSpec_Raw.ProtoReflect.Descriptor instead. -func (*RateLimitConfigSpec_Raw) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{0, 0} +// Deprecated: Use MetaData.ProtoReflect.Descriptor instead. +func (*MetaData) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{9} } -func (x *RateLimitConfigSpec_Raw) GetDescriptors() []*Descriptor { +func (x *MetaData) GetDescriptorKey() string { if x != nil { - return x.Descriptors + return x.DescriptorKey } - return nil + return "" } -func (x *RateLimitConfigSpec_Raw) GetRateLimits() []*RateLimitActions { +func (x *MetaData) GetMetadataKey() *MetaData_MetadataKey { if x != nil { - return x.RateLimits + return x.MetadataKey } return nil } -func (x *RateLimitConfigSpec_Raw) GetSetDescriptors() []*SetDescriptor { +func (x *MetaData) GetDefaultValue() string { if x != nil { - return x.SetDescriptors + return x.DefaultValue } - return nil + return "" } -// The following descriptor entry is appended to the descriptor: -// -// ``` -// ("source_cluster", "") -// ``` -// -// is derived from the :option:`--service-cluster` option. -type Action_SourceCluster struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *MetaData) GetSource() MetaData_Source { + if x != nil { + return x.Source + } + return MetaData_DYNAMIC } -func (x *Action_SourceCluster) Reset() { - *x = Action_SourceCluster{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +// Copied directly from envoy +// https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-msg-config-route-v3-ratelimit-override +type Override struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to OverrideSpecifier: + // + // *Override_DynamicMetadata_ + OverrideSpecifier isOverride_OverrideSpecifier `protobuf_oneof:"override_specifier"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *Action_SourceCluster) String() string { +func (x *Override) Reset() { + *x = Override{} + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Override) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Action_SourceCluster) ProtoMessage() {} +func (*Override) ProtoMessage() {} -func (x *Action_SourceCluster) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { +func (x *Override) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[10] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1071,40 +1122,181 @@ func (x *Action_SourceCluster) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Action_SourceCluster.ProtoReflect.Descriptor instead. -func (*Action_SourceCluster) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{7, 0} +// Deprecated: Use Override.ProtoReflect.Descriptor instead. +func (*Override) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{10} } -// The following descriptor entry is appended to the descriptor: -// -// ``` -// ("destination_cluster", "") -// ``` -// -// Once a request matches against a route table rule, a routed cluster is determined by one of -// the following `route table configuration (envoy_api_msg_RouteConfiguration)` -// settings: -// -// * `cluster (envoy_api_field_route.RouteAction.cluster)` indicates the upstream cluster -// to route to. -// * `weighted_clusters (envoy_api_field_route.RouteAction.weighted_clusters)` -// chooses a cluster randomly from a set of clusters with attributed weight. -// * `cluster_header (envoy_api_field_route.RouteAction.cluster_header)` indicates which -// header in the request contains the target cluster. -type Action_DestinationCluster struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *Override) GetOverrideSpecifier() isOverride_OverrideSpecifier { + if x != nil { + return x.OverrideSpecifier + } + return nil } -func (x *Action_DestinationCluster) Reset() { - *x = Action_DestinationCluster{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[10] +func (x *Override) GetDynamicMetadata() *Override_DynamicMetadata { + if x != nil { + if x, ok := x.OverrideSpecifier.(*Override_DynamicMetadata_); ok { + return x.DynamicMetadata + } + } + return nil +} + +type isOverride_OverrideSpecifier interface { + isOverride_OverrideSpecifier() +} + +type Override_DynamicMetadata_ struct { + // Limit override from dynamic metadata. + DynamicMetadata *Override_DynamicMetadata `protobuf:"bytes,1,opt,name=dynamic_metadata,json=dynamicMetadata,proto3,oneof"` +} + +func (*Override_DynamicMetadata_) isOverride_OverrideSpecifier() {} + +// This object allows users to specify rate limit policies using the raw configuration formats +// used by the server and the client (Envoy). When using this configuration type, it is up to +// the user to ensure that server and client configurations match to implement the desired behavior. +// The server (and the client libraries that are shipped with it) will ensure that there are no +// collisions between raw configurations defined on separate `RateLimitConfig` resources. +type RateLimitConfigSpec_Raw struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The descriptors that will be applied to the server. + Descriptors []*Descriptor `protobuf:"bytes,1,rep,name=descriptors,proto3" json:"descriptors,omitempty"` + // Actions specify how the client (Envoy) will compose the descriptors that + // will be sent to the server to make a rate limiting decision. + RateLimits []*RateLimitActions `protobuf:"bytes,2,rep,name=rate_limits,json=rateLimits,proto3" json:"rate_limits,omitempty"` + // The set descriptors that will be applied to the server. + SetDescriptors []*SetDescriptor `protobuf:"bytes,3,rep,name=set_descriptors,json=setDescriptors,proto3" json:"set_descriptors,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RateLimitConfigSpec_Raw) Reset() { + *x = RateLimitConfigSpec_Raw{} + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RateLimitConfigSpec_Raw) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RateLimitConfigSpec_Raw) ProtoMessage() {} + +func (x *RateLimitConfigSpec_Raw) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RateLimitConfigSpec_Raw.ProtoReflect.Descriptor instead. +func (*RateLimitConfigSpec_Raw) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *RateLimitConfigSpec_Raw) GetDescriptors() []*Descriptor { + if x != nil { + return x.Descriptors + } + return nil +} + +func (x *RateLimitConfigSpec_Raw) GetRateLimits() []*RateLimitActions { + if x != nil { + return x.RateLimits + } + return nil +} + +func (x *RateLimitConfigSpec_Raw) GetSetDescriptors() []*SetDescriptor { + if x != nil { + return x.SetDescriptors + } + return nil +} + +// The following descriptor entry is appended to the descriptor: +// +// ``` +// +// ("source_cluster", "") +// +// ``` +// +// is derived from the :option:`--service-cluster` option. +type Action_SourceCluster struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Action_SourceCluster) Reset() { + *x = Action_SourceCluster{} + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Action_SourceCluster) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Action_SourceCluster) ProtoMessage() {} + +func (x *Action_SourceCluster) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[13] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } + return mi.MessageOf(x) +} + +// Deprecated: Use Action_SourceCluster.ProtoReflect.Descriptor instead. +func (*Action_SourceCluster) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{8, 0} +} + +// The following descriptor entry is appended to the descriptor: +// +// ``` +// +// ("destination_cluster", "") +// +// ``` +// +// Once a request matches against a route table rule, a routed cluster is determined by one of +// the following `route table configuration (envoy_api_msg_RouteConfiguration)` +// settings: +// +// - `cluster (envoy_api_field_route.RouteAction.cluster)` indicates the upstream cluster +// to route to. +// - `weighted_clusters (envoy_api_field_route.RouteAction.weighted_clusters)` +// chooses a cluster randomly from a set of clusters with attributed weight. +// - `cluster_header (envoy_api_field_route.RouteAction.cluster_header)` indicates which +// header in the request contains the target cluster. +type Action_DestinationCluster struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Action_DestinationCluster) Reset() { + *x = Action_DestinationCluster{} + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Action_DestinationCluster) String() string { @@ -1114,8 +1306,8 @@ func (x *Action_DestinationCluster) String() string { func (*Action_DestinationCluster) ProtoMessage() {} func (x *Action_DestinationCluster) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[14] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1127,35 +1319,34 @@ func (x *Action_DestinationCluster) ProtoReflect() protoreflect.Message { // Deprecated: Use Action_DestinationCluster.ProtoReflect.Descriptor instead. func (*Action_DestinationCluster) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{7, 1} + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{8, 1} } // The following descriptor entry is appended when a header contains a key that matches the // *header_name*: // // ``` -// ("", "") +// +// ("", "") +// // ``` type Action_RequestHeaders struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The header name to be queried from the request headers. The header’s // value is used to populate the value of the descriptor entry for the // descriptor_key. HeaderName string `protobuf:"bytes,1,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"` // [(validate.rules).string.min_bytes = 1]; // The key to use in the descriptor entry. DescriptorKey string `protobuf:"bytes,2,opt,name=descriptor_key,json=descriptorKey,proto3" json:"descriptor_key,omitempty"` // [(validate.rules).string.min_bytes = 1]; + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Action_RequestHeaders) Reset() { *x = Action_RequestHeaders{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Action_RequestHeaders) String() string { @@ -1165,8 +1356,8 @@ func (x *Action_RequestHeaders) String() string { func (*Action_RequestHeaders) ProtoMessage() {} func (x *Action_RequestHeaders) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[15] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1178,7 +1369,7 @@ func (x *Action_RequestHeaders) ProtoReflect() protoreflect.Message { // Deprecated: Use Action_RequestHeaders.ProtoReflect.Descriptor instead. func (*Action_RequestHeaders) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{7, 2} + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{8, 2} } func (x *Action_RequestHeaders) GetHeaderName() string { @@ -1199,21 +1390,21 @@ func (x *Action_RequestHeaders) GetDescriptorKey() string { // trusted address from `x-forwarded-for (config_http_conn_man_headers_x-forwarded-for)`: // // ``` -// ("remote_address", "") +// +// ("remote_address", "") +// // ``` type Action_RemoteAddress struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Action_RemoteAddress) Reset() { *x = Action_RemoteAddress{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Action_RemoteAddress) String() string { @@ -1223,8 +1414,8 @@ func (x *Action_RemoteAddress) String() string { func (*Action_RemoteAddress) ProtoMessage() {} func (x *Action_RemoteAddress) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[16] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1236,30 +1427,29 @@ func (x *Action_RemoteAddress) ProtoReflect() protoreflect.Message { // Deprecated: Use Action_RemoteAddress.ProtoReflect.Descriptor instead. func (*Action_RemoteAddress) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{7, 3} + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{8, 3} } // The following descriptor entry is appended to the descriptor: // // ``` -// ("generic_key", "") +// +// ("generic_key", "") +// // ``` type Action_GenericKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The value to use in the descriptor entry. DescriptorValue string `protobuf:"bytes,1,opt,name=descriptor_value,json=descriptorValue,proto3" json:"descriptor_value,omitempty"` // [(validate.rules).string.min_bytes = 1]; + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Action_GenericKey) Reset() { *x = Action_GenericKey{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Action_GenericKey) String() string { @@ -1269,8 +1459,8 @@ func (x *Action_GenericKey) String() string { func (*Action_GenericKey) ProtoMessage() {} func (x *Action_GenericKey) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[17] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1282,7 +1472,7 @@ func (x *Action_GenericKey) ProtoReflect() protoreflect.Message { // Deprecated: Use Action_GenericKey.ProtoReflect.Descriptor instead. func (*Action_GenericKey) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{7, 4} + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{8, 4} } func (x *Action_GenericKey) GetDescriptorValue() string { @@ -1295,35 +1485,34 @@ func (x *Action_GenericKey) GetDescriptorValue() string { // The following descriptor entry is appended to the descriptor: // // ``` -// ("header_match", "") +// +// ("header_match", "") +// // ``` type Action_HeaderValueMatch struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The value to use in the descriptor entry. DescriptorValue string `protobuf:"bytes,1,opt,name=descriptor_value,json=descriptorValue,proto3" json:"descriptor_value,omitempty"` // [(validate.rules).string.min_bytes = 1]; // If set to true, the action will append a descriptor entry when the // request matches the headers. If set to false, the action will append a // descriptor entry when the request does not match the headers. The // default value is true. - ExpectMatch *wrappers.BoolValue `protobuf:"bytes,2,opt,name=expect_match,json=expectMatch,proto3" json:"expect_match,omitempty"` + ExpectMatch *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=expect_match,json=expectMatch,proto3" json:"expect_match,omitempty"` // Specifies a set of headers that the rate limit action should match // on. The action will check the request’s headers against all the // specified headers in the config. A match will happen if all the // headers in the config are present in the request with the same values // (or based on presence if the value field is not in the config). - Headers []*Action_HeaderValueMatch_HeaderMatcher `protobuf:"bytes,3,rep,name=headers,proto3" json:"headers,omitempty"` // [(validate.rules).repeated .min_items = 1]; + Headers []*Action_HeaderValueMatch_HeaderMatcher `protobuf:"bytes,3,rep,name=headers,proto3" json:"headers,omitempty"` // [(validate.rules).repeated .min_items = 1]; + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Action_HeaderValueMatch) Reset() { *x = Action_HeaderValueMatch{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Action_HeaderValueMatch) String() string { @@ -1333,8 +1522,8 @@ func (x *Action_HeaderValueMatch) String() string { func (*Action_HeaderValueMatch) ProtoMessage() {} func (x *Action_HeaderValueMatch) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[18] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1346,7 +1535,7 @@ func (x *Action_HeaderValueMatch) ProtoReflect() protoreflect.Message { // Deprecated: Use Action_HeaderValueMatch.ProtoReflect.Descriptor instead. func (*Action_HeaderValueMatch) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{7, 5} + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{8, 5} } func (x *Action_HeaderValueMatch) GetDescriptorValue() string { @@ -1356,7 +1545,7 @@ func (x *Action_HeaderValueMatch) GetDescriptorValue() string { return "" } -func (x *Action_HeaderValueMatch) GetExpectMatch() *wrappers.BoolValue { +func (x *Action_HeaderValueMatch) GetExpectMatch() *wrapperspb.BoolValue { if x != nil { return x.ExpectMatch } @@ -1370,95 +1559,14 @@ func (x *Action_HeaderValueMatch) GetHeaders() []*Action_HeaderValueMatch_Header return nil } -// The following descriptor entry is appended when the metadata contains a key value: -// ("", "") -type Action_MetaData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. The key to use in the descriptor entry. - DescriptorKey string `protobuf:"bytes,1,opt,name=descriptor_key,json=descriptorKey,proto3" json:"descriptor_key,omitempty"` // [(validate.rules).string = {min_len: 1}]; - // Required. Metadata struct that defines the key and path to retrieve the string value. A match will - // only happen if the value in the metadata is of type string. - MetadataKey *Action_MetaData_MetadataKey `protobuf:"bytes,2,opt,name=metadata_key,json=metadataKey,proto3" json:"metadata_key,omitempty"` // [(validate.rules).message = {required: true}]; - // An optional value to use if *metadata_key* is empty. If not set and - // no value is present under the metadata_key then no descriptor is generated. - DefaultValue string `protobuf:"bytes,3,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` - // Source of metadata - Source Action_MetaData_Source `protobuf:"varint,4,opt,name=source,proto3,enum=ratelimit.api.solo.io.Action_MetaData_Source" json:"source,omitempty"` // [(validate.rules).enum = {defined_only: true}]; -} - -func (x *Action_MetaData) Reset() { - *x = Action_MetaData{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Action_MetaData) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Action_MetaData) ProtoMessage() {} - -func (x *Action_MetaData) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Action_MetaData.ProtoReflect.Descriptor instead. -func (*Action_MetaData) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{7, 6} -} - -func (x *Action_MetaData) GetDescriptorKey() string { - if x != nil { - return x.DescriptorKey - } - return "" -} - -func (x *Action_MetaData) GetMetadataKey() *Action_MetaData_MetadataKey { - if x != nil { - return x.MetadataKey - } - return nil -} - -func (x *Action_MetaData) GetDefaultValue() string { - if x != nil { - return x.DefaultValue - } - return "" -} - -func (x *Action_MetaData) GetSource() Action_MetaData_Source { - if x != nil { - return x.Source - } - return Action_MetaData_DYNAMIC -} - type Action_HeaderValueMatch_HeaderMatcher struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Specifies the name of the header in the request. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // [(validate.rules).string.min_bytes = 1]; // Specifies how the header match will be performed to route the request. // - // Types that are assignable to HeaderMatchSpecifier: + // Types that are valid to be assigned to HeaderMatchSpecifier: + // // *Action_HeaderValueMatch_HeaderMatcher_ExactMatch // *Action_HeaderValueMatch_HeaderMatcher_RegexMatch // *Action_HeaderValueMatch_HeaderMatcher_RangeMatch @@ -1472,16 +1580,16 @@ type Action_HeaderValueMatch_HeaderMatcher struct { // // * The regex *\d{3}* does not match the value *1234*, so it will match when inverted. // * The range [-10,0) will match the value -1, so it will not match when inverted. - InvertMatch bool `protobuf:"varint,8,opt,name=invert_match,json=invertMatch,proto3" json:"invert_match,omitempty"` + InvertMatch bool `protobuf:"varint,8,opt,name=invert_match,json=invertMatch,proto3" json:"invert_match,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Action_HeaderValueMatch_HeaderMatcher) Reset() { *x = Action_HeaderValueMatch_HeaderMatcher{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Action_HeaderValueMatch_HeaderMatcher) String() string { @@ -1491,8 +1599,8 @@ func (x *Action_HeaderValueMatch_HeaderMatcher) String() string { func (*Action_HeaderValueMatch_HeaderMatcher) ProtoMessage() {} func (x *Action_HeaderValueMatch_HeaderMatcher) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[19] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1504,7 +1612,7 @@ func (x *Action_HeaderValueMatch_HeaderMatcher) ProtoReflect() protoreflect.Mess // Deprecated: Use Action_HeaderValueMatch_HeaderMatcher.ProtoReflect.Descriptor instead. func (*Action_HeaderValueMatch_HeaderMatcher) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{7, 5, 0} + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{8, 5, 0} } func (x *Action_HeaderValueMatch_HeaderMatcher) GetName() string { @@ -1514,51 +1622,63 @@ func (x *Action_HeaderValueMatch_HeaderMatcher) GetName() string { return "" } -func (m *Action_HeaderValueMatch_HeaderMatcher) GetHeaderMatchSpecifier() isAction_HeaderValueMatch_HeaderMatcher_HeaderMatchSpecifier { - if m != nil { - return m.HeaderMatchSpecifier +func (x *Action_HeaderValueMatch_HeaderMatcher) GetHeaderMatchSpecifier() isAction_HeaderValueMatch_HeaderMatcher_HeaderMatchSpecifier { + if x != nil { + return x.HeaderMatchSpecifier } return nil } func (x *Action_HeaderValueMatch_HeaderMatcher) GetExactMatch() string { - if x, ok := x.GetHeaderMatchSpecifier().(*Action_HeaderValueMatch_HeaderMatcher_ExactMatch); ok { - return x.ExactMatch + if x != nil { + if x, ok := x.HeaderMatchSpecifier.(*Action_HeaderValueMatch_HeaderMatcher_ExactMatch); ok { + return x.ExactMatch + } } return "" } func (x *Action_HeaderValueMatch_HeaderMatcher) GetRegexMatch() string { - if x, ok := x.GetHeaderMatchSpecifier().(*Action_HeaderValueMatch_HeaderMatcher_RegexMatch); ok { - return x.RegexMatch + if x != nil { + if x, ok := x.HeaderMatchSpecifier.(*Action_HeaderValueMatch_HeaderMatcher_RegexMatch); ok { + return x.RegexMatch + } } return "" } func (x *Action_HeaderValueMatch_HeaderMatcher) GetRangeMatch() *Action_HeaderValueMatch_HeaderMatcher_Int64Range { - if x, ok := x.GetHeaderMatchSpecifier().(*Action_HeaderValueMatch_HeaderMatcher_RangeMatch); ok { - return x.RangeMatch + if x != nil { + if x, ok := x.HeaderMatchSpecifier.(*Action_HeaderValueMatch_HeaderMatcher_RangeMatch); ok { + return x.RangeMatch + } } return nil } func (x *Action_HeaderValueMatch_HeaderMatcher) GetPresentMatch() bool { - if x, ok := x.GetHeaderMatchSpecifier().(*Action_HeaderValueMatch_HeaderMatcher_PresentMatch); ok { - return x.PresentMatch + if x != nil { + if x, ok := x.HeaderMatchSpecifier.(*Action_HeaderValueMatch_HeaderMatcher_PresentMatch); ok { + return x.PresentMatch + } } return false } func (x *Action_HeaderValueMatch_HeaderMatcher) GetPrefixMatch() string { - if x, ok := x.GetHeaderMatchSpecifier().(*Action_HeaderValueMatch_HeaderMatcher_PrefixMatch); ok { - return x.PrefixMatch + if x != nil { + if x, ok := x.HeaderMatchSpecifier.(*Action_HeaderValueMatch_HeaderMatcher_PrefixMatch); ok { + return x.PrefixMatch + } } return "" } func (x *Action_HeaderValueMatch_HeaderMatcher) GetSuffixMatch() string { - if x, ok := x.GetHeaderMatchSpecifier().(*Action_HeaderValueMatch_HeaderMatcher_SuffixMatch); ok { - return x.SuffixMatch + if x != nil { + if x, ok := x.HeaderMatchSpecifier.(*Action_HeaderValueMatch_HeaderMatcher_SuffixMatch); ok { + return x.SuffixMatch + } } return "" } @@ -1603,8 +1723,8 @@ type Action_HeaderValueMatch_HeaderMatcher_RangeMatch struct { // // Examples: // - // * For range [-10,0), route will match for header value -1, but not for 0, "somestring", 10.9, - // "-1somestring" + // - For range [-10,0), route will match for header value -1, but not for 0, "somestring", 10.9, + // "-1somestring" RangeMatch *Action_HeaderValueMatch_HeaderMatcher_Int64Range `protobuf:"bytes,6,opt,name=range_match,json=rangeMatch,proto3,oneof"` } @@ -1655,23 +1775,20 @@ func (*Action_HeaderValueMatch_HeaderMatcher_SuffixMatch) isAction_HeaderValueMa // Specifies the int64 start and end of the range using half-open interval semantics [start, // end). type Action_HeaderValueMatch_HeaderMatcher_Int64Range struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // start of the range (inclusive) Start int64 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"` // end of the range (exclusive) - End int64 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"` + End int64 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Action_HeaderValueMatch_HeaderMatcher_Int64Range) Reset() { *x = Action_HeaderValueMatch_HeaderMatcher_Int64Range{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Action_HeaderValueMatch_HeaderMatcher_Int64Range) String() string { @@ -1681,8 +1798,8 @@ func (x *Action_HeaderValueMatch_HeaderMatcher_Int64Range) String() string { func (*Action_HeaderValueMatch_HeaderMatcher_Int64Range) ProtoMessage() {} func (x *Action_HeaderValueMatch_HeaderMatcher_Int64Range) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[20] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1694,7 +1811,7 @@ func (x *Action_HeaderValueMatch_HeaderMatcher_Int64Range) ProtoReflect() protor // Deprecated: Use Action_HeaderValueMatch_HeaderMatcher_Int64Range.ProtoReflect.Descriptor instead. func (*Action_HeaderValueMatch_HeaderMatcher_Int64Range) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{7, 5, 0, 0} + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{8, 5, 0, 0} } func (x *Action_HeaderValueMatch_HeaderMatcher_Int64Range) GetStart() int64 { @@ -1718,11 +1835,13 @@ func (x *Action_HeaderValueMatch_HeaderMatcher_Int64Range) GetEnd() int64 { // // ```yaml // filter_metadata: -// envoy.xxx: -// prop: -// foo: bar -// xyz: -// hello: envoy +// +// envoy.xxx: +// prop: +// foo: bar +// xyz: +// hello: envoy +// // ``` // // The following MetadataKey will retrieve a string value "bar" from the Metadata. @@ -1733,42 +1852,38 @@ func (x *Action_HeaderValueMatch_HeaderMatcher_Int64Range) GetEnd() int64 { // - key: prop // - key: foo // ``` -// -type Action_MetaData_MetadataKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - +type MetaData_MetadataKey struct { + state protoimpl.MessageState `protogen:"open.v1"` // Required. The key name of Metadata to retrieve the Struct from the metadata. // Typically, it represents a builtin subsystem or custom extension. Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // [(validate.rules).string = {min_len: 1}]; // Must have at least one element. The path to retrieve the Value from the Struct. It can be a prefix or a full path, - // e.g. ``[prop, xyz]`` for a struct or ``[prop, foo]`` for a string in the example, + // e.g. “[prop, xyz]“ for a struct or “[prop, foo]“ for a string in the example, // which depends on the particular scenario. // // Note: Due to that only the key type segment is supported, the path can not specify a list // unless the list is the last segment. - Path []*Action_MetaData_MetadataKey_PathSegment `protobuf:"bytes,2,rep,name=path,proto3" json:"path,omitempty"` // [(validate.rules).repeated = {min_items: 1}]; + Path []*MetaData_MetadataKey_PathSegment `protobuf:"bytes,2,rep,name=path,proto3" json:"path,omitempty"` // [(validate.rules).repeated = {min_items: 1}]; + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *Action_MetaData_MetadataKey) Reset() { - *x = Action_MetaData_MetadataKey{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *MetaData_MetadataKey) Reset() { + *x = MetaData_MetadataKey{} + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *Action_MetaData_MetadataKey) String() string { +func (x *MetaData_MetadataKey) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Action_MetaData_MetadataKey) ProtoMessage() {} +func (*MetaData_MetadataKey) ProtoMessage() {} -func (x *Action_MetaData_MetadataKey) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { +func (x *MetaData_MetadataKey) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[21] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1778,19 +1893,19 @@ func (x *Action_MetaData_MetadataKey) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Action_MetaData_MetadataKey.ProtoReflect.Descriptor instead. -func (*Action_MetaData_MetadataKey) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{7, 6, 0} +// Deprecated: Use MetaData_MetadataKey.ProtoReflect.Descriptor instead. +func (*MetaData_MetadataKey) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{9, 0} } -func (x *Action_MetaData_MetadataKey) GetKey() string { +func (x *MetaData_MetadataKey) GetKey() string { if x != nil { return x.Key } return "" } -func (x *Action_MetaData_MetadataKey) GetPath() []*Action_MetaData_MetadataKey_PathSegment { +func (x *MetaData_MetadataKey) GetPath() []*MetaData_MetadataKey_PathSegment { if x != nil { return x.Path } @@ -1799,34 +1914,32 @@ func (x *Action_MetaData_MetadataKey) GetPath() []*Action_MetaData_MetadataKey_P // Specifies the segment in a path to retrieve value from Metadata. // Currently it is only supported to specify the key, i.e. field name, as one segment of a path. -type Action_MetaData_MetadataKey_PathSegment struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type MetaData_MetadataKey_PathSegment struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Segment: + // + // *MetaData_MetadataKey_PathSegment_Key + Segment isMetaData_MetadataKey_PathSegment_Segment `protobuf_oneof:"segment"` unknownFields protoimpl.UnknownFields - - // Types that are assignable to Segment: - // *Action_MetaData_MetadataKey_PathSegment_Key - Segment isAction_MetaData_MetadataKey_PathSegment_Segment `protobuf_oneof:"segment"` + sizeCache protoimpl.SizeCache } -func (x *Action_MetaData_MetadataKey_PathSegment) Reset() { - *x = Action_MetaData_MetadataKey_PathSegment{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *MetaData_MetadataKey_PathSegment) Reset() { + *x = MetaData_MetadataKey_PathSegment{} + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *Action_MetaData_MetadataKey_PathSegment) String() string { +func (x *MetaData_MetadataKey_PathSegment) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Action_MetaData_MetadataKey_PathSegment) ProtoMessage() {} +func (*MetaData_MetadataKey_PathSegment) ProtoMessage() {} -func (x *Action_MetaData_MetadataKey_PathSegment) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { +func (x *MetaData_MetadataKey_PathSegment) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[22] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1836,40 +1949,90 @@ func (x *Action_MetaData_MetadataKey_PathSegment) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use Action_MetaData_MetadataKey_PathSegment.ProtoReflect.Descriptor instead. -func (*Action_MetaData_MetadataKey_PathSegment) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{7, 6, 0, 0} +// Deprecated: Use MetaData_MetadataKey_PathSegment.ProtoReflect.Descriptor instead. +func (*MetaData_MetadataKey_PathSegment) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{9, 0, 0} } -func (m *Action_MetaData_MetadataKey_PathSegment) GetSegment() isAction_MetaData_MetadataKey_PathSegment_Segment { - if m != nil { - return m.Segment +func (x *MetaData_MetadataKey_PathSegment) GetSegment() isMetaData_MetadataKey_PathSegment_Segment { + if x != nil { + return x.Segment } return nil } -func (x *Action_MetaData_MetadataKey_PathSegment) GetKey() string { - if x, ok := x.GetSegment().(*Action_MetaData_MetadataKey_PathSegment_Key); ok { - return x.Key +func (x *MetaData_MetadataKey_PathSegment) GetKey() string { + if x != nil { + if x, ok := x.Segment.(*MetaData_MetadataKey_PathSegment_Key); ok { + return x.Key + } } return "" } -type isAction_MetaData_MetadataKey_PathSegment_Segment interface { - isAction_MetaData_MetadataKey_PathSegment_Segment() +type isMetaData_MetadataKey_PathSegment_Segment interface { + isMetaData_MetadataKey_PathSegment_Segment() } -type Action_MetaData_MetadataKey_PathSegment_Key struct { +type MetaData_MetadataKey_PathSegment_Key struct { // Required. If specified, use the key to retrieve the value in a Struct. Key string `protobuf:"bytes,1,opt,name=key,proto3,oneof"` // [(validate.rules).string = {min_len: 1}]; } -func (*Action_MetaData_MetadataKey_PathSegment_Key) isAction_MetaData_MetadataKey_PathSegment_Segment() { +func (*MetaData_MetadataKey_PathSegment_Key) isMetaData_MetadataKey_PathSegment_Segment() {} + +// Fetches the override from the dynamic metadata. +type Override_DynamicMetadata struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Metadata struct that defines the key and path to retrieve the struct value. + // The value must be a struct containing an integer "requests_per_unit" property + // and a "unit" property with a value parseable to :ref:`RateLimitUnit + // enum ` + MetadataKey *MetaData_MetadataKey `protobuf:"bytes,1,opt,name=metadata_key,json=metadataKey,proto3" json:"metadata_key,omitempty"` // [(validate.rules).message = {required: true}]; + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Override_DynamicMetadata) Reset() { + *x = Override_DynamicMetadata{} + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Override_DynamicMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Override_DynamicMetadata) ProtoMessage() {} + +func (x *Override_DynamicMetadata) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Override_DynamicMetadata.ProtoReflect.Descriptor instead. +func (*Override_DynamicMetadata) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP(), []int{10, 0} +} + +func (x *Override_DynamicMetadata) GetMetadataKey() *MetaData_MetadataKey { + if x != nil { + return x.MetadataKey + } + return nil } var File_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto protoreflect.FileDescriptor -var file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDesc = []byte{ +var file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDesc = string([]byte{ 0x0a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x61, 0x74, 0x65, 0x2d, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x2f, @@ -1914,260 +2077,300 @@ var file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_ 0x69, 0x6f, 0x6e, 0x22, 0x30, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x4a, 0x45, 0x43, - 0x54, 0x45, 0x44, 0x10, 0x02, 0x22, 0xf5, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3f, 0x0a, 0x0a, - 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x20, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x52, 0x09, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x43, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, - 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x6c, - 0x77, 0x61, 0x79, 0x73, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0b, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x22, 0xcb, 0x01, - 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, - 0x56, 0x0a, 0x12, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, 0x61, - 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x6f, 0x72, 0x52, 0x11, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x3f, 0x0a, 0x0a, 0x72, 0x61, 0x74, 0x65, 0x5f, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x61, - 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, - 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x09, 0x72, - 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x6c, 0x77, 0x61, - 0x79, 0x73, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, - 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x22, 0x3a, 0x0a, 0x10, 0x53, - 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x10, 0x52, 0x61, 0x74, 0x65, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x07, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x54, 0x45, 0x44, 0x10, 0x02, 0x22, 0xf2, 0x01, 0x0a, 0x21, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x62, 0x0a, 0x08, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x0b, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x61, 0x74, - 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x73, 0x65, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x25, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, + 0x69, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x42, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x2e, 0x55, 0x6e, 0x69, 0x74, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x12, 0x2a, - 0x0a, 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x75, - 0x6e, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x74, 0x22, 0x3e, 0x0a, 0x04, 0x55, 0x6e, - 0x69, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, - 0x0a, 0x0a, 0x06, 0x53, 0x45, 0x43, 0x4f, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d, - 0x49, 0x4e, 0x55, 0x54, 0x45, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x4f, 0x55, 0x52, 0x10, - 0x03, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x41, 0x59, 0x10, 0x04, 0x22, 0xa6, 0x0f, 0x0a, 0x06, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf5, 0x01, 0x0a, 0x0a, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x3f, 0x0a, 0x0a, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, + 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x09, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, + 0x21, 0x0a, 0x0c, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x41, 0x70, 0x70, + 0x6c, 0x79, 0x22, 0xcb, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x6f, 0x72, 0x12, 0x56, 0x0a, 0x12, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x11, 0x73, 0x69, 0x6d, 0x70, 0x6c, + 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x3f, 0x0a, 0x0a, + 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x52, 0x09, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x21, 0x0a, + 0x0c, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, + 0x22, 0x3a, 0x0a, 0x10, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xc2, 0x01, 0x0a, + 0x10, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x37, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x0b, 0x73, 0x65, + 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, + 0x73, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x0a, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x61, 0x74, 0x65, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x22, 0xb2, 0x01, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x39, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x63, 0x0a, 0x13, 0x64, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x12, 0x64, 0x65, - 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x12, 0x57, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x72, 0x61, 0x74, 0x65, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, + 0x55, 0x6e, 0x69, 0x74, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x50, + 0x65, 0x72, 0x55, 0x6e, 0x69, 0x74, 0x22, 0x3e, 0x0a, 0x04, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x0b, + 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, + 0x45, 0x43, 0x4f, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x49, 0x4e, 0x55, 0x54, + 0x45, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x4f, 0x55, 0x52, 0x10, 0x03, 0x12, 0x07, 0x0a, + 0x03, 0x44, 0x41, 0x59, 0x10, 0x04, 0x22, 0xdc, 0x0b, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x54, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x54, 0x0a, 0x0e, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2b, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, - 0x52, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x4b, 0x0a, 0x0b, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x63, 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x48, 0x00, - 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x5e, 0x0a, 0x12, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x48, 0x00, 0x52, 0x10, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x44, 0x0a, 0x08, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, - 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, - 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x1a, 0x0f, 0x0a, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x1a, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x58, 0x0a, 0x0e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, - 0x4b, 0x65, 0x79, 0x1a, 0x0f, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x1a, 0x37, 0x0a, 0x0a, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4b, - 0x65, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x9c, 0x05, - 0x0a, 0x10, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3d, 0x0a, - 0x0c, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x0b, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x56, 0x0a, 0x07, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, - 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x1a, 0xc5, 0x03, 0x0a, 0x0d, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x65, 0x78, - 0x61, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x0a, 0x65, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x21, 0x0a, - 0x0b, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x12, 0x6a, 0x0a, 0x0b, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, + 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x57, 0x0a, 0x0f, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, - 0x52, 0x0a, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x25, 0x0a, 0x0d, - 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x12, 0x23, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x72, 0x65, - 0x66, 0x69, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x75, 0x66, 0x66, - 0x69, 0x78, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x0b, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x21, 0x0a, - 0x0c, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x1a, 0x34, 0x0a, 0x0a, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x1a, 0xc0, 0x03, 0x0a, - 0x08, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x4b, 0x65, 0x79, - 0x12, 0x55, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6b, 0x65, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x45, 0x0a, 0x06, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x72, - 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, - 0x44, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x1a, 0xa1, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x4b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x52, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x67, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x1a, 0x2c, 0x0a, 0x0b, 0x50, 0x61, 0x74, - 0x68, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x09, 0x0a, 0x07, - 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x26, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x10, 0x00, 0x12, 0x0f, - 0x0a, 0x0b, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x01, 0x42, - 0x12, 0x0a, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x42, 0x49, 0x5a, 0x3f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, - 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x61, 0x74, 0x65, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x54, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4b, 0x0a, 0x0b, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x5e, 0x0a, 0x12, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x48, 0x00, 0x52, 0x10, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x3d, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x61, 0x74, + 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x0f, 0x0a, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x73, 0x74, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x58, + 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x6f, 0x72, 0x4b, 0x65, 0x79, 0x1a, 0x0f, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0x37, 0x0a, 0x0a, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x1a, 0x9c, 0x05, 0x0a, 0x10, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x12, 0x56, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, + 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0xc5, 0x03, 0x0a, 0x0d, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x21, 0x0a, 0x0b, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x65, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x12, 0x21, 0x0a, 0x0b, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x65, 0x78, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x6a, 0x0a, 0x0b, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x72, 0x61, 0x74, + 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x12, 0x25, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x73, + 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x23, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x66, + 0x69, 0x78, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x23, 0x0a, + 0x0c, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x74, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x1a, 0x34, 0x0a, 0x0a, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, + 0x04, 0x42, 0x12, 0x0a, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0xab, 0x03, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, + 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x4e, 0x0a, 0x0c, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2b, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, + 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x52, 0x0b, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3e, + 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, + 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x2e, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x9a, + 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x4b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, + 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x2e, 0x50, 0x61, 0x74, 0x68, + 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x1a, 0x2c, 0x0a, + 0x0b, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x42, 0x09, 0x0a, 0x07, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x26, 0x0a, 0x06, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, + 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x10, 0x01, 0x22, 0xe1, 0x01, 0x0a, 0x08, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, + 0x12, 0x5c, 0x0a, 0x10, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x72, 0x61, 0x74, + 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, + 0x69, 0x6f, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x2e, 0x44, 0x79, 0x6e, 0x61, + 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0f, 0x64, + 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x61, + 0x0a, 0x0f, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x4e, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x4b, 0x65, 0x79, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, + 0x79, 0x42, 0x14, 0x0a, 0x12, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x49, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, + 0x01, 0x5a, 0x3f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, + 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescOnce sync.Once - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescData = file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDesc + file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescData []byte ) func file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescGZIP() []byte { file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescOnce.Do(func() { - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescData) + file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDesc))) }) return file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDescData } var file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes = make([]protoimpl.MessageInfo, 20) -var file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_goTypes = []interface{}{ +var file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes = make([]protoimpl.MessageInfo, 24) +var file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_goTypes = []any{ (RateLimitConfigStatus_State)(0), // 0: ratelimit.api.solo.io.RateLimitConfigStatus.State (RateLimit_Unit)(0), // 1: ratelimit.api.solo.io.RateLimit.Unit - (Action_MetaData_Source)(0), // 2: ratelimit.api.solo.io.Action.MetaData.Source + (MetaData_Source)(0), // 2: ratelimit.api.solo.io.MetaData.Source (*RateLimitConfigSpec)(nil), // 3: ratelimit.api.solo.io.RateLimitConfigSpec (*RateLimitConfigStatus)(nil), // 4: ratelimit.api.solo.io.RateLimitConfigStatus - (*Descriptor)(nil), // 5: ratelimit.api.solo.io.Descriptor - (*SetDescriptor)(nil), // 6: ratelimit.api.solo.io.SetDescriptor - (*SimpleDescriptor)(nil), // 7: ratelimit.api.solo.io.SimpleDescriptor - (*RateLimitActions)(nil), // 8: ratelimit.api.solo.io.RateLimitActions - (*RateLimit)(nil), // 9: ratelimit.api.solo.io.RateLimit - (*Action)(nil), // 10: ratelimit.api.solo.io.Action - (*RateLimitConfigSpec_Raw)(nil), // 11: ratelimit.api.solo.io.RateLimitConfigSpec.Raw - (*Action_SourceCluster)(nil), // 12: ratelimit.api.solo.io.Action.SourceCluster - (*Action_DestinationCluster)(nil), // 13: ratelimit.api.solo.io.Action.DestinationCluster - (*Action_RequestHeaders)(nil), // 14: ratelimit.api.solo.io.Action.RequestHeaders - (*Action_RemoteAddress)(nil), // 15: ratelimit.api.solo.io.Action.RemoteAddress - (*Action_GenericKey)(nil), // 16: ratelimit.api.solo.io.Action.GenericKey - (*Action_HeaderValueMatch)(nil), // 17: ratelimit.api.solo.io.Action.HeaderValueMatch - (*Action_MetaData)(nil), // 18: ratelimit.api.solo.io.Action.MetaData - (*Action_HeaderValueMatch_HeaderMatcher)(nil), // 19: ratelimit.api.solo.io.Action.HeaderValueMatch.HeaderMatcher - (*Action_HeaderValueMatch_HeaderMatcher_Int64Range)(nil), // 20: ratelimit.api.solo.io.Action.HeaderValueMatch.HeaderMatcher.Int64Range - (*Action_MetaData_MetadataKey)(nil), // 21: ratelimit.api.solo.io.Action.MetaData.MetadataKey - (*Action_MetaData_MetadataKey_PathSegment)(nil), // 22: ratelimit.api.solo.io.Action.MetaData.MetadataKey.PathSegment - (*wrappers.BoolValue)(nil), // 23: google.protobuf.BoolValue + (*RateLimitConfigNamespacedStatuses)(nil), // 5: ratelimit.api.solo.io.RateLimitConfigNamespacedStatuses + (*Descriptor)(nil), // 6: ratelimit.api.solo.io.Descriptor + (*SetDescriptor)(nil), // 7: ratelimit.api.solo.io.SetDescriptor + (*SimpleDescriptor)(nil), // 8: ratelimit.api.solo.io.SimpleDescriptor + (*RateLimitActions)(nil), // 9: ratelimit.api.solo.io.RateLimitActions + (*RateLimit)(nil), // 10: ratelimit.api.solo.io.RateLimit + (*Action)(nil), // 11: ratelimit.api.solo.io.Action + (*MetaData)(nil), // 12: ratelimit.api.solo.io.MetaData + (*Override)(nil), // 13: ratelimit.api.solo.io.Override + (*RateLimitConfigSpec_Raw)(nil), // 14: ratelimit.api.solo.io.RateLimitConfigSpec.Raw + nil, // 15: ratelimit.api.solo.io.RateLimitConfigNamespacedStatuses.StatusesEntry + (*Action_SourceCluster)(nil), // 16: ratelimit.api.solo.io.Action.SourceCluster + (*Action_DestinationCluster)(nil), // 17: ratelimit.api.solo.io.Action.DestinationCluster + (*Action_RequestHeaders)(nil), // 18: ratelimit.api.solo.io.Action.RequestHeaders + (*Action_RemoteAddress)(nil), // 19: ratelimit.api.solo.io.Action.RemoteAddress + (*Action_GenericKey)(nil), // 20: ratelimit.api.solo.io.Action.GenericKey + (*Action_HeaderValueMatch)(nil), // 21: ratelimit.api.solo.io.Action.HeaderValueMatch + (*Action_HeaderValueMatch_HeaderMatcher)(nil), // 22: ratelimit.api.solo.io.Action.HeaderValueMatch.HeaderMatcher + (*Action_HeaderValueMatch_HeaderMatcher_Int64Range)(nil), // 23: ratelimit.api.solo.io.Action.HeaderValueMatch.HeaderMatcher.Int64Range + (*MetaData_MetadataKey)(nil), // 24: ratelimit.api.solo.io.MetaData.MetadataKey + (*MetaData_MetadataKey_PathSegment)(nil), // 25: ratelimit.api.solo.io.MetaData.MetadataKey.PathSegment + (*Override_DynamicMetadata)(nil), // 26: ratelimit.api.solo.io.Override.DynamicMetadata + (*wrapperspb.BoolValue)(nil), // 27: google.protobuf.BoolValue } var file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_depIdxs = []int32{ - 11, // 0: ratelimit.api.solo.io.RateLimitConfigSpec.raw:type_name -> ratelimit.api.solo.io.RateLimitConfigSpec.Raw + 14, // 0: ratelimit.api.solo.io.RateLimitConfigSpec.raw:type_name -> ratelimit.api.solo.io.RateLimitConfigSpec.Raw 0, // 1: ratelimit.api.solo.io.RateLimitConfigStatus.state:type_name -> ratelimit.api.solo.io.RateLimitConfigStatus.State - 9, // 2: ratelimit.api.solo.io.Descriptor.rate_limit:type_name -> ratelimit.api.solo.io.RateLimit - 5, // 3: ratelimit.api.solo.io.Descriptor.descriptors:type_name -> ratelimit.api.solo.io.Descriptor - 7, // 4: ratelimit.api.solo.io.SetDescriptor.simple_descriptors:type_name -> ratelimit.api.solo.io.SimpleDescriptor - 9, // 5: ratelimit.api.solo.io.SetDescriptor.rate_limit:type_name -> ratelimit.api.solo.io.RateLimit - 10, // 6: ratelimit.api.solo.io.RateLimitActions.actions:type_name -> ratelimit.api.solo.io.Action - 10, // 7: ratelimit.api.solo.io.RateLimitActions.set_actions:type_name -> ratelimit.api.solo.io.Action - 1, // 8: ratelimit.api.solo.io.RateLimit.unit:type_name -> ratelimit.api.solo.io.RateLimit.Unit - 12, // 9: ratelimit.api.solo.io.Action.source_cluster:type_name -> ratelimit.api.solo.io.Action.SourceCluster - 13, // 10: ratelimit.api.solo.io.Action.destination_cluster:type_name -> ratelimit.api.solo.io.Action.DestinationCluster - 14, // 11: ratelimit.api.solo.io.Action.request_headers:type_name -> ratelimit.api.solo.io.Action.RequestHeaders - 15, // 12: ratelimit.api.solo.io.Action.remote_address:type_name -> ratelimit.api.solo.io.Action.RemoteAddress - 16, // 13: ratelimit.api.solo.io.Action.generic_key:type_name -> ratelimit.api.solo.io.Action.GenericKey - 17, // 14: ratelimit.api.solo.io.Action.header_value_match:type_name -> ratelimit.api.solo.io.Action.HeaderValueMatch - 18, // 15: ratelimit.api.solo.io.Action.metadata:type_name -> ratelimit.api.solo.io.Action.MetaData - 5, // 16: ratelimit.api.solo.io.RateLimitConfigSpec.Raw.descriptors:type_name -> ratelimit.api.solo.io.Descriptor - 8, // 17: ratelimit.api.solo.io.RateLimitConfigSpec.Raw.rate_limits:type_name -> ratelimit.api.solo.io.RateLimitActions - 6, // 18: ratelimit.api.solo.io.RateLimitConfigSpec.Raw.set_descriptors:type_name -> ratelimit.api.solo.io.SetDescriptor - 23, // 19: ratelimit.api.solo.io.Action.HeaderValueMatch.expect_match:type_name -> google.protobuf.BoolValue - 19, // 20: ratelimit.api.solo.io.Action.HeaderValueMatch.headers:type_name -> ratelimit.api.solo.io.Action.HeaderValueMatch.HeaderMatcher - 21, // 21: ratelimit.api.solo.io.Action.MetaData.metadata_key:type_name -> ratelimit.api.solo.io.Action.MetaData.MetadataKey - 2, // 22: ratelimit.api.solo.io.Action.MetaData.source:type_name -> ratelimit.api.solo.io.Action.MetaData.Source - 20, // 23: ratelimit.api.solo.io.Action.HeaderValueMatch.HeaderMatcher.range_match:type_name -> ratelimit.api.solo.io.Action.HeaderValueMatch.HeaderMatcher.Int64Range - 22, // 24: ratelimit.api.solo.io.Action.MetaData.MetadataKey.path:type_name -> ratelimit.api.solo.io.Action.MetaData.MetadataKey.PathSegment - 25, // [25:25] is the sub-list for method output_type - 25, // [25:25] is the sub-list for method input_type - 25, // [25:25] is the sub-list for extension type_name - 25, // [25:25] is the sub-list for extension extendee - 0, // [0:25] is the sub-list for field type_name + 15, // 2: ratelimit.api.solo.io.RateLimitConfigNamespacedStatuses.statuses:type_name -> ratelimit.api.solo.io.RateLimitConfigNamespacedStatuses.StatusesEntry + 10, // 3: ratelimit.api.solo.io.Descriptor.rate_limit:type_name -> ratelimit.api.solo.io.RateLimit + 6, // 4: ratelimit.api.solo.io.Descriptor.descriptors:type_name -> ratelimit.api.solo.io.Descriptor + 8, // 5: ratelimit.api.solo.io.SetDescriptor.simple_descriptors:type_name -> ratelimit.api.solo.io.SimpleDescriptor + 10, // 6: ratelimit.api.solo.io.SetDescriptor.rate_limit:type_name -> ratelimit.api.solo.io.RateLimit + 11, // 7: ratelimit.api.solo.io.RateLimitActions.actions:type_name -> ratelimit.api.solo.io.Action + 11, // 8: ratelimit.api.solo.io.RateLimitActions.set_actions:type_name -> ratelimit.api.solo.io.Action + 13, // 9: ratelimit.api.solo.io.RateLimitActions.limit:type_name -> ratelimit.api.solo.io.Override + 1, // 10: ratelimit.api.solo.io.RateLimit.unit:type_name -> ratelimit.api.solo.io.RateLimit.Unit + 16, // 11: ratelimit.api.solo.io.Action.source_cluster:type_name -> ratelimit.api.solo.io.Action.SourceCluster + 17, // 12: ratelimit.api.solo.io.Action.destination_cluster:type_name -> ratelimit.api.solo.io.Action.DestinationCluster + 18, // 13: ratelimit.api.solo.io.Action.request_headers:type_name -> ratelimit.api.solo.io.Action.RequestHeaders + 19, // 14: ratelimit.api.solo.io.Action.remote_address:type_name -> ratelimit.api.solo.io.Action.RemoteAddress + 20, // 15: ratelimit.api.solo.io.Action.generic_key:type_name -> ratelimit.api.solo.io.Action.GenericKey + 21, // 16: ratelimit.api.solo.io.Action.header_value_match:type_name -> ratelimit.api.solo.io.Action.HeaderValueMatch + 12, // 17: ratelimit.api.solo.io.Action.metadata:type_name -> ratelimit.api.solo.io.MetaData + 24, // 18: ratelimit.api.solo.io.MetaData.metadata_key:type_name -> ratelimit.api.solo.io.MetaData.MetadataKey + 2, // 19: ratelimit.api.solo.io.MetaData.source:type_name -> ratelimit.api.solo.io.MetaData.Source + 26, // 20: ratelimit.api.solo.io.Override.dynamic_metadata:type_name -> ratelimit.api.solo.io.Override.DynamicMetadata + 6, // 21: ratelimit.api.solo.io.RateLimitConfigSpec.Raw.descriptors:type_name -> ratelimit.api.solo.io.Descriptor + 9, // 22: ratelimit.api.solo.io.RateLimitConfigSpec.Raw.rate_limits:type_name -> ratelimit.api.solo.io.RateLimitActions + 7, // 23: ratelimit.api.solo.io.RateLimitConfigSpec.Raw.set_descriptors:type_name -> ratelimit.api.solo.io.SetDescriptor + 4, // 24: ratelimit.api.solo.io.RateLimitConfigNamespacedStatuses.StatusesEntry.value:type_name -> ratelimit.api.solo.io.RateLimitConfigStatus + 27, // 25: ratelimit.api.solo.io.Action.HeaderValueMatch.expect_match:type_name -> google.protobuf.BoolValue + 22, // 26: ratelimit.api.solo.io.Action.HeaderValueMatch.headers:type_name -> ratelimit.api.solo.io.Action.HeaderValueMatch.HeaderMatcher + 23, // 27: ratelimit.api.solo.io.Action.HeaderValueMatch.HeaderMatcher.range_match:type_name -> ratelimit.api.solo.io.Action.HeaderValueMatch.HeaderMatcher.Int64Range + 25, // 28: ratelimit.api.solo.io.MetaData.MetadataKey.path:type_name -> ratelimit.api.solo.io.MetaData.MetadataKey.PathSegment + 24, // 29: ratelimit.api.solo.io.Override.DynamicMetadata.metadata_key:type_name -> ratelimit.api.solo.io.MetaData.MetadataKey + 30, // [30:30] is the sub-list for method output_type + 30, // [30:30] is the sub-list for method input_type + 30, // [30:30] is the sub-list for extension type_name + 30, // [30:30] is the sub-list for extension extendee + 0, // [0:30] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_init() } @@ -2175,252 +2378,10 @@ func file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto if File_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimitConfigSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimitConfigStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Descriptor); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetDescriptor); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SimpleDescriptor); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimitActions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimit); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Action); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimitConfigSpec_Raw); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Action_SourceCluster); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Action_DestinationCluster); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Action_RequestHeaders); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Action_RemoteAddress); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Action_GenericKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Action_HeaderValueMatch); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Action_MetaData); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Action_HeaderValueMatch_HeaderMatcher); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Action_HeaderValueMatch_HeaderMatcher_Int64Range); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Action_MetaData_MetadataKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Action_MetaData_MetadataKey_PathSegment); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[0].OneofWrappers = []any{ (*RateLimitConfigSpec_Raw_)(nil), } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[7].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[8].OneofWrappers = []any{ (*Action_SourceCluster_)(nil), (*Action_DestinationCluster_)(nil), (*Action_RequestHeaders_)(nil), @@ -2429,7 +2390,10 @@ func file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto (*Action_HeaderValueMatch_)(nil), (*Action_Metadata)(nil), } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[16].OneofWrappers = []interface{}{ + file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[10].OneofWrappers = []any{ + (*Override_DynamicMetadata_)(nil), + } + file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[19].OneofWrappers = []any{ (*Action_HeaderValueMatch_HeaderMatcher_ExactMatch)(nil), (*Action_HeaderValueMatch_HeaderMatcher_RegexMatch)(nil), (*Action_HeaderValueMatch_HeaderMatcher_RangeMatch)(nil), @@ -2437,16 +2401,16 @@ func file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto (*Action_HeaderValueMatch_HeaderMatcher_PrefixMatch)(nil), (*Action_HeaderValueMatch_HeaderMatcher_SuffixMatch)(nil), } - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[19].OneofWrappers = []interface{}{ - (*Action_MetaData_MetadataKey_PathSegment_Key)(nil), + file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes[22].OneofWrappers = []any{ + (*MetaData_MetadataKey_PathSegment_Key)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDesc), len(file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDesc)), NumEnums: 3, - NumMessages: 20, + NumMessages: 24, NumExtensions: 0, NumServices: 0, }, @@ -2456,7 +2420,6 @@ func file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto MessageInfos: file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_msgTypes, }.Build() File_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto = out.File - file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_rawDesc = nil file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_goTypes = nil file_github_com_solo_io_solo_apis_api_rate_limiter_v1alpha1_ratelimit_proto_depIdxs = nil } diff --git a/pkg/api/ratelimit.solo.io/v1alpha1/ratelimit.pb.hash.go b/pkg/api/ratelimit.solo.io/v1alpha1/ratelimit.pb.hash.go index d8d26b792..0329fc9f5 100644 --- a/pkg/api/ratelimit.solo.io/v1alpha1/ratelimit.pb.hash.go +++ b/pkg/api/ratelimit.solo.io/v1alpha1/ratelimit.pb.hash.go @@ -10,8 +10,8 @@ import ( "hash" "hash/fnv" - "github.com/mitchellh/hashstructure" safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" ) // ensure the imports are used @@ -26,6 +26,10 @@ var ( ) // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimitConfigSpec) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -43,14 +47,20 @@ func (m *RateLimitConfigSpec) Hash(hasher hash.Hash64) (uint64, error) { case *RateLimitConfigSpec_Raw_: if h, ok := interface{}(m.GetRaw()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Raw")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRaw(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRaw(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("Raw")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -62,6 +72,10 @@ func (m *RateLimitConfigSpec) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimitConfigStatus) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -92,6 +106,69 @@ func (m *RateLimitConfigStatus) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *RateLimitConfigNamespacedStatuses) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.RateLimitConfigNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Descriptor) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -113,14 +190,20 @@ func (m *Descriptor) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetRateLimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimit")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRateLimit(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRateLimit(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RateLimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -129,14 +212,20 @@ func (m *Descriptor) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetDescriptors() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -158,6 +247,10 @@ func (m *Descriptor) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *SetDescriptor) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -173,14 +266,20 @@ func (m *SetDescriptor) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetSimpleDescriptors() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -189,14 +288,20 @@ func (m *SetDescriptor) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetRateLimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimit")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRateLimit(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRateLimit(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RateLimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -211,6 +316,10 @@ func (m *SetDescriptor) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *SimpleDescriptor) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -235,6 +344,10 @@ func (m *SimpleDescriptor) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimitActions) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -250,14 +363,20 @@ func (m *RateLimitActions) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetActions() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -268,14 +387,20 @@ func (m *RateLimitActions) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetSetActions() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -283,10 +408,34 @@ func (m *RateLimitActions) Hash(hasher hash.Hash64) (uint64, error) { } + if h, ok := interface{}(m.GetLimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Limit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Limit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + return hasher.Sum64(), nil } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimit) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -313,6 +462,10 @@ func (m *RateLimit) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Action) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -330,14 +483,20 @@ func (m *Action) Hash(hasher hash.Hash64) (uint64, error) { case *Action_SourceCluster_: if h, ok := interface{}(m.GetSourceCluster()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SourceCluster")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetSourceCluster(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetSourceCluster(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("SourceCluster")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -346,14 +505,20 @@ func (m *Action) Hash(hasher hash.Hash64) (uint64, error) { case *Action_DestinationCluster_: if h, ok := interface{}(m.GetDestinationCluster()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DestinationCluster")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetDestinationCluster(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDestinationCluster(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DestinationCluster")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -362,14 +527,20 @@ func (m *Action) Hash(hasher hash.Hash64) (uint64, error) { case *Action_RequestHeaders_: if h, ok := interface{}(m.GetRequestHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestHeaders")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRequestHeaders(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRequestHeaders(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RequestHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -378,14 +549,20 @@ func (m *Action) Hash(hasher hash.Hash64) (uint64, error) { case *Action_RemoteAddress_: if h, ok := interface{}(m.GetRemoteAddress()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RemoteAddress")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRemoteAddress(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRemoteAddress(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RemoteAddress")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -394,14 +571,20 @@ func (m *Action) Hash(hasher hash.Hash64) (uint64, error) { case *Action_GenericKey_: if h, ok := interface{}(m.GetGenericKey()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GenericKey")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetGenericKey(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetGenericKey(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("GenericKey")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -410,14 +593,20 @@ func (m *Action) Hash(hasher hash.Hash64) (uint64, error) { case *Action_HeaderValueMatch_: if h, ok := interface{}(m.GetHeaderValueMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderValueMatch")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetHeaderValueMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetHeaderValueMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("HeaderValueMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -426,14 +615,119 @@ func (m *Action) Hash(hasher hash.Hash64) (uint64, error) { case *Action_Metadata: if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *MetaData) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.MetaData")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte(m.GetDescriptorKey())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMetadataKey()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MetadataKey")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadataKey(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MetadataKey")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte(m.GetDefaultValue())); err != nil { + return 0, err + } + + err = binary.Write(hasher, binary.LittleEndian, m.GetSource()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Override) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.Override")); err != nil { + return 0, err + } + + switch m.OverrideSpecifier.(type) { + + case *Override_DynamicMetadata_: + + if h, ok := interface{}(m.GetDynamicMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DynamicMetadata")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetDynamicMetadata(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("DynamicMetadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -445,6 +739,10 @@ func (m *Action) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *RateLimitConfigSpec_Raw) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -460,14 +758,20 @@ func (m *RateLimitConfigSpec_Raw) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetDescriptors() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -478,14 +782,20 @@ func (m *RateLimitConfigSpec_Raw) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetRateLimits() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -496,14 +806,20 @@ func (m *RateLimitConfigSpec_Raw) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetSetDescriptors() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -515,6 +831,10 @@ func (m *RateLimitConfigSpec_Raw) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Action_SourceCluster) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -531,6 +851,10 @@ func (m *Action_SourceCluster) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Action_DestinationCluster) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -547,6 +871,10 @@ func (m *Action_DestinationCluster) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Action_RequestHeaders) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -571,6 +899,10 @@ func (m *Action_RequestHeaders) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Action_RemoteAddress) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -587,6 +919,10 @@ func (m *Action_RemoteAddress) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Action_GenericKey) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -607,6 +943,10 @@ func (m *Action_GenericKey) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Action_HeaderValueMatch) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -624,14 +964,20 @@ func (m *Action_HeaderValueMatch) Hash(hasher hash.Hash64) (uint64, error) { } if h, ok := interface{}(m.GetExpectMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ExpectMatch")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetExpectMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetExpectMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("ExpectMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -640,14 +986,20 @@ func (m *Action_HeaderValueMatch) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetHeaders() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -659,49 +1011,10 @@ func (m *Action_HeaderValueMatch) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function -func (m *Action_MetaData) Hash(hasher hash.Hash64) (uint64, error) { - if m == nil { - return 0, nil - } - if hasher == nil { - hasher = fnv.New64() - } - var err error - if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.Action_MetaData")); err != nil { - return 0, err - } - - if _, err = hasher.Write([]byte(m.GetDescriptorKey())); err != nil { - return 0, err - } - - if h, ok := interface{}(m.GetMetadataKey()).(safe_hasher.SafeHasher); ok { - if _, err = h.Hash(hasher); err != nil { - return 0, err - } - } else { - if val, err := hashstructure.Hash(m.GetMetadataKey(), nil); err != nil { - return 0, err - } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { - return 0, err - } - } - } - - if _, err = hasher.Write([]byte(m.GetDefaultValue())); err != nil { - return 0, err - } - - err = binary.Write(hasher, binary.LittleEndian, m.GetSource()) - if err != nil { - return 0, err - } - - return hasher.Sum64(), nil -} - -// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Action_HeaderValueMatch_HeaderMatcher) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -740,14 +1053,20 @@ func (m *Action_HeaderValueMatch_HeaderMatcher) Hash(hasher hash.Hash64) (uint64 case *Action_HeaderValueMatch_HeaderMatcher_RangeMatch: if h, ok := interface{}(m.GetRangeMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RangeMatch")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(m.GetRangeMatch(), nil); err != nil { + if fieldValue, err := hashstructure.Hash(m.GetRangeMatch(), nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("RangeMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -778,6 +1097,10 @@ func (m *Action_HeaderValueMatch_HeaderMatcher) Hash(hasher hash.Hash64) (uint64 } // Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. func (m *Action_HeaderValueMatch_HeaderMatcher_Int64Range) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil @@ -804,7 +1127,11 @@ func (m *Action_HeaderValueMatch_HeaderMatcher_Int64Range) Hash(hasher hash.Hash } // Hash function -func (m *Action_MetaData_MetadataKey) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *MetaData_MetadataKey) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -812,7 +1139,7 @@ func (m *Action_MetaData_MetadataKey) Hash(hasher hash.Hash64) (uint64, error) { hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.Action_MetaData_MetadataKey")); err != nil { + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.MetaData_MetadataKey")); err != nil { return 0, err } @@ -823,14 +1150,20 @@ func (m *Action_MetaData_MetadataKey) Hash(hasher hash.Hash64) (uint64, error) { for _, v := range m.GetPath() { if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } if _, err = h.Hash(hasher); err != nil { return 0, err } } else { - if val, err := hashstructure.Hash(v, nil); err != nil { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { return 0, err } else { - if err := binary.Write(hasher, binary.LittleEndian, val); err != nil { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { return 0, err } } @@ -842,7 +1175,11 @@ func (m *Action_MetaData_MetadataKey) Hash(hasher hash.Hash64) (uint64, error) { } // Hash function -func (m *Action_MetaData_MetadataKey_PathSegment) Hash(hasher hash.Hash64) (uint64, error) { +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *MetaData_MetadataKey_PathSegment) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { return 0, nil } @@ -850,13 +1187,13 @@ func (m *Action_MetaData_MetadataKey_PathSegment) Hash(hasher hash.Hash64) (uint hasher = fnv.New64() } var err error - if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.Action_MetaData_MetadataKey_PathSegment")); err != nil { + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.MetaData_MetadataKey_PathSegment")); err != nil { return 0, err } switch m.Segment.(type) { - case *Action_MetaData_MetadataKey_PathSegment_Key: + case *MetaData_MetadataKey_PathSegment_Key: if _, err = hasher.Write([]byte(m.GetKey())); err != nil { return 0, err @@ -866,3 +1203,43 @@ func (m *Action_MetaData_MetadataKey_PathSegment) Hash(hasher hash.Hash64) (uint return hasher.Sum64(), nil } + +// Hash function +// +// Deprecated: due to hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +// Prefer the HashUnique function instead. +func (m *Override_DynamicMetadata) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.Override_DynamicMetadata")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMetadataKey()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MetadataKey")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadataKey(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MetadataKey")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/ratelimit.solo.io/v1alpha1/ratelimit.pb.uniquehash.go b/pkg/api/ratelimit.solo.io/v1alpha1/ratelimit.pb.uniquehash.go new file mode 100644 index 000000000..f3f3e34c4 --- /dev/null +++ b/pkg/api/ratelimit.solo.io/v1alpha1/ratelimit.pb.uniquehash.go @@ -0,0 +1,1371 @@ +// Code generated by protoc-gen-ext. DO NOT EDIT. +// source: github.com/solo-io/solo-apis/api/rate-limiter/v1alpha1/ratelimit.proto + +package v1alpha1 + +import ( + "encoding/binary" + "errors" + "fmt" + "hash" + "hash/fnv" + "strconv" + + safe_hasher "github.com/solo-io/protoc-gen-ext/pkg/hasher" + "github.com/solo-io/protoc-gen-ext/pkg/hasher/hashstructure" +) + +// ensure the imports are used +var ( + _ = errors.New("") + _ = fmt.Print + _ = binary.LittleEndian + _ = new(hash.Hash64) + _ = fnv.New64 + _ = strconv.Itoa + _ = hashstructure.Hash + _ = new(safe_hasher.SafeHasher) +) + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimitConfigSpec) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.RateLimitConfigSpec")); err != nil { + return 0, err + } + + switch m.ConfigType.(type) { + + case *RateLimitConfigSpec_Raw_: + + if h, ok := interface{}(m.GetRaw()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Raw")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRaw(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Raw")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimitConfigStatus) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.RateLimitConfigStatus")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("State")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetState()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Message")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetMessage())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("ObservedGeneration")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetObservedGeneration()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimitConfigNamespacedStatuses) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.RateLimitConfigNamespacedStatuses")); err != nil { + return 0, err + } + + { + var result uint64 + innerHash := fnv.New64() + for k, v := range m.GetStatuses() { + innerHash.Reset() + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(innerHash); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = innerHash.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(innerHash, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = innerHash.Write([]byte("k")); err != nil { + return 0, err + } + if _, err = innerHash.Write([]byte(k)); err != nil { + return 0, err + } + + result = result ^ innerHash.Sum64() + } + err = binary.Write(hasher, binary.LittleEndian, result) + if err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Descriptor) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.Descriptor")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetValue())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetRateLimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRateLimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RateLimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Descriptors")); err != nil { + return 0, err + } + for i, v := range m.GetDescriptors() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("Weight")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetWeight()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("AlwaysApply")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAlwaysApply()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SetDescriptor) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.SetDescriptor")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("SimpleDescriptors")); err != nil { + return 0, err + } + for i, v := range m.GetSimpleDescriptors() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetRateLimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RateLimit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRateLimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RateLimit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("AlwaysApply")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetAlwaysApply()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *SimpleDescriptor) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.SimpleDescriptor")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Value")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetValue())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimitActions) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.RateLimitActions")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Actions")); err != nil { + return 0, err + } + for i, v := range m.GetActions() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("SetActions")); err != nil { + return 0, err + } + for i, v := range m.GetSetActions() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if h, ok := interface{}(m.GetLimit()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Limit")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetLimit(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Limit")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimit) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.RateLimit")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Unit")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetUnit()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("RequestsPerUnit")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetRequestsPerUnit()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Action) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.Action")); err != nil { + return 0, err + } + + switch m.ActionSpecifier.(type) { + + case *Action_SourceCluster_: + + if h, ok := interface{}(m.GetSourceCluster()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SourceCluster")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSourceCluster(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SourceCluster")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Action_DestinationCluster_: + + if h, ok := interface{}(m.GetDestinationCluster()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DestinationCluster")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDestinationCluster(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DestinationCluster")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Action_RequestHeaders_: + + if h, ok := interface{}(m.GetRequestHeaders()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RequestHeaders")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRequestHeaders(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RequestHeaders")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Action_RemoteAddress_: + + if h, ok := interface{}(m.GetRemoteAddress()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RemoteAddress")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRemoteAddress(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RemoteAddress")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Action_GenericKey_: + + if h, ok := interface{}(m.GetGenericKey()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("GenericKey")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetGenericKey(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("GenericKey")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Action_HeaderValueMatch_: + + if h, ok := interface{}(m.GetHeaderValueMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("HeaderValueMatch")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetHeaderValueMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("HeaderValueMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Action_Metadata: + + if h, ok := interface{}(m.GetMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Metadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MetaData) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.MetaData")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DescriptorKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDescriptorKey())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMetadataKey()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MetadataKey")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadataKey(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MetadataKey")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("DefaultValue")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDefaultValue())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Source")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetSource()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Override) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.Override")); err != nil { + return 0, err + } + + switch m.OverrideSpecifier.(type) { + + case *Override_DynamicMetadata_: + + if h, ok := interface{}(m.GetDynamicMetadata()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("DynamicMetadata")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetDynamicMetadata(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("DynamicMetadata")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *RateLimitConfigSpec_Raw) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.RateLimitConfigSpec_Raw")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Descriptors")); err != nil { + return 0, err + } + for i, v := range m.GetDescriptors() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("RateLimits")); err != nil { + return 0, err + } + for i, v := range m.GetRateLimits() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + if _, err = hasher.Write([]byte("SetDescriptors")); err != nil { + return 0, err + } + for i, v := range m.GetSetDescriptors() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Action_SourceCluster) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.Action_SourceCluster")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Action_DestinationCluster) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.Action_DestinationCluster")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Action_RequestHeaders) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.Action_RequestHeaders")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("HeaderName")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetHeaderName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DescriptorKey")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDescriptorKey())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Action_RemoteAddress) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.Action_RemoteAddress")); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Action_GenericKey) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.Action_GenericKey")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DescriptorValue")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDescriptorValue())); err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Action_HeaderValueMatch) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.Action_HeaderValueMatch")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("DescriptorValue")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetDescriptorValue())); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetExpectMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("ExpectMatch")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetExpectMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("ExpectMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + if _, err = hasher.Write([]byte("Headers")); err != nil { + return 0, err + } + for i, v := range m.GetHeaders() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Action_HeaderValueMatch_HeaderMatcher) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.Action_HeaderValueMatch_HeaderMatcher")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetName())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("InvertMatch")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetInvertMatch()) + if err != nil { + return 0, err + } + + switch m.HeaderMatchSpecifier.(type) { + + case *Action_HeaderValueMatch_HeaderMatcher_ExactMatch: + + if _, err = hasher.Write([]byte("ExactMatch")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetExactMatch())); err != nil { + return 0, err + } + + case *Action_HeaderValueMatch_HeaderMatcher_RegexMatch: + + if _, err = hasher.Write([]byte("RegexMatch")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetRegexMatch())); err != nil { + return 0, err + } + + case *Action_HeaderValueMatch_HeaderMatcher_RangeMatch: + + if h, ok := interface{}(m.GetRangeMatch()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("RangeMatch")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetRangeMatch(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("RangeMatch")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + case *Action_HeaderValueMatch_HeaderMatcher_PresentMatch: + + if _, err = hasher.Write([]byte("PresentMatch")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetPresentMatch()) + if err != nil { + return 0, err + } + + case *Action_HeaderValueMatch_HeaderMatcher_PrefixMatch: + + if _, err = hasher.Write([]byte("PrefixMatch")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetPrefixMatch())); err != nil { + return 0, err + } + + case *Action_HeaderValueMatch_HeaderMatcher_SuffixMatch: + + if _, err = hasher.Write([]byte("SuffixMatch")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetSuffixMatch())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Action_HeaderValueMatch_HeaderMatcher_Int64Range) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.Action_HeaderValueMatch_HeaderMatcher_Int64Range")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Start")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetStart()) + if err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("End")); err != nil { + return 0, err + } + err = binary.Write(hasher, binary.LittleEndian, m.GetEnd()) + if err != nil { + return 0, err + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MetaData_MetadataKey) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.MetaData_MetadataKey")); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + if _, err = hasher.Write([]byte("Path")); err != nil { + return 0, err + } + for i, v := range m.GetPath() { + if _, err = hasher.Write([]byte(strconv.Itoa(i))); err != nil { + return 0, err + } + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("v")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *MetaData_MetadataKey_PathSegment) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.MetaData_MetadataKey_PathSegment")); err != nil { + return 0, err + } + + switch m.Segment.(type) { + + case *MetaData_MetadataKey_PathSegment_Key: + + if _, err = hasher.Write([]byte("Key")); err != nil { + return 0, err + } + if _, err = hasher.Write([]byte(m.GetKey())); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + +// HashUnique function generates a hash of the object that is unique to the object by +// hashing field name and value pairs. +// Replaces Hash due to original hashing implemention only using field values. The omission +// of the field name in the hash calculation can lead to hash collisions. +func (m *Override_DynamicMetadata) HashUnique(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("ratelimit.api.solo.io.github.com/solo-io/solo-apis/pkg/api/ratelimit.solo.io/v1alpha1.Override_DynamicMetadata")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetMetadataKey()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("MetadataKey")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetMetadataKey(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("MetadataKey")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} diff --git a/pkg/api/ratelimit.solo.io/v1alpha1/sets/mocks/sets.go b/pkg/api/ratelimit.solo.io/v1alpha1/sets/mocks/sets.go index 34678e48d..847f0bd66 100644 --- a/pkg/api/ratelimit.solo.io/v1alpha1/sets/mocks/sets.go +++ b/pkg/api/ratelimit.solo.io/v1alpha1/sets/mocks/sets.go @@ -15,110 +15,84 @@ import ( sets0 "k8s.io/apimachinery/pkg/util/sets" ) -// MockRateLimitConfigSet is a mock of RateLimitConfigSet interface +// MockRateLimitConfigSet is a mock of RateLimitConfigSet interface. type MockRateLimitConfigSet struct { ctrl *gomock.Controller recorder *MockRateLimitConfigSetMockRecorder } -// MockRateLimitConfigSetMockRecorder is the mock recorder for MockRateLimitConfigSet +// MockRateLimitConfigSetMockRecorder is the mock recorder for MockRateLimitConfigSet. type MockRateLimitConfigSetMockRecorder struct { mock *MockRateLimitConfigSet } -// NewMockRateLimitConfigSet creates a new mock instance +// NewMockRateLimitConfigSet creates a new mock instance. func NewMockRateLimitConfigSet(ctrl *gomock.Controller) *MockRateLimitConfigSet { mock := &MockRateLimitConfigSet{ctrl: ctrl} mock.recorder = &MockRateLimitConfigSetMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockRateLimitConfigSet) EXPECT() *MockRateLimitConfigSetMockRecorder { return m.recorder } -// Keys mocks base method -func (m *MockRateLimitConfigSet) Keys() sets0.String { +// Clone mocks base method. +func (m *MockRateLimitConfigSet) Clone() v1alpha1sets.RateLimitConfigSet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Keys") - ret0, _ := ret[0].(sets0.String) + ret := m.ctrl.Call(m, "Clone") + ret0, _ := ret[0].(v1alpha1sets.RateLimitConfigSet) return ret0 } -// Keys indicates an expected call of Keys -func (mr *MockRateLimitConfigSetMockRecorder) Keys() *gomock.Call { +// Clone indicates an expected call of Clone. +func (mr *MockRateLimitConfigSetMockRecorder) Clone() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Keys)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clone", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Clone)) } -// List mocks base method -func (m *MockRateLimitConfigSet) List(filterResource ...func(*v1alpha1.RateLimitConfig) bool) []*v1alpha1.RateLimitConfig { +// Delete mocks base method. +func (m *MockRateLimitConfigSet) Delete(rateLimitConfig ezkube.ResourceId) { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range filterResource { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "List", varargs...) - ret0, _ := ret[0].([]*v1alpha1.RateLimitConfig) - return ret0 + m.ctrl.Call(m, "Delete", rateLimitConfig) } -// List indicates an expected call of List -func (mr *MockRateLimitConfigSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { +// Delete indicates an expected call of Delete. +func (mr *MockRateLimitConfigSetMockRecorder) Delete(rateLimitConfig interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockRateLimitConfigSet)(nil).List), filterResource...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Delete), rateLimitConfig) } -// UnsortedList mocks base method -func (m *MockRateLimitConfigSet) UnsortedList(filterResource ...func(*v1alpha1.RateLimitConfig) bool) []*v1alpha1.RateLimitConfig { +// Delta mocks base method. +func (m *MockRateLimitConfigSet) Delta(newSet v1alpha1sets.RateLimitConfigSet) sets.ResourceDelta { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range filterResource { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "UnsortedList", varargs...) - ret0, _ := ret[0].([]*v1alpha1.RateLimitConfig) + ret := m.ctrl.Call(m, "Delta", newSet) + ret0, _ := ret[0].(sets.ResourceDelta) return ret0 } -// UnsortedList indicates an expected call of UnsortedList -func (mr *MockRateLimitConfigSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { +// Delta indicates an expected call of Delta. +func (mr *MockRateLimitConfigSetMockRecorder) Delta(newSet interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockRateLimitConfigSet)(nil).UnsortedList), filterResource...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Delta), newSet) } -// Map mocks base method -func (m *MockRateLimitConfigSet) Map() map[string]*v1alpha1.RateLimitConfig { +// Difference mocks base method. +func (m *MockRateLimitConfigSet) Difference(set v1alpha1sets.RateLimitConfigSet) v1alpha1sets.RateLimitConfigSet { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Map") - ret0, _ := ret[0].(map[string]*v1alpha1.RateLimitConfig) + ret := m.ctrl.Call(m, "Difference", set) + ret0, _ := ret[0].(v1alpha1sets.RateLimitConfigSet) return ret0 } -// Map indicates an expected call of Map -func (mr *MockRateLimitConfigSetMockRecorder) Map() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Map)) -} - -// Insert mocks base method -func (m *MockRateLimitConfigSet) Insert(rateLimitConfig ...*v1alpha1.RateLimitConfig) { - m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range rateLimitConfig { - varargs = append(varargs, a) - } - m.ctrl.Call(m, "Insert", varargs...) -} - -// Insert indicates an expected call of Insert -func (mr *MockRateLimitConfigSetMockRecorder) Insert(rateLimitConfig ...interface{}) *gomock.Call { +// Difference indicates an expected call of Difference. +func (mr *MockRateLimitConfigSetMockRecorder) Difference(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Insert), rateLimitConfig...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Difference), set) } -// Equal mocks base method +// Equal mocks base method. func (m *MockRateLimitConfigSet) Equal(rateLimitConfigSet v1alpha1sets.RateLimitConfigSet) bool { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Equal", rateLimitConfigSet) @@ -126,67 +100,72 @@ func (m *MockRateLimitConfigSet) Equal(rateLimitConfigSet v1alpha1sets.RateLimit return ret0 } -// Equal indicates an expected call of Equal +// Equal indicates an expected call of Equal. func (mr *MockRateLimitConfigSetMockRecorder) Equal(rateLimitConfigSet interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Equal", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Equal), rateLimitConfigSet) } -// Has mocks base method -func (m *MockRateLimitConfigSet) Has(rateLimitConfig ezkube.ResourceId) bool { +// Find mocks base method. +func (m *MockRateLimitConfigSet) Find(id ezkube.ResourceId) (*v1alpha1.RateLimitConfig, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Has", rateLimitConfig) - ret0, _ := ret[0].(bool) - return ret0 + ret := m.ctrl.Call(m, "Find", id) + ret0, _ := ret[0].(*v1alpha1.RateLimitConfig) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// Has indicates an expected call of Has -func (mr *MockRateLimitConfigSetMockRecorder) Has(rateLimitConfig interface{}) *gomock.Call { +// Find indicates an expected call of Find. +func (mr *MockRateLimitConfigSetMockRecorder) Find(id interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Has), rateLimitConfig) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Find), id) } -// Delete mocks base method -func (m *MockRateLimitConfigSet) Delete(rateLimitConfig ezkube.ResourceId) { +// Generic mocks base method. +func (m *MockRateLimitConfigSet) Generic() sets.ResourceSet { m.ctrl.T.Helper() - m.ctrl.Call(m, "Delete", rateLimitConfig) + ret := m.ctrl.Call(m, "Generic") + ret0, _ := ret[0].(sets.ResourceSet) + return ret0 } -// Delete indicates an expected call of Delete -func (mr *MockRateLimitConfigSetMockRecorder) Delete(rateLimitConfig interface{}) *gomock.Call { +// Generic indicates an expected call of Generic. +func (mr *MockRateLimitConfigSetMockRecorder) Generic() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Delete), rateLimitConfig) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Generic)) } -// Union mocks base method -func (m *MockRateLimitConfigSet) Union(set v1alpha1sets.RateLimitConfigSet) v1alpha1sets.RateLimitConfigSet { +// Has mocks base method. +func (m *MockRateLimitConfigSet) Has(rateLimitConfig ezkube.ResourceId) bool { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Union", set) - ret0, _ := ret[0].(v1alpha1sets.RateLimitConfigSet) + ret := m.ctrl.Call(m, "Has", rateLimitConfig) + ret0, _ := ret[0].(bool) return ret0 } -// Union indicates an expected call of Union -func (mr *MockRateLimitConfigSetMockRecorder) Union(set interface{}) *gomock.Call { +// Has indicates an expected call of Has. +func (mr *MockRateLimitConfigSetMockRecorder) Has(rateLimitConfig interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Union), set) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Has), rateLimitConfig) } -// Difference mocks base method -func (m *MockRateLimitConfigSet) Difference(set v1alpha1sets.RateLimitConfigSet) v1alpha1sets.RateLimitConfigSet { +// Insert mocks base method. +func (m *MockRateLimitConfigSet) Insert(rateLimitConfig ...*v1alpha1.RateLimitConfig) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Difference", set) - ret0, _ := ret[0].(v1alpha1sets.RateLimitConfigSet) - return ret0 + varargs := []interface{}{} + for _, a := range rateLimitConfig { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Insert", varargs...) } -// Difference indicates an expected call of Difference -func (mr *MockRateLimitConfigSetMockRecorder) Difference(set interface{}) *gomock.Call { +// Insert indicates an expected call of Insert. +func (mr *MockRateLimitConfigSetMockRecorder) Insert(rateLimitConfig ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Difference", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Difference), set) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Insert), rateLimitConfig...) } -// Intersection mocks base method +// Intersection mocks base method. func (m *MockRateLimitConfigSet) Intersection(set v1alpha1sets.RateLimitConfigSet) v1alpha1sets.RateLimitConfigSet { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Intersection", set) @@ -194,28 +173,27 @@ func (m *MockRateLimitConfigSet) Intersection(set v1alpha1sets.RateLimitConfigSe return ret0 } -// Intersection indicates an expected call of Intersection +// Intersection indicates an expected call of Intersection. func (mr *MockRateLimitConfigSetMockRecorder) Intersection(set interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intersection", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Intersection), set) } -// Find mocks base method -func (m *MockRateLimitConfigSet) Find(id ezkube.ResourceId) (*v1alpha1.RateLimitConfig, error) { +// Keys mocks base method. +func (m *MockRateLimitConfigSet) Keys() sets0.String { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Find", id) - ret0, _ := ret[0].(*v1alpha1.RateLimitConfig) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "Keys") + ret0, _ := ret[0].(sets0.String) + return ret0 } -// Find indicates an expected call of Find -func (mr *MockRateLimitConfigSetMockRecorder) Find(id interface{}) *gomock.Call { +// Keys indicates an expected call of Keys. +func (mr *MockRateLimitConfigSetMockRecorder) Keys() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Find", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Find), id) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Keys", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Keys)) } -// Length mocks base method +// Length mocks base method. func (m *MockRateLimitConfigSet) Length() int { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Length") @@ -223,36 +201,72 @@ func (m *MockRateLimitConfigSet) Length() int { return ret0 } -// Length indicates an expected call of Length +// Length indicates an expected call of Length. func (mr *MockRateLimitConfigSetMockRecorder) Length() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Length", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Length)) } -// Generic mocks base method -func (m *MockRateLimitConfigSet) Generic() sets.ResourceSet { +// List mocks base method. +func (m *MockRateLimitConfigSet) List(filterResource ...func(*v1alpha1.RateLimitConfig) bool) []*v1alpha1.RateLimitConfig { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Generic") - ret0, _ := ret[0].(sets.ResourceSet) + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].([]*v1alpha1.RateLimitConfig) return ret0 } -// Generic indicates an expected call of Generic -func (mr *MockRateLimitConfigSetMockRecorder) Generic() *gomock.Call { +// List indicates an expected call of List. +func (mr *MockRateLimitConfigSetMockRecorder) List(filterResource ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Generic", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Generic)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockRateLimitConfigSet)(nil).List), filterResource...) } -// Delta mocks base method -func (m *MockRateLimitConfigSet) Delta(newSet v1alpha1sets.RateLimitConfigSet) sets.ResourceDelta { +// Map mocks base method. +func (m *MockRateLimitConfigSet) Map() map[string]*v1alpha1.RateLimitConfig { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Delta", newSet) - ret0, _ := ret[0].(sets.ResourceDelta) + ret := m.ctrl.Call(m, "Map") + ret0, _ := ret[0].(map[string]*v1alpha1.RateLimitConfig) return ret0 } -// Delta indicates an expected call of Delta -func (mr *MockRateLimitConfigSetMockRecorder) Delta(newSet interface{}) *gomock.Call { +// Map indicates an expected call of Map. +func (mr *MockRateLimitConfigSetMockRecorder) Map() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delta", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Delta), newSet) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Map", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Map)) +} + +// Union mocks base method. +func (m *MockRateLimitConfigSet) Union(set v1alpha1sets.RateLimitConfigSet) v1alpha1sets.RateLimitConfigSet { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Union", set) + ret0, _ := ret[0].(v1alpha1sets.RateLimitConfigSet) + return ret0 +} + +// Union indicates an expected call of Union. +func (mr *MockRateLimitConfigSetMockRecorder) Union(set interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Union", reflect.TypeOf((*MockRateLimitConfigSet)(nil).Union), set) +} + +// UnsortedList mocks base method. +func (m *MockRateLimitConfigSet) UnsortedList(filterResource ...func(*v1alpha1.RateLimitConfig) bool) []*v1alpha1.RateLimitConfig { + m.ctrl.T.Helper() + varargs := []interface{}{} + for _, a := range filterResource { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UnsortedList", varargs...) + ret0, _ := ret[0].([]*v1alpha1.RateLimitConfig) + return ret0 +} + +// UnsortedList indicates an expected call of UnsortedList. +func (mr *MockRateLimitConfigSetMockRecorder) UnsortedList(filterResource ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsortedList", reflect.TypeOf((*MockRateLimitConfigSet)(nil).UnsortedList), filterResource...) } diff --git a/pkg/api/ratelimit.solo.io/v1alpha1/sets/sets.go b/pkg/api/ratelimit.solo.io/v1alpha1/sets/sets.go index 7325b6a21..6b27d39ef 100644 --- a/pkg/api/ratelimit.solo.io/v1alpha1/sets/sets.go +++ b/pkg/api/ratelimit.solo.io/v1alpha1/sets/sets.go @@ -17,8 +17,10 @@ type RateLimitConfigSet interface { // Get the set stored keys Keys() sets.String // List of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. List(filterResource ...func(*ratelimit_solo_io_v1alpha1.RateLimitConfig) bool) []*ratelimit_solo_io_v1alpha1.RateLimitConfig // Unsorted list of resources stored in the set. Pass an optional filter function to filter on the list. + // The filter function should return false to keep the resource, true to drop it. UnsortedList(filterResource ...func(*ratelimit_solo_io_v1alpha1.RateLimitConfig) bool) []*ratelimit_solo_io_v1alpha1.RateLimitConfig // Return the Set as a map of key to resource. Map() map[string]*ratelimit_solo_io_v1alpha1.RateLimitConfig @@ -44,6 +46,8 @@ type RateLimitConfigSet interface { Generic() sksets.ResourceSet // returns the delta between this and and another RateLimitConfigSet Delta(newSet RateLimitConfigSet) sksets.ResourceDelta + // Create a deep copy of the current RateLimitConfigSet + Clone() RateLimitConfigSet } func makeGenericRateLimitConfigSet(rateLimitConfigList []*ratelimit_solo_io_v1alpha1.RateLimitConfig) sksets.ResourceSet { @@ -83,6 +87,7 @@ func (s *rateLimitConfigSet) List(filterResource ...func(*ratelimit_solo_io_v1al } var genericFilters []func(ezkube.ResourceId) bool for _, filter := range filterResource { + filter := filter genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { return filter(obj.(*ratelimit_solo_io_v1alpha1.RateLimitConfig)) }) @@ -102,6 +107,7 @@ func (s *rateLimitConfigSet) UnsortedList(filterResource ...func(*ratelimit_solo } var genericFilters []func(ezkube.ResourceId) bool for _, filter := range filterResource { + filter := filter genericFilters = append(genericFilters, func(obj ezkube.ResourceId) bool { return filter(obj.(*ratelimit_solo_io_v1alpha1.RateLimitConfig)) }) @@ -222,3 +228,10 @@ func (s *rateLimitConfigSet) Delta(newSet RateLimitConfigSet) sksets.ResourceDel } return s.Generic().Delta(newSet.Generic()) } + +func (s *rateLimitConfigSet) Clone() RateLimitConfigSet { + if s == nil { + return nil + } + return &rateLimitConfigSet{set: sksets.NewResourceSet(s.Generic().Clone().List()...)} +} diff --git a/test/gloo-fed/controller_test.go b/test/gloo-fed/controller_test.go new file mode 100644 index 000000000..72c8a109c --- /dev/null +++ b/test/gloo-fed/controller_test.go @@ -0,0 +1,110 @@ +package gloo_fed_test + +import ( + "context" + + "github.com/golang/mock/gomock" + "github.com/solo-io/skv2/pkg/controllerutils" + "github.com/solo-io/skv2/pkg/resource" + mock_resource "github.com/solo-io/skv2/pkg/resource/mocks" + v1 "github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1" + "github.com/solo-io/solo-apis/pkg/api/fed.gloo.solo.io/v1/types" + multicluster_types "github.com/solo-io/solo-apis/pkg/api/multicluster.solo.io/v1alpha1/types" + "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/kubernetes/scheme" + client2 "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" + + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" +) + +var _ = Describe("Controller", func() { + + var ( + ctl *gomock.Controller + client *mock_resource.MockClient + ctx = context.Background() + ) + + BeforeEach(func() { + ctl = gomock.NewController(GinkgoT()) + client = mock_resource.NewMockClient(ctl) + }) + + AfterEach(func() { + ctl.Finish() + }) + + Context("FederatedUpstream", func() { + + var ( + desired *v1.FederatedUpstream + runtimeScheme *runtime.Scheme + ) + + BeforeEach(func() { + desired = &v1.FederatedUpstream{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: "ns", + Name: "name", + }, + Spec: types.FederatedUpstreamSpec{ + Placement: &multicluster_types.Placement{ + Namespaces: []string{"ns-desired"}, + }, + }, + } + + runtimeScheme = scheme.Scheme + err := v1.AddToScheme(runtimeScheme) + Expect(err).NotTo(HaveOccurred()) + }) + + It("Can create resource", func() { + client.EXPECT().Scheme().Return(runtimeScheme).Times(2) + client.EXPECT().Get(ctx, client2.ObjectKeyFromObject(desired), gomock.Any()).Return( + &errors.StatusError{ + ErrStatus: metav1.Status{Reason: metav1.StatusReasonNotFound}, + }) + client.EXPECT().Create(ctx, desired).Return(nil) + + result, err := controllerutils.Upsert(ctx, client, desired) + Expect(err).NotTo(HaveOccurred()) + Expect(result).To(Equal(controllerutil.OperationResultCreated)) + }) + + It("Can transition resource", func() { + var called bool + + client.EXPECT().Scheme().Return(runtimeScheme).Times(2) + client.EXPECT().Get(ctx, resource.ToClientKey(desired), gomock.Any()).Return(nil) + client.EXPECT().Update(ctx, desired).Return(nil) + + existingTest := desired.DeepCopyObject().(*v1.FederatedUpstream) + + result, err := controllerutils.Upsert(ctx, client, desired, func(existing, desired runtime.Object) error { + called = true + + // necessary to ensure there is a diff between existing and desired + desired.(*v1.FederatedUpstream).Spec = types.FederatedUpstreamSpec{ + Placement: &multicluster_types.Placement{ + Namespaces: []string{"ns-other"}, + }, + } + return nil + }) + Expect(err).NotTo(HaveOccurred()) + Expect(result).To(Equal(controllerutil.OperationResultUpdated)) + Expect(called).To(BeTrue()) + + // object gets updated by transition function correctly + Expect(existingTest).ToNot(Equal(desired)) + Expect(desired.Spec.Placement.Namespaces).To(Equal([]string{"ns-other"})) + }) + + }) + +}) diff --git a/test/gloo-fed/gloo_fed_suite_test.go b/test/gloo-fed/gloo_fed_suite_test.go new file mode 100644 index 000000000..066f22d3f --- /dev/null +++ b/test/gloo-fed/gloo_fed_suite_test.go @@ -0,0 +1,13 @@ +package gloo_fed_test + +import ( + "testing" + + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" +) + +func TestGlooFed(t *testing.T) { + RegisterFailHandler(Fail) + RunSpecs(t, "Gloo Fed Suite") +} diff --git a/test/scripts/expected_skv2_result.test b/test/scripts/expected_skv2_result.test index a30670132..476a22153 100644 --- a/test/scripts/expected_skv2_result.test +++ b/test/scripts/expected_skv2_result.test @@ -264,3 +264,9 @@ message VirtualServiceStatus { // Opaque details about status results google.protobuf.Struct details = 5; } + + + +message VirtualServiceNamespacedStatuses { + map statuses = 1; +}